/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package hsmexampleconsole;
import java.util.Scanner;
import objects.Keys;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import utils.ExampleHSM;
import utils.Utils;
/**
*
* @author TuoiCM
*/
public class HSMExampleConsole {
//
private static final Logger logger = LoggerFactory.getLogger(HSMExampleConsole.class);
private static final String KEY_ID_HARDCODE = "d6e28252-3097-4697-bb29-658284682bc3";
private static final String KEY_LABEL_HARDCODE = "d6e28252-3097-4697-bb29-658284682bc3";
private static final String COUNTRY_HARDCODE = "VN";
private static final String MNEMONIC = "HAN";
private static final String SEQUENCE = "00000";
private static final String HASH_HARDCODE = "ply4GS4qKDlx3lwARzhnxbzZmevgwQs8Tq3B7MQFvx8=";
private static final String ENCODING_BASE64 = "base64";
//
//
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
try {
String is64 = System.getProperty("sun.arch.data.model");
System.out.println("YOUR SYSTEM SUPPORTS " + is64 + " BIT");
processHSM();
} catch (Exception ex) {
logger.error(Utils.printStackTrace(ex));
}
}
//
//
private static void showMenu() {
System.out.println("1. INIT HSM");
System.out.println("2. LIST KEY HSM");
System.out.println("3. GEN KEY HSM");
System.out.println("4. CVC REQUEST HSM");
System.out.println("5. GEN SIGNATURE HSM");
System.out.println("6. EXIT");
}
//
//
private static void processHSM() {
try {
Scanner sc = new Scanner(System.in);
int choice = 0;
while (true) {
showMenu();
System.out.println("ENTERT OPTION");
choice = sc.nextInt();
switch (choice) {
case 1: //Init
System.out.println("INIT HSM...");
ExampleHSM.init();
break;
case 2: // List Key
System.out.println("LIST KEY...");
Keys[] keyses = ExampleHSM.getKeys();
if (null != keyses && keyses.length > 0) {
for (Keys keyse : keyses) {
logger.debug("KEY ID/KEY LABEL LIST " + keyse.getKeyId() + "/" + keyse.getKeyLabel());
}
} else {
logger.warn("LIST KEY IS NULL");
}
break;
case 3: // Gen Key
System.out.println("GEN KEY...");
Keys[] keysGen = ExampleHSM.generateKeyPari(null, null, null);
if (null != keysGen && keysGen.length > 0) {
for (Keys keys : keysGen) {
logger.debug("KEY ID/KEY LABEL GENERATE " + keys.getKeyId() + "/" + keys.getKeyLabel());
}
} else {
logger.warn("KEY GEN IS NULL");
}
break;
case 4: // CVC Requeset
System.out.println("CVC REQUEST...");
String cvcRequest = ExampleHSM.cvcRequest(COUNTRY_HARDCODE, MNEMONIC, SEQUENCE, null, KEY_ID_HARDCODE, KEY_LABEL_HARDCODE);
if(Utils.isNullOrEmpty(cvcRequest)) {
logger.warn("CVC REQUEST IS NULL");
} else {
logger.debug("CVC REQUEST\n" + cvcRequest);
}
break;
case 5: // Gen Signature
System.out.println("GEN SIGNATURE...");
String taSignature = ExampleHSM.getTASginature(KEY_ID_HARDCODE, KEY_LABEL_HARDCODE, HASH_HARDCODE, ENCODING_BASE64);
if(Utils.isNullOrEmpty(taSignature)) {
logger.warn("TA SIGNATURE IS NULL");
} else {
logger.debug("TA SIGNATURE\n" + taSignature);
}
break;
case 6:
System.out.println("BYE BYE");
ExampleHSM.destroy();
System.exit(0);
default:
showMenu();
System.out.println("INVALID OPTION. TRY AGAIN");
choice = sc.nextInt();
}
}
} catch (Exception e) {
logger.error("PROCESS HSM FAIL " + Utils.printStackTrace(e));
}
}
//
}