UNPKG

ts-mls

Version:

[![CI](https://github.com/LukaJCB/ts-mls/actions/workflows/ci.yml/badge.svg)](https://github.com/LukaJCB/ts-mls/actions/workflows/ci.yml) [![npm version](https://badge.fury.io/js/ts-mls.svg)](https://badge.fury.io/js/ts-mls) [![Coverage Status](https://co

229 lines 6.82 kB
import { contramapEncoder } from "../codec/tlsEncoder.js"; import { decodeUint16, encodeUint16 } from "../codec/number.js"; import { mapDecoderOption } from "../codec/tlsDecoder.js"; import { openEnumNumberEncoder, openEnumNumberToKey, reverseMap } from "../util/enumHelpers.js"; export const ciphersuites = { MLS_128_DHKEMX25519_AES128GCM_SHA256_Ed25519: 1, MLS_128_DHKEMP256_AES128GCM_SHA256_P256: 2, MLS_128_DHKEMX25519_CHACHA20POLY1305_SHA256_Ed25519: 3, MLS_256_DHKEMX448_AES256GCM_SHA512_Ed448: 4, MLS_256_DHKEMP521_AES256GCM_SHA512_P521: 5, MLS_256_DHKEMX448_CHACHA20POLY1305_SHA512_Ed448: 6, MLS_256_DHKEMP384_AES256GCM_SHA384_P384: 7, MLS_128_MLKEM512_AES128GCM_SHA256_Ed25519: 77, MLS_128_MLKEM512_CHACHA20POLY1305_SHA256_Ed25519: 78, MLS_256_MLKEM768_AES256GCM_SHA384_Ed25519: 79, MLS_256_MLKEM768_CHACHA20POLY1305_SHA384_Ed25519: 80, MLS_256_MLKEM1024_AES256GCM_SHA512_Ed25519: 81, MLS_256_MLKEM1024_CHACHA20POLY1305_SHA512_Ed25519: 82, MLS_256_XWING_AES256GCM_SHA512_Ed25519: 83, MLS_256_XWING_CHACHA20POLY1305_SHA512_Ed25519: 84, MLS_256_MLKEM1024_AES256GCM_SHA512_MLDSA87: 85, MLS_256_MLKEM1024_CHACHA20POLY1305_SHA512_MLDSA87: 86, MLS_256_XWING_AES256GCM_SHA512_MLDSA87: 87, MLS_256_XWING_CHACHA20POLY1305_SHA512_MLDSA87: 88, }; export const encodeCiphersuite = contramapEncoder(encodeUint16, openEnumNumberEncoder(ciphersuites)); export const decodeCiphersuite = mapDecoderOption(decodeUint16, openEnumNumberToKey(ciphersuites)); export function getCiphersuiteNameFromId(id) { return reverseMap(ciphersuites)[id]; } export function getCiphersuiteFromId(id) { return ciphersuiteValues[id]; } export function getCiphersuiteFromName(name) { return ciphersuiteValues[ciphersuites[name]]; } const ciphersuiteValues = { 1: { hash: "SHA-256", hpke: { kem: "DHKEM-X25519-HKDF-SHA256", aead: "AES128GCM", kdf: "HKDF-SHA256", }, signature: "Ed25519", name: "MLS_128_DHKEMX25519_AES128GCM_SHA256_Ed25519", }, 2: { hash: "SHA-256", hpke: { kem: "DHKEM-P256-HKDF-SHA256", aead: "AES128GCM", kdf: "HKDF-SHA256", }, signature: "P256", name: "MLS_128_DHKEMP256_AES128GCM_SHA256_P256", }, 3: { hash: "SHA-256", hpke: { kem: "DHKEM-X25519-HKDF-SHA256", aead: "CHACHA20POLY1305", kdf: "HKDF-SHA256", }, signature: "Ed25519", name: "MLS_128_DHKEMX25519_CHACHA20POLY1305_SHA256_Ed25519", }, 4: { hash: "SHA-512", hpke: { kem: "DHKEM-X448-HKDF-SHA512", aead: "AES256GCM", kdf: "HKDF-SHA512", }, signature: "Ed448", name: "MLS_256_DHKEMX448_AES256GCM_SHA512_Ed448", }, 5: { hash: "SHA-512", hpke: { kem: "DHKEM-P521-HKDF-SHA512", aead: "AES256GCM", kdf: "HKDF-SHA512", }, signature: "P521", name: "MLS_256_DHKEMP521_AES256GCM_SHA512_P521", }, 6: { hash: "SHA-512", hpke: { kem: "DHKEM-X448-HKDF-SHA512", aead: "CHACHA20POLY1305", kdf: "HKDF-SHA512", }, signature: "Ed448", name: "MLS_256_DHKEMX448_CHACHA20POLY1305_SHA512_Ed448", }, 7: { hash: "SHA-384", hpke: { kem: "DHKEM-P384-HKDF-SHA384", aead: "AES256GCM", kdf: "HKDF-SHA384", }, signature: "P384", name: "MLS_256_DHKEMP384_AES256GCM_SHA384_P384", }, 77: { hash: "SHA-256", hpke: { kem: "ML-KEM-512", aead: "AES256GCM", kdf: "HKDF-SHA512", }, signature: "Ed25519", name: "MLS_128_MLKEM512_AES128GCM_SHA256_Ed25519", }, 78: { hash: "SHA-256", hpke: { kem: "ML-KEM-512", aead: "CHACHA20POLY1305", kdf: "HKDF-SHA512", }, signature: "Ed25519", name: "MLS_128_MLKEM512_CHACHA20POLY1305_SHA256_Ed25519", }, 79: { hash: "SHA-384", hpke: { kem: "ML-KEM-768", aead: "AES256GCM", kdf: "HKDF-SHA512", }, signature: "Ed25519", name: "MLS_256_MLKEM768_AES256GCM_SHA384_Ed25519", }, 80: { hash: "SHA-384", hpke: { kem: "ML-KEM-768", aead: "CHACHA20POLY1305", kdf: "HKDF-SHA512", }, signature: "Ed25519", name: "MLS_256_MLKEM768_CHACHA20POLY1305_SHA384_Ed25519", }, 81: { hash: "SHA-512", hpke: { kem: "ML-KEM-1024", aead: "AES256GCM", kdf: "HKDF-SHA512", }, signature: "Ed25519", name: "MLS_256_MLKEM1024_AES256GCM_SHA512_Ed25519", }, 82: { hash: "SHA-512", hpke: { kem: "ML-KEM-1024", aead: "CHACHA20POLY1305", kdf: "HKDF-SHA512", }, signature: "Ed25519", name: "MLS_256_MLKEM1024_CHACHA20POLY1305_SHA512_Ed25519", }, 83: { hash: "SHA-512", hpke: { kem: "X-Wing", aead: "AES256GCM", kdf: "HKDF-SHA512", }, signature: "Ed25519", name: "MLS_256_XWING_AES256GCM_SHA512_Ed25519", }, 84: { hash: "SHA-512", hpke: { kem: "X-Wing", aead: "CHACHA20POLY1305", kdf: "HKDF-SHA512", }, signature: "Ed25519", name: "MLS_256_XWING_CHACHA20POLY1305_SHA512_Ed25519", }, 85: { hash: "SHA-512", hpke: { kem: "ML-KEM-1024", aead: "AES256GCM", kdf: "HKDF-SHA512", }, signature: "ML-DSA-87", name: "MLS_256_MLKEM1024_AES256GCM_SHA512_MLDSA87", }, 86: { hash: "SHA-512", hpke: { kem: "ML-KEM-1024", aead: "CHACHA20POLY1305", kdf: "HKDF-SHA512", }, signature: "ML-DSA-87", name: "MLS_256_MLKEM1024_CHACHA20POLY1305_SHA512_MLDSA87", }, 87: { hash: "SHA-512", hpke: { kem: "X-Wing", aead: "AES256GCM", kdf: "HKDF-SHA512", }, signature: "ML-DSA-87", name: "MLS_256_XWING_AES256GCM_SHA512_MLDSA87", }, 88: { hash: "SHA-512", hpke: { kem: "X-Wing", aead: "CHACHA20POLY1305", kdf: "HKDF-SHA512", }, signature: "ML-DSA-87", name: "MLS_256_XWING_CHACHA20POLY1305_SHA512_MLDSA87", }, }; //# sourceMappingURL=ciphersuite.js.map