00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef OXS_CTX_H
00019 #define OXS_CTX_H
00020
00021
00027 #include <axis2_defines.h>
00028 #include <axis2_env.h>
00029 #include <axiom_node.h>
00030 #include <oxs_buffer.h>
00031 #include <oxs_key.h>
00032
00033 #ifdef __cplusplus
00034 extern "C"
00035 {
00036 #endif
00037
00044 typedef enum {
00045 OXS_CTX_OPERATION_NONE = 0,
00046 OXS_CTX_OPERATION_SIGN,
00047 OXS_CTX_OPERATION_VERIFY,
00048 OXS_CTX_OPERATION_ENCRYPT,
00049 OXS_CTX_OPERATION_DECRYPT
00050 } oxs_ctx_operation_t;
00051
00052 typedef enum {
00053 OXS_CTX_MODE_ENCRYPTED_DATA = 0,
00054 OXS_CTX_MODE_ENCRYPTED_KEY
00055 } oxs_ctx_mode_t;
00056
00058 typedef struct oxs_ctx_ops oxs_ctx_ops_t;
00060 typedef struct oxs_ctx oxs_ctx_t;
00061
00062
00063 struct oxs_ctx_ops
00064 {
00065
00066 axis2_status_t (AXIS2_CALL *
00067 free)(
00068 oxs_ctx_t *ctx,
00069 const axis2_env_t *env
00070 );
00071
00072 oxs_ctx_mode_t (AXIS2_CALL *
00073 get_mode)(
00074 oxs_ctx_t *ctx,
00075 const axis2_env_t *env
00076 );
00077
00078 oxs_ctx_operation_t (AXIS2_CALL *
00079 get_operation)(
00080 oxs_ctx_t *ctx,
00081 const axis2_env_t *env
00082 );
00083
00084 oxs_key_t *(AXIS2_CALL *
00085 get_key)(
00086 oxs_ctx_t *ctx,
00087 const axis2_env_t *env
00088 );
00089
00090 axis2_char_t *(AXIS2_CALL *
00091 get_id)(
00092 oxs_ctx_t *ctx,
00093 const axis2_env_t *env
00094 );
00095
00096 axis2_char_t *(AXIS2_CALL *
00097 get_type)(
00098 oxs_ctx_t *ctx,
00099 const axis2_env_t *env
00100 );
00101 axis2_char_t *(AXIS2_CALL *
00102 get_mime_type)(
00103 oxs_ctx_t *ctx,
00104 const axis2_env_t *env
00105 );
00106
00107 axis2_char_t *(AXIS2_CALL *
00108 get_encoding)(
00109 oxs_ctx_t *ctx,
00110 const axis2_env_t *env
00111 );
00112
00113 axis2_char_t *(AXIS2_CALL *
00114 get_recipient)(
00115 oxs_ctx_t *ctx,
00116 const axis2_env_t *env
00117 );
00118
00119 axis2_char_t *(AXIS2_CALL *
00120 get_carried_key_name)(
00121 oxs_ctx_t *ctx,
00122 const axis2_env_t *env
00123 );
00124
00125 axis2_char_t *(AXIS2_CALL *
00126 get_enc_mtd_algorithm)(
00127 oxs_ctx_t *ctx,
00128 const axis2_env_t *env
00129 );
00130
00131 axis2_char_t *(AXIS2_CALL *
00132 get_input_data)(
00133 oxs_ctx_t *ctx,
00134 const axis2_env_t *env
00135 );
00136
00137 axiom_node_t *(AXIS2_CALL *
00138 get_enc_data_node)(
00139 oxs_ctx_t *ctx,
00140 const axis2_env_t *env
00141 );
00142
00143 axiom_node_t *(AXIS2_CALL *
00144 get_enc_method_node)(
00145 oxs_ctx_t *ctx,
00146 const axis2_env_t *env
00147 );
00148
00149 axiom_node_t *(AXIS2_CALL *
00150 get_key_info_node)(
00151 oxs_ctx_t *ctx,
00152 const axis2_env_t *env
00153 );
00154
00155 axiom_node_t *(AXIS2_CALL *
00156 get_cipher_value_node)(
00157 oxs_ctx_t *ctx,
00158 const axis2_env_t *env
00159 );
00160
00161 axis2_status_t (AXIS2_CALL *
00162 set_mode)(
00163 oxs_ctx_t *ctx,
00164 const axis2_env_t *env,
00165 oxs_ctx_mode_t mode
00166 );
00167
00168 axis2_status_t (AXIS2_CALL *
00169 set_operation)(
00170 oxs_ctx_t *ctx,
00171 const axis2_env_t *env,
00172 oxs_ctx_operation_t operation
00173 );
00174
00175 axis2_status_t (AXIS2_CALL *
00176 set_key)(
00177 oxs_ctx_t *ctx,
00178 const axis2_env_t *env,
00179 oxs_key_t *key
00180 );
00181 axis2_status_t (AXIS2_CALL *
00182 set_id)(
00183 oxs_ctx_t *ctx,
00184 const axis2_env_t *env,
00185 axis2_char_t *id
00186 );
00187
00188 axis2_status_t (AXIS2_CALL *
00189 set_type)(
00190 oxs_ctx_t *ctx,
00191 const axis2_env_t *env,
00192 axis2_char_t *type
00193 );
00194
00195 axis2_status_t (AXIS2_CALL *
00196 set_mime_type)(
00197 oxs_ctx_t *ctx,
00198 const axis2_env_t *env,
00199 axis2_char_t *mime_type
00200 );
00201
00202 axis2_status_t (AXIS2_CALL *
00203 set_encoding)(
00204 oxs_ctx_t *ctx,
00205 const axis2_env_t *env,
00206 axis2_char_t *encoding
00207 );
00208
00209 axis2_status_t (AXIS2_CALL *
00210 set_recipient)(
00211 oxs_ctx_t *ctx,
00212 const axis2_env_t *env,
00213 axis2_char_t *recipient
00214 );
00215
00216 axis2_status_t (AXIS2_CALL *
00217 set_carried_key_name)(
00218 oxs_ctx_t *ctx,
00219 const axis2_env_t *env,
00220 axis2_char_t *carried_key_name
00221 );
00222
00223 axis2_status_t (AXIS2_CALL *
00224 set_enc_mtd_algorithm)(
00225 oxs_ctx_t *ctx,
00226 const axis2_env_t *env,
00227 axis2_char_t *enc_mtd_algorithm
00228 );
00229
00230 axis2_status_t (AXIS2_CALL *
00231 set_input_data)(
00232 oxs_ctx_t *ctx,
00233 const axis2_env_t *env,
00234 axis2_char_t *input_data
00235 );
00236
00237 axis2_status_t (AXIS2_CALL *
00238 set_enc_data_node)(
00239 oxs_ctx_t *ctx,
00240 const axis2_env_t *env,
00241 axiom_node_t *enc_data_node
00242 );
00243
00244 axis2_status_t (AXIS2_CALL *
00245 set_enc_method_node)(
00246 oxs_ctx_t *ctx,
00247 const axis2_env_t *env,
00248 axiom_node_t *enc_method_node
00249 );
00250
00251 axis2_status_t (AXIS2_CALL *
00252 set_key_info_node)(
00253 oxs_ctx_t *ctx,
00254 const axis2_env_t *env,
00255 axiom_node_t *key_info_node
00256 );
00257
00258 axis2_status_t (AXIS2_CALL *
00259 set_cipher_value_node)(
00260 oxs_ctx_t *ctx,
00261 const axis2_env_t *env,
00262 axiom_node_t *cipher_value_node
00263 );
00264
00265 };
00266
00267 struct oxs_ctx
00268 {
00270 oxs_ctx_ops_t *ops;
00271 };
00272
00273
00274 AXIS2_EXTERN oxs_ctx_t *AXIS2_CALL
00275 oxs_ctx_create(const axis2_env_t *env);
00276
00277
00278
00279 #define OXS_CTX_FREE(ctx, env) \
00280 ((ctx)->ops->free(ctx, env) )
00281
00282 #define OXS_CTX_GET_MODE(ctx, env) \
00283 ((ctx)->ops->get_mode(ctx, env) )
00284
00285 #define OXS_CTX_GET_OPERATION(ctx, env) \
00286 ((ctx)->ops->get_operation(ctx, env) )
00287
00288 #define OXS_CTX_GET_KEY(ctx, env) \
00289 ((ctx)->ops->get_key(ctx, env) )
00290
00291 #define OXS_CTX_GET_ID(ctx, env) \
00292 ((ctx)->ops->get_id(ctx, env) )
00293
00294 #define OXS_CTX_GET_TYPE(ctx, env) \
00295 ((ctx)->ops->get_type(ctx, env) )
00296
00297 #define OXS_CTX_GET_MIME_TYPE(ctx, env) \
00298 ((ctx)->ops->get_mime_type(ctx, env) )
00299
00300 #define OXS_CTX_GET_ENCODING(ctx, env) \
00301 ((ctx)->ops->get_encoding(ctx, env) )
00302
00303 #define OXS_CTX_GET_RECIPIENT(ctx, env) \
00304 ((ctx)->ops->get_recipient(ctx, env) )
00305
00306 #define OXS_CTX_GET_CARRIED_KEY_NAME(ctx, env) \
00307 ((ctx)->ops->get_carried_key_name(ctx, env) )
00308
00309 #define OXS_CTX_GET_ENC_MTD_ALGORITHM(ctx, env) \
00310 ((ctx)->ops->get_enc_mtd_algorithm(ctx, env) )
00311
00312 #define OXS_CTX_GET_INPUT_DATA(ctx, env) \
00313 ((ctx)->ops->get_input_data(ctx, env) )
00314
00315 #define OXS_CTX_GET_ENC_DATA_NODE(ctx, env) \
00316 ((ctx)->ops->get_enc_data_node(ctx, env) )
00317
00318 #define OXS_CTX_GET_ENC_METHOD_NODE(ctx, env) \
00319 ((ctx)->ops->get_enc_method_node(ctx, env) )
00320
00321 #define OXS_CTX_GET_KEY_INFO_NODE(ctx, env) \
00322 ((ctx)->ops->get_key_info_node(ctx, env) )
00323
00324 #define OXS_CTX_GET_CIPHER_VALUE_NODE(ctx, env) \
00325 ((ctx)->ops->get_cipher_value_node(ctx, env) )
00326
00327 #define OXS_CTX_SET_MODE(ctx, env, mode) \
00328 ((ctx)->ops->set_mode(ctx, env, mode) )
00329
00330 #define OXS_CTX_SET_OPERATION(ctx, env, operation) \
00331 ((ctx)->ops->set_operation(ctx, env, operation) )
00332
00333 #define OXS_CTX_SET_KEY(ctx, env, key) \
00334 ((ctx)->ops->set_key(ctx, env, key) )
00335
00336 #define OXS_CTX_SET_ID(ctx, env, id) \
00337 ((ctx)->ops->set_id(ctx, env, id) )
00338
00339 #define OXS_CTX_SET_TYPE(ctx, env, type) \
00340 ((ctx)->ops->set_type(ctx, env, type) )
00341
00342 #define OXS_CTX_SET_MIME_TYPE(ctx, env, mime_type) \
00343 ((ctx)->ops->set_mime_type(ctx, env, mime_type) )
00344
00345 #define OXS_CTX_SET_ENCODING(ctx, env, encoding) \
00346 ((ctx)->ops->set_encoding(ctx, env, encoding) )
00347
00348 #define OXS_CTX_SET_RECIPIENT(ctx, env, recipient) \
00349 ((ctx)->ops->set_recipient(ctx, env, recipient) )
00350
00351 #define OXS_CTX_SET_CARRIED_KEY_NAME(ctx, env, key_name) \
00352 ((ctx)->ops->set_carried_key_name(ctx, env, key_name) )
00353
00354 #define OXS_CTX_SET_ENC_MTD_ALGORITHM(ctx, env, enc_mtd_algorithm) \
00355 ((ctx)->ops->set_enc_mtd_algorithm(ctx, env, enc_mtd_algorithm) )
00356
00357 #define OXS_CTX_SET_INPUT_DATA(ctx, env, input_data) \
00358 ((ctx)->ops->set_input_data(ctx, env, input_data) )
00359
00360 #define OXS_CTX_SET_ENC_DATA_NODE(ctx, env, enc_data_node) \
00361 ((ctx)->ops->set_enc_data_node(ctx, env, enc_data_node) )
00362
00363 #define OXS_CTX_SET_ENC_METHOD_NODE(ctx, env, enc_method_node) \
00364 ((ctx)->ops->set_enc_method_node(ctx, env, enc_method_node) )
00365
00366 #define OXS_CTX_SET_KEY_INFO_NODE(ctx, env, key_info_node) \
00367 ((ctx)->ops->set_key_info_node(ctx, env, key_info_node) )
00368
00369 #define OXS_CTX_SET_CIPHER_VALUE_NODE(ctx, env, cipher_value_node) \
00370 ((ctx)->ops->set_cipher_value_node(ctx, env, cipher_value_node) )
00371
00372
00403 #ifdef __cplusplus
00404 }
00405 #endif
00406
00407 #endif