]> git.ipfire.org Git - thirdparty/squid.git/blobdiff - include/base64.h
SourceFormat Enforcement
[thirdparty/squid.git] / include / base64.h
index 354a0687fd705922a5c1ed87011fbf34766103d9..f9cac49f077c0e4feb3673bf1e0348a1c3ef3040 100644 (file)
@@ -5,10 +5,46 @@
 extern "C" {
 #endif
 
-    extern char *base64_decode(const char *coded);
-    extern const char *base64_encode(const char *decoded);
+    // Decoding functions
+
+    /// Calculate the decoded length of a given nul-terminated encoded string.
+    /// NULL pointer and empty strings are accepted, result is zero.
+    /// Any return value <= zero means no decoded result can be produced.
+    extern int base64_decode_len(const char *encodedData);
+
+    /// Decode a base-64 encoded blob into a provided buffer.
+    /// Will not terminate the resulting string.
+    /// In-place decoding overlap is supported if result is equal or earlier that the source pointer.
+    ///
+    /// \return number of bytes filled in result.
+    extern int base64_decode(char *result, unsigned int result_max_size, const char *encoded);
+
+    // Encoding functions
+
+    /// Calculate the buffer size required to hold the encoded form of
+    /// a string of length 'decodedLen' including all terminator bytes.
+    extern int base64_encode_len(int decodedLen);
+
+    /// Base-64 encode a string into a given buffer.
+    /// Will not terminate the resulting string.
+    /// \return the number of bytes filled in result.
+    extern int base64_encode(char *result, int result_max_size, const char *data, int data_size);
+
+    /// Base-64 encode a string into a given buffer.
+    /// Will terminate the resulting string.
+    /// \return the number of bytes filled in result. Including the terminator.
+    extern int base64_encode_str(char *result, int result_max_size, const char *data, int data_size);
+
+    // Old encoder. Now a wrapper for the new. Takes a binary array of known length.
+    // Output is presented in a static buffer which will only remain valid until next call.
+    // Ensures a nul-terminated result. Will always return non-NULL.
     extern const char *base64_encode_bin(const char *data, int len);
 
+    // Old encoder. Now a wrapper for the new.
+    // Output is presented in a static buffer which will only remain valid until next call.
+    // Ensures a nul-terminated result. Will always return non-NULL.
+    extern const char *old_base64_encode(const char *decoded);
+
 #ifdef __cplusplus
 }
 #endif