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

#ifndef __gnu_java_security_key_rsa_RSAKeyPairX509Codec__
#define __gnu_java_security_key_rsa_RSAKeyPairX509Codec__

#pragma interface

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

extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace security
      {
          class OID;
        namespace key
        {
          namespace rsa
          {
              class RSAKeyPairX509Codec;
          }
        }
      }
    }
  }
  namespace java
  {
    namespace security
    {
        class PrivateKey;
        class PublicKey;
    }
  }
}

class gnu::java::security::key::rsa::RSAKeyPairX509Codec : public ::java::lang::Object
{

public:
  RSAKeyPairX509Codec();
  virtual jint getFormatID();
  virtual JArray< jbyte > * encodePublicKey(::java::security::PublicKey *);
  virtual JArray< jbyte > * encodePrivateKey(::java::security::PrivateKey *);
  virtual ::java::security::PublicKey * decodePublicKey(JArray< jbyte > *);
  virtual ::java::security::PrivateKey * decodePrivateKey(JArray< jbyte > *);
private:
  static ::java::util::logging::Logger * log;
  static ::gnu::java::security::OID * RSA_ALG_OID;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_security_key_rsa_RSAKeyPairX509Codec__
