第二十一章 EVP / 21.6 非对称函数

  典型的非对称函数有:

1EVP_PKEY_encrypt

公钥加密。

2)   EVP_PKEY_decrypt

私钥解密。

3)   EVP_PKEY_assign

设置EVP_PKEY中具体的密钥结构,使它代表该密钥。

4)   EVP_PKEY_assign_RSA/ EVP_PKEY_set1_RSA

设置EVP_PKEY中的RSA密钥结构,使它代表该RSA密钥。

5)    EVP_PKEY_get1_RSA

获取EVP_PKEYRSA密钥结构。

6)   EVP_SignFinal

签名操作,输入参数必须有私钥(EVP_PKEY)

7)   EVP_VerifyFinal

验证签名,输入参数必须有公钥(EVP_PKEY)

8)   int EVP_OpenInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type,const unsigned char *ek, int ekl, const unsigned char *iv,EVP_PKEY *priv)

解数字信封初始化操作,type为对称加密算法,ek为密钥密文,ekl为密钥密文长度,iv为填充值,priv为用户私钥

       9)    EVP_OpenUpdate

       做解密运算

10)  EVP_OpenFinal

做解密运算,解开数字信封。

11)   int EVP_SealInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type, unsigned char **ek,int *ekl, unsigned char *iv, EVP_PKEY **pubk, int npubk)

type为对称算法,ek数组用来存放多个公钥对密钥加密的结果,ekl用于存放ek数组中每个密钥密文的长度,iv为填充值,pubk数组用来存放多个公钥,npubk为公钥个数,本函数用多个公钥分别加密密钥,并做加密初始化。

    12)EVP_SealUpdate

       做加密运算

EVP_SealFinal

做加密运算,制作数字信封。