mirror of
https://github.com/trezor/trezor-firmware.git
synced 2025-02-24 05:12:02 +00:00
69 lines
5.0 KiB
Python
69 lines
5.0 KiB
Python
from common import *
|
|
|
|
from apps.zcash.orchard.crypto.sinsemilla import Sinsemilla
|
|
|
|
@unittest.skipUnless(not utils.BITCOIN_ONLY, "altcoin")
|
|
class TestZcashOrchardSinsemilla(unittest.TestCase):
|
|
def test_zcash_sinsemilla(self):
|
|
TEST_VECTORS = [
|
|
{
|
|
"msg": [],
|
|
"personal": "",
|
|
"hash_to_point": unhexlify("cbe12c93bf02e95257ae18fbb008611c654020094e905f256ce0a35454bb1c1c"),
|
|
},
|
|
{
|
|
"msg": [],
|
|
"personal": "test",
|
|
"hash_to_point": unhexlify("4fbdd41a50e0fa8f826fb264f0f4b1d89bb558ef1a4beb02a0ca509154c1653f"),
|
|
},
|
|
{
|
|
"msg": [0],
|
|
"personal": "",
|
|
"hash_to_point": unhexlify("19e3e9745b35f6386117d428f2868f3340f84eb6d5a12d267a4e1596fa2b9ba5"),
|
|
},
|
|
{
|
|
"msg": [1],
|
|
"personal": "",
|
|
"hash_to_point": unhexlify("2c61bcf32756be2a3f906ee517841efebc2870291d2c48da341522da4823b18a"),
|
|
},
|
|
{
|
|
"msg": [0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1],
|
|
"personal": "sinsemilla-trezor-test-4",
|
|
"hash_to_point": unhexlify("79b1ecf8ee86009c7f80b2b3b2e576857ee6f659289629e2335cb722ef23861f"),
|
|
},
|
|
{
|
|
"msg": [0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0],
|
|
"personal": "sinsemilla-trezor-test-5",
|
|
"hash_to_point": unhexlify("34f878ea0b1c2423c2a40ca331d505896d108ecc11938a497093d17236938397"),
|
|
},
|
|
{
|
|
"msg": [0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1],
|
|
"personal": "sinsemilla-trezor-test-6",
|
|
"hash_to_point": unhexlify("20fc91bd375da6493d68f4ce97e8b0375b2a8b4785ddf49039deb455af807d34"),
|
|
},
|
|
{
|
|
"msg": [0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0],
|
|
"personal": "sinsemilla-trezor-test-7",
|
|
"hash_to_point": unhexlify("3fd1e74811669a3243e66df938d0e59c21424ea08a7f344f923b84b5fbb75915"),
|
|
},
|
|
{
|
|
"msg": [0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1],
|
|
"personal": "sinsemilla-trezor-test-8",
|
|
"hash_to_point": unhexlify("9c953612f6064be1f2127e15bd18be4005fe6bc65f7bcbdc3c61b099b6949297"),
|
|
},
|
|
{
|
|
"msg": [1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1],
|
|
"personal": "sinsemilla-trezor-test-9",
|
|
"hash_to_point": unhexlify("39550273c01e1d6fa2eadf78a813f54a22c91dd9288ab658b2c2408e4be72b2e"),
|
|
},
|
|
]
|
|
for tv in TEST_VECTORS:
|
|
h = Sinsemilla.personalized_by(tv["personal"])
|
|
h.update(tv["msg"])
|
|
point = h.finalize()
|
|
self.assertEqual(point.to_bytes(), tv["hash_to_point"])
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|