Files
vercel_dashboard_example/.pnpm-store/v11/files/63/26616f688d060c5c8e644a0450a2ba066a6d3ef781edceb11d0a90621bb382546a41500ea5fddc03ff998dc27e9e39ac825e113d9e54d4793c17cfa5251e7c
T
2026-05-12 14:53:15 +00:00

24 lines
858 B
Plaintext

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const crypto_1 = require("crypto");
exports.default = (digest, ikm, salt, info, keylen) => {
const hashlen = parseInt(digest.substr(3), 10) >> 3 || 20;
const prk = (0, crypto_1.createHmac)(digest, salt.byteLength ? salt : new Uint8Array(hashlen))
.update(ikm)
.digest();
const N = Math.ceil(keylen / hashlen);
const T = new Uint8Array(hashlen * N + info.byteLength + 1);
let prev = 0;
let start = 0;
for (let c = 1; c <= N; c++) {
T.set(info, start);
T[start + info.byteLength] = c;
T.set((0, crypto_1.createHmac)(digest, prk)
.update(T.subarray(prev, start + info.byteLength + 1))
.digest(), start);
prev = start;
start += hashlen;
}
return T.slice(0, keylen);
};