Search in sources :

Example 1 with SMException

use of org.jpos.security.SMException in project jPOS by jpos.

the class JCESecurityModuleTest method testVerifyDCVVImplException2.

@Test
public void testVerifyDCVVImplException2() throws Throwable {
    String accountNo = null;
    Date expDate = ISODate.parseISODate("1310" + "01000000");
    String serviceCode = "226";
    String dcvv = "562";
    byte[] atc = ISOUtil.hex2byte("3210");
    try {
        jcesecmod.verifydCVV(accountNo, imkac, dcvv, expDate, serviceCode, atc, MKDMethod.OPTION_A);
        fail("Expected SMException to be thrown");
    } catch (SMException ex) {
        assertNull("ex.getMessage()", ex.getNested().getMessage());
    }
}
Also used : SMException(org.jpos.security.SMException) Date(java.util.Date) ISODate(org.jpos.iso.ISODate) Test(org.junit.Test)

Example 2 with SMException

use of org.jpos.security.SMException in project jPOS by jpos.

the class JCESecurityModuleTest method testVerifyDCVVImplException1.

@Test
public void testVerifyDCVVImplException1() throws Throwable {
    String accountNo = "";
    Date expDate = ISODate.parseISODate("1310" + "01000000");
    String serviceCode = "226";
    String dcvv = "562";
    byte[] atc = ISOUtil.hex2byte("3210");
    try {
        jcesecmod.verifydCVV(accountNo, imkac, dcvv, expDate, serviceCode, atc, MKDMethod.OPTION_A);
        fail("Expected SMException to be thrown");
    } catch (SMException ex) {
        assertEquals("ex.getMessage()", "String index out of range: -4", ex.getNested().getMessage());
    }
}
Also used : SMException(org.jpos.security.SMException) Date(java.util.Date) ISODate(org.jpos.iso.ISODate) Test(org.junit.Test)

Example 3 with SMException

use of org.jpos.security.SMException in project jPOS by jpos.

the class Console method exec.

public void exec(PrintStream outPS, PrintStream errPS, String[] args) {
    JCESecurityModule sm = new JCESecurityModule();
    Logger logger = new Logger();
    logger.addListener(new SimpleLogListener(outPS));
    sm.setLogger(logger, "jce-security-module");
    Properties cfgProps = new Properties();
    SimpleConfiguration cfg = new SimpleConfiguration(cfgProps);
    String commandName = null;
    // 10 is Maximum number of paramters for a command
    String[] commandParams = new String[10];
    outPS.println("Welcome to JCE Security Module console commander!");
    if (args.length == 0) {
        outPS.println("Usage: Console [-options] command [commandparameters...]");
        outPS.println("\nwhere options include:");
        outPS.println("    -lmk <filename>");
        outPS.println("                  to specify the Local Master Keys file");
        outPS.println("    -rebuildlmk   to rebuild new Local Master Keys");
        outPS.println("                  WARNING: old Local Master Keys gets overwritten");
        outPS.println("    -jce <provider classname>");
        outPS.println("                  to specify a JavaTM Cryptography Extension 1.2.1 provider");
        outPS.println("\nWhere command include: ");
        outPS.println("    GC <keyLength>");
        outPS.println("                  to generate a clear key component.");
        outPS.println("    FK <keyLength> <keyType> <component1> <component2> <component3>");
        outPS.println("                  to form a key from three clear components.");
        outPS.println("                  and returns the key encrypted under LMK");
        outPS.println("                  Odd parity is be forced before encryption under LMK");
        outPS.println("    CK <keyLength> <keyType> <KEYunderLMK>");
        outPS.println("                  to generate a key check value for a key encrypted under LMK.");
        outPS.println("    IK <keyLength> <keyType> <KEYunderKEK> ");
        outPS.println("       <kekLength> <kekType> <KEKunderLMK> <KEKcheckValue>");
        outPS.println("                  to import a key from encryption under KEK (eg. ZMK,TMK) to encryption under LMK");
        outPS.println("                  Odd parity is be forced before encryption under LMK");
        outPS.println("    KE <keyLength> <keyType> <KEYunderLMK> <KEYcheckValue> ");
        outPS.println("       <kekLength> <kekType> <KEKunderLMK> <KEKcheckValue> ");
        outPS.println("                  to translate (export) a key from encryption under LMK");
        outPS.println("                  to encryption under KEK (eg. ZMK,TMK)");
    } else {
        int argsCounter = 0;
        for (int j = 0; j < 10; j++) {
            if (argsCounter < args.length && args[argsCounter].toLowerCase().compareTo("-lmk") == 0) {
                argsCounter++;
                cfgProps.setProperty("lmk", args[argsCounter++]);
            }
            if (argsCounter < args.length && args[argsCounter].toLowerCase().compareTo("-jce") == 0) {
                argsCounter++;
                cfgProps.setProperty("provider", args[argsCounter++]);
            }
            if (argsCounter < args.length && args[argsCounter].toLowerCase().compareTo("-rebuildlmk") == 0) {
                argsCounter++;
                cfgProps.setProperty("rebuildlmk", "true");
            }
        }
        if (argsCounter < args.length) {
            commandName = args[argsCounter++];
            int i = 0;
            while (argsCounter < args.length) {
                commandParams[i++] = args[argsCounter++];
            }
        }
        // Configure JCE Security Module
        try {
            sm.setConfiguration(cfg);
        } catch (ConfigurationException e) {
            e.printStackTrace(errPS);
            return;
        }
        // Execute Command
        if (commandName != null) {
            try {
                short keyLength = (short) Integer.parseInt(commandParams[0]);
                if (commandName.toUpperCase().compareTo("GC") == 0) {
                    String clearKeyComponenetHexString = sm.generateClearKeyComponent(keyLength);
                } else if (commandName.toUpperCase().compareTo("FK") == 0) {
                    SecureDESKey KEYunderLMK = sm.formKEYfromThreeClearComponents(keyLength, commandParams[1].toUpperCase(), commandParams[2], commandParams[3], commandParams[4]);
                } else if (commandName.toUpperCase().compareTo("CK") == 0) {
                    byte[] keyCheckValue = sm.generateKeyCheckValue(new SecureDESKey(keyLength, commandParams[1].toUpperCase(), commandParams[2], ""));
                } else if (commandName.toUpperCase().compareTo("IK") == 0) {
                    SecureDESKey KEKunderLMK = new SecureDESKey((short) Integer.parseInt(commandParams[3]), commandParams[4].toUpperCase(), commandParams[5], commandParams[6]);
                    sm.importKey(keyLength, commandParams[1].toUpperCase(), ISOUtil.hex2byte(commandParams[2]), KEKunderLMK, true);
                } else if (commandName.toUpperCase().compareTo("KE") == 0) {
                    SecureDESKey KEKunderLMK = new SecureDESKey((short) Integer.parseInt(commandParams[4]), commandParams[5].toUpperCase(), commandParams[6], commandParams[7]);
                    SecureDESKey KEYunderLMK = new SecureDESKey(keyLength, commandParams[1].toUpperCase(), commandParams[2], commandParams[3]);
                    sm.exportKey(KEYunderLMK, KEKunderLMK);
                } else {
                    System.err.println("Unknown command: " + commandName);
                }
            } catch (SMException e) {
                e.printStackTrace(errPS);
            } catch (java.lang.NumberFormatException e) {
                errPS.println("Invalid KeyLength");
            }
        } else {
            errPS.println("No command specified");
        }
    }
}
Also used : SMException(org.jpos.security.SMException) Logger(org.jpos.util.Logger) Properties(java.util.Properties) SimpleLogListener(org.jpos.util.SimpleLogListener) ConfigurationException(org.jpos.core.ConfigurationException) SimpleConfiguration(org.jpos.core.SimpleConfiguration) SecureDESKey(org.jpos.security.SecureDESKey)

Aggregations

SMException (org.jpos.security.SMException)3 Date (java.util.Date)2 ISODate (org.jpos.iso.ISODate)2 Test (org.junit.Test)2 Properties (java.util.Properties)1 ConfigurationException (org.jpos.core.ConfigurationException)1 SimpleConfiguration (org.jpos.core.SimpleConfiguration)1 SecureDESKey (org.jpos.security.SecureDESKey)1 Logger (org.jpos.util.Logger)1 SimpleLogListener (org.jpos.util.SimpleLogListener)1