Share via


SignedData.Sign-Methode

[Die Sign-Methode ist für die Verwendung in den Betriebssystemen verfügbar, die im Abschnitt "Anforderungen" angegeben sind. Verwenden Sie stattdessen die SignedCms-Klasse im System.Security.Cryptography.Pkcs-Namespace .]

Die Sign-Methode erstellt eine digitale Signatur für den zu signierenden Inhalt. Eine digitale Signatur besteht aus einem Hash des zu signierenden Inhalts, der mit dem privaten Schlüssel des Unterzeichners verschlüsselt wird. Diese Methode kann nur verwendet werden, nachdem die SignedData.Content-Eigenschaft initialisiert wurde. Wenn die Sign-Methode für ein Objekt aufgerufen wird, das bereits über eine Signatur verfügt, wird die alte Signatur ersetzt. Die Signatur wird mithilfe des SHA1-Signaturalgorithmus erstellt.

Syntax

SignedData.Sign( _
  [ ByVal Signer ], _
  [ ByVal bDetached ], _
  [ ByVal EncodingType ] _
)

Parameter

Signierer [in, optional]

Ein Verweis auf das Signer-Objekt des Unterzeichners der Daten. Das Signer-Objekt muss Zugriff auf den privaten Schlüssel des zertifikats haben, das zum Signieren verwendet wird. Dieser Parameter kann NULL sein. Weitere Informationen finden Sie unter Hinweise.

bDetached [in, optional]

Bei True werden die zu signierten Daten getrennt; Das heißt, der signierte Inhalt ist nicht teil des signierten Objekts. Um die Signatur für getrennten Inhalt zu überprüfen, muss eine Anwendung über eine Kopie des ursprünglichen Inhalts verfügen. Getrennter Inhalt wird häufig verwendet, um die Größe eines signierten Objekts zu verringern, das über das Web gesendet werden soll, wenn der Empfänger der signierten Nachricht über eine Originalkopie der signierten Daten verfügt. Der Standardwert ist False.

EncodingType [in, optional]

Ein Wert der CAPICOM_ENCODING_TYPE-Enumeration , der angibt, wie die signierten Daten codiert werden sollen. Der Standardwert ist CAPICOM_ENCODE_BASE64. Dieser Parameter kann einen der folgenden Werte annehmen.

Wert Bedeutung
CAPICOM_ENCODE_ANY
Dieser Codierungstyp wird nur verwendet, wenn die Eingabedaten einen unbekannten Codierungstyp aufweisen. Wenn dieser Wert verwendet wird, um den Codierungstyp der Ausgabe anzugeben, wird stattdessen CAPICOM_ENCODE_BASE64 verwendet. In CAPICOM 2.0 eingeführt.
CAPICOM_ENCODE_BASE64
Daten werden als base64-codierte Zeichenfolge gespeichert.
CAPICOM_ENCODE_BINARY
Daten werden als reine Binärsequenz gespeichert.

 

Rückgabewert

Diese Methode gibt eine Zeichenfolge zurück, die die codierten, signierten Daten enthält.

Wenn diese Methode fehlschlägt, wird ein Fehler ausgelöst. Das Err-Objekt enthält zusätzliche Informationen zum Fehler.

Bemerkungen

Wichtig

Wenn diese Methode aus einem Webskript aufgerufen wird, muss das Skript Ihren privaten Schlüssel verwenden, um eine digitale Signatur zu erstellen. Die Verwendung Ihres privaten Schlüssels für nicht vertrauenswürdige Websites ist ein Sicherheitsrisiko. Beim ersten Aufruf dieser Methode wird ein Dialogfeld angezeigt, in dem gefragt wird, ob die Website Ihren privaten Schlüssel verwenden kann. Wenn Sie zulassen, dass das Skript Ihren privaten Schlüssel verwendet, um eine digitale Signatur zu erstellen und "Dieses Dialogfeld nicht erneut anzeigen" auswählen, wird das Dialogfeld für kein Skript in dieser Domäne mehr angezeigt, das Ihren privaten Schlüssel zum Erstellen einer digitalen Signatur verwendet. Skripts außerhalb dieser Domäne, die versuchen, Ihren privaten Schlüssel zum Erstellen einer digitalen Signatur zu verwenden, führen jedoch dazu, dass dieses Dialogfeld weiterhin angezeigt wird. Wenn Sie nicht zulassen, dass das Skript Ihren privaten Schlüssel verwendet und "Dieses Dialogfeld nicht erneut anzeigen" auswählen, wird Skripts in dieser Domäne automatisch die Möglichkeit verweigert, Ihren privaten Schlüssel zum Erstellen digitaler Signaturen zu verwenden.

 

Da das Erstellen einer digitalen Signatur die Verwendung eines privaten Schlüssels erfordert, benötigen webbasierte Anwendungen, die versuchen, diese Methode zu verwenden, Benutzereingabeaufforderungen, die es dem Benutzer ermöglichen, die Verwendung des privaten Schlüssels aus Sicherheitsgründen zu genehmigen.

Die folgenden Ergebnisse gelten für den Signer-Parameterwert :

  • Wenn der Signer-Parameter nicht NULL ist, verwendet diese Methode den privaten Schlüssel, auf den das zugehörige Zertifikat verweist, um die Signatur zu verschlüsseln. Wenn der private Schlüssel, auf den das Zertifikat verweist, nicht verfügbar ist, schlägt die Methode fehl.
  • Wenn der Signer-ParameterNULL ist und im CURRENT_USER MY-Speicher genau ein Zertifikat vorhanden ist, das Zugriff auf einen privaten Schlüssel hat, wird dieses Zertifikat zum Erstellen der Signatur verwendet.
  • Wenn der Signer-ParameterNULL ist, der Settings.EnablePromptForCertificateUI-Eigenschaftswert true ist und mehr als ein Zertifikat im CURRENT_USER MY Store mit einem verfügbaren privaten Schlüssel vorhanden ist, wird ein Dialogfeld angezeigt, in dem der Benutzer auswählen kann, welches Zertifikat verwendet wird.
  • Wenn der Signer-ParameterNULL und die Settings.EnablePromptForCertificateUI-Eigenschaft false ist, schlägt die Methode fehl.
  • Wenn der Signer-ParameterNULL ist und kein Zertifikat im CURRENT_USER MY-Speicher mit einem verfügbaren privaten Schlüssel vorhanden ist, schlägt die Methode fehl.

Anforderungen

Anforderung Wert
Verteilbare Komponente
CAPICOM 2.0 oder höher unter Windows Server 2003 und Windows XP
DLL
Capicom.dll

Siehe auch

Kryptografieobjekte

SignedData