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

#ifndef __javax_crypto_spec_DESedeKeySpec__
#define __javax_crypto_spec_DESedeKeySpec__

#pragma interface

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

extern "Java"
{
  namespace javax
  {
    namespace crypto
    {
      namespace spec
      {
          class DESedeKeySpec;
      }
    }
  }
}

class javax::crypto::spec::DESedeKeySpec : public ::java::lang::Object
{

public:
  DESedeKeySpec(JArray< jbyte > *);
  DESedeKeySpec(JArray< jbyte > *, jint);
  static jboolean isParityAdjusted(JArray< jbyte > *, jint);
  virtual JArray< jbyte > * getKey();
  static const jint DES_EDE_KEY_LEN = 24;
private:
  JArray< jbyte > * __attribute__((aligned(__alignof__( ::java::lang::Object)))) key;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_crypto_spec_DESedeKeySpec__
