2015-09-03 142 views
0

我创建了SAML请求并获得了SAML服务器的签名响应。我想使用令牌签名证书(包含RSA公钥)来验证它。OpenSAML C++签名验证:从证书中读取公共密钥

我正在使用OpenSSL库从文件加载证书,但我在RSA结构中获得了一些垃圾值,当我尝试创建XSECCryptoKey密钥时,最终崩溃。

下面是我用来获取RSA密钥的示例。

const char* certpath = "sample.cer"; 
EVP_PKEY *key; 
BIO* in=BIO_new(BIO_s_file_internal()); 
BIO_read_filename(in, certpath); 
X509* cer=PEM_read_bio_X509(in, nullptr, nullptr, nullptr); 
BIO_free(in); 
key = X509_get_pubkey(cer); 
XSECCryptoKey* ret=new OpenSSLCryptoKeyRSA(pkey); //crashing, because of improper values in RSA keys (key->pkey.rsa->n,key->pkey.rsa->d etc) 

我在这里做错了什么?

+0

您的证书是PEM证书吗?如果是这样,你可能想把它包含到问题中。请显示准确的错误,“崩溃”不是一个很好的错误描述。 –

+0

任何人都使用CPP实施了证书验证? –

回答

0

这个问题是因为openssl库。它适用于ssleay32.dll和libeay32.dll(0.98)版本,但不适用于1.0.1和1.0.2。