aboutsummaryrefslogtreecommitdiff
path: root/src/lib/ndpi_utils.c
diff options
context:
space:
mode:
authorMrTiz9 <tiziano.marra@pm.me>2020-01-30 14:57:58 +0100
committerMrTiz9 <tiziano.marra@pm.me>2020-01-30 14:57:58 +0100
commitea957687e1f9444baa69d0b2b041c1b8cf70b2f6 (patch)
treee478be3b69080c48c7b6b398ee66710efa893a5d /src/lib/ndpi_utils.c
parentdaf15e70bf7444649c302840e14142308c731e6c (diff)
parentc84ed5a71257d1db28036c37e90f828ed86623a0 (diff)
Merge branch 'dev' of https://github.com/ntop/nDPI into dev-unstable
Diffstat (limited to 'src/lib/ndpi_utils.c')
-rw-r--r--src/lib/ndpi_utils.c49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/lib/ndpi_utils.c b/src/lib/ndpi_utils.c
index c6844ffa3..c7ea25aee 100644
--- a/src/lib/ndpi_utils.c
+++ b/src/lib/ndpi_utils.c
@@ -853,6 +853,55 @@ u_char* ndpi_base64_decode(const u_char *src, size_t len, size_t *out_len) {
}
/* ********************************** */
+
+char* ndpi_base64_encode(unsigned char const* bytes_to_encode, ssize_t in_len) {
+ ssize_t len = 0, ret_size;
+ char *ret;
+ int i = 0;
+ unsigned char char_array_3[3];
+ unsigned char char_array_4[4];
+
+ ret_size = ((in_len+2)/3)*4;
+
+ if((ret = (char*)ndpi_malloc(ret_size+1)) == NULL)
+ return NULL;
+
+ while (in_len--) {
+ char_array_3[i++] = *(bytes_to_encode++);
+ if(i == 3) {
+ char_array_4[0] = (char_array_3[0] & 0xfc) >> 2;
+ char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4);
+ char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + ((char_array_3[2] & 0xc0) >> 6);
+ char_array_4[3] = char_array_3[2] & 0x3f;
+
+ for(i = 0; i < 4; i++)
+ ret[len++] = base64_table[char_array_4[i]];
+ i = 0;
+ }
+ }
+
+ if(i) {
+ for(int j = i; j < 3; j++)
+ char_array_3[j] = '\0';
+
+ char_array_4[0] = (char_array_3[0] & 0xfc) >> 2;
+ char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4);
+ char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + ((char_array_3[2] & 0xc0) >> 6);
+ char_array_4[3] = char_array_3[2] & 0x3f;
+
+ for(int j = 0; (j < i + 1); j++)
+ ret[len++] = base64_table[char_array_4[j]];
+
+ while((i++ < 3))
+ ret[len++] = '=';
+ }
+
+ ret[len++] = '\0';
+
+ return ret;
+}
+
+/* ********************************** */
/* ********************************** */
int ndpi_flow2json(struct ndpi_detection_module_struct *ndpi_struct,