Skip to content

Commit

Permalink
wip
Browse files Browse the repository at this point in the history
  • Loading branch information
fbeutin-ledger committed Aug 7, 2024
1 parent 265f9ef commit d8f0335
Showing 1 changed file with 132 additions and 2 deletions.
134 changes: 132 additions & 2 deletions test/python/apps/polkadot.py
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,126 @@ class SignP2Last:
0x00, 0x00, 0x00, 0x80,
0x00, 0x00, 0x00, 0x80])

MAX_CHUNK_SIZE = 250

# Example metadata
METADATA = b'6c000341000000030502082873705f72756e74696d65384d756c74695369676e\
6174757265011c45643235353139040016a1010148656432353531393a3a5369\
676e617475726500cd02082873705f72756e74696d65384d756c74695369676e\
6174757265011c53723235353139040016d1020148737232353531393a3a5369\
676e617475726504cd02082873705f72756e74696d65384d756c74695369676e\
617475726501144563647361040016d502014065636473613a3a5369676e6174\
75726508cd020c1c73705f636f72651c73723235353139245369676e61747572\
6500040016a50101205b75383b2036345dd1020c1c73705f636f726514656364\
7361245369676e6174757265000400160502017c5b75383b205349474e415455\
52455f53455249414c495a45445f53495a455dd50210306672616d655f737973\
74656d28657874656e73696f6e733c636865636b5f6d6f7274616c6974793843\
6865636b4d6f7274616c697479000400169506010c4572619106102873705f72\
756e74696d651c67656e657269630c6572610c4572610120496d6d6f7274616c\
0000950610306672616d655f73797374656d28657874656e73696f6e732c6368\
65636b5f6e6f6e636528436865636b4e6f6e6365000400110120543a3a4e6f6e\
63659906086870616c6c65745f7472616e73616374696f6e5f7061796d656e74\
604368617267655472616e73616374696f6e5061796d656e7400040013013042\
616c616e63654f663c543e9d0608746672616d655f6d657461646174615f6861\
73685f657874656e73696f6e44436865636b4d65746164617461486173680004\
01106d6f646516a50601104d6f6465a10608746672616d655f6d657461646174\
615f686173685f657874656e73696f6e104d6f6465011c456e61626c65640004\
a5060c1c73705f636f72651863727970746f2c4163636f756e74496433320004\
00160401205b75383b2033325d000003200000000304083c7072696d69746976\
655f74797065731048323536000400160401205b75383b2033325d0c00020310\
04184f7074696f6e0110536f6d65040016040004280003140000000360084070\
6f6c6b61646f745f72756e74696d652c52756e74696d6543616c6c012042616c\
616e636573040016210101b50173656c663a3a73705f6170695f68696464656e\
5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a686964\
64656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c65\
43616c6c466f723c42616c616e6365732c2052756e74696d653e14cc0c287370\
5f72756e74696d65306d756c746961646472657373304d756c74694164647265\
7373010849640400160001244163636f756e744964001d010c2873705f72756e\
74696d65306d756c746961646472657373304d756c7469416464726573730114\
496e64657804001501304163636f756e74496e646578041d010c2873705f7275\
6e74696d65306d756c746961646472657373304d756c74694164647265737301\
0c52617704001610011c5665633c75383e081d010c2873705f72756e74696d65\
306d756c746961646472657373304d756c746941646472657373012441646472\
65737333320400160401205b75383b2033325d0c1d010c2873705f72756e7469\
6d65306d756c746961646472657373304d756c74694164647265737301244164\
647265737332300400166001205b75383b2032305d101d010c3c70616c6c6574\
5f62616c616e6365731870616c6c65741043616c6c01507472616e736665725f\
616c6c6f775f646561746808011064657374161d0101504163636f756e744964\
4c6f6f6b75704f663c543e011476616c7565130128543a3a42616c616e636500\
21010c1c73705f636f72651c65643235353139245369676e6174757265000400\
16a50101205b75383b2036345da10100034000000003a5016c27080000a80800\
00a9080000aa080000ab080000ac080000e50b0000e60b0000e60c0000e70c00\
00e80c0000ea0c00007506000076060000780600007906000084060000b30600\
002107000078070000790700007a0700007b0700007c0700007d070000d10700\
00d2070000f0d91faeff13ea34cd1289e65c73516e265a5ef5f957b33f85a78a\
53123a67d5f9c98c6854e15285c36114e1dbb18eb1afd27ef0a07f0b068ddded\
3de8a0a1aa807e6aa2ebf86a4faade7b5bad4d15c56f80caa5ecaac247f46779\
b515de2414f61fac61ebba48d8659bffffc08b6d188b86d2ac7d36873c7fcdf9\
9028fdedb70fbb54bb1d5b1cf889275efd936a4b05571c0552ee6b2719843fbb\
d92af062b90fd020b78a85ef07211ec7d3e1d0fd4b412f281d78dcc71634ea3b\
449701e161ce22c9a759ee1628b3e9a29fa5f8c433e4f9bc51e4c30d4ccdf9ed\
a7f95d07280f8c8456bf1f359f5d3c076575c75d6283503da3bbc42b45e526af\
ad1aff4ebedef361e54470ba49e7a8eab5e179a1ef262ce94dd611a8fca4e27c\
52fed9808384596424dfaff8f8666f8d3a7a76f9ac7610bffeb256921719848b\
be34ada42e3e499aa1a05cc8e7944784eed134cfea025ed2d2c9fd463f7bdea3\
77f9856508f061432c8cfd0ab976f5f7aaf4976f2ebd222093224863bc1131fe\
367016b1a583669d41ff5571cc4c8dab7a03af9314e9e0498d00063fb0f54535\
447537660519397da7e7c071cfbaa2fc4133391869970de71a455c83718e52b4\
7fd801f058f4147c6d7f2349d2171ddc47b9d1d9a0007d35736d79a31c950b19\
216e8a444df4221431cb1955b43a56b26c80c738f0620d3a0072f2e4cd62043c\
411fa72b551ba558f4beea9edb9c2bbaa6c2bbd9aeab83d9047a89f2d664fc04\
fde2c2f430441558d114e34c8b589c3e7bde066c8c56b91aba3156bb5905a924\
8599307c7017a323594e537bb228a39b9de0df4ca0facb90cf7ea8bbfd0ff82a\
3339d51c2f23d2547ef9e2560b0584ecfc68224593da35fbc5e1916c9b3051c3\
2ff21738da885c2d74ccab62e40896ee49efa1f32274871fb4796b5e61267b39\
2d4db9993b84485d4761193309f7b6bdc4c3b10e8509837a29b5889a3fe637ec\
f774f6f57e897e292b9167faead948844f653c953ae06cac59930cb085495828\
3064d1aeb9bafe20b6f71c69b1cdeb0aaadf452dffcc3353d4eff613696d2792\
df127669d9bdbd40823c07596bdd1e495935bb6c1eef7d892072e08b4187f8d1\
d9628f130c25a33a67b8ee375917a7bfef6833130aeda694a5aca794c831a87f\
505c2a0502050e1c48bef1f0729d80b4065cdba938ef9dccb765324d97bce19d\
988731b3c5284d3a67726bc13436ce5a28aa2f6df53e7fcc322e9de5e7a57c48\
f1e0fa1278d344497dfba612626dde397df6083b375abdbe4b54a7ca04038f8e\
cb1cfa2b8001d3814e151905ab6499c76ccb290d3cc9fa2f41bd00139140b720\
6e31ff9d98e4beef1d1a2e20bbc4a225773b9327590503729e589420b1a75d86\
eaabff22d7ceb0a3bce7985ac4ce86e36c57c1716dc9c7e103b2ad5a424a8d0e\
86dfa17f9a07c02b324d207aa7db57748e03582b2b14252098b18ff936647f35\
737cb48bf547b6ff20823184c6209dc2adace5018e8a711801511ca777e64cd9\
25444219cf37d40c56c433f7d63769f9582530589a8e112a54127b269dd26c16\
d6665c9389b8dc10d88d42dbb05c9df62fd4d4f1ef3ed48d8f218ba84323b17e\
cdbb01c86b3d7ba8daae57d0da83717bb70f9cec739c5b1e1370a406db4c34d0\
f424befccfec9860dc716868c6c9d6c7fb900bae783b379a0037aca2d77760a9\
e01219f4899a0f42e0c50e0d67e31a30dc25d318a04a22cf00bb65e1f0a2e843\
2c9ca90933b69d043c5fb4b7ed952375643ae4889918cd3d29eeedc5ff001d42\
425a308034140e027d4b18944239aa7dbdcf64e6faf2a3d452982ba24b28c7f3\
fc7de9f99e7b6603d7f1e1e2c03f9ad10ffab2f383b74c33ba8b1cfbe5b7edd2\
4f6fa776ccf0a37a1d87bcacbcd6e5752149faa4da3f2667208e7c70a08d6aa2\
0911aab00a4cacc0f058acae0c9836d7106ce586976341ec3b5d9625a783952b\
2463c049f0707fc0e6a5cf8884cce54bbc9b654aad1781439db1581d0a4edb60\
822049d23fe5f456a4b0071b9d82e21b3fecf7acf7a2e5d7486daeeb7ef5aacb\
c2a2913312c05b5f02722591686609fac1829387906fba98c4e7f8275de5254a\
83927875402678c34c67acb5bc0a209b55768e68a5b106566467569f7de5ff84\
03fe5074b88889a9850cd3c8fcf1a7f4546358e40ff4f29373a776f97c216e6b\
232a2280b144a0ca1a82f16119266f8d3acd56c738c2298edd999f6b810e74c2\
86cdea2f5af88a75145707c161d9e7abad3aff1bd2b3b24302941960ae2647dd\
03562878ec82c46a94845231550df4cc68fc90dea150d869ec1fa070ae61dd16\
fec38e66014bc7f7cb14c4f1a75923f35f284467727486a7b4d5c70f467d5742\
6d4f3d703e5b451aa9777b003f394871e76f320b87267ce254816d9dd82c2ce5\
27c54c21a3ccceaec19d9bfe8b8d52c4408d174ba6a56144fc63f8147feb7c50\
2454929f57771c41c4d35b5cbdc2b3e9881e3078dddd5e7002f6339f94892d6b\
fe70f84bc3757b1147ec68adb8a244e0d073a318c3099088de29e3a58df10188\
278d32ff91f814fffa2df6718b2bad4c6a62589035e35a2cfd5312ab19494be6\
3b92f8db57c54b572b22bc69e54966e533d3a9e241bc3fe7aef39758201e94d3\
5efe7ba8a11f6f4ee3dc6b1d0e4fc2aa23f33c08d5916e5440797986cde5bc83\
e08693709c1404161d0116cc16cd022848436865636b4e6f6e5a65726f53656e\
646572151540436865636b5370656356657273696f6e150538436865636b5478\
56657273696f6e150530436865636b47656e6573697315160c38436865636b4d\
6f7274616c697479169106160c28436865636b4e6f6e6365169906152c436865\
636b5765696768741515604368617267655472616e73616374696f6e5061796d\
656e74169d06154850726576616c696461746541747465737473151544436865\
636b4d657461646174614861736816a1061628164a0f0020706f6c6b61646f74\
00000a0c444f54'


class PolkadotClient:
CLA = 0xF9
Expand Down Expand Up @@ -152,7 +272,17 @@ def perform_polkadot_transaction(self, address, send_amount) -> bytes:
message = DOT_PACKED_DERIVATION_PATH_SIGN_INIT
message += len(tx_blob).to_bytes(2, "little")
message += tx_blob
message += METADATA

# Send message to be signed
return self.client.exchange(self.CLA, ins=Command.SIGN_TX, p1=SignP1.LAST, p2=SignP2Last.ED25519, data=message)
message_splited = [message[x:x + MAX_CHUNK_SIZE] for x in range(0, len(message), MAX_CHUNK_SIZE)]
for index, chunk in enumerate(message_splited):
payload_type = SignP1.ADD
if index == 0:
payload_type = SignP1.INIT
elif index == len(message_splited) - 1:
payload_type = SignP1.LAST

response=self.client.exchange(self.CLA, ins=Command.SIGN_TX, p1=payload_type, p2=SignP2Last.ED25519, data=chunk)

# Send message to be signed
return response

0 comments on commit d8f0335

Please sign in to comment.