base64: add define LTC_BASE64_URL, make _internal functions static
This commit is contained in:
parent
947fe41bbb
commit
d78aa37c10
@ -383,6 +383,8 @@
|
||||
|
||||
/* Various tidbits of modern neatoness */
|
||||
#define LTC_BASE64
|
||||
/* ... and it's URL safe version */
|
||||
#define LTC_BASE64_URL
|
||||
|
||||
/* Keep LTC_NO_HKDF for compatibility reasons
|
||||
* superseeded by LTC_NO_MISC*/
|
||||
|
@ -7,11 +7,13 @@ int base64_decode(const unsigned char *in, unsigned long len,
|
||||
unsigned char *out, unsigned long *outlen);
|
||||
#endif
|
||||
|
||||
#ifdef LTC_BASE64_URL
|
||||
int base64url_encode(const unsigned char *in, unsigned long len,
|
||||
unsigned char *out, unsigned long *outlen);
|
||||
|
||||
int base64url_decode(const unsigned char *in, unsigned long len,
|
||||
unsigned char *out, unsigned long *outlen);
|
||||
#endif
|
||||
|
||||
/* ===> LTC_HKDF -- RFC5869 HMAC-based Key Derivation Function <=== */
|
||||
#ifdef LTC_HKDF
|
||||
|
@ -17,8 +17,9 @@
|
||||
*/
|
||||
|
||||
|
||||
#ifdef LTC_BASE64
|
||||
#if defined(LTC_BASE64) || defined (LTC_BASE64_URL)
|
||||
|
||||
#if defined(LTC_BASE64)
|
||||
static const unsigned char map_base64[256] = {
|
||||
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
|
||||
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
|
||||
@ -42,7 +43,9 @@ static const unsigned char map_base64[256] = {
|
||||
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
|
||||
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
|
||||
255, 255, 255, 255 };
|
||||
#endif /* LTC_BASE64 */
|
||||
|
||||
#if defined(LTC_BASE64_URL)
|
||||
static const unsigned char map_base64url[256] = {
|
||||
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
|
||||
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
|
||||
@ -66,8 +69,9 @@ static const unsigned char map_base64url[256] = {
|
||||
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
|
||||
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
|
||||
255, 255, 255, 255 };
|
||||
#endif /* LTC_BASE64_URL */
|
||||
|
||||
int base64_decode_internal(const unsigned char *in, unsigned long inlen,
|
||||
static int _base64_decode_internal(const unsigned char *in, unsigned long inlen,
|
||||
unsigned char *out, unsigned long *outlen,
|
||||
const unsigned char *map)
|
||||
{
|
||||
@ -84,8 +88,8 @@ int base64_decode_internal(const unsigned char *in, unsigned long inlen,
|
||||
c = map[in[x]&0xFF];
|
||||
if (c == 255) continue;
|
||||
/* the final = symbols are read and used to trim the remaining bytes */
|
||||
if (c == 254) {
|
||||
c = 0;
|
||||
if (c == 254) {
|
||||
c = 0;
|
||||
/* prevent g < 0 which would potentially allow an overflow later */
|
||||
if (--g < 0) {
|
||||
return CRYPT_INVALID_PACKET;
|
||||
@ -98,8 +102,8 @@ int base64_decode_internal(const unsigned char *in, unsigned long inlen,
|
||||
t = (t<<6)|c;
|
||||
|
||||
if (++y == 4) {
|
||||
if (z + g > *outlen) {
|
||||
return CRYPT_BUFFER_OVERFLOW;
|
||||
if (z + g > *outlen) {
|
||||
return CRYPT_BUFFER_OVERFLOW;
|
||||
}
|
||||
out[z++] = (unsigned char)((t>>16)&255);
|
||||
if (g > 1) out[z++] = (unsigned char)((t>>8)&255);
|
||||
@ -114,6 +118,7 @@ int base64_decode_internal(const unsigned char *in, unsigned long inlen,
|
||||
return CRYPT_OK;
|
||||
}
|
||||
|
||||
#if defined(LTC_BASE64)
|
||||
/**
|
||||
base64 decode a block of memory
|
||||
@param in The base64 data to decode
|
||||
@ -125,9 +130,11 @@ int base64_decode_internal(const unsigned char *in, unsigned long inlen,
|
||||
int base64_decode(const unsigned char *in, unsigned long inlen,
|
||||
unsigned char *out, unsigned long *outlen)
|
||||
{
|
||||
return base64_decode_internal(in, inlen, out, outlen, map_base64);
|
||||
return _base64_decode_internal(in, inlen, out, outlen, map_base64);
|
||||
}
|
||||
#endif /* LTC_BASE64 */
|
||||
|
||||
#if defined(LTC_BASE64_URL)
|
||||
/**
|
||||
base64 (URL Safe, RFC 4648 section 5) decode a block of memory
|
||||
@param in The base64 data to decode
|
||||
@ -139,8 +146,9 @@ int base64_decode(const unsigned char *in, unsigned long inlen,
|
||||
int base64url_decode(const unsigned char *in, unsigned long inlen,
|
||||
unsigned char *out, unsigned long *outlen)
|
||||
{
|
||||
return base64_decode_internal(in, inlen, out, outlen, map_base64url);
|
||||
return _base64_decode_internal(in, inlen, out, outlen, map_base64url);
|
||||
}
|
||||
#endif /* LTC_BASE64_URL */
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -17,15 +17,19 @@
|
||||
*/
|
||||
|
||||
|
||||
#ifdef LTC_BASE64
|
||||
#if defined(LTC_BASE64) || defined (LTC_BASE64_URL)
|
||||
|
||||
#if defined(LTC_BASE64)
|
||||
static const char *codes_base64 =
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
||||
#endif /* LTC_BASE64 */
|
||||
|
||||
#if defined(LTC_BASE64_URL)
|
||||
static const char *codes_base64url =
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
|
||||
#endif /* LTC_BASE64_URL */
|
||||
|
||||
int base64_encode_internal(const unsigned char *in, unsigned long inlen,
|
||||
static int _base64_encode_internal(const unsigned char *in, unsigned long inlen,
|
||||
unsigned char *out, unsigned long *outlen,
|
||||
const char *codes, int pad)
|
||||
{
|
||||
@ -75,6 +79,7 @@ int base64_encode_internal(const unsigned char *in, unsigned long inlen,
|
||||
return CRYPT_OK;
|
||||
}
|
||||
|
||||
#if defined(LTC_BASE64)
|
||||
/**
|
||||
base64 Encode a buffer (NUL terminated)
|
||||
@param in The input buffer to encode
|
||||
@ -86,10 +91,12 @@ int base64_encode_internal(const unsigned char *in, unsigned long inlen,
|
||||
int base64_encode(const unsigned char *in, unsigned long inlen,
|
||||
unsigned char *out, unsigned long *outlen)
|
||||
{
|
||||
return base64_encode_internal(in, inlen, out, outlen, codes_base64, 1);
|
||||
return _base64_encode_internal(in, inlen, out, outlen, codes_base64, 1);
|
||||
}
|
||||
#endif /* LTC_BASE64 */
|
||||
|
||||
|
||||
#if defined(LTC_BASE64_URL)
|
||||
/**
|
||||
base64 (URL Safe, RFC 4648 section 5) Encode a buffer (NUL terminated)
|
||||
@param in The input buffer to encode
|
||||
@ -101,8 +108,9 @@ int base64_encode(const unsigned char *in, unsigned long inlen,
|
||||
int base64url_encode(const unsigned char *in, unsigned long inlen,
|
||||
unsigned char *out, unsigned long *outlen)
|
||||
{
|
||||
return base64_encode_internal(in, inlen, out, outlen, codes_base64url, 0);
|
||||
return _base64_encode_internal(in, inlen, out, outlen, codes_base64url, 0);
|
||||
}
|
||||
#endif /* LTC_BASE64_URL */
|
||||
|
||||
#endif
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user