1package org.bouncycastle.x509; 2 3import org.bouncycastle.util.Selector; 4import org.bouncycastle.util.Store; 5 6import java.security.NoSuchAlgorithmException; 7import java.security.NoSuchProviderException; 8import java.security.Provider; 9import java.util.Collection; 10 11public class X509Store 12 implements Store 13{ 14 public static X509Store getInstance(String type, X509StoreParameters parameters) 15 throws NoSuchStoreException 16 { 17 try 18 { 19 X509Util.Implementation impl = X509Util.getImplementation("X509Store", type); 20 21 return createStore(impl, parameters); 22 } 23 catch (NoSuchAlgorithmException e) 24 { 25 throw new NoSuchStoreException(e.getMessage()); 26 } 27 } 28 29 public static X509Store getInstance(String type, X509StoreParameters parameters, String provider) 30 throws NoSuchStoreException, NoSuchProviderException 31 { 32 return getInstance(type, parameters, X509Util.getProvider(provider)); 33 } 34 35 public static X509Store getInstance(String type, X509StoreParameters parameters, Provider provider) 36 throws NoSuchStoreException 37 { 38 try 39 { 40 X509Util.Implementation impl = X509Util.getImplementation("X509Store", type, provider); 41 42 return createStore(impl, parameters); 43 } 44 catch (NoSuchAlgorithmException e) 45 { 46 throw new NoSuchStoreException(e.getMessage()); 47 } 48 } 49 50 private static X509Store createStore(X509Util.Implementation impl, X509StoreParameters parameters) 51 { 52 X509StoreSpi spi = (X509StoreSpi)impl.getEngine(); 53 54 spi.engineInit(parameters); 55 56 return new X509Store(impl.getProvider(), spi); 57 } 58 59 private Provider _provider; 60 private X509StoreSpi _spi; 61 62 private X509Store( 63 Provider provider, 64 X509StoreSpi spi) 65 { 66 _provider = provider; 67 _spi = spi; 68 } 69 70 public Provider getProvider() 71 { 72 return _provider; 73 } 74 75 public Collection getMatches(Selector selector) 76 { 77 return _spi.engineGetMatches(selector); 78 } 79} 80