Fonction CryptSignCertificate (wincrypt.h)

La fonction CryptSignCertificate signe les informations « à signer » dans le contenu signé encodé.

Syntaxe

BOOL CryptSignCertificate(
  [in]      BCRYPT_KEY_HANDLE           hBCryptKey,
  [in]      DWORD                       dwKeySpec,
  [in]      DWORD                       dwCertEncodingType,
  [in]      const BYTE                  *pbEncodedToBeSigned,
  [in]      DWORD                       cbEncodedToBeSigned,
  [in]      PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm,
  [in]      const void                  *pvHashAuxInfo,
  [out]     BYTE                        *pbSignature,
  [in, out] DWORD                       *pcbSignature
);

Paramètres

[in] hBCryptKey

Handle du fournisseur de solutions Cloud qui effectue la signature. Ce handle doit être un handle HCRYPTPROV créé à l’aide de la fonction CryptAcquireContext ou un handle NCRYPT_KEY_HANDLE créé à l’aide de la fonction NCryptOpenKey . Les nouvelles applications doivent toujours passer le handle de NCRYPT_KEY_HANDLE d’un fournisseur de services de configuration CNG.

[in] dwKeySpec

Identifie la clé privée à utiliser à partir du conteneur du fournisseur. Il peut être AT_KEYEXCHANGE ou AT_SIGNATURE. Ce paramètre est ignoré si une NCRYPT_KEY_HANDLE est utilisée dans le paramètre hCryptProvOrNCryptKey .

[in] dwCertEncodingType

Spécifie le type d’encodage utilisé. Il est toujours acceptable de spécifier les types d’encodage de certificat et de message en les combinant avec une opération OR au niveau du bit, comme illustré dans l’exemple suivant :

X509_ASN_ENCODING | PKCS_7_ASN_ENCODING

Les types d’encodage actuellement définis sont les suivants :

  • X509_ASN_ENCODING
  • PKCS_7_ASN_ENCODING

[in] pbEncodedToBeSigned

Pointeur vers le contenu encodé à signer.

[in] cbEncodedToBeSigned

Taille, en octets, du contenu encodé, pbEncodedToBeSigned.

[in] pSignatureAlgorithm

Pointeur vers une structure CRYPT_ALGORITHM_IDENTIFIER avec un membre pszObjId défini sur l’un des éléments suivants :

  • szOID_RSA_MD5RSA
  • szOID_RSA_SHA1RSA
  • szOID_X957_SHA1DSA
  • szOID_RSA_SSA_PSS
  • szOID_ECDSA_SPECIFIED
Si l’algorithme de signature est un algorithme de hachage, la signature contient uniquement les octets de hachage non chiffrés. Une clé privée n’est pas utilisée pour chiffrer le hachage. dwKeySpec n’est pas utilisé et hCryptProvOrNCryptKey peut avoir la valeur NULL si un fournisseur de services cloud par défaut approprié peut être utilisé pour le hachage.

[in] pvHashAuxInfo

Pas utilisé pour l'instant. Doit être NULL.

[out] pbSignature

Pointeur vers une mémoire tampon pour recevoir le hachage signé du contenu.

Ce paramètre peut être NULL pour définir la taille de ces informations à des fins d’allocation de mémoire. Pour plus d’informations, consultez Récupération de données de longueur inconnue.

[in, out] pcbSignature

Pointeur vers un DWORD qui contient la taille, en octets, de la mémoire tampon vers laquelle pointe le paramètre pbSignature . Lorsque la fonction retourne, le DWORD contient le nombre d’octets stockés ou à stocker dans la mémoire tampon.

Note Lors du traitement des données retournées dans la mémoire tampon, les applications doivent utiliser la taille réelle des données retournées. La taille réelle peut être légèrement inférieure à la taille de la mémoire tampon spécifiée lors de l’entrée. (Lors de l’entrée, les tailles de mémoire tampon sont généralement spécifiées suffisamment grandes pour garantir que les données de sortie les plus volumineuses possibles tiennent dans la mémoire tampon.) En sortie, la variable pointée par ce paramètre est mise à jour pour refléter la taille réelle des données copiées dans la mémoire tampon.
 

Valeur retournée

Si la fonction réussit, la valeur de retour est différente de zéro (TRUE).

Si la fonction échoue, la valeur de retour est zéro (FALSE). Pour obtenir des informations d’erreur étendues, appelez GetLastError.

Note Les erreurs des fonctions appelées CryptCreateHash, CryptSignHash et CryptHashData peuvent être propagées à cette fonction.
 
Cette fonction contient les codes d’erreur suivants.
Code de retour Description
ERROR_MORE_DATA
Si la mémoire tampon spécifiée par le paramètre pbSignature n’est pas assez grande pour contenir les données retournées, la fonction définit le code ERROR_MORE_DATA et stocke la taille de mémoire tampon requise, en octets, dans la variable pointée par pcbSignature.
NTE_BAD_ALGID
L’identificateur d’objet (OID) de l’algorithme de signature ne correspond pas à un algorithme de hachage connu ou pris en charge.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows XP [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
Plateforme cible Windows
En-tête wincrypt.h
Bibliothèque Crypt32.lib
DLL Crypt32.dll

Voir aussi

CryptSignAndEncodeCertificate

Gestion des données Functions