Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.bouncycastle.jce.provider;
  
  import java.util.HashSet;
  import java.util.Iterator;
  import java.util.Set;
  
A SPI implementation of Bouncy Castle X509Store for getting certificates form a LDAP directory.

 
 public class X509StoreLDAPCerts
     extends X509StoreSpi
 {
 
     private LDAPStoreHelper helper;
 
     public X509StoreLDAPCerts()
     {
     }

    
Initializes this LDAP cert store implementation.

Parameters:
params X509LDAPCertStoreParameters.
Throws:
java.lang.IllegalArgumentException if params is not an instance of X509LDAPCertStoreParameters.
 
     public void engineInit(X509StoreParameters params)
     {
         if (!(params instanceof X509LDAPCertStoreParameters))
         {
             throw new IllegalArgumentException(
                 "Initialization parameters must be an instance of "
                     + X509LDAPCertStoreParameters.class.getName() + ".");
         }
          = new LDAPStoreHelper((X509LDAPCertStoreParameters)params);
     }

    
Returns a collection of matching certificates from the LDAP location.

The selector must be a of type X509CertStoreSelector. If it is not an empty collection is returned.

The implementation searches only for CA certificates, if the method java.security.cert.X509CertSelector.getBasicConstraints() is greater or equal to 0. If it is -2 only end certificates are searched.

The subject and the serial number for end certificates should be reasonable criterias for a selector.

Parameters:
selector The selector to use for finding.
Returns:
A collection with the matches.
Throws:
org.bouncycastle.util.StoreException if an exception occurs while searching.
 
     public Collection engineGetMatches(Selector selectorthrows StoreException
     {
         if (!(selector instanceof X509CertStoreSelector))
         {
             return .;
         }
         X509CertStoreSelector xselector = (X509CertStoreSelector)selector;
         Set set = new HashSet();
         // test if only CA certificates should be selected
         if (xselector.getBasicConstraints() > 0)
         {
             set.addAll(.getCACertificates(xselector));
             set.addAll(getCertificatesFromCrossCertificatePairs(xselector));
         }
         // only end certificates should be selected
         else if (xselector.getBasicConstraints() == -2)
         {
             set.addAll(.getUserCertificates(xselector));
         }
         // nothing specified
         else
         {
             set.addAll(.getUserCertificates(xselector));
             set.addAll(.getCACertificates(xselector));
             set.addAll(getCertificatesFromCrossCertificatePairs(xselector));
         }
         return set;
     }
 
        X509CertStoreSelector xselectorthrows StoreException
    {
        Set set = new HashSet();
        ps.setForwardSelector(xselector);
        ps.setReverseSelector(new X509CertStoreSelector());
        
        Set crossCerts = new HashSet(.getCrossCertificatePairs(ps));
        Set forward = new HashSet();
        Set reverse = new HashSet();
        Iterator it = crossCerts.iterator();
        while (it.hasNext())
        {
            X509CertificatePair pair = (X509CertificatePair)it.next();
            if (pair.getForward() != null)
            {
                forward.add(pair.getForward());
            }
            if (pair.getReverse() != null)
            {
                reverse.add(pair.getReverse());
            }
        }
        set.addAll(forward);
        set.addAll(reverse);
        return set;
    }
New to GrepCode? Check out our FAQ X