我有一个问题,静态链接的openSSL库和GOST加密引擎。OpenSSL和GOST引擎问题(静态链接)
我有简单的客户端/服务器应用程序使用GOST密钥和证书。 它工作正常与GOST键,但只有当我使用动态链接版本的openSSL库。 如果我尝试使用静态链接的openSSL,我收到了错误消息。
这是OpenSSL库的初始化调用:
OPENSSL_config("correct config file path");
SSL_library_init();
SSL_load_error_strings();
当我尝试读取证书文件我得到了一个错误。
SSL_CTX_use_certificate_chain_file(ctx, CERTFILE)
这里的返回值不是1.所以这是一个错误。
人类可读的错误信息是:
3084809868:error:0609E09C:digital envelope routines:PKEY_SET_TYPE:unsupported algorithm:p_lib.c:239: 3084809868:error:0B07706F:x509 certificate routines:X509_PUBKEY_get:unsupported algorithm:x_pubkey.c:155: 3084809868:error:140BF10C:SSL routines:SSL_SET_CERT:x509 lib:ssl_rsa.c:402:
当我用动态链接OpenSSL库与外部GOST引擎库都相同的代码工作正常。 那么静态和动态版本有什么区别? 我在这个时候唯一的想法是我的库初始化序列是错误的。
我在已编译的libcrypto.a库中检查了符号。
nm ./libcrypto.a | grep gost
该命令给了我许多包含在libcrypto.a库中的GOST函数的输出。 所以我认为该库已经正确编译,所有的GOST引擎函数都包含在静态库中。
“不支持的算法”错误消息意味着GOST功能未正确初始化。 问题是:如何正确地初始化静态链接的openSSL引擎?
OPENSSL_config()的参数不是“正确的配置文件路径”。这是openssl.cfg文件中的一个部分名称 – 23W