日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

openssl之BIO系列之1---抽象的IO接口

發布時間:2025/3/20 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 openssl之BIO系列之1---抽象的IO接口 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
BIO-抽象的IO接口
????http://blog.csdn.net/gdwzh/article/details/19194
????(作者:DragonKing Mail:wzhah@263.net 發布于:http://gdwzh.126.com openssl專業論壇)
????
????
????其實包含了很多種接口,用通用的函數接口,主要控制在BIO_METHOD中的不通實現函數控制,
????我初步估計了一下,大概有14種,包括6種filter型和8種source/sink型。
????
????BIO是在底層覆蓋了許多類型I/O接口細節的一種應用接口,如果你在程序中使用BIO,那么就可以和SSL連接、非加密的網絡連接以及文件IO進行透明的連接。
????有兩種不通的BIO接口,一種是source/sink型,一種是fileter型的。
????顧名思義,source/sink類型的BIO是數據源或數據目標(我不知道sink該怎么翻譯,據水木liaojzh說,一般是destination(目標、宿)的同義詞,大家自己理解吧,呵呵),例如,sokect BIO和文件BIO。
????而filter BIO就是把數據從一個BIO轉換到另外一個BIO或應用接口,在轉換過程中,這些數據可以不修改(如信息摘要BIO),也可以進行轉換。例如在加密BIO中,如果寫操作,數據就會被加密,如果是讀操作,數據就會被解密。
????
????BIO可以連接在一起成為一個BIO鏈(單個的BIO就是一個環節的BIO鏈的特例),如下是BIO的結構定義,可以看到它有上下環節的:
????struct bio_st
???? {
???? BIO_METHOD *method;
???? /* bio, mode, argp, argi, argl, ret */
???? long (*callback)(struct bio_st *,int,const char *,int, long,long);
???? char *cb_arg; /* first argument for the callback */
????
???? int init;
???? int shutdown;
???? int flags; /* extra storage */
???? int retry_reason;
???? int num;
???? void *ptr;
???? struct bio_st *next_bio; /* used by filter BIOs */BIO下聯
???? struct bio_st *prev_bio; /* used by filter BIOs */BIO上聯
???? int references;
???? unsigned long num_read;
???? unsigned long num_write;
????
???? CRYPTO_EX_DATA ex_data;
???? };
????一個BIO鏈通常包括一個source BIO和一個或多個filter BIO,數據從第一個BIO讀出或寫入,然后經過一系列BIO變化到輸出(通常是一個source/sink BIO)。
????

????注:這是根據openssl的BIO.pod翻譯和根據我自己的理解添加的,以后我會慢慢將BIO的細節說出來,希望大家一起努力。

總結

以上是生活随笔為你收集整理的openssl之BIO系列之1---抽象的IO接口的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。