summaryrefslogtreecommitdiffstats
path: root/comm/third_party/botan/src/lib/tls/tls_handshake_hash.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'comm/third_party/botan/src/lib/tls/tls_handshake_hash.cpp')
-rw-r--r--comm/third_party/botan/src/lib/tls/tls_handshake_hash.cpp34
1 files changed, 34 insertions, 0 deletions
diff --git a/comm/third_party/botan/src/lib/tls/tls_handshake_hash.cpp b/comm/third_party/botan/src/lib/tls/tls_handshake_hash.cpp
new file mode 100644
index 0000000000..a48251d06d
--- /dev/null
+++ b/comm/third_party/botan/src/lib/tls/tls_handshake_hash.cpp
@@ -0,0 +1,34 @@
+/*
+* TLS Handshake Hash
+* (C) 2004-2006,2011,2012 Jack Lloyd
+*
+* Botan is released under the Simplified BSD License (see license.txt)
+*/
+
+#include <botan/internal/tls_handshake_hash.h>
+#include <botan/hash.h>
+
+namespace Botan {
+
+namespace TLS {
+
+/**
+* Return a TLS Handshake Hash
+*/
+secure_vector<uint8_t> Handshake_Hash::final(Protocol_Version version,
+ const std::string& mac_algo) const
+ {
+ std::string hash_algo = mac_algo;
+ if(!version.supports_ciphersuite_specific_prf())
+ hash_algo = "Parallel(MD5,SHA-160)";
+ else if(mac_algo == "MD5" || mac_algo == "SHA-1")
+ hash_algo = "SHA-256";
+
+ std::unique_ptr<HashFunction> hash(HashFunction::create_or_throw(hash_algo));
+ hash->update(m_data);
+ return hash->final();
+ }
+
+}
+
+}