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

#ifndef __java_security_KeyPairGeneratorSpi__
#define __java_security_KeyPairGeneratorSpi__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace java
  {
    namespace security
    {
        class KeyPair;
        class KeyPairGeneratorSpi;
        class SecureRandom;
      namespace spec
      {
          class AlgorithmParameterSpec;
      }
    }
  }
}

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

public:
  KeyPairGeneratorSpi();
  virtual void initialize(jint, ::java::security::SecureRandom *) = 0;
  virtual void initialize(::java::security::spec::AlgorithmParameterSpec *, ::java::security::SecureRandom *);
  virtual ::java::security::KeyPair * generateKeyPair() = 0;
public: // actually protected
  virtual ::java::lang::Object * clone();
public:
  static ::java::lang::Class class$;
};

#endif // __java_security_KeyPairGeneratorSpi__
