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

#ifndef __gnu_java_security_provider_X509CertificateFactory__
#define __gnu_java_security_provider_X509CertificateFactory__

#pragma interface

#include <java/security/cert/CertificateFactorySpi.h>
extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace security
      {
        namespace provider
        {
            class X509CertificateFactory;
        }
        namespace x509
        {
            class X509CRL;
            class X509Certificate;
        }
      }
    }
  }
  namespace java
  {
    namespace security
    {
      namespace cert
      {
          class CRL;
          class CertPath;
          class Certificate;
      }
    }
  }
}

class gnu::java::security::provider::X509CertificateFactory : public ::java::security::cert::CertificateFactorySpi
{

public:
  X509CertificateFactory();
  virtual ::java::security::cert::Certificate * engineGenerateCertificate(::java::io::InputStream *);
  virtual ::java::util::Collection * engineGenerateCertificates(::java::io::InputStream *);
  virtual ::java::security::cert::CRL * engineGenerateCRL(::java::io::InputStream *);
  virtual ::java::util::Collection * engineGenerateCRLs(::java::io::InputStream *);
  virtual ::java::security::cert::CertPath * engineGenerateCertPath(::java::util::List *);
  virtual ::java::security::cert::CertPath * engineGenerateCertPath(::java::io::InputStream *);
  virtual ::java::security::cert::CertPath * engineGenerateCertPath(::java::io::InputStream *, ::java::lang::String *);
  virtual ::java::util::Iterator * engineGetCertPathEncodings();
private:
  ::gnu::java::security::x509::X509Certificate * generateCert(::java::io::InputStream *);
  ::gnu::java::security::x509::X509CRL * generateCRL(::java::io::InputStream *);
public:
  static ::java::lang::String * BEGIN_CERTIFICATE;
  static ::java::lang::String * END_CERTIFICATE;
  static ::java::lang::String * BEGIN_X509_CRL;
  static ::java::lang::String * END_X509_CRL;
  static ::java::lang::Class class$;
};

#endif // __gnu_java_security_provider_X509CertificateFactory__
