var globalCerts = null;
function displayCerts(htmlObject, certs) {
var html = "";
var idx;
var cert;
var certObj;
if (certs.length == 0) {
htmlObject.innerHTML = "<b>No certificates found</b>";
return;
}
certObj = new X509;
html += "<ol type=\"1\">";
for (idx = 0; idx < certs.length; idx++) {
cert = certs[idx];
certObj.hex = BAtohex(new Uint8Array(cert.certificate));
html += "\t<li>";
html += "\t\t" + certObj.getSubjectString() + ":" + certObj.getSerialNumberHex();
html += "\t\t<ol type=\"a\">";
html += "\t\t\t<li>Serial Number: " + certObj.getSerialNumberHex() + "</li>";
html += "\t\t\t<li>Usage: " + X509.getExtKeyUsageString(certObj.hex) + "</li>";
html += "\t\t</ol>";
html += "\t</li>";
}
html += "</ol>";
delete certObj;
htmlObject.innerHTML = html;
}
function updateCertificates(htmlObject) {
var html = "";
if (globalCerts == null) {
htmlObject.innerHTML = "<i>Updating...</i>";
} else {
displayCerts(htmlObject, globalCerts);
}
parentWindow.cackeyListCertificates(function(certs) {
/*
* If there is an error then we are invoked with no certs
* parameter at all, fake one.
*/
if (!certs) {
certs = [];
}
globalCerts = certs;
displayCerts(htmlObject, certs);
});
return;
}
function updateCertificateProvider(htmlObject) {
var resultHTML;
if (chrome.certificateProvider) {
resultHTML = "Yes (ChromeOS)";
} else {
resultHTML = "<b>No, informational only.</b>";
}
htmlObject.innerHTML = resultHTML;
return;
}
setTimeout(function() {
updateCertificates(document.getElementById('certificates'));
updateCertificateProvider(document.getElementById('certificate_provider'));
}, 1);