UNPKG

2key-ratchet

Version:

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

102 lines (101 loc) 2.61 kB
/** * * 2key-ratchet * Copyright (c) 2016 Peculiar Ventures, Inc * Based on https://whispersystems.org/docs/specifications/doubleratchet/ and * https://whispersystems.org/docs/specifications/x3dh/ by Open Whisper Systems * */ import { HMACCryptoKey } from "../type"; export declare class Secret { /** * Returns ArrayBuffer of random bytes * * @static * @param {number} size size of output buffer * @returns * * @memberOf Secret */ static randomBytes(size: number): ArrayBuffer; /** * Calculates digest * * @static * @param {string} alg * @param {ArrayBuffer} message * @returns * * @memberOf Secret */ static digest(alg: string, message: ArrayBuffer): PromiseLike<ArrayBuffer>; /** * Encrypts data * * @static * @param {CryptoKey} key * @param {ArrayBuffer} data * @param {ArrayBuffer} iv * @returns * * @memberOf Secret */ static encrypt(key: CryptoKey, data: ArrayBuffer, iv: ArrayBuffer): PromiseLike<ArrayBuffer>; /** * Decrypts data * * @static * @param {CryptoKey} key * @param {ArrayBuffer} data * @param {ArrayBuffer} iv * @returns * * @memberOf Secret */ static decrypt(key: CryptoKey, data: ArrayBuffer, iv: ArrayBuffer): PromiseLike<ArrayBuffer>; /** * Creates HMAC key from raw data * * @static * @param {ArrayBuffer} raw * @returns * * @memberOf Secret */ static importHMAC(raw: ArrayBuffer): PromiseLike<CryptoKey>; /** * Creates AES key from raw data * * @static * @param {ArrayBuffer} raw * @returns * * @memberOf Secret */ static importAES(raw: ArrayBuffer): PromiseLike<CryptoKey>; /** * Calculates signature * * @static * @param {CryptoKey} key * @param {ArrayBuffer} data * @returns * * @memberOf Secret */ static sign(key: CryptoKey, data: ArrayBuffer): Promise<ArrayBuffer>; /** * HKDF rfc5869 * * @static * @param {ArrayBuffer} IKM input keying material * @param {number} [keysCount] amount of calculated keys * @param {CryptoKey} [salt] salt value (a non-secret random value) * - if not provided, it is set to a string of HashLen zeros. * @param {any} [info=new ArrayBuffer(0)] * @returns * * @memberOf AsymmetricRatchet */ static HKDF(IKM: ArrayBuffer, keysCount?: number, salt?: HMACCryptoKey, info?: ArrayBuffer): Promise<ArrayBuffer[]>; }