SSL_SESSIONを再利用したいので、i2d_SSL_SESSION()を使用してシリアル化し、d2i_SSL_SESSIONを使用してシリアル化を解除します。しかしd2i_SSL_SESSIONは、テストコードは非常に簡単ですが、失敗しました:d2i_SSL_SESSIONを使用してSSL_SESSIONをシリアル化しない
をSSLハンドシェイクがi2d_SSL_SESSIONはokです、とlen = 2205
しかしd2i_SSL_SESSIONが失敗し、s_newがNULLである
SSL_SESSION *session = SSL_get1_session(ssl);
int len = i2d_SSL_SESSION(session, NULL);
unsigned char *pp = new unsigned char[len];
len = i2d_SSL_SESSION(session, &pp);
SSL_SESSION *s_new = d2i_SSL_SESSION(NULL, (const unsigned char **)&pp, len);
ERR_print_errors_fp(stderr);
cout << "s_new = " << s_new << endl;
を終えた後、 、エラーメッセージは次のとおりです。 3078067960:エラー:0D06703D:ASN1エンコーディングルーチン:a2i_ASN1_STRING:ssl_asn1.c::370:ASN1シーケンスを期待して、私は何かを、アドレス= 3219682277 = 0
オフセットを欠場か?