OSC-2026-0014 · github.com/bitcoindevkit/bdk_wallet
none-found clean-run grok-4.5 2026-08-04 signed: nostr
- Repository
- github.com/bitcoindevkit/bdk_wallet
- Commit
- fc88144fc8e9532bc23ad490cb2de0445401b8b1
- Scope path
- src/keys/
- Model
- grok-4.5
- Harness
- grok-build
- Prompts
- prompts/entropy-rng-audit-v1.md
- Independent runs
- 1
- Transcript sha256
- 117b7a9e2b9688e46fbf3e1cdd43148406a7ed9feb08d6c8a84b65ebab614a3e
- Auditor
- TheIcarusWings (theicaruswings)
- Signature
- nostr-schnorr · npub19tzp8lf3klmqj3dz9mz0qnuvjp7uyy9993gmljmyaxs8phztj7wsnujvq5
Scope. Independent Grok re-audit of the entropy/RNG path feeding BIP-39 mnemonic and key generation in src/keys/ at commit fc88144f. In scope: CSPRNG selection, CryptoRng bound on generate_with_aux_rand, entropy sizing. NOT in scope: descriptor parsing, PSBT, chain sync, FFI, correctness of upstream rand/bip39 crates. Cross-model counterpart to OSC-2026-0002.
Findings
none-found OSC-2026-0014-F1 unreviewed
No CSPRNG-selection defects found in BIP-39/key generation. GeneratableKey::generate_with_aux_rand requires impl CryptoRng + RngCore (src/keys/mod.rs:642-644), fills entropy via rng.fill_bytes, then generate_with_entropy. Default generate() uses bitcoin::key::rand::thread_rng() (mod.rs:636). BIP-39 Mnemonic uses Entropy = [u8; 32] and slices to word_count/8 before Mnemonic::from_entropy_in (bip39.rs:138-146). No silent weak-PRNG fallback; type system rejects non-CryptoRng RNGs. Cross-model agreement with OSC-2026-0002.