openssl 常用api的作用與使用

2021-10-13 12:44:13 字數 4624 閱讀 3342

參考文章:

ssl_library_init ssl庫的初始化

openssl_add_all_algorithms 載入所有的ssl演算法

ssl_load_error_strings() 載入所有ssl錯誤訊息

ssl_ctx_new() 產生乙個ssl ctx

ssl_ctx_use_certificate_file 載入使用者的數字證書

int

ssl_library_init

(void

)

void

ssl_load_error_strings

(void

);

函式作用:載入所有libssl中的錯誤**的string

x509 *

ssl_get_peer_certificate

(const ssl *ssl)

;

x509_name *

x509_get_subject_name

(const x509 *x)

;

注意

char

*x509_name_oneline

(x509_name *a,

char

*buf,

int size)

;

如果設定了buf,就會按照size的尺寸,將資料塞入buf中返回。

如果buf為null,那麼就會動態生成buf,然後寫入,最後返回。

返回值示例:

;函式作用:該函式也可以將x509_name 轉化成ascii碼,它與x509_name_oneline的區別是它可以提取x509_name中的某一項,例如common name,country name等等

函式引數

nid: 可以取如下這些值

例如傳入nid_countryname

char cscommonname[

512]=;

x509_name *pcommonname =

x509_get_subject_name

(cert)

;int nnamelen =

512;o

nnamelen =

x509_name_get_text_by_nid

(pcommonname, nid_commonname, cscommonname, nnamelen)

;//結果:cscommonname = 「baidu.com」

void

x509_free

(x509 *a)

;

函式作用:釋放x509結構

void

x509_crl_get0_signature

(const x509_crl *crl,

const asn1_bit_string *

*psig,

const x509_algor *

*palg)

;

函式引數傳入x509_crl格式的crl證書,將簽名放在psig中,將簽名演算法放在palg中。

stack_of

(ssl_cipher)

*ssl_ctx_get_ciphers

(const ssl_ctx *ctx)

;

int

sk_ssl_cipher_num

(cryptography_stack_of_ssl_cipher *

);

sk_ssl_cipher_value
const

char

*ssl_get_servername

(const ssl *s,

const

int type)

;

引數解析

type值

tl***t_nametype_host_name

int

ssl_client_version

(const ssl *s)

;//獲取client端放在legacy_version中的值

const

char

*ssl_get_version

(const ssl *ssl)

;//獲取連線使用的version,返回值是const char *

intssl_version

(const ssl *s)

;//獲取連線使用的version,返回值是int

ssl_ctx_set_verify

ssl_ctx_set_cert_verify_callback

()

ssl_ctx_set_verify_depth()

ssl_ctx_set_client_cert_cb()

ssl_set_session_secret_cb

()

x509_store_new

()

int

x509_up_ref

(x509 *a)

;

增加a的引用計數。

x509_crl_up_ref

(x509_crl *crl)

;

增加crl的引用

const ssl_cipher *

ssl_get_current_cipher

(const ssl *s)

這個函式返回的是ssl_cipher物件,想要獲取cipher的id、名稱和版本就需要使用其他函式去獲得。

使用下面三個函式可以獲取cipher的詳細資料。

ssl_cipher_get_id

(cipher)

,ssl_cipher_get_name

(cipher)

ssl_cipher_get_version

(cipher)

另外也可以使用ssl_get_cipher函式一步到位獲取cipher的名稱

#

define

ssl_get_cipher

(s) \

ssl_cipher_get_name

(ssl_get_current_cipher

(s))

void

ssl_get0_alpn_selected

(const ssl *ssl,

const

unsigned

char

**data,

unsigned

int*len)

;

ssl_connect 中間會檢查證書等等,預設情況下,openssl 有它預設的行為。但是使用者可以根據自己需求進行自定義。

x509_store_set_get_issuer可以自定義設定尋找上層的證書。

ssl_ctx_set_verify可以設定自定義驗證證書鏈中每個證書的方法。

ssl_ctx_set_cert_verify_callback可以自定義整個驗證的流程,例如可以設定這個callback function,跳過整個驗證過程。

注意區分ssl_ctx_set_verifyssl_ctx_set_cert_verify_callback

以上這些函式通常是客戶端使用的。

cppssl_add1_chain_cert()

函式可以用於將證書新增到證書鏈中。這個函式通常是伺服器端使用的。

JS Objec 的 API 作用描述

比較兩個值是否相同,與嚴格等於 的不同之處有兩個 一是 0不等於 0,二是nan等於自身 object.is nan,nan true object.is 0,0 falseobject.assign函式用於合併物件,將第乙個引數後面的引數合併到第乙個引數上,若屬性名重複,後面的覆蓋前面的值 con...

陣列常用的Api

建立陣列的基本方式如下 1.new array 當引數是乙個數值時,代表的是建立了乙個長度為該數值的陣列,當引數是除了數值的其他型別的值的時候,則會建立乙個只包含該特定值的陣列 2.字面量let personal let values 1,3,4,6 3array.from es6新增的建立陣列的靜...

openssl常用函式 SSL TLS程式設計

ssl tls 協議已經廣泛應用於電子商務中,用來保證資訊傳輸的安全性。利用 openssl 進行安全套接字程式設計和普通套接字程式設計類似。主要函式 1.初始化 ssl演算法庫函式 int ssl library init void define openssl add ssl algorithm...