]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Add fr_is_base64_nstd
authorArran Cudbard-Bell <a.cudbardb@freeradius.org>
Thu, 20 May 2021 15:02:52 +0000 (17:02 +0200)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Thu, 20 May 2021 15:05:03 +0000 (17:05 +0200)
src/lib/util/base64.h

index 48c07c99b925308a3ed84e42ecc5bffa748bd4e9..290e1be048d727c81ed20e8115ae12ad6fa81f5a 100644 (file)
@@ -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);