0
点赞
收藏
分享

微信扫一扫

《OpenSSL3.0学习之二十七 EVP_OpenXXX》

四月天2021 2022-03-11 阅读 62

文章目录

🌺概要

 #include <openssl/evp.h>

 int EVP_OpenInit(EVP_CIPHER_CTX *ctx, EVP_CIPHER *type, unsigned char *ek,
                  int ekl, unsigned char *iv, EVP_PKEY *priv);
 int EVP_OpenUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out,
                    int *outl, unsigned char *in, int inl);
 int EVP_OpenFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl);

🌻描述

EVP信封例程是信封解密的高级接口。他们解密公钥加密的对称密钥,然后使用它解密数据。

EVP_OpenInit()初始化一个密码上下文ctx,用于用密码type解密。它使用私钥priv解密在ek参数中传递的长度为ekl字节的加密对称密钥。IV在iv参数中提供。

EVP_OpenUpdate()和EVP_OpenFinal()具有与EVP_DecryptUpdate()和EVP_DecryptFinal()例程完全相同的属性,如EVP_EncryptInit手册页。

🌹注意

可以像调用EVP_DecryptInit()一样调用EVP_OpenInit()两次。第一次调用应该有priv设置为NULL,并且(在设置任何密码参数之后)应该用type设置为空。

如果密码在type参数是可变长度密码,则密钥长度将被设置为恢复的密钥长度的值。如果密码是固定长度密码,则恢复的密钥长度必须与固定密码长度匹配。

🌷返回值

如果出错,EVP_OpenInit()返回0;如果成功,返回一个非零整数(实际上是恢复的密钥大小)。

EVP_OpenUpdate()返回1表示成功,返回0表示失败。

如果解密失败,EVP_OpenFinal()返回0;如果解密成功,则返回1。

举报

相关推荐

0 条评论