/** * Checksum and hash utilities for NehoID. * * This module provides various checksum and hashing algorithms * for ID validation, integrity checking, and data fingerprinting. * * Security notes: * - All algorithms here are NON-cryptographic (fast checksums). * Do NOT use for passwords, signatures, or security-critical hashing. * - `validate` / `tryValidate` use constant-time comparison to prevent * timing-based side-channel attacks. * - Inputs are normalised to UTF-8 bytes before hashing, ensuring * consistent results across environments (Node.js, browsers, Deno…). */ export type ChecksumAlgorithm = "djb2" | "crc32" | "adler32" | "fnv1a" | "murmur3"; /** Accepted input types (string or raw bytes). */ export type ChecksumInput = string | Uint8Array; export declare class ChecksumError extends Error { constructor(message: string); } /** * Encodes a string to a UTF-8 Uint8Array. * Falls back gracefully when TextEncoder is unavailable (very old runtimes). */ export declare function toBytes(input: ChecksumInput): Uint8Array; export declare class Checksum { static readonly MAX_INPUT_BYTES = 1048576; static readonly MIN_LENGTH = 1; static readonly MAX_LENGTH = 16; static readonly ALGORITHMS: readonly ChecksumAlgorithm[]; private constructor(); private static validateInput; private static computeHash; /** * Generates a checksum using the specified algorithm. * * @param input - String or Uint8Array to hash. * @param algorithm - Checksum algorithm (default: `"djb2"`). * @param length - Output length in base-36 characters, 1–16 (default: 4). * @returns Lowercase base-36 checksum of exactly `length` characters. * @throws {ChecksumError} On invalid parameters. * * @example * ```ts * Checksum.generate("hello world"); // e.g. "2a3b" * Checksum.generate("data", "crc32", 8); // 8-char CRC32 checksum * Checksum.generate(new Uint8Array([1,2,3])); // works with raw bytes * ``` */ static generate(input: ChecksumInput, algorithm?: ChecksumAlgorithm, length?: number): string; /** * Validates a checksum against input data using constant-time comparison. * * The comparison is timing-safe: it does not short-circuit on mismatch, * preventing timing-based side-channel leakage. * * @param input - Original input (string or Uint8Array). * @param checksum - Checksum to validate. * @param algorithm - Algorithm used when generating (default: `"djb2"`). * @param length - Length used when generating (default: 4). * @returns `true` if the checksum matches. * @throws {ChecksumError} On invalid parameters. * * @example * ```ts * const cs = Checksum.generate("important-data"); * Checksum.validate("important-data", cs); // true * ``` */ static validate(input: ChecksumInput, checksum: string, algorithm?: ChecksumAlgorithm, length?: number): boolean; /** * Like `generate`, but returns `null` instead of throwing. * * @example * ```ts * const cs = Checksum.tryGenerate(userInput); * if (cs === null) { /* handle error *\/ } * ``` */ static tryGenerate(input: ChecksumInput, algorithm?: ChecksumAlgorithm, length?: number): string | null; /** * Like `validate`, but returns `false` instead of throwing. */ static tryValidate(input: ChecksumInput, checksum: string, algorithm?: ChecksumAlgorithm, length?: number): boolean; } //# sourceMappingURL=checksum.d.ts.map