00001
00002
00003 #include "orbsvcs/SSLIOP/SSLIOP_ClientCredentials.h"
00004 #include "orbsvcs/SSLIOP/SSLIOP_OwnCredentials.h"
00005
00006
00007 ACE_RCSID (SSLIOP,
00008 SSLIOP_ClientCredentials,
00009 "SSLIOP_ClientCredentials.cpp,v 1.8 2006/03/14 06:14:35 jtc Exp")
00010
00011
00012 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00013
00014 TAO::SSLIOP::ClientCredentials::ClientCredentials (
00015 X509 * cert,
00016 EVP_PKEY *evp,
00017 SSL * ssl)
00018 : SSLIOP_Credentials (cert, evp),
00019 ssl_ (TAO::SSLIOP::OpenSSL_traits< ::SSL >::_duplicate (ssl))
00020 {
00021 }
00022
00023 TAO::SSLIOP::ClientCredentials::~ClientCredentials (void)
00024 {
00025 }
00026
00027 SecurityLevel3::CredentialsType
00028 TAO::SSLIOP::ClientCredentials::creds_type (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
00029 ACE_THROW_SPEC ((CORBA::SystemException))
00030 {
00031 return SecurityLevel3::CT_ClientCredentials;
00032 }
00033
00034 char *
00035 TAO::SSLIOP::ClientCredentials::context_id (ACE_ENV_SINGLE_ARG_DECL)
00036 ACE_THROW_SPEC ((CORBA::SystemException))
00037 {
00038 ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), 0);
00039 }
00040
00041 SecurityLevel3::Principal *
00042 TAO::SSLIOP::ClientCredentials::client_principal (ACE_ENV_SINGLE_ARG_DECL)
00043 ACE_THROW_SPEC ((CORBA::SystemException))
00044 {
00045 ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), 0);
00046 }
00047
00048 SecurityLevel3::StatementList *
00049 TAO::SSLIOP::ClientCredentials::client_supporting_statements (
00050 ACE_ENV_SINGLE_ARG_DECL)
00051 ACE_THROW_SPEC ((CORBA::SystemException))
00052 {
00053 ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), 0);
00054 }
00055
00056 SecurityLevel3::ResourceNameList *
00057 TAO::SSLIOP::ClientCredentials::client_restricted_resources (
00058 ACE_ENV_SINGLE_ARG_DECL)
00059 ACE_THROW_SPEC ((CORBA::SystemException))
00060 {
00061 ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), 0);
00062 }
00063
00064 SecurityLevel3::Principal *
00065 TAO::SSLIOP::ClientCredentials::target_principal (ACE_ENV_SINGLE_ARG_DECL)
00066 ACE_THROW_SPEC ((CORBA::SystemException))
00067 {
00068 ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), 0);
00069 }
00070
00071 SecurityLevel3::StatementList *
00072 TAO::SSLIOP::ClientCredentials::target_supporting_statements (
00073 ACE_ENV_SINGLE_ARG_DECL)
00074 ACE_THROW_SPEC ((CORBA::SystemException))
00075 {
00076 ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), 0);
00077 }
00078
00079 SecurityLevel3::ResourceNameList *
00080 TAO::SSLIOP::ClientCredentials::target_restricted_resources (
00081 ACE_ENV_SINGLE_ARG_DECL)
00082 ACE_THROW_SPEC ((CORBA::SystemException))
00083 {
00084 ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), 0);
00085 }
00086
00087 SecurityLevel3::OwnCredentials_ptr
00088 TAO::SSLIOP::ClientCredentials::parent_credentials (ACE_ENV_SINGLE_ARG_DECL)
00089 ACE_THROW_SPEC ((CORBA::SystemException))
00090 {
00091 SecurityLevel3::OwnCredentials_ptr creds =
00092 SecurityLevel3::OwnCredentials::_nil ();
00093
00094 ACE_NEW_THROW_EX (creds,
00095 TAO::SSLIOP::OwnCredentials (
00096 ::SSL_get_certificate (this->ssl_.in ()),
00097 ::SSL_get_privatekey (this->ssl_.in ())),
00098 CORBA::NO_MEMORY ());
00099 ACE_CHECK_RETURN (creds);
00100
00101 return creds;
00102 }
00103
00104 CORBA::Boolean
00105 TAO::SSLIOP::ClientCredentials::client_authentication (
00106 ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
00107 ACE_THROW_SPEC ((CORBA::SystemException))
00108 {
00109
00110
00111
00112
00113 return
00114 this->x509_.in () != 0
00115 && SSL_get_verify_result (this->ssl_.in ()) == X509_V_OK;
00116 }
00117
00118 CORBA::Boolean
00119 TAO::SSLIOP::ClientCredentials::target_authentication (ACE_ENV_SINGLE_ARG_DECL)
00120 ACE_THROW_SPEC ((CORBA::SystemException))
00121 {
00122 ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), false);
00123 }
00124
00125 CORBA::Boolean
00126 TAO::SSLIOP::ClientCredentials::confidentiality (ACE_ENV_SINGLE_ARG_DECL)
00127 ACE_THROW_SPEC ((CORBA::SystemException))
00128 {
00129 ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), false);
00130 }
00131
00132 CORBA::Boolean
00133 TAO::SSLIOP::ClientCredentials::integrity (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
00134 ACE_THROW_SPEC ((CORBA::SystemException))
00135 {
00136
00137
00138
00139 return true;
00140 }
00141
00142 TAO_END_VERSIONED_NAMESPACE_DECL