Skip to content

Commit f995ae3

Browse files
jonasnickdeadalnix
authored andcommitted
Allow initializing tagged sha256
Summary: This will be used by the schnorrsig module This is a partial backport of secp256k1 [[bitcoin-core/secp256k1#558 | PR558]] : bitcoin-core/secp256k1@eabd9bc Test Plan: ninja check-secp256k1 Reviewers: #bitcoin_abc, Fabien Reviewed By: #bitcoin_abc, Fabien Differential Revision: https://reviews.bitcoinabc.org/D7645
1 parent d796ee6 commit f995ae3

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

src/hash_impl.h

+13
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,19 @@ static void secp256k1_sha256_finalize(secp256k1_sha256 *hash, unsigned char *out
164164
memcpy(out32, (const unsigned char*)out, 32);
165165
}
166166

167+
/* Initializes a sha256 struct and writes the 64 byte string
168+
* SHA256(tag)||SHA256(tag) into it. */
169+
static void secp256k1_sha256_initialize_tagged(secp256k1_sha256 *hash, const unsigned char *tag, size_t taglen) {
170+
unsigned char buf[32];
171+
secp256k1_sha256_initialize(hash);
172+
secp256k1_sha256_write(hash, tag, taglen);
173+
secp256k1_sha256_finalize(hash, buf);
174+
175+
secp256k1_sha256_initialize(hash);
176+
secp256k1_sha256_write(hash, buf, 32);
177+
secp256k1_sha256_write(hash, buf, 32);
178+
}
179+
167180
static void secp256k1_hmac_sha256_initialize(secp256k1_hmac_sha256 *hash, const unsigned char *key, size_t keylen) {
168181
size_t n;
169182
unsigned char rkey[64];

0 commit comments

Comments
 (0)