include/rampart_sct_provider.h (36 lines of code) (raw):

/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef RAMPART_SCT_PROVIDER_H #define RAMPART_SCT_PROVIDER_H /** * @file rampart_sct_provider.h * @brief Security context token provider module for rampart */ /** * @defgroup sct_provider Security Context Token provider * @ingroup rampart_utils * @{ */ #include <axis2_defines.h> #include <axutil_env.h> #include <rampart_context.h> #ifdef __cplusplus extern "C" { #endif typedef struct rampart_sct_provider_ops rampart_sct_provider_ops_t; typedef struct rampart_sct_provider rampart_sct_provider_t; struct rampart_sct_provider_ops { /* This function will be called to get previously stored sct. If secure conversation token * is referred by this method, then sct_id will be not null. However, if security context * token (pre-agreed and established offline) is refered then sct_id might be NULL. * is_encryption is passed, so that if pre-agreed sct is different for encryption and * signature, then it could be accessed. sct_id_type can be RAMPART_SCT_ID_TYPE_LOCAL * or RAMPART_SCT_ID_TYPE_GLOBAL. user_param will be whatever stored using * rampart_context_set_security_context_token_user_params. */ obtain_security_context_token_fn obtain_security_context_token; /* This function will be used to store sct. Global id, local id will be given so function * writer can store them in anyway. Get or Delete method will use any of the Global id or * local id, so Store function writer should be ready for that. */ store_security_context_token_fn store_security_context_token; /* This function will be called to delete previously stored sct. sct_id_type can be * RAMPART_SCT_ID_TYPE_LOCAL or RAMPART_SCT_ID_TYPE_GLOBAL */ delete_security_context_token_fn delete_security_context_token; /* Validates whether security context token is valid or not. Normally, we can directly send * true as response. But if syntax of security context token is altered/added by using * extensible mechanism (e.g having sessions, etc.) then user can implement this method. * Axiom representation of the sct will be given as the parameter, because if sct is * extended, we don't know the syntax. Method writer can implement whatever needed. */ validate_security_context_token_fn validate_security_context_token; /* This function will be called to get the user paramters. It will be called only when * loading sct_provider module. If user_params are not needed, this method can return NULL */ void* (AXIS2_CALL* get_user_params)( const axutil_env_t *env); /* This function will be called to free security context token provider module */ axis2_status_t (AXIS2_CALL* free)( rampart_sct_provider_t *sct_provider, const axutil_env_t* env); }; struct rampart_sct_provider { rampart_sct_provider_ops_t *ops; axutil_param_t *param; }; /*************************** Function macros **********************************/ #define RAMPART_SCT_PROVIDER_FREE(sct_provider, env) \ ((sct_provider)->ops->free(sct_provider, env)) /** @} */ #ifdef __cplusplus } #endif #endif /* RAMPART_SCT_PROVIDER_H */