• Main Page
  • Modules
  • Files

xacml.h

00001 /*
00002  * Copyright 1999-2008 University of Chicago
00003  * 
00004  * Licensed under the Apache License, Version 2.0 (the "License");
00005  * you may not use this file except in compliance with the License.
00006  * You may obtain a copy of the License at
00007  * 
00008  * http://www.apache.org/licenses/LICENSE-2.0
00009  * 
00010  * Unless required by applicable law or agreed to in writing, software
00011  * distributed under the License is distributed on an "AS IS" BASIS,
00012  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  * See the License for the specific language governing permissions and
00014  * limitations under the License.
00015  */
00016 
00017 #ifndef XACML_H
00018 #define XACML_H
00019 
00020 #include "xacml_datatypes.h"
00021 #include "xacml_authz_interop_profile.h"
00022 
00023 #include <time.h>
00024 
00025 #ifndef DONT_DOCUMENT_INTERNAL
00026 EXTERN_C_BEGIN
00027 #endif
00028 
00050 xacml_result_t
00051 xacml_init(void);
00052 
00053 xacml_result_t
00054 xacml_request_init(
00055     xacml_request_t *                   request);
00056 
00057 void
00058 xacml_request_destroy(
00059     xacml_request_t                     request);
00060 
00061 
00062 xacml_result_t
00063 xacml_request_set_io_module(
00064     xacml_request_t                     request,
00065     const char *                        module);
00066 
00067 xacml_result_t
00068 xacml_request_set_io_descriptor(
00069     xacml_request_t                     request,
00070     const xacml_io_descriptor_t        *descriptor);
00071 
00072 xacml_result_t
00073 xacml_request_add_subject_attribute(
00074     xacml_request_t                     request,
00075     const char *                        subject_category,
00076     const char *                        attribute_id,
00077     const char *                        data_type,
00078     const char *                        issuer,
00079     const char *                        value);
00080 
00081 xacml_result_t
00082 xacml_request_get_subject_attribute_count(
00083     const xacml_request_t               request,
00084     size_t *                            count);
00085 
00086 xacml_result_t
00087 xacml_request_get_subject_attribute(
00088     const xacml_request_t               request,
00089     size_t                              num,
00090     const char **                       subject_category,
00091     const char **                       attribute_id,
00092     const char **                       data_type,
00093     const char **                       issuer,
00094     const char **                       value);
00095 
00096 xacml_result_t
00097 xacml_request_set_return_context(
00098     const xacml_request_t               request,
00099     int                                 return_context);
00100 
00101 xacml_result_t
00102 xacml_request_get_return_context(
00103     const xacml_request_t               request,
00104     int *                               return_context);
00105 
00106 xacml_result_t
00107 xacml_resource_attribute_init(
00108     xacml_resource_attribute_t *        attribute);
00109 
00110 xacml_result_t
00111 xacml_resource_attribute_add(
00112     xacml_resource_attribute_t          attribute,
00113     const char *                        attribute_id,
00114     const char *                        data_type,
00115     const char *                        issuer,
00116     const char *                        value);
00117 
00118 void
00119 xacml_resource_attribute_destroy(
00120     xacml_resource_attribute_t          attribute);
00121 
00122 xacml_result_t
00123 xacml_resource_attribute_get_count(
00124     xacml_resource_attribute_t          attribute,
00125     size_t *                            count);
00126 
00127 xacml_result_t
00128 xacml_resource_attribute_get_attribute(
00129     const xacml_resource_attribute_t    attribute,
00130     size_t                              num,
00131     const char **                       attribute_id,
00132     const char **                       data_type,
00133     const char **                       issuer,
00134     const char **                       value);
00135 
00136 xacml_result_t
00137 xacml_request_add_resource_attribute(
00138     xacml_request_t                     request,
00139     const xacml_resource_attribute_t    attribute);
00140 
00141 xacml_result_t
00142 xacml_request_get_resource_attribute_count(
00143     const xacml_request_t               request,
00144     size_t *                            count);
00145 
00146 xacml_result_t
00147 xacml_request_get_resource_attribute(
00148     const xacml_request_t               request,
00149     size_t                              num,
00150     xacml_resource_attribute_t *        attribute);
00151 
00152 xacml_result_t
00153 xacml_request_add_action_attribute(
00154     xacml_request_t                     request,
00155     const char *                        attribute_id,
00156     const char *                        data_type,
00157     const char *                        issuer,
00158     const char *                        value);
00159 
00160 xacml_result_t
00161 xacml_request_get_action_attribute_count(
00162     const xacml_request_t               request,
00163     size_t *                            count);
00164 
00165 xacml_result_t
00166 xacml_request_get_action_attribute(
00167     const xacml_request_t               request,
00168     size_t                              num,
00169     const char **                       attribute_id,
00170     const char **                       data_type,
00171     const char **                       issuer,
00172     const char **                       value);
00173 
00174 xacml_result_t
00175 xacml_request_add_environment_attribute(
00176     xacml_request_t                     request,
00177     const char *                        attribute_id,
00178     const char *                        data_type,
00179     const char *                        issuer,
00180     const char *                        value);
00181 
00182 xacml_result_t
00183 xacml_request_get_environment_attribute_count(
00184     const xacml_request_t               request,
00185     size_t *                            count);
00186 
00187 xacml_result_t
00188 xacml_request_get_environment_attribute(
00189     const xacml_request_t               request,
00190     size_t                              num,
00191     const char **                       attribute_id,
00192     const char **                       data_type,
00193     const char **                       issuer,
00194     const char **                       value);
00195 
00196 xacml_result_t
00197 xacml_request_set_subject(
00198     xacml_request_t                     request,
00199     const char *                        subject);
00200 
00201 xacml_result_t
00202 xacml_request_get_subject(
00203     const xacml_request_t               request,
00204     const char **                       subject);
00205 
00206 /* XACML Response */
00207 xacml_result_t
00208 xacml_response_init(
00209     xacml_response_t *                  response);
00210 
00211 void
00212 xacml_response_destroy(
00213     xacml_response_t                    response);
00214 
00215 xacml_result_t
00216 xacml_response_set_issue_instant(
00217     xacml_response_t                    response,
00218     time_t                              issue_instant);
00219 
00220 xacml_result_t
00221 xacml_response_get_issue_instant(
00222     xacml_response_t                    response,
00223     time_t *                            issue_instant);
00224 
00225 xacml_result_t
00226 xacml_response_set_issuer(
00227     xacml_response_t                    response,
00228     const char *                        issuer);
00229 
00230 xacml_result_t
00231 xacml_response_get_issuer(
00232     xacml_response_t                    response,
00233     const char **                       issuer);
00234 
00235 xacml_result_t
00236 xacml_response_set_saml_status_code(
00237     xacml_response_t                    response,
00238     saml_status_code_t                  status_code);
00239 
00240 xacml_result_t
00241 xacml_response_get_saml_status_code(
00242     const xacml_response_t              response,
00243     saml_status_code_t *                status_code);
00244 
00245 xacml_result_t
00246 xacml_response_set_xacml_decision(
00247     xacml_response_t                    response,
00248     xacml_decision_t                    decision);
00249 
00250 xacml_result_t
00251 xacml_response_get_xacml_decision(
00252     const xacml_response_t              response,
00253     xacml_decision_t *                  decision);
00254 
00255 xacml_result_t
00256 xacml_response_set_xacml_status_code(
00257     xacml_response_t                    response,
00258     xacml_status_code_t                 status_code);
00259 
00260 xacml_result_t
00261 xacml_response_get_xacml_status_code(
00262     const xacml_response_t              response,
00263     xacml_status_code_t *               status_code);
00264 
00265 xacml_result_t
00266 xacml_obligation_init(
00267     xacml_obligation_t *                obligation,
00268     const char *                        obligation_id,
00269     xacml_effect_t                      fulfill_on);
00270 
00271 void
00272 xacml_obligation_destroy(
00273     xacml_obligation_t                  obligation);
00274 
00275 xacml_result_t
00276 xacml_obligation_add_attribute(
00277     xacml_obligation_t                  obligation,
00278     const char *                        attribute_id,
00279     const char *                        data_type,
00280     const char *                        value);
00281 
00282 xacml_result_t
00283 xacml_obligation_get_id(
00284     const xacml_obligation_t            obligation,
00285     const char **                       obligation_id);
00286 
00287 xacml_result_t
00288 xacml_obligation_get_effect(
00289     const xacml_obligation_t            obligation,
00290     xacml_effect_t *                    fulfill_on);
00291 
00292 xacml_result_t
00293 xacml_obligation_get_attribute_count(
00294     const xacml_obligation_t            obligation,
00295     size_t *                            count);
00296 
00297 xacml_result_t
00298 xacml_obligation_get_attribute(
00299     const xacml_obligation_t            obligation,
00300     size_t                              num,
00301     const char **                       attribute_id,
00302     const char **                       data_type,
00303     const char **                       value);
00304 
00305 xacml_result_t
00306 xacml_response_add_obligation(
00307     xacml_response_t                    response,
00308     const xacml_obligation_t            obligation);
00309 
00310 xacml_result_t
00311 xacml_response_get_obligation_count(
00312     const xacml_response_t              response,
00313     size_t *                            count);
00314 
00315 xacml_result_t
00316 xacml_response_get_obligation(
00317     const xacml_response_t              response,
00318     size_t                              num,
00319     xacml_obligation_t *                obligation);
00320 
00321 xacml_result_t
00322 xacml_response_set_request_context(
00323     xacml_response_t                    response,
00324     xacml_request_t                     request);
00325 
00326 #ifndef DONT_DOCUMENT_INTERNAL
00327 EXTERN_C_END
00328 #endif
00329 
00330 #endif /* XACML_H */