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

#ifndef __gnu_javax_net_ssl_PreSharedKeyManager__
#define __gnu_javax_net_ssl_PreSharedKeyManager__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace gnu
  {
    namespace javax
    {
      namespace net
      {
        namespace ssl
        {
            class PreSharedKeyManager;
        }
      }
    }
  }
  namespace javax
  {
    namespace crypto
    {
        class SecretKey;
    }
  }
}

class gnu::javax::net::ssl::PreSharedKeyManager : public ::java::lang::Object
{

public:
  virtual ::javax::crypto::SecretKey * getKey(::java::lang::String *) = 0;
  virtual ::java::lang::String * chooseIdentityHint() = 0;
  static ::java::lang::Class class$;
} __attribute__ ((java_interface));

#endif // __gnu_javax_net_ssl_PreSharedKeyManager__
