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
[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.
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 |
---|---|
|
Une erreur s’est produite lors de l’encodage. |
|
Impossible de trouver une fonction d’encodage pour les dwCertEncodingType et lpszStructType spécifiés. |
|
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 |