如何在SSL握手后获得密码签名?

时间:2013-10-16 02:11:14

标签: c openssl

我正在使用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几乎相同。

1 个答案:

答案 0 :(得分:0)

使用的密码算法存储在证书中。因此,当您拥有证书(x509)时,可以提取密码算法的类型。仅限数字版本:

X509_get_signature_type(client_cert)

要获取人类可读的字符串,请使用以下函数转换上一个函数的返回值:

OBJ_nid2ln(X509_get_signature_type(client_cert))