blob: 1c2cb66cb70dd2a4ef5b5c95344f02b3a4207940 [file] [log] [blame]
/*
* Copyright 2004,2005 The Apache Software Foundation.
*
* Licensed 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_CONTEXT_H
#define RAMPART_CONTEXT_H
/**
* @file rampart_context.h
* @brief The Rampart Context, in which configurations are stored
*/
/**
* @defgroup rampart_context Rampart Context
* @ingroup rampart_utils
* @{
*/
#include <rp_includes.h>
#include <rp_secpolicy.h>
#include <rampart_authn_provider.h>
#include <axutil_property.h>
#include <rampart_constants.h>
#include <rampart_callback.h>
#include <rampart_authn_provider.h>
#include <axis2_key_type.h>
#include <axis2_msg_ctx.h>
#include <oxs_key.h>
#include <axutil_array_list.h>
#ifdef __cplusplus
extern "C"
{
#endif
typedef struct rampart_context_t rampart_context_t;
typedef axis2_char_t *(AXIS2_CALL*
password_callback_fn)(const axutil_env_t *env,
const axis2_char_t *username,
void *ctx);
typedef axis2_status_t (AXIS2_CALL*
rampart_is_replayed_fn)(const axutil_env_t *env,
axis2_msg_ctx_t* msg_ctx,
rampart_context_t *rampart_context);
typedef rampart_authn_provider_status_t (AXIS2_CALL*
auth_password_func)(const axutil_env_t* env,
const axis2_char_t *username,
const axis2_char_t *password);
typedef rampart_authn_provider_status_t (AXIS2_CALL*
auth_digest_func)(const axutil_env_t* env,
const axis2_char_t *username,
const axis2_char_t *nonce,
const axis2_char_t *created,
const char *digest);
/**
* Create a rampart_context.rampart_context is the wrapper
* of secpolicy and the main configuration for rampart.
* @env pointer to environment struct
* @return ramaprt_context_t* on successful creation.Else NULL;
*/
AXIS2_EXTERN rampart_context_t *AXIS2_CALL
rampart_context_create(const axutil_env_t *env);
/**
* Frees a rampart_context.
* @rampart_context the rampart_context
* @env pointer to environment struct
*/
AXIS2_EXTERN void AXIS2_CALL
rampart_context_free(rampart_context_t *rampart_context,
const axutil_env_t *env);
/****************************************************************/
/**
* Sets the policy node which is an om_node containing policy.This om_node
* can be build outside rampart.
* @rampart_context the rampart_context
* @env pointer to environment struct
* @policy_node is an axiom_node.
* @return AXIS2_SUCCESS on success else AXIS2_FAILURE.
*/
AXIS2_EXTERN axis2_status_t AXIS2_CALL
rampart_context_set_policy_node(rampart_context_t *rampart_context,
const axutil_env_t *env,
axiom_node_t *policy_node);
/**
* Sets private key of sender as a buffer.This can be
* set from outside rampart.
* @rampart_context the rampart_context
* @env pointer to environment struct
* @prv_key is a void buffer.
* @return AXIS2_SUCCESS on success else AXIS2_FAILURE.
*/
AXIS2_EXTERN axis2_status_t AXIS2_CALL
rampart_context_set_prv_key(rampart_context_t *rampart_context,
const axutil_env_t *env,
void *prv_key);
AXIS2_EXTERN axis2_status_t AXIS2_CALL
rampart_context_set_prv_key_type(rampart_context_t *rampart_context,
const axutil_env_t *env,
axis2_key_type_t type);
AXIS2_EXTERN axis2_status_t AXIS2_CALL
rampart_context_set_certificate(rampart_context_t *rampart_context,
const axutil_env_t *env,
void *certificate);
AXIS2_EXTERN axis2_status_t AXIS2_CALL
rampart_context_set_certificate_type(rampart_context_t *rampart_context,
const axutil_env_t *env,
axis2_key_type_t type);
AXIS2_EXTERN axis2_status_t AXIS2_CALL
rampart_context_set_receiver_certificate(rampart_context_t *rampart_context,
const axutil_env_t *env,
void *receiver_certificate);
AXIS2_EXTERN axis2_status_t AXIS2_CALL
rampart_context_set_receiver_certificate_type(rampart_context_t *rampart_context,
const axutil_env_t *env,
axis2_key_type_t type);
AXIS2_EXTERN axis2_status_t AXIS2_CALL
rampart_context_set_user(rampart_context_t *rampart_context,
const axutil_env_t *env,
axis2_char_t *user);
AXIS2_EXTERN axis2_status_t AXIS2_CALL
rampart_context_set_password(rampart_context_t *rampart_context,
const axutil_env_t *env,
axis2_char_t *password);
AXIS2_EXTERN axis2_status_t AXIS2_CALL
rampart_context_set_prv_key_password(rampart_context_t *rampart_context,
const axutil_env_t *env,
axis2_char_t *prv_key_password);
AXIS2_EXTERN axis2_status_t AXIS2_CALL
rampart_context_set_pwcb_function(rampart_context_t *rampart_context,
const axutil_env_t *env,
password_callback_fn pwcb_function,
void *ctx);
AXIS2_EXTERN axis2_status_t AXIS2_CALL
rampart_context_set_replay_detect_function(rampart_context_t *rampart_context,
const axutil_env_t *env,
rampart_is_replayed_fn is_replayed_function);
AXIS2_EXTERN axis2_status_t AXIS2_CALL
rampart_context_set_password_type(rampart_context_t *rampart_context,
const axutil_env_t *env,
axis2_char_t *password_type);
AXIS2_EXTERN axis2_status_t AXIS2_CALL
rampart_context_set_ttl(rampart_context_t *rampart_context,
const axutil_env_t *env,
int ttl);
AXIS2_EXTERN axis2_status_t AXIS2_CALL
rampart_context_set_rd_val(rampart_context_t *rampart_context,
const axutil_env_t *env,
axis2_char_t *rd_val);
AXIS2_EXTERN axis2_status_t AXIS2_CALL
rampart_context_set_private_key_file(rampart_context_t *rampart_context,
const axutil_env_t *env,
axis2_char_t *private_key_file);
AXIS2_EXTERN axis2_status_t AXIS2_CALL
rampart_context_set_certificate_file(rampart_context_t *rampart_context,
const axutil_env_t *env,
axis2_char_t *certificate_file);
AXIS2_EXTERN axis2_status_t AXIS2_CALL
rampart_context_set_reciever_certificate_file(rampart_context_t *rampart_context,
const axutil_env_t *env,
axis2_char_t *reciever_certificate_file);
AXIS2_EXTERN axis2_status_t AXIS2_CALL
rampart_context_add_derived_key(rampart_context_t *rampart_context,
const axutil_env_t *env,
oxs_key_t *derived_key);
/**********************************************************8*/
/*Getters of the above set functions*/
AXIS2_EXTERN axiom_node_t *AXIS2_CALL
rampart_context_get_policy_node(
rampart_context_t *rampart_context,
const axutil_env_t *env);
AXIS2_EXTERN void *AXIS2_CALL
rampart_context_get_prv_key(
rampart_context_t *rampart_context,
const axutil_env_t *env);
AXIS2_EXTERN axis2_key_type_t AXIS2_CALL
rampart_context_get_prv_key_type(
rampart_context_t *rampart_context,
const axutil_env_t *env);
AXIS2_EXTERN void *AXIS2_CALL
rampart_context_get_certificate(
rampart_context_t *rampart_context,
const axutil_env_t *env);
AXIS2_EXTERN axis2_key_type_t AXIS2_CALL
rampart_context_get_certificate_type(
rampart_context_t *rampart_context,
const axutil_env_t *env);
AXIS2_EXTERN void *AXIS2_CALL
rampart_context_get_receiver_certificate(
rampart_context_t *rampart_context,
const axutil_env_t *env);
AXIS2_EXTERN axis2_key_type_t AXIS2_CALL
rampart_context_get_receiver_certificate_type(
rampart_context_t *rampart_context,
const axutil_env_t *env);
AXIS2_EXTERN axis2_char_t *AXIS2_CALL
rampart_context_get_user(
rampart_context_t *rampart_context,
const axutil_env_t *env);
AXIS2_EXTERN axis2_char_t *AXIS2_CALL
rampart_context_get_password(
rampart_context_t *rampart_context,
const axutil_env_t *env);
AXIS2_EXTERN axis2_char_t *AXIS2_CALL
rampart_context_get_prv_key_password(
rampart_context_t *rampart_context,
const axutil_env_t *env);
AXIS2_EXTERN password_callback_fn AXIS2_CALL
rampart_context_get_pwcb_function(
rampart_context_t *rampart_context,
const axutil_env_t *env);
AXIS2_EXTERN rampart_is_replayed_fn AXIS2_CALL
rampart_context_get_replay_detect_function(
rampart_context_t *rampart_context,
const axutil_env_t *env);
AXIS2_EXTERN void* AXIS2_CALL
rampart_context_get_ctx(
rampart_context_t *rampart_context,
const axutil_env_t *env);
AXIS2_EXTERN int AXIS2_CALL
rampart_context_get_ttl(
rampart_context_t *rampart_context,
const axutil_env_t *env);
AXIS2_EXTERN axis2_char_t* AXIS2_CALL
rampart_context_get_rd_val(
rampart_context_t *rampart_context,
const axutil_env_t *env);
AXIS2_EXTERN axis2_char_t *AXIS2_CALL
rampart_context_get_password_type(
rampart_context_t *rampart_context,
const axutil_env_t *env);
AXIS2_EXTERN axutil_array_list_t* AXIS2_CALL
rampart_context_get_derived_keys(rampart_context_t *rampart_context,
const axutil_env_t *env);
AXIS2_EXTERN oxs_key_t* AXIS2_CALL
rampart_context_get_derived_key(rampart_context_t *rampart_context,
const axutil_env_t *env,
axis2_char_t* dk_id);
/*End of Getters */
/*Rampart specific functions */
AXIS2_EXTERN rp_secpolicy_t *AXIS2_CALL
rampart_context_get_secpolicy(
rampart_context_t *rampart_context,
const axutil_env_t *env);
AXIS2_EXTERN axis2_status_t AXIS2_CALL
rampart_context_set_secpolicy(rampart_context_t *rampart_context,
const axutil_env_t *env,
rp_secpolicy_t *secpolicy);
AXIS2_EXTERN rampart_callback_t *AXIS2_CALL
rampart_context_get_password_callback(
rampart_context_t *rampart_context,
const axutil_env_t *env);
AXIS2_EXTERN axis2_status_t AXIS2_CALL
rampart_context_set_password_callback(rampart_context_t *rampart_context,
const axutil_env_t *env,
rampart_callback_t *password_callback_module);
AXIS2_EXTERN auth_password_func AXIS2_CALL
rampart_context_get_auth_password_function(
rampart_context_t *rampart_context,
const axutil_env_t *env);
AXIS2_EXTERN axis2_status_t AXIS2_CALL
rampart_context_set_auth_password_function(rampart_context_t *rampart_context,
const axutil_env_t *env,
auth_password_func authenticate_with_password);
AXIS2_EXTERN auth_digest_func AXIS2_CALL
rampart_context_get_auth_digest_function(
rampart_context_t *rampart_context,
const axutil_env_t *env);
AXIS2_EXTERN axis2_status_t AXIS2_CALL
rampart_context_set_auth_digest_function(rampart_context_t *rampart_context,
const axutil_env_t *env,
auth_digest_func authenticate_with_digest);
AXIS2_EXTERN rampart_authn_provider_t *AXIS2_CALL
rampart_context_get_authn_provider(
rampart_context_t *rampart_context,
const axutil_env_t *env);
AXIS2_EXTERN struct rampart_replay_detector_t *AXIS2_CALL
rampart_context_get_replay_detector(
rampart_context_t *rampart_context,
const axutil_env_t *env);
AXIS2_EXTERN axis2_status_t AXIS2_CALL
rampart_context_set_authn_provider(rampart_context_t *rampart_context,
const axutil_env_t *env,
rampart_authn_provider_t *authn_provider);
AXIS2_EXTERN axis2_status_t AXIS2_CALL
rampart_context_set_replay_detector(rampart_context_t *rampart_context,
const axutil_env_t *env,
struct rampart_replay_detector_t *replay_detector);
AXIS2_EXTERN axis2_bool_t AXIS2_CALL
rampart_context_get_require_timestamp(
rampart_context_t *rampart_context,
const axutil_env_t *env);
AXIS2_EXTERN axis2_bool_t AXIS2_CALL
rampart_context_get_require_ut(
rampart_context_t *rampart_context,
const axutil_env_t *env);
AXIS2_EXTERN rp_property_type_t AXIS2_CALL
rampart_context_get_binding_type(
rampart_context_t *rampart_context,
const axutil_env_t *env);
AXIS2_EXTERN axis2_bool_t AXIS2_CALL
rampart_context_is_include_timestamp(
rampart_context_t *rampart_context,
const axutil_env_t *env);
AXIS2_EXTERN axis2_bool_t AXIS2_CALL
rampart_context_is_include_username_token(
rampart_context_t *rampart_context,
const axutil_env_t *env);
AXIS2_EXTERN axis2_char_t *AXIS2_CALL
rampart_context_get_password_callback_class(
rampart_context_t *rampart_context,
const axutil_env_t *env);
AXIS2_EXTERN axis2_char_t *AXIS2_CALL
rampart_context_get_authn_module_name(
rampart_context_t *rampart_context,
const axutil_env_t *env);
AXIS2_EXTERN axis2_char_t *AXIS2_CALL
rampart_context_get_replay_detector_name(
rampart_context_t *rampart_context,
const axutil_env_t *env);
AXIS2_EXTERN axis2_bool_t AXIS2_CALL
rampart_context_is_encrypt_before_sign(
rampart_context_t *rampart_context,
const axutil_env_t *env);
AXIS2_EXTERN axis2_bool_t AXIS2_CALL
rampart_context_is_encrypt_signature(
rampart_context_t *rampart_context,
const axutil_env_t *env);
AXIS2_EXTERN axis2_status_t AXIS2_CALL
rampart_context_get_nodes_to_encrypt(
rampart_context_t *rampart_context,
const axutil_env_t *env,
axiom_soap_envelope_t *soap_envelope,
axutil_array_list_t *nodes_to_encrypt);
AXIS2_EXTERN axis2_status_t AXIS2_CALL
rampart_context_get_nodes_to_sign(
rampart_context_t *rampart_context,
const axutil_env_t *env,
axiom_soap_envelope_t *soap_envelope,
axutil_array_list_t *nodes_to_sign);
AXIS2_EXTERN axis2_status_t AXIS2_CALL
rampart_context_get_elements_to_encrypt(
rampart_context_t *rampart_context,
const axutil_env_t *env,
axiom_soap_envelope_t *soap_envelope,
axutil_array_list_t *nodes_to_encrypt);
AXIS2_EXTERN axis2_status_t AXIS2_CALL
rampart_context_get_elements_to_sign(
rampart_context_t *rampart_context,
const axutil_env_t *env,
axiom_soap_envelope_t *soap_envelope,
axutil_array_list_t *nodes_to_sign);
AXIS2_EXTERN rp_property_t *AXIS2_CALL
rampart_context_get_token(
rampart_context_t *rampart_context,
const axutil_env_t *env,
axis2_bool_t for_encryption,
axis2_bool_t server_side,
axis2_bool_t is_inpath);
AXIS2_EXTERN axis2_bool_t AXIS2_CALL
rampart_context_check_is_derived_keys(
const axutil_env_t *env,
rp_property_t *token);
AXIS2_EXTERN axis2_char_t *AXIS2_CALL
rampart_context_get_enc_sym_algo(
rampart_context_t *rampart_context,
const axutil_env_t *env);
AXIS2_EXTERN axis2_char_t *AXIS2_CALL
rampart_context_get_enc_asym_algo(
rampart_context_t *rampart_context,
const axutil_env_t *env);
AXIS2_EXTERN axis2_char_t *AXIS2_CALL
rampart_context_get_asym_sig_algo(
rampart_context_t *rampart_context,
const axutil_env_t *env);
AXIS2_EXTERN axis2_char_t *AXIS2_CALL
rampart_context_get_digest_mtd(
rampart_context_t *rampart_context,
const axutil_env_t *env);
AXIS2_EXTERN axis2_char_t *AXIS2_CALL
rampart_context_get_encryption_user(
rampart_context_t *rampart_context,
const axutil_env_t *env);
AXIS2_EXTERN axis2_bool_t AXIS2_CALL
rampart_context_is_token_include(
rampart_context_t *rampart_context,
rp_property_t *token,
rp_property_type_t token_type,
axis2_bool_t server_side,
axis2_bool_t is_inpath,
const axutil_env_t *env);
AXIS2_EXTERN axis2_char_t *AXIS2_CALL
rampart_context_get_key_identifier(
rampart_context_t *rampart_context,
rp_property_t *token,
const axutil_env_t *env);
AXIS2_EXTERN axis2_bool_t AXIS2_CALL
rampart_context_is_token_type_supported(
rp_property_type_t token_type,
const axutil_env_t *env);
AXIS2_EXTERN axis2_bool_t AXIS2_CALL
rampart_context_is_key_identifier_type_supported(
rampart_context_t *rampart_context,
rp_property_t *token,
axis2_char_t *identifier,
const axutil_env_t *env);
AXIS2_EXTERN axis2_char_t *AXIS2_CALL
rampart_context_get_layout(
rampart_context_t *rampart_context,
const axutil_env_t *env);
AXIS2_EXTERN axis2_bool_t AXIS2_CALL
rampart_context_check_whether_to_encrypt(
rampart_context_t *rampart_context,
const axutil_env_t *env);
AXIS2_EXTERN axis2_bool_t AXIS2_CALL
rampart_context_check_whether_to_sign(
rampart_context_t *rampart_context,
const axutil_env_t *env);
AXIS2_EXTERN axis2_status_t AXIS2_CALL
rampart_context_set_user_from_file(
rampart_context_t *rampart_context,
const axutil_env_t *env);
AXIS2_EXTERN axis2_status_t AXIS2_CALL
rampart_context_set_password_type_from_file(
rampart_context_t *rampart_context,
const axutil_env_t *env);
AXIS2_EXTERN axis2_char_t *AXIS2_CALL
rampart_context_get_certificate_file(
rampart_context_t *rampart_context,
const axutil_env_t *env);
AXIS2_EXTERN axis2_char_t *AXIS2_CALL
rampart_context_get_receiver_certificate_file(
rampart_context_t *rampart_context,
const axutil_env_t *env);
AXIS2_EXTERN axis2_char_t *AXIS2_CALL
rampart_context_get_private_key_file(
rampart_context_t *rampart_context,
const axutil_env_t *env);
AXIS2_EXTERN axis2_status_t AXIS2_CALL
rampart_context_set_ttl_from_file(
rampart_context_t *rampart_context,
const axutil_env_t *env);
AXIS2_EXTERN axis2_status_t AXIS2_CALL
rampart_context_set_rd_val_from_file(
rampart_context_t *rampart_context,
const axutil_env_t *env);
AXIS2_EXTERN oxs_key_t *AXIS2_CALL
rampart_context_get_session_key(
rampart_context_t *rampart_context,
const axutil_env_t *env);
AXIS2_EXTERN axis2_status_t AXIS2_CALL
rampart_context_set_session_key(
rampart_context_t *rampart_context,
const axutil_env_t *env,
oxs_key_t *session_key);
AXIS2_EXTERN axis2_status_t AXIS2_CALL
rampart_context_increment_ref(
rampart_context_t *rampart_context,
const axutil_env_t *env);
AXIS2_EXTERN axis2_bool_t AXIS2_CALL
rampart_context_is_sig_confirmation_reqd(
rampart_context_t *rampart_context,
const axutil_env_t *env);
#ifdef __cplusplus
}
#endif
#endif