package com.subgraph.orchid.crypto;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.security.interfaces.RSAPrivateKey;
import java.security.interfaces.RSAPublicKey;
import com.subgraph.orchid.TorException;
public class TorPrivateKey {
static public TorPrivateKey generateNewKeypair() {
KeyPairGenerator generator = createGenerator();
generator.initialize(1024, new SecureRandom());
KeyPair pair = generator.generateKeyPair();
return new TorPrivateKey((RSAPrivateKey)pair.getPrivate(), (RSAPublicKey)pair.getPublic());
}
static KeyPairGenerator createGenerator() {
try {
return KeyPairGenerator.getInstance("RSA");
} catch (NoSuchAlgorithmException e) {
throw new TorException(e);
}
}
private final TorPublicKey publicKey;
private final RSAPrivateKey privateKey;
TorPrivateKey(RSAPrivateKey privateKey, RSAPublicKey publicKey) {
this.privateKey = privateKey;
this.publicKey = new TorPublicKey(publicKey);
}
public TorPublicKey getPublicKey() {
return publicKey;
}
public RSAPublicKey getRSAPublicKey() {
return publicKey.getRSAPublicKey();
}
public RSAPrivateKey getRSAPrivateKey() {
return privateKey;
}
}