CryptAPI 数字签名 与 Openssl 验证签名

    这段时间要实现一个认证协议,分为客户端和服务器端,客户端使用windows操作系统,服务器端使用linux操作系统,在客户端下(windows),使用windows证书库中的签名证书对消息进行签名(使用windows的crypto库),然后在服务器端(linux)下,使用OpenSSL库对签名值进行验证~~

 

客户端使用函数接口:

CertOpenSystemStore  —  打开系统证书库

CryptUIDlgSelectCertificateFromStore  — 从证书库中选择证书,获取证书上下文

CertGetCertificateContextProperty  — 获取属性CERT_KEY_PROV_INFO_PROP_ID对应CRYPT_KEY_PROV_INFO结构,得到证书对应的密钥容器名

CryptAcquireContext — 连接密钥容器

CryptCreateHash — 创建Hash对象

CryptHashData — 得到Hash值

CryptSignHash — 对Hash值进行签名,得到签名值

 

服务器使用函数接口:

d2i_X509_bio  — 从编码后的证书生成x509证书

X509_get_pubkey — 从x509证书中获取公钥

EVP_MD_CTX_init  — 初始化ctx

EVP_VerifyInit_ex — 对签名进行验证

EVP_VerifyUpdate

EVP_VerifyFinal

 

这里有一个关键点:crypto库生成的签名值要经过反序后才能由OpenSSL库进行验证~~切记~

 

CryptAPI 数字签名 与 Openssl 验证签名,布布扣,bubuko.com

CryptAPI 数字签名 与 Openssl 验证签名

上一篇:API判断本机安装的Revit版本信息


下一篇:黑马程序员_WinForm窗体传值示例