From: Zooko O'Whielacronx Date: Fri, 30 Mar 2007 01:11:30 +0000 (-0700) Subject: hashutil: convenience methods for tagged and encoded hashes X-Git-Url: https://git.rkrishnan.org/components/com_hotproperty/css/status?a=commitdiff_plain;h=99a046ab51b4e7d7cf66000bc5dd551a913a3fe2;p=tahoe-lafs%2Ftahoe-lafs.git hashutil: convenience methods for tagged and encoded hashes In various cases, including Merkle Trees, it is useful to tag and encode the inputs to your secure hashes to prevent security flaws due to ambiguous meanings of hash values. --- diff --git a/src/allmydata/util/hashutil.py b/src/allmydata/util/hashutil.py new file mode 100644 index 00000000..ccadccf0 --- /dev/null +++ b/src/allmydata/util/hashutil.py @@ -0,0 +1,18 @@ +from allmydata.Crypto.Hash import SHA256 + +def netstring(s): + return "%d:%s," % (len(s), s,) + +def tagged_hash(tag, val): + s = SHA256.new() + s.update(netstring(tag)) + s.update(val) + return s.digest() + +def tagged_pair_hash(tag, val1, val2): + s = SHA256.new() + s.update(netstring(tag)) + s.update(netstring(val1)) + s.update(netstring(val2)) + return s.digest() +