21 lines
523 B
TypeScript
21 lines
523 B
TypeScript
import { blake3 } from "@noble/hashes/blake3";
|
|
import { concatBytes } from "@noble/hashes/utils";
|
|
import { hkdf } from "@noble/hashes/hkdf";
|
|
import { sha256 } from "@noble/hashes/sha256";
|
|
|
|
export function deriveChildKey(
|
|
parentKey: Uint8Array,
|
|
tweak: string,
|
|
): Uint8Array {
|
|
return hkdf(sha256, parentKey, undefined, tweak, 32);
|
|
}
|
|
|
|
export function deriveBlakeChildKey(
|
|
parentKey: Uint8Array,
|
|
tweak: string,
|
|
): Uint8Array {
|
|
const tweakHash = blake3(tweak);
|
|
|
|
return blake3(concatBytes(parentKey, tweakHash));
|
|
}
|