def test_verify_remote_scroll(self): pyfs = opener.opendir(settings.config['fs_path']) signing_key = crypto.generate_signing_key() scroll_id = sha1_hexdigest s = scroll.RemoteScroll(pyfs, scroll_id, signing_key.verify_key.encode(crypto.HexEncoder)) s.get_verify_key = lambda y: signing_key.verify_key items = [] for i in range(10): item_hash = HASH(i) s.add(item_hash) items.append(item_hash) four, five = s.slice(4, 2) self.assertEqual(four, HASH(4)) self.assertEqual(five, HASH(5)) new_item_hash = HASH(i) new_state = HASH(s.state + new_item_hash) update = new_item_hash + new_state signed_update = signing_key.sign(update) self.assertEqual(s.verify_update(signed_update), update)
def test_verify_remote_scroll(self): pyfs = opener.opendir(settings.config['fs_path']) signing_key = crypto.generate_signing_key() scroll_id = sha1_hexdigest s = scroll.RemoteScroll( pyfs, scroll_id, signing_key.verify_key.encode(crypto.HexEncoder)) s.get_verify_key = lambda y: signing_key.verify_key items = [] for i in range(10): item_hash = bytes_hash_int(i) s.add(item_hash) items.append(item_hash) four, five = s.slice(4, 2) self.assertEqual(four, bytes_hash_int(4)) self.assertEqual(five, bytes_hash_int(5)) new_item_hash = bytes_hash_int(i) new_state = settings.HASH(s.state + new_item_hash) update = new_item_hash + new_state signed_update = signing_key.sign(update) self.assertEqual(s.verify_update(signed_update), update)
def generate(cls, pyfs): signing_key = crypto.generate_signing_key() key_fingerprint = signing_key.verify_key.encode(crypto.HexEncoder) pyfs.setcontents(cls.skey % key_fingerprint, signing_key.encode(crypto.RawEncoder)) pyfs.setcontents(cls.vkey % key_fingerprint, signing_key.verify_key.encode(crypto.RawEncoder)) return key_fingerprint