static const char Base64[] =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
-static const char Pad64 = '=';
/** Maximal possible size of the decoded data. */
#define BASE64_MAX_DECODED_SIZE(_encoded_size) ((_encoded_size) / 4 * 3)
+#define PAD64 '='
/**
* base64-decode a buffer.
*
if (para_isspace(ch)) /* Skip whitespace anywhere. */
continue;
- if (ch == Pad64)
+ if (ch == PAD64)
break;
pos = strchr(Base64, ch);
break;
}
}
-
/*
* We are done decoding Base-64 chars. Let's see if we ended
* on a byte boundary, and/or with erroneous trailing characters.
*/
-
- if (*src == Pad64) { /* We got a pad char. */
- ch = *src++; /* Skip it, get next. */
+ if (*src == PAD64) { /* We got a pad char. */
+ ch = *src++; /* Skip it, get next. */
switch (state) {
- case 0: /* Invalid = in first position */
- case 1: /* Invalid = in second position */
+ case 0: /* Invalid = in first position */
+ case 1: /* Invalid = in second position */
goto fail;
- case 2: /* Valid, means one byte of info */
+ case 2: /* Valid, means one byte of info */
/* Skip any number of spaces. */
for (; ch != '\0'; ch = *src++)
- if (!isspace(ch))
+ if (!para_isspace(ch))
break;
/* Make sure there is another trailing = sign. */
- if (ch != Pad64)
+ if (ch != PAD64)
goto fail;
ch = *src++; /* Skip the = */
/* Fall through to "single trailing =" case. */
- /* FALLTHROUGH */
- case 3: /* Valid, means two bytes of info */
+ case 3: /* Valid, means two bytes of info */
/*
* We know this char is an =. Is there anything but
* whitespace after it?
*/
for (; ch != '\0'; ch = *src++)
- if (!isspace(ch))
+ if (!para_isspace(ch))
goto fail;
-
/*
* Now make sure for cases 2 and 3 that the "extra"
* bits that slopped past the last full byte were