MCPcopy Create free account
hub / github.com/MaxBelkov/visualsyslog / base64_encode

Function base64_encode

sourcecommon/base64.cpp:10–52  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

8 "0123456789+/";
9
10char *
11base64_encode(const unsigned char *input, int length)
12{
13 /* http://www.adp-gmbh.ch/cpp/common/base64.html */
14 int i=0, j, s=0;
15 unsigned char char_array_3[3], char_array_4[4];
16
17 int b64len = (length+2 - ((length+2)%3))*4/3;
18 char *b64str = new char[b64len + 1];
19
20 while (length--) {
21 char_array_3[i++] = *(input++);
22 if (i == 3) {
23 char_array_4[0] = (char_array_3[0] & 0xfc) >> 2;
24 char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4);
25 char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + ((char_array_3[2] & 0xc0) >> 6);
26 char_array_4[3] = char_array_3[2] & 0x3f;
27
28 for (i = 0; i < 4; i++)
29 b64str[s++] = base64_chars[char_array_4[i]];
30
31 i = 0;
32 }
33 }
34 if (i) {
35 for (j = i; j < 3; j++)
36 char_array_3[j] = '\0';
37
38 char_array_4[0] = (char_array_3[0] & 0xfc) >> 2;
39 char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4);
40 char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + ((char_array_3[2] & 0xc0) >> 6);
41 char_array_4[3] = char_array_3[2] & 0x3f;
42
43 for (j = 0; j < i + 1; j++)
44 b64str[s++] = base64_chars[char_array_4[j]];
45
46 while (i++ < 3)
47 b64str[s++] = '=';
48 }
49 b64str[b64len] = '\0';
50
51 return b64str;
52}
53
54static inline bool is_base64(unsigned char c) {
55 return (isalnum(c) || (c == '+') || (c == '/'));

Callers 1

ToUft8HeaderFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected