summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/orbsvcs/Security/SL3_ContextEstablishmentPolicy.h
blob: 946ec411ae2179fe5cc971d3c34306b535e7a069 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
// -*- C++ -*-

//=============================================================================
/**
 * @file SL3_ContextEstablishmentPolicy.h
 *
 * $Id$
 *
 * @author Ossama Othman <ossama@dre.vanderbilt.edu>
 */
//=============================================================================


#ifndef TAO_SL3_CONTEXT_ESTABLISHMENT_POLICY_H
#define TAO_SL3_CONTEXT_ESTABLISHMENT_POLICY_H

#include /**/ "ace/pre.h"
#include "orbsvcs/orbsvcs/Security/security_export.h"

#if !defined (ACE_LACKS_PRAGMA_ONCE)
# pragma once
#endif /* ACE_LACKS_PRAGMA_ONCE */

#include "orbsvcs/orbsvcs/SecurityLevel3C.h"

#include "tao/LocalObject.h"

#if defined(_MSC_VER)
#if (_MSC_VER >= 1200)
#pragma warning(push)
#endif /* _MSC_VER >= 1200 */
#pragma warning(disable:4250)
#endif /* _MSC_VER */

namespace TAO
{
  namespace SL3
  {
    /**
     * @class ContextEstablishmentPolicy
     *
     * @brief
     *
     *
     */
    class TAO_Security_Export ContextEstablishmentPolicy
      : public virtual SecurityLevel3::ContextEstablishmentPolicy,
        public virtual TAO_Local_RefCounted_Object
    {
    public:

      /// Constructor
      ContextEstablishmentPolicy (
        SecurityLevel3::CredsDirective             creds_directive,
        const SecurityLevel3::OwnCredentialsList & creds_list,
        SecurityLevel3::FeatureDirective           use_client_auth,
        SecurityLevel3::FeatureDirective           use_target_auth,
        SecurityLevel3::FeatureDirective           use_confidentiality,
        SecurityLevel3::FeatureDirective           use_integrity);

      /**
       * @name SecurityLevel3::ContextEstablishmentPolicy Methods
       *
       * Methods required by the
       * SecurityLevel3::ContextEstablishmentPolicy interface.
       */
      //@{
      virtual SecurityLevel3::CredsDirective creds_directive (
          ACE_ENV_SINGLE_ARG_DECL)
        ACE_THROW_SPEC ((CORBA::SystemException));

      virtual SecurityLevel3::OwnCredentialsList * creds_list (
          ACE_ENV_SINGLE_ARG_DECL)
        ACE_THROW_SPEC ((CORBA::SystemException));

      virtual SecurityLevel3::FeatureDirective use_client_auth (
          ACE_ENV_SINGLE_ARG_DECL)
        ACE_THROW_SPEC ((CORBA::SystemException));

      virtual SecurityLevel3::FeatureDirective use_target_auth (
          ACE_ENV_SINGLE_ARG_DECL)
        ACE_THROW_SPEC ((CORBA::SystemException));

      virtual SecurityLevel3::FeatureDirective use_confidentiality (
          ACE_ENV_SINGLE_ARG_DECL)
        ACE_THROW_SPEC ((CORBA::SystemException));

      virtual SecurityLevel3::FeatureDirective use_integrity (
          ACE_ENV_SINGLE_ARG_DECL)
        ACE_THROW_SPEC ((CORBA::SystemException));

      virtual CORBA::PolicyType policy_type (ACE_ENV_SINGLE_ARG_DECL)
        ACE_THROW_SPEC ((CORBA::SystemException));

      virtual CORBA::Policy_ptr copy (ACE_ENV_SINGLE_ARG_DECL)
        ACE_THROW_SPEC ((CORBA::SystemException));

      virtual void destroy (ACE_ENV_SINGLE_ARG_DECL)
        ACE_THROW_SPEC ((CORBA::SystemException));
      //@}

    protected:

      /// Destructor
      /**
       * Protected destructor to enforce proper memory management
       * through the reference counting mechanism.
       */
      ~ContextEstablishmentPolicy (void);

    private:

      SecurityLevel3::CredsDirective     creds_directive_;
      SecurityLevel3::OwnCredentialsList creds_list_;
      SecurityLevel3::FeatureDirective   use_client_auth_;
      SecurityLevel3::FeatureDirective   use_target_auth_;
      SecurityLevel3::FeatureDirective   use_confidentiality_;
      SecurityLevel3::FeatureDirective   use_integrity_;

    };

  } // End SL3 namespace

}  // End TAO namespace


#if defined(_MSC_VER) && (_MSC_VER >= 1200)
#pragma warning(pop)
#endif /* _MSC_VER */

#include /**/ "ace/post.h"

#endif  /* TAO_SL3_CONTEXT_ESTABLISHMENT_POLICY_H */