| |
| /* |
| * 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 TRUST_UTIL |
| #define TRUST_UTIL |
| |
| /** |
| * @file trust_util.h |
| * @brief contains generic operations related to trust module |
| */ |
| |
| #include <stdio.h> |
| #include <stdlib.h> |
| #include <axiom.h> |
| #include <axutil_utils.h> |
| #include <axutil_string.h> |
| |
| #include <trust_constants.h> |
| |
| #ifdef __cplusplus |
| extern "C" |
| { |
| #endif |
| |
| typedef enum |
| { |
| TRUST_ALLOW = 0, |
| TRUST_NOT_ALLOW |
| } trust_allow_t; |
| |
| typedef enum |
| { |
| TRUST_OK = 0, |
| TRUST_NOT_OK |
| } trust_ok_t; |
| |
| /** |
| * Create the RST Element for Issuance binding. |
| * <wst:RequestSecurityToken> |
| * ... |
| * ... |
| * </wst:RequestSecurityToken> |
| * @param env pointer to environment struct |
| * @param wst_verson integer representing wst version |
| * @param context string representing contest of the request, can be NULL |
| * @returns RST axiom node, NULL if error occurred. |
| */ |
| AXIS2_EXTERN axiom_node_t *AXIS2_CALL |
| trust_util_create_rst_element( |
| const axutil_env_t * env, |
| int wst_version, |
| axis2_char_t * context); |
| |
| /** |
| * Create the RSTR Element for Issuance binding. |
| * <wst:RequestSecurityTokenResponse> |
| * ... |
| * ... |
| * </wst:RequestSecurityTokenResponse> |
| * @param env pointer to environment struct |
| * @param wst_verson integer representing wst version |
| * @param context string representing contest of the request, can be NULL |
| * @returns RSTR axiom node, NULL if error ocurred. |
| */ |
| AXIS2_EXTERN axiom_node_t *AXIS2_CALL |
| trust_util_create_rstr_element( |
| const axutil_env_t * env, |
| int wst_version, |
| axis2_char_t * context); |
| |
| /** |
| * Create the RSTRC Element for Issuance binding. |
| * <wst:RequestSecurityTokenResponseCollection> |
| * ... |
| * ... |
| * </wst:RequestSecurityTokenResponseCollection> |
| * @param env pointer to environment struct |
| * @param wst_verson integer representing wst version |
| * @returns RSTRC axiom node, NULL if error ocurred. |
| */ |
| AXIS2_EXTERN axiom_node_t *AXIS2_CALL |
| trust_util_create_rstr_collection_element( |
| const axutil_env_t * env, |
| int wst_version); |
| |
| /** |
| * Create the RequestType Element for Issuance binding. |
| * <wst:RequestType> .... </wst:RequestType> |
| * @param env pointer to environment struct |
| * @param wst_verson integer representing wst version |
| * @param parent_node parent axiom node |
| * @param request_type string representing request type |
| * @returns RequestType axiom node, NULL if error ocurred. |
| */ |
| AXIS2_EXTERN axiom_node_t *AXIS2_CALL |
| trust_util_create_request_type_element( |
| const axutil_env_t * env, |
| int wst_version, |
| axiom_node_t * parent_node, |
| axis2_char_t * request_type); |
| |
| /** |
| * Create the TokenType Element for Issuance binding. |
| * <wst:TokenType> .... </wst:TokenType> |
| * @param env pointer to environment struct |
| * @param wst_verson integer representing wst version |
| * @param parent_node parent axiom node |
| * @param token_type string representing token type |
| * @returns TokenType axiom node, NULL if error ocurred. |
| */ |
| AXIS2_EXTERN axiom_node_t *AXIS2_CALL |
| trust_util_create_token_type_element( |
| const axutil_env_t * env, |
| int wst_version, |
| axiom_node_t * parent_node, |
| axis2_char_t * token_type); |
| |
| /** |
| * Create the AppliesTo Element for Issuance binding. |
| * AppliesTo element Specifies the scope for which the security token is desired. |
| * Same as TokenType. AppliesTo is higher in precedence than TokenType |
| * <wsp:AppliesTo> |
| * <wsa:EndpointReference> |
| * <wsa:Address> ... </wsa:Address> |
| * </wsa:EndpointReference> |
| * </wsp:AppliesTo> |
| * @param env pointer to environment struct |
| * @param wst_verson integer representing wst version |
| * @param parent_node parent axiom node |
| * @param token_type string representing token type |
| * @returns TokenType axiom node, NULL if error ocurred. |
| */ |
| AXIS2_EXTERN axiom_node_t *AXIS2_CALL |
| trust_util_create_applies_to_element( |
| const axutil_env_t * env, |
| axiom_node_t * parent_node, |
| const axis2_char_t * address, |
| const axis2_char_t * addressing_ns); |
| |
| /** |
| *Claims :Requests a set of specific claims. These claims are identified by using the |
| * service's policy |
| *@Dialect :URI to indicate the syntax of the claims |
| **/ |
| |
| AXIS2_EXTERN axiom_node_t *AXIS2_CALL |
| trust_util_create_claims_element( |
| const axutil_env_t * env, |
| int wst_version, |
| axiom_node_t * parent_node, |
| axiom_node_t * claims_content, |
| axis2_char_t * dialect_uri); |
| |
| /** |
| * Create the RequestedSecurityToken Element for Issuance binding. |
| * <wst:RequestedSecurityToken> .... </wst:RequestedSecurityToken> |
| * @param env pointer to environment struct |
| * @param wst_verson integer representing wst version |
| * @param parent_node parent axiom node |
| * @returns RequestedSecurityToken axiom node, NULL if error ocurred. |
| */ |
| AXIS2_EXTERN axiom_node_t *AXIS2_CALL |
| trust_util_create_requested_security_token_element( |
| const axutil_env_t * env, |
| int wst_version, |
| axiom_node_t * parent_node); |
| |
| /** |
| * Create the RequestedProofToken Element for Issuance binding. |
| * <wst:RequestedProofToken> .... </wst:RequestedProofToken> |
| * @param env pointer to environment struct |
| * @param wst_verson integer representing wst version |
| * @param parent_node parent axiom node |
| * @returns RequestedSecurityToken axiom node, NULL if error ocurred. |
| */ |
| AXIS2_EXTERN axiom_node_t *AXIS2_CALL |
| trust_util_create_requsted_proof_token_element( |
| const axutil_env_t * env, |
| int wst_version, |
| axiom_node_t * parent_node); |
| |
| /** |
| * Create the Entropy Element for Issuance binding. User must set the content. |
| * <wst:Entropy> .... </wst:Entropy> |
| * Entropy element specifies the entropy that is to be used for creating the key |
| * according to the service's policy. |
| * @param env pointer to environment struct |
| * @param wst_verson integer representing wst version |
| * @param parent_node parent axiom node |
| * @returns Entropy axiom node, NULL if error ocurred. |
| */ |
| AXIS2_EXTERN axiom_node_t *AXIS2_CALL |
| trust_util_create_entropy_element( |
| const axutil_env_t * env, |
| int wst_version, |
| axiom_node_t * parent_node); |
| |
| /** |
| * Create the ComputedKey Element for Issuance binding. |
| * <wst:ComputedKey> .... </wst:ComputedKey> |
| * User must set the inside content for this node. |
| * @param env pointer to environment struct |
| * @param wst_verson integer representing wst version |
| * @param parent_node parent axiom node |
| * @returns RequestedSecurityToken axiom node, NULL if error ocurred. |
| */ |
| AXIS2_EXTERN axiom_node_t *AXIS2_CALL |
| trust_util_computed_key_element( |
| const axutil_env_t * env, |
| int wst_version, |
| axiom_node_t * parent_node); |
| |
| /** |
| * Create BinarySecret element. This contains base64 encoded binary secret or key. |
| * And also contain @Type attribute. |
| * @param env pointer to environment struct |
| * @param wst_version integer representing wst version |
| * @param parent_node pointer to parent axiom node |
| * @param enc_secret string representing encoded secret |
| * @param bin_sec_type Type of the binary secret |
| * @returns BinarySecret element or NULL if error occurred. |
| */ |
| AXIS2_EXTERN axiom_node_t *AXIS2_CALL |
| trust_util_create_binary_secret_element( |
| const axutil_env_t * env, |
| int wst_version, |
| axiom_node_t * parent_node, |
| axis2_char_t * enc_secret, |
| axis2_char_t * bin_sec_type); |
| |
| /** |
| * Create ComputedKeyAlgorithm element. |
| * @param env pointer to environment struct |
| * @param wst_version integer representing wst version |
| * @param parent_node pointer to parent axiom node |
| * @param algo_id Algorithm identifier |
| * @returns ComputedKeyAlgorithm element or NULL if error occurred. |
| */ |
| AXIS2_EXTERN axiom_node_t *AXIS2_CALL |
| trust_util_create_computed_key_algo_element( |
| const axutil_env_t * env, |
| int wst_version, |
| axiom_node_t * parent_node, |
| axis2_char_t * algo_id); |
| |
| /** |
| * Create KeySize element. |
| * @param env pointer to environment struct |
| * @param wst_version integer representing wst version |
| * @param parent_node pointer to parent axiom node |
| * @param key_size Key size string |
| * @returns KeySize element or NULL if error occurred. |
| */ |
| AXIS2_EXTERN axiom_node_t *AXIS2_CALL |
| trust_util_create_key_size_element( |
| const axutil_env_t * env, |
| int wst_version, |
| axiom_node_t * parent_node, |
| axis2_char_t * key_size); |
| |
| /** |
| * Create KeyType element. |
| * @param env pointer to environment struct |
| * @param wst_version integer representing wst version |
| * @param parent_node pointer to parent axiom node |
| * @param key_type Key type string |
| * @returns KeySize element or NULL if error occurred. |
| */ |
| AXIS2_EXTERN axiom_node_t *AXIS2_CALL |
| trust_util_create_key_type_element( |
| const axutil_env_t * env, |
| int wst_version, |
| axiom_node_t * parent_node, |
| axis2_char_t * key_type); |
| |
| /** |
| * Create LifeTime element. |
| * |
| * @param env pointer to environment struct |
| * @param wst_version integer representing wst version |
| * @param parent_node pointer to parent axiom node |
| * @returns LifeTime element or NULL if error occurred. |
| */ |
| AXIS2_EXTERN axiom_node_t *AXIS2_CALL |
| trust_util_create_life_time_element( |
| const axutil_env_t * env, |
| axiom_node_t * parent_node, |
| int wst_version, |
| int ttl); |
| |
| /** |
| * Create RequestedAttachedReference element. |
| * @param env pointer to environment struct |
| * @param wst_version integer representing wst version |
| * @param parent_node pointer to parent axiom node |
| * @returns RequestedAttachedReference element or NULL if error occurred. |
| */ |
| AXIS2_EXTERN axiom_node_t *AXIS2_CALL |
| trust_util_create_req_attached_reference_element( |
| const axutil_env_t * env, |
| int wst_version, |
| axiom_node_t * parent_node); |
| |
| /** |
| * Create RequestedUnAttachedReference element. |
| * @param env pointer to environment struct |
| * @param wst_version integer representing wst version |
| * @param parent_node pointer to parent axiom node |
| * @returns RequestedUnAttachedReference element or NULL if error occurred. |
| */ |
| AXIS2_EXTERN axiom_node_t *AXIS2_CALL |
| trust_util_create_req_unattached_reference_element( |
| const axutil_env_t * env, |
| const int version, |
| axiom_node_t * parent_node); |
| |
| /** |
| * Create EncryptedData element. |
| * @param env pointer to environment struct |
| * @param wst_version integer representing wst version |
| * @param parent_node pointer to parent axiom node |
| * @param enc_data encrypted data string |
| * @returns EncryptedData element or NULL if error occurred. |
| */ |
| AXIS2_EXTERN axiom_node_t *AXIS2_CALL |
| trust_util_create_encrypted_data_element( |
| const axutil_env_t * env, |
| int wst_version, |
| axiom_node_t * parent_node, |
| axis2_char_t * enc_data); |
| |
| /** |
| * Create RenewTarget element. |
| * @param env pointer to environment struct |
| * @param wst_version integer representing wst version |
| * @param parent_node pointer to parent axiom node |
| * @param token_renew_pending_node |
| * @returns RenewTarget element or NULL if error occurred. |
| */ |
| AXIS2_EXTERN axiom_node_t *AXIS2_CALL |
| trust_util_create_renew_traget_element( |
| const axutil_env_t * env, |
| int wst_version, |
| axiom_node_t * parent_node, |
| axiom_node_t * token_renew_pending_node); |
| |
| /** |
| * Create AllowPostdating element. |
| * @param env pointer to environment struct |
| * @param wst_version integer representing wst version |
| * @param parent_node pointer to parent axiom node |
| * @returns AllowPostdating element or NULL if error occurred. |
| */ |
| AXIS2_EXTERN axiom_node_t *AXIS2_CALL |
| trust_util_create_allow_postdating_element( |
| const axutil_env_t * env, |
| int wst_version, |
| axiom_node_t * parent_node); |
| |
| /** |
| * Create Renewing element. |
| * @param env pointer to environment struct |
| * @param wst_version integer representing wst version |
| * @param parent_node pointer to parent axiom node |
| * @param allow_flag |
| * @param ok_flag |
| * @returns Renewing element or NULL if error occurred. |
| */ |
| AXIS2_EXTERN axiom_node_t *AXIS2_CALL |
| trust_util_create_renewing_element( |
| const axutil_env_t * env, |
| int wst_version, |
| axiom_node_t * parent_node, |
| trust_allow_t allow_flag, |
| trust_ok_t ok_flag); |
| |
| /** |
| * Create CancelTarget element. |
| * @param env pointer to environment struct |
| * @param wst_version integer representing wst version |
| * @param parent_node pointer to parent axiom node |
| * @param token_cancel_pending_node |
| * @returns CancelTarget element or NULL if error occurred. |
| */ |
| AXIS2_EXTERN axiom_node_t *AXIS2_CALL |
| trust_util_create_cancel_target_element( |
| const axutil_env_t * env, |
| int wst_version, |
| axiom_node_t * parent_node, |
| axiom_node_t * token_cancel_pending_node); |
| |
| /** |
| * Create Status element for validation response. |
| * @param env pointer to environment struct |
| * @param wst_version integer representing wst version |
| * @param parent_node pointer to parent axiom node |
| * @param token_cancel_pending_node |
| * @returns Status element or NULL if error occurred. |
| */ |
| AXIS2_EXTERN axiom_node_t *AXIS2_CALL |
| trust_util_create_validation_response_element( |
| const axutil_env_t * env, |
| axiom_node_t * parent_node, |
| int wst_version, |
| axis2_char_t * code, |
| axis2_char_t * reason); |
| |
| /** |
| * Returns the namespace uri of WST according to the version. |
| * @param env pointer to environment struct |
| * @param wst_version integer representing wst version |
| * @returns namespace uri according to version. |
| */ |
| AXIS2_EXTERN axis2_char_t *AXIS2_CALL |
| trust_util_get_wst_ns( |
| const axutil_env_t * env, |
| int wst_version); |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| #endif /*TRUST_UTIL_H */ |