Support decoding of subjectPublicKeyInfo in openssl without pkcs1 plugin
This commit is contained in:
@@ -306,6 +306,8 @@ plugin_t *openssl_plugin_create()
|
|||||||
(builder_function_t)openssl_rsa_private_key_connect);
|
(builder_function_t)openssl_rsa_private_key_connect);
|
||||||
lib->creds->add_builder(lib->creds, CRED_PUBLIC_KEY, KEY_RSA,
|
lib->creds->add_builder(lib->creds, CRED_PUBLIC_KEY, KEY_RSA,
|
||||||
(builder_function_t)openssl_rsa_public_key_load);
|
(builder_function_t)openssl_rsa_public_key_load);
|
||||||
|
lib->creds->add_builder(lib->creds, CRED_PUBLIC_KEY, KEY_ANY,
|
||||||
|
(builder_function_t)openssl_rsa_public_key_load);
|
||||||
|
|
||||||
/* ec */
|
/* ec */
|
||||||
lib->creds->add_builder(lib->creds, CRED_PRIVATE_KEY, KEY_ECDSA,
|
lib->creds->add_builder(lib->creds, CRED_PRIVATE_KEY, KEY_ECDSA,
|
||||||
|
|||||||
@@ -345,13 +345,25 @@ openssl_rsa_public_key_t *openssl_rsa_public_key_load(key_type_t type,
|
|||||||
this = create_empty();
|
this = create_empty();
|
||||||
if (blob.ptr)
|
if (blob.ptr)
|
||||||
{
|
{
|
||||||
this->rsa = d2i_RSAPublicKey(NULL, (const u_char**)&blob.ptr, blob.len);
|
switch (type)
|
||||||
|
{
|
||||||
|
case KEY_ANY:
|
||||||
|
this->rsa = d2i_RSA_PUBKEY(NULL, (const u_char**)&blob.ptr,
|
||||||
|
blob.len);
|
||||||
|
break;
|
||||||
|
case KEY_RSA:
|
||||||
|
this->rsa = d2i_RSAPublicKey(NULL, (const u_char**)&blob.ptr,
|
||||||
|
blob.len);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
if (this->rsa)
|
if (this->rsa)
|
||||||
{
|
{
|
||||||
return &this->public;
|
return &this->public;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (n.ptr && e.ptr)
|
else if (n.ptr && e.ptr && type == KEY_RSA)
|
||||||
{
|
{
|
||||||
this->rsa = RSA_new();
|
this->rsa = RSA_new();
|
||||||
this->rsa->n = BN_bin2bn((const u_char*)n.ptr, n.len, NULL);
|
this->rsa->n = BN_bin2bn((const u_char*)n.ptr, n.len, NULL);
|
||||||
|
|||||||
Reference in New Issue
Block a user