INNER CODE UNIT · Python
derive_key_for_idx
opentimestamps/opentimestamps-server · otsserver/calendar.py:34
def derive_key_for_idx(key, idx, bits=32):
"""Derive key for an index
Uses a binary tree so that parts of the tree can be efficiently revealed
later.
"""
if not bits:
return key
else:
key += b'\xff' if (idx >> bits-1) & 0b1 else b'\x00'
hashed_key = hashlib.sha256(key).digest()
return derive_key_for_idx(hashed_key, idx, bits - 1)
class Journal:
"""Append-only commitment storage
The journal exists simply to make sure we never lose a commitment.
"""