use of com.ingrian.security.nae.NAESession in project CipherTrust_Application_Protection by thalescpl-io.
the class MultiThreadMacSample method main.
public static void main(String[] args) throws Exception {
if (args.length != 3) {
System.err.println("Usage: java MultiThreadMacSample user password mackeyname");
System.exit(-1);
}
String username = args[0];
String password = args[1];
String mackeyName = args[2];
// this sample will create 5 threads
int threadCount = 5;
// add Ingrian provider to the list of JCE providers
Security.addProvider(new IngrianProvider());
MultiThreadMacSample[] list = new MultiThreadMacSample[threadCount];
NAESession session = null;
try {
// create NAE Session: pass in Key Manager user name and password
session = NAESession.getSession(username, password.toCharArray());
// get the key
NAEKey key = NAEKey.getSecretKey(mackeyName, session);
for (int i = 0; i < threadCount; i++) {
list[i] = new MultiThreadMacSample(key);
}
for (int i = 0; i < threadCount; i++) {
list[i].start();
}
// wait for all threads to finish before closing session.
for (int i = 0; i < threadCount; i++) {
list[i].join();
}
session.closeSession();
} catch (Exception e) {
System.out.println("Got exception: " + e);
e.printStackTrace();
} finally {
if (session != null)
session.closeSession();
}
}
use of com.ingrian.security.nae.NAESession in project CipherTrust_Application_Protection by thalescpl-io.
the class RSAEncryptionSample method main.
public static void main(String[] args) throws Exception {
if (args.length != 3) {
System.err.println("Usage: java RSAEncryptionSample user password keyname");
System.exit(-1);
}
String username = args[0];
String password = args[1];
String keyName = args[2];
// add Ingrian provider to the list of JCE providers
Security.addProvider(new IngrianProvider());
// get the list of all registered JCE providers
Provider[] providers = Security.getProviders();
for (Provider provider : providers) {
System.out.println(provider.getInfo());
}
String dataToEncrypt = "dataToEncrypt";
System.out.println("Data to encrypt \"" + dataToEncrypt + "\"");
NAESession session = null;
try {
// create NAE Session: pass in NAE user name and password
session = NAESession.getSession(username, password.toCharArray());
// get RSA public key to encrypt data
// (just a key handle , key data does not leave the Key Manager)
NAEPublicKey pubKey = NAEKey.getPublicKey(keyName, session);
// get a cipher
Cipher encryptCipher = Cipher.getInstance("RSA", "IngrianProvider");
// initialize cipher to encrypt.
encryptCipher.init(Cipher.ENCRYPT_MODE, pubKey);
// encrypt data
byte[] outbuf = encryptCipher.doFinal(dataToEncrypt.getBytes());
// get private key to decrypt data
// (just a key handle , key data does not leave the Key Manager)
NAEPrivateKey privKey = NAEKey.getPrivateKey(keyName, session);
// get a cipher for decryption
Cipher decryptCipher = Cipher.getInstance("RSA", "IngrianProvider");
// to decrypt data, initialize cipher to decrypt
decryptCipher.init(Cipher.DECRYPT_MODE, privKey);
// decrypt data
byte[] newbuf = decryptCipher.doFinal(outbuf);
System.out.println("Decrypted data \"" + new String(newbuf) + "\"");
} catch (Exception e) {
e.printStackTrace();
throw e;
} finally {
if (session != null) {
// Close NAESession
session.closeSession();
}
}
}
use of com.ingrian.security.nae.NAESession in project CipherTrust_Application_Protection by thalescpl-io.
the class SignSample method main.
public static void main(String[] args) throws Exception {
if (args.length != 3 && args.length != 4) {
System.err.println("Usage: java SignSample user password keyname saltlength(optional)");
System.exit(-1);
}
String username = args[0];
String password = args[1];
String keyName = args[2];
PSSParameterSpec pssParameterSpec = null;
// Get PSSParameterSpec passing the saltlenth, if provided
if (args.length > 3)
pssParameterSpec = new PSSParameterSpec(Integer.parseInt(args[3]));
// data to sign
byte[] data = "dataToSign".getBytes();
// add Ingrian provider to the list of JCE providers
Security.addProvider(new IngrianProvider());
// get the list of all registered JCE providers
Provider[] providers = Security.getProviders();
for (int i = 0; i < providers.length; i++) System.out.println(providers[i].getInfo());
NAESession session = null;
try {
// create NAE Session: pass in Key Manager user name and password
session = NAESession.getSession(username, password.toCharArray());
// Create Signature object
Signature sig = Signature.getInstance("SHA256withRSAPSSPadding", "IngrianProvider");
// Sign data
// Get private key
NAEPrivateKey privKey = NAEKey.getPrivateKey(keyName, session);
// Set the PSSParameterSpec in the Signature Object if saltlength is provided
if (pssParameterSpec != null)
sig.setParameter(pssParameterSpec);
// Initialize Signature object for signing
sig.initSign(privKey);
sig.update(data);
byte[] signature = sig.sign();
// Verify signature
// Get public key
NAEPublicKey pubKey = NAEKey.getPublicKey(keyName, session);
// Set the PSSParameterSpec in the Signature Object if saltlength is provided
if (pssParameterSpec != null)
sig.setParameter(pssParameterSpec);
// Initialize Signature object for signature verification
sig.initVerify(pubKey);
sig.update(data);
if (sig.verify(signature))
System.out.println("Signature verified.");
else
System.out.println("Signature verification failed.");
} catch (Exception e) {
e.printStackTrace();
throw e;
} finally {
if (session != null)
// Close NAESession
session.closeSession();
}
}
use of com.ingrian.security.nae.NAESession in project CipherTrust_Application_Protection by thalescpl-io.
the class CustomLoggerSample method main.
public static void main(String[] args) throws Exception {
if (args.length != 3) {
System.err.println("Usage: java CustomLoggerSample user password keyname");
System.exit(-1);
}
String username = args[0];
String password = args[1];
String keyName = args[2];
// add Ingrian provider to the list of JCE providers
Security.addProvider(new IngrianProvider(new JavaUtilLogger()));
// get the list of all registered JCE providers
Provider[] providers = Security.getProviders();
for (int i = 0; i < providers.length; i++) System.out.println(providers[i].getInfo());
String dataToMac = "2D2D2D2D2D424547494E2050455253495354454E54204346EB17960";
System.out.println("Data to mac \"" + dataToMac + "\"");
NAESession session = null;
try {
// create HMAC key on the Key Manager
// create NAE Session: pass in Key Manager user name and password
session = NAESession.getSession(username, password.toCharArray());
// create key which is exportable and deletable,
// key owner is passed in Key Manager user.
// For HmacSHA1 key length 160 bits
// For HmacSHA256 key length is 256 bits
// For HmacSHA384 key length is 384 bits
// For HmacSHA512 key length is 512 bits
NAEParameterSpec spec = new NAEParameterSpec(keyName, true, true, 160, session);
KeyGenerator kg = KeyGenerator.getInstance("HmacSHA1", "IngrianProvider");
kg.init(spec);
SecretKey secret_key = kg.generateKey();
// get the handle to created key
NAEKey key = NAEKey.getSecretKey(keyName, session);
// create MAC instance to get the message authentication code
Mac mac = Mac.getInstance("HmacSHA1", "IngrianProvider");
mac.init(key);
byte[] macValue = mac.doFinal(dataToMac.getBytes());
// create MAC instance to verify the message authentication code
Mac macV = Mac.getInstance("HmacSHA1Verify", "IngrianProvider");
macV.init(key, new MACValue(macValue));
byte[] result = macV.doFinal(dataToMac.getBytes());
// check verification result
if (result.length != 1 || result[0] != 1) {
System.out.println("Invalid MAC.");
} else {
System.out.println("MAC Verified OK.");
}
} catch (Exception e) {
System.out.println("The Cause is " + e.getMessage() + ".");
throw e;
} finally {
if (session != null)
session.closeSession();
}
}
use of com.ingrian.security.nae.NAESession in project CipherTrust_Application_Protection by thalescpl-io.
the class CryptoDataUtilitySample method main.
public static void main(String[] args) throws Exception {
if (args.length != 5) {
System.out.println("Usage: java CryptoDataUtilitySample <username>" + " <password>" + " <keyname>" + "<transformation>" + "<text>");
System.exit(-1);
}
String userName = args[0];
String password = args[1];
String keyName = args[2];
String transformation = args[3];
String text = args[4];
byte[] plaintext = text.getBytes("UTF-8");
// change as needed
NAESession session = NAESession.getSession(userName, password.toCharArray());
// this constructor defaults to using SecureRandom for IV generation which is slow but more secure
CryptoDataUtility utility = new CryptoDataUtility(session);
// method will generate a random IV for you
byte[] ciphertext = utility.encrypt(plaintext, keyName, transformation);
System.out.println("Encrypted: " + new String(ciphertext, "UTF-8"));
byte[] decrypted = utility.decrypt(ciphertext);
System.out.println("Decrypted: " + new String(decrypted, "UTF-8"));
}
Aggregations