BIO_get_mem_ptr

以前、OpenSSLでBase64変換しようとした時に、ファイル経由でしか変換できないとおもっていたが、プログラム内のメモリ上でも変換できる事がわかった。

/docs/man1.0.2/man3/BIO_get_mem_ptr.html
c++ - Base64 encoding and decoding with OpenSSL - Stack Overflow

ポイントは、BIO_get_mem_ptr。
BUF_MEMという構造体のポインタが貰える。
この中に、変換後のデータや長さが格納されている模様。

とすると、

$ vi BIO_get_mem_ptr.c
$ gcc -o BIO_get_mem_ptr BIO_get_mem_ptr.c -lcrypto
$ ./BIO_get_mem_ptr
buf = QUJDREU=
$

ちゃんとプログラム内でBase64変換出来てる。

Sample/openssl/BIO_get_mem_ptr/BIO_get_mem_ptr/src/BIO_get_mem_ptr at master · bg1bgst333/Sample · GitHub