gnablib
Version:
A lean, zero dependency library to provide a useful base for your project.
69 lines (68 loc) • 2.34 kB
TypeScript
/*! Copyright 2025 the gnablib contributors MPL-1.1 */
import { U64MutArray } from '../../primitive/number/U64.js';
import { IBlockCrypt } from '../interfaces/IBlockCrypt.js';
export declare class Tweak {
private readonly t8;
readonly t64: U64MutArray;
private _lock;
constructor(tweak?: Uint8Array);
set isFirst(value: boolean);
set isLast(value: boolean);
set lock(value: boolean);
incr(by: number): void;
makeCfg(blockSize: number): void;
makeKdf(): void;
makeMsg(): void;
makeOut(): void;
static NewKey(): Tweak;
}
export declare class Key {
private readonly k8;
readonly k64: U64MutArray;
private _lock;
private constructor();
get length(): number;
set lock(value: boolean);
static fromSize(size: number): Key;
static fromKey(key: Uint8Array): Key;
}
declare abstract class AThreefish {
#private;
readonly qr: number;
private readonly t;
readonly blockSize: number;
constructor(qr: number, key: Key, t: Tweak);
protected addRk(d: U64MutArray, r: number): void;
protected subRk(d: U64MutArray, r: number): void;
protected abstract _encBlock(data: Uint8Array): void;
protected abstract _decBlock(data: Uint8Array): void;
encryptBlock(block: Uint8Array, offset?: number): void;
decryptBlock(block: Uint8Array, offset?: number): void;
}
export declare class Threefish256 extends AThreefish implements IBlockCrypt {
constructor(key: Key | Uint8Array, tweak: Tweak | Uint8Array);
private swap;
private mixPerm;
private permUnmix;
protected _encBlock(data: Uint8Array): void;
protected _decBlock(data: Uint8Array): void;
}
export declare class Threefish512 extends AThreefish implements IBlockCrypt {
constructor(key: Key | Uint8Array, tweak: Tweak | Uint8Array);
private swap;
private unswap;
private mixPerm;
private permUnmix;
protected _encBlock(data: Uint8Array): void;
protected _decBlock(data: Uint8Array): void;
}
export declare class Threefish1024 extends AThreefish implements IBlockCrypt {
constructor(key: Key | Uint8Array, tweak: Tweak | Uint8Array);
private swap;
private unswap;
private mixPerm;
private permUnmix;
protected _encBlock(data: Uint8Array): void;
protected _decBlock(data: Uint8Array): void;
}
export {};