Fonction CryptXmlSign (cryptxml.h)

La fonction CryptXmlSign crée une signature de chiffrement d’un élément SignedInfo .

Syntaxe

HRESULT CryptXmlSign(
  [in]           HCRYPTXML                       hSignature,
  [in, optional] HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hKey,
                 DWORD                           dwKeySpec,
                 DWORD                           dwFlags,
                 CRYPT_XML_KEYINFO_SPEC          dwKeyInfoSpec,
  [in, optional] const void                      *pvKeyInfoSpec,
  [in]           const CRYPT_XML_ALGORITHM       *pSignatureMethod,
  [in]           const CRYPT_XML_ALGORITHM       *pCanonicalization
);

Paramètres

[in] hSignature

Handle d’une structure CRYPT_XML_SIGNATURE .

[in, optional] hKey

Handle d’une clé privée utilisée pour signer l’élément SignedInfo . Ce paramètre doit avoir la valeur NULL pour les algorithmes de signature basés sur HMAC.

dwKeySpec

Valeur DWORD qui spécifie le type de clé. Ce paramètre peut prendre les valeurs suivantes.

Valeur Signification
AT_KEYEXCHANGE
1
La paire de clés est une paire d’échange de clés.
AT_SIGNATURE
2
La paire de clés est une paire de signatures.
CERT_NCRYPT_KEY_SPEC
0xFFFFFFFF
La clé est une clé d’API de chiffrement : nouvelle génération (CNG).

dwFlags

Valeur DWORD qui contrôle la façon dont les données sont signées. Ce paramètre peut prendre les valeurs suivantes.

Valeur Signification
CRYPT_XML_SIGN_ADD_KEYVALUE
0x00000001
Renseignez l’élément KeyValue à partir du handle spécifié dans le paramètre hKey .
ImportantL’indicateur CRYPT_XML_SIGN_ADD_KEYVALUE ne peut pas être utilisé lorsque le paramètre dwKeyInfoSpec est défini sur CRYPT_XML_KEYINFO_SPEC_ENCODED.
 
CRYPT_XML_FLAG_DISABLE_EXTENSIONS
0x10000000
Seules les implémentations par défaut de la signature et de la synthèse sont utilisées. Lorsque cet indicateur est défini, aucune autre extension inscrite n’est chargée.

dwKeyInfoSpec

Type de structure de données pointé vers le paramètre pvKeyInfoSpec . Voici quelques combinaisons possibles.

dwKeyInfec pvKeyInfoSpec
CRYPT_XML_KEYINFO_SPEC_NONE Est défini sur NULL
CRYPT_XML_KEYINFO_SPEC_ENCODED Pointe vers une structure CRYPT_XML_BLOB
CRYPT_XML_KEYINFO_SPEC_PARAM Pointe vers une structure CRYPT_XML_KEYINFO_PARAM

[in, optional] pvKeyInfoSpec

Pointeur vers une structure, dont le type est déterminé par la valeur du paramètre dwKeyInfoSpec .

[in] pSignatureMethod

Pointeur vers une structure de CRYPT_XML_ALGORITHM qui spécifie la méthode de signature.

[in] pCanonicalization

Pointeur vers une structure de CRYPT_XML_ALGORITHM qui spécifie la méthode de canonicalisation.

Valeur retournée

Si la fonction réussit, la fonction retourne zéro.

Si la fonction échoue, elle retourne une valeur HRESULT qui indique l’erreur.

Notes

Si un certificat est introuvable, CryptXmlSign crée une interface utilisateur pour la sélection de certificat. Si cette fenêtre est générée à partir d’un processus en cours d’exécution dans la session 0, l’application peut se terminer de manière inattendue.

Spécifications

   
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 cryptxml.h
Bibliothèque Cryptxml.lib
DLL Cryptxml.dll