From: Alain Spineux Date: Wed, 21 Sep 2022 11:18:06 +0000 (+0200) Subject: new bin_to_base64_pad() that encode into base64 with padding X-Git-Tag: Beta-15.0.0~408 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=31fba493a5c2274bed6d318f9667633404ace056;p=thirdparty%2Fbacula.git new bin_to_base64_pad() that encode into base64 with padding --- diff --git a/bacula/src/lib/base64.c b/bacula/src/lib/base64.c index 3bb9b26d4..14e2f7232 100644 --- a/bacula/src/lib/base64.c +++ b/bacula/src/lib/base64.c @@ -200,6 +200,19 @@ bin_to_base64(char *buf, int buflen, char *bin, int binlen, int compatible) return j; } +int bin_to_base64_pad(char *buf, int buflen, char *bin, int binlen) +{ + int l = bin_to_base64(buf, buflen, bin, binlen, true); + int n = 4 - l%4; /* add one or two '=' for padding */ + for (int i = 0; n < 3 && i < n; i++) { + if (l < buflen) { + buf[l++] = '='; + buf[l] = '\0'; + } + } + return l; +} + /* * Decode base64 encoded data * diff --git a/bacula/src/lib/protos.h b/bacula/src/lib/protos.h index 59a4a863b..e70407851 100644 --- a/bacula/src/lib/protos.h +++ b/bacula/src/lib/protos.h @@ -45,6 +45,7 @@ int to_base64 (int64_t value, char *where); int from_base64 (int64_t *value, char *where); int bin_to_base64 (char *buf, int buflen, char *bin, int binlen, int compatible); +int bin_to_base64_pad (char *buf, int buflen, char *bin, int binlen); int base64_to_bin(char *dest, int destlen, const char *src, int srclen); /* bjson.c */