3 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
5 <meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
6 <link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
7 <link rel="UP" title="XML Security Core Library API Reference." href="xmlsec-ref.html">
8 <link rel="PREVIOUS" title="app" href="xmlsec-app.html">
9 <link rel="NEXT" title="bn" href="xmlsec-bn.html">
10 <style type="text/css">.synopsis, .classsynopsis {
12 border: solid 1px #aaaaaa;
17 border: solid 1px #aaaaff;
26 border: solid 1px #ffaaaa;
33 .navigation a:visited {
40 <body><table witdh="100%" valign="top"><tr valign="top">
41 <td valign="top" align="left" width="210">
42 <img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
44 <li><a href="../index.html">Home</a></li>
45 <li><a href="../download.html">Download</a></li>
46 <li><a href="../news.html">News</a></li>
47 <li><a href="../documentation.html">Documentation</a></li>
49 <li><a href="../faq.html">FAQ</a></li>
50 <li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
51 <li><a href="../api/xmlsec-reference.html">API reference</a></li>
52 <li><a href="../api/xmlsec-examples.html">Examples</a></li>
54 <li><a href="../xmldsig.html">XML Digital Signature</a></li>
55 <ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
56 <li><a href="../xmlenc.html">XML Encryption</a></li>
57 <li><a href="../c14n.html">XML Canonicalization</a></li>
58 <li><a href="../bugs.html">Reporting Bugs</a></li>
59 <li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
60 <li><a href="../related.html">Related</a></li>
61 <li><a href="../authors.html">Authors</a></li>
66 <td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
70 <td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
74 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
76 <!--Links - start--><!--Links - end-->
79 <td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
80 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
81 <td><a accesskey="p" href="xmlsec-app.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
82 <td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
83 <td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
84 <th width="100%" align="center">XML Security Library Reference Manual</th>
85 <td><a accesskey="n" href="xmlsec-bn.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
88 <a name="XMLSEC-BASE64"></a>base64</h1>
89 <div class="REFNAMEDIV">
90 <a name="AEN2514"></a><h2>Name</h2>base64 -- Base64 encoding/decoding functions.</div>
91 <div class="REFSYNOPSISDIV">
92 <a name="XMLSEC-BASE64.SYNOPSIS"></a><h2>Synopsis</h2>
93 <pre class="SYNOPSIS">#define <a href="xmlsec-base64.html#XMLSEC-BASE64-LINESIZE--CAPS">XMLSEC_BASE64_LINESIZE</a>
94 <font>int</font> <a href="xmlsec-base64.html#XMLSECBASE64GETDEFAULTLINESIZE">xmlSecBase64GetDefaultLineSize</a> (void);
95 <font>void</font> <a href="xmlsec-base64.html#XMLSECBASE64SETDEFAULTLINESIZE">xmlSecBase64SetDefaultLineSize</a> (<font>int</font> columns);
96 <font>xmlSecBase64CtxPtr</font> <a href="xmlsec-base64.html#XMLSECBASE64CTXCREATE">xmlSecBase64CtxCreate</a> (<font>int</font> encode,
97 <font>int</font> columns);
98 <font>void</font> <a href="xmlsec-base64.html#XMLSECBASE64CTXDESTROY">xmlSecBase64CtxDestroy</a> (<font>xmlSecBase64CtxPtr</font> ctx);
99 <font>int</font> <a href="xmlsec-base64.html#XMLSECBASE64CTXINITIALIZE">xmlSecBase64CtxInitialize</a> (<font>xmlSecBase64CtxPtr</font> ctx,
100 <font>int</font> encode,
101 <font>int</font> columns);
102 <font>void</font> <a href="xmlsec-base64.html#XMLSECBASE64CTXFINALIZE">xmlSecBase64CtxFinalize</a> (<font>xmlSecBase64CtxPtr</font> ctx);
103 <font>int</font> <a href="xmlsec-base64.html#XMLSECBASE64CTXUPDATE">xmlSecBase64CtxUpdate</a> (<font>xmlSecBase64CtxPtr</font> ctx,
104 const <a href="xmlsec-xmlsec.html#XMLSECBYTE">xmlSecByte</a> *in,
105 <a href="xmlsec-xmlsec.html#XMLSECSIZE">xmlSecSize</a> inSize,
106 <a href="xmlsec-xmlsec.html#XMLSECBYTE">xmlSecByte</a> *out,
107 <a href="xmlsec-xmlsec.html#XMLSECSIZE">xmlSecSize</a> outSize);
108 <font>int</font> <a href="xmlsec-base64.html#XMLSECBASE64CTXFINAL">xmlSecBase64CtxFinal</a> (<font>xmlSecBase64CtxPtr</font> ctx,
109 <a href="xmlsec-xmlsec.html#XMLSECBYTE">xmlSecByte</a> *out,
110 <a href="xmlsec-xmlsec.html#XMLSECSIZE">xmlSecSize</a> outSize);
111 <font>xmlChar</font>* <a href="xmlsec-base64.html#XMLSECBASE64ENCODE">xmlSecBase64Encode</a> (const <a href="xmlsec-xmlsec.html#XMLSECBYTE">xmlSecByte</a> *buf,
112 <a href="xmlsec-xmlsec.html#XMLSECSIZE">xmlSecSize</a> len,
113 <font>int</font> columns);
114 <font>int</font> <a href="xmlsec-base64.html#XMLSECBASE64DECODE">xmlSecBase64Decode</a> (const <font>xmlChar</font> *str,
115 <a href="xmlsec-xmlsec.html#XMLSECBYTE">xmlSecByte</a> *buf,
116 <a href="xmlsec-xmlsec.html#XMLSECSIZE">xmlSecSize</a> len);</pre>
118 <div class="REFSECT1">
119 <a name="XMLSEC-BASE64.DESCRIPTION"></a><h2>Description</h2>
120 <p>Base64 encoding/decoding functions.</p>
122 <div class="REFSECT1">
123 <a name="XMLSEC-BASE64.DETAILS"></a><h2>Details</h2>
124 <div class="REFSECT2">
125 <a name="XMLSEC-BASE64-LINESIZE--CAPS"></a><h3>XMLSEC_BASE64_LINESIZE</h3>
126 <pre class="PROGRAMLISTING">#define XMLSEC_BASE64_LINESIZE 64</pre>
127 <p>The default maximum base64 encoded line size.</p>
131 <div class="REFSECT2">
132 <a name="XMLSECBASE64GETDEFAULTLINESIZE"></a><h3>xmlSecBase64GetDefaultLineSize ()</h3>
133 <pre class="PROGRAMLISTING"><font>int</font> xmlSecBase64GetDefaultLineSize (void);</pre>
134 <p>Gets the current default line size.</p>
137 <table class="variablelist" border="0" cellspacing="0" cellpadding="4"><tbody><tr>
138 <td align="LEFT" valign="TOP"><a name="AEN2584"><span style="white-space: nowrap"><span class="emphasis"><i class="EMPHASIS">Returns</i></span> :</span></a></td>
139 <td align="LEFT" valign="TOP"><p> the current default line size.</p></td>
140 </tr></tbody></table>
143 <div class="REFSECT2">
144 <a name="XMLSECBASE64SETDEFAULTLINESIZE"></a><h3>xmlSecBase64SetDefaultLineSize ()</h3>
145 <pre class="PROGRAMLISTING"><font>void</font> xmlSecBase64SetDefaultLineSize (<font>int</font> columns);</pre>
146 <p>Sets the current default line size.</p>
149 <table class="variablelist" border="0" cellspacing="0" cellpadding="4"><tbody><tr>
150 <td align="LEFT" valign="TOP"><a name="AEN2599"><span style="white-space: nowrap"><code class="PARAMETER">columns</code> :</span></a></td>
151 <td align="LEFT" valign="TOP"><p> number of columns</p></td>
152 </tr></tbody></table>
155 <div class="REFSECT2">
156 <a name="XMLSECBASE64CTXCREATE"></a><h3>xmlSecBase64CtxCreate ()</h3>
157 <pre class="PROGRAMLISTING"><font>xmlSecBase64CtxPtr</font> xmlSecBase64CtxCreate (<font>int</font> encode,
158 <font>int</font> columns);</pre>
159 <p>Allocates and initializes new base64 context.</p>
162 <table class="variablelist" border="0" cellspacing="0" cellpadding="4"><tbody>
164 <td align="LEFT" valign="TOP"><a name="AEN2615"><span style="white-space: nowrap"><code class="PARAMETER">encode</code> :</span></a></td>
165 <td align="LEFT" valign="TOP"><p> the encode/decode flag (1 - encode, 0 - decode) </p></td>
168 <td align="LEFT" valign="TOP"><a name="AEN2620"><span style="white-space: nowrap"><code class="PARAMETER">columns</code> :</span></a></td>
169 <td align="LEFT" valign="TOP"><p> the max line length.</p></td>
172 <td align="LEFT" valign="TOP"><a name="AEN2625"><span style="white-space: nowrap"><span class="emphasis"><i class="EMPHASIS">Returns</i></span> :</span></a></td>
173 <td align="LEFT" valign="TOP"><p> a pointer to newly created <gtkdoclink href="XMLSECBASE64CTX"><span class="TYPE">xmlSecBase64Ctx</span></gtkdoclink> structure
174 or NULL if an error occurs.</p></td>
179 <div class="REFSECT2">
180 <a name="XMLSECBASE64CTXDESTROY"></a><h3>xmlSecBase64CtxDestroy ()</h3>
181 <pre class="PROGRAMLISTING"><font>void</font> xmlSecBase64CtxDestroy (<font>xmlSecBase64CtxPtr</font> ctx);</pre>
182 <p>Destroys base64 context.</p>
185 <table class="variablelist" border="0" cellspacing="0" cellpadding="4"><tbody><tr>
186 <td align="LEFT" valign="TOP"><a name="AEN2642"><span style="white-space: nowrap"><code class="PARAMETER">ctx</code> :</span></a></td>
187 <td align="LEFT" valign="TOP"><p> the pointer to <gtkdoclink href="XMLSECBASE64CTX"><span class="TYPE">xmlSecBase64Ctx</span></gtkdoclink> structure.</p></td>
188 </tr></tbody></table>
191 <div class="REFSECT2">
192 <a name="XMLSECBASE64CTXINITIALIZE"></a><h3>xmlSecBase64CtxInitialize ()</h3>
193 <pre class="PROGRAMLISTING"><font>int</font> xmlSecBase64CtxInitialize (<font>xmlSecBase64CtxPtr</font> ctx,
194 <font>int</font> encode,
195 <font>int</font> columns);</pre>
196 <p>Initializes new base64 context.</p>
199 <table class="variablelist" border="0" cellspacing="0" cellpadding="4"><tbody>
201 <td align="LEFT" valign="TOP"><a name="AEN2661"><span style="white-space: nowrap"><code class="PARAMETER">ctx</code> :</span></a></td>
202 <td align="LEFT" valign="TOP"><p> the pointer to <gtkdoclink href="XMLSECBASE64CTX"><span class="TYPE">xmlSecBase64Ctx</span></gtkdoclink> structure,</p></td>
205 <td align="LEFT" valign="TOP"><a name="AEN2668"><span style="white-space: nowrap"><code class="PARAMETER">encode</code> :</span></a></td>
206 <td align="LEFT" valign="TOP"><p> the encode/decode flag (1 - encode, 0 - decode) </p></td>
209 <td align="LEFT" valign="TOP"><a name="AEN2673"><span style="white-space: nowrap"><code class="PARAMETER">columns</code> :</span></a></td>
210 <td align="LEFT" valign="TOP"><p> the max line length.</p></td>
213 <td align="LEFT" valign="TOP"><a name="AEN2678"><span style="white-space: nowrap"><span class="emphasis"><i class="EMPHASIS">Returns</i></span> :</span></a></td>
214 <td align="LEFT" valign="TOP"><p> 0 on success and a negative value otherwise.</p></td>
219 <div class="REFSECT2">
220 <a name="XMLSECBASE64CTXFINALIZE"></a><h3>xmlSecBase64CtxFinalize ()</h3>
221 <pre class="PROGRAMLISTING"><font>void</font> xmlSecBase64CtxFinalize (<font>xmlSecBase64CtxPtr</font> ctx);</pre>
222 <p>Frees all the resources allocated by <code class="PARAMETER">ctx</code>.</p>
225 <table class="variablelist" border="0" cellspacing="0" cellpadding="4"><tbody><tr>
226 <td align="LEFT" valign="TOP"><a name="AEN2694"><span style="white-space: nowrap"><code class="PARAMETER">ctx</code> :</span></a></td>
227 <td align="LEFT" valign="TOP"><p> the pointer to <gtkdoclink href="XMLSECBASE64CTX"><span class="TYPE">xmlSecBase64Ctx</span></gtkdoclink> structure,</p></td>
228 </tr></tbody></table>
231 <div class="REFSECT2">
232 <a name="XMLSECBASE64CTXUPDATE"></a><h3>xmlSecBase64CtxUpdate ()</h3>
233 <pre class="PROGRAMLISTING"><font>int</font> xmlSecBase64CtxUpdate (<font>xmlSecBase64CtxPtr</font> ctx,
234 const <a href="xmlsec-xmlsec.html#XMLSECBYTE">xmlSecByte</a> *in,
235 <a href="xmlsec-xmlsec.html#XMLSECSIZE">xmlSecSize</a> inSize,
236 <a href="xmlsec-xmlsec.html#XMLSECBYTE">xmlSecByte</a> *out,
237 <a href="xmlsec-xmlsec.html#XMLSECSIZE">xmlSecSize</a> outSize);</pre>
238 <p>Encodes or decodes the next piece of data from input buffer.</p>
241 <table class="variablelist" border="0" cellspacing="0" cellpadding="4"><tbody>
243 <td align="LEFT" valign="TOP"><a name="AEN2715"><span style="white-space: nowrap"><code class="PARAMETER">ctx</code> :</span></a></td>
244 <td align="LEFT" valign="TOP"><p> the pointer to <gtkdoclink href="XMLSECBASE64CTX"><span class="TYPE">xmlSecBase64Ctx</span></gtkdoclink> structure</p></td>
247 <td align="LEFT" valign="TOP"><a name="AEN2722"><span style="white-space: nowrap"><code class="PARAMETER">in</code> :</span></a></td>
248 <td align="LEFT" valign="TOP"><p> the input buffer</p></td>
251 <td align="LEFT" valign="TOP"><a name="AEN2727"><span style="white-space: nowrap"><code class="PARAMETER">inSize</code> :</span></a></td>
252 <td align="LEFT" valign="TOP"><p> the input buffer size</p></td>
255 <td align="LEFT" valign="TOP"><a name="AEN2732"><span style="white-space: nowrap"><code class="PARAMETER">out</code> :</span></a></td>
256 <td align="LEFT" valign="TOP"><p> the output buffer</p></td>
259 <td align="LEFT" valign="TOP"><a name="AEN2737"><span style="white-space: nowrap"><code class="PARAMETER">outSize</code> :</span></a></td>
260 <td align="LEFT" valign="TOP"><p> the output buffer size</p></td>
263 <td align="LEFT" valign="TOP"><a name="AEN2742"><span style="white-space: nowrap"><span class="emphasis"><i class="EMPHASIS">Returns</i></span> :</span></a></td>
264 <td align="LEFT" valign="TOP"><p> the number of bytes written to output buffer or
265 -1 if an error occurs.</p></td>
270 <div class="REFSECT2">
271 <a name="XMLSECBASE64CTXFINAL"></a><h3>xmlSecBase64CtxFinal ()</h3>
272 <pre class="PROGRAMLISTING"><font>int</font> xmlSecBase64CtxFinal (<font>xmlSecBase64CtxPtr</font> ctx,
273 <a href="xmlsec-xmlsec.html#XMLSECBYTE">xmlSecByte</a> *out,
274 <a href="xmlsec-xmlsec.html#XMLSECSIZE">xmlSecSize</a> outSize);</pre>
275 <p>Encodes or decodes the last piece of data stored in the context
276 and finalizes the result.</p>
279 <table class="variablelist" border="0" cellspacing="0" cellpadding="4"><tbody>
281 <td align="LEFT" valign="TOP"><a name="AEN2759"><span style="white-space: nowrap"><code class="PARAMETER">ctx</code> :</span></a></td>
282 <td align="LEFT" valign="TOP"><p> the pointer to <gtkdoclink href="XMLSECBASE64CTX"><span class="TYPE">xmlSecBase64Ctx</span></gtkdoclink> structure</p></td>
285 <td align="LEFT" valign="TOP"><a name="AEN2766"><span style="white-space: nowrap"><code class="PARAMETER">out</code> :</span></a></td>
286 <td align="LEFT" valign="TOP"><p> the output buffer</p></td>
289 <td align="LEFT" valign="TOP"><a name="AEN2771"><span style="white-space: nowrap"><code class="PARAMETER">outSize</code> :</span></a></td>
290 <td align="LEFT" valign="TOP"><p> the output buffer size</p></td>
293 <td align="LEFT" valign="TOP"><a name="AEN2776"><span style="white-space: nowrap"><span class="emphasis"><i class="EMPHASIS">Returns</i></span> :</span></a></td>
294 <td align="LEFT" valign="TOP"><p> the number of bytes written to output buffer or
295 -1 if an error occurs.</p></td>
300 <div class="REFSECT2">
301 <a name="XMLSECBASE64ENCODE"></a><h3>xmlSecBase64Encode ()</h3>
302 <pre class="PROGRAMLISTING"><font>xmlChar</font>* xmlSecBase64Encode (const <a href="xmlsec-xmlsec.html#XMLSECBYTE">xmlSecByte</a> *buf,
303 <a href="xmlsec-xmlsec.html#XMLSECSIZE">xmlSecSize</a> len,
304 <font>int</font> columns);</pre>
305 <p>Encodes the data from input buffer and allocates the string for the result.
306 The caller is responsible for freeing returned buffer using
307 <gtkdoclink href="XMLFREE"><code class="FUNCTION">xmlFree()</code></gtkdoclink> function.</p>
310 <table class="variablelist" border="0" cellspacing="0" cellpadding="4"><tbody>
312 <td align="LEFT" valign="TOP"><a name="AEN2795"><span style="white-space: nowrap"><code class="PARAMETER">buf</code> :</span></a></td>
313 <td align="LEFT" valign="TOP"><p> the input buffer.</p></td>
316 <td align="LEFT" valign="TOP"><a name="AEN2800"><span style="white-space: nowrap"><code class="PARAMETER">len</code> :</span></a></td>
317 <td align="LEFT" valign="TOP"><p> the input buffer size.</p></td>
320 <td align="LEFT" valign="TOP"><a name="AEN2805"><span style="white-space: nowrap"><code class="PARAMETER">columns</code> :</span></a></td>
321 <td align="LEFT" valign="TOP"><p> the output max line length (if 0 then no line breaks
322 would be inserted)</p></td>
325 <td align="LEFT" valign="TOP"><a name="AEN2810"><span style="white-space: nowrap"><span class="emphasis"><i class="EMPHASIS">Returns</i></span> :</span></a></td>
326 <td align="LEFT" valign="TOP"><p> newly allocated string with base64 encoded data
327 or NULL if an error occurs.</p></td>
332 <div class="REFSECT2">
333 <a name="XMLSECBASE64DECODE"></a><h3>xmlSecBase64Decode ()</h3>
334 <pre class="PROGRAMLISTING"><font>int</font> xmlSecBase64Decode (const <font>xmlChar</font> *str,
335 <a href="xmlsec-xmlsec.html#XMLSECBYTE">xmlSecByte</a> *buf,
336 <a href="xmlsec-xmlsec.html#XMLSECSIZE">xmlSecSize</a> len);</pre>
337 <p>Decodes input base64 encoded string and puts result into
338 the output buffer.</p>
341 <table class="variablelist" border="0" cellspacing="0" cellpadding="4"><tbody>
343 <td align="LEFT" valign="TOP"><a name="AEN2827"><span style="white-space: nowrap"><code class="PARAMETER">str</code> :</span></a></td>
344 <td align="LEFT" valign="TOP"><p> the input buffer with base64 encoded string</p></td>
347 <td align="LEFT" valign="TOP"><a name="AEN2832"><span style="white-space: nowrap"><code class="PARAMETER">buf</code> :</span></a></td>
348 <td align="LEFT" valign="TOP"><p> the output buffer</p></td>
351 <td align="LEFT" valign="TOP"><a name="AEN2837"><span style="white-space: nowrap"><code class="PARAMETER">len</code> :</span></a></td>
352 <td align="LEFT" valign="TOP"><p> the output buffer size</p></td>
355 <td align="LEFT" valign="TOP"><a name="AEN2842"><span style="white-space: nowrap"><span class="emphasis"><i class="EMPHASIS">Returns</i></span> :</span></a></td>
356 <td align="LEFT" valign="TOP"><p> the number of bytes written to the output buffer or
357 a negative value if an error occurs </p></td>
362 <table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
363 <td align="left"><a accesskey="p" href="xmlsec-app.html"><b><<< app</b></a></td>
364 <td align="right"><a accesskey="n" href="xmlsec-bn.html"><b>bn >>></b></a></td>
366 </td></tr></table></td>