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