ts-mls
Version:
[](https://github.com/LukaJCB/ts-mls/actions/workflows/ci.yml) [](https://badge.fury.io/js/ts-mls) [ • 1.71 kB
TypeScript
import { ContentTypeName } from "./contentType";
import { CiphersuiteImpl } from "./crypto/ciphersuite";
import { Kdf } from "./crypto/kdf";
import { KeyRetentionConfig } from "./keyRetentionConfig";
import { ReuseGuard, SenderData } from "./sender";
export type GenerationSecret = {
secret: Uint8Array;
generation: number;
unusedGenerations: Record<number, Uint8Array>;
};
export type SecretTreeNode = {
handshake: GenerationSecret;
application: GenerationSecret;
};
export type SecretTree = SecretTreeNode[];
export type 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>;