Mercurial > dovecot > core-2.2
annotate src/lib/base32.h @ 23007:36e01285b5b8
lib: buffer - Improve header comment for buffer_insert() and buffer_delete().
author | Stephan Bosch <stephan.bosch@dovecot.fi> |
---|---|
date | Mon, 18 Mar 2019 00:52:37 +0100 |
parents | 1663b76430e1 |
children |
rev | line source |
---|---|
18098
1663b76430e1
Added support for base32 encode/decode.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
1 #ifndef BASE32_H |
1663b76430e1
Added support for base32 encode/decode.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
2 #define BASE32_H |
1663b76430e1
Added support for base32 encode/decode.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
3 |
1663b76430e1
Added support for base32 encode/decode.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
4 /* Translates binary data into base32 (RFC 4648, Section 6). The src must not |
1663b76430e1
Added support for base32 encode/decode.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
5 point to dest buffer. The pad argument determines whether output is padded |
1663b76430e1
Added support for base32 encode/decode.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
6 with '='. |
1663b76430e1
Added support for base32 encode/decode.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
7 */ |
1663b76430e1
Added support for base32 encode/decode.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
8 void base32_encode(bool pad, const void *src, size_t src_size, |
1663b76430e1
Added support for base32 encode/decode.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
9 buffer_t *dest); |
1663b76430e1
Added support for base32 encode/decode.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
10 |
1663b76430e1
Added support for base32 encode/decode.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
11 /* Translates binary data into base32hex (RFC 4648, Section 7). The src must |
1663b76430e1
Added support for base32 encode/decode.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
12 not point to dest buffer. The pad argument determines whether output is |
1663b76430e1
Added support for base32 encode/decode.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
13 padded with '='. |
1663b76430e1
Added support for base32 encode/decode.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
14 */ |
1663b76430e1
Added support for base32 encode/decode.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
15 void base32hex_encode(bool pad, const void *src, size_t src_size, |
1663b76430e1
Added support for base32 encode/decode.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
16 buffer_t *dest); |
1663b76430e1
Added support for base32 encode/decode.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
17 |
1663b76430e1
Added support for base32 encode/decode.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
18 /* Translates base32/base32hex data into binary and appends it to dest buffer. |
1663b76430e1
Added support for base32 encode/decode.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
19 dest may point to same buffer as src. Returns 1 if all ok, 0 if end of |
1663b76430e1
Added support for base32 encode/decode.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
20 base32 data found, -1 if data is invalid. |
1663b76430e1
Added support for base32 encode/decode.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
21 |
1663b76430e1
Added support for base32 encode/decode.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
22 Any whitespace characters are ignored. |
1663b76430e1
Added support for base32 encode/decode.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
23 |
1663b76430e1
Added support for base32 encode/decode.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
24 This function may be called multiple times for parsing the same stream. |
1663b76430e1
Added support for base32 encode/decode.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
25 If src_pos is non-NULL, it's updated to first non-translated character in |
1663b76430e1
Added support for base32 encode/decode.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
26 src. */ |
1663b76430e1
Added support for base32 encode/decode.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
27 int base32_decode(const void *src, size_t src_size, |
1663b76430e1
Added support for base32 encode/decode.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
28 size_t *src_pos_r, buffer_t *dest) ATTR_NULL(4); |
1663b76430e1
Added support for base32 encode/decode.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
29 int base32hex_decode(const void *src, size_t src_size, |
1663b76430e1
Added support for base32 encode/decode.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
30 size_t *src_pos_r, buffer_t *dest) ATTR_NULL(4); |
1663b76430e1
Added support for base32 encode/decode.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
31 |
1663b76430e1
Added support for base32 encode/decode.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
32 /* Decode given string to a buffer allocated from data stack. */ |
1663b76430e1
Added support for base32 encode/decode.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
33 buffer_t *t_base32_decode_str(const char *str); |
1663b76430e1
Added support for base32 encode/decode.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
34 buffer_t *t_base32hex_decode_str(const char *str); |
1663b76430e1
Added support for base32 encode/decode.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
35 |
1663b76430e1
Added support for base32 encode/decode.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
36 /* Returns TRUE if c is a valid base32 encoding character (excluding '=') */ |
1663b76430e1
Added support for base32 encode/decode.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
37 bool base32_is_valid_char(char c); |
1663b76430e1
Added support for base32 encode/decode.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
38 bool base32hex_is_valid_char(char c); |
1663b76430e1
Added support for base32 encode/decode.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
39 |
1663b76430e1
Added support for base32 encode/decode.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
40 /* max. buffer size required for base32_encode()/base32hex_encode() */ |
1663b76430e1
Added support for base32 encode/decode.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
41 #define MAX_BASE32_ENCODED_SIZE(size) \ |
1663b76430e1
Added support for base32 encode/decode.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
42 ((size) / 5 * 8 + 8) |
1663b76430e1
Added support for base32 encode/decode.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
43 /* max. buffer size required for base32_decode()/base32hex_decode() */ |
1663b76430e1
Added support for base32 encode/decode.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
44 #define MAX_BASE32_DECODED_SIZE(size) \ |
1663b76430e1
Added support for base32 encode/decode.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
45 ((size) / 8 * 5 + 5) |
1663b76430e1
Added support for base32 encode/decode.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
46 |
1663b76430e1
Added support for base32 encode/decode.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
47 #endif |