Freigeben über


IXpsSignatureManager::Sign-Methode (xpsdigitalsignature.h)

Signiert den Inhalt eines XPS-Pakets gemäß den Signaturoptionen und gibt die resultierende digitale Signatur zurück.

Syntax

HRESULT Sign(
  [in]          IXpsSigningOptions *signOptions,
  [in]          const CERT_CONTEXT *x509Certificate,
  [out, retval] IXpsSignature      **signature
);

Parameter

[in] signOptions

Ein Zeiger auf die IXpsSigningOptions-Schnittstelle , die die Signaturoptionen enthält.

Hinweis  

Die Eigenschaften SignatureMethod und DigestMethod der IXpsSigningOptions-Schnittstelle müssen initialisiert werden, bevor der Zeiger auf diese Schnittstelle im signOptions-Parameter verwendet werden kann.

 

[in] x509Certificate

Ein Zeiger auf die CERT_CONTEXT-Struktur , die das X.509-Zertifikat enthält, das zum Signieren verwendet werden soll.

[out, retval] signature

Ein Zeiger auf die IXpsSignature-Schnittstelle , die die neue digitale Signatur enthält.

Bei erfolgreicher Ausführung erstellt diese Methode den Signaturteil, fügt ihn dem Paket hinzu und gibt in der Signatur einen Zeiger auf die Schnittstelle dieses Signaturteils zurück.

Rückgabewert

Die Methode gibt ein HRESULT zurück. Mögliche Werte sind unter anderem die Werte in der folgenden Tabelle. Rückgabewerte, die in dieser Tabelle nicht aufgeführt sind, finden Sie unter XPS Digital Signature API Errors and XPS Document Errors .

Rückgabecode BESCHREIBUNG
S_OK
Die Methode wurde erfolgreich ausgeführt.
XPS_E_MARKUP_COMPATIBILITY_ELEMENTS
Der XPS_SIGN_FLAGS Wert hat angegeben, dass keine Markupkompatibilitätselemente erwartet wurden. Es wurden jedoch Markupkompatibilitätselemente gefunden.
XPS_E_NO_CUSTOM_OBJECTS
signOptions verweist nicht auf eine erkannte Schnittstellenimplementierung. Die benutzerdefinierte Implementierung von XPS-Dokument-API-Schnittstellen wird nicht unterstützt.
XPS_E_PACKAGE_NOT_OPENED
Im Signatur-Manager wurde noch kein XPS-Paket geöffnet.

Hinweise

Das Hinzufügen einer neuen Signatur überschreibt nicht die ursprüngliche Datei oder den ursprünglichen Stream, der durch Aufrufen der LoadPackageFile- oder LoadPackageStream-Methode gelesen wurde. Die Signatur wird der Speicherkopie des XPS-Pakets hinzugefügt, bis das Paket gespeichert wird (durch Aufrufen der SavePackageToFile- oder SavePackageToStream-Methode ).

Wenn die neue Signatur Teile enthält, die Markupkompatibilitätselemente enthalten, schlägt diese Methode standardmäßig mit dem Fehler XPS_E_MARKUP_COMPATIBILITY_ELEMENTS. Um dieses Verhalten zu überschreiben, rufen Sie IXpsSigningOptions::SetFlags auf. Dadurch wird das XPS_SIGN_FLAGS_IGNORE_MARKUP_COMPATIBILITY-Flag in der IXpsSigningOptions-Schnittstelle festgelegt, auf die vom parameter signOptions verwiesen wird.

Wenn diese Methode einen HRESULT-Wert zurückgibt, der sich nicht in der Liste der Rückgabewerte befindet, sollte der Signatur-Manager freigegeben und neu erstellt werden.

Diese Methode ist auch dann erfolgreich, wenn die neue Signatur vorhandene Signaturen unterbricht.

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 xpsdigitalsignature.h

Weitere Informationen

CERT_CONTEXT

IXpsSignature

IXpsSignatureManager

IXpsSigningOptions

XML Paper Specification

FEHLER BEI DER XPS-API für die digitale Signatur

XPS-Dokumentfehler