博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
28.openssl编程——CRL
阅读量:2243 次
发布时间:2019-05-09

本文共 2210 字,大约阅读时间需要 7 分钟。

28.1 CRL介绍
证书撤销列表(Certificate Revocation List, 简称CRL),是液体中包含撤销的证书列表的签名数据结构。CRL是证书撤销状态的公布形式,CRL就像信用卡的黑名单,用于公布某些数字证书不在有效。
CRL是一种离线的证书状态信息。他一一定的周期进行更新。CRL可以分为完全CRL和增量CRL。在完全CRL中包含了所有的被撤销证书信息,增量CRL由一些列的CRL来表明被撤销的证书信息,他每次发布的CRL是对签名发布CRL的增量扩充
基本的CRL信息由:
被撤销证书序列号
撤销时间
撤销原因
签名者
CRL签名等
28.2 
数据结构
typedef struct X509_revoked_st
{
ASN1_INTEGER serialNumber; 被撤销证书的序列号
ASN1_TIME *revocationDate; 撤销时间
STACK_OF(X509_EXTENSION) *extensions; 扩展项
STACK_OF(GENERAL_NAME) *issuer;
int reason;
int sequence;
}
typedef struct X509_ctl_info_st {
ASN1_INTEGER *version; crl版本
X509_ALGOR sig_alg; crl签名法
X509_NAME *issuer; 签发者信息
ASN1_TIME *lastUpdate; 上次更新时间
ASN1_TIME *nextUpdate; 下次更新时间
STACK_OF(X509_REVOKED) *revoked; 被撤销证书信息
STACK_OF(X509_EXTENSION) *extensions; 扩展项
ASN1_ENCODING enc;
}
struct X509_crt_st {
X509_CRL_INFO crl;
X509_ALGOR sig_alg;
ASN1_BIT_STRING signature;
CRYPTO_REF_COUNT refernces;
int flags;
AUTHORITY_KEYID *akid;
ISSUING_DIST_POINT *idp;
int idp_flags;
int idp_reasons;
ASN1_INTEGER *crl_number;
ASN1_INTEGER *base_crl_number;
STACK_OF(GENERAL_NAMES) *issuers;
unsgined char sha1_hash【SHA_DIGEST_LENGTH】
const X509_CRL_METHOD *meth;
void *meth_data;
CRYPTO_RWLOCK *lock;
}
28.3 CRL函数
CRL函数主要是set和get函数
函数
功能
X509_CRL_add0_revoked
添加一个被撤销证书的信息
X509_CRL_print
打印crl内容到BIO中
X509_CRL_print
将crl的内容输出到fp中,词函数调用了X509_CRL_print
X509_CRL_set_issuer_name
设置crl的颁发着
X509_CRL_set_lastUpdate
设置crl的颁发者
X509_CRL_set_nextUpdate
设置crl下次发布时间
X509_CRL_set_version
设置crl版本
X509_CRL_sign
对crl进行签名,pkey为私钥,md为摘要算法,结果存放在x->signature中
X509_CRL_sort
根据证书序列号对crl排序,此函数实现了采用了堆栈排序,堆栈的比较函数为X509_REVOKED_cmp
X509_CRL_add1_ext_i2d
添加CRL扩展,nid为要添加的扩展标识,value为被添加的具体扩展项的内部数据结构地址,crit表明是否为关键阔啊站,flags表明何种操作。
X509_CRL_add_ext
添加扩展项到指定堆栈位置,此函数调用X509v3_add_ext
X509_CRL_cmp
CRL比较,此函数调用X509_NAME_cmp,值比较颁发者的名字是否相同
X509_CRL_delete_ext
删除CRL扩展项堆栈中的某一项,loc指定被删除项在堆栈中的位置
X509_CRL_digest
CRL摘要,本函数 对X509_CRL进行摘要,type指定摘要算法,摘要结果存放在md中
X509_CRL_dup
CRL数据拷贝,此函数通过宏来实现。
X509_CRL_get_d2i
CRL中获取扩展项,此函数用于获取crl中制定扩展项的内部数据结构,返回值为具体的扩展项数据结构地址,nid为扩展表示,他调用了X509V3_get_d2i函数
X509_CRL_get_ext_by_NID
获取扩展项在其堆栈中的位置,nid为扩展项标识,lastpos为搜索起始位置。
X509_CRL_get_ext_by_OBJ
获取扩展项在其堆栈中的位置
X509_CRL_get_ext_by_count
获取crl中扩展项的个数
X509_CRL_verify
验证CRL.EVP_PKEY结构中需要给出公钥

转载地址:http://nqwdb.baihongyu.com/

你可能感兴趣的文章
Spring源码剖析6:Spring AOP概述
查看>>
【Linux】进程的理解(二)
查看>>
【Linux】vim的简单配置
查看>>
【C++】构造函数、析构函数抛出异常的问题
查看>>
【C++】关于vector<bool>
查看>>
PB协议的说明与使用
查看>>
什么是TPS,什么是QPS,区别是什么?
查看>>
git pull遇到错误:error: Your local changes to the following files would be overwritten by merge:
查看>>
ThreadLocal 那点事儿(续集)
查看>>
阳台做成榻榻米 阳台做成书房
查看>>
深入分析java线程池的实现原理
查看>>
mybatis中"#"和"$"的区别
查看>>
Hibernate与MyBatis区别
查看>>
如何禁用Eclipse的Validating
查看>>
据说看完这21个故事的人,30岁前都成了亿万富翁。你是下一个吗?
查看>>
SpringMVC学习笔记2
查看>>
Oracle知识点连载(一)
查看>>
Oracle知识点连载(二)
查看>>
Oracle知识点连载(三)
查看>>
Oracle知识点连载(五)
查看>>