Botan  1.10.9
base64.h
Go to the documentation of this file.
1 /*
2 * Base64 Encoding and Decoding
3 * (C) 2010 Jack Lloyd
4 *
5 * Distributed under the terms of the Botan license
6 */
7 
8 #ifndef BOTAN_BASE64_CODEC_H__
9 #define BOTAN_BASE64_CODEC_H__
10 
11 #include <botan/secmem.h>
12 #include <string>
13 
14 namespace Botan {
15 
16 /**
17 * Perform base64 encoding
18 * @param output an array of at least input_length*4/3 bytes
19 * @param input is some binary data
20 * @param input_length length of input in bytes
21 * @param input_consumed is an output parameter which says how many
22 * bytes of input were actually consumed. If less than
23 * input_length, then the range input[consumed:length]
24 * should be passed in later along with more input.
25 * @param final_inputs true iff this is the last input, in which case
26  padding chars will be applied if needed
27 * @return number of bytes written to output
28 */
29 size_t BOTAN_DLL base64_encode(char output[],
30  const byte input[],
31  size_t input_length,
32  size_t& input_consumed,
33  bool final_inputs);
34 
35 /**
36 * Perform base64 encoding
37 * @param input some input
38 * @param input_length length of input in bytes
39 * @return base64adecimal representation of input
40 */
41 std::string BOTAN_DLL base64_encode(const byte input[],
42  size_t input_length);
43 
44 /**
45 * Perform base64 encoding
46 * @param input some input
47 * @return base64adecimal representation of input
48 */
49 std::string BOTAN_DLL base64_encode(const MemoryRegion<byte>& input);
50 
51 /**
52 * Perform base64 decoding
53 * @param output an array of at least input_length*3/4 bytes
54 * @param input some base64 input
55 * @param input_length length of input in bytes
56 * @param input_consumed is an output parameter which says how many
57 * bytes of input were actually consumed. If less than
58 * input_length, then the range input[consumed:length]
59 * should be passed in later along with more input.
60 * @param final_inputs true iff this is the last input, in which case
61  padding is allowed
62 * @param ignore_ws ignore whitespace on input; if false, throw an
63  exception if whitespace is encountered
64 * @return number of bytes written to output
65 */
66 size_t BOTAN_DLL base64_decode(byte output[],
67  const char input[],
68  size_t input_length,
69  size_t& input_consumed,
70  bool final_inputs,
71  bool ignore_ws = true);
72 
73 /**
74 * Perform base64 decoding
75 * @param output an array of at least input_length*3/4 bytes
76 * @param input some base64 input
77 * @param input_length length of input in bytes
78 * @param ignore_ws ignore whitespace on input; if false, throw an
79  exception if whitespace is encountered
80 * @return number of bytes written to output
81 */
82 size_t BOTAN_DLL base64_decode(byte output[],
83  const char input[],
84  size_t input_length,
85  bool ignore_ws = true);
86 
87 /**
88 * Perform base64 decoding
89 * @param output an array of at least input_length/3*4 bytes
90 * @param input some base64 input
91 * @param ignore_ws ignore whitespace on input; if false, throw an
92  exception if whitespace is encountered
93 * @return number of bytes written to output
94 */
95 size_t BOTAN_DLL base64_decode(byte output[],
96  const std::string& input,
97  bool ignore_ws = true);
98 
99 /**
100 * Perform base64 decoding
101 * @param input some base64 input
102 * @param input_length the length of input in bytes
103 * @param ignore_ws ignore whitespace on input; if false, throw an
104  exception if whitespace is encountered
105 * @return decoded base64 output
106 */
107 SecureVector<byte> BOTAN_DLL base64_decode(const char input[],
108  size_t input_length,
109  bool ignore_ws = true);
110 
111 /**
112 * Perform base64 decoding
113 * @param input some base64 input
114 * @param ignore_ws ignore whitespace on input; if false, throw an
115  exception if whitespace is encountered
116 * @return decoded base64 output
117 */
118 SecureVector<byte> BOTAN_DLL base64_decode(const std::string& input,
119  bool ignore_ws = true);
120 
121 }
122 
123 #endif
size_t base64_decode(byte output[], const char input[], size_t input_length, size_t &input_consumed, bool final_inputs, bool ignore_ws)
Definition: base64.cpp:100
unsigned char byte
Definition: types.h:22
size_t base64_encode(char out[], const byte in[], size_t input_length, size_t &input_consumed, bool final_inputs)
Definition: base64.cpp:36