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

#ifndef __gnu_javax_crypto_jce_prng_UMacRandomSpi__
#define __gnu_javax_crypto_jce_prng_UMacRandomSpi__

#pragma interface

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

extern "Java"
{
  namespace gnu
  {
    namespace javax
    {
      namespace crypto
      {
        namespace jce
        {
          namespace prng
          {
              class UMacRandomSpi;
          }
        }
        namespace prng
        {
            class UMacGenerator;
        }
      }
    }
  }
}

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

public:
  UMacRandomSpi();
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::UMacGenerator * prng;
  static ::java::lang::String * MSG;
  static ::java::lang::String * RETRY;
  ::gnu::javax::crypto::prng::UMacGenerator * __attribute__((aligned(__alignof__( ::java::security::SecureRandomSpi)))) adaptee;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_javax_crypto_jce_prng_UMacRandomSpi__
