|
| 1 | +from src.codex32.codex32 import Codex32String |
| 2 | + |
| 3 | + |
| 4 | +# secret share from seed |
| 5 | +s = Codex32String.from_seed(bytes.fromhex("68f14219957131d21b615271058437e8"), "ms13k00ls") |
| 6 | +assert s.s == "ms13k00lsdrc5yxv4wycayxmp2fcstppharks8z0r84pf3uj" |
| 7 | + |
| 8 | +# derive 'a' via proposed BIP-85 |
| 9 | +a = Codex32String.from_seed(bytes.fromhex("641be1cb12c97ede1c6bad8edf067760"), "ms13k00la") |
| 10 | +assert a.s == "ms13k00lavsd7rjcje9ldu8rt4k8d7pnhvppyrt5gpff9wwl" |
| 11 | + |
| 12 | +# derive 'c' via proposed BIP-85 |
| 13 | +c = Codex32String.from_seed(bytes.fromhex("61b3c4052f7a31dc2b425c843a13c9b4"), "ms13k00lc") |
| 14 | +assert c.s == "ms13k00lcvxeugpf00gcac26ztjzr5y7fkjl7fx7nx7ykhkr" |
| 15 | + |
| 16 | +# derive next share via interpolation |
| 17 | +d = Codex32String.interpolate_at([s, a, c], "d") |
| 18 | +assert d.s == "ms13k00ldp4v5nw8lph96x47mjxzgwjexe44p32swkq99e0w" |
| 19 | + |
| 20 | +# now round-trip d share ('d' is derived via interpolation, NOT via 'from_seed') |
| 21 | +dd = Codex32String.from_seed(d.data, "ms13k00ld") |
| 22 | +# they are NOT equal after round-trip - seem we miss padding at interpolation level |
| 23 | +assert dd.s != d.s # FAIL (should equal) |
| 24 | + |
| 25 | +# irrelevant |
| 26 | +# e = Codex32String.interpolate_at([s, a, c], "e") |
| 27 | +# assert e.s == "ms13k00lezuknydaaygk5u20zs4fm736vj909mdj6xqp8pc2" |
| 28 | +# |
| 29 | +# f = Codex32String.interpolate_at([s, a, c], "f") |
| 30 | +# assert f.s == "ms13k00lf0ehe53zsu6vrxcjjh9v7wzsa83mqfvku3fd8kem" |
| 31 | + |
| 32 | +# recover from shares, use 'd' without round-trip |
| 33 | +rec_s = Codex32String.interpolate_at([a, d, c], "s") |
| 34 | +# recover from shares, use 'd' after round-trip |
| 35 | +rec_ss = Codex32String.interpolate_at([a, dd, c], "s") |
| 36 | + |
| 37 | +print(" s:", s.data.hex()) |
| 38 | +print(" rec_s:", rec_s.data.hex()) |
| 39 | +print("rec_ss:", rec_ss.data.hex()) |
| 40 | +assert s.data == rec_s.data |
| 41 | +assert s.data == rec_ss.data # FAIL |
0 commit comments