Enhancement to use the common CryptoUtils
[policy/engine.git] / PolicyEngineUtils / src / main / java / org / onap / policy / utils / CryptoUtils.java
diff --git a/PolicyEngineUtils/src/main/java/org/onap/policy/utils/CryptoUtils.java b/PolicyEngineUtils/src/main/java/org/onap/policy/utils/CryptoUtils.java
deleted file mode 100644 (file)
index 15a93bd..0000000
+++ /dev/null
@@ -1,256 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * PolicyEngineUtils
- * ================================================================================
- * Copyright (C) 2018 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.onap.policy.utils;
-
-import java.nio.charset.StandardCharsets;
-import java.security.AlgorithmParameters;
-import java.security.InvalidAlgorithmParameterException;
-import java.security.InvalidKeyException;
-import java.security.NoSuchAlgorithmException;
-import java.security.Key;
-import java.util.Base64;
-
-import javax.crypto.BadPaddingException;
-import javax.crypto.Cipher;
-import javax.crypto.IllegalBlockSizeException;
-import javax.crypto.NoSuchPaddingException;
-import javax.crypto.spec.SecretKeySpec;
-import javax.xml.bind.DatatypeConverter;
-
-import org.onap.policy.common.logging.flexlogger.FlexLogger;
-import org.onap.policy.common.logging.flexlogger.Logger;
-
-public class CryptoUtils {
-       private static final Logger LOGGER = FlexLogger.getLogger(CryptoUtils.class);
-       private static final String CIPHER_TYPE = "AES/CBC/PKCS5Padding";
-       private static Key mKey = null;
-       private static AlgorithmParameters mAlgParm = null;
-
-       static {
-               //the hadcoded key is to be removed in a future iteration
-               try {
-                       String kval = "bmpybWJrbGN4dG9wbGF3Zg==";
-                       String algp = "BBBpbml0VmVjVGhpc0lzVGhl";
-
-                       byte[] kvalb = DatatypeConverter.parseBase64Binary(kval);
-                       byte[] algb = DatatypeConverter.parseBase64Binary(algp);
-
-                       mKey = new SecretKeySpec(kvalb, "AES");
-
-                       mAlgParm = AlgorithmParameters.getInstance("AES");
-                       mAlgParm.init(algb, "ASN.1");
-
-               } catch (Exception ex) {
-                       throw new ExceptionInInitializerError(ex);
-               }
-       }
-
-       private CryptoUtils() {
-               // Private Constructor
-       }
-
-       /**
-        * Decrypt txt.
-        *
-        * @param encryptedTxt
-        *            text to be decrypted, Base 64 UrlEncoded
-        * @return the byte[]
-        * @throws NoSuchAlgorithmException
-        *             the no such algorithm exception
-        * @throws NoSuchPaddingException
-        *             the no such padding exception
-        * @throws InvalidAlgorithmParameterException
-        *             the invalid algorithm parameter exception
-        * @throws InvalidKeyException
-        *             the invalid key exception
-        * @throws IllegalBlockSizeException
-        *             the illegal block size exception
-        * @throws BadPaddingException
-        *             the bad padding exception
-        */
-       public static byte[] decryptTxt(String encryptedTxt)
-                       throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidAlgorithmParameterException,
-                       InvalidKeyException, IllegalBlockSizeException, BadPaddingException {
-               Cipher cipher = Cipher.getInstance(CIPHER_TYPE);
-               cipher.init(Cipher.DECRYPT_MODE, mKey, mAlgParm);
-
-               return cipher.doFinal(Base64.getUrlDecoder().decode(encryptedTxt.getBytes(StandardCharsets.UTF_8)));
-       }
-
-       /**
-        * Decrypt txt.
-        *
-        * @param encryptedTxt
-        *            text to be decrypted, Base 64 UrlEncoded
-        * @param mKey
-        *            the key as Base 64
-        * @return the byte[]
-        * @throws NoSuchAlgorithmException
-        *             the no such algorithm exception
-        * @throws NoSuchPaddingException
-        *             the no such padding exception
-        * @throws InvalidAlgorithmParameterException
-        *             the invalid algorithm parameter exception
-        * @throws InvalidKeyException
-        *             the invalid key exception
-        * @throws IllegalBlockSizeException
-        *             the illegal block size exception
-        * @throws BadPaddingException
-        *             the bad padding exception
-        */
-       public static byte[] decryptTxt(String encryptedTxt, String base64BinaryKey)
-                       throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidAlgorithmParameterException,
-                       InvalidKeyException, IllegalBlockSizeException, BadPaddingException {
-
-               byte[] keyValueByte = DatatypeConverter.parseBase64Binary(base64BinaryKey);
-               Key paramKey = new SecretKeySpec(keyValueByte, "AES");
-               Cipher cipher = Cipher.getInstance(CIPHER_TYPE);
-               cipher.init(Cipher.DECRYPT_MODE, paramKey, mAlgParm);
-
-               return cipher.doFinal(Base64.getUrlDecoder().decode(encryptedTxt.getBytes(StandardCharsets.UTF_8)));
-       }
-
-       /**
-        * Decrypt txt, no exceptions thrown.
-        *
-        * @param encryptedTxt
-        *            text to be decrypted, Base 64 UrlEncoded
-        * @return the decrypted text, or the original text if it could not be
-        *         decrypted
-        */
-       public static byte[] decryptTxtNoEx(String encryptedTxt) {
-
-               try {
-                       if (encryptedTxt == null || encryptedTxt.isEmpty()) {
-                               LOGGER.info("decryptTxtNoEx: Input param encryptedTxt is empty");
-                               return new byte[0];
-                       }
-                       return decryptTxt(encryptedTxt);
-               } catch (Exception e) {
-                       try {
-                               LOGGER.info("decryptTxtNoEx: Exception while decrypting : " + e);
-                               return (encryptedTxt != null) ? encryptedTxt.getBytes(StandardCharsets.UTF_8) : new byte[0];
-                       } catch (Exception e1) {
-                               LOGGER.warn("decryptTxtNoEx: Exception on sending default : " + e1);
-                               return new byte[0];
-                       }
-               }
-       }
-       
-       /**
-        * Decrypt txt, no exceptions thrown.
-        *
-        * @param encryptedTxt
-        *            text to be decrypted, Base 64 UrlEncoded
-        * @return the decrypted text, or the original text if it could not be
-        *         decrypted
-        */
-       public static String decryptTxtNoExStr(String encryptedTxt) {
-                       return new String(decryptTxtNoEx(encryptedTxt), StandardCharsets.UTF_8);
-       }
-
-       /**
-        * Encrypt txt.
-        *
-        * @param plainTxt
-        *            the plain txt
-        * @return the encrypted string
-        * @throws NoSuchPaddingException
-        *             the no such padding exception
-        * @throws InvalidAlgorithmParameterException
-        *             the invalid algorithm parameter exception
-        * @throws NoSuchAlgorithmException
-        *             the no such algorithm exception
-        * @throws InvalidKeyException
-        *             the invalid key exception
-        * @throws IllegalBlockSizeException
-        *             the illegal block size exception
-        * @throws BadPaddingException
-        *             the bad padding exception
-        */
-       public static String encryptTxt(byte[] plainTxt)
-                       throws NoSuchPaddingException, InvalidAlgorithmParameterException,
-                       NoSuchAlgorithmException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException {
-
-               Cipher cipher = Cipher.getInstance(CIPHER_TYPE);
-               cipher.init(Cipher.ENCRYPT_MODE, mKey, mAlgParm);
-
-               byte[] encryption = cipher.doFinal(plainTxt);
-               return new String(Base64.getUrlEncoder().encode(encryption), StandardCharsets.UTF_8);
-       }
-
-       /**
-        * Encrypt txt.
-        *
-        * @param plainTxt
-        *            the plain txt to be encrypted
-        * @param base64BinaryKey
-        *            the key as lexical representation of Base64 Binary
-        * @return the encrypted string
-        * @throws NoSuchPaddingException
-        *             the no such padding exception
-        * @throws InvalidAlgorithmParameterException
-        *             the invalid algorithm parameter exception
-        * @throws NoSuchAlgorithmException
-        *             the no such algorithm exception
-        * @throws InvalidKeyException
-        *             the invalid key exception
-        * @throws IllegalBlockSizeException
-        *             the illegal block size exception
-        * @throws BadPaddingException
-        *             the bad padding exception
-        */
-       public static String encryptTxt(byte[] plainTxt, String base64BinaryKey)
-                       throws NoSuchPaddingException, InvalidAlgorithmParameterException,
-                       NoSuchAlgorithmException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException {
-
-               byte[] keyValueByte = DatatypeConverter.parseBase64Binary(base64BinaryKey);
-               Key paramKey = new SecretKeySpec(keyValueByte, "AES");
-               Cipher cipher = Cipher.getInstance(CIPHER_TYPE);
-               cipher.init(Cipher.ENCRYPT_MODE, paramKey, mAlgParm);
-
-               byte[] encryption = cipher.doFinal(plainTxt);
-               return new String(Base64.getMimeEncoder().encode(encryption), StandardCharsets.UTF_8);
-       }
-
-       /**
-        * Encrypt txt, no exceptions thrown
-        *
-        * @param plainTxt
-        *            the plain txt to be encrypted
-        * @return the encrypted String , or the original text if it could not be
-        *         encrypted
-        */
-       public static String encryptTxtNoEx(byte[] plainTxt) {
-
-               if (plainTxt == null || plainTxt.length == 0) {
-                       LOGGER.error("encryptTxtNoEx: Input param plainTxt is not valid");
-                       return "";
-               }
-
-               try {
-                       return encryptTxt(plainTxt);
-               } catch (Exception e) {
-                       LOGGER.error("encryptTxtNoEx: Exception while decryption : " + e);
-                       return new String(plainTxt, StandardCharsets.UTF_8);
-               }
-       }
-
-}
\ No newline at end of file