68981599891ffd5e5cbb60f7e53347e7ab423f43
[dmaap/datarouter.git] / datarouter-prov / src / main / java / org / onap / dmaap / datarouter / provisioning / utils / AafPropsUtils.java
1 /*
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2019 Nordix Foundation.
4  * ================================================================================
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  * SPDX-License-Identifier: Apache-2.0
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.dmaap.datarouter.provisioning.utils;
22
23 import com.att.eelf.configuration.EELFLogger;
24 import com.att.eelf.configuration.EELFManager;
25 import java.io.File;
26 import java.io.FileInputStream;
27 import java.io.IOException;
28 import org.onap.aaf.cadi.PropAccess;
29
30 public class AafPropsUtils {
31
32     private static AafPropsUtils aafPropsUtilsInstance = null;
33     private static EELFLogger eelfLogger = EELFManager.getInstance().getLogger(AafPropsUtils.class);
34
35     public static final String DEFAULT_TRUSTSTORE = "/opt/app/osaaf/local/org.onap.dmaap-dr.trust.jks";
36     public static final String KEYSTORE_TYPE_PROPERTY = "PKCS12";
37     public static final String TRUESTSTORE_TYPE_PROPERTY = "jks";
38     private static final String KEYSTORE_PATH_PROPERTY = "cadi_keystore";
39     private static final String KEYSTORE_PASS_PROPERTY = "cadi_keystore_password_p12";
40     private static final String TRUSTSTORE_PATH_PROPERTY = "cadi_truststore";
41     private static final String TRUSTSTORE_PASS_PROPERTY = "cadi_truststore_password";
42
43     private PropAccess propAccess;
44
45     private AafPropsUtils(File propsFile) throws IOException {
46         propAccess = new PropAccess();
47         try {
48             propAccess.load(new FileInputStream(propsFile));
49         } catch (IOException e) {
50             eelfLogger.error("Failed to load props file: " + propsFile + "\n" + e.getMessage(), e);
51             throw e;
52         }
53     }
54
55     public static synchronized void init(File propsFile) throws IOException {
56         if (aafPropsUtilsInstance != null) {
57             throw new IllegalStateException("Already initialized");
58         }
59         aafPropsUtilsInstance = new AafPropsUtils(propsFile);
60     }
61
62     public static AafPropsUtils getInstance() {
63         if (aafPropsUtilsInstance == null) {
64             throw new IllegalStateException("Call AafPropsUtils.init(File propsFile) first");
65         }
66         return aafPropsUtilsInstance;
67     }
68
69     private String decryptedPass(String password) {
70         String decryptedPass = null;
71         try {
72             decryptedPass = propAccess.decrypt(password, false);
73         } catch (IOException e) {
74             eelfLogger.error("Failed to decrypt " + password + " : " + e.getMessage(), e);
75         }
76         return decryptedPass;
77     }
78
79     public PropAccess getPropAccess() {
80         if (propAccess == null) {
81             throw new IllegalStateException("Call AafPropsUtils.init(File propsFile) first");
82         }
83         return propAccess;
84     }
85
86     public String getKeystorePathProperty() {
87         return propAccess.getProperty(KEYSTORE_PATH_PROPERTY);
88     }
89
90     public String getKeystorePassProperty() {
91         return decryptedPass(propAccess.getProperty(KEYSTORE_PASS_PROPERTY));
92     }
93
94     public String getTruststorePathProperty() {
95         return propAccess.getProperty(TRUSTSTORE_PATH_PROPERTY);
96     }
97
98     public String getTruststorePassProperty() {
99         return decryptedPass(propAccess.getProperty(TRUSTSTORE_PASS_PROPERTY));
100     }
101
102 }