diff --git a/sys/base64/base64.c b/sys/base64/base64.c
index 048fc99f4867056b464bfc914b9d9b806121e7ae..d43f1b5f8a28b8accfe72873c1711334e3b44f74 100644
--- a/sys/base64/base64.c
+++ b/sys/base64/base64.c
@@ -56,9 +56,10 @@ static char getsymbol(unsigned char code)
     return (char)BASE64_NOT_DEFINED;
 }
 
-int base64_encode(unsigned char *data_in, size_t data_in_size, \
+int base64_encode(const void *data_in, size_t data_in_size,
                   unsigned char *base64_out, size_t *base64_out_size)
 {
+    const unsigned char *in = data_in;
     size_t required_size = 4 * ((data_in_size + 2) / 3);
 
     if (data_in == NULL) {
@@ -86,7 +87,7 @@ int base64_encode(unsigned char *data_in, size_t data_in_size, \
     for (int i = 0; i < (int)(data_in_size); ++i) {
         unsigned char tmpval;
         njump++;
-        tmpval = *(data_in + i);
+        tmpval = *(in + i);
 
         nNum = (tmpval >> (2 * njump));
 
@@ -159,9 +160,10 @@ static int getcode(char symbol)
     return BASE64_NOT_DEFINED;
 }
 
-int base64_decode(unsigned char *base64_in, size_t base64_in_size, \
-                  unsigned char *data_out, size_t *data_out_size)
+int base64_decode(const unsigned char *base64_in, size_t base64_in_size,
+                  void *data_out, size_t *data_out_size)
 {
+    unsigned char *out = data_out;
     size_t required_size = ((base64_in_size / 4) * 3);
 
     if (base64_in == NULL) {
@@ -200,13 +202,13 @@ int base64_decode(unsigned char *base64_in, size_t base64_in_size, \
         nNum = nLst + ((code & (0xFF & nm)) >> (2 * mask));
         nLst = (code & (0xFF & ~nm)) << (8 - (2 * mask));
 
-        (mask != 3) ? data_out[iterate_data_buffer++] = nNum : nNum;
+        (mask != 3) ? out[iterate_data_buffer++] = nNum : nNum;
         (mask == 0) ? mask = 3 : mask--;
     }
 
     if (code == BASE64_EQUALS) {
         /* add the last character to the data_out buffer */
-        data_out[iterate_data_buffer] = nNum;
+        out[iterate_data_buffer] = nNum;
     }
 
     *data_out_size = iterate_data_buffer;
diff --git a/sys/include/base64.h b/sys/include/base64.h
index c678ef368af951718c4045fd270c0d5d5489b0f4..e4a039cd8db7074dca2b712a4279240d7cb58d36 100644
--- a/sys/include/base64.h
+++ b/sys/include/base64.h
@@ -50,7 +50,7 @@ extern "C" {
             BASE64_ERROR_DATA_IN if `data_in` equals NULL,
             BASE64_ERROR_DATA_IN_SIZE if `data_in_size` is less then 1.
  */
-int base64_encode(unsigned char *data_in, size_t data_in_size, \
+int base64_encode(const void *data_in, size_t data_in_size,
                   unsigned char *base64_out, size_t *base64_out_size);
 
 /**
@@ -71,8 +71,8 @@ int base64_encode(unsigned char *data_in, size_t data_in_size, \
             BASE64_ERROR_DATA_IN if `base64_in` equals NULL,
             BASE64_ERROR_DATA_IN_SIZE if `base64_in_size` is less then 4.
  */
-int base64_decode(unsigned char *base64_in, size_t base64_in_size, \
-                  unsigned char *data_out, size_t *data_out_size);
+int base64_decode(const unsigned char *base64_in, size_t base64_in_size,
+                  void *data_out, size_t *data_out_size);
 
 #ifdef __cplusplus
 }