testcert.js
Summary
Perform a signature generation and verification using keys stored on a SmartCard-HSM with the issuercert.js scripts
load("../../icao/cvcertstore.js");
load("../lib/smartcardhsm.js");
load("../lib/hsmkeystore.js");
load("tools/eccutils.js");
var userPIN = new ByteString("648219", ASCII);
var crypto = new Crypto();
var card = new Card(_scsh3.reader);
card.reset(Card.RESET_COLD);
var sc = new SmartCardHSM(card);
sc.verifyUserPIN(userPIN);
var ks = new HSMKeyStore(sc);
var sccrypto = sc.getCrypto();
var message = new ByteString("Hello World", ASCII);
var keylist = ks.enumerateKeys();
for each (keyname in keylist) {
print("Key label: " + keyname);
var key = ks.getKey(keyname);
assert(key != null);
var cert = ks.getEndEntityCertificate(keyname);
assert(cert != null);
var publicKey = cert.getPublicKey();
if (keyname.indexOf("ECC") < 0) {
var signature = sccrypto.sign(key, Crypto.RSA, message);
print("Signature: " + signature.toString(HEX));
var ok = crypto.verify(publicKey, Crypto.RSA_SHA256, message, signature);
} else {
var signature = sccrypto.sign(key, Crypto.ECDSA, message);
print("Signature: " + signature.toString(HEX));
var ok = crypto.verify(publicKey, Crypto.ECDSA_SHA256, message, signature);
}
print("Signature verification " + (ok ? "passed" : "failed"));
}
Documentation generated by
JSDoc on Tue Sep 3 22:29:45 2013