UNPKG

@newfadel/libsignal-node

Version:

Signal protocol implementation for Node.js - A ratcheting forward secrecy protocol for secure messaging

97 lines (85 loc) 3.39 kB
declare module "libsignal-node" { export interface KeyPair { pubKey: Buffer privKey: Buffer } export interface PreKey { keyId: number keyPair: KeyPair } export interface SignedPreKey extends PreKey { signature: Buffer } export interface PreKeyBundle { registrationId: number deviceId: number preKey?: PreKey signedPreKey: SignedPreKey identityKey: Buffer } export class ProtocolAddress { constructor(id: string, deviceId: number) static from(encodedAddress: string): ProtocolAddress id: string deviceId: number toString(): string is(other: ProtocolAddress): boolean } export class SessionBuilder { constructor(storage: any, protocolAddress: ProtocolAddress) initOutgoing(device: PreKeyBundle): Promise<void> initIncoming(record: SessionRecord, message: any): Promise<number | undefined> } export class SessionCipher { constructor(storage: any, protocolAddress: ProtocolAddress) encrypt(data: Buffer): Promise<{ type: number; body: Buffer; registrationId: number }> decryptWhisperMessage(data: Buffer): Promise<Buffer> decryptPreKeyWhisperMessage(data: Buffer): Promise<Buffer> hasOpenSession(): Promise<boolean> closeOpenSession(): Promise<void> } export class SessionRecord { static createEntry(): any static deserialize(data: any): SessionRecord serialize(): any haveOpenSession(): boolean getSession(key: Buffer): any setSession(session: any): void getSessions(): any[] closeSession(session: any): void openSession(session: any): void isClosed(session: any): boolean removeOldSessions(): void deleteAllSessions(): void } export namespace crypto { export function deriveSecrets(input: Buffer, salt: Buffer, info: Buffer, chunks?: number): Buffer[] export function decrypt(key: Buffer, data: Buffer, iv: Buffer): Buffer export function encrypt(key: Buffer, data: Buffer, iv: Buffer): Buffer export function hash(data: Buffer): Buffer export function calculateMAC(key: Buffer, data: Buffer): Buffer export function verifyMAC(data: Buffer, key: Buffer, mac: Buffer, length: number): void } export namespace curve { export function generateKeyPair(): KeyPair export function getPublicFromPrivateKey(privKey: Buffer): Buffer export function calculateAgreement(pubKey: Buffer, privKey: Buffer): Buffer export function calculateSignature(privKey: Buffer, message: Buffer): Buffer export function verifySignature(pubKey: Buffer, msg: Buffer, sig: Buffer, isInit?: boolean): boolean } export namespace keyhelper { export function generateIdentityKeyPair(): KeyPair export function generateRegistrationId(): number export function generateSignedPreKey(identityKeyPair: KeyPair, signedKeyId: number): SignedPreKey export function generatePreKey(keyId: number): PreKey } export class SignalError extends Error {} export class UntrustedIdentityKeyError extends SignalError { constructor(addr: string, identityKey: Buffer) addr: string identityKey: Buffer } export class SessionError extends SignalError {} export class MessageCounterError extends SessionError {} export class PreKeyError extends SessionError {} }