#ifndef BASE64_C #define BASE64_C #include static const char b64[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" "abcdefghijklmnopqrstuvwxyz" "0123456789+/"; void base64_encode( const unsigned char *in, size_t len, char *out ) { size_t i, j = 0; for (i = 0; i < len; i += 3) { unsigned v = in[i] << 16; if (i + 1 < len) v |= in[i + 1] << 8; if (i + 2 < len) v |= in[i + 2]; out[j++] = b64[(v >> 18) & 63]; out[j++] = b64[(v >> 12) & 63]; out[j++] = (i + 1 < len) ? b64[(v >> 6) & 63] : '='; out[j++] = (i + 2 < len) ? b64[v & 63] : '='; } out[j] = 0; } #endif // BASE64_C