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

#ifndef __java_security_SecureRandom__
#define __java_security_SecureRandom__

#pragma interface

#include <java/util/Random.h>
#include <gcj/array.h>

extern "Java"
{
  namespace java
  {
    namespace security
    {
      class SecureRandom;
      class SecureRandomSpi;
      class Provider;
    }
  }
}

class java::security::SecureRandom : public ::java::util::Random
{
public:
  SecureRandom ();
  SecureRandom (jbyteArray);
public:  // actually protected
  SecureRandom (::java::security::SecureRandomSpi *, ::java::security::Provider *);
private:
  SecureRandom (::java::security::SecureRandomSpi *, ::java::security::Provider *, ::java::lang::String *);
public:
  static ::java::security::SecureRandom *getInstance (::java::lang::String *);
  static ::java::security::SecureRandom *getInstance (::java::lang::String *, ::java::lang::String *);
  static ::java::security::SecureRandom *getInstance (::java::lang::String *, ::java::security::Provider *);
  virtual ::java::security::Provider *getProvider () { return provider; }
  virtual ::java::lang::String *getAlgorithm () { return algorithm; }
  virtual void setSeed (jbyteArray);
  virtual void setSeed (jlong);
  virtual void nextBytes (jbyteArray);
public:  // actually protected
  virtual jint next (jint);
public:
  static jbyteArray getSeed (jint);
  virtual jbyteArray generateSeed (jint);
private:
  static jint generateSeed (jbyteArray);
  static jint generateSeed (jbyteArray, jint, jint);
  static ::java::lang::String *SECURE_RANDOM;
  static const jlong serialVersionUID = 4940670005562187LL;
public: // actually package-private
  jlong __attribute__((aligned(__alignof__( ::java::util::Random ))))  counter;
  ::java::security::Provider *provider;
  jbyteArray randomBytes;
  jint randomBytesUsed;
  ::java::security::SecureRandomSpi *secureRandomSpi;
  jbyteArray state;
private:
  ::java::lang::String *algorithm;
  jboolean isSeeded;
  static ::java::lang::String *SECURERANDOM_SOURCE;
  static ::java::lang::String *JAVA_SECURITY_EGD;
  static ::java::util::logging::Logger *logger;
public:

  static ::java::lang::Class class$;
};

#endif /* __java_security_SecureRandom__ */
