package de.mlessmann.certassist.openssl; import lombok.Builder; import lombok.Data; @Data @Builder public class CertificateRequest { private RequestType type; private String commonName; private String trustingAuthority; @Builder.Default private int requestedKeyLength = 4096; @Builder.Default private int requestedValidityDays = 365; private CertificateSubject subject; private CertificateRequestExtension extension; public enum RequestType { ROOT_AUTHORITY, STANDALONE_CERTIFICATE, NORMAL_CERTIFICATE, } public static class CertificateRequestBuilder { public CertificateRequestBuilder subject(CertificateSubject.CertificateSubjectBuilder builder) { this.subject = builder.build(); return this; } public CertificateRequestBuilder extension( CertificateRequestExtension.CertificateRequestExtensionBuilder builder ) { this.extension = builder.build(); return this; } } }