共用方式為


共同簽署檔

[CAPICOM 是可用於下列作業系統的 32 位元件:Windows Server 2008、Windows Vista 和 Windows XP。 請改用 .NET Framework 來實作安全性功能。 如需詳細資訊,請參閱 使用 CAPICOM 的替代方案。]

檔可以由多個簽署者簽署。 例如,當兩個或多個合作物件簽署合約或費用報表時,就會發生這種情況。 在下列範例中,第二個簽署者會收到已經簽署的檔。 此簽署者會使用 CoSign 方法將額外的簽章附加至檔。

如果發生任何 CAPICOM 錯誤, 則會在 Err.Number 屬性中傳回負值。 如需 CAPICOM 錯誤碼的詳細資訊,請參閱 CAPICOM_ERROR_CODE。 如果Err.Number屬性中的錯誤碼是正值,則錯誤是Windows錯誤。 如需錯誤碼Windows的相關資訊,請參閱 Winerror.h。

注意

將檔共同簽署也需要共同簽署者具有具有私密金鑰的可用憑證,才能建立簽章。 如果未在 Sign 方法的呼叫中指定簽署者,而且在CAPICOM_MY_STORE中沒有憑證與相關聯的私密金鑰,則方法會失敗。 如果CAPICOM_MY_STORE中只有一個憑證與相關聯的私密金鑰,則會使用該金鑰和憑證。 如果有一個以上的可用憑證,則會顯示提示,讓使用者選擇所需的憑證。

如果在 Web 型應用程式中使用 CoSign 方法,則一律會顯示提示以取得使用者的許可權,再使用該簽署者的私密金鑰來建立簽章。

 

在下列範例中,包含要簽署之檔的檔案,以及讀取該檔上的目前簽章、簽章已共同簽署,並將新簽章寫入檔案。 此範例會使用卸離簽章搭配已簽署的資料,以及個別檔案中的簽章。

Sub CoSignContent(ByVal InputFile1Name As String, ByVal _
    InputFile2Name As String, ByVal OutputFileName As String)

    On Error GoTo ErrorHandler
    Dim c As String
    Dim s As String
    Dim CS As String
    Dim Signobj As New SignedData
    Open InputFile1Name for Input as #1
    Input #1, s
    Close #1
    Open InputFileName2 for input as #2
    Input #2, c 
    Close #2

    Signobj.Content = c
    Signobj.Verify(s)
    CS = Signobj.CoSign
    Open OutputFileName for output as #3
    Write #3, CS
    Close # 3
    Signobj = Nothing
    MsgBox("Cosign finished. Cosignature saved to a file.")
    Exit Sub
ErrorHandler:
    If err.number > 0 Then
        MsgBox("Visual Basic error found:" & err.description)
    Else
        MsgBox("CAPICOM error found : " & err.number)
    End If
End Sub