summaryrefslogtreecommitdiff
path: root/src/common/md5calc.hpp
diff options
context:
space:
mode:
authorBen Longbons <b.r.longbons@gmail.com>2012-08-30 16:16:25 -0700
committerBen Longbons <b.r.longbons@gmail.com>2012-08-30 17:03:31 -0700
commit41974ae5265fbc23a06f276f9e008d5dad020e0b (patch)
tree9d595215172e87e2d83b74f7bf3430b3040e780e /src/common/md5calc.hpp
parent21742909143df9159b2401c3e2a39cc0b2bad620 (diff)
downloadtmwa-41974ae5265fbc23a06f276f9e008d5dad020e0b.tar.gz
tmwa-41974ae5265fbc23a06f276f9e008d5dad020e0b.tar.bz2
tmwa-41974ae5265fbc23a06f276f9e008d5dad020e0b.tar.xz
tmwa-41974ae5265fbc23a06f276f9e008d5dad020e0b.zip
Rename files for C++ conversion. Does not compile.
After updating, you can remove these files, as shown in 'git status': Untracked files: (use "git add <file>..." to include in what will be committed) src/map/magic-interpreter-lexer.c src/map/magic-interpreter-parser.c src/map/magic-interpreter-parser.h
Diffstat (limited to 'src/common/md5calc.hpp')
-rw-r--r--src/common/md5calc.hpp64
1 files changed, 64 insertions, 0 deletions
diff --git a/src/common/md5calc.hpp b/src/common/md5calc.hpp
new file mode 100644
index 0000000..1dde2ed
--- /dev/null
+++ b/src/common/md5calc.hpp
@@ -0,0 +1,64 @@
+#ifndef MD5CALC_HPP
+#define MD5CALC_HPP
+
+#include "sanity.hpp"
+
+#include <netinet/in.h>
+
+#include <stdint.h> // uint32_t, uint8_t
+#include <stddef.h> // size_t
+#include <stdio.h> // FILE*
+
+/// The digest state - becomes the output
+typedef struct
+{
+ // classically named {A,B,C,D}
+ // but use an so we can index
+ uint32_t val[4];
+} MD5_state;
+typedef struct
+{
+ uint32_t data[16];
+} MD5_block;
+
+// 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, uint8_t out[0x10]);
+void MD5_to_str(MD5_state state, char out[0x21]);
+
+// Convenience
+MD5_state MD5_from_string(const char* msg, const size_t msglen);
+MD5_state MD5_from_cstring(const char* msg);
+MD5_state MD5_from_FILE(FILE* in);
+
+
+/// Output in ASCII - with lowercase hex digits, null-terminated
+// these may overlap safely
+static void MD5_String (const char *string, char output[33]) __attribute__((deprecated));
+static inline void MD5_String (const char *string, char output[33]) {
+ MD5_to_str(MD5_from_cstring(string), output);
+}
+/// Output in binary
+static void MD5_String2binary (const char *string, uint8_t output[16]) __attribute__((deprecated));
+static inline void MD5_String2binary (const char *string, uint8_t output[16]) {
+ MD5_to_bin(MD5_from_cstring(string), output);
+}
+
+// statically-allocated output
+// whoever wrote this fails basic understanding of
+const char *MD5_saltcrypt(const char *key, const char *salt);
+
+/// return some random characters (statically allocated)
+// Currently, returns a 5-char string
+const char *make_salt(void);
+
+/// check plaintext password against saved saltcrypt
+bool pass_ok(const char *password, const char *crypted);
+
+/// This returns an in_addr_t because it is configurable whether it gets called at all
+in_addr_t MD5_ip(char *secret, in_addr_t ip);
+
+#endif