openssl 0.9.8 EVP EVP_PKEY_CTX未定义

时间:2014-03-28 11:56:58

标签: c encryption openssl

我使用的是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?

1 个答案:

答案 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_idEVP_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,
$