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
TypeScript
/**
*
* 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[]>;
}