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

#ifndef __gnu_javax_crypto_cipher_IBlockCipher__
#define __gnu_javax_crypto_cipher_IBlockCipher__

#pragma interface

#include <java/lang/Object.h>
#include <gcj/array.h>

extern "Java"
{
  namespace gnu
  {
    namespace javax
    {
      namespace crypto
      {
        namespace cipher
        {
            class IBlockCipher;
        }
      }
    }
  }
}

class gnu::javax::crypto::cipher::IBlockCipher : public ::java::lang::Object
{

public:
  virtual ::java::lang::String * name() = 0;
  virtual jint defaultBlockSize() = 0;
  virtual jint defaultKeySize() = 0;
  virtual ::java::util::Iterator * blockSizes() = 0;
  virtual ::java::util::Iterator * keySizes() = 0;
  virtual ::java::lang::Object * clone() = 0;
  virtual void init(::java::util::Map *) = 0;
  virtual jint currentBlockSize() = 0;
  virtual void reset() = 0;
  virtual void encryptBlock(JArray< jbyte > *, jint, JArray< jbyte > *, jint) = 0;
  virtual void decryptBlock(JArray< jbyte > *, jint, JArray< jbyte > *, jint) = 0;
  virtual jboolean selfTest() = 0;
  static ::java::lang::String * CIPHER_BLOCK_SIZE;
  static ::java::lang::String * KEY_MATERIAL;
  static ::java::lang::Class class$;
} __attribute__ ((java_interface));

#endif // __gnu_javax_crypto_cipher_IBlockCipher__
