Partager via


Encodage et décodage d’un contexte de certificat

CryptoAPI prend en charge l’encodage et le décodage des certificats. CryptoAPI comprend un système complet et flexible de fonctions et de structures C qui permettent l’encodage et le décodage de différentes façons. CryptoAPI prend en charge la structure de certificat X.509 standard et l’encodage ASN.1 ( Abstract Syntax Notation One ) standard pour fournir une interopérabilité avec d’autres systèmes.

Pour obtenir une vue d’ensemble des données encodées, consultez Données encodées et décodées.

Contextes de certificat

Un contexte de certificat, CERT_CONTEXT, est une structure C qui contient un membre encodé, un handle vers un magasin de certificats, un pointeur vers l’objet BLOB de certificat codé d’origine et un pointeur vers une structure C CERT_INFO .

La structure CERT_INFO est le cœur du certificat. Il contient, sous forme directe et sous forme encodée, toutes les informations de base du certificat. L’illustration suivante montre la structure CERT_INFO avec tous ses membres encodés comme ombrés.

structure cert-info

Les membres IssuerUniqueID et SubjectUniqueID font partie de l’implémentation du certificat X.509 version 2, mais sont rarement utilisés. Les extensions de certificat dans la version 3 remplacent les fonctionnalités de ces membres.

Si les informations contenues dans les membres encodés (ombrés) Issuer et Subject sont nécessaires, ces membres doivent être décodés. Utilisez CryptDecodeObject pour décoder ces membres. L’illustration suivante montre le processus de décodage de l’un de ces membres.

décodage avec cryptdecodeobject

Dans le cas illustré, la fonction CryptDecodeObject crée une structure CERT_NAME_INFO , un tableau de structures CERT_RDN , un tableau correspondant de structures CERT_RDN_ATTR et une chaîne qui contient le nom. Les membres de la structure CERT_RDN_ATTR déterminent le contenu de la chaîne. Par exemple, si le membre pszObjId est 2.5.4.3, la chaîne contient un nom commun. S’il s’agit de 2.5.4.10, la chaîne contient un nom de organization. Pour obtenir la liste de ces identificateurs d’objet (OID), consultez CERT_RDN_ATTR.

Le membre dwValueType contient des informations sur le type de chaîne. S’il est CERT_RDN_PRINTABLE_STRING, le membre de valeur contient une chaîne de caractères à fin nulle et de largeur d’octets. Si elle est CERT_RDN_UNICODE_STRING, la chaîne est une chaîne de caractères à double largeur (taille du mot).

Pour obtenir un processus détaillé d’encodage et de décodage des certificats, consultez Encodage d’une structure CERT_INFO et Décodage d’une structure de CERT_INFO.