OpenSSL中的验证是先对原始数据计算摘要,
因为要先对原始数据计算摘要,
1、
#defineEVP_SignInit_ex(a, b,c)
IntEVP_DigestInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, ENGINE*imp1);
2、
#defineEVP_SignUpdate(a, b,c)
IntEVP_DigestUpdate(EVP_MD_CTX *ctx, const *d, size_t cnt);
3、
IntEVP_SignFinal(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s,EVP_PKey pkey);
功能:计算签名结束,
参数说明:
Ctx:[IN]上下文变量
Md:[OUT]
Pkey:[IN]
4、
#defineEVP_VerifyInit_ex(a, b,c)
IntEVP_DigestInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, ENGINE*imp1);
5、
#defineEVP_VerifyUpdate(a, b,c)
IntEVP_DigestUpdate(EVP_MD_CTX *ctx, const *d, size_t cnt);
6、
IntEVP_VerifyFinal(EVP_MD_CTX *ctx, const unsigned char *sigbuf,unsigned int siglen, EVP_PKey pkey);
功能:计算验证结束,
参数说明:
Ctx:[IN]上下文变量
sigbuf:[IN]
Pkey:[IN]
计算私钥过程:
RSArsa = RSA_generate_key(1024, RSA_F4, NULL,NULL);//产生一个1024位的RSA密钥
EVP_PKEY *evpKey = EVP_PKEY_new();//新建一个EVP_PKEY变量
EVP_PKEY_set1_RSA(evpKey,rsa);
//完成任务后面就可以用evpKey来签名了。
注:上面资源大多源自《精通PKI网络安全论证技术与编程实现》一书。