auth.py python
18 lines 511 B
Raw
sha256:a78e7e5a8740e03315f325d19edeb3aa1b306b3337d04abbaa9a9e0f3bbeb7a1 docs: MuseHub-first before ISR #74 — staging solidify NEXT Human 1 day ago
1 """Viewer Bearer credential helpers (§HGD.6.1)."""
2
3 from __future__ import annotations
4
5 import secrets
6
7 # ≥ 128 bits entropy (16 bytes → 32 hex chars).
8 _VIEWER_TOKEN_BYTES = 16
9
10
11 def generate_viewer_token() -> str:
12 """Return a cryptographically secure viewer Bearer credential."""
13 return secrets.token_hex(_VIEWER_TOKEN_BYTES)
14
15
16 def constant_time_equal(a: str, b: str) -> bool:
17 """Compare two strings in constant time."""
18 return secrets.compare_digest(a.encode("utf-8"), b.encode("utf-8"))
File History 1 commit
sha256:a78e7e5a8740e03315f325d19edeb3aa1b306b3337d04abbaa9a9e0f3bbeb7a1 docs: MuseHub-first before ISR #74 — staging solidify NEXT Human 1 day ago