You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by co...@apache.org on 2017/11/14 10:36:53 UTC
ranger git commit: Reduce code duplication in kms,
where the console handling code is repeated 4 times.
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 <co...@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 <gz...@gmail.com>
Authored: Thu Nov 9 13:06:26 2017 +0100
Committer: Colm O hEigeartaigh <co...@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();
- }
+
}