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

#ifndef __gnu_javax_net_ssl_SSLCipherSuite__
#define __gnu_javax_net_ssl_SSLCipherSuite__

#pragma interface

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

extern "Java"
{
  namespace gnu
  {
    namespace javax
    {
      namespace net
      {
        namespace ssl
        {
            class SSLCipherSuite;
            class SSLProtocolVersion;
        }
      }
    }
  }
  namespace java
  {
    namespace nio
    {
        class ByteBuffer;
    }
    namespace security
    {
        class Provider;
    }
  }
}

class gnu::javax::net::ssl::SSLCipherSuite : public ::java::lang::Object
{

public: // actually protected
  SSLCipherSuite(::java::lang::String *, JArray< jbyte > *, ::gnu::javax::net::ssl::SSLProtocolVersion *);
public:
  static ::gnu::javax::net::ssl::SSLCipherSuite * getInstance(::gnu::javax::net::ssl::SSLProtocolVersion *, JArray< jbyte > *);
  static ::gnu::javax::net::ssl::SSLCipherSuite * getInstance(::gnu::javax::net::ssl::SSLProtocolVersion *, JArray< jbyte > *, ::java::security::Provider *);
  static ::gnu::javax::net::ssl::SSLCipherSuite * getInstance(::java::lang::String *);
  static ::gnu::javax::net::ssl::SSLCipherSuite * getInstance(::java::lang::String *, ::java::security::Provider *);
  virtual ::java::lang::String * getAlgorithm();
  virtual JArray< jbyte > * getId();
  virtual ::java::security::Provider * getProvider();
  virtual ::gnu::javax::net::ssl::SSLProtocolVersion * getProtocolVersion();
  virtual void encipher(::java::nio::ByteBuffer *, ::java::nio::ByteBuffer *) = 0;
private:
  static ::java::lang::String * SERVICE;
  ::java::lang::String * __attribute__((aligned(__alignof__( ::java::lang::Object)))) algorithm;
  JArray< jbyte > * id;
  ::gnu::javax::net::ssl::SSLProtocolVersion * version;
  ::java::security::Provider * provider;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_javax_net_ssl_SSLCipherSuite__
