diff options
Diffstat (limited to 'bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/bpmn/common/util/CryptoUtils.java')
-rw-r--r-- | bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/bpmn/common/util/CryptoUtils.java | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/bpmn/common/util/CryptoUtils.java b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/bpmn/common/util/CryptoUtils.java new file mode 100644 index 0000000000..70aeda01b0 --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/bpmn/common/util/CryptoUtils.java @@ -0,0 +1,118 @@ +/*- + * ============LICENSE_START======================================================= + * OPENECOMP - MSO + * ================================================================================ + * 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.mso.bpmn.common.util; + + +import java.security.GeneralSecurityException; +import java.security.NoSuchAlgorithmException; + +import javax.crypto.Cipher; +import javax.crypto.spec.SecretKeySpec; + +//Need to add BPM error handler + +/** + * CryptoUtils adapted from RTTP client. + * + */ +public class CryptoUtils { + + public static final String AES = "AES"; + + /** + * encrypt a value and generate a keyfile + * if the keyfile is not found then a new one is created + * @throws GeneralSecurityException + * @throws IOException + */ + public static String encrypt(String value, String keyString) throws GeneralSecurityException + { + SecretKeySpec sks = getSecretKeySpec(keyString); + Cipher cipher = Cipher.getInstance(CryptoUtils.AES); + cipher.init(Cipher.ENCRYPT_MODE, sks, cipher.getParameters()); + byte[] encrypted = cipher.doFinal(value.getBytes()); + return byteArrayToHexString(encrypted); + } + + /** + * decrypt a value + * @throws GeneralSecurityException + * @throws IOException + */ + public static String decrypt(String message, String keyString) throws GeneralSecurityException + { + SecretKeySpec sks = getSecretKeySpec(keyString); + Cipher cipher = Cipher.getInstance(CryptoUtils.AES); + cipher.init(Cipher.DECRYPT_MODE, sks); + byte[] decrypted = cipher.doFinal(hexStringToByteArray(message)); + return new String(decrypted); + } + + private static SecretKeySpec getSecretKeySpec(String keyString) throws NoSuchAlgorithmException + { + byte [] key = hexStringToByteArray(keyString); + SecretKeySpec sks = new SecretKeySpec(key, CryptoUtils.AES); + return sks; + } + + + private static String byteArrayToHexString(byte[] b){ + StringBuffer sb = new StringBuffer(b.length * 2); + for (int i = 0; i < b.length; i++){ + int v = b[i] & 0xff; + if (v < 16) { + sb.append('0'); + } + sb.append(Integer.toHexString(v)); + } + return sb.toString().toUpperCase(); + } + + private static byte[] hexStringToByteArray(String s) { + byte[] b = new byte[s.length() / 2]; + for (int i = 0; i < b.length; i++){ + int index = i * 2; + int v = Integer.parseInt(s.substring(index, index + 2), 16); + b[i] = (byte)v; + } + return b; + } + + /** + * Not Used... + * + * Call Rttp utility jar to encrypt pwd + * @param clearPassword + * @return + * @throws GeneralSecurityException + * @throws Exception + * + public static String encryptRttpPwd(String clearPassword) throws GeneralSecurityException { + try { + return RttpBasicAuth.encrypt(clearPassword); + } catch (Exception e) { + // wrap generic exception + throw new GeneralSecurityException(e); + } + } + */ +} + |