[OOM cert-service-client] Add validation of email, ip and domain name
[oom/platform/cert-service.git] / certServiceClient / src / main / java / org / onap / oom / certservice / client / configuration / factory / SanMapper.java
1 /*
2  * ============LICENSE_START=======================================================
3  * oom-certservice-client
4  * ================================================================================
5  * Copyright (C) 2020 Nokia. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.oom.certservice.client.configuration.factory;
22
23 import static org.onap.oom.certservice.client.configuration.validation.csr.CsrEnvsValueValidators.isDomainNameValid;
24 import static org.onap.oom.certservice.client.configuration.validation.csr.CsrEnvsValueValidators.isEmailAddressValid;
25 import static org.onap.oom.certservice.client.configuration.validation.csr.CsrEnvsValueValidators.isIpAddressValid;
26 import static org.onap.oom.certservice.client.configuration.validation.csr.CsrEnvsValueValidators.isUriValid;
27
28 import java.util.function.Function;
29 import org.bouncycastle.asn1.x509.GeneralName;
30 import org.onap.oom.certservice.client.configuration.exception.CsrConfigurationException;
31 import org.onap.oom.certservice.client.configuration.model.San;
32
33 public class SanMapper implements Function<String, San> {
34
35     public San apply(String san) {
36         if (isEmailAddressValid(san)) {
37             return new San(san, GeneralName.rfc822Name);
38         } else if (isIpAddressValid(san)) {
39             return new San(san, GeneralName.iPAddress);
40         } else if (isDomainNameValid(san)) {
41             return new San(san, GeneralName.dNSName);
42         } else if (isUriValid(san)) {
43             return new San(san, GeneralName.uniformResourceIdentifier);
44         } else {
45             throw new CsrConfigurationException("SAN :" + san + " does not match any requirements");
46         }
47     }
48 }