aboutsummaryrefslogtreecommitdiffstats
path: root/vid/src/main/java/org/openecomp/vid/encryption/EncryptConvertor.java
diff options
context:
space:
mode:
Diffstat (limited to 'vid/src/main/java/org/openecomp/vid/encryption/EncryptConvertor.java')
-rw-r--r--vid/src/main/java/org/openecomp/vid/encryption/EncryptConvertor.java261
1 files changed, 261 insertions, 0 deletions
diff --git a/vid/src/main/java/org/openecomp/vid/encryption/EncryptConvertor.java b/vid/src/main/java/org/openecomp/vid/encryption/EncryptConvertor.java
new file mode 100644
index 000000000..51a5ee2e3
--- /dev/null
+++ b/vid/src/main/java/org/openecomp/vid/encryption/EncryptConvertor.java
@@ -0,0 +1,261 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * VID
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.openecomp.vid.encryption;
+
+import java.lang.Character;
+
+/**
+ * The Class EncryptConvertor.
+ */
+public class EncryptConvertor {
+
+ /** The Constant HEX_CHARS. */
+ private static final char[] HEX_CHARS = "0123456789abcdef".toCharArray();
+
+ /**
+ * toHexString(String) - convert a string into its hex equivalent.
+ *
+ * @param buf the buf
+ * @return the string
+ */
+ public final static String toHexString(String buf) {
+ if (buf == null) return "";
+ return toHexString(buf.getBytes());
+ }
+
+ /**
+ * toHexString(byte[]) - convert a byte-string into its hex equivalent.
+ *
+ * @param buf the buf
+ * @return the string
+ */
+ public final static String toHexString(byte[] buf) {
+
+ if (buf == null) return "";
+ char[] chars = new char[2 * buf.length];
+ for (int i = 0; i < buf.length; ++i) {
+ chars[2 * i] = HEX_CHARS[(buf[i] & 0xF0) >>> 4];
+ chars[2 * i + 1] = HEX_CHARS[buf[i] & 0x0F];
+ }
+ return new String(chars);
+ }
+
+ // alternate implementation that's slightly slower
+// protected static final byte[] Hexhars = {
+// '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'
+// };
+// public static String encode(byte[] b) {
+// StringBuilder s = new StringBuilder(2 * b.length);
+// for (int i = 0; i < b.length; i++) {
+// int v = b[i] & 0xff;
+// s.append((char)Hexhars[v >> 4]);
+// s.append((char)Hexhars[v & 0xf]);
+// }
+// return s.toString();
+// }
+
+ /**
+ * Convert a hex string to its equivalent value.
+ *
+ * @param hexString the hex string
+ * @return the string
+ * @throws Exception the exception
+ */
+ public final static String stringFromHex(String hexString) throws Exception
+ {
+ if (hexString == null) return "";
+ return stringFromHex(hexString.toCharArray());
+ }
+
+ /**
+ * String from hex.
+ *
+ * @param hexCharArray the hex char array
+ * @return the string
+ * @throws Exception the exception
+ */
+ public final static String stringFromHex(char[] hexCharArray)
+ throws Exception {
+ if (hexCharArray == null) return "";
+ return new String(bytesFromHex(hexCharArray));
+ }
+
+ /**
+ * Bytes from hex.
+ *
+ * @param hexString the hex string
+ * @return the byte[]
+ * @throws Exception the exception
+ */
+ public final static byte[] bytesFromHex(String hexString) throws Exception
+ {
+ if (hexString == null) return new byte[0];
+ return bytesFromHex(hexString.toCharArray());
+ }
+
+ /**
+ * Bytes from hex.
+ *
+ * @param hexCharArray the hex char array
+ * @return the byte[]
+ * @throws Exception the exception
+ */
+ public final static byte[] bytesFromHex(char[] hexCharArray)
+ throws Exception {
+ if (hexCharArray == null) return new byte[0];
+ int len = hexCharArray.length;
+ if ((len % 2) != 0) throw new Exception("Odd number of characters: '" + String.valueOf(hexCharArray) + "'");
+ byte [] txtInByte = new byte [len / 2];
+ int j = 0;
+ for (int i = 0; i < len; i += 2) {
+ txtInByte[j++] = (byte)(((fromHexDigit(hexCharArray[i], i) << 4) | fromHexDigit(hexCharArray[i+1], i)) & 0xFF);
+ }
+ return txtInByte;
+ }
+
+ /**
+ * From hex digit.
+ *
+ * @param ch the ch
+ * @param index the index
+ * @return the int
+ * @throws Exception the exception
+ */
+ protected final static int fromHexDigit(char ch, int index) throws Exception
+ {
+ int digit = Character.digit(ch, 16);
+ if (digit == -1) throw new Exception("Illegal hex character '" + ch + "' at index " + index);
+ return digit;
+ }
+
+ // UNIT TESTS (same junit, but we want to run from command line
+
+ /**
+ * Check to hex string B.
+ *
+ * @param arg the arg
+ * @param expected the expected
+ * @return true, if successful
+ */
+ public static boolean checkToHexStringB(String arg, String expected) {
+ String ret = toHexString(arg != null ? arg.getBytes() : null);
+ System.out.println("toHexString(" + arg + ")=> " + ret);
+ if (!ret.equals(expected)) System.out.println("\tWRONG, expected: " + expected);
+ return ret.equals(expected);
+ }
+
+ /**
+ * Check to hex string.
+ *
+ * @param arg the arg
+ * @param expected the expected
+ * @return true, if successful
+ */
+ public static boolean checkToHexString(String arg, String expected) {
+ String ret = toHexString(arg);
+ System.out.println("toHexString(" + arg + ")=> " + ret);
+ if (!ret.equals(expected)) System.out.println("\tWRONG, expected: " + expected);
+ return ret.equals(expected);
+ }
+
+ /**
+ * Check from hex string.
+ *
+ * @param arg the arg
+ * @param expected the expected
+ * @return true, if successful
+ */
+ public static boolean checkFromHexString(String arg, String expected) {
+ try {
+ String ret = stringFromHex(arg);
+ System.out.println("fromHexString(" + arg + ")=> " + ret);
+ if (!ret.equals(expected)) System.out.println("\tWRONG, expected: " + expected);
+ return ret.equals(expected);
+ } catch (Exception e) {
+ System.out.println("Caught exception: " + e.toString());
+ return false;
+ }
+ }
+
+ /**
+ * Check from hex string B.
+ *
+ * @param arg the arg
+ * @param expected the expected
+ * @return true, if successful
+ */
+ public static boolean checkFromHexStringB(String arg, String expected) {
+ try {
+ byte[] ret = bytesFromHex(arg);
+ String sret = new String(ret);
+ System.out.println("fromHexString(" + arg + ")=> " + sret);
+ if (!sret.equals(expected)) System.out.println("\tWRONG, expected: " + expected);
+ return sret.equals(expected);
+ } catch (Exception e) {
+ System.out.println("Caught exception: " + e.toString());
+ return false;
+ }
+ }
+
+
+ /**
+ * The main method.
+ *
+ * @param args the arguments
+ */
+ public static void main(String[] args) {
+ // TODO Auto-generated method stub
+ int pass = 0, fail = 0;
+ if (checkToHexString("", "")) pass++; else fail++;
+ if (checkToHexString(null, "")) pass++; else fail++;
+ if (checkToHexString("0", "30")) pass++; else fail++;
+ if (checkToHexString("abc", "616263")) pass++; else fail++;
+ if (checkToHexString("!@#$%^&*()", "21402324255e262a2829")) pass++; else fail++;
+ if (checkToHexStringB("", "")) pass++; else fail++;
+ if (checkToHexStringB(null, "")) pass++; else fail++;
+ if (checkToHexStringB("0", "30")) pass++; else fail++;
+ if (checkToHexStringB("abc", "616263")) pass++; else fail++;
+ if (checkToHexStringB("!@#$%^&*()", "21402324255e262a2829")) pass++; else fail++;
+ if (checkFromHexString("", "")) pass++; else fail++;
+ if (checkFromHexString(null, "")) pass++; else fail++;
+ if (checkFromHexString("30", "0")) pass++; else fail++;
+ if (checkFromHexString("616263", "abc")) pass++; else fail++;
+ if (checkFromHexString("21402324255e262a2829", "!@#$%^&*()")) pass++; else fail++;
+ if (checkFromHexStringB("", "")) pass++; else fail++;
+ if (checkFromHexStringB(null, "")) pass++; else fail++;
+ if (checkFromHexStringB("30", "0")) pass++; else fail++;
+ if (checkFromHexStringB("616263", "abc")) pass++; else fail++;
+ if (checkFromHexStringB("21402324255e262a2829", "!@#$%^&*()")) pass++; else fail++;
+ System.out.println("Tests passed: " + Integer.toString(pass));
+ System.out.println("Tests failed: " + Integer.toString(fail));
+ System.out.println("=======");
+ System.out.println("abc toHex = " + toHexString("abc"));
+ System.out.println("123 toHex = " + toHexString("123"));
+ try {
+ System.out.println("616263 FromHex = " + stringFromHex("616263"));
+ System.out.println("313233 FromHex = " + stringFromHex("313233"));
+ //System.out.println("current key FromHex = " + stringFromHex("57ajqe{kJjjarj}G#(3)ea7"));
+ } catch (Exception e) {
+ System.out.println("exception: " + e.toString());
+ }
+ }
+
+}