generate - Extracción de certificado de cliente y clave privada del archivo.p12
openssl pkcs12 password (2)
Sin comprobación de errores:
FILE *p12_file;
PKCS12 *p12_cert = NULL;
EVP_PKEY *pkey;
X509 *x509_cert;
STACK_OF(X509) *additional_certs = NULL;
p12_file = fopen("foo.p12", "rb");
d2i_PKCS12_fp(p12_file, &p12_cert);
fclose(p12_file);
PKCS12_parse(p12_cert, "password", &pkey, &x509_cert, &additional_certs);
La clave privada ahora está en pkey
, el certificado en x509_cert
y cualquier certificado additional_certs
en additional_certs
.
¿Alguien puede decirme cómo usar
PKCS12 *d2i_PKCS12_fp(FILE *fp, PKCS12 **p12);
int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert, STACK_OF(X509) **ca);
cualquier referencia de documentación también funcionará.
- Aquí está la página de openssl para analizar: PKCS12_parse.html
- Aquí está el enlace de Apple para usar las bibliotecas de openssl: ver PKCS # 12, Sección 2: E / S
Desde el sitio de Apple, aquí están las descripciones:
int PKCS12_parse(PKCS12 *p12, char *pass, EVP_PKEY **pkey, X509 **cert,
STACK **ca);
Esta función toma una estructura PKCS12 y una contraseña (ASCII, null terminated) y devuelve la clave privada, el certificado correspondiente y cualquier certificado de CA. Si alguno de estos no es necesario, se puede pasar como NULL. El parámetro ''ca'' debe ser NULL, un puntero a NULL o una estructura válida de STACK. Por lo general, para leer en un archivo PKCS # 12, puede hacer:
p12 = d2i_PKCS12_fp(fp, NULL);
PKCS12_parse(p12, password, &pkey, &cert, NULL); /* CAs not wanted */
PKCS12_free(p12);