UNPKG

2key-ratchet

Version:

2key-ratchet is an implementation of a Double Ratchet protocol and X3DH in TypeScript utilizing WebCrypto.

54 lines (53 loc) 1.35 kB
import { IECKeyPair } from "./crypto/key_pair"; export declare type ECDHPublicKey = CryptoKey; export declare type ECDSAPublicKey = CryptoKey; export declare type ECDHPrivateKey = CryptoKey; export declare type RatchetKey = ECDHPublicKey; export declare type RatchetKeyPair = CryptoKeyPair; export declare type HMACCryptoKey = CryptoKey; export declare type ECKeyType = "ECDH" | "ECDSA"; export interface IDHRatchetItem { key: RatchetKeyPair; } export interface Identity { /** * remote client's string identity */ id: string; /** * Remote client's */ key: ECDSAPublicKey; } export interface ISession { identityId: string; } export interface ISymmetricKDFResult2 { rootKey: CryptoKey; bytes: Uint8Array; } export interface ISymmetricKDFResult { cipher: ArrayBuffer; rootKey: CryptoKey; } export interface IMessageProtocol { ratchetKey: ECDHPublicKey; message: ArrayBuffer; counter: number; } export interface IIdentityKeyPair { signingKey: IECKeyPair; exchangeKey: IECKeyPair; signature: ArrayBuffer; } export interface IPreKeyPair { id: number; key: IECKeyPair; } export interface IPreKeySignedPair extends IPreKeyPair { signature: ArrayBuffer; } export interface IJsonSerializable { toJSON(): Promise<any>; fromJSON(obj: any): Promise<void>; }