return -1;
}
-int
+ssize_t
base64Encode(const void *data, int size, char **str)
{
char *s, *p;
}
*p = 0;
*str = s;
- return (int) strlen(s);
+ return strlen(s);
}
#define DECODE_ERROR 0xffffffff
return (marker << 24) | val;
}
-int
+ssize_t
base64Decode(const char *str, void *data)
{
const char *p;
}
return q - (unsigned char *) data;
}
+
+int
+base64Valid(const char *str)
+{
+ const char *p;
+ int valid = 1;
+
+ for (p = str; *p && (*p == '=' || strchr(base64_chars, *p)); p += 4) {
+ unsigned int val = token_decode(p);
+ if (val == DECODE_ERROR) {
+ valid = 0;
+ break;
+ }
+ }
+ return valid;
+}