mirror of
https://github.com/trezor/trezor-firmware.git
synced 2024-12-16 19:38:09 +00:00
76 lines
2.0 KiB
Python
76 lines
2.0 KiB
Python
from c0.storage import Storage as StorageC0
|
|
from c.storage import Storage as StorageC
|
|
from python.src.storage import Storage as StoragePy
|
|
|
|
from . import common
|
|
|
|
# Strings for testing ChaCha20 encryption.
|
|
chacha_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.",
|
|
]
|
|
|
|
|
|
def set_values(s):
|
|
s.set(0xBEEF, b"Hello")
|
|
s.set(0xCAFE, b"world! ")
|
|
s.set(0xDEAD, b"How\n")
|
|
s.change_pin(1, 1222)
|
|
s.set(0xAAAA, b"are")
|
|
s.set(0x0901, b"you?")
|
|
s.set(0x0902, b"Lorem")
|
|
s.set(0x0903, b"ipsum")
|
|
s.change_pin(1222, 199)
|
|
s.set(0xDEAD, b"A\n")
|
|
s.set(0xDEAD, b"AAAAAAAAAAA")
|
|
s.set(0x2200, b"BBBB")
|
|
for i, string in enumerate(chacha_strings):
|
|
s.set(0x0301 + i, string)
|
|
|
|
|
|
def check_values(s):
|
|
assert s.unlock(199)
|
|
assert s.get(0xAAAA) == b"are"
|
|
assert s.get(0x0901) == b"you?"
|
|
assert s.get(0x0902) == b"Lorem"
|
|
assert s.get(0x0903) == b"ipsum"
|
|
assert s.get(0xDEAD) == b"AAAAAAAAAAA"
|
|
assert s.get(0x2200) == b"BBBB"
|
|
for i, string in enumerate(chacha_strings):
|
|
assert s.get(0x0301 + i) == string
|
|
|
|
|
|
def test_upgrade():
|
|
sc0 = StorageC0()
|
|
sc0.init()
|
|
assert sc0.unlock(1)
|
|
set_values(sc0)
|
|
for _ in range(10):
|
|
assert not sc0.unlock(3)
|
|
|
|
sc1 = StorageC()
|
|
sc1._set_flash_buffer(sc0._get_flash_buffer())
|
|
sc1.init(common.test_uid)
|
|
assert sc1.get_pin_rem() == 6
|
|
check_values(sc1)
|
|
|
|
|
|
def test_python_set_sectors():
|
|
sp0 = StoragePy()
|
|
sp0.init(common.test_uid)
|
|
assert sp0.unlock(1)
|
|
set_values(sp0)
|
|
for _ in range(10):
|
|
assert not sp0.unlock(3)
|
|
assert sp0.get_pin_rem() == 6
|
|
|
|
sp1 = StoragePy()
|
|
sp1.nc._set_sectors(sp0._dump())
|
|
sp1.init(common.test_uid)
|
|
common.memory_equals(sp0, sp1)
|
|
|
|
assert sp1.get_pin_rem() == 6
|
|
check_values(sp1)
|