我正在尝试生成使用OpenSSL计算CMAC的密钥.
但是,这些似乎失败了,下面复制了错误消息.有人能指出问题所在吗?有人EVP_DigestSign*打电话给CMAC 吗?
以下是代码的一部分,该代码是通过https://wiki.openssl.org/index.php/EVP_Key_and_Parameter_Generation中的示例构建的:
BIO *out = NULL;
out = BIO_new(BIO_s_file());
if (out == NULL)
return -1;
BIO_set_fp(out, stdout, BIO_NOCLOSE);
EVP_MD_CTX* rctx = NULL;
EVP_PKEY *pkey = NULL;
EVP_PKEY_CTX *kctx = NULL;
rctx = EVP_MD_CTX_create();
if(rctx == NULL) {
printf("EVP_MD_CTX_create failed\n");
}
if(!EVP_PKEY_keygen_init(kctx)){
printf("EVP_PKEY_keygen_init failed\n");
}
if (EVP_PKEY_CTX_ctrl(kctx, -1, EVP_PKEY_OP_KEYGEN,EVP_PKEY_CTRL_CIPHER,0, (void *)EVP_aes_256_ecb()) <= 0)
printf("EVP_PKEY_CTX_ctrl 1 failed\n");
if (EVP_PKEY_CTX_ctrl(kctx, -1, EVP_PKEY_OP_KEYGEN,EVP_PKEY_CTRL_SET_MAC_KEY,/*key length*/32, "01234567890123456789012345678901") <= 0)
printf("Set the key data failed 1\n");
Run Code Online (Sandbox Code Playgroud)
这里的错误:
EVP_PKEY_CTX_ctrl failed
3073898120:error:06093096:lib(6):func(147):reason(150):pmeth_gn.c:122:
3073898120:error:06089093:lib(6):func(137):reason(147):pmeth_lib.c:390:
Run Code Online (Sandbox Code Playgroud)
在pmeth_lib.c的第390行:
EVPerr(EVP_F_EVP_PKEY_CTX_CTRL, EVP_R_COMMAND_NOT_SUPPORTED);
Run Code Online (Sandbox Code Playgroud)
我正在使用OpenSSL 1.0.1e.
| 归档时间: |
|
| 查看次数: |
962 次 |
| 最近记录: |