Codifica di una struttura CERT_INFO
Il processo di codifica è il contrario del processo di decodifica descritto in Decodifica di una struttura CERT_INFO. Ad esempio, la procedura seguente aggiunge un'autorità di certificazione codificata a una struttura CERT_INFO . Vedere anche l'illustrazione che segue la procedura.
Per aggiungere un'autorità emittente codificata a una struttura di CERT_INFO
- Creare una stringa contenente il nome dell'autorità di certificazione da usare.
- Creare una matrice di strutture CERT_RDN_ATTR , che verranno inizializzate per contenere le informazioni appropriate sulla stringa del nome dell'autorità di certificazione appena creata.
- Creare una matrice di strutture CERT_RDN , una delle quali contiene le informazioni sulla matrice di strutture CERT_RDN_ATTR appena inizializzate.
- Creare una struttura CERT_NAME_INFO con un puntatore alla matrice di strutture CERT_RDN appena create.
- Chiamare CryptEncodeObject per ottenere le dimensioni del BLOB codificato di output, passandolo all'indirizzo della struttura CERT_NAME_INFO appena creata.
- Allocare memoria per il BLOB codificato di output.
- Chiama nuovamente CryptEncodeObject, passando le stesse informazioni, ma ora passandolo l'indirizzo della memoria appena allocata.
- Impostare il membro Issuer.cbData della struttura CERT_INFO sulle dimensioni restituite nel passaggio 5 e sul membro Issuer.pbData sull'indirizzo ottenuto nel passaggio 6. Il BLOB dell'autorità di certificazione codificata si trova ora in questa posizione.
Per inizializzare e codificare alcune informazioni sull'estensione del certificato, seguire questa procedura. Vedere anche l'illustrazione che segue la procedura.
Per aggiungere informazioni sull'estensione codificate a una struttura CERT_INFO
- Creare e inizializzare una struttura di informazioni di estensione, per questo esempio si tratta di una struttura CERT_BASIC_CONSTRAINTS_INFO .
- Chiamare CryptEncodeObject, passandolo l'indirizzo della struttura appena creata, per ottenere le dimensioni del BLOB codificato di output.
- Allocare memoria per il BLOB codificato di output.
- Chiamare di nuovo CryptEncodeObject , passando le stesse informazioni, ad eccezione del passaggio dell'indirizzo della memoria allocata.
- Creare una matrice di strutture CERT_EXTENSION .
- Inizializzare una delle strutture CERT_EXTENSION in modo che pszObjId sia la stringa corretta per i dati contenuti in Value e che Value contenga il BLOB di dati crittografato restituito dalla chiamata a CryptEncodeObject.
- Inizializzare il membro rgExtension della struttura CERT_INFO in modo che punti alla matrice di strutture CERT_EXTENSION .