All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jgroups.demos.KeyStoreGenerator Maven / Gradle / Ivy


package org.jgroups.demos;

import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.security.KeyStore;
import java.security.NoSuchAlgorithmException;

/**
 * Generates a keystore file that has a SecretKey in it. It is not possible to
 * use keytool to achieve this. This is a simple way to generate a
 * JCEKS format keystore and SecretKey.
 * 
 * Usage is --alg ALGNAME --size ALGSIZE --storeName FILENAME --storePass
 * PASSWORD --alias KEYALIAS
 * 
 * Any of args are optional and will default to
 * 
    *
  • ALGNAME = Blowfish *
  • ALGSIZE = 56 *
  • FILENAME = defaultStore.keystore *
  • PASSWORD = changeit *
  • ALIAS = mykey *
* * @author S Woodcock * */ public final class KeyStoreGenerator { static String symAlg="AES"; static int keySize=128; static String keyStoreName="defaultStore.keystore"; static String storePass="changeit"; static String alias="myKey"; static String storeType="JCEKS"; private KeyStoreGenerator() { throw new InstantiationError( "Must not instantiate this class" ); } public static void main(String[] args) { int i=0; String arg=null; while(i < args.length && args[i].startsWith("-")) { arg=args[i++]; if(arg.equalsIgnoreCase("--alg")) { symAlg=args[i++]; continue; } if(arg.equalsIgnoreCase("--size")) { keySize=Integer.parseInt(args[i++]); continue; } if(arg.equalsIgnoreCase("--storeName")) { keyStoreName=args[i++]; continue; } if(arg.equalsIgnoreCase("--storeType")) { storeType=args[i++]; continue; } if(arg.equalsIgnoreCase("--storePass")) { storePass=args[i++]; continue; } if(arg.equalsIgnoreCase("--alias")) { alias=args[i++]; continue; } help(); return; } System.out.printf("Creating file '%s' using algorithm '%s' size '%d'\n", keyStoreName, symAlg, keySize); try(OutputStream stream=new FileOutputStream(keyStoreName)) { SecretKey key=createSecretKey(); KeyStore store=KeyStore.getInstance(storeType); store.load(null, null); store.setKeyEntry(alias, key, storePass.toCharArray(), null); store.store(stream, storePass.toCharArray()); } catch(Exception e) { e.printStackTrace(); } System.out.println("Finished keystore creation"); } protected static void help() { System.out.println("KeyStoreGenerator [-help] [--alg algorithm] [--size size] [--storeName name] " + "[--storeType type (e.g. JKS)] [--storePass password] [--alias alias]"); } public static SecretKey createSecretKey() throws Exception { return createSecretKey(symAlg, keySize); } public static SecretKey createSecretKey(String sym_alg, int key_size) throws NoSuchAlgorithmException { // KeyGenerator keyGen=KeyGenerator.getInstance(getAlgorithm(sym_alg)); KeyGenerator keyGen=KeyGenerator.getInstance(sym_alg); keyGen.init(key_size); return keyGen.generateKey(); } private static String getAlgorithm(String s) { int index=s.indexOf('/'); if(index == -1) return s; return s.substring(0, index); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy