Initial commit
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
/*
|
||||
* Copyright (c) 2014-2021 Thetya Team
|
||||
* Copyright (c) 2005-2011 Three Rings
|
||||
*
|
||||
* https://github.com/Thetya
|
||||
*/
|
||||
|
||||
package com.github.thetya.tools;
|
||||
|
||||
import static com.github.thetya.tools.Log.log;
|
||||
|
||||
import com.threerings.presents.util.SecureUtil;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.security.KeyPair;
|
||||
|
||||
/**
|
||||
* A simple utility to generate RSA key pairs, using the {@link SecureUtil#genRSAKeyPair(int)}
|
||||
* method. The generated keys are outputted to a plaintext file or the standard output, if saving to
|
||||
* a file is impossible.
|
||||
*/
|
||||
public class RsaKeypairGenerator {
|
||||
|
||||
/**
|
||||
* Used during the key pair generation, determines the key bits.
|
||||
*/
|
||||
private static int keyBits = 2048;
|
||||
|
||||
public static void main(final String... args) {
|
||||
if (args.length > 0) {
|
||||
try {
|
||||
keyBits = Integer.parseInt(args[0]);
|
||||
} catch (NumberFormatException e) {
|
||||
log.warning(
|
||||
"The passed argument is not an integer, falling back to the default key bits value.",
|
||||
"input",
|
||||
args[0]);
|
||||
}
|
||||
}
|
||||
|
||||
log.info("Generating a new RSA key pair...", "keyBits", keyBits);
|
||||
|
||||
// First generate the key pair itself.
|
||||
final KeyPair rsaKeyPair = SecureUtil.genRSAKeyPair(keyBits);
|
||||
|
||||
// Now get the keys
|
||||
final String privateKey = SecureUtil.RSAKeyToString(rsaKeyPair.getPrivate());
|
||||
final String publicKey = SecureUtil.RSAKeyToString(rsaKeyPair.getPublic());
|
||||
|
||||
try {
|
||||
final FileWriter writer = new FileWriter("keys.txt");
|
||||
writer.append("PUBLIC KEY\n");
|
||||
writer.append(publicKey);
|
||||
writer.append("\n\n");
|
||||
writer.append("PRIVATE KEY\n");
|
||||
writer.append(privateKey);
|
||||
|
||||
writer.flush();
|
||||
writer.close();
|
||||
|
||||
log.info("Done, see keys.txt.");
|
||||
} catch (IOException e) {
|
||||
log.warning(
|
||||
"Could not open a file writer, outputting the keys to the log instead.",
|
||||
"public",
|
||||
publicKey,
|
||||
"private",
|
||||
privateKey);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user