Scope
Port Bun CryptoHasher input normalization and keyed digest behavior into the native corpus runtime without fixture rewrites or delegated Bun execution.
The complete js/bun/util corpus currently reaches 852 passes and first fails in js/bun/util/bun-cryptohasher.test.ts at HMAC sha1 with a String key. The harness accepts the string but stores plain byte arrays; the digest path later feeds an Array slice to TextDecoder, whose native contract requires an ArrayBuffer or view.
Required parity
- Normalize string, Buffer, ArrayBuffer, SharedArrayBuffer, ArrayBufferView, and Blob inputs into stable byte views with Bun-compatible offsets/lengths.
- Preserve Bun.file rejection behavior.
- Match keyed HMAC vectors, copy/digest lifecycle, algorithm aliases, encodings, and post-digest errors.
- Keep all upstream corpus files unchanged.
Acceptance
- packages/runtime/test/bun-corpus/js/bun/util/bun-cryptohasher.test.ts passes in the native Home runner.
- Neighboring hash/crypto and full js/bun/util tranches have no regressions.
- Commit and test evidence are linked back to #66.