【发布时间】:2014-06-12 18:47:36
【问题描述】:
我有一个预构建的 OpenSSL 库(libssl.a 和 libcrypto.a),用于我的 C++ 应用程序。我不知道 OpenSSL 库的版本。
有没有办法从这些预建库中获取版本号?
【问题讨论】:
我有一个预构建的 OpenSSL 库(libssl.a 和 libcrypto.a),用于我的 C++ 应用程序。我不知道 OpenSSL 库的版本。
有没有办法从这些预建库中获取版本号?
【问题讨论】:
库中有一个包含版本详细信息的字符串,名为SSLEAY_VERSION - 它看起来像:
OpenSSL 0.9.5a 1 Apr 2000OpenSSL 1.0.1e-fips 11 Feb 2013您可以使用字符串和 grep 从二进制库中找到它:
strings libcrypto.so | grep "^OpenSSL \S\+ [0-9]\+ \S\+ [0-9]\+"
【讨论】:
过滤可能并不总是有效。你可以这样做
strings libssl.so | grep "^OpenSSL"
OpenSSLDie
OpenSSL 1.0.2n 7 Dec 2017
strings libcrypto.so | grep "^OpenSSL"
OpenSSLDie
OpenSSL_add_all_ciphers
OpenSSL_add_all_digests
OpenSSL 1.0.2n 7 Dec 2017
OpenSSL HMAC method
OpenSSL EC algorithm
OpenSSL RSA method
OpenSSL DSA method
OpenSSL ECDSA method
OpenSSL DH Method
OpenSSL X9.42 DH method
OpenSSL PKCS#3 DH method
OpenSSL ECDH method
OpenSSL 'dlfcn' shared library method
OpenSSL default
OpenSSL default user interface
OpenSSL CMAC method
【讨论】:
您可以通过阅读以下内容以编程方式执行此操作:
和
基本上,您将需要使用以下函数:
SSLeay()SSLeay_version()【讨论】:
cout << SSLeay_version(SSLEAY_VERSION);。当然,在使用 SSL_library_init (); 初始化库之后。
【讨论】: