1

我正在用 openssl 制作一个 DTLS 客户端-服务器程序。该程序运行良好,但我找不到在 SSL 握手后获取密码签名的方法。

SSL握手之后,我的意思是在客户端,之后:

if (SSL_connect(ssl) <= 0)
{
    //error handling 
}

在服务器端,之后:

do 
{
    ret = SSL_accept(ssl);
} while (ret == 0);

我可以看到实际的密码签名sha256WithRSAEncryption来自捕获的 DTLS 数据包,但是如何从 openssl 获取这些信息?

请注意,即使我使用的是 DTLS 协议,代码也几乎与 TLS/SSL 相同。

4

1 回答 1

0

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

X509_get_signature_type(client_cert)

要获得人类可读的字符串,请将前一个函数的返回值转换为:

OBJ_nid2ln(X509_get_signature_type(client_cert))
于 2013-10-16T07:52:06.200 回答