/* * Copyright (c) 2011-2012 ICM Uniwersytet Warszawski All rights reserved. * See LICENCE.txt file for licensing information. */ package eu.emi.security.authn.x509.impl; import java.io.Serializable; import java.security.cert.CertStoreParameters; import java.util.ArrayList; import java.util.List; /** * Manages configuration of CRL sources, used in non-openssl truststores. * @author K. Benedyczak */ public class CRLParameters implements CertStoreParameters, Serializable { private static final long serialVersionUID = 1L; private List<String> crls; private long crlUpdateInterval; private int remoteConnectionTimeout; private String diskCachePath; /** * * @param crls the mandatory list of CRLs. May be empty. * @param crlUpdateInterval if <=0 value is passed then CRLs are loaded only once. * Otherwise it is a time expressed in milliseconds between subsequent CRL updates, as * measured between the end of the last update and the start of the next. * @param remoteConnectionTimeout timeout in milliseconds of the connection and * reading of the remote CRLs. 0 is treated as infinitive number. * @param diskCachePath path to a directory where downloaded CRLs are temporarily stored. * CRLs from cache will be used even if subsequent updates are failing. null disables caching. */ public CRLParameters(List<String> crls, long crlUpdateInterval, int remoteConnectionTimeout, String diskCachePath) { if (crls == null) throw new IllegalArgumentException("CRLs list may not be null"); if (remoteConnectionTimeout < 0) throw new IllegalArgumentException("Remote connection timeout must be a non negative number"); this.crls = crls; this.crlUpdateInterval = crlUpdateInterval; this.remoteConnectionTimeout = remoteConnectionTimeout; this.diskCachePath = diskCachePath; } /** * Default constructor uses standard CRL parameters: no CRLs are defined, * no disk cache, no CRLs updates. */ public CRLParameters() { this(new ArrayList<String>(0), -1L, 5000, null); } public CRLParameters clone() { List<String> copy = new ArrayList<String>(); copy.addAll(crls); return new CRLParameters(copy, crlUpdateInterval, remoteConnectionTimeout, diskCachePath); } public String getDiskCachePath() { return diskCachePath; } public void setDiskCachePath(String diskCachePath) { this.diskCachePath = diskCachePath; } public int getRemoteConnectionTimeout() { return remoteConnectionTimeout; } public void setRemoteConnectionTimeout(int remoteConnectionTimeout) { this.remoteConnectionTimeout = remoteConnectionTimeout; } public List<String> getCrls() { return crls; } public void setCrls(List<String> crls) { this.crls = crls; } public long getCrlUpdateInterval() { return crlUpdateInterval; } public void setCrlUpdateInterval(long crlUpdateInterval) { this.crlUpdateInterval = crlUpdateInterval; } }