Use HMAC-based deterministic shuffle

This commit is contained in:
thePR0M3TH3AN
2025-08-03 09:15:43 -04:00
parent 3cdf391742
commit 4f09ad5c26
2 changed files with 71 additions and 14 deletions

View File

@@ -0,0 +1,32 @@
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).resolve().parents[1]))
from seedpass.core.password_generation import PasswordGenerator, PasswordPolicy
class DummyEnc:
def derive_seed_from_mnemonic(self, mnemonic):
return b"\x00" * 32
class DummyBIP85:
def derive_entropy(self, index: int, bytes_len: int, app_no: int = 32) -> bytes:
return bytes((index + i) % 256 for i in range(bytes_len))
def make_generator():
pg = PasswordGenerator.__new__(PasswordGenerator)
pg.encryption_manager = DummyEnc()
pg.bip85 = DummyBIP85()
pg.policy = PasswordPolicy()
return pg
def test_password_generation_consistent_output():
pg = make_generator()
expected = "0j6R3e-%4xN@N{Jb"
assert pg.generate_password(length=16, index=1) == expected
# Generating again should produce the same password
assert pg.generate_password(length=16, index=1) == expected