Condividi tramite


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

  1. Creare una stringa contenente il nome dell'autorità di certificazione da usare.
  2. 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.
  3. Creare una matrice di strutture CERT_RDN , una delle quali contiene le informazioni sulla matrice di strutture CERT_RDN_ATTR appena inizializzate.
  4. Creare una struttura CERT_NAME_INFO con un puntatore alla matrice di strutture CERT_RDN appena create.
  5. Chiamare CryptEncodeObject per ottenere le dimensioni del BLOB codificato di output, passandolo all'indirizzo della struttura CERT_NAME_INFO appena creata.
  6. Allocare memoria per il BLOB codificato di output.
  7. Chiama nuovamente CryptEncodeObject, passando le stesse informazioni, ma ora passandolo l'indirizzo della memoria appena allocata.
  8. 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.

adding an encoded issuer to a cert-info structure

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

  1. Creare e inizializzare una struttura di informazioni di estensione, per questo esempio si tratta di una struttura CERT_BASIC_CONSTRAINTS_INFO .
  2. Chiamare CryptEncodeObject, passandolo l'indirizzo della struttura appena creata, per ottenere le dimensioni del BLOB codificato di output.
  3. Allocare memoria per il BLOB codificato di output.
  4. Chiamare di nuovo CryptEncodeObject , passando le stesse informazioni, ad eccezione del passaggio dell'indirizzo della memoria allocata.
  5. Creare una matrice di strutture CERT_EXTENSION .
  6. 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.
  7. Inizializzare il membro rgExtension della struttura CERT_INFO in modo che punti alla matrice di strutture CERT_EXTENSION .

adding encoded extension information to a cert-info structure