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

#ifndef __javax_net_ssl_X509KeyManager__
#define __javax_net_ssl_X509KeyManager__

#pragma interface

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

extern "Java"
{
  namespace java
  {
    namespace net
    {
        class Socket;
    }
    namespace security
    {
        class Principal;
        class PrivateKey;
      namespace cert
      {
          class X509Certificate;
      }
    }
  }
  namespace javax
  {
    namespace net
    {
      namespace ssl
      {
          class X509KeyManager;
      }
    }
  }
}

class javax::net::ssl::X509KeyManager : public ::java::lang::Object
{

public:
  virtual ::java::lang::String * chooseClientAlias(JArray< ::java::lang::String * > *, JArray< ::java::security::Principal * > *, ::java::net::Socket *) = 0;
  virtual ::java::lang::String * chooseServerAlias(::java::lang::String *, JArray< ::java::security::Principal * > *, ::java::net::Socket *) = 0;
  virtual JArray< ::java::security::cert::X509Certificate * > * getCertificateChain(::java::lang::String *) = 0;
  virtual JArray< ::java::lang::String * > * getClientAliases(::java::lang::String *, JArray< ::java::security::Principal * > *) = 0;
  virtual ::java::security::PrivateKey * getPrivateKey(::java::lang::String *) = 0;
  virtual JArray< ::java::lang::String * > * getServerAliases(::java::lang::String *, JArray< ::java::security::Principal * > *) = 0;
  static ::java::lang::Class class$;
} __attribute__ ((java_interface));

#endif // __javax_net_ssl_X509KeyManager__
