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

#ifndef __gnu_java_security_hash_Sha256__
#define __gnu_java_security_hash_Sha256__

#pragma interface

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

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

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

public:
  Sha256();
private:
  Sha256(::gnu::java::security::hash::Sha256 *);
public:
  static JArray< jint > * G(jint, jint, jint, jint, jint, jint, jint, jint, JArray< jbyte > *, jint);
  virtual ::java::lang::Object * clone();
public: // actually protected
  virtual void transform(JArray< jbyte > *, jint);
  virtual JArray< jbyte > * padBuffer();
  virtual JArray< jbyte > * getResult();
  virtual void resetContext();
public:
  virtual jboolean selfTest();
private:
  static JArray< jint > * sha(jint, jint, jint, jint, jint, jint, jint, jint, JArray< jbyte > *, jint);
  static JArray< jint > * k;
  static const jint BLOCK_SIZE = 64;
  static ::java::lang::String * DIGEST0;
  static JArray< jint > * w;
  static ::java::lang::Boolean * valid;
  jint __attribute__((aligned(__alignof__( ::gnu::java::security::hash::BaseHash)))) h0;
  jint h1;
  jint h2;
  jint h3;
  jint h4;
  jint h5;
  jint h6;
  jint h7;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_security_hash_Sha256__
