Skip to content

fix: reject non-string mnemonic seed inputs - #205

Open
Harshil-1603 wants to merge 1 commit into
bitcoinjs:masterfrom
Harshil-1603:fix/non-string-mnemonic-input-77
Open

Harshil-1603 wants to merge 1 commit into
bitcoinjs:masterfrom
Harshil-1603:fix/non-string-mnemonic-input-77

Conversation

@Harshil-1603

Copy link
Copy Markdown

Falsy non-string mnemonic inputs (undefined, null, false, 0, and NaN) currently normalize to an empty string and derive the same seed. Check the mnemonic's runtime type in both seed entry points and throw TypeError: Invalid mnemonic consistently for non-string inputs.

Addresses the non-string input case in #77. Empty strings, whitespace, and other non-strict string mnemonics retain their existing derivation behavior, following the discussion that mnemonic validity belongs to the caller. Passphrase behavior is unchanged.

Add 20 invalid-type assertions and 8 compatibility assertions against Node's independent PBKDF2 implementation. Include the regenerated JavaScript.

Validation:

  • Before the fix: 20 invalid-type assertions failed; 8 string compatibility assertions passed.
  • npm test: 411 assertions passed, including official BIP39 wordlist comparisons; build, formatting, and lint passed.
  • npm run coverage: passed the 85% branch and 100% function thresholds.
  • npm run gitdiff:ci and git diff --check passed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant