aboutsummaryrefslogtreecommitdiff
path: root/xsig/src/base64.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'xsig/src/base64.hpp')
-rw-r--r--xsig/src/base64.hpp33
1 files changed, 33 insertions, 0 deletions
diff --git a/xsig/src/base64.hpp b/xsig/src/base64.hpp
new file mode 100644
index 0000000..70d4e40
--- /dev/null
+++ b/xsig/src/base64.hpp
@@ -0,0 +1,33 @@
+//Chris Xiong 2022
+//License: MPL-2.0
+#include <cstdint>
+#include <string>
+
+class Base64Encoder
+{
+private:
+ static const char *b64c;
+ uint8_t counter;
+ uint8_t rem;
+ std::string ret;
+public:
+ Base64Encoder();
+ void encode_data(const void *data, size_t len);
+ std::string finalize();
+};
+
+class Base64Decoder
+{
+private:
+ static const uint8_t b64v[];
+ size_t dlen;
+ bool invalid;
+ uint8_t rem;
+ uint8_t counter;
+ size_t bp;
+ std::string s;
+public:
+ Base64Decoder(std::string &&b);
+ size_t decoded_length();
+ size_t decode_data(const void *data, size_t len);
+};