diff -r 9c64d2a3d101 -r d9bdd5a22c1d dav/utils.c --- a/dav/utils.c Mon Aug 12 14:55:31 2013 +0200 +++ b/dav/utils.c Mon Aug 12 15:34:40 2013 +0200 @@ -34,6 +34,12 @@ #include #include +#include +#include +#include +#include +#include + #include "utils.h" @@ -150,3 +156,19 @@ return NULL; } + + +char* util_base64decode(char* in) { + size_t len = strlen(in); + char *out = calloc(1, len); + + BIO* b = BIO_new_mem_buf(in, len); + BIO *d = BIO_new(BIO_f_base64()); + BIO_set_flags(d, BIO_FLAGS_BASE64_NO_NL); + b = BIO_push(d, b); + + BIO_read(b, out, len); + BIO_free_all(b); + + return out; +}