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(); - } + }