我使用的是openssl 0.9.8(目前无法更改为更高版本)。 我正在使用openssl evp api(evp - 高级加密函数) 使用aes加密所有数据,使用rsa加密密钥。
致电:
EVP_PKEY_CTX *ctx = EVP_PKEY_CTX_new_id(EVP_PKEY_RSA, NULL);
导致编译错误:
error: 'EVP_PKEY_CTX' was not declared in this scope
根据此link
VP_PKEY_CTX仅在1.0.0及更高版本中使用。
但是evp已经存在于0.9.8中。 那么我应该使用什么类型而不是EVP_PKEY_CTX作为我的指针变量* ctx?
答案 0 :(得分:2)
但是evp已经存在于0.9.8中。那么我应该使用什么类型而不是EVP_PKEY_CTX作为我的指针变量* ctx?
EVP_PKEY
和朋友可能在OpenSSL 0.9.8中可用。例如:
$ grep -R EVP_PKEY_new *
apps/req.c: if ((pkey=EVP_PKEY_new()) == NULL) goto end;
apps/apps.c: pkey = EVP_PKEY_new();
crypto/evp/p_lib.c:EVP_PKEY *EVP_PKEY_new(void)
...
但是我没有看到OpenSSL 0.9.8中的EVP_PKEY_CTX_new_id
和EVP_PKEY_CTX
可用。这与文档告诉您的内容一致。
$ grep -R EVP_PKEY_CTX_new_id *
$
$ grep -R EVP_PKEY_CTX *
crypto/cms/cms_sd.c: if (EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_SIGN,
crypto/cms/cms_sd.c: if (EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_SIGN,
$