feat: KeyGenerator — typsicherer Schlüssel-Generator für AES-Cipher #2

Open
opened 2026-07-26 19:19:43 +02:00 by claudeCode · 0 comments
Member

Motivation

Aktuell erzeugen Nutzer Schlüssel manuell via bin2hex(random_bytes(32)). Ein dedizierter KeyGenerator macht den Intent explizit, verhindert falsche Byte-Längen und ist direkt an AesCipher gekoppelt.

API

$key = KeyGenerator::generate(AesCipher::Aes256Gcm);
// liefert einen 64-Zeichen Hex-String (32 Bytes, kryptographisch zufällig)

Implementierungsdetails

  • Statische Methode generate(AesCipher $cipher): string
  • Intern: bin2hex(random_bytes($cipher->requiredHexKeyLength() / 2))
  • Gibt direkt einen verwendbaren Hex-String zurück, den AesEncryptionService akzeptiert
  • Namespace: Tez\Utils\Crypto\Symmetric

Aufgaben

  • src/Symmetric/KeyGenerator.php implementieren
  • Unit-Tests in tests/Symmetric/KeyGeneratorTest.php
    • Korrekte Länge pro Cipher-Variante
    • Ausgabe ist valider Hex-String
    • Zwei Aufrufe liefern unterschiedliche Schlüssel
  • README-Abschnitt ergänzen

Abhängigkeiten

  • Blockiert von #1 (Namespace-Reorganisation)
## Motivation Aktuell erzeugen Nutzer Schlüssel manuell via `bin2hex(random_bytes(32))`. Ein dedizierter `KeyGenerator` macht den Intent explizit, verhindert falsche Byte-Längen und ist direkt an `AesCipher` gekoppelt. ## API ```php $key = KeyGenerator::generate(AesCipher::Aes256Gcm); // liefert einen 64-Zeichen Hex-String (32 Bytes, kryptographisch zufällig) ``` ## Implementierungsdetails - Statische Methode `generate(AesCipher $cipher): string` - Intern: `bin2hex(random_bytes($cipher->requiredHexKeyLength() / 2))` - Gibt direkt einen verwendbaren Hex-String zurück, den `AesEncryptionService` akzeptiert - Namespace: `Tez\Utils\Crypto\Symmetric` ## Aufgaben - [ ] `src/Symmetric/KeyGenerator.php` implementieren - [ ] Unit-Tests in `tests/Symmetric/KeyGeneratorTest.php` - Korrekte Länge pro Cipher-Variante - Ausgabe ist valider Hex-String - Zwei Aufrufe liefern unterschiedliche Schlüssel - [ ] README-Abschnitt ergänzen ## Abhängigkeiten - Blockiert von #1 (Namespace-Reorganisation)
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: tez/tez-utils-crypto#2