第二十五章 证书申请 / 25.2 数据结构

根据PKCS#10opensslX509数字证书申请结构定义在crypto/x509.h中,如下所示,主要由两部分组成:

1X509_REQ_INFO

typedef struct X509_req_info_st

       {

              ASN1_ENCODING enc;

              ASN1_INTEGER *version;

              X509_NAME *subject;

              X509_PUBKEY *pubkey;

              STACK_OF(X509_ATTRIBUTE) *attributes;

       } X509_REQ_INFO;

该结构为证书申请信息主体,其中version表示版本,subject为申请者信息,pubkey为申请者公钥信息,attributes为可选的属性信息。该结构的DER编码接口在crytpo/asn1/x_req.c中由宏实现,实现了newfreei2dd2i函数。

2X509_REQ

typedef struct X509_req_st

       {

              X509_REQ_INFO *req_info;

              X509_ALGOR *sig_alg;

              ASN1_BIT_STRING *signature;

              int references;

       } X509_REQ;

该结构为证书申请信息,req_info为信息主体,sig_alg为签名算法,signature为签名值(申请者对req_infoDER编码值用自己的私钥签名)。该结构的DER编码接口在crytpo/asn1/x_req.c中由宏实现,实现了newfreei2dd2i函数。