1 /*----------------------------------------------------------------------------
2 Name: xmlBlaster/src/c/util/base64.h
3 Project: xmlBlaster.org
4 Copyright: xmlBlaster.org, see xmlBlaster-LICENSE file
5 Comment: base64 encode/decode
6 Author: "Marcel Ruff" <xmlBlaster@marcelruff.info>
7 Implementation details derived from http://base64.sourceforge.net/b64.c
8 by Bob Trower 08/04/01
9 -----------------------------------------------------------------------------*/
10 #ifndef _XMLBLASTER_BASE64_H
11 #define _XMLBLASTER_BASE64_H
12
13 #include <util/basicDefs.h> /* for Dll_Export */
14
15 #ifdef __cplusplus
16 #ifndef XMLBLASTER_C_COMPILE_AS_CPP /* 'g++ -DXMLBLASTER_C_COMPILE_AS_CPP ...' allows to compile the lib as C++ code */
17 extern "C" {
18 #endif
19 #endif
20
21 /**
22 * Encode binary data to base64 notation.
23 *
24 * @param inLen binary data
25 * @param inBytes binary data
26 * @param lineSize line breaks as per spec, typically 60 characters, -1 switches line breaks off
27 * @return outStr, is NULL if input parameters are null
28 * You need to free(outStr) it after usage.
29 */
30 Dll_Export extern char *Base64EncodeLen(int inLen, const char *inBytes, int lineSize);
31
32
33 /**
34 * Encode binary data to base64 notation with max line width = 60 chars.
35 *
36 * @param inLen binary data
37 * @param inBytes binary data
38 * @return outStr, is NULL if input parameters are null
39 * You need to free(outStr) it after usage.
40 */
41 Dll_Export extern char *Base64Encode(int inLen, const char *inBytes);
42
43
44 /**
45 * Decode the base64 to the original byte array
46 * discarding padding, line breaks and noise
47 * @param inStr The zero terminated base64 string
48 * @param outLen An out-parameter, is set to the length of the returned bytes
49 * @return the decoded bytes with length 'outLen',
50 * is additionally guaranteed to be null terminated (but may contain other zeros).
51 * The caller must free the returned pointer with free()
52 */
53 Dll_Export extern char *Base64Decode(const char *inStr, int *outLen);
54
55
56 #ifdef __cplusplus
57 #ifndef XMLBLASTER_C_COMPILE_AS_CPP
58 }
59 #endif
60 #endif
61
62 #endif /* _XMLBLASTER_BASE64_H */
syntax highlighted by Code2HTML, v. 0.9.1