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

#ifndef __gnu_javax_net_ssl_provider_ClientHandshake$ParamsVerifier__
#define __gnu_javax_net_ssl_provider_ClientHandshake$ParamsVerifier__

#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 ClientHandshake;
              class ClientHandshake$ParamsVerifier;
          }
        }
      }
    }
  }
  namespace java
  {
    namespace nio
    {
        class ByteBuffer;
    }
  }
}

class gnu::javax::net::ssl::provider::ClientHandshake$ParamsVerifier : public ::gnu::javax::net::ssl::provider::DelegatedTask
{

public: // actually package-private
  ClientHandshake$ParamsVerifier(::gnu::javax::net::ssl::provider::ClientHandshake *, ::java::nio::ByteBuffer *, JArray< jbyte > *);
public:
  virtual void implRun();
public: // actually package-private
  virtual jboolean verified();
private:
  ::java::nio::ByteBuffer * __attribute__((aligned(__alignof__( ::gnu::javax::net::ssl::provider::DelegatedTask)))) paramsBuffer;
  JArray< jbyte > * signature;
  jboolean verified__;
public: // actually package-private
  ::gnu::javax::net::ssl::provider::ClientHandshake * this$0;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_javax_net_ssl_provider_ClientHandshake$ParamsVerifier__
