00001 // -*- C++ -*- 00002 00003 //============================================================================= 00004 /** 00005 * @file SSLIOP_ClientCredentials.h 00006 * 00007 * $Id: SSLIOP_ClientCredentials.h 77188 2007-02-19 12:34:36Z johnnyw $ 00008 * 00009 * @author Ossama Othman <ossama@dre.vanderbilt.edu> 00010 */ 00011 //============================================================================= 00012 00013 00014 #ifndef TAO_SSLIOP_CLIENT_CREDENTIALS_H 00015 #define TAO_SSLIOP_CLIENT_CREDENTIALS_H 00016 00017 #include /**/ "ace/pre.h" 00018 00019 #include "orbsvcs/SSLIOP/SSLIOP_Export.h" 00020 00021 #if !defined (ACE_LACKS_PRAGMA_ONCE) 00022 # pragma once 00023 #endif /* ACE_LACKS_PRAGMA_ONCE */ 00024 00025 #include "orbsvcs/SSLIOP/SSLIOP_Credentials.h" 00026 #include "orbsvcs/SSLIOP/SSLIOP_SSL.h" 00027 00028 #include "orbsvcs/SecurityLevel3C.h" 00029 00030 #include "tao/LocalObject.h" 00031 00032 #if defined(_MSC_VER) 00033 #pragma warning(push) 00034 #pragma warning(disable:4250) 00035 #endif /* _MSC_VER */ 00036 00037 00038 TAO_BEGIN_VERSIONED_NAMESPACE_DECL 00039 00040 namespace TAO 00041 { 00042 namespace SSLIOP 00043 { 00044 /** 00045 * @class ClientCredentials 00046 * 00047 * @brief 00048 * 00049 * 00050 */ 00051 class ClientCredentials 00052 : public virtual SecurityLevel3::ClientCredentials, 00053 public virtual SSLIOP_Credentials 00054 { 00055 public: 00056 00057 /// Constructor 00058 ClientCredentials (::X509 * cert, ::EVP_PKEY * evp, ::SSL * ssl); 00059 00060 /** 00061 * @name SecurityLevel3::Credentials Methods 00062 * 00063 * Methods required by the SecurityLevel3::Credentials 00064 * interface. 00065 */ 00066 //@{ 00067 virtual SecurityLevel3::CredentialsType creds_type (); 00068 //@} 00069 00070 /** 00071 * @name SecurityLevel3::ClientCredentials Methods 00072 * 00073 * Methods required by the SecurityLevel3::ClientCredentials 00074 * interface. 00075 */ 00076 //@{ 00077 virtual char * context_id (void); 00078 00079 virtual SecurityLevel3::Principal * client_principal (); 00080 00081 virtual SecurityLevel3::StatementList * client_supporting_statements (); 00082 00083 virtual SecurityLevel3::ResourceNameList * client_restricted_resources (); 00084 00085 virtual SecurityLevel3::Principal * target_principal (); 00086 00087 virtual SecurityLevel3::StatementList * target_supporting_statements (); 00088 00089 virtual SecurityLevel3::ResourceNameList * target_restricted_resources (); 00090 00091 virtual SecurityLevel3::OwnCredentials_ptr parent_credentials (); 00092 00093 virtual CORBA::Boolean client_authentication (void); 00094 00095 virtual CORBA::Boolean target_authentication (void); 00096 00097 virtual CORBA::Boolean confidentiality (void); 00098 00099 virtual CORBA::Boolean integrity (void); 00100 //@} 00101 00102 protected: 00103 00104 /// Destructor 00105 /** 00106 * Protected destructor to enforce proper memory management 00107 * through the reference counting mechanism. 00108 */ 00109 ~ClientCredentials (void); 00110 00111 private: 00112 00113 /// Reference to the OpenSSL @c SSL data structure associated 00114 /// with the current security context (e.g. SSL connection). 00115 TAO::SSLIOP::SSL_var ssl_; 00116 00117 }; 00118 00119 } // End SSLIOP namespace 00120 } // End TAO namespace 00121 00122 TAO_END_VERSIONED_NAMESPACE_DECL 00123 00124 #if defined(_MSC_VER) 00125 #pragma warning(pop) 00126 #endif /* _MSC_VER */ 00127 00128 #include /**/ "ace/post.h" 00129 00130 #endif /* TAO_SSLIOP_CLIENT_CREDENTIALS_H */