24RCSIDH(base64_h,
"$Id: 9e913b39feb72bfd4eb57c67f0f852918acaf691 $")
30#include <freeradius-devel/missing.h>
31#include <freeradius-devel/util/sbuff.h>
32#include <freeradius-devel/util/dbuff.h>
40#define FR_BASE64_ENC_LENGTH(_inlen) ((((_inlen) + 2) / 3) * 4)
41#define FR_BASE64_DEC_LENGTH(_inlen) ((3 * ((_inlen) / 4)) + 2)
60 return alphabet[(
uint8_t)c] < 64;
64#define fr_is_base64(_c) fr_is_base64_nstd(_c, fr_base64_alphabet_decode)
71#define fr_base64_encode(_out, _in, _add_padding) \
72 fr_base64_encode_nstd(_out, _in, _add_padding, fr_base64_alphabet_encode)
78#define fr_base64_decode(_out, _in, _expect_padding, _no_trailing) \
79 fr_base64_decode_nstd(NULL, _out, _in, _expect_padding, _no_trailing, fr_base64_alphabet_decode)
char const fr_base64_url_alphabet_encode[SBUFF_CHAR_CLASS]
char const fr_base64_alphabet_encode[SBUFF_CHAR_CLASS]
ssize_t fr_base64_decode_nstd(fr_sbuff_parse_error_t *err, fr_dbuff_t *out, fr_sbuff_t *in, bool expect_padding, bool no_trailing, uint8_t const alphabet[static SBUFF_CHAR_CLASS]))
#define fr_base64_encode(_out, _in, _add_padding)
uint8_t const fr_base64_alphabet_decode[SBUFF_CHAR_CLASS]
static bool fr_is_base64_nstd(char c, uint8_t const alphabet[static SBUFF_CHAR_CLASS])
Check if char is in Base64 alphabet.
uint8_t const fr_base64_url_alphabet_decode[SBUFF_CHAR_CLASS]
ssize_t fr_base64_encode_nstd(fr_sbuff_t *out, fr_dbuff_t *in, bool add_padding, char const alphabet[static SBUFF_CHAR_CLASS])
Base 64 encode binary data.
static size_t char fr_sbuff_t size_t inlen
static size_t char ** out