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

#ifndef __gnu_javax_net_ssl_provider_KeyExchangeAlgorithm__
#define __gnu_javax_net_ssl_provider_KeyExchangeAlgorithm__

#pragma interface

#include <java/lang/Enum.h>
#include <gcj/array.h>

extern "Java"
{
  namespace gnu
  {
    namespace javax
    {
      namespace net
      {
        namespace ssl
        {
          namespace provider
          {
              class KeyExchangeAlgorithm;
          }
        }
      }
    }
  }
}

class gnu::javax::net::ssl::provider::KeyExchangeAlgorithm : public ::java::lang::Enum
{

  KeyExchangeAlgorithm(::java::lang::String *, jint);
public:
  static JArray< ::gnu::javax::net::ssl::provider::KeyExchangeAlgorithm * > * values();
  static ::gnu::javax::net::ssl::provider::KeyExchangeAlgorithm * valueOf(::java::lang::String *);
  static ::gnu::javax::net::ssl::provider::KeyExchangeAlgorithm * NONE;
  static ::gnu::javax::net::ssl::provider::KeyExchangeAlgorithm * RSA;
  static ::gnu::javax::net::ssl::provider::KeyExchangeAlgorithm * DH_DSS;
  static ::gnu::javax::net::ssl::provider::KeyExchangeAlgorithm * DH_RSA;
  static ::gnu::javax::net::ssl::provider::KeyExchangeAlgorithm * DH_anon;
  static ::gnu::javax::net::ssl::provider::KeyExchangeAlgorithm * DHE_DSS;
  static ::gnu::javax::net::ssl::provider::KeyExchangeAlgorithm * DHE_RSA;
  static ::gnu::javax::net::ssl::provider::KeyExchangeAlgorithm * PSK;
  static ::gnu::javax::net::ssl::provider::KeyExchangeAlgorithm * DHE_PSK;
  static ::gnu::javax::net::ssl::provider::KeyExchangeAlgorithm * RSA_PSK;
private:
  static JArray< ::gnu::javax::net::ssl::provider::KeyExchangeAlgorithm * > * ENUM$VALUES;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_javax_net_ssl_provider_KeyExchangeAlgorithm__
