Web PKI - Asymmetric Decrypt Example

by Lacuna Software

HTML

<script type="text/javascript" src="https://cdn.lacunasoftware.com/libs/web-pki/lacuna-web-pki-2.16.1.min.js"
  crossorigin="anonymous"></script>

<h2>Web PKI - Asymmetric Decrypt Example</h2>
<p>Select a certificate:</p>
<select id="certificateSelect"></select>
<button id="refreshCertificates" type="button">Refresh Certificates</button>
<br/><br/>
<label>Encrypted message: </label>
<input id='inputMessage' />
<br/><br/>
<button id="decryptButton" type="button">Decrypt</button>
<h4>Logs:</h4>
<div id="logPanel"></div>

CSS

@import url(https://fonts.googleapis.com/css?family=Open+Sans:400,700);
body {
  font-family: 'Open Sans', sans-serif;
  font-style: normal;
  font-weight: 400;
  font-size: 14px;
}

#logPanel {
  font-family: monospace;
}

JavaScript

// ------------------------------------------------------------------------------------------
// Lacuna Web PKI - Asymmetric Decrypt

var webPkiLicense = 'AiEAKi5sYWN1bmFzb2Z0d2FyZS5jb20sanNmaWRkbGUubmV0AAADAFBybwgAABg/D+l74AgAAVP0dSRjd5vjlQ8EFzCfN2tOR/S2ENB6x1vRXssle+wxvbEeT3/vmzm7eKDMWr8kgl2W/BfUqYCOC0PnLOVKS8Em0OXtYD+F3WI1+3zQcvI2W34ppGVx1zizoRfyq+Q4KZ9rZPtFYyoBmr1SR5ZyWPqXWNY7p5XWFkxvFmQU11jho5Cd8VX6cv2OuOEw4eBptN5whzV+9XPHEmPav+TJB0hsYbw0TzwLC253i8WhJEQyIVenNGNNHT3foxsFmDTvXqF/HgjOwqgyJJ1hL0wIqsN0pB5weYhjGLwlRt1FqLV1xTScs5nP3xWTK/CPBpq3NDdTobQMsc7PEF46RT1qXbg=';

var pki = new LacunaWebPKI(webPkiLicense);

function start() {
  log('Initializing component...');
  
  pki.init({
    ready: onWebPkiReady,
    defaultFail: onWebPkiError,
    requiredApiVersion: pki.apiVersions.v1_8_0,
    notInstalled: onNotInstalled
  });
}

function onWebPkiReady() {
  log("Ready");
  refreshCertificates();
}

function onWebPkiError(ex) {
  log('Error: ' + ex.userMessage + ' (' + ex.code + ')');
}

function onNotInstalled(state) {
	var status = state === pki.installationStates.OUTDATED ? 'update' : 'install';
	alert('You need to ' + status + ' Web PKI plugin in order to continue');
  pki.redirectToInstallPage();
}

// ------------------------------------------
// List user certificates

function refreshCertificates() {
    $('#certificateSelect').empty();
    
    pki.listCertificates()
    .success(function (certs) {
        log(certs.length + ' certificates found.');
        certs.forEach(c => insertCertificate(c));
    });
}

function insertCertificate(cert) {
    var text = cert.subjectName + ' (Issuer: ' + cert.issuerName + ')';
    $('#certificateSelect').append($('<option />').val(cert.thumbprint).text(text));
}

// ------------------------------------------
// Decrypt message

function decryptMessage() {
    var data = $('#inputMessage').val();
    if (!data) {
      alert('Encrypted message input is empty');
   ...