]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib: base64 - Add flags and max_line_size parameters to the new high-level encode...
authorStephan Bosch <stephan.bosch@open-xchange.com>
Wed, 28 Aug 2019 22:42:14 +0000 (00:42 +0200)
committerTimo Sirainen <timo.sirainen@open-xchange.com>
Thu, 29 Aug 2019 07:15:45 +0000 (10:15 +0300)
Cannot change the API of existing functions.

src/lib/base64.h
src/lib/test-base64.c

index 2debd420ad10f325dd4b342e519c4a655e1ae413..d965a69238306654e0f3d9620789effffd902e13 100644 (file)
@@ -199,11 +199,12 @@ int base64_decode_finish(struct base64_decoder *dec);
  */
 static inline void
 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 *dest)
 {
        struct base64_encoder enc;
 
-       base64_encode_init(&enc, b64, 0, 0);
+       base64_encode_init(&enc, b64, flags, max_line_len);
        base64_encode_more(&enc, src, src_size, NULL, dest);
        base64_encode_finish(&enc, dest);
 }
@@ -260,7 +261,7 @@ extern struct base64_scheme base64_scheme;
 static inline void
 base64_encode(const void *src, size_t src_size, buffer_t *dest)
 {
-       base64_scheme_encode(&base64_scheme, src, src_size, dest);
+       base64_scheme_encode(&base64_scheme, 0, 0, src, src_size, dest);
 }
 
 /* Translates base64 data into binary and appends it to dest buffer. See
@@ -306,9 +307,11 @@ extern struct base64_scheme base64url_scheme;
 
 /* Translates binary data into base64url. See base64_scheme_encode(). */
 static inline void
-base64url_encode(const void *src, size_t src_size, buffer_t *dest)
+base64url_encode(enum base64_encode_flags flags, size_t max_line_len,
+                const void *src, size_t src_size, buffer_t *dest)
 {
-       base64_scheme_encode(&base64url_scheme, src, src_size, dest);
+       base64_scheme_encode(&base64url_scheme, flags, max_line_len,
+                            src, src_size, dest);
 }
 
 /* Translates base64url data into binary and appends it to dest buffer. See
index 8e70d58ffd2a466d7beecb4b7ad03ca38e0d7d8e..534d23139a49ee775128684802f02904943075a5 100644 (file)
@@ -146,7 +146,8 @@ static void test_base64url_encode(void)
        str = t_str_new(256);
        for (i = 0; i < N_ELEMENTS(tests); i++) {
                str_truncate(str, 0);
-               base64url_encode(tests[i].input, strlen(tests[i].input), str);
+               base64url_encode(0, 0, tests[i].input, strlen(tests[i].input),
+                                str);
                test_assert_idx(strcmp(tests[i].output, str_c(str)) == 0, i);
                test_assert_idx(
                        str_len(str) == MAX_BASE64_ENCODED_SIZE(
@@ -233,7 +234,7 @@ static void test_base64url_random(void)
 
                str_truncate(str, 0);
                str_truncate(dest, 0);
-               base64url_encode(buf, max, str);
+               base64url_encode(0, 0, buf, max, str);
                test_assert_idx(base64url_decode(0, str_data(str), str_len(str),
                                                 dest) >= 0, i);
                test_assert_idx(str_len(dest) == max &&