Pregunta

tengo un Cert_context Estructura que he extraído de una tarjeta inteligente en Windows a través del Cryptoapi. Necesito convertir esta estructura en una matriz de bytes codificada DER que es consistente con OpenSSL. El partido más cercano que tengo hasta ahora es a través de CryptencodeObject usando x509_asn_encoding y el modificador x509_cert_to_be_signed que toma el Cert_info estructura como entrada.

El problema es que no coincide con la salida producida por OpenSSL i2d_x509 función. Usando un certificado X509 de 2048 bits como entrada, OpenSSL produce 1789 bytes de salida codificada, mientras que Windows Cryptoapi produce 1638 bytes de salida codificada.

La única opción que me queda es crear un certificado X509 en la marcha utilizando los valores del Cert_context estructura y codificar el objeto resultante directamente con el i2d_x509 función. El único problema con esto es que no puedo extraer la clave privada de la tarjeta inteligente, por lo que esto puede causar problemas con las rutinas de creación de certificadores X509.

Si alguien puede proporcionar información/consejo/consejo sobre estos asuntos, estaría muy obligado.

¿Fue útil?

Solución

El certificado codificado DER se puede obtener del búfer (CTX-> PBCERTENCODED, CTX-> CBCERTENCODED) donde CTX es un objeto PCCERT_Context. Aún así, no podrá recuperar la clave privada.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top