SSL_write() に問題があります。これを呼び出すと、別の tls-packet で追加の暗号化データが送信されます。32 バイトで構成されます。暗号化の前にこのデータをダンプするために openssl コードに少しパッチを当てたところ、実際のサイズが 0x15 バイトで、パディングが 0x0b バイトであることがわかりました。これらの 0x15 バイトは意味がないようです。しかし、何が原因なのか理解できませんか?私のコードがあります:
int sock,s;
BIO *sbio;
SSL_CTX *ctx;
SSL *ssl;
int ret;
const SSL_METHOD *meth;
SSL_CTX *ctx;
/* Global system initialization*/
SSL_library_init ();
SSL_load_error_strings ();
meth = TLSv1_server_method ();
ctx = SSL_CTX_new (meth);
SSL_CTX_set_default_passwd_cb(ctx, ppcb);
ret = SSL_CTX_use_certificate_file(ctx, "server_cert.pem", SSL_FILETYPE_PEM);
ret = SSL_CTX_use_PrivateKey_file (ctx, "server_key.pem", SSL_FILETYPE_PEM);
/*sock is accepted connection*/
sbio = BIO_new_socket (sock, BIO_NOCLOSE);
ssl = SSL_new(ctx);
SSL_set_bio (ssl, sbio, sbio);
ret = SSL_set_cipher_list(ssl, "TLSv1");
ret = SSL_accept (ssl);
char buf[BUFSIZE];
/*preparing buffer*/
r = SSL_write (ssl, buf, len);