+10
.cargo/config.toml
+10
.cargo/config.toml
+1
.gitignore
+1
.gitignore
···
1
+
target/
+1773
Cargo.lock
+1773
Cargo.lock
···
1
+
# This file is automatically @generated by Cargo.
2
+
# It is not intended for manual editing.
3
+
version = 4
4
+
5
+
[[package]]
6
+
name = "addr2line"
7
+
version = "0.24.2"
8
+
source = "registry+https://github.com/rust-lang/crates.io-index"
9
+
checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1"
10
+
dependencies = [
11
+
"gimli",
12
+
]
13
+
14
+
[[package]]
15
+
name = "adler2"
16
+
version = "2.0.0"
17
+
source = "registry+https://github.com/rust-lang/crates.io-index"
18
+
checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627"
19
+
20
+
[[package]]
21
+
name = "aho-corasick"
22
+
version = "1.1.3"
23
+
source = "registry+https://github.com/rust-lang/crates.io-index"
24
+
checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
25
+
dependencies = [
26
+
"memchr",
27
+
]
28
+
29
+
[[package]]
30
+
name = "anstream"
31
+
version = "0.6.19"
32
+
source = "registry+https://github.com/rust-lang/crates.io-index"
33
+
checksum = "301af1932e46185686725e0fad2f8f2aa7da69dd70bf6ecc44d6b703844a3933"
34
+
dependencies = [
35
+
"anstyle",
36
+
"anstyle-parse",
37
+
"anstyle-query",
38
+
"anstyle-wincon",
39
+
"colorchoice",
40
+
"is_terminal_polyfill",
41
+
"utf8parse",
42
+
]
43
+
44
+
[[package]]
45
+
name = "anstyle"
46
+
version = "1.0.11"
47
+
source = "registry+https://github.com/rust-lang/crates.io-index"
48
+
checksum = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd"
49
+
50
+
[[package]]
51
+
name = "anstyle-parse"
52
+
version = "0.2.7"
53
+
source = "registry+https://github.com/rust-lang/crates.io-index"
54
+
checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2"
55
+
dependencies = [
56
+
"utf8parse",
57
+
]
58
+
59
+
[[package]]
60
+
name = "anstyle-query"
61
+
version = "1.1.3"
62
+
source = "registry+https://github.com/rust-lang/crates.io-index"
63
+
checksum = "6c8bdeb6047d8983be085bab0ba1472e6dc604e7041dbf6fcd5e71523014fae9"
64
+
dependencies = [
65
+
"windows-sys 0.59.0",
66
+
]
67
+
68
+
[[package]]
69
+
name = "anstyle-wincon"
70
+
version = "3.0.9"
71
+
source = "registry+https://github.com/rust-lang/crates.io-index"
72
+
checksum = "403f75924867bb1033c59fbf0797484329750cfbe3c4325cd33127941fabc882"
73
+
dependencies = [
74
+
"anstyle",
75
+
"once_cell_polyfill",
76
+
"windows-sys 0.59.0",
77
+
]
78
+
79
+
[[package]]
80
+
name = "arrayref"
81
+
version = "0.3.9"
82
+
source = "registry+https://github.com/rust-lang/crates.io-index"
83
+
checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb"
84
+
85
+
[[package]]
86
+
name = "async-trait"
87
+
version = "0.1.88"
88
+
source = "registry+https://github.com/rust-lang/crates.io-index"
89
+
checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5"
90
+
dependencies = [
91
+
"proc-macro2",
92
+
"quote",
93
+
"syn",
94
+
]
95
+
96
+
[[package]]
97
+
name = "autocfg"
98
+
version = "1.4.0"
99
+
source = "registry+https://github.com/rust-lang/crates.io-index"
100
+
checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
101
+
102
+
[[package]]
103
+
name = "backtrace"
104
+
version = "0.3.75"
105
+
source = "registry+https://github.com/rust-lang/crates.io-index"
106
+
checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002"
107
+
dependencies = [
108
+
"addr2line",
109
+
"cfg-if",
110
+
"libc",
111
+
"miniz_oxide",
112
+
"object",
113
+
"rustc-demangle",
114
+
"windows-targets 0.52.6",
115
+
]
116
+
117
+
[[package]]
118
+
name = "base-x"
119
+
version = "0.2.11"
120
+
source = "registry+https://github.com/rust-lang/crates.io-index"
121
+
checksum = "4cbbc9d0964165b47557570cce6c952866c2678457aca742aafc9fb771d30270"
122
+
123
+
[[package]]
124
+
name = "base16ct"
125
+
version = "0.2.0"
126
+
source = "registry+https://github.com/rust-lang/crates.io-index"
127
+
checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf"
128
+
129
+
[[package]]
130
+
name = "base58"
131
+
version = "0.2.0"
132
+
source = "registry+https://github.com/rust-lang/crates.io-index"
133
+
checksum = "6107fe1be6682a68940da878d9e9f5e90ca5745b3dec9fd1bb393c8777d4f581"
134
+
135
+
[[package]]
136
+
name = "base64ct"
137
+
version = "1.8.0"
138
+
source = "registry+https://github.com/rust-lang/crates.io-index"
139
+
checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba"
140
+
141
+
[[package]]
142
+
name = "bip32"
143
+
version = "0.5.3"
144
+
source = "registry+https://github.com/rust-lang/crates.io-index"
145
+
checksum = "db40d3dfbeab4e031d78c844642fa0caa0b0db11ce1607ac9d2986dff1405c69"
146
+
dependencies = [
147
+
"bs58",
148
+
"hmac",
149
+
"k256",
150
+
"once_cell",
151
+
"pbkdf2",
152
+
"rand_core 0.6.4",
153
+
"ripemd",
154
+
"secp256k1",
155
+
"sha2",
156
+
"subtle",
157
+
"zeroize",
158
+
]
159
+
160
+
[[package]]
161
+
name = "bitflags"
162
+
version = "2.9.1"
163
+
source = "registry+https://github.com/rust-lang/crates.io-index"
164
+
checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967"
165
+
166
+
[[package]]
167
+
name = "block-buffer"
168
+
version = "0.10.4"
169
+
source = "registry+https://github.com/rust-lang/crates.io-index"
170
+
checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
171
+
dependencies = [
172
+
"generic-array",
173
+
]
174
+
175
+
[[package]]
176
+
name = "bs58"
177
+
version = "0.5.1"
178
+
source = "registry+https://github.com/rust-lang/crates.io-index"
179
+
checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4"
180
+
dependencies = [
181
+
"sha2",
182
+
]
183
+
184
+
[[package]]
185
+
name = "byteorder"
186
+
version = "1.5.0"
187
+
source = "registry+https://github.com/rust-lang/crates.io-index"
188
+
checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
189
+
190
+
[[package]]
191
+
name = "bytes"
192
+
version = "1.10.1"
193
+
source = "registry+https://github.com/rust-lang/crates.io-index"
194
+
checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a"
195
+
196
+
[[package]]
197
+
name = "cargo_toml"
198
+
version = "0.22.1"
199
+
source = "registry+https://github.com/rust-lang/crates.io-index"
200
+
checksum = "02260d489095346e5cafd04dea8e8cb54d1d74fcd759022a9b72986ebe9a1257"
201
+
dependencies = [
202
+
"serde",
203
+
"toml",
204
+
]
205
+
206
+
[[package]]
207
+
name = "cbor4ii"
208
+
version = "0.2.14"
209
+
source = "registry+https://github.com/rust-lang/crates.io-index"
210
+
checksum = "b544cf8c89359205f4f990d0e6f3828db42df85b5dac95d09157a250eb0749c4"
211
+
212
+
[[package]]
213
+
name = "cc"
214
+
version = "1.2.26"
215
+
source = "registry+https://github.com/rust-lang/crates.io-index"
216
+
checksum = "956a5e21988b87f372569b66183b78babf23ebc2e744b733e4350a752c4dafac"
217
+
dependencies = [
218
+
"shlex",
219
+
]
220
+
221
+
[[package]]
222
+
name = "cfg-if"
223
+
version = "1.0.0"
224
+
source = "registry+https://github.com/rust-lang/crates.io-index"
225
+
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
226
+
227
+
[[package]]
228
+
name = "cfg_aliases"
229
+
version = "0.2.1"
230
+
source = "registry+https://github.com/rust-lang/crates.io-index"
231
+
checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
232
+
233
+
[[package]]
234
+
name = "cid"
235
+
version = "0.11.1"
236
+
source = "git+https://github.com/edouardparis/rust-cid?branch=fix-dep-serde_bytes-features#d8aeda78e2dd4784dbea3086a6ca85fa88782d2d"
237
+
dependencies = [
238
+
"core2",
239
+
"multibase",
240
+
"multihash",
241
+
"serde",
242
+
"serde_bytes",
243
+
"unsigned-varint",
244
+
]
245
+
246
+
[[package]]
247
+
name = "clap"
248
+
version = "4.5.39"
249
+
source = "registry+https://github.com/rust-lang/crates.io-index"
250
+
checksum = "fd60e63e9be68e5fb56422e397cf9baddded06dae1d2e523401542383bc72a9f"
251
+
dependencies = [
252
+
"clap_builder",
253
+
"clap_derive",
254
+
]
255
+
256
+
[[package]]
257
+
name = "clap_builder"
258
+
version = "4.5.39"
259
+
source = "registry+https://github.com/rust-lang/crates.io-index"
260
+
checksum = "89cc6392a1f72bbeb820d71f32108f61fdaf18bc526e1d23954168a67759ef51"
261
+
dependencies = [
262
+
"anstream",
263
+
"anstyle",
264
+
"clap_lex",
265
+
"strsim",
266
+
]
267
+
268
+
[[package]]
269
+
name = "clap_derive"
270
+
version = "4.5.32"
271
+
source = "registry+https://github.com/rust-lang/crates.io-index"
272
+
checksum = "09176aae279615badda0765c0c0b3f6ed53f4709118af73cf4655d85d1530cd7"
273
+
dependencies = [
274
+
"heck",
275
+
"proc-macro2",
276
+
"quote",
277
+
"syn",
278
+
]
279
+
280
+
[[package]]
281
+
name = "clap_lex"
282
+
version = "0.7.4"
283
+
source = "registry+https://github.com/rust-lang/crates.io-index"
284
+
checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6"
285
+
286
+
[[package]]
287
+
name = "clipboard-win"
288
+
version = "5.4.0"
289
+
source = "registry+https://github.com/rust-lang/crates.io-index"
290
+
checksum = "15efe7a882b08f34e38556b14f2fb3daa98769d06c7f0c1b076dfd0d983bc892"
291
+
dependencies = [
292
+
"error-code",
293
+
]
294
+
295
+
[[package]]
296
+
name = "cobs"
297
+
version = "0.2.3"
298
+
source = "registry+https://github.com/rust-lang/crates.io-index"
299
+
checksum = "67ba02a97a2bd10f4b59b25c7973101c79642302776489e030cd13cdab09ed15"
300
+
301
+
[[package]]
302
+
name = "colorchoice"
303
+
version = "1.0.4"
304
+
source = "registry+https://github.com/rust-lang/crates.io-index"
305
+
checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75"
306
+
307
+
[[package]]
308
+
name = "common"
309
+
version = "0.1.0"
310
+
source = "git+https://github.com/LedgerHQ/vanadium#547d41b86a37827c01be47e928487611cd985ef2"
311
+
dependencies = [
312
+
"serde",
313
+
"serde_json",
314
+
"vanadium_macros",
315
+
]
316
+
317
+
[[package]]
318
+
name = "const-oid"
319
+
version = "0.9.6"
320
+
source = "registry+https://github.com/rust-lang/crates.io-index"
321
+
checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8"
322
+
323
+
[[package]]
324
+
name = "core2"
325
+
version = "0.4.0"
326
+
source = "registry+https://github.com/rust-lang/crates.io-index"
327
+
checksum = "b49ba7ef1ad6107f8824dbe97de947cbaac53c44e7f9756a1fba0d37c1eec505"
328
+
dependencies = [
329
+
"memchr",
330
+
]
331
+
332
+
[[package]]
333
+
name = "cpufeatures"
334
+
version = "0.2.17"
335
+
source = "registry+https://github.com/rust-lang/crates.io-index"
336
+
checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280"
337
+
dependencies = [
338
+
"libc",
339
+
]
340
+
341
+
[[package]]
342
+
name = "critical-section"
343
+
version = "1.2.0"
344
+
source = "registry+https://github.com/rust-lang/crates.io-index"
345
+
checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b"
346
+
347
+
[[package]]
348
+
name = "crypto-bigint"
349
+
version = "0.5.5"
350
+
source = "registry+https://github.com/rust-lang/crates.io-index"
351
+
checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76"
352
+
dependencies = [
353
+
"generic-array",
354
+
"rand_core 0.6.4",
355
+
"subtle",
356
+
"zeroize",
357
+
]
358
+
359
+
[[package]]
360
+
name = "crypto-common"
361
+
version = "0.1.6"
362
+
source = "registry+https://github.com/rust-lang/crates.io-index"
363
+
checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
364
+
dependencies = [
365
+
"generic-array",
366
+
"typenum",
367
+
]
368
+
369
+
[[package]]
370
+
name = "data-encoding"
371
+
version = "2.9.0"
372
+
source = "registry+https://github.com/rust-lang/crates.io-index"
373
+
checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476"
374
+
375
+
[[package]]
376
+
name = "data-encoding-macro"
377
+
version = "0.1.18"
378
+
source = "registry+https://github.com/rust-lang/crates.io-index"
379
+
checksum = "47ce6c96ea0102f01122a185683611bd5ac8d99e62bc59dd12e6bda344ee673d"
380
+
dependencies = [
381
+
"data-encoding",
382
+
"data-encoding-macro-internal",
383
+
]
384
+
385
+
[[package]]
386
+
name = "data-encoding-macro-internal"
387
+
version = "0.1.16"
388
+
source = "registry+https://github.com/rust-lang/crates.io-index"
389
+
checksum = "8d162beedaa69905488a8da94f5ac3edb4dd4788b732fadb7bd120b2625c1976"
390
+
dependencies = [
391
+
"data-encoding",
392
+
"syn",
393
+
]
394
+
395
+
[[package]]
396
+
name = "der"
397
+
version = "0.7.10"
398
+
source = "registry+https://github.com/rust-lang/crates.io-index"
399
+
checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb"
400
+
dependencies = [
401
+
"const-oid",
402
+
"zeroize",
403
+
]
404
+
405
+
[[package]]
406
+
name = "digest"
407
+
version = "0.10.7"
408
+
source = "registry+https://github.com/rust-lang/crates.io-index"
409
+
checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
410
+
dependencies = [
411
+
"block-buffer",
412
+
"const-oid",
413
+
"crypto-common",
414
+
"subtle",
415
+
]
416
+
417
+
[[package]]
418
+
name = "ecdsa"
419
+
version = "0.16.9"
420
+
source = "registry+https://github.com/rust-lang/crates.io-index"
421
+
checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca"
422
+
dependencies = [
423
+
"der",
424
+
"digest",
425
+
"elliptic-curve",
426
+
"rfc6979",
427
+
"signature",
428
+
"spki",
429
+
]
430
+
431
+
[[package]]
432
+
name = "elliptic-curve"
433
+
version = "0.13.8"
434
+
source = "registry+https://github.com/rust-lang/crates.io-index"
435
+
checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47"
436
+
dependencies = [
437
+
"base16ct",
438
+
"crypto-bigint",
439
+
"digest",
440
+
"ff",
441
+
"generic-array",
442
+
"group",
443
+
"pkcs8",
444
+
"rand_core 0.6.4",
445
+
"sec1",
446
+
"subtle",
447
+
"zeroize",
448
+
]
449
+
450
+
[[package]]
451
+
name = "embedded-alloc"
452
+
version = "0.5.1"
453
+
source = "registry+https://github.com/rust-lang/crates.io-index"
454
+
checksum = "ddae17915accbac2cfbc64ea0ae6e3b330e6ea124ba108dada63646fd3c6f815"
455
+
dependencies = [
456
+
"critical-section",
457
+
"linked_list_allocator",
458
+
]
459
+
460
+
[[package]]
461
+
name = "embedded-io"
462
+
version = "0.4.0"
463
+
source = "registry+https://github.com/rust-lang/crates.io-index"
464
+
checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced"
465
+
466
+
[[package]]
467
+
name = "embedded-io"
468
+
version = "0.6.1"
469
+
source = "registry+https://github.com/rust-lang/crates.io-index"
470
+
checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d"
471
+
472
+
[[package]]
473
+
name = "endian-type"
474
+
version = "0.1.2"
475
+
source = "registry+https://github.com/rust-lang/crates.io-index"
476
+
checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d"
477
+
478
+
[[package]]
479
+
name = "equivalent"
480
+
version = "1.0.2"
481
+
source = "registry+https://github.com/rust-lang/crates.io-index"
482
+
checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
483
+
484
+
[[package]]
485
+
name = "errno"
486
+
version = "0.3.12"
487
+
source = "registry+https://github.com/rust-lang/crates.io-index"
488
+
checksum = "cea14ef9355e3beab063703aa9dab15afd25f0667c341310c1e5274bb1d0da18"
489
+
dependencies = [
490
+
"libc",
491
+
"windows-sys 0.59.0",
492
+
]
493
+
494
+
[[package]]
495
+
name = "error-code"
496
+
version = "3.3.2"
497
+
source = "registry+https://github.com/rust-lang/crates.io-index"
498
+
checksum = "dea2df4cf52843e0452895c455a1a2cfbb842a1e7329671acf418fdc53ed4c59"
499
+
500
+
[[package]]
501
+
name = "fd-lock"
502
+
version = "4.0.4"
503
+
source = "registry+https://github.com/rust-lang/crates.io-index"
504
+
checksum = "0ce92ff622d6dadf7349484f42c93271a0d49b7cc4d466a936405bacbe10aa78"
505
+
dependencies = [
506
+
"cfg-if",
507
+
"rustix",
508
+
"windows-sys 0.59.0",
509
+
]
510
+
511
+
[[package]]
512
+
name = "ff"
513
+
version = "0.13.1"
514
+
source = "registry+https://github.com/rust-lang/crates.io-index"
515
+
checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393"
516
+
dependencies = [
517
+
"rand_core 0.6.4",
518
+
"subtle",
519
+
]
520
+
521
+
[[package]]
522
+
name = "generic-array"
523
+
version = "0.14.7"
524
+
source = "registry+https://github.com/rust-lang/crates.io-index"
525
+
checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
526
+
dependencies = [
527
+
"typenum",
528
+
"version_check",
529
+
"zeroize",
530
+
]
531
+
532
+
[[package]]
533
+
name = "getrandom"
534
+
version = "0.3.3"
535
+
source = "registry+https://github.com/rust-lang/crates.io-index"
536
+
checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4"
537
+
dependencies = [
538
+
"cfg-if",
539
+
"libc",
540
+
"r-efi",
541
+
"wasi 0.14.2+wasi-0.2.4",
542
+
]
543
+
544
+
[[package]]
545
+
name = "gimli"
546
+
version = "0.31.1"
547
+
source = "registry+https://github.com/rust-lang/crates.io-index"
548
+
checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f"
549
+
550
+
[[package]]
551
+
name = "goblin"
552
+
version = "0.8.2"
553
+
source = "registry+https://github.com/rust-lang/crates.io-index"
554
+
checksum = "1b363a30c165f666402fe6a3024d3bec7ebc898f96a4a23bd1c99f8dbf3f4f47"
555
+
dependencies = [
556
+
"log",
557
+
"plain",
558
+
"scroll",
559
+
]
560
+
561
+
[[package]]
562
+
name = "group"
563
+
version = "0.13.0"
564
+
source = "registry+https://github.com/rust-lang/crates.io-index"
565
+
checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63"
566
+
dependencies = [
567
+
"ff",
568
+
"rand_core 0.6.4",
569
+
"subtle",
570
+
]
571
+
572
+
[[package]]
573
+
name = "hashbrown"
574
+
version = "0.15.4"
575
+
source = "registry+https://github.com/rust-lang/crates.io-index"
576
+
checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5"
577
+
578
+
[[package]]
579
+
name = "heck"
580
+
version = "0.5.0"
581
+
source = "registry+https://github.com/rust-lang/crates.io-index"
582
+
checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
583
+
584
+
[[package]]
585
+
name = "hex"
586
+
version = "0.4.3"
587
+
source = "registry+https://github.com/rust-lang/crates.io-index"
588
+
checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
589
+
590
+
[[package]]
591
+
name = "hex-literal"
592
+
version = "0.4.1"
593
+
source = "registry+https://github.com/rust-lang/crates.io-index"
594
+
checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46"
595
+
596
+
[[package]]
597
+
name = "hidapi"
598
+
version = "2.6.3"
599
+
source = "registry+https://github.com/rust-lang/crates.io-index"
600
+
checksum = "03b876ecf37e86b359573c16c8366bc3eba52b689884a0fc42ba3f67203d2a8b"
601
+
dependencies = [
602
+
"cc",
603
+
"cfg-if",
604
+
"libc",
605
+
"pkg-config",
606
+
"windows-sys 0.48.0",
607
+
]
608
+
609
+
[[package]]
610
+
name = "hmac"
611
+
version = "0.12.1"
612
+
source = "registry+https://github.com/rust-lang/crates.io-index"
613
+
checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"
614
+
dependencies = [
615
+
"digest",
616
+
]
617
+
618
+
[[package]]
619
+
name = "home"
620
+
version = "0.5.11"
621
+
source = "registry+https://github.com/rust-lang/crates.io-index"
622
+
checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf"
623
+
dependencies = [
624
+
"windows-sys 0.59.0",
625
+
]
626
+
627
+
[[package]]
628
+
name = "indexmap"
629
+
version = "2.9.0"
630
+
source = "registry+https://github.com/rust-lang/crates.io-index"
631
+
checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e"
632
+
dependencies = [
633
+
"equivalent",
634
+
"hashbrown",
635
+
]
636
+
637
+
[[package]]
638
+
name = "ipld-core"
639
+
version = "0.4.2"
640
+
source = "registry+https://github.com/rust-lang/crates.io-index"
641
+
checksum = "104718b1cc124d92a6d01ca9c9258a7df311405debb3408c445a36452f9bf8db"
642
+
dependencies = [
643
+
"cid",
644
+
"serde",
645
+
"serde_bytes",
646
+
]
647
+
648
+
[[package]]
649
+
name = "is_terminal_polyfill"
650
+
version = "1.70.1"
651
+
source = "registry+https://github.com/rust-lang/crates.io-index"
652
+
checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf"
653
+
654
+
[[package]]
655
+
name = "itoa"
656
+
version = "1.0.15"
657
+
source = "registry+https://github.com/rust-lang/crates.io-index"
658
+
checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c"
659
+
660
+
[[package]]
661
+
name = "k256"
662
+
version = "0.13.4"
663
+
source = "registry+https://github.com/rust-lang/crates.io-index"
664
+
checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b"
665
+
dependencies = [
666
+
"cfg-if",
667
+
"ecdsa",
668
+
"elliptic-curve",
669
+
"sha2",
670
+
"signature",
671
+
]
672
+
673
+
[[package]]
674
+
name = "lazy_static"
675
+
version = "1.5.0"
676
+
source = "registry+https://github.com/rust-lang/crates.io-index"
677
+
checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
678
+
679
+
[[package]]
680
+
name = "ledger-apdu"
681
+
version = "0.11.0"
682
+
source = "registry+https://github.com/rust-lang/crates.io-index"
683
+
checksum = "c21ffd28d97c9252671ab2ebe7078c9fa860ff3c5a125039e174d25ec6872169"
684
+
dependencies = [
685
+
"arrayref",
686
+
"no-std-compat",
687
+
"snafu",
688
+
]
689
+
690
+
[[package]]
691
+
name = "ledger-transport"
692
+
version = "0.11.0"
693
+
source = "registry+https://github.com/rust-lang/crates.io-index"
694
+
checksum = "c2f18de77d956a030dbc5869ced47d404bbd641216ef2f9dce7ca90833ca64ff"
695
+
dependencies = [
696
+
"async-trait",
697
+
"ledger-apdu",
698
+
]
699
+
700
+
[[package]]
701
+
name = "ledger-transport-hid"
702
+
version = "0.11.0"
703
+
source = "registry+https://github.com/rust-lang/crates.io-index"
704
+
checksum = "a4e34341e2708fbf805a9ada44ef6182170c6464c4fc068ab801abb7562fd5e8"
705
+
dependencies = [
706
+
"byteorder",
707
+
"cfg-if",
708
+
"hex",
709
+
"hidapi",
710
+
"ledger-transport",
711
+
"libc",
712
+
"log",
713
+
"thiserror",
714
+
]
715
+
716
+
[[package]]
717
+
name = "libc"
718
+
version = "0.2.172"
719
+
source = "registry+https://github.com/rust-lang/crates.io-index"
720
+
checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa"
721
+
722
+
[[package]]
723
+
name = "linked_list_allocator"
724
+
version = "0.10.5"
725
+
source = "registry+https://github.com/rust-lang/crates.io-index"
726
+
checksum = "9afa463f5405ee81cdb9cc2baf37e08ec7e4c8209442b5d72c04cfb2cd6e6286"
727
+
728
+
[[package]]
729
+
name = "linux-raw-sys"
730
+
version = "0.9.4"
731
+
source = "registry+https://github.com/rust-lang/crates.io-index"
732
+
checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12"
733
+
734
+
[[package]]
735
+
name = "log"
736
+
version = "0.4.27"
737
+
source = "registry+https://github.com/rust-lang/crates.io-index"
738
+
checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94"
739
+
740
+
[[package]]
741
+
name = "memchr"
742
+
version = "2.7.4"
743
+
source = "registry+https://github.com/rust-lang/crates.io-index"
744
+
checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
745
+
746
+
[[package]]
747
+
name = "miniz_oxide"
748
+
version = "0.8.8"
749
+
source = "registry+https://github.com/rust-lang/crates.io-index"
750
+
checksum = "3be647b768db090acb35d5ec5db2b0e1f1de11133ca123b9eacf5137868f892a"
751
+
dependencies = [
752
+
"adler2",
753
+
]
754
+
755
+
[[package]]
756
+
name = "mio"
757
+
version = "1.0.4"
758
+
source = "registry+https://github.com/rust-lang/crates.io-index"
759
+
checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c"
760
+
dependencies = [
761
+
"libc",
762
+
"wasi 0.11.0+wasi-snapshot-preview1",
763
+
"windows-sys 0.59.0",
764
+
]
765
+
766
+
[[package]]
767
+
name = "multibase"
768
+
version = "0.9.1"
769
+
source = "registry+https://github.com/rust-lang/crates.io-index"
770
+
checksum = "9b3539ec3c1f04ac9748a260728e855f261b4977f5c3406612c884564f329404"
771
+
dependencies = [
772
+
"base-x",
773
+
"data-encoding",
774
+
"data-encoding-macro",
775
+
]
776
+
777
+
[[package]]
778
+
name = "multihash"
779
+
version = "0.19.3"
780
+
source = "registry+https://github.com/rust-lang/crates.io-index"
781
+
checksum = "6b430e7953c29dd6a09afc29ff0bb69c6e306329ee6794700aee27b76a1aea8d"
782
+
dependencies = [
783
+
"core2",
784
+
"serde",
785
+
"unsigned-varint",
786
+
]
787
+
788
+
[[package]]
789
+
name = "nibble_vec"
790
+
version = "0.1.0"
791
+
source = "registry+https://github.com/rust-lang/crates.io-index"
792
+
checksum = "77a5d83df9f36fe23f0c3648c6bbb8b0298bb5f1939c8f2704431371f4b84d43"
793
+
dependencies = [
794
+
"smallvec",
795
+
]
796
+
797
+
[[package]]
798
+
name = "nix"
799
+
version = "0.29.0"
800
+
source = "registry+https://github.com/rust-lang/crates.io-index"
801
+
checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46"
802
+
dependencies = [
803
+
"bitflags",
804
+
"cfg-if",
805
+
"cfg_aliases",
806
+
"libc",
807
+
]
808
+
809
+
[[package]]
810
+
name = "no-std-compat"
811
+
version = "0.4.1"
812
+
source = "registry+https://github.com/rust-lang/crates.io-index"
813
+
checksum = "b93853da6d84c2e3c7d730d6473e8817692dd89be387eb01b94d7f108ecb5b8c"
814
+
815
+
[[package]]
816
+
name = "num-bigint"
817
+
version = "0.4.6"
818
+
source = "registry+https://github.com/rust-lang/crates.io-index"
819
+
checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9"
820
+
dependencies = [
821
+
"num-integer",
822
+
"num-traits",
823
+
]
824
+
825
+
[[package]]
826
+
name = "num-integer"
827
+
version = "0.1.46"
828
+
source = "registry+https://github.com/rust-lang/crates.io-index"
829
+
checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f"
830
+
dependencies = [
831
+
"num-traits",
832
+
]
833
+
834
+
[[package]]
835
+
name = "num-traits"
836
+
version = "0.2.19"
837
+
source = "registry+https://github.com/rust-lang/crates.io-index"
838
+
checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
839
+
dependencies = [
840
+
"autocfg",
841
+
]
842
+
843
+
[[package]]
844
+
name = "object"
845
+
version = "0.36.7"
846
+
source = "registry+https://github.com/rust-lang/crates.io-index"
847
+
checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87"
848
+
dependencies = [
849
+
"memchr",
850
+
]
851
+
852
+
[[package]]
853
+
name = "once_cell"
854
+
version = "1.21.3"
855
+
source = "registry+https://github.com/rust-lang/crates.io-index"
856
+
checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
857
+
858
+
[[package]]
859
+
name = "once_cell_polyfill"
860
+
version = "1.70.1"
861
+
source = "registry+https://github.com/rust-lang/crates.io-index"
862
+
checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad"
863
+
864
+
[[package]]
865
+
name = "pbkdf2"
866
+
version = "0.12.2"
867
+
source = "registry+https://github.com/rust-lang/crates.io-index"
868
+
checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2"
869
+
dependencies = [
870
+
"digest",
871
+
"hmac",
872
+
]
873
+
874
+
[[package]]
875
+
name = "pin-project-lite"
876
+
version = "0.2.16"
877
+
source = "registry+https://github.com/rust-lang/crates.io-index"
878
+
checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b"
879
+
880
+
[[package]]
881
+
name = "pkcs8"
882
+
version = "0.10.2"
883
+
source = "registry+https://github.com/rust-lang/crates.io-index"
884
+
checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7"
885
+
dependencies = [
886
+
"der",
887
+
"spki",
888
+
]
889
+
890
+
[[package]]
891
+
name = "pkg-config"
892
+
version = "0.3.32"
893
+
source = "registry+https://github.com/rust-lang/crates.io-index"
894
+
checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c"
895
+
896
+
[[package]]
897
+
name = "plain"
898
+
version = "0.2.3"
899
+
source = "registry+https://github.com/rust-lang/crates.io-index"
900
+
checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6"
901
+
902
+
[[package]]
903
+
name = "postcard"
904
+
version = "1.1.1"
905
+
source = "registry+https://github.com/rust-lang/crates.io-index"
906
+
checksum = "170a2601f67cc9dba8edd8c4870b15f71a6a2dc196daec8c83f72b59dff628a8"
907
+
dependencies = [
908
+
"cobs",
909
+
"embedded-io 0.4.0",
910
+
"embedded-io 0.6.1",
911
+
"serde",
912
+
]
913
+
914
+
[[package]]
915
+
name = "ppv-lite86"
916
+
version = "0.2.21"
917
+
source = "registry+https://github.com/rust-lang/crates.io-index"
918
+
checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"
919
+
dependencies = [
920
+
"zerocopy",
921
+
]
922
+
923
+
[[package]]
924
+
name = "proc-macro-error-attr2"
925
+
version = "2.0.0"
926
+
source = "registry+https://github.com/rust-lang/crates.io-index"
927
+
checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5"
928
+
dependencies = [
929
+
"proc-macro2",
930
+
"quote",
931
+
]
932
+
933
+
[[package]]
934
+
name = "proc-macro-error2"
935
+
version = "2.0.1"
936
+
source = "registry+https://github.com/rust-lang/crates.io-index"
937
+
checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802"
938
+
dependencies = [
939
+
"proc-macro-error-attr2",
940
+
"proc-macro2",
941
+
"quote",
942
+
]
943
+
944
+
[[package]]
945
+
name = "proc-macro2"
946
+
version = "1.0.95"
947
+
source = "registry+https://github.com/rust-lang/crates.io-index"
948
+
checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778"
949
+
dependencies = [
950
+
"unicode-ident",
951
+
]
952
+
953
+
[[package]]
954
+
name = "quote"
955
+
version = "1.0.40"
956
+
source = "registry+https://github.com/rust-lang/crates.io-index"
957
+
checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d"
958
+
dependencies = [
959
+
"proc-macro2",
960
+
]
961
+
962
+
[[package]]
963
+
name = "r-efi"
964
+
version = "5.2.0"
965
+
source = "registry+https://github.com/rust-lang/crates.io-index"
966
+
checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5"
967
+
968
+
[[package]]
969
+
name = "radix_trie"
970
+
version = "0.2.1"
971
+
source = "registry+https://github.com/rust-lang/crates.io-index"
972
+
checksum = "c069c179fcdc6a2fe24d8d18305cf085fdbd4f922c041943e203685d6a1c58fd"
973
+
dependencies = [
974
+
"endian-type",
975
+
"nibble_vec",
976
+
]
977
+
978
+
[[package]]
979
+
name = "rand"
980
+
version = "0.9.1"
981
+
source = "registry+https://github.com/rust-lang/crates.io-index"
982
+
checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97"
983
+
dependencies = [
984
+
"rand_chacha",
985
+
"rand_core 0.9.3",
986
+
]
987
+
988
+
[[package]]
989
+
name = "rand_chacha"
990
+
version = "0.9.0"
991
+
source = "registry+https://github.com/rust-lang/crates.io-index"
992
+
checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb"
993
+
dependencies = [
994
+
"ppv-lite86",
995
+
"rand_core 0.9.3",
996
+
]
997
+
998
+
[[package]]
999
+
name = "rand_core"
1000
+
version = "0.6.4"
1001
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1002
+
checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
1003
+
1004
+
[[package]]
1005
+
name = "rand_core"
1006
+
version = "0.9.3"
1007
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1008
+
checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38"
1009
+
dependencies = [
1010
+
"getrandom",
1011
+
]
1012
+
1013
+
[[package]]
1014
+
name = "regex"
1015
+
version = "1.11.1"
1016
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1017
+
checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191"
1018
+
dependencies = [
1019
+
"aho-corasick",
1020
+
"memchr",
1021
+
"regex-automata",
1022
+
"regex-syntax",
1023
+
]
1024
+
1025
+
[[package]]
1026
+
name = "regex-automata"
1027
+
version = "0.4.9"
1028
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1029
+
checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908"
1030
+
dependencies = [
1031
+
"aho-corasick",
1032
+
"memchr",
1033
+
"regex-syntax",
1034
+
]
1035
+
1036
+
[[package]]
1037
+
name = "regex-syntax"
1038
+
version = "0.8.5"
1039
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1040
+
checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
1041
+
1042
+
[[package]]
1043
+
name = "rfc6979"
1044
+
version = "0.4.0"
1045
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1046
+
checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2"
1047
+
dependencies = [
1048
+
"hmac",
1049
+
"subtle",
1050
+
]
1051
+
1052
+
[[package]]
1053
+
name = "ripemd"
1054
+
version = "0.1.3"
1055
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1056
+
checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f"
1057
+
dependencies = [
1058
+
"digest",
1059
+
]
1060
+
1061
+
[[package]]
1062
+
name = "rustc-demangle"
1063
+
version = "0.1.24"
1064
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1065
+
checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f"
1066
+
1067
+
[[package]]
1068
+
name = "rustix"
1069
+
version = "1.0.7"
1070
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1071
+
checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266"
1072
+
dependencies = [
1073
+
"bitflags",
1074
+
"errno",
1075
+
"libc",
1076
+
"linux-raw-sys",
1077
+
"windows-sys 0.59.0",
1078
+
]
1079
+
1080
+
[[package]]
1081
+
name = "rustyline"
1082
+
version = "15.0.0"
1083
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1084
+
checksum = "2ee1e066dc922e513bda599c6ccb5f3bb2b0ea5870a579448f2622993f0a9a2f"
1085
+
dependencies = [
1086
+
"bitflags",
1087
+
"cfg-if",
1088
+
"clipboard-win",
1089
+
"fd-lock",
1090
+
"home",
1091
+
"libc",
1092
+
"log",
1093
+
"memchr",
1094
+
"nix",
1095
+
"radix_trie",
1096
+
"unicode-segmentation",
1097
+
"unicode-width",
1098
+
"utf8parse",
1099
+
"windows-sys 0.59.0",
1100
+
]
1101
+
1102
+
[[package]]
1103
+
name = "ryu"
1104
+
version = "1.0.20"
1105
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1106
+
checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f"
1107
+
1108
+
[[package]]
1109
+
name = "scopeguard"
1110
+
version = "1.2.0"
1111
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1112
+
checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
1113
+
1114
+
[[package]]
1115
+
name = "scroll"
1116
+
version = "0.12.0"
1117
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1118
+
checksum = "6ab8598aa408498679922eff7fa985c25d58a90771bd6be794434c5277eab1a6"
1119
+
dependencies = [
1120
+
"scroll_derive",
1121
+
]
1122
+
1123
+
[[package]]
1124
+
name = "scroll_derive"
1125
+
version = "0.12.1"
1126
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1127
+
checksum = "1783eabc414609e28a5ba76aee5ddd52199f7107a0b24c2e9746a1ecc34a683d"
1128
+
dependencies = [
1129
+
"proc-macro2",
1130
+
"quote",
1131
+
"syn",
1132
+
]
1133
+
1134
+
[[package]]
1135
+
name = "sec1"
1136
+
version = "0.7.3"
1137
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1138
+
checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc"
1139
+
dependencies = [
1140
+
"base16ct",
1141
+
"der",
1142
+
"generic-array",
1143
+
"pkcs8",
1144
+
"subtle",
1145
+
"zeroize",
1146
+
]
1147
+
1148
+
[[package]]
1149
+
name = "secp256k1"
1150
+
version = "0.27.0"
1151
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1152
+
checksum = "25996b82292a7a57ed3508f052cfff8640d38d32018784acd714758b43da9c8f"
1153
+
dependencies = [
1154
+
"secp256k1-sys",
1155
+
]
1156
+
1157
+
[[package]]
1158
+
name = "secp256k1-sys"
1159
+
version = "0.8.1"
1160
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1161
+
checksum = "70a129b9e9efbfb223753b9163c4ab3b13cff7fd9c7f010fbac25ab4099fa07e"
1162
+
dependencies = [
1163
+
"cc",
1164
+
]
1165
+
1166
+
[[package]]
1167
+
name = "serde"
1168
+
version = "1.0.219"
1169
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1170
+
checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6"
1171
+
dependencies = [
1172
+
"serde_derive",
1173
+
]
1174
+
1175
+
[[package]]
1176
+
name = "serde_bytes"
1177
+
version = "0.11.17"
1178
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1179
+
checksum = "8437fd221bde2d4ca316d61b90e337e9e702b3820b87d63caa9ba6c02bd06d96"
1180
+
dependencies = [
1181
+
"serde",
1182
+
]
1183
+
1184
+
[[package]]
1185
+
name = "serde_derive"
1186
+
version = "1.0.219"
1187
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1188
+
checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00"
1189
+
dependencies = [
1190
+
"proc-macro2",
1191
+
"quote",
1192
+
"syn",
1193
+
]
1194
+
1195
+
[[package]]
1196
+
name = "serde_ipld_dagcbor"
1197
+
version = "0.6.3"
1198
+
source = "git+http://github.com/edouardparis/serde_ipld_dagcbor?branch=scopeguard-no-default-features#82eca93ee126750ad80feedbfe9cee0bf162c587"
1199
+
dependencies = [
1200
+
"cbor4ii",
1201
+
"ipld-core",
1202
+
"scopeguard",
1203
+
"serde",
1204
+
]
1205
+
1206
+
[[package]]
1207
+
name = "serde_json"
1208
+
version = "1.0.140"
1209
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1210
+
checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373"
1211
+
dependencies = [
1212
+
"itoa",
1213
+
"memchr",
1214
+
"ryu",
1215
+
"serde",
1216
+
]
1217
+
1218
+
[[package]]
1219
+
name = "serde_spanned"
1220
+
version = "0.6.9"
1221
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1222
+
checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3"
1223
+
dependencies = [
1224
+
"serde",
1225
+
]
1226
+
1227
+
[[package]]
1228
+
name = "sha2"
1229
+
version = "0.10.9"
1230
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1231
+
checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283"
1232
+
dependencies = [
1233
+
"cfg-if",
1234
+
"cpufeatures",
1235
+
"digest",
1236
+
]
1237
+
1238
+
[[package]]
1239
+
name = "shellwords"
1240
+
version = "1.1.0"
1241
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1242
+
checksum = "89e515aa4699a88148ed5ef96413ceef0048ce95b43fbc955a33bde0a70fcae6"
1243
+
dependencies = [
1244
+
"lazy_static",
1245
+
"regex",
1246
+
]
1247
+
1248
+
[[package]]
1249
+
name = "shlex"
1250
+
version = "1.3.0"
1251
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1252
+
checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
1253
+
1254
+
[[package]]
1255
+
name = "signal-hook-registry"
1256
+
version = "1.4.5"
1257
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1258
+
checksum = "9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410"
1259
+
dependencies = [
1260
+
"libc",
1261
+
]
1262
+
1263
+
[[package]]
1264
+
name = "signature"
1265
+
version = "2.2.0"
1266
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1267
+
checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de"
1268
+
dependencies = [
1269
+
"digest",
1270
+
"rand_core 0.6.4",
1271
+
]
1272
+
1273
+
[[package]]
1274
+
name = "smallvec"
1275
+
version = "1.15.1"
1276
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1277
+
checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03"
1278
+
1279
+
[[package]]
1280
+
name = "snafu"
1281
+
version = "0.8.6"
1282
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1283
+
checksum = "320b01e011bf8d5d7a4a4a4be966d9160968935849c83b918827f6a435e7f627"
1284
+
dependencies = [
1285
+
"snafu-derive",
1286
+
]
1287
+
1288
+
[[package]]
1289
+
name = "snafu-derive"
1290
+
version = "0.8.6"
1291
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1292
+
checksum = "1961e2ef424c1424204d3a5d6975f934f56b6d50ff5732382d84ebf460e147f7"
1293
+
dependencies = [
1294
+
"heck",
1295
+
"proc-macro2",
1296
+
"quote",
1297
+
"syn",
1298
+
]
1299
+
1300
+
[[package]]
1301
+
name = "socket2"
1302
+
version = "0.5.10"
1303
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1304
+
checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678"
1305
+
dependencies = [
1306
+
"libc",
1307
+
"windows-sys 0.52.0",
1308
+
]
1309
+
1310
+
[[package]]
1311
+
name = "spki"
1312
+
version = "0.7.3"
1313
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1314
+
checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d"
1315
+
dependencies = [
1316
+
"base64ct",
1317
+
"der",
1318
+
]
1319
+
1320
+
[[package]]
1321
+
name = "strsim"
1322
+
version = "0.11.1"
1323
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1324
+
checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
1325
+
1326
+
[[package]]
1327
+
name = "subtle"
1328
+
version = "2.6.1"
1329
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1330
+
checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
1331
+
1332
+
[[package]]
1333
+
name = "syn"
1334
+
version = "2.0.101"
1335
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1336
+
checksum = "8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf"
1337
+
dependencies = [
1338
+
"proc-macro2",
1339
+
"quote",
1340
+
"unicode-ident",
1341
+
]
1342
+
1343
+
[[package]]
1344
+
name = "thiserror"
1345
+
version = "1.0.69"
1346
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1347
+
checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
1348
+
dependencies = [
1349
+
"thiserror-impl",
1350
+
]
1351
+
1352
+
[[package]]
1353
+
name = "thiserror-impl"
1354
+
version = "1.0.69"
1355
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1356
+
checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
1357
+
dependencies = [
1358
+
"proc-macro2",
1359
+
"quote",
1360
+
"syn",
1361
+
]
1362
+
1363
+
[[package]]
1364
+
name = "tokio"
1365
+
version = "1.45.1"
1366
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1367
+
checksum = "75ef51a33ef1da925cea3e4eb122833cb377c61439ca401b770f54902b806779"
1368
+
dependencies = [
1369
+
"backtrace",
1370
+
"bytes",
1371
+
"libc",
1372
+
"mio",
1373
+
"pin-project-lite",
1374
+
"signal-hook-registry",
1375
+
"socket2",
1376
+
"tokio-macros",
1377
+
"windows-sys 0.52.0",
1378
+
]
1379
+
1380
+
[[package]]
1381
+
name = "tokio-macros"
1382
+
version = "2.5.0"
1383
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1384
+
checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8"
1385
+
dependencies = [
1386
+
"proc-macro2",
1387
+
"quote",
1388
+
"syn",
1389
+
]
1390
+
1391
+
[[package]]
1392
+
name = "toml"
1393
+
version = "0.8.23"
1394
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1395
+
checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362"
1396
+
dependencies = [
1397
+
"serde",
1398
+
"serde_spanned",
1399
+
"toml_datetime",
1400
+
"toml_edit",
1401
+
]
1402
+
1403
+
[[package]]
1404
+
name = "toml_datetime"
1405
+
version = "0.6.11"
1406
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1407
+
checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c"
1408
+
dependencies = [
1409
+
"serde",
1410
+
]
1411
+
1412
+
[[package]]
1413
+
name = "toml_edit"
1414
+
version = "0.22.27"
1415
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1416
+
checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a"
1417
+
dependencies = [
1418
+
"indexmap",
1419
+
"serde",
1420
+
"serde_spanned",
1421
+
"toml_datetime",
1422
+
"toml_write",
1423
+
"winnow",
1424
+
]
1425
+
1426
+
[[package]]
1427
+
name = "toml_write"
1428
+
version = "0.1.2"
1429
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1430
+
checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801"
1431
+
1432
+
[[package]]
1433
+
name = "typenum"
1434
+
version = "1.18.0"
1435
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1436
+
checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f"
1437
+
1438
+
[[package]]
1439
+
name = "unicode-ident"
1440
+
version = "1.0.18"
1441
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1442
+
checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512"
1443
+
1444
+
[[package]]
1445
+
name = "unicode-segmentation"
1446
+
version = "1.12.0"
1447
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1448
+
checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493"
1449
+
1450
+
[[package]]
1451
+
name = "unicode-width"
1452
+
version = "0.2.0"
1453
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1454
+
checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd"
1455
+
1456
+
[[package]]
1457
+
name = "unsigned-varint"
1458
+
version = "0.8.0"
1459
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1460
+
checksum = "eb066959b24b5196ae73cb057f45598450d2c5f71460e98c49b738086eff9c06"
1461
+
1462
+
[[package]]
1463
+
name = "utf8parse"
1464
+
version = "0.2.2"
1465
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1466
+
checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
1467
+
1468
+
[[package]]
1469
+
name = "vanadium-app-sdk"
1470
+
version = "0.1.0"
1471
+
source = "git+https://github.com/LedgerHQ/vanadium#547d41b86a37827c01be47e928487611cd985ef2"
1472
+
dependencies = [
1473
+
"bip32",
1474
+
"common",
1475
+
"critical-section",
1476
+
"embedded-alloc",
1477
+
"hex",
1478
+
"hex-literal",
1479
+
"k256",
1480
+
"lazy_static",
1481
+
"num-bigint",
1482
+
"num-traits",
1483
+
"rand",
1484
+
"ripemd",
1485
+
"sha2",
1486
+
"subtle",
1487
+
"zeroize",
1488
+
]
1489
+
1490
+
[[package]]
1491
+
name = "vanadium-client-sdk"
1492
+
version = "0.1.0"
1493
+
source = "git+https://github.com/LedgerHQ/vanadium#547d41b86a37827c01be47e928487611cd985ef2"
1494
+
dependencies = [
1495
+
"async-trait",
1496
+
"cargo_toml",
1497
+
"common",
1498
+
"goblin",
1499
+
"hex",
1500
+
"hidapi",
1501
+
"ledger-apdu",
1502
+
"ledger-transport-hid",
1503
+
"postcard",
1504
+
"sha2",
1505
+
"tokio",
1506
+
]
1507
+
1508
+
[[package]]
1509
+
name = "vanadium_macros"
1510
+
version = "0.1.0"
1511
+
source = "git+https://github.com/LedgerHQ/vanadium#547d41b86a37827c01be47e928487611cd985ef2"
1512
+
dependencies = [
1513
+
"proc-macro-error2",
1514
+
"proc-macro2",
1515
+
"quote",
1516
+
"syn",
1517
+
]
1518
+
1519
+
[[package]]
1520
+
name = "version_check"
1521
+
version = "0.9.5"
1522
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1523
+
checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
1524
+
1525
+
[[package]]
1526
+
name = "vnd-atproto"
1527
+
version = "0.0.1"
1528
+
dependencies = [
1529
+
"base58",
1530
+
"hex-literal",
1531
+
"serde",
1532
+
"serde_ipld_dagcbor",
1533
+
"vanadium-app-sdk",
1534
+
"vnd-atproto-common",
1535
+
]
1536
+
1537
+
[[package]]
1538
+
name = "vnd-atproto-cli"
1539
+
version = "0.0.1"
1540
+
dependencies = [
1541
+
"base58",
1542
+
"clap",
1543
+
"hidapi",
1544
+
"ledger-transport-hid",
1545
+
"rustyline",
1546
+
"serde",
1547
+
"shellwords",
1548
+
"tokio",
1549
+
"vnd-atproto-client",
1550
+
]
1551
+
1552
+
[[package]]
1553
+
name = "vnd-atproto-client"
1554
+
version = "0.0.1"
1555
+
dependencies = [
1556
+
"serde_ipld_dagcbor",
1557
+
"vanadium-client-sdk",
1558
+
"vnd-atproto-common",
1559
+
]
1560
+
1561
+
[[package]]
1562
+
name = "vnd-atproto-common"
1563
+
version = "0.0.1"
1564
+
dependencies = [
1565
+
"serde",
1566
+
]
1567
+
1568
+
[[package]]
1569
+
name = "wasi"
1570
+
version = "0.11.0+wasi-snapshot-preview1"
1571
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1572
+
checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
1573
+
1574
+
[[package]]
1575
+
name = "wasi"
1576
+
version = "0.14.2+wasi-0.2.4"
1577
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1578
+
checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3"
1579
+
dependencies = [
1580
+
"wit-bindgen-rt",
1581
+
]
1582
+
1583
+
[[package]]
1584
+
name = "windows-sys"
1585
+
version = "0.48.0"
1586
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1587
+
checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
1588
+
dependencies = [
1589
+
"windows-targets 0.48.5",
1590
+
]
1591
+
1592
+
[[package]]
1593
+
name = "windows-sys"
1594
+
version = "0.52.0"
1595
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1596
+
checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
1597
+
dependencies = [
1598
+
"windows-targets 0.52.6",
1599
+
]
1600
+
1601
+
[[package]]
1602
+
name = "windows-sys"
1603
+
version = "0.59.0"
1604
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1605
+
checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
1606
+
dependencies = [
1607
+
"windows-targets 0.52.6",
1608
+
]
1609
+
1610
+
[[package]]
1611
+
name = "windows-targets"
1612
+
version = "0.48.5"
1613
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1614
+
checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
1615
+
dependencies = [
1616
+
"windows_aarch64_gnullvm 0.48.5",
1617
+
"windows_aarch64_msvc 0.48.5",
1618
+
"windows_i686_gnu 0.48.5",
1619
+
"windows_i686_msvc 0.48.5",
1620
+
"windows_x86_64_gnu 0.48.5",
1621
+
"windows_x86_64_gnullvm 0.48.5",
1622
+
"windows_x86_64_msvc 0.48.5",
1623
+
]
1624
+
1625
+
[[package]]
1626
+
name = "windows-targets"
1627
+
version = "0.52.6"
1628
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1629
+
checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
1630
+
dependencies = [
1631
+
"windows_aarch64_gnullvm 0.52.6",
1632
+
"windows_aarch64_msvc 0.52.6",
1633
+
"windows_i686_gnu 0.52.6",
1634
+
"windows_i686_gnullvm",
1635
+
"windows_i686_msvc 0.52.6",
1636
+
"windows_x86_64_gnu 0.52.6",
1637
+
"windows_x86_64_gnullvm 0.52.6",
1638
+
"windows_x86_64_msvc 0.52.6",
1639
+
]
1640
+
1641
+
[[package]]
1642
+
name = "windows_aarch64_gnullvm"
1643
+
version = "0.48.5"
1644
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1645
+
checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
1646
+
1647
+
[[package]]
1648
+
name = "windows_aarch64_gnullvm"
1649
+
version = "0.52.6"
1650
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1651
+
checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
1652
+
1653
+
[[package]]
1654
+
name = "windows_aarch64_msvc"
1655
+
version = "0.48.5"
1656
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1657
+
checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
1658
+
1659
+
[[package]]
1660
+
name = "windows_aarch64_msvc"
1661
+
version = "0.52.6"
1662
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1663
+
checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
1664
+
1665
+
[[package]]
1666
+
name = "windows_i686_gnu"
1667
+
version = "0.48.5"
1668
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1669
+
checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
1670
+
1671
+
[[package]]
1672
+
name = "windows_i686_gnu"
1673
+
version = "0.52.6"
1674
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1675
+
checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
1676
+
1677
+
[[package]]
1678
+
name = "windows_i686_gnullvm"
1679
+
version = "0.52.6"
1680
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1681
+
checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
1682
+
1683
+
[[package]]
1684
+
name = "windows_i686_msvc"
1685
+
version = "0.48.5"
1686
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1687
+
checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
1688
+
1689
+
[[package]]
1690
+
name = "windows_i686_msvc"
1691
+
version = "0.52.6"
1692
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1693
+
checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
1694
+
1695
+
[[package]]
1696
+
name = "windows_x86_64_gnu"
1697
+
version = "0.48.5"
1698
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1699
+
checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
1700
+
1701
+
[[package]]
1702
+
name = "windows_x86_64_gnu"
1703
+
version = "0.52.6"
1704
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1705
+
checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
1706
+
1707
+
[[package]]
1708
+
name = "windows_x86_64_gnullvm"
1709
+
version = "0.48.5"
1710
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1711
+
checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
1712
+
1713
+
[[package]]
1714
+
name = "windows_x86_64_gnullvm"
1715
+
version = "0.52.6"
1716
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1717
+
checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
1718
+
1719
+
[[package]]
1720
+
name = "windows_x86_64_msvc"
1721
+
version = "0.48.5"
1722
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1723
+
checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
1724
+
1725
+
[[package]]
1726
+
name = "windows_x86_64_msvc"
1727
+
version = "0.52.6"
1728
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1729
+
checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
1730
+
1731
+
[[package]]
1732
+
name = "winnow"
1733
+
version = "0.7.10"
1734
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1735
+
checksum = "c06928c8748d81b05c9be96aad92e1b6ff01833332f281e8cfca3be4b35fc9ec"
1736
+
dependencies = [
1737
+
"memchr",
1738
+
]
1739
+
1740
+
[[package]]
1741
+
name = "wit-bindgen-rt"
1742
+
version = "0.39.0"
1743
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1744
+
checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1"
1745
+
dependencies = [
1746
+
"bitflags",
1747
+
]
1748
+
1749
+
[[package]]
1750
+
name = "zerocopy"
1751
+
version = "0.8.25"
1752
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1753
+
checksum = "a1702d9583232ddb9174e01bb7c15a2ab8fb1bc6f227aa1233858c351a3ba0cb"
1754
+
dependencies = [
1755
+
"zerocopy-derive",
1756
+
]
1757
+
1758
+
[[package]]
1759
+
name = "zerocopy-derive"
1760
+
version = "0.8.25"
1761
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1762
+
checksum = "28a6e20d751156648aa063f3800b706ee209a32c0b4d9f24be3d980b01be55ef"
1763
+
dependencies = [
1764
+
"proc-macro2",
1765
+
"quote",
1766
+
"syn",
1767
+
]
1768
+
1769
+
[[package]]
1770
+
name = "zeroize"
1771
+
version = "1.8.1"
1772
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1773
+
checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde"
+32
Cargo.toml
+32
Cargo.toml
···
1
+
[package]
2
+
name = "vnd-atproto"
3
+
version = "0.0.1"
4
+
authors = ["Edouard Paris <m@edouard.paris>"]
5
+
edition = "2024"
6
+
description = "Vanadium app for atproto plc"
7
+
8
+
[package.metadata.vapp]
9
+
name = "Atproto"
10
+
stack_size = 65536
11
+
12
+
[dependencies]
13
+
serde_ipld_dagcbor = { git = "http://github.com/edouardparis/serde_ipld_dagcbor", branch = "scopeguard-no-default-features", default-features = false }
14
+
sdk = { package = "vanadium-app-sdk", git = "https://github.com/LedgerHQ/vanadium"}
15
+
common = { package = "vnd-atproto-common", path = "common" }
16
+
base58 = "0.2.0"
17
+
serde = { version = "1.0", default-features = false, features = ["alloc"] }
18
+
19
+
[patch.crates-io]
20
+
cid = { git = "https://github.com/edouardparis/rust-cid", branch = "fix-dep-serde_bytes-features" }
21
+
22
+
[dev-dependencies]
23
+
hex-literal = "0.4.1"
24
+
25
+
[workspace]
26
+
resolver = "2"
27
+
members = [
28
+
".",
29
+
"common",
30
+
"client",
31
+
"cli",
32
+
]
+4
README.md
+4
README.md
+16
cli/Cargo.toml
+16
cli/Cargo.toml
···
1
+
[package]
2
+
name = "vnd-atproto-cli"
3
+
version = "0.0.1"
4
+
edition = "2021"
5
+
6
+
[dependencies]
7
+
base58 = "0.2.0"
8
+
client = { package = "vnd-atproto-client", path = "../client"}
9
+
clap = { version = "4.5.31", features = ["derive"] }
10
+
rustyline = "15.0.0"
11
+
shellwords = "1.1.0"
12
+
hidapi = "2.6.3"
13
+
ledger-transport-hid = "0.11.0"
14
+
serde = { version = "1.0", default-features = false, features = ["alloc", "derive"] }
15
+
tokio = { version = "1.38.1", features = ["io-util", "macros", "net", "rt", "rt-multi-thread", "sync"] }
16
+
+11
cli/history.txt
+11
cli/history.txt
+287
cli/src/main.rs
+287
cli/src/main.rs
···
1
+
use base58::ToBase58;
2
+
use clap::{CommandFactory, Parser, Subcommand};
3
+
use rustyline::completion::{Completer, Pair};
4
+
use rustyline::error::ReadlineError;
5
+
use rustyline::highlight::{CmdKind, Highlighter};
6
+
use rustyline::hint::Hinter;
7
+
use rustyline::validate::{ValidationContext, ValidationResult, Validator};
8
+
use rustyline::{Context, Editor, Helper};
9
+
10
+
use hidapi::HidApi;
11
+
use ledger_transport_hid::TransportNativeHID;
12
+
13
+
use client::{
14
+
transport::{Transport, TransportHID, TransportTcp, TransportWrapper},
15
+
vanadium_client::{NativeAppClient, VanadiumAppClient},
16
+
AtprotoAppClient,
17
+
};
18
+
19
+
use std::borrow::Cow;
20
+
use std::sync::Arc;
21
+
22
+
#[derive(Parser, Debug)]
23
+
#[command(name = "vnd-bitcoin-cli")]
24
+
struct Cli {
25
+
#[clap(subcommand)]
26
+
command: CliCommand,
27
+
}
28
+
29
+
#[derive(Subcommand, Debug)]
30
+
#[clap(rename_all = "snake_case")]
31
+
enum CliCommand {
32
+
GetDidKey {
33
+
#[clap(long)]
34
+
key_index: Option<u32>,
35
+
#[clap(long, default_missing_value = "true", num_args = 0..=1)]
36
+
display: bool,
37
+
},
38
+
Exit,
39
+
}
40
+
41
+
// Command completer
42
+
struct CommandCompleter;
43
+
44
+
impl CommandCompleter {
45
+
fn get_current_word<'a>(&self, line: &'a str, pos: usize) -> (usize, &'a str) {
46
+
let before = &line[..pos];
47
+
// Find the last space before the cursor; if none, start at 0
48
+
let start = before.rfind(' ').map_or(0, |i| i + 1);
49
+
let word = &line[start..pos];
50
+
(start, word)
51
+
}
52
+
}
53
+
54
+
fn make_pair(s: &str) -> Pair {
55
+
Pair {
56
+
display: s.to_string(),
57
+
replacement: s.to_string(),
58
+
}
59
+
}
60
+
61
+
impl Completer for CommandCompleter {
62
+
type Candidate = Pair;
63
+
64
+
fn complete(
65
+
&self,
66
+
line: &str,
67
+
pos: usize,
68
+
_ctx: &Context<'_>,
69
+
) -> rustyline::Result<(usize, Vec<Pair>)> {
70
+
let prefix = line[..pos].trim_start();
71
+
72
+
// Case 1: Empty input, suggest all subcommands
73
+
if prefix.is_empty() || !prefix.contains(' ') {
74
+
let suggestions = Cli::command()
75
+
.get_subcommands()
76
+
.filter(|cmd| cmd.get_name().starts_with(prefix))
77
+
.map(|cmd| make_pair(cmd.get_name()))
78
+
.collect();
79
+
return Ok((0, suggestions));
80
+
}
81
+
82
+
// Case 3: Subcommand present; suggest possible arguments to complete the command
83
+
let subcmd_name = prefix.split_whitespace().next().unwrap();
84
+
if let Some(subcmd) = Cli::command().find_subcommand(subcmd_name) {
85
+
let (start, _) = self.get_current_word(line, pos);
86
+
87
+
// Collect arguments already present in the line before the cursor
88
+
let Ok(present_args) = shellwords::split(&line[..start].trim_end()) else {
89
+
return Ok((0, vec![])); // no suggestions if we can't parse the line
90
+
};
91
+
92
+
// replace `argument=some_value` with just `argument` for each of present_args
93
+
let present_args: Vec<String> = present_args
94
+
.into_iter()
95
+
.map(|arg| arg.split('=').next().unwrap().to_string())
96
+
.collect();
97
+
98
+
// Get all argument continuations
99
+
let suggestions = subcmd
100
+
.get_arguments()
101
+
.filter_map(|arg| arg.get_long().map(|l| l.to_string()))
102
+
.filter(|arg| !present_args.contains(arg))
103
+
.map(|arg| Pair {
104
+
display: arg.clone(),
105
+
replacement: arg,
106
+
})
107
+
.collect();
108
+
return Ok((start, suggestions));
109
+
}
110
+
111
+
// Default case: no suggestions
112
+
Ok((0, vec![]))
113
+
}
114
+
}
115
+
116
+
impl Validator for CommandCompleter {
117
+
fn validate(
118
+
&self,
119
+
_ctx: &mut ValidationContext<'_>,
120
+
) -> Result<ValidationResult, ReadlineError> {
121
+
Ok(ValidationResult::Valid(None))
122
+
}
123
+
}
124
+
125
+
impl Highlighter for CommandCompleter {
126
+
fn highlight<'l>(&self, line: &'l str, _pos: usize) -> Cow<'l, str> {
127
+
Cow::Borrowed(line)
128
+
}
129
+
130
+
fn highlight_char(&self, _line: &str, _pos: usize, _cmd_kind: CmdKind) -> bool {
131
+
false
132
+
}
133
+
}
134
+
135
+
impl Hinter for CommandCompleter {
136
+
type Hint = String;
137
+
138
+
fn hint(&self, _line: &str, _pos: usize, _ctx: &Context<'_>) -> Option<String> {
139
+
None
140
+
}
141
+
}
142
+
143
+
impl Helper for CommandCompleter {}
144
+
145
+
#[derive(Parser)]
146
+
#[command(name = "Vanadium", about = "Run a V-App on Vanadium")]
147
+
struct Args {
148
+
/// Path to the ELF file of the V-App (if not the default one)
149
+
app: Option<String>,
150
+
151
+
/// Use the HID interface for a real device, instead of Speculos
152
+
#[arg(long, group = "interface")]
153
+
hid: bool,
154
+
155
+
/// Use the native interface
156
+
#[arg(long, group = "interface")]
157
+
native: bool,
158
+
}
159
+
160
+
// a bit of a hack: we convert the prompt in a format that clap can parse
161
+
// (adding a dummy command, and replacing each 'argument' with '--argument')
162
+
fn prepare_prompt_for_clap(line: &str) -> Result<Vec<String>, String> {
163
+
let args = shellwords::split(line).map_err(|e| format!("Failed to parse input: {}", e))?;
164
+
if args.is_empty() {
165
+
return Err("Empty input".to_string());
166
+
}
167
+
168
+
// dummy command, and first command unchanged
169
+
let mut clap_args = vec!["dummy".to_string(), args[0].clone()];
170
+
171
+
// prepend `--` to each subsequent argument
172
+
for arg in &args[1..] {
173
+
clap_args.push(format!("--{}", arg));
174
+
}
175
+
Ok(clap_args)
176
+
}
177
+
178
+
async fn handle_cli_command(
179
+
app_client: &mut AtprotoAppClient,
180
+
cli: &Cli,
181
+
) -> Result<(), Box<dyn std::error::Error>> {
182
+
match &cli.command {
183
+
CliCommand::GetDidKey { key_index, display } => {
184
+
let key = app_client
185
+
.get_did_key(key_index.unwrap_or(0), *display)
186
+
.await?;
187
+
println!("did:key:z{}", key.to_base58());
188
+
}
189
+
CliCommand::Exit => {
190
+
return Err("Exiting".into());
191
+
}
192
+
}
193
+
Ok(())
194
+
}
195
+
196
+
#[tokio::main(flavor = "multi_thread")]
197
+
async fn main() -> Result<(), Box<dyn std::error::Error>> {
198
+
let args = Args::parse();
199
+
200
+
let default_app_path = if args.native {
201
+
"../target/x86_64-unknown-linux-gnu/release/vnd-atproto-app"
202
+
} else {
203
+
"../target/riscv32imc-unknown-none-elf/release/vnd-atproto-app"
204
+
};
205
+
206
+
let app_path_str = args.app.unwrap_or(default_app_path.to_string());
207
+
208
+
let mut app_client = if args.native {
209
+
AtprotoAppClient::new(Box::new(
210
+
NativeAppClient::new(&app_path_str)
211
+
.await
212
+
.map_err(|_| "Failed to create client")?,
213
+
))
214
+
} else {
215
+
let transport_raw: Arc<
216
+
dyn Transport<Error = Box<dyn std::error::Error + Send + Sync>> + Send + Sync,
217
+
> = if args.hid {
218
+
Arc::new(TransportHID::new(
219
+
TransportNativeHID::new(
220
+
&HidApi::new().expect("Unable to get connect to the device"),
221
+
)
222
+
.unwrap(),
223
+
))
224
+
} else {
225
+
Arc::new(
226
+
TransportTcp::new()
227
+
.await
228
+
.expect("Unable to get TCP transport. Is speculos running?"),
229
+
)
230
+
};
231
+
let transport = TransportWrapper::new(transport_raw.clone());
232
+
233
+
let (client, _) = VanadiumAppClient::new(&app_path_str, Arc::new(transport), None)
234
+
.await
235
+
.map_err(|e| format!("Failed to create client: {}", e))?;
236
+
237
+
AtprotoAppClient::new(Box::new(client))
238
+
};
239
+
240
+
let mut rl = Editor::<CommandCompleter, rustyline::history::DefaultHistory>::new()?;
241
+
rl.set_helper(Some(CommandCompleter));
242
+
243
+
let _ = rl.load_history("history.txt");
244
+
245
+
loop {
246
+
match rl.readline("> ") {
247
+
Ok(line) => {
248
+
if line.trim().is_empty() {
249
+
continue;
250
+
}
251
+
rl.add_history_entry(line.as_str())?;
252
+
253
+
let clap_args = match prepare_prompt_for_clap(&line) {
254
+
Ok(args) => args,
255
+
Err(e) => {
256
+
println!("Error: {}", e);
257
+
continue;
258
+
}
259
+
};
260
+
261
+
match Cli::try_parse_from(clap_args) {
262
+
Ok(cli) => {
263
+
if let Err(e) = handle_cli_command(&mut app_client, &cli).await {
264
+
println!("Error: {}", e);
265
+
}
266
+
}
267
+
Err(e) => println!("Invalid command: {}", e),
268
+
}
269
+
}
270
+
Err(ReadlineError::Interrupted) => println!("Interrupted"),
271
+
Err(ReadlineError::Eof) => {
272
+
println!("Exiting");
273
+
break;
274
+
}
275
+
Err(err) => {
276
+
println!("Error: {:?}", err);
277
+
break;
278
+
}
279
+
}
280
+
}
281
+
282
+
rl.save_history("history.txt")?;
283
+
284
+
app_client.exit().await?;
285
+
286
+
Ok(())
287
+
}
+9
client/Cargo.toml
+9
client/Cargo.toml
···
1
+
[package]
2
+
name = "vnd-atproto-client"
3
+
version = "0.0.1"
4
+
edition = "2021"
5
+
6
+
[dependencies]
7
+
common = { package = "vnd-atproto-common", path = "../common"}
8
+
sdk = { package = "vanadium-client-sdk", git = "https://github.com/LedgerHQ/vanadium"}
9
+
serde_ipld_dagcbor = { git = "http://github.com/edouardparis/serde_ipld_dagcbor", branch = "scopeguard-no-default-features", default-features = false }
+114
client/src/lib.rs
+114
client/src/lib.rs
···
1
+
use common::message::{Request, Response};
2
+
use sdk::vanadium_client::{VAppClient, VAppExecutionError};
3
+
4
+
use sdk::comm::SendMessageError;
5
+
6
+
pub use sdk::{transport, vanadium_client};
7
+
8
+
#[derive(Debug)]
9
+
pub enum AtprotoAppClientError {
10
+
VAppExecutionError(VAppExecutionError),
11
+
SendMessageError(SendMessageError),
12
+
InvalidResponse(&'static str),
13
+
GenericError(&'static str),
14
+
}
15
+
16
+
impl From<VAppExecutionError> for AtprotoAppClientError {
17
+
fn from(e: VAppExecutionError) -> Self {
18
+
Self::VAppExecutionError(e)
19
+
}
20
+
}
21
+
22
+
impl From<SendMessageError> for AtprotoAppClientError {
23
+
fn from(e: SendMessageError) -> Self {
24
+
Self::SendMessageError(e)
25
+
}
26
+
}
27
+
28
+
impl From<&'static str> for AtprotoAppClientError {
29
+
fn from(e: &'static str) -> Self {
30
+
Self::GenericError(e)
31
+
}
32
+
}
33
+
34
+
impl std::fmt::Display for AtprotoAppClientError {
35
+
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
36
+
match self {
37
+
AtprotoAppClientError::VAppExecutionError(e) => write!(f, "VAppExecutionError: {}", e),
38
+
AtprotoAppClientError::SendMessageError(e) => write!(f, "SendMessageError: {}", e),
39
+
AtprotoAppClientError::InvalidResponse(e) => write!(f, "InvalidResponse: {}", e),
40
+
AtprotoAppClientError::GenericError(e) => write!(f, "GenericError: {}", e),
41
+
}
42
+
}
43
+
}
44
+
45
+
impl std::error::Error for AtprotoAppClientError {
46
+
fn source(&self) -> Option<&(dyn std::error::Error + 'static)> {
47
+
match self {
48
+
AtprotoAppClientError::VAppExecutionError(e) => Some(e),
49
+
AtprotoAppClientError::SendMessageError(e) => Some(e),
50
+
AtprotoAppClientError::InvalidResponse(_) => None,
51
+
AtprotoAppClientError::GenericError(_) => None,
52
+
}
53
+
}
54
+
}
55
+
56
+
pub struct AtprotoAppClient {
57
+
app_client: Box<dyn VAppClient + Send + Sync>,
58
+
}
59
+
60
+
impl<'a> AtprotoAppClient {
61
+
pub fn new(app_client: Box<dyn VAppClient + Send + Sync>) -> Self {
62
+
Self { app_client }
63
+
}
64
+
65
+
async fn send_message(&mut self, out: &[u8]) -> Result<Vec<u8>, AtprotoAppClientError> {
66
+
sdk::comm::send_message(&mut self.app_client, out)
67
+
.await
68
+
.map_err(AtprotoAppClientError::from)
69
+
}
70
+
71
+
async fn parse_response(response_raw: &'a [u8]) -> Result<Response, AtprotoAppClientError> {
72
+
let resp: Response = serde_ipld_dagcbor::from_slice(response_raw)
73
+
.map_err(|_| AtprotoAppClientError::GenericError("Failed to parse response"))?;
74
+
Ok(resp)
75
+
}
76
+
77
+
pub async fn get_did_key(
78
+
&mut self,
79
+
index: u32,
80
+
display: bool,
81
+
) -> Result<Vec<u8>, AtprotoAppClientError> {
82
+
let msg = serde_ipld_dagcbor::to_vec(&Request::GetDidKey { index, display })
83
+
.map_err(|_| AtprotoAppClientError::GenericError("Failed to serialize Exit request"))?;
84
+
85
+
let response_raw = self.send_message(&msg).await?;
86
+
match Self::parse_response(&response_raw).await? {
87
+
Response::DidKey(key) => Ok(key),
88
+
_ => Err(AtprotoAppClientError::InvalidResponse("Invalid response")),
89
+
}
90
+
}
91
+
92
+
pub async fn exit(&mut self) -> Result<i32, AtprotoAppClientError> {
93
+
let msg = serde_ipld_dagcbor::to_vec(&Request::Exit)
94
+
.map_err(|_| AtprotoAppClientError::GenericError("Failed to serialize Exit request"))?;
95
+
let response_raw = self.send_message(&msg).await?;
96
+
97
+
match Self::parse_response(&response_raw).await {
98
+
Ok(_) => Err(AtprotoAppClientError::InvalidResponse(
99
+
"Exit message shouldn't return!",
100
+
)),
101
+
Err(e) => match e {
102
+
AtprotoAppClientError::VAppExecutionError(VAppExecutionError::AppExited(
103
+
status,
104
+
)) => Ok(status),
105
+
e => {
106
+
println!("Unexpected error on exit: {:?}", e);
107
+
Err(AtprotoAppClientError::InvalidResponse(
108
+
"Unexpected error on exit",
109
+
))
110
+
}
111
+
},
112
+
}
113
+
}
114
+
}
+9
common/Cargo.toml
+9
common/Cargo.toml
+29
common/src/lib.rs
+29
common/src/lib.rs
···
1
+
#![cfg_attr(not(test), no_std)]
2
+
3
+
extern crate alloc;
4
+
5
+
pub mod message {
6
+
use alloc::{string::String, vec::Vec};
7
+
use serde::{Deserialize, Serialize};
8
+
9
+
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
10
+
pub enum Request {
11
+
Exit,
12
+
GetDidKey { index: u32, display: bool },
13
+
// SignPlcOperation {
14
+
// key_index: u32,
15
+
// previous: Option<PlcOperation>,
16
+
// operation: PlcOperation,
17
+
// },
18
+
}
19
+
20
+
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
21
+
pub enum PlcOperation {}
22
+
23
+
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
24
+
pub enum Response {
25
+
DidKey(Vec<u8>),
26
+
// Signature(Vec<u8>),
27
+
Error(String),
28
+
}
29
+
}
+75
src/main.rs
+75
src/main.rs
···
1
+
#![cfg_attr(target_arch = "riscv32", no_std, no_main)]
2
+
3
+
extern crate alloc;
4
+
5
+
use alloc::{string::ToString, vec::Vec};
6
+
use common::message::{Request, Response};
7
+
use sdk::{
8
+
App,
9
+
curve::{Curve, EcfpPrivateKey, Secp256k1, ToPublicKey},
10
+
};
11
+
12
+
sdk::bootstrap!();
13
+
14
+
#[cfg(not(test))]
15
+
fn display_key(pubkey: &[u8], index: u32) -> bool {
16
+
use alloc::string::ToString;
17
+
use base58::ToBase58;
18
+
use sdk::ux::TagValue;
19
+
20
+
let did_key = alloc::format!("did:key:z{}", pubkey.to_base58());
21
+
22
+
sdk::ux::review_pairs(
23
+
"Verify Atproto DID key",
24
+
"",
25
+
&[TagValue {
26
+
tag: "Index".into(),
27
+
value: index.to_string(),
28
+
}],
29
+
&did_key,
30
+
"Confirm",
31
+
false,
32
+
)
33
+
}
34
+
35
+
#[cfg(test)]
36
+
fn display_key(pubkey: &[u8], index: u32) -> bool {
37
+
true
38
+
}
39
+
40
+
pub fn get_did_key(index: u32, display: bool) -> Result<Response, &'static str> {
41
+
if index > 256 {
42
+
return Err("Derivation path is too long");
43
+
}
44
+
45
+
let hd_node = sdk::curve::Secp256k1::derive_hd_node(&[index])?;
46
+
let privkey: EcfpPrivateKey<Secp256k1, 32> = EcfpPrivateKey::new(*hd_node.privkey);
47
+
let pubkey = privkey.to_public_key();
48
+
let uncompressed_pubkey = pubkey.as_ref().to_bytes();
49
+
50
+
let mut key = Vec::with_capacity(34);
51
+
key.push(0xE7);
52
+
key.push(uncompressed_pubkey[64] % 2 + 0x02);
53
+
key.extend_from_slice(&uncompressed_pubkey[1..33]);
54
+
55
+
if display && !display_key(&key, index) {
56
+
return Err("Rejected by the user");
57
+
}
58
+
59
+
Ok(Response::DidKey(key))
60
+
}
61
+
62
+
fn process(_app: &mut App, request: &[u8]) -> Vec<u8> {
63
+
let request: Request = serde_ipld_dagcbor::from_slice(request).unwrap();
64
+
let response = match request {
65
+
Request::Exit => sdk::exit(0),
66
+
Request::GetDidKey { index, display } => get_did_key(index, display)
67
+
.map_err(|e| Response::Error(e.to_string()))
68
+
.unwrap(),
69
+
};
70
+
serde_ipld_dagcbor::to_vec(&response).unwrap()
71
+
}
72
+
73
+
pub fn main() {
74
+
App::new(process).run()
75
+
}