use of com.venafi.vcert.sdk.policy.domain.PolicySpecification in project vcert-java by Venafi.
the class CloudConnectorUtils method buildCsrAttributes.
public static CsrAttributes buildCsrAttributes(CertificateRequest request, PolicySpecification policySpecification) throws VCertException {
CsrAttributes csrAttributes = new CsrAttributes();
// computing the commonName
String reqCN = request.subject() != null && isNotBlank(request.subject().commonName()) ? request.subject().commonName() : null;
if (reqCN != null) {
// validating that the request.subject.cn matches with the policy domains
String[] policyDomains = Optional.ofNullable(policySpecification).map(ps -> ps.policy()).map(p -> p.domains()).orElse(null);
if (policyDomains != null && !matchRegexes(reqCN, policyDomains))
throw new PolicyMatchException("CN", reqCN, "domains", policyDomains);
csrAttributes.commonName(reqCN);
}
// computing the organization
List<String> reqOrganizations = Optional.ofNullable(request).map(req -> req.subject()).map(s -> s.organization()).orElse(null);
if (reqOrganizations != null && reqOrganizations.size() > 0) {
String[] reqOrgsArray = reqOrganizations.toArray(new String[0]);
// validating that the req.subject.organization matches with the policy orgs
String[] policyOrgs = Optional.ofNullable(policySpecification).map(ps -> ps.policy()).map(p -> p.subject()).map(s -> s.orgs()).orElse(null);
if (policyOrgs != null && !matchRegexes(reqOrgsArray, policyOrgs))
throw new PolicyMatchException("organization", reqOrgsArray, "organization", policyOrgs);
csrAttributes.organization(reqOrgsArray[0]);
} else {
String defaultOrg = Optional.ofNullable(policySpecification).map(ps -> ps.defaults()).map(d -> d.subject()).map(s -> s.org()).orElse(null);
if (isNotBlank(defaultOrg))
csrAttributes.organization(defaultOrg);
}
// computing the organizational Units
List<String> reqOrgUnits = Optional.ofNullable(request).map(req -> req.subject()).map(s -> s.organizationalUnit()).orElse(null);
if (reqOrgUnits != null && reqOrgUnits.size() > 0) {
String[] reqOrgUnitsArray = reqOrgUnits.toArray(new String[0]);
// validating that the req.subject.organizationalUnit matches with the policy orgUnits
String[] policyOrgUnits = Optional.ofNullable(policySpecification).map(ps -> ps.policy()).map(p -> p.subject()).map(s -> s.orgUnits()).orElse(null);
if (policyOrgUnits != null && !matchRegexes(reqOrgUnitsArray, policyOrgUnits))
throw new PolicyMatchException("org unit", reqOrgUnitsArray, "org unit", policyOrgUnits);
csrAttributes.organizationalUnits(reqOrgUnitsArray);
} else {
String[] defaultOrgUnits = Optional.ofNullable(policySpecification).map(ps -> ps.defaults()).map(d -> d.subject()).map(s -> s.orgUnits()).orElse(null);
if (defaultOrgUnits != null && defaultOrgUnits.length > 0)
csrAttributes.organizationalUnits(defaultOrgUnits);
}
// computing the localities
List<String> reqLocalities = Optional.ofNullable(request).map(req -> req.subject()).map(s -> s.locality()).orElse(null);
if (reqLocalities != null && reqLocalities.size() > 0) {
String[] reqLocalitiesArray = reqLocalities.toArray(new String[0]);
// validating that the req.subject.locality matches with the policy localities
String[] policyLocalities = Optional.ofNullable(policySpecification).map(ps -> ps.policy()).map(p -> p.subject()).map(s -> s.localities()).orElse(null);
if (policyLocalities != null && !matchRegexes(reqLocalitiesArray, policyLocalities))
throw new PolicyMatchException("locality", reqLocalitiesArray, "localities", policyLocalities);
csrAttributes.locality(reqLocalitiesArray[0]);
} else {
String defaultLocality = Optional.ofNullable(policySpecification).map(ps -> ps.defaults()).map(d -> d.subject()).map(s -> s.locality()).orElse(null);
if (isNotBlank(defaultLocality))
csrAttributes.locality(defaultLocality);
}
// computing the province
List<String> reqProvince = Optional.ofNullable(request).map(req -> req.subject()).map(s -> s.province()).orElse(null);
if (reqProvince != null && reqProvince.size() > 0) {
String[] reqProvinceArray = reqProvince.toArray(new String[0]);
// validating that the req.subject.province matches with the policy states
String[] policyStates = Optional.ofNullable(policySpecification).map(ps -> ps.policy()).map(p -> p.subject()).map(s -> s.states()).orElse(null);
if (policyStates != null && !matchRegexes(reqProvinceArray, policyStates))
throw new PolicyMatchException("state", reqProvinceArray, "states", policyStates);
csrAttributes.state(reqProvinceArray[0]);
} else {
String defaultState = Optional.ofNullable(policySpecification).map(ps -> ps.defaults()).map(d -> d.subject()).map(s -> s.state()).orElse(null);
if (isNotBlank(defaultState))
csrAttributes.state(defaultState);
}
// computing the country
List<String> reqCountries = Optional.ofNullable(request).map(req -> req.subject()).map(s -> s.country()).orElse(null);
if (reqCountries != null && reqCountries.size() > 0) {
String[] reqCountriesArray = reqCountries.toArray(new String[0]);
// validating that the req.subject.country matches with the policy countries
String[] policyCountries = Optional.ofNullable(policySpecification).map(ps -> ps.policy()).map(p -> p.subject()).map(s -> s.countries()).orElse(null);
if (policyCountries != null && !matchRegexes(reqCountriesArray, policyCountries))
throw new PolicyMatchException("state", reqCountriesArray, "states", policyCountries);
csrAttributes.country(reqCountriesArray[0]);
} else {
String defaultCountry = Optional.ofNullable(policySpecification).map(ps -> ps.defaults()).map(d -> d.subject()).map(s -> s.country()).orElse(null);
if (isNotBlank(defaultCountry))
csrAttributes.country(defaultCountry);
}
if (request.dnsNames() != null && request.dnsNames().size() > 0) {
SubjectAlternativeNamesByType subjectAlternativeNamesByType = new SubjectAlternativeNamesByType().dnsNames(request.dnsNames().toArray(new String[0]));
csrAttributes.subjectAlternativeNamesByType(subjectAlternativeNamesByType);
}
return csrAttributes;
}
use of com.venafi.vcert.sdk.policy.domain.PolicySpecification in project vcert-java by Venafi.
the class TppConnector method getPolicy.
@Override
public PolicySpecification getPolicy(String policyName) throws VCertException {
PolicySpecification policySpecification;
try {
TPPPolicy tppPolicy = getTPPPolicy(policyName);
policySpecification = TPPPolicySpecificationConverter.INSTANCE.convertToPolicySpecification(tppPolicy);
} catch (Exception e) {
throw new VCertException(e);
}
return policySpecification;
}
use of com.venafi.vcert.sdk.policy.domain.PolicySpecification in project vcert-java by Venafi.
the class PolicyManagementYamlExample method main.
public static void main(String[] args) {
try {
// replace it by the policy full name
String policyName = "<APP_NAME>\\<CIT_ALIAS>";
// replace it by the api-key
String tppl_api_key = "<APIKEY>";
// replace it by the path where the policy_specification.yaml file will be
String yaml_source_file = "<PARENT_PATH>/policy_specification.yaml";
// replace it by the path where the policy_specification_result.yaml file will be
String yaml_target_file = "<PARENT_PATH>/policy_specification_result.yaml";
// 1. Get an instance of com.venafi.vcert.sdk.policy.domain.PolicySpecification class.
// At this time it's being to use the Jackson parser to get an instance of PolicySpecification given a Yaml file.
// You can learn more about Jackson parser in https://github.com/FasterXML/jackson
// and http://tutorials.jenkov.com/java-json/jackson-objectmapper.html
ObjectMapper mapper = new ObjectMapper(new YAMLFactory());
mapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
PolicySpecification policySpecification = mapper.readValue(new File(yaml_source_file), PolicySpecification.class);
// 2. Get a VCertClient. For this time, it's going to use a VCertClient for Cloud.
Authentication auth = Authentication.builder().apiKey(tppl_api_key).build();
Config config = Config.builder().connectorType(ConnectorType.CLOUD).build();
VCertClient client = new VCertClient(config);
client.authenticate(auth);
// 3. Use the VCertClient method setPolicy() to set a Policy.
// If the the policy doesn't exist then it will be created.
// If the the policy exists then it will be updated.
client.setPolicy(policyName, policySpecification);
// 4. You can get the Policy which you created/updated using the getPolicy method and then use it
// to write it in json format using the Jackson parser.
PolicySpecification policyTemp = client.getPolicy(policyName);
mapper.writeValue(new File(yaml_target_file), policyTemp);
} catch (Exception e) {
e.printStackTrace();
}
}
use of com.venafi.vcert.sdk.policy.domain.PolicySpecification in project vcert-java by Venafi.
the class CloudConnector method getPolicy.
private PolicySpecification getPolicy(String policyName, boolean removeRegexFromSubjectCN) throws VCertException {
PolicySpecification policySpecification;
try {
CloudPolicy cloudPolicy = CloudConnectorUtils.getCloudPolicy(policyName, auth.apiKey(), cloud);
cloudPolicy.removeRegexesFromSubjectCN(removeRegexFromSubjectCN);
policySpecification = CloudPolicySpecificationConverter.INSTANCE.convertToPolicySpecification(cloudPolicy);
} catch (Exception e) {
throw new VCertException(e);
}
return policySpecification;
}
use of com.venafi.vcert.sdk.policy.domain.PolicySpecification in project vcert-java by Venafi.
the class CloudConnector method buildRequestCertificatePayload.
private CertificateRequestsPayload buildRequestCertificatePayload(CertificateRequest request, ZoneConfiguration zoneConfiguration) throws VCertException {
CertificateRequestsPayload payload = new CertificateRequestsPayload();
if (CsrOriginOption.ServiceGeneratedCSR == request.csrOrigin()) {
payload.isVaaSGenerated(true);
payload.applicationServerTypeId(APPLICATION_SERVER_TYPE_ID);
PolicySpecification policySpecification = getPolicy(zoneConfiguration.zoneId(), false);
payload.csrAttributes(CloudConnectorUtils.buildCsrAttributes(request, policySpecification));
} else {
payload.csr(new String(request.csr()));
}
// support for validity hours begins
if (request.validityHours() > 0) {
String validityHours = "PT" + request.validityHours() + "H";
payload.validityPeriod(validityHours);
}
// support for validity hours ends
// add certificateIssuingTemplate and applicationId
payload.applicationId(zoneConfiguration.applicationId());
payload.certificateIssuingTemplateId(zoneConfiguration.certificateIssuingTemplateId());
// add client information
VCertUtils.addApiClientInformation(payload);
return payload;
}
Aggregations