summaryrefslogtreecommitdiffstats
path: root/src/uscxml/util/SHA1.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/SHA1.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/SHA1.hpp')
-rw-r--r--src/uscxml/util/SHA1.hpp56
1 files changed, 56 insertions, 0 deletions
diff --git a/src/uscxml/util/SHA1.hpp b/src/uscxml/util/SHA1.hpp
new file mode 100644
index 0000000..61df5db
--- /dev/null
+++ b/src/uscxml/util/SHA1.hpp
@@ -0,0 +1,56 @@
+/**
+ * @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 SHA1_HPP_XJADWV5G
+#define SHA1_HPP_XJADWV5G
+
+extern "C" {
+#include "SHA1.h"
+}
+
+#include <string.h>
+#include <iostream>
+#include <sstream>
+#include <iomanip>
+#include "uscxml/Common.h"
+
+namespace uscxml {
+ USCXML_API inline std::string sha1(const char* data, size_t length) {
+ SHA1Context sha;
+ SHA1Reset(&sha);
+ SHA1Input(&sha, (const unsigned char*)data, length);
+ if (!SHA1Result(&sha)) {
+ return "";
+ } else {
+ std::ostringstream ss;
+ ss << std::hex << std::uppercase << std::setfill( '0' );
+ for (int i = 0; i < 5; i++) {
+ ss << std::setw( 2 ) << sha.Message_Digest[i];
+ }
+
+ return ss.str();
+ }
+ }
+
+ USCXML_API inline std::string sha1(const std::string& data) {
+ return sha1(data.data(), data.size());
+ }
+}
+
+#endif /* end of include guard: SHA1_HPP_XJADWV5G */