Есть у меня ключик шифрованный, в формате PEM :
-----BEGIN ENCRYPTED PRIVATE KEY-----
MIGMMEAGCSqGSIb3DQEFDTAzMBsGCSqGSIb3DQEFDDAOBAiZKBa6lir0cAICCAAw
FAYIKoZIhvcNAwcECFkordr8L172BEg2KM+XtvB76gh1+lcdfhIDSo5v8KuQnkQh
/siMzmQ2/zrOUROSJnV9xhDHdplcr+09vvT+hyTxDt99zLEvhNRIwyRm2/FLuO0=
-----END ENCRYPTED PRIVATE KEY-----
Сделан он по алгоритму Key Algorithm: 1.2.643.2.2.19 - это гост.
Я хочу достать 32 байта ключа в виде массива - например uint8_t array[32];
я делаю так :
BIO* bo = BIO_new( BIO_s_mem() );
BIO_write( bo, cont.data(),strlen(cont.c_str()));
EVP_PKEY* pkey = 0;
PEM_read_bio_PrivateKey( bo, &pkey, 0, (void*)"password");
BIO_free(bo);
if(pkey == NULL) {
std::cerr << "pkey == NULL " << std::endl;
return -1;
}
Ключ в общем-то вычитан и я получаю
std::cerr << "pkey->type = " <<pkey->type << std::endl;
811.
А вот тут косяк - как из EVP_PKEY получить массив байт?