]> git.stg.codes - stg.git/blobdiff - stglibs/crypto.lib/include/stg/bfstream.h
Added stream encryption/decryption.
[stg.git] / stglibs / crypto.lib / include / stg / bfstream.h
diff --git a/stglibs/crypto.lib/include/stg/bfstream.h b/stglibs/crypto.lib/include/stg/bfstream.h
new file mode 100644 (file)
index 0000000..41b4433
--- /dev/null
@@ -0,0 +1,42 @@
+#ifndef __STG_STGLIBS_BF_STREAM_H__
+#define __STG_STGLIBS_BF_STREAM_H__
+
+#include <string>
+#include <cstddef> // size_t
+
+namespace STG
+{
+
+class ENCRYPT_STREAM
+{
+    public:
+        typedef void (* CALLBACK)(const void * block, size_t size, void * data);
+
+        ENCRYPT_STREAM(const std::string & key, CALLBACK callback, void * data);
+        ~ENCRYPT_STREAM();
+        void Put(const void * data, size_t size, bool last = false);
+
+    private:
+        class IMPL;
+
+        IMPL * m_impl;
+};
+
+class DECRYPT_STREAM
+{
+    public:
+        typedef void (* CALLBACK)(const void * block, size_t size, void * data);
+
+        DECRYPT_STREAM(const std::string & key, CALLBACK callback, void * data);
+        ~DECRYPT_STREAM();
+        void Put(const void * data, size_t size, bool last = false);
+
+    private:
+        class IMPL;
+
+        IMPL * m_impl;
+};
+
+} // namespace STG
+
+#endif