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

#ifndef __gnu_javax_crypto_kwa_AESKeyWrap__
#define __gnu_javax_crypto_kwa_AESKeyWrap__

#pragma interface

#include <gnu/javax/crypto/kwa/BaseKeyWrappingAlgorithm.h>
#include <gcj/array.h>

extern "Java"
{
  namespace gnu
  {
    namespace javax
    {
      namespace crypto
      {
        namespace cipher
        {
            class Rijndael;
        }
        namespace kwa
        {
            class AESKeyWrap;
        }
      }
    }
  }
}

class gnu::javax::crypto::kwa::AESKeyWrap : public ::gnu::javax::crypto::kwa::BaseKeyWrappingAlgorithm
{

public:
  AESKeyWrap();
public: // actually protected
  virtual void engineInit(::java::util::Map *);
  virtual JArray< jbyte > * engineWrap(JArray< jbyte > *, jint, jint);
  virtual JArray< jbyte > * engineUnwrap(JArray< jbyte > *, jint, jint);
private:
  static JArray< jbyte > * DEFAULT_IV;
  ::gnu::javax::crypto::cipher::Rijndael * __attribute__((aligned(__alignof__( ::gnu::javax::crypto::kwa::BaseKeyWrappingAlgorithm)))) aes;
  JArray< jbyte > * iv;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_javax_crypto_kwa_AESKeyWrap__
