|
|
|
@ -8,6 +8,7 @@ from apps.cardano.address import (
|
|
|
|
|
validate_full_path,
|
|
|
|
|
derive_address_and_node
|
|
|
|
|
)
|
|
|
|
|
from apps.cardano.seed import Keychain
|
|
|
|
|
from trezor.crypto import bip32
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -16,6 +17,9 @@ class TestCardanoAddress(unittest.TestCase):
|
|
|
|
|
mnemonic = "all all all all all all all all all all all all"
|
|
|
|
|
passphrase = ""
|
|
|
|
|
node = bip32.from_mnemonic_cardano(mnemonic, passphrase)
|
|
|
|
|
node.derive_cardano(0x80000000 | 44)
|
|
|
|
|
node.derive_cardano(0x80000000 | 1815)
|
|
|
|
|
keychain = Keychain([0x80000000 | 44, 0x80000000 | 1815], node)
|
|
|
|
|
|
|
|
|
|
addresses = [
|
|
|
|
|
"Ae2tdPwUPEZ98eHFwxSsPBDz73amioKpr58Vw85mP1tMkzq8siaftiejJ3j",
|
|
|
|
@ -25,7 +29,7 @@ class TestCardanoAddress(unittest.TestCase):
|
|
|
|
|
|
|
|
|
|
for i, expected in enumerate(addresses):
|
|
|
|
|
# 44'/1815'/0'/0/i'
|
|
|
|
|
address, _ = derive_address_and_node(node, [0x80000000 | 44, 0x80000000 | 1815, 0x80000000, 0, 0x80000000 + i])
|
|
|
|
|
address, _ = derive_address_and_node(keychain, [0x80000000 | 44, 0x80000000 | 1815, 0x80000000, 0, 0x80000000 + i])
|
|
|
|
|
self.assertEqual(expected, address)
|
|
|
|
|
|
|
|
|
|
nodes = [
|
|
|
|
@ -50,7 +54,7 @@ class TestCardanoAddress(unittest.TestCase):
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
for i, (priv, ext, pub, chain) in enumerate(nodes):
|
|
|
|
|
_, n = derive_address_and_node(node, [0x80000000 | 44, 0x80000000 | 1815, 0x80000000, 0, 0x80000000 + i])
|
|
|
|
|
_, n = derive_address_and_node(keychain, [0x80000000 | 44, 0x80000000 | 1815, 0x80000000, 0, 0x80000000 + i])
|
|
|
|
|
self.assertEqual(hexlify(n.private_key()), priv)
|
|
|
|
|
self.assertEqual(hexlify(n.private_key_ext()), ext)
|
|
|
|
|
self.assertEqual(hexlify(seed.remove_ed25519_prefix(n.public_key())), pub)
|
|
|
|
@ -60,6 +64,9 @@ class TestCardanoAddress(unittest.TestCase):
|
|
|
|
|
mnemonic = "all all all all all all all all all all all all"
|
|
|
|
|
passphrase = ""
|
|
|
|
|
node = bip32.from_mnemonic_cardano(mnemonic, passphrase)
|
|
|
|
|
node.derive_cardano(0x80000000 | 44)
|
|
|
|
|
node.derive_cardano(0x80000000 | 1815)
|
|
|
|
|
keychain = Keychain([0x80000000 | 44, 0x80000000 | 1815], node)
|
|
|
|
|
|
|
|
|
|
addresses = [
|
|
|
|
|
"Ae2tdPwUPEZ5YUb8sM3eS8JqKgrRLzhiu71crfuH2MFtqaYr5ACNRdsswsZ",
|
|
|
|
@ -69,7 +76,7 @@ class TestCardanoAddress(unittest.TestCase):
|
|
|
|
|
|
|
|
|
|
for i, expected in enumerate(addresses):
|
|
|
|
|
# 44'/1815'/0'/0/i
|
|
|
|
|
address, _ = derive_address_and_node(node, [0x80000000 | 44, 0x80000000 | 1815, 0x80000000, 0, i])
|
|
|
|
|
address, _ = derive_address_and_node(keychain, [0x80000000 | 44, 0x80000000 | 1815, 0x80000000, 0, i])
|
|
|
|
|
self.assertEqual(address, expected)
|
|
|
|
|
|
|
|
|
|
nodes = [
|
|
|
|
@ -94,7 +101,7 @@ class TestCardanoAddress(unittest.TestCase):
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
for i, (priv, ext, pub, chain) in enumerate(nodes):
|
|
|
|
|
_, n = derive_address_and_node(node, [0x80000000 | 44, 0x80000000 | 1815, 0x80000000, 0, i])
|
|
|
|
|
_, n = derive_address_and_node(keychain, [0x80000000 | 44, 0x80000000 | 1815, 0x80000000, 0, i])
|
|
|
|
|
self.assertEqual(hexlify(n.private_key()), priv)
|
|
|
|
|
self.assertEqual(hexlify(n.private_key_ext()), ext)
|
|
|
|
|
self.assertEqual(hexlify(seed.remove_ed25519_prefix(n.public_key())), pub)
|
|
|
|
@ -105,9 +112,12 @@ class TestCardanoAddress(unittest.TestCase):
|
|
|
|
|
mnemonic = "all all all all all all all all all all all all"
|
|
|
|
|
passphrase = ""
|
|
|
|
|
node = bip32.from_mnemonic_cardano(mnemonic, passphrase)
|
|
|
|
|
node.derive_cardano(0x80000000 | 44)
|
|
|
|
|
node.derive_cardano(0x80000000 | 1815)
|
|
|
|
|
keychain = Keychain([0x80000000 | 44, 0x80000000 | 1815], node)
|
|
|
|
|
|
|
|
|
|
# 44'/1815'
|
|
|
|
|
address, _ = derive_address_and_node(node, [0x80000000 | 44, 0x80000000 | 1815])
|
|
|
|
|
address, _ = derive_address_and_node(keychain, [0x80000000 | 44, 0x80000000 | 1815])
|
|
|
|
|
self.assertEqual(address, "Ae2tdPwUPEZ2FGHX3yCKPSbSgyuuTYgMxNq652zKopxT4TuWvEd8Utd92w3")
|
|
|
|
|
|
|
|
|
|
priv, ext, pub, chain = (
|
|
|
|
@ -117,7 +127,7 @@ class TestCardanoAddress(unittest.TestCase):
|
|
|
|
|
b"02ac67c59a8b0264724a635774ca2c242afa10d7ab70e2bf0a8f7d4bb10f1f7a"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
_, n = derive_address_and_node(node, [0x80000000 | 44, 0x80000000 | 1815])
|
|
|
|
|
_, n = derive_address_and_node(keychain, [0x80000000 | 44, 0x80000000 | 1815])
|
|
|
|
|
self.assertEqual(hexlify(n.private_key()), priv)
|
|
|
|
|
self.assertEqual(hexlify(n.private_key_ext()), ext)
|
|
|
|
|
self.assertEqual(hexlify(seed.remove_ed25519_prefix(n.public_key())), pub)
|
|
|
|
|