プロジェクトでlibcurl.netを使用して、SSLを介してHTTPリクエストを実行しようとしています。(System.Netクラスはサーバー名拡張子をサポートしていません。私はWindows XPを使用しています)
SSLContextFunctionのコード:
public CURLcode OnSSLContext(SSLContext ctx, Object extraData)
{
IntPtr ssl = SSL_new(ctx.Context);
SSL_set_tlsext_host_name(ssl, "hostname");
return CURLcode.CURLE_OK;
}
[DllImport("ssleay32.dll")]
internal static extern IntPtr SSL_new(IntPtr ctx);
[DllImport("ssleay32.dll")]
internal static extern void SSL_set_tlsext_host_name(IntPtr ssl, string message);
これにより、SSL_newの呼び出しで、「保護されたメモリの読み取りまたは書き込みを試みました。これは、他のメモリが破損していることを示していることがよくあります」というエラーがスローされます。
また、OpenSSLのメソッドSSL_library_init()を呼び出してみましたが、結果が得られませんでした。
ありがとう