c - SSL握手后如何获取密码签名?

标签 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 协议(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/

上一篇:c - C中的值覆盖

下一篇:c - 扫描成阵列

相关文章:

c - 如何在 C 中打印毫秒数?

C++ 主 vs C 主

c++ - 如何使应用程序符号对库可见?

c++ - #include <filename> 和 #include "filename"有什么区别?

使用 openssl BadPaddingException 生成 Java PKCS12 keystore

c - openssl pkcs12 命令以编程方式 Objective-C/C

Calloc 无法从不同的 .c 文件访问 -

ios - 使用 objective-c 和 OpenSSL 创建 .PEM 文件

python - 在 Python 中使用 openssl 时遇到问题

ssl - 如何在 Apache Airflow 上启用 SSL?