2 ''' $RCSfile$$Revision$$Date$
20 .ie \\n(.$>=3 .ne \\$3
36 ''' Set up \*(-- to give an unbreakable dash;
37 ''' string Tr holds user defined translation string.
38 ''' Bell System Logo is used as a dummy character.
44 .if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
45 .if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
48 ''' \*(M", \*(S", \*(N" and \*(T" are the equivalent of
49 ''' \*(L" and \*(R", except that they are used on ".xx" lines,
50 ''' such as .IP and .SH, which do another additional levels of
51 ''' double-quote interpretation
80 .\" If the F register is turned on, we'll generate
81 .\" index entries out stderr for the following things:
86 .\" X<> Xref (embedded
87 .\" Of course, you have to process the output yourself
88 .\" in some meaninful fashion.
91 .tm Index:\\$1\t\\n%\t"\\$2"
96 .TH BIO_f_base64 3 "0.9.7d" "2/Sep/2004" "OpenSSL"
100 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
101 .de CQ \" put $1 in typewriter font
107 \\&\\$2 \\$3 \\$4 \\$5 \\$6 \\$7
110 .\" @(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2
111 . \" AM - accent mark definitions
113 . \" fudge factors for nroff and troff
122 . ds #H ((1u-(\\\\n(.fu%2u))*.13m)
128 . \" simple accents for nroff and troff
141 . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
142 . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
143 . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
144 . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
145 . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
146 . ds ? \s-2c\h'-\w'c'u*7/10'\u\h'\*(#H'\zi\d\s+2\h'\w'c'u*8/10'
147 . ds ! \s-2\(or\s+2\h'-\w'\(or'u'\v'-.8m'.\v'.8m'
148 . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
149 . ds q o\h'-\w'o'u*8/10'\s-4\v'.4m'\z\(*i\v'-.4m'\s+4\h'\w'o'u*8/10'
151 . \" troff and (daisy-wheel) nroff accents
152 .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
153 .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
154 .ds v \\k:\h'-(\\n(.wu*9/10-\*(#H)'\v'-\*(#V'\*(#[\s-4v\s0\v'\*(#V'\h'|\\n:u'\*(#]
155 .ds _ \\k:\h'-(\\n(.wu*9/10-\*(#H+(\*(#F*2/3))'\v'-.4m'\z\(hy\v'.4m'\h'|\\n:u'
156 .ds . \\k:\h'-(\\n(.wu*8/10)'\v'\*(#V*4/10'\z.\v'-\*(#V*4/10'\h'|\\n:u'
157 .ds 3 \*(#[\v'.2m'\s-2\&3\s0\v'-.2m'\*(#]
158 .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
159 .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
160 .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
161 .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
162 .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
163 .ds ae a\h'-(\w'a'u*4/10)'e
164 .ds Ae A\h'-(\w'A'u*4/10)'E
165 .ds oe o\h'-(\w'o'u*4/10)'e
166 .ds Oe O\h'-(\w'O'u*4/10)'E
167 . \" corrections for vroff
168 .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
169 .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
170 . \" for low resolution devices (crt and lpr)
171 .if \n(.H>23 .if \n(.V>19 \
175 . ds v \h'-1'\o'\(aa\(ga'
191 BIO_f_base64 \- base64 BIO filter
195 \& #include <openssl/bio.h>
196 \& #include <openssl/evp.h>
199 \& BIO_METHOD * BIO_f_base64(void);
202 \fIBIO_f_base64()\fR returns the base64 BIO method. This is a filter
203 BIO that base64 encodes any data written through it and decodes
204 any data read through it.
206 Base64 BIOs do not support \fIBIO_gets()\fR or \fIBIO_puts()\fR.
208 \fIBIO_flush()\fR on a base64 BIO that is being written through is
209 used to signal that no more data is to be encoded: this is used
210 to flush the final block through the BIO.
212 The flag BIO_FLAGS_BASE64_NO_NL can be set with \fIBIO_set_flags()\fR
213 to encode the data all on one line or expect the data to be all
216 Because of the format of base64 encoding the end of the encoded
217 block cannot always be reliably determined.
219 \fIBIO_f_base64()\fR returns the base64 BIO method.
221 Base64 encode the string \*(L"Hello World\en\*(R" and write the result
226 \& char message[] = "Hello World \en";
229 \& b64 = BIO_new(BIO_f_base64());
230 \& bio = BIO_new_fp(stdout, BIO_NOCLOSE);
231 \& bio = BIO_push(b64, bio);
232 \& BIO_write(bio, message, strlen(message));
236 \& BIO_free_all(bio);
238 Read Base64 encoded data from standard input and write the decoded
239 data to standard output:
242 \& BIO *bio, *b64, *bio_out;
247 \& b64 = BIO_new(BIO_f_base64());
248 \& bio = BIO_new_fp(stdin, BIO_NOCLOSE);
249 \& bio_out = BIO_new_fp(stdout, BIO_NOCLOSE);
250 \& bio = BIO_push(b64, bio);
251 \& while((inlen = BIO_read(bio, inbuf, 512) > 0)
252 \& BIO_write(bio_out, inbuf, inlen);
255 \& BIO_free_all(bio);
258 The ambiguity of EOF in base64 encoded data can cause additional
259 data following the base64 encoded block to be misinterpreted.
261 There should be some way of specifying a test that the BIO can perform
262 to reliably determine EOF (for example a MIME boundary).
267 .IX Title "BIO_f_base64 3"
268 .IX Name "BIO_f_base64 - base64 BIO filter"
272 .IX Header "SYNOPSIS"
274 .IX Header "DESCRIPTION"
278 .IX Header "RETURN VALUES"
280 .IX Header "EXAMPLES"
284 .IX Header "SEE ALSO"