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)
downloadbitcoin-9eb590894f15ff40806039bfd32972fbc260e30d.tar.xz
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;
+}