package com.plectix.license.server;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.PrivateKey;
import java.security.PublicKey;
/**
* Generate a new public/private key pair, encode them to bytes,
* convert them to hex, and print them to stdout. These keys are
* used in the LicenseGenerator and LicenseController classes.
*
* @author ecemis
*
*/
public class KeyGenerator {
private static final int KEY_SIZE = 1024;
private static final String SECURITY_ALGORITHM = "RSA";
private String privateKeyEncodedHex;
private String publicKeyEncodedHex;
public KeyGenerator() {
super();
}
public final void generateKeys() throws NoSuchAlgorithmException {
// Generate keys
KeyPairGenerator generator = KeyPairGenerator.getInstance(SECURITY_ALGORITHM);
generator.initialize(KEY_SIZE);
KeyPair keyPair = generator.generateKeyPair();
PrivateKey privateKey = keyPair.getPrivate();
PublicKey publicKey = keyPair.getPublic();
// Encode them
byte[] privateKeyEncoded = privateKey.getEncoded();
byte[] publicKeyEncoded = publicKey.getEncoded();
// Convert to hex
privateKeyEncodedHex = ServerSecurityUtil.convertFromBytesToHexString(privateKeyEncoded);
publicKeyEncodedHex = ServerSecurityUtil.convertFromBytesToHexString(publicKeyEncoded);
}
public final String getPrivateKeyEncodedHex() {
return privateKeyEncodedHex;
}
public final String getPublicKeyEncodedHex() {
return publicKeyEncodedHex;
}
public static void main(String[] args) throws Exception {
KeyGenerator keyGenerator = new KeyGenerator();
keyGenerator.generateKeys();
// Output
System.out.println("private static final String PRIVATE_KEY_HEX = \"" + keyGenerator.getPrivateKeyEncodedHex() + "\";");
System.out.println("private static final String PUBLIC_KEY_HEX = \"" + keyGenerator.getPublicKeyEncodedHex() + "\";");
}
}