SSL\u do\u握手后Openssl写入BIO发生更改
此2 bio是使用SSL\u do\u握手后Openssl写入BIO发生更改,openssl,Openssl,此2 bio是使用bio_new(bio_s_mem())生成的,运行包含此代码段的编译代码后,在我的终端中打印以下内容: ...... SSL_set_bio(mSsl, rbio, wbio); ...... BIO* rBio0 = SSL_get_rbio(mSsl); BIO* wBio0 = SSL_get_wbio(mSsl); printf("xxxxxxxxxxx get0 write %p\n", wBio0); printf("xxxxxxxxx
bio_new(bio_s_mem())
生成的,运行包含此代码段的编译代码后,在我的终端中打印以下内容:
......
SSL_set_bio(mSsl, rbio, wbio);
......
BIO* rBio0 = SSL_get_rbio(mSsl);
BIO* wBio0 = SSL_get_wbio(mSsl);
printf("xxxxxxxxxxx get0 write %p\n", wBio0);
printf("xxxxxxxxxxx get0 read %p\n", rBio0);
int r = SSL_do_handshake(mSsl);
BIO* rBio1 = SSL_get_rbio(mSsl);
BIO* wBio1 = SSL_get_wbio(mSsl);
printf("xxxxxxxxxxx get1 write %p\n", wBio1);
printf("xxxxxxxxxxx get1 read %p\n", rBio1);
这正常吗
在这段代码之后,我想使用BIO_get_mem_data
从内存中获取数据并将其发送到远程,因为写入BIO已更改,我无法获取数据
顺便说一句,我以前用两个全局变量来存储写bio和读bio,都很好。请问您为什么调用
SSL\u do\u handshake
?为什么不使用适当的ssl功能进行连接并接收/发送数据?如果这样做,BIOs将不会有任何问题。我正在使用libnice和openssl实现dtls srtp,因此在ice连接就绪后,我使用libnice发送和接收数据,包括dtls握手数据,因此我使用内存bio作为中介。
xxxxxxxxxxx get0 write 0xc18800
xxxxxxxxxxx get0 read 0xc16730
xxxxxxxxxxx get1 write 0xc27f80
xxxxxxxxxxx get1 read 0xc16730