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

#ifndef __gnu_javax_crypto_mode_ICM__
#define __gnu_javax_crypto_mode_ICM__

#pragma interface

#include <gnu/javax/crypto/mode/BaseMode.h>
#include <gcj/array.h>

extern "Java"
{
  namespace gnu
  {
    namespace javax
    {
      namespace crypto
      {
        namespace cipher
        {
            class IBlockCipher;
        }
        namespace mode
        {
            class ICM;
        }
      }
    }
  }
  namespace java
  {
    namespace math
    {
        class BigInteger;
    }
  }
}

class gnu::javax::crypto::mode::ICM : public ::gnu::javax::crypto::mode::BaseMode
{

public: // actually package-private
  ICM(::gnu::javax::crypto::cipher::IBlockCipher *, jint);
private:
  ICM(::gnu::javax::crypto::mode::ICM *);
public:
  virtual ::java::lang::Object * clone();
  virtual void setup();
  virtual void teardown();
  virtual void encryptBlock(JArray< jbyte > *, jint, JArray< jbyte > *, jint);
  virtual void decryptBlock(JArray< jbyte > *, jint, JArray< jbyte > *, jint);
private:
  void icm(JArray< jbyte > *, jint, JArray< jbyte > *, jint);
  static ::java::math::BigInteger * TWO_FIFTY_SIX;
  ::java::math::BigInteger * __attribute__((aligned(__alignof__( ::gnu::javax::crypto::mode::BaseMode)))) maxBlocksPerSegment;
  ::java::math::BigInteger * counterRange;
  ::java::math::BigInteger * C0;
  ::java::math::BigInteger * blockNdx;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_javax_crypto_mode_ICM__
