summaryrefslogtreecommitdiffstats
path: root/src/uscxml/util/MD5.hpp
diff options
context:
space:
mode:
authorStefan Radomski <radomski@tk.informatik.tu-darmstadt.de>2013-11-16 00:10:51 (GMT)
committerStefan Radomski <radomski@tk.informatik.tu-darmstadt.de>2013-11-16 00:10:51 (GMT)
commitb92c2f64953e8aabbf3644dc03524de048764c6a (patch)
treefe0ad7b96fe45e8ec8c8f0d55652907751494e3b /src/uscxml/util/MD5.hpp
parentc60cc4c17191bc432e89af914dde700724633b38 (diff)
downloaduscxml-b92c2f64953e8aabbf3644dc03524de048764c6a.zip
uscxml-b92c2f64953e8aabbf3644dc03524de048764c6a.tar.gz
uscxml-b92c2f64953e8aabbf3644dc03524de048764c6a.tar.bz2
Have crypto available from C with C++ bindings via header only
Diffstat (limited to 'src/uscxml/util/MD5.hpp')
-rw-r--r--src/uscxml/util/MD5.hpp60
1 files changed, 60 insertions, 0 deletions
diff --git a/src/uscxml/util/MD5.hpp b/src/uscxml/util/MD5.hpp
new file mode 100644
index 0000000..4dae3b3
--- /dev/null
+++ b/src/uscxml/util/MD5.hpp
@@ -0,0 +1,60 @@
+/**
+ * @file
+ * @author 2012-2013 Stefan Radomski (stefan.radomski@cs.tu-darmstadt.de)
+ * @copyright Simplified BSD
+ *
+ * @cond
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the FreeBSD license as published by the FreeBSD
+ * project.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * You should have received a copy of the FreeBSD license along with this
+ * program. If not, see <http://www.opensource.org/licenses/bsd-license>.
+ * @endcond
+ */
+
+#ifndef MD5_HPP_70TU4G5T
+#define MD5_HPP_70TU4G5T
+
+extern "C" {
+#include "MD5.h"
+}
+
+#include <string.h>
+
+#include <iostream>
+#include <sstream>
+#include <iomanip>
+#include "uscxml/Common.h"
+
+namespace uscxml {
+
+ USCXML_API inline std::string md5(const char* data, size_t length) {
+ md5_state_t state;
+ md5_byte_t digest[16];
+
+ md5_init(&state);
+ md5_append(&state, (const md5_byte_t *)data, length);
+ md5_finish(&state, digest);
+
+ std::ostringstream ss;
+ ss << std::hex << std::uppercase << std::setfill( '0' );
+ for (int i = 0; i < 16; i++) {
+ ss << std::setw( 2 ) << (int)digest[i];
+ }
+
+ return ss.str();
+ }
+
+ USCXML_API inline std::string md5(const std::string& data) {
+ return md5(data.data(), data.size());
+ }
+
+}
+
+
+#endif /* end of include guard: MD5_HPP_70TU4G5T */