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

114 lines (113 loc) 5.9 kB
import { Decoder } from "./codec/tlsDecoder.js"; import { Encoder } from "./codec/tlsEncoder.js"; import { Commit } from "./commit.js"; import { ContentTypeName } from "./contentType.js"; import { CiphersuiteImpl } from "./crypto/ciphersuite.js"; import { Hash } from "./crypto/hash.js"; import { Signature } from "./crypto/signature.js"; import { GroupContext } from "./groupContext.js"; import { WireformatName } from "./wireformat.js"; import { Proposal } from "./proposal.js"; import { ProtocolVersionName } from "./protocolVersion.js"; import { Sender, SenderExternal, SenderMember, SenderNewMemberCommit, SenderNewMemberProposal } from "./sender.js"; export type FramedContentInfo = FramedContentApplicationData | FramedContentProposalData | FramedContentCommitData; export interface FramedContentApplicationData { contentType: "application"; applicationData: Uint8Array; } export interface FramedContentProposalData { contentType: "proposal"; proposal: Proposal; } export interface FramedContentCommitData { contentType: "commit"; commit: Commit; } export declare const encodeFramedContentApplicationData: Encoder<FramedContentApplicationData>; export declare const encodeFramedContentProposalData: Encoder<FramedContentProposalData>; export declare const encodeFramedContentCommitData: Encoder<FramedContentCommitData>; export declare const encodeFramedContentInfo: Encoder<FramedContentInfo>; export declare const decodeFramedContentApplicationData: Decoder<FramedContentApplicationData>; export declare const decodeFramedContentProposalData: Decoder<FramedContentProposalData>; export declare const decodeFramedContentCommitData: Decoder<FramedContentCommitData>; export declare const decodeFramedContentInfo: Decoder<FramedContentInfo>; export declare function toTbs(content: FramedContent, wireformat: WireformatName, context: GroupContext): FramedContentTBS; export type FramedContent = FramedContentData & FramedContentInfo; export interface FramedContentData { groupId: Uint8Array; epoch: bigint; sender: Sender; authenticatedData: Uint8Array; } export type FramedContentMember = FramedContent & { sender: SenderMember; }; export type FramedContentNewMemberCommit = FramedContent & { sender: SenderNewMemberCommit; }; export type FramedContentExternal = FramedContent & { sender: SenderExternal; }; export type FramedContentNewMemberProposal = FramedContent & { sender: SenderNewMemberProposal; }; export type FramedContentCommit = FramedContentData & FramedContentCommitData; export type FramedContentApplicationOrProposal = FramedContentData & (FramedContentApplicationData | FramedContentProposalData); export declare const encodeFramedContent: Encoder<FramedContent>; export declare const decodeFramedContent: Decoder<FramedContent>; type SenderInfo = SenderInfoMember | SenderInfoNewMemberCommit | SenderInfoExternal | SenderInfoNewMemberProposal; type SenderInfoMember = { senderType: "member"; context: GroupContext; }; type SenderInfoNewMemberCommit = { senderType: "new_member_commit"; context: GroupContext; }; type SenderInfoExternal = { senderType: "external"; }; type SenderInfoNewMemberProposal = { senderType: "new_member_proposal"; }; export declare const encodeSenderInfo: Encoder<SenderInfo>; export type FramedContentTBS = { protocolVersion: ProtocolVersionName; wireformat: WireformatName; content: FramedContent; } & SenderInfo; export type FramedContentTBSCommit = FramedContentTBS & { content: FramedContentCommit; }; export type FramedContentTBSApplicationOrProposal = FramedContentTBS & { content: FramedContentApplicationOrProposal; }; export type FramedContentTBSExternal = FramedContentTBS & (SenderInfoExternal | SenderInfoNewMemberCommit | SenderInfoNewMemberProposal); export declare const encodeFramedContentTBS: Encoder<FramedContentTBS>; export type FramedContentAuthData = FramedContentAuthDataCommit | FramedContentAuthDataApplicationOrProposal; export type FramedContentAuthDataCommit = { signature: Uint8Array; } & FramedContentAuthDataContentCommit; export type FramedContentAuthDataApplicationOrProposal = { signature: Uint8Array; } & FramedContentAuthDataContentApplicationOrProposal; type FramedContentAuthDataContentCommit = { contentType: "commit"; confirmationTag: Uint8Array; }; type FramedContentAuthDataContentApplicationOrProposal = { contentType: Exclude<ContentTypeName, "commit">; }; export declare const encodeFramedContentAuthData: Encoder<FramedContentAuthData>; export declare const decodeFramedContentAuthDataCommit: Decoder<FramedContentAuthDataContentCommit>; export declare function decodeFramedContentAuthData(contentType: ContentTypeName): Decoder<FramedContentAuthData>; export declare function verifyFramedContentSignature(signKey: Uint8Array, wireformat: WireformatName, content: FramedContent, auth: FramedContentAuthData, context: GroupContext, s: Signature): Promise<boolean>; export declare function signFramedContentTBS(signKey: Uint8Array, tbs: FramedContentTBS, s: Signature): Promise<Uint8Array>; export declare function signFramedContentApplicationOrProposal(signKey: Uint8Array, tbs: FramedContentTBSApplicationOrProposal, cs: CiphersuiteImpl): Promise<FramedContentAuthDataApplicationOrProposal>; export declare function createConfirmationTag(confirmationKey: Uint8Array, confirmedTranscriptHash: Uint8Array, h: Hash): Promise<Uint8Array>; export declare function verifyConfirmationTag(confirmationKey: Uint8Array, tag: Uint8Array, confirmedTranscriptHash: Uint8Array, h: Hash): Promise<boolean>; export declare function createContentCommitSignature(groupContext: GroupContext, wireformat: WireformatName, c: Commit, sender: Sender, authenticatedData: Uint8Array, signKey: Uint8Array, s: Signature): Promise<{ framedContent: FramedContentCommit; signature: Uint8Array; }>; export {};