UNPKG

@unchainedshop/plugins

Version:

Official plugin collection for the Unchained Engine with payment, delivery, and pricing adapters

21 lines (20 loc) 898 B
export const Security = { NONE: '', STATIC_SIGN: 'static-sign', DYNAMIC_SIGN: 'dynamic-sign', }; const generateSignature = ({ security, signKey }) => async (...parts) => { if (security.toLowerCase() === Security.STATIC_SIGN) return signKey; if (security.toLowerCase() === Security.NONE) return ''; const resultString = parts.filter(Boolean).join(''); const signKeyInBytes = Buffer.from(signKey, 'hex'); const key = await crypto.subtle.importKey('raw', Uint8Array.from(signKeyInBytes), { name: 'HMAC', hash: 'SHA-256' }, false, ['sign']); const signatureBinary = await crypto.subtle.sign('HMAC', key, new TextEncoder().encode(resultString)); const hmacSubtle = Array.from(new Uint8Array(signatureBinary)) .map((byte) => byte.toString(16).padStart(2, '0')) .join(''); return hmacSubtle; }; export default generateSignature;