#include "orbsvcs/Security/Security_PolicyFactory.h"
#include "orbsvcs/Security/SL2_QOPPolicy.h"
#include "orbsvcs/Security/SL2_EstablishTrustPolicy.h"
#include "orbsvcs/Security/SL3_ContextEstablishmentPolicy.h"
#include "orbsvcs/Security/SL3_ObjectCredentialsPolicy.h"
#include "orbsvcs/SecurityLevel2C.h"
#include "orbsvcs/SecurityLevel3C.h"
#include "tao/ORB_Constants.h"
Include dependency graph for Security_PolicyFactory.cpp:
Go to the source code of this file.
Functions | |
ACE_RCSID (Security, Security_PolicyFactory,"Security_PolicyFactory.cpp, v 1.13 2006/03/14 06:14:35 jtc Exp") TAO_BEGIN_VERSIONED_NAMESPACE_DECL CORBA |
|
Definition at line 5 of file Security_PolicyFactory.cpp. References ACE_CHECK_RETURN, ACE_NEW_THROW_EX, ACE_THROW_RETURN, and TAO_BEGIN_VERSIONED_NAMESPACE_DECL.
00007 :14:35 jtc Exp") 00008 00009 #include "orbsvcs/Security/SL2_QOPPolicy.h" 00010 #include "orbsvcs/Security/SL2_EstablishTrustPolicy.h" 00011 00012 #include "orbsvcs/Security/SL3_ContextEstablishmentPolicy.h" 00013 #include "orbsvcs/Security/SL3_ObjectCredentialsPolicy.h" 00014 00015 #include "orbsvcs/SecurityLevel2C.h" 00016 #include "orbsvcs/SecurityLevel3C.h" 00017 00018 #include "tao/ORB_Constants.h" 00019 00020 TAO_BEGIN_VERSIONED_NAMESPACE_DECL 00021 00022 CORBA::Policy_ptr 00023 TAO::Security::PolicyFactory::create_policy ( 00024 CORBA::PolicyType type, 00025 const CORBA::Any &value 00026 ACE_ENV_ARG_DECL) 00027 ACE_THROW_SPEC ((CORBA::SystemException, 00028 CORBA::PolicyError)) 00029 { 00030 // Not all security policies can be created using the 00031 // ORB::create_policy() mechanism. Only those that can be created 00032 // using that mechanism are supported by this factory. 00033 00034 if (type == ::Security::SecQOPPolicy) 00035 { 00036 ::Security::QOP qop; 00037 00038 // Extract the desired Quality-of-Protection value from the 00039 // given Any. 00040 if (!(value >>= qop)) 00041 ACE_THROW_RETURN (CORBA::BAD_PARAM ( 00042 CORBA::SystemException::_tao_minor_code ( 00043 TAO::VMCID, 00044 EINVAL), 00045 CORBA::COMPLETED_NO), 00046 CORBA::Policy::_nil ()); 00047 00048 TAO::Security::QOPPolicy * qop_policy = 0; 00049 ACE_NEW_THROW_EX (qop_policy, 00050 TAO::Security::QOPPolicy (qop), 00051 CORBA::NO_MEMORY ( 00052 CORBA::SystemException::_tao_minor_code ( 00053 TAO::VMCID, 00054 ENOMEM), 00055 CORBA::COMPLETED_NO)); 00056 ACE_CHECK_RETURN (CORBA::Policy::_nil ()); 00057 00058 return qop_policy; 00059 } 00060 00061 else if (type == ::Security::SecEstablishTrustPolicy) 00062 { 00063 ::Security::EstablishTrust *trust = 0; 00064 00065 // Extract the desired establishing of trust value from the 00066 // given Any. 00067 if (!(value >>= trust)) 00068 ACE_THROW_RETURN (CORBA::BAD_PARAM ( 00069 CORBA::SystemException::_tao_minor_code ( 00070 TAO::VMCID, 00071 EINVAL), 00072 CORBA::COMPLETED_NO), 00073 CORBA::Policy::_nil ()); 00074 00075 TAO::Security::EstablishTrustPolicy * trust_policy = 0; 00076 ACE_NEW_THROW_EX (trust_policy, 00077 TAO::Security::EstablishTrustPolicy (*trust), 00078 CORBA::NO_MEMORY ( 00079 CORBA::SystemException::_tao_minor_code ( 00080 TAO::VMCID, 00081 ENOMEM), 00082 CORBA::COMPLETED_NO)); 00083 ACE_CHECK_RETURN (CORBA::Policy::_nil ()); 00084 00085 return trust_policy; 00086 } 00087 00088 else if (type == SecurityLevel3::ContextEstablishmentPolicyType) 00089 { 00090 SecurityLevel3::ContextEstablishmentPolicyArgument * args = 0; 00091 00092 // Extract the desired establishing of trust value from the 00093 // given Any. 00094 if (!(value >>= args)) 00095 ACE_THROW_RETURN (CORBA::BAD_PARAM ( 00096 CORBA::SystemException::_tao_minor_code ( 00097 TAO::VMCID, 00098 EINVAL), 00099 CORBA::COMPLETED_NO), 00100 CORBA::Policy::_nil ()); 00101 00102 TAO::SL3::ContextEstablishmentPolicy * policy = 0; 00103 ACE_NEW_THROW_EX (policy, 00104 TAO::SL3::ContextEstablishmentPolicy ( 00105 args->creds_directive, 00106 args->creds_list, 00107 args->use_client_auth, 00108 args->use_target_auth, 00109 args->use_confidentiality, 00110 args->use_integrity), 00111 CORBA::NO_MEMORY ( 00112 CORBA::SystemException::_tao_minor_code ( 00113 TAO::VMCID, 00114 ENOMEM), 00115 CORBA::COMPLETED_NO)); 00116 ACE_CHECK_RETURN (CORBA::Policy::_nil ()); 00117 00118 return policy; 00119 } 00120 00121 else if (type == SecurityLevel3::ObjectCredentialsPolicyType) 00122 { 00123 SecurityLevel3::OwnCredentialsList * creds = 0; 00124 00125 // Extract the desired establishing of trust value from the 00126 // given Any. 00127 if (!(value >>= creds)) 00128 ACE_THROW_RETURN (CORBA::BAD_PARAM ( 00129 CORBA::SystemException::_tao_minor_code ( 00130 TAO::VMCID, 00131 EINVAL), 00132 CORBA::COMPLETED_NO), 00133 CORBA::Policy::_nil ()); 00134 00135 TAO::SL3::ObjectCredentialsPolicy * policy = 0; 00136 ACE_NEW_THROW_EX (policy, 00137 TAO::SL3::ObjectCredentialsPolicy (*creds), 00138 CORBA::NO_MEMORY ( 00139 CORBA::SystemException::_tao_minor_code ( 00140 TAO::VMCID, 00141 ENOMEM), 00142 CORBA::COMPLETED_NO)); 00143 ACE_CHECK_RETURN (CORBA::Policy::_nil ()); 00144 00145 return policy; 00146 } 00147 00148 else if (type == ::Security::SecInvocationCredentialsPolicy 00149 || type == ::Security::SecMechanismsPolicy 00150 || type == ::Security::SecFeaturePolicy // Deprecated. 00151 || type == ::Security::SecDelegationDirectivePolicy) 00152 ACE_THROW_RETURN (CORBA::PolicyError (CORBA::UNSUPPORTED_POLICY), 00153 CORBA::Policy::_nil ()); 00154 else 00155 ACE_THROW_RETURN (CORBA::PolicyError (CORBA::BAD_POLICY_TYPE), 00156 CORBA::Policy::_nil ()); 00157 } |