ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

X509数字证书

2021-11-16 19:02:19  阅读:300  来源: 互联网

标签:EXTENSION X509 扩展 int PURPOSE 堆栈 数字证书


主要函数

1)  X509_STORE_add_cert

将证书添加到X509_STORE中。

1)      X509_STORE_add_crl

将crl添加到X509_STORE中。

2)      void X509_STORE_set_flags(X509_STORE *ctx, long flags)

将flags赋值给ctx里面的flags,表明了验证证书时需要验证哪些项。

4)  X509_TRUST_set_default

              设置默认的X509_TRUST检查函数。

       5)  int X509_verify(X509 *a, EVP_PKEY *r)

              验证证书的签名。

6)  X509_verify_cert

       验证证书,用法可参考apps/verify.c。

7)  X509_verify_cert_error_string

       根据错误号,获取错误信息。

8)  X509_add1_ext_i2d

根据具体的扩展项数据结构添加一个扩展项。

9)  X509_add_ext

X509_EXTENSION堆栈中,在指定位置添加一项。

10)X509_ALGOR_dup

       算法拷贝。

11)X509_alias_get0/X509_alias_set1

       获取/设置别名。

12)X509_asn1_meth

       获取X509的ASN1_METHOD,包括new、free、i2d和d2i函数。

13)X509_certificate_type

       获取证书和公钥类型。

    14)int X509_check_issued(X509 *issuer, X509 *subject);

检查subject证书是否由issuer颁发,如果是则返回X509_V_OK,即0。

       15)X509_check_private_key

              检查私钥与证书中的公钥是否匹配,匹配返回1。

       16)X509_cmp

              证书比较。

       17) int    X509_cmp_current_time(ASN1_TIME *s)

将s与当前时间进行比较,返回值小于0则s早于当前时间,大于0则s晚与当前时间。

18)int X509_cmp_time(ASN1_TIME *ctm, time_t *cmp_time)

              如果ctm时间在cmp_time之后,则返回值大于0。

19)     X509_delete_ext

删除扩展项堆栈中指定位置的扩展项。

       20)X509_digest

              根据指定的摘要算法对X509结构做摘要。

20)     X509_dup

拷贝函数。

21)X509_find_by_issuer_and_serial

根据颁发者的X509_NAME名称和证书序列号,在X509堆栈中查找对应的证书并返回。

22)  X509_find_by_subject

从证书堆栈中根据持有者名字查询证书,并返回。

23)X509_get0_pubkey_bitstr

获取X509结构中的DER编码的公钥信息。

       24)X509_load_cert_crl_file

加载证书和crl,用于验证证书。

25)X509_PURPOSE_get0

              根据X509_PURPOSE的位置获取对应的X509_PURPOSE。

26)X509_PURPOSE_get0_name

获取X509_PURPOSE的名字。

27)X509_PURPOSE_get0_sname

              获取X509_PURPOSE的别名。

28)X509_PURPOSE_get_by_id

根据证书用途ID获取X509_PURPOSE在当前数组(xstandard)或堆栈(xptable)中的位置,如果没有返回-1。

29)X509_PURPOSE_get_by_sname

根据别名获取对应的X509_PURPOSE在数组或堆栈中的位置。

30)X509_PURPOSE_get_count

获取所有的X509_PURPOSE个数,包括标准的和用户动态添加的。

31)X509_PURPOSE_get_id

获取X509_PURPOSE的ID。

       32)  int X509_PURPOSE_set(int *p, int purpose)

检查是否有purpose标识的X509_PURPOSE,并将purpose值写入p。

33)     STACK_OF(X509_EXTENSION) X509v3_add_ext

(STACK_OF(X509_EXTENSION) **x, X509_EXTENSION *ex, int loc)

添加扩展项,堆栈操作,将ex表示的扩展项根据loc指定的位置插入到X509_EXTENSION堆栈中。

       34)  X509v3_delete_ext

堆栈操作,去除指定位置的扩展项。

35)int X509V3_EXT_print(BIO *out, X509_EXTENSION *ext,

unsigned long flag, int indent)

本函数用于打印单个扩展项,out为BIO类型的输出对象,ext为扩展项,flag表明不支持扩展项的处理方式,indent表明输出时第一列的位置。

flag的值在x509v3.h中定义,可以有:

Ø         #define X509V3_EXT_DEFAULT     0  

打印DER编码内容,调用M_ASN1_OCTET_STRING_print。

Ø         #define X509V3_EXT_ERROR_UNKNOWN        (1L << 16)

打印一行语句。

Ø         #define X509V3_EXT_PARSE_UNKNOWN        (2L << 16)   

分析扩展项的DER编码,并打印。

Ø         #define X509V3_EXT_DUMP_UNKNOWN         (3L << 16)

打印出DER编码的内容,调用BIO_dump_indent。

       36)int X509V3_extensions_print(BIO *bp, char *title,

STACK_OF(X509_EXTENSION) *exts, unsigned long flag, int indent)

本函数将堆栈中的所有扩展项打印,参数意义同上。

37)  int X509v3_get_ext_by_critical(const STACK_OF(X509_EXTENSION) *sk, int crit,         int lastpos)

获取扩展项在堆栈中的位置,crit表面扩展项是否关键,lastpos为指定堆栈搜索起始位置。此函数从给定的lastpos开始搜索扩展项堆栈,找到与crit匹配的扩展项后,返回其位置,如果找不到扩展项,返回-1。

       38)int X509v3_get_ext_by_NID(const STACK_OF(X509_EXTENSION) *x, int nid,

              int lastpos)

获取扩展项在其堆栈中的位置,此函数根据扩展项标识nid以及堆栈搜索的起始进行搜索,如果找到,返回它在堆栈中的位置,如果没找到,返回-1。

39)  int X509v3_get_ext_by_OBJ(const STACK_OF(X509_EXTENSION) *sk, ASN1_OBJECT *obj, int lastpos)

              功能同上。

40)X509_EXTENSION *X509v3_get_ext(const STACK_OF(X509_EXTENSION) *x,

int loc)

获取扩展项,loc为扩展项在堆栈x中的位置,如果不成功,返回NULL。

       41)int X509v3_get_ext_count(const STACK_OF(X509_EXTENSION) *x)

获取扩展项的个数,此函数调用堆栈操作sk_X509_EXTENSION_num(x)来获取扩展项的个数。

       42)STACK_OF(CONF_VALUE) * X509V3_get_section(X509V3_CTX *ctx, char *section)

获取配置信息,section为配置信息中的“段”信息。比如有配置信息如下:

[CA]

Name1=A

Name2=B

则section应是”CA”,返回的信息为它包含的内容信息。

       43)char * X509V3_get_string(X509V3_CTX *ctx, char *name, char *section)

根据段和属性获取值,比如有如下配置信息:

[CA]

Name1=A

Name2=B

调用此函数时name为”Name1”,sectionwei “CA”,则返回值为”A”。

       44)int X509V3_get_value_bool(CONF_VALUE *value, int *asn1_bool)

判断配置信息的布尔值,如果value表示的值为true、TRUE、y、Y、yes、YES,*asn1_bool 的值设为xff,并返回1,如果为false、FALSE、n、N、NO、no, *asn1_bool设置为 0,并返回1。此函数调用不成功时返回0。

       45) int X509V3_get_value_int(CONF_VALUE *value, ASN1_INTEGER **aint)

将value中的值转换为ASN1_INTEGER类型,结果存放在**aint中,函数调用成功返回1,否则返回0。

       46)STACK_OF(CONF_VALUE) *X509V3_parse_list(const char *line)

分析配置信息的一行数据,返回结果。

标签:EXTENSION,X509,扩展,int,PURPOSE,堆栈,数字证书
来源: https://blog.csdn.net/qingzhuyuxian/article/details/121362515

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有