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

#ifndef __gnu_javax_net_ssl_provider_OutputSecurityParameters__
#define __gnu_javax_net_ssl_provider_OutputSecurityParameters__

#pragma interface

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

extern "Java"
{
  namespace gnu
  {
    namespace classpath
    {
      namespace debug
      {
          class SystemLogger;
      }
    }
    namespace javax
    {
      namespace net
      {
        namespace ssl
        {
          namespace provider
          {
              class CipherSuite;
              class ContentType;
              class OutputSecurityParameters;
              class SessionImpl;
          }
        }
      }
    }
  }
  namespace java
  {
    namespace nio
    {
        class ByteBuffer;
    }
  }
  namespace javax
  {
    namespace crypto
    {
        class Cipher;
        class Mac;
    }
  }
}

class gnu::javax::net::ssl::provider::OutputSecurityParameters : public ::java::lang::Object
{

public:
  OutputSecurityParameters(::javax::crypto::Cipher *, ::javax::crypto::Mac *, ::java::util::zip::Deflater *, ::gnu::javax::net::ssl::provider::SessionImpl *, ::gnu::javax::net::ssl::provider::CipherSuite *);
  virtual JArray< jint > * encrypt(JArray< ::java::nio::ByteBuffer * > *, jint, jint, ::gnu::javax::net::ssl::provider::ContentType *, ::java::nio::ByteBuffer *);
public: // actually package-private
  virtual ::gnu::javax::net::ssl::provider::CipherSuite * suite();
private:
  static ::gnu::classpath::debug::SystemLogger * logger;
  ::javax::crypto::Cipher * __attribute__((aligned(__alignof__( ::java::lang::Object)))) cipher;
  ::javax::crypto::Mac * mac;
  ::java::util::zip::Deflater * deflater;
  ::gnu::javax::net::ssl::provider::SessionImpl * session;
  ::gnu::javax::net::ssl::provider::CipherSuite * suite__;
  jlong sequence;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_javax_net_ssl_provider_OutputSecurityParameters__
