diff options
author | Martin Willi <martin@revosec.ch> | 2010-05-05 13:48:10 +0200 |
---|---|---|
committer | Martin Willi <martin@revosec.ch> | 2010-05-05 13:49:56 +0200 |
commit | 026b0058d546812b3fceaeba8784a00be45b54e1 (patch) | |
tree | 01342cde3a19c14e1bdf7ec2003a568c16a5081e /src/libstrongswan/plugins/openssl/openssl_rsa_public_key.c | |
parent | 75d4322d68b74538f20c5e5c74eba861577f4671 (diff) | |
download | strongswan-026b0058d546812b3fceaeba8784a00be45b54e1.tar.bz2 strongswan-026b0058d546812b3fceaeba8784a00be45b54e1.tar.xz |
Support decoding of subjectPublicKeyInfo in openssl without pkcs1 plugin
Diffstat (limited to 'src/libstrongswan/plugins/openssl/openssl_rsa_public_key.c')
-rw-r--r-- | src/libstrongswan/plugins/openssl/openssl_rsa_public_key.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/libstrongswan/plugins/openssl/openssl_rsa_public_key.c b/src/libstrongswan/plugins/openssl/openssl_rsa_public_key.c index ffa575a97..7d88a23d4 100644 --- a/src/libstrongswan/plugins/openssl/openssl_rsa_public_key.c +++ b/src/libstrongswan/plugins/openssl/openssl_rsa_public_key.c @@ -345,13 +345,25 @@ openssl_rsa_public_key_t *openssl_rsa_public_key_load(key_type_t type, this = create_empty(); 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) { return &this->public; } } - else if (n.ptr && e.ptr) + else if (n.ptr && e.ptr && type == KEY_RSA) { this->rsa = RSA_new(); this->rsa->n = BN_bin2bn((const u_char*)n.ptr, n.len, NULL); |