From 29d3422191fa076306b9cd0299b6c713cca990eb Mon Sep 17 00:00:00 2001 From: "Endi S. Dewata" Date: Mon, 8 Sep 2014 16:44:02 -0400 Subject: [PATCH] Added option to import user cert from CA. The user-cert-add CLI has been modified to provide an option to specify the serial number of the certificate to be imported from the CA. Ticket #1151 --- .../com/netscape/cmstools/user/UserCertAddCLI.java | 62 +++++++++++++++++----- 1 file changed, 48 insertions(+), 14 deletions(-) diff --git a/base/java-tools/src/com/netscape/cmstools/user/UserCertAddCLI.java b/base/java-tools/src/com/netscape/cmstools/user/UserCertAddCLI.java index 4fa60690eb9e1327e81ec6e641631bb3f3f25f69..4425e7003f7094837f644671b7e3acf8aaa2e711 100644 --- a/base/java-tools/src/com/netscape/cmstools/user/UserCertAddCLI.java +++ b/base/java-tools/src/com/netscape/cmstools/user/UserCertAddCLI.java @@ -20,11 +20,14 @@ package com.netscape.cmstools.user; import java.io.File; import java.util.Arrays; -import java.util.Scanner; import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.Option; +import org.apache.commons.io.FileUtils; +import com.netscape.certsrv.cert.CertClient; +import com.netscape.certsrv.cert.CertData; +import com.netscape.certsrv.dbs.certdb.CertId; import com.netscape.certsrv.user.UserCertData; import com.netscape.cmstools.cli.CLI; import com.netscape.cmstools.cli.MainCLI; @@ -44,13 +47,16 @@ public class UserCertAddCLI extends CLI { } public void printHelp() { - formatter.printHelp(getFullName() + " --input [OPTIONS...]", options); + formatter.printHelp(getFullName() + " [OPTIONS...]", options); } public void createOptions() { Option option = new Option(null, "input", true, "Input file"); option.setArgName("file"); - option.setRequired(true); + options.addOption(option); + + option = new Option(null, "serial", true, "Serial number of certificate in CA"); + option.setArgName("serial number"); options.addOption(option); } @@ -81,16 +87,44 @@ public class UserCertAddCLI extends CLI { System.exit(-1); } - String userId = cmdArgs[0]; - String file = cmd.getOptionValue("input"); - - // get cert from file - if (verbose) { - System.out.println("Reading cert from "+file+"."); - } - String encoded = new Scanner(new File(file)).useDelimiter("\\A").next(); - if (verbose) { - System.out.println(encoded); + String userID = cmdArgs[0]; + String inputFile = cmd.getOptionValue("input"); + String serialNumber = cmd.getOptionValue("serial"); + + String encoded; + + if (inputFile != null && serialNumber != null) { + System.err.println("Error: Conflicting options: --input and --serial."); + printHelp(); + System.exit(-1); + return; + + } else if (inputFile != null) { + if (verbose) { + System.out.println("Reading certificate from " + inputFile + "."); + } + + encoded = FileUtils.readFileToString(new File(inputFile)); + if (verbose) { + System.out.println(encoded); + } + + } else if (serialNumber != null) { + if (verbose) { + System.out.println("Downloading certificate " + serialNumber + "."); + } + + client = parent.getClient(); + CertClient certClient = new CertClient(client, "ca"); + + CertData certData = certClient.getCert(new CertId(serialNumber)); + encoded = certData.getEncoded(); + + } else { + System.err.println("Error: Missing input file or serial number."); + printHelp(); + System.exit(-1); + return; } UserCertData userCertData = new UserCertData(); @@ -100,7 +134,7 @@ public class UserCertAddCLI extends CLI { System.out.println(userCertData); } - userCertData = userCertCLI.userClient.addUserCert(userId, userCertData); + userCertData = userCertCLI.userClient.addUserCert(userID, userCertData); MainCLI.printMessage("Added certificate \"" + userCertData.getID() + "\""); -- 1.8.4.2