Décodage d’une _ structure d’informations de certificat
Pour un certificat donné, la première étape du décodage de l' objet BLOB de certificat consiste à appeler CertCreateCertificateContext, en lui transmettant un pointeur vers le certificat encodé (BLOB). Lorsque cette fonction est appelée, elle crée un doublon du certificat encodé, crée une structure de type CERT _ Contextet crée une structure de type CERT _ info. Comme indiqué dans l’illustration suivante, un contexte de certificat comprend l' objet BLOB de certificat d’origine, une structure c de type Certificate _ Certificate et une structure c de type CERT _ info. L’un des membres de la structure de _ contexte du certificat pointe vers la structure d' _ informations de certificat et l’autre vers l’objet blob de certificat encodé.

L’objet encodé (membre de données) est toujours fourni comme entrée à la fonction CryptDecodeObject , et la sortie est une structure C qui peut ou non avoir des membres encodés, en fonction de la durée du processus.
Il existe un autre membre qui requiert un décodage et qui est le membre d' extension . Bien qu’il ne soit pas encodé au niveau des _ informations de certificat , il contient des informations encodées. Pour décoder ces informations, procédez comme indiqué dans l’illustration suivante.

Dans la structure des _ informations de certificat , le membre rgExtension est un pointeur vers un tableau de structures d' _ extension de certificat . Chaque structure d' _ extension de certificat a un membre de valeur qui est sous forme encodée et doit être décodé. Le membre value est passé à la fonction CryptDecodeObject , puis la sortie de la fonction dépend de la valeur du membre pszObjId . Notez que, dans l’illustration, deux structures différentes sont générées, l’une des valeurs de type CERT _ Basic _ Constraints _ et l’autre de type informations sur l’ID de clé de l’autorité de certification _ _ _ _, en fonction de la valeur de pszObjId.