@paddle/paddle-node-sdk
Version:
A Node.js SDK that you can use to integrate Paddle Billing with applications written in server-side JavaScript.
26 lines (25 loc) • 1.01 kB
JavaScript
const byteHexMapping = new Array(256);
for (let i = 0; i < byteHexMapping.length; i++) {
byteHexMapping[i] = i.toString(16).padStart(2, '0');
}
export class EdgeCrypto {
randomUUID() {
return crypto.randomUUID();
}
async computeHmac(payload, secret) {
const encoder = new TextEncoder();
const key = await crypto.subtle.importKey('raw', encoder.encode(secret), {
name: 'HMAC',
hash: { name: 'SHA-256' },
}, false, ['sign']);
const signatureBuffer = await crypto.subtle.sign('hmac', key, encoder.encode(payload));
const signatureBytes = new Uint8Array(signatureBuffer);
const signatureHexCodes = new Array(signatureBytes.length);
for (let i = 0; i < signatureBytes.length; i++) {
if (signatureBytes[i] !== undefined && signatureBytes[i] !== null) {
signatureHexCodes[i] = byteHexMapping[signatureBytes[i]];
}
}
return signatureHexCodes.join('');
}
}