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

#ifndef __gnu_javax_net_ssl_provider_ServerHandshake$RSAKeyExchange__
#define __gnu_javax_net_ssl_provider_ServerHandshake$RSAKeyExchange__

#pragma interface

#include <gnu/javax/net/ssl/provider/DelegatedTask.h>
#include <gcj/array.h>

extern "Java"
{
  namespace gnu
  {
    namespace javax
    {
      namespace net
      {
        namespace ssl
        {
          namespace provider
          {
              class ServerHandshake;
              class ServerHandshake$RSAKeyExchange;
          }
        }
      }
    }
  }
}

class gnu::javax::net::ssl::provider::ServerHandshake$RSAKeyExchange : public ::gnu::javax::net::ssl::provider::DelegatedTask
{

public: // actually package-private
  ServerHandshake$RSAKeyExchange(::gnu::javax::net::ssl::provider::ServerHandshake *, JArray< jbyte > *);
public:
  virtual void implRun();
private:
  JArray< jbyte > * __attribute__((aligned(__alignof__( ::gnu::javax::net::ssl::provider::DelegatedTask)))) encryptedPreMasterSecret;
public: // actually package-private
  ::gnu::javax::net::ssl::provider::ServerHandshake * this$0;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_javax_net_ssl_provider_ServerHandshake$RSAKeyExchange__
