00001 // -*- C++ -*- 00002 00003 //============================================================================= 00004 /** 00005 * @file SSLIOP_ClientCredentials.h 00006 * 00007 * SSLIOP_ClientCredentials.h,v 1.7 2005/11/16 07:53:24 ossama Exp 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, 00059 ::EVP_PKEY * evp, 00060 ::SSL * ssl); 00061 00062 /** 00063 * @name SecurityLevel3::Credentials Methods 00064 * 00065 * Methods required by the SecurityLevel3::Credentials 00066 * interface. 00067 */ 00068 //@{ 00069 virtual SecurityLevel3::CredentialsType creds_type ( 00070 ACE_ENV_SINGLE_ARG_DECL) 00071 ACE_THROW_SPEC ((CORBA::SystemException)); 00072 //@} 00073 00074 /** 00075 * @name SecurityLevel3::ClientCredentials Methods 00076 * 00077 * Methods required by the SecurityLevel3::ClientCredentials 00078 * interface. 00079 */ 00080 //@{ 00081 virtual char * context_id (ACE_ENV_SINGLE_ARG_DECL) 00082 ACE_THROW_SPEC ((CORBA::SystemException)); 00083 00084 virtual SecurityLevel3::Principal * client_principal ( 00085 ACE_ENV_SINGLE_ARG_DECL) 00086 ACE_THROW_SPEC ((CORBA::SystemException)); 00087 00088 virtual SecurityLevel3::StatementList * client_supporting_statements ( 00089 ACE_ENV_SINGLE_ARG_DECL) 00090 ACE_THROW_SPEC ((CORBA::SystemException)); 00091 00092 virtual SecurityLevel3::ResourceNameList * client_restricted_resources ( 00093 ACE_ENV_SINGLE_ARG_DECL) 00094 ACE_THROW_SPEC ((CORBA::SystemException)); 00095 00096 virtual SecurityLevel3::Principal * target_principal ( 00097 ACE_ENV_SINGLE_ARG_DECL) 00098 ACE_THROW_SPEC ((CORBA::SystemException)); 00099 00100 virtual SecurityLevel3::StatementList * target_supporting_statements ( 00101 ACE_ENV_SINGLE_ARG_DECL) 00102 ACE_THROW_SPEC ((CORBA::SystemException)); 00103 00104 virtual SecurityLevel3::ResourceNameList * target_restricted_resources ( 00105 ACE_ENV_SINGLE_ARG_DECL) 00106 ACE_THROW_SPEC ((CORBA::SystemException)); 00107 00108 virtual SecurityLevel3::OwnCredentials_ptr parent_credentials ( 00109 ACE_ENV_SINGLE_ARG_DECL) 00110 ACE_THROW_SPEC ((CORBA::SystemException)); 00111 00112 virtual CORBA::Boolean client_authentication (ACE_ENV_SINGLE_ARG_DECL) 00113 ACE_THROW_SPEC ((CORBA::SystemException)); 00114 00115 virtual CORBA::Boolean target_authentication (ACE_ENV_SINGLE_ARG_DECL) 00116 ACE_THROW_SPEC ((CORBA::SystemException)); 00117 00118 virtual CORBA::Boolean confidentiality (ACE_ENV_SINGLE_ARG_DECL) 00119 ACE_THROW_SPEC ((CORBA::SystemException)); 00120 00121 virtual CORBA::Boolean integrity (ACE_ENV_SINGLE_ARG_DECL) 00122 ACE_THROW_SPEC ((CORBA::SystemException)); 00123 //@} 00124 00125 protected: 00126 00127 /// Destructor 00128 /** 00129 * Protected destructor to enforce proper memory management 00130 * through the reference counting mechanism. 00131 */ 00132 ~ClientCredentials (void); 00133 00134 private: 00135 00136 /// Reference to the OpenSSL @c SSL data structure associated 00137 /// with the current security context (e.g. SSL connection). 00138 TAO::SSLIOP::SSL_var ssl_; 00139 00140 }; 00141 00142 } // End SSLIOP namespace 00143 } // End TAO namespace 00144 00145 TAO_END_VERSIONED_NAMESPACE_DECL 00146 00147 #if defined(_MSC_VER) 00148 #pragma warning(pop) 00149 #endif /* _MSC_VER */ 00150 00151 #include /**/ "ace/post.h" 00152 00153 #endif /* TAO_SSLIOP_CLIENT_CREDENTIALS_H */