Files
SeedPass/src/utils/fingerprint.py
T

45 lines
1.3 KiB
Python

# utils/fingerprint.py
"""
Fingerprint Module
This module provides functionality to generate a unique, one-way hashed fingerprint
from a given seed phrase. The fingerprint serves as an identifier for each seed,
facilitating organized and secure storage.
"""
import hashlib
import logging
from typing import Optional
# Instantiate the logger
logger = logging.getLogger(__name__)
def generate_fingerprint(seed_phrase: str, length: int = 16) -> Optional[str]:
"""
Generates a unique fingerprint from the provided seed phrase using SHA-256.
Parameters:
seed_phrase (str): The BIP-39 seed phrase.
length (int): The desired length of the fingerprint.
Returns:
Optional[str]: The generated fingerprint or None if an error occurs.
"""
try:
# Normalize the seed phrase
normalized_seed = seed_phrase.strip().lower()
# Compute SHA-256 hash
sha256_hash = hashlib.sha256(normalized_seed.encode("utf-8")).hexdigest()
# Truncate to desired length
fingerprint = sha256_hash[:length].upper()
logger.debug("Generated seed fingerprint successfully.")
return fingerprint
except Exception as e:
logger.error(f"Failed to generate fingerprint: {e}", exc_info=True)
return None