LacunaWebPKI: Sign Hash Batch

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.12.0.min.js"></script>

<h2>Web PKI - Sign Hash Batch</h2>
Batch count: 
<input id="batchCountInput" type="text" /><br/><br/>
<select id="certificateSelect"></select>
<button id="refreshButton" type="button">Refresh</button><br/><br/>
<button id="signHashBatchButton" type="button">Sign Batch</button>
<div id="logPanel"></div>
<div id="blockPanel">
</div>

CSS

#blockPanel {
    display: none;
    padding: 0.5em;
}

JavaScript

// ------------------------------------------------------------------------------------------
// LacunaWebPKI: Sign Hash Batch

var pki = new LacunaWebPKI('AiEAKi5sYWN1bmFzb2Z0d2FyZS5jb20sanNmaWRkbGUubmV0AAADAFBybwgAANjqpHQf3QgAAWdZXb1mfX0OvXPptndkKubdjvH2Bp2TAY3IW+i5PpTMtBmnQwYw4YMtouSaod41haOgzNYbyveZ6VFpjW1IVAQRlVh1yO66+W2jkNm/ZJLqn3bQ/KgSPnxRN8/6yCykZGw+kGe0mhaahRYXYAakzU8+MaRrTShwmJpr1ko1nPt9o62/9L32Jpaq2TZLQc++C/JzUT0FUX7ycsPD8FfucX/LN4NVh9rFlWN+iPRrZ5jHcYFA1OdG2wFMzBQyF311KNdx3An5xMj1BrHum4ocvNxM7RABh9YClezDlmdZTG7MLe8I/goKoVy/KQ/dN4g06ze+GW5hhU9Hj6CKgUaSriM=');

function start() {
    blockUI.start('Initializing component');
    pki.init({
        ready: onWebPkiReady,
        defaultFail: function (ex) {
            blockUI.stop();
            log('Error: ' + ex.userMessage + ' (' + ex.code + ')');
        },
        requiredApiVersion: pki.apiVersions.v1_5
    });
}

function onWebPkiReady () {
    refreshCertificates();
}

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

function signHashBatch() {
    var selectedCertThumb = $('#certificateSelect').val();
    log('Signing batch with certificate: ' + selectedCertThumb);
    var batch = generateBatch();
    var startTime = new Date().getTime();
    
    pki.signHashBatch({
        certificateThumbprint: selectedCertThumb,
        batch: batch,
        digestAlgorithm: 'SHA-256'
    }).success(function (result) {
        
        var timeInSeconds = ((new Date().getTime() - startTime) / 1000).toFixed(2);
        
        log('Signed ' + result.signatures.length + ' hashes in ' + timeInSeconds + 's');
        
        log('Speed: ' + ((batchCount * 60)/timeInSeconds).toFixed(2) + ' signatures / min');
    });
}

var batchCount = 50;

function generateBatch() {
    var batch = [];
    batchCount =...