From 2cf9d79d84cb485e31e2d78a5744c1e4dc5f5f44 Mon Sep 17 00:00:00 2001 From: Muhammad Date: Tue, 19 May 2026 10:45:03 +0100 Subject: [PATCH] key: validate BIP32 seed length in CExtKey::SetSeed BIP32 specifies that seed must be between 128 and 512 bits (16 to 64 bytes). CExtKey::SetSeed currently accepts any length, including empty seeds, which could lead to weak master keys. Add an Assert at the start of SetSeed to enforce the valid seed length range. Fixes #35308 --- src/key.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/key.cpp b/src/key.cpp index cc03df1cd94..7b2df88f074 100644 --- a/src/key.cpp +++ b/src/key.cpp @@ -367,6 +367,7 @@ bool CExtKey::Derive(CExtKey &out, unsigned int _nChild) const { void CExtKey::SetSeed(std::span seed) { + Assert(16 <= seed.size() && seed.size() <= 64); static const unsigned char hashkey[] = {'B','i','t','c','o','i','n',' ','s','e','e','d'}; std::vector> vout(64); CHMAC_SHA512{hashkey, sizeof(hashkey)}.Write(UCharCast(seed.data()), seed.size()).Finalize(vout.data());