xref: /lighttpd1.4/src/base64.h (revision 575665ad)
1 #ifndef _BASE64_H_
2 #define _BASE64_H_
3 #include "first.h"
4 
5 #include "buffer.h"
6 
7 typedef enum {
8 	BASE64_STANDARD,
9 	BASE64_URL,
10 } base64_charset;
11 
12 size_t li_base64_dec(unsigned char *result, size_t out_length, const char *in, size_t in_length, base64_charset charset);
13 
14 unsigned char* buffer_append_base64_decode(buffer *out, const char* in, size_t in_length, base64_charset charset);
15 
16 size_t li_base64_enc(char* restrict out, size_t out_length, const unsigned char* restrict in, size_t in_length, base64_charset charset, int pad);
17 #define li_to_base64_no_padding(out, out_length, in, in_length, charset) \
18         li_base64_enc((out), (out_length), (in), (in_length), (charset), 0)
19 #define li_to_base64(out, out_length, in, in_length, charset) \
20         li_base64_enc((out), (out_length), (in), (in_length), (charset), 1)
21 
22 __attribute_nonnull__()
23 __attribute_returns_nonnull__
24 char* buffer_append_base64_enc(buffer *out, const unsigned char* in, size_t in_length, base64_charset charset, int pad);
25 
26 #define buffer_append_base64_encode_no_padding(out, in, in_length, charset) \
27         buffer_append_base64_enc((out), (in), (in_length), (charset), 0)
28 #define buffer_append_base64_encode(out, in, in_length, charset) \
29         buffer_append_base64_enc((out), (in), (in_length), (charset), 1)
30 
31 #endif
32