第二十八章 CRL / 28.2 数据结构

       Openssl中的crl数据结构定义在crypto/x509/x509.h中。

1)  X509_REVOKED

typedef struct X509_revoked_st

       {

              ASN1_INTEGER *serialNumber;

              ASN1_TIME *revocationDate;

              STACK_OF(X509_EXTENSION) *extensions;

              int sequence;

       } X509_REVOKED;

       本结构用于存放一个被撤销证书的信息,各项意义如下:

       serialNumber:被撤销证书的序列号;

       revocationDate:撤销时间;

extensions:扩展项,可选;

sequence:顺序号,用于排序,表示当前被撤销证书信息在crl中的顺序。

       2X509_CRL_INFO

typedef struct X509_crl_info_st

       {

              ASN1_INTEGER *version;

              X509_ALGOR *sig_alg;

              X509_NAME *issuer;

              ASN1_TIME *lastUpdate;

              ASN1_TIME *nextUpdate;

              STACK_OF(X509_REVOKED) *revoked;

              STACK_OF(X509_EXTENSION) *extensions;

              ASN1_ENCODING enc;

       } X509_CRL_INFO;

crl信息主体,各项意义如下:

versioncrl版本;

sig_algcrl签名法;

issuer:签发者信息;

lastUpdate:上次更新时间;

       nextUpdate:下次更新时间;

       revoked:被撤销证书信息;

extensions:扩展项,可选。

3) X509_CRL

struct X509_crl_st

       {

              X509_CRL_INFO *crl;

              X509_ALGOR *sig_alg;

              ASN1_BIT_STRING *signature;

              int references;

       } ;

       完整crl数据结构,各项意义如下:

       crlcrl信息主体;

       sig_alg:签名算法,与X509_CRL_INFO中的一致;

       signature:签名值;

       references:引用。

上述三个结构的DER编解码通过宏在crypto/asn1/x_crl.c中实现,包括newfreei2dd2i函数。