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

#ifndef __gnu_javax_net_ssl_provider_PreSharedKeyManagerFactoryImpl__
#define __gnu_javax_net_ssl_provider_PreSharedKeyManagerFactoryImpl__

#pragma interface

#include <javax/net/ssl/KeyManagerFactorySpi.h>
#include <gcj/array.h>

extern "Java"
{
  namespace gnu
  {
    namespace javax
    {
      namespace net
      {
        namespace ssl
        {
            class PreSharedKeyManagerParameters;
          namespace provider
          {
              class PreSharedKeyManagerFactoryImpl;
          }
        }
      }
    }
  }
  namespace java
  {
    namespace security
    {
        class KeyStore;
    }
  }
  namespace javax
  {
    namespace net
    {
      namespace ssl
      {
          class KeyManager;
          class ManagerFactoryParameters;
      }
    }
  }
}

class gnu::javax::net::ssl::provider::PreSharedKeyManagerFactoryImpl : public ::javax::net::ssl::KeyManagerFactorySpi
{

public:
  PreSharedKeyManagerFactoryImpl();
public: // actually protected
  virtual JArray< ::javax::net::ssl::KeyManager * > * engineGetKeyManagers();
  virtual void engineInit(::javax::net::ssl::ManagerFactoryParameters *);
  virtual void engineInit(::java::security::KeyStore *, JArray< jchar > *);
public: // actually package-private
  ::gnu::javax::net::ssl::PreSharedKeyManagerParameters * __attribute__((aligned(__alignof__( ::javax::net::ssl::KeyManagerFactorySpi)))) params;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_javax_net_ssl_provider_PreSharedKeyManagerFactoryImpl__
