/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.utils.encryption;
import java.security.Key;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import de.rcenvironment.core.utils.encryption.EncryptionFactory.KeyBasedEncryptionAlgorithm;
/**
* Creates key pair for key-based encryption.
*
* @author Phillip Rohde
*/
public class KeyPairFactory {
private static final int RSA_ENCRYPTION_SIZE = 2048;
/**
* Create private-public key pair.
*
* @param algorithm key-based encryption algorithm to use
* @return key pair as array: first element is private key, second one is public
*/
public Key[] createKeyPair(KeyBasedEncryptionAlgorithm algorithm) {
Key[] keyPair = new Key[2];
KeyPairGenerator keygen;
try {
keygen = KeyPairGenerator.getInstance(algorithm.name());
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException("encryption algorithm RSA not supported");
}
keygen.initialize(RSA_ENCRYPTION_SIZE); // TAKES A LONG TIME BUT IS SECURE
KeyPair rsaKeys = keygen.genKeyPair();
keyPair[0] = rsaKeys.getPrivate();
keyPair[1] = rsaKeys.getPublic();
return keyPair;
}
}