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

#ifndef __gnu_javax_net_ssl_provider_ClientKeyExchangeBuilder__
#define __gnu_javax_net_ssl_provider_ClientKeyExchangeBuilder__

#pragma interface

#include <gnu/javax/net/ssl/provider/ClientKeyExchange.h>
extern "Java"
{
  namespace gnu
  {
    namespace javax
    {
      namespace net
      {
        namespace ssl
        {
          namespace provider
          {
              class CipherSuite;
              class ClientKeyExchangeBuilder;
              class ProtocolVersion;
          }
        }
      }
    }
  }
  namespace java
  {
    namespace nio
    {
        class ByteBuffer;
    }
  }
}

class gnu::javax::net::ssl::provider::ClientKeyExchangeBuilder : public ::gnu::javax::net::ssl::provider::ClientKeyExchange
{

public:
  ClientKeyExchangeBuilder(::gnu::javax::net::ssl::provider::CipherSuite *, ::gnu::javax::net::ssl::provider::ProtocolVersion *);
  virtual ::java::nio::ByteBuffer * buffer();
  virtual void setExchangeKeys(::java::nio::ByteBuffer *);
  static ::java::lang::Class class$;
};

#endif // __gnu_javax_net_ssl_provider_ClientKeyExchangeBuilder__
