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

#ifndef __gnu_java_security_key_IKeyPairCodec__
#define __gnu_java_security_key_IKeyPairCodec__

#pragma interface

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

extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace security
      {
        namespace key
        {
            class IKeyPairCodec;
        }
      }
    }
  }
  namespace java
  {
    namespace security
    {
        class PrivateKey;
        class PublicKey;
    }
  }
}

class gnu::java::security::key::IKeyPairCodec : public ::java::lang::Object
{

public:
  virtual jint getFormatID() = 0;
  virtual JArray< jbyte > * encodePublicKey(::java::security::PublicKey *) = 0;
  virtual JArray< jbyte > * encodePrivateKey(::java::security::PrivateKey *) = 0;
  virtual ::java::security::PublicKey * decodePublicKey(JArray< jbyte > *) = 0;
  virtual ::java::security::PrivateKey * decodePrivateKey(JArray< jbyte > *) = 0;
  static const jint RAW_FORMAT = 1;
  static const jint X509_FORMAT = 2;
  static const jint PKCS8_FORMAT = 3;
  static const jint ASN1_FORMAT = 4;
  static ::java::lang::Class class$;
} __attribute__ ((java_interface));

#endif // __gnu_java_security_key_IKeyPairCodec__
