2010-12-07 102 views
3

我正在通過Boost.ASIO實現客戶端SSL連接。根據我使用的參考書,我需要撥打SSL_get_verify_result以確保服務器證書一切正常。不幸的是,它需要一個指向SSL結構的指針,我不知道如何從ASIO中獲得這個結果。如何從Boost.ASIO獲取SSL *?

我試過在我的boost::asio::ssl::stream<boost::asio::ip::tcp::socket>對象上使用impl()函數,但編譯器會抱怨它返回其他東西。

There 必須是一種獲取該信息的方式。有人知道嗎?

回答

3

問題已解決。它說impl()返回的結構是boost::asio::ssl::detail::openssl_stream_service::impl_struct*。我沒有想到它會被記錄下來,但我終於在絕望中找到了它,並發現了其他情況。更好的是,它包含一個指向我需要的SSL結構的指針,以及OpenSSL BIO結構和某種緩衝區。

0

ASIO有一個本地方法來執行此操作:在ssl上下文中調用set_verify_mode

impl()方法返回一個SSL_CTX *,但不應該依賴它。

+0

是的,上下文中的`impl()`方法返回一個`SSL_CTX *`。 ssl :: stream上的那個返回別的東西。 – 2010-12-07 15:00:47

+0

``set_verify_mode`只適用於非常基本的檢查。安全性不足。 – 2010-12-07 15:01:35