JSFiddle - React, Tailwind, and code Playground
HTML
<script src="https://get.webpkiplugin.com/Scripts/LacunaWebPKI/lacuna-web-pki-2.6.1.min.js"></script>
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<select id="certificateSelect"></select>
<button id="signButton" type="button">Sign</button>
<div id="logPanel"></div>
JavaScript
// ------------------------------------------------------------------------------------------
// LacunaWebPKI: customized certificate selection
var pki = new LacunaWebPKI('ASYAanNmaWRkbGUubmV0LHdlYnBraS5sYWN1bmFzb2Z0d2FyZS5jb20AAAABClKvO1J22vAD+YmfANiKQLbcLE1lNraPKCel6tRM+ZxR+h6M/crtJYRRVGGz7hrdbM0Y0mfTu15RMYGqQMi1QNZS6GrT4vNzIayv552Fl0EFWQA7jWlctUwfYoHRHVEnCNx9YGXDiA9+yDoGlVwgTR7fjzNeS3Fen1MVIyKBF464gN0JvdiCRJMI47JGVDkPmKjcrYIvJs6y5Lg25RW4ZnBKVruS+HR2s3k8ZrV4y4RCQE4UYMKbukF9vsF+JqAEifRlPq2xLcrNdxBveVDSXS/LRHAcrZrMM+Iw4A79jl0ngWPcy+CwinAhT+3dxVo5ZWMRQFpmTkylEMDvTjV9wQ==');
var certificates = null;
function start() {
log('Initializing component ...');
pki.init(onWebPkiReady);
}
function onWebPkiReady () {
log('Component ready, listing certificates ...');
pki.listCertificates(
{
filter: pki.pkiBrazilCpfEquals('33207845878')
}
).success(function (certs) {
log(certs.length + ' certificates found.');
certs.sort(compareCerts);
certificates = certs;
var select = $('#certificateSelect');
for (var i = 0; i < certs.length; i++) {
var cert = certs[i];
select.append($('<option />').val(cert.thumbprint).text(getCertText(cert)));
}
});
}
function compareCerts(c1, c2) {
var t1 = getCertText(c1);
var t2 = getCertText(c2);
if (t1 < t2) {
return -1;
}
if (t1 > t2) {
return 1;
}
return 0;
}
function getCertText(cert) {
var text = cert.subjectName + ' (issued by ' + cert.issuerName + ')';
if (new Date() > cert.validityEnd) {
text = '[EXPIRED] ' + text;
}
return text;
}
function getSelectedCert() {
var selectedCertThumb = $('#certificateSelect').val();
for (var i = 0; i < certificates.length; i++) {
var cert = certificates[i];
if (cert.thumbprint == selectedCertThumb) {
return cert;
}
}
return null;
}
function sign() {
// get the selected certificate
var selectedCert = getSelectedCert();
// validate the certificate based on its properties
var now = new Date();
if (now > selectedCert.validityEnd)...