Partager via


Fonction CryptSignMessageWithKey (wincrypt.h)

La fonction CryptSignMessageWithKey signe un message à l’aide de la clé privée d’un fournisseur de solutions cloud spécifiée dans les paramètres. Un espace réservé SignerId est créé et stocké dans le message.

Syntaxe

BOOL CryptSignMessageWithKey(
  [in]      PCRYPT_KEY_SIGN_MESSAGE_PARA pSignPara,
  [in]      const BYTE                   *pbToBeSigned,
  [in]      DWORD                        cbToBeSigned,
  [out]     BYTE                         *pbSignedBlob,
  [in, out] DWORD                        *pcbSignedBlob
);

Paramètres

[in] pSignPara

Pointeur vers une structure CRYPT_KEY_SIGN_MESSAGE_PARA qui contient les paramètres de signature.

[in] pbToBeSigned

Pointeur vers un tableau de mémoires tampons qui contient le message à signer.

[in] cbToBeSigned

Nombre d’éléments de tableau dans le tableau de mémoire tampon pbToBeSigned .

[out] pbSignedBlob

Pointeur vers une mémoire tampon pour recevoir le message signé encodé.

Ce paramètre peut avoir la valeur 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] pcbSignedBlob

Pointeur vers une valeur DWORD qui indique la taille, en octets, de la mémoire tampon pbSignedBlob . Lorsque la fonction retourne, cette variable contient la taille, en octets, du message signé et encodé.

Note Lors du traitement des données retournées, 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. (En 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 s’intègrent 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.

La liste suivante répertorie les codes d’erreur les plus couramment retournés par la fonction GetLastError .

Code de retour Description
ERROR_MORE_DATA
Si la mémoire tampon spécifiée par le paramètre pbSignedBlob 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 pcbSignedBlob.
E_INVALIDARG
Le type d’encodage de message n’est pas valide. Actuellement, seule PKCS_7_ASN_ENCODING est prise en charge. Le paramètre cbSize dans *pSignPara n’est pas valide.
CRYPT_E_NO_KEY_PROPERTY
Le pSigningCert dans *pSignPara n’a pas de propriété CERT_KEY_PROV_INFO_PROP_ID ou CERT_KEY_CONTEXT_PROP_ID.

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