From: Stephan Bosch Date: Wed, 28 Aug 2019 21:21:31 +0000 (+0200) Subject: lib: base64 - Add high-level data and string encode functions with data stack buffer... X-Git-Tag: 2.3.9~261 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=75a5b84cd10f46eb3c36e260bcd512a92e4ebdde;p=thirdparty%2Fdovecot%2Fcore.git lib: base64 - Add high-level data and string encode functions with data stack buffer output. --- diff --git a/src/lib/base64.c b/src/lib/base64.c index 5548c612f2..7fe51a8098 100644 --- a/src/lib/base64.c +++ b/src/lib/base64.c @@ -686,6 +686,19 @@ int base64_decode_finish(struct base64_decoder *dec) * Generic Base64 API */ +buffer_t *t_base64_scheme_encode(const struct base64_scheme *b64, + enum base64_encode_flags flags, + size_t max_line_len, + const void *src, size_t src_size) +{ + buffer_t *buf; + + buf = t_buffer_create(MAX_BASE64_ENCODED_SIZE(src_size)); + base64_scheme_encode(b64, flags, max_line_len, src, src_size, buf); + return buf; +} + + int base64_scheme_decode(const struct base64_scheme *b64, enum base64_decode_flags flags, const void *src, size_t src_size, buffer_t *dest) diff --git a/src/lib/base64.h b/src/lib/base64.h index d965a69238..3e4e110b0e 100644 --- a/src/lib/base64.h +++ b/src/lib/base64.h @@ -209,6 +209,20 @@ base64_scheme_encode(const struct base64_scheme *b64, base64_encode_finish(&enc, dest); } +buffer_t *t_base64_scheme_encode(const struct base64_scheme *b64, + enum base64_encode_flags flags, + size_t max_line_len, + const void *src, size_t src_size); + +static inline buffer_t * +t_base64_scheme_encode_str(const struct base64_scheme *b64, + enum base64_encode_flags flags, size_t max_line_len, + const char *src) +{ + return t_base64_scheme_encode(b64, flags, max_line_len, + src, strlen(src)); +} + /* Translates some variant of Base64 data into binary and appends it to dest buffer. dest may point to same buffer as src. Returns 1 if all ok, 0 if end of Base64 data found, -1 if data is invalid. @@ -264,6 +278,22 @@ base64_encode(const void *src, size_t src_size, buffer_t *dest) base64_scheme_encode(&base64_scheme, 0, 0, src, src_size, dest); } +static inline buffer_t * +t_base64_encode(enum base64_encode_flags flags, size_t max_line_len, + const void *src, size_t src_size) +{ + return t_base64_scheme_encode(&base64_scheme, flags, max_line_len, + src, src_size); +} + +static inline buffer_t * +t_base64_encode_str(enum base64_encode_flags flags, size_t max_line_len, + const char *src) +{ + return t_base64_scheme_encode(&base64_scheme, flags, max_line_len, + src, strlen(src)); +} + /* Translates base64 data into binary and appends it to dest buffer. See base64_scheme_decode(). @@ -314,6 +344,22 @@ base64url_encode(enum base64_encode_flags flags, size_t max_line_len, src, src_size, dest); } +static inline buffer_t * +t_base64url_encode(enum base64_encode_flags flags, size_t max_line_len, + const void *src, size_t src_size) +{ + return t_base64_scheme_encode(&base64url_scheme, flags, max_line_len, + src, src_size); +} + +static inline buffer_t * +t_base64url_encode_str(enum base64_encode_flags flags, size_t max_line_len, + const char *src) +{ + return t_base64_scheme_encode(&base64url_scheme, flags, max_line_len, + src, strlen(src)); +} + /* Translates base64url data into binary and appends it to dest buffer. See base64_scheme_decode(). */ static inline int