欢迎来到天天文库
浏览记录
ID:10193084
大小:19.86 KB
页数:8页
时间:2018-06-12
《openssl之pkcs7系列》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、openssl学习笔记之pkcs7-11.概述openssl之pkcs7介绍openssl实现了pkcs7(加密消息语法标准)。在中。p7包括6种数据内容:数据(data),签名数据(sign),数字信封数据(enveloped),签名数字信封数据(signed_and_enveloped),摘要数据(digest),加密数据(encrypted)。后面将一一介绍如何对6种数据类型进行封装。PKCS7结构体定义如下:typedefstructpkcs7_st{/*ThefollowingisnonNULLifitcontainsASN1encodingof*thisstructure*
2、/unsignedchar*asn1;longlength;#definePKCS7_S_HEADER0#definePKCS7_S_BODY1#definePKCS7_S_TAIL2intstate;/*usedduringprocessing*/intdetached;ASN1_OBJECT*type;/*contentasdefinedbythetype*//*allencryption/messagedigestsareappliedtothe'contents',*leavingoutthe'type'field.*/union{char*ptr;/*NID_pkcs7_da
3、ta*/ASN1_OCTET_STRING*data;/*NID_pkcs7_signed*/PKCS7_SIGNED*sign;/*NID_pkcs7_enveloped*/PKCS7_ENVELOPE*enveloped;/*NID_pkcs7_signedAndEnveloped*/PKCS7_SIGN_ENVELOPE*signed_and_enveloped;/*NID_pkcs7_digest*/PKCS7_DIGEST*digest;/*NID_pkcs7_encrypted*/PKCS7_ENCRYPT*encrypted;/*Anythingelse*/ASN1_TY
4、PE*other;}d;}PKCS7;数据(data):明文打包type为NID_pkcs7_data,ASN1_OCTET_STRING类型,即为简单的ASN1_STRING数据类型。签名数据(sign):把数据以及签名值打包,其中包括签名者的证书,CRL等,目的为确定发送者的身份。type为NID_pkcs7_signed。PKCS7_SIGNED类型的数据,PKCS7_SIGNED定义如下:typedefstructpkcs7_signed_st{ASN1_INTEGER*version;/*version1*///版本STACK_OF(X509_ALGOR)*md_algs;/
5、*mdused*///摘要算法STACK_OF(X509)*cert;/*[0]*///签名证书STACK_OF(X509_CRL)*crl;/*[1]*///证书吊销列表STACK_OF(PKCS7_SIGNER_INFO)*signer_info; 签名信息structpkcs7_st*contents; }PKCS7_SIGNED;数字信封数据(enveloped):使用接收者的公钥(从证书获取)加密数据。目的为保护数据,拥有私钥的接收者才能解开数据。type为NID_pkcs7_enveloped。PKCS7_ENVELOPE类型的数据,PKCS7_ENVELOPE定义如下ty
6、pedefstructpkcs7_enveloped_st{ASN1_INTEGER*version;/*version0*/STACK_OF(PKCS7_RECIP_INFO)*recipientinfo;//接收者的证书PKCS7_ENC_CONTENT*enc_data;//用接收者证书公钥加密的数据}PKCS7_ENVELOPE;签名数字信封数据(signed_and_enveloped)数字信封加签名type为NID_pkcs7_signedAndEnveloped。PKCS7_SIGN_ENVELOPE类型的数据,PKCS7_SIGN_ENVELOPE定义如下typedef
7、structpkcs7_signedandenveloped_st{ASN1_INTEGER*version;/*version1*/STACK_OF(X509_ALGOR)*md_algs;/*mdused*/STACK_OF(X509)*cert;/*[0]*/STACK_OF(X509_CRL)*crl;/*[1]*/STACK_OF(PKCS7_SIGNER_INFO)*signer_info;PKCS7_ENC_CONTENT*enc
此文档下载收益归作者所有