// ═══════════════════════════════════════════════════════ // HMAC Generator // ═══════════════════════════════════════════════════════ async function generateHmac() { const message = document.getElementById('hmacMessage').value; const secret = document.getElementById('hmacSecret').value; const algorithm = document.getElementById('hmacAlgo').value; if (!message) return setStatus('hmacStatus', 'error', 'Enter a message.'); if (!secret) return setStatus('hmacStatus', 'error', 'Enter a secret key.'); const d = await apiPost('/api/hmac', { message, secret, algorithm }); if (d.success) { document.getElementById('hmacResults').innerHTML = `
${d.algorithm.toUpperCase()} HMAC
${d.hmac}
`; setStatus('hmacStatus', 'success', 'Generated ✓'); } else setStatus('hmacStatus', 'error', d.error); }