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

#ifndef __gnu_javax_crypto_jce_prng_ICMRandomSpi__
#define __gnu_javax_crypto_jce_prng_ICMRandomSpi__

#pragma interface

#include <java/security/SecureRandomSpi.h>
#include <gcj/array.h>

extern "Java"
{
  namespace gnu
  {
    namespace javax
    {
      namespace crypto
      {
        namespace jce
        {
          namespace prng
          {
              class ICMRandomSpi;
          }
        }
        namespace prng
        {
            class ICMGenerator;
        }
      }
    }
  }
}

class gnu::javax::crypto::jce::prng::ICMRandomSpi : public ::java::security::SecureRandomSpi
{

public:
  ICMRandomSpi();
private:
  static void resetLocalPRNG();
public:
  virtual JArray< jbyte > * engineGenerateSeed(jint);
  virtual void engineNextBytes(JArray< jbyte > *);
  virtual void engineSetSeed(JArray< jbyte > *);
private:
  static ::java::util::logging::Logger * log;
  static ::gnu::javax::crypto::prng::ICMGenerator * prng;
  static ::java::lang::String * MSG;
  static ::java::lang::String * RETRY;
  static ::java::lang::String * LIMIT_REACHED_MSG;
  static ::java::lang::String * RESEED;
  ::gnu::javax::crypto::prng::ICMGenerator * __attribute__((aligned(__alignof__( ::java::security::SecureRandomSpi)))) adaptee;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_javax_crypto_jce_prng_ICMRandomSpi__
