Nur noch, was zum Installieren und Betreiben von TESM noetig ist

Entfernt: Tests, Architekturdokumentation und die Serverhaelfte des
Lizenzprotokolls. Beides liegt im Entwicklungsrepository alientim/TESM-DEV.

Das Lizenzprotokoll ist geteilt. TESM braucht nur die gemeinsame Haelfte
(tesm-licensing): Lizenzen verifizieren, Status bewerten, Anfragen stellen,
Antworten pruefen. Ausstellen, erneuern, Antworten signieren und
Schluesselerzeugung liegen jetzt in tesm-licensing-server und damit
ausschliesslich beim Lizenzserver -- ein Client soll den Code zum Ausstellen
nicht einmal mitbringen. Nachgeprueft: kein Modul von TESM oder tesm-core
importiert eine der verschobenen Funktionen.

install.sh installiert entsprechend je Anwendung nur die noetigen Pakete und
bricht mit klarer Meldung ab, wenn die verlangte Anwendung nicht im Baum liegt.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-02 18:37:11 +02:00
co-authored by Claude Opus 5
parent 7354ff352b
commit 64e25bb9ae
18 changed files with 56 additions and 6000 deletions
@@ -45,21 +45,8 @@ def _b64d(value: str, *, field: str) -> bytes:
raise ValueError(f"{field} ist kein gueltiges Base64") from exc
def generate_keypair() -> tuple[str, str]:
"""Erzeugt ein Ed25519-Schluesselpaar. Rueckgabe: ``(private_b64, public_b64)``."""
private = ed25519.Ed25519PrivateKey.generate()
return (
base64.b64encode(private.private_bytes_raw()).decode("ascii"),
base64.b64encode(private.public_key().public_bytes_raw()).decode("ascii"),
)
def public_from_private(private_key_b64: str) -> str:
"""Leitet den oeffentlichen Teil aus einem privaten Schluessel ab."""
key = ed25519.Ed25519PrivateKey.from_private_bytes(
_b64d(private_key_b64, field="private_key")
)
return base64.b64encode(key.public_key().public_bytes_raw()).decode("ascii")
def sign(payload: Mapping[str, Any], private_key_b64: str, context: bytes) -> str: