mirror of
https://github.com/trezor/trezor-firmware.git
synced 2024-11-17 21:22:10 +00:00
50 lines
1.2 KiB
Python
Executable File
50 lines
1.2 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
from hashlib import sha256
|
|
|
|
from c.storage import Storage as StorageC
|
|
from python.src.storage import Storage as StoragePy
|
|
|
|
|
|
def hash(data):
|
|
return sha256(data).hexdigest()[:16]
|
|
|
|
|
|
# Strings for testing ChaCha20 encryption.
|
|
test_strings = [
|
|
b"Short string.",
|
|
b"",
|
|
b"Although ChaCha20 is a stream cipher, it operates on blocks of 64 bytes. This string is over 152 bytes in length so that we test multi-block encryption.",
|
|
b"This string is exactly 64 bytes long, that is exactly one block.",
|
|
]
|
|
|
|
# Unique device ID for testing.
|
|
uid = b"\x67\xce\x6a\xe8\xf7\x9b\x73\x96\x83\x88\x21\x5e"
|
|
|
|
sc = StorageC()
|
|
sp = StoragePy()
|
|
a = []
|
|
|
|
for s in [sc, sp]:
|
|
print(s.__class__)
|
|
s.init(uid)
|
|
assert s.unlock(3) is False
|
|
assert s.unlock(1) is True
|
|
s.set(0xBEEF, b"hello")
|
|
s.set(0x03FE, b"world!")
|
|
s.set(0xBEEF, b"satoshi")
|
|
s.set(0xBEEF, b"Satoshi")
|
|
for value in test_strings:
|
|
s.set(0x0301, value)
|
|
assert s.get(0x0301) == value
|
|
d = s._dump()
|
|
print(d[0][:512].hex())
|
|
h = [hash(x) for x in d]
|
|
print(h)
|
|
a.append(h[0])
|
|
a.append(h[1])
|
|
print()
|
|
|
|
print("-------------")
|
|
print("Equals:", a[0] == a[2] and a[1] == a[3])
|