Domanda

Ho un Cert_context Struttura che ho estratto da una smart card su Windows tramite Cryptoapi. Devo convertire questa struttura in un array di byte codificato DER che è coerente con OpenSSL. La partita più vicina che ho finora è tramite CryptoCodeObject Usando X509_ASN_ENCODING e il modificatore X509_CERT_TO_BE_SIDED che prende il Cert_info struttura come input.

Il problema è che non corrisponde all'uscita prodotta da OpenSSL i2d_x509 funzione. Utilizzando un certificato X509 da 2048 bit come input, OpenSSL produce 1789 byte di output codificato mentre Windows Cryptoapi produce 1638 byte di output codificato.

L'unica opzione rimasta che posso vedere è creare un certificato X509 al volo utilizzando i valori dal Cert_context struttura e codificare l'oggetto risultante direttamente con il i2d_x509 funzione. L'unico problema con questo è che non riesco a estrarre la chiave privata dalla smart card, quindi ciò può causare problemi con le routine di creazione di certificazione X509.

Se qualcuno può fornire informazioni/consigli/suggerimenti su queste questioni, sarei molto obbligato.

È stato utile?

Soluzione

Il certificato codificato DER può essere ottenuto da (ctx-> pbcerTencoded, ctx-> cbcerTencoded) buffer in cui CTX è un oggetto PCCert_Context. Tuttavia non sarai in grado di recuperare la chiave privata.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top