diff options
Diffstat (limited to 'base/java-tools')
-rw-r--r-- | base/java-tools/src/com/netscape/cmstools/key/KeyRetrieveCLI.java | 126 |
1 files changed, 53 insertions, 73 deletions
diff --git a/base/java-tools/src/com/netscape/cmstools/key/KeyRetrieveCLI.java b/base/java-tools/src/com/netscape/cmstools/key/KeyRetrieveCLI.java index 5d882f7a6..92389c021 100644 --- a/base/java-tools/src/com/netscape/cmstools/key/KeyRetrieveCLI.java +++ b/base/java-tools/src/com/netscape/cmstools/key/KeyRetrieveCLI.java @@ -2,11 +2,9 @@ package com.netscape.cmstools.key; import java.io.File; import java.io.FileInputStream; -import java.io.FileNotFoundException; import java.util.Arrays; import javax.xml.bind.JAXBContext; -import javax.xml.bind.JAXBException; import javax.xml.bind.Marshaller; import javax.xml.bind.Unmarshaller; @@ -54,7 +52,7 @@ public class KeyRetrieveCLI extends CLI { options.addOption(option); } - public void execute(String[] args) { + public void execute(String[] args) throws Exception { // Always check for "--help" prior to parsing if (Arrays.asList(args).contains("--help")) { // Display usage @@ -81,95 +79,73 @@ public class KeyRetrieveCLI extends CLI { System.exit(-1); } - if(cmd.getOptions().length==0){ + if (cmd.getOptions().length == 0) { System.err.println("Error: Incorrect number of parameters provided."); printHelp(); System.exit(-1); } + String requestFile = cmd.getOptionValue("input"); Key keyData = null; if (requestFile != null) { - try { - JAXBContext context = JAXBContext.newInstance(KeyRecoveryRequest.class); - Unmarshaller unmarshaller = context.createUnmarshaller(); - FileInputStream fis = new FileInputStream(requestFile); - KeyRecoveryRequest req = (KeyRecoveryRequest) unmarshaller.unmarshal(fis); - - if (req.getKeyId() == null) { - System.err.println("Error: Key Id must be specified in the request file."); - System.exit(-1); - } - if (req.getCertificate() != null) { - keyData = keyCLI.keyClient.retrieveKeyByPKCS12(req.getKeyId(), req.getCertificate(), - req.getPassphrase()); - } else if (req.getPassphrase() != null) { - keyData = keyCLI.keyClient.retrieveKeyByPassphrase(req.getKeyId(), req.getPassphrase()); - } else if (req.getSessionWrappedPassphrase() != null) { - keyData = keyCLI.keyClient.retrieveKeyUsingWrappedPassphrase(req.getKeyId(), - Utils.base64decode(req.getTransWrappedSessionKey()), - Utils.base64decode(req.getSessionWrappedPassphrase()), - Utils.base64decode(req.getNonceData())); - } else if (req.getTransWrappedSessionKey() != null) { - keyData = keyCLI.keyClient.retrieveKey(req.getKeyId(), - Utils.base64decode(req.getTransWrappedSessionKey())); - } else { - keyData = keyCLI.keyClient.retrieveKey(req.getKeyId()); - } - } catch (JAXBException e) { - System.err.println("Error: Cannot parse the request file."); - if (verbose) - e.printStackTrace(); - System.exit(-1); - } catch (FileNotFoundException e) { - System.err.println("Error: Cannot locate file at path: " + requestFile); - if (verbose) - e.printStackTrace(); - System.exit(-1); - } catch (Exception e) { - System.err.println(e.getMessage()); - if (verbose) - e.printStackTrace(); + JAXBContext context = JAXBContext.newInstance(KeyRecoveryRequest.class); + Unmarshaller unmarshaller = context.createUnmarshaller(); + FileInputStream fis = new FileInputStream(requestFile); + KeyRecoveryRequest req = (KeyRecoveryRequest) unmarshaller.unmarshal(fis); + + if (req.getKeyId() == null) { + System.err.println("Error: Key ID must be specified in the request file."); System.exit(-1); } + if (req.getCertificate() != null) { + keyData = keyCLI.keyClient.retrieveKeyByPKCS12(req.getKeyId(), req.getCertificate(), + req.getPassphrase()); + + } else if (req.getPassphrase() != null) { + keyData = keyCLI.keyClient.retrieveKeyByPassphrase(req.getKeyId(), req.getPassphrase()); + + } else if (req.getSessionWrappedPassphrase() != null) { + keyData = keyCLI.keyClient.retrieveKeyUsingWrappedPassphrase(req.getKeyId(), + Utils.base64decode(req.getTransWrappedSessionKey()), + Utils.base64decode(req.getSessionWrappedPassphrase()), + Utils.base64decode(req.getNonceData())); + + } else if (req.getTransWrappedSessionKey() != null) { + keyData = keyCLI.keyClient.retrieveKey(req.getKeyId(), + Utils.base64decode(req.getTransWrappedSessionKey())); + + } else { + keyData = keyCLI.keyClient.retrieveKey(req.getKeyId()); + } + } else { // Using command line options. String keyId = cmd.getOptionValue("keyID"); String passphrase = cmd.getOptionValue("passphrase"); - try { - if (passphrase != null) { - keyData = keyCLI.keyClient.retrieveKeyByPassphrase(new KeyId(keyId), passphrase); - } else { - keyData = keyCLI.keyClient.retrieveKey(new KeyId(keyId)); - clientEncryption = false; - - // No need to return the encrypted data since encryption - //is done locally. - keyData.setEncryptedData(null); - } - } catch (Exception e) { - System.err.println(e.getMessage()); - if (verbose) - e.printStackTrace(); - System.exit(-1); + + if (passphrase != null) { + keyData = keyCLI.keyClient.retrieveKeyByPassphrase(new KeyId(keyId), passphrase); + + } else { + keyData = keyCLI.keyClient.retrieveKey(new KeyId(keyId)); + clientEncryption = false; + + // No need to return the encrypted data since encryption + // is done locally. + keyData.setEncryptedData(null); } } String outputFilePath = cmd.getOptionValue("output"); if (outputFilePath != null) { - try { - JAXBContext context = JAXBContext.newInstance(Key.class); - Marshaller marshaller = context.createMarshaller(); - marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); - marshaller.marshal(keyData, new File(outputFilePath)); - } catch (JAXBException e) { - System.err.println(e.getMessage()); - if (verbose) - e.printStackTrace(); - System.exit(-1); - } + JAXBContext context = JAXBContext.newInstance(Key.class); + Marshaller marshaller = context.createMarshaller(); + marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); + marshaller.marshal(keyData, new File(outputFilePath)); + } else { MainCLI.printMessage("Retrieve Key Information"); printKeyData(keyData); @@ -180,10 +156,14 @@ public class KeyRetrieveCLI extends CLI { System.out.println(" Key Algorithm: " + key.getAlgorithm()); System.out.println(" Key Size: " + key.getSize()); System.out.println(" Nonce data: " + Utils.base64encode(key.getNonceData())); - if(clientEncryption) + + if (clientEncryption) { System.out.println(" Encrypted Data:" + Utils.base64encode(key.getEncryptedData())); - if (!clientEncryption) + + } else { System.out.println(" Actual archived data: " + Utils.base64encode(key.getData())); + } + if (key.getP12Data() != null) { System.out.println(" Key data in PKCS12 format: " + key.getP12Data()); } |