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

#ifndef __gnu_java_security_key_rsa_GnuRSAKey__
#define __gnu_java_security_key_rsa_GnuRSAKey__

#pragma interface

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

extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace security
      {
        namespace key
        {
          namespace rsa
          {
              class GnuRSAKey;
          }
        }
      }
    }
  }
  namespace java
  {
    namespace math
    {
        class BigInteger;
    }
  }
}

class gnu::java::security::key::rsa::GnuRSAKey : public ::java::lang::Object
{

public: // actually protected
  GnuRSAKey(jint, ::java::math::BigInteger *, ::java::math::BigInteger *);
public:
  virtual ::java::math::BigInteger * getModulus();
  virtual ::java::lang::String * getAlgorithm();
  virtual JArray< jbyte > * getEncoded();
  virtual ::java::lang::String * getFormat();
  virtual ::java::math::BigInteger * getN();
  virtual ::java::math::BigInteger * getPublicExponent();
  virtual ::java::math::BigInteger * getE();
  virtual jboolean equals(::java::lang::Object *);
  virtual ::java::lang::String * toString();
  virtual JArray< jbyte > * getEncoded(jint) = 0;
private:
  ::java::math::BigInteger * __attribute__((aligned(__alignof__( ::java::lang::Object)))) n;
  ::java::math::BigInteger * e;
public: // actually protected
  jint defaultFormat;
private:
  ::java::lang::String * str;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_security_key_rsa_GnuRSAKey__
