OpenSSL 常用函數——Base64編碼及解碼和證書操作

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章