backend-api/src/validator.py
Florian cbf3c662a1
All checks were successful
Build & Publish to GHCR / build (push) Successful in 45s
Fixed missing special characters that can occur in an ExponentToken
2025-10-17 09:25:37 +02:00

45 lines
1.2 KiB
Python

from argon2 import PasswordHasher
import re
from logger_handler import setup_logger
logger = setup_logger(__name__)
def is_valid_platform(platform) -> bool:
if platform not in ["android"]:
logger.debug(f"Invalid platform: {platform}")
return False
logger.debug(f"Valid platform: {platform}")
return True
def is_valid_token(token: str) -> bool:
"""
Validates the format ExponentPushToken[<22-letter-long-string>]
"""
pattern = r"^ExponentPushToken\[([A-Za-z0-9_\-]{22})\]$"
if not re.match(pattern, token):
logger.debug(f"Invalid token format: {token}")
return False
logger.debug(f"Valid token format: {token}")
return True
ph = PasswordHasher()
def hash_api_key(api_key: str) -> str:
return ph.hash(api_key)
def verify_api_key(api_key: str, hashed: str) -> bool:
try:
return ph.verify(hashed, api_key)
except Exception:
return False
if __name__=="__main__":
plain_key = "super-secret-api-key"
#hashed_key = hash_api_key(plain_key)
hashed_key = '$argon2id$v=19$m=65536,t=3,p=4$vqU+MRafVW1b8AtF+zHb0w$p1J4Gyb0jhlVtKgYyjTITxfU97YaayeS3s3qFFP5sVM'
print("Hashed API Key:", hashed_key)
print("Verification:", verify_api_key(plain_key, hashed_key))