1.6 KiB
1.6 KiB
Capability: crypto-engine-interfaces
ADDED Requirements
Engine interface types
- REQ-ENG-001:
@suaveplan/cryptoexportsAeadEngineinterface:{ encrypt(key, plaintext, nonce, aad?): Uint8Array; decrypt(key, ciphertext, nonce, aad?): Uint8Array }. - REQ-ENG-002:
@suaveplan/cryptoexportsSignEngineinterface:{ generateKeypair(byteSource?): Keypair; sign(secretKey, message): Uint8Array; verify(publicKey, signature, message): boolean }. - REQ-ENG-003:
@suaveplan/cryptoexportsAgreeEngineinterface:{ generateKeypair(byteSource?): Keypair; agree(mySecret, theirPublic): Uint8Array }. - REQ-ENG-004:
@suaveplan/cryptoexportsSealedBoxEngineinterface:{ seal(recipientPublic, plaintext): Uint8Array; open(recipientSecret, recipientPublic, ciphertext): Uint8Array }. - REQ-ENG-005:
@suaveplan/cryptoexportsAuthBoxEngineinterface:{ 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
interfacedeclarations — 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
CryptoErrorwith appropriate codes.