feat: Implement LiteHashDRBG and RNG utilities

- Added BytesLike type for handling various byte representations.
- Implemented LiteHashDRBG class for SHA-512 based deterministic random bit generator.
- Created RNG interface defining methods for random number generation.
- Developed RandUtil class providing utility functions for RNG operations.
- Added conversion functions for BytesLike to ArrayBuffer and Uint8Array.
- Implemented comprehensive tests for RNG functionality and expected behaviors.
- Configured Vitest for testing environment setup.
This commit is contained in:
2025-12-27 04:45:59 +00:00
parent 206aa64c64
commit b3875a111f
12 changed files with 1751 additions and 5 deletions
@@ -0,0 +1,17 @@
import type { BytesLike } from './BytesLike';
export function convertBytesLikeToArrayBuffer(data: BytesLike, encodeUTF8 = true): ArrayBuffer {
if (data instanceof ArrayBuffer) {
return data;
}
if (data instanceof Uint8Array) {
return data.buffer;
}
if (typeof (data) === 'string') {
if (encodeUTF8) {
return (new TextEncoder()).encode(data).buffer;
}
return new Uint8Array(data.split('').map((s) => s.codePointAt(0) as number)).buffer;
}
return data.buffer;
}