generate-key-with-use-counter.js

Summary

Agree a common key between two SmartCard-HSM (requires V2.1)


/**
 *  ---------
 * |.##> <##.|  SmartCard-HSM Support Scripts
 * |#       #|
 * |#       #|  Copyright (c) 2011-2015 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 * Consult your license package for usage terms and conditions.
 *
 * @fileoverview Agree a common key between two SmartCard-HSM (requires V2.1)
 */

var SmartCardHSM = require('scsh/sc-hsm/SmartCardHSM').SmartCardHSM;
var SmartCardHSMKeySpecGenerator = require("scsh/sc-hsm/SmartCardHSM").SmartCardHSMKeySpecGenerator;
var HSMKeyStore = require("scsh/sc-hsm/HSMKeyStore").HSMKeyStore;


// Use default crypto provider
var crypto = new Crypto();

// Create card access object
var card = new Card(_scsh3.reader);

// Create SmartCard-HSM card service
var sc = new SmartCardHSM(card);

// Attach key store
var ks = new HSMKeyStore(sc);

// Login
sc.verifyUserPIN(new ByteString("648219", ASCII));

var label = "AESKey";

if (ks.hasKey(label)) {
	ks.deleteKey(label);
}

var spec = new SmartCardHSMKeySpecGenerator(Crypto.AES, 128);
spec.setAlgorithms(new ByteString("101118929499", HEX));
spec.setKeyUseCounter(100000000);

ks.generateKey(label, spec);


label = "ECKey";

if (ks.hasKey(label)) {
	ks.deleteKey(label);
}

var dp = new Key();
dp.setComponent(Key.ECC_CURVE_OID, new ByteString("brainpoolP256r1", OID));
var spec = new SmartCardHSMKeySpecGenerator(Crypto.EC, dp);
spec.setKeyUseCounter(100);

ks.generateKeyPair(label, spec);


label = "RSAKey";

if (ks.hasKey(label)) {
	ks.deleteKey(label);
}

var spec = new SmartCardHSMKeySpecGenerator(Crypto.RSA, 2048);
spec.setKeyUseCounter(100);

ks.generateKeyPair(label, spec);


Documentation generated by JSDoc on Sat Feb 24 15:17:19 2024