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

#ifndef __gnu_java_security_sig_rsa_RSASignatureFactory__
#define __gnu_java_security_sig_rsa_RSASignatureFactory__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace security
      {
        namespace sig
        {
            class ISignature;
          namespace rsa
          {
              class RSASignatureFactory;
          }
        }
      }
    }
  }
}

class gnu::java::security::sig::rsa::RSASignatureFactory : public ::java::lang::Object
{

  RSASignatureFactory();
public:
  static ::gnu::java::security::sig::ISignature * getInstance(::java::lang::String *);
  static ::java::util::Set * getNames();
private:
  static ::gnu::java::security::sig::ISignature * getPSSSignature(::java::lang::String *);
  static ::gnu::java::security::sig::ISignature * getPKCS1Signature(::java::lang::String *);
  static ::java::util::Set * names;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_security_sig_rsa_RSASignatureFactory__
