UNPKG

edhoc

Version:

A Node.js implementation of EDHOC (Ephemeral Diffie-Hellman Over COSE) protocol for lightweight authenticated key exchange in IoT and other constrained environments.

23 lines (22 loc) 2.04 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getCipherSuiteParams = getCipherSuiteParams; // RFC 9528 Section 3.6 - Cipher Suites // Uses literal keys to avoid circular dependency with edhoc.ts const CIPHER_SUITES = { 0: { id: 0, aeadAlgorithm: 'AES-CCM-16-64-128', aeadKeyLength: 16, aeadTagLength: 8, aeadIvLength: 13, hashLength: 32, macLength: 8, eccKeyLength: 32, eccSignLength: 64 }, 1: { id: 1, aeadAlgorithm: 'AES-CCM-16-128-128', aeadKeyLength: 16, aeadTagLength: 16, aeadIvLength: 13, hashLength: 32, macLength: 16, eccKeyLength: 32, eccSignLength: 64 }, 2: { id: 2, aeadAlgorithm: 'AES-CCM-16-64-128', aeadKeyLength: 16, aeadTagLength: 8, aeadIvLength: 13, hashLength: 32, macLength: 8, eccKeyLength: 32, eccSignLength: 64 }, 3: { id: 3, aeadAlgorithm: 'AES-CCM-16-128-128', aeadKeyLength: 16, aeadTagLength: 16, aeadIvLength: 13, hashLength: 32, macLength: 16, eccKeyLength: 32, eccSignLength: 64 }, 4: { id: 4, aeadAlgorithm: 'ChaCha20/Poly1305', aeadKeyLength: 32, aeadTagLength: 16, aeadIvLength: 12, hashLength: 32, macLength: 16, eccKeyLength: 32, eccSignLength: 64 }, 5: { id: 5, aeadAlgorithm: 'ChaCha20/Poly1305', aeadKeyLength: 32, aeadTagLength: 16, aeadIvLength: 12, hashLength: 32, macLength: 16, eccKeyLength: 32, eccSignLength: 64 }, 6: { id: 6, aeadAlgorithm: 'AES-GCM-128', aeadKeyLength: 16, aeadTagLength: 16, aeadIvLength: 12, hashLength: 32, macLength: 16, eccKeyLength: 32, eccSignLength: 64 }, 24: { id: 24, aeadAlgorithm: 'AES-GCM-256', aeadKeyLength: 32, aeadTagLength: 16, aeadIvLength: 12, hashLength: 48, macLength: 16, eccKeyLength: 56, eccSignLength: 114 }, 25: { id: 25, aeadAlgorithm: 'ChaCha20/Poly1305', aeadKeyLength: 32, aeadTagLength: 16, aeadIvLength: 12, hashLength: 32, macLength: 16, eccKeyLength: 32, eccSignLength: 64 }, }; function getCipherSuiteParams(suite) { const params = CIPHER_SUITES[suite]; if (!params) throw new Error(`Unsupported cipher suite: ${suite}`); return params; }