2015-09-03 189 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。