You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jmeter.apache.org by se...@apache.org on 2013/08/28 10:39:46 UTC

svn commit: r1518104 - /jmeter/trunk/src/jorphan/org/apache/jorphan/exec/KeyToolUtils.java

Author: sebb
Date: Wed Aug 28 08:39:45 2013
New Revision: 1518104

URL: http://svn.apache.org/r1518104
Log:
Add helper class for working with Java keytool

Added:
    jmeter/trunk/src/jorphan/org/apache/jorphan/exec/KeyToolUtils.java   (with props)

Added: jmeter/trunk/src/jorphan/org/apache/jorphan/exec/KeyToolUtils.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/jorphan/org/apache/jorphan/exec/KeyToolUtils.java?rev=1518104&view=auto
==============================================================================
--- jmeter/trunk/src/jorphan/org/apache/jorphan/exec/KeyToolUtils.java (added)
+++ jmeter/trunk/src/jorphan/org/apache/jorphan/exec/KeyToolUtils.java Wed Aug 28 08:39:45 2013
@@ -0,0 +1,100 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * 
+ */
+
+package org.apache.jorphan.exec;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Utilities for working with Java keytool
+ */
+public class KeyToolUtils {
+
+    private KeyToolUtils() {
+        // not instantiable
+    }
+
+    /**
+     * Generate a self-signed keypair using the alias "jmeter",
+     * algorithm "RSA" and dname "cn=JMeter Proxy (DO NOT TRUST)"
+     * 
+     * @param keystore the keystore to create; must not exist
+     * @param password the password to use for the store and the key
+     * @param validity the validity period in days, greater than 0
+     * @throws InterruptedException 
+     * @throws IOException
+     */
+    public static void genkeypair(final File keystore, final String password, int validity) throws IOException, InterruptedException {
+        if (keystore.exists()) {
+            throw new IOException("Keystore already exists");
+        }
+        final File workingDir = keystore.getParentFile();
+        final SystemCommand nativeCommand = new SystemCommand(workingDir, null);
+        final List<String> arguments = new ArrayList<String>();
+        arguments.add("keytool"); // $NON-NLS-1$
+        arguments.add("-genkeypair"); // $NON-NLS-1$
+        arguments.add("-alias"); // $NON-NLS-1$
+        arguments.add("jmeter"); // $NON-NLS-1$
+        arguments.add("-dname"); // $NON-NLS-1$
+        arguments.add("cn=JMeter Proxy (DO NOT TRUST)"); // $NON-NLS-1$
+        arguments.add("-keyalg"); // $NON-NLS-1$
+        arguments.add("RSA"); // $NON-NLS-1$
+
+        arguments.add("-keystore"); // $NON-NLS-1$
+        arguments.add(keystore.getName());
+        arguments.add("-storepass"); // $NON-NLS-1$
+        arguments.add(password);
+        arguments.add("-keypass"); // $NON-NLS-1$
+        arguments.add(password);
+        arguments.add("-validity"); // $NON-NLS-1$
+        arguments.add(Integer.toString(validity));
+        int exitVal = nativeCommand.run(arguments);
+        if (exitVal != 0) {
+            throw new IOException("Command failed, code: " + exitVal + "\n" + nativeCommand.getOutResult());
+        }
+    }
+
+    /**
+     * List the contents of a keystore
+     * 
+     * @param keystore the keystore file
+     * @param storePass the keystore password
+     * @return the output from the command "keytool -list -v"
+     */
+    public static String list(final File keystore, final String storePass) throws IOException, InterruptedException {
+        final File workingDir = keystore.getParentFile();
+        final SystemCommand nativeCommand = new SystemCommand(workingDir, null);
+        final List<String> arguments = new ArrayList<String>();
+        arguments.add("keytool"); // $NON-NLS-1$
+        arguments.add("-list"); // $NON-NLS-1$
+        arguments.add("-v"); // $NON-NLS-1$
+
+        arguments.add("-keystore"); // $NON-NLS-1$
+        arguments.add(keystore.getName());
+        arguments.add("-storepass"); // $NON-NLS-1$
+        arguments.add(storePass);
+        int exitVal = nativeCommand.run(arguments);
+        if (exitVal != 0) {
+            throw new IOException("Command failed, code: " + exitVal + "\n" + nativeCommand.getOutResult());
+        }
+        return nativeCommand.getOutResult();
+    }
+}

Propchange: jmeter/trunk/src/jorphan/org/apache/jorphan/exec/KeyToolUtils.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: jmeter/trunk/src/jorphan/org/apache/jorphan/exec/KeyToolUtils.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision