共同簽署檔
[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