2024-11-15 12:55:14 +00:00
|
|
|
# flake8: noqa: F403,F405
|
2024-01-26 11:16:55 +00:00
|
|
|
from common import * # isort:skip
|
2016-04-12 16:09:23 +00:00
|
|
|
|
2016-04-15 19:13:27 +00:00
|
|
|
from trezor.crypto import hashlib
|
2016-04-12 16:09:23 +00:00
|
|
|
|
2017-12-16 01:11:26 +00:00
|
|
|
|
2016-04-12 16:09:23 +00:00
|
|
|
class TestCryptoSha256(unittest.TestCase):
|
|
|
|
|
|
|
|
# vectors from http://www.di-mgt.com.au/sha_testvectors.html
|
2017-12-16 00:24:40 +00:00
|
|
|
vectors = [
|
2023-06-28 10:46:29 +00:00
|
|
|
(b"", "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"),
|
|
|
|
(b"abc", "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad"),
|
|
|
|
(
|
|
|
|
b"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
|
|
|
|
"248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1",
|
|
|
|
),
|
|
|
|
(
|
|
|
|
b"abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu",
|
|
|
|
"cf5b16a778af8380036ce59e7b0492370b249b11e8f07a51afac45037afee9d1",
|
|
|
|
),
|
2017-12-16 00:24:40 +00:00
|
|
|
]
|
2016-04-13 18:13:22 +00:00
|
|
|
|
|
|
|
def test_digest(self):
|
2017-12-16 00:24:40 +00:00
|
|
|
for b, d in self.vectors:
|
|
|
|
self.assertEqual(hashlib.sha256(b).digest(), unhexlify(d))
|
2016-04-13 18:13:22 +00:00
|
|
|
|
|
|
|
def test_update(self):
|
2017-12-16 00:24:40 +00:00
|
|
|
for b, d in self.vectors:
|
|
|
|
x = hashlib.sha256()
|
|
|
|
x.update(b)
|
|
|
|
self.assertEqual(x.digest(), unhexlify(d))
|
2016-04-13 18:13:22 +00:00
|
|
|
|
2016-04-15 19:13:27 +00:00
|
|
|
x = hashlib.sha256()
|
2024-11-15 13:17:38 +00:00
|
|
|
for _ in range(1000000):
|
2023-06-28 10:46:29 +00:00
|
|
|
x.update(b"a")
|
|
|
|
self.assertEqual(
|
|
|
|
x.digest(),
|
|
|
|
unhexlify(
|
|
|
|
"cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0"
|
|
|
|
),
|
|
|
|
)
|
|
|
|
|
2024-11-15 13:17:38 +00:00
|
|
|
# x = hashlib.sha256()
|
|
|
|
# for i in range(16777216):
|
|
|
|
# x.update(b'abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmno')
|
|
|
|
# self.assertEqual(x.digest(), unhexlify('50e72a0e26442fe2552dc3938ac58658228c0cbfb1d2ca872ae435266fcd055e'))
|
2016-04-12 16:09:23 +00:00
|
|
|
|
2016-04-14 09:17:18 +00:00
|
|
|
def test_digest_multi(self):
|
2016-04-15 19:13:27 +00:00
|
|
|
x = hashlib.sha256()
|
2016-04-14 09:17:18 +00:00
|
|
|
d0 = x.digest()
|
|
|
|
d1 = x.digest()
|
|
|
|
d2 = x.digest()
|
|
|
|
self.assertEqual(d0, d1)
|
|
|
|
self.assertEqual(d0, d2)
|
|
|
|
|
2017-12-16 01:11:26 +00:00
|
|
|
|
2023-06-28 10:46:29 +00:00
|
|
|
if __name__ == "__main__":
|
2016-04-12 16:09:23 +00:00
|
|
|
unittest.main()
|