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

原创 2013年12月02日 14:45:58

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

 

 

相关文章推荐

Java常用工具类封装——Base64 编码和解码

Base64 编码和解码工具类,供参考。 import java.io.*; /** * Base64 编码和解码。 * * @author jiangshuai * @date 2016年10月...

openssl学习篇之base64编码、解码;md5 摘要;sha1摘要;3des加密,解密;rsa算法

openssl学习篇之base64编码、解码 完善在上一篇 “openssl学习篇之base64编码、解码中有写出实现的代码, 经实际的运行中,发现如果字符串长超过47会产生BUG,返回空,所以修正了...

OpenSSL Base64编码与解码

#include #include #include #include //Base64编码 void tEVP_Encode() { EVP_ENCODE_CTX ctx; //EVP编...

使用openssl进行base64编码 解码

static int base64_encode(char *str,int str_len,char *encode,int *encode_len) { BIO *bmem, *b64; ...
  • bytxl
  • bytxl
  • 2013年12月09日 15:55
  • 1674

openssl学习篇之base64编码、解码

因为拓展开发平台的原因,想把某网站的功能移植到手机客户端。决定先从IOS下手,但是服务器上的应用是基于 .net开发, 加密和解密算法与 objective-c下的算法并不一致,由此产生使用open...

Openssl的Base64编码及解码

近日需要在C++下面做一些加解密的事情,因为是在Linux下面,首选自然是openssl. 但openssl的文档真是不敢恭维,文档少得可怜不说,在网络上搜索到的东西也是鱼龙混杂.我想我还是总结一下,...

OpenSSL 使用 base64 编码/解码

关于 OpenSSL 的介绍及安装请参见:Windows下编译OpenSSL下面主要介绍有关 OpenSSL 使用 base64 编/解码。简述 编码解码 更多参考编码/解码#include #...

OpenSSL中提供的base64编解码函数

(本文内容针对 1.0.1c 版本的OpenSSL)         对于 base64 编码,OpenSSL在 evp.h 中声明了相关函数,在 encode.c 中给出了实现。有两种方法: 1. ...
  • henter
  • henter
  • 2013年03月06日 15:27
  • 2487

OpenSSL中文手册之EVP库——base64编/解码

提供了base64编码和解码的高级接口。 Base 64编码将二进制数据转换为使用字符 A-Z,a-z,0-9,“+”和“/”表示来数据的可打印形式。每3个字节的二进制数据,编码为上诉4个字符表示的4...

javascript base64编码解码函数

  • 2013年06月13日 11:05
  • 76KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:嵌入式 OpenSSL 常用函数——Base64编码及解码和证书操作
举报原因:
原因补充:

(最多只允许输入30个字)