
// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-

#ifndef __gnu_java_security_provider_CollectionCertStoreImpl__
#define __gnu_java_security_provider_CollectionCertStoreImpl__

#pragma interface

#include <java/security/cert/CertStoreSpi.h>
extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace security
      {
        namespace provider
        {
            class CollectionCertStoreImpl;
        }
      }
    }
  }
  namespace java
  {
    namespace security
    {
      namespace cert
      {
          class CRLSelector;
          class CertSelector;
          class CertStoreParameters;
      }
    }
  }
}

class gnu::java::security::provider::CollectionCertStoreImpl : public ::java::security::cert::CertStoreSpi
{

public:
  CollectionCertStoreImpl(::java::security::cert::CertStoreParameters *);
  ::java::util::Collection * engineGetCertificates(::java::security::cert::CertSelector *);
  ::java::util::Collection * engineGetCRLs(::java::security::cert::CRLSelector *);
private:
  ::java::util::Collection * __attribute__((aligned(__alignof__( ::java::security::cert::CertStoreSpi)))) store;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_security_provider_CollectionCertStoreImpl__
