Repository: ranger
Updated Branches:
  refs/heads/master 98cb80e33 -> 576b62ad0


Reduce code duplication in kms, where the console handling code is repeated 4 
times.

Change-Id: I604d7df25182c413236126812fd2a8a700962e1c

Signed-off-by: Colm O hEigeartaigh <cohei...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/ranger/repo
Commit: http://git-wip-us.apache.org/repos/asf/ranger/commit/576b62ad
Tree: http://git-wip-us.apache.org/repos/asf/ranger/tree/576b62ad
Diff: http://git-wip-us.apache.org/repos/asf/ranger/diff/576b62ad

Branch: refs/heads/master
Commit: 576b62ad0e9ec4ae6de270a4531eb7eb162d6d8e
Parents: 98cb80e
Author: Zsombor Gegesy <gzsom...@gmail.com>
Authored: Thu Nov 9 13:06:26 2017 +0100
Committer: Colm O hEigeartaigh <cohei...@apache.org>
Committed: Tue Nov 14 10:26:55 2017 +0000

----------------------------------------------------------------------
 .../apache/hadoop/crypto/key/ConsoleUtil.java   | 74 ++++++++++++++++++++
 .../apache/hadoop/crypto/key/DB2HSMMKUtil.java  | 37 +---------
 .../apache/hadoop/crypto/key/HSM2DBMKUtil.java  | 37 +---------
 .../hadoop/crypto/key/JKS2RangerUtil.java       | 38 +---------
 .../hadoop/crypto/key/Ranger2JKSUtil.java       | 37 +---------
 5 files changed, 81 insertions(+), 142 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ranger/blob/576b62ad/kms/src/main/java/org/apache/hadoop/crypto/key/ConsoleUtil.java
----------------------------------------------------------------------
diff --git a/kms/src/main/java/org/apache/hadoop/crypto/key/ConsoleUtil.java 
b/kms/src/main/java/org/apache/hadoop/crypto/key/ConsoleUtil.java
new file mode 100644
index 0000000..9f43740
--- /dev/null
+++ b/kms/src/main/java/org/apache/hadoop/crypto/key/ConsoleUtil.java
@@ -0,0 +1,74 @@
+/*
+ * 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.hadoop.crypto.key;
+
+import java.io.Console;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.charset.Charset;
+
+/**
+ * Utility class for reading passwords from the console.
+ *
+ */
+class ConsoleUtil {
+
+    /**
+     * Ask a password from console, and return as a char array.
+     * @param prompt the question which is prompted
+     * @return the password.
+     */
+    static char[] getPasswordFromConsole(String prompt) throws IOException {
+        return getStringPasswordFromConsole(prompt).toCharArray();
+    }
+
+    /**
+     * Ask a password from console, and return as a String.
+     * @param prompt the question which is prompted
+     * @return the password.
+     */
+    static String getStringPasswordFromConsole(String prompt) throws 
IOException {
+        String ret = null;
+        Console c = System.console();
+        if (c == null) {
+            System.out.print(prompt + " ");
+            InputStream in = System.in;
+            int max = 50;
+            byte[] b = new byte[max];
+            int l = in.read(b);
+            l--; // last character is \n
+            if (l > 0) {
+                byte[] e = new byte[l];
+                System.arraycopy(b, 0, e, 0, l);
+                ret = new String(e, Charset.defaultCharset());
+            }
+        } else {
+            char[] pwd = c.readPassword(prompt + " ");
+            if (pwd == null) {
+                ret = null;
+            } else {
+                ret = new String(pwd);
+            }
+        }
+        if (ret == null) {
+            ret = "";
+        }
+        return ret;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/ranger/blob/576b62ad/kms/src/main/java/org/apache/hadoop/crypto/key/DB2HSMMKUtil.java
----------------------------------------------------------------------
diff --git a/kms/src/main/java/org/apache/hadoop/crypto/key/DB2HSMMKUtil.java 
b/kms/src/main/java/org/apache/hadoop/crypto/key/DB2HSMMKUtil.java
index edbb299..ad85245 100644
--- a/kms/src/main/java/org/apache/hadoop/crypto/key/DB2HSMMKUtil.java
+++ b/kms/src/main/java/org/apache/hadoop/crypto/key/DB2HSMMKUtil.java
@@ -16,11 +16,6 @@
  */
 package org.apache.hadoop.crypto.key;
 
-import java.io.Console;
-import java.io.IOException;
-import java.io.InputStream;
-import java.nio.charset.Charset;
-
 import org.apache.hadoop.conf.Configuration;
 import org.apache.ranger.kms.dao.DaoManager;
 
@@ -71,7 +66,7 @@ public class DB2HSMMKUtil {
        
        private boolean doExportMKToHSM(String hsmType, String partitionName) {
                try {
-                       String partitionPassword = 
getPasswordFromConsole("Enter Password for the Partition "+partitionName+" : ");
+                       String partitionPassword = 
ConsoleUtil.getStringPasswordFromConsole("Enter Password for the Partition 
"+partitionName+" : ");
                        Configuration conf = 
RangerKeyStoreProvider.getDBKSConf();
                        conf.set(HSM_TYPE, hsmType);
                        conf.set(PARTITION_NAME, partitionName);
@@ -95,34 +90,4 @@ public class DB2HSMMKUtil {
                        throw new RuntimeException("Unable to import Master key 
from Ranger DB to HSM ", t);
                }
        }
-               
-       private String getPasswordFromConsole(String prompt) throws IOException 
{
-               String ret = null;
-               Console c=System.console();
-           if (c == null) {
-               System.out.print(prompt + " ");
-               InputStream in=System.in;
-               int max=50;
-               byte[] b=new byte[max];
-               int l= in.read(b);
-               l--;     //last character is \n
-               if (l>0) {
-                   byte[] e=new byte[l];
-                   System.arraycopy(b,0, e, 0, l);
-                   ret = new String(e, Charset.defaultCharset());
-               }
-           } else {
-               char[] pwd = c.readPassword(prompt + " ");
-               if (pwd == null) {
-                       ret = null;
-               }
-               else {
-                       ret = new String(pwd);
-               }
-           }
-           if (ret == null) {
-               ret = "";
-           }
-           return ret;
-       }       
 }

http://git-wip-us.apache.org/repos/asf/ranger/blob/576b62ad/kms/src/main/java/org/apache/hadoop/crypto/key/HSM2DBMKUtil.java
----------------------------------------------------------------------
diff --git a/kms/src/main/java/org/apache/hadoop/crypto/key/HSM2DBMKUtil.java 
b/kms/src/main/java/org/apache/hadoop/crypto/key/HSM2DBMKUtil.java
index 427e098..b330a01 100644
--- a/kms/src/main/java/org/apache/hadoop/crypto/key/HSM2DBMKUtil.java
+++ b/kms/src/main/java/org/apache/hadoop/crypto/key/HSM2DBMKUtil.java
@@ -16,11 +16,6 @@
  */
 package org.apache.hadoop.crypto.key;
 
-import java.io.Console;
-import java.io.IOException;
-import java.io.InputStream;
-import java.nio.charset.Charset;
-
 import org.apache.hadoop.conf.Configuration;
 import org.apache.ranger.kms.dao.DaoManager;
 
@@ -70,7 +65,7 @@ public class HSM2DBMKUtil {
        
        private void doImportMKFromHSM(String hsmType, String partitionName) {
                try {
-                       String partitionPassword = 
getPasswordFromConsole("Enter Password for the Partition "+partitionName+" : ");
+                       String partitionPassword = 
ConsoleUtil.getStringPasswordFromConsole("Enter Password for the Partition 
"+partitionName+" : ");
                        Configuration conf = 
RangerKeyStoreProvider.getDBKSConf();
                        conf.set(HSM_TYPE, hsmType);
                        conf.set(PARTITION_NAME, partitionName);
@@ -93,34 +88,4 @@ public class HSM2DBMKUtil {
                        throw new RuntimeException("Unable to import Master key 
from HSM to Ranger DB", t);
                }
        }
-               
-       private String getPasswordFromConsole(String prompt) throws IOException 
{
-               String ret = null;
-               Console c=System.console();
-           if (c == null) {
-               System.out.print(prompt + " ");
-               InputStream in=System.in;
-               int max=50;
-               byte[] b=new byte[max];
-               int l= in.read(b);
-               l--;     //last character is \n
-               if (l>0) {
-                   byte[] e=new byte[l];
-                   System.arraycopy(b,0, e, 0, l);
-                   ret = new String(e, Charset.defaultCharset());
-               }
-           } else {
-               char[] pwd = c.readPassword(prompt + " ");
-               if (pwd == null) {
-                       ret = null;
-               }
-               else {
-                       ret = new String(pwd);
-               }
-           }
-           if (ret == null) {
-               ret = "";
-           }
-           return ret;
-       }       
 }

http://git-wip-us.apache.org/repos/asf/ranger/blob/576b62ad/kms/src/main/java/org/apache/hadoop/crypto/key/JKS2RangerUtil.java
----------------------------------------------------------------------
diff --git a/kms/src/main/java/org/apache/hadoop/crypto/key/JKS2RangerUtil.java 
b/kms/src/main/java/org/apache/hadoop/crypto/key/JKS2RangerUtil.java
index 22dce0f..13833cb 100644
--- a/kms/src/main/java/org/apache/hadoop/crypto/key/JKS2RangerUtil.java
+++ b/kms/src/main/java/org/apache/hadoop/crypto/key/JKS2RangerUtil.java
@@ -17,12 +17,9 @@
 
 package org.apache.hadoop.crypto.key;
 
-import java.io.Console;
 import java.io.File;
 import java.io.FileInputStream;
-import java.io.IOException;
 import java.io.InputStream;
-import java.nio.charset.Charset;
 import java.security.KeyStore;
 import java.security.KeyStoreException;
 
@@ -75,8 +72,8 @@ public class JKS2RangerUtil {
        
        private void doImportKeysFromJKS(String keyStoreFileName, String 
keyStoreType) {
                try {
-                       char[] keyStorePassword = getPasswordFromConsole("Enter 
Password for the keystore FILE :");
-                       char[] keyPassword = getPasswordFromConsole("Enter 
Password for the KEY(s) stored in the keystore:");
+                       char[] keyStorePassword = 
ConsoleUtil.getPasswordFromConsole("Enter Password for the keystore FILE :");
+                       char[] keyPassword = 
ConsoleUtil.getPasswordFromConsole("Enter Password for the KEY(s) stored in the 
keystore:");
                        Configuration conf = 
RangerKeyStoreProvider.getDBKSConf();
                        RangerKMSDB rangerkmsDb = new RangerKMSDB(conf);        
        
                        DaoManager daoManager = rangerkmsDb.getDaoManager();
@@ -105,36 +102,5 @@ public class JKS2RangerUtil {
                        throw new RuntimeException("Unable to import keys from 
[" + keyStoreFileName + "] due to exception.", t);
                }
        }
-       
-       
-       private char[] getPasswordFromConsole(String prompt) throws IOException 
{
-               String ret = null;
-               Console c=System.console();
-           if (c == null) {
-               System.out.print(prompt + " ");
-               InputStream in=System.in;
-               int max=50;
-               byte[] b=new byte[max];
-               int l= in.read(b);
-               l--;     //last character is \n
-               if (l>0) {
-                   byte[] e=new byte[l];
-                   System.arraycopy(b,0, e, 0, l);
-                   ret = new String(e, Charset.defaultCharset());
-               }
-           } else {
-               char[] pwd = c.readPassword(prompt + " ");
-               if (pwd == null) {
-                       ret = null;
-               }
-               else {
-                       ret = new String(pwd);
-               }
-           }
-           if (ret == null) {
-               ret = "";
-           }
-           return ret.toCharArray();
-       }
 
 }

http://git-wip-us.apache.org/repos/asf/ranger/blob/576b62ad/kms/src/main/java/org/apache/hadoop/crypto/key/Ranger2JKSUtil.java
----------------------------------------------------------------------
diff --git a/kms/src/main/java/org/apache/hadoop/crypto/key/Ranger2JKSUtil.java 
b/kms/src/main/java/org/apache/hadoop/crypto/key/Ranger2JKSUtil.java
index 1abbf8e..f7c3e6d 100644
--- a/kms/src/main/java/org/apache/hadoop/crypto/key/Ranger2JKSUtil.java
+++ b/kms/src/main/java/org/apache/hadoop/crypto/key/Ranger2JKSUtil.java
@@ -16,13 +16,10 @@
  */
 package org.apache.hadoop.crypto.key;
 
-import java.io.Console;
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
-import java.io.InputStream;
 import java.io.OutputStream;
-import java.nio.charset.Charset;
 import java.security.KeyStore;
 import java.security.KeyStoreException;
 
@@ -76,8 +73,8 @@ public class Ranger2JKSUtil {
        
        private void doExportKeysFromJKS(String keyStoreFileName, String 
keyStoreType) {
                try {
-                       char[] keyStorePassword = getPasswordFromConsole("Enter 
Password for the keystore FILE :");
-                       char[] keyPassword = getPasswordFromConsole("Enter 
Password for the KEY(s) stored in the keystore:");
+                       char[] keyStorePassword = 
ConsoleUtil.getPasswordFromConsole("Enter Password for the keystore FILE :");
+                       char[] keyPassword = 
ConsoleUtil.getPasswordFromConsole("Enter Password for the KEY(s) stored in the 
keystore:");
                        Configuration conf = 
RangerKeyStoreProvider.getDBKSConf();
                        RangerKMSDB rangerkmsDb = new RangerKMSDB(conf);        
        
                        DaoManager daoManager = rangerkmsDb.getDaoManager();
@@ -105,33 +102,5 @@ public class Ranger2JKSUtil {
                }
        }
        
-       private char[] getPasswordFromConsole(String prompt) throws IOException 
{
-               String ret = null;
-               Console c=System.console();
-           if (c == null) {
-               System.out.print(prompt + " ");
-               InputStream in=System.in;
-               int max=50;
-               byte[] b=new byte[max];
-               int l= in.read(b);
-               l--;     //last character is \n
-               if (l>0) {
-                   byte[] e=new byte[l];
-                   System.arraycopy(b,0, e, 0, l);
-                   ret = new String(e, Charset.defaultCharset());
-               }
-           } else {
-               char[] pwd = c.readPassword(prompt + " ");
-               if (pwd == null) {
-                       ret = null;
-               }
-               else {
-                       ret = new String(pwd);
-               }
-           }
-           if (ret == null) {
-               ret = "";
-           }
-           return ret.toCharArray();
-       }
+
 }

Reply via email to