LacunaWebPKI: Sign Batch Example

by Lacuna Software

HTML

<script src="https://rawgit.com/malsup/blockui/316f6e5d76a33266970778e80507149d9ef6a02d/jquery.blockUI.js"></script>
<script src="https://get.webpkiplugin.com/Scripts/LacunaWebPKI/lacuna-web-pki-2.7.0.js"></script>

<h2>Web PKI - Sign Batch Example</h2>
<select id="certificateSelect"></select>
<button id="refreshButton" type="button">Refresh</button><br/><br/>
<button id="signFileButton" type="button">Sign Batch</button>
<div id="logPanel"></div>

JavaScript

// ------------------------------------------------------------------------------------------
// LacunaWebPKI: Sign Batch Example

var pki = new LacunaWebPKI('AiEAKi5sYWN1bmFzb2Z0d2FyZS5jb20sanNmaWRkbGUubmV0AAACAENBCAAAGD8P6XvgCAABL3ZCfMfZGteSXNb2XNHBws9WZcTv0FCVe4qlxUXgaMzx4iymA73nVrD55o+S83b/alfQHs2xoIoPd6qiBDqbefk4GDnc84efZAX4UV7sHYr5x6+IRZ+RjW1DVZkJ9vo2/3/JeSRnj1Yvn3jtDf77jz2osQkFC5jSLABzCMAC/LXqPhOdZcK8hoyWOaghcsGvb5eezEFeJl+nkjDgZ6PsggdDpyWwLBFru4IeSRLE1HeP6TE6g5RQFjFHqNNCFRpP23/FQGD9/YDi2mR07lUxznt92z8GYygkp6O0Nv3ltj3eDGzN89LlgTBgsA2upsm0tTIgkWTDsKvqY6TwfsQ5tA==');


var batch = [
    'SGVsbG8gV29ybGQh',      // 'Hello World!'  Base64 encoded
    'SGVsbG8gV2ViUEtJIQ==',  // 'Hello WebPKI!' Base64 encoded
    'SGVsbG8gQmF0Y2gh',      // 'Hello Batch!'  Base64 encoded
    'SGVMbE8gd09yTGQh',      // 'HeLlO wOrLd!'  Base64 encoded
    'SGVsbG8gQ3J5cHRvIQ=='   // 'Hello Crypto!' Base64 encoded
];

function start() {
    pki.init({
        ready: onWebPkiReady,
        defaultFail: function (ex) {
            log('Error: ' + ex.message + '(' + ex.code + ')');
        }
    });
}

function onWebPkiReady () {
    refreshCertificates();
}

function refreshCertificates() {
    pki.listCertificates({
        selectId: 'certificateSelect'
    }).success(function (certs) {
        log(certs.length + ' certificates found.');
    });
}

function authorizeBatch() {
    pki.preauthorizeSignatures({
        certificateThumbprint: $('#certificateSelect').val(),
        signatureCount: batch.length
    }).success(function () {
        signBatchItem(0); // start batch signatures
    });
}

function signBatchItem(i) {
    if (i >= batch.length) {
        log('Batch finished');
        return;
    }

    pki.signData({
        thumbprint: $('#certificateSelect').val(),
        data: batch[i],
        digestAlgorithm: 'SHA-256'
    }).success(function (signature) {
        log('Signature ' + i + ': ' + signature);
       ...