1
#include "b64_encode.h"
5
const char b64_table[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
7
int b64_encode(const char* input, int len, char* output, int buf_len) {
11
if(len%3) out_len += 4;
12
if(buf_len < out_len) return -1;
14
for(i = 0; i < len/3; i++) {
15
output[4*i ] = b64_table[(input[3*i] >> 2) & 0x3F];
16
output[4*i+1] = b64_table[((input[3*i] << 4) & 0x30) + ((input[3*i+1] >> 4) & 0x0F)];
17
output[4*i+2] = b64_table[((input[3*i+1] << 2) & 0x3C) + ((input[3*i+2] >> 6) & 0x03)];
18
output[4*i+3] = b64_table[input[3*i+2] & 0x3F];
23
output[4*i ] = b64_table[(input[3*i] >> 2) & 0x3F];
24
output[4*i+1] = b64_table[((input[3*i] << 4) & 0x30) + ((input[3*i+1] >> 4) & 0x0F)];
25
output[4*i+2] = b64_table[(input[3*i+1] << 2) & 0x3C];
29
output[4*i ] = b64_table[(input[3*i] >> 2) & 0x3F];
30
output[4*i+1] = b64_table[(input[3*i] << 4) & 0x30];