$(document).ready(function() {
const $input = $('#cert-input');
const $details = $('#cert-details');
const $empty = $('#cert-empty-state');
const $error = $('#cert-error');
let lastInfo = null;
const process = async () => {
const val = $input.val().trim();
if (!val) {
$details.addClass('hidden');
$empty.removeClass('hidden');
$error.addClass('hidden');
lastInfo = null;
return;
}
try {
const info = await window.tauriApi.inspectCertificate(val);
lastInfo = info;
$('#cert-out-subject').text(info.subject);
$('#cert-out-issuer').text(info.issuer);
$('#cert-out-not-before').text(info.not_before);
$('#cert-out-not-after').text(info.not_after);
$('#cert-out-serial').text(info.serial);
$('#cert-out-san').text(info.san.length ? info.san.join(', ') : '—');
$('#cert-out-key-alg').text(info.key_algorithm);
$('#cert-out-sig-alg').text(info.sig_algorithm);
$('#cert-out-sha256').text(info.fingerprint_sha256);
$('#cert-out-sha1').text(info.fingerprint_sha1);
$('#cert-out-ca-badge').text('Is CA: ' + (info.is_ca ? 'Yes' : 'No'))
.toggleClass('bg-amber-500/20 text-amber-400 border-amber-500/40', info.is_ca)
.toggleClass('bg-gray-700/40 text-gray-400 border-gray-600/40', !info.is_ca);
$('#cert-expired-badge').toggleClass('hidden', !info.is_expired);
$details.removeClass('hidden');
$empty.addClass('hidden');
$error.addClass('hidden');
} catch (e) {
lastInfo = null;
$error.removeClass('hidden').text('Error: ' + e);
$details.addClass('hidden');
$empty.removeClass('hidden');
}
};
$input.on('input', process);
$('#cert-clear-btn').on('click', () => {
$input.val('').focus();
process();
});
$('#cert-file-btn').on('click', async () => {
try {
const filePath = await window.tauriApi.openFileDialog();
if (filePath) {
const text = await window.tauriApi.readTextFile(filePath);
$input.val(text);
process();
}
} catch (e) {
console.error('Certificate file open error', e);
$error.removeClass('hidden').text('File error: ' + e);
}
});
$('#cert-copy-btn').on('click', function() {
if (!lastInfo) return;
const text = [
'Subject: ' + lastInfo.subject,
'Issuer: ' + lastInfo.issuer,
'Serial: ' + lastInfo.serial,
'Valid From: ' + lastInfo.not_before,
'Valid Until: ' + lastInfo.not_after,
'SANs: ' + (lastInfo.san.join(', ') || '—'),
'Key Algorithm: ' + lastInfo.key_algorithm,
'Signature Algorithm: ' + lastInfo.sig_algorithm,
'SHA-256: ' + lastInfo.fingerprint_sha256,
'SHA-1: ' + lastInfo.fingerprint_sha1,
'Is CA: ' + (lastInfo.is_ca ? 'Yes' : 'No'),
].join('\n');
window.copyToClipboard(text, $(this));
});
});