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

44 lines 2.09 kB
import { decodeUint64, encodeUint64 } from "./codec/number.js"; import { mapDecoders } from "./codec/tlsDecoder.js"; import { contramapEncoders } from "./codec/tlsEncoder.js"; import { decodeVarLenData, decodeVarLenType, encodeVarLenData, encodeVarLenType } from "./codec/variableLength.js"; import { decodeCiphersuite, encodeCiphersuite } from "./crypto/ciphersuite.js"; import { expandWithLabel } from "./crypto/kdf.js"; import { decodeExtension, encodeExtension } from "./extension.js"; import { decodeProtocolVersion, encodeProtocolVersion } from "./protocolVersion.js"; export const encodeGroupContext = contramapEncoders([ encodeProtocolVersion, encodeCiphersuite, encodeVarLenData, // groupId encodeUint64, // epoch encodeVarLenData, // treeHash encodeVarLenData, // confirmedTranscriptHash encodeVarLenType(encodeExtension), ], (gc) => [gc.version, gc.cipherSuite, gc.groupId, gc.epoch, gc.treeHash, gc.confirmedTranscriptHash, gc.extensions]); export const decodeGroupContext = mapDecoders([ decodeProtocolVersion, decodeCiphersuite, decodeVarLenData, // groupId decodeUint64, // epoch decodeVarLenData, // treeHash decodeVarLenData, // confirmedTranscriptHash decodeVarLenType(decodeExtension), ], (version, cipherSuite, groupId, epoch, treeHash, confirmedTranscriptHash, extensions) => ({ version, cipherSuite, groupId, epoch, treeHash, confirmedTranscriptHash, extensions, })); export async function extractEpochSecret(context, joinerSecret, kdf, pskSecret) { const psk = pskSecret === undefined ? new Uint8Array(kdf.size) : pskSecret; const extracted = await kdf.extract(joinerSecret, psk); return expandWithLabel(extracted, "epoch", encodeGroupContext(context), kdf.size, kdf); } export async function extractJoinerSecret(context, previousInitSecret, commitSecret, kdf) { const extracted = await kdf.extract(previousInitSecret, commitSecret); return expandWithLabel(extracted, "joiner", encodeGroupContext(context), kdf.size, kdf); } //# sourceMappingURL=groupContext.js.map