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

#ifndef __gnu_java_security_key_dss_DSSKeyPairPKCS8Codec__
#define __gnu_java_security_key_dss_DSSKeyPairPKCS8Codec__

#pragma interface

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

extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace security
      {
          class OID;
        namespace key
        {
          namespace dss
          {
              class DSSKeyPairPKCS8Codec;
          }
        }
      }
    }
  }
  namespace java
  {
    namespace security
    {
        class PrivateKey;
        class PublicKey;
    }
  }
}

class gnu::java::security::key::dss::DSSKeyPairPKCS8Codec : public ::java::lang::Object
{

public:
  DSSKeyPairPKCS8Codec();
  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 * DSA_ALG_OID;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_security_key_dss_DSSKeyPairPKCS8Codec__
