@li0ard/kupyna
Version:
Kupyna (DSTU 7564:2014) hash function in pure TypeScript
48 lines (47 loc) • 1.51 kB
TypeScript
import { type Kupyna } from "../const.js";
import { type TArg, type TRet } from "../utils.js";
/** Abstract class for 256/512 bit */
export declare abstract class KupynaBase<T> implements Kupyna<KupynaBase<T>> {
readonly blockLen: number;
abstract readonly outputLen: number;
/** Rounds count */
abstract readonly rounds: number;
/** Offsets for transformations */
abstract readonly offsets: number[];
/** State size */
readonly stSize: number;
/** Threshold for padding */
readonly threshold: number;
protected s: BigUint64Array;
protected x: Uint8Array;
protected nx: number;
protected len: bigint;
constructor(blockLen: number);
abstract clone(): KupynaBase<T>;
/** Update hash buffer */
update(data: TArg<Uint8Array>): this;
digest(): TRet<Uint8Array>;
private final;
private byte;
private G;
private G1;
private G2;
private P;
private Q;
private outputTransform;
private transform;
private block;
}
/** Abstract class for derived versions (48/304/384 bit) */
export declare abstract class KupynaDerived<T> implements Kupyna<KupynaDerived<T>> {
hash: () => KupynaBase<T>;
protected readonly slice: number;
readonly outputLen: number;
readonly blockLen: number;
buffer: Uint8Array;
constructor(hash: () => KupynaBase<T>, slice: number);
abstract clone(): KupynaDerived<T>;
update(data: TArg<Uint8Array>): this;
digest(): TRet<Uint8Array>;
private final;
}