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

#ifndef __java_security_KeyFactorySpi__
#define __java_security_KeyFactorySpi__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace java
  {
    namespace security
    {
        class Key;
        class KeyFactorySpi;
        class PrivateKey;
        class PublicKey;
      namespace spec
      {
          class KeySpec;
      }
    }
  }
}

class java::security::KeyFactorySpi : public ::java::lang::Object
{

public:
  KeyFactorySpi();
public: // actually protected
  virtual ::java::security::PublicKey * engineGeneratePublic(::java::security::spec::KeySpec *) = 0;
  virtual ::java::security::PrivateKey * engineGeneratePrivate(::java::security::spec::KeySpec *) = 0;
  virtual ::java::security::spec::KeySpec * engineGetKeySpec(::java::security::Key *, ::java::lang::Class *) = 0;
  virtual ::java::security::Key * engineTranslateKey(::java::security::Key *) = 0;
public:
  static ::java::lang::Class class$;
};

#endif // __java_security_KeyFactorySpi__
