Gemeinsames Signieren eines Dokuments
[CAPICOM ist eine 32-Bit-Komponente, die in den folgenden Betriebssystemen verfügbar ist: Windows Server 2008, Windows Vista und Windows XP. Verwenden Sie stattdessen die .NET Framework, um Sicherheitsfeatures zu implementieren. Weitere Informationen finden Sie unter Alternativen zur Verwendung von CAPICOM.]
Ein Dokument kann von mehreren Unterzeichnern signiert werden. Dies geschieht, wenn für instance zwei oder mehr Parteien einen Vertrag oder eine Spesenabrechnung unterzeichnen. Im folgenden Beispiel wird ein bereits signiertes Dokument von einem zweiten Signierer empfangen. Dieser Signierer verwendet die CoSign-Methode , um dem Dokument eine zusätzliche Signatur anzufügen.
Wenn ein CAPICOM-Fehler auftritt, wird in der Err.Number-Eigenschaft ein negativer Wert zurückgegeben. Weitere Informationen zu CAPICOM-Fehlercodes finden Sie unter CAPICOM_ERROR_CODE. Wenn der Fehlercode in der Err.Number-Eigenschaft ein positiver Wert ist, ist der Fehler ein Windows-Fehler. Informationen zu Windows-Fehlercodes finden Sie unter Winerror.h.
Hinweis
Das Cosignieren eines Dokuments erfordert auch, dass der Cosigner über ein verfügbares Zertifikat mit einem privaten Schlüssel verfügt, um die Signatur zu erstellen. Wenn im Aufruf der Sign-Methode kein Signierer angegeben ist und in CAPICOM_MY_STORE kein Zertifikat mit einem zugeordneten privaten Schlüssel vorhanden ist, schlägt die Methode fehl. Wenn in CAPICOM_MY_STORE nur ein Zertifikat mit einem zugeordneten privaten Schlüssel vorhanden ist, werden dieser Schlüssel und das Zertifikat verwendet. Wenn mehr als ein verwendbares Zertifikat vorhanden ist, wird eine Eingabeaufforderung angezeigt, damit der Benutzer das gewünschte Zertifikat auswählen kann.
Wenn die CoSign-Methode in einer webbasierten Anwendung verwendet wird, wird immer eine Eingabeaufforderung angezeigt, um die Berechtigung des Benutzers abzurufen, bevor eine Signatur mithilfe des privaten Schlüssels dieses Signierers erstellt wird.
Im folgenden Beispiel werden Dateien, die das zu signierende Dokument und die aktuellen Signaturen für dieses Dokument enthalten, gelesen, die Signatur wird mitsigniert, und die neue Signatur wird in eine Datei geschrieben. Im Beispiel wird eine getrennte Signatur mit den signierten Daten und der Signatur in separaten Dateien verwendet.
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