]> git.ipfire.org Git - thirdparty/bacula.git/commitdiff
new bin_to_base64_pad() that encode into base64 with padding
authorAlain Spineux <alain@baculasystems.com>
Wed, 21 Sep 2022 11:18:06 +0000 (13:18 +0200)
committerEric Bollengier <eric@baculasystems.com>
Thu, 14 Sep 2023 11:56:59 +0000 (13:56 +0200)
bacula/src/lib/base64.c
bacula/src/lib/protos.h

index 3bb9b26d40a5373bdc26ad92e8619f8d916c478f..14e2f7232a10664d74acda48ac652aabdfb6ecfa 100644 (file)
@@ -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
  *
index 59a4a863b121b702549b0aab53a093b91af8e295..e704078513b920cc32bbf2af7e298bf5a8a719d7 100644 (file)
@@ -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 */