summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/orbsvcs/SecurityReplaceable.idl
blob: c7beeefd0605217b64b65c9b9b44ce3ad323c114 (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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
// -*- IDL -*-
//
// $Id$

#ifndef _SECURITY_REPLACEABLE_IDL_
#define _SECURITY_REPLACEABLE_IDL_

#include "orbsvcs/SecurityLevel2.idl"
#include "tao/IOP.pidl"

#pragma prefix "omg.org"

module SecurityReplaceable {

#   pragma version SecurityReplaceable 1.8

  local interface SecurityContext;
  local interface ClientSecurityContext;
  local interface ServerSecurityContext;

  local interface Vault {

# pragma version Vault 1.8

    Security::AuthenticationMethodList
    get_supported_authen_methods(
      in   Security::MechanismType             mechanism
    );

    readonly attribute Security::OIDList supported_mech_oids;

    Security::AuthenticationStatus acquire_credentials (
      in   Security::AuthenticationMethod      method,
      in   Security::MechanismType             mechanism,
      in   Security::SecurityName              security_name,
      in   any                                 auth_data,
      in   Security::AttributeList             privileges,
      out  SecurityLevel2::Credentials         creds,
      out  any                                 continuation_data,
      out  any                                 auth_specific_data
    );

    Security::AuthenticationStatus continue_credentials_acquisition (
      in   any                                 response_data,
      in   SecurityLevel2::Credentials         creds,
      out  any                                 continuation_data,
      out  any                                 auth_specific_data
    );

    IOP::TaggedComponentList create_ior_components(
      in   SecurityLevel2::Credentials         creds_list
    );


    Security::AssociationStatus init_security_context (
      in   SecurityLevel2::Credentials        creds,
      in   Security::SecurityName             target_security_name,
      in   Object                             target,
      in   Security::DelegationMode           delegation_mode,
      in   Security::OptionsDirectionPairList association_options,
      in   Security::MechanismType            mechanism,
      in   Security::Opaque                   comp_data, //from IOR
      in   Security::ChannelBindings          chan_binding,
      out  Security::OpaqueBuffer             security_token,
      out  ClientSecurityContext              security_context
    );

    Security::AssociationStatus accept_security_context (
      in   SecurityLevel2::CredentialsList    creds_list,
      in   Security::ChannelBindings          chan_bindings,
      in   Security::Opaque                   in_token,
      out  Security::Opaque                   out_token
    );

    Security::MechandOptionsList get_supported_mechs ();

  };


  local interface SecurityContext {

#   pragma version SecurityContext 1.8

    readonly attribute Security::SecurityContextType
      context_type;

    readonly attribute Security::SecurityContextState
      context_state;

    readonly attribute Security::MechanismType
      mechanism;

    readonly attribute Security::ChannelBindings chan_binding;

    readonly attribute SecurityLevel2::ReceivedCredentials
      received_credentials;

    Security::AssociationStatus continue_security_context (
      in   Security::OpaqueBuffer      in_token,
      out  Security::OpaqueBuffer      out_token
    );

    void protect_message (
      in   Security::OpaqueBuffer      message,
      in   Security::QOP               qop,
      out  Security::OpaqueBuffer      text_buffer,
      out  Security::OpaqueBuffer      token
    );

    boolean reclaim_message (
      in   Security::Opaque            text_buffer,
      in   Security::Opaque            token,
      out  Security::QOP               qop,
      out  Security::Opaque            message
    );

    boolean is_valid (
      out  Security::UtcT              expiry_time
    );

    boolean discard_security_context (
      in   Security::Opaque            discard_data,
      out  Security::OpaqueBuffer      out_token
    );

    boolean process_discard_token (
      in   Security::OpaqueBuffer      discard_token
    );

  };

  local interface ClientSecurityContext : SecurityContext {

# pragma version ClientSecurityContext 1.8

    readonly attribute Security::AssociationOptions
      association_options_used;

    readonly attribute Security::DelegationMode
      delegation_mode;

    readonly attribute Security::Opaque comp_data;

    readonly attribute SecurityLevel2::Credentials
      client_credentials;

    readonly attribute Security::AssociationOptions
      server_options_supported;

    readonly attribute Security::AssociationOptions
      server_options_required;

    readonly attribute Security::Opaque server_security_name;

  };

  local interface ServerSecurityContext : SecurityContext {

#   pragma version ServerSecurityContext 1.8

    readonly attribute Security::AssociationOptions
      association_options_used;

    readonly attribute Security::DelegationMode
      delegation_mode;

    readonly attribute SecurityLevel2::Credentials
      server_credentials;

    readonly attribute Security::AssociationOptions
      server_options_supported;

    readonly attribute Security::AssociationOptions
      server_options_required;

    readonly attribute Security::Opaque server_security_name;

  };

  interface RequiredRights {

    void get_required_rights(
      in   CORBA::Identifier           operation_name,
      in   CORBA::RepositoryId         interface_name,
      out  Security::RightsList        rights,
      out  Security::RightsCombinator  rights_combinator
    );

    void set_required_rights(
      in   CORBA::Identifier           operation_name,
      in   CORBA::RepositoryId         interface_name,
      in   Security::RightsList        rights,
      in   Security::RightsCombinator  rights_combinator
    );

  };

  local interface AuditChannel {

    void audit_write (
      in   Security::AuditEventType        event_type,
      in   SecurityLevel2::CredentialsList creds_list,
      in   Security::UtcT                  time,
      in   Security::SelectorValueList     descriptors,
      in   Security::Opaque                event_specific_data
    );

    readonly attribute Security::AuditChannelId audit_channel_id;

  };

  local interface AuditDecision {

    boolean audit_needed (
      in   Security::AuditEventType        event_type,
      in   Security::SelectorValueList     value_list
    );

    readonly attribute AuditChannel audit_channel;

  };

  local interface AccessDecision {

    boolean access_allowed (
      in   SecurityLevel2::CredentialsList cred_list,
      in   CORBA::Identifier               operation_name,
      in   CORBA::Identifier               target_interface_name
      );

  };

};

#pragma prefix ""

#endif /* _SECURITY_REPLACEABLE_IDL_ */