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