Skip to content

Commit 06c26dc

Browse files
committed
add round-trip for share derived via interpolation
1 parent 0796b95 commit 06c26dc

1 file changed

Lines changed: 41 additions & 0 deletions

File tree

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
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

Comments
 (0)