/* * Copyright 1999-2010 University of Chicago * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under the License is * distributed on an "AS IS" BASIS,WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. * * See the License for the specific language governing permissions and limitations under the License. */ package org.globus.gsi.provider; import java.security.InvalidAlgorithmParameterException; import java.security.cert.CRL; import java.security.cert.CRLSelector; import java.security.cert.CertSelector; import java.security.cert.CertStoreException; import java.security.cert.CertStoreParameters; import java.security.cert.CertStoreSpi; import java.security.cert.Certificate; import java.security.cert.X509CRL; import java.security.cert.X509Certificate; import java.util.Collection; import java.util.List; import java.util.Vector; /** * FILL ME * * @author ranantha@mcs.anl.gov */ public class MockCertStore extends CertStoreSpi { private Vector<X509Certificate> certificate = new Vector(); private Vector<X509CRL> crl = new Vector(); public MockCertStore(CertStoreParameters param) throws InvalidAlgorithmParameterException { super(param); if (param != null) { if (param instanceof TestProxyPathValidator.TestCertParameters) { TestProxyPathValidator.TestCertParameters parameters = (TestProxyPathValidator.TestCertParameters) param; X509Certificate[] certs = parameters.getCertificates(); if (certs != null) { for (int i = 0; i < certs.length; i++) { this.certificate.add(certs[i]); } } X509CRL[] crls = parameters.getCRLs(); if (crls != null) { for (int i = 0; i < crls.length; i++) { this.crl.add(crls[i]); } } } } } /** * Returns a <code>Collection</code> of <code>Certificate</code>s that match * the specified selector. If no <code>Certificate</code>s match the * selector, an empty <code>Collection</code> will be returned. * <p/> * For some <code>CertStore</code> types, the resulting * <code>Collection</code> may not contain <b>all</b> of the * <code>Certificate</code>s that match the selector. For instance, an LDAP * <code>CertStore</code> may not search all entries in the directory. * Instead, it may just search entries that are likely to contain the * <code>Certificate</code>s it is looking for. * <p/> * Some <code>CertStore</code> implementations (especially LDAP * <code>CertStore</code>s) may throw a <code>CertStoreException</code> * unless a non-null <code>CertSelector</code> is provided that includes * specific criteria that can be used to find the certificates. Issuer * and/or subject names are especially useful criteria. * * @param selector A <code>CertSelector</code> used to select which * <code>Certificate</code>s should be returned. Specify * <code>null</code> to return all <code>Certificate</code>s * (if supported). * @return A <code>Collection</code> of <code>Certificate</code>s that match * the specified selector (never <code>null</code>) * @throws java.security.cert.CertStoreException * if an exception occurs */ public Collection<? extends Certificate> engineGetCertificates( CertSelector selector) throws CertStoreException { // For test, unsupported throw new UnsupportedOperationException(); } /** * Returns a <code>Collection</code> of <code>CRL</code>s that match the * specified selector. If no <code>CRL</code>s match the selector, an empty * <code>Collection</code> will be returned. * <p/> * For some <code>CertStore</code> types, the resulting * <code>Collection</code> may not contain <b>all</b> of the * <code>CRL</code>s that match the selector. For instance, an LDAP * <code>CertStore</code> may not search all entries in the directory. * Instead, it may just search entries that are likely to contain the * <code>CRL</code>s it is looking for. * <p/> * Some <code>CertStore</code> implementations (especially LDAP * <code>CertStore</code>s) may throw a <code>CertStoreException</code> * unless a non-null <code>CRLSelector</code> is provided that includes * specific criteria that can be used to find the CRLs. Issuer names and/or * the certificate to be checked are especially useful. * * @param selector A <code>CRLSelector</code> used to select which * <code>CRL</code>s should be returned. Specify * <code>null</code> to return all <code>CRL</code>s (if * supported). * @return A <code>Collection</code> of <code>CRL</code>s that match the * specified selector (never <code>null</code>) * @throws java.security.cert.CertStoreException * if an exception occurs */ public Collection<? extends CRL> engineGetCRLs(CRLSelector selector) throws CertStoreException { if (selector == null) { return this.crl; } List<X509CRL> crlList = new Vector<X509CRL>(); for (X509CRL aCrl : this.crl) { if (selector.match(aCrl)) { crlList.add(aCrl); } } return crlList; } }