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

30 lines (29 loc) 1.73 kB
import { ContentTypeName } from "./contentType.js"; import { CiphersuiteImpl } from "./crypto/ciphersuite.js"; import { Kdf } from "./crypto/kdf.js"; import { KeyRetentionConfig } from "./keyRetentionConfig.js"; import { ReuseGuard, SenderData } from "./sender.js"; export interface GenerationSecret { secret: Uint8Array; generation: number; unusedGenerations: Record<number, Uint8Array>; } export interface SecretTreeNode { handshake: GenerationSecret; application: GenerationSecret; } export type SecretTree = SecretTreeNode[]; export interface ConsumeRatchetResult { nonce: Uint8Array; reuseGuard: ReuseGuard; key: Uint8Array; generation: number; newTree: SecretTree; } export declare function createSecretTree(leafWidth: number, encryptionSecret: Uint8Array, kdf: Kdf): Promise<SecretTree>; export declare function deriveNonce(secret: Uint8Array, generation: number, cs: CiphersuiteImpl): Promise<Uint8Array>; export declare function deriveKey(secret: Uint8Array, generation: number, cs: CiphersuiteImpl): Promise<Uint8Array>; export declare function ratchetUntil(current: GenerationSecret, desiredGen: number, config: KeyRetentionConfig, kdf: Kdf): Promise<GenerationSecret>; export declare function derivePrivateMessageNonce(secret: Uint8Array, generation: number, reuseGuard: Uint8Array, cs: CiphersuiteImpl): Promise<Uint8Array>; export declare function ratchetToGeneration(tree: SecretTree, senderData: SenderData, contentType: ContentTypeName, config: KeyRetentionConfig, cs: CiphersuiteImpl): Promise<ConsumeRatchetResult>; export declare function consumeRatchet(tree: SecretTree, index: number, contentType: ContentTypeName, cs: CiphersuiteImpl): Promise<ConsumeRatchetResult>;