Partager via


Fonction CryptEncodeObject (wincrypt.h)

La fonction CryptEncodeObject encode une structure du type indiqué par la valeur du paramètre lpszStructType . L’utilisation de CryptEncodeObjectEx est recommandée en tant qu’API qui exécute la même fonction avec des améliorations significatives des performances.

Syntaxe

BOOL CryptEncodeObject(
  [in]      DWORD      dwCertEncodingType,
  [in]      LPCSTR     lpszStructType,
  [in]      const void *pvStructInfo,
  [out]     BYTE       *pbEncoded,
  [in, out] DWORD      *pcbEncoded
);

Paramètres

[in] dwCertEncodingType

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
Note Un type d’encodage de certificat ou de message est requis. X509_ASN_ENCODING est la valeur par défaut. Si ce type est indiqué, il est utilisé. Sinon, si le type PKCS7_ASN_ENCODING est indiqué, il est utilisé.
 

[in] lpszStructType

Pointeur vers un OID définissant le type de structure. Si le mot d’ordre supérieur du paramètre lpszStructType est égal à zéro, le mot d’ordre inférieur spécifie l’identificateur entier pour le type de la structure spécifiée. Sinon, ce paramètre est un pointeur long vers une chaîne terminée par null.

Pour plus d’informations sur les chaînes d’identificateur d’objet, leurs constantes prédéfinies et les structures correspondantes, consultez Constantes pour CryptEncodeObject et CryptDecodeObject.

[in] pvStructInfo

Pointeur vers la structure à encoder. La structure doit être d’un type spécifié par lpszStructType.

[out] pbEncoded

Pointeur vers une mémoire tampon pour recevoir la structure encodée. Lorsque la mémoire tampon spécifiée n’est pas assez grande pour recevoir la structure décodée, 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 pcbEncoded.

Ce paramètre peut être NULL pour récupérer 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] pcbEncoded

Pointeur vers une variable DWORD qui contient la taille, en octets, de la mémoire tampon vers laquelle pointe le paramètre pbEncoded . Lorsque la fonction est retournée, la valeur DWORD contient le nombre d’octets encodés alloués stockés 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. Certains codes d’erreur possibles sont répertoriés dans le tableau suivant.

Code de retour Description
CRYPT_E_BAD_ENCODE
Une erreur s’est produite lors de l’encodage.
ERROR_FILE_NOT_FOUND
Impossible de trouver une fonction d’encodage pour les dwCertEncodingType et lpszStructType spécifiés.
ERROR_MORE_DATA
Si la mémoire tampon spécifiée par le paramètre pbEncoded 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 pcbEncoded.
 

Si la fonction échoue, GetLastError peut renvoyer une erreur d’encodage/décodage ASN.1 ( Abstract Syntax Notation One ). Pour plus d’informations sur ces erreurs, consultez Valeurs de retour d’encodage/décodage ASN.1.

Remarques

Lors de l’encodage d’un objet de chiffrement à l’aide de la fonction CryptEncodeObjectEx par défaut, le caractère NULL de fin est inclus. Lors du décodage, à l’aide de la fonction CryptDecodeObjectEx préférée, le caractère NULL de fin n’est pas conservé.

Exemples

Pour obtenir un exemple qui utilise cette fonction, consultez Exemple de programme C : Création d’une demande de certificat et Exemple de programme C : encodage et décodage ASN.1.

Configuration requise

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

Voir aussi

CryptDecodeObject

CryptEncodeObjectEx

Fonctions d’encodage et de décodage d’objet