/** * * @param {Uint8Array} key * @param {Uint8Array} nonce * @param {number} counter * @throws {Error} * * @constructor */ export declare class Chacha20 { readonly key: Uint8Array; readonly nonce: Uint8Array; readonly counter?: number; _rounds: number; _sigma: number[]; _param: number[]; _keystream: number[]; constructor(key: Uint8Array, nonce: Uint8Array, counter?: number); _byteCounter: number; _chacha(): void; /** * The basic operation of the ChaCha algorithm is the quarter round. * It operates on four 32-bit unsigned integers, denoted a, b, c, and d. * * @param {Array} output * @param {number} a * @param {number} b * @param {number} c * @param {number} d * @private */ private _quarterround; /** * Little-endian to uint 32 bytes * * @param {Uint8Array|[number]} data * @param {number} index * @return {number} * @private */ private _get32; /** * Cyclic left rotation * * @param {number} data * @param {number} shift * @return {number} * @private */ private _rotl; /** * Encrypt data with key and nonce * * @param {Uint8Array} data * @return {Uint8Array} */ encrypt(data: Uint8Array): Uint8Array; /** * Decrypt data with key and nonce * * @param {Uint8Array} data * @return {Uint8Array} */ decrypt(data: Uint8Array): Uint8Array; /** * Encrypt or Decrypt data with key and nonce * * @param {Uint8Array} data * @return {Uint8Array} * @private */ private _update; }