All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.floragunn.searchguard.tools.tlstool.Config Maven / Gradle / Ivy

The newest version!
/*
 * Copyright 2017-2018 floragunn GmbH
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * 
 */

package com.floragunn.searchguard.tools.tlstool;

import java.util.List;

public class Config {
	
	public static final String DEFAULT_OID = "1.2.3.4.5.5";
	
	private Ca ca;
	private List nodes;
	private List clients;
	private String target;
	private String elasticSearchTarget;
	private Defaults defaults;
	
	public String getElasticSearchTarget() {
		return elasticSearchTarget;
	}


	public void setElasticSearchTarget(String elasticSearchTarget) {
		this.elasticSearchTarget = elasticSearchTarget;
	}

	public String getTarget() {
		return target;
	}


	public void setTarget(String target) {
		this.target = target;
	}

	public Ca getCa() {
		return ca;
	}


	public void setCa(Ca ca) {
		this.ca = ca;
	}


	public List getNodes() {
		return nodes;
	}


	public void setNodes(List nodes) {
		this.nodes = nodes;
	}



	public List getClients() {
		return clients;
	}


	public void setClients(List clients) {
		this.clients = clients;
	}
	
	public Defaults getDefaults() {
		return defaults;
	}


	public void setDefaults(Defaults defaults) {
		this.defaults = defaults;
	}
	
	public void applyDefaults() {
		if (defaults == null) {
			defaults = new Defaults();
		}
		
		if (ca != null) {
			ca.applyDefaults(defaults);
		}
		
		if (nodes != null) {
			for (Node node : nodes) {
				node.applyDefaults(defaults);
			}
		}
		
		if (clients != null) {
			for (Client client : clients) {
				client.applyDefaults(defaults);
			}
		}
	}
	
	
	public static class Defaults {
		private String pkPassword;
		private int validityDays = 730;
		private int keysize = 2048;
		private String nodeOid = null;
		private List nodesDn; 
		private int generatedPasswordLength = 12;
		private boolean httpsEnabled;
		private boolean reuseTransportCertificatesForHttp;
		private boolean verifyHostnames;
		private boolean resolveHostnames;
		private boolean useEllipticCurves;
		private String ellipticCurve = "P-384";
	    private String signatureAlgorithm;

		private static final String defaultSignatureAlgorithmRsa = "SHA256withRSA";
		private static final String defaultSignatureAlgorithmEcdsa = "SHA256withECDSA";
		
		
		public String getPkPassword() {
			return pkPassword;
		}
		public void setPkPassword(String pkPassword) {
			this.pkPassword = pkPassword;
		}
		public int getValidityDays() {
			return validityDays;
		}
		public void setValidityDays(int validityDays) {
			this.validityDays = validityDays;
		}
		public int getKeysize() {
			return keysize;
		}
		public void setKeysize(int keysize) {
			this.keysize = keysize;
		}
		public String getNodeOid() {
			return nodeOid;
		}
		public void setNodeOid(String nodeOid) {
			this.nodeOid = nodeOid;
		}
		public int getGeneratedPasswordLength() {
			return generatedPasswordLength;
		}
		public void setGeneratedPasswordLength(int generatedPasswordLength) {
			this.generatedPasswordLength = generatedPasswordLength;
		}
		public List getNodesDn() {
			return nodesDn;
		}
		public void setNodesDn(List nodesDn) {
			this.nodesDn = nodesDn;
		}
		public boolean isHttpsEnabled() {
			return httpsEnabled;
		}
		public void setHttpsEnabled(boolean httpsEnabled) {
			this.httpsEnabled = httpsEnabled;
		}
		public boolean isReuseTransportCertificatesForHttp() {
			return reuseTransportCertificatesForHttp;
		}
		public void setReuseTransportCertificatesForHttp(boolean reuseTransportCertificatesForHttp) {
			this.reuseTransportCertificatesForHttp = reuseTransportCertificatesForHttp;
		}
		public boolean isVerifyHostnames() {
			return verifyHostnames;
		}
		public void setVerifyHostnames(boolean verifyHostnames) {
			this.verifyHostnames = verifyHostnames;
		}
		public boolean isResolveHostnames() {
			return resolveHostnames;
		}
		public void setResolveHostnames(boolean resolveHostnames) {
			this.resolveHostnames = resolveHostnames;
		}
		public String getSignatureAlgorithm() {
		    if(this.signatureAlgorithm == null) {
                return useEllipticCurves?defaultSignatureAlgorithmEcdsa:defaultSignatureAlgorithmRsa;
            } else {
                return this.signatureAlgorithm;
            }
		}
		public void setSignatureAlgorithm(String signatureAlgorithm) {
			this.signatureAlgorithm = signatureAlgorithm;
		}
        public boolean isUseEllipticCurves() {
            return useEllipticCurves;
        }
        public void setUseEllipticCurves(boolean useEllipticCurves) {
            this.useEllipticCurves = useEllipticCurves;
        }
        public String getEllipticCurve() {
            return ellipticCurve;
        }
        public void setEllipticCurve(String ellipticCurve) {
            this.ellipticCurve = ellipticCurve;
        }		

	}


	public static class Ca {
	
		private Certificate root;
		private Certificate intermediate;
		
		public Certificate getRoot() {
			return root;
		}

		public void setRoot(Certificate root) {
			this.root = root;
		}

		public Certificate getIntermediate() {
			return intermediate;
		}

		public void setIntermediate(Certificate intermediate) {
			this.intermediate = intermediate;
		}
		

		public void applyDefaults(Defaults defaults) {
			if (root != null) {
				root.applyDefaults(defaults);
			}
			
			if (intermediate != null) {
				intermediate.applyDefaults(defaults);
			}
			
		}

		public static class Certificate implements KeyGenParameters {
			private Integer keysize = null;
			private String dn;
			private Integer validityDays = null;
			private List crlDistributionPoints;
			private String file;
			private String pkPassword;
		    private String ellipticCurve;
			
			public String getPkPassword() {
				return pkPassword;
			}

			public void setPkPassword(String password) {
				this.pkPassword = password;
			}
			public Integer getKeysize() {
				return keysize;
			}
			public void setKeysize(Integer keysize) {
				this.keysize = keysize;
			}
			public String getDn() {
				return dn;
			}
			public void setDn(String dn) {
				this.dn = dn;
			}
			public Integer getValidityDays() {
				return validityDays;
			}
			public void setValidityDays(Integer validityDays) {
				this.validityDays = validityDays;
			}
	
			public List getCrlDistributionPoints() {
				return crlDistributionPoints;
			}
			public void setCrlDistributionPoints(List crlDistributionPoints) {
				this.crlDistributionPoints = crlDistributionPoints;
			}
			public String getFile() {
				return file;
			}
			public void setFile(String file) {
				this.file = file;
			}

            public String getEllipticCurve() {
                return ellipticCurve;
            }

            public void setEllipticCurve(String ellipticCurve) {
                this.ellipticCurve = ellipticCurve;
            }

            public void applyDefaults(Defaults defaults) {
				if (keysize == null) {
					keysize = defaults.getKeysize();
				}
				
				if (validityDays == null) {
					validityDays = defaults.getValidityDays();
				}
				
				if (pkPassword == null) {
					pkPassword = defaults.getPkPassword();
				}
				
				if (ellipticCurve == null) {
				    ellipticCurve = defaults.getEllipticCurve();
                }
				
			}
		}
	}
	
	
	
	public static class Node implements KeyGenParameters {
		private String name;
		private String dn;
		private List dns;
		private List ip;
		private List oid;
		private Integer keysize;
		private String pkPassword;
		private Integer validityDays;
	    private String ellipticCurve;
		
		public String getName() {
			return name;
		}

		public void setName(String name) {
			this.name = name;
		}
		
		public String getDn() {
			return dn;
		}
		public void setDn(String dn) {
			this.dn = dn;
		}
		public List getDns() {
			return dns;
		}
		public void setDns(List dns) {
			this.dns = dns;
		}
		public List getIp() {
			return ip;
		}
		public void setIp(List ip) {
			this.ip = ip;
		}
		public List getOid() {
			return oid;
		}
		public void setOid(List oid) {
			this.oid = oid;
		}
		public Integer getKeysize() {
			return keysize;
		}
		public void setKeysize(Integer keysize) {
			this.keysize = keysize;
		}

		public String getPkPassword() {
			return pkPassword;
		}

		public void setPkPassword(String pkPassword) {
			this.pkPassword = pkPassword;
		}
		
		public Integer getValidityDays() {
			return validityDays;
		}

		public void setValidityDays(Integer validityDays) {
			this.validityDays = validityDays;
		}

        public String getEllipticCurve() {
            return ellipticCurve;
        }

        public void setEllipticCurve(String ellipticCurve) {
            this.ellipticCurve = ellipticCurve;
        }
		
		public void applyDefaults(Defaults defaults) {
			if (keysize == null) {
				keysize = defaults.getKeysize();
			}
			
			if (pkPassword == null) {
				pkPassword = defaults.getPkPassword();
			}
			
			if (validityDays == null) {
				validityDays = defaults.getValidityDays();
			}
            
            if (ellipticCurve == null) {
                ellipticCurve = defaults.getEllipticCurve();
            }
		}
		
	}
	
	public static class Client implements KeyGenParameters {
		private String name;
		private String dn;
		private Integer keysize;
		private String pkPassword;
		private boolean admin;
		private Integer validityDays;
	    private String ellipticCurve;

		public String getName() {
			return name;
		}
	
		public void setName(String name) {
			this.name = name;
		}
		public String getDn() {
			return dn;
		}
		public void setDn(String dn) {
			this.dn = dn;
		}
		public Integer getKeysize() {
			return keysize;
		}
		public void setKeysize(Integer keysize) {
			this.keysize = keysize;
		}

		public String getPkPassword() {
			return pkPassword;
		}

		public void setPkPassword(String pkPassword) {
			this.pkPassword = pkPassword;
		}
		
		public boolean isAdmin() {
			return admin;
		}

		public void setAdmin(boolean admin) {
			this.admin = admin;
		}

		public Integer getValidityDays() {
			return validityDays;
		}

		public void setValidityDays(Integer validityDays) {
			this.validityDays = validityDays;
		}
		
        public String getEllipticCurve() {
            return ellipticCurve;
        }

        public void setEllipticCurve(String ellipticCurve) {
            this.ellipticCurve = ellipticCurve;
        }
		
		public void applyDefaults(Defaults defaults) {
			if (keysize == null) {
				keysize = defaults.getKeysize();
			}
			
			if (pkPassword == null) {
				pkPassword = defaults.getPkPassword();
			}		
			
			if (validityDays == null) {
				validityDays = defaults.getValidityDays();
			}
            
            if (ellipticCurve == null) {
                ellipticCurve = defaults.getEllipticCurve();
            }
		}


	}

	public interface KeyGenParameters {
	    Integer getKeysize();
	    String getEllipticCurve();

	}


}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy