summaryrefslogtreecommitdiff
path: root/src/generic/md5.hpp
diff options
context:
space:
mode:
authorBen Longbons <b.r.longbons@gmail.com>2014-03-15 19:34:59 -0700
committerBen Longbons <b.r.longbons@gmail.com>2014-03-16 18:58:48 -0700
commitc812c92d1a1835f0bda783e709481188c8d92225 (patch)
treeb401ede48a088ad1aaed88fe3b997cd26ff7ae08 /src/generic/md5.hpp
parentde9ee1b9754af9d954487121947352f32d7ebb7e (diff)
downloadtmwa-c812c92d1a1835f0bda783e709481188c8d92225.tar.gz
tmwa-c812c92d1a1835f0bda783e709481188c8d92225.tar.bz2
tmwa-c812c92d1a1835f0bda783e709481188c8d92225.tar.xz
tmwa-c812c92d1a1835f0bda783e709481188c8d92225.zip
Clean up header organization
Diffstat (limited to 'src/generic/md5.hpp')
-rw-r--r--src/generic/md5.hpp44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/generic/md5.hpp b/src/generic/md5.hpp
new file mode 100644
index 0000000..ba1212a
--- /dev/null
+++ b/src/generic/md5.hpp
@@ -0,0 +1,44 @@
+#ifndef TMWA_GENERIC_MD5CALC_HPP
+#define TMWA_GENERIC_MD5CALC_HPP
+
+# include "../sanity.hpp"
+
+# include <netinet/in.h>
+
+# include <cstdint>
+# include <cstddef>
+# include <cstdio>
+
+# include <array>
+
+# include "../strings/fwd.hpp"
+# include "../strings/vstring.hpp"
+
+/// The digest state - becomes the output
+struct MD5_state
+{
+ // classically named {A,B,C,D}
+ // but use an array so we can index
+ uint32_t val[4];
+};
+struct MD5_block
+{
+ uint32_t data[16];
+};
+
+struct md5_binary : std::array<uint8_t, 0x10> {};
+struct md5_string : VString<0x20> {};
+struct SaltString : VString<5> {};
+
+// Implementation
+void MD5_init(MD5_state *state);
+void MD5_do_block(MD5_state *state, MD5_block block);
+
+// Output formatting
+void MD5_to_bin(MD5_state state, md5_binary& out);
+void MD5_to_str(MD5_state state, md5_string& out);
+
+// Convenience
+MD5_state MD5_from_string(XString msg);
+
+#endif // TMWA_GENERIC_MD5CALC_HPP