re base code
[sdc.git] / common-app-api / src / main / java / org / openecomp / sdc / common / http / config / ClientCertificate.java
1 package org.openecomp.sdc.common.http.config;
2
3 import fj.data.Either;
4 import org.apache.commons.lang3.StringUtils;
5 import org.openecomp.sdc.security.SecurityUtil;
6
7 public class ClientCertificate {
8     private String keyStore;
9     private String keyStorePassword;
10
11     public ClientCertificate() {
12     }
13
14     public ClientCertificate(ClientCertificate clientCertificate) {
15         setKeyStore(clientCertificate.getKeyStore());
16         setKeyStorePassword(clientCertificate.getKeyStorePassword(), false);
17     }
18     
19     public void setKeyStore(String keyStore) {
20         validate(keyStore);
21         this.keyStore = keyStore;
22     }
23
24     public void setKeyStorePassword(String keyStorePassword) {
25         setKeyStorePassword(keyStorePassword, true);
26     }
27
28     private void setKeyStorePassword(String keyStorePassword, boolean isEncoded) {
29         validate(keyStorePassword);
30         if(isEncoded) {
31             Either<String, String> passkey = SecurityUtil.INSTANCE.decrypt(keyStorePassword);
32             if (passkey.isLeft()) {
33                 this.keyStorePassword = passkey.left().value();
34             }
35             else {
36                 throw new IllegalArgumentException(passkey.right().value());
37             }
38         }
39         else {
40             this.keyStorePassword = keyStorePassword;
41         }
42     }
43
44     public String getKeyStore() {
45         return keyStore;
46     }
47
48     public String getKeyStorePassword() {
49         return keyStorePassword;
50     }
51     
52     @Override
53     public int hashCode() {
54         final int prime = 31;
55         int result = 1;
56         result = prime * result + ((keyStore == null) ? 0 : keyStore.hashCode());
57         result = prime * result + ((keyStorePassword == null) ? 0 : keyStorePassword.hashCode());
58         return result;
59     }
60
61     @Override
62     public boolean equals(Object obj) {
63         if (this == obj)
64             return true;
65         if (obj == null)
66             return false;
67         if (getClass() != obj.getClass())
68             return false;
69         ClientCertificate other = (ClientCertificate) obj;
70         if (keyStore == null) {
71             if (other.keyStore != null)
72                 return false;
73         }
74         else if (!keyStore.equals(other.keyStore))
75             return false;
76         if (keyStorePassword == null) {
77             if (other.keyStorePassword != null)
78                 return false;
79         }
80         else if (!keyStorePassword.equals(other.keyStorePassword))
81             return false;
82         return true;
83     }
84
85     @Override
86     public String toString() {
87         StringBuilder builder = new StringBuilder();
88         builder.append("ClientCertificate [keyStore=");
89         builder.append(keyStore);
90         builder.append("]");
91         return builder.toString();
92     }
93     
94     private void validate(String str) {
95         if(StringUtils.isEmpty(str)) {
96             throw new IllegalArgumentException("ClientCertificate keystore and/or kestorePassword cannot be empty");
97         }
98     }
99 }