blob: 80532fac429d2a64f25c39417e401c64add3601f [file] [log] [blame]
package org.bouncycastle.jce;
import org.bouncycastle.x509.X509StoreParameters;
import java.security.cert.CertStoreParameters;
import java.security.cert.LDAPCertStoreParameters;
/**
* An expanded set of parameters for an LDAPCertStore
*/
public class X509LDAPCertStoreParameters
implements X509StoreParameters, CertStoreParameters
{
private String ldapURL;
private String baseDN;
// LDAP attributes, where data is stored
private String userCertificateAttribute;
private String cACertificateAttribute;
private String crossCertificateAttribute;
private String certificateRevocationListAttribute;
private String deltaRevocationListAttribute;
private String authorityRevocationListAttribute;
private String attributeCertificateAttributeAttribute;
private String aACertificateAttribute;
private String attributeDescriptorCertificateAttribute;
private String attributeCertificateRevocationListAttribute;
private String attributeAuthorityRevocationListAttribute;
// LDAP attributes with which data can be found
private String ldapUserCertificateAttributeName;
private String ldapCACertificateAttributeName;
private String ldapCrossCertificateAttributeName;
private String ldapCertificateRevocationListAttributeName;
private String ldapDeltaRevocationListAttributeName;
private String ldapAuthorityRevocationListAttributeName;
private String ldapAttributeCertificateAttributeAttributeName;
private String ldapAACertificateAttributeName;
private String ldapAttributeDescriptorCertificateAttributeName;
private String ldapAttributeCertificateRevocationListAttributeName;
private String ldapAttributeAuthorityRevocationListAttributeName;
// certificates and CRLs subject or issuer DN attributes, which must be
// matched against ldap attribute names
private String userCertificateSubjectAttributeName;
private String cACertificateSubjectAttributeName;
private String crossCertificateSubjectAttributeName;
private String certificateRevocationListIssuerAttributeName;
private String deltaRevocationListIssuerAttributeName;
private String authorityRevocationListIssuerAttributeName;
private String attributeCertificateAttributeSubjectAttributeName;
private String aACertificateSubjectAttributeName;
private String attributeDescriptorCertificateSubjectAttributeName;
private String attributeCertificateRevocationListIssuerAttributeName;
private String attributeAuthorityRevocationListIssuerAttributeName;
private String searchForSerialNumberIn;
public static class Builder
{
private String ldapURL;
private String baseDN;
// LDAP attributes, where data is stored
private String userCertificateAttribute;
private String cACertificateAttribute;
private String crossCertificateAttribute;
private String certificateRevocationListAttribute;
private String deltaRevocationListAttribute;
private String authorityRevocationListAttribute;
private String attributeCertificateAttributeAttribute;
private String aACertificateAttribute;
private String attributeDescriptorCertificateAttribute;
private String attributeCertificateRevocationListAttribute;
private String attributeAuthorityRevocationListAttribute;
// LDAP attributes with which data can be found
private String ldapUserCertificateAttributeName;
private String ldapCACertificateAttributeName;
private String ldapCrossCertificateAttributeName;
private String ldapCertificateRevocationListAttributeName;
private String ldapDeltaRevocationListAttributeName;
private String ldapAuthorityRevocationListAttributeName;
private String ldapAttributeCertificateAttributeAttributeName;
private String ldapAACertificateAttributeName;
private String ldapAttributeDescriptorCertificateAttributeName;
private String ldapAttributeCertificateRevocationListAttributeName;
private String ldapAttributeAuthorityRevocationListAttributeName;
// certificates and CRLs subject or issuer DN attributes, which must be
// matched against ldap attribute names
private String userCertificateSubjectAttributeName;
private String cACertificateSubjectAttributeName;
private String crossCertificateSubjectAttributeName;
private String certificateRevocationListIssuerAttributeName;
private String deltaRevocationListIssuerAttributeName;
private String authorityRevocationListIssuerAttributeName;
private String attributeCertificateAttributeSubjectAttributeName;
private String aACertificateSubjectAttributeName;
private String attributeDescriptorCertificateSubjectAttributeName;
private String attributeCertificateRevocationListIssuerAttributeName;
private String attributeAuthorityRevocationListIssuerAttributeName;
private String searchForSerialNumberIn;
public Builder()
{
this("ldap://localhost:389", "");
}
public Builder(String ldapURL, String baseDN)
{
this.ldapURL = ldapURL;
if (baseDN == null)
{
this.baseDN = "";
}
else
{
this.baseDN = baseDN;
}
this.userCertificateAttribute = "userCertificate";
this.cACertificateAttribute = "cACertificate";
this.crossCertificateAttribute = "crossCertificatePair";
this.certificateRevocationListAttribute = "certificateRevocationList";
this.deltaRevocationListAttribute = "deltaRevocationList";
this.authorityRevocationListAttribute = "authorityRevocationList";
this.attributeCertificateAttributeAttribute = "attributeCertificateAttribute";
this.aACertificateAttribute = "aACertificate";
this.attributeDescriptorCertificateAttribute = "attributeDescriptorCertificate";
this.attributeCertificateRevocationListAttribute = "attributeCertificateRevocationList";
this.attributeAuthorityRevocationListAttribute = "attributeAuthorityRevocationList";
this.ldapUserCertificateAttributeName = "cn";
this.ldapCACertificateAttributeName = "cn ou o";
this.ldapCrossCertificateAttributeName = "cn ou o";
this.ldapCertificateRevocationListAttributeName = "cn ou o";
this.ldapDeltaRevocationListAttributeName = "cn ou o";
this.ldapAuthorityRevocationListAttributeName = "cn ou o";
this.ldapAttributeCertificateAttributeAttributeName = "cn";
this.ldapAACertificateAttributeName = "cn o ou";
this.ldapAttributeDescriptorCertificateAttributeName = "cn o ou";
this.ldapAttributeCertificateRevocationListAttributeName = "cn o ou";
this.ldapAttributeAuthorityRevocationListAttributeName = "cn o ou";
this.userCertificateSubjectAttributeName = "cn";
this.cACertificateSubjectAttributeName = "o ou";
this.crossCertificateSubjectAttributeName = "o ou";
this.certificateRevocationListIssuerAttributeName = "o ou";
this.deltaRevocationListIssuerAttributeName = "o ou";
this.authorityRevocationListIssuerAttributeName = "o ou";
this.attributeCertificateAttributeSubjectAttributeName = "cn";
this.aACertificateSubjectAttributeName = "o ou";
this.attributeDescriptorCertificateSubjectAttributeName = "o ou";
this.attributeCertificateRevocationListIssuerAttributeName = "o ou";
this.attributeAuthorityRevocationListIssuerAttributeName = "o ou";
this.searchForSerialNumberIn = "uid serialNumber cn";
}
/**
* @param userCertificateAttribute Attribute name(s) in the LDAP directory where end certificates
* are stored. Separated by space. Defaults to "userCertificate"
* if <code>null</code>.
* @throws IllegalArgumentException if a necessary parameter is <code>null</code>.
* @return the builder
*/
public Builder setUserCertificateAttribute(String userCertificateAttribute)
{
this.userCertificateAttribute = userCertificateAttribute;
return this;
}
/**
* @param cACertificateAttribute Attribute name(s) in the LDAP directory where CA certificates
* are stored. Separated by space. Defaults to "cACertificate" if
* <code>null</code>.
* @throws IllegalArgumentException if a necessary parameter is <code>null</code>.
* @return the builder
*/
public Builder setCACertificateAttribute(String cACertificateAttribute)
{
this.cACertificateAttribute = cACertificateAttribute;
return this;
}
/**
* @param crossCertificateAttribute Attribute name(s), where the cross certificates are stored.
* Separated by space. Defaults to "crossCertificatePair" if
* <code>null</code>
* @throws IllegalArgumentException if a necessary parameter is <code>null</code>.
* @return the builder
*/
public Builder setCrossCertificateAttribute(String crossCertificateAttribute)
{
this.crossCertificateAttribute = crossCertificateAttribute;
return this;
}
/**
* @param certificateRevocationListAttribute
* Attribute name(s) in the LDAP directory where CRLs are stored.
* Separated by space. Defaults to "certificateRevocationList" if
* <code>null</code>.
* @throws IllegalArgumentException if a necessary parameter is <code>null</code>.
* @return the builder
*/
public Builder setCertificateRevocationListAttribute(String certificateRevocationListAttribute)
{
this.certificateRevocationListAttribute = certificateRevocationListAttribute;
return this;
}
/**
* @param deltaRevocationListAttribute Attribute name(s) in the LDAP directory where delta RLs are
* stored. Separated by space. Defaults to "deltaRevocationList"
* if <code>null</code>.
* @throws IllegalArgumentException if a necessary parameter is <code>null</code>.
* @return the builder
*/
public Builder setDeltaRevocationListAttribute(String deltaRevocationListAttribute)
{
this.deltaRevocationListAttribute = deltaRevocationListAttribute;
return this;
}
/**
* @param authorityRevocationListAttribute
* Attribute name(s) in the LDAP directory where CRLs for
* authorities are stored. Separated by space. Defaults to
* "authorityRevocationList" if <code>null</code>.
* @throws IllegalArgumentException if a necessary parameter is <code>null</code>.
* @return the builder
*/
public Builder setAuthorityRevocationListAttribute(String authorityRevocationListAttribute)
{
this.authorityRevocationListAttribute = authorityRevocationListAttribute;
return this;
}
/**
* @param attributeCertificateAttributeAttribute
* Attribute name(s) in the LDAP directory where end attribute
* certificates are stored. Separated by space. Defaults to
* "attributeCertificateAttribute" if <code>null</code>.
* @throws IllegalArgumentException if a necessary parameter is <code>null</code>.
* @return the builder
*/
public Builder setAttributeCertificateAttributeAttribute(String attributeCertificateAttributeAttribute)
{
this.attributeCertificateAttributeAttribute = attributeCertificateAttributeAttribute;
return this;
}
/**
* @param aACertificateAttribute Attribute name(s) in the LDAP directory where attribute
* certificates for attribute authorities are stored. Separated
* by space. Defaults to "aACertificate" if <code>null</code>.
* @throws IllegalArgumentException if a necessary parameter is <code>null</code>.
* @return the builder
*/
public Builder setAACertificateAttribute(String aACertificateAttribute)
{
this.aACertificateAttribute = aACertificateAttribute;
return this;
}
/**
* @param attributeDescriptorCertificateAttribute
* Attribute name(s) in the LDAP directory where self signed
* attribute certificates for attribute authorities are stored.
* Separated by space. Defaults to
* "attributeDescriptorCertificate" if <code>null</code>.
* @throws IllegalArgumentException if a necessary parameter is <code>null</code>.
* @return the builder
*/
public Builder setAttributeDescriptorCertificateAttribute(String attributeDescriptorCertificateAttribute)
{
this.attributeDescriptorCertificateAttribute = attributeDescriptorCertificateAttribute;
return this;
}
/**
* @param attributeCertificateRevocationListAttribute
* Attribute name(s) in the LDAP directory where CRLs for
* attribute certificates are stored. Separated by space.
* Defaults to "attributeCertificateRevocationList" if
* <code>null</code>.
* @throws IllegalArgumentException if a necessary parameter is <code>null</code>.
* @return the builder
*/
public Builder setAttributeCertificateRevocationListAttribute(String attributeCertificateRevocationListAttribute)
{
this.attributeCertificateRevocationListAttribute = attributeCertificateRevocationListAttribute;
return this;
}
/**
* @param attributeAuthorityRevocationListAttribute
* Attribute name(s) in the LDAP directory where RLs for
* attribute authority attribute certificates are stored.
* Separated by space. Defaults to
* "attributeAuthorityRevocationList" if <code>null</code>.
* @throws IllegalArgumentException if a necessary parameter is <code>null</code>.
* @return the builder
*/
public Builder setAttributeAuthorityRevocationListAttribute(String attributeAuthorityRevocationListAttribute)
{
this.attributeAuthorityRevocationListAttribute = attributeAuthorityRevocationListAttribute;
return this;
}
/**
* @param ldapUserCertificateAttributeName
* The attribute name(s) in the LDAP directory where to search
* for the attribute value of the specified
* <code>userCertificateSubjectAttributeName</code>. E.g. if
* "cn" is used to put information about the subject for end
* certificates, then specify "cn".
* @throws IllegalArgumentException if a necessary parameter is <code>null</code>.
* @return the builder
*/
public Builder setLdapUserCertificateAttributeName(String ldapUserCertificateAttributeName)
{
this.ldapUserCertificateAttributeName = ldapUserCertificateAttributeName;
return this;
}
/**
* @param ldapCACertificateAttributeName The attribute name(s) in the LDAP directory where to search
* for the attribute value of the specified
* <code>cACertificateSubjectAttributeName</code>. E.g. if
* "ou" is used to put information about the subject for CA
* certificates, then specify "ou".
* @throws IllegalArgumentException if a necessary parameter is <code>null</code>.
* @return the builder
*/
public Builder setLdapCACertificateAttributeName(String ldapCACertificateAttributeName)
{
this.ldapCACertificateAttributeName = ldapCACertificateAttributeName;
return this;
}
/**
* @param ldapCrossCertificateAttributeName
* The attribute name(s) in the LDAP directory where to search for
* the attribute value of the specified
* <code>crossCertificateSubjectAttributeName</code>. E.g. if
* "o" is used to put information about the subject for cross
* certificates, then specify "o".
* @throws IllegalArgumentException if a necessary parameter is <code>null</code>.
* @return the builder
*/
public Builder setLdapCrossCertificateAttributeName(String ldapCrossCertificateAttributeName)
{
this.ldapCrossCertificateAttributeName = ldapCrossCertificateAttributeName;
return this;
}
/**
* @param ldapCertificateRevocationListAttributeName
* The attribute name(s) in the LDAP directory where to search for
* the attribute value of the specified
* <code>certificateRevocationListIssuerAttributeName</code>.
* E.g. if "ou" is used to put information about the issuer of
* CRLs, specify "ou".
* @throws IllegalArgumentException if a necessary parameter is <code>null</code>.
* @return the builder
*/
public Builder setLdapCertificateRevocationListAttributeName(String ldapCertificateRevocationListAttributeName)
{
this.ldapCertificateRevocationListAttributeName = ldapCertificateRevocationListAttributeName;
return this;
}
/**
* @param ldapDeltaRevocationListAttributeName
* The attribute name(s) in the LDAP directory where to search for
* the attribute value of the specified
* <code>deltaRevocationListIssuerAttributeName</code>. E.g.
* if "ou" is used to put information about the issuer of CRLs,
* specify "ou".
* @throws IllegalArgumentException if a necessary parameter is <code>null</code>.
* @return the builder
*/
public Builder setLdapDeltaRevocationListAttributeName(String ldapDeltaRevocationListAttributeName)
{
this.ldapDeltaRevocationListAttributeName = ldapDeltaRevocationListAttributeName;
return this;
}
/**
* @param ldapAuthorityRevocationListAttributeName
* The attribute name(s) in the LDAP directory where to search for
* the attribute value of the specified
* <code>authorityRevocationListIssuerAttributeName</code>.
* E.g. if "ou" is used to put information about the issuer of
* CRLs, specify "ou".
* @throws IllegalArgumentException if a necessary parameter is <code>null</code>.
* @return the builder
*/
public Builder setLdapAuthorityRevocationListAttributeName(String ldapAuthorityRevocationListAttributeName)
{
this.ldapAuthorityRevocationListAttributeName = ldapAuthorityRevocationListAttributeName;
return this;
}
/**
* @param ldapAttributeCertificateAttributeAttributeName
* The attribute name(s) in the LDAP directory where to search for
* the attribute value of the specified
* <code>attributeCertificateAttributeSubjectAttributeName</code>.
* E.g. if "cn" is used to put information about the subject of
* end attribute certificates, specify "cn".
* @throws IllegalArgumentException if a necessary parameter is <code>null</code>.
* @return the builder
*/
public Builder setLdapAttributeCertificateAttributeAttributeName(String ldapAttributeCertificateAttributeAttributeName)
{
this.ldapAttributeCertificateAttributeAttributeName = ldapAttributeCertificateAttributeAttributeName;
return this;
}
/**
* @param ldapAACertificateAttributeName The attribute name(s) in the LDAP directory where to search for
* the attribute value of the specified
* <code>aACertificateSubjectAttributeName</code>. E.g. if
* "ou" is used to put information about the subject of attribute
* authority attribute certificates, specify "ou".
* @throws IllegalArgumentException if a necessary parameter is <code>null</code>.
* @return the builder
*/
public Builder setLdapAACertificateAttributeName(String ldapAACertificateAttributeName)
{
this.ldapAACertificateAttributeName = ldapAACertificateAttributeName;
return this;
}
/**
* @param ldapAttributeDescriptorCertificateAttributeName
* The attribute name(s) in the LDAP directory where to search for
* the attribute value of the specified
* <code>attributeDescriptorCertificateSubjectAttributeName</code>.
* E.g. if "o" is used to put information about the subject of
* self signed attribute authority attribute certificates,
* specify "o".
* @throws IllegalArgumentException if a necessary parameter is <code>null</code>.
* @return the builder
*/
public Builder setLdapAttributeDescriptorCertificateAttributeName(String ldapAttributeDescriptorCertificateAttributeName)
{
this.ldapAttributeDescriptorCertificateAttributeName = ldapAttributeDescriptorCertificateAttributeName;
return this;
}
/**
* @param ldapAttributeCertificateRevocationListAttributeName
* The attribute name(s) in the LDAP directory where to search for
* the attribute value of the specified
* <code>attributeCertificateRevocationListIssuerAttributeName</code>.
* E.g. if "ou" is used to put information about the issuer of
* CRLs, specify "ou".
* @throws IllegalArgumentException if a necessary parameter is <code>null</code>.
* @return the builder
*/
public Builder setLdapAttributeCertificateRevocationListAttributeName(String ldapAttributeCertificateRevocationListAttributeName)
{
this.ldapAttributeCertificateRevocationListAttributeName = ldapAttributeCertificateRevocationListAttributeName;
return this;
}
/**
* @param ldapAttributeAuthorityRevocationListAttributeName
* The attribute name(s) in the LDAP directory where to search for
* the attribute value of the specified
* <code>attributeAuthorityRevocationListIssuerAttributeName</code>.
* E.g. if "ou" is used to put information about the issuer of
* CRLs, specify "ou".
* @throws IllegalArgumentException if a necessary parameter is <code>null</code>.
* @return the builder
*/
public Builder setLdapAttributeAuthorityRevocationListAttributeName(String ldapAttributeAuthorityRevocationListAttributeName)
{
this.ldapAttributeAuthorityRevocationListAttributeName = ldapAttributeAuthorityRevocationListAttributeName;
return this;
}
/**
* @param userCertificateSubjectAttributeName
* Attribute(s) in the subject of the certificate which is used
* to be searched in the
* <code>ldapUserCertificateAttributeName</code>. E.g. the
* "cn" attribute of the DN could be used.
* @throws IllegalArgumentException if a necessary parameter is <code>null</code>.
* @return the builder
*/
public Builder setUserCertificateSubjectAttributeName(String userCertificateSubjectAttributeName)
{
this.userCertificateSubjectAttributeName = userCertificateSubjectAttributeName;
return this;
}
/**
* @param cACertificateSubjectAttributeName
* Attribute(s) in the subject of the certificate which is used
* to be searched in the
* <code>ldapCACertificateAttributeName</code>. E.g. the "ou"
* attribute of the DN could be used.
* @throws IllegalArgumentException if a necessary parameter is <code>null</code>.
* @return the builder
*/
public Builder setCACertificateSubjectAttributeName(String cACertificateSubjectAttributeName)
{
this.cACertificateSubjectAttributeName = cACertificateSubjectAttributeName;
return this;
}
/**
* @param crossCertificateSubjectAttributeName
* Attribute(s) in the subject of the cross certificate which is
* used to be searched in the
* <code>ldapCrossCertificateAttributeName</code>. E.g. the
* "o" attribute of the DN may be appropriate.
* @throws IllegalArgumentException if a necessary parameter is <code>null</code>.
* @return the builder
*/
public Builder setCrossCertificateSubjectAttributeName(String crossCertificateSubjectAttributeName)
{
this.crossCertificateSubjectAttributeName = crossCertificateSubjectAttributeName;
return this;
}
/**
* @param certificateRevocationListIssuerAttributeName
* Attribute(s) in the issuer of the CRL which is used to be
* searched in the
* <code>ldapCertificateRevocationListAttributeName</code>.
* E.g. the "o" or "ou" attribute may be used.
* @throws IllegalArgumentException if a necessary parameter is <code>null</code>.
* @return the builder
*/
public Builder setCertificateRevocationListIssuerAttributeName(String certificateRevocationListIssuerAttributeName)
{
this.certificateRevocationListIssuerAttributeName = certificateRevocationListIssuerAttributeName;
return this;
}
/**
* @param deltaRevocationListIssuerAttributeName
* Attribute(s) in the issuer of the CRL which is used to be
* searched in the
* <code>ldapDeltaRevocationListAttributeName</code>. E.g. the
* "o" or "ou" attribute may be used.
* @throws IllegalArgumentException if a necessary parameter is <code>null</code>.
* @return the builder
*/
public Builder setDeltaRevocationListIssuerAttributeName(String deltaRevocationListIssuerAttributeName)
{
this.deltaRevocationListIssuerAttributeName = deltaRevocationListIssuerAttributeName;
return this;
}
/**
* @param authorityRevocationListIssuerAttributeName
* Attribute(s) in the issuer of the CRL which is used to be
* searched in the
* <code>ldapAuthorityRevocationListAttributeName</code>. E.g.
* the "o" or "ou" attribute may be used.
* @throws IllegalArgumentException if a necessary parameter is <code>null</code>.
* @return the builder
*/
public Builder setAuthorityRevocationListIssuerAttributeName(String authorityRevocationListIssuerAttributeName)
{
this.authorityRevocationListIssuerAttributeName = authorityRevocationListIssuerAttributeName;
return this;
}
/**
* @param attributeCertificateAttributeSubjectAttributeName
* Attribute(s) in the subject of the attribute certificate which
* is used to be searched in the
* <code>ldapAttributeCertificateAttributeAttributeName</code>.
* E.g. the "cn" attribute of the DN could be used.
* @throws IllegalArgumentException if a necessary parameter is <code>null</code>.
* @return the builder
*/
public Builder setAttributeCertificateAttributeSubjectAttributeName(String attributeCertificateAttributeSubjectAttributeName)
{
this.attributeCertificateAttributeSubjectAttributeName = attributeCertificateAttributeSubjectAttributeName;
return this;
}
/**
* @param aACertificateSubjectAttributeName
* Attribute(s) in the subject of the attribute certificate which
* is used to be searched in the
* <code>ldapAACertificateAttributeName</code>. E.g. the "ou"
* attribute of the DN could be used.
* @throws IllegalArgumentException if a necessary parameter is <code>null</code>.
* @return the builder
*/
public Builder setAACertificateSubjectAttributeName(String aACertificateSubjectAttributeName)
{
this.aACertificateSubjectAttributeName = aACertificateSubjectAttributeName;
return this;
}
/**
* @param attributeDescriptorCertificateSubjectAttributeName
* Attribute(s) in the subject of the attribute certificate which
* is used to be searched in the
* <code>ldapAttributeDescriptorCertificateAttributeName</code>.
* E.g. the "o" attribute of the DN could be used.
* @throws IllegalArgumentException if a necessary parameter is <code>null</code>.
* @return the builder
*/
public Builder setAttributeDescriptorCertificateSubjectAttributeName(String attributeDescriptorCertificateSubjectAttributeName)
{
this.attributeDescriptorCertificateSubjectAttributeName = attributeDescriptorCertificateSubjectAttributeName;
return this;
}
/**
* @param attributeCertificateRevocationListIssuerAttributeName
* Attribute(s) in the issuer of the CRL which is used to be
* searched in the
* <code>ldapAttributeCertificateRevocationListAttributeName</code>.
* E.g. the "o" or "ou" attribute may be used
* certificate is searched in this LDAP attribute.
* @throws IllegalArgumentException if a necessary parameter is <code>null</code>.
* @return the builder
*/
public Builder setAttributeCertificateRevocationListIssuerAttributeName(String attributeCertificateRevocationListIssuerAttributeName)
{
this.attributeCertificateRevocationListIssuerAttributeName = attributeCertificateRevocationListIssuerAttributeName;
return this;
}
/**
* @param attributeAuthorityRevocationListIssuerAttributeName
* Anttribute(s) in the issuer of the CRL which is used to be
* searched in the
* <code>ldapAttributeAuthorityRevocationListAttributeName</code>.
* E.g. the "o" or "ou" attribute may be used.
* @throws IllegalArgumentException if a necessary parameter is <code>null</code>.
* @return the builder
*/
public Builder setAttributeAuthorityRevocationListIssuerAttributeName(String attributeAuthorityRevocationListIssuerAttributeName)
{
this.attributeAuthorityRevocationListIssuerAttributeName = attributeAuthorityRevocationListIssuerAttributeName;
return this;
}
/**
*
* @param searchForSerialNumberIn If not <code>null</code> the serial number of the
* certificate is searched in this LDAP attribute.
* @throws IllegalArgumentException if a necessary parameter is <code>null</code>.
* @return the builder
*/
public Builder setSearchForSerialNumberIn(String searchForSerialNumberIn)
{
this.searchForSerialNumberIn = searchForSerialNumberIn;
return this;
}
public X509LDAPCertStoreParameters build()
{
if (ldapUserCertificateAttributeName == null // migrate to setters
|| ldapCACertificateAttributeName == null
|| ldapCrossCertificateAttributeName == null
|| ldapCertificateRevocationListAttributeName == null
|| ldapDeltaRevocationListAttributeName == null
|| ldapAuthorityRevocationListAttributeName == null
|| ldapAttributeCertificateAttributeAttributeName == null
|| ldapAACertificateAttributeName == null
|| ldapAttributeDescriptorCertificateAttributeName == null
|| ldapAttributeCertificateRevocationListAttributeName == null
|| ldapAttributeAuthorityRevocationListAttributeName == null
|| userCertificateSubjectAttributeName == null
|| cACertificateSubjectAttributeName == null
|| crossCertificateSubjectAttributeName == null
|| certificateRevocationListIssuerAttributeName == null
|| deltaRevocationListIssuerAttributeName == null
|| authorityRevocationListIssuerAttributeName == null
|| attributeCertificateAttributeSubjectAttributeName == null
|| aACertificateSubjectAttributeName == null
|| attributeDescriptorCertificateSubjectAttributeName == null
|| attributeCertificateRevocationListIssuerAttributeName == null
|| attributeAuthorityRevocationListIssuerAttributeName == null)
{
throw new IllegalArgumentException(
"Necessary parameters not specified.");
}
return new X509LDAPCertStoreParameters(this);
}
}
private X509LDAPCertStoreParameters(Builder builder)
{
this.ldapURL = builder.ldapURL;
this.baseDN = builder.baseDN;
this.userCertificateAttribute = builder.userCertificateAttribute;
this.cACertificateAttribute = builder.cACertificateAttribute;
this.crossCertificateAttribute = builder.crossCertificateAttribute;
this.certificateRevocationListAttribute = builder.certificateRevocationListAttribute;
this.deltaRevocationListAttribute = builder.deltaRevocationListAttribute;
this.authorityRevocationListAttribute = builder.authorityRevocationListAttribute;
this.attributeCertificateAttributeAttribute = builder.attributeCertificateAttributeAttribute;
this.aACertificateAttribute = builder.aACertificateAttribute;
this.attributeDescriptorCertificateAttribute = builder.attributeDescriptorCertificateAttribute;
this.attributeCertificateRevocationListAttribute = builder.attributeCertificateRevocationListAttribute;
this.attributeAuthorityRevocationListAttribute = builder.attributeAuthorityRevocationListAttribute;
this.ldapUserCertificateAttributeName = builder.ldapUserCertificateAttributeName;
this.ldapCACertificateAttributeName = builder.ldapCACertificateAttributeName;
this.ldapCrossCertificateAttributeName = builder.ldapCrossCertificateAttributeName;
this.ldapCertificateRevocationListAttributeName = builder.ldapCertificateRevocationListAttributeName;
this.ldapDeltaRevocationListAttributeName = builder.ldapDeltaRevocationListAttributeName;
this.ldapAuthorityRevocationListAttributeName = builder.ldapAuthorityRevocationListAttributeName;
this.ldapAttributeCertificateAttributeAttributeName = builder.ldapAttributeCertificateAttributeAttributeName;
this.ldapAACertificateAttributeName = builder.ldapAACertificateAttributeName;
this.ldapAttributeDescriptorCertificateAttributeName = builder.ldapAttributeDescriptorCertificateAttributeName;
this.ldapAttributeCertificateRevocationListAttributeName = builder.ldapAttributeCertificateRevocationListAttributeName;
this.ldapAttributeAuthorityRevocationListAttributeName = builder.ldapAttributeAuthorityRevocationListAttributeName;
this.userCertificateSubjectAttributeName = builder.userCertificateSubjectAttributeName;
this.cACertificateSubjectAttributeName = builder.cACertificateSubjectAttributeName;
this.crossCertificateSubjectAttributeName = builder.crossCertificateSubjectAttributeName;
this.certificateRevocationListIssuerAttributeName = builder.certificateRevocationListIssuerAttributeName;
this.deltaRevocationListIssuerAttributeName = builder.deltaRevocationListIssuerAttributeName;
this.authorityRevocationListIssuerAttributeName = builder.authorityRevocationListIssuerAttributeName;
this.attributeCertificateAttributeSubjectAttributeName = builder.attributeCertificateAttributeSubjectAttributeName;
this.aACertificateSubjectAttributeName = builder.aACertificateSubjectAttributeName;
this.attributeDescriptorCertificateSubjectAttributeName = builder.attributeDescriptorCertificateSubjectAttributeName;
this.attributeCertificateRevocationListIssuerAttributeName = builder.attributeCertificateRevocationListIssuerAttributeName;
this.attributeAuthorityRevocationListIssuerAttributeName = builder.attributeAuthorityRevocationListIssuerAttributeName;
this.searchForSerialNumberIn = builder.searchForSerialNumberIn;
}
/**
* Returns a clone of this object.
*/
public Object clone()
{
return this;
}
public boolean equal(Object o)
{
if (o == this)
{
return true;
}
if (!(o instanceof X509LDAPCertStoreParameters))
{
return false;
}
X509LDAPCertStoreParameters params = (X509LDAPCertStoreParameters)o;
return checkField(ldapURL, params.ldapURL)
&& checkField(baseDN, params.baseDN)
&& checkField(userCertificateAttribute, params.userCertificateAttribute)
&& checkField(cACertificateAttribute, params.cACertificateAttribute)
&& checkField(crossCertificateAttribute, params.crossCertificateAttribute)
&& checkField(certificateRevocationListAttribute, params.certificateRevocationListAttribute)
&& checkField(deltaRevocationListAttribute, params.deltaRevocationListAttribute)
&& checkField(authorityRevocationListAttribute, params.authorityRevocationListAttribute)
&& checkField(attributeCertificateAttributeAttribute, params.attributeCertificateAttributeAttribute)
&& checkField(aACertificateAttribute, params.aACertificateAttribute)
&& checkField(attributeDescriptorCertificateAttribute, params.attributeDescriptorCertificateAttribute)
&& checkField(attributeCertificateRevocationListAttribute, params.attributeCertificateRevocationListAttribute)
&& checkField(attributeAuthorityRevocationListAttribute, params.attributeAuthorityRevocationListAttribute)
&& checkField(ldapUserCertificateAttributeName, params.ldapUserCertificateAttributeName)
&& checkField(ldapCACertificateAttributeName, params.ldapCACertificateAttributeName)
&& checkField(ldapCrossCertificateAttributeName, params.ldapCrossCertificateAttributeName)
&& checkField(ldapCertificateRevocationListAttributeName, params.ldapCertificateRevocationListAttributeName)
&& checkField(ldapDeltaRevocationListAttributeName, params.ldapDeltaRevocationListAttributeName)
&& checkField(ldapAuthorityRevocationListAttributeName, params.ldapAuthorityRevocationListAttributeName)
&& checkField(ldapAttributeCertificateAttributeAttributeName, params.ldapAttributeCertificateAttributeAttributeName)
&& checkField(ldapAACertificateAttributeName, params.ldapAACertificateAttributeName)
&& checkField(ldapAttributeDescriptorCertificateAttributeName, params.ldapAttributeDescriptorCertificateAttributeName)
&& checkField(ldapAttributeCertificateRevocationListAttributeName, params.ldapAttributeCertificateRevocationListAttributeName)
&& checkField(ldapAttributeAuthorityRevocationListAttributeName, params.ldapAttributeAuthorityRevocationListAttributeName)
&& checkField(userCertificateSubjectAttributeName, params.userCertificateSubjectAttributeName)
&& checkField(cACertificateSubjectAttributeName, params.cACertificateSubjectAttributeName)
&& checkField(crossCertificateSubjectAttributeName, params.crossCertificateSubjectAttributeName)
&& checkField(certificateRevocationListIssuerAttributeName, params.certificateRevocationListIssuerAttributeName)
&& checkField(deltaRevocationListIssuerAttributeName, params.deltaRevocationListIssuerAttributeName)
&& checkField(authorityRevocationListIssuerAttributeName, params.authorityRevocationListIssuerAttributeName)
&& checkField(attributeCertificateAttributeSubjectAttributeName, params.attributeCertificateAttributeSubjectAttributeName)
&& checkField(aACertificateSubjectAttributeName, params.aACertificateSubjectAttributeName)
&& checkField(attributeDescriptorCertificateSubjectAttributeName, params.attributeDescriptorCertificateSubjectAttributeName)
&& checkField(attributeCertificateRevocationListIssuerAttributeName, params.attributeCertificateRevocationListIssuerAttributeName)
&& checkField(attributeAuthorityRevocationListIssuerAttributeName, params.attributeAuthorityRevocationListIssuerAttributeName)
&& checkField(searchForSerialNumberIn, params.searchForSerialNumberIn);
}
private boolean checkField(Object o1, Object o2)
{
if (o1 == o2)
{
return true;
}
if (o1 == null)
{
return false;
}
return o1.equals(o2);
}
public int hashCode()
{
int hash = 0;
hash = addHashCode(hash, userCertificateAttribute);
hash = addHashCode(hash, cACertificateAttribute);
hash = addHashCode(hash, crossCertificateAttribute);
hash = addHashCode(hash, certificateRevocationListAttribute);
hash = addHashCode(hash, deltaRevocationListAttribute);
hash = addHashCode(hash, authorityRevocationListAttribute);
hash = addHashCode(hash, attributeCertificateAttributeAttribute);
hash = addHashCode(hash, aACertificateAttribute);
hash = addHashCode(hash, attributeDescriptorCertificateAttribute);
hash = addHashCode(hash, attributeCertificateRevocationListAttribute);
hash = addHashCode(hash, attributeAuthorityRevocationListAttribute);
hash = addHashCode(hash, ldapUserCertificateAttributeName);
hash = addHashCode(hash, ldapCACertificateAttributeName);
hash = addHashCode(hash, ldapCrossCertificateAttributeName);
hash = addHashCode(hash, ldapCertificateRevocationListAttributeName);
hash = addHashCode(hash, ldapDeltaRevocationListAttributeName);
hash = addHashCode(hash, ldapAuthorityRevocationListAttributeName);
hash = addHashCode(hash, ldapAttributeCertificateAttributeAttributeName);
hash = addHashCode(hash, ldapAACertificateAttributeName);
hash = addHashCode(hash, ldapAttributeDescriptorCertificateAttributeName);
hash = addHashCode(hash, ldapAttributeCertificateRevocationListAttributeName);
hash = addHashCode(hash, ldapAttributeAuthorityRevocationListAttributeName);
hash = addHashCode(hash, userCertificateSubjectAttributeName);
hash = addHashCode(hash, cACertificateSubjectAttributeName);
hash = addHashCode(hash, crossCertificateSubjectAttributeName);
hash = addHashCode(hash, certificateRevocationListIssuerAttributeName);
hash = addHashCode(hash, deltaRevocationListIssuerAttributeName);
hash = addHashCode(hash, authorityRevocationListIssuerAttributeName);
hash = addHashCode(hash, attributeCertificateAttributeSubjectAttributeName);
hash = addHashCode(hash, aACertificateSubjectAttributeName);
hash = addHashCode(hash, attributeDescriptorCertificateSubjectAttributeName);
hash = addHashCode(hash, attributeCertificateRevocationListIssuerAttributeName);
hash = addHashCode(hash, attributeAuthorityRevocationListIssuerAttributeName);
hash = addHashCode(hash, searchForSerialNumberIn);
return hash;
}
private int addHashCode(int hashCode, Object o)
{
return (hashCode * 29) + (o == null ? 0 : o.hashCode());
}
/**
* @return Returns the aACertificateAttribute.
*/
public String getAACertificateAttribute()
{
return aACertificateAttribute;
}
/**
* @return Returns the aACertificateSubjectAttributeName.
*/
public String getAACertificateSubjectAttributeName()
{
return aACertificateSubjectAttributeName;
}
/**
* @return Returns the attributeAuthorityRevocationListAttribute.
*/
public String getAttributeAuthorityRevocationListAttribute()
{
return attributeAuthorityRevocationListAttribute;
}
/**
* @return Returns the attributeAuthorityRevocationListIssuerAttributeName.
*/
public String getAttributeAuthorityRevocationListIssuerAttributeName()
{
return attributeAuthorityRevocationListIssuerAttributeName;
}
/**
* @return Returns the attributeCertificateAttributeAttribute.
*/
public String getAttributeCertificateAttributeAttribute()
{
return attributeCertificateAttributeAttribute;
}
/**
* @return Returns the attributeCertificateAttributeSubjectAttributeName.
*/
public String getAttributeCertificateAttributeSubjectAttributeName()
{
return attributeCertificateAttributeSubjectAttributeName;
}
/**
* @return Returns the attributeCertificateRevocationListAttribute.
*/
public String getAttributeCertificateRevocationListAttribute()
{
return attributeCertificateRevocationListAttribute;
}
/**
* @return Returns the
* attributeCertificateRevocationListIssuerAttributeName.
*/
public String getAttributeCertificateRevocationListIssuerAttributeName()
{
return attributeCertificateRevocationListIssuerAttributeName;
}
/**
* @return Returns the attributeDescriptorCertificateAttribute.
*/
public String getAttributeDescriptorCertificateAttribute()
{
return attributeDescriptorCertificateAttribute;
}
/**
* @return Returns the attributeDescriptorCertificateSubjectAttributeName.
*/
public String getAttributeDescriptorCertificateSubjectAttributeName()
{
return attributeDescriptorCertificateSubjectAttributeName;
}
/**
* @return Returns the authorityRevocationListAttribute.
*/
public String getAuthorityRevocationListAttribute()
{
return authorityRevocationListAttribute;
}
/**
* @return Returns the authorityRevocationListIssuerAttributeName.
*/
public String getAuthorityRevocationListIssuerAttributeName()
{
return authorityRevocationListIssuerAttributeName;
}
/**
* @return Returns the baseDN.
*/
public String getBaseDN()
{
return baseDN;
}
/**
* @return Returns the cACertificateAttribute.
*/
public String getCACertificateAttribute()
{
return cACertificateAttribute;
}
/**
* @return Returns the cACertificateSubjectAttributeName.
*/
public String getCACertificateSubjectAttributeName()
{
return cACertificateSubjectAttributeName;
}
/**
* @return Returns the certificateRevocationListAttribute.
*/
public String getCertificateRevocationListAttribute()
{
return certificateRevocationListAttribute;
}
/**
* @return Returns the certificateRevocationListIssuerAttributeName.
*/
public String getCertificateRevocationListIssuerAttributeName()
{
return certificateRevocationListIssuerAttributeName;
}
/**
* @return Returns the crossCertificateAttribute.
*/
public String getCrossCertificateAttribute()
{
return crossCertificateAttribute;
}
/**
* @return Returns the crossCertificateSubjectAttributeName.
*/
public String getCrossCertificateSubjectAttributeName()
{
return crossCertificateSubjectAttributeName;
}
/**
* @return Returns the deltaRevocationListAttribute.
*/
public String getDeltaRevocationListAttribute()
{
return deltaRevocationListAttribute;
}
/**
* @return Returns the deltaRevocationListIssuerAttributeName.
*/
public String getDeltaRevocationListIssuerAttributeName()
{
return deltaRevocationListIssuerAttributeName;
}
/**
* @return Returns the ldapAACertificateAttributeName.
*/
public String getLdapAACertificateAttributeName()
{
return ldapAACertificateAttributeName;
}
/**
* @return Returns the ldapAttributeAuthorityRevocationListAttributeName.
*/
public String getLdapAttributeAuthorityRevocationListAttributeName()
{
return ldapAttributeAuthorityRevocationListAttributeName;
}
/**
* @return Returns the ldapAttributeCertificateAttributeAttributeName.
*/
public String getLdapAttributeCertificateAttributeAttributeName()
{
return ldapAttributeCertificateAttributeAttributeName;
}
/**
* @return Returns the ldapAttributeCertificateRevocationListAttributeName.
*/
public String getLdapAttributeCertificateRevocationListAttributeName()
{
return ldapAttributeCertificateRevocationListAttributeName;
}
/**
* @return Returns the ldapAttributeDescriptorCertificateAttributeName.
*/
public String getLdapAttributeDescriptorCertificateAttributeName()
{
return ldapAttributeDescriptorCertificateAttributeName;
}
/**
* @return Returns the ldapAuthorityRevocationListAttributeName.
*/
public String getLdapAuthorityRevocationListAttributeName()
{
return ldapAuthorityRevocationListAttributeName;
}
/**
* @return Returns the ldapCACertificateAttributeName.
*/
public String getLdapCACertificateAttributeName()
{
return ldapCACertificateAttributeName;
}
/**
* @return Returns the ldapCertificateRevocationListAttributeName.
*/
public String getLdapCertificateRevocationListAttributeName()
{
return ldapCertificateRevocationListAttributeName;
}
/**
* @return Returns the ldapCrossCertificateAttributeName.
*/
public String getLdapCrossCertificateAttributeName()
{
return ldapCrossCertificateAttributeName;
}
/**
* @return Returns the ldapDeltaRevocationListAttributeName.
*/
public String getLdapDeltaRevocationListAttributeName()
{
return ldapDeltaRevocationListAttributeName;
}
/**
* @return Returns the ldapURL.
*/
public String getLdapURL()
{
return ldapURL;
}
/**
* @return Returns the ldapUserCertificateAttributeName.
*/
public String getLdapUserCertificateAttributeName()
{
return ldapUserCertificateAttributeName;
}
/**
* @return Returns the searchForSerialNumberIn.
*/
public String getSearchForSerialNumberIn()
{
return searchForSerialNumberIn;
}
/**
* @return Returns the userCertificateAttribute.
*/
public String getUserCertificateAttribute()
{
return userCertificateAttribute;
}
/**
* @return Returns the userCertificateSubjectAttributeName.
*/
public String getUserCertificateSubjectAttributeName()
{
return userCertificateSubjectAttributeName;
}
public static X509LDAPCertStoreParameters getInstance(LDAPCertStoreParameters params)
{
String server = "ldap://" + params.getServerName() + ":" + params.getPort();
X509LDAPCertStoreParameters _params = new Builder(server, "").build();
return _params;
}
}