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

#ifndef __gnu_java_security_jce_sig_RSAKeyPairGeneratorSpi__
#define __gnu_java_security_jce_sig_RSAKeyPairGeneratorSpi__

#pragma interface

#include <gnu/java/security/jce/sig/KeyPairGeneratorAdapter.h>
extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace security
      {
        namespace jce
        {
          namespace sig
          {
              class RSAKeyPairGeneratorSpi;
          }
        }
      }
    }
  }
  namespace java
  {
    namespace security
    {
        class SecureRandom;
      namespace spec
      {
          class AlgorithmParameterSpec;
      }
    }
  }
}

class gnu::java::security::jce::sig::RSAKeyPairGeneratorSpi : public ::gnu::java::security::jce::sig::KeyPairGeneratorAdapter
{

public:
  RSAKeyPairGeneratorSpi();
  virtual void initialize(jint, ::java::security::SecureRandom *);
  virtual void initialize(::java::security::spec::AlgorithmParameterSpec *, ::java::security::SecureRandom *);
  static ::java::lang::Class class$;
};

#endif // __gnu_java_security_jce_sig_RSAKeyPairGeneratorSpi__
