我正在使用 openssl 0.9.8(目前无法更改为更高版本)。我正在使用 openssl evp api(evp - 高级加密函数)用 aes 加密数据,用 rsa 加密 key 。
调用:
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 is only in 1.0.0 and later.
但是 evp 已经存在于 0.9.8 中。那么我应该为我的指针变量 *ctx 使用什么类型而不是 EVP_PKEY_CTX?
But evp allready existed in 0.9.8. so what type should i use instead of EVP_PKEY_CTX for my pointer variable *ctx?
EVP_PKEY
和 friend 可能在 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)
...
但我看不到 EVP_PKEY_CTX_new_id
和 EVP_PKEY_CTX
在 OpenSSL 0.9.8 中可用的位置。这与文档告诉您的内容一致。
$ 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,
$
我是一名优秀的程序员,十分优秀!