@@ -67,13 +67,13 @@ generic parse-length failure.
6767 ` .text ` attribute.
6868- Sharing interpolates payload and checksum together, explicitly constructs the
6969 target header, and reparses the result.
70- - ` generation.py ` is the only entropy owner and generates only ` ms ` and ` cl ` .
70+ - ` generation.py ` is the only entropy owner and generates only ` ms ` ; it can
71+ also share an existing ` cl ` secret.
7172- Correction never edits the HRP or separator and reparses every candidate.
7273- ` _bip32.py ` stops at HMAC-SHA512 root derivation, scalar validity, and root
7374 xprv/tprv Base58Check serialization. It performs no child derivation or
74- secp256k1 point arithmetic. ` wallet.py ` accepts only ` MasterSeed ` ; EC-dependent
75- public derivation is supplied through an explicit wallet integration and the
76- CLI uses Bitcoin Core for that boundary.
75+ secp256k1 point arithmetic. ` wallet.py ` accepts only ` MasterSeed ` ; Bitcoin
76+ Core performs all EC-dependent derivation.
7777- ` _cli_input.py ` retains at most nine artifacts and delegates partial-set
7878 compatibility to ` bip93.py ` . Card confirmation clears the terminal and saved
7979 scrollback where supported, then displays only entered text after a mismatch.
@@ -100,7 +100,7 @@ generic parse-length failure.
100100 hidden state.
101101
102102Private Python names are convention rather than access control. The supported
103- surface is the 25 -name package ` __all__ ` ; direct use of private helpers is
103+ surface is the 22 -name package ` __all__ ` ; direct use of private helpers is
104104unsupported but remains in the review scope.
105105
106106### Size budget
@@ -154,39 +154,37 @@ recovery, and share derivation. The `ms32` façade accepts only `ms` artifacts.
154154## Secret generation
155155
156156` generation.py ` is the only module that draws entropy. It generates BIP93
157- master seeds and Core Lightning HSM secrets, and splits either validated S type .
157+ master seeds and splits a validated master seed or Core Lightning HSM secret .
158158Core Lightning now defaults to mnemonic recovery, but retains a codex32 HSM
159159secret import path for recovery on an unused node.
160160
161161Fresh unshared seeds default to 16 bytes and use the first 20 bits of their
162162BIP32 fingerprint as public identifier metadata. Fresh shared sets use four
163- independent random u5 identifier symbols. Raw bytes, re-shared secrets, and CL
164- generation also use an independent random identifier unless one is supplied.
163+ independent random u5 identifier symbols. Raw bytes and re-shared secrets also
164+ use an independent random identifier unless one is supplied.
165165Random re-sharing never repeats the source set header; an explicitly repeated
166166source header is rejected.
167167
168168The Python API and CLI accept the six PR #2258 ` ms ` sizes: 16, 20, 24, 28, 32,
169169and 64 bytes. Other byte lengths are rejected at every public construction
170170boundary; there is no legacy decoder.
171171
172- One -shot functions create only unshared secrets:
172+ The one -shot function creates only unshared secrets:
173173
174174``` python
175175generate_master_seed(seed_bytes = None , * , byte_length = None , identifier = None )
176- generate_core_lightning_secret(secret_bytes = None , * , identifier = None )
177176```
178177
179- Shared creation uses ` CreationCeremony.master_seed(...) ` ,
180- ` CreationCeremony.core_lightning(...) ` , or
178+ Shared creation uses ` CreationCeremony.master_seed(...) ` or
181179` CreationCeremony.from_secret(...) ` . Exactly one of ` share_count ` and ` indices `
182180is required. ` next_share() ` returns one pending share, ` confirm(text) ` must
183181accept its independently re-entered string, and ` finish() ` returns the secret
184182only after every requested share is confirmed. There is no public one-shot
185183sharing or ` split_secret ` function. Fresh and existing Bitcoin CLI creation
186184requires interactive input and output, preflights local Bitcoin Core before
187185entropy or recovery input, and initializes a user-selected wallet after every
188- share is confirmed. CLI creation does not accept Core Lightning profiles; CL
189- generation and sharing remain API-only.
186+ share is confirmed. CLI creation does not accept Core Lightning profiles; sharing
187+ an existing CL secret remains API-only.
190188Without ` --existing ` , omitting the Bitcoin header creates an unshared master
191189seed. With ` --existing ` and no sharing threshold, a supplied codex32 secret is
192190emitted and confirmed unchanged, and the original validated artifact initializes
@@ -580,27 +578,17 @@ Public wallet operations accept only a validated `MasterSeed`. `wallet.py` is
580578stateless and never accepts shares, Core Lightning secrets, BIP39 migration
581579artifacts, or raw bytes.
582580
583- The public adapter has two functions:
584-
585- - ` master_xprv(secret, testnet=False) ` returns the BIP32 root extended private
586- key.
587- - ` core_descriptors(...) ` returns fixed BIP44, BIP49, BIP84, and BIP86 Bitcoin
588- Core ` importdescriptors ` records. Private records use stdlib-only root xprv
589- serialization; public records require an explicit wallet integration and the
590- Core wallet whose imported root key will perform hardened derivation.
581+ The public adapter has one function: ` master_xprv(secret, testnet=False) `
582+ returns the BIP32 root extended private key, using stdlib-only serialization.
583+ It grants authority over every key derived from the seed, and the CLI warns
584+ before printing it.
591585
592586No installed Python dependency performs secp256k1 operations. The private
593587Bitcoin Core adapter gives Core the root xprv over stdin and asks Core to
594- create the four standard account-0 descriptor types. Public descriptor
595- derivation remains available through the explicit integration API.
596-
597- Public descriptors contain account xpubs. Private descriptors intentionally
598- follow Bitcoin Core's root-key form: they contain the root xprv followed by the
599- complete derivation path. They therefore grant authority over the entire root,
600- not only the selected account. The CLI warns before printing them.
588+ create the four standard account-0 descriptor types. Core's own wallet
589+ commands provide public descriptors and watch-only exports.
601590
602- Account, private/public mode, network serialization, and timestamp are explicit
603- API inputs. The ` ms32 wallet ` CLI takes ` --account 0 ` and ` --timestamp ` ; the
591+ The ` ms32 wallet ` CLI takes ` --account 0 ` and ` --timestamp ` ; the
604592selected Bitcoin Core chain is authoritative and there is no wallet
605593` --testnet ` flag. ` ms32 xprv --testnet ` remains explicit because it directly
606594selects xprv versus tprv serialization. The timestamp defaults to ` 0 ` so
@@ -647,7 +635,7 @@ the BIP32 fingerprint.
647635
648636The Core calls are fixed: ` getnetworkinfo ` , ` getblockchaininfo ` , ` listwallets ` ,
649637` getwalletinfo ` , ` listdescriptors ` , ` getdescriptorinfo ` , ` deriveaddresses ` ,
650- ` validateaddress ` , ` gethdkeys ` , ` derivehdkey ` , ` addhdkey ` ,
638+ ` validateaddress ` , ` addhdkey ` ,
651639` createwalletdescriptor ` , ` importdescriptors ` , and ` walletlock ` .
652640Bitcoin Core alone creates wallets, selects encryption, handles
653641passphrases, stores keys, and provides normal wallet behavior.
0 commit comments