IOpcDigitalSignatureManager::Sign-Methode (msopc.h)
Signiert das Paket, indem eine Signatur mithilfe des angegebenen Zertifikats und des IOpcSigningOptions-Schnittstellenzeigers generiert wird. Die resultierende Signatur wird durch einen IOpcDigitalSignature-Schnittstellenzeiger dargestellt.
Syntax
HRESULT Sign(
[in] const CERT_CONTEXT *certificate,
[in] IOpcSigningOptions *signingOptions,
[out, retval] IOpcDigitalSignature **digitalSignature
);
Parameter
[in] certificate
Ein Zeiger auf eine CERT_CONTEXT Struktur, die das Zertifikat enthält.
[in] signingOptions
Ein IOpcSigningOptions-Schnittstellenzeiger , der zum Generieren der Signatur verwendet wird.
[out, retval] digitalSignature
Ein neuer IOpcDigitalSignature-Schnittstellenzeiger , der die Signatur darstellt.
Rückgabewert
Die Methode gibt ein HRESULT zurück. Mögliches Werte (aber nicht die Einzigen) sind die in der folgenden Tabelle.
Rückgabecode/-wert | BESCHREIBUNG |
---|---|
|
Die Methode wurde erfolgreich ausgeführt. |
|
Mindestens einer der Parameter certificate, signingOptions und digitalSignature ist NULL. |
|
Die Standard-Digestmethode wurde nicht festgelegt. Rufen Sie zum Festlegen IOpcSigningOptions::SetDefaultDigestMethod auf. |
|
Der Digestwert einer Paketkomponente oder eines Elements im Signaturmarkup, auf das für die Signatur verwiesen wurde, kann nicht abgerufen werden. |
|
Das Zeitformat der Signatur ist kein gültiger OPC_SIGNATURE_TIME_FORMAT Enumerationswert. |
|
Eine angegebene Beziehungssignaturoption ist kein gültiger OPC_RELATIONSHIPS_SIGNING_OPTION Enumerationswert. |
|
Eine Signatur im Paket ist nicht ordnungsgemäß gebildet. Der Signaturwert kann nicht abgerufen werden. |
|
Die Signaturmethode wurde nicht festgelegt. Rufen Sie IOpcSigningOptions::SetSignatureMethod auf, um die Signaturmethode festzulegen. |
|
Der angegebene Teil ist nicht vorhanden. |
|
Ein HRESULT-Fehlercode aus einer Kryptografie-API . |
|
Ein HRESULT-Fehlercode aus einer Windows-Webdienst-API . |
Hinweise
Diese Methode verwendet Packaging-Objekte, um Änderungen an einem Paket vorzunehmen. Die resultierenden Änderungen werden erst gespeichert, wenn das Paket selbst gespeichert ist.
Bevor diese Methode aufgerufen wird, um eine Signatur zu generieren, rufen Sie die Methoden IOpcSigningOptions::SetDefaultDigestMethod und IOpcSigningOptions::SetSignatureMethod auf.
Um einen IOpcSigningOptions-Schnittstellenzeiger zu erstellen, der für diese Methode erforderlich ist, rufen Sie die CreateSigningOptions-Methode auf.
- Der Teil "Ursprung der digitalen Signatur"
- Die Paketbeziehung des Beziehungstyps für den Ursprung der digitalen Signatur
- Ein Signaturteil, das Signaturmarkup enthält
- Mindestens ein Teil, der ein Zertifikat enthält
- Eine Beziehung, die auf einen Signaturteil abzielt und die den Teil "Digital Signature Origin" als Quelle enthält
- Mindestens eine Beziehung, die auf ein Signaturteil abzielt, das ein Zertifikat enthält und ein anderes Signaturteil als Quelle enthält
Wenn Sign fehlschlägt, kann einer der oben genannten Teile und Beziehungen im Paket durch Packaging-Objekte dargestellt werden. Wenn die Methode den OPC_E_DS_SIGNATURE_METHOD_NOT_SET oder OPC_E_DS_DEFAULT_DIGEST_METHOD_NOT_SET Fehlercode zurückgibt, wurde das Paket nicht geändert.
Wenn Sign erfolgreich ist, werden Digestwerte für signierte Entitäten berechnet, und die generierte Signatur wird als Signaturmarkup serialisiert. Mögliche signierte Entitäten umfassen das Signature-Element , Verweise, Teile, Beziehungen sowie paketspezifische und anwendungsspezifische Object-Elemente .
Fehler, die in eine Paketsignatur eingefügt werden, wenn der Aufrufer die IOpcSigningOptions-Schnittstelle zum Festlegen von Signaturinformationen verwendet, werden möglicherweise erst verfügbar gemacht, wenn Sign aufgerufen wird.
Threadsicherheit
Das Packen von Objekten ist nicht threadsicher.
Weitere Informationen finden Sie im Erste Schritte mit der Verpackungs-API.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 7 [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2008 R2 [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | msopc.h |
Weitere Informationen
Übersicht über digitale Signaturen
Erste Schritte mit der Verpackungs-API
Übersichten
Programmierhandbuch für die Paket-API
Packen von Schnittstellen für digitale Signatur
Referenz