21 lines
1.2 KiB
JavaScript
21 lines
1.2 KiB
JavaScript
|
|
// ═══════════════════════════════════════════════════════
|
||
|
|
// 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 = `
|
||
|
|
<div class="result-row">
|
||
|
|
<div class="label">${d.algorithm.toUpperCase()} HMAC</div>
|
||
|
|
<div class="value" onclick="copyText(this.textContent)" title="Click to copy">${d.hmac}</div>
|
||
|
|
</div>`;
|
||
|
|
setStatus('hmacStatus', 'success', 'Generated ✓');
|
||
|
|
} else setStatus('hmacStatus', 'error', d.error);
|
||
|
|
}
|
||
|
|
|