C 在这种情况下,BIO_读取会失败吗?
我正在使用C 在这种情况下,BIO_读取会失败吗?,c,openssl,C,Openssl,我正在使用SSL\u read和SSL\u write和BIOs。如果我知道使用BIO\u ctrl\u pendingssl引擎中有多少数据需要读取(numToRead),并且目标中有足够的空间,那么BIO\u read返回的读取字节数是否少于numToRead,甚至失败 SSL *ssl = ...; SSL_CTX *sslCtx = ...; ... BIO *rBio = BIO_new(BIO_s_mem()); BIO *wBio = BIO_new(BIO_s_mem()); S
SSL\u read
和SSL\u write
和BIO
s。如果我知道使用BIO\u ctrl\u pending
ssl引擎中有多少数据需要读取(numToRead
),并且目标中有足够的空间,那么BIO\u read
返回的读取字节数是否少于numToRead
,甚至失败
SSL *ssl = ...;
SSL_CTX *sslCtx = ...;
...
BIO *rBio = BIO_new(BIO_s_mem());
BIO *wBio = BIO_new(BIO_s_mem());
SSL_set_bio(ssl, wBio, rBio);
...
auto numWrittenToSSL = SSL_write(ssl, data.data(), data.size());
size_t numToRead = BIO_ctrl_pending(rBio);
if(numToRead > 0){
auto numRead = BIO_read(rBio, encryptedData.data(), numToRead); //can this fail?
}
你读的是什么。SSL_set_bio的论证顺序是故意的吗?这里使用的顺序是:bio-pair似乎是不同的概念,他似乎以不同的方式对待它,IIRC,bio-pair的引入是为了克服内存bio问题,但他使用了内存bio。我建议使用生物对。可能是
manssl\u set\u bio
manbio\u read。SSL_set_bio的论证顺序是故意的吗?这里使用的顺序是:bio-pair似乎是不同的概念,他似乎以不同的方式对待它,IIRC,bio-pair的引入是为了克服内存bio问题,但他使用了内存bio。我建议使用生物对。可能是manssl\u set\u bio