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

#ifndef __gnu_java_security_key_dss_DSSPrivateKey__
#define __gnu_java_security_key_dss_DSSPrivateKey__

#pragma interface

#include <gnu/java/security/key/dss/DSSKey.h>
#include <gcj/array.h>

extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace security
      {
        namespace key
        {
          namespace dss
          {
              class DSSPrivateKey;
          }
        }
      }
    }
  }
  namespace java
  {
    namespace math
    {
        class BigInteger;
    }
  }
}

class gnu::java::security::key::dss::DSSPrivateKey : public ::gnu::java::security::key::dss::DSSKey
{

public:
  DSSPrivateKey(::java::math::BigInteger *, ::java::math::BigInteger *, ::java::math::BigInteger *, ::java::math::BigInteger *);
  DSSPrivateKey(jint, ::java::math::BigInteger *, ::java::math::BigInteger *, ::java::math::BigInteger *, ::java::math::BigInteger *);
  static ::gnu::java::security::key::dss::DSSPrivateKey * valueOf(JArray< jbyte > *);
  virtual ::java::math::BigInteger * getX();
  virtual JArray< jbyte > * getEncoded(jint);
  virtual jboolean equals(::java::lang::Object *);
  virtual ::java::lang::String * toString();
private:
  ::java::math::BigInteger * __attribute__((aligned(__alignof__( ::gnu::java::security::key::dss::DSSKey)))) x;
  ::java::lang::String * str;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_security_key_dss_DSSPrivateKey__
