From d574a2fc71ad43f8bc025ea9cc23ca718bc66570 Mon Sep 17 00:00:00 2001 From: "Chou, Joseph" Date: Thu, 7 Mar 2019 11:49:23 -0500 Subject: ONAP password encryption tool Migrate ECOMP Policy password encryption tool to ONAP Issue-ID: POLICY-1561 Change-Id: I9020efb7698b95c36c4ebff842a318bf8beefc69 Signed-off-by: Joseph Chou --- .../common/utils/security/CryptoUtilsTest.java | 120 +++++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 utils/src/test/java/org/onap/policy/common/utils/security/CryptoUtilsTest.java (limited to 'utils/src/test/java/org/onap/policy/common/utils/security') diff --git a/utils/src/test/java/org/onap/policy/common/utils/security/CryptoUtilsTest.java b/utils/src/test/java/org/onap/policy/common/utils/security/CryptoUtilsTest.java new file mode 100644 index 00000000..fd3daee8 --- /dev/null +++ b/utils/src/test/java/org/onap/policy/common/utils/security/CryptoUtilsTest.java @@ -0,0 +1,120 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP + * ================================================================================ + * Copyright (C) 2019 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.common.utils.security; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; + +import java.security.GeneralSecurityException; + +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Unit test for simple App. + */ + +public class CryptoUtilsTest { + private static Logger logger = LoggerFactory.getLogger(CryptoUtilsTest.class); + private final String pass = "HelloWorld"; + private final String secretKey = "12345678901234567890123456789012"; + private final String encryptedPass = "enc:8XxseP5W5ODxzPrReNKd9JBYLv0iiAzy9BHnMKau5yg="; + + @Test + public void testEncrypt() throws GeneralSecurityException { + logger.info("testEncrypt:"); + CryptoUtils cryptoUtils = new CryptoUtils(secretKey); + String encryptedValue = cryptoUtils.encrypt(pass); + logger.info("original value : " + pass + " encrypted value: " + encryptedValue); + + String decryptedValue = cryptoUtils.decrypt(encryptedValue); + logger.info("encrypted value: " + encryptedValue + " decrypted value : " + decryptedValue); + assertEquals(pass, decryptedValue); + } + + @Test + public void testDecrypt() throws GeneralSecurityException { + logger.info("testDecrypt:"); + CryptoUtils cryptoUtils = new CryptoUtils(secretKey); + String decryptedValue = cryptoUtils.decrypt(encryptedPass); + logger.info("encrypted value: " + encryptedPass + " decrypted value : " + decryptedValue); + assertEquals(pass, decryptedValue); + } + + @Test + public void testStaticEncrypt() { + logger.info("testStaticEncrypt:"); + String encryptedValue = CryptoUtils.encrypt(pass, secretKey); + logger.info("original value : " + pass + " encrypted value: " + encryptedValue); + + String decryptedValue = CryptoUtils.decrypt(encryptedValue, secretKey); + logger.info("encrypted value: " + encryptedValue + " decrypted value : " + decryptedValue); + assertEquals(pass, decryptedValue); + } + + @Test + public void testStaticDecrypt() { + logger.info("testStaticDecrypt:"); + String decryptedValue = CryptoUtils.decrypt(encryptedPass, secretKey); + logger.info("encrypted value: " + encryptedPass + " decrypted value : " + decryptedValue); + assertEquals(pass, decryptedValue); + } + + @Test + public void testBadInputs() { + String badKey = CryptoUtils.encrypt(pass, "test"); + assertEquals(pass, badKey); + + String badDecrypt = CryptoUtils.decrypt(encryptedPass, ""); + assertEquals(encryptedPass, badDecrypt); + + String emptyValue = CryptoUtils.encrypt(new String(), secretKey); + assertEquals("", emptyValue); + + String emptyDecrypt = CryptoUtils.decrypt(new String(), secretKey); + assertEquals("", emptyDecrypt); + + String nullValue = CryptoUtils.encrypt(null, secretKey); + assertNull(nullValue); + + String nullDecrypt = CryptoUtils.decrypt(null, secretKey); + assertNull(nullDecrypt); + } + + @Test + public void testAll() { + logger.info("testAll:"); + String encryptedValue = CryptoUtils.encrypt(pass, secretKey); + logger.info("original value : " + pass + " encrypted value: " + encryptedValue); + + String encryptedAgain = CryptoUtils.encrypt(encryptedValue, secretKey); + + assertEquals(encryptedValue, encryptedAgain); + + String decryptedValue = CryptoUtils.decrypt(encryptedAgain, secretKey); + logger.info("encrypted value: " + encryptedAgain + " decrypted value : " + decryptedValue); + assertEquals(pass, decryptedValue); + + String decryptedAgain = CryptoUtils.decrypt(decryptedValue, secretKey); + assertEquals(decryptedValue, decryptedAgain); + } +} \ No newline at end of file -- cgit 1.2.3-korg