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

#ifndef __gnu_javax_crypto_key_dh_ElGamalReceiver__
#define __gnu_javax_crypto_key_dh_ElGamalReceiver__

#pragma interface

#include <gnu/javax/crypto/key/dh/ElGamalKeyAgreement.h>
extern "Java"
{
  namespace gnu
  {
    namespace javax
    {
      namespace crypto
      {
        namespace key
        {
            class IncomingMessage;
            class OutgoingMessage;
          namespace dh
          {
              class ElGamalReceiver;
          }
        }
      }
    }
  }
  namespace javax
  {
    namespace crypto
    {
      namespace interfaces
      {
          class DHPrivateKey;
      }
    }
  }
}

class gnu::javax::crypto::key::dh::ElGamalReceiver : public ::gnu::javax::crypto::key::dh::ElGamalKeyAgreement
{

public:
  ElGamalReceiver();
public: // actually protected
  virtual void engineInit(::java::util::Map *);
  virtual ::gnu::javax::crypto::key::OutgoingMessage * engineProcessMessage(::gnu::javax::crypto::key::IncomingMessage *);
private:
  ::gnu::javax::crypto::key::OutgoingMessage * computeSharedSecret(::gnu::javax::crypto::key::IncomingMessage *);
  ::javax::crypto::interfaces::DHPrivateKey * __attribute__((aligned(__alignof__( ::gnu::javax::crypto::key::dh::ElGamalKeyAgreement)))) B;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_javax_crypto_key_dh_ElGamalReceiver__
