2013-02-22 183 views
1

我從ldap搜索請求中獲取DER編碼證書(base64解碼後),並需要從中解析公鑰。我非常肯定,它可能與openssl庫。不幸的是,API文檔沒有很好地保存。是否有任何示例或其他庫來提取信息?在C中提取DER編碼證書的公鑰

+0

如果你真的想只是做研磨工作OpenSSL中ASN1庫都可以使用。但是,我強烈建議你在庫中稍微高一些,並使用cert-code,這非常了不起。 – WhozCraig 2013-02-22 20:19:06

回答

1

您可以嘗試使用d2i_X509 API來解碼DER編碼證書。它給你一個你應該能夠獲得公鑰的X509結構。

2

使用d2i_X509獲取X509 *結構中的證書。 之後使用X509_get_pubkey獲取公鑰。X509_get_pubkey會爲您提供EVP_PKEY *結構中的公鑰。 我希望這必須解決你的目的。

如果您的證書採用PEM格式(Base64編碼由「----- BEGIN CERTIFICATE -----」包裝) ,那麼您也可以使用PEM_read_X509直接獲取X509 *對象。

例子:

//Get the X509 object. 
//Say certificate is encoded in a file 
X509 * xcert = PEM_read_X509(fp, NULL, NULL, NULL); 

//or assuming DER encoded certificate in buf with length of buffer is buflen. 
X509 * xcert = d2i_X509(NULL, buf, buflen); 

//Get the public key. 
EVP_PKEY * pubkey = X509_get_pubkey(xcert); 


//later free this pubkey object when no longer required. 
EVP_PKEY_free(pubkey);