diff options
author | Sergio Giro <sgiro@google.com> | 2016-02-01 14:37:23 +0000 |
---|---|---|
committer | Sergio Giro <sgiro@google.com> | 2016-02-01 15:16:12 +0000 |
commit | 397d32894b89b506dc318e0f83446187c9b76ebe (patch) | |
tree | 8229ff72c8cbb06f49dce3a8382930919fa6fc2b /bcprov/src/main/java/org/bouncycastle/jce/X509LDAPCertStoreParameters.java | |
parent | 9b30eb05e5be69d51881a0d1b31e503e97acd784 (diff) | |
parent | 6d876f3f0ae553704a1dcf7e89003fcf14717037 (diff) | |
download | android_external_bouncycastle-397d32894b89b506dc318e0f83446187c9b76ebe.tar.gz android_external_bouncycastle-397d32894b89b506dc318e0f83446187c9b76ebe.tar.bz2 android_external_bouncycastle-397d32894b89b506dc318e0f83446187c9b76ebe.zip |
Merge remote-tracking branch 'aosp/upstream-master' into merge-152-from-upstream
As to set a common ancestor for future merges from aosp/upstream-master
(when updating to new versions of bouncycastle).
We'll override all the changes of this commit with patch
https://android-review.googlesource.com/#/c/199872
Change-Id: I53a7f797b520a6e119878dbae53246cdcc585ddf
Diffstat (limited to 'bcprov/src/main/java/org/bouncycastle/jce/X509LDAPCertStoreParameters.java')
-rw-r--r-- | bcprov/src/main/java/org/bouncycastle/jce/X509LDAPCertStoreParameters.java | 1258 |
1 files changed, 1258 insertions, 0 deletions
diff --git a/bcprov/src/main/java/org/bouncycastle/jce/X509LDAPCertStoreParameters.java b/bcprov/src/main/java/org/bouncycastle/jce/X509LDAPCertStoreParameters.java new file mode 100644 index 0000000..80532fa --- /dev/null +++ b/bcprov/src/main/java/org/bouncycastle/jce/X509LDAPCertStoreParameters.java @@ -0,0 +1,1258 @@ +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; + } +} |