Files
2026-05-27 23:29:53 +01:00

1.6 KiB

Capability: crypto-engine-interfaces

ADDED Requirements

Engine interface types

  • REQ-ENG-001: @suaveplan/crypto exports AeadEngine interface: { encrypt(key, plaintext, nonce, aad?): Uint8Array; decrypt(key, ciphertext, nonce, aad?): Uint8Array }.
  • REQ-ENG-002: @suaveplan/crypto exports SignEngine interface: { generateKeypair(byteSource?): Keypair; sign(secretKey, message): Uint8Array; verify(publicKey, signature, message): boolean }.
  • REQ-ENG-003: @suaveplan/crypto exports AgreeEngine interface: { generateKeypair(byteSource?): Keypair; agree(mySecret, theirPublic): Uint8Array }.
  • REQ-ENG-004: @suaveplan/crypto exports SealedBoxEngine interface: { seal(recipientPublic, plaintext): Uint8Array; open(recipientSecret, recipientPublic, ciphertext): Uint8Array }.
  • REQ-ENG-005: @suaveplan/crypto exports AuthBoxEngine interface: { seal(senderSecret, recipientPublic, plaintext, nonce): Uint8Array; open(senderPublic, recipientSecret, ciphertext, nonce): Uint8Array }.

Algorithm type identifiers

  • REQ-ENG-010: AeadAlgorithm = "AES-256-GCM" | "ChaCha20-Poly1305" | "XChaCha20-Poly1305".
  • REQ-ENG-011: SignAlgorithm = "Ed25519" | "ECDSA-P256".
  • REQ-ENG-012: AgreeAlgorithm = "X25519" | "ECDH-P256".

Engine interfaces are types only

  • REQ-ENG-020: Engine interfaces are exported as TypeScript interface declarations — no runtime class, no factory function, no registry. Consumers receive an engine instance as a plain object.
  • REQ-ENG-021: All engine interface methods that may fail throw CryptoError with appropriate codes.