我正在使用 openssl 制作 DTLS 客户端-服务器程序。该程序运行良好,但我找不到在 SSL 握手后获取密码签名的方法。
在 SSL 握手之后,我的意思是在客户端,之后:
if (SSL_connect(ssl) <= 0)
{
//error handling
}
在服务器端,之后:
do
{
ret = SSL_accept(ssl);
} while (ret == 0);
我可以从捕获的 DTLS 数据包中看到实际的密码签名是 sha256WithRSAEncryption
,但是如何从 openssl 中获取此信息?
请注意,尽管我使用的是 DTLS 协议(protocol),但代码与 TLS/SSL 几乎相同。
最佳答案
使用的密码算法存储在证书中。所以当你有证书(x509)时,可以提取密码算法的类型。仅限数字版本:
X509_get_signature_type(client_cert)
要获得人类可读的字符串,将前一个函数的返回值转换为:
OBJ_nid2ln(X509_get_signature_type(client_cert))
关于c - SSL握手后如何获取密码签名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19394151/