文件上说
OpenSSL保存了摘要算法和密码的内部表。它使用此表通过EVP_get_cipher_byname()等函数查找密码。 OpenSSL_add_all_digests()将所有摘要算法添加到表中。
我的问题是,这张桌子存放在哪里?我的代码如何知道这个方法有executed?...how,它在内部工作吗?如果我想要更多的SSL连接,一个要添加所有的摘要,而另一个没有?有人知道这方面有什么好的文件吗?
谢谢
发布于 2013-01-23 22:45:00
手册页的备注部分对此进行了总结:
一个典型的应用程序将在退出之前首先调用OpenSSL_add_all_algorithms()和EVP_cleanup()。
和
密码和摘要查找函数用于库的许多部分。如果没有初始化表,几个函数会出现错误行为,并抱怨它们找不到算法。这包括PEM、PKCS#12、SSL和S/MIME库。这是OpenSSL邮件列表中的常见查询。
因此,假设您正在编写一个典型的应用程序,您将将其添加到您的OpenSSL初始化代码中:
OpenSSL_add_all_algorithms();下面是OpenSSL清理代码:
EVP_cleanup();你就完蛋了。在使用OpenSSL的应用程序中,您总是负责自己调用它们。如果您想知道OpenSSL如何在内部存储表,use the source, Luke。
要控制哪些密码对于特定的SSL上下文可用,可以使用list。
至于比手册页面更好的文档,我可以推荐"Network Security with OpenSSL" by John Viega, Matt Messier & Pravir Chandra。这本书是旧的,没有涵盖更新版本的OpenSSL,但大多数仍然是非常适用的。
发布于 2020-05-01 19:14:52
更新的OpenSSL_add_all_algorithms版本不需要OpenSSL (),因此会被忽略。为了实现向后和向前兼容性,请使用以下命令:
# if OPENSSL_API_COMPAT < 0x10100000L
OpenSSL_add_all_algorithms();
# endif和
# if OPENSSL_API_COMPAT < 0x10100000L
EVP_cleanup();
# endifOpenSSL_add_all_ciphers()和OpenSSL_add_all_digests()也是如此。
有关更多详细信息,请参见digests.html的手册页
发布于 2020-09-22 16:06:54
这是个老问题。API在几年前就被废弃了:
OpenSSL_add_all_algorithms()、OpenSSL_add_all_ciphers()、OpenSSL_add_all_digests()和EVP_cleanup()函数在OpenSSL 1.1.0中被OPENSSL_init_crypto()废弃。
参考资料:algorithms.html
https://stackoverflow.com/questions/14489731
复制相似问题