source: libabac/abac_c.c @ 2e9455f

mei_rt2
Last change on this file since 2e9455f was 2e9455f, checked in by Mei <mei@…>, 11 years ago

1) added namespace
2) tweak ?This,
3) allowing linking role/oset as constraining conditions
4) adding access_tests regression testing that uses GENI's access policy
5) added couple multi contexts regression tests
6) add compression/uncompression calls to abac_encode_string/abac_decode_string
(libstrongwan only allows 512 char for attribute rule storage)
7) add attribute_now option to creddy that takes a whole char string for attribute
rule

  • Property mode set to 100644
File size: 8.5 KB
Line 
1/**
2** abac_c.c
3** a very thin layer to libabac calls so c interface
4** and c++ interface looks about the same
5**
6** This should be 'macrotized' when we go to beta to minimumize
7** runtime function call cost
8**/
9
10#include "abac_internal.h"
11#include "abac_util.h"
12
13/**************************************************************************/
14/* utility */
15char *abac_get_version()
16{ return abac_xstrdup(abac_version()); }
17
18/* CONSTRAINT->abac_condition_t */
19void abac_constraint_add_integer_max(abac_condition_t *cond,int val)
20{ abac_condition_add_range_integer_item(cond,abac_max_item_type(),val); }
21void abac_constraint_add_integer_min(abac_condition_t *cond,int val)
22{ abac_condition_add_range_integer_item(cond,abac_min_item_type(),val); }
23void abac_constraint_add_integer_target(abac_condition_t *cond,int val)
24{ abac_condition_add_range_integer_item(cond,abac_target_item_type(),val); }
25void abac_constraint_add_float_max(abac_condition_t *cond,float val)
26{ abac_condition_add_range_float_item(cond,abac_max_item_type(),val); }
27void abac_constraint_add_float_min(abac_condition_t *cond,float val)
28{ abac_condition_add_range_float_item(cond,abac_min_item_type(),val); }
29void abac_constraint_add_float_target(abac_condition_t *cond,float val)
30{ abac_condition_add_range_float_item(cond,abac_target_item_type(),val); }
31void abac_constraint_add_time_max(abac_condition_t *cond,char* val)
32{ abac_condition_add_range_time_item(cond,abac_max_item_type(),val); }
33void abac_constraint_add_time_min(abac_condition_t *cond,char* val)
34{ abac_condition_add_range_time_item(cond,abac_min_item_type(),val); }
35void abac_constraint_add_time_target(abac_condition_t *cond,char* val)
36{ abac_condition_add_range_time_item(cond,abac_target_item_type(),val); }
37void abac_constraint_add_urn_target(abac_condition_t *cond,char* val)
38{ abac_condition_add_range_urn_item(cond,val); }
39void abac_constraint_add_string_target(abac_condition_t *cond,char* val)
40{ abac_condition_add_range_string_item(cond,val); }
41void abac_constraint_add_boolean_target(abac_condition_t *cond, char* val)
42{ abac_condition_add_range_boolean_item(cond,val); }
43abac_condition_t *abac_constraint_from_role(abac_aspect_t *ptr)
44{ return abac_condition_create_from_aspect(ptr); }
45abac_condition_t *abac_constraint_create(char *vtype)
46{ return abac_condition_create(vtype); }
47abac_condition_t *abac_constraint_from_oset(abac_aspect_t *ptr)
48{ return abac_condition_create_from_aspect(ptr); }
49char *abac_constraint_typed_string(abac_condition_t *ptr)
50{ return abac_condition_typed_string(ptr); }
51char *abac_constraint_string(abac_condition_t *ptr)
52{ return abac_condition_string(ptr); }
53
54/* ROLE/OSET -> abac_aspect_t */
55abac_aspect_t *abac_role_principal_create(char *principal_name)
56{ return abac_aspect_role_principal_create(principal_name); }
57abac_aspect_t *abac_oset_principal_create(char *principal_name)
58{ return abac_aspect_principal_new(e_ASPECTTYPE_OSET,principal_name); }
59abac_aspect_t *abac_oset_create(char *principal_name, char *oset_name)
60{ return abac_aspect_new(e_ASPECTTYPE_OSET,principal_name,oset_name); }
61abac_aspect_t *abac_role_create(char *principal_name, char *role_name)
62{ return abac_aspect_new(e_ASPECTTYPE_ROLE,principal_name,role_name); }
63abac_aspect_t *abac_oset_linked_create(char *principal_name, char *linked_role_name, char *oset_name)
64{ return abac_aspect_linking_new(e_ASPECTTYPE_OSET,principal_name,linked_role_name,oset_name); }
65abac_aspect_t *abac_role_linked_create(char *principal_name, char *linked_role_name, char *role_name)
66{ return abac_aspect_linking_new(e_ASPECTTYPE_ROLE,principal_name,linked_role_name,role_name); }
67abac_aspect_t *abac_oset_object_create(abac_term_t *object)
68{ return abac_aspect_object_new(e_ASPECTTYPE_OSET,object); }
69int abac_oset_is_object(abac_aspect_t *ptr)
70{ return abac_aspect_is_object(ptr); }
71int abac_oset_is_principal(abac_aspect_t *ptr)
72{ return abac_aspect_is_principal(ptr); }
73int abac_role_is_principal(abac_aspect_t *ptr)
74{ return abac_aspect_is_principal(ptr); }
75int abac_oset_is_linking(abac_aspect_t *ptr)
76{ return abac_aspect_is_linking(ptr); }
77int abac_role_is_linking(abac_aspect_t *ptr)
78{ return abac_aspect_is_linking(ptr); }
79char *abac_role_linked_role(abac_aspect_t *ptr)
80{ return abac_aspect_linked_role_name(ptr); }
81char *abac_oset_linked_role(abac_aspect_t *ptr)
82{ return abac_aspect_linked_role_name(ptr); }
83char *abac_role_name(abac_aspect_t *ptr)
84{ return abac_aspect_aspect_name(ptr); }
85char *abac_oset_name(abac_aspect_t *ptr)
86{ return abac_aspect_aspect_name(ptr); }
87char *abac_role_principal(abac_aspect_t *ptr)
88{ return abac_aspect_principal_name(ptr); }
89char *abac_oset_principal(abac_aspect_t *ptr)
90{ return abac_aspect_principal_name(ptr); }
91void abac_role_add_data_term(abac_aspect_t *ptr, abac_term_t *param)
92{ abac_aspect_add_param(ptr, param); }
93void abac_oset_add_data_term(abac_aspect_t *ptr, abac_term_t *param)
94{ abac_aspect_add_param(ptr, param); }
95void abac_role_add_linked_data_term(abac_aspect_t *ptr, abac_term_t *param)
96{ abac_aspect_add_linked_param(ptr, param); }
97void abac_oset_add_linked_data_term(abac_aspect_t *ptr, abac_term_t *param)
98{ abac_aspect_add_linked_param(ptr, param); }
99char *abac_oset_object(abac_aspect_t *ptr)
100{ return abac_aspect_object_name(ptr); }
101char *abac_oset_typed_string(abac_aspect_t *ptr)
102{ return abac_aspect_typed_string(ptr); }
103char *abac_oset_string(abac_aspect_t *ptr)
104{ return abac_aspect_string(ptr); }
105char *abac_role_typed_string(abac_aspect_t *ptr)
106{ return abac_aspect_typed_string(ptr); }
107char *abac_role_string(abac_aspect_t *ptr)
108{ return abac_aspect_string(ptr); }
109abac_term_t **abac_oset_get_data_terms(abac_aspect_t *ptr)
110{ return abac_param_list_vectorize(abac_aspect_aspect_params(ptr)); }
111abac_term_t **abac_oset_get_linked_data_terms(abac_aspect_t *ptr)
112{ return abac_param_list_vectorize(abac_aspect_linked_role_params(ptr)); }
113abac_term_t **abac_role_get_data_terms(abac_aspect_t *ptr)
114{ return abac_param_list_vectorize(abac_aspect_aspect_params(ptr)); }
115abac_term_t **abac_role_get_linked_data_terms(abac_aspect_t *ptr)
116{ return abac_param_list_vectorize(abac_aspect_linked_role_params(ptr)); }
117
118
119
120/* ID -> abac_id_t */
121void abac_id_write_cert_fname(abac_id_t *ptr,char *filename)
122{
123  FILE *out = fopen(filename, "a");
124  abac_id_write_cert(ptr,out);
125  fclose(out);
126}
127void abac_id_write_privkey_fname(abac_id_t *ptr,char *filename)
128{
129  FILE *out = fopen(filename, "a");
130  abac_id_write_privkey(ptr,out);
131  fclose(out);
132}
133int abac_id_load_encrypted_privkey_file(abac_id_t *ptr,
134char *filename, char *pfile)
135{
136  return abac_id_load_enc_privkey_file(ptr, filename, pfile);
137}
138
139/* ATTRIBUTE -> abac_attribute_t */
140char *abac_head_string(abac_attribute_t *ptr)
141{
142  abac_aspect_t *head=abac_attribute_head(ptr);
143  char *string=abac_aspect_string(head);
144  return string;
145}
146char *abac_tail_string(abac_attribute_t *ptr)
147{
148  abac_aspect_t *tail=abac_attribute_tail(ptr);
149  char *string=abac_aspect_string(tail);
150  return string;
151}
152char *abac_head_typed_string(abac_attribute_t *ptr)
153{
154  abac_aspect_t *head=abac_attribute_head(ptr);
155  char *string=abac_aspect_typed_string(head);
156  return string;
157}
158char *abac_tail_typed_string(abac_attribute_t *ptr)
159{
160  abac_aspect_t *tail=abac_attribute_tail(ptr);
161  char *string=abac_aspect_typed_string(tail);
162  return string;
163}
164void abac_attribute_write_cert_fname(abac_attribute_t *ptr,char *filename)
165{
166  FILE *out = fopen(filename, "w");
167  abac_attribute_write_cert(ptr,out);
168  fclose(out);
169}
170abac_aspect_t **abac_attribute_role_tails(abac_attribute_t *ptr)
171{ return abac_attribute_tail_vectorized(ptr); }
172abac_aspect_t **abac_attribute_oset_tails(abac_attribute_t *ptr)
173{ return abac_attribute_tail_vectorized(ptr); }
174
175
176/* CONTEXT -> abac_context_t */
177int abac_context_principal_count(abac_context_t *ptr)
178{ return abac_context_id_creds_count(ptr); }
179int abac_context_credential_count(abac_context_t *ptr)
180{ return abac_context_creds_count(ptr); }
181int abac_context_load_id_file(abac_context_t *ptr, char *filename)
182{ return abac_context_load_id_idkey_file(ptr, filename); }
183int abac_context_load_id_files(abac_context_t *ptr, char *filename, char *keyfilename)
184{ return abac_context_load_id_id_key_files(ptr, filename, keyfilename); }
185
186/* encrypted version */
187int abac_context_load_encrypted_id_file(abac_context_t *ptr, char *filename, char *pfile)
188{ return abac_context_load_id_enc_idkey_file(ptr, filename, pfile); }
189int abac_context_load_encrypted_id_files(abac_context_t *ptr, char *filename, char *keyfilename, char *pfile)
190{ return abac_context_load_id_enc_id_key_files(ptr, filename, keyfilename, pfile); }
191abac_id_credential_t *abac_context_principal_lookup(abac_context_t *ptr,char *nm)
192{ return abac_context_id_credential_lookup(ptr,nm); }
193
194
195
196
197
198
199
200
201
Note: See TracBrowser for help on using the repository browser.