16 lines
571 B
TypeScript
16 lines
571 B
TypeScript
import { hkdfSync } from 'node:crypto'
|
|
|
|
/**
|
|
* Derive a key using HKDF-SHA256.
|
|
*
|
|
* @param ikm - Input keying material (string, will be UTF-8 encoded)
|
|
* @param salt - Salt value (string, will be UTF-8 encoded)
|
|
* @param info - Info/context string (will be UTF-8 encoded)
|
|
* @param length - Output key length in bytes (default: 32 for AES-256)
|
|
* @returns Derived key as Buffer
|
|
*/
|
|
export const hkdfSha256 = (ikm: string, salt: string, info: string, length = 32): Buffer => {
|
|
const derived = hkdfSync('sha256', ikm, salt, info, length)
|
|
return Buffer.from(derived)
|
|
}
|