2010-12-07 4 views
3

私はBoost.ASIO経由でクライアントSSL接続を実装しています。私が使用している参考書によると、SSL_get_verify_resultに電話して、サーバ証明書ですべてが正常であることを確認する必要があります。残念ながら、それはSSL構造体へのポインタを取ります、そして、私はASIOからそれをどのように取得するのか分かりません。Boost.ASIOからSSL *を取得するにはどうすればよいですか?

私のboost::asio::ssl::stream<boost::asio::ip::tcp::socket>オブジェクトにimpl()関数を使用しようとしましたが、コンパイラは何か他のものを返すと不平を言います。

そこにがその情報を得る方法でなければなりません。誰もそれを知っていますか?

答えて

3

問題を解決しました。 impl()が返す構造はboost::asio::ssl::detail::openssl_stream_service::impl_struct*です。私はそれが文書化されることを期待していませんでしたが、私は最終的にそれを絶望的に探して、そうでなければ発見しました。さらに、それには、OpenSSL BIO構造体とある種のバッファーだけでなく、私が必要とするSSL構造体へのポインターが含まれています。

+0

ここではimpl_structが定義されています。/usr/include/boost/asio/ssl/detail/openssl_stream_service.hpp –

0

ASIOには、sslコンテキストでset_verify_modeをコールするネイティブメソッドがあります。

impl()メソッドはSSL_CTX *を返しますが、それに依存しないでください。

+0

はい、コンテキストの 'impl()'メソッドは 'SSL_CTX *'を返します。 ssl :: streamのものが何かを返します。 –

+0

そして、 'set_verify_mode'は非常に基本的な検査にのみ適しています。セキュリティのためには十分ではありません。 –

関連する問題