|  | =pod | 
|  |  | 
|  | =head1 NAME | 
|  |  | 
|  | BIO_f_base64 - base64 BIO filter | 
|  |  | 
|  | =head1 SYNOPSIS | 
|  |  | 
|  | #include <openssl/bio.h> | 
|  | #include <openssl/evp.h> | 
|  |  | 
|  | BIO_METHOD *	BIO_f_base64(void); | 
|  |  | 
|  | =head1 DESCRIPTION | 
|  |  | 
|  | BIO_f_base64() returns the base64 BIO method. This is a filter | 
|  | BIO that base64 encodes any data written through it and decodes | 
|  | any data read through it. | 
|  |  | 
|  | Base64 BIOs do not support BIO_gets() or BIO_puts(). | 
|  |  | 
|  | BIO_flush() on a base64 BIO that is being written through is | 
|  | used to signal that no more data is to be encoded: this is used | 
|  | to flush the final block through the BIO. | 
|  |  | 
|  | The flag BIO_FLAGS_BASE64_NO_NL can be set with BIO_set_flags() | 
|  | to encode the data all on one line or expect the data to be all | 
|  | on one line. | 
|  |  | 
|  | =head1 NOTES | 
|  |  | 
|  | Because of the format of base64 encoding the end of the encoded | 
|  | block cannot always be reliably determined. | 
|  |  | 
|  | =head1 RETURN VALUES | 
|  |  | 
|  | BIO_f_base64() returns the base64 BIO method. | 
|  |  | 
|  | =head1 EXAMPLES | 
|  |  | 
|  | Base64 encode the string "Hello World\n" and write the result | 
|  | to standard output: | 
|  |  | 
|  | BIO *bio, *b64; | 
|  | char message[] = "Hello World \n"; | 
|  |  | 
|  | b64 = BIO_new(BIO_f_base64()); | 
|  | bio = BIO_new_fp(stdout, BIO_NOCLOSE); | 
|  | BIO_push(b64, bio); | 
|  | BIO_write(b64, message, strlen(message)); | 
|  | BIO_flush(b64); | 
|  |  | 
|  | BIO_free_all(b64); | 
|  |  | 
|  | Read Base64 encoded data from standard input and write the decoded | 
|  | data to standard output: | 
|  |  | 
|  | BIO *bio, *b64, *bio_out; | 
|  | char inbuf[512]; | 
|  | int inlen; | 
|  |  | 
|  | b64 = BIO_new(BIO_f_base64()); | 
|  | bio = BIO_new_fp(stdin, BIO_NOCLOSE); | 
|  | bio_out = BIO_new_fp(stdout, BIO_NOCLOSE); | 
|  | BIO_push(b64, bio); | 
|  | while((inlen = BIO_read(b64, inbuf, 512)) > 0) | 
|  | BIO_write(bio_out, inbuf, inlen); | 
|  |  | 
|  | BIO_flush(bio_out); | 
|  | BIO_free_all(b64); | 
|  |  | 
|  | =head1 BUGS | 
|  |  | 
|  | The ambiguity of EOF in base64 encoded data can cause additional | 
|  | data following the base64 encoded block to be misinterpreted. | 
|  |  | 
|  | There should be some way of specifying a test that the BIO can perform | 
|  | to reliably determine EOF (for example a MIME boundary). | 
|  |  | 
|  | =head1 SEE ALSO | 
|  |  | 
|  | TBA |