A Python port of the Invisible Internet Project (I2P)
at main 28 lines 827 B view raw
1"""Simple token-based authentication for I2PControl.""" 2from __future__ import annotations 3 4import os 5 6 7class TokenAuth: 8 """Simple token-based authentication for I2PControl.""" 9 10 def __init__(self) -> None: 11 self._tokens: set[str] = set() 12 13 def generate_token(self) -> str: 14 """Generate and store a new auth token (32 hex chars).""" 15 token = os.urandom(16).hex() 16 self._tokens.add(token) 17 return token 18 19 def validate_token(self, token: str) -> bool: 20 """Return True if the token is valid.""" 21 return token in self._tokens 22 23 def revoke_token(self, token: str) -> bool: 24 """Revoke a token. Returns True if it existed, False otherwise.""" 25 if token in self._tokens: 26 self._tokens.discard(token) 27 return True 28 return False