Critical: build_leaf_cert self-signed leaves with the leaf key instead of the YubiKey-held Intermediate CA key. Now extracts TBS, signs via pkcs11-tool (ECDSA-SHA384), reassembles, and verifies against the intermediate CA public key before returning. - setup-certauth.sh: ~1100 lines of stale inline api/ copies replaced with copy-from-repo (single source of truth); writes private /etc/certauth/certauth.env (0600); DB init loads env, no more swallowed errors; systemd unit gets EnvironmentFile= - config.py: YubiKey serials no longer hard-coded (env, fail closed); aarch64-only PKCS#11 path replaced with arch-neutral default; all paths env-overridable (CERTAUTH_*) - main.py: removed dead fastapi.security.CSRFProtection import (crashed startup); module-relative static/templates dirs; created_by resolved from the authenticated user instead of hard-coded 1; unclosed file handles fixed; domain_id 0 stored as NULL (FK bug) - models.py: certificates.domain_id FK pointed at users(id), now domains(id) - login: CSRF token now actually sent and validated - tests: 23 tests (auth, API flows, DER helpers, signing pipeline) - README, LICENSE, requirements.txt, pyproject.toml
23 lines
569 B
Python
23 lines
569 B
Python
"""Password hashing tests."""
|
|
|
|
from models import hash_password, verify_password
|
|
|
|
|
|
def test_hash_and_verify():
|
|
h = hash_password("s3cure-Passw0rd!")
|
|
assert verify_password("s3cure-Passw0rd!", h)
|
|
|
|
|
|
def test_wrong_password_rejected():
|
|
h = hash_password("s3cure-Passw0rd!")
|
|
assert not verify_password("wrong-password", h)
|
|
|
|
|
|
def test_hashes_are_unique():
|
|
assert hash_password("same-pass") != hash_password("same-pass")
|
|
|
|
|
|
def test_accepts_bytes_hash():
|
|
h = hash_password("s3cure-Passw0rd!")
|
|
assert verify_password("s3cure-Passw0rd!", h.encode())
|