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

#ifndef __gnu_javax_net_ssl_provider_AbstractHandshake$CertVerifier__
#define __gnu_javax_net_ssl_provider_AbstractHandshake$CertVerifier__

#pragma interface

#include <gnu/javax/net/ssl/provider/DelegatedTask.h>
#include <gcj/array.h>

extern "Java"
{
  namespace gnu
  {
    namespace javax
    {
      namespace net
      {
        namespace ssl
        {
          namespace provider
          {
              class AbstractHandshake;
              class AbstractHandshake$CertVerifier;
          }
        }
      }
    }
  }
  namespace java
  {
    namespace security
    {
      namespace cert
      {
          class X509Certificate;
      }
    }
  }
}

class gnu::javax::net::ssl::provider::AbstractHandshake$CertVerifier : public ::gnu::javax::net::ssl::provider::DelegatedTask
{

public: // actually protected
  AbstractHandshake$CertVerifier(::gnu::javax::net::ssl::provider::AbstractHandshake *, jboolean, JArray< ::java::security::cert::X509Certificate * > *);
public: // actually package-private
  virtual jboolean verified();
public: // actually protected
  virtual void implRun();
private:
  jboolean __attribute__((aligned(__alignof__( ::gnu::javax::net::ssl::provider::DelegatedTask)))) clientSide;
  JArray< ::java::security::cert::X509Certificate * > * chain;
  jboolean verified__;
public: // actually package-private
  ::gnu::javax::net::ssl::provider::AbstractHandshake * this$0;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_javax_net_ssl_provider_AbstractHandshake$CertVerifier__
