0
我從存儲器加載證書,將其添加到證書存儲區,然後進行驗證:釋放OpenSSL的資源:SSL_CTX_free
char base64EncodedCert[] = "...";
const int autoDetermineLength = -1;
BIO* memoryCert = BIO_new_mem_buff(base64EncodedCert, autoDetermineLength);
X509* certificate = PEM_read_bio_X509(memoryCert, nullptr, 0, nullptr);
BIO_free(sslCompatibleMemoryCert);
X509_STORE_add_cert(certificateStore, certificate);
基於代碼:
- 緩衝區
base64EncodedCert
只只要需要BIO
,就需要在內存中,如documentation中所述。 - 一旦證書被創建,
BIO
不再被創建並且可以被釋放。這是一個觀察;看着X509結構,這似乎是合理的。 - 我懷疑
X509
對象的所有權通過X509_STORE_add_cert
傳遞到證書存儲區。也就是說,我不需要跟蹤新創建的證書,它會自動綁定到證書存儲的生命週期。 - 證書存儲區來自SSL上下文,因此其生命週期與SSL上下文綁定(
SSL_CTX
)。 - 因此,我的結論是,當我打電話給
SSL_CTX_free
我已添加到證書存儲的證書相應地被釋放。
我正確嗎?有沒有其他的記憶考慮? 謝謝你的時間和貢獻。
你的回覆當然有幫助!你會碰巧有任何參考嗎? – Pooven 2014-11-04 06:37:47
是的 - 我的參考資料是OpenSSL的源代碼 - 我着眼於回答您的問題。 – sirgeorge 2014-11-04 21:38:40