mirror of
https://github.com/PR0M3TH3AN/SeedPass.git
synced 2025-09-08 07:18:47 +00:00
55 lines
1.7 KiB
Python
55 lines
1.7 KiB
Python
import logging
|
|
import pytest
|
|
from utils.key_derivation import (
|
|
derive_key_from_password,
|
|
derive_index_key_seed_only,
|
|
derive_index_key_seed_plus_pw,
|
|
derive_index_key,
|
|
EncryptionMode,
|
|
)
|
|
|
|
|
|
def test_derive_key_deterministic():
|
|
password = "correct horse battery staple"
|
|
key1 = derive_key_from_password(password, iterations=1)
|
|
key2 = derive_key_from_password(password, iterations=1)
|
|
assert key1 == key2
|
|
assert len(key1) == 44
|
|
logging.info("Deterministic key derivation succeeded")
|
|
|
|
|
|
def test_derive_key_empty_password_error():
|
|
with pytest.raises(ValueError):
|
|
derive_key_from_password("")
|
|
logging.info("Empty password correctly raised ValueError")
|
|
|
|
|
|
def test_seed_only_key_deterministic():
|
|
seed = "abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about"
|
|
k1 = derive_index_key_seed_only(seed)
|
|
k2 = derive_index_key_seed_only(seed)
|
|
assert k1 == k2
|
|
assert len(k1) == 44
|
|
|
|
|
|
def test_seed_plus_pw_differs_from_seed_only():
|
|
seed = "abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about"
|
|
pw = "hunter2"
|
|
k1 = derive_index_key_seed_only(seed)
|
|
k2 = derive_index_key_seed_plus_pw(seed, pw)
|
|
assert k1 != k2
|
|
|
|
|
|
def test_derive_index_key_modes():
|
|
seed = "abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about"
|
|
pw = "hunter2"
|
|
assert derive_index_key(
|
|
seed, pw, EncryptionMode.SEED_ONLY
|
|
) == derive_index_key_seed_only(seed)
|
|
assert derive_index_key(
|
|
seed, pw, EncryptionMode.SEED_PLUS_PW
|
|
) == derive_index_key_seed_plus_pw(seed, pw)
|
|
assert derive_index_key(
|
|
seed, pw, EncryptionMode.PW_ONLY
|
|
) == derive_key_from_password(pw)
|