OpenSSL C ++ необходимо отображать открытый ключ в шестнадцатеричном формате

Я мог бы использовать некоторую помощь, мне нужно отображать открытый ключ точно так же, как Windows, когда двойной щелчок на сертификате (см. Изображение). Благодарю.

Я могу получить открытый ключ с помощью:

RSA * pubKey = X509_get_pubkey (csc-> current_cert) -> pkey.rsa;

или же

EVP_PKEY * pubKey = X509_get_pubkey (csc-> current_cert);

Если где-то нашел этот фрагмент, но полученные значения отличаются от того, что отображает Windows:

unsigned char enc_bin[1024] = {0};
int enc_len = 0;
unsigned char dec_bin[1024] = {0};
int dec_len = 0;

enc_len = RSA_size( pubKey );
memset( enc_bin, 1, enc_len );

if( 0 < ( dec_len = RSA_public_decrypt( enc_len, enc_bin, dec_bin, pubKey, RSA_NO_PADDING) ) )
{
for (int i = 0; i < dec_len; i++)
{
CString str;
if( 0 == i )
str.Format( L"%02X", dec_bin[i] );
else
str.Format( L" %02X", dec_bin[i] );

PubKey += str;
}
}

введите описание изображения здесь

1

Решение

Я нашел ответ, спасибо за ответ.

ASN1_BIT_STRING *pubKey = X509_get0_pubkey_bitstr(csc->current_cert); // csc->current_cert is an X509 struct

for (int i = 0; i < pubKey->length; i++)
{
CString str;
if( 0 == i )
str.Format( L"%02X", pubKey->data[i] );
else
str.Format( L" %02X", pubKey->data[i] );

PubKey += str;
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]