Openssl內存BIO接收器的文檔是here。OpenSSL生物鏈:對文檔的澄清
我正在創建一個BIO鏈來將二進制字符串轉換爲base64字符串。源/彙總是一個內存位置,這使我能夠保持相同的鏈條。然而,當我寫入數據時,數據(應該)進入由OpenSSL管理的內存緩衝區,並且當從鏈中讀取時,它應該來自用戶提供的內存緩衝區。
BIO_set_mem_buf()是用來設置用戶提供的緩衝區的函數,當我使用new管理我的內存時,我將設置BIO_NOCLOSE屬性。現在爲了使用相同的鏈來寫作,我需要改變內存生物來管理自己的內存。我的問題是: 「在用戶提供自定義緩衝區後,BIO_reset()是否會將其更改回管理自己的內存?使用單個鏈的任何性能後果是否符合我的要求?」
我通過在線程本地內存中保留了BIO mem sink和bio base64過濾器的副本來解決這個問題。當解碼時,我創建了一個由我的應用程序管理的緩衝區的新生物記憶體。 – 2010-04-26 10:38:46