关闭

嵌入式 OpenSSL 常用函数——Base64编码及解码和证书操作

556人阅读 评论(0) 收藏 举报
分类:

Base64编码就是把二进制数据转换为可见的ASCII字符。 Base64解码是相反的过程。

主要函数

1、  Base64编码初始化函数

VoidEVP_EncodeInit(EVP_ENCODE_CTX *ctx);

参数ctx:[IN]用于保存Base64编码的的状态。

2、  Base64编码Update函数。

VoidEVP_EncodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int*out1, const unsigned char *in, int in1);

功能:进行Base64数据编码, 对于大数据可以重复调用。

3、  Base64编码结束函数

VoidEVP_EncodeFinal(EVP_ENCODE_CTX *ctx, unsigned char *out, int*out1);

函数功能:编码结束,输出最后剩余的编码数据。

4、  Base64编码函数

VoidEVP_EncodeBlock(unsigned char *t, const unsigned char *f, intn);

功能:进行Base64数据编码, 适用于小量数据。

参数:t:[OUT]编码后的数据。F:[IN]待编码的数据。N:[IN]待编码数据的长度

返回值:编码后的数据长度。

5、  Base64解码初始化函数

VoidEVP_DecodeInit(EVP_ENCODE_CTX *ctx);

参数ctx:[IN]用于保存Base64解码的的状态。

6、  Base64解码Update函数。

VoidEVP_DecodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int*out1, const unsigned char *in, int in1);

功能:进行Base64数据解码, 对于大数据可以重复调用。

7、  Base64解码结束函数

VoidEVP_DecodeFinal(EVP_ENCODE_CTX *ctx, unsigned char *out, int*out1);

函数功能:解码结束,输出最后剩余的解码数据。

8、  Base64解码函数

VoidEVP_DecodeBlock(unsigned char *t, const unsigned char *f, intn);

功能:进行Base64数据解码, 适用于小量数据。

参数:t:[OUT]解码后的数据。F:[IN]待解码的数据。N:[IN]待解码数据的长度

返回值:解码后的数据长度。

嵌入式 OpenSSL 常用函数——

现有的证书大都采用X。509规范, 主要同以下信息组成:版本号、证书序列号、有效期、拥有者信息、颁发者信息、其他扩展信息、拥有者的公钥、CA对以上信息的签名。

OpenSSL实现了对X。509数字证书的所有操作。包括签发数字证书、解析和验证证书等。

涉及证书操作的主要函数有验证证书(验证证书链、有效期、CRL)、解析证书(获得证书的版本、序列号、颁发者信息、主题信息、公钥、有效期等)。

 

主要函数

1、  DER编码转换为内部结构函数

X509 *d2i_X509(X509 **cert, unsigned char **d, int len);

函数功能:把一个DER编码的证书数据转化成OpenSSL内部结构体。

参数:cert:[OUT]X509结构体。 D:[IN]DER编码的证书数据指针地址。Len[IN]证书数据长度;

返回值:编码后的X509结构体数据

2、  获得证书版本函数X509_get_version

#defineX509_get_version(x)  ASN1_INTEGER_get((x)->cert_info->version)

参数:x:[IN]X509*结构体数据结构。

返回值:证书版本,数据类型“LONG”

3、  获得证书序列号函数

ASN1_INTEGER *X509_get_serialNumber(X509 *x);

返回值:证书序列号,数据类型“ASN1_INTEGER”.

4、  获得证书颁发者信息函数

X509_NAME *X509_get_issuer_name(X509 *a);

注*:X509_NAME结构体包括多个X509_NAME_ENTRY结构体。X509_NAME_ENTRY保存了颁发者的信息,这些信息包括对象和值(object 和value)。对象的类型包括国家、通用名、单位、组织、地区、邮件等。

5、  获得证书拥有者信息函数

X509_NAME *X509_get_subject_name(X509 *a);

6、  获得证书有效期的起始日期函数

#defineX509_get_notBefore(x)        ((x)->cert_info->validity->notBefore)

返回值: 证书起始有效期,数据类型“ASN1_TIME”

7、  获得证书有效期的终止日期函数

#defineX509_get_notAfter(x)           ((x)->cert_info->validity->notAfter)

8、  获得证书公钥函数

EVP_PKEY *X509_get_pubkey(X509 *x);

9、  创建和释放证书存储区

X509_STORE *X509_STORE_new(void);

Void X509_STORE_free(X509_STORE *v);

函数功能:创建和释放一个X509_STORE结构体, 主要用于验证证书。

10、向证书存储区添加证书

Int X509_STORE_add_cert(X509_STORE *ctx, X509 *x);

函数功能:添加信任的根证书到证书存储区。

返回值:1成功,否则为0

11、向证书存储区添加证书吊销列表

Int X509_STORE_add_crl(X509_STORE *ctx, X509_CRL *x);

功能:添加CRL到证书存储区。

参数:x:[IN]证书吊销列表。Ctx:[IN]证书存储区。

返回值:1成功, 否则为0。

12、创建证书存储区上下文环境函数

         X509_STORE_CTX*X509_STORE_CTX_new(void);

         返回值:操作成功返回证书存储区上下文环境指针,否则返回NULL。

13、释放证书存储区上下文环境

         VoidX509_STORE_CTX_free(X509_STORE_CTX *ctx);

14、初始化证书存储区上下文环境函数

         IntX509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *store, X509*x509, STACK_OF(X509) *chain);

函数功能:初始化证书存储区上下文环境,设置根证书、待验证的证书、CA证书链。

15、验证证书函数

         IntX509_verify_cert(X509_STORE_CTX *ctx);

         返回值:验证成功返回1,否则返回0

 

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:977963次
    • 积分:17615
    • 等级:
    • 排名:第540名
    • 原创:741篇
    • 转载:522篇
    • 译文:0篇
    • 评论:105条
    最新评论