From 6444287caa2ad171086d0ce9d93761a897247e06 Mon Sep 17 00:00:00 2001 From: Abhishek Koneru Date: Thu, 24 Jul 2014 11:20:12 -0400 Subject: Generate asymmetric keys in the DRM. Adds methods to key client to generate asymmetric keys using algorithms RSA and DSA for a valid key sizes of 512, 1024, 2048,4096. The generated keys are archived in the database. Using the CLI, the public key(base64 encoded) can be retrieved by using the key-show command. The private key(base64 encoded) can be retrieved using the key-retrieve command. Ticket #1023 --- .../src/com/netscape/cmstools/key/KeyCLI.java | 12 ++++++ .../com/netscape/cmstools/key/KeyGenerateCLI.java | 47 ++++++++++++++++++---- 2 files changed, 52 insertions(+), 7 deletions(-) (limited to 'base/java-tools/src/com/netscape') diff --git a/base/java-tools/src/com/netscape/cmstools/key/KeyCLI.java b/base/java-tools/src/com/netscape/cmstools/key/KeyCLI.java index 1b8ae64b5..82235d278 100644 --- a/base/java-tools/src/com/netscape/cmstools/key/KeyCLI.java +++ b/base/java-tools/src/com/netscape/cmstools/key/KeyCLI.java @@ -93,6 +93,18 @@ public class KeyCLI extends CLI { if (info.getAlgorithm() != null) System.out.println(" Algorithm: "+info.getAlgorithm()); if (info.getSize() != null) System.out.println(" Size: "+info.getSize()); if (info.getOwnerName() != null) System.out.println(" Owner: "+info.getOwnerName()); + if (info.getPublicKey() != null) { + // Print out the Base64 encoded public key in the form of a blob, + // where the max line length is 64. + System.out.println(" Public Key: \n"); + String publicKey = info.getPublicKey(); + int i = 0; + for(i=0;i usages = null; String givenUsages = cmd.getOptionValue("usages"); if (givenUsages != null) { usages = Arrays.asList(givenUsages.split(",")); } - KeyRequestResponse response = keyCLI.keyClient.generateSymmetricKey(clientKeyId, keyAlgorithm, - Integer.parseInt(keySize), - usages, null); - + KeyRequestResponse response = null; + switch (keyAlgorithm) { + case KeyRequestResource.DES3_ALGORITHM: + case KeyRequestResource.DESEDE_ALGORITHM: + case KeyRequestResource.DES_ALGORITHM: + case KeyRequestResource.RC4_ALGORITHM: + case KeyRequestResource.AES_ALGORITHM: + case KeyRequestResource.RC2_ALGORITHM: + response = keyCLI.keyClient.generateSymmetricKey(clientKeyId, keyAlgorithm, + size, + usages, null); + break; + case KeyRequestResource.RSA_ALGORITHM: + case KeyRequestResource.DSA_ALGORITHM: + response = keyCLI.keyClient.generateAsymmetricKey(clientKeyId, keyAlgorithm, + size, + usages, null); + break; + default: + System.err.println("Error: Algorithm not supported."); + printHelp(); + System.exit(-1); + } MainCLI.printMessage("Key generation request info"); KeyCLI.printKeyRequestInfo(response.getRequestInfo()); } + } -- cgit