OpenSSL库验证PKCS7签名
来源:互联网 发布:估算网络机房电源容量 编辑:程序博客网 时间:2024/05/22 15:36
- //signature_msg为PKCS7签名串
//signature_msg为PKCS7签名串
- int Openssl_Verify(unsigned char* signature_msg,unsigned int length)
- {
- unsigned char message[1024];
- int message_length = 0;
- const unsigned char* p_signature_msg = signature_msg; //这里很重要,不然会修改signature_msg指针地址导致释放出问题
- //DER编码转换为PKCS7结构体
- PKCS7* p7 = d2i_PKCS7(NULL,&p_signature_msg,length);
- if (p7 == NULL)
- {
- printf("error.\n");
- return 0;
- }
- //解析出原始数据
- BIO *p7bio= PKCS7_dataDecode(p7,NULL,NULL,NULL);
- //从BIO中读取原始数据,这里是明文
- dwMessageLen = BIO_read(p7bio,message,1024);
- //获得签名者信息stack
- STACK_OF(PKCS7_SIGNER_INFO) *sk = PKCS7_get_signer_info(p7);
- //获得签名者个数,可以有多个签名者
- int signCount = sk_PKCS7_SIGNER_INFO_num(sk );
- for (int i = 0;i < signCount;i++)
- {
- //获得签名者信息
- PKCS7_SIGNER_INFO *signInfo = sk_PKCS7_SIGNER_INFO_value(sk,i);
- //获得签名者证书
- X509 *cert= PKCS7_cert_from_signer_info(p7,signInfo);
- //验证签名
- if (PKCS7_signatureVerify(p7bio,p7,signInfo,cert) != 1)
- {
- printf("signature verify error.\n");
- return 0;
- }
- }
- return 1;
- }
0 0
- OpenSSL库验证PKCS7签名
- OpenSSL库验证PKCS7签名
- Openssl验证PKCS7签名是否有效
- Openssl验证PKCS7签名是否有效 .
- Crypto库实现PKCS7签名与签名验证
- PKCS1签名&PKCS7签名&PKCS7信封格式
- openssl aes256 ecb PKCS7
- OpenSSL命令---pkcs7
- OpenSSL PKCS7 完整示例
- openssl md5 rsa 签名和签名验证
- openssl 用法例子PKCS7解析
- 使用 Openssl 验证自签名证书
- CryptAPI 数字签名 与 Openssl 验证签名
- 使用 Openssl 验证自签名证书
- OpenSSL RSA 消息签名与验证
- openssl DSA 数字签名与签名验证
- openssl 生成秘钥公钥加密解密签名验证
- 数据签名与验证--OpenSSL
- java程序的打包与发布
- Smart Pointer
- one to one 基于注解配置的共享主键的操作说明
- cocos2d-x 通过JNI实现c/c++和Android的java层函数互调
- Timus 1013 DP
- OpenSSL库验证PKCS7签名
- 黑马程序员学习log第六篇基础知识:JAVA的面向对象之IO总结
- xml The processing instruction target matching "[xX][mM][lL]" is not allowed
- HDU 1072(bfs)
- IOS多线程开发之GCD
- 图解排序算法及C语言实现之 ------ 快速排序:Quick Sort
- Makefile学习(二)
- Openssl验证PKCS7签名是否有效 .
- 单选按钮 、 下拉框 、 复选框 选中问题