aboutsummaryrefslogtreecommitdiff
path: root/base64.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'base64.hpp')
-rw-r--r--base64.hpp34
1 files changed, 34 insertions, 0 deletions
diff --git a/base64.hpp b/base64.hpp
new file mode 100644
index 0000000..3534b75
--- /dev/null
+++ b/base64.hpp
@@ -0,0 +1,34 @@
+#include <cstdint>
+#include <string>
+
+std::string base64_encode(const void *data, size_t len);
+void* base64_decode(const std::string &s, size_t *rel);
+
+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);
+};