Partager via


IXpsSignatureManager ::Sign, méthode (xpsdigitalsignature.h)

Signe le contenu d’un package XPS comme spécifié par les options de signature et retourne la signature numérique résultante.

Syntaxe

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

Paramètres

[in] signOptions

Pointeur vers l’interface IXpsSigningOptions qui contient les options de signature.

Remarque  

Les propriétés SignatureMethod et DigestMethod de l’interface IXpsSigningOptions doivent être initialisées avant que le pointeur vers cette interface puisse être utilisé dans le paramètre signOptions .

 

[in] x509Certificate

Pointeur vers la structure CERT_CONTEXT qui contient le certificat X.509 à utiliser pour la signature.

[out, retval] signature

Pointeur vers l’interface IXpsSignature qui contient la nouvelle signature numérique.

Si elle réussit, cette méthode crée la partie de signature, l’ajoute au package et, dans signature, retourne un pointeur vers l’interface de ce composant de signature.

Valeur retournée

Cette méthode retourne un code HRESULT. Les valeurs possibles incluent, sans s’y limiter, celles du tableau qui suit. Pour les valeurs de retour qui ne sont pas répertoriées dans ce tableau, consultez Erreurs d’API de signature numérique XPS et Erreurs de document XPS.

Code de retour Description
S_OK
S_OK
XPS_E_MARKUP_COMPATIBILITY_ELEMENTS
La valeur XPS_SIGN_FLAGS spécifiait qu’aucun élément de compatibilité de balisage n’était attendu ; toutefois, des éléments de compatibilité de balisage ont été trouvés.
XPS_E_NO_CUSTOM_OBJECTS
signOptions ne pointe pas vers une implémentation d’interface reconnue. L’implémentation personnalisée des interfaces d’API document XPS n’est pas prise en charge.
XPS_E_PACKAGE_NOT_OPENED
Un package XPS n’a pas encore été ouvert dans le gestionnaire de signatures.

Remarques

L’ajout d’une nouvelle signature ne remplace pas le fichier ou le flux d’origine qui a été lu en appelant la méthode LoadPackageFile ou LoadPackageStream . La signature sera ajoutée à la copie en mémoire du package XPS jusqu’à ce que le package soit enregistré (en appelant la méthode SavePackageToFile ou SavePackageToStream ).

Si la nouvelle signature inclut des parties qui contiennent des éléments de compatibilité de balisage, la valeur par défaut est que cette méthode échoue avec une erreur de XPS_E_MARKUP_COMPATIBILITY_ELEMENTS. Pour remplacer ce comportement, appelez IXpsSigningOptions ::SetFlags ; cela définit l’indicateur XPS_SIGN_FLAGS_IGNORE_MARKUP_COMPATIBILITY dans l’interface IXpsSigningOptions référencée par le paramètre signOptions .

Si cette méthode retourne une valeur HRESULT qui ne figure pas dans la liste de ses valeurs de retour, le gestionnaire de signatures doit être libéré et recréé.

Cette méthode réussit même si la nouvelle signature interrompt les signatures existantes.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 7 [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2008 R2 [applications de bureau uniquement]
Plateforme cible Windows
En-tête xpsdigitalsignature.h

Voir aussi

CERT_CONTEXT

IXpsSignature

IXpsSignatureManager

IXpsSigningOptions

XML Paper Specification

Erreurs de l’API signature numérique XPS

Erreurs de document XPS