Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 在这种情况下,BIO_读取会失败吗?_C_Openssl - Fatal编程技术网

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