From: Arran Cudbard-Bell Date: Thu, 20 May 2021 15:02:52 +0000 (+0200) Subject: Add fr_is_base64_nstd X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=48ecb78e3f47dd6cd07ffaea366a441a38ac9f2e;p=thirdparty%2Ffreeradius-server.git Add fr_is_base64_nstd --- diff --git a/src/lib/util/base64.h b/src/lib/util/base64.h index 48c07c99b92..290e1be048d 100644 --- a/src/lib/util/base64.h +++ b/src/lib/util/base64.h @@ -44,8 +44,20 @@ extern "C" { extern char const fr_base64_str[]; extern uint8_t const fr_base64_alphabet_decode[UINT8_MAX]; -#define fr_is_base64(_c) fr_base64_nstd(_c, fr_base64_alphabet_decode) -bool fr_is_base64_nstd(char c, uint8_t const alphabet[static UINT8_MAX]); +/** Check if char is in Base64 alphabet + * + * Note that '=' is padding and not considered to be part of the alphabet. + * + * @param c char to check. + * - true if c is a character from the Base64 alphabet. + * - false if character is not in the Base64 alphabet. + */ +static inline bool fr_is_base64_nstd(char c, uint8_t const alphabet[static UINT8_MAX]) +{ + return (c == 'A') || (alphabet[(uint8_t)c] > 0); +} + +#define fr_is_base64(_c) fr_is_base64_nstd(_c, fr_base64_alphabet_decode) size_t fr_base64_encode(char * restrict out, size_t outlen, uint8_t const * restrict in, size_t inlen);