Используя библиотеку openssl, мне нужно преобразовать сертификат и закрытый ключ, полученный из файла pkcs12, в сертификат формата DER и закрытый ключ.
DER - это Правила выдающихся кодировок, форма кодирования BER, описанная здесь: https://wiki.openssl.org/index.php/DER
Я использовал приведенный ниже код, который, как мне кажется, извлекает сертификат.Но как мне извлечь приватный ключ в DER?i2d_EVP?Я не могу найти функцию с таким именем?
Вот мой код:
PKCS12* p12_cert = NULL;
const uint8_t* p = NULL; // ptr to actual pkcs12 bytes
int binsize = 3200; // size of pkcs12 data
if(d2i_PKCS12(&p12_cert, &p, binsize) != NULL) {
EVP_PKEY *privatekey = NULL;
X509 *x509_cert = NULL;
STACK_OF(X509) *additional_certs = NULL;
if(PKCS12_parse(p12_cert, m_password.c_str(), &privatekey, &x509_cert, &additional_certs) != 0) {
int data_length = i2d_X509(x509_cert, NULL);
uint8_t* der_cert = malloc(data_length);
i2d_X509(x509_cert, &der_cert);
// but how to get privateKey in DER format?
}
}