aboutsummaryrefslogtreecommitdiff
path: root/src/hash.cpp
diff options
context:
space:
mode:
authorPieter Wuille <pieter@wuille.net>2020-09-11 14:32:50 -0700
committerPieter Wuille <pieter@wuille.net>2020-10-12 02:06:32 -0700
commit9eb590894f15ff40806039bfd32972fbc260e30d (patch)
tree74ddd22d2750eb0de88176a108aa9a7ecc57fe6f /src/hash.cpp
parent450d2b23710ad296eede81339195376021ab5500 (diff)
Add TaggedHash function (BIP 340)
This adds the TaggedHash function as defined by BIP340 to the hash module, which is used in BIP340 and BIP341 to produce domain-separated hashes.
Diffstat (limited to 'src/hash.cpp')
-rw-r--r--src/hash.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/hash.cpp b/src/hash.cpp
index 83b90ae063..3657b38639 100644
--- a/src/hash.cpp
+++ b/src/hash.cpp
@@ -6,6 +6,7 @@
#include <crypto/common.h>
#include <crypto/hmac_sha512.h>
+#include <string>
inline uint32_t ROTL32(uint32_t x, int8_t r)
{
@@ -84,3 +85,12 @@ uint256 SHA256Uint256(const uint256& input)
CSHA256().Write(input.begin(), 32).Finalize(result.begin());
return result;
}
+
+CHashWriter TaggedHash(const std::string& tag)
+{
+ CHashWriter writer(SER_GETHASH, 0);
+ uint256 taghash;
+ CSHA256().Write((const unsigned char*)tag.data(), tag.size()).Finalize(taghash.begin());
+ writer << taghash << taghash;
+ return writer;
+}