Files
medreport_mrb2b/packages/billing/lemon-squeezy/src/services/verify-hmac.ts
2025-06-08 16:18:30 +03:00

29 lines
668 B
TypeScript

function bufferToHex(buffer: ArrayBuffer) {
return Array.from(new Uint8Array(buffer))
.map((b) => b.toString(16).padStart(2, '0'))
.join('');
}
export async function createHmac({ key, data }: { key: string; data: string }) {
const encoder = new TextEncoder();
const encodedKey = encoder.encode(key);
const encodedData = encoder.encode(data);
const hmacKey = await crypto.subtle.importKey(
'raw',
encodedKey,
{
name: 'HMAC',
hash: 'SHA-256',
},
true,
['sign', 'verify'],
);
const signature = await crypto.subtle.sign('HMAC', hmacKey, encodedData);
const hex = bufferToHex(signature);
return { hex };
}