目前,我使用EVP_PKEY_meth_get_count()、EVP_PKEY_meth_get0等调用来获取支持的公钥算法列表。但是,OpenSSL 3.0不赞成使用它们。应该使用哪个API?似乎找不到我用于对称密码的EVP_CIPHER_do_all_sorted的类似物。
EVP_PKEY_meth_get_count()
EVP_PKEY_meth_get0
EVP_CIPHER_do_all_sorted
dly7yett1#
好吧,看看OpenSSL的apps/list.c就能找到答案。这里是最小化的代码片段,它解决了我的问题(通过CMake检测支持的OpenSSL功能):
apps/list.c
#if OPENSSL_VERSION_NUMBER >= 0x30000000L static void print_km_name(const char *name, void *param) { /* Do not print OIDs for better clarity */ if (!name || ((name[0] <= '9') && (name[0] >= '0'))) { return; } printf("%s\n", name); } static void print_km(EVP_KEYMGMT *km, void *param) { EVP_KEYMGMT_names_do_all(km, print_km_name, NULL); } #endif int list_publickey() { #if OPENSSL_VERSION_NUMBER < 0x30000000L ... #else EVP_KEYMGMT_do_all_provided(NULL, print_km, NULL); #endif return 0; }
1条答案
按热度按时间dly7yett1#
好吧,看看OpenSSL的
apps/list.c
就能找到答案。这里是最小化的代码片段,它解决了我的问题(通过CMake检测支持的OpenSSL功能):