我尝试使用BUF_MEM访问BIO的字节。 但如果它是文件BIO,则无法正常工作。
BUF_MEM *bmmem = NULL, bmfil = NULL;
int ret = -1;
// OK for memory
BIO *biomem = BIO_new (BIO_s_mem ());
ret = BIO_get_mem_ptr (biomem, &bmmem); // ret = 1
printf ("\nbiomem - %d %d", ret, bmmem); // OK
// NOK for file
BIO *biofil = BIO_new (BIO_s_file ());
BIO_read_filename (biofil, "myfile.pem"); // ok
ret = BIO_get_mem_ptr (biofil, &bmfil); // ret = 0
printf ("\nbiofil - %d %d, ret, bmfil); // NOK
我错过了什么吗?
谢谢!
答案 0 :(得分:2)
BIO_get_mem_ptr
为您提供指向mem bio的底层内存缓冲区的指针。它只适用于mem BIO。在文件BIO中没有底层内存缓冲区!
使用BIO_read
从BIO中读取数据。这适用于mem BIO和文件BIO。