ts-mls
Version: 
[](https://github.com/LukaJCB/ts-mls/actions/workflows/ci.yml) [](https://badge.fury.io/js/ts-mls) [ • 1.73 kB
TypeScript
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>;