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

#ifndef __gnu_java_security_hash_MD4__
#define __gnu_java_security_hash_MD4__

#pragma interface

#include <gnu/java/security/hash/BaseHash.h>
#include <gcj/array.h>

extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace security
      {
        namespace hash
        {
            class MD4;
        }
      }
    }
  }
}

class gnu::java::security::hash::MD4 : public ::gnu::java::security::hash::BaseHash
{

public:
  MD4();
private:
  MD4(::gnu::java::security::hash::MD4 *);
public:
  virtual ::java::lang::Object * clone();
public: // actually protected
  virtual JArray< jbyte > * getResult();
  virtual void resetContext();
public:
  virtual jboolean selfTest();
public: // actually protected
  virtual JArray< jbyte > * padBuffer();
  virtual void transform(JArray< jbyte > *, jint);
private:
  static const jint DIGEST_LENGTH = 16;
  static const jint BLOCK_LENGTH = 64;
  static const jint A = 1732584193;
  static const jint B = -271733879;
  static const jint C = -1732584194;
  static const jint D = 271733878;
  static ::java::lang::String * DIGEST0;
  static ::java::lang::Boolean * valid;
  jint __attribute__((aligned(__alignof__( ::gnu::java::security::hash::BaseHash)))) a;
  jint b;
  jint c;
  jint d;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_security_hash_MD4__
