我正在使用openssl制作DTLS客户端 - 服务器程序。该程序工作正常,但我无法找到一种方法来获得SSL握手后的密码签名。
通过SSL握手后,我的意思是在客户端,之后:
if (SSL_connect(ssl) <= 0)
{
//error handling
}
在服务器端,之后:
do
{
ret = SSL_accept(ssl);
} while (ret == 0);
我可以从捕获的DTLS数据包中看到实际的密码签名是sha256WithRSAEncryption
,但是如何从openssl获取此信息?
请注意,即使我使用的是DTLS协议,代码也与TLS / SSL几乎相同。
答案 0 :(得分:0)
使用的密码算法存储在证书中。因此,当您拥有证书(x509)时,可以提取密码算法的类型。仅限数字版本:
X509_get_signature_type(client_cert)
要获取人类可读的字符串,请使用以下函数转换上一个函数的返回值:
OBJ_nid2ln(X509_get_signature_type(client_cert))