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
TypeScript
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>;
}