linux 验证接口服务,CryptoAPI 数字签名 与 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库进行验证~~切记~0b1331709591d260c1c78e86d0c51c18.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值