rampartc-src-1.3.0/0000755000076500007650000000000011202454500013754 5ustar shankarshankarrampartc-src-1.3.0/ChangeLog0000644000076500007650000000321311202453435015533 0ustar shankarshankarRampart/C 1.3.0 * WS-Secure Conversation Language support * WS-Trust Language support * Rahas module to give STS support to a service * Rampart functionality and Rampart module are splitted into two libraries * PKCS12 Keystore support * Security Policy 1.2 support * Memory leak fixes * Many bug fixes --Rampart-C team 27 May 2009 Rampart/C 1.2.0 * WS-Secure Conversation Language support (Experimental) * WS-Trust Language support (Experimental) * SAML 1.1 Support * Memory leak fixes * Many bug fixes --Rampart-C team 23 Apr 2008 Rampart/C 1.1.0 * MAC support with HMAC-SHA1 * Derrived key encryption * Derived key signing * Symmetric policy bindings * New security header processor based on SOAP header layout * Security policy validator * Extensible Replay detection module * Signature confirmation support * Support for thumb prints * Easy to use deployment scripts * Memory leak fixes * Many bug fixes --Rampart-C team 16 Jan 2008 Rampart/C 1.0.0 * WS-Security Policy (spec 1.1) based configurations * Replay detection support * Improvements to the context model * Authentication module implementation * Credentials module implementation * Impirovements to Key/Certificate loading mechanisms * Easy to use deployment scripts * Memory leak fixes * Many bug fixes --Rampart-C team 05 Oct 2007 Rampart/C 0.90 * Initial release * Usernametoken support * Timestamp support * Samples for clients and callbacks --Rampart-C team 25 Sept 2007 rampartc-src-1.3.0/include/0000755000076500007650000000000011202454475015412 5ustar shankarshankarrampartc-src-1.3.0/include/trust_token.h0000644000076500007650000002620211202453410020132 0ustar shankarshankar/* * 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_TOKEN_H #define TRUST_TOKEN_H /** * @file trust_token.h * @brief Holds function declarations and data for token */ #include #include #include #ifdef __cplusplus extern "C" { #endif /* Security token states. */ typedef enum { ISSUED = 1, EXPIRED, CANCELED, RENEWED }trust_token_state_t; typedef struct trust_token trust_token_t; /** *Create trust token with given id, token node and life element data *@param env const pointer to axutil environment *@param id Token identifier *@param toke_node Actual token axiom node *@param life_node Life axiom node containing created and expire dates *@returns pointer to trust_token_t */ AXIS2_EXTERN trust_token_t* AXIS2_CALL trust_token_create( const axutil_env_t *env, axis2_char_t *id, axiom_node_t *token_node, axiom_node_t *life_node); /** *Create trust token with given id, token node, created date and expire date *@param env const pointer to axutil environment *@param id Token identifier *@param toke_node Actual token axiom node *@param created Date which token is created *@param expire Date which token will expire *@returns pointer to trust_token_t */ AXIS2_EXTERN trust_token_t* AXIS2_CALL trust_token_create_with_dates( const axutil_env_t *env, axis2_char_t *id, axiom_node_t *token_node, axutil_date_time_t *created, axutil_date_time_t *expire); /** *Process the life element of the token which represent by the following xml format *assign values to related fields. * * ... * ... * *@param env const pointer to axutil environment *@param life_node Axiom node containing created and expire dates *@param token Trust token containing token data *@returns status of the life element processing */ AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_token_process_life_elem( const axutil_env_t *env, axiom_node_t *life_node, trust_token_t *token); /** *Get the change status of trust token *@param env const pointer to axutil environment *@param token Trust token structure *@returns axis2_bool_t whether the token is changed or not */ AXIS2_EXTERN axis2_bool_t AXIS2_CALL trust_token_is_changed( const axutil_env_t *env, trust_token_t *token); /** *Set the change status of trust token *@param env const pointer to axutil environment *@param token Trust token structure *@param changed Bollean value representing the if token is changed *@returns axis2_status_t whether the operation is successful or not */ AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_token_set_changed( const axutil_env_t *env, trust_token_t *token, axis2_bool_t changed); /** *Get the state of trust token *@param env const pointer to axutil environment *@param token Trust token structure *@returns trust_token_state_t token's state can be ISSUED, EXPIRED, CANCELLED, RENEWED */ AXIS2_EXTERN trust_token_state_t AXIS2_CALL trust_token_get_state( const axutil_env_t *env, trust_token_t *token); /** *Set the state of trust token *@param env const pointer to axutil environment *@param token Trust token structure *@param state State of the trust token *@returns axis2_status_t whether the set operation is successful or not */ AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_token_set_state( const axutil_env_t *env, trust_token_t *token, trust_token_state_t state); /** *Get the actual token om node of trust token *@param env const pointer to axutil environment *@param token Trust token structure *@returns axiom_node_t axiom node pointer for token */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL trust_token_get_token( const axutil_env_t *env, trust_token_t *token); /** *Set the actual token om node of trust token *@param env const pointer to axutil environment *@param token Trust token structure *@param token_node axiom node pointer for token *@returns axis2_status_t whether the set operation is successful or not */ AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_token_set_token( const axutil_env_t *env, trust_token_t *token, axiom_node_t *token_node); /** *Get the identifier of trust token *@param env const pointer to axutil environment *@param token Trust token structure *@returns axis2_char_t identifier string of token */ AXIS2_EXTERN axis2_char_t* AXIS2_CALL trust_token_get_id( const axutil_env_t *env, trust_token_t *token); /** *Get the actual previous token om node of trust token *@param env const pointer to axutil environment *@param token Trust token structure *@returns axiom_node_t axiom node pointer for previous token */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL trust_token_get_previous_token( const axutil_env_t *env, trust_token_t *token); /** *Set the actual token om node of trust token's previous token *@param env const pointer to axutil environment *@param token Trust token structure *@param prev_token axiom node pointer for previous token *@returns axis2_status_t whether the set operation is successful or not */ AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_token_set_previous_token( const axutil_env_t *env, trust_token_t *token, axiom_node_t *prev_token); /* ** * @return Returns the secret. public byte[] getSecret() { return secret; } */ /** * @param secret The secret to set. public void setSecret(byte[] secret) { this.secret = secret; }*/ /** *Get the attached reference of trust token *@param env const pointer to axutil environment *@param token Trust token structure *@returns axiom_node_t axiom node pointer for attached reference */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL trust_token_get_attached_reference( const axutil_env_t *env, trust_token_t *token); /** *Set the attached reference of trust token *@param env const pointer to axutil environment *@param token Trust token structure *@param attached_reference axiom node pointer for attached reference *@returns axis2_status_t whether the set operation is successful or not */ AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_token_set_attached_reference( const axutil_env_t *env, trust_token_t *token, axiom_node_t *attached_reference); /** *Get the unattached reference of trust token *@param env const pointer to axutil environment *@param token Trust token structure *@returns axiom_node_t axiom node pointer for unattached reference */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL trust_token_get_unattached_reference( const axutil_env_t *env, trust_token_t *token); /** *Set the unattached reference of trust token *@param env const pointer to axutil environment *@param token Trust token structure *@param attached_reference axiom node pointer for unattached reference *@returns axis2_status_t whether the set operation is successful or not */ AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_token_set_unattached_reference( const axutil_env_t *env, trust_token_t *token, axiom_node_t *unattached_reference); /** *Get the created date of trust token *@param env const pointer to axutil environment *@param token Trust token structure *@returns axutil_date_time_t ceated date */ AXIS2_EXTERN axutil_date_time_t* AXIS2_CALL trust_token_get_created( const axutil_env_t *env, trust_token_t *token); /** *Set the created date of trust token *@param env const pointer to axutil environment *@param token Trust token structure *@param created date which token is created *@returns axis2_status_t whether the set operation is successful or not */ AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_token_set_created( const axutil_env_t *env, trust_token_t *token, axutil_date_time_t *created); /** *Get the expire date of trust token *@param env const pointer to axutil environment *@param token Trust token structure *@returns axutil_date_time_t expire date */ AXIS2_EXTERN axutil_date_time_t* AXIS2_CALL trust_token_get_expires( const axutil_env_t *env, trust_token_t *token); /** *Set the expire date of trust token *@param env const pointer to axutil environment *@param token Trust token structure *@param expire Expire date of token *@returns axis2_status_t whether the set operation is successful or not */ AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_token_set_expires( const axutil_env_t *env, trust_token_t *token, axutil_date_time_t *expire); /** *Get the issuer's address of token *@param env const pointer to axutil environment *@param token Trust token structure *@returns axis2_char_t* issuer's address */ AXIS2_EXTERN axis2_char_t* AXIS2_CALL trust_token_get_issuer_address( const axutil_env_t *env, trust_token_t *token); /** *Set the issuer's address of token *@param env const pointer to axutil environment *@param token Trust token structure *@param issuer_address issure's address string *@returns axis2_status_t whether the set operation is successful or not */ AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_token_set_issuer_address( const axutil_env_t *env, trust_token_t *token, axis2_char_t *issuer_address); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_token_process_life_elem( const axutil_env_t *env, axiom_node_t *life_node, trust_token_t *token); #ifdef __cplusplus } #endif #endif /*TRUST_TOKEN_H*/ rampartc-src-1.3.0/include/rampart_issued.h0000644000076500007650000000316111202453410020572 0ustar shankarshankar/* * 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_ISSUED_H #define RAMPART_ISSUED_H #include #include #ifdef __cplusplus extern "C" { #endif /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @param sec_node * @param sign_parts * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_issued_supporting_token_build( rampart_context_t *rampart_context, const axutil_env_t *env, axiom_node_t *sec_node, axutil_array_list_t *sign_parts); #ifdef __cplusplus } #endif #endif rampartc-src-1.3.0/include/oxs_xml_key_info_builder.h0000644000076500007650000000420511202453410022632 0ustar shankarshankar/* * 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 OXS_XML_KEY_INFO_BUILDER_H #define OXS_XML_KEY_INFO_BUILDER_H /** * @file oxs_xml_key_info_builder.h * @brief Process elements available under ds:KeyInfo */ /** * @defgroup oxs_xml_key_info_builder XML Eky Information Builder * @ingroup oxs * @{ */ #include #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif typedef enum{ OXS_KIBP_UNKNOWN = 0, OXS_KIBP_X509DATA_X509CERTIFICATE, OXS_KIBP_X509DATA_ISSUER_SERIAL, }oxs_key_info_build_pattern_t; AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_xml_key_info_build(const axutil_env_t *env, axiom_node_t *parent, oxs_x509_cert_t *cert, oxs_key_info_build_pattern_t pattern); AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_xml_key_info_build_x509_data_x509_certificate(const axutil_env_t *env, axiom_node_t *parent, oxs_x509_cert_t *cert); AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_xml_key_info_build_x509_data_issuer_serial(const axutil_env_t *env, axiom_node_t *parent, oxs_x509_cert_t *cert); /** @} */ #ifdef __cplusplus } #endif #endif /* OXS_XML_KEY_INFO_BUILDER_H */ rampartc-src-1.3.0/include/openssl_sign.h0000644000076500007650000000350011202453410020250 0ustar shankarshankar/* * Copyright 2003-2004 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. */ #include #include #include #include #include /** * @file openssl_sign.h * @brief The signature functions in openssl wrapper */ #ifndef OPENSSL_SIGN_H #define OPENSSL_SIGN_H #ifdef __cplusplus extern "C" { #endif /** @defgroup openssl_sign OpenSSL Signatue * @ingroup openssl * @{ */ /** * Signs a content a @input_buf using the private key @prvkey * The result would be placed in the @output_buf */ AXIS2_EXTERN int AXIS2_CALL openssl_sig_sign(const axutil_env_t *env, openssl_pkey_t *prvkey, oxs_buffer_t *input_buf, oxs_buffer_t *output_buf); /** * Verifies a signature placed in @sig_buf with * the content placed in the @input_buf * using the public key @pubkey */ AXIS2_EXTERN axis2_status_t AXIS2_CALL openssl_sig_verify(const axutil_env_t *env, openssl_pkey_t *pubkey, oxs_buffer_t *input_buf, oxs_buffer_t *sig_buf); /** @} */ #ifdef __cplusplus } #endif #endif /* OPENSSL_SIGN_H */ rampartc-src-1.3.0/include/rampart_signature.h0000644000076500007650000000471011202453410021300 0ustar shankarshankar/* * Copyright 2003-2004 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. */ #include #include #include #include #include #include /** * @file rampart_signature.h * @brief sign a SOAP message */ /** * @defgroup rampart_signature Signature * @ingroup rampart_utils * @{ */ #ifndef RAMPART_SIGNATURE_H #define RAMPART_SIGNATURE_H #ifdef __cplusplus extern "C" { #endif /** * Build the signature confirmation element in the security header * @param env pointer to environment struct * @param msg_ctx message context * @param rampart_context The rampart context * @param sec_node The security element * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_sig_confirm_signature(const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_node_t *sec_node); /** * Sign a message depending on the security policies * @param env pointer to environment struct * @param msg_ctx message context * @param rampart_context The rampart context * @param soap_envelope The SOAP envelope * @param sec_node The security element * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_sig_sign_message(const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_soap_envelope_t *soap_envelope, axiom_node_t *sec_node, axutil_array_list_t *sign_parts_list); /* @} */ #ifdef __cplusplus } #endif #endif /* !RAMPART_SIGNATURE_H */ rampartc-src-1.3.0/include/saml_req.h0000644000076500007650000011314511202453410017357 0ustar shankarshankar/* * 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 SAML_REQ_H #define SAML_REQ_H #include #include #include #include #include #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif #define SAML_REQUEST_ID "RequestID" #define SAML_SIGNATURE "Signature" #define SAML_SUBJECT_QUERY "SubjectQuery" #define SAML_ATTRIBUTE_QUERY "AttributeQuery" #define SAML_AUTHENTICATION_QUERY "AuthenticationQuery" #define SAML_AUTHORIZATION_DECISION_QUERY "AuthorizationDecisionQuery" #define SAML_ASSERTION_ID_REF "AssertionIDReference" #define SAML_ASSERTION_ARTIFACT "AssertionArtifact" #define SAML_RESPOND_WITH "RespondWith" #define SAML_ATTRIBUTE_DESIGNATOR "AttributeDesignator" #define SAML_RESPONSE_ID "ResponceID" #define SAML_IN_RESPONSE_TO "InResponseTo" #define SAML_RECEPIENT "Recipient" #define SAML_STATUS_CODE "StatusCode" #define SAML_STATUS_MESSAGE "StatusMessage" #define SAML_STATUS_DETAIL "StatusDetail" #define SAML_STATUS_VALUE "Value" #define SAML_STATUS "Status" #define SAML_PROTOCOL_NMSP "urn:oasis:names:tc:SAML:1.0:protocol" #define SAML_PROTOCOL_PREFIX "samlp" #define SAML_REQUEST "Request" #define SAML_RESPONSE "Response" /*A code representing the status of the corresponding request*/ /* * saml artifact for saml passive client assertion identifiers */ typedef struct saml_artifact { axis2_char_t *artifact; }saml_artifact_t; /* * saml status : defines the status returned in saml response */ typedef struct saml_status { axutil_qname_t *status_value; axis2_char_t *status_code; axis2_char_t *status_msg; axiom_node_t *status_detail; }saml_status_t; /* * the saml query for requesting required saml assertion */ typedef struct saml_query { axis2_char_t *type; void *query; }saml_query_t; typedef struct saml_subject_query { saml_subject_t *subject; }saml_subject_query_t; /* * saml authentication query : for requesting authentication details */ typedef struct saml_authentication_query { saml_subject_t *subject; /* A URI reference that specifies the type of authentication that took place */ axis2_char_t *auth_method; }saml_authentication_query_t; /* * saml qttribute query : for requesting the attributes */ typedef struct saml_attr_query { saml_subject_t *subject; axis2_char_t *resource; axutil_array_list_t *attr_desigs; }saml_attr_query_t; /* * saml authorization decision query : for requesting information for asserting authorization decisions */ typedef struct saml_autho_decision_query { saml_subject_t *subject; axis2_char_t *resource; /* One or more saml actions*/ axutil_array_list_t *saml_actions; saml_evidence_t *evidence; }saml_autho_decision_query_t; typedef struct saml_request { /* unique request id*/ axis2_char_t *request_id; /* major version */ axis2_char_t *major_version; /* minor version */ axis2_char_t *minor_version; /* time instant of the issue */ axutil_date_time_t *issue_instant; /*optional*/ oxs_sign_ctx_t *sig_ctx; /* An array for QNames * specifies the type of statement the SAML relying party wants from the * SAML authority* */ axutil_array_list_t *saml_responds; /*To request assrtions by means of ID one or more*/ axutil_array_list_t *saml_asserion_id_ref; /* saml artifacts for saml passive client*/ axutil_array_list_t *saml_artifacts; saml_query_t *query; /*reference to the saml request node*/ axiom_node_t *original_xml; /*reference to the saml response node*/ axiom_node_t *signature; }saml_request_t; typedef struct saml_response { /*sunique saml response id*/ axis2_char_t *response_id; /*major version*/ axis2_char_t *major_version; /*minor version*/ axis2_char_t *minor_version; /*saml request party*/ axis2_char_t *recepient; /*saml request identifier for the specific saml response*/ axis2_char_t *request_response_id; /*time instant for the respone*/ axutil_date_time_t *issue_instant; /* information about the signing */ oxs_sign_ctx_t *sig_ctx; saml_status_t *status; axutil_array_list_t *saml_assertions; /* reference to the saml response node*/ axiom_node_t *original_xml; /*reference to the saml signature node*/ axiom_node_t *signature; }saml_response_t; /* request */ /* * Creates a saml request. * @param env pointer to environment struct */ AXIS2_EXTERN saml_request_t *AXIS2_CALL saml_request_create(const axutil_env_t *env); /* * Free a saml request * @param env pointer to environment struct */ AXIS2_EXTERN void AXIS2_CALL saml_request_free(saml_request_t *request, const axutil_env_t *env); /* * Build the saml request from a axiom node. * @param request request to be populated * @param env pointer to environment struct */ AXIS2_EXTERN int AXIS2_CALL saml_request_build(saml_request_t *request, axiom_node_t *node, const axutil_env_t *env); /* * Serialize a saml request to a om node. * @param request request to be serialized * @param parent if specified created node will be a child of this * @param env pointer to environment struct */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL saml_request_to_om(saml_request_t *request, axiom_node_t *parent, const axutil_env_t *env); /* * Return the unique ID of the request. * @param request SAML Request object * @param env pointer to environment struct */ AXIS2_EXTERN axis2_char_t* AXIS2_CALL saml_request_get_id(saml_request_t *request, const axutil_env_t *env); /* * Set the information required to sign the message. * @param assertion SAML Request object * @param env pointer to environment struct * @param sign_ctx oxs_sign_ctx_t object which contains the sign information */ AXIS2_EXTERN int AXIS2_CALL saml_request_set_signature(saml_request_t *request, const axutil_env_t *env, oxs_sign_ctx_t *sig_ctx); /* * Set the default information required to sign the message. * @param response SAML response object * @param env pointer to environment struct * @param sign_ctx oxs_sign_ctx_t object which contains the sign information * oxs_sign_ctx should contain the key info and the certification info. * all other information are set to default settings. */ AXIS2_EXTERN void AXIS2_CALL saml_request_set_default_signature(saml_request_t *request, const axutil_env_t *env, oxs_sign_ctx_t *sig_ctx); /* * Remove the information set for signing or verifying the Request. * @param assertion SAML Request object * @param env pointer to environment struct */ AXIS2_EXTERN int AXIS2_CALL saml_request_unsign(saml_request_t *request, const axutil_env_t *env); /* * Sign the Request using the information set in the * saml_request_set_default_signature or saml_request_set_signature method. * @param assertion SAML Request object * @param env pointer to environment struct */ AXIS2_EXTERN int AXIS2_CALL saml_request_sign(saml_request_t *request, axiom_node_t *node, const axutil_env_t *env); /* * Set the minor version of the Request * @param request SAML Request object * @param env pointer to environment struct * @param version minor version number */ AXIS2_EXTERN int AXIS2_CALL saml_request_set_minor_version(saml_request_t *request, const axutil_env_t *env, int version); /* * Set the major version of the assertion * @param assertion SAML Request object * @param env pointer to environment struct * @param version major version number */ AXIS2_EXTERN int AXIS2_CALL saml_request_set_major_version(saml_request_t *request, const axutil_env_t *env, int version); /* * Set the issue instant of the Request * @param request SAML Request object * @param env pointer to environment struct * @param time time instant of the saml issue */ AXIS2_EXTERN int AXIS2_CALL saml_request_set_issue_instant(saml_request_t *request, const axutil_env_t *env, axutil_date_time_t *date_time); /* * Return the time instant of the Request * @param request SAML Request object * @param env pointer to the environment struct */ AXIS2_EXTERN axutil_date_time_t* AXIS2_CALL saml_request_get_issue_instant(saml_request_t *request, const axutil_env_t *env); /* * Set the set of qname respond with references in Request * @param request SAML Request object * @param responds list of qname objects * @param env pointer to the environment struct */ AXIS2_EXTERN int AXIS2_CALL saml_request_set_respond_withs(saml_request_t *request, const axutil_env_t *env, axutil_array_list_t *responds); /* * Return the set of qname respond with references in Request * @param request SAML Request object * @param env pointer to the environment struct */ AXIS2_EXTERN axutil_array_list_t* AXIS2_CALL saml_request_get_respond_withs(saml_request_t *request, const axutil_env_t *env); /* * Add a qname object respond with to the Request * @param request SAML Request object * @param env pointer to the environment struct */ AXIS2_EXTERN int AXIS2_CALL saml_request_add_respond_with(saml_request_t *request, const axutil_env_t *env, axutil_qname_t *respond); /* * Remove a qname object at the specified index * @param request SAML Request object * @index the specific index to remove * @param env pointer to the environment struct */ AXIS2_EXTERN int AXIS2_CALL saml_request_remove_respond_with(saml_request_t *request, const axutil_env_t *env, int index); /* * Set the SAML Query of SAML Request. * @param request SAML Request object * @param query SAML Query object * @param env pointer to the environment struct */ AXIS2_EXTERN int AXIS2_CALL saml_request_set_query(saml_request_t *request, const axutil_env_t *env, saml_query_t *query); /* * Returns the SAML Query of SAML Request. * @param request SAML Request * @param env pointer to the environemt struct */ AXIS2_EXTERN saml_query_t* AXIS2_CALL saml_request_get_query(saml_request_t *request, const axutil_env_t *env); /* * Set the set of Identifer References of the Request. * @param request SAML Request * @param id_refs list of Identifier references * @param env pointer to the environment struct */ AXIS2_EXTERN int AXIS2_CALL saml_request_set_id_refs(saml_request_t *request, const axutil_env_t *env, axutil_array_list_t *id_refs); /* * Returne the list of Identifier references of the Request * @param request SAML Request * @param env pointer to the environment struct */ AXIS2_EXTERN axutil_array_list_t* AXIS2_CALL saml_request_get_id_refs(saml_request_t *request, const axutil_env_t *env); /* * Add an Id Reference to the SAML Request. * @param request SAML Request * @param id_references list of Id references * @param env pointer to the environment struct */ AXIS2_EXTERN int AXIS2_CALL saml_request_add_id_refs(saml_request_t *request, const axutil_env_t *env, axis2_char_t *id_reference); /* * Remove an Id Reference at the specified index. * @param request SAML Request * @param index the specific to remove * @param env pointer to the environment struct */ AXIS2_EXTERN int AXIS2_CALL saml_request_remove_id_refs(saml_request_t *request, const axutil_env_t *env, int index); /* * Set the set of SAML Assertion Artifact objects of the Request. * @param request SAML Request * @param artifacts list of SAML Artifact objects * @param env pointer to the environment struct */ AXIS2_EXTERN int AXIS2_CALL saml_request_set_artifacts(saml_request_t *request, const axutil_env_t *env, axutil_array_list_t *artifacts); /* * Returns the list of SAML Assertion Artifacts of the Request * @param request SAML Request * @param env pointer to the environment struct */ AXIS2_EXTERN axutil_array_list_t* AXIS2_CALL saml_request_get_artifacts(saml_request_t *request, const axutil_env_t *env); /* * Add a SAML Assertion Artifact to the Request * @param request SAML Request * @param artifact SAML Assertion Artifact * @param env pointer to the environment struct */ AXIS2_EXTERN int AXIS2_CALL saml_request_add_artifact(saml_request_t *request, const axutil_env_t *env, saml_artifact_t *artifact); /* * Remove a SAML Assertion Artifact at the specified index * @param request SAML Request * @param index specific index to remove * @param env pointer to the environment struct */ AXIS2_EXTERN int AXIS2_CALL saml_request_remove_artifact(saml_request_t *request, const axutil_env_t *env, int index); /* * Check the validity of the recieved Request * @param request SAML Request * @param env pointer to the environment struct */ AXIS2_EXTERN axis2_bool_t AXIS2_CALL saml_request_check_validity(saml_request_t *request, const axutil_env_t *env); /* * Creates a saml Response. * @param env pointer to environment struct */ AXIS2_EXTERN saml_response_t* saml_response_create(const axutil_env_t *env); /* * Free a saml Response * @param env pointer to environment struct */ AXIS2_EXTERN void saml_response_free(saml_response_t *response, const axutil_env_t *env); /* * Build the saml response from a axiom node. * @param request response to be populated * @param env pointer to environment struct */ AXIS2_EXTERN int AXIS2_CALL saml_response_build(saml_response_t *response, axiom_node_t *node, const axutil_env_t *env); /* * Serialize a saml response to a om node. * @param request response to be serialized * @param parent if specified created node will be a child of this * @param env pointer to environment struct */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL saml_response_to_om(saml_response_t *response, axiom_node_t *parent, const axutil_env_t *env); /* * Returns the unique ID of the response. * @param request SAML response object * @param env pointer to environment struct */ AXIS2_EXTERN axis2_char_t* AXIS2_CALL saml_response_get_id(saml_response_t *response, const axutil_env_t *env); /* * Set the information required to sign the message. * @param assertion SAML response object * @param env pointer to environment struct * @param sign_ctx oxs_sign_ctx_t object which contains the sign information */ AXIS2_EXTERN int AXIS2_CALL saml_response_set_signature(saml_response_t *response, const axutil_env_t *env, oxs_sign_ctx_t *sig_ctx); AXIS2_EXTERN int AXIS2_CALL saml_response_unset_signature(saml_response_t *response, const axutil_env_t *env); /* * Sign the response using the information set in the * saml_response_set_default_signature or saml_response_set_signature method. * @param response SAML response object * @param node axiom node to of the response * @param env pointer to environment struct */ AXIS2_EXTERN int AXIS2_CALL saml_response_sign(saml_response_t *response, axiom_node_t *node, const axutil_env_t *env); /* * Set the default information required to sign the message. * @param response SAML response object * @param env pointer to environment struct * @param sign_ctx oxs_sign_ctx_t object which contains the sign information * oxs_sign_ctx should contain the key info and the certification info. * all other information are set to default settings. */ AXIS2_EXTERN void AXIS2_CALL saml_response_set_default_signature(saml_response_t *response, const axutil_env_t *env, oxs_sign_ctx_t *sig_ctx); /* * Set the minor version of the response * @param response SAML response object * @param env pointer to environment struct * @param version minor version number */ AXIS2_EXTERN int AXIS2_CALL saml_response_set_minor_version(saml_response_t *response, const axutil_env_t *env, int version); /* * Set the major version of the response * @param response SAML response object * @param env pointer to environment struct * @param version major version number */ AXIS2_EXTERN int AXIS2_CALL saml_response_set_major_version(saml_response_t *response, const axutil_env_t *env, int version); /* * Set the issue instant of the response * @param response SAML response object * @param env pointer to environment struct * @param time time instant of the saml issue */ AXIS2_EXTERN int AXIS2_CALL saml_response_set_issue_instant(saml_response_t *response, const axutil_env_t *env, axutil_date_time_t *date_time); /* * Returns the time instant of the response * @param response SAML response object * @param env pointer to the environment struct */ AXIS2_EXTERN axutil_date_time_t* AXIS2_CALL saml_response_get_issue_instant(saml_response_t *response, const axutil_env_t *env); /* * Set the SAML recepient of the response * @param response SAML response * @param recepient SAML recepient identifier * @param env pointer to the environment struct */ AXIS2_EXTERN int AXIS2_CALL saml_response_set_recepient(saml_response_t *response, const axutil_env_t *env, axis2_char_t *recepient); /* * Returns the SAML response recepient. * @param response SAML response * @param env pointer to the environment struct */ AXIS2_EXTERN axis2_char_t* AXIS2_CALL saml_response_get_recepient(saml_response_t *response, const axutil_env_t *env); /* * Set the status of the SAML response. * @param response SAML response * @param status SAML status * @param env pointer to the environment struct */ AXIS2_EXTERN int AXIS2_CALL saml_response_set_status(saml_response_t *response, const axutil_env_t *env, saml_status_t *status); /* * Returns the status of the recieved SAML response * @param response SAML response * @param env pointer to the environment struct */ AXIS2_EXTERN saml_status_t* AXIS2_CALL saml_response_get_status(saml_response_t *response, const axutil_env_t *env); /* * Set the set of SAML Assertion of the SAML response * @param response SAML response * @param assertions list of SAML Assertions * @param env pointer to the environment struct */ AXIS2_EXTERN int AXIS2_CALL saml_response_set_assertions(saml_response_t *response, const axutil_env_t *env, axutil_array_list_t *assertions); /* * Returns the set of SAML Assertions of response * @param response SAML response * @param env pointer to the environment struct */ AXIS2_EXTERN axutil_array_list_t* AXIS2_CALL saml_response_get_assertions(saml_response_t *response, const axutil_env_t *env); /* * Add a SAML assertion to the response * @param response SAML response * @param assertion SAML Assertion * @param env pointer to the environment struct */ AXIS2_EXTERN int AXIS2_CALL saml_response_add_assertion(saml_response_t *response, const axutil_env_t *env, saml_assertion_t *assertion); /* * Remove a SAML assertion at the specified index * @param response SAML response * @param index the specific index to remove * @param env pointer to the environment struct */ AXIS2_EXTERN int AXIS2_CALL saml_response_remove_assertion(saml_response_t *response, const axutil_env_t *env, int index); /* * Set the request reference of the SAML response * @param response SAML response * @param request_response request reference * @param env pointer to the environment struct */ AXIS2_EXTERN int AXIS2_CALL saml_response_set_in_reponses_to(saml_response_t *response, const axutil_env_t *env, axis2_char_t *request_response); /* * Creates a saml query. * @param env pointer to environment struct */ AXIS2_EXTERN saml_query_t* AXIS2_CALL saml_query_create(const axutil_env_t *env); /* * Build the saml query from an axiom node. * @param query SAML query to be populated * @param node axiom node of SAML query * @param env pointer to environment struct */ AXIS2_EXTERN int AXIS2_CALL saml_query_build(saml_query_t *query, axiom_node_t *node, const axutil_env_t *env); /* * Serialize a saml query to a om node. * @param query SAML response to be serialized * @param parent if specified created node will be a child of this * @param env pointer to environment struct */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL saml_query_to_om(saml_query_t *query, axiom_node_t *parent, const axutil_env_t *env); /* * Free a saml query * @param env pointer to environment struct */ AXIS2_EXTERN void AXIS2_CALL saml_query_free(saml_query_t *query, const axutil_env_t *env); /* * Creates a saml subject query. * @param env pointer to environment struct */ AXIS2_EXTERN saml_subject_query_t* AXIS2_CALL saml_subject_query_create(const axutil_env_t *env); /* * Free a saml subject query * @param env pointer to environment struct */ AXIS2_EXTERN void AXIS2_CALL saml_subject_query_free(saml_subject_query_t* subject_query, const axutil_env_t *env); /* * Build the saml subject query from an axiom node. * @param query SAML subject query to be populated * @param node axiom node of SAML subject query * @param env pointer to environment struct */ AXIS2_EXTERN int AXIS2_CALL saml_subject_query_build(saml_subject_query_t* subject_query, axiom_node_t *node, const axutil_env_t *env); /* * Serialize a saml subject query to a om node. * @param query saml subject query to be serialized * @param parent if specified created node will be a child of this * @param env pointer to environment struct */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL saml_subject_query_to_om(saml_subject_query_t *subject_query, axiom_node_t *parent, const axutil_env_t *env); /* * Creates a saml authentication query. * @param env pointer to environment struct */ AXIS2_EXTERN saml_authentication_query_t* AXIS2_CALL saml_authentication_query_create(const axutil_env_t *env); /* * Free a saml authentication query * @param env pointer to environment struct */ AXIS2_EXTERN void AXIS2_CALL saml_authentication_query_free(saml_authentication_query_t *authentication_query, const axutil_env_t *env); /* * Build the saml authentication query from an axiom node. * @param query SAML authentication query to be populated * @param node axiom node of SAML query * @param env pointer to environment struct */ AXIS2_EXTERN int AXIS2_CALL saml_authentication_query_build(saml_authentication_query_t* authentication_query, axiom_node_t *node, const axutil_env_t *env); /* * Serialize a saml authentication query to a om node. * @param authentication_query saml authentication query to be serialized * @param parent if specified created node will be a child of this * @param env pointer to environment struct */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL saml_authentication_query_to_om(saml_authentication_query_t *authentication_query, axiom_node_t *parent, const axutil_env_t *env); /* * Set authetication method of saml authentication query. * @param authentication_query saml authentication query * @param env pointer to environment struct * @param authentication_mtd required authentication method in the secifying query */ AXIS2_EXTERN int AXIS2_CALL saml_auth_query_set_authentication_method( saml_authentication_query_t *authentication_query, const axutil_env_t *env, axis2_char_t *authentication_mtd); /* * Returns the authentication method of the saml authentication query. * @param authentication_query saml authentication query * @param env pointer to the environment struct */ AXIS2_EXTERN axis2_char_t * AXIS2_CALL saml_auth_query_get_authentication_method( saml_authentication_query_t *authentication_query, const axutil_env_t *env); /* * Creates a saml attribute query. * @param env pointer to environment struct */ AXIS2_EXTERN saml_attr_query_t* AXIS2_CALL saml_attr_query_create(const axutil_env_t *env); /* * Free a saml attribute query * @param env pointer to environment struct */ AXIS2_EXTERN void AXIS2_CALL saml_attr_query_free(saml_attr_query_t* attribute_query, const axutil_env_t *env); /* * Build the saml attribute query from an axiom node. * @param attribute_query SAML attribute query to be populated * @param node axiom node of SAML query * @param env pointer to environment struct */ AXIS2_EXTERN int AXIS2_CALL saml_attr_query_build(saml_attr_query_t* attribute_query, axiom_node_t *node, const axutil_env_t *env); /* * Serialize a saml attribute to a om node. * @param attribute_query saml attribute query to be serialized * @param parent if specified created node will be a child of this * @param env pointer to environment struct */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL saml_attr_query_to_om(saml_attr_query_t *attribute_query, axiom_node_t *parent, const axutil_env_t *env); /* * Returns the saml subject of the saml query. * @param query saml query * @param env pointer to the environment struct */ AXIS2_EXTERN saml_subject_t* AXIS2_CALL saml_query_get_subject(saml_query_t* query, const axutil_env_t *env); /* * Set the subject of a saml query. * @param query saml query * @param env pointer to the environment struct * @param subject saml subject */ AXIS2_EXTERN int AXIS2_CALL saml_query_set_subject(saml_query_t *query, const axutil_env_t *env, saml_subject_t *subject); /* * Set the type of the saml query. * @param query saml query * @param env pointer to the environment struct * @param type type of the saml query */ AXIS2_EXTERN int AXIS2_CALL saml_query_set_type(saml_query_t *query, const axutil_env_t *env, axis2_char_t *type); /* * Set the saml specific query object of saml query * @param query saml query * @param spec_query specific query object to be set as the saml query * @param type the type of the specifying query * spec_query can be any type of query defined in saml queries. * the specified saml queries, saml subject query, attribute query, * authentication query, athorization decision query */ AXIS2_EXTERN int AXIS2_CALL saml_query_set_query(saml_query_t *query, const axutil_env_t *env, void *spec_query, axis2_char_t *type); /* * Set the resource required of saml attribute query. * @param attr_query saml attribute query * @param env pointer to environment struct * @param resource specific saml resource */ AXIS2_EXTERN int AXIS2_CALL saml_attr_query_set_resource(saml_attr_query_t *attr_query, const axutil_env_t *env, axis2_char_t *resource); /* * Returns the saml resource required of saml attribute query. * @param attr_query saml attribute query * @param env pointer to environment struct */ AXIS2_EXTERN axis2_char_t* AXIS2_CALL saml_attr_query_get_resource(saml_attr_query_t *attr_query, const axutil_env_t *env); /* * Set a set of attribute designators of the saml attribute query. * @param env pointer to environment struct * @param saml_designators list of saml attribute designators */ AXIS2_EXTERN int AXIS2_CALL saml_attr_query_set_designators(saml_attr_query_t *attr_query, const axutil_env_t *env, axutil_array_list_t *saml_designators); /* * Returns the set of attribute designators of saml attribute query. * @param attr_query saml attribute query * @param env pointer to environment struct */ AXIS2_EXTERN axutil_array_list_t* AXIS2_CALL saml_attr_query_get_designators(saml_attr_query_t *attr_query, const axutil_env_t *env); /* * Add a saml attribute designator to the saml attribute query. * @param attr_query saml attribute query * @param env pointer to environment struct * @param desig saml attribute designator object */ AXIS2_EXTERN int AXIS2_CALL saml_attr_query_add_designators(saml_attr_query_t *attr_query, const axutil_env_t *env, saml_attr_desig_t *desig); /* * Remove saml attribute designator at the specified index. * @param attr_query saml attribute query * @param env pointer to environment struct * @param index the specified index to remove */ AXIS2_EXTERN int AXIS2_CALL saml_attr_query_remove_designator(saml_attr_query_t *attr_query, const axutil_env_t *env, int index); /* * Creates a saml authorization decision query. * @param env pointer to environment struct */ AXIS2_EXTERN saml_autho_decision_query_t* AXIS2_CALL saml_autho_decision_query_create(const axutil_env_t *env); /* * Free a saml authorizaion decision query * @param env pointer to environment struct */ AXIS2_EXTERN void AXIS2_CALL saml_autho_decision_query_free(saml_autho_decision_query_t* autho_decision_query, const axutil_env_t *env); /* * Build the saml authorization decision query from an axiom node. * @param query SAML authorization decision query to be populated * @param node axiom node of SAML authorization decision query * @param env pointer to environment struct */ AXIS2_EXTERN int AXIS2_CALL saml_autho_decision_query_build(saml_autho_decision_query_t* autho_decision_query, axiom_node_t *node, const axutil_env_t *env); /* * Serialize a saml authorization decision query to a om node. * @param autho_decision_query authorization decision query to be serialized * @param parent if specified created node will be a child of this * @param env pointer to environment struct */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL saml_autho_decision_query_to_om(saml_autho_decision_query_t *autho_decision_query, axiom_node_t *parent, const axutil_env_t *env); /* * Set the resource required of saml authorization decision query. * @param autho_dec_query saml authorization decision query * @param env pointer to environment struct * @param resource saml resource required */ AXIS2_EXTERN int AXIS2_CALL saml_autho_decision_query_set_resource( saml_autho_decision_query_t *autho_dec_query, const axutil_env_t *env, axis2_char_t *resource); /* * Returns the saml resource of saml authorization decision query. * @param autho_dec_query saml authorization decision query * @param env pointer to environment struct */ AXIS2_EXTERN axis2_char_t* AXIS2_CALL saml_autho_decision_query_get_resource(saml_autho_decision_query_t *autho_dec_query, const axutil_env_t *env); /* * Set a set of action of saml authorization decision query. * @param autho_dec_query saml authorization decision query * @param env pointer to the environment struct * @param actions list of saml action objects */ AXIS2_EXTERN int AXIS2_CALL saml_autho_decision_query_set_actions( saml_autho_decision_query_t *autho_dec_query, const axutil_env_t *env, axutil_array_list_t *actions); /* * Returns the set of actions of saml authorization decision query. * @param autho_dec_query saml authorization decision query * @param env envionment struct */ AXIS2_EXTERN axutil_array_list_t* AXIS2_CALL saml_autho_decision_query_get_actions( saml_autho_decision_query_t *autho_dec_query, const axutil_env_t *env); /* * Add a saml action to saml authorization decision query. * @param autho_dec_query saml authorization decision query * @param env pointer to environment struct * @param action saml action object */ AXIS2_EXTERN int AXIS2_CALL saml_autho_decision_query_add_action( saml_autho_decision_query_t *autho_dec_query, const axutil_env_t *env, saml_action_t *action); /* * Remove a saml action at the the specified index. * @param autho_dec_query saml authorization decision query * @param env pointer to environment struct * @param index specified index to remove */ AXIS2_EXTERN int AXIS2_CALL saml_autho_decision_remove_action(saml_autho_decision_query_t *autho_dec_query, const axutil_env_t *env, int index); /* * Set a saml evidence of the saml authorization decision query. * @param autho_dec_query saml authorization decision query * @param env pointer to environment struct * @param evidence saml evidence object */ AXIS2_EXTERN int AXIS2_CALL saml_autho_decision_query_set_evidence( saml_autho_decision_query_t *autho_dec_query, const axutil_env_t *env, saml_evidence_t *evidence); /* * Returns the saml evidence of saml authorization decision query. * @param autho_dec_query saml authorization decision query * @param env pointer to environment struct */ AXIS2_EXTERN saml_evidence_t* AXIS2_CALL saml_autho_decision_query_get_evidence( saml_autho_decision_query_t *autho_dec_query, const axutil_env_t *env); /* * Build the saml status from an axiom node. * @param query SAML status to be populated * @param node axiom node of SAML status * @param env pointer to environment struct */ AXIS2_EXTERN int AXIS2_CALL saml_status_build(saml_status_t *status, axiom_node_t *node, const axutil_env_t *env); /* * Serialize a saml status to a om node. * @param status saml status to be serialized * @param parent if specified created node will be a child of this * @param env pointer to environment struct */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL saml_status_to_om(saml_status_t *status, axiom_node_t *parent, const axutil_env_t *env); /* * Creates a saml status. * @param env pointer to environment struct */ AXIS2_EXTERN saml_status_t* AXIS2_CALL saml_status_create(const axutil_env_t *env); /* * Free a saml status * @param env pointer to environment struct */ AXIS2_EXTERN void saml_status_free(saml_status_t *status, const axutil_env_t *env); /* * Set the saml status value to be returned in saml status. * @param status saml status object * @param qname axutil qname object which specify saml status value * @param env pointer to environment struct */ AXIS2_EXTERN int AXIS2_CALL saml_status_set_status_value(saml_status_t *status, const axutil_env_t *env, axutil_qname_t *qname); /* * Returns the saml status value of saml status. * @param status saml status * @param env pointer to environment struct */ AXIS2_EXTERN axutil_qname_t* AXIS2_CALL saml_status_get_status_value(saml_status_t *status, const axutil_env_t *env); /* * Set the status message of saml status * @param status saml status object * @param env pointer to environment struct * @param msg status message to be set in saml status */ AXIS2_EXTERN int AXIS2_CALL saml_status_set_status_msg(saml_status_t *status, const axutil_env_t *env, axis2_char_t *msg); /* * Set the status code of saml status object. * @param status saml status object * @param env pointer to environment struct * @param code status code to be set in saml status */ AXIS2_EXTERN int AXIS2_CALL saml_status_set_status_code(saml_status_t *status, const axutil_env_t *env, axis2_char_t *code); /* * Returns the status message of saml status. * @param status saml status struct * @env pointer to environment struct */ AXIS2_EXTERN axis2_char_t* AXIS2_CALL saml_status_get_status_msg(saml_status_t *status, const axutil_env_t *env); /* * Set the saml status detail of saml status. * @param status saml status struct * @param det axiom node struct to be set as saml status detail * @param env pointer to environment struct */ AXIS2_EXTERN int AXIS2_CALL saml_status_set_status_detail(saml_status_t *status, axiom_node_t *det, const axutil_env_t *env); /* * Returns the saml status detail node of saml status * @param status saml status struct * @param env pointer to environment struct */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL saml_status_get_status_detail(saml_status_t *status, const axutil_env_t *env); /* * Creates a saml artifact. * @param env pointer to environment struct */ AXIS2_EXTERN saml_artifact_t* AXIS2_CALL saml_artifact_create(const axutil_env_t *env); /* * Free a saml artifact * @param env pointer to environment struct */ AXIS2_EXTERN void AXIS2_CALL saml_artifact_free(saml_artifact_t *artifact, const axutil_env_t *env); /* * Returns the data value of saml artifact. * @param artifact saml artifact srtuct * @param env pointer to environment struct */ AXIS2_EXTERN axis2_char_t* AXIS2_CALL saml_artifact_get_data(saml_artifact_t *artifact, const axutil_env_t *env); /* * Set data value of saml artifact. * @param artifact saml artifact * @param env pointer to environment struct * @data data value to be set in smal artifact */ AXIS2_EXTERN int AXIS2_CALL saml_artifact_set_data(saml_artifact_t *artifact, const axutil_env_t *env, axis2_char_t *data); /* * Verify a signed saml response. * @param response saml response struct * @param env pointer to environement struct */ AXIS2_EXTERN int AXIS2_CALL saml_response_signature_verify(saml_response_t *response, const axutil_env_t *env); /* * Check whether the saml response has to sign. * @param response saml response struct * @param env pointer to environment struct */ AXIS2_EXTERN int AXIS2_CALL saml_response_is_sign_set(saml_response_t *response, const axutil_env_t *env); /* * Check whether the recieved response is signed. * @param response saml response struct * @param env pointer to environment struct */ AXIS2_EXTERN int AXIS2_CALL saml_response_is_signed(saml_response_t *response, const axutil_env_t *env); /* * Verify a signed saml request. * @param response saml request struct * @param env pointer to environement struct */ AXIS2_EXTERN int AXIS2_CALL saml_request_signature_verify(saml_request_t *request, const axutil_env_t *env); /* * Check whether the saml request has to sign. * @param request saml request struct * @param env pointer to environment struct */ AXIS2_EXTERN int AXIS2_CALL saml_request_is_sign_set(saml_request_t *request, const axutil_env_t *env); /* * Check whether the recieved request is signed. * @param request saml request struct * @param env pointer to environment struct */ AXIS2_EXTERN int AXIS2_CALL saml_request_is_signed(saml_request_t *request, const axutil_env_t *env); #ifdef __cplusplus } #endif #endif rampartc-src-1.3.0/include/trust_policy_util.h0000644000076500007650000000315711202453410021352 0ustar shankarshankar /* * 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_POLICY_UTIL_H #define TRUST_POLICY_UTIL_H #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif AXIS2_EXTERN rp_algorithmsuite_t *AXIS2_CALL trust_policy_util_get_algorithmsuite( const axutil_env_t * env, neethi_policy_t * policy, rp_secpolicy_t **secpolicy); AXIS2_EXTERN rp_binding_commons_t *AXIS2_CALL trust_policy_util_get_binding_commons( const axutil_env_t * env, rp_secpolicy_t * secpolicy); AXIS2_EXTERN rp_trust10_t *AXIS2_CALL trust_policy_util_get_trust10( const axutil_env_t * env, neethi_policy_t * policy, rp_secpolicy_t **secpolicy); #ifdef __cplusplus } #endif #endif /* _TRUST_POLICY_UTIL_H */ rampartc-src-1.3.0/include/oxs_asym_ctx.h0000644000076500007650000001534111202453410020273 0ustar shankarshankar/* * 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 OXS_ASYM_CTX_H #define OXS_ASYM_CTX_H /** * @file oxs_asym_ctx.h * @brief Keeps information relavent for asymmetric encryption. */ #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif /** @defgroup oxs_asym_ctx Asymmetric Context * @ingroup oxs * @{ */ typedef enum { OXS_ASYM_CTX_FORMAT_UNKNOWN=0, OXS_ASYM_CTX_FORMAT_PEM, OXS_ASYM_CTX_FORMAT_PKCS12 }oxs_asym_ctx_format_t; typedef enum { OXS_ASYM_CTX_OPERATION_PUB_ENCRYPT=0, OXS_ASYM_CTX_OPERATION_PRV_DECRYPT, OXS_ASYM_CTX_OPERATION_PUB_DECRYPT, OXS_ASYM_CTX_OPERATION_PRV_ENCRYPT }oxs_asym_ctx_operation_t; typedef struct oxs_asym_ctx_t oxs_asym_ctx_t; /*Create function*/ AXIS2_EXTERN oxs_asym_ctx_t *AXIS2_CALL oxs_asym_ctx_create(const axutil_env_t *env); /*Free*/ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_asym_ctx_free(oxs_asym_ctx_t *ctx, const axutil_env_t *env); /**********************Getter functions******************************************/ /** * Free function for the asymmetric context struct *@ctx pointer to the OMXMLSec asymmetric context struct *@env pointer to environment struct *@return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_asym_ctx_free(oxs_asym_ctx_t *ctx, const axutil_env_t *env); /** *Get the algorithm used to encrypt *@ctx pointer to the OMXMLSec asymmetric context struct *@env pointer to environment struct *@return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_char_t* AXIS2_CALL oxs_asym_ctx_get_algorithm(const oxs_asym_ctx_t *ctx, const axutil_env_t *env); /** *Get the SecurityTokenReference pattern. For ex: IssuerSerial *@ctx pointer to the OMXMLSec asymmetric context struct *@env pointer to environment struct *@return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_char_t* AXIS2_CALL oxs_asym_ctx_get_st_ref_pattern(const oxs_asym_ctx_t *ctx, const axutil_env_t *env); /** *Get the operation. For ex: Public Key encrypt, Private Key Decrypt *@ctx pointer to the OMXMLSec asymmetric context struct *@env pointer to environment struct *@return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN oxs_asym_ctx_operation_t AXIS2_CALL oxs_asym_ctx_get_operation(const oxs_asym_ctx_t *ctx, const axutil_env_t *env); /** *Get the private key used *@ctx pointer to the OMXMLSec asymmetric context struct *@env pointer to environment struct *@return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN openssl_pkey_t* AXIS2_CALL oxs_asym_ctx_get_private_key(const oxs_asym_ctx_t *ctx, const axutil_env_t *env); /** * Get the x509 crtificate used. *@ctx pointer to the OMXMLSec asymmetric context struct *@env pointer to environment struct *@return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN oxs_x509_cert_t* AXIS2_CALL oxs_asym_ctx_get_certificate(const oxs_asym_ctx_t *ctx, const axutil_env_t *env); /** * Sets the algorithm used to encrypt *@ctx pointer to the OMXMLSec asymmetric context struct *@env pointer to environment struct *@algorithm used to encrypt *@return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_asym_ctx_set_algorithm(oxs_asym_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *algorithm); /** * Set the SecurityTokenReference pattern. For ex: IssuerSerial *@ctx pointer to the OMXMLSec asymmetric context struct *@env pointer to environment struct *@st_ref_pattern SecurityTokenReference pattern. For ex: IssuerSerial *@return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_asym_ctx_set_st_ref_pattern(oxs_asym_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *st_ref_pattern); /** * Sets the operation. For ex: Public Key encrypt, Private Key Decrypt *@ctx pointer to the OMXMLSec asymmetric context struct *@env pointer to environment struct *@operation the operation. For ex: Public Key encrypt, Private Key Decrypt *@return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_asym_ctx_set_operation(oxs_asym_ctx_t *ctx, const axutil_env_t *env, oxs_asym_ctx_operation_t operation); /** * Sets the x509 crtificate used. *@ctx pointer to the OMXMLSec asymmetric context struct *@env pointer to environment struct *@certificate the x509 crtificate used. *@return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_asym_ctx_set_certificate(oxs_asym_ctx_t *ctx, const axutil_env_t *env, oxs_x509_cert_t *certificate); /** * Sets private key used *@ctx pointer to the OMXMLSec asymmetric context struct *@env pointer to environment struct *@private_key private key used *@return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_asym_ctx_set_private_key(oxs_asym_ctx_t *asym_ctx, const axutil_env_t *env, openssl_pkey_t *private_key); /** @} */ #ifdef __cplusplus } #endif #endif /* OXS_ASYM_CTX_H */ rampartc-src-1.3.0/include/oxs_transform.h0000644000076500007650000000717011202453410020460 0ustar shankarshankar/* * 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 OXS_TRANSFORM_H #define OXS_TRANSFORM_H /** * @file oxs_transform.h * @brief The class representing a single step of transformation. For example a Cannonicalization * */ #include #include #include #ifdef __cplusplus extern "C" { #endif /*The input or output data type*/ typedef enum { OXS_TRANSFORM_TYPE_UNKNOWN = 0, OXS_TRANSFORM_TYPE_CHAR, OXS_TRANSFORM_TYPE_NODE, OXS_TRANSFORM_TYPE_NODE_ARRAY_LIST } oxs_tr_dtype_t; /*Function interface for any transform*/ typedef oxs_tr_dtype_t (AXIS2_CALL* oxs_transform_tr_func)(const axutil_env_t *env, void *input, oxs_tr_dtype_t input_dtype, void **output); typedef struct oxs_transform_t oxs_transform_t; /*Create function*/ AXIS2_EXTERN oxs_transform_t *AXIS2_CALL oxs_transform_create(const axutil_env_t *env); /*Free*/ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_transform_free(oxs_transform_t *ctx, const axutil_env_t *env); /**********************Getter functions******************************************/ AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_transform_get_id( const oxs_transform_t *transform, const axutil_env_t *env); AXIS2_EXTERN oxs_tr_dtype_t AXIS2_CALL oxs_transform_get_input_data_type( const oxs_transform_t *transform, const axutil_env_t *env); AXIS2_EXTERN oxs_tr_dtype_t AXIS2_CALL oxs_transform_get_output_data_type( const oxs_transform_t *transform, const axutil_env_t *env); AXIS2_EXTERN oxs_transform_tr_func AXIS2_CALL oxs_transform_get_transform_function( const oxs_transform_t *transform, const axutil_env_t *env); /**********************Setter functions******************************************/ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_transform_set_id( oxs_transform_t *transform, const axutil_env_t *env, axis2_char_t *id); AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_transform_set_input_data_type( oxs_transform_t *transform, const axutil_env_t *env, oxs_tr_dtype_t input_data_type); AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_transform_set_output_data_type( oxs_transform_t *transform, const axutil_env_t *env, oxs_tr_dtype_t output_data_type); AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_transform_set_transform_func( oxs_transform_t *transform, const axutil_env_t *env, oxs_transform_tr_func transform_func); /** @} */ #ifdef __cplusplus } #endif #endif /* OXS_TRANSFORM_H */ rampartc-src-1.3.0/include/oxs_signature.h0000644000076500007650000001165311202453410020447 0ustar shankarshankar/* * 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 OXS_SIGNATURE_H #define OXS_SIGNATURE_H /** * @file oxs_signature.h * @brief Does the XML Signature for OMXMLSecurity */ /** * @defgroup oxs_signature Signature * @ingroup oxs * @{ */ #include #include #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif /** * Signs an input buffer @input using the HMAC-SHA1 algorithm. * The secret will be taken form the signature context @sign_ctx * Result will be placed in output buffer @output * @env pointer to environment struct * @sign_ctx the signature context * @input input buffer * @output output buffer * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sig_sign_hmac_sha1(const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, oxs_buffer_t *input, oxs_buffer_t *output); /** * Signs an input buffer @input using the RSA-SHA1 algorithm. * Result will be placed in output buffer @output * @env pointer to environment struct * @sign_ctx the signature context * @input input buffer * @output output buffer * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sig_sign_rsa_sha1(const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, oxs_buffer_t *input, oxs_buffer_t *output); /** * Signs a content placed in @input buf using the information * available in the signature context @sign_ctx. * The result will be placed in the buffer @output. * Note that the result is base64 encoded. * @env pointer to environment struct * @sign_ctx the signature context * @input input buffer * @output output buffer * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sig_sign(const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, oxs_buffer_t *input, oxs_buffer_t *output); /** * Verifies a @signature with @content using the information * available in the signature content @sign_ctx. * Note that the signature should be the base64 encoded value of a digital signature. * @env pointer to environment struct * @sign_ctx the signature context * @content the content that's signed * @signature the signature value * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sig_verify(const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, axis2_char_t *content, axis2_char_t *signature); /** * Verifies @signature with @content using the information * available in the signature content @sign_ctx as per the HMA-SHA1 algorithm * @env pointer to environment struct * @sign_ctx the signature context * @content the content that's signed * @signature the signature value * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sig_verify_hmac_sha1(const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, axis2_char_t *content, axis2_char_t *signature); /** * Verifies @signature with @content using the information * available in the signature content @sign_ctx as per the RSA-SHA1 algorithm * @env pointer to environment struct * @sign_ctx the signature context * @content the content that's signed * @signature the signature value * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sig_verify_rsa_sha1(const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, axis2_char_t *content, axis2_char_t *signature); /** @} */ #ifdef __cplusplus } #endif #endif /* OXS_SIGNATURE_H */ rampartc-src-1.3.0/include/openssl_pkcs12_keystore.h0000644000076500007650000000620311202453410022343 0ustar shankarshankar/* * Copyright 2003-2004 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. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include /** * @file openssl_pkcs12_keystore.h * @brief Key Store manager for keys that are in pkcs12 format */ #ifndef OPENSSL_PKCS12_KEYSTORE_H #define OPENSSL_PKCS12_KEYSTORE_H #ifdef __cplusplus extern "C" { #endif typedef struct pkcs12_keystore pkcs12_keystore_t; AXIS2_EXTERN pkcs12_keystore_t * AXIS2_CALL pkcs12_keystore_create( const axutil_env_t *env, axis2_char_t *filename, axis2_char_t *password); axutil_array_list_t * AXIS2_CALL pkcs12_keystore_populate_cert_array( const axutil_env_t *env, STACK_OF(X509) *other_certs); oxs_x509_cert_t * AXIS2_CALL pkcs12_keystore_populate_oxs_cert( const axutil_env_t *env, X509 *cert_in); AXIS2_EXTERN openssl_pkey_t * AXIS2_CALL pkcs12_keystore_get_owner_private_key( pkcs12_keystore_t *keystore, const axutil_env_t *env); AXIS2_EXTERN oxs_x509_cert_t * AXIS2_CALL pkcs12_keystore_get_owner_certificate( pkcs12_keystore_t *keystore, const axutil_env_t *env); AXIS2_EXTERN oxs_x509_cert_t * AXIS2_CALL pkcs12_keystore_get_certificate_for_issuer_serial( pkcs12_keystore_t *keystore, const axutil_env_t *env, axis2_char_t *issuer, int serial_number); AXIS2_EXTERN oxs_x509_cert_t * AXIS2_CALL pkcs12_keystore_get_certificate_for_thumbprint( pkcs12_keystore_t *keystore, const axutil_env_t *env, axis2_char_t *thumbprint); AXIS2_EXTERN oxs_x509_cert_t * AXIS2_CALL pkcs12_keystore_get_certificate_for_subject_key_id( pkcs12_keystore_t *keystore, const axutil_env_t *env, axis2_char_t *ski); AXIS2_EXTERN oxs_x509_cert_t * AXIS2_CALL pkcs12_keystore_get_other_certificate( pkcs12_keystore_t *keystore, const axutil_env_t *env); AXIS2_EXTERN pkcs12_keystore_t * AXIS2_CALL pkcs12_keystore_create_from_buffer( const axutil_env_t *env, axis2_char_t *buffer, axis2_char_t *password, int len); #ifdef __cplusplus } #endif #endif /* OPENSSL_PKCS12_KEYSTORE_H */ rampartc-src-1.3.0/include/oxs_key.h0000644000076500007650000001722511202453410017237 0ustar shankarshankar/* * 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 OXS_KEY_H #define OXS_KEY_H /** * @file oxs_key.h * @brief represents a Key in OMXMLSecurity */ /** * @defgroup oxs_key Key * @ingroup oxs * @{ */ #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif /*Key usage is not specified yet*/ #define OXS_KEY_USAGE_NONE 0 /*Key is a session key */ #define OXS_KEY_USAGE_SESSION 1 /*Key is a signature session key*/ #define OXS_KEY_USAGE_SIGNATURE_SESSION 2 /*Key is a derived key */ #define OXS_KEY_USAGE_DERIVED 3 #define OXS_KEY_DEFAULT_SIZE 64 /** Type name for struct oxs_key */ typedef struct oxs_key_t oxs_key_t; /** * Gets data of the key. * @param key oxs_key ptr to key * @param env pointer to environment struct * @return data */ AXIS2_EXTERN unsigned char *AXIS2_CALL oxs_key_get_data( const oxs_key_t *key, const axutil_env_t *env); /** * Gets the name of the key. * @param key oxs_key ptr to key * @param env pointer to environment struct * @return name of the key */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_key_get_name( const oxs_key_t *key, const axutil_env_t *env); /** * Gets the nonce of the key. * @param key oxs_key ptr to key * @param env pointer to environment struct * @return nonce of the key */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_key_get_nonce( const oxs_key_t *key, const axutil_env_t *env); /** * Gets the label of the key. * @param key oxs_key ptr to key * @param env pointer to environment struct * @return label of the key */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_key_get_label( const oxs_key_t *key, const axutil_env_t *env); /** * Gets the size of the key. * @param key oxs_key ptr to key * @param env pointer to environment struct * @return size of the key */ AXIS2_EXTERN int AXIS2_CALL oxs_key_get_size( const oxs_key_t *key, const axutil_env_t *env); /** * Gets the usage of the key. * @param key oxs_key ptr to key * @param env pointer to environment struct * @return usage of the key */ AXIS2_EXTERN int AXIS2_CALL oxs_key_get_usage( const oxs_key_t *key, const axutil_env_t *env); /** * Gets the offset of the key. * @param key oxs_key ptr to key * @param env pointer to environment struct * @return offset of the key */ AXIS2_EXTERN int AXIS2_CALL oxs_key_get_offset( const oxs_key_t *key, const axutil_env_t *env); /** * Gets the length of the key. * @param key oxs_key ptr to key * @param env pointer to environment struct * @return length of the key */ AXIS2_EXTERN int AXIS2_CALL oxs_key_get_length( const oxs_key_t *key, const axutil_env_t *env); /** * Sets the name of the key. * @param key oxs_key ptr to key * @param env pointer to environment struct * @param name name of the key * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_set_name( oxs_key_t *key, const axutil_env_t *env, axis2_char_t *name); /** * Set the usage of the key. * @param key oxs_key ptr to key * @param env pointer to environment struct * @param usage usage of the key * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_set_usage( oxs_key_t *key, const axutil_env_t *env, int usage); AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_set_nonce( oxs_key_t *key, const axutil_env_t *env, axis2_char_t *nonce); AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_set_label( oxs_key_t *key, const axutil_env_t *env, axis2_char_t *label); AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_set_offset( oxs_key_t *key, const axutil_env_t *env, int offset); AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_set_length( oxs_key_t *key, const axutil_env_t *env, int length); /** * Free function for key. * @param key oxs_key ptr to key * @param env pointer to environment struct * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_free( oxs_key_t *key, const axutil_env_t *env ); AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_populate_with_buf(oxs_key_t *key, const axutil_env_t *env, oxs_buffer_t *buffer, axis2_char_t *name, int usage); /** * Populate a key. * @param key oxs_key ptr to key * @param env pointer to environment struct * @param data data of the key * @param name name of the key * @param size size of the key * @param usage usage of the key * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_populate( oxs_key_t *key, const axutil_env_t *env, unsigned char *data, axis2_char_t *name, int size, int usage); /** * Read a key from a file. * @param key oxs_key ptr to key * @param env pointer to environment struct * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_read_from_file( oxs_key_t *key, const axutil_env_t *env, axis2_char_t *file_name); /** * Fill the key for the given algo. * @param key oxs_key ptr to key * @param env pointer to environment struct * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_for_algo(oxs_key_t *key, const axutil_env_t *env, rp_algorithmsuite_t *key_algo); AXIS2_EXTERN oxs_buffer_t *AXIS2_CALL oxs_key_get_buffer(const oxs_key_t *key, const axutil_env_t *env); AXIS2_EXTERN oxs_key_t *AXIS2_CALL oxs_key_dup(oxs_key_t *key, const axutil_env_t *env); AXIS2_EXTERN oxs_key_t *AXIS2_CALL oxs_key_create(const axutil_env_t *env); /* once the key_sha is given, ownership is assumed */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_set_key_sha( oxs_key_t *key, const axutil_env_t *env, axis2_char_t *key_sha); AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_key_get_key_sha( const oxs_key_t *key, const axutil_env_t *env); #ifdef __cplusplus } #endif #endif /* OXS_KEY_H */ rampartc-src-1.3.0/include/oxs_error.h0000644000076500007650000000672211202453410017600 0ustar shankarshankar/* * 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 OXS_ERROR_H #define OXS_ERROR_H /** * @file oxs_error.h * @brief Represents an Error occured during the OMXMLSecurity execution */ /** * @defgroup oxs_error Error * @ingroup oxs * @{ */ #include #include #ifdef __cplusplus extern "C" { #endif #if defined( WIN32 ) && (_MSC_VER < 1300) #define __FUNCTION__ NULL #endif /*Macros for locating thr error*/ #define FUNCTION_NAME __FUNCTION__ #define LINE_NUMBER __LINE__ #define FILE_NAME __FILE__ #define OXS_ERROR_LOCATION FILE_NAME,LINE_NUMBER,FUNCTION_NAME /*Error codes*/ #define OXS_ERROR_DEFAULT 0 #define OXS_ERROR_ENCRYPT_FAILED 1 #define OXS_ERROR_DECRYPT_FAILED 2 #define OXS_ERROR_INVALID_DATA 3 #define OXS_ERROR_INVALID_SIZE 4 #define OXS_ERROR_INVALID_FORMAT 5 #define OXS_ERROR_ELEMENT_FAILED 6 #define OXS_ERROR_UNSUPPORTED_ALGO 7 #define OXS_ERROR_CREATION_FAILED 8 #define OXS_ERROR_INITIALIZATION_FAILED 9 #define OXS_ERROR_DATA_CONV_FAILED 10 #define OXS_ERROR_OPENSSL_FUNC_FAILED 11 #define OXS_ERROR_TRANSFORM_FAILED 12 #define OXS_ERROR_SIGN_FAILED 13 #define OXS_ERROR_SIG_VERIFICATION_FAILED 14 #define OXS_ERROR_KEY_DERIVATION_FAILED 15 typedef struct _oxs_error_description oxs_error_description, *oxs_error_description_ptr; /** * Structure to hold error descriptions * @param code Error Code * @param message Error Message */ struct _oxs_error_description { int code; const char* message; }; /** * Given the error code @code get the error message from the table * @param code Error code * @return error message */ AXIS2_EXTERN const char* AXIS2_CALL oxs_errors_get_msg_by_code(int code); /** * Given position @pos get the error message from the table * @param pos Position of the table * @return error message */ AXIS2_EXTERN const char* AXIS2_CALL oxs_errors_get_msg(unsigned int pos); /** * Given position @pos get the error code from the table *@param pos Position of the table *@return error code */ AXIS2_EXTERN int AXIS2_CALL oxs_errors_get_code(unsigned int pos); /** * Print/log the error message * @file: file name * @line: line number * @func: function * @code: the error code. * @msg: the error message * */ AXIS2_EXTERN void AXIS2_CALL oxs_error(const axutil_env_t *env, const char* file, int line, const char* func, int code, const char* msg,...); /** @} */ #ifdef __cplusplus } #endif #endif /* OXS_ERROR_H */ rampartc-src-1.3.0/include/rampart_replay_detector.h0000644000076500007650000000736511202453410022475 0ustar shankarshankar/* * 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_REPLAY_DETECTOR_H #define RAMPART_REPLAY_DETECTOR_H /** * @file rampart_replay_detector.h * @brief The replay_detector module for rampart */ /** * @defgroup rampart_replay_detector Replay Detector * @ingroup rampart_utils * @{ */ #include #include #include #include #ifdef __cplusplus extern "C" { #endif typedef struct rampart_replay_detector_ops rampart_replay_detector_ops_t; typedef struct rampart_replay_detector rampart_replay_detector_t; struct rampart_replay_detector_ops { /** * Check whether the message is replayed or not. If not replayed, message fields have to be * stored to check replay status of future messages * @param rrd the replay detector struct * @param env pointer to environment struct * @param msg_ctx message context * @param rampart_context rampart context struct * @return the status of the check */ axis2_status_t (AXIS2_CALL* is_replayed)( rampart_replay_detector_t *rrd, const axutil_env_t* env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context); /** * The free function to free all resources allocated * @param rrd the replay detector structure * @param env pointer to environment struct * @return AXIS2_SUCCESS on success. AXIS2_FAILURE otherwise. */ axis2_status_t (AXIS2_CALL* free)( rampart_replay_detector_t *rrd, const axutil_env_t* env); }; struct rampart_replay_detector { rampart_replay_detector_ops_t *ops; axutil_param_t *param; }; /** * A linked list based implementation for replay detection. * This doesnt require addressing headers to be present. If the user doesn't give any replay * detection function, then this will be used. * @param env pointer to environment struct,Must not be NULL. * @param msg_ctx message context structure * @param rampart_context rampart context structure * @param user_params parameters given by user. (Not used in this method) * @returns status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_replay_detector_default( const axutil_env_t *env, axis2_msg_ctx_t* msg_ctx, rampart_context_t *rampart_context, void *user_params); /*************************** Function macros **********************************/ #define RAMPART_REPLAY_DETECTOR_IS_REPLAYED(replay_detector, env, msg_ctx, rampart_context) \ ((replay_detector)->ops->is_replayed(replay_detector, env, msg_ctx, rampart_context)) #define RAMPART_REPLAY_DETECTOR_FREE(replay_detector, env) \ ((replay_detector)->ops->free(replay_detector, env)) /** @} */ #ifdef __cplusplus } #endif #endif /* RAMPART_REPLAY_DETECTOR_H */ rampartc-src-1.3.0/include/oxs_buffer.h0000644000076500007650000001515611202453410017721 0ustar shankarshankar/* * 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 OXS_BUFFER_H #define OXS_BUFFER_H /** * @file oxs_buffer.h * @brief The buffer representation in OMXMLSecurity. */ #include #include #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif /** @defgroup oxs_buffer Buffer * @ingroup oxs * @{ */ #define OXS_BUFFER_INITIAL_SIZE 1024 /** * Allocate mode for the buffer * oxs_alloc_mode_exact : Minimizes the allocated memory size * oxs_alloc_mode_double : Minimizes number of Malloc calls */ typedef enum { oxs_alloc_mode_exact = 0, oxs_alloc_mode_double } oxs_AllocMode; /** Type name for struct oxs_buffer */ typedef struct oxs_buffer oxs_buffer_t; /** *Free function of the buffer *@param buffer pointer to the OMXMLSec buffer struct *@param env pointer to environment struct *@return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_buffer_free( oxs_buffer_t *buffer, const axutil_env_t *env ); /** *Removes the first (size) charcters from the buffer *@param buffer pointer to the OMXMLSec buffer struct *@param env pointer to environment struct *@param size number of characters to be removed *@return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_buffer_remove_head( oxs_buffer_t *buffer, const axutil_env_t *env, int size ); /** *Removes the last (size) charcters from the buffer *@param buffer pointer to the OMXMLSec buffer struct *@param env pointer to environment struct *@param size number of characters to be removed *@return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_buffer_remove_tail( oxs_buffer_t *buffer, const axutil_env_t *env, int size ); /** *populates the buffer using the @data set the @size as the useful length *@buffer pointer to the OMXMLSec buffer struct *@env pointer to environment struct *@data the data for the buffer *@size the effective length of data *@return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_buffer_populate( oxs_buffer_t *buffer, const axutil_env_t *env, unsigned char *data, int size ); /** *Append data (to the end) *@buffer pointer to the OMXMLSec buffer struct *@env pointer to environment struct *@data the data for the buffer *@size the effective length of data *@return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_buffer_append( oxs_buffer_t *buffer, const axutil_env_t *env, unsigned char *data, int size ); /** *Prepends data (to the front of the buffer) *@buffer pointer to the OMXMLSec buffer struct *@env pointer to environment struct *@data the data for the buffer *@size the effective length of data *@return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_buffer_prepend( oxs_buffer_t *buffer, const axutil_env_t *env, unsigned char *data, int size ); /** *Reads a file specified by @filename *@buffer pointer to the OMXMLSec buffer struct *@env pointer to environment struct *@filename The name of the file *@return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_buffer_read_file( oxs_buffer_t *buffer, const axutil_env_t *env, const axis2_char_t *filename ); /** *Sets the size *@buffer pointer to the OMXMLSec buffer struct *@env pointer to environment struct *@size the value of the size *@return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_buffer_set_size( oxs_buffer_t *buffer, const axutil_env_t *env, int size ); /** *Sets the maximum size of the buffer. Usually this will be allocated dynamically *@buffer pointer to the OMXMLSec buffer struct *@env pointer to environment struct *@size the maximum size of the buffer *@return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_buffer_set_max_size( oxs_buffer_t *buffer, const axutil_env_t *env, int size ); /** *Returns data *@buffer pointer to the OMXMLSec buffer struct *@env pointer to environment struct *@return data in the buffer */ AXIS2_EXTERN unsigned char* AXIS2_CALL oxs_buffer_get_data( oxs_buffer_t *buffer, const axutil_env_t *env ); /** *Returns the effective length of the buffer *@buffer pointer to the OMXMLSec buffer struct *@env pointer to environment struct *@return the effective length of the buffer as int */ AXIS2_EXTERN int AXIS2_CALL oxs_buffer_get_size( oxs_buffer_t *buffer, const axutil_env_t *env ); /** *Returns the maximum size of the buffer *@buffer pointer to the OMXMLSec buffer struct *@env pointer to environment struct *@return the maximum size of the buffer */ AXIS2_EXTERN int AXIS2_CALL oxs_buffer_get_max_size( oxs_buffer_t *buffer, const axutil_env_t *env ); AXIS2_EXTERN oxs_buffer_t *AXIS2_CALL oxs_buffer_dup(oxs_buffer_t *buffer, const axutil_env_t *env); AXIS2_EXTERN oxs_buffer_t *AXIS2_CALL oxs_buffer_create(const axutil_env_t *env); /** @} */ #ifdef __cplusplus } #endif #endif /* OXS_BUFFER_H */ rampartc-src-1.3.0/include/rampart_policy_validator.h0000644000076500007650000000356111202453410022646 0ustar shankarshankar/* * 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. */ #include #include #include #include #include /** * @file rampart_policy_validator.h * @brief Verifies whether the message complies with the security policy reqmnt */ /** * @defgroup rampart_policy_validator PolicyValidator * @ingroup rampart_utils * @{ */ #ifndef RAMPART_POLICY_VALIDATOR_H #define RAMPART_POLICY_VALIDATOR_H #ifdef __cplusplus extern "C" { #endif /** * Validate security policies, those cannot be checked on the fly * @param env pointer to environment struct * @param rampart_context the Rampart Context * @param sec_node The security element * @param msg_ctx message context * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_pv_validate_sec_header( const axutil_env_t *env, rampart_context_t *rampart_context, axiom_node_t *sec_node, axis2_msg_ctx_t *msg_ctx); /* @} */ #ifdef __cplusplus } #endif #endif /* !RAMPART_POLICY_VALIDATOR_H */ rampartc-src-1.3.0/include/rampart_sec_header_processor.h0000644000076500007650000000424311202453410023461 0ustar shankarshankar/* * Copyright 2003-2004 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. */ #include #include #include #include #include #include #include #include #include /** * @file rampart_sec_header_processor.h * @brief Processes a message depending on it's security related claims */ /** * @defgroup sec_header_processor Security Header Processor * @ingroup rampart_utils * @{ */ #ifndef RAMPART_SEC_HEADER_PROCESSOR_H #define RAMPART_SEC_HEADER_PROCESSOR_H #ifdef __cplusplus extern "C" { #endif /** * Processes a message depending on it's security related claims. * This is the main module in the infow of a message if rampart is enabled. * Processing is depending on the order of tokens apear in the @sec_node * Also the module will check for security policy settings * @param env pointer to environment struct * @param msg_ctx message context * @param soap_envelope the SOAP envelope * @param sec_node The security element * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_shp_process_sec_header(const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_soap_envelope_t *soap_envelope, axiom_node_t *sec_node); /* @} */ #ifdef __cplusplus } #endif #endif /* !RAMPART_SEC_HEADER_PROCESSOR_H */ rampartc-src-1.3.0/include/oxs_tokens.h0000644000076500007650000003747511202453410017763 0ustar shankarshankar/* * 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 OXS_TOKENS_H #define OXS_TOKENS_H #include #include #include #include #include #include #include #include #include #include #include #include #include /** * @file oxs_tokens.h * @brief includes all tokens of OMXMLSecurity. */ #ifdef __cplusplus extern "C" { #endif /** * @defgroup oxs_token OMXMLSecurity Tokens * @ingroup oxs * @{ */ /** * Creates element */ AXIS2_EXTERN axiom_node_t * AXIS2_CALL oxs_token_build_binary_security_token_element( const axutil_env_t * env, axiom_node_t * parent, axis2_char_t * id, axis2_char_t * encoding_type, axis2_char_t * value_type, axis2_char_t * data); /** * Creates element */ AXIS2_EXTERN axiom_node_t * AXIS2_CALL oxs_token_build_c14n_method_element( const axutil_env_t * env, axiom_node_t * parent, axis2_char_t * algorithm); /** * Gets algorithm from element */ AXIS2_EXTERN axis2_char_t * AXIS2_CALL oxs_token_get_c14n_method( const axutil_env_t * env, axiom_node_t * c14n_mtd_node); /** * Creates element */ AXIS2_EXTERN axiom_node_t * AXIS2_CALL oxs_token_build_cipher_data_element( const axutil_env_t * env, axiom_node_t * parent); /** * Gets cipher value from element */ AXIS2_EXTERN axis2_char_t * AXIS2_CALL oxs_token_get_cipher_value_from_cipher_data( const axutil_env_t * env, axiom_node_t * cd_node); /** * Creates element */ AXIS2_EXTERN axiom_node_t * AXIS2_CALL oxs_token_build_cipher_value_element( const axutil_env_t * env, axiom_node_t * parent, axis2_char_t * cipher_val); /** * Gets value from element */ AXIS2_EXTERN axis2_char_t * AXIS2_CALL oxs_token_get_cipher_value( const axutil_env_t * env, axiom_node_t * cv_node); /** * Creates element */ AXIS2_EXTERN axiom_node_t * AXIS2_CALL oxs_token_build_data_reference_element( const axutil_env_t * env, axiom_node_t * parent, axis2_char_t * data_ref); /** * Gets URI reference from element */ AXIS2_EXTERN axis2_char_t * AXIS2_CALL oxs_token_get_data_reference( const axutil_env_t * env, axiom_node_t * data_ref_node); /** * Creates element */ AXIS2_EXTERN axiom_node_t * AXIS2_CALL oxs_token_build_digest_method_element( const axutil_env_t * env, axiom_node_t * parent, axis2_char_t * algorithm); /** * Gets the algorithm from element */ AXIS2_EXTERN axis2_char_t * AXIS2_CALL oxs_token_get_digest_method( const axutil_env_t * env, axiom_node_t * enc_mtd_node); /** * Creates element */ AXIS2_EXTERN axiom_node_t * AXIS2_CALL oxs_token_build_digest_value_element( const axutil_env_t * env, axiom_node_t * parent, axis2_char_t * digest_val); /** * Gets the value from element */ AXIS2_EXTERN axis2_char_t * AXIS2_CALL oxs_token_get_digest_value( const axutil_env_t * env, axiom_node_t * sv_node); /** * Creates element */ AXIS2_EXTERN axiom_node_t * AXIS2_CALL oxs_token_build_ds_reference_element( const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *id, axis2_char_t *uri, axis2_char_t *type); /** * Gets URI reference from element */ AXIS2_EXTERN axis2_char_t * AXIS2_CALL oxs_token_get_ds_reference( const axutil_env_t * env, axiom_node_t * ref_node); /** * Creates element */ AXIS2_EXTERN axiom_node_t * AXIS2_CALL oxs_token_build_embedded_element( const axutil_env_t * env, axiom_node_t * parent, axis2_char_t * id); /** * Gets id from element */ AXIS2_EXTERN axis2_char_t * AXIS2_CALL oxs_token_get_embedded_id( const axutil_env_t * env, axiom_node_t * embedded_node); /** * Creates element */ AXIS2_EXTERN axiom_node_t * AXIS2_CALL oxs_token_build_encrypted_data_element( const axutil_env_t * env, axiom_node_t * parent, axis2_char_t * type_attribute, axis2_char_t * id); /** * Creates element */ AXIS2_EXTERN axiom_node_t * AXIS2_CALL oxs_token_build_encrypted_key_element( const axutil_env_t * env, axiom_node_t * parent ); AXIS2_EXTERN axiom_node_t * AXIS2_CALL oxs_token_get_encrypted_key_node( const axutil_env_t * env, axiom_node_t * parent); /** * Creates element */ AXIS2_EXTERN axiom_node_t * AXIS2_CALL oxs_token_build_encryption_method_element( const axutil_env_t * env, axiom_node_t * parent, axis2_char_t * algorithm); /** * Gets algorithm from element */ AXIS2_EXTERN axis2_char_t * AXIS2_CALL oxs_token_get_encryption_method( const axutil_env_t * env, axiom_node_t * enc_mtd_node); /** * Creates element */ AXIS2_EXTERN axiom_node_t * AXIS2_CALL oxs_token_build_key_identifier_element( const axutil_env_t * env, axiom_node_t * parent, axis2_char_t * encoding_type, axis2_char_t * value_type, axis2_char_t * value); /** * Creates element */ AXIS2_EXTERN axiom_node_t * AXIS2_CALL oxs_token_build_key_info_element( const axutil_env_t * env, axiom_node_t * parent); /** * Creates element */ AXIS2_EXTERN axiom_node_t * AXIS2_CALL oxs_token_build_key_name_element( const axutil_env_t * env, axiom_node_t * parent, axis2_char_t * key_name_val); /** * Creates element */ AXIS2_EXTERN axiom_node_t * AXIS2_CALL oxs_token_build_reference_element( const axutil_env_t * env, axiom_node_t * parent, axis2_char_t * ref, axis2_char_t * value_type); /** * Gets URI reference from element */ AXIS2_EXTERN axis2_char_t * AXIS2_CALL oxs_token_get_reference( const axutil_env_t * env, axiom_node_t * ref_node); /** * Gets value type from element */ AXIS2_EXTERN axis2_char_t * AXIS2_CALL oxs_token_get_reference_value_type( const axutil_env_t * env, axiom_node_t * ref_node); /** * Creates element */ AXIS2_EXTERN axiom_node_t * AXIS2_CALL oxs_token_build_reference_list_element( const axutil_env_t * env, axiom_node_t * parent); /** * Creates elements under element */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL oxs_token_build_data_reference_list( const axutil_env_t * env, axiom_node_t * parent, axutil_array_list_t * id_list); /** * Gets URI references from elements under element */ AXIS2_EXTERN axutil_array_list_t * AXIS2_CALL oxs_token_get_reference_list_data( const axutil_env_t * env, axiom_node_t * ref_list_node); /** * Creates element */ AXIS2_EXTERN axiom_node_t * AXIS2_CALL oxs_token_build_security_token_reference_element( const axutil_env_t * env, axiom_node_t * parent); /** * Creates element */ AXIS2_EXTERN axiom_node_t * AXIS2_CALL oxs_token_build_signature_element( const axutil_env_t * env, axiom_node_t * parent, axis2_char_t * id); /** * Creates element */ AXIS2_EXTERN axiom_node_t * AXIS2_CALL oxs_token_build_enc_header_element( const axutil_env_t * env, axiom_node_t * parent, axis2_char_t * id); /** * Creates element */ AXIS2_EXTERN axiom_node_t * AXIS2_CALL oxs_token_build_signature_method_element( const axutil_env_t * env, axiom_node_t * parent, axis2_char_t * algorithm); /** * Gets algorithm from element */ AXIS2_EXTERN axis2_char_t * AXIS2_CALL oxs_token_get_signature_method( const axutil_env_t * env, axiom_node_t * enc_mtd_node); /** * Creates element */ AXIS2_EXTERN axiom_node_t * AXIS2_CALL oxs_token_build_signature_value_element( const axutil_env_t * env, axiom_node_t * parent, axis2_char_t * signature_val); /** * Gets signature value from element */ AXIS2_EXTERN axis2_char_t * AXIS2_CALL oxs_token_get_signature_value( const axutil_env_t * env, axiom_node_t * sv_node); /** * Creates element */ AXIS2_EXTERN axiom_node_t * AXIS2_CALL oxs_token_build_signed_info_element( const axutil_env_t * env, axiom_node_t * parent); /** * Creates element */ AXIS2_EXTERN axiom_node_t * AXIS2_CALL oxs_token_build_transform_element( const axutil_env_t * env, axiom_node_t * parent, axis2_char_t * algorithm); /** * Gets algorithm from element */ AXIS2_EXTERN axis2_char_t * AXIS2_CALL oxs_token_get_transform( const axutil_env_t * env, axiom_node_t * transform_node); /** * Creates element */ AXIS2_EXTERN axiom_node_t * AXIS2_CALL oxs_token_build_transforms_element( const axutil_env_t * env, axiom_node_t * parent); /** * Creates element */ AXIS2_EXTERN axiom_node_t * AXIS2_CALL oxs_token_build_x509_certificate_element( const axutil_env_t * env, axiom_node_t * parent, axis2_char_t * cert_data); /** * Gets data from element */ AXIS2_EXTERN axis2_char_t * AXIS2_CALL oxs_token_get_x509_certificate( const axutil_env_t * env, axiom_node_t * sv_node); /** * Creates element */ AXIS2_EXTERN axiom_node_t * AXIS2_CALL oxs_token_build_x509_data_element( const axutil_env_t * env, axiom_node_t * parent); /** * Creates element */ AXIS2_EXTERN axiom_node_t * AXIS2_CALL oxs_token_build_issuer_name_element( const axutil_env_t * env, axiom_node_t * parent, axis2_char_t * value ); /** * Gets issuer name from element */ AXIS2_EXTERN axis2_char_t * AXIS2_CALL oxs_token_get_issuer_name( const axutil_env_t * env, axiom_node_t * issuer_name_node); /** * Creates element */ AXIS2_EXTERN axiom_node_t * AXIS2_CALL oxs_token_build_x509_issuer_serial_element( const axutil_env_t * env, axiom_node_t * parent); /** * Creates element with issuer name and serial number */ AXIS2_EXTERN axiom_node_t * AXIS2_CALL oxs_token_build_x509_issuer_serial_with_data( const axutil_env_t * env, axiom_node_t * parent, axis2_char_t * issuer_name, axis2_char_t * serial_number); /** * Creates element */ AXIS2_EXTERN axiom_node_t * AXIS2_CALL oxs_token_build_serial_number_element( const axutil_env_t * env, axiom_node_t * parent, axis2_char_t * value ); /** * Gets serial number from element */ AXIS2_EXTERN axis2_char_t * AXIS2_CALL oxs_token_get_serial_number( const axutil_env_t * env, axiom_node_t * serial_number_node); /** * Creates element */ AXIS2_EXTERN axiom_node_t * AXIS2_CALL oxs_token_build_signature_confirmation_element( const axutil_env_t * env, axiom_node_t * parent, axis2_char_t * id, axis2_char_t * val); /** * Gets value from element */ AXIS2_EXTERN axis2_char_t * AXIS2_CALL oxs_token_get_signature_confirmation_value( const axutil_env_t * env, axiom_node_t * signature_confirmation_node); /** * Gets id from element */ AXIS2_EXTERN axis2_char_t * AXIS2_CALL oxs_token_get_signature_confirmation_id( const axutil_env_t * env, axiom_node_t * signature_confirmation_node); /** * Creates element */ AXIS2_EXTERN axiom_node_t * AXIS2_CALL oxs_token_build_derived_key_token_element( const axutil_env_t * env, axiom_node_t * parent, axis2_char_t * id, axis2_char_t * algo, axis2_char_t* wsc_ns_uri); /** * Creates element */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL oxs_token_build_length_element( const axutil_env_t *env, axiom_node_t *parent, int length, axis2_char_t *wsc_ns_uri); /** * Gets value from element */ AXIS2_EXTERN int AXIS2_CALL oxs_token_get_length_value( const axutil_env_t *env, axiom_node_t *length_node); /** * Creates element */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL oxs_token_build_offset_element( const axutil_env_t *env, axiom_node_t *parent, int offset, axis2_char_t *wsc_ns_uri); /** * Gets value from element */ AXIS2_EXTERN int AXIS2_CALL oxs_token_get_offset_value( const axutil_env_t *env, axiom_node_t *offset_node); /** * Creates element */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL oxs_token_build_nonce_element( const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *nonce_val, axis2_char_t *wsc_ns_uri); /** * Gets value from element */ AXIS2_EXTERN axis2_char_t* AXIS2_CALL oxs_token_get_nonce_value( const axutil_env_t *env, axiom_node_t *nonce_node); /** * Creates element */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL oxs_token_build_label_element( const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *label, axis2_char_t *wsc_ns_uri); /** * Gets value from element */ AXIS2_EXTERN axis2_char_t* AXIS2_CALL oxs_token_get_label_value( const axutil_env_t *env, axiom_node_t *label_node); /** * Creates element */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL oxs_token_build_properties_element( const axutil_env_t *env, axiom_node_t *parent, axis2_char_t* properties_val, axis2_char_t *wsc_ns_uri); /** * Gets value from element */ AXIS2_EXTERN axis2_char_t* AXIS2_CALL oxs_token_get_properties_value( const axutil_env_t *env, axiom_node_t *properties_node); /** * Creates element */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL oxs_token_build_generation_element( const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *generation_val, axis2_char_t *wsc_ns_uri); /** * Gets value from element */ AXIS2_EXTERN axis2_char_t* AXIS2_CALL oxs_token_get_generation_value( const axutil_env_t *env, axiom_node_t *generation_node); /** @} */ #ifdef __cplusplus } #endif #endif /*OXS_TOKENS_H */ rampartc-src-1.3.0/include/openssl_util.h0000644000076500007650000000316411202453410020273 0ustar shankarshankar/* * Copyright 2003-2004 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. */ #include #include #include /** * @file openssl_util.h * @brief General utility routines for openssl related functions. */ #ifndef OPENSSL_UTIL_H #define OPENSSL_UTIL_H #ifdef __cplusplus extern "C" { #endif /** * @defgroup openssl_util OpenSSL Utility * @ingroup openssl * @{ */ /*Generate a random sgtring.*/ AXIS2_EXTERN axis2_status_t AXIS2_CALL openssl_generate_random_data(const axutil_env_t *env, oxs_buffer_t *buffer, int size); /*Get the cipher property for a given cipher name @see openssl_cipher_property.h*/ AXIS2_EXTERN axis2_status_t AXIS2_CALL openssl_populate_cipher_property(const axutil_env_t *env, openssl_cipher_property_t *cprop); /*Get a cipher for a given name*/ AXIS2_EXTERN EVP_CIPHER* AXIS2_CALL openssl_get_evp_cipher_by_name(const axutil_env_t *env, axis2_char_t *cipher_name); /* @} */ #ifdef __cplusplus } #endif #endif /* OPENSSL_UTIL_H */ rampartc-src-1.3.0/include/oxs_key_mgr.h0000644000076500007650000002473711202453410020112 0ustar shankarshankar/* * 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 OXS_KEY_MGR_H #define OXS_KEY_MGR_H /** * @file oxs_key_mgr.h * @brief the Key Manager responsible for loading keys for OMXMLSecurity */ /** * @defgroup oxs_key_mgr Key Manager * @ingroup oxs * @{ */ #include #include #include #include #include #include #include #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif typedef struct oxs_key_mgr_t oxs_key_mgr_t; /* Enum which is used to specify the key format. */ typedef enum { OXS_KEY_MGR_FORMAT_UNKNOWN=0, OXS_KEY_MGR_FORMAT_PEM, OXS_KEY_MGR_FORMAT_PKCS12 }oxs_key_mgr_format_t; #if 0 /** * Loads keys/certificates from a keystore or a PEm file depending on information available in the @ctx * @ctx pointer to the OMXMLSec asymmetric encryption context struct * @env pointer to environment struct * @password the password for the key store * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_mgr_load_key( oxs_key_mgr_t *key_mgr, const axutil_env_t *env, oxs_asym_ctx_t *ctx); #endif /** * Loads a private key from a string buffer @pem_buf which of PEM format. * -----BEGIN RSA PRIVATE KEY----- * @pem_buf * -----END RSA PRIVATE KEY----- * @env pointer to environment struct * @pem_buf the string buffer which of PEM format * @password the password for the key file * @return the generated key */ AXIS2_EXTERN openssl_pkey_t* AXIS2_CALL oxs_key_mgr_load_private_key_from_string(const axutil_env_t *env, axis2_char_t *pem_buf, /*in PEM format*/ axis2_char_t *password); /** * Loads a private key from a file (in PEM format) * @env pointer to environment struct * @file_name the name of the file * @password the passowrd for the file * @return the generated key */ AXIS2_EXTERN openssl_pkey_t* AXIS2_CALL oxs_key_mgr_load_private_key_from_pem_file(const axutil_env_t *env, axis2_char_t *file_name, axis2_char_t *password); /** * Loads an X509 certificate from a string buffer @pem_buf * -----BEGIN CERTIFICATE----- * @pem_buf * -----END CERTIFICATE----- * @env pointer to environment struct * @pem_buf PEM formatted string buffer * @return the generated X509 certificate */ AXIS2_EXTERN oxs_x509_cert_t* AXIS2_CALL oxs_key_mgr_load_x509_cert_from_string(const axutil_env_t *env, axis2_char_t *pem_buf); /** * Loads an X509 certificate from a file * @env pointer to environment struct * @file_name the name of the file * @return the generated X509 certificate */ AXIS2_EXTERN oxs_x509_cert_t* AXIS2_CALL oxs_key_mgr_load_x509_cert_from_pem_file(const axutil_env_t *env, axis2_char_t *filename); /** * Read a PKCS12 key store and populate a key and a certificate. * @env pointer to environment struct * @pkcs12_file name of the pkcs12 file * @password password for the key/certificate pair in the key store * @cert the certificate * @prv_key the private key * @return the generated X509 certificate */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_mgr_read_pkcs12_key_store(const axutil_env_t *env, axis2_char_t *pkcs12_file, axis2_char_t *password, oxs_x509_cert_t **cert, openssl_pkey_t **prv_key); /** * Creates the key manager strucutre. * @env pointer to environment struct * @return pointer to the key manager (oxs_key_mgr_t *) */ AXIS2_EXTERN oxs_key_mgr_t * AXIS2_CALL oxs_key_mgr_create(const axutil_env_t *env); /** * Free the key manager struct * @key_mgr pointer to key manager struct which is going to free * @env pointer to environment struct * @return status of the free operation */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_mgr_free(oxs_key_mgr_t *key_mgr, const axutil_env_t *env); /** * Set the password used to encrypt the private key (if any) * @key_mgr Pointer to key manager struct * @env pointer to environment struct * @password password used to encrypt the private key * @return status of the operation */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_mgr_set_prv_key_password( oxs_key_mgr_t *key_mgr, const axutil_env_t *env, axis2_char_t *password); /** * Return the private key file password * @key_mgr pointer to key manager struct * @env pointer to environment struct * @return password of the private key file */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_key_mgr_get_prv_key_password( oxs_key_mgr_t *key_mgr, const axutil_env_t *env); /** * Returns the private key file location * @key_mgr pointer to key manager struct * @env pointer to environment struct * @return location of the private key file */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_key_mgr_get_private_key_file( oxs_key_mgr_t *key_mgr, const axutil_env_t *env); AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_key_mgr_get_certificate_file( oxs_key_mgr_t *key_mgr, const axutil_env_t *env); AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_key_mgr_get_reciever_certificate_file( oxs_key_mgr_t *key_mgr, const axutil_env_t *env); AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_mgr_set_private_key_file( oxs_key_mgr_t *key_mgr, const axutil_env_t *env, axis2_char_t *file_name); AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_mgr_set_certificate_file( oxs_key_mgr_t *key_mgr, const axutil_env_t *env, axis2_char_t *file_name); AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_mgr_set_reciever_certificate_file( oxs_key_mgr_t *key_mgr, const axutil_env_t *env, axis2_char_t *file_name); AXIS2_EXTERN void *AXIS2_CALL oxs_key_mgr_get_certificate( oxs_key_mgr_t *key_mgr, const axutil_env_t *env); AXIS2_EXTERN axis2_key_type_t AXIS2_CALL oxs_key_mgr_get_certificate_type( oxs_key_mgr_t *key_mgr, const axutil_env_t *env); AXIS2_EXTERN void *AXIS2_CALL oxs_key_mgr_get_prv_key( oxs_key_mgr_t *key_mgr, const axutil_env_t *env); AXIS2_EXTERN axis2_key_type_t AXIS2_CALL oxs_key_mgr_get_prv_key_type( oxs_key_mgr_t *key_mgr, const axutil_env_t *env); AXIS2_EXTERN void *AXIS2_CALL oxs_key_mgr_get_receiver_certificate( oxs_key_mgr_t *key_mgr, const axutil_env_t *env); AXIS2_EXTERN axis2_key_type_t AXIS2_CALL oxs_key_mgr_get_receiver_certificate_type( oxs_key_mgr_t *key_mgr, const axutil_env_t *env); AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_mgr_set_certificate( oxs_key_mgr_t *key_mgr, const axutil_env_t *env, void *certificate); AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_mgr_set_certificate_type( oxs_key_mgr_t *key_mgr, const axutil_env_t *env, axis2_key_type_t type); AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_mgr_set_prv_key( oxs_key_mgr_t *key_mgr, const axutil_env_t *env, void *key); AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_mgr_set_prv_key_type( oxs_key_mgr_t *key_mgr, const axutil_env_t *env, axis2_key_type_t type); AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_mgr_set_receiver_certificate( oxs_key_mgr_t *key_mgr, const axutil_env_t *env, void *certificate); AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_mgr_set_receiver_certificate_type( oxs_key_mgr_t *key_mgr, const axutil_env_t *env, axis2_key_type_t type); AXIS2_EXTERN oxs_key_mgr_format_t AXIS2_CALL oxs_key_mgr_get_format( oxs_key_mgr_t *key_mgr, const axutil_env_t *env); AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_mgr_set_format( oxs_key_mgr_t *key_mgr, const axutil_env_t *env, oxs_key_mgr_format_t format); AXIS2_EXTERN void * AXIS2_CALL oxs_key_mgr_get_pem_buf( oxs_key_mgr_t *key_mgr, const axutil_env_t *env); AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_mgr_set_pem_buf( oxs_key_mgr_t *key_mgr, const axutil_env_t *env, void *pem_buf); AXIS2_EXTERN pkcs12_keystore_t* AXIS2_CALL oxs_key_mgr_get_key_store( oxs_key_mgr_t *key_mgr, const axutil_env_t *env); AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_mgr_set_key_store( oxs_key_mgr_t *key_mgr, const axutil_env_t *env, pkcs12_keystore_t *key_store); AXIS2_EXTERN void * AXIS2_CALL oxs_key_mgr_get_key_store_buff( oxs_key_mgr_t *key_mgr, const axutil_env_t *env); AXIS2_EXTERN oxs_x509_cert_t * AXIS2_CALL oxs_key_mgr_get_receiver_certificate_from_ski( oxs_key_mgr_t *key_mgr, const axutil_env_t *env, axis2_char_t *ski); AXIS2_EXTERN oxs_x509_cert_t * AXIS2_CALL oxs_key_mgr_get_receiver_certificate_from_issuer_serial( oxs_key_mgr_t *key_mgr, const axutil_env_t *env, axis2_char_t *issuer, int serial); AXIS2_EXTERN int AXIS2_CALL oxs_key_mgr_get_key_store_buff_len( oxs_key_mgr_t *key_mgr, const axutil_env_t *env); AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_mgr_set_key_store_buff( oxs_key_mgr_t *key_mgr, const axutil_env_t *env, void *key_store_buf, int len); AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_mgr_increment_ref( oxs_key_mgr_t *key_mgr, const axutil_env_t *env); /** @} */ #ifdef __cplusplus } #endif #endif /* OXS_KEY_MGR_H */ rampartc-src-1.3.0/include/rampart_sec_header_builder.h0000644000076500007650000000456611202453410023100 0ustar shankarshankar/* * Copyright 2003-2004 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. */ #include #include #include #include #include #include #include #include /** * @file rampart_sec_header_builder.h * @brief Build the Security related SOAP headers */ /** * @defgroup rampart_sec_header_builder Security Header Builder * @ingroup rampart_utils * @{ */ #ifndef RAMPART_SEC_HEADER_BUILDER_H #define RAMPART_SEC_HEADER_BUILDER_H #ifdef __cplusplus extern "C" { #endif /** * Build a message depending on configurations. * @param env pointer to environment struct * @param msg_ctx message context * @param soap_envelope the SOAP envelope * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_shb_build_message(const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *context, axiom_soap_envelope_t *soap_envelope); /** * After building the SOPA message as per the policy, * this function will re-order the header elements of the SOAP message * to make sure that the processing doesnt fail. * @param env pointer to environment struct * @param msg_ctx message context * @param rampart_context The Rampart Context * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_shb_ensure_sec_header_order(const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_node_t* sec_node); /* @} */ #ifdef __cplusplus } #endif #endif /* !RAMPART_SEC_HEADER_BUILDER_H */ rampartc-src-1.3.0/include/trust_constants.h0000644000076500007650000001761011202453410021031 0ustar shankarshankar/* * 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_CONSTANTS_H #define TRUST_CONSTANTS_H #include /** * @file trust_constants.h * @brief Holds constants for trust implementation */ #ifdef __cplusplus extern "C" { #endif /*Trust XML Element names */ #define TRUST_RST_CONTEXT "Context" #define TRUST_TOKEN_TYPE "TokenType" #define TRUST_REQUEST_TYPE "RequestType" #define TRUST_APPLIES_TO "AppliesTo" #define TRUST_CLAIMS "Claims" #define TRUST_CLAIMS_DIALECT "Dialect" #define TRUST_ENTROPY "Entropy" #define TRUST_BINARY_SECRET "BinarySecret" #define TRUST_LIFE_TIME "LifeTime" #define TRUST_LIFE_TIME_CREATED "Created" #define TRUST_LIFE_TIME_EXPIRES "Expires" #define TRUST_REQUEST_SECURITY_TOKEN "RequestSecurityToken" #define TRUST_REQUESTED_SECURITY_TOKEN "RequestedSecurityToken" #define TRUST_REQUEST_SECURITY_TOKEN_RESPONSE "RequestSecurityTokenResponse" #define TRUST_REQUESTED_PROOF_TOKEN "RequestedProofToken" #define TRUST_REQUEST_SECURITY_TOKEN_RESPONSE_COLLECTION "RequestSecurityTokenResponseCollection" #define TRUST_REQUESTED_TOKEN_CANCELED "RequestedTokenCancelled" #define TRUST_COMPUTED_KEY "ComputedKey" #define TRUST_REQUESTED_ATTACHED_REFERENCE "RequestedAttachedReference" #define TRUST_REQUESTED_UNATTACHED_REFERENCE "RequestedUnattachedReference" #define TRUST_SECURITY_TOKEN_REFERENCE "SecurityTokenReference" #define TRUST_ENCRYPTED_DATA "EncryptedData" #define TRUST_REQUESTED_TOKEN_CANCELED "RequestedTokenCancelled" #define TRUST_CANCEL_TARGET "CancelTarget" #define TRUST_URI "URI" #define TRUST_EPR "EndpointReference" #define TRUST_EPR_ADDRESS "Address" #define TRUST_STR_REFERENCE "Reference" /* Renewal Bindings */ #define TRUST_RENEW_TARGET "RenewTarget" #define TRUST_ALLOW_POSTDATING "AllowPostdating" #define TRUST_RENEWING "Renewing" #define TRUST_RENEW_ALLOW_ATTR "Allow" #define TRUST_RENEW_OK_ATTR "OK" #define TRUST_VALIDATION_STATUS "Status" #define TRUST_VALIDATION_CODE "Code" #define TRUST_VALIDATION_REASON "Reason" #define TRUST_CANCEL_TARGET "CancelTarget" #define ATTR_TYPE "Type" #define TRUST_BIN_SEC_TYPE_NONCE "/Nonce" /* Request Types */ #define TRUST_REQ_TYPE_ISSUE "/Issue" #define TRUST_REQ_TYPE_VALIDATE "/Validate" #define TRUST_REQ_TYPE_RENEW "/Renew" #define TRUST_REQ_TYPE_CANCEL "/Cancel" #define TRUST_RST_ACTION_ISSUE "/RST/Issue" #define TRUST_RST_ACTION_VALIDATE "/RST/Validate" #define TRUST_RST_ACTION_RENEW "/RST/Renew" #define TRUST_RST_ACTION_CANCEL "/RST/Cancel" #define TRUST_RST_ACTION_SCT "/RST/SCT" #define TRUST_RST_ACTION_CANCEL_SCT "/RST/SCT/Cancel" #define TRUST_KEY_TYPE_SYMM_KEY "/SymmetricKey" #define TRUST_KEY_TYPE_PUBLIC_KEY "/PublicKey" #define TRUST_KEY_TYPE_BEARER "/Bearer" /*Key and Token Parameter Extensions*/ #define TRUST_AUTHENTICATION_TYPE "AuthenticationType" #define TRUST_KEY_TYPE "KeyType" #define TRUST_KEY_SIZE "KeySize" #define TRUST_SIGNATURE_ALGO "SignatureAlgorithm" #define TRUST_ENCRYPTION_ALGO "EncryptionAlgorithm" #define TRUST_CANONICAL_ALGO "CanonicalizationAlgorithm" #define TRUST_COMPUTED_KEY_ALGO "ComputedKeyAlgorithm" #define TRUST_DESIRED_ENCRYPTION "Encryption" #define TRUST_PROOF_ENCRYPTION "ProofEncryption" #define TRUST_USE_KEY "UseKey" #define TRUST_SIGN_WITH "SignWith" #define TRUST_ENCRYPT_WITH "EncryptWith" #define TRUST_ATTR_USE_KEY_SIG "Sig" #define TRUST_DEFAULT_KEY_SIZE 256 /* Trust Namespace URIs and Namespace prefix */ #define TRUST_S11 "S11" #define TRUST_S11_XMLNS "http://schemas.xmlsoap.org/soap/envelope/" #define TRUST_S12 "S12" #define TRUST_S12_XMLNS "http://www.w3.org/2003/05/soap-envelope" #define TRUST_WSU "wsu" #define TRUST_WSU_XMLNS "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" #define TRUST_WSSE "wsse" #define TRUST_WSSE_XMLNS "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" #define TRUST_WST "wst" #define TRUST_DS "ds" #define TRUST_DS_XMLNS "http://www.w3.org/2000/09/xmldsig#" #define TRUST_XENC "xenc" #define TRUST_XENC_XMLNS "http://www.w3.org/2001/04/xmlenc#" #define TRUST_WSP "wsp" #define TRUST_WSP_XMLNS "http://schemas.xmlsoap.org/ws/2004/09/policy" #define TRUST_WSA "wsa" #define TRUST_WSA_XMLNS "http://schemas.xmlsoap.org/ws/2004/08/addressing" #define TRUST_XS "xs" #define TRUST_XS_XMLNS "http://www.w3.org/2001/XMLSchema" #define SECCONV_200502_REQUEST_ISSUE_ACTION "http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT" #define SECCONV_200502_REPLY_ISSUE_ACTION "http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/SCT" #define SECCONV_200502_REQUEST_AMEND_ACTION "http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT/Amend" #define SECCONV_200502_REPLY_AMEND_ACTION "http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/SCT/Amend" #define SECCONV_200502_REQUEST_RENEW_ACTION "http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT/Renew" #define SECCONV_200502_REPLY_RENEW_ACTION "http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/SCT/Renew" #define SECCONV_200502_REQUEST_CANCEL_ACTION "http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT/Cancel" #define SECCONV_200502_REPLY_CANCEL_ACTION "http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/SCT/Cancel" #define SECCONV_200512_REQUEST_ISSUE_ACTION "http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/SCT" #define SECCONV_200512_REPLY_ISSUE_ACTION "http://docs.oasis-open.org/ws-sx/ws-trust/200512/RSTR/SCT" #define SECCONV_200512_REQUEST_AMEND_ACTION "http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/SCT/Amend" #define SECCONV_200512_REPLY_AMEND_ACTION "http://docs.oasis-open.org/ws-sx/ws-trust/200512/RSTR/SCT/Amend" #define SECCONV_200512_REQUEST_RENEW_ACTION "http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/SCT/Renew" #define SECCONV_200512_REPLY_RENEW_ACTION "http://docs.oasis-open.org/ws-sx/ws-trust/200512/RSTR/SCT/Renew" #define SECCONV_200512_REQUEST_CANCEL_ACTION "http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/SCT/Cancel" #define SECCONV_200512_REPLY_CANCEL_ACTION "http://docs.oasis-open.org/ws-sx/ws-trust/200512/RSTR/SCT/Cancel" #define SECCONV_GLOBAL_ID_PREFIX "urn:uuid:" #define SECCONV_LOCAL_ID_PREFIX "sctId" #define TRUST_COMPUTED_KEY_PSHA1 "http://schemas.xmlsoap.org/ws/2005/02/trust/CK/PSHA1" #define TRUST_COMPUTED_KEY_PSHA1_05_12 "http://docs.oasis-open.org/ws-sx/ws-trust/200512/CK/PSHA1" /* NS Versions */ #define TRUST_VERSION_INVALID 0 #define TRUST_VERSION_05_02 1 #define TRUST_VERSION_05_12 2 #define SECCONV_ACTION_INVALID 0 #define SECCONV_ACTION_ISSUE 1 #define SECCONV_ACTION_AMEND 2 #define SECCONV_ACTION_RENEW 3 #define SECCONV_ACTION_CANCEL 4 /* WS-SX Namespaces*/ #define TRUST_WST_XMLNS_05_12 "http://docs.oasis-open.org/ws-sx/ws-trust/200512" #define TRUST_WST_XMLNS_05_02 "http://schemas.xmlsoap.org/ws/2005/02/trust" #ifdef __cplusplus } #endif #endif /* TRUST_CONSTANTS_H*/ rampartc-src-1.3.0/include/trust_util.h0000644000076500007650000004432211202453410017772 0ustar shankarshankar /* * 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 #include #include #include #include #include #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. * * ... * ... * * @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, axis2_char_t *wst_ns_uri, axis2_char_t * context); /** * Create the RSTR Element for Issuance binding. * * ... * ... * * @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, axis2_char_t *wst_ns_uri, axis2_char_t * context); /** * Create the RSTRC Element for Issuance binding. * * ... * ... * * @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, axis2_char_t *wst_ns_uri); /** * Create the RequestType Element for Issuance binding. * .... * @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, axis2_char_t *wst_ns_uri, axiom_node_t * parent_node, axis2_char_t * request_type); /** * Create the TokenType Element for Issuance binding. * .... * @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, axis2_char_t *wst_ns_uri, 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 * * * ... * * * @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, axis2_char_t *wst_ns_uri, axiom_node_t * parent_node, axis2_char_t * dialect_uri); /** * Create the RequestedSecurityToken Element for Issuance binding. * .... * @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, axis2_char_t *wst_ns_uri, axiom_node_t * parent_node, axiom_node_t * sec_token_node); /** * Create the RequestedProofToken Element for Issuance binding. * .... * @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, axis2_char_t *wst_ns_uri, axiom_node_t * parent_node, axiom_node_t *req_proof_token); /** * Create the Entropy Element for Issuance binding. User must set the content. * .... * 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, axis2_char_t *wst_ns_uri, axiom_node_t * parent_node); /** * Create the ComputedKey Element for Issuance binding. * .... * 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, axis2_char_t *wst_ns_uri, 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, axis2_char_t *wst_ns_uri, 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, axis2_char_t *wst_ns_uri, 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, axis2_char_t *wst_ns_uri, 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, axis2_char_t *wst_ns_uri, axiom_node_t * parent_node, axis2_char_t * key_type); /*AuthenticationType*/ AXIS2_EXTERN axiom_node_t *AXIS2_CALL trust_util_create_authentication_type_element( const axutil_env_t * env, axis2_char_t *wst_ns_uri, axiom_node_t * parent_node, axis2_char_t * authentication_type); /*SignatureAlgorithm*/ AXIS2_EXTERN axiom_node_t *AXIS2_CALL trust_util_create_signature_algo_element( const axutil_env_t * env, axis2_char_t *wst_ns_uri, axiom_node_t * parent_node, axis2_char_t * signature_algo); /*EncryptionAlgorithm*/ AXIS2_EXTERN axiom_node_t *AXIS2_CALL trust_util_create_encryption_algo_element( const axutil_env_t * env, axis2_char_t *wst_ns_uri, axiom_node_t * parent_node, axis2_char_t * encryption_algo); /*CanonicalizationAlgorithm*/ AXIS2_EXTERN axiom_node_t *AXIS2_CALL trust_util_create_canonicalization_algo_element( const axutil_env_t * env, axis2_char_t *wst_ns_uri, axiom_node_t * parent_node, axis2_char_t * canonicalization_algo); /*ComputedKeyAlgorithm*/ AXIS2_EXTERN axiom_node_t *AXIS2_CALL trust_util_create_computedkey_algo_element( const axutil_env_t * env, axis2_char_t *wst_ns_uri, axiom_node_t * parent_node, axis2_char_t * computedkey_algo); /*(Desired)Encryption*/ AXIS2_EXTERN axiom_node_t *AXIS2_CALL trust_util_create_desired_encryption_element( const axutil_env_t * env, axis2_char_t * wst_ns_uri, axiom_node_t * parent_node, axiom_node_t * encryption_key); /*@param encryption_key - This can be either a key or a STR*/ /*ProofEncryption*/ AXIS2_EXTERN axiom_node_t *AXIS2_CALL trust_util_create_proof_encryption_element( const axutil_env_t * env, axis2_char_t * wst_ns_uri, axiom_node_t * parent_node, axiom_node_t * proof_encryption_key); /*@param encryption_key - This can be either a key or a STR*/ /*UseKey*/ AXIS2_EXTERN axiom_node_t *AXIS2_CALL trust_util_create_usekey_element( const axutil_env_t * env, axis2_char_t * wst_ns_uri, axiom_node_t * parent_node, axiom_node_t * usekey_key); /*@param encryption_key - This can be either a key or a STR*/ /*SignWith*/ AXIS2_EXTERN axiom_node_t *AXIS2_CALL trust_util_create_signwith_element( const axutil_env_t * env, axis2_char_t *wst_ns_uri, axiom_node_t * parent_node, axis2_char_t * signwith); /*EncryptWith*/ AXIS2_EXTERN axiom_node_t *AXIS2_CALL trust_util_create_encryptwith_element( const axutil_env_t * env, axis2_char_t *wst_ns_uri, axiom_node_t * parent_node, axis2_char_t * encryptwith); /** * 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, axis2_char_t *wst_ns_uri, 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, axis2_char_t *wst_ns_uri, 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, axis2_char_t *wst_ns_uri, 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, 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, axis2_char_t *wst_ns_uri, 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, axis2_char_t *wst_ns_uri, 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, axis2_char_t *wst_ns_uri, 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, axis2_char_t *wst_ns_uri, 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, axis2_char_t *wst_ns_uri, axis2_char_t * code, axis2_char_t * reason); /* Generate random se*/ AXIS2_EXTERN axiom_node_t * AXIS2_CALL trust_util_create_random_session_key_proof_token_element( const axutil_env_t * env, axis2_char_t *wst_ns_uri); /** * 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 */ rampartc-src-1.3.0/include/rampart_encryption.h0000644000076500007650000001016011202453410021465 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include #include #include /** * @file rampart_encryption.h * @brief encrypts a SOAP message */ /** * @defgroup rampart_encryption Encryption * @ingroup rampart_utils * @{ */ #ifndef RAMPART_ENCRYPTION_H #define RAMPART_ENCRYPTION_H #ifdef __cplusplus extern "C" { #endif /** * @param env pointer to environment struct * @param msg_ctx message context * @param soap_envelope the SOAP envelope * @param sec_node The security element * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_enc_encrypt_message(const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_soap_envelope_t *soap_envelope, axiom_node_t *sec_node); /** * Encrypt the message using derived keys. Uses symmetric encryption * @param env pointer to environment struct * @param msg_ctx message context * @param rampart_context rampart context * @param soap_envelope the SOAP envelope * @param sec_node The security element * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_enc_dk_encrypt_message( const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_soap_envelope_t *soap_envelope, axiom_node_t *sec_node); /** * @param env pointer to environment struct * @param msg_ctx message context * @param soap_envelope the SOAP envelope * @param sec_node The security element * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_enc_add_key_info( const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_soap_envelope_t *soap_envelope, axiom_node_t *sec_node); /** * @param env pointer to environment struct * @param msg_ctx message context * @param soap_envelope the SOAP envelope * @param sec_node The security element * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_enc_encrypt_signature( const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_soap_envelope_t *soap_envelope, axiom_node_t *sec_node); /** * Encrypts the session key using assymmetric encription * @param env pointer to environment struct * @param session_key the session key to be encrypted * @param msg_ctx message context * @param rampart_context the rampart context * @param sec_node The security element * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_enc_encrypt_session_key( const axutil_env_t *env, oxs_key_t *session_key, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_node_t *sec_node, axutil_array_list_t *id_list); /* @} */ #ifdef __cplusplus } #endif #endif /* !RAMPART_ENCRYPTION_H */ rampartc-src-1.3.0/include/trust_sts_client.h0000644000076500007650000001110511202453410021155 0ustar shankarshankar /* * 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_STS_CLIENT #define TRUST_STS_CLIENT /** * @file trust_sts_client.h * @brief contains the specific sts client interface */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif typedef struct trust_sts_client trust_sts_client_t; AXIS2_EXTERN trust_sts_client_t *AXIS2_CALL trust_sts_client_create( const axutil_env_t * env); AXIS2_EXTERN void AXIS2_CALL trust_sts_client_free( trust_sts_client_t * sts_client, const axutil_env_t * env); /*Send RST to the specified STS/IP. RST Node that is built from RST_Context should be passed*/ AXIS2_EXTERN void AXIS2_CALL trust_sts_client_request_security_token( trust_sts_client_t * sts_client, const axutil_env_t * env, trust_context_t *trust_context); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_sts_client_process_policies( trust_sts_client_t * sts_client, const axutil_env_t * env, neethi_policy_t * issuer_policy, neethi_policy_t * service_policy); AXIS2_EXTERN axis2_svc_client_t *AXIS2_CALL trust_sts_client_get_svc_client( trust_sts_client_t * sts_client, const axutil_env_t * env, axis2_char_t * action, axis2_char_t * address_version, axis2_bool_t is_soap11); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_sts_client_set_issuer_address( trust_sts_client_t * sts_client, const axutil_env_t * env, axis2_char_t * address); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_sts_client_set_home_dir( trust_sts_client_t * sts_client, const axutil_env_t * env, axis2_char_t * directory); AXIS2_EXTERN oxs_buffer_t* AXIS2_CALL trust_sts_client_request_security_token_using_policy( trust_sts_client_t * sts_client, const axutil_env_t * env, trust_context_t *trust_context, neethi_policy_t *issuer_policy, axis2_char_t *address_version, axis2_bool_t is_soap11, rampart_context_t *rampart_context); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_sts_client_set_issuer_policy_location( trust_sts_client_t * sts_client, const axutil_env_t * env, axis2_char_t * file_path); AXIS2_EXTERN axis2_char_t *AXIS2_CALL trust_sts_client_get_issuer_policy_location( trust_sts_client_t * sts_client, const axutil_env_t * env); AXIS2_EXTERN axis2_char_t *AXIS2_CALL trust_sts_client_get_service_policy_location( trust_sts_client_t * sts_client, const axutil_env_t * env); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_sts_client_set_service_policy_location( trust_sts_client_t * sts_client, const axutil_env_t * env, axis2_char_t * file_path); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_sts_client_set_auth_info( trust_sts_client_t * sts_client, const axutil_env_t * env, axis2_char_t *username, axis2_char_t *password, axis2_char_t * auth_type); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_sts_client_set_issued_token( trust_sts_client_t * sts_client, const axutil_env_t * env, rampart_saml_token_t *saml_token); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_sts_client_set_issued_token_func( trust_sts_client_t * sts_client, const axutil_env_t * env, issued_token_callback_func issue_token_func); #ifdef __cplusplus } #endif #endif /*TRUST_STS_CLIENT_H */ rampartc-src-1.3.0/include/openssl_rsa.h0000644000076500007650000000631011202453410020077 0ustar shankarshankar/* * Copyright 2003-2004 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. */ #include #include #include #include #include #include #include #include #include /** * @file openssl_rsa.h * @brief For RSA encryption. */ #ifndef OPENSSL_RSA_H #define OPENSSL_RSA_H #ifdef __cplusplus extern "C" { #endif /** @defgroup openssl_rsa OpenSSL RSA * @ingroup openssl * @{ */ /** * Decrypts data using a private key specified in @pkey * @rsa pointer to openssl_rsa struct * @env pointer to environment struct * @pkey private key for decryption * @in input data * @out output data * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE **/ int AXIS2_CALL openssl_rsa_prv_decrypt( const axutil_env_t *env, const openssl_pkey_t *pkey, const axis2_char_t *padding, oxs_buffer_t *in, oxs_buffer_t *out); /** * Encrypts data using a public key specified in @pkey * @rsa pointer to openssl_rsa struct * @env pointer to environment struct * @pkey public key for encryption * @in input data * @out output data * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE **/ int AXIS2_CALL openssl_rsa_pub_encrypt( const axutil_env_t *env, const openssl_pkey_t *pkey, const axis2_char_t *padding, oxs_buffer_t *in, oxs_buffer_t *out); /** * Sign data using a private key specified in @pkey * @rsa pointer to openssl_rsa struct * @env pointer to environment struct * @pkey private key for decryption * @in input data * @out output data * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE **/ int AXIS2_CALL openssl_rsa_prv_encrypt( const axutil_env_t *env, const openssl_pkey_t *pkey, const axis2_char_t *padding, oxs_buffer_t *in, oxs_buffer_t *out); /** * Verifies data using a public key specified in @pkey * @rsa pointer to openssl_rsa struct * @env pointer to environment struct * @pkey public key for encryption * @in input data * @out output data * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE **/ int AXIS2_CALL openssl_rsa_pub_decrypt( const axutil_env_t *env, const openssl_pkey_t *pkey, const axis2_char_t *padding, oxs_buffer_t *in, oxs_buffer_t *out); /** @} */ #ifdef __cplusplus } #endif #endif /* OPENSSL_RSA_H */ rampartc-src-1.3.0/include/openssl_cipher_ctx.h0000644000076500007650000001142311202453410021443 0ustar shankarshankar/* * Copyright 2003-2004 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. */ #include #include #include #include /** * @file openssl_cipher_ctx.h * @brief The cipher context in which the information regarding a cipher cycle is stored */ #ifndef OPENSSL_CIPHER_CTX_H #define OPENSSL_CIPHER_CTX_H /** * @defgroup openssl_cipher_ctx OpenSSL Cipher Context * @ingroup openssl * @{ */ #ifdef __cplusplus extern "C" { #endif /** Type name for struct openssl_cipher_ctx */ typedef struct openssl_cipher_ctx_t openssl_cipher_ctx_t; /** * Free function * @param ctx to the openssl cipher ctx struct * @param env pointer to environment struct * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ axis2_status_t AXIS2_CALL openssl_cipher_ctx_free( openssl_cipher_ctx_t *ctx, const axutil_env_t *env); /** * Given the ctx return the CIPHER * @param ctx to the openssl cipher ctx struct * @param env pointer to environment struct * @return RVP_CIPHER the cipher */ const EVP_CIPHER* AXIS2_CALL openssl_cipher_ctx_get_cipher( openssl_cipher_ctx_t *ctx, const axutil_env_t *env); /** * Given the ctx return key * @param ctx to the openssl cipher ctx struct * @param env pointer to environment struct * @return key */ oxs_key_t *AXIS2_CALL openssl_cipher_ctx_get_key( openssl_cipher_ctx_t *ctx, const axutil_env_t *env); /** * Given the ctx return iv * @param ctx to the openssl cipher ctx struct * @param env pointer to environment struct * @return iv */ axis2_char_t *AXIS2_CALL openssl_cipher_ctx_get_iv( openssl_cipher_ctx_t *ctx, const axutil_env_t *env); /** * Given the ctx return the padding * @param ctx to the openssl cipher ctx struct * @param env pointer to environment struct * @return padding */ axis2_char_t *AXIS2_CALL openssl_cipher_ctx_get_pad( openssl_cipher_ctx_t *ctx, const axutil_env_t *env); /** * Set the Cipher for the cipher context. * @param ctx to the openssl cipher ctx struct * @param env pointer to environment struct * @param EVP_CIPHER The pointer for the Cipher to be set in the cipher context * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ axis2_status_t AXIS2_CALL openssl_cipher_ctx_set_cipher( openssl_cipher_ctx_t *ctx, const axutil_env_t *env, const EVP_CIPHER*); /** * Set the Key for the cipher context. * @param ctx to the openssl cipher ctx struct * @param env pointer to environment struct * @param key The key to be set in the cipher context * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ axis2_status_t AXIS2_CALL openssl_cipher_ctx_set_key( openssl_cipher_ctx_t *ctx, const axutil_env_t *env, oxs_key_t *key); /** * Set the Initial Value for the cipher context. * @param ctx to the openssl cipher ctx struct * @param env pointer to environment struct * @param iv The Initial Value to be set in the cipher context * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ axis2_status_t AXIS2_CALL openssl_cipher_ctx_set_iv( openssl_cipher_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *iv); /** * Set the pad for the cipher context. * @param ctx to the openssl cipher ctx struct * @param env pointer to environment struct * @param pad the pad to be set in the cipher context * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ axis2_status_t AXIS2_CALL openssl_cipher_ctx_set_pad( openssl_cipher_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *pad); /** * Create a new cipher context. All the fields carry NULL values at the begining. * @param env pointer to environment struct * @return Fresh Cipher Context */ AXIS2_EXTERN openssl_cipher_ctx_t *AXIS2_CALL openssl_cipher_ctx_create(const axutil_env_t *env); /* @} */ #ifdef __cplusplus } #endif #endif /* OPENSSL_CIPHER_CTX_H */ rampartc-src-1.3.0/include/rampart_credentials.h0000644000076500007650000000671011202453410021576 0ustar shankarshankar/* * 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_CREDENTIALS_H #define RAMPART_CREDENTIALS_H #include #include #include #include #include #include /** * @file rampart_credentials.h * @brief The credentials interface for rampart. To retrieve a username and password pair. */ /** * @defgroup rampart_credentials Credentials Provider * @{ */ #ifdef __cplusplus extern "C" { #endif enum rampart_credentials_status { RAMPART_CREDENTIALS_PW_FOUND = 0, RAMPART_CREDENTIALS_PW_NOT_FOUND, RAMPART_CREDENTIALS_USER_FOUND, RAMPART_CREDENTIALS_USER_NOT_FOUND, RAMPART_CREDENTIALS_GENERAL_ERROR }; typedef enum rampart_credentials_status rampart_credentials_status_t; /** * Struct to get username/password pair */ typedef struct rampart_credentials_ops rampart_credentials_ops_t; typedef struct rampart_credentials rampart_credentials_t; struct rampart_credentials_ops { /** * Implementation must provide both username and the password. * @param credentials pointer to the credentials struct * @param env pointer to the environment struct * @param msg_ctx Message context * @param username Reference to the username * @param password Reference to the password * @return The status of extracting credentials */ rampart_credentials_status_t (AXIS2_CALL* rampart_credentials_username_get)( rampart_credentials_t *credentials, const axutil_env_t* env, axis2_msg_ctx_t *msg_ctx, axis2_char_t **username, axis2_char_t **password); /** * The free function for the credentials * @param credentials pointer to the credentials struct * @param env pointer to the environment struct * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ axis2_status_t (AXIS2_CALL* free)( rampart_credentials_t *credentials, const axutil_env_t* env); }; struct rampart_credentials { rampart_credentials_ops_t *ops; axutil_param_t *param; }; /*************************** Function macros **********************************/ #define RAMPART_CREDENTIALS_FREE(credentials, env) \ ((credentials)->ops->free (credentials, env)) #define RAMPART_CREDENTIALS_USERNAME_GET(credentials, env, msg_ctx, username, password) \ ((credentials)->ops->rampart_credentials_username_get( \ credentials, env, msg_ctx, username, password)) /** @} */ #ifdef __cplusplus } #endif #endif /* RAMPART_CREDENTIALS_H */ rampartc-src-1.3.0/include/oxs_saml_token.h0000644000076500007650000000460411202453410020600 0ustar shankarshankar/* * 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 OXS_SAML_TOKEN_H #define OXS_SAML_TOKEN_H #include #include #ifdef __cplusplus extern "C" { #endif #define OXS_ST_KEY_ID_VALUE_TYPE "http://docs.oasis-open.org/wss/oass-wss-saml-token-profile-1.0#SAMLAssertionID" AXIS2_EXTERN axiom_node_t * AXIS2_CALL oxs_saml_token_build_key_identifier_reference_local(const axutil_env_t *env, axiom_node_t *parent, axiom_node_t *assertion); AXIS2_EXTERN axiom_node_t * AXIS2_CALL oxs_saml_token_build_key_identifier_reference_remote(const axutil_env_t *env, axiom_node_t *parent, axiom_node_t *assertion, axiom_node_t *auth_bind); AXIS2_EXTERN axiom_node_t * AXIS2_CALL oxs_saml_token_build_embeded_reference(const axutil_env_t *env, axiom_node_t *parent, axiom_node_t *assertion); AXIS2_EXTERN axiom_node_t * AXIS2_CALL oxs_saml_token_get_from_key_identifer_reference(const axutil_env_t *env, axiom_node_t *key_id, axiom_node_t *scope); AXIS2_EXTERN axiom_node_t * AXIS2_CALL oxs_saml_token_get_from_embeded_reference(const axutil_env_t *env, axiom_node_t *embeded); #ifdef __cplusplus } #endif #endif rampartc-src-1.3.0/include/oxs_c14n.h0000644000076500007650000001262211202453410017210 0ustar shankarshankar/* * 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 OXS_C14N_H #define OXS_C14N_H /** @defgroup oxs_c14n C14N * @ingroup oxs * XML Canonicalization (XML-C14N). * @{ */ /** * @file oxs_c14n.h * @brief Cannonicalization implementation for OMXMLSecurity */ #include #include #include #include #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif /** * Perform given XML-Canonicalization (XML-C14N) method and returns the * result as an
axutil_stream
. * * @param env Pointer to the Axis2/C environment. * @param doc Document on which the canonicalization is performed. * @param stream Output stream. * @param ns_prefixes List of inclusive namespace prefixes. * @param node Node that defines the subdocument to be canonicalized. * When it is
NULL
the whole document will be * canonicalized. * @param algo Canonicalization method to be used. */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_c14n_apply_stream_algo( const axutil_env_t *env, const axiom_document_t *doc, axutil_stream_t *stream, const axutil_array_list_t *ns_prefixes, const axiom_node_t *node, const axis2_char_t* algo ); /** * Perform given XML-Canonicalization (XML-C14N) method and returns the * result as an
axis2_char_t
buffer. * * @param env Pointer to the Axis2/C environment. * @param doc Document on which the canonicalization is performed. * @param outbuf Output buffer. A new buffer is allocated by the function, * should be free'd by the caller. * @param ns_prefixes List of inclusive namespace prefixes. * @param node Node that defines the subdocument to be canonicalized. * When it is
NULL
the whole document will be * canonicalized. * @param algo Canonicalization method to be used. */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_c14n_apply_algo( const axutil_env_t *env, const axiom_document_t *doc, axis2_char_t **outbuf, const axutil_array_list_t *ns_prefixes, const axiom_node_t *node, const axis2_char_t *algo ); /** * Perform given XML-Canonicalization (XML-C14N) method and returns the * result as an
axutil_stream
. * * @param env Pointer to the Axis2/C environment. * @param doc Document on which the canonicalization is performed. * @param comments
TRUE
if comments should be included in the * output;
FALSE
otherwise. * @param stream Output stream. * @param ns_prefixes List of inclusive namespace prefixes. * @param exclusive
TRUE
if exclusive cannonicalization should * be used;
FALSE
otherwise. * @param node Node that defines the subdocument to be canonicalized. * When it is
NULL
the whole document will be * canonicalized. */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_c14n_apply_stream( const axutil_env_t *env, const axiom_document_t *doc, axis2_bool_t comments, axutil_stream_t *stream, const axis2_bool_t exclusive, const axutil_array_list_t *ns_prefixes, const axiom_node_t *node ); /** * Perform given XML-Canonicalization (XML-C14N) method and returns the * result as an
axis2_char_t
buffer. * * @param env Pointer to the Axis2/C environment. * @param doc Document on which the canonicalization is performed. * @param comments
TRUE
if comments should be included in the * output;
FALSE
otherwise. * @param outbuf Output buffer. A new buffer is allocated by the function, * should be free'd by the caller. * @param ns_prefixes List of inclusive namespace prefixes. * @param exclusive
TRUE
if exclusive cannonicalization should * be used;
FALSE
otherwise. * @param node Node that defines the subdocument to be canonicalized. * When it is
NULL
the whole document will be * canonicalized. */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_c14n_apply ( const axutil_env_t *env, const axiom_document_t *doc, const axis2_bool_t comments, axis2_char_t **outbuf, const axis2_bool_t exclusive, const axutil_array_list_t *ns_prefixes, const axiom_node_t *node ); #ifdef __cplusplus } /** @} */ #endif #endif /* OXS_C14N_H */ rampartc-src-1.3.0/include/openssl_pem.h0000644000076500007650000000376111202453410020102 0ustar shankarshankar/* * Copyright 2003-2004 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. */ #include #include #include #include #include #include #include #include #include #include /** * @file openssl_pem.h * @brief Funcitons related to keys that are in PEM format. */ #ifndef OPENSSL_PEM_H #define OPENSSL_PEM_H #ifdef __cplusplus extern "C" { #endif /** @defgroup openssl_pem OpenSSL PEM * @ingroup openssl * @{ */ typedef enum { OPENSSL_PEM_PKEY_TYPE_PRIVATE_KEY = 0, OPENSSL_PEM_PKEY_TYPE_PUBLIC_KEY, OPENSSL_PEM_PKEY_TYPE_UNKNOWN } openssl_pem_pkey_type_t; AXIS2_EXTERN axis2_status_t AXIS2_CALL openssl_pem_buf_read_pkey(const axutil_env_t *env, axis2_char_t *b64_encoded_buf, axis2_char_t *password, openssl_pem_pkey_type_t type, EVP_PKEY **pkey); AXIS2_EXTERN axis2_status_t AXIS2_CALL openssl_pem_read_pkey(const axutil_env_t *env, axis2_char_t *filename, axis2_char_t *password, openssl_pem_pkey_type_t type, EVP_PKEY **pkey); /** @} */ #ifdef __cplusplus } #endif #endif /* OPENSSL_PEM_H */ rampartc-src-1.3.0/include/oxs_iv.h0000644000076500007650000000312411202453410017056 0ustar shankarshankar/* * 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 OXS_IV_H #define OXS_IV_H /** * @file oxs_iv.h * @brief Initial Vector related functionalities */ /** * @defgroup oxs_iv Initial Vector * @ingroup oxs * @{ */ #include #include #include #include #ifdef __cplusplus extern "C" { #endif #define OXS_IV_DEFAULT OPENSSL_DEFAULT_IV16 /** * Generates an Initial Vector(IV) for the given algorithm * @param env pointer to environment struct * @param key_algo the algorithm * @return the generated IV */ AXIS2_EXTERN axis2_char_t* AXIS2_CALL oxs_iv_generate_for_algo(const axutil_env_t *env, axis2_char_t *key_algo); /** @} */ #ifdef __cplusplus } #endif #endif /* OXS_IV_H */ rampartc-src-1.3.0/include/trust_claims.h0000644000076500007650000000523611202453410020266 0ustar shankarshankar/* * 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_CLAIMS_H #define TRUST_CLAIMS_H #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif typedef struct trust_claims trust_claims_t; AXIS2_EXTERN trust_claims_t * AXIS2_CALL trust_claims_create( const axutil_env_t *env); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_claims_free( trust_claims_t *claims, const axutil_env_t *env); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_claims_deserialize( trust_claims_t *claims, const axutil_env_t *env, axiom_node_t *claims_node); AXIS2_EXTERN axiom_node_t * AXIS2_CALL trust_claims_serialize( trust_claims_t *claims, const axutil_env_t *env, axiom_node_t *parent); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_claims_set_attr_dialect( trust_claims_t *claims, const axutil_env_t *env, axis2_char_t *dialect_attr); AXIS2_EXTERN axis2_char_t * AXIS2_CALL trust_claims_get_attr_dialect( trust_claims_t *claims, const axutil_env_t *env); AXIS2_EXTERN axutil_array_list_t * AXIS2_CALL trust_claims_get_claim_list( trust_claims_t *claims, const axutil_env_t *env); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_claims_set_claim_list( trust_claims_t *claims, axutil_array_list_t *claims_list, const axutil_env_t *env); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_claims_set_wst_ns_uri( trust_claims_t *claims, const axutil_env_t *env, axis2_char_t *wst_ns_uri); AXIS2_EXTERN axis2_char_t *AXIS2_CALL trust_claims_get_wst_ns_uri( trust_claims_t *claims, const axutil_env_t *env); #ifdef __cplusplus } #endif #endif /*TRUST_CLAIMS_H*/ rampartc-src-1.3.0/include/rampart_saml_token.h0000644000076500007650000001444311202453410021437 0ustar shankarshankar/* * 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_SAML_TOKEN_H #define RAMPART_SAML_TOKEN_H #include #include #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif /* * Rampart saml token subject confirmation types. Rampart support both holder * of key and sender vouches methods of subject confiramtions. */ typedef enum { RAMPART_ST_CONFIR_TYPE_UNSPECIFIED = 0, RAMPART_ST_CONFIR_TYPE_SENDER_VOUCHES, RAMPART_ST_CONFIR_TYPE_HOLDER_OF_KEY } rampart_st_confir_type_t; typedef enum { RAMPART_ST_TYPE_UNSPECIFIED = 0, RAMPART_ST_TYPE_SIGNED_SUPPORTING_TOKEN, RAMPART_ST_TYPE_SIGNATURE_TOKEN, RAMPART_ST_TYPE_ENCRYPTION_TOKEN, RAMPART_ST_TYPE_PROTECTION_TOKEN } rampart_st_type_t; typedef struct rampart_saml_token_t rampart_saml_token_t; /** * * @param env pointer to environment struct,Must not be NULL. * @param assertion * @param type * returns */ AXIS2_EXTERN rampart_saml_token_t *AXIS2_CALL rampart_saml_token_create(const axutil_env_t *env, axiom_node_t *assertion, rampart_st_confir_type_t type); /** * @param tok * @param env pointer to environment struct,Must not be NULL. * returns */ AXIS2_EXTERN int AXIS2_CALL rampart_saml_token_free(rampart_saml_token_t *tok, const axutil_env_t *env); /** * * @param tok * @param env pointer to environment struct,Must not be NULL. * @param assertion * returns */ AXIS2_EXTERN int AXIS2_CALL rampart_saml_token_set_assertion(rampart_saml_token_t *tok, const axutil_env_t *env, axiom_node_t *assertion); /** * * @param tok * @param env pointer to environment struct,Must not be NULL. * returns */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL rampart_saml_token_get_assertion(rampart_saml_token_t *tok, const axutil_env_t *env); /** * * @param tok * @param env pointer to environment struct,Must not be NULL. * @param assertion * returns */ AXIS2_EXTERN int AXIS2_CALL rampart_saml_token_set_type(rampart_saml_token_t *tok, const axutil_env_t *env, rampart_st_confir_type_t type); /** * * @param tok * @param env pointer to environment struct,Must not be NULL. * returns */ AXIS2_EXTERN rampart_st_confir_type_t AXIS2_CALL rampart_saml_token_get_type(rampart_saml_token_t *tok, const axutil_env_t *env); /** * * @param tok * @param env pointer to environment struct,Must not be NULL. * @param key * returns */ AXIS2_EXTERN int AXIS2_CALL rampart_saml_token_set_key_value(rampart_saml_token_t *tok, const axutil_env_t *env, oxs_key_t *key); /** * * @param tok * @param env pointer to environment struct,Must not be NULL. * returns */ AXIS2_EXTERN axiom_node_t * AXIS2_CALL rampart_saml_token_get_str(rampart_saml_token_t *tok, const axutil_env_t *env); /** * * @param tok * @param env pointer to environment struct,Must not be NULL. * @param str * returns */ AXIS2_EXTERN int AXIS2_CALL rampart_saml_token_set_str(rampart_saml_token_t *tok, const axutil_env_t *env, axiom_node_t *str); /** * * @param tok * @param env pointer to environment struct,Must not be NULL. * @param is_token_added * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_saml_token_set_is_added_to_header(rampart_saml_token_t *tok, const axutil_env_t *env, axis2_bool_t is_token_added); /** * * @param tok * @param env pointer to environment struct,Must not be NULL. * returns */ AXIS2_EXTERN axis2_bool_t AXIS2_CALL rampart_saml_token_is_added_to_header(rampart_saml_token_t *tok, const axutil_env_t *env); /** * * @param tok * @param env pointer to environment struct,Must not be NULL. * @param token_type * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_saml_token_set_token_type(rampart_saml_token_t *tok, const axutil_env_t *env, rampart_st_type_t token_type); /** * * @param tok * @param env pointer to environment struct,Must not be NULL. * returns */ AXIS2_EXTERN rampart_st_type_t AXIS2_CALL rampart_saml_token_get_token_type(rampart_saml_token_t *tok, const axutil_env_t *env); AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_saml_token_set_session_key(rampart_saml_token_t *tok, const axutil_env_t *env, oxs_key_t *key); AXIS2_EXTERN oxs_key_t * AXIS2_CALL rampart_saml_token_get_session_key(rampart_saml_token_t *tok, const axutil_env_t *env); #ifdef __cplusplus } #endif #endif rampartc-src-1.3.0/include/rampart_username_token.h0000644000076500007650000000431311202453410022315 0ustar shankarshankar/* * 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_USERNAME_TOKEN_H #define RAMPART_USERNAME_TOKEN_H /** * @file rampart_username_token.h * @brief The Usernametoken */ /** * @defgroup rampart_username_token Username Token * @ingroup rampart_utils * @{ */ #ifdef __cplusplus extern "C" { #endif #include #include /* * builds username token * @param env pointer to environment struct * @param rampart_context pointer to rampart context structure * @param sec_node Security header node * @param sec_ns_obj security namespace object * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ axis2_status_t AXIS2_CALL rampart_username_token_build( const axutil_env_t *env, rampart_context_t *rampart_context, axiom_node_t *sec_node, axiom_namespace_t *sec_ns_obj); /* * Validates the given username token * @param env pointer to environment struct * @param msg_ctx axis2 message context * @param ut_node User name token node * @param rampart_context pointer to rampart context structure * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ axis2_status_t AXIS2_CALL rampart_username_token_validate( const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axiom_node_t *ut_node, rampart_context_t *rampart_context); #ifdef __cplusplus } #endif #endif /*RAMPART_USERNAME_TOKEN_H*/ rampartc-src-1.3.0/include/oxs_cipher.h0000644000076500007650000000443111202453410017714 0ustar shankarshankar/* * 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 OXS_CIPHER_H #define OXS_CIPHER_H /** * @file oxs_cipher.h * @brief Cipher related functions in OMXMLSecurity */ #include #include #include #include #ifdef __cplusplus extern "C" { #endif /** * @defgroup oxs_cipher Cipher * @ingroup oxs * @{ */ /** * Get the cipher property for the given url * @param env pointer to environment struct * @param url the url as a string * @param return the property */ AXIS2_EXTERN openssl_cipher_property_t *AXIS2_CALL oxs_get_cipher_property_for_url(const axutil_env_t *env, axis2_char_t *url); /** * Get the cipher name for the given url * @param env pointer to environment struct * @param url the url as a string * @param return the name as a string */ AXIS2_EXTERN axis2_char_t* AXIS2_CALL oxs_get_cipher_name_for_url(const axutil_env_t *env, axis2_char_t *url); /** * Get the cipher url for the given name *@param env pointer to environment struct *@param name the name as a string *@param return the url as a string */ AXIS2_EXTERN axis2_char_t* AXIS2_CALL oxs_get_cipher_url_for_name(const axutil_env_t *env, axis2_char_t *name); /** @} */ #ifdef __cplusplus } #endif #endif /* OXS_CIPHER_H */ rampartc-src-1.3.0/include/openssl_x509.h0000644000076500007650000001017011202453410020016 0ustar shankarshankar/* * Copyright 2003-2004 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. */ #include #include #include #include #include #include #include #include #include #include /** * @file openssl_x509.h * @brief Extracts information from a X509 certificate. */ #ifndef OPENSSL_X509_H #define OPENSSL_X509_H #ifdef __cplusplus extern "C" { #endif /** @defgroup openssl_x509 OpenSSL X509 * @ingroup openssl_x509 * @{ */ typedef enum { OPENSSL_X509_FORMAT_PEM = 0, OPENSSL_X509_FORMAT_DER, OPENSSL_X509_FORMAT_PKCS12 } openssl_x509_format_t; typedef enum { OPENSSL_X509_INFO_SUBJECT = 0, OPENSSL_X509_INFO_ISSUER , OPENSSL_X509_INFO_VALID_FROM , OPENSSL_X509_INFO_VALID_TO , OPENSSL_X509_INFO_FINGER , OPENSSL_X509_INFO_SIGNATURE , OPENSSL_X509_INFO_VERSION , OPENSSL_X509_INFO_PUBKEY , OPENSSL_X509_INFO_PUBKEY_ALGO , OPENSSL_X509_INFO_DATA_CERT, OPENSSL_X509_INFO_COMMON_NAME } openssl_x509_info_type_t; AXIS2_EXTERN axis2_status_t AXIS2_CALL openssl_x509_load_from_buffer(const axutil_env_t *env, axis2_char_t *b64_encoded_buf, X509 **cert); AXIS2_EXTERN axis2_status_t AXIS2_CALL openssl_x509_load_from_pem(const axutil_env_t *env, axis2_char_t *filename, X509 **cert); AXIS2_EXTERN axis2_status_t AXIS2_CALL openssl_x509_load_from_pkcs12(const axutil_env_t *env, axis2_char_t *filename, axis2_char_t *password, X509 **cert, EVP_PKEY **pkey, STACK_OF(X509) **ca); AXIS2_EXTERN axis2_status_t AXIS2_CALL openssl_x509_load_certificate(const axutil_env_t *env, openssl_x509_format_t format, axis2_char_t *filename, axis2_char_t *password, X509 **cert); /*Caller MUST free */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL openssl_x509_get_cert_data(const axutil_env_t *env, X509 *cert); AXIS2_EXTERN int AXIS2_CALL openssl_x509_get_serial(const axutil_env_t *env, X509 *cert); AXIS2_EXTERN unsigned long AXIS2_CALL openssl_x509_get_subject_name_hash(const axutil_env_t *env, X509 *cert); AXIS2_EXTERN axis2_status_t AXIS2_CALL openssl_x509_get_pubkey(const axutil_env_t *env, X509 *cert, EVP_PKEY **pubkey); AXIS2_EXTERN axis2_char_t *AXIS2_CALL openssl_x509_get_subject_key_identifier(const axutil_env_t *env, X509 *cert); AXIS2_EXTERN axis2_char_t *AXIS2_CALL openssl_x509_get_info(const axutil_env_t *env, openssl_x509_info_type_t type, X509 *cert); AXIS2_EXTERN axis2_char_t * AXIS2_CALL openssl_x509_get_common_name( const axutil_env_t *env, X509 *cert); AXIS2_EXTERN void AXIS2_CALL openssl_x509_print(const axutil_env_t *env, X509 *cert); /** @} */ #ifdef __cplusplus } #endif #endif /* OPENSSL_X509_H */ rampartc-src-1.3.0/include/openssl_constants.h0000644000076500007650000000364511202453410021336 0ustar shankarshankar/* * Copyright 2003-2004 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. */ #include /** * @file openssl_constants.h * @brief Constants for the openssl wrapper */ #ifndef OPENSSL_CONSTANTS_H #define OPENSSL_CONSTANTS_H /** * @defgroup openssl OpenSSL wrapper * * @{ */ #ifdef __cplusplus extern "C" { #endif #define OPENSSL_ENCRYPT 1 #define OPENSSL_DECRYPT 0 #define OPENSSL_LEAVE_UNCHANGED -1 /**Supported Ciphers *************/ #define OPENSSL_EVP_des_ede3_cbc "EVP_des_ede3_cbc" #define OPENSSL_EVP_aes_128_cbc "EVP_aes_128_cbc" #define OPENSSL_EVP_aes_192_cbc "EVP_aes_192_cbc" #define OPENSSL_EVP_aes_256_cbc "EVP_aes_256_cbc" #define OPENSSL_HMAC_SHA1 "HmacSha1" #define OPENSSL_HMAC_SHA1_KEY_LEN 32 #define OPENSSL_RSA_ENCRYPTION "rsaEncryption" #define OPENSSL_RSA_PKCS1_PADDING "RSA_PKCS1_PADDING" #define OPENSSL_RSA_PKCS1_OAEP_PADDING "RSA_PKCS1_OAEP_PADDING" #define OPENSSL_DEFAULT_IV8 "01234567" #define OPENSSL_DEFAULT_IV16 "0123456701234567" #define OPENSSL_DEFAULT_IV24 "012345670123456701234567" #define OPENSSL_DEFAULT_LABEL_FOR_PSHA1 "WS-SecureConversation" #define OPENSSL_DEFAULT_KEY_LEN_FOR_PSHA1 32 #define OPENSSL_DEFAULT_KEY_OFFSET_FOR_PSHA1 0 /** @} */ #ifdef __cplusplus } #endif #endif /* OPENSSL_CONSTANTS_H */ rampartc-src-1.3.0/include/oxs_derivation.h0000644000076500007650000001071411202453410020607 0ustar shankarshankar/* * 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 OXS_DERIVATION_H #define OXS_DERIVATION_H /** * @file oxs_derivation.h * @brief The Key derivation module for OMXMLSecurity */ /** * @defgroup oxs_derivation Derivation * @ingroup oxs * @{ */ #include #include #include #include #ifdef __cplusplus extern "C" { #endif /** * Derive Key depending on the secret key @secret * Caller must free memory for derived key * @param env pointer to environment struct * @param secret The secret is the shared secret that is exchanged (note that if two secrets * were securely exchanged, possible as part of an initial exchange, they are concatenated in * the order they were sent/received) * @param derived_key The derived key. Caller must create and free * @param build_fresh Whether to build fresh or build using details in derived key * (in case of recovering the derive key from xml) * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE * **/ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_derivation_derive_key( const axutil_env_t *env, oxs_key_t *secret, oxs_key_t *derived_key, axis2_bool_t build_fresh); /** * Build the depending a given derived key @derived_key * The token will be attached to the parent @parent * @param env pointer to environment struct * @param derived_key The derived key to be used to get information * @param parent The parent node to be attached to * @param stref_uri Security Token Reference URI * @param stref_val_type Security Token Reference Valut Type * @param wsc_ns_uri namespace uri of ws-secconv version * @return the built axiom node */ AXIS2_EXTERN axiom_node_t * AXIS2_CALL oxs_derivation_build_derived_key_token( const axutil_env_t *env, oxs_key_t *derived_key, axiom_node_t *parent, axis2_char_t *stref_uri, axis2_char_t *stref_val_type, axis2_char_t *wsc_ns_uri); /** * Build the depending a given derived key @derived_key * The token will be attached to the parent @parent * @param env pointer to environment struct * @param derived_key The derived key to be used to get information * @param parent The parent node to be attached to * @param stre Security Toekn Reference element * @param wsc_ns_uri namespace uri of ws-secconv version * @return the built axiom node */ AXIS2_EXTERN axiom_node_t * AXIS2_CALL oxs_derivation_build_derived_key_token_with_stre( const axutil_env_t *env, oxs_key_t *derived_key, axiom_node_t *parent, axiom_node_t *stre, axis2_char_t *wsc_ns_uri); /** * Extract information from an AXIOM node of typ and build a key * If the (optional) session_key is NULL then extract it form the refered EncryptedKey. * Otherwise use it to Derive a new key using information available in the dk_token. * @param env pointer to environment struct * @param dk_token The axiom node * @param root_node The root node, which the search scope limited to * @param session_key The session key, which is the base for the key derivation. * @param return the derived key on SUCCESS or NULL on failure * */ AXIS2_EXTERN oxs_key_t * AXIS2_CALL oxs_derivation_extract_derived_key_from_token( const axutil_env_t *env, axiom_node_t *dk_token, axiom_node_t *root_node, oxs_key_t *session_key); /** @} */ #ifdef __cplusplus } #endif #endif /* OXS_DERIVATION_H */ rampartc-src-1.3.0/include/trust_context.h0000644000076500007650000000636311202453410020504 0ustar shankarshankar /* * 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_CONTEXT_H #define TRUST_CONTEXT_H /** * @file trust_context.h * @brief Holds function declarations and data for data */ #include #include #include #include #include #include #include #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif typedef struct trust_context trust_context_t; AXIS2_EXTERN trust_context_t *AXIS2_CALL trust_context_create( const axutil_env_t * env); AXIS2_EXTERN void AXIS2_CALL trust_context_free( trust_context_t *trust_context, const axutil_env_t * env); /*Populate RST_CONTEXT : Often used in STS/IP side */ AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_context_process_rst( trust_context_t *trust_context, const axutil_env_t * env, axis2_msg_ctx_t * in_msg_ctx); /*Populate RSTR_CONTEXT : Often used in Token Requestor side*/ AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_context_process_rstr( trust_context_t *trust_context, const axutil_env_t * env, axis2_msg_ctx_t * in_msg_ctx); /*Build RST Node from created RST_CONTEXT */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL trust_context_build_rst_node( trust_context_t *trust_context, const axutil_env_t * env); /*Build RSTR Node from created RSTR_CONTEXT */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL trust_context_build_rstr_node( trust_context_t *trust_context, const axutil_env_t * env); /*Get Populated RST_CONTEXT */ AXIS2_EXTERN trust_rst_t* AXIS2_CALL trust_context_get_rst( trust_context_t *trust_context, const axutil_env_t * env); /*Get Populated RSTR_CONTEXT */ AXIS2_EXTERN trust_rstr_t* AXIS2_CALL trust_context_get_rstr( trust_context_t *trust_context, const axutil_env_t * env); /*Set RST_CONTEXT */ AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_context_set_rst( trust_context_t *trust_context, const axutil_env_t * env, trust_rst_t *rst); /*Set RSTR_CONTEXT */ AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_context_set_rstr( trust_context_t *trust_context, const axutil_env_t * env, trust_rstr_t *rstr); #ifdef __cplusplus } #endif #endif /*TRUST_CONTEXT_H */ rampartc-src-1.3.0/include/oxs_xml_key_processor.h0000644000076500007650000000553011202453410022212 0ustar shankarshankar/* * 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 OXS_XML_KEY_PROCESSOR_H #define OXS_XML_KEY_PROCESSOR_H /** * @file oxs_xml_key_processor.h * @brief Process elements available under ds:KeyInfo */ /** * @defgroup oxs_xml_key_processor XML Key Processor * @ingroup oxs * @{ */ #include #include #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif /*Process a ds:X509SKI element and populate a certificate */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_xml_key_process_X509SKI(const axutil_env_t *env, axiom_node_t *X509SKI_node, oxs_x509_cert_t *cert); /*Process a ds:X509SubjectName element and populate a certificate*/ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_xml_key_process_X509SubjectName(const axutil_env_t *env, axiom_node_t *X509_subj_name_node, oxs_x509_cert_t *cert); /*Process a ds:X509IssuerSerial element and populate a certificate*/ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_xml_key_process_X509IssuerSerial(const axutil_env_t *env, axiom_node_t *X509_issuer_serial_node, oxs_x509_cert_t *cert); /*Process data in a ds:X509Certificate and returns a certificate*/ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_xml_key_process_X509Certificate(const axutil_env_t *env, axiom_node_t *X509_cert_node, oxs_x509_cert_t *cert); /*Higher level function ot process an ds:X509Data element*/ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_xml_key_process_X509Data(const axutil_env_t *env, axiom_node_t *X509_data_node, oxs_x509_cert_t *cert); /** @} */ #ifdef __cplusplus } #endif #endif /* OXS_XML_KEY_PROCESSOR_H */ rampartc-src-1.3.0/include/rampart_crypto_util.h0000644000076500007650000000337111202453410021656 0ustar shankarshankar/* * 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. */ #include #include #include /** * @file rampart_crypto_util.h * @brief Crypto related utility module */ #ifndef RAMPART_CRYPTO_UTIL #define RAMPART_CRYPTO_UTIL #ifdef __cplusplus extern "C" { #endif /** * @defgroup rampart_crypto_util Rampart Crypto Util * @ingroup rampart_utils */ /** * Calculate the hash of concatenated string of nonce+created+password * @param env pointer to environment variable * @param nonce randomly created bytes * @param created created time * @param password password to be hashed * @return calculated hash on success. NULL otherwise */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL rampart_crypto_sha1( const axutil_env_t *env, const axis2_char_t *nonce, const axis2_char_t *created, const axis2_char_t *password); /* @} */ #ifdef __cplusplus } #endif #endif /* !RAMPART_CRYPTO_UTIL */ rampartc-src-1.3.0/include/trust_entropy.h0000644000076500007650000000704311202453410020514 0ustar shankarshankar/* * 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_ENTROPY_H #define TRUST_ENTROPY_H #include #include #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif #define BIN_SEC_ASSYM "/AsymmetricKey" #define BIN_SEC_SYM "/SymmetricKey" #define BIN_SEC_NONCE "/Nonce" typedef enum { BIN_SEC_TYPE_ERROR = -1, ASYMMETRIC , SYMMETRIC, NONCE }trust_bin_sec_type_t; typedef struct trust_entropy trust_entropy_t; #define TRUST_BIN_SEC_TYPE_ATTR "Type" AXIS2_EXTERN trust_entropy_t * AXIS2_CALL trust_entropy_create( const axutil_env_t *env); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_entropy_free( trust_entropy_t *entropy, const axutil_env_t *env); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_entropy_deserialize( trust_entropy_t *entropy, const axutil_env_t *env, axiom_node_t *entropy_node); AXIS2_EXTERN axiom_node_t * AXIS2_CALL trust_entropy_serialize( trust_entropy_t *entropy, const axutil_env_t *env, axiom_node_t *parent); AXIS2_EXTERN axis2_char_t * AXIS2_CALL trust_entropy_get_binary_secret( trust_entropy_t *entropy, const axutil_env_t *env); AXIS2_EXTERN trust_bin_sec_type_t AXIS2_CALL trust_entropy_get_bin_sec_type_from_str( axis2_char_t *str, const axutil_env_t *env); AXIS2_EXTERN axis2_char_t * AXIS2_CALL trust_entropy_get_str_for_bin_sec_type( trust_bin_sec_type_t type, const axutil_env_t *env); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_entropy_set_binary_secret( trust_entropy_t *entropy, const axutil_env_t *env, axis2_char_t *bin_sec); AXIS2_EXTERN axiom_node_t * AXIS2_CALL trust_entropy_get_other( trust_entropy_t *entropy, const axutil_env_t *env); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_entropy_set_other( trust_entropy_t *entropy, const axutil_env_t *env, axiom_node_t *other_node); AXIS2_EXTERN axis2_char_t * AXIS2_CALL trust_entropy_get_ns_uri( trust_entropy_t *entropy, const axutil_env_t *env); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_entropy_set_ns_uri( trust_entropy_t *entropy, const axutil_env_t *env, axis2_char_t *ns_uri); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_entropy_set_binary_secret_type( trust_entropy_t *entropy, const axutil_env_t *env, trust_bin_sec_type_t binsec_type); #ifdef __cplusplus } #endif #endif /* _TRUST_ENTROPY_H */ rampartc-src-1.3.0/include/rampart_saml.h0000644000076500007650000001223111202453410020230 0ustar shankarshankar/* * Copyright 2003-2004 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. */ #include #include #include #include #include #include #include #include #include #include #include #include #include /** * @file rampart_saml.h * @brief build saml tokens and validate saml tokens */ #ifndef RAMPART_SAML_H #define RAMPART_SAML_H #ifdef __cplusplus extern "C" { #endif #define RAMPART_ST_FAULT_SECURITYTOKENUNAVAILABLE_STR "A referenced SAML assertion could not be retrieved." #define RAMPART_ST_FAULT_UNSUPPORTEDSECURITYTOKEN_STR "An assertion contains a element that the receive does not understand." #define RAMPART_ST_FAULT_FAILEDCHECK_STR "A signature withing an assertion or referencing an assertion is invalid." #define RAMPART_ST_FAULT_INVALIDSECURITYTOKEN_STR "The issuer of an assertion is not acceptable to the receiver." #define RAMPART_ST_FAULT_SECURITYTOKENUNAVAILABLE_CODE "wsse:SecurityTokenUnavailable" #define RAMPART_ST_FAULT_UNSUPPORTEDSECURITYTOKEN_CODE "wsse:UnsupportedSecurityToken" #define RAMPART_ST_FAULT_FAILEDCHECK_CODE "wsse:FailedCheck" #define RAMPART_ST_FAULT_INVALIDSECURITYTOKEN_CODE "wsse:InvalidSecurityToken" #define RAMPART_SAML_FAULT_CODE "env:Sender" /** * * @param env pointer to environment struct,Must not be NULL. * @param rampart_context * @param sec_node * @param sign_parts * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_saml_supporting_token_build(const axutil_env_t *env, rampart_context_t *rampart_context, axiom_node_t *sec_node, axutil_array_list_t *sign_parts); /** * * @param env pointer to environment struct,Must not be NULL. * @param rampart_context * @param assertion * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_saml_token_validate(const axutil_env_t *env, rampart_context_t *rampart_context, axiom_node_t *assertion); /** * * @param env pointer to environment struct,Must not be NULL. * @param assertion * @returns */ AXIS2_EXTERN char * AXIS2_CALL rampart_saml_token_get_subject_confirmation(const axutil_env_t *env, axiom_node_t *assertion); /** * SAML token proccessing faults * @param env pointer to environment struct,Must not be NULL. * @param ctx * @returns */ AXIS2_EXTERN int AXIS2_CALL rampart_saml_token_fault_securitytokenunavailable(axutil_env_t *env, axis2_msg_ctx_t *ctx); /** * * @param env pointer to environment struct,Must not be NULL. * @param ctx * @returns */ AXIS2_EXTERN int AXIS2_CALL rampart_saml_token_fault_unsupportedsecuritytoken(axutil_env_t *env, axis2_msg_ctx_t *ctx); /** * * @param env pointer to environment struct,Must not be NULL. * @param ctx * @returns */ AXIS2_EXTERN int AXIS2_CALL rampart_saml_token_fault_failedcheck(axutil_env_t *env, axis2_msg_ctx_t *ctx); /** * * @param env pointer to environment struct,Must not be NULL. * @param ctx * @returns */ AXIS2_EXTERN int AXIS2_CALL rampart_saml_token_fault_invalidsecuritytoken(axutil_env_t *env, axis2_msg_ctx_t *ctx); AXIS2_EXTERN rampart_saml_token_t * AXIS2_CALL rampart_saml_add_token(rampart_context_t *rampart_context, const axutil_env_t *env, axiom_node_t *assertion, axiom_node_t *str, rampart_st_type_t type); #ifdef __cplusplus } #endif #endif rampartc-src-1.3.0/include/oxs_encryption.h0000644000076500007650000000601711202453410020636 0ustar shankarshankar/* * 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 OXS_ENCRYPTION_H #define OXS_ENCRYPTION_H /** * @file oxs_encryption.h * @brief Provides data encryption and decryption functionalities of the OMXMLSec. */ /** * @defgroup oxs_encryption Encryption * @ingroup oxs * @{ */ #include #include #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif /** * En/Decrypts given data buffer depending on the information avalable in the encryption context using * a symmetric key. * The resulted data will be placed on the result buffer. * Data are not valid only if the method returns AXIS2_SUCCESS * @enc_ctx pointer to the OMXMLSec symmetric encryption context struct * @env pointer to environment struct * @input the input buffer * @result the ouput or the ressulted data buffer * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_encryption_symmetric_crypt(const axutil_env_t *env, oxs_ctx_t * enc_ctx, oxs_buffer_t *input, oxs_buffer_t *result); /** * En/Decrypts given data buffer deoending on the information avalable in the encryption context using an * asymmetric key, which can be a publik key extracted from a certificate or a private key. * The resulted data will be placed on the result buffer. * Data are not valid only if the method returns AXIS2_SUCCESS * @asym_ctx pointer to the OMXMLSec asymmetric encryption context struct * @env pointer to environment struct * @input the input buffer * @result the ouput or the ressulted data buffer * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_encryption_asymmetric_crypt(const axutil_env_t *env, oxs_asym_ctx_t * asym_ctx, oxs_buffer_t *input, oxs_buffer_t *result); /** @} */ #ifdef __cplusplus } #endif #endif /* OXS_ENCRYPTION_H */ rampartc-src-1.3.0/include/axis2_key_type.h0000644000076500007650000000251511202453410020511 0ustar shankarshankar/* * 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 AXIS2_KEY_TYPE_H #define AXIS2_KEY_TYPE_H /** * @file axis2_key_type.h * @brief defines the key type */ #include #include #ifdef __cplusplus extern "C" { #endif /** @defgroup key_file_type Key File Type * @ingroup rampart_utils * @{ */ typedef enum { AXIS2_KEY_TYPE_UNKNOWN = 0, AXIS2_KEY_TYPE_PEM, AXIS2_KEY_TYPE_CERT, AXIS2_KEY_TYPE_DER, AXIS2_KEY_TYPE_OTHER }axis2_key_type_t; /** @} */ #ifdef __cplusplus } #endif #endif rampartc-src-1.3.0/include/oxs_transforms_factory.h0000644000076500007650000000263711202453410022375 0ustar shankarshankar/* * 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 OXS_TRANSFORMS_FACTORY_H #define OXS_TRANSFORMS_FACTORY_H /** * @file oxs_transforms_factory.h * @brief Produces transforms for OMXMLSecurity */ #include #include #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif AXIS2_EXTERN oxs_transform_t *AXIS2_CALL oxs_transforms_factory_produce_transform(const axutil_env_t *env, axis2_char_t *id); /** @} */ #ifdef __cplusplus } #endif #endif /* OXS_TRANSFORMS_FACTORY_H */ rampartc-src-1.3.0/include/rampart_util.h0000644000076500007650000001530111202453410020252 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include #include #include #include #include /** * @file rampart_util.h * @brief Utilities of rampart */ /** * @defgroup rampart_util Utils * @ingroup rampart_utils * @{ */ #ifndef RAMPART_UTIL_H #define RAMPART_UTIL_H #ifdef __cplusplus extern "C" { #endif /** * Load the credentials module * User MUST free memory * @param env pointer to environment struct * @param cred_module_name name of the credentails module to be loaded * @return the loaded credentails module */ AXIS2_EXTERN rampart_credentials_t* AXIS2_CALL rampart_load_credentials_module( const axutil_env_t *env, axis2_char_t *cred_module_name); /** * Call credentials module * User MUST free memory of username and password * @param env pointer to environment struct * @param cred_module the credentails module * @param ctx the message context * @param username reference to the returned username * @param password reference to the returned password * @return the status of the operation */ AXIS2_EXTERN rampart_credentials_status_t AXIS2_CALL rampart_call_credentials( const axutil_env_t *env, rampart_credentials_t *cred_module, axis2_msg_ctx_t *ctx, axis2_char_t **username, axis2_char_t **password); /** * Load authentication module * User MUST free memory * @param env pointer to environment struct * @param auth_module_name name of the authentication module * @return created athenticaiton module */ AXIS2_EXTERN rampart_authn_provider_t* AXIS2_CALL rampart_load_auth_module( const axutil_env_t *env, axis2_char_t *auth_module_name); /** * Load replay detection module * User MUST free memory * @param env pointer to environment struct * @param replay_detector_name name of the replay detection module * @return created replay detection module */ AXIS2_EXTERN rampart_replay_detector_t* AXIS2_CALL rampart_load_replay_detector( const axutil_env_t *env, axis2_char_t *replay_detector_name); /** * Load security context token provider * User MUST free memory * @param env pointer to environment struct * @param sct_provider_name name of the security context token provider * @return created security context token provider module */ AXIS2_EXTERN rampart_sct_provider_t* AXIS2_CALL rampart_load_sct_provider( const axutil_env_t *env, axis2_char_t *sct_provider_name); /** * Load the password callback module * User MUST free memory * @param env pointer to environment struct * @callback_module_name the name of the callback module * @return the loaded callback module */ AXIS2_EXTERN rampart_callback_t* AXIS2_CALL rampart_load_pwcb_module( const axutil_env_t *env, axis2_char_t *callback_module_name); /** * Call auth module * @param env pointer to environment struct * @param authp the authentication module * @param username the username in the UsernameToken * @param password the password in the UsernameToken * @param nonce the nonce in the UsernameToken. Can be NULL if plain text password is used. * @param created created time in UsernameToken. Can be NULL if plain text password is used. * @param password_type the type of the password. either plain text of digest * @param msg_ctx the message context * @return status of the operation */ AXIS2_EXTERN rampart_authn_provider_status_t AXIS2_CALL rampart_authenticate_un_pw( const axutil_env_t *env, rampart_authn_provider_t *authp, const axis2_char_t *username, const axis2_char_t *password, const axis2_char_t *nonce, const axis2_char_t *created, const axis2_char_t *password_type, axis2_msg_ctx_t *msg_ctx); /** * Gets the password of given user. * @env the environment * @callback_module callback module structure * @username the name of the user to get the password * @return the password for the user or NULL if failed */ AXIS2_EXTERN axis2_char_t* AXIS2_CALL rampart_callback_password( const axutil_env_t *env, rampart_callback_t *callback_module, const axis2_char_t *username); /** * Get the password for pkcs12 key store. * @env pointer to environment struct * @callback pointer to rampart callback module * @username name of the pkcs12 owner * @return the password for the user or NULL if username is incorrect */ AXIS2_EXTERN axis2_char_t * AXIS2_CALL rampart_callback_pkcs12_password( const axutil_env_t *env, rampart_callback_t *callback_module, const axis2_char_t *username); /** * Generates time. * User MUST free memory * @param ttl Time to live. The time difference between created and expired in mili seconds. * @param with_millisecond shows whether millisecond precision is needed or not * @return generated time **/ AXIS2_EXTERN axis2_char_t* AXIS2_CALL rampart_generate_time( const axutil_env_t *env, int ttl, axis2_bool_t with_millisecond); /** * Check if @dt1 < @dt2. if not returns a false * @param env pointer to environment struct * @param dt1 date time 1. * @param dt2 date time 2. * @return AXIS2_SUCCESS if dt1 < dt2. AXIS2_FALSE otherwise */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_compare_date_time( const axutil_env_t *env, axis2_char_t *dt1, axis2_char_t *dt2); /* @} */ #ifdef __cplusplus } #endif #endif /* RAMPART_UTIL_H */ rampartc-src-1.3.0/include/rampart_sct_provider.h0000644000076500007650000001010711202453410021777 0ustar shankarshankar/* * 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 #include #include #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 */ rampartc-src-1.3.0/include/oxs_axis2_utils.h0000644000076500007650000000252211202453410020707 0ustar shankarshankar/* * Copyright 2003-2004 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. */ #include #include /** * @file oxs_axis2_utils.h * @brief Utility functions related to Axis2/C */ #ifndef OXS_AXIS_UTILS #define OXS_AXIS_UTILS #ifdef __cplusplus extern "C" { #endif /** @defgroup oxs_axis2_utils Axis2 Utils * @ingroup oxs * @{ */ #if 0 /*Decoded buffer will be returned*/ AXIS2_EXTERN oxs_buffer_ptr AXIS2_CALL oxs_base64_decode(axutil_env_t *env, oxs_buffer_ptr coded_buf); /*Encoded input buffer will be returned*/ AXIS2_EXTERN oxs_buffer_ptr AXIS2_CALL oxs_base64_encode(axutil_env_t *env, oxs_buffer_ptr plain_buf); #endif /** @} */ #ifdef __cplusplus } #endif #endif /* OXS_AXIS_UTILS */ rampartc-src-1.3.0/include/rampart_token_processor.h0000644000076500007650000000763111202453410022523 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include /** * @file rampart_token_processor.h * @brief Token processing of rampart */ /** * @defgroup Token Processor * @ingroup rampart_utils * @{ */ #ifndef RAMPART_TOKEN_PROCESSOR_H #define RAMPART_TOKEN_PROCESSOR_H #ifdef __cplusplus extern "C" { #endif /** * extract certificate related information using given token_reference node and scope node * @param env Environment structure * @param st_ref_node security token reference node. * @param scope_node node where additional details should be found. Can be NULL for all other * scenarios but the Direct Reference * @param cert certificate where values extracted shuold be populated * @return status of the operation */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_token_process_security_token_reference( const axutil_env_t *env, axiom_node_t *st_ref_node, axiom_node_t *scope_node, oxs_x509_cert_t *cert); /** * extract certificate using reference id given in reference node * @param env Environment structure * @param ref_node security token reference node. * @param scope_node node where certificate details should be found using reference id * @param cert certificate where values extracted shuold be populated * @return status of the operation */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_token_process_direct_ref( const axutil_env_t *env, axiom_node_t *ref_node, axiom_node_t *scope_node, oxs_x509_cert_t *cert); /** * extract embedded certificate from given embed_node * @param env Environment structure * @param embed_node node where certificate is embedded. * @param cert certificate where values extracted shuold be populated * @return status of the operation */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_token_process_embedded( const axutil_env_t *env, axiom_node_t *embed_node, oxs_x509_cert_t *cert); /** * extract key identifier and populate the certificate * @param env Environment structure * @param ki_node node where key identifier is available. * @param cert certificate where values extracted shuold be populated * @return status of the operation */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_token_process_key_identifier( const axutil_env_t *env, axiom_node_t *ki_node, oxs_x509_cert_t *cert); /** * extract key details from x509data node * @param env Environment structure * @param x509_data_node x509data node. * @param cert certificate where values extracted shuold be populated * @return status of the operation */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_token_process_x509_data( const axutil_env_t *env, axiom_node_t *x509_data_node, oxs_x509_cert_t *cert); /* @} */ #ifdef __cplusplus } #endif #endif /* !RAMPART_TOKEN_PROCESSOR_H */ rampartc-src-1.3.0/include/oxs_sign_part.h0000644000076500007650000000765311202453410020441 0ustar shankarshankar/* * 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 OXS_SIGN_PART_H #define OXS_SIGN_PART_H /** * @file oxs_sign_part.h * @brief Keeps information relavent for a single node of signing. */ /** * @defgroup oxs_sign_part Signature Part * @ingroup oxs * @{ */ #include #include #include #include #ifdef __cplusplus extern "C" { #endif typedef struct oxs_sign_part_t oxs_sign_part_t; /*Create function*/ AXIS2_EXTERN oxs_sign_part_t *AXIS2_CALL oxs_sign_part_create(const axutil_env_t *env); /*Free*/ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sign_part_free(oxs_sign_part_t *ctx, const axutil_env_t *env); /**********************Getter functions******************************************/ AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_sign_part_get_id( const oxs_sign_part_t *sign_part, const axutil_env_t *env); AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_sign_part_get_digest_mtd( const oxs_sign_part_t *sign_part, const axutil_env_t *env); AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_sign_part_get_digest_val( const oxs_sign_part_t *sign_part, const axutil_env_t *env); AXIS2_EXTERN axiom_node_t *AXIS2_CALL oxs_sign_part_get_node( const oxs_sign_part_t *sign_part, const axutil_env_t *env); AXIS2_EXTERN axutil_array_list_t *AXIS2_CALL oxs_sign_part_get_transforms( const oxs_sign_part_t *sign_part, const axutil_env_t *env); AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_sign_part_get_id_name( const oxs_sign_part_t *sign_part, const axutil_env_t *env); AXIS2_EXTERN axiom_namespace_t *AXIS2_CALL oxs_sign_part_get_sign_namespace( const oxs_sign_part_t *sign_part, const axutil_env_t *env); /**********************Setter functions******************************************/ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sign_part_set_id( oxs_sign_part_t *sign_part, const axutil_env_t *env, axis2_char_t *id); AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sign_part_set_digest_mtd( oxs_sign_part_t *sign_part, const axutil_env_t *env, axis2_char_t *digest_mtd); AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sign_part_set_digest_val( oxs_sign_part_t *sign_part, const axutil_env_t *env, axis2_char_t *digest_val); AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sign_part_set_node( oxs_sign_part_t *sign_part, const axutil_env_t *env, axiom_node_t *node); AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sign_part_set_transforms( oxs_sign_part_t *sign_part, const axutil_env_t *env, axutil_array_list_t *transforms); AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sign_part_set_id_name( oxs_sign_part_t *sign_part, const axutil_env_t *env, axis2_char_t *id_name); AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sign_part_set_sign_namespace( oxs_sign_part_t *sign_part, const axutil_env_t *env, axiom_namespace_t *sig_ns); /** @} */ #ifdef __cplusplus } #endif #endif /* OXS_SIGN_PART_H */ rampartc-src-1.3.0/include/rahas_mod.h0000644000076500007650000000255211202453410017510 0ustar shankarshankar/* * 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 RAHAS_MOD_H #define RAHAS_MOD_H /** * @file rahas_mod.h * @brief Axis2 rahas module interface */ /** * @defgroup rahas_mod Rahas Module * @{ */ #include #ifdef __cplusplus extern "C" { #endif /** * Creates In handler * @param env pointer to environment struct * @param name * @return Created In handler */ AXIS2_EXTERN axis2_handler_t* AXIS2_CALL rahas_in_handler_create( const axutil_env_t *env, axutil_string_t *name); /** @} */ #ifdef __cplusplus } #endif #endif /* RAHAS_MOD_H */ rampartc-src-1.3.0/include/rampart_sec_processed_result.h0000644000076500007650000000676111202453410023526 0ustar shankarshankar/* * 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. */ #include #include #include #include /** * @file rampart_sec_processed_result.h * @brief The module to keep the results after processing the message */ #ifndef RAMPART_SEC_PROCESSED_RESULT #define RAMPART_SEC_PROCESSED_RESULT #ifdef __cplusplus extern "C" { #endif /** * @defgroup rampart_sec_processed_result * @ingroup Rampart_Util */ /** * Set a security processed result to the message context * @param env Environment structure * @param msg_ctx message context sttucture * @param key key of the security processed result * @param value value of the security processed result * @return status of the operation */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_set_security_processed_result( const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axis2_char_t *key, void *value); /** * Get a security processed result from a message context. * A service may use this method to retirieve a particular result by the key * @env the environment * @msg_ctx the message context in which data are extracted * @key as specified in rampart_constants section SPR * @return value of the security processed result corresponding to @key */ AXIS2_EXTERN void *AXIS2_CALL rampart_get_security_processed_result( const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axis2_char_t *key); /** * Set a security processed result property to the message context * @env the environment * @msg_ctx the message context in which data are stored/extracted * @return status of the operation */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_set_security_processed_results_property( const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx); /** * Get the complete set of security processed results * @env the environment * @msg_ctx the message context in which data are extracted * @return complete set of security processed results. */ AXIS2_EXTERN axutil_hash_t* AXIS2_CALL rampart_get_all_security_processed_results( const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx); /** * Prints all ke/val pairs in the security processed results. For debugging purposes * @env the environment * @msg_ctx the message context in which data are extracted * @return void */ AXIS2_EXTERN void AXIS2_CALL rampart_print_security_processed_results_set( const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx); /* @} */ #ifdef __cplusplus } #endif #endif /* !RAMPART_SEC_PROCESSED_RESULT */ rampartc-src-1.3.0/include/oxs_axiom.h0000644000076500007650000002407211202453410017562 0ustar shankarshankar/* * 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 OXS_AXIOM_H #define OXS_AXIOM_H /** * @file oxs_axiom.h * @brief Utility functions related to AXIOM. A place for common code. */ #include #include #include #include #ifdef __cplusplus extern "C" { #endif /** @defgroup oxs_axiom OXS Axiom * @ingroup oxs * @{ */ /** * Adds an attribute to a particular node * @param env Environment. MUST NOT be NULL * @param node the node where the attibute will be added * @param attribute_ns the the ns_prefix of the attribute * @param attribute_ns_uri the uri of the attribute * @param attribute the localname of the attribute * @param value the value of the attribute * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_axiom_add_attribute( const axutil_env_t *env, axiom_node_t* node, axis2_char_t* attribute_ns, axis2_char_t* attribute_ns_uri, axis2_char_t* attribute, axis2_char_t* value); /** * Finds the number of childern with given qname * @param env Environment. MUST NOT be NULL, * @param parent the root element defining start of the search * @param localname the local part of the qname * @param ns_uri uri part of the qname * @param prefix the prefix part of the qname * @return the number of children found */ AXIS2_EXTERN int AXIS2_CALL oxs_axiom_get_number_of_children_with_qname( const axutil_env_t *env, axiom_node_t* parent, axis2_char_t* local_name, axis2_char_t* ns_uri, axis2_char_t* prefix); /** * Traverse thru the node and its descendents. Check if the localname is equal to the given name * @param env Environment. MUST NOT be NULL, * @param node the node to be searched * @param localname the local name of the node to be searched * @return the node if found, else NULL */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL oxs_axiom_get_node_by_local_name( const axutil_env_t *env, axiom_node_t *node, axis2_char_t *local_name); /** * Traverse thru the node and its descendents. Check if the node has a particular attibure * value, whose attribute name as in @attr and value as in @val * @param env Environment. MUST NOT be NULL, * @param node the node to be searched * @param attr the attribute name of the node * @param val the attribute value of the node * @param ns namespace of the attribute * @return the node if found, else NULL */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL oxs_axiom_get_node_by_id( const axutil_env_t *env, axiom_node_t *node, axis2_char_t *attr, axis2_char_t *val, axis2_char_t *ns); /** * Traverse thru the node and its descendents. Check if the node has a particular attribute with * name as in @attr and namespace as in @ns. Returns the attribute value. * @param env Environment. MUST NOT be NULL, * @param node the node to be searched * @param attribute_name the attribute name of the node * @param ns namespace of the attribute * @return the attribute value if found, else NULL */ AXIS2_EXTERN axis2_char_t* AXIS2_CALL oxs_axiom_get_attribute_value_of_node_by_name( const axutil_env_t *env, axiom_node_t *node, axis2_char_t *attribute_name, axis2_char_t *ns); /** * Traverse thru the node and its descendents. Check if the node has a particular attribute with * qname as in @qname. Returns the attribute value. * @param env Environment. MUST NOT be NULL, * @param node the node to be searched * @param qname the qname of the attribute * @return the attribute value if found, else NULL */ AXIS2_EXTERN axis2_char_t* AXIS2_CALL oxs_axiom_get_attribute_val_of_node_by_qname( const axutil_env_t *env, axiom_node_t *node, axutil_qname_t *qname); /** * Check the node and its children. Check if the localname is equal to the given name * Note: You may pass the prefix=NULL as the prefix may be different depending on the impl * @param env Environment. MUST NOT be NULL, * @param parent the node to be searched * @param local_name the local name of the node to be searched * @ns_uri namespace uri of the node to be searched * @prefix prefix of the node to be searched. If NULL, node with any prefix will be considered * @return the node if found, else NULL */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL oxs_axiom_get_first_child_node_by_name( const axutil_env_t *env, axiom_node_t* parent, axis2_char_t* local_name, axis2_char_t* ns_uri, axis2_char_t* prefix); /** * Returns content of a node * @param env Environment. MUST NOT be NULL, * @param node the node whose content should be retrieved * @return the content of the node if found, else NULL */ AXIS2_EXTERN axis2_char_t* AXIS2_CALL oxs_axiom_get_node_content( const axutil_env_t *env, axiom_node_t* node); /** * Deserialises given buffer and creates the axiom node * @param env Environment. Must not be NULL * @param buffer representation of serialised node * @return deserialised node if success. NULL otherwise. */ AXIS2_EXTERN axiom_node_t *AXIS2_CALL oxs_axiom_deserialize_node( const axutil_env_t *env, axis2_char_t* buffer); /** * Checks whether given node is having same name and namespace as given * @param env Environment. Must not be null * @param node node to be checked for name and namespace * @param name local name to be checked against given node * @param ns namespace to be checked against given node. Can be null. If null, will be omitted * @return AXIS2_TRUE if given name/ns is same as in the node. AXIS2_FALSE otherwise. */ AXIS2_EXTERN axis2_bool_t AXIS2_CALL oxs_axiom_check_node_name( const axutil_env_t *env, axiom_node_t* node, axis2_char_t* name, axis2_char_t* ns); /** * moves the given node before second node. * @param env Environment. Must not be null * @param node_to_move node to be moved * @param node_before node_to_move will be moved before this node * @return status of the operation */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_axiom_interchange_nodes( const axutil_env_t *env, axiom_node_t *node_to_move, axiom_node_t *node_before); /** * Adds @child as the first child of @parent * @param env Environment. Must not be null * @param parent parent node * @param child child node which has to be the first child of parent * @return status of the operation */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_axiom_add_as_the_first_child( const axutil_env_t *env, axiom_node_t *parent, axiom_node_t *child); /** * Traverse thru the node and its children. Check if the element has the * given qname and has a id attribute equal to the given value. * @param env Environment. MUST NOT be NULL, * @param node the node to be searched * @param e_name element name * @param e_ns element namespace. If NULL doesn't consider the namespaces * @param attr_name the attribute name of the node * @param attr_val the attribute value of the node * @param attr_ns the attribute namespace. If NULL doesn't consider namespaces. * @return the node if found, else NULL */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL oxs_axiom_get_first_node_by_name_and_attr_val( const axutil_env_t *env, axiom_node_t *node, axis2_char_t *e_name, axis2_char_t *e_ns, axis2_char_t *attr_name, axis2_char_t *attr_val, axis2_char_t *attr_ns); /** * First find the root of the scope node. Traverse thru the root node and its * children. Check if the element has the given qname and has a attribute * equal to the given values. * @param env Environment. MUST NOT be NULL, * @param node the node to be searched * @param e_name element name * @param e_ns element namespace. If NULL doesn't consider the namespaces * @param attr_name the attribute name of the node * @param attr_val the attribute value of the node * @param attr_ns the attribute namespace. If NULL doesn't consider namespaces. * @return the node if found, else NULL */ AXIS2_EXTERN axiom_node_t * AXIS2_CALL oxs_axiom_get_first_node_by_name_and_attr_val_from_xml_doc( const axutil_env_t *env, axiom_node_t *node, axis2_char_t *e_name, axis2_char_t *e_ns, axis2_char_t *attr_name, axis2_char_t *attr_val, axis2_char_t *attr_ns); /** * Clones the given node. * @param env Environment. Must not be null * @param node node to be cloned * @return cloned node if success. NULL otherwise */ AXIS2_EXTERN axiom_node_t *AXIS2_CALL oxs_axiom_clone_node( const axutil_env_t *env, axiom_node_t *node); /** @} */ #ifdef __cplusplus } #endif #endif /* OXS_AXIOM_H */ rampartc-src-1.3.0/include/rampart_handler_util.h0000644000076500007650000000605011202453410021750 0ustar shankarshankar/** * 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. */ #include #include #ifndef RAMPART_HANDLER_UTIL_H #define RAMPART_HANDLER_UTIL_H /** * @file rampart_handler_util.h * @brief Utilities related to handlers */ /** * @defgroup rampart_handler_util Handler Utilities * @ingroup rampart_utils * @{ */ #ifdef __cplusplus extern "C" { #endif /** * Get the security header from the header block * @param env pointer to environment struct * @param msg_ctx message context * @param soap_header header block * @return security soap header node */ AXIS2_EXTERN axiom_node_t *AXIS2_CALL rampart_get_security_header( const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axiom_soap_header_t *soap_header); /** * Creates a SOAP fault based on params described below and store in msg_ctx * @param env pointer to environment struct * @param sub_code the text of the Subcode element of a SOAP fault message * @param reason_text the text in soapenv:Reason element * @param detail_node_text the text in the soapenv:Detail element * @param msg_ctx the msg_ctx * @return void */ AXIS2_EXTERN void AXIS2_CALL rampart_create_fault_envelope( const axutil_env_t *env, const axis2_char_t *sub_code, const axis2_char_t *reason_text, const axis2_char_t *detail_node_text, axis2_msg_ctx_t *msg_ctx); /** * Get rampart configurations from the message context * @param env pointer to environment struct * @param msg_ctx message context * @param param_name name of the parameter of the configuration * @return the loaded configuration params */ AXIS2_EXTERN void *AXIS2_CALL rampart_get_rampart_configuration( const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axis2_char_t *param_name); /** * Check wether rampart is engaged or not * @param env pointer to environment struct * @param msg_ctx message context * @return if engaged returns AXIS2_TRUE, else returns AXIS2_FALSE */ AXIS2_EXTERN axis2_bool_t AXIS2_CALL rampart_is_rampart_engaged( const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx); /** @} */ #ifdef __cplusplus } #endif #endif /*RAMPART_HANDLER_UTIL_H*/ rampartc-src-1.3.0/include/oxs_xml_encryption.h0000644000076500007650000001366611202453410021526 0ustar shankarshankar/* * 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 OXS_XML_ENCRYPTION_H #define OXS_XML_ENCRYPTION_H /** * @file oxs_xml_encryption.h * @brief Does the XML encryption for OMXMLSecurity */ /** * @defgroup oxs_xml_encryption XML Encryption * @ingroup oxs * @{ */ #include #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif /** * Encrypts a given node as specified in the @enc_ctx. * A reference is taken for the EncryptedData to place the encrypted data. * @param env pointer to environment struct * @param enc_ctx encryption context * @param node the node tobe encrypted * @param enc_type_node reference to the EncryptedData node * @param key_reference_node key reference provided by STS generated tokens. * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_xml_enc_encrypt_node(const axutil_env_t *env, oxs_ctx_t * enc_ctx, axiom_node_t *node, axiom_node_t **enc_type_node, axiom_node_t *key_reference_node); /** * Decrypts a node as specified in the @enc_ctx. * A reference is taken to assign the address of the decrypted node * @param env pointer to environment struct * @param enc_ctx encryption context * @param enc_type_node the EncryptedData node which needs to be decrypted * @param decrypted_node reference to the decrypted node * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_xml_enc_decrypt_node(const axutil_env_t *env, oxs_ctx_t * enc_ctx, axiom_node_t *enc_type_node, axiom_node_t **decrypted_node); /** * Encrypts data or the content of the @content_buf as specified in the @enc_ctx. * A reference is taken for the EncryptedData to place the encrypted data * @param env pointer to environment struct * @param enc_ctx encryption context * @param content_buf the content to be encrypted. * @param enc_type_node reference to the EncryptedData node * @param key_reference_node key reference provided by STS generated tokens. * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_xml_enc_encrypt_data(const axutil_env_t *env, oxs_ctx_t * enc_ctx, oxs_buffer_t *content_buf, axiom_node_t **enc_type_node, axiom_node_t *key_reference_node); /** * Decrypts @enc_type_node and places the data inside the @result_buf * The name of the method is bit tricky as it doesn't exactly decrypts a data buffer. * @param env pointer to environment struct * @param enc_ctx encryption context * @param enc_type_node the EncryptedData node which needs to be decrypted * @param result_buf the buffer to keep the decrypted content * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_xml_enc_decrypt_data(const axutil_env_t *env, oxs_ctx_t * enc_ctx, axiom_node_t *enc_type_node, oxs_buffer_t *result_buf); /** * Encrypts a key/data in asymmetric way as specified in @asym_ctx. * This method is specifically written to support the key encryption in WS-Secruity * @param env pointer to environment struct * @param enc_ctx encryption context * @param parent parent of the EncryptedKey node * @param sym_key, the symmetric key that needs to be encrypted * @param id_list the list of nodes that are encrypted by this particular key * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_xml_enc_encrypt_key(const axutil_env_t *env, oxs_asym_ctx_t * asym_ctx, axiom_node_t *parent, oxs_key_t *sym_key, axutil_array_list_t *id_list); /** * Decrypts a key/data in asymmetric way as specified in @asym_ctx. * This method is specifically written to support the key decryption in WS-Secruity * @param env pointer to environment struct * @param enc_ctx encryption context * @param parent parent of the EncryptedKey node * @param encrypted_key_node the EncryptedKey node * @param key, the key which holds the decrypted key data * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_xml_enc_decrypt_key(const axutil_env_t *env, oxs_asym_ctx_t * asym_ctx, axiom_node_t *parent, axiom_node_t *encrypted_key_node, oxs_key_t *key); /** @} */ #ifdef __cplusplus } #endif #endif /* OXS_XML_ENCRYPTION_H */ rampartc-src-1.3.0/include/rampart_token_builder.h0000644000076500007650000001342211202453410022125 0ustar shankarshankar/* * 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. */ #include #include #include #include /** * @file rampart_token_builder.h * @brief Reference Token builfing/of rampart */ /** * @defgroup rampart_token_builder Token Builder * @ingroup rampart_utils * @{ */ #ifndef RAMPART_TOKEN_BUILDER_H #define RAMPART_TOKEN_BUILDER_H #ifdef __cplusplus extern "C" { #endif typedef enum { RTBP_UNKNOWN = 0, RTBP_EMBEDDED, RTBP_KEY_IDENTIFIER, RTBP_X509DATA_ISSUER_SERIAL, RTBP_X509DATA_X509CERTIFICATE, RTBP_THUMBPRINT } rampart_token_build_pattern_t; /** * Build a SecurityTokenReference element according to the pattern specified in @pattern. * The token will be attached to the node @parent and relavent data will be extracted from * certificate @cert. Note that this method will internally call other token building methods * specified in this header depending on the @pattern. * @param env pointer to environment struct * @param parent The parent node * @param cert The X509 certificate * @param pattern The build pattern * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_token_build_security_token_reference( const axutil_env_t *env, axiom_node_t *parent, oxs_x509_cert_t *cert, rampart_token_build_pattern_t pattern); /** * Build an Embedded token with data available in the certificate. * * * UYISDjsdaousdWEqswOIUsd * * * @param env pointer to environment struct * @param parent The parent node * @param cert The X509 certificate * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_token_build_embedded( const axutil_env_t *env, axiom_node_t *parent, oxs_x509_cert_t *cert); /** * Build a KeyIndentifer token with data available in the certificate. * * WEqswOIUsd * * @param env pointer to environment struct * @param parent The parent node * @param cert The X509 certificate * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_token_build_key_identifier( const axutil_env_t *env, axiom_node_t *parent, oxs_x509_cert_t *cert); /* * Build an X509Certificate token with data available in the certificate. * * * * MIICzjCCAjegAwIBAgIJANyD+jwekxGuMA...... * * * * @param env pointer to environment struct * @param parent The parent node * @param cert The X509 certificate * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_token_build_x509_data_x509_certificate( const axutil_env_t *env, axiom_node_t *parent, oxs_x509_cert_t *cert); /** * Build an X509IssuerSerial token with data available in the certificate. * * * * C=US, O=VeriSign, Inc., * 93243297328 * * * * @param env pointer to environment struct * @param parent The parent node * @param cert The X509 certificate * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_token_build_x509_data_issuer_serial( const axutil_env_t *env, axiom_node_t *parent, oxs_x509_cert_t *cert); /** * Build a Thumbprint Reference of the certificate. bg6I8267h0TUcPYvYE0D6k6+UJQ= * @param env pointer to environment struct * @param parent The parent node * @param cert The X509 certificate * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_token_build_thumbprint_reference( const axutil_env_t *env, axiom_node_t *parent, oxs_x509_cert_t *cert); /* @} */ #ifdef __cplusplus } #endif #endif /* !RAMPART_TOKEN_BUILDER_H */ rampartc-src-1.3.0/include/openssl_pkey.h0000644000076500007650000000611111202453410020261 0ustar shankarshankar/* * Copyright 2003-2004 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. */ #include #include #include #include #include #include #include /** * @file openssl_pkey.h * @brief holds either a public key or a private key. * The type is determined by the type attribute */ #ifndef OPENSSL_PKEY_H #define OPENSSL_PKEY_H #ifdef __cplusplus extern "C" { #endif /** @defgroup openssl_pkey OpenSSL PKEY * @ingroup openssl * @{ */ #define OPENSSL_PKEY_TYPE_UNKNOWN 0 #define OPENSSL_PKEY_TYPE_PUBLIC_KEY 1 #define OPENSSL_PKEY_TYPE_PRIVATE_KEY 2 /** Type name for struct openssl_pkey */ typedef struct openssl_pkey_t openssl_pkey_t; EVP_PKEY *AXIS2_CALL openssl_pkey_get_key( const openssl_pkey_t *pkey, const axutil_env_t *env ); axis2_char_t *AXIS2_CALL openssl_pkey_get_name( const openssl_pkey_t *pkey, const axutil_env_t *env ); int AXIS2_CALL openssl_pkey_get_size( const openssl_pkey_t *pkey, const axutil_env_t *env ); int AXIS2_CALL openssl_pkey_get_type( const openssl_pkey_t *pkey, const axutil_env_t *env ); axis2_status_t AXIS2_CALL openssl_pkey_set_key( openssl_pkey_t *pkey, const axutil_env_t *env, EVP_PKEY *key ); axis2_status_t AXIS2_CALL openssl_pkey_set_name( openssl_pkey_t *pkey, const axutil_env_t *env, axis2_char_t *name ); axis2_status_t AXIS2_CALL openssl_pkey_set_type( openssl_pkey_t *pkey, const axutil_env_t *env, int type ); axis2_status_t AXIS2_CALL openssl_pkey_load( openssl_pkey_t *pkey, const axutil_env_t *env, axis2_char_t *filename, axis2_char_t *password ); axis2_status_t AXIS2_CALL openssl_pkey_populate( openssl_pkey_t *pkey, const axutil_env_t *env, EVP_PKEY *key, axis2_char_t *name, int type ); axis2_status_t AXIS2_CALL openssl_pkey_free( openssl_pkey_t *pkey, const axutil_env_t *env ); axis2_status_t AXIS2_CALL openssl_pkey_increment_ref( openssl_pkey_t *pkey, const axutil_env_t *env); /*Create function*/ AXIS2_EXTERN openssl_pkey_t *AXIS2_CALL openssl_pkey_create(const axutil_env_t *env); /** @} */ #ifdef __cplusplus } #endif #endif /* OPENSSL_PKEY_H */ rampartc-src-1.3.0/include/secconv_security_context_token.h0000644000076500007650000002574511202453410024117 0ustar shankarshankar /* * 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 SECCONV_SECURITY_CONTEXT_TOKEN_H #define SECCONV_SECURITY_CONTEXT_TOKEN_H /** * @file secconv_security_context_token.h * @brief security context token */ #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif typedef struct security_context_token_t security_context_token_t; /** * Creates security context token * @param env Pointer to environment struct * @returns Security context token if success. NULL otherwise. */ AXIS2_EXTERN security_context_token_t *AXIS2_CALL security_context_token_create( const axutil_env_t * env); /** * Free security context token * @param sct Pointer to secuirty context token struct * @param env Pointer to environment struct * @returns AXIS2_SUCCESS if success. AXIS2_FAILURE otherwise. */ AXIS2_EXTERN axis2_status_t AXIS2_CALL security_context_token_free( security_context_token_t *sct, const axutil_env_t *env); /** * Get shared secret from security context token. Callers should not free returned buffer * @param sct Pointer to secuirty context token struct * @param env Pointer to environment struct * @returns shared secret if success. NULL otherwise. */ AXIS2_EXTERN oxs_buffer_t *AXIS2_CALL security_context_token_get_secret( security_context_token_t * sct, const axutil_env_t * env); /** * Get global id of security context token. * This id will be used when token is not included in the message * @param sct Pointer to secuirty context token struct * @param env Pointer to environment struct * @returns global id if success. NULL otherwise. */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL security_context_token_get_global_identifier( security_context_token_t * sct, const axutil_env_t * env); /** * Get local id of security context token. * This id will be used when token is included in the message * @param sct Pointer to secuirty context token struct * @param env Pointer to environment struct * @returns local id if success. NULL otherwise. */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL security_context_token_get_local_identifier( security_context_token_t * sct, const axutil_env_t * env); /** * Set shared secret of security context token. After this method is called, ownership of * the buffer will be with security context token. Users should not free it. * @param sct Pointer to secuirty context token struct * @param env Pointer to environment struct * @param buffer Pointer to shared secret * @returns AXIS2_SUCCESS if success. AXIS2_FAILURE otherwise. */ AXIS2_EXTERN axis2_status_t AXIS2_CALL security_context_token_set_secret( security_context_token_t * sct, const axutil_env_t * env, oxs_buffer_t *buffer); /** * Set global identifier of security context token. After this method is called, ownership of * global_id will be with security context token. Users should not free it. * @param sct Pointer to secuirty context token struct * @param env Pointer to environment struct * @param global_id Global identifier of security context token * @returns AXIS2_SUCCESS if success. AXIS2_FAILURE otherwise. */ AXIS2_EXTERN axis2_status_t AXIS2_CALL security_context_token_set_global_identifier( security_context_token_t * sct, const axutil_env_t * env, axis2_char_t *global_id); /** * Set local identifier of security context token. After this method is called, ownership of * local_id will be with security context token. Users should not free it. * @param sct Pointer to secuirty context token struct * @param env Pointer to environment struct * @param local_id Local identifier of security context token * @returns AXIS2_SUCCESS if success. AXIS2_FAILURE otherwise. */ AXIS2_EXTERN axis2_status_t AXIS2_CALL security_context_token_set_local_identifier( security_context_token_t * sct, const axutil_env_t * env, axis2_char_t *local_id); /** * Set WS-SecureConversation version * @param sct Pointer to secuirty context token struct * @param env Pointer to environment struct * @param is_sc10 Boolean denoting whether we need security context token as in WS-SecConv 1.0 * @returns AXIS2_SUCCESS if success. AXIS2_FAILURE otherwise. */ AXIS2_EXTERN axis2_status_t AXIS2_CALL security_context_token_set_is_sc10( security_context_token_t *sct, const axutil_env_t * env, axis2_bool_t is_sc10); /** * Get shared secret as axiom_node. Shared secret will be included inside * 'RequestedProofToken' node. This is acording to WS-Trust specification * @param sct Pointer to secuirty context token struct * @param env Pointer to environment struct * @returns valid axiom_node if success. NULL otherwise. */ AXIS2_EXTERN axiom_node_t *AXIS2_CALL security_context_token_get_requested_proof_token( security_context_token_t *sct, const axutil_env_t * env); /** * Get local id of security context token as axiom node. * This id will be used when token is included in the message * @param sct Pointer to secuirty context token struct * @param env Pointer to environment struct * @returns valid axiom node if success. NULL otherwise. */ AXIS2_EXTERN axiom_node_t *AXIS2_CALL security_context_token_get_attached_reference( security_context_token_t *sct, const axutil_env_t * env); /** * Get global id of security context token as axiom node. * This id will be used when token is not included in the message * @param sct Pointer to secuirty context token struct * @param env Pointer to environment struct * @returns valid axiom node if success. NULL otherwise. */ AXIS2_EXTERN axiom_node_t *AXIS2_CALL security_context_token_get_unattached_reference( security_context_token_t *sct, const axutil_env_t * env); /** * Get axiom node representation of security context token. * This will be included in the message if the token needs to be sent in the message * @param sct Pointer to secuirty context token struct * @param env Pointer to environment struct * @returns valid axiom node if success. NULL otherwise. */ AXIS2_EXTERN axiom_node_t *AXIS2_CALL security_context_token_get_token( security_context_token_t *sct, const axutil_env_t * env); /** * Set shared secret of security context token from proof token. This proof token will be given * by STS. * @param sct Pointer to secuirty context token struct * @param env Pointer to environment struct * @param node Pointer to proof token axiom node * @returns AXIS2_SUCCESS if success. AXIS2_FAILURE otherwise. */ AXIS2_EXTERN axis2_status_t AXIS2_CALL security_context_token_set_requested_proof_token( security_context_token_t *sct, const axutil_env_t * env, axiom_node_t *node); /** * Set local identifier of security context token from attached reference node. * @param sct Pointer to secuirty context token struct * @param env Pointer to environment struct * @param node Pointer to attached reference axiom node * @returns AXIS2_SUCCESS if success. AXIS2_FAILURE otherwise. */ AXIS2_EXTERN axis2_status_t AXIS2_CALL security_context_token_set_attached_reference( security_context_token_t *sct, const axutil_env_t * env, axiom_node_t *node); /** * Set global identifier of security context token from unattached reference node. * @param sct Pointer to secuirty context token struct * @param env Pointer to environment struct * @param node Pointer to unattached reference axiom node * @returns AXIS2_SUCCESS if success. AXIS2_FAILURE otherwise. */ AXIS2_EXTERN axis2_status_t AXIS2_CALL security_context_token_set_unattached_reference( security_context_token_t *sct, const axutil_env_t * env, axiom_node_t *node); /** * Set axiom representation of security context token * @param sct Pointer to secuirty context token struct * @param env Pointer to environment struct * @param node Pointer to security context token axiom node * @returns AXIS2_SUCCESS if success. AXIS2_FAILURE otherwise. */ AXIS2_EXTERN axis2_status_t AXIS2_CALL security_context_token_set_token( security_context_token_t *sct, const axutil_env_t * env, axiom_node_t *node); /** * Increment the reference of security context token * @param sct Pointer to secuirty context token struct * @param env Pointer to environment struct * @returns AXIS2_SUCCESS if success. AXIS2_FAILURE otherwise. */ AXIS2_EXTERN axis2_status_t AXIS2_CALL security_context_token_increment_ref( security_context_token_t *sct, const axutil_env_t * env); /** * Serializes the security context token. Caller should take the ownership of returned value * @param sct Pointer to secuirty context token struct * @param env Pointer to environment struct * @returns serialized security context token if success. NULL otherwise */ AXIS2_EXTERN axis2_char_t * AXIS2_CALL security_context_token_serialize( security_context_token_t *sct, const axutil_env_t *env); /** * Deserializes the security context token. * @param sct Pointer to secuirty context token struct * @param env Pointer to environment struct * @param serialised_node serialised string representation of security context token * @returns serialized security context token if success. NULL otherwise */ AXIS2_EXTERN axis2_status_t AXIS2_CALL security_context_token_deserialize( security_context_token_t *sct, const axutil_env_t *env, axis2_char_t *serialised_node); #ifdef __cplusplus } #endif #endif /*SECCONV_SECURITY_CONTEXT_TOKEN_H */ rampartc-src-1.3.0/include/rampart_error.h0000644000076500007650000000415211202453410020430 0ustar shankarshankar/* * 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_ERROR_H #define RAMPART_ERROR_H #include #ifdef __cplusplus extern "C" { #endif /** * @file rampart_error.h * @brief Rampart specific error codes */ /** * @defgroup rampart_error * @ingroup rampart_utils * @{ */ /** * \brief rampart error codes * * Set of error codes for rampart */ enum rampart_error_codes { /* No error */ RAMPART_ERROR_NONE = RAMPART_ERROR_CODES_START, RAMPART_ERROR_UNSUPPORTED_SECURITY_TOKEN, RAMPART_ERROR_INVALID_SECURITY, RAMPART_ERROR_INVALID_SECURITY_TOKEN, RAMPART_ERROR_FAILED_AUTHENTICATION, RAMPART_ERROR_FAILED_CHECK, RAMPART_ERROR_SECURITY_TOKEN_UNAVAILABLE, RAMPART_ERROR_RAMPART_ERROR_LAST, RAMPART_ERROR_IN_TIMESTAMP, RAMPART_ERROR_IN_USERNAMETOKEN , RAMPART_ERROR_IN_ENCRYPTED_KEY , RAMPART_ERROR_IN_ENCRYPTED_DATA , RAMPART_ERROR_IN_SIGNATURE , RAMPART_ERROR_MSG_REPLAYED , RAMPART_ERROR_IN_POLICY , RAMPART_ERROR_LAST }; typedef enum rampart_error_codes rampart_error_codes_t; /** * initialising method for error * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_error_init(); /** @} */ #ifdef __cplusplus } #endif #endif /*RAMPART_ERROR_H*/ rampartc-src-1.3.0/include/rampart_authn_provider.h0000644000076500007650000001165311202453410022334 0ustar shankarshankar/* * 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_AUTHN_PROVIDER_H #define RAMPART_AUTHN_PROVIDER_H /** * @file rampart_authn_provider.h * @brief The authentication interface of rampart. Validates a username and password pair. */ /** * @defgroup rampart_authn_provider Authentication Provider * @{ */ #include #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif enum rampart_authn_provider_status { RAMPART_AUTHN_PROVIDER_DENIED = 0, RAMPART_AUTHN_PROVIDER_GRANTED, RAMPART_AUTHN_PROVIDER_FOUND, RAMPART_AUTHN_PROVIDER_USER_FOUND, RAMPART_AUTHN_PROVIDER_USER_NOT_FOUND, RAMPART_AUTHN_PROVIDER_GENERAL_ERROR }; typedef enum rampart_authn_provider_status rampart_authn_provider_status_t; /** * Struct to authenticate username/password pair * @{ */ typedef struct rampart_authn_provider_ops rampart_authn_provider_ops_t; typedef struct rampart_authn_provider rampart_authn_provider_t; struct rampart_authn_provider_ops { /** * Check plain text passwords. If the UseranmeToken is in plain text * this function will be called. * @param authn_provider the authentication provider struct * @param env pointer to environment struct * @param msg_ctx message context * @param username the username * @param password the password in plain text * @return the status of the check */ rampart_authn_provider_status_t (AXIS2_CALL* rampart_authn_provider_check_password)( rampart_authn_provider_t *authn_provider, const axutil_env_t* env, axis2_msg_ctx_t *msg_ctx, const axis2_char_t *username, const axis2_char_t *password); /** * Check digested passwords. If the UseranmeToken is in password digest form * this function will be called. * @param authn_provider the authentication provider struct * @param env pointer to environment struct * @param msg_ctx message context * @param username the username * @param nonce the nonce or the random value of the username token * @param created the created value of the username token * @param digest the digest value of the SHA-1(password+created+nonce) * @return the status of the check */ rampart_authn_provider_status_t (AXIS2_CALL* rampart_authn_provider_check_password_digest)( rampart_authn_provider_t *authn_provider, const axutil_env_t* env, axis2_msg_ctx_t *msg_ctx, const axis2_char_t *username, const axis2_char_t *nonce, const axis2_char_t *created, const char *digest); /** * The free function to free all resources allocated * @param authn_provider the authentication provider struct * @param env pointer to environment struct * @return AXIS2_SUCCESS on success. AXIS2_FAILURE otherwise. */ axis2_status_t (AXIS2_CALL* free)( rampart_authn_provider_t *authn_provider, const axutil_env_t* env); }; struct rampart_authn_provider { rampart_authn_provider_ops_t *ops; axutil_param_t *param; }; /*************************** Function macros **********************************/ #define RAMPART_AUTHN_PROVIDER_FREE(authn_provider, env) \ ((authn_provider)->ops->free (authn_provider, env)) #define RAMPART_AUTHN_PROVIDER_CHECK_PASSWORD(authn_provider, env, msg_ctx, username, password) \ ((authn_provider)->ops->rampart_authn_provider_check_password( \ authn_provider, env, msg_ctx, username, password)) #define RAMPART_AUTHN_PROVIDER_CHECK_PASSWORD_DIGEST(authn_provider, env, msg_ctx, username, nonce, nonce_length, digest) \ ((authn_provider)->ops->rampart_authn_provider_check_password_digest( \ authn_provider, env, msg_ctx, username, nonce, nonce_length, digest)) /** @} */ #ifdef __cplusplus } #endif #endif /* RAMPART_AUTHN_PROVIDER_H */ rampartc-src-1.3.0/include/oxs_constants.h0000644000076500007650000004377611202453410020475 0ustar shankarshankar/* * 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. */ /** * @file oxs_constants.h * @brief Constants for OMXMLSecurity */ #ifndef OXS_CONSTANTS_H #define OXS_CONSTANTS_H #ifdef __cplusplus extern "C" { #endif /** @defgroup oxs OMXMLSecurity * @{ * @} */ /** * @defgroup oxs_constants OXS Constants * @ingroup oxs * @{ */ /*Default values*/ /*Key transfer algo*/ #define OXS_DEFAULT_KT_ALGO_HREF OXS_HREF_RSA_PKCS1 #define OXS_DEFAULT_SYM_ALGO OXS_HREF_AES_256_CBC #define OXS_STR_DEFAULT OXS_STR_EMBEDDED /**************************************************************** Global prefixes ****************************************************************/ #define OXS_XENC "xenc" #define OXS_DS "ds" #define OXS_WSSE "wsse" #define OXS_WSSE_11 "wsse11" #define OXS_WSU "wsu" #define OXS_WSC "wsc" #define OXS_WSSE_XMLNS "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" #define OXS_WSSE_11_XMLNS "http://docs.oasis-open.org/wss/oasis-wss-wssecurity-secext-1.1.xsd" #define OXS_WSU_XMLNS "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" /**************************************************************** ID Prefixes ****************************************************************/ #define OXS_ENCDATA_ID "EncDataID" #define OXS_ENCKEY_ID "EncKeyID" #define OXS_SIG_ID "SigID" #define OXS_CERT_ID "CertID" #define OXS_EMBEDDED_ID "EmbeddedID" #define OXS_DERIVED_ID "DKID" #define OXS_SIG_CONF_ID "SigConfID" #define OXS_LOCAL_REFERENCE_PREFIX "#" /**************************************************************** Global namespaces ****************************************************************/ #define OXS_DSIG_NS "http://www.w3.org/2000/09/xmldsig#" #define OXS_ENC_NS "http://www.w3.org/2001/04/xmlenc#" /*#define OXS_WSSE_NS "http://schemas.xmlsoap.org/ws/2002/04/secext"*/ #define OXS_WSSE_NS "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" #define OXS_WSC_NS_05_02 "http://schemas.xmlsoap.org/ws/2005/02/sc" #define OXS_WSC_NS_05_12 "http://docs.oasis-open.org/ws-sx/ws-secureconversation/200512" /**************************************************************** DSig Nodes ****************************************************************/ #define OXS_NODE_SIGNATURE "Signature" #define OXS_NODE_SIGNEDINFO "SignedInfo" #define OXS_NODE_CANONICALIZATION_METHOD "CanonicalizationMethod" #define OXS_NODE_SIGNATURE_METHOD "SignatureMethod" #define OXS_NODE_SIGNATURE_VALUE "SignatureValue" #define OXS_NODE_DIGEST_METHOD "DigestMethod" #define OXS_NODE_DIGEST_VALUE "DigestValue" #define OXS_NODE_OBJECT "Object" #define OXS_NODE_MANIFEST "Manifest" #define OXS_NODE_SIGNATUREPROPERTIES "SignatureProperties" #define OXS_NODE_SIGNATURE_CONFIRMATION "SignatureConfirmation" /*SOAP 11*/ /**************************************************************** Encryption Nodes ****************************************************************/ #define OXS_NODE_ENCRYPTED_DATA "EncryptedData" #define OXS_NODE_ENCRYPTION_METHOD "EncryptionMethod" #define OXS_NODE_ENCRYPTION_PROPERTIES "EncryptionProperties" #define OXS_NODE_ENCRYPTION_PROPERTY "EncryptionProperty" #define OXS_NODE_CIPHER_DATA "CipherData" #define OXS_NODE_CIPHER_VALUE "CipherValue" #define OXS_NODE_CIPHER_REFERENCE "CipherReference" #define OXS_NODE_REFERENCE_LIST "ReferenceList" #define OXS_NODE_DATA_REFERENCE "DataReference" #define OXS_NODE_KEY_REFERENCE "KeyReference" #define OXS_NODE_CARRIED_KEYNAME "CarriedKeyName" #define OXS_TYPE_ENC_CONTENT "http://www.w3.org/2001/04/xmlenc#Content" #define OXS_TYPE_ENC_ELEMENT "http://www.w3.org/2001/04/xmlenc#Element" /**************************************************************** KeyInfo Nodes ****************************************************************/ #define OXS_NODE_KEY_INFO "KeyInfo" #define OXS_NODE_REFERENCE "Reference" #define OXS_NODE_TRANSFORMS "Transforms" #define OXS_NODE_TRANSFORM "Transform" #define OXS_NODE_TRANSFORMATIONPARAMETERS "TransformationParameters" /**************************************************************** KeyInfo Nodes ****************************************************************/ #define OXS_NODE_BINARY_SECURITY_TOKEN "BinarySecurityToken" #define OXS_NODE_KEY_IDENTIFIER "KeyIdentifier" #define OXS_NODE_SECURITY_TOKEN_REFRENCE "SecurityTokenReference" #define OXS_NODE_EMBEDDED "Embedded" /**************************************************************** Secure Conversation Nodes ****************************************************************/ #define OXS_NODE_DERIVED_KEY_TOKEN "DerivedKeyToken" #define OXS_NODE_PROPERTIES "Properties" #define OXS_NODE_GENERATION "Generation" #define OXS_NODE_OFFSET "Offset" #define OXS_NODE_LENGTH "Length" #define OXS_NODE_LABEL "Label" #define OXS_NODE_NONCE "Nonce" #define OXS_NODE_SECURITY_CONTEXT_TOKEN "SecurityContextToken" #define OXS_NODE_IDENTIFIER "Identifier" #define OXS_VALUE_TYPE_SECURITY_CONTEXT_TOKEN_05_02 "http://schemas.xmlsoap.org/ws/2005/02/sc/sct" #define OXS_VALUE_TYPE_SECURITY_CONTEXT_TOKEN_05_12 "http://docs.oasis-open.org/ws-sx/ws-secureconversation/200512/sct" /************************ SAML nodes *************************/ #define OXS_NODE_SAML_ASSERTION "Assertion" #define OXS_NODE_SAML_PREFIX "saml" #define OXS_NODE_SAML_SUBJECT_CONFIRMATION_METHOD "ConfirmationMethod" /**************************************************************** Attributes ****************************************************************/ #define OXS_ATTR_ID "Id" #define OXS_ATTR_URI "URI" #define OXS_ATTR_TYPE "Type" #define OXS_ATTR_MIMETYPE "MimeType" #define OXS_ATTR_ENCODING "Encoding" #define OXS_ATTR_ALGORITHM "Algorithm" #define OXS_ATTR_FILTER "Filter" #define OXS_ATTR_RECIPIENT "Recipient" #define OXS_ATTR_TARGET "Target" #define OXS_ATTR_ENCODING_TYPE "EncodingType" #define OXS_ATTR_VALUE_TYPE "ValueType" #define OXS_ATTR_VALUE "Value" /**************************************************************** AES ****************************************************************/ #define OXS_NAME_AES_128_CBC "aes128-cbc" #define OXS_HREF_AES_128_CBC "http://www.w3.org/2001/04/xmlenc#aes128-cbc" #define OXS_NAME_AES_192_CBC "aes192-cbc" #define OXS_HREF_AES_192_CBC "http://www.w3.org/2001/04/xmlenc#aes192-cbc" #define OXS_NAME_AES_256_CBC "aes256-cbc" #define OXS_HREF_AES_256_CBC "http://www.w3.org/2001/04/xmlenc#aes256-cbc" #define OXS_NAME_KW_AES_128 "kw-aes128" #define OXS_HREF_KW_AES_128 "http://www.w3.org/2001/04/xmlenc#kw-aes128" #define OXS_NAME_KW_AES_192 "kw-aes192" #define OXS_HREF_KW_AES_192 "http://www.w3.org/2001/04/xmlenc#kw-aes192" #define OXS_NAME_KW_AES_256 "kw-aes256" #define OXS_HREF_KW_AES_256 "http://www.w3.org/2001/04/xmlenc#kw-aes256" /**************************************************************** BASE64 ****************************************************************/ #define OXS_NAME_BASE64 "base64" #define OXS_HREF_BASE64 "http://www.w3.org/2000/09/xmldsig#base64" /**************************************************************** DES ****************************************************************/ #define OXS_NAME_DES_KEY_VALUE "des" #define OXS_NAME_DES3_CBC "tripledes-cbc" #define OXS_HREF_DES3_CBC "http://www.w3.org/2001/04/xmlenc#tripledes-cbc" #define OXS_NAME_KW_DES3 "kw-tripledes" #define OXS_HREF_KW_DES3 "http://www.w3.org/2001/04/xmlenc#kw-tripledes" /**************************************************************** DSA ****************************************************************/ #define OXS_NAME_DSA_KEY_VALUE "dsa" #define OXS_NODE_DSA_KEY_VALUE "DSAKeyValue" #define OXS_HREF_DSA_KEY_VALUE "http://www.w3.org/2000/09/xmldsig#DSAKeyValue" #define OXS_NAME_DSA_SHA1 "dsa-sha1" #define OXS_HREF_DSA_SHA1 "http://www.w3.org/2000/09/xmldsig#dsa-sha1" /**************************************************************** HMAC ****************************************************************/ #define OXS_NAME_HMAC_SHA1 "HmacSha1" #define OXS_HREF_HMAC_SHA1 "http://www.w3.org/2000/09/xmldsig#hmac-sha1" /**************************************************************** EncryptedKey ****************************************************************/ #define OXS_NAME_ENCRYPTED_KEY "enc-key" #define OXS_NODE_ENCRYPTED_KEY "EncryptedKey" #define OXS_HREF_ENCRYPTED_KEY "http://www.w3.org/2001/04/xmlenc#EncryptedKey" /**************************************************************** C14N ****************************************************************/ #define OXS_HREF_XML_C14N "http://www.w3.org/TR/2001/REC-xml-c14n-20010315" #define OXS_HREF_XML_EXC_C14N "http://www.w3.org/2001/10/xml-exc-c14n#" #define OXS_HREF_XML_C14N_WITH_COMMENTS "http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments" #define OXS_HREF_XML_EXC_C14N_WITH_COMMENTS "http://www.w3.org/2001/10/xml-exc-c14n#WithComments" /**************************************************************** Transforms ****************************************************************/ #define OXS_HREF_TRANSFORM_XML_EXC_C14N OXS_HREF_XML_EXC_C14N #define OXS_HREF_TRANSFORM_STR_TRANSFORM "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#STR-Transform" #define OXS_HREF_TRANSFORM_ENVELOPED_SIGNATURE "http://www.w3.org/2000/09/xmldsig#enveloped-signature" /**************************************************************** KeyNAME ****************************************************************/ #define OXS_NAME_KEY_NAME "key-name" #define OXS_NODE_KEY_NAME "KeyName" /**************************************************************** KeyValue ****************************************************************/ #define OXS_NAME_KEY_VALUE "key-value" #define OXS_NODE_KEY_VALUE "KeyValue" /**************************************************************** MD5 ****************************************************************/ #define OXS_NAME_MD5 "md5" #define OXS_HREF_MD5 "http://www.w3.org/2001/04/xmldsig-more#md5" /**************************************************************** RetrievalMethod ****************************************************************/ #define OXS_NAME_RETRIEVAL_METHOD "retrieval-method" #define OXS_NODE_RETRIEVAL_METHOD "RetrievalMethod" /**************************************************************** RSA ****************************************************************/ #define OXS_NAME_RSAKEY_VALUE "rsa" #define OXS_NODE_RSAKEY_VALUE "RSAKeyValue" #define OXS_HREF_RSAKEY_VALUE "http://www.w3.org/2000/09/xmldsig#RSAKeyValue" #define OXS_NAME_RSA_MD5 "rsa-md5" #define OXS_HREF_RSA_MD5 "http://www.w3.org/2001/04/xmldsig-more#rsa-md5" #define OXS_NAME_RSA_RIPEMD160 "rsa-ripemd160" #define OXS_HREF_RSA_RIPEMD160 "http://www.w3.org/2001/04/xmldsig-more#rsa-ripemd160" #define OXS_NAME_RSA_SHA1 "rsa-sha1" #define OXS_HREF_RSA_SHA1 "http://www.w3.org/2000/09/xmldsig#rsa-sha1" #define OXS_NAME_RSA_SHA224 "rsa-sha224" #define OXS_HREF_RSA_SHA224 "http://www.w3.org/2001/04/xmldsig-more#rsa-sha224" #define OXS_NAME_RSA_SHA256 "rsa-sha256" #define OXS_HREF_RSA_SHA256 "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" #define OXS_NAME_RSA_SHA384 "rsa-sha384" #define OXS_HREF_RSA_SHA384 "http://www.w3.org/2001/04/xmldsig-more#rsa-sha384" #define OXS_NAME_RSA_SHA512 "rsa-sha512" #define OXS_HREF_RSA_SHA512 "http://www.w3.org/2001/04/xmldsig-more#rsa-sha512" #define OXS_NAME_RSA_PKCS1 "rsa-1_5" #define OXS_HREF_RSA_PKCS1 "http://www.w3.org/2001/04/xmlenc#rsa-1_5" #define OXS_NAME_RSA_OAEP "rsa-oaep-mgf1p" #define OXS_HREF_RSA_OAEP "http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p" #define OXS_NODE_RSA_OAEP_PARAMS "OAEPparams" /**************************************************************** SHA1 ****************************************************************/ #define OXS_NAME_SHA1 "sha1" #define OXS_HREF_SHA1 "http://www.w3.org/2000/09/xmldsig#sha1" #define OXS_NAME_SHA224 "sha224" #define OXS_HREF_SHA224 "http://www.w3.org/2001/04/xmldsig-more#sha224" #define OXS_NAME_SHA256 "sha256" #define OXS_HREF_SHA256 "http://www.w3.org/2001/04/xmlenc#sha256" #define OXS_NAME_SHA384 "sha384" #define OXS_HREF_SHA384 "http://www.w3.org/2001/04/xmldsig-more#sha384" #define OXS_NAME_SHA512 "sha512" #define OXS_HREF_SHA512 "http://www.w3.org/2001/04/xmlenc#sha512" #define OXS_SC_DK_NAME_P_SHA1 "P_SHA-1" #define OXS_SC_DK_HREF_P_SHA1 "http://schemas.xmlsoap.org/ws/2005/02/sc/dk/p_sha1" /**************************************************************** X509 ****************************************************************/ #define OXS_NAME_X509_DATA "x509" #define OXS_NODE_X509_DATA "X509Data" #define OXS_HREF_X509_DATA "http://www.w3.org/2000/09/xmldsig#X509Data" #define OXS_NODE_X509_CERTIFICATE "X509Certificate" #define OXS_NODE_X509_CRL "X509CRL" #define OXS_NODE_X509_SUBJECT_NAME "X509SubjectName" #define OXS_NODE_X509_ISSUER_SERIAL "X509IssuerSerial" #define OXS_NODE_X509_ISSUER_NAME "X509IssuerName" #define OXS_NODE_X509_SERIAL_NUMBER "X509SerialNumber" #define OXS_NODE_X509_SKI "X509SKI" #define OXS_NAME_RAW_X509_CERT "raw-x509-cert" #define OXS_HREF_RAW_X509_CERT "http://www.w3.org/2000/09/xmldsig#rawX509Certificate" #define OXS_NAME_X509_STORE "x509-store" /**************************************************************** SOAP 1.1/1.2 ****************************************************************/ #define OXS_NODE_ENVELOPE "Envelope" #define OXS_NODE_HEADER "Header" #define OXS_NODE_BODY "Body" #define OXS_NODE_FAULT "Fault" #define OXS_NODE_FAULT_CODE "faultcode" #define OXS_NODE_FAULT_STRING "faultstring" #define OXS_NODE_FAULT_ACTOR "faultactor" #define OXS_NODE_FAULT_DETAIL "detail" #define OXS_NODE_CODE "Code" #define OXS_NODE_REASON "Reason" #define OXS_NODE_NODE "Node" #define OXS_NODE_ROLE "Role" #define OXS_NODE_DETAIL "Detail" #define OXS_NODE_VALUE "Value" #define OXS_NODE_SUBCODE "Subcode" #define OXS_NODE_TEXT "Text" #define OXS_SOAP_FAULT_CODE_VERSION_MISMATCH "VersionMismatch" #define OXS_SOAP_FAULT_CODE_MUST_UNDERSTAND "MustUnderstand" #define OXS_SOAP_FAULT_CODE_CLIENT "Client" #define OXS_SOAP_FAULT_CODE_SERVER "Server" #define OXS_SOAP_FAULT_CODE_RECEIVER "Receiver" #define OXS_SOAP_FAULT_CODE_SENDER "Sender" #define OXS_SOAP_FAULT_DATA_ENCODNING_UNKNOWN "DataEncodingUnknown" /**************************************************************** Ext ****************************************************************/ #define OXS_ENCODING_BASE64BINARY "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" #define OXS_VALUE_X509V3 "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" #define OXS_X509_SUBJ_KI "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509SubjectKeyIdentifier" #define OXS_X509_TUMBP_PRINT_SHA1 "http://docs.oasis-open.org/wss/oasis-wss-soap-message-security-1.1#ThumbprintSHA1" #define OXS_X509_ENCRYPTED_KEY_SHA1 "http://docs.oasis-open.org/wss/oasis-wss-soap-message-security-1.1#EncryptedKeySHA1" /**************************************************************** ST References ****************************************************************/ #define OXS_STR_DIRECT_REFERENCE "DirectReference" #define OXS_STR_KEY_IDENTIFIER OXS_NODE_KEY_IDENTIFIER #define OXS_STR_EMBEDDED OXS_NODE_EMBEDDED #define OXS_STR_ISSUER_SERIAL "IssuerSerial" #define OXS_STR_THUMB_PRINT "ThumbPrint" #define OXS_STR_EXTERNAL_URI "ExternalUri" #define OXS_STR_ENCRYPTED_KEY "Encryptedkey" /**************************************************************** WS Security 1.1 ****************************************************************/ #define OXS_WSS_11_VALUE_TYPE_ENCRYPTED_KEY "http://docs.oasis-open.org/wss/oasis-wss-soap-message-security-1.1#EncryptedKey" #define OXS_NODE_ENCRYPTED_HEADER "EncryptedHeader" /*************************************************************************/ /** @} */ #ifdef __cplusplus } #endif #endif /* OXS_CONSTANTS_H*/ rampartc-src-1.3.0/include/openssl_crypt.h0000644000076500007650000000372711202453410020464 0ustar shankarshankar/* * Copyright 2003-2004 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. */ #include #include #include #include /** * @file openssl_crypt.h * @brief The encryption/decryption methods for OMXMLSecurity */ #ifndef OPENSSL_CRYPT_H #define OPENSSL_CRYPT_H #ifdef __cplusplus extern "C" { #endif /** * @defgroup openssl_crypt OpenSSL Crypt * @ingroup openssl * @{ */ /** * Encrypt or decrypts data in the @input_buf and place the result in the @output_buf. * This function works for block ciphers AES-128, AES-192, AES-256 and 3-DES * The key and the cipher name must be specified in the cipher context. * @env pointer to environment struct * @oc_ctx openssl block cipher context * @input_buf the input buffer to en/decrypt * @output_buf the output buffer to place en/decrypted result * @encrypt For encryption encrypt=OPENSSL_ENCRYPT and for decryption encrypt=OPENSSL_DECRYPT * @return the length of the en/decrypted result OR -1 if failed */ AXIS2_EXTERN int AXIS2_CALL openssl_bc_crypt(const axutil_env_t *env, openssl_cipher_ctx_t *oc_ctx, oxs_buffer_t *input_buf, oxs_buffer_t *output_buf, int encrypt); /** @} */ #ifdef __cplusplus } #endif #endif /* OPENSSL_CRYPT_H */ rampartc-src-1.3.0/include/oxs_sign_ctx.h0000644000076500007650000002157311202453410020266 0ustar shankarshankar/* * 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 OXS_SIGN_CTX_H #define OXS_SIGN_CTX_H /** * @file oxs_sign_ctx.h * @brief Keeps information relavent for a single node of signing. */ /** * @defgroup oxs_sign_ctx Signature Context * @ingroup oxs * @{ */ #include #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif /*The type of operation*/ typedef enum { OXS_SIGN_OPERATION_NONE = 0, OXS_SIGN_OPERATION_SIGN, OXS_SIGN_OPERATION_VERIFY } oxs_sign_operation_t; typedef struct oxs_sign_ctx_t oxs_sign_ctx_t; /** * Create a signature context * @env the environemnt struct * @return created signature context * */ AXIS2_EXTERN oxs_sign_ctx_t *AXIS2_CALL oxs_sign_ctx_create(const axutil_env_t *env); /** * Free a signature context. * @ctx signature context * @env the environemnt struct * @return AXIS2_SUCCESS on success or AXIS2_FAILURE on failure * **/ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sign_ctx_free(oxs_sign_ctx_t *ctx, const axutil_env_t *env); /**********************Getter functions******************************************/ /** * Get signature algorithm of the signature context * @sign_ctx the signature context * @env the environemnt struct * @return signature algorithm */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_sign_ctx_get_sign_mtd_algo( const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env); /** * Get cannocanicalization method of the signature context * @sign_ctx the signature context * @env the environemnt struct * @return cannocanicalization method */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_sign_ctx_get_c14n_mtd( const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env); /** * Get sginature valueof the signature context * @sign_ctx the signature context * @env the environemnt struct * @return signature value */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_sign_ctx_get_sig_val( const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env); /** * Get signature parts of the signature context * @sign_ctx the signature context * @env the environemnt struct * @return sgnature parts as a list */ AXIS2_EXTERN axutil_array_list_t *AXIS2_CALL oxs_sign_ctx_get_sign_parts( const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env); /** * Get x509 certificate of the signature context * @sign_ctx the signature context * @env the environemnt struct * @return x509 certificate */ AXIS2_EXTERN oxs_x509_cert_t *AXIS2_CALL oxs_sign_ctx_get_certificate( const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env); /** * Get private key of the signature context * @sign_ctx the signature context * @env the environemnt struct * @return private key */ AXIS2_EXTERN openssl_pkey_t *AXIS2_CALL oxs_sign_ctx_get_private_key( const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env); /** * Get public key of the signature context * @sign_ctx the signature context * @env the environemnt struct * @return public key */ AXIS2_EXTERN openssl_pkey_t *AXIS2_CALL oxs_sign_ctx_get_public_key( const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env); /** * Get shared secret of the signature context * @sign_ctx the signature context * @env the environemnt struct * @return the shared secret */ AXIS2_EXTERN oxs_key_t *AXIS2_CALL oxs_sign_ctx_get_secret( const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env); /** * Get the operation of the signature context * @sign_ctx the signature context * @env the environemnt struct * @return operation SIGN/VERIFY/NONE */ AXIS2_EXTERN oxs_sign_operation_t AXIS2_CALL oxs_sign_ctx_get_operation( const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env); /**********************Setter functions******************************************/ /** * Set Signature algorithm of the signature context @sign_ctx * @sign_ctx the signature context * @env the environemnt struct * @sign_mtd_algo Signature algorithm * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sign_ctx_set_sign_mtd_algo( oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, axis2_char_t *sign_mtd_algo); /** * Set Cannocanicalization method of the signature context @sign_ctx * @sign_ctx the signature context * @env the environemnt struct * @c14n_mtd Cannocanicalization method * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sign_ctx_set_c14n_mtd( oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, axis2_char_t *c14n_mtd); /** * Set signature value of the signature context @sign_ctx * @sign_ctx the signature context * @env the environemnt struct * @sig_val signature value * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sign_ctx_set_sig_val( oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, axis2_char_t *sig_val); /** * Set signature parts of the signature context @sign_ctx * @sign_ctx the signature context * @env the environemnt struct * @sign_parts signature parts * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sign_ctx_set_sign_parts( oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, axutil_array_list_t *sign_parts); /** * Set the x509 certificate of the signature context @sign_ctx * @sign_ctx the signature context * @env the environemnt struct * @certificate the x509 certificate * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sign_ctx_set_certificate( oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, oxs_x509_cert_t *certificate); /** * Set private key of the signature context @sign_ctx * @sign_ctx the signature context * @env the environemnt struct * @prv_key private key * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sign_ctx_set_private_key( oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, openssl_pkey_t *prv_key); /** * Set the public key of the signature context @sign_ctx * @sign_ctx the signature context * @env the environemnt struct * @pub_key the public key * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sign_ctx_set_public_key( oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, openssl_pkey_t *pub_key); /** * Set the shared secret of the signature context @sign_ctx * @sign_ctx the signature context * @env the environemnt struct * @secret the shared secret * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sign_ctx_set_secret( oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, oxs_key_t *secret); /** * Set the operation of the signature context @sign_ctx * @sign_ctx the signature context * @env the environemnt struct * @operation the operation * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sign_ctx_set_operation( oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, oxs_sign_operation_t operation); /** @} */ #ifdef __cplusplus } #endif #endif /* OXS_SIGN_CTX_H */ rampartc-src-1.3.0/include/openssl_cipher_property.h0000644000076500007650000001525711202453410022542 0ustar shankarshankar/* * Copyright 2003-2004 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. */ #include #include /** * @file openssl_cipher_property.h * @brief The class to store cipher properties such as name, key size, block size etc */ #ifndef OPENSSL_CIPHER_PROPERTY_H #define OPENSSL_CIPHER_PROPERTY_H /** * @defgroup openssl_cipher_property OpenSSL Cipher Property * @ingroup openssl * @{ */ #ifdef __cplusplus extern "C" { #endif /** Type name for struct openssl_cipher_property */ typedef struct openssl_cipher_property_t openssl_cipher_property_t; /** * Given the OpenSSL cipher property returns the cipher * @param cprop The OpenSSL cipher property * @param env pointer to environment struct * @return the cipher */ EVP_CIPHER * AXIS2_CALL openssl_cipher_property_get_cipher( const openssl_cipher_property_t *cprop, const axutil_env_t *env); /** * Given the OpenSSL cipher property returns the name of the property * @param cprop The OpenSSL cipher property * @param env pointer to environment struct * @return the name of the cipher property */ axis2_char_t * AXIS2_CALL openssl_cipher_property_get_name( const openssl_cipher_property_t *cprop, const axutil_env_t *env); /** * Given the OpenSSL cipher property returns the URL * Which usually is an algorithm URL * @param cprop The OpenSSL cipher property * @param env pointer to environment struct * @return the URL */ axis2_char_t * AXIS2_CALL openssl_cipher_property_get_url( const openssl_cipher_property_t *cprop, const axutil_env_t *env); /** * Given the OpenSSL cipher property returns the size of the key * @param cprop The OpenSSL cipher property * @param env pointer to environment struct * @return size of the key */ int AXIS2_CALL openssl_cipher_property_get_key_size( const openssl_cipher_property_t *cprop, const axutil_env_t *env); /** * Given the OpenSSL cipher property returns the cipher block size * @param cprop The OpenSSL cipher property * @param env pointer to environment struct * @return the block size of the cipher */ int AXIS2_CALL openssl_cipher_property_get_block_size( const openssl_cipher_property_t *cprop, const axutil_env_t *env); /** * Given the OpenSSL cipher property returns the size of the initial vector * @param cprop The OpenSSL cipher property * @param env pointer to environment struct * @return the size of the initial vector */ int AXIS2_CALL openssl_cipher_property_get_iv_size( const openssl_cipher_property_t *cprop, const axutil_env_t *env); /** * Set the Cipher for the OpenSSL cipher property * @param cprop The OpenSSL cipher property * @param env pointer to environment struct * @param cipher The cipher to be set in the property * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ axis2_status_t AXIS2_CALL openssl_cipher_property_set_cipher( openssl_cipher_property_t *cprop, const axutil_env_t *env, EVP_CIPHER *cipher); /** * Set the name for the OpenSSL cipher property * @param cprop The OpenSSL cipher property * @param env pointer to environment struct * @param name of the OpenSSL cipher property * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ axis2_status_t AXIS2_CALL openssl_cipher_property_set_name( openssl_cipher_property_t *cprop, const axutil_env_t *env, axis2_char_t *name); /** * Set the url for the OpenSSL cipher property * @param cprop The OpenSSL cipher property * @param env pointer to environment struct * @param url The URL of the OpenSSL cipher property * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ axis2_status_t AXIS2_CALL openssl_cipher_property_set_url( openssl_cipher_property_t *cprop, const axutil_env_t *env, axis2_char_t *url); /** * Set the the size of the key for the OpenSSL cipher property * @param cprop The OpenSSL cipher property * @param env pointer to environment struct * @param key_size the size of the key * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ axis2_status_t AXIS2_CALL openssl_cipher_property_set_key_size( openssl_cipher_property_t *cprop, const axutil_env_t *env, int key_size); /** * Set the size of the cipher block for the OpenSSL cipher property * @param cprop The OpenSSL cipher property * @param env pointer to environment struct * @param block_size the size of the cipher block * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ axis2_status_t AXIS2_CALL openssl_cipher_property_set_block_size( openssl_cipher_property_t *cprop, const axutil_env_t *env, int block_size); /** * Set the size of the initial vector for the OpenSSL cipher property * @param cprop The OpenSSL cipher property * @param env pointer to environment struct * @param iv_size the size of the initial vector * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ axis2_status_t AXIS2_CALL openssl_cipher_property_set_iv_size( openssl_cipher_property_t *cprop, const axutil_env_t *env, int iv_size); /** * Free the cipher property * @param cprop The OpenSSL cipher property * @param env pointer to environment struct * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ axis2_status_t AXIS2_CALL openssl_cipher_property_free(openssl_cipher_property_t * cprop, const axutil_env_t *env); /** * Create a fresh block cipher property * @param env pointer to environment struct * @return cipher_prop_ptr */ AXIS2_EXTERN openssl_cipher_property_t *AXIS2_CALL openssl_cipher_property_create(const axutil_env_t *env); /** @} */ #ifdef __cplusplus } #endif #endif /* OPENSSL_CIPHER_PROPERTY_H */ rampartc-src-1.3.0/include/trust_rst.h0000644000076500007650000002173111202453410017624 0ustar shankarshankar/* * 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_RST_H #define TRUST_RST_H #include #include #include #include #include #include #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif typedef struct trust_rst trust_rst_t; /* Create RST Context*/ AXIS2_EXTERN trust_rst_t * AXIS2_CALL trust_rst_create( const axutil_env_t *env); /* Populate RST Context from axiom_node*/ AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rst_populate_rst( trust_rst_t *rst, const axutil_env_t *env, axiom_node_t *rst_node); /*Build RST message from the created RST Context */ AXIS2_EXTERN axiom_node_t * AXIS2_CALL trust_rst_build_rst( trust_rst_t *rst, const axutil_env_t *env, axiom_node_t *parent); /*Automated RST building with RelyingParty's policy*/ AXIS2_EXTERN axiom_node_t * AXIS2_CALL trust_rst_build_rst_with_issued_token_assertion( trust_rst_t *rst, const axutil_env_t *env, rp_issued_token_t *issued_token); /* Getters & Setters */ AXIS2_EXTERN axis2_char_t * AXIS2_CALL trust_rst_get_attr_context( trust_rst_t *rst, const axutil_env_t *env); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rst_set_attr_context( trust_rst_t *rst, const axutil_env_t *env, axis2_char_t *attr_context); AXIS2_EXTERN axis2_char_t * AXIS2_CALL trust_rst_get_token_type( trust_rst_t *rst, const axutil_env_t *env); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rst_set_token_type( trust_rst_t *rst, const axutil_env_t *env, axis2_char_t *token_type); AXIS2_EXTERN axis2_char_t * AXIS2_CALL trust_rst_get_request_type( trust_rst_t *rst, const axutil_env_t *env); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rst_set_request_type( trust_rst_t *rst, const axutil_env_t *env, axis2_char_t *request_type); AXIS2_EXTERN axis2_char_t * AXIS2_CALL trust_rst_get_wsa_action( trust_rst_t *rst, const axutil_env_t *env); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rst_set_wsa_action( trust_rst_t *rst, const axutil_env_t *env, axis2_char_t *wsa_action); AXIS2_EXTERN axis2_char_t * AXIS2_CALL trust_rst_get_applies_to_addr( trust_rst_t *rst, const axutil_env_t *env); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rst_set_appliesto( trust_rst_t *rst, const axutil_env_t *env, axis2_char_t *applies_to_addr); AXIS2_EXTERN trust_claims_t * AXIS2_CALL trust_rst_get_claims( trust_rst_t *rst, const axutil_env_t *env); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rst_set_claims( trust_rst_t *rst, const axutil_env_t *env, trust_claims_t *claims); AXIS2_EXTERN trust_entropy_t * AXIS2_CALL trust_rst_get_entropy( trust_rst_t *rst, const axutil_env_t *env); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rst_set_entropy( trust_rst_t *rst, const axutil_env_t *env, trust_entropy_t *entropy); AXIS2_EXTERN trust_life_time_t * AXIS2_CALL trust_rst_get_life_time( trust_rst_t *rst, const axutil_env_t *env); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rst_set_life_time( trust_rst_t *rst, const axutil_env_t *env, trust_life_time_t *life_time); /*Key and Token Parameter Extensions*/ AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rst_set_key_type( trust_rst_t *rst, const axutil_env_t *env, axis2_char_t *key_type); AXIS2_EXTERN axis2_char_t * AXIS2_CALL trust_rst_get_key_type( trust_rst_t *rst, const axutil_env_t *env); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rst_set_key_size( trust_rst_t *rst, const axutil_env_t *env, int key_size); AXIS2_EXTERN int AXIS2_CALL trust_rst_get_key_size( trust_rst_t *rst, const axutil_env_t *env); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rst_set_authentication_type( trust_rst_t *rst, const axutil_env_t *env, axis2_char_t *authentication_type); AXIS2_EXTERN axis2_char_t * AXIS2_CALL trust_rst_get_authentication_type( trust_rst_t *rst, const axutil_env_t *env); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rst_set_signature_algorithm( trust_rst_t *rst, const axutil_env_t *env, axis2_char_t *signature_algorithm); AXIS2_EXTERN axis2_char_t * AXIS2_CALL trust_rst_get_signature_algorithm( trust_rst_t *rst, const axutil_env_t *env); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rst_set_encryption_algorithm( trust_rst_t *rst, const axutil_env_t *env, axis2_char_t *encryption_algorithm); AXIS2_EXTERN axis2_char_t * AXIS2_CALL trust_rst_get_encryption_algorithm( trust_rst_t *rst, const axutil_env_t *env); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rst_set_canonicalization_algorithm( trust_rst_t *rst, const axutil_env_t *env, axis2_char_t *canonicalization_algorithm); AXIS2_EXTERN axis2_char_t * AXIS2_CALL trust_rst_get_canonicalization_algorithm( trust_rst_t *rst, const axutil_env_t *env); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rst_set_computedkey_algorithm( trust_rst_t *rst, const axutil_env_t *env, axis2_char_t *computedkey_algorithm); AXIS2_EXTERN axis2_char_t * AXIS2_CALL trust_rst_get_computedkey_algorithm( trust_rst_t *rst, const axutil_env_t *env); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rst_set_desired_encryption( trust_rst_t *rst, const axutil_env_t *env, axiom_node_t *desired_encryption_key); AXIS2_EXTERN axiom_node_t * AXIS2_CALL trust_rst_get_desired_encryption( trust_rst_t *rst, const axutil_env_t *env); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rst_set_proof_encryption( trust_rst_t *rst, const axutil_env_t *env, axiom_node_t *proof_encryption_key); AXIS2_EXTERN axiom_node_t * AXIS2_CALL trust_rst_get_proof_encryption( trust_rst_t *rst, const axutil_env_t *env); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rst_set_usekey( trust_rst_t *rst, const axutil_env_t *env, axiom_node_t *usekey_key); AXIS2_EXTERN axiom_node_t * AXIS2_CALL trust_rst_get_usekey( trust_rst_t *rst, const axutil_env_t *env); /*FIX Usekey attr @Sig*/ AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rst_set_signwith( trust_rst_t *rst, const axutil_env_t *env, axis2_char_t *signwith); AXIS2_EXTERN axis2_char_t * AXIS2_CALL trust_rst_get_signwith( trust_rst_t *rst, const axutil_env_t *env); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rst_set_encryptwith( trust_rst_t *rst, const axutil_env_t *env, axis2_char_t *encryptwith); AXIS2_EXTERN axis2_char_t * AXIS2_CALL trust_rst_get_encryptwith( trust_rst_t *rst, const axutil_env_t *env); /*Trust Version 1 -2005/02 - http://schemas.xmlsoap.org/ws/2005/02/trust */ /*Trust Version 2 -2005/12 - http://docs.oasis-open.org/ws-sx/ws-trust/200512 */ AXIS2_EXTERN axis2_char_t * AXIS2_CALL trust_rst_get_wst_ns_uri( trust_rst_t *rst, const axutil_env_t *env); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rst_set_wst_ns_uri( trust_rst_t *rst, const axutil_env_t *env, axis2_char_t *wst_ns_uri); AXIS2_EXTERN void AXIS2_CALL trust_rst_free( trust_rst_t *rst, const axutil_env_t *env); #ifdef __cplusplus } #endif #endif rampartc-src-1.3.0/include/rampart_mod.h0000644000076500007650000000327011202453410020056 0ustar shankarshankar/* * 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_MOD_H #define RAMPART_MOD_H /** * @file rampart_mod.h * @brief Axis2 rampart module interface */ /** * @defgroup rampart_mod Rampart Module * @{ */ #include #ifdef __cplusplus extern "C" { #endif /** * Creates In handler * @param env pointer to environment struct * @param name handler name * @return Created In handler */ AXIS2_EXTERN axis2_handler_t* AXIS2_CALL rampart_in_handler_create( const axutil_env_t *env, axutil_string_t *name); /** * Creates Out handler * @param env pointer to environment struct * @param name handler name * @return Created Out handler */ AXIS2_EXTERN axis2_handler_t* AXIS2_CALL rampart_out_handler_create( const axutil_env_t *env, axutil_string_t *name); /** @} */ #ifdef __cplusplus } #endif #endif /* AXIS2_ADDR_MOD_H */ rampartc-src-1.3.0/include/rampart_constants.h0000644000076500007650000001665111202453410021322 0ustar shankarshankar/* * 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_CONSTANTS_H #define RAMPART_CONSTANTS_H /** * @file rampart_constants.h * @brief Holds constants for rampart */ /** * @defgroup rampart_utils Rampart Utilities * @{ */ #include #include #ifdef __cplusplus extern "C" { #endif /** \mainpage Rampart/C API Documentation * * \section intro_sec Introduction * * This is the API documetation of Apache Rampart/C, which is the * security module for Apache Axis2/C. * It features in many ways to protect SOAP messages exchanged. * This includes SOAP message encryption and signature as specified in WS-Security Specification. * In addition Apache Rampart/C configurations are based on security policy assertions as per WS-Security Policy specification *

We welcome your feedback on this implementation and documentation. * Please send your feedback to * rampart-c-dev@ws.apache.org * */ /*Rampart module*/ #define RAMPART_IN_HANDLER "RampartInHandler" #define RAMPART_OUT_HANDLER "RampartOutHandler" /* Rahas module */ #define RAHAS_IN_HANDLER "RahasInHandler" #define RAHAS_OUT_HANDLER "RahasOutHandler" /*Default values*/ #define RAMPART_DEFAULT_KT_ALGO OXS_DEFAULT_KT_ALGO_HREF #define RAMPART_STR_DEFAULT OXS_STR_DEFAULT #define RAMPART_TIMESTAMP_TOKEN_DEFAULT_TIME_TO_LIVE 300 /* rampart element names*/ #define RAMPART_SECURITY "Security" #define RAMPART_SECURITY_USERNAMETOKEN "UsernameToken" #define RAMPART_SECURITY_USERNAMETOKEN_USERNAME "Username" #define RAMPART_SECURITY_USERNAMETOKEN_PASSWORD "Password" #define RAMPART_SECURITY_USERNAMETOKEN_CREATED "Created" #define RAMPART_SECURITY_USERNAMETOKEN_NONCE "Nonce" #define RAMPART_SECURITY_USERNAMETOKEN_PASSWORD_ATTR_TYPE "Type" #define RAMPART_SECURITY_TIMESTAMP "Timestamp" #define RAMPART_SECURITY_TIMESTAMP_CREATED "Created" #define RAMPART_SECURITY_TIMESTAMP_EXPIRES "Expires" #define RAMPART_RAMPART "rampart" /*Rampart URIs*/ #define RAMPART_WSSE "wsse" #define RAMPART_WSSE_XMLNS "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" #define RAMPART_WSU "wsu" #define RAMPART_WSU_XMLNS "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" #define RAMPART_PASSWORD_DIGEST_URI "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest" #define RAMPART_PASSWORD_TEXT_URI "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText" #define RAMPART_INFLOW_SECURITY_POLICY "InflowSecurityPolicy" #define RAMPART_OUTFLOW_SECURITY_POLICY "OutflowSecurityPolicy" #define INFLOW_RAMPART_CONTEXT "InflowRampartContext" #define OUTFLOW_RAMPART_CONTEXT "OutflowRampartContext" #define RAMPART_CONTEXT "RampartContext" #define IN_MESSAGE_SECURITY "InMessageSecurity" #define OUT_MESSAGE_SECURITY "OutMessageSEcurity" #define RAMPART_PASSWORD_TEXT "plainText" #define RAMPART_PASSWORD_DIGEST "Digest" #define RAMPART_CONFIGURATION "RampartConfiguration" #define RAMPART_CLIENT_CONFIGURATION "RampartClientConfiguration" /************fault codes***************/ #define RAMPART_FAULT_UNSUPPORTED_SECURITY_TOKEN "wsse:UnsupportedSecurityToken" #define RAMPART_FAULT_UNSUPPORTED_ALGORITHM "wsse:UnsupportedAlgorithm" #define RAMPART_FAULT_INVALID_SECURITY "wsse:InvalidSecurity" #define RAMPART_FAULT_INVALID_SECURITY_TOKEN "wsse:InvalidSecurityToken" #define RAMPART_FAULT_FAILED_AUTHENTICATION "wsse:FailedAuthentication" #define RAMPART_FAULT_FAILED_CHECK "wsse:FailedCheck" #define RAMPART_FAULT_SECURITY_TOKEN_UNAVAILABLE "wsse:SecurityTokenUnavailable" #define RAMPART_FAULT_TRUST_REQUEST_FAILED "wst:RequestFailed" #define RAMPART_FAULT_TRUST_REQUEST_INVALID "wst:InvalidRequest" /***********fault related strings*********/ #define RAMPART_FAULT_IN_TIMESTAMP "wsse:Timestamp" #define RAMPART_FAULT_IN_USERNAMETOKEN "wsse:UsernameToken" #define RAMPART_FAULT_IN_ENCRYPTED_KEY "xenc:EncryptedKey" #define RAMPART_FAULT_IN_ENCRYPTED_DATA "xenc:EncryptedData" #define RAMPART_FAULT_IN_SIGNATURE "ds:Signature" #define RAMPART_FAULT_MSG_REPLAYED "rampc:Message-Replayed" #define RAMPART_FAULT_IN_POLICY "rampc:Policy" #define RAMPART_FAULT_ELEMENT_LOCAL_NAME "ProblemSecurityHeader" /*Dynamically set values*/ #define RAMPART_ACTION_PASSWORD "password" #define RAMPART_ACTION_ENC_USER_PASSWORD "encUserPassword" #define RAMPART_CALLBACK_SPECIFIC_PROPERTY "callbackSpecificProperty" /*Security processed results*/ #define RAMPART_SECURITY_PROCESSED_RESULTS "SecurityProcessedResults" #define RAMPART_SPR_UT_USERNAME "SPR_UT_username" #define RAMPART_SPR_UT_CREATED "SPR_UT_created" #define RAMPART_SPR_UT_NONCE "SPR_UT_nonce" #define RAMPART_SPR_UT_PASSWORD_TYPE "SPR_UT_passwordType" #define RAMPART_SPR_TS_CREATED "SPR_TS_created" #define RAMPART_SPR_TS_EXPIRES "SPR_TS_expires" #define RAMPART_SPR_UT_CHECKED "SPR_UT_Checked" #define RAMPART_SPR_TS_CHECKED "SPR_TS_Checked" #define RAMPART_SPR_ENC_CHECKED "SPR_ENC_Checked" #define RAMPART_SPR_SIG_VALUE "SPR_Sig_Val" #define RAMPART_SPR_ENDORSED_VALUE "SPR_Endorsed_Value" #define RAMPART_SPR_SIG_VERIFIED "SPR_Sig_Verified" #define RAMPART_SPR_SIG_ENCRYPTED "SPR_Sig_Encrypted" #define RAMPART_SPR_SIG_CONFIRM_FOUND "SPR_Sig_Confirmation_Found" #define RAMPART_SPR_BODY_ENCRYPTED "SPR_Body_Encrypted" #define RAMPART_YES "YES" #define RAMPART_NO "NO" #define RAMPART_STR_DIRECT_REFERENCE OXS_STR_DIRECT_REFERENCE #define RAMPART_STR_KEY_IDENTIFIER OXS_STR_KEY_IDENTIFIER #define RAMPART_STR_EMBEDDED OXS_STR_EMBEDDED #define RAMPART_STR_ISSUER_SERIAL OXS_STR_ISSUER_SERIAL #define RAMPART_STR_THUMB_PRINT OXS_STR_THUMB_PRINT #define RAMPART_STR_EXTERNAL_URI OXS_STR_EXTERNAL_URI #define RAMPART_STR_ENCRYPTED_KEY OXS_STR_ENCRYPTED_KEY #define RAMPART_RD_DEF_VALID_DURATION 60 #define RAMPART_RD_DEF_MAX_RCDS 5 #define RAMPART_SCT_ID_TYPE_UNKNOWN 0 #define RAMPART_SCT_ID_TYPE_LOCAL 1 #define RAMPART_SCT_ID_TYPE_GLOBAL 2 #define RAMPART_USERNAME_TOKEN_NONCE_LENGTH 24 #define RAMPART_ENC_TOKEN_ID "EncryptionTokenID" #define RAMPART_SIG_TOKEN_ID "SignatureTokenID" #define RAMPART_BST_ID_PREFIX "BST-" #define RAMPART_EMBED_TOKEN_ID "ID" #ifdef __cplusplus } #endif /** @} */ #endif /* RAMPART_CONSTANTS_H*/ rampartc-src-1.3.0/include/openssl_digest.h0000644000076500007650000000300411202453410020566 0ustar shankarshankar/* * Copyright 2003-2004 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. */ #include #include #include #include /** * @file openssl_digest.h * @brief Digest function implementations. Supports SHA1 and MD5 */ #ifndef OPENSSL_DIGEST #define OPENSSL_DIGEST #ifdef __cplusplus extern "C" { #endif /** * @defgroup openssl_digest OpenSSL Digest * @ingroup openssl * @{ */ /** * Calculate the digest of the input. * Caller MUST free memory * @return calculated digest */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL openssl_sha1(const axutil_env_t *env, axis2_char_t *input, int length); AXIS2_EXTERN axis2_char_t *AXIS2_CALL openssl_md5(const axutil_env_t *env, axis2_char_t *input, int length); /* @} */ #ifdef __cplusplus } #endif #endif /* OPENSSL_DIGEST */ rampartc-src-1.3.0/include/rampart_timestamp_token.h0000644000076500007650000000457411202453410022512 0ustar shankarshankar/* * 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_TIMESTAMP_TOKEN_H #define RAMPART_TIMESTAMP_TOKEN_H /** * @file rampart_timestamp_token.h * @brief Timestamp token related functions. */ /** * @defgroup rampart_timestamp_token Timestamp Token * @ingroup rampart_utils * @{ */ #ifdef __cplusplus extern "C" { #endif #include /** * Builds timestamp token. * @param env pointer to environment struct * @param sec_node security node * @param ttl Time to live. The time difference btwn Created and Expired. If it is zero or less * than zero, then Expired element will not be created. * @param with_millisecond shows whether millisecond precision is needed * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ axis2_status_t AXIS2_CALL rampart_timestamp_token_build( const axutil_env_t *env, axiom_node_t *sec_node, int ttl, axis2_bool_t with_millisecond); /** * Validates time stamp token. Validation is based in expiration time of the Expired element. * @param env pointer to environment struct * @param msg_ctx pointer to message context structure * @param ts_node Timestamp node * @param clock_skew_buffer buffer of allowable skew of time between sender and receiver * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ axis2_status_t AXIS2_CALL rampart_timestamp_token_validate( const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axiom_node_t *ts_node, int clock_skew_buffer); /* @} */ #ifdef __cplusplus } #endif #endif /*RAMPART_TIMESTAMP_TOKEN_H*/ rampartc-src-1.3.0/include/rahas_request_processor.h0000644000076500007650000000343211202453410022516 0ustar shankarshankar/* * 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 RAHAS_REQUEST_PROCESSOR_H #define RAHAS_REQUEST_PROCESSOR_H /** * @file rahas_request_processor.h * @brief Process requests related to secure conversation. */ /** * @defgroup rahas SecurityContextToken Issuer * @{ */ #ifdef __cplusplus extern "C" { #endif /** * Processes issue request * @param env pointer to environment struct * @param rst request security token struct * @param rstr request security token response struct * @param msg_ctx message context structure * @param trust_version Trust specification. Can be TRUST_VERSION_05_02 or TRUST_VERSION_05_12 * @return AXIS2_SUCCESS if processed successfully. AXIS2_FAILURE otherwise. */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rahas_process_issue_request( const axutil_env_t *env, trust_rst_t *rst, trust_rstr_t *rstr, axis2_msg_ctx_t *msg_ctx, int trust_version); /** @} */ #ifdef __cplusplus } #endif #endif /* RAHAS_REQUEST_PROCESSOR_H */ rampartc-src-1.3.0/include/trust_rstr.h0000644000076500007650000001307611202453410020011 0ustar shankarshankar /* * 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_RSTR_H #define TRUST_RSTR_H #include #include #include #include #include #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif typedef struct trust_rstr trust_rstr_t; AXIS2_EXTERN trust_rstr_t * AXIS2_CALL trust_rstr_create( const axutil_env_t *env); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rstr_free( trust_rstr_t *rstr, const axutil_env_t *env); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rstr_populate_rstr( trust_rstr_t *rstr, const axutil_env_t *env, axiom_node_t *rstr_node); AXIS2_EXTERN axiom_node_t * AXIS2_CALL trust_rstr_build_rstr( trust_rstr_t *rstr, const axutil_env_t *env, axiom_node_t *parent); AXIS2_EXTERN axis2_char_t * AXIS2_CALL trust_rstr_get_token_type( trust_rstr_t *rstr, const axutil_env_t *env); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rstr_set_token_type( trust_rstr_t *rstr, const axutil_env_t *env, axis2_char_t *token_type); AXIS2_EXTERN axis2_char_t * AXIS2_CALL trust_rstr_get_request_type( trust_rstr_t *rstr, const axutil_env_t *env); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rstr_set_request_type( trust_rstr_t *rstr, const axutil_env_t *env, axis2_char_t *request_type); AXIS2_EXTERN axiom_node_t * AXIS2_CALL trust_rstr_get_requested_security_token( trust_rstr_t *rstr, const axutil_env_t *env); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rstr_set_requested_security_token( trust_rstr_t *rstr, const axutil_env_t *env, axiom_node_t *security_token); AXIS2_EXTERN axis2_char_t * AXIS2_CALL trust_rstr_get_applies_to( trust_rstr_t *rstr, const axutil_env_t *env); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rstr_set_applies_to( trust_rstr_t *rstr, const axutil_env_t *env, axis2_char_t *applies_to); AXIS2_EXTERN axiom_node_t * AXIS2_CALL trust_rstr_get_requested_attached_reference( trust_rstr_t *rstr, const axutil_env_t *env); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rstr_set_requested_attached_reference( trust_rstr_t *rstr, const axutil_env_t *env, axiom_node_t *ref_node); AXIS2_EXTERN axiom_node_t * AXIS2_CALL trust_rstr_get_requested_unattached_reference( trust_rstr_t *rstr, const axutil_env_t *env); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rstr_set_requested_unattached_reference( trust_rstr_t *rstr, const axutil_env_t *env, axiom_node_t *ref_node); AXIS2_EXTERN axiom_node_t * AXIS2_CALL trust_rstr_get_requested_proof_token( trust_rstr_t *rstr, const axutil_env_t *env); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rstr_set_requested_proof_token( trust_rstr_t *rstr, const axutil_env_t *env, axiom_node_t *proof_token); AXIS2_EXTERN trust_entropy_t * AXIS2_CALL trust_rstr_get_entropy( trust_rstr_t *rstr, const axutil_env_t *env); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rstr_set_entropy( trust_rstr_t *rstr, const axutil_env_t *env, trust_entropy_t *entropy); AXIS2_EXTERN trust_life_time_t* AXIS2_CALL trust_rstr_get_life_time( trust_rstr_t *rstr, const axutil_env_t *env); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rstr_set_life_time( trust_rstr_t *rstr, const axutil_env_t *env, trust_life_time_t *life_time); AXIS2_EXTERN axis2_bool_t AXIS2_CALL trust_rstr_get_in_header( trust_rstr_t *rstr, const axutil_env_t *env); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rstr_set_in_header( trust_rstr_t *rstr, const axutil_env_t *env, axis2_bool_t in_header); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rstr_set_wst_ns_uri( trust_rstr_t *rstr, const axutil_env_t *env, axis2_char_t *wst_ns_uri); AXIS2_EXTERN int AXIS2_CALL trust_rstr_get_key_size( trust_rstr_t *rstr, const axutil_env_t *env); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rstr_set_key_size( trust_rstr_t *rstr, const axutil_env_t *env, int key_size); AXIS2_EXTERN axis2_char_t * AXIS2_CALL trust_rstr_get_wst_ns_uri( trust_rstr_t *rstr, const axutil_env_t *env); #ifdef __cplusplus } #endif #endif rampartc-src-1.3.0/include/oxs_x509_cert.h0000644000076500007650000002454711202453410020176 0ustar shankarshankar/* * 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 OXS_X509_CERT #define OXS_X509_CERT /** * @file oxs_x509_cert.h * @brief the OMXMLSecurity representation of an X509 certificate */ #include #include #include #include #ifdef __cplusplus extern "C" { #endif /** * @defgroup oxs_x509_cert X509 Certificate * @ingroup oxs * @{ */ typedef struct oxs_x509_cert_t oxs_x509_cert_t; /** * Create function of the X509 certificate * @param env pointer to environment struct * @return created X509 certificate **/ AXIS2_EXTERN oxs_x509_cert_t *AXIS2_CALL oxs_x509_cert_create( const axutil_env_t *env); /** * Free function of the X509 certificate * @param x509_cert the X509 certificate to be freed * @param env pointer to environment struct * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE **/ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_x509_cert_free(oxs_x509_cert_t *x509_cert, const axutil_env_t *env); /*Getters*/ /** * Get the serial number of X509 Certificate * @param x509_cert the X509 certificate * @param env pointer to environment struct * @return the serial number of X509 certificate */ AXIS2_EXTERN int AXIS2_CALL oxs_x509_cert_get_serial_number(oxs_x509_cert_t *x509_cert, const axutil_env_t *env); /** * Get the subject of X509 Certificate * @param x509_cert the X509 certificate * @param env pointer to environment struct * @return the subject of X509 certificate */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_x509_cert_get_subject(oxs_x509_cert_t *x509_cert, const axutil_env_t *env); /** * Get the issuer of X509 Certificate * @param x509_cert the X509 certificate * @param env pointer to environment struct * @return the issuer of X509 certificate */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_x509_cert_get_issuer(oxs_x509_cert_t *x509_cert, const axutil_env_t *env); /** * Get the key identifier of X509 Certificate * @param x509_cert the X509 certificate * @param env pointer to environment struct * @return the key identifier of X509 certificate */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_x509_cert_get_key_identifier(oxs_x509_cert_t *x509_cert, const axutil_env_t *env); /** * Get the finger print of X509 Certificate * @param x509_cert the X509 certificate * @param env pointer to environment struct * @return the finger print of X509 certificate */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_x509_cert_get_fingerprint(oxs_x509_cert_t *x509_cert, const axutil_env_t *env); /** * Get the expiration date of X509 Certificate * @param x509_cert the X509 certificate * @param env pointer to environment struct * @return the expiration date of X509 certificate */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_x509_cert_get_date(oxs_x509_cert_t *x509_cert, const axutil_env_t *env); /** * Get the hash of X509 Certificate * @param x509_cert the X509 certificate * @param env pointer to environment struct * @return the hash of X509 certificate */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_x509_cert_get_hash(oxs_x509_cert_t *x509_cert, const axutil_env_t *env); /** * Get the data of X509 Certificate * This is the base64 encoded string in between the --BEGIN CERTIFICATE- --END CERTIFICATE-- lines * @param x509_cert the X509 certificate * @param env pointer to environment struct * @return the data of X509 certificate */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_x509_cert_get_data(oxs_x509_cert_t *x509_cert, const axutil_env_t *env); /** * Get the public key of X509 Certificate * @param x509_cert the X509 certificate * @param env pointer to environment struct * @return the public key of X509 certificate */ AXIS2_EXTERN openssl_pkey_t *AXIS2_CALL oxs_x509_cert_get_public_key(oxs_x509_cert_t *x509_cert, const axutil_env_t *env); /*Setters*/ /** * Set the serial number of X509 Certificate * @param x509_cert the X509 certificate * @param env pointer to environment struct * @param value the serial number of X509 Certificate * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_x509_cert_set_serial_number(oxs_x509_cert_t *x509_cert, const axutil_env_t *env, int value); /** * Set the issuer of X509 Certificate * @param x509_cert the X509 certificate * @param env pointer to environment struct * @param value the issuer of X509 Certificate * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_x509_cert_set_issuer(oxs_x509_cert_t *x509_cert, const axutil_env_t *env, axis2_char_t *value); /** * Set the key identifier of X509 Certificate * @param x509_cert the X509 certificate * @param env pointer to environment struct * @param value the key identifier of X509 Certificate * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_x509_cert_set_key_identifier(oxs_x509_cert_t *x509_cert, const axutil_env_t *env, axis2_char_t *value); /** * Set the subject of X509 Certificate * @param x509_cert the X509 certificate * @param env pointer to environment struct * @param value the subject of X509 Certificate * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_x509_cert_set_subject(oxs_x509_cert_t *x509_cert, const axutil_env_t *env, axis2_char_t *value); /** * Set the finger print of X509 Certificate * @param x509_cert the X509 certificate * @param env pointer to environment struct * @param value the fingerprint of X509 Certificate * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_x509_cert_set_fingerprint(oxs_x509_cert_t *x509_cert, const axutil_env_t *env, axis2_char_t *value); /** * Set the expiration date of X509 Certificate * @param x509_cert the X509 certificate * @param env pointer to environment struct * @param value the expiration date of X509 Certificate * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_x509_cert_set_date(oxs_x509_cert_t *x509_cert, const axutil_env_t *env, axis2_char_t *value); /** * Set the hash of X509 Certificate * @param x509_cert the X509 certificate * @param env pointer to environment struct * @param value the hash of X509 Certificate * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_x509_cert_set_hash(oxs_x509_cert_t *x509_cert, const axutil_env_t *env, axis2_char_t *value); /** * Set the data of X509 Certificate. * This is the base64 encoded string in between the --BEGIN CERTIFICATE- --END CERTIFICATE-- lines * @param x509_cert the X509 certificate * @param env pointer to environment struct * @param value the data of X509 Certificate * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_x509_cert_set_data(oxs_x509_cert_t *x509_cert, const axutil_env_t *env, axis2_char_t *value); /** * Set the public key of X509 Certificate * @param x509_cert the X509 certificate * @param env pointer to environment struct * @param public_key public key of X509 Certificate * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_x509_cert_set_public_key(oxs_x509_cert_t *x509_cert, const axutil_env_t *env, openssl_pkey_t *public_key); /** * Copy contents of a certificate to another * @param x509_cert the X509 certificate, the source * @param env pointer to environment struct * @param to, another x509 certificate, the target * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_x509_cert_copy_to(oxs_x509_cert_t *x509_cert, const axutil_env_t *env, oxs_x509_cert_t *to); AXIS2_EXTERN axis2_char_t * AXIS2_CALL oxs_x509_cert_get_common_name(oxs_x509_cert_t *x509_cert, const axutil_env_t *env); AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_x509_cert_set_common_name(oxs_x509_cert_t *x509_cert, const axutil_env_t *env, axis2_char_t *common_name); /** @} */ #ifdef __cplusplus } #endif #endif /* OXS_X509_CERT */ rampartc-src-1.3.0/include/saml.h0000644000076500007650000021041411202453410016505 0ustar shankarshankar/* * 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 SAML_H #define SAML_H #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif #define SAML_VERSION_MAX 16 #define SAML_URI_LEN_MAX 2048 #define SAML_ARRAY_LIST_DEF 4 #define SAML_PREFIX "saml" #define SAML_NMSP_URI "urn:oasis:names:tc:SAML:1.0:assertion" #define SAML_XML_TYPE "type" #define SAML_XSI_NS "http://www.w3.org/2001/XMLSchema-instance" #define SAML_XSI "xsi" #define SAML_MAJORVERSION "MajorVersion" #define SAML_MINORVERSION "MinorVersion" #define SAML_ASSERTION_ID "AssertionID" #define SAML_ISSUER "Issuer" #define SAML_ISSUE_INSTANT "IssueInstant" #define SAML_STATEMENT "Statement" #define SAML_SUBJECT_STATEMENT "SubjectStatement" #define SAML_AUTHENTICATION_STATEMENT "AuthenticationStatement" #define SAML_AUTHORIZATION_DECISION_STATEMENT "AuthorizationDecisionStatement" #define SAML_ATTRIBUTE_STATEMENT "AttributeStatement" #define SAML_CONDITIONS "Conditions" #define SAML_ADVICE "Advice" #define SAML_NOT_BEFORE "NotBefore" #define SAML_NOT_ON_OR_AFTER "NotOnOrAfter" #define SAML_SIGNATURE "Signature" #define SAML_EMAIL_ADDRESS "#emailAddress" #define SAML_X509_SUBJECT_NAME "#X509SubjectName" #define SAML_WINDOWS_DOMAIN_QUALIFIED_NAME "#WindowsDomainQualifiedName" #define SAML_NAME_QUALIFIER "NameQualifier" #define SAML_FORMAT "Format" #define SAML_NAME_IDENTIFIER "NameIdentifier" #define SAML_SUBJECT_CONFIRMATION "SubjectConfirmation" #define SAML_CONFIRMATION_METHOD "ConfirmationMethod" #define SAML_SUBJECT_CONFIRMATION_DATA "SubjectConfirmationData" #define SAML_KEY_INFO "KeyInfo" #define SAML_SUBJECT "Subject" #define SAML_AUDIENCE "Audience" #define SAML_AUDIENCE_RESTRICTION_CONDITION_TYPE "AudienceRestrictionConditionType" #define SAML_AUDIENCE_RESTRICTION_CONDITION "AudienceRestrictionCondition" #define SAML_AUTHENTICATION_METHOD "AuthenticationMethod" #define SAML_AUTHENTICATION_INSTANT "AuthenticationInstant" #define SAML_IP_ADDRESS "IPAddress" #define SAML_DNS_ADDRESS "DNSAddress" #define SAML_SUBJECT_LOCALITY "SubjectLocality" #define SAML_AUTHORITY_BINDING "AuthorityBinding" #define SAML_AUTHORITY_KIND "AuthorityKind" #define SAML_LOCATION "Location" #define SAML_BINDING "Binding" #define SAML_RESOURCE "Resource" #define SAML_DECISION "Decision" #define SAML_ACTION "Action" #define SAML_NAMESPACE "Namespace" #define SAML_ASSERTION_ID_REFERENCE "AssertionIDReference" #define SAML_ASSERTION "Assertion" #define SAML_ACTION "Action" #define SAML_EVIDENCE "Evidence" #define SAML_ATTRIBUTE_NAME "AttributeName" #define SAML_ATTRIBUTE_NAMESPACE "AttributeNamespace" #define SAML_ATTRIBUTE_VALUE "AttributeValue" #define SAML_ATTRIBUTE "Attribute" #define SAML_ATTRIBUTE_DESIGNATOR "AttributeDesignator" #define SAML_SUB_CONFIRMATION_HOLDER_OF_KEY "urn:oasis:names:tc:SAML:1.0:cm:holder-of-key" #define SAML_SUB_CONFIRMATION_SENDER_VOUCHES "urn:oasis:names:tc:SAML:1.0:cm:sender-vouches" #define SAML_SUB_CONFIRMATION_ARTIFACT "urn:oasis:names:tc:SAML:1.0:cm:artifact-01" #define SAML_SUB_CONFIRMATION_BEARER "urn:oasis:names:tc:SAML:1.0:cm:bearer" #define SAML_AUTH_METHOD_URI_PASSWORD "urn:oasis:names:tc:SAML:1.0:am:password" #define SAML_AUTH_METHOD_URI_KERBEROS "urn:ietf:rfc:1510" #define SAML_AUTH_METHOD_URI_SRP "urn:ietf:rfc:2945" #define SAML_AUTH_METHOD_URI_HARDWARE_TOKEN "urn:oasis:names:tc:SAML:1.0:am:HardwareToken" #define SAML_AUTH_METHOD_URI_SSL_TLS "urn:ietf:rfc:2246" #define SAML_AUTH_METHOD_URI_X509 "urn:oasis:names:tc:SAML:1.0:am:X509-PKI" #define SAML_AUTH_METHOD_URI_PGP "urn:oasis:names:tc:SAML:1.0:am:PGP" #define SAML_AUTH_METHOD_URI_SPKI "urn:oasis:names:tc:SAML:1.0:am:SPKI" #define SAML_AUTH_METHOD_URI_XKMS "urn:oasis:names:tc:SAML:1.0:am:XKMS" #define SAML_AUTH_METHOD_URI_XML_DS "urn:ietf:rfc:3075" #define SAML_AUTH_METHOD_URI_UNSPECIFIED "urn:oasis:names:tc:SAML:1.0:am:unspecified" #define SAML_ACTION_URI_RWEDC_N "urn:oasis:names:tc:SAML:1.0:action:rwedc-negation" #define SAML_ACTION_URI_RWEDC "urn:oasis:names:tc:SAML:1.0:action:rwedc" #define SAML_ACTION_READ "Read" #define SAML_ACTION_WRITE "Write" #define SAML_ACTION_EXECUTE "Execute" #define SAML_ACTION_DELETE "Delete" #define SAML_ACTION_CONTROL "Control" #define SAML_ACTION_READ_N "~Read" #define SAML_ACTION_WRITE_N "~Write" #define SAML_ACTION_EXECUTE_N "~Execute" #define SAML_ACTION_DELETE_N "~Delete" #define SAML_ACTION_CONTROL_N "~Control" #define SAML_MAJOR_VERSION "1" typedef struct saml_assertion_s saml_assertion_t; #ifndef SAML_DECLARE #define SAML_DECLARE(type) AXIS2_EXTERN type AXIS2_CALL #endif /* Defines the possible values to be reported as the status of an * authorization decision statement. */ typedef enum decision_type { PERMIT = 0, DENY, INDETERMINATE } decision_type_t; typedef enum { SAML_COND_UNSPECFIED = 0, SAML_COND_AUDI_RESTRICTION } saml_cond_type_t; typedef struct condition_s { saml_cond_type_t type; void *cond; } saml_condition_t; typedef struct saml_audi_restriction_cond_s { axutil_array_list_t *audiences; } saml_audi_restriction_cond_t; typedef struct saml_advise_s { int a; } saml_advise_t; typedef enum { SAML_STMT_UNSPECIFED = 0, SAML_STMT_SUBJECTSTATEMENT, SAML_STMT_AUTHENTICATIONSTATEMENT, SAML_STMT_AUTHORIZATIONDECISIONSTATEMENT, SAML_STMT_ATTRIBUTESTATEMENT } saml_stmt_type_t; typedef struct { saml_stmt_type_t type; void *stmt; } saml_stmt_t; typedef struct saml_named_id_s { /* The security or administrative domain that qualifies the name of * the subject */ axis2_char_t *name_qualifier; /* The syntax used to describe the name of the subject */ axis2_char_t *format; axis2_char_t *name; } saml_named_id_t; typedef struct saml_subject_s { saml_named_id_t *named_id; /* URI reference that identifies a protocol to be used to authenticate * the subject */ axutil_array_list_t *confirmation_methods; /* An XML Signature element that specifies a cryptographic key held by * the subject */ axiom_node_t *key_info; /* Additional authentication information to be used by a specific * authentication protocol */ axiom_node_t *confirmation_data; } saml_subject_t; typedef struct saml_subject_stmt_s { saml_subject_t *subject; } saml_subject_stmt_t; typedef struct saml_action { /* URI for the specified action to be performed */ char *name_space; /* An action to be performed on the data */ char *data; } saml_action_t; typedef struct saml_evidence_s { /* Specifies an assertion by reference to the value of the assertion’s * AssertionID attribute */ axutil_array_list_t *assertion_ids; /* Specifies an assertion by value */ axutil_array_list_t *assertions; } saml_evidence_t; typedef struct saml_subject_locality { /* The IP address of the system entity that was authenticated */ axis2_char_t *ip; /* The DNS address of the system entity that was authenticated */ axis2_char_t *dns; } saml_subject_locality_t; typedef struct saml_auth_binding { /* The type of SAML Protocol queries to which the authority described * by this element will respond */ axis2_char_t *auth_kind; /* A URI reference describing how to locate and communicate with the * authority */ axis2_char_t *location; /* A URI reference identifying the SAML protocol binding to use * in communicating with the authority */ axis2_char_t *binding; } saml_auth_binding_t; typedef struct saml_auth_stmt { saml_subject_t *subject; /* A URI reference that specifies the type of authentication that took place */ axis2_char_t *auth_method; /* Specifies the time at which the authentication took place */ axutil_date_time_t *auth_instanse; /* * Specifies the DNS domain name and IP address for the system entity from which the Subject was * apparently authenticated */ /*saml_subject_locality_t *sub_locality;*/ axis2_char_t *ip; axis2_char_t *dns; /* Indicates that additional information about the subject of the statement may be available */ axutil_array_list_t *auth_binding; } saml_auth_stmt_t; typedef struct saml_auth_desicion_stmt { saml_subject_t *subject; /* A URI reference identifying the resource to which access authorization */ char *resource; /* The decision rendered by the issuer with respect to the specified resource */ char *decision; /* The set of actions authorized to be performed on the specified resource */ axutil_array_list_t *action; /* A set of assertions that the issuer relied on in making the decision */ saml_evidence_t *evidence; } saml_auth_desicion_stmt_t; typedef struct saml_attr_s { /* The name of the attribute */ char *attr_name; /* The namespace in which the AttributeName elements are interpreted */ char *attr_nmsp; axutil_array_list_t *attr_value; } saml_attr_t; typedef struct saml_attr_stmt_s { saml_subject_t *subject; /* An attribute */ axutil_array_list_t *attribute; } saml_attr_stmt_t; typedef struct saml_attr_desig_s { axis2_char_t *attr_name; axis2_char_t *attr_nmsp; } saml_attr_desig_t; struct saml_assertion_s { /* majod version */ axis2_char_t *major_version; /* minor version */ axis2_char_t *minor_version; /* id */ axis2_char_t *assertion_id; /* uri representing the issuer */ axis2_char_t *issuer; /* time instant of the issue */ axutil_date_time_t *issue_instant; /* specifies the time instant at which the validity interval begins */ axutil_date_time_t *not_before; /* specifies the time instant at which the validity interval has ended */ axutil_date_time_t *not_on_or_after; /* SAML condition */ axutil_array_list_t *conditions; /* An XML Signature that authenticates the assertion */ axiom_node_t *signature; /* array list containing the statements */ axutil_array_list_t *statements; /* information about the signing */ oxs_sign_ctx_t *sign_ctx; /* The xml node which is used to build the assertion */ axiom_node_t *ori_xml; }; /* assertion */ /* * Creates a saml assertion. * @param env pointer to environment struct */ AXIS2_EXTERN saml_assertion_t *AXIS2_CALL saml_assertion_create( const axutil_env_t *env); /* * Free a saml assertion * @param env pointer to environment struct */ AXIS2_EXTERN void AXIS2_CALL saml_assertion_free( saml_assertion_t *assertion, const axutil_env_t *env); /* * Build the saml assertion from a axiom node. * @param assertion assertion to be populated * @param env pointer to environment struct */ AXIS2_EXTERN int AXIS2_CALL saml_assertion_build( saml_assertion_t *a, axiom_node_t *node, const axutil_env_t *env); /* * Serialize a saml assertion to a om node. * @param assertion assertion to be serialized * @param parent if specified created node will be a child of this * @param env pointer to environment struct */ AXIS2_EXTERN axiom_node_t * AXIS2_CALL saml_assertion_to_om( saml_assertion_t *assertion, axiom_node_t *parent, const axutil_env_t *env); /* * Returns all the condition in the assertion. * @param assertion assertion object * @param env pointer to environment struct */ AXIS2_EXTERN axutil_array_list_t * AXIS2_CALL saml_assetion_get_conditions( saml_assertion_t *assertion, const axutil_env_t *env); /* * Returns all the statements in the assertion. * @param assertion SAML assertion object * @param env pointer to environment struct */ AXIS2_EXTERN axutil_array_list_t * AXIS2_CALL saml_assertion_get_statements( saml_assertion_t *assertion, const axutil_env_t *env); /* * Set the conditions for the assertion. If there are conditions already * specified, they will be freed. * @param assertion SAML assertion object * @param env pointer to environment struct * @param list array list containing the conditions */ AXIS2_EXTERN int AXIS2_CALL saml_assertion_set_conditions( saml_assertion_t *assertion, const axutil_env_t *env, axutil_array_list_t *list); /* * Add a condition to the assertin. * @param assertion SAML assertion object * @param env pointer to environment struct * @param cond a pointer to a condition to be added */ AXIS2_EXTERN int AXIS2_CALL saml_assertion_add_condition( saml_assertion_t *assertion, const axutil_env_t *env, saml_condition_t *cond); /* * Remove a condition from the assertion. * @param assertion SAML assertion object * @param env pointer to environment struct */ AXIS2_EXTERN int AXIS2_CALL saml_assertion_remove_condition( saml_assertion_t *assertion, const axutil_env_t *env, int index); /* * Set the statements for the assertion. If there are statements already * specified, they will be freed. * @param assertion SAML assertion object * @param env pointer to environment struct * @param list array list containing the statements */ AXIS2_EXTERN int AXIS2_CALL saml_assertion_set_statements( saml_assertion_t *assertion, const axutil_env_t *env, axutil_array_list_t *list); /* * Add a statement to the assertin. * @param assertion SAML assertion object * @param env pointer to environment struct * @param cond a pointer to a statement to be added */ AXIS2_EXTERN int AXIS2_CALL saml_assertion_add_statement( saml_assertion_t *assertion, const axutil_env_t *env, saml_stmt_t *stmt); /* * Remove a statement from the assertion. * @param assertion SAML assertion object * @param env pointer to environment struct */ AXIS2_EXTERN int AXIS2_CALL saml_assertion_remove_statement( saml_assertion_t *assertion, const axutil_env_t *env, int index); /* * Set the minor vertion of the assertion * @param assertion SAML assertion object * @param env pointer to environment struct * @param version minor version number */ AXIS2_EXTERN int AXIS2_CALL saml_assertion_set_minor_version( saml_assertion_t *assertion, const axutil_env_t *env, int version); /* * Set the minor vertion of the assertion * @param assertion SAML assertion object * @param env pointer to environment struct */ AXIS2_EXTERN int AXIS2_CALL saml_assertion_set_issuer( saml_assertion_t *assertion, const axutil_env_t *env, axis2_char_t *issuer); /* * Set the issuer of the assertion * @param assertion SAML assertion object * @param env pointer to environment struct * @instant time of the saml issue */ AXIS2_EXTERN int AXIS2_CALL saml_assertion_set_issue_instant( saml_assertion_t *assertion, const axutil_env_t *env, axutil_date_time_t *instant); /* * Specifies the time instant at which the validity interval begins. * @param assertion SAML assertion object * @param env pointer to environment struct * @instant time at which validity interval begins */ AXIS2_EXTERN int AXIS2_CALL saml_assertion_set_not_before( saml_assertion_t *assertion, const axutil_env_t *env, axutil_date_time_t *time); /* * Specifies the time instant at which the validity interval has ended * @param assertion SAML assertion object * @param env pointer to environment struct * @instant time at which validity interval has ended */ AXIS2_EXTERN int AXIS2_CALL saml_assertion_set_not_on_or_after( saml_assertion_t *assertion, const axutil_env_t *env, axutil_date_time_t *time); /* * Return SAML authority that created the assertion. The name of the issuer * is provided as a string and it is unambiguous to the relying party. * @param assertion SAML assertion object * @param env pointer to environment struct */ AXIS2_EXTERN axis2_char_t * AXIS2_CALL saml_assertion_get_issuer( saml_assertion_t *assertion, const axutil_env_t *env); /* * Return the time instant of issue. * @param assertion SAML assertion object * @param env pointer to environment struct */ AXIS2_EXTERN axutil_date_time_t * AXIS2_CALL saml_assertion_get_issue_instant( saml_assertion_t *assertion, const axutil_env_t *env); /* * Get the time instant at which the validity interval begins. * @param assertion SAML assertion object * @param env pointer to environment struct */ AXIS2_EXTERN axutil_date_time_t * AXIS2_CALL saml_assertion_get_not_before( saml_assertion_t *assertion, const axutil_env_t *env); /* * Get the time instant at which the validity interval has ended * @param assertion SAML assertion object * @param env pointer to environment struct */ AXIS2_EXTERN axutil_date_time_t * AXIS2_CALL saml_assertion_get_not_on_or_after( saml_assertion_t *assertion, const axutil_env_t *env); /* sign methods */ /* * Get weather a assertion is signed. This is set when the Assertion is built * from a om node. * @param assertion SAML assertion object * @param env pointer to environment struct * @return AXIS2_TRUE if signed. */ AXIS2_EXTERN int AXIS2_CALL saml_assertion_is_signed( saml_assertion_t *assertion, const axutil_env_t *env); /* * Get weather a assertion is set to be signed. This applies when building * the SAML object programmatically. * @param assertion SAML assertion object * @param env pointer to environment struct * @return AXIS2_TRUE if the object model is set to be signed. */ AXIS2_EXTERN int AXIS2_CALL saml_assertion_is_sign_set( saml_assertion_t *assertion, const axutil_env_t *env); /* * Verify the assertion according to the sign context set in the * saml_assertion_set_default_signature or saml_assertion_set_signature method. * @param assertion SAML assertion object * @param env pointer to environment struct */ AXIS2_EXTERN int AXIS2_CALL saml_assertion_signature_verify( saml_assertion_t *assertion, const axutil_env_t *env); /* * Sign the assertion using the information set in the * saml_assertion_set_default_signature or saml_assertion_set_signature method. * @param assertion SAML assertion object * @param env pointer to environment struct */ AXIS2_EXTERN int AXIS2_CALL saml_assertion_sign( saml_assertion_t *assertion, axiom_node_t *node, const axutil_env_t *env); /* * Remove the information set for signing or verifying the assertion. * @param assertion SAML assertion object * @param env pointer to environment struct */ AXIS2_EXTERN int AXIS2_CALL saml_assertion_unsign( saml_assertion_t *assertion, const axutil_env_t *env); /* * Set the information required to sign the message. * @param assertion SAML assertion object * @param env pointer to environment struct * @param sign_ctx oxs_sign_ctx_t object which contains the sign information */ AXIS2_EXTERN int AXIS2_CALL saml_assertion_set_default_signature( saml_assertion_t *assertion, const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx); /* * Set the information required to sign the message. * @param assertion SAML assertion object * @param env pointer to environment struct * @param sign_ctx oxs_sign_ctx_t object which contains the sign information */ AXIS2_EXTERN int AXIS2_CALL saml_assertion_set_signature( saml_assertion_t *assertion, const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx); /* statement */ /* * Create a saml statement. Statement is a generic object which can hold * tatement object can hold other statements like Autherization statements. * @param env pointer to environment struct * @return saml_stmt object to hold other staments */ AXIS2_EXTERN saml_stmt_t * AXIS2_CALL saml_stmt_create( const axutil_env_t *env); /* * Free a saml statment. * @param stmt SAML stmt object * @param env pointer to environment struct */ AXIS2_EXTERN void AXIS2_CALL saml_stmt_free( saml_stmt_t *stmt, const axutil_env_t *env); /* * Build a saml statement from a XML node. The statement types that are * supported are Authentication Statement, Attribute Statement, * Authentication Dicision Statement. * @param stmt SAML stmt object * @param env pointer to environment struct */ AXIS2_EXTERN int AXIS2_CALL saml_stmt_build( saml_stmt_t *stmt, axiom_node_t *node, const axutil_env_t *env); /* * Serialize a statement to a axiom node. * @param stmt SAML stmt object * @param parent if specified created node will be a child of this * @param env pointer to environment struct */ AXIS2_EXTERN axiom_node_t * AXIS2_CALL saml_stmt_to_om(saml_stmt_t *stmt, axiom_node_t *parent, const axutil_env_t *env); /* * Get the type of the statement. * @param stmt SAML stmt object * @param env pointer to environment struct * @return statment type as saml_stmt_type_t */ AXIS2_EXTERN saml_stmt_type_t AXIS2_CALL saml_stmt_get_type(saml_stmt_t *stmt, const axutil_env_t *env); /* * Return the specific stament in this statement. * @param stmt SAML stmt object * @param env pointer to environment struct */ AXIS2_EXTERN saml_stmt_t * AXIS2_CALL saml_stmt_get_stmt(saml_stmt_t *stmt, const axutil_env_t *env); /* * Set the type of statement. * @param stmt SAML stmt object * @param env pointer to environment struct * @param type type of the statement as saml_stmt_type_t */ AXIS2_EXTERN int AXIS2_CALL saml_stmt_set_type(saml_stmt_t *stmt, const axutil_env_t *env, saml_stmt_type_t type); /* * Set the statement. If a statment is already specified it will be freed. * @param stmt SAML stmt object * @param env pointer to environment struct * @param st pointer to the statement to be set * @param type type of the statement as saml_stmt_type_t */ AXIS2_EXTERN int AXIS2_CALL saml_stmt_set_stmt(saml_stmt_t *stmt, const axutil_env_t *env, void *st, saml_stmt_type_t type); /*AXIS2_EXTERN int AXIS2_CALL saml_id_init(saml_id_t *id, const axutil_env_t *env);*/ AXIS2_EXTERN axis2_char_t * AXIS2_CALL saml_id_generate_random_bytes(const axutil_env_t *env); /*AXIS2_EXTERN void AXIS2_CALL saml_id_uninit(saml_id_t *id, const axutil_env_t *env);*/ /* AuthorityBinding */ /* * Creates a SAML AuthorityBinding. * @param env pointer to environment struct */ AXIS2_EXTERN saml_auth_binding_t * AXIS2_CALL saml_auth_binding_create(const axutil_env_t *env); /* * Free a SAML Autherity binding. * @param auth_bind SAML Autherity binding object * @param env pointer to environment struct */ AXIS2_EXTERN void AXIS2_CALL saml_auth_binding_free(saml_auth_binding_t *auth_bind, const axutil_env_t *env); /* * Create a SAML autherity binding from a XML node. * @param auth_bind SAML Autherity binding object * @param node XML node containing the autherity binding * @param env pointer to environment struct */ AXIS2_EXTERN int AXIS2_CALL saml_auth_binding_build(saml_auth_binding_t *auth_bind, axiom_node_t *node, const axutil_env_t *env); /* * Serialize an auth binding to axiom node * @param auth_bind SAML Autherity binding object * @param parent if specified created node will be a child of this node * @param env pointer to environment struct */ AXIS2_EXTERN axiom_node_t * AXIS2_CALL saml_auth_binding_to_om(saml_auth_binding_t *auth_binding, axiom_node_t *parent, const axutil_env_t *env); /* * Return the type of SAML protocol queries to which the authority described * by this element will respond. * @param auth_bind SAML Autherity binding object * @param env pointer to environment struct */ AXIS2_EXTERN axis2_char_t * AXIS2_CALL saml_auth_binding_get_authoity_kind(saml_auth_binding_t *auth_bind, const axutil_env_t *env); /* * Return the URI identifying the SAML protocol binding to use in * communicating with the authority. * @param auth_bind SAML Autherity binding object * @param env pointer to environment struct */ AXIS2_EXTERN axis2_char_t * AXIS2_CALL saml_auth_binding_get_binding(saml_auth_binding_t *auth_binding, const axutil_env_t *env); /* * Return a URI describing how to locate and communicate with the authority * @param auth_bind SAML Autherity binding object * @param env pointer to environment struct */ AXIS2_EXTERN axis2_char_t * AXIS2_CALL saml_auth_binding_get_location(saml_auth_binding_t *auth_bind, const axutil_env_t *env); /* * Set the type of SAML protocol queries to which the authority described * by this element will respond. * @param auth_bind SAML Autherity binding object * @param env pointer to environment struct * @param auth_kind A string representing the SAML protocol queries */ AXIS2_EXTERN int AXIS2_CALL saml_auth_binding_set_authority_kind(saml_auth_binding_t *auth_bind, const axutil_env_t *env, axis2_char_t *auth_kind); /* * Set the URI identifying the SAML protocol binding to use in * communicating with the authority. * @param auth_bind SAML Autherity binding object * @param env pointer to environment struct * @param binding URI identifying the SAML protocol binding */ AXIS2_EXTERN int AXIS2_CALL saml_auth_binding_set_binding(saml_auth_binding_t *auth_bind, const axutil_env_t *env, axis2_char_t *binding); /* * Set a URI describing how to locate and communicate with the authority * @param auth_bind SAML Autherity binding object * @param env pointer to environment struct * @param location URI describing location and communication protocol */ AXIS2_EXTERN int AXIS2_CALL saml_auth_binding_set_location(saml_auth_binding_t *auth_bind, const axutil_env_t *env, axis2_char_t *location); /* subject locality */ /* * Create a SAML subject locality. * @param env pointer to environment struct */ AXIS2_EXTERN saml_subject_locality_t * AXIS2_CALL saml_subject_locality_create(const axutil_env_t *env); /* * Free a SAML subject locality. * @param sub_locality SAML subject locality object * @param env pointer to environment struct */ AXIS2_EXTERN void AXIS2_CALL saml_subject_locality_free(saml_subject_locality_t *sub_locality, const axutil_env_t *env); /* * Populate a SAML subject locality from a XML node containing a SAML * subject locality. * @param sub_locality SAML subject locality object * @param node XML node containing the SAML subject locality * @param env pointer to environment struct */ AXIS2_EXTERN int AXIS2_CALL saml_subject_locality_build(saml_subject_locality_t *sub_locality, axiom_node_t *node, const axutil_env_t *env); /* * Serialize a subject locality to an axiom node. * @param sub_locality SAML subject locality object * @param parent if specified created node will be a child of this node * @param env pointer to environment struct */ AXIS2_EXTERN axiom_node_t *AXIS2_CALL saml_subject_locality_to_om(saml_subject_locality_t *sub_locality, axiom_node_t *parent, const axutil_env_t *env); /* * Return the IP address of the system entity that was authenticated. * @param sub_locality SAML subject locality object * @param env pointer to environment struct * @return IP address */ AXIS2_EXTERN axis2_char_t * AXIS2_CALL saml_subject_locality_get_ip(saml_subject_locality_t *sub_locality, const axutil_env_t *env); /* * Return the DNS address of the system entity that was authenticated. * @param sub_locality SAML subject locality object * @param env pointer to environment struct * @return DNS address */ AXIS2_EXTERN axis2_char_t * AXIS2_CALL saml_subject_locality_get_dns(saml_subject_locality_t *sub_locality, const axutil_env_t *env); /* * Set the IP address of the system entity that was authenticated. * @param sub_locality SAML subject locality object * @param env pointer to environment struct * @param ip IP address */ AXIS2_EXTERN int AXIS2_CALL saml_subject_locality_set_ip(saml_subject_locality_t *sub_locality, const axutil_env_t *env, axis2_char_t *ip); /* * Set the DNS address of the system entity that was authenticated. * @param sub_locality SAML subject locality object * @param env pointer to environment struct * @param ip DNS address */ AXIS2_EXTERN int AXIS2_CALL saml_subject_locality_set_dns(saml_subject_locality_t *sub_locality, const axutil_env_t *env, axis2_char_t *dns); /* subject */ /* * Create a SAML subject * @param env pointer to environment struct */ AXIS2_EXTERN saml_subject_t * AXIS2_CALL saml_subject_create(const axutil_env_t *env); /* * Free a SAML subject * @param subject SAML subject object * @param env pointer to environment struct */ AXIS2_EXTERN void AXIS2_CALL saml_subject_free(saml_subject_t *subject, const axutil_env_t *env); /* * Populates a SAML subject from a XML node containing a SAML subject. * @param subject SAML subject object * @param node XML node containing the SAML subject locality * @param env pointer to environment struct */ AXIS2_EXTERN int AXIS2_CALL saml_subject_build(saml_subject_t *subject, axiom_node_t *node, const axutil_env_t *env); /* * Serialize a SAML subject to a axiom node. * @param subject SAML subject object * @param parent if specified created node will be a child of this node * @param env pointer to environment struct */ AXIS2_EXTERN axiom_node_t * AXIS2_CALL saml_subject_to_om(saml_subject_t *subject, axiom_node_t *parent, const axutil_env_t *env); /* * Return the named id of the subject. * @param subject SAML subject object * @param env pointer to environment struct * @return named id object */ AXIS2_EXTERN saml_named_id_t * AXIS2_CALL saml_subject_get_named_id(saml_subject_t *subject, const axutil_env_t *env); /* * Return the list of confirmation methods. Array list contains string values. * @param subject SAML subject object * @param env pointer to environment struct * @return list containing the subject confirmation methods */ AXIS2_EXTERN axutil_array_list_t * AXIS2_CALL saml_subject_get_confirmation_methods(saml_subject_t *subject, const axutil_env_t *env); /* * Return the list of confirmation data. Array list contains string values. * @param subject SAML subject object * @param env pointer to environment struct * @return list containing the subject confirmation data */ AXIS2_EXTERN axiom_node_t * AXIS2_CALL saml_subject_get_confirmation_data(saml_subject_t *subject, const axutil_env_t *env); /* * Return an axiom node containing the key info of this subject. The axiom node * is a ds:keyinfo of XML signature. * @param subject SAML subject object * @param env pointer to environment struct */ AXIS2_EXTERN axiom_node_t * AXIS2_CALL saml_subject_get_key_info(saml_subject_t *subject, const axutil_env_t *env); /* * Set the named id of the subject. * @param subject SAML subject object * @param env pointer to environment struct * @param named_id a named id to be set */ AXIS2_EXTERN int AXIS2_CALL saml_subject_set_named_id(saml_subject_t *subject, const axutil_env_t *env, saml_named_id_t *named_id); /* * Set the confirmation as a array list. The array list should contain * string values. If confirmation methods are already present they will * be freed. * @param subject SAML subject object * @param env pointer to environment struct * @param list list of confirmation methods */ AXIS2_EXTERN int AXIS2_CALL saml_subject_set_confirmation_methods(saml_subject_t *subject, const axutil_env_t *env, axutil_array_list_t *list); /* * Add a subject confirmation to this subject. * @param subject SAML subject object * @param env pointer to environment struct * @param sub_confirmation subject confirmation */ AXIS2_EXTERN int AXIS2_CALL saml_subject_add_confirmation(saml_subject_t *subject, const axutil_env_t *env, axis2_char_t *sub_confirmation); /* * Remove a subject confirmatin at the specified index. * @param subject SAML subject object * @param env pointer to environment struct * @param index index of the subject confirmation */ AXIS2_EXTERN int AXIS2_CALL saml_subject_remove_subject_confiirmation(saml_subject_t *subject, const axutil_env_t *env, int index); /* * Set an XML Signature keyinfo element that provides access to a cryptographic * key held by the subject * @param subject SAML subject object * @param env pointer to environment struct * @param node XML signature keyinfo element */ AXIS2_EXTERN int AXIS2_CALL saml_subject_set_key_info(saml_subject_t *subject, const axutil_env_t *env, axiom_node_t *node); /* subject statement */ /* * Builds a subject statement from a om node containing a subject statement. * @param subject_stmt a subject statement object * @param node om node containing a subject statement * @param env pointer to environment struct */ AXIS2_EXTERN int AXIS2_CALL saml_subject_stmt_build(saml_subject_stmt_t *subject_stmt, axiom_node_t *node, const axutil_env_t *env); /* * Free a subject statement object * @param subject_stmt a subject statement object * @param env pointer to environment struct */ AXIS2_EXTERN void AXIS2_CALL saml_subject_stmt_free(saml_subject_stmt_t *subject_stmt, const axutil_env_t *env); /* * Create a subject statment object * @param env pointer to environment struct * @return a subject statement object */ AXIS2_EXTERN saml_subject_stmt_t * AXIS2_CALL saml_subject_stmt_create(const axutil_env_t *env); /* * Serialize a subject statment to an axiom node * @param subject_stmt a subject statement object * @param parent if specified created node will be a child of this node * @param env pointer to environment struct */ AXIS2_EXTERN axiom_node_t * AXIS2_CALL saml_subject_stmt_to_om(saml_subject_stmt_t *subject_stmt, axiom_node_t *parent, const axutil_env_t *env); /* * Set the subject of the subject statement * @param subject_stmt a subject statement object * @param env pointer to environment struct * @param subject subject to be set */ AXIS2_EXTERN int AXIS2_CALL saml_subject_stmt_set_subject(saml_subject_stmt_t *subject_stmt, const axutil_env_t *env, saml_subject_t *subject); /* * Set the subject of the subject statement * @param subject_stmt a subject statement object * @param env pointer to environment struct * @param subject subject to be set */ AXIS2_EXTERN saml_subject_t * AXIS2_CALL saml_subject_stmt_get_subject(saml_subject_stmt_t *subject_stmt, const axutil_env_t *env); /* auth desicin statement */ /* * Create an autherization decision statement object. * @param env pointer to environment struct * @return an autherization decision statement object */ AXIS2_EXTERN saml_auth_desicion_stmt_t * AXIS2_CALL saml_auth_desicion_stmt_create(const axutil_env_t *env); /* * Free an autherization decision statement object. * @param auth_des_stmt a autherization decision statement object * @param env pointer to environment struct */ AXIS2_EXTERN void AXIS2_CALL saml_auth_desicion_stmt_free(saml_auth_desicion_stmt_t *auth_des_stmt, const axutil_env_t *env); /* * Populates an saml_auth_desicion_stmt_t object from a XML node containing * autherization decision statement. * @param auth_des_stmt a autherization decision statement object * @param node xml node containing autherization decision object. * @param env pointer to environment struct */ AXIS2_EXTERN int AXIS2_CALL saml_auth_desicion_stmt_build(saml_auth_desicion_stmt_t *auth_des_stmt, axiom_node_t *node, const axutil_env_t *env); /* * Serialize an saml_auth_desicion_stmt_t object to a axiom node. * @param auth_des_stmt a autherization decision statement object * @param parent if specified created node will be a child of this node * @param env pointer to environment struct */ AXIS2_EXTERN axiom_node_t * AXIS2_CALL saml_auth_desicion_stmt_to_om(saml_auth_desicion_stmt_t *auth_des_stmt, axiom_node_t *parent, const axutil_env_t *env); /* * Get the subject which is in this autheization decision statement. * @param auth_des_stmt a autherization decision statement object * @param env pointer to environment struct */ AXIS2_EXTERN saml_subject_t * AXIS2_CALL saml_auth_desicion_stmt_get_subject(saml_auth_desicion_stmt_t *auth_des_stmt, const axutil_env_t *env); /* * Return a URI reference identifying the resource to which access * authorization is sought. * @param auth_des_stmt a autherization decision statement object * @param env pointer to environment struct */ AXIS2_EXTERN axis2_char_t * AXIS2_CALL saml_auth_desicion_stmt_get_resource(saml_auth_desicion_stmt_t *auth_des_stmt, const axutil_env_t *env); /* * Return the decision rendered by the SAML authority with respect to * the specified resource. * @param auth_des_stmt a autherization decision statement object * @param env pointer to environment struct */ AXIS2_EXTERN axis2_char_t * AXIS2_CALL saml_auth_desicion_stmt_get_desicion(saml_auth_desicion_stmt_t *auth_des_stmt, const axutil_env_t *env); /* * Return the list of actions authorized to be performed on the specified * resource. * @param auth_des_stmt a autherization decision statement object * @param env pointer to environment struct */ AXIS2_EXTERN axutil_array_list_t * AXIS2_CALL saml_auth_desicion_stmt_get_actions(saml_auth_desicion_stmt_t *auth_des_stmt, const axutil_env_t *env); /* * Return the list of assertions that the SAML authority relied on in making * the decision. * @param auth_des_stmt a autherization decision statement object * @param env pointer to environment struct */ AXIS2_EXTERN saml_evidence_t * AXIS2_CALL saml_auth_desicion_stmt_get_evidence(saml_auth_desicion_stmt_t *auth_des_stmt, const axutil_env_t *env); /* * Set a URI reference identifying the resource to which access * authorization is sought. * @param auth_des_stmt a autherization decision statement object * @param env pointer to environment struct * @param resource a URI referencing the resource */ AXIS2_EXTERN int AXIS2_CALL saml_auth_desicion_stmt_set_resource(saml_auth_desicion_stmt_t *auth_des_stmt, const axutil_env_t *env, axis2_char_t *resource); /* * Set the decision rendered by the SAML authority with respect to * the specified resource as a string value. Valid decisions are Permit, * Deny and Indeterminate. * @param auth_des_stmt a autherization decision statement object * @param env pointer to environment struct * @param decision set the decision. */ AXIS2_EXTERN int AXIS2_CALL saml_auth_desicion_stmt_set_desicion(saml_auth_desicion_stmt_t *auth_des_stmt, const axutil_env_t *env, axis2_char_t *desicion); /* * Set the list of actions authorized to be performed on the specified * resource. * @param auth_des_stmt a autherization decision statement object * @param env pointer to environment struct * @param list list containing action objects */ AXIS2_EXTERN int AXIS2_CALL saml_auth_desicion_stmt_set_actions(saml_auth_desicion_stmt_t *auth_des_stmt, const axutil_env_t *env, axutil_array_list_t *list); /* * Remove an action in the specified index. * @param auth_des_stmt a autherization decision statement object * @param env pointer to environment struct */ AXIS2_EXTERN int AXIS2_CALL saml_auth_desicion_stmt_remove_action(saml_auth_desicion_stmt_t *auth_des_stmt, const axutil_env_t *env, int index); /* * Add an action. * @param auth_des_stmt a autherization decision statement object * @param env pointer to environment struct * @param action action object to be added */ AXIS2_EXTERN int AXIS2_CALL saml_auth_desicion_stmt_add_action(saml_auth_desicion_stmt_t *auth_des_stmt, const axutil_env_t *env, saml_action_t *action); /* * Set the subject of the autherization decision object * @param auth_des_stmt a autherization decision statement object * @param env pointer to environment struct * @param subject subject to be added */ AXIS2_EXTERN int AXIS2_CALL saml_auth_desicion_stmt_set_subject(saml_auth_desicion_stmt_t *auth_des_stmt, const axutil_env_t *env, saml_subject_t *subject); /* auth statement */ /* * Create an autherization statement. * @param env pointer to environment struct * @return autherization statement object */ AXIS2_EXTERN saml_auth_stmt_t * AXIS2_CALL saml_auth_stmt_create(const axutil_env_t *env); /* * Free a autherization statement. * @param auth_stmt autherization statment object * @param env pointer to environment struct */ AXIS2_EXTERN void AXIS2_CALL saml_auth_stmt_free(saml_auth_stmt_t *auth_stmt, const axutil_env_t *env); /* * Populates an auth_stmt from a om node containing a autherization statement * @param auth_stmt autherization statment object * @param node an om node containing an autherization statement * @param env pointer to environment struct */ AXIS2_EXTERN int AXIS2_CALL saml_auth_stmt_build(saml_auth_stmt_t *auth_stmt, axiom_node_t *node, const axutil_env_t *env); /* * Serialize an autherization statement to an om node * @param auth_stmt autherization statment object * @param parent if specified created node will be a child of this node * @param env pointer to environment struct */ AXIS2_EXTERN axiom_node_t *AXIS2_CALL saml_auth_stmt_to_om(saml_auth_stmt_t *auth_stmt, axiom_node_t *parent, const axutil_env_t *env); /* * Return a URI reference that specifies the type of authentication that * took place. * @param auth_stmt autherization statment object * @param env pointer to environment struct * @return URI reference */ AXIS2_EXTERN axis2_char_t * AXIS2_CALL saml_auth_stmt_get_auth_method(saml_auth_stmt_t *auth_stmt, const axutil_env_t *env); /* * Return the time at which the authentication took place. * @param auth_stmt autherization statment object * @param env pointer to environment struct * @return time at which authentication took place */ AXIS2_EXTERN axutil_date_time_t * AXIS2_CALL saml_auth_stmt_get_auth_instant(saml_auth_stmt_t *auth_stmt, const axutil_env_t *env); /* * Return a list of additional information about the subject of * the statement that may be available. * @param auth_stmt autherization statment object * @param env pointer to environment struct * @return a list of autherization binings */ AXIS2_EXTERN axutil_array_list_t * AXIS2_CALL saml_auth_stmt_get_auth_bindings(saml_auth_stmt_t *auth_stmt, const axutil_env_t *env); /* * Return the IP address of the system entity that was authenticated. * @param auth_stmt autherization statment object * @param env pointer to environment struct * @return an IP address */ AXIS2_EXTERN axis2_char_t * AXIS2_CALL saml_auth_stmt_get_subject_ip(saml_auth_stmt_t *auth_stmt, const axutil_env_t *env); /* * Return the DNS address of the system entity that was authenticated. * @param auth_stmt autherization statment object * @param env pointer to environment struct * @return an DNS address */ AXIS2_EXTERN axis2_char_t * AXIS2_CALL saml_auth_stmt_get_subject_dns(saml_auth_stmt_t *auth_stmt, const axutil_env_t *env); /* * Set the subject of the autherization statement * @param auth_stmt autherization statment object * @param env pointer to environment struct * @param subject a subject to be added */ AXIS2_EXTERN int AXIS2_CALL saml_auth_stmt_set_subject(saml_auth_stmt_t *auth_stmt, const axutil_env_t *env, saml_subject_t *subject); /* * Set a URI reference that specifies the type of authentication that * took place. * @param auth_stmt autherization statment object * @param env pointer to environment struct * @param method URI reference */ AXIS2_EXTERN int AXIS2_CALL saml_auth_stmt_set_auth_method(saml_auth_stmt_t *auth_stmt, const axutil_env_t *env, axis2_char_t *method); /* * Set the time at which the authentication took place. * @param auth_stmt autherization statment object * @param env pointer to environment struct * @param dt time at which authentication took place */ AXIS2_EXTERN int AXIS2_CALL saml_auth_stmt_set_auth_instant(saml_auth_stmt_t *auth_stmt, const axutil_env_t *env, axutil_date_time_t *dt); /* * Set a list of additional information about the subject of * the statement that may be available as auth_bindings. * @param auth_stmt autherization statment object * @param env pointer to environment struct * @param list a list of autherization binings */ AXIS2_EXTERN int AXIS2_CALL saml_auth_stmt_set_auth_bindings(saml_auth_stmt_t *auth_stmt, const axutil_env_t *env, axutil_array_list_t *list); /* * Add a additional information about the subject of * the statement that may be available as an auth_binding. * @param auth_stmt autherization statment object * @param env pointer to environment struct * @param bind an authority binding */ AXIS2_EXTERN int AXIS2_CALL saml_auth_stmt_add_auth_binding(saml_auth_stmt_t *auth_stmt, const axutil_env_t *env, saml_auth_binding_t *bind); /* * Remove an authority binding from a auth_statement. * @param auth_stmt autherization statment object * @param env pointer to environment struct * @param index index of the authority binding to be removed */ AXIS2_EXTERN int AXIS2_CALL saml_auth_stmt_remove_auth_binding(saml_auth_stmt_t *auth_stmt, const axutil_env_t *env, int index); /* * Set the DNS address of the system entity that was authenticated. * @param auth_stmt autherization statment object * @param env pointer to environment struct * @param dns a DNS address */ AXIS2_EXTERN int AXIS2_CALL saml_auth_stmt_set_subject_dns(saml_auth_stmt_t *auth_stmt, const axutil_env_t *env, axis2_char_t *dns); /* * Set the IP address of the system entity that was authenticated. * @param auth_stmt autherization statment object * @param env pointer to environment struct * @param ip an IP address */ AXIS2_EXTERN int AXIS2_CALL saml_auth_stmt_set_subject_ip(saml_auth_stmt_t *auth_stmt, const axutil_env_t *env, axis2_char_t *ip); /* attribute statement */ /* * Create a attribute statement. * @param env pointer to environment struct * @return saml attribute object */ AXIS2_EXTERN saml_attr_stmt_t * AXIS2_CALL saml_attr_stmt_create(const axutil_env_t *env); /* * Free an attribute statement. * @param attr_stmt pointer to an attribute statement object * @param env pointer to environment struct */ AXIS2_EXTERN void AXIS2_CALL saml_attr_stmt_free(saml_attr_stmt_t *attr_stmt, const axutil_env_t *env); /* * Populates a attribute statement object from a axiom node containing a * attribute statement. * @param attr_stmt pointer to an attribute statement object * @param node om node containing a attribute statement * @param env pointer to environment struct */ AXIS2_EXTERN int AXIS2_CALL saml_attr_stmt_build(saml_attr_stmt_t *attr_stmt, axiom_node_t *node, const axutil_env_t *env); /* * Serialize an saml_attr_stmt to an om node * @param attr_stmt pointer to an attribute statement object * @param parent if specified created node will be a child of this node * @param env pointer to environment struct */ AXIS2_EXTERN axiom_node_t * AXIS2_CALL saml_attr_stmt_to_om(saml_attr_stmt_t *attr_stmt, axiom_node_t *parent, const axutil_env_t *env); /* * Get the saml subject in this attribute statement. * @param attr_stmt pointer to an attribute statement object * @param env pointer to environment struct * @return saml subject */ AXIS2_EXTERN saml_subject_t * AXIS2_CALL saml_attr_stmt_get_subject(saml_attr_stmt_t *attr_stmt, const axutil_env_t *env); /* * Get the list of attributes in this attribute statement. * @param attr_stmt pointer to an attribute statement object * @param env pointer to environment struct * @return array list containing the attribute objects */ AXIS2_EXTERN axutil_array_list_t * AXIS2_CALL saml_attr_stmt_get_attributes(saml_attr_stmt_t *attr_stmt, const axutil_env_t *env); /* * Set the subject of this attribute statement * @param attr_stmt pointer to an attribute statement object * @param env pointer to environment struct * @param subject */ AXIS2_EXTERN int AXIS2_CALL saml_attr_stmt_set_subject(saml_attr_stmt_t *attr_stmt, const axutil_env_t *env, saml_subject_t *subject); /* * Set the attributes of the attribute statement as a list. If the attribute * statement already contains attributes they will be replaced. * @param attr_stmt pointer to an attribute statement object * @param env pointer to environment struct * @param list attribute list */ AXIS2_EXTERN int AXIS2_CALL saml_attr_stmt_set_attributes(saml_attr_stmt_t *attr_stmt, const axutil_env_t *env, axutil_array_list_t *list); /* * Add an attribute to the attribute statement * @param attr_stmt pointer to an attribute statement object * @param env pointer to environment struct * @param attribute an attribute to be added */ AXIS2_EXTERN int AXIS2_CALL saml_attr_stmt_add_attribute(saml_attr_stmt_t *attr_stmt, const axutil_env_t *env, saml_attr_t *attribute); /* * Remove an attribute at the given index. * @param attr_stmt pointer to an attribute statement object * @param env pointer to environment struct * @param index index of the attribute */ AXIS2_EXTERN int AXIS2_CALL saml_attr_stmt_remove_attribute(saml_attr_stmt_t *attr_stmt, const axutil_env_t *env, int index); /* condition */ /* * Create a generic condition. Condition objects holds more specific * conditions. The type attribute of a condition determines the specific * condition. * @param env pointer to environment struct */ AXIS2_EXTERN saml_condition_t * AXIS2_CALL saml_condition_create(const axutil_env_t *env); /* * Free a condition object. The specific condition which is in this conditions * will also be freed. * @param cond pointer to a condition object * @param env pointer to environment struct */ AXIS2_EXTERN void AXIS2_CALL saml_condition_free(saml_condition_t *cond, const axutil_env_t *env); /* * Populates a condition from a om node containing a condition. After this a * specific condition will be built and set to this condition. * @param cond pointer to a condition object * @param env pointer to environment struct * @param node om node containing a condition */ AXIS2_EXTERN int AXIS2_CALL saml_condition_build(saml_condition_t *cond, axiom_node_t *node, const axutil_env_t *env); /* * Serialize a condition to a om node. * @param cond pointer to a condition object * @param parent if specified created node will be a child of this node * @param env pointer to environment struct */ AXIS2_EXTERN axiom_node_t * AXIS2_CALL saml_condition_to_om(saml_condition_t *cond, axiom_node_t *parent, const axutil_env_t *env); /* * Set the specific condition for this condition. * @param cond pointer to a condition object * @param env pointer to environment struct * @param condition the specific condition * @param type condition type */ AXIS2_EXTERN int AXIS2_CALL saml_condition_set_condition(saml_condition_t *cond, const axutil_env_t *env, void * condition, saml_cond_type_t type); /* * Set the type of the conition. * @param cond pointer to a condition object * @param env pointer to environment struct * @param type specific type of the condition */ AXIS2_EXTERN int AXIS2_CALL saml_condition_set_type(saml_condition_t *cond, const axutil_env_t *env, saml_cond_type_t type); /* * Get the specific condtion in this generic condition. * @param cond pointer to a condition object * @param env pointer to environment struct */ AXIS2_EXTERN void * AXIS2_CALL saml_condition_get_condition(saml_condition_t *cond, const axutil_env_t *env); /* * Get the type of the specific condtion in this generic condition. * @param cond pointer to a condition object * @param env pointer to environment struct */ AXIS2_EXTERN saml_cond_type_t AXIS2_CALL saml_condition_get_type(saml_condition_t *cond, const axutil_env_t *env); /* audio restriction */ /* * Populates an audi restriction condition from an om node. * @param arc a ponter to saml_aud_restriction_conf object * @param node om node containing an audience restriction condition * @param env pointer to environment struct */ AXIS2_EXTERN int AXIS2_CALL saml_audi_restriction_cond_build(saml_audi_restriction_cond_t *arc, axiom_node_t *node, const axutil_env_t *env); /* * Serialize an saml_audi_restriction_cond_t object in to an om node. * @param arc a ponter to saml_aud_restriction_conf object * @param parent if specified created node will be a child of this node * @param env pointer to environment struct */ AXIS2_EXTERN axiom_node_t *AXIS2_CALL saml_audi_restriction_cond_to_om(saml_audi_restriction_cond_t *arc, axiom_node_t *parent, const axutil_env_t *env); /* * Free a saml_aud_restriction_conf object. * @param arc a ponter to saml_aud_restriction_conf object * @param env pointer to environment struct */ AXIS2_EXTERN void AXIS2_CALL saml_audi_restriction_cond_free(saml_audi_restriction_cond_t *arc, const axutil_env_t *env); /* * Create a saml_aud_restriction_conf object. * @param env pointer to environment struct * @return a ponter to saml_aud_restriction_conf object */ AXIS2_EXTERN saml_audi_restriction_cond_t * AXIS2_CALL saml_audi_restriction_cond_create(const axutil_env_t *env); /* * Return a list of URI references that identifies a list of intended audiences. * @param arc a ponter to saml_aud_restriction_conf object * @param env pointer to environment struct */ AXIS2_EXTERN axutil_array_list_t * AXIS2_CALL saml_audi_restriction_cond_get_audiences(saml_audi_restriction_cond_t *arc, const axutil_env_t *env); /* * Set a list of URI references that identifies a list of intended audiences. * @param arc a ponter to saml_aud_restriction_conf object * @param env pointer to environment struct */ AXIS2_EXTERN int AXIS2_CALL saml_audi_restriction_cond_set_audiences(saml_audi_restriction_cond_t *cond, const axutil_env_t *env, axutil_array_list_t *list); /* * Remove a URI reference that identifies an intended audiences. * @param arc a ponter to saml_aud_restriction_conf object * @param env pointer to environment struct * @param index the number of the audience in the list, to be removed */ AXIS2_EXTERN int AXIS2_CALL saml_audi_restriction_cond_remove_audiences(saml_audi_restriction_cond_t *cond, const axutil_env_t *env, int index); /* * Ad a URI reference that identifies an intended audiences. * @param arc a ponter to saml_aud_restriction_conf object * @param env pointer to environment struct * @param audience a new audience to be added */ AXIS2_EXTERN int AXIS2_CALL saml_audi_restriction_cond_add_audience(saml_audi_restriction_cond_t *cond, const axutil_env_t *env, axis2_char_t *audience); /* action */ /* * Create a saml_action_t. * @param env pointer to environment struct * @return pointer to saml_action_t */ AXIS2_EXTERN saml_action_t * AXIS2_CALL saml_action_create(const axutil_env_t *env); /* * Free a saml_action_t. * @param action pointer to saml_action_t * @param env pointer to environment struct */ AXIS2_EXTERN void AXIS2_CALL saml_action_free(saml_action_t *action, const axutil_env_t *env); /* * Populates a saml action from a om node containing a saml action. * @param action pointer to saml_action_t * @param node om node conatining a saml action * @param env pointer to environment struct */ AXIS2_EXTERN int AXIS2_CALL saml_action_build(saml_action_t *action, axiom_node_t *node, const axutil_env_t *env); /* * Serialize a action_t object to an om node. * @param action pointer to saml_action_t * @param parent if specified created node will be a child of this node * @param env pointer to environment struct */ AXIS2_EXTERN axiom_node_t * AXIS2_CALL saml_action_to_om(saml_action_t *action, axiom_node_t *parent, const axutil_env_t *env); /* * Get an action sought to be performed on the specified resource. * @param action pointer to saml_action_t * @param env pointer to environment struct */ AXIS2_EXTERN axis2_char_t * AXIS2_CALL saml_action_get_data(saml_action_t *action, const axutil_env_t *env); /* * Get a URI reference representing the namespace in which the name of the * specified action is to be interpreted. * @param action pointer to saml_action_t * @param env pointer to environment struct */ AXIS2_EXTERN axis2_char_t * AXIS2_CALL saml_action_get_namespace(saml_action_t *action, const axutil_env_t *env); /* * Set an action sought to be performed on the specified resource. * @param action pointer to saml_action_t * @param env pointer to environment struct * @param data an action to be performed */ AXIS2_EXTERN int AXIS2_CALL saml_action_set_data(saml_action_t *action, const axutil_env_t *env, axis2_char_t *data); /* * Set a URI reference representing the namespace in which the name of the * specified action is to be interpreted. * @param action pointer to saml_action_t * @param env pointer to environment struct * @param name_space a URI reference */ AXIS2_EXTERN int AXIS2_CALL saml_action_set_namespace(saml_action_t *action, const axutil_env_t *env, axis2_char_t *name_space); /* evidence */ AXIS2_EXTERN saml_evidence_t * AXIS2_CALL saml_evidence_create(const axutil_env_t *env); AXIS2_EXTERN void AXIS2_CALL saml_evidence_free(saml_evidence_t *evidence, const axutil_env_t *env); AXIS2_EXTERN int AXIS2_CALL saml_evidence_build(saml_evidence_t *evidence, axiom_node_t *node, const axutil_env_t *env); AXIS2_EXTERN axiom_node_t * AXIS2_CALL saml_evidence_to_om(saml_evidence_t *evidence, axiom_node_t *parent, const axutil_env_t *env); AXIS2_EXTERN axutil_array_list_t * AXIS2_CALL saml_evidence_get_assertions(saml_evidence_t *evidence, const axutil_env_t *env); AXIS2_EXTERN axutil_array_list_t * AXIS2_CALL saml_evidence_get_assertion_ids(saml_evidence_t *evidence, const axutil_env_t *env); AXIS2_EXTERN int AXIS2_CALL saml_evidence_set_assertions(saml_evidence_t *evidence, const axutil_env_t *env, axutil_array_list_t *list); AXIS2_EXTERN int AXIS2_CALL saml_evidence_remove_assertion(saml_evidence_t *evidence, const axutil_env_t *env, int index); AXIS2_EXTERN int AXIS2_CALL saml_evidence_add_assertion(saml_evidence_t *evidence, const axutil_env_t *env, saml_assertion_t *assertion); AXIS2_EXTERN int AXIS2_CALL saml_evidence_set_assertion_ids(saml_evidence_t *evidence, const axutil_env_t *env, axutil_array_list_t *list); AXIS2_EXTERN int AXIS2_CALL saml_evidence_remove_assertion_id(saml_evidence_t *evidence, const axutil_env_t *env, int index); AXIS2_EXTERN int AXIS2_CALL saml_evidence_add_assertion_id(saml_evidence_t *evidence, const axutil_env_t *env, axis2_char_t *assertion_id); /* atrribute designature */ /* * Create a saml_attr_desig_t. * @param env pointer to environment struct * @return pointer to saml_attr_desig_t */ AXIS2_EXTERN saml_attr_desig_t * AXIS2_CALL saml_attr_desig_create(const axutil_env_t *env); /* * Free a saml_attr_desig_t. * @param attr_desig a pointer to saml_attr_desig_t * @param env pointer to environment struct */ AXIS2_EXTERN void AXIS2_CALL saml_attr_desig_free(saml_attr_desig_t *attr_desig, const axutil_env_t *env); /* * Populates a saml_attr_desig_t from a om node contailing a saml attriibute desgnator * @param attr_desig a pointer to saml_attr_desig_t * @param node om node containing saml attriibute desgnator * @param env pointer to environment struct */ AXIS2_EXTERN int AXIS2_CALL saml_attr_desig_build(saml_attr_desig_t *attr_desig, axiom_node_t *node, const axutil_env_t *env); /* * Serialize a saml_attr_desig_t to an om node. * @param attr_desig a pointer to saml_attr_desig_t * @param parent if specified created node will be a child of this node * @param env pointer to environment struct */ AXIS2_EXTERN axiom_node_t * AXIS2_CALL saml_attr_desig_to_om(saml_attr_desig_t *attr_desig, axiom_node_t *parent, const axutil_env_t *env); /* * Get the name of the attribute. * @param attr_desig a pointer to saml_attr_desig_t * @param env pointer to environment struct * @return a string name of the attribute */ AXIS2_EXTERN axis2_char_t * AXIS2_CALL saml_attr_desig_get_name(saml_attr_desig_t *attr_desig, const axutil_env_t *env); /* * Get the namespace in which the AttributeName elements are interpreted. * @param attr_desig a pointer to saml_attr_desig_t * @param env pointer to environment struct * @return a string representing a namespace */ AXIS2_EXTERN axis2_char_t * AXIS2_CALL saml_attr_desig_get_namespace(saml_attr_desig_t *attr_desig, const axutil_env_t *env); /* * Set the name of the attribute. * @param attr_desig a pointer to saml_attr_desig_t * @param env pointer to environment struct * @param name a string name of the attribute */ AXIS2_EXTERN int AXIS2_CALL saml_attr_desig_set_name(saml_attr_desig_t *attr_desig, const axutil_env_t *env, axis2_char_t *name); /* * Set the namespace in which the AttributeName elements are interpreted. * @param attr_desig a pointer to saml_attr_desig_t * @param env pointer to environment struct * @param name_space a string representing a namespace */ AXIS2_EXTERN int AXIS2_CALL saml_attr_desig_set_namespace(saml_attr_desig_t *attr_desig, const axutil_env_t *env, axis2_char_t *name_space); /* attribute */ /* * Create a saml_attr_t. * @param env pointer to environment struct * @return pointer to saml_attr_t */ AXIS2_EXTERN saml_attr_t * AXIS2_CALL saml_attr_create(const axutil_env_t *env); /* * Free a saml_attr_t. * @param attr pointer to saml_attr_t * @param env pointer to environment struct */ AXIS2_EXTERN void AXIS2_CALL saml_attr_free(saml_attr_t *attr, const axutil_env_t *env); /* * Populates a saml_attr_t from an om node containing a saml attribute. * @param attr pointer to saml_attr_t * @node an om node containing a saml attribute * @param env pointer to environment struct */ AXIS2_EXTERN int AXIS2_CALL saml_attr_build(saml_attr_t *attr, axiom_node_t *node, const axutil_env_t *env); /* * Serialize a saml_attr_t in to an om node. * @param attr pointer to saml_attr_t * @param parent if specified created node will be a child of this node * @param env pointer to environment struct */ AXIS2_EXTERN axiom_node_t * AXIS2_CALL saml_attr_to_om(saml_attr_t *attr, axiom_node_t *parent, const axutil_env_t *env); /* * Get the name of the attribute. * @param attr a pointer to saml_attr_t * @param env pointer to environment struct * @return a string name of the attribute */ AXIS2_EXTERN axis2_char_t * AXIS2_CALL saml_attr_get_name(saml_attr_t *attr, const axutil_env_t *env); /* * Get the namespace in which the AttributeName elements are interpreted. * @param attr a pointer to saml_attr_t * @param env pointer to environment struct * @return a string representing a namespace */ AXIS2_EXTERN axis2_char_t * AXIS2_CALL saml_attr_get_namespace(saml_attr_t *attr_stmt, const axutil_env_t *env); /* * Set the name of the attribute. * @param attr a pointer to saml_attr_t * @param env pointer to environment struct * @param name a string name of the attribute */ AXIS2_EXTERN int AXIS2_CALL saml_attr_set_name(saml_attr_t *attr, const axutil_env_t *env, axis2_char_t *name); /* * Set the namespace in which the AttributeName elements are interpreted. * @param attr a pointer to saml_attr_t * @param env pointer to environment struct * @param name_space a string representing a namespace */ AXIS2_EXTERN int AXIS2_CALL saml_attr_set_namespace(saml_attr_t *attr, const axutil_env_t *env, axis2_char_t *name_space); /* * Set the values of the attribute as a list of om nodes. * @param attr a pointer to saml_attr_t * @param env pointer to environment struct * @param list a om node list */ AXIS2_EXTERN int AXIS2_CALL saml_attr_set_values(saml_attr_t *attr, const axutil_env_t *env, axutil_array_list_t *list); /* * Remove om node at the specified index. * @param attr a pointer to saml_attr_t * @param env pointer to environment struct * @param index index number of the om node to be removed */ AXIS2_EXTERN int AXIS2_CALL saml_attr_remove_value(saml_attr_t *attr, const axutil_env_t *env, int index); /* * Add a om node to the attribute value list. * @param attr a pointer to saml_attr_t * @param env pointer to environment struct * @param value an om node */ AXIS2_EXTERN int AXIS2_CALL saml_attr_add_value(saml_attr_t *attr, const axutil_env_t *env, axiom_node_t *value); /*named id*/ /* * Create a SAML named id object * @param env pointer to environment struct * @return saml named id object */ AXIS2_EXTERN saml_named_id_t * AXIS2_CALL saml_named_id_create(const axutil_env_t *env); /* * Free a saml named id object * @param named_id named_id to be freed * @param env pointer to environment struct */ AXIS2_EXTERN void AXIS2_CALL saml_named_id_free(saml_named_id_t *named_id, const axutil_env_t *env); /* * Build a saml named id from an om node containing a saml named identifier * @param named_id named id object * @param node om node containing the saml named identifier * @param env pointer to environment struct */ AXIS2_EXTERN int AXIS2_CALL saml_named_id_build(saml_named_id_t *named_id, axiom_node_t *node, const axutil_env_t *env); /* * Serialize a named id object in to an om node. * @param named_id named id object * @param parent if specified this will be the parent of the newely created node * @param env pointer to environment struct */ AXIS2_EXTERN axiom_node_t * AXIS2_CALL saml_named_id_to_om(saml_named_id_t *id, axiom_node_t *parent, const axutil_env_t *env); /* * Get the name of the named identifier. * @param named_id named id object * @param env pointer to environment struct * @return name as a string */ AXIS2_EXTERN axis2_char_t * AXIS2_CALL saml_named_id_get_name(saml_named_id_t *id, const axutil_env_t *env); /* * Get a URI reference representing the format in which the * information is provided. * @param named_id named id object * @param env pointer to environment struct * @return format as a URI string */ AXIS2_EXTERN axis2_char_t * AXIS2_CALL saml_named_id_get_format(saml_named_id_t *id, const axutil_env_t *env); /* * Get the security or administrative domain that qualifies the name of the * subject. * @param named_id named id object * @param env pointer to environment struct * @return string representing the domain */ AXIS2_EXTERN axis2_char_t * AXIS2_CALL saml_named_id_get_name_qualifier(saml_named_id_t *id, const axutil_env_t *env); /* * Set the name of the named identifier. * @param named_id named id object * @param env pointer to environment struct * @param name name as a string */ AXIS2_EXTERN int AXIS2_CALL saml_named_id_set_name(saml_named_id_t *id, const axutil_env_t *env, axis2_char_t *name); /* * Set a URI reference representing the format in which the * information is provided. * @param named_id named id object * @param env pointer to environment struct * @param format format of the nameidentifier */ AXIS2_EXTERN int AXIS2_CALL saml_named_id_set_format(saml_named_id_t *id, const axutil_env_t *env, axis2_char_t *format); /* * Set the security or administrative domain that qualifies the name of the * subject. * @param named_id named id object * @param env pointer to environment struct * @param qualifier string representing the domain */ AXIS2_EXTERN int AXIS2_CALL saml_named_id_set_name_qualifier(saml_named_id_t *id, const axutil_env_t *env, axis2_char_t *qualifier); /* private method */ AXIS2_EXTERN int AXIS2_CALL saml_util_set_sig_ctx_defaults(oxs_sign_ctx_t *sig_ctx, const axutil_env_t *env, axis2_char_t *id); /* Get the session key from a assertion. Session key is inside the SAML * token as an EncryptedKey * @param env pointer to environment struct * @param assertion an saml assertion node * @param pvt_key private key used to encrypt the session key */ AXIS2_EXTERN oxs_key_t * AXIS2_CALL saml_assertion_get_session_key(const axutil_env_t *env, axiom_node_t *assertion, openssl_pkey_t *pvt_key); #ifdef __cplusplus } #endif #endif rampartc-src-1.3.0/include/oxs_xml_signature.h0000644000076500007650000001076311202453410021330 0ustar shankarshankar/* * 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 OXS_XML_SIGNATURE_H #define OXS_XML_SIGNATURE_H /** * @file oxs_xml_signature.h * @brief Does the XML Signature for OMXMLSecurity */ /** * @defgroup oxs_xml_signature XML Signature * @ingroup oxs * @{ */ #include #include #include #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif /** * Sign according to the information available in the @sign_ctx. * @env pointer to environment struct * @sign_ctx the signature context * @parent the node that the ds:Signature element should be attached. * @sig_node a reference to the ds:Signature node * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_xml_sig_sign(const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, axiom_node_t *parent, axiom_node_t **sig_node); /** * Verify a complete xml document * @env pointer to environment struct * @sign_ctx the signature context * @signature_node the ds:Signature node * @scope_node the root node in which the referenced are found * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_xml_sig_verify(const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, axiom_node_t *signature_node, axiom_node_t *scope_node); /** * Verify a single signature part @sign_part. * Do transforms, Generate digest and compare with the digest in hand * @env pointer to environment struct * @sign_part the signature part * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_xml_sig_verify_sign_part(const axutil_env_t *env, oxs_sign_part_t *sign_part); /** * Verify all digests in signature parts of a single signature context @sign_ctx * @env pointer to environment struct * @sign_ctx the signature context * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_xml_sig_verify_digests(const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx); /** * Process the ds:Reference node. Populate a signature part * @env pointer to environment struct * @sign_part the signature part * @ref_node the ds:Reference node * @scope_node the root node in which the referenced are found * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_xml_sig_process_ref_node(const axutil_env_t *env, oxs_sign_part_t *sign_part, axiom_node_t *ref_node, axiom_node_t *scope_node); /** * Process the ds:Signature node. Populate a signature context * @env pointer to environment struct * @sign_ctx the signature context * @signature_node the ds:Signature node * @scope_node the root node in which the referenced are found * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_xml_sig_process_signature_node(const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, axiom_node_t *signature_node, axiom_node_t *scope_node); /** @} */ #ifdef __cplusplus } #endif #endif /* OXS_XML_SIGNATURE_H */ rampartc-src-1.3.0/include/trust_life_time.h0000644000076500007650000000632611202453410020754 0ustar shankarshankar/* * 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_LIFETIME_H #define TRUST_LIFETIME_H #include #include #include #include #include #include #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif typedef struct trust_life_time trust_life_time_t; AXIS2_EXTERN trust_life_time_t * AXIS2_CALL trust_life_time_create( const axutil_env_t *env); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_life_time_free( trust_life_time_t *life_time, const axutil_env_t *env); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_life_time_deserialize( trust_life_time_t *life_time, const axutil_env_t *env, axiom_node_t *life_time_node); AXIS2_EXTERN axiom_node_t *AXIS2_CALL trust_life_time_serialize( trust_life_time_t *life_time, const axutil_env_t *env, axiom_node_t *parent); AXIS2_EXTERN int AXIS2_CALL trust_life_time_get_ttl( trust_life_time_t *life_time, const axutil_env_t *env); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_life_time_set_ttl( trust_life_time_t *life_time, const axutil_env_t *env, int ttl); AXIS2_EXTERN axutil_date_time_t * AXIS2_CALL trust_life_time_get_created( trust_life_time_t *life_time, const axutil_env_t *env); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_life_time_set_created( trust_life_time_t *life_time, const axutil_env_t *env, axutil_date_time_t *created); AXIS2_EXTERN axutil_date_time_t * AXIS2_CALL trust_life_time_get_expires( trust_life_time_t *life_time, const axutil_env_t *env); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_life_time_set_expires( trust_life_time_t *life_time, const axutil_env_t *env, axutil_date_time_t *expires); AXIS2_EXTERN axis2_char_t * AXIS2_CALL trust_life_time_get_ns_uri( trust_life_time_t *life_time, const axutil_env_t *env); AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_life_time_set_ns_uri( trust_life_time_t *life_time, const axutil_env_t *env, axis2_char_t *ns_uri); #ifdef __cplusplus } #endif #endif rampartc-src-1.3.0/include/rampart_engine.h0000644000076500007650000000263111202453410020544 0ustar shankarshankar/* * 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_ENGINE_H #define RAMPART_ENGINE_H /** * @file rampart_engine.h * @brief Loads configuratins for Rampart, which defines its behaviuor. * Also loads modules and initialize Rampart */ /** * @defgroup rampart_engine Engine * @ingroup rampart_utils * @{ */ #include #include #include #include #ifdef __cplusplus extern "C" { #endif /** * * @param env pointer to environment struct,Must not be * @param msg_ctx * @param is_inflow * returns */ AXIS2_EXTERN rampart_context_t *AXIS2_CALL rampart_engine_build_configuration( const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axis2_bool_t is_inflow); #ifdef __cplusplus } #endif #endif rampartc-src-1.3.0/include/openssl_pkcs12.h0000644000076500007650000000411611202453410020417 0ustar shankarshankar/* * Copyright 2003-2004 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. */ #include #include #include #include #include #include #include #include #include /** * @file openssl_pkcs12.h * @brief Functions related to keys that are in pkcs12 format */ #ifndef OPENSSL_PKCS12_H #define OPENSSL_PKCS12_H #ifdef __cplusplus extern "C" { #endif /** @defgroup openssl_pkcs12 OpenSSL PKCS12 * @ingroup openssl * @{ */ /*Load*/ AXIS2_EXTERN axis2_status_t AXIS2_CALL openssl_pkcs12_load(const axutil_env_t *env, axis2_char_t *filename, PKCS12 **p12); AXIS2_EXTERN axis2_status_t AXIS2_CALL openssl_pkcs12_load_from_buffer(const axutil_env_t *env, axis2_char_t *buffer, PKCS12 **p12, int len); /*Parse*/ AXIS2_EXTERN axis2_status_t AXIS2_CALL openssl_pkcs12_parse(const axutil_env_t *env, axis2_char_t *password , PKCS12 *p12, EVP_PKEY **prvkey, X509 **cert, STACK_OF(X509) **ca); /*Free*/ AXIS2_EXTERN axis2_status_t AXIS2_CALL openssl_pkcs12_free(const axutil_env_t *env, PKCS12 *p12); /** @} */ #ifdef __cplusplus } #endif #endif /* OPENSSL_PKCS12_H */ rampartc-src-1.3.0/include/rampart_callback.h0000644000076500007650000000754111202453410021040 0ustar shankarshankar/* * 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. */ #include #include #include #ifndef RAMPART_CALLBACK_H #define RAMPART_CALLBACK_H /** * @file rampart_callback.h * @brief The callback module for a password */ #ifdef __cplusplus extern "C" { #endif /** * Struct to get password using callbacks * @defgroup rampart_callback Rampart Callback Module * @{ */ typedef struct rampart_callback_ops rampart_callback_ops_t; typedef struct rampart_callback rampart_callback_t; struct rampart_callback_ops { /** * Retuens a password for the given username. * By providing a function to this function pointer * user can write custom password callback module * @param callback rampart callback pointer * @param env environment must not be null * @param username The username of the password expected. * @param param any parameter that is to be passed to the callback function. * @return returns password if any. Otherwise NULL returns */ axis2_char_t *(AXIS2_CALL* callback_password)(rampart_callback_t *callback, const axutil_env_t *env, const axis2_char_t *username, void *param); /** * Returns a password for PKCS12 key store * By providing a function to this pointer user can write * cutom password callback module to support PKCS12 * key store usage. * @param callback rampart callback pointer * @param env pointer to environment struct, must not be null * @param username The username of the owner of the key store * @param any parameter that is to be passed to the callback function. * @returns returns password if any. Otherwise NULL */ axis2_char_t *(AXIS2_CALL* callback_pkcs12_password)(rampart_callback_t *callback, const axutil_env_t *env, const axis2_char_t *username, void *param); /** * Free function of the rampart callback * @param callback rampart callback pointer * @param env environment must not be null * @return AXIS2_SUCCESS on success AXIS2_FAILURE otherwise */ axis2_status_t (AXIS2_CALL* free)(rampart_callback_t *rcb, const axutil_env_t* env); }; struct rampart_callback { rampart_callback_ops_t *ops; axutil_param_t *param; }; /*************************** Function macros **********************************/ #define RAMPART_CALLBACK_FREE(callback, env) \ ((callback)->ops->free (callback, env)) #define RAMPART_CALLBACK_CALLBACK_PASSWORD(callback, env, username, param) \ ((callback)->ops->callback_password(callback, env, username, param)) #define RAMPART_CALLBACK_CALLBACK_PKCS12_PASSWORD(callback, env, username, param) \ ((callback)->ops->callback_pkcs12_password(callback, env, username, param)) /** @} */ #ifdef __cplusplus } #endif #endif /* RAMPART_CALLBACK_H */ rampartc-src-1.3.0/include/rampart_context.h0000644000076500007650000022533211202453410020770 0ustar shankarshankar/* * 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_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 #include #include #include #include #include #include #include #include #include #include #include #include #include #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 *user_params); 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, void *user_params); 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, void *ctx); 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, void *ctx); /* 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. */ typedef axis2_status_t (AXIS2_CALL* store_security_context_token_fn)( const axutil_env_t *env, axis2_msg_ctx_t* msg_ctx, axis2_char_t *sct_global_id, axis2_char_t *sct_local_id, void *sct, void *user_params); /* 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 will be RAMPART_SCT_ID_TYPE_LOCAL or RAMPART_SCT_ID_TYPE_GLOBAL if * sct_id is NOT NULL. If sct_id is NULL, then sct_id_type will be RAMPART_SCT_ID_TYPE_UNKNOWN */ typedef void* (AXIS2_CALL* obtain_security_context_token_fn)( const axutil_env_t *env, axis2_bool_t is_encryption, axis2_msg_ctx_t* msg_ctx, axis2_char_t *sct_id, int sct_id_type, void* user_params); /* 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 */ typedef axis2_status_t (AXIS2_CALL* delete_security_context_token_fn)( const axutil_env_t *env, axis2_msg_ctx_t* msg_ctx, axis2_char_t *sct_id, int sct_id_type, void* user_params); /* 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. */ typedef axis2_status_t (AXIS2_CALL* validate_security_context_token_fn)( const axutil_env_t *env, axiom_node_t *sct_node, axis2_msg_ctx_t *msg_ctx, void *user_params); /** * Create a rampart_context.rampart_context is the wrapper * of secpolicy and the main configuration for rampart. * @param env pointer to environment struct,Must not be NULL. * @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. * @param rampart_context the rampart_context * @env pointer to environment struct,Must not be NULL. */ 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. * @param rampart_context the rampart_context * @param env pointer to environment struct,Must not be NULL. * @param policy_node is an axiom_node. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ 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. * @param rampart_context the rampart_context * @param env pointer to environment struct,Must not be NULL. * @param prv_key is a void buffer. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ 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); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @type * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ 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); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @param certificate * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_set_certificate(rampart_context_t *rampart_context, const axutil_env_t *env, void *certificate); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @param type * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ 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); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * @param receiver_certificate * returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ 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); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @param type * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ 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); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @param user * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ 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); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @param password * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ 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); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @param prv_key_password * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ 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); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @param pwcb_function * @param ctx * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ 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 *user_params); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @param is_replayed_function * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ 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, void *user_params); /** * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns user parameters for replay detector function or NULL */ AXIS2_EXTERN void * AXIS2_CALL rampart_context_get_rd_user_params( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @param password_type * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ 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); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @param ttl * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ 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_need_millisecond_precision( rampart_context_t *rampart_context, const axutil_env_t *env, axis2_bool_t need_millisecond_precision); AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_set_clock_skew_buffer( rampart_context_t *rampart_context, const axutil_env_t *env, int skew_buffer); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @param rd_val * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ 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); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @param private_key_file * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ 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); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @param cerficate_file * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ 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); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @param key * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_add_key(rampart_context_t *rampart_context, const axutil_env_t *env, oxs_key_t *key); /**********************************************************8*/ /*Getters of the above set functions*/ /** * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axiom_node_t *AXIS2_CALL rampart_context_get_policy_node( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN void *AXIS2_CALL rampart_context_get_prv_key( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_key_type_t AXIS2_CALL rampart_context_get_prv_key_type( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN void *AXIS2_CALL rampart_context_get_certificate( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_key_type_t AXIS2_CALL rampart_context_get_certificate_type( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN void *AXIS2_CALL rampart_context_get_receiver_certificate( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_key_type_t AXIS2_CALL rampart_context_get_receiver_certificate_type( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL rampart_context_get_user( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL rampart_context_get_password( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL rampart_context_get_prv_key_password( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN password_callback_fn AXIS2_CALL rampart_context_get_pwcb_function( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN rampart_is_replayed_fn AXIS2_CALL rampart_context_get_replay_detect_function( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN void * AXIS2_CALL rampart_context_get_pwcb_user_params( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN int AXIS2_CALL rampart_context_get_ttl( rampart_context_t *rampart_context, const axutil_env_t *env); AXIS2_EXTERN axis2_bool_t AXIS2_CALL rampart_context_get_need_millisecond_precision( rampart_context_t *rampart_context, const axutil_env_t *env); AXIS2_EXTERN int AXIS2_CALL rampart_context_get_clock_skew_buffer( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_char_t* AXIS2_CALL rampart_context_get_rd_val( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL rampart_context_get_password_type( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axutil_array_list_t* AXIS2_CALL rampart_context_get_keys(rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @param key_id * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN oxs_key_t* AXIS2_CALL rampart_context_get_key(rampart_context_t *rampart_context, const axutil_env_t *env, axis2_char_t* key_id); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @param hash * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN oxs_key_t* AXIS2_CALL rampart_context_get_key_using_hash(rampart_context_t *rampart_context, const axutil_env_t *env, axis2_char_t* hash); /*End of Getters */ /*Rampart specific functions */ /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN rp_secpolicy_t *AXIS2_CALL rampart_context_get_secpolicy( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @param secpolicy * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ 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); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN rampart_callback_t *AXIS2_CALL rampart_context_get_password_callback( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ 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); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @param password_callback_module * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN auth_password_func AXIS2_CALL rampart_context_get_auth_password_function( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @param authentication_with_password * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ 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); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN auth_digest_func AXIS2_CALL rampart_context_get_auth_digest_function( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @param authentication_with_digest * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ 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); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN rampart_authn_provider_t *AXIS2_CALL rampart_context_get_authn_provider( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN void *AXIS2_CALL rampart_context_get_replay_detector( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN void *AXIS2_CALL rampart_context_get_sct_provider( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @param authn_provider * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ 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); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @param replay_detector * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_set_replay_detector(rampart_context_t *rampart_context, const axutil_env_t *env, void *replay_detector); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @param sct_module * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_set_sct_provider(rampart_context_t *rampart_context, const axutil_env_t *env, void *sct_module); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_bool_t AXIS2_CALL rampart_context_get_require_timestamp( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_bool_t AXIS2_CALL rampart_context_get_require_ut( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN rp_property_type_t AXIS2_CALL rampart_context_get_binding_type( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_bool_t AXIS2_CALL rampart_context_is_include_timestamp( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_bool_t AXIS2_CALL rampart_context_is_include_username_token( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @param server_side * @param is_inpath * @param token_type * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_bool_t AXIS2_CALL rampart_context_is_include_supporting_token( rampart_context_t *rampart_context, const axutil_env_t *env, axis2_bool_t server_side, axis2_bool_t is_inpath, rp_property_type_t token_type); /** * * @param rampart_context * @param server_side * @param is_inpath * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_bool_t AXIS2_CALL rampart_context_is_include_protection_saml_token( rampart_context_t *rampart_context, axis2_bool_t server_side, axis2_bool_t is_inpath, const axutil_env_t *env); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @param token_type * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN rp_property_t * AXIS2_CALL rampart_context_get_supporting_token( rampart_context_t *rampart_context, const axutil_env_t *env, rp_property_type_t token_type); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL rampart_context_get_password_callback_class( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL rampart_context_get_authn_module_name( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL rampart_context_get_replay_detector_name( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL rampart_context_get_sct_provider_name( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_bool_t AXIS2_CALL rampart_context_is_encrypt_before_sign( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_bool_t AXIS2_CALL rampart_context_is_encrypt_signature( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @param soap_envelope * @param nodes_to_encrypt * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ 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); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @param soap_envelope * @param nodes_to_sign * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ 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); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @param soap_envelope * @param nodes_to_encrypt * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ 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); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @param soap_envelope * @param nodes_to_sign * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ 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); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * @param for_encryption * @param sever_side * @param is_inpath * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ 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); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN rp_property_t *AXIS2_CALL rampart_context_get_endorsing_token( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param env pointer to environment struct,Must not be NULL. * @param token * @returns whether derived key needed or not */ AXIS2_EXTERN axis2_bool_t AXIS2_CALL rampart_context_check_is_derived_keys( const axutil_env_t *env, rp_property_t *token); /** * @param env pointer to environment struct,Must not be NULL. * @param token * @returns derived key version. NULL on error. */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL rampart_context_get_derived_key_version( const axutil_env_t *env, rp_property_t *token); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL rampart_context_get_enc_sym_algo( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL rampart_context_get_enc_asym_algo( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL rampart_context_get_asym_sig_algo( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL rampart_context_get_digest_mtd( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL rampart_context_get_encryption_user( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param rampart_context * @param token * @param token_type * @param server_side * @param is_inpath * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ 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); /** * * @param rampart_context * @param token * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ 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); /** * * @param token_type * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_bool_t AXIS2_CALL rampart_context_is_token_type_supported( rp_property_type_t token_type, const axutil_env_t *env); /** * * @param rampart_context * @param token * @param identifier * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ 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); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL rampart_context_get_layout( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_bool_t AXIS2_CALL rampart_context_check_whether_to_encrypt( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_bool_t AXIS2_CALL rampart_context_check_whether_to_sign( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_set_user_from_file( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_set_password_type_from_file( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL rampart_context_get_certificate_file( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL rampart_context_get_receiver_certificate_file( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL rampart_context_get_private_key_file( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ 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_clock_skew_buffer_from_file( rampart_context_t *rampart_context, const axutil_env_t *env); AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_set_need_millisecond_precision_from_file( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_set_rd_val_from_file( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN oxs_key_t *AXIS2_CALL rampart_context_get_encryption_session_key( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @param session_key * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_set_encryption_session_key( rampart_context_t *rampart_context, const axutil_env_t *env, oxs_key_t *session_key); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN oxs_key_t *AXIS2_CALL rampart_context_get_signature_session_key( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @param session_key * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_set_signature_session_key( rampart_context_t *rampart_context, const axutil_env_t *env, oxs_key_t *session_key); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_increment_ref( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_bool_t AXIS2_CALL rampart_context_is_sig_confirmation_reqd( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL rampart_context_get_encryption_token_id( rampart_context_t *rampart_context, const axutil_env_t *env, axis2_msg_ctx_t* msg_ctx); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL rampart_context_get_signature_token_id( rampart_context_t *rampart_context, const axutil_env_t *env, axis2_msg_ctx_t* msg_ctx); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @param sct_id * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_set_encryption_token_id( rampart_context_t *rampart_context, const axutil_env_t *env, axis2_char_t *sct_id, axis2_msg_ctx_t* msg_ctx); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @param sct_id * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_set_signature_token_id( rampart_context_t *rampart_context, const axutil_env_t *env, axis2_char_t *sct_id, axis2_msg_ctx_t* msg_ctx); /* Return the saml token of token type set in the rampart context */ /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @param token_type * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN rampart_saml_token_t * AXIS2_CALL rampart_context_get_saml_token(rampart_context_t *rampart_context, const axutil_env_t *env, rampart_st_type_t token_type); /* Add a saml token */ /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @param token * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_add_saml_token(rampart_context_t *rampart_context, const axutil_env_t *env, rampart_saml_token_t *token); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @param tokens * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_set_saml_tokens( rampart_context_t *rampart_context, const axutil_env_t *env, axutil_array_list_t *tokens); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN issued_token_callback_func AXIS2_CALL rampart_context_get_issued_token_aquire_function( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @param issued_token_aquire * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_set_issued_token_aquire_function( rampart_context_t *rampart_context, const axutil_env_t *env, issued_token_callback_func issued_token_aquire); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN int AXIS2_CALL rampart_context_get_encryption_derived_key_len( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN int AXIS2_CALL rampart_context_get_signature_derived_key_len( rampart_context_t *rampart_context, const axutil_env_t *env); /** * * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN rp_algorithmsuite_t *AXIS2_CALL rampart_context_get_algorithmsuite( rampart_context_t *rampart_context, const axutil_env_t *env); /** * Get the key manager from rampart context. * @param rampart_context Pointer to rampart context struct. * @param Pointer to environment struct * @returns pointer Key manager struct */ AXIS2_EXTERN oxs_key_mgr_t * AXIS2_CALL rampart_context_get_key_mgr( rampart_context_t *rampart_context, const axutil_env_t *env); /** * Set the key manager to rampart context. * @param rampart_context Pointer to rampart context struct. * @param Pointer to environment struct * @param key_mgr Pointer to key manager struct. * @returns status of the operation. AXIS2_SUCCESS on success AXIS2_FAILURE otherwise. */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_set_key_mgr( rampart_context_t *rampart_context, const axutil_env_t *env, oxs_key_mgr_t *key_mgr); /** * Get the pkcs12 file name from rampart context. * @param rampart_context Pointer to rampart context struct. * @param Pointer to environment struct * @returns PKCS12 file name */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL rampart_context_get_pkcs12_file_name( rampart_context_t *rampart_context, const axutil_env_t *env); /** * Set the a node list to the context. These nodes will be append to * the Security header * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @param tokens the token list as an array * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_set_custom_tokens(rampart_context_t *rampart_context, const axutil_env_t *env, axutil_array_list_t *tokens); /** * Get the node or the token list as an array. If the size is 0 * that means there are no custom tokens specified by the client * @param rampart_context * @param env pointer to environment struct,Must not be NULL. * @returns the custom tokens list */ AXIS2_EXTERN axutil_array_list_t* AXIS2_CALL rampart_context_get_custom_tokens(rampart_context_t *rampart_context, const axutil_env_t *env); /** * Get the receiver certificate file name from rampart context. * @param rampart_context Pointer to rampart context struct. * @param env Pointer to environment struct * @returns Receiver certificate file name */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL rampart_context_get_receiver_certificate_file( rampart_context_t *rampart_context, const axutil_env_t *env); /** * Get the found_cert_in_shp from rampart context. * @param rampart_context Pointer to rampart context struct. * @param env Pointer to environment struct * @returns axis2_bool_t */ AXIS2_EXTERN axis2_bool_t AXIS2_CALL rampart_context_get_found_cert_in_shp( rampart_context_t *rampart_context, const axutil_env_t *env); /** * Set the certificate found status to rampart context. * @param rampart_context Pointer to rampart context struct. * @param env Pointer to environment struct * @param found_cert_in_shp boolean value which specify the certificate found status * @returns status of the operation */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_set_found_cert_in_shp( rampart_context_t *rampart_context, const axutil_env_t *env, axis2_bool_t found_cert_in_shp); /** * Get the certificate found in shp from rampart context. * @param rampart_context Pointer to rampart context struct. * @param env Pointer to environment struct * @returns oxs_x509_cert_t Client certificate found when processing sec header, otherwise NULL */ AXIS2_EXTERN oxs_x509_cert_t *AXIS2_CALL rampart_context_get_receiver_cert_found_in_shp( rampart_context_t *rampart_context, const axutil_env_t *env); /** * Set the found_cert_in_shp to rampart context. * @param rampart_context Pointer to rampart context struct. * @param env Pointer to environment struct * @param cert pointer to the certficate * @returns status of the operation */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_set_receiver_cert_found_in_shp( rampart_context_t *rampart_context, const axutil_env_t *env, oxs_x509_cert_t *cert); AXIS2_EXTERN void * AXIS2_CALL rampart_context_get_key_store_buff( rampart_context_t *rampart_context, const axutil_env_t *env); AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_set_key_store_buff( rampart_context_t *rampart_context, const axutil_env_t *env, void *key_store_buf, int length); /** * Set the function used to store security context token * @param rampart_context Pointer to rampart context struct. * @param env Pointer to environment struct * @param store_fn funtion pointer used to store sct * @returns status of the operation */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_set_store_security_context_token_fn( rampart_context_t *rampart_context, const axutil_env_t *env, store_security_context_token_fn store_fn); /** * Set the function used to get security context token * @param rampart_context Pointer to rampart context struct. * @param env Pointer to environment struct * @param get_fn funtion pointer used to get stored sct * @returns status of the operation */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_set_obtain_security_context_token_fn( rampart_context_t *rampart_context, const axutil_env_t *env, obtain_security_context_token_fn get_fn); /** * Set the function used to delete security context token * @param rampart_context Pointer to rampart context struct. * @param env Pointer to environment struct * @param delete_fn funtion pointer used to delete stored sct * @returns status of the operation */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_set_delete_security_context_token_fn( rampart_context_t *rampart_context, const axutil_env_t *env, delete_security_context_token_fn delete_fn); /** * Set the user parameters used to invoke security context token related funtions * @param rampart_context Pointer to rampart context struct. * @param env Pointer to environment struct * @param user_params pointer to user params * @returns status of the operation */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_set_security_context_token_user_params( rampart_context_t *rampart_context, const axutil_env_t *env, void* user_params); /** * Set the function used to validate security context token * @param rampart_context Pointer to rampart context struct. * @param env Pointer to environment struct * @param validate_fn funtion pointer used to validate sct * @returns status of the operation */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_set_validate_security_context_token_fn( rampart_context_t *rampart_context, const axutil_env_t *env, validate_security_context_token_fn validate_fn); /** * Get the function used to store security context token * @param rampart_context Pointer to rampart context struct. * @param env Pointer to environment struct * @returns untion pointer used to store sct */ AXIS2_EXTERN store_security_context_token_fn AXIS2_CALL rampart_context_get_store_security_context_token_fn( rampart_context_t *rampart_context, const axutil_env_t *env); /** * Get the function used to get security context token * @param rampart_context Pointer to rampart context struct. * @param env Pointer to environment struct * @returns funtion pointer used to get stored sct */ AXIS2_EXTERN obtain_security_context_token_fn AXIS2_CALL rampart_context_get_obtain_security_context_token_fn( rampart_context_t *rampart_context, const axutil_env_t *env); /** * Get the function used to delete security context token * @param rampart_context Pointer to rampart context struct. * @param env Pointer to environment struct * @returns funtion pointer used to delete stored sct */ AXIS2_EXTERN delete_security_context_token_fn AXIS2_CALL rampart_context_get_delete_security_context_token_fn( rampart_context_t *rampart_context, const axutil_env_t *env); /** * Get the user parameters used to invoke security context token related funtions * @param rampart_context Pointer to rampart context struct. * @param env Pointer to environment struct * @param user_params pointer to user params * @returns pointer to user parameter. */ AXIS2_EXTERN void* AXIS2_CALL rampart_context_get_security_context_token_user_params( rampart_context_t *rampart_context, const axutil_env_t *env); /** * Get the function used to validate security context token * @param rampart_context Pointer to rampart context struct. * @param env Pointer to environment struct * @returns funtion pointer used to validate sct */ AXIS2_EXTERN validate_security_context_token_fn AXIS2_CALL rampart_context_get_validate_security_context_token_fn( rampart_context_t *rampart_context, const axutil_env_t *env); /** * check whether different keys are needed for encryption and signature * @param env pointer to environment struct * @param rampart_context rampart context * @return AXIS2_TRUE if different keys are needed. AXIS2_FALSE otherwise. */ AXIS2_EXTERN axis2_bool_t AXIS2_CALL rampart_context_is_different_session_key_for_enc_and_sign( const axutil_env_t *env, rampart_context_t *rampart_context); AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_set_receiver_certificate_file( rampart_context_t *rampart_context, const axutil_env_t *env, axis2_char_t *receiver_certificate_file); #ifdef __cplusplus } #endif #endif rampartc-src-1.3.0/include/rampart_config.h0000644000076500007650000001674711202453410020561 0ustar shankarshankar/* * 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_CONFIG_H #define RAMPART_CONFIG_H /** * @file rampart_config.h * @brief The Rampart Config, in which user configurations are stored */ /** * @defgroup rampart_config Rampart Config * @ingroup rampart_utils * @{ */ #include #include /*#include */ #include #include #include /*#include #include #include #include #include #include #include #include #include #include #include */ #ifdef __cplusplus extern "C" { #endif typedef struct rampart_config_t rampart_config_t; /** * Create a rampart_config which can be used to get rampart specific configurations from user * @param env pointer to environment struct,Must not be NULL. * @return ramaprt_config_t* on successful creation. Else NULL; */ AXIS2_EXTERN rampart_config_t *AXIS2_CALL rampart_config_create( const axutil_env_t *env); /** * Frees a rampart_config. * @param rampart_config the rampart_config * @param env pointer to environment struct,Must not be NULL. */ AXIS2_EXTERN void AXIS2_CALL rampart_config_free( rampart_config_t *rampart_config, const axutil_env_t *env); /** * set username needed to build username token * @param rampart_config rampart configuration structure * @param evn pointer to environment struct,Must not be NULL. * @param user name of the user * @returns status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_config_set_username( rampart_config_t *rampart_config, const axutil_env_t *env, axis2_char_t *user); /** * set password of the user. Will be used to build UsernameToken * @param rampart_config rampart configuration structure * @param evn pointer to environment struct,Must not be NULL. * @param password password of the user * @returns status of the op. */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_config_set_password( rampart_config_t *rampart_config, const axutil_env_t *env, axis2_char_t *password); /** * set password type needed. Will be used to build UsernameToken * @param rampart_config rampart configuration structure * @param evn pointer to environment struct,Must not be NULL. * @param password_type type of the password. (hash/plain) * @returns status of the op. */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_config_set_password_type( rampart_config_t *rampart_config, const axutil_env_t *env, axis2_char_t *password_type); /** * sets time to live parameter needed by Timestamp element * @param rampart_config rampart configuration structure * @param evn pointer to environment struct,Must not be NULL. * @param ttl time to live value in seconds * @returns status of the op. */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_config_set_ttl( rampart_config_t *rampart_config, const axutil_env_t *env, int ttl); /** * Sets saml token needed to build/process the message * @param rampart_config rampart configuration structure * @param evn pointer to environment struct,Must not b e NULL. * @param saml SAML token used to build/process the message * @returns status of the op. */ AXIS2_EXTERN int AXIS2_CALL rampart_config_add_saml_token( rampart_config_t *rampart_config, const axutil_env_t *env, rampart_saml_token_t *saml); /** * sets function pointer used to aquire issued token * @param rampart_config rampart configuration structure * @param evn pointer to environment struct,Must not be NULL. * @param issued_token_aquire function pointer from which issued token will be obtained * @returns status of the op. */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_config_set_issued_token_aquire_function( rampart_config_t *rampart_config, const axutil_env_t *env, issued_token_callback_func issued_token_aquire); /** * Gets stored username * @param rampart_config rampart configuration structure * @param evn pointer to environment struct,Must not be NULL. * returns username stored in rampart config */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL rampart_config_get_username( rampart_config_t *rampart_config, const axutil_env_t *env); /** * Gets stored password * @param rampart_config rampart configuration structure * @param evn pointer to environment struct,Must not be NULL. * returns password stored in rampart config */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL rampart_config_get_password( rampart_config_t *rampart_config, const axutil_env_t *env); /** * Gets stored password type * @param rampart_config rampart configuration structure * @param evn pointer to environment struct,Must not be NULL. * returns password type stored in rampart config */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL rampart_config_get_password_type( rampart_config_t *rampart_config, const axutil_env_t *env); /** * Gets stored time to live * @param rampart_config rampart configuration structure * @param evn pointer to environment struct,Must not be NULL. * returns time to live parameter stored in rampart config */ AXIS2_EXTERN int AXIS2_CALL rampart_config_get_ttl( rampart_config_t *rampart_config, const axutil_env_t *env); /** * Gets stored SAML token * @param rampart_config rampart configuration structure * @param evn pointer to environment struct,Must not be NULL. * returns SAML token stored in rampart config */ AXIS2_EXTERN axutil_array_list_t * AXIS2_CALL rampart_config_get_saml_tokens( rampart_config_t *rampart_config, const axutil_env_t *env); /** * Gets stored issued token aquire function pointer * @param rampart_config rampart configuration structure * @param evn pointer to environment struct,Must not be NULL. * returns issued token aquire function pointer stored in rampart config */ AXIS2_EXTERN issued_token_callback_func AXIS2_CALL rampart_config_get_issued_token_aquire_function( rampart_config_t *rampart_config, const axutil_env_t *env); /* @} */ #ifdef __cplusplus } #endif #endif /* RAMPART_CONFIG_H */ rampartc-src-1.3.0/include/rampart_issued_token.h0000644000076500007650000000727211202453410022001 0ustar shankarshankar/* * 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 */ #ifndef RAMPART_ISSUED_TOKEN_H #define RAMPART_ISSUED_TOKEN_H #include #include #include #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif typedef struct rampart_issued_token_t rampart_issued_token_t; typedef rampart_issued_token_t *(AXIS2_CALL * issued_token_callback_func)( const axutil_env_t *env, rp_property_t *issued_token, void *ctx); /** * * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN rampart_issued_token_t * AXIS2_CALL rampart_issued_token_create( const axutil_env_t *env); /** * * @param token * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_issued_token_free( rampart_issued_token_t *token, const axutil_env_t *env); /** * * @param issued_token * @param env pointer to environment struct,Must not be NULL. * @param token * @param token_type * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_issued_token_set_token( rampart_issued_token_t *issued_token, const axutil_env_t *env, void *token, rp_property_type_t token_type); /** * * @param token * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN rp_property_type_t AXIS2_CALL rampart_issued_token_get_token_type( rampart_issued_token_t *token, const axutil_env_t *env); /** * * @param token * @param env pointer to environment struct,Must not be NULL. * @returns status of the op. * AXIS2_SUCCESS on success and AXIS2_FAILURE on error */ AXIS2_EXTERN void * AXIS2_CALL rampart_issued_token_get_token( rampart_issued_token_t *token, const axutil_env_t *env); #ifdef __cplusplus } #endif #endif rampartc-src-1.3.0/include/oxs_ctx.h0000644000076500007650000002236611202453410017247 0ustar shankarshankar/* * 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 OXS_CTX_H #define OXS_CTX_H /** * @file oxs_ctx.h * @brief Keeps configurations for the OMXMLSecurity */ #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif /** * @defgroup oxs_ctx OXS Context * @ingroup oxs * @{ */ typedef enum { OXS_CTX_OPERATION_NONE = 0, OXS_CTX_OPERATION_ENCRYPT, OXS_CTX_OPERATION_DECRYPT } oxs_ctx_operation_t; typedef enum { OXS_CTX_MODE_ENCRYPTED_DATA = 0, OXS_CTX_MODE_ENCRYPTED_KEY } oxs_ctx_mode_t; /** Type name for struct oxs_ctx */ typedef struct oxs_ctx_t oxs_ctx_t; /** * Free function of the context * @param ctx The OMXMLSecurity context * @param env pointer to environment struct * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_ctx_free( oxs_ctx_t *ctx, const axutil_env_t *env ); /** * Returns the mode of the context * @param ctx The OMXMLSecurity context * @param env pointer to environment struct * @return mode of the context */ AXIS2_EXTERN oxs_ctx_mode_t AXIS2_CALL oxs_ctx_get_mode( oxs_ctx_t *ctx, const axutil_env_t *env ); /** * * @param ctx The OMXMLSecurity context * @param env pointer to environment struct * @return operation of the context */ AXIS2_EXTERN oxs_ctx_operation_t AXIS2_CALL oxs_ctx_get_operation( oxs_ctx_t *ctx, const axutil_env_t *env ); /** * * @param ctx The OMXMLSecurity context * @param env pointer to environment struct * @return of the context */ AXIS2_EXTERN oxs_key_t *AXIS2_CALL oxs_ctx_get_key( oxs_ctx_t *ctx, const axutil_env_t *env ); /** * * @param ctx The OMXMLSecurity context * @param env pointer to environment struct * @return of the context */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_ctx_get_id( oxs_ctx_t *ctx, const axutil_env_t *env ); /** * * @param ctx The OMXMLSecurity context * @param env pointer to environment struct * @return of the context */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_ctx_get_type( oxs_ctx_t *ctx, const axutil_env_t *env ); /** * * @param ctx The OMXMLSecurity context * @param env pointer to environment struct * @return of the context */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_ctx_get_mime_type( oxs_ctx_t *ctx, const axutil_env_t *env ); /** * * @param ctx The OMXMLSecurity context * @param env pointer to environment struct * @return of the context */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_ctx_get_encoding( oxs_ctx_t *ctx, const axutil_env_t *env ); /** * * @param ctx The OMXMLSecurity context * @param env pointer to environment struct * @return of the context */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_ctx_get_recipient( oxs_ctx_t *ctx, const axutil_env_t *env ); /** * * @param ctx The OMXMLSecurity context * @param env pointer to environment struct * @return of the context */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_ctx_get_ref_key_name( oxs_ctx_t *ctx, const axutil_env_t *env ); /** * * @param ctx The OMXMLSecurity context * @param env pointer to environment struct * @return of the context */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_ctx_get_enc_mtd_algorithm( oxs_ctx_t *ctx, const axutil_env_t *env ); /** * * @param ctx The OMXMLSecurity context * @param env pointer to environment struct * @return of the context */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_ctx_get_input_data( oxs_ctx_t *ctx, const axutil_env_t *env ); /** * * @param ctx The OMXMLSecurity context * @param env pointer to environment struct * @param mode the mode of operation, EncryptedData/EncryptedKey * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_ctx_set_mode( oxs_ctx_t *ctx, const axutil_env_t *env, oxs_ctx_mode_t mode ); /** * * @param ctx The OMXMLSecurity context * @param env pointer to environment struct * @param operation the operation Encrypt/Decrypt/Sign/Verify * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_ctx_set_operation( oxs_ctx_t *ctx, const axutil_env_t *env, oxs_ctx_operation_t operation ); /** * * @param ctx The OMXMLSecurity context * @param env pointer to environment struct * @param key the key used * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_ctx_set_key( oxs_ctx_t *ctx, const axutil_env_t *env, oxs_key_t *key ); /** * * @param ctx The OMXMLSecurity context * @param env pointer to environment struct * @param id the id of the context * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_ctx_set_id( oxs_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *id ); /** * * @param ctx The OMXMLSecurity context * @param env pointer to environment struct * @param type ???Depricated? * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_ctx_set_type( oxs_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *type ); /** * * @param ctx The OMXMLSecurity context * @param env pointer to environment struct * @param mime_type the mime type used * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_ctx_set_mime_type( oxs_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *mime_type ); /** * * @param ctx The OMXMLSecurity context * @param env pointer to environment struct * @param encoding the encoding used * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_ctx_set_encoding( oxs_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *encoding ); /** * * @param ctx The OMXMLSecurity context * @param env pointer to environment struct * @param recipient name of recipient * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_ctx_set_recipient( oxs_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *recipient ); /** * * @param ctx The OMXMLSecurity context * @param env pointer to environment struct * @param ref_key_name the key name * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_ctx_set_ref_key_name( oxs_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *ref_key_name ); /** * * @param ctx The OMXMLSecurity context * @param env pointer to environment struct * @param enc_mtd_algorithm the encryption method algorithm * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_ctx_set_enc_mtd_algorithm( oxs_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *enc_mtd_algorithm ); /** * * @param ctx The OMXMLSecurity context * @param env pointer to environment struct * @param input_data the input data * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_ctx_set_input_data( oxs_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *input_data ); /*Create function*/ AXIS2_EXTERN oxs_ctx_t *AXIS2_CALL oxs_ctx_create(const axutil_env_t *env); /** @} */ #ifdef __cplusplus } #endif #endif /* OXS_CTX_H */ rampartc-src-1.3.0/include/oxs_utility.h0000644000076500007650000000540311202453410020145 0ustar shankarshankar/* * 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 OXS_UTILITY_H #define OXS_UTILITY_H /** * @file oxs_utility.h * @brief The utility module for OMXMLSecurity */ /** * @defgroup oxs_utility Utility * @ingroup oxs * @{ */ #include #include #include #include #ifdef __cplusplus extern "C" { #endif /** * Generate a nonce or a random text for a given length * @param env pointer to environment struct * @param length the length of the nonce * @return the generated nonce **/ AXIS2_EXTERN axis2_char_t* AXIS2_CALL oxs_util_generate_nonce(const axutil_env_t *env, int length); /** * Generates an id for an element. * Specially used in xml encryption and signature references. * Caller must free memory * @param env pointer to environment struct * @param prefix the prefix of the id. For ex: EncDataID-1u343yrcarwqe * @return the generated id **/ AXIS2_EXTERN axis2_char_t* AXIS2_CALL oxs_util_generate_id(const axutil_env_t *env, axis2_char_t *prefix); /** * Given the filename returns the format of the file. * These formats are defined in asym_ctx.h * @param env pointer to environment struct * @param file_name the file name **/ AXIS2_EXTERN oxs_key_mgr_format_t AXIS2_CALL oxs_util_get_format_by_file_extension(const axutil_env_t *env, axis2_char_t *file_name); /** * Given string and returns new lined removed string * Caller MUST free memory * @param env pointer to environment struct * @param input a pointer to the string which has \n s. * return the newline removed buffer. **/ AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_util_get_newline_removed_string(const axutil_env_t *env, axis2_char_t *input); /** @} */ #ifdef __cplusplus } #endif #endif /* OXS_UTILITY_H */ rampartc-src-1.3.0/include/openssl_hmac.h0000644000076500007650000000343511202453410020227 0ustar shankarshankar/* * Copyright 2003-2004 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. */ #include #include #include #include #include #include #include /** * @file openssl_hmac.h * @brief HMAC function implementations. Supports SHA1 */ #ifndef OPENSSL_HMAC #define OPENSSL_HMAC #ifdef __cplusplus extern "C" { #endif /** * @defgroup openssl_hmac OpenSSL Hmac * @ingroup openssl * @{ */ AXIS2_EXTERN axis2_status_t AXIS2_CALL openssl_hmac_sha1(const axutil_env_t *env, oxs_key_t *secret, oxs_buffer_t *input, oxs_buffer_t *output); AXIS2_EXTERN axis2_status_t AXIS2_CALL openssl_p_sha1(const axutil_env_t *env, oxs_key_t *secret, axis2_char_t *label, axis2_char_t *seed, oxs_key_t *derived_key); AXIS2_EXTERN axis2_status_t AXIS2_CALL openssl_p_hash(const axutil_env_t *env, unsigned char *secret, unsigned int secret_len, unsigned char *seed, unsigned int seed_len, unsigned char *output, unsigned int output_len); /* @} */ #ifdef __cplusplus } #endif #endif /* OPENSSL_HMAC */ rampartc-src-1.3.0/include/rampart_sct_provider_utility.h0000644000076500007650000002333311202453410023567 0ustar shankarshankar/* * 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_UTILITY_H #define RAMPART_SCT_PROVIDER_UTILITY_H /** * @file rampart_sct_provider_utility.h * @brief Utility methods using Security context token provider module */ /** * @defgroup sct_provider Security Context Token provider * @ingroup rampart_utils * @{ */ #include #include #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif /** * Finds security context token and gets shared secret. * returned buffer should NOT be cleared by the caller * @param env Pointer to environment struct * @param token rampart policy property of the token * @param is_encryption boolean showing whether the token is needed for encryption or signature * @param rampart_context pointer to rampart context structure * @param msg_ctx pointer to message context structure * @returns shared secret of the security context token. returned buffer should NOT be freed */ AXIS2_EXTERN oxs_buffer_t *AXIS2_CALL sct_provider_get_secret( const axutil_env_t* env, rp_property_t *token, axis2_bool_t is_encryption, rampart_context_t* rampart_context, axis2_msg_ctx_t* msg_ctx); /** * Finds security context token and gets shared secret. * returned buffer should NOT be cleared by the caller * @param env Pointer to environment struct * @param sct_id id of security context token * @param rampart_context pointer to rampart context structure * @param msg_ctx pointer to message context structure * @returns shared secret of the security context token. returned buffer should NOT be freed */ AXIS2_EXTERN oxs_buffer_t *AXIS2_CALL sct_provider_get_secret_using_id( const axutil_env_t* env, axis2_char_t* sct_id, rampart_context_t* rampart_context, axis2_msg_ctx_t* msg_ctx); /** * Finds security context token and gets the xml representation of token * @param env Pointer to environment struct * @param token rampart policy property of the token * @param is_encryption boolean showing whether the token is needed for encryption or signature * @param rampart_context pointer to rampart context structure * @param msg_ctx pointer to message context structure * @returns shared secret of the security context token. returned buffer should NOT be freed */ AXIS2_EXTERN axiom_node_t *AXIS2_CALL sct_provider_get_token( const axutil_env_t* env, rp_property_t *token, axis2_bool_t is_encryption, rampart_context_t* rampart_context, axis2_msg_ctx_t* msg_ctx); /** * Finds security context token and gets the xml representation of key reference. This reference * is used when security context token is included in the message * @param env Pointer to environment struct * @param token rampart policy property of the token * @param is_encryption boolean showing whether the token is needed for encryption or signature * @param rampart_context pointer to rampart context structure * @param msg_ctx pointer to message context structure * @returns shared secret of the security context token. returned buffer should NOT be freed */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL sct_provider_get_attached_reference( const axutil_env_t* env, rp_property_t *token, axis2_bool_t is_encryption, rampart_context_t* rampart_context, axis2_msg_ctx_t* msg_ctx); /** * Finds security context token and gets the xml representation of key reference. This reference * is used when security context token is NOT included in the message * @param env Pointer to environment struct * @param token rampart policy property of the token * @param is_encryption boolean showing whether the token is needed for encryption or signature * @param rampart_context pointer to rampart context structure * @param msg_ctx pointer to message context structure * @returns shared secret of the security context token. returned buffer should NOT be freed */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL sct_provider_get_unattached_reference( const axutil_env_t* env, rp_property_t *token, axis2_bool_t is_encryption, rampart_context_t* rampart_context, axis2_msg_ctx_t* msg_ctx); /** * 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. * @param env Pointer to environment struct * @param sct_node axiom node representation of security context token. * @param rampart_context pointer to rampart context structure * @param msg_ctx pointer to message context structure * @returns AXIS2_TRUE is sct is valid. AXIS2_FALSE otherwise. */ AXIS2_EXTERN axis2_status_t AXIS2_CALL sct_provider_validate_security_context_token( const axutil_env_t *env, axiom_node_t *sct_node, rampart_context_t *rampart_context, axis2_msg_ctx_t *msg_ctx); /** * Default implementation of obtain sct function. If neither sct_provider nor user defined * obtain function is given, this function will be used. (obtain_security_context_token_fn) * @param env pointer to environment struct * @param is_encryption boolean denotes sct is needed for encryption or signature * @param msg_ctx pointer to message context structure * @param sct_id identifier of security context token. Can be NULL * @param sct_id_type type of sct id. can be global, local or unknown * @param user_params parameter provided by user (not used in this method) * return security context token if found. NULL otherwise. */ AXIS2_EXTERN void* AXIS2_CALL sct_provider_obtain_sct_default( const axutil_env_t *env, axis2_bool_t is_encryption, axis2_msg_ctx_t* msg_ctx, axis2_char_t *sct_id, int sct_id_type, void* user_params); /** * Default implementation of store sct function. If neither sct_provider nor user defined * store function is given, this function will be used. (store_security_context_token_fn) * @param env pointer to environment struct * @param msg_ctx pointer to message context structure * @param sct_global_id global identifier of security context token. Can be NULL * @param sct_local_id local identifier of security context token. Can be NULL * @param sct security context token to be stored * @param user_params parameter provided by user (not used in this method) * return AXIS2_SUCCESS if stored. AXIS2_FAILURE otherwise. */ AXIS2_EXTERN axis2_status_t AXIS2_CALL sct_provider_store_sct_default( const axutil_env_t *env, axis2_msg_ctx_t* msg_ctx, axis2_char_t *sct_global_id, axis2_char_t *sct_local_id, void *sct, void *user_params); /** * Default implementation of delete sct function. If neither sct_provider nor user defined * store function is given, this function will be used. (delete_security_context_token_fn) * @param env pointer to environment struct * @param msg_ctx pointer to message context structure * @param sct_id identifier of security context token. Should not be NULL. * @param sct_id_type type of sct id. can be global or local. * @param user_params parameter provided by user (not used in this method) * @return AXIS2_SUCCESS if deleted. AXIS2_FAILURE otherwise. */ AXIS2_EXTERN axis2_status_t AXIS2_CALL sct_provider_delete_sct_default( const axutil_env_t *env, axis2_msg_ctx_t* msg_ctx, axis2_char_t *sct_id, int sct_id_type, void* user_params); /** * Default implementation of validate sct function. If neither sct_provider nor user defined * store function is given, this function will be used. (validate_security_context_token_fn) * @param env pointer to environment struct * @param sct_node axiom representation of security context token * @param user_params parameter provided by user (not used in this method) * @return AXIS2_SUCCESS if valid. AXIS2_FAILURE otherwise. */ AXIS2_EXTERN axis2_status_t AXIS2_CALL sct_provider_validate_sct_default( const axutil_env_t *env, axiom_node_t *sct_node, axis2_msg_ctx_t *msg_ctx, void *user_params); /** @} */ #ifdef __cplusplus } #endif #endif /* RAMPART_SCT_PROVIDER_UTILITY_H */ rampartc-src-1.3.0/config.sub0000755000076500007650000007772610750156617016001 0ustar shankarshankar#! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, # Inc. timestamp='2007-04-29' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software # can handle that machine. It does not imply ALL GNU software can. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA # 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray) os= basic_machine=$1 ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ | bfin \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | mcore | mep \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64vr | mips64vrel \ | mips64orion | mips64orionel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | mt \ | msp430 \ | nios | nios2 \ | ns16k | ns32k \ | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | pyramid \ | score \ | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu | strongarm \ | tahoe | thumb | tic4x | tic80 | tron \ | v850 | v850e \ | we32k \ | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ | z8k) basic_machine=$basic_machine-unknown ;; m6811 | m68hc11 | m6812 | m68hc12) # Motorola 68HC11/12. basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64vr-* | mips64vrel-* \ | mips64orion-* | mips64orionel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nios-* | nios2-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | pyramid-* \ | romp-* | rs6000-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ | tahoe-* | thumb-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tron-* \ | v850-* | v850e-* | vax-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ | xstormy16-* | xtensa-* \ | ymp-* \ | z8k-*) ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; c90) basic_machine=c90-cray os=-unicos ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16c) basic_machine=cr16c-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; # I'm not sure what "Sysv32" means. Should this be sysv3.2? i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; mingw32) basic_machine=i386-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; mvs) basic_machine=i370-ibm os=-mvs ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc) basic_machine=powerpc-unknown ;; ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tic54x | c54x*) basic_machine=tic54x-unknown os=-coff ;; tic55x | c55x*) basic_machine=tic55x-unknown os=-coff ;; tic6x | c6x*) basic_machine=tic6x-unknown os=-coff ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -openbsd* | -solidbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -kaos*) os=-kaos ;; -zvmoe) os=-zvmoe ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 # This also exists in the configure program, but was not the # default. # os=-sunos4 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: rampartc-src-1.3.0/Makefile.am0000644000076500007650000000051011202453435016012 0ustar shankarshankarSUBDIRS = src docsdir=$(prefix)/docs includedir=$(prefix)/include/rampart-1.3.0 include_HEADERS=$(top_builddir)/include/*.h docs_DATA=xdocs/* EXTRA_DIST = LICENSE NOTICE build.sh autogen.sh samples build test xdocs check: ./rampart-tests.sh dist-hook: cp -r target/docs $(distdir) cp -r xdocs/api $(distdir)/docs rampartc-src-1.3.0/NEWS0000644000076500007650000000564211202453435014470 0ustar shankarshankarApache Rampart/C version 1.3.0 Apache Rampart/C is the security module for Apache Axis2/C You can get the latest svn checkout from https://svn.apache.org/repos/asf/webservices/rampart/trunk/c Key features ------------- 1. Ability to send and verify UsernameTokens with - Username and PlainText password - Username and Digested password 2. Ability to send Timestamp tokens 3. SOAP message encryption - With derived key support for improved security - Symmetric and Asymmetric modes of operations - Support for AES and Tripple DES encryption - Signature encryption - Keys encryption 4. SOAP message signature - XML signature with RSA-SHA1 - Message authentication with HMAC-SHA1 - Signature confirmation support - SOAP Header signing 5. WS-Security Policy (spec 1.1 & spec 1.2) based configurations - Support for both Symmetric as well as Asymmetric policy bindings - Support for different modes of key identifiers - Support for different algorithm suites [Basic128, Basic 192, Basic256, TrippleDES, Basic128Rsa15, Basic192Rsa15,Basic256Rsa15, TripleDesRsa15] - Support for IssuedToken assertion in client side. - Support for SAMLToken assertion. 6. Replay detection support - Easy to use built-in replay detection module - Ability to deploy a customized replay detection module 7. Different protection orders - Encrypt before signing - Sign before encrypting 8. Extensible modules - Password callback module - Authentication module - Credentials module - Replay detection module - Secure conversation token module 9. Keys management - Support for X509 token profile - Support for Key identifiers, Thumb prints, Issuer/Serial pairs, Embedded and Direct references - Support for PKCS12 keystore 10. WS-Secure Conversation Language support - Establishing Security Context and thereby maintaining a session - Per message key derivation - Support for stored securtiy context token - Rahas module support to give STS functionality to a service 11. WS-Trust Language support - Security Token Services (STS) - STS Client - Server and Client entrophy support 12. SAML Support - Support for Creation and Processing of SAML Core 1.1 Assertions - SAML Token as Sign Supporting Token - Signing and Encryption with SAML 10. Other - Easy to use deployment scripts - A comprehensive set of samples Major Changes Since Last Release -------------------------------- 1. WS-Secure Conversation Language support 2. WS-Trust Language support 3. Rahas module to give STS support to a service 4. PKCS12 Keystore support 5. Security Policy 1.2 support 6. Memory leak fixes 7. Many bug fixes Planned to be implemented Architecture Features ------------------------------------ 1. WS-Trust : Client/Server challenege response protocol We welcome your early feedback on this implementation. Thanks for your interest in Rampart/C rampartc-src-1.3.0/aclocal.m40000644000076500007650000101243711202453543015632 0ustar shankarshankar# generated automatically by aclocal 1.10.1 -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(AC_AUTOCONF_VERSION, [2.61],, [m4_warning([this file was generated for autoconf 2.61. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically `autoreconf'.])]) # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # serial 51 AC_PROG_LIBTOOL # AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED) # ----------------------------------------------------------- # If this macro is not defined by Autoconf, define it here. m4_ifdef([AC_PROVIDE_IFELSE], [], [m4_define([AC_PROVIDE_IFELSE], [m4_ifdef([AC_PROVIDE_$1], [$2], [$3])])]) # AC_PROG_LIBTOOL # --------------- AC_DEFUN([AC_PROG_LIBTOOL], [AC_REQUIRE([_AC_PROG_LIBTOOL])dnl dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX. AC_PROVIDE_IFELSE([AC_PROG_CXX], [AC_LIBTOOL_CXX], [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX ])]) dnl And a similar setup for Fortran 77 support AC_PROVIDE_IFELSE([AC_PROG_F77], [AC_LIBTOOL_F77], [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77 ])]) dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly. dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both. AC_PROVIDE_IFELSE([AC_PROG_GCJ], [AC_LIBTOOL_GCJ], [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], [AC_LIBTOOL_GCJ], [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ], [AC_LIBTOOL_GCJ], [ifdef([AC_PROG_GCJ], [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])]) ifdef([A][M_PROG_GCJ], [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])]) ifdef([LT_AC_PROG_GCJ], [define([LT_AC_PROG_GCJ], defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])]) ])])# AC_PROG_LIBTOOL # _AC_PROG_LIBTOOL # ---------------- AC_DEFUN([_AC_PROG_LIBTOOL], [AC_REQUIRE([AC_LIBTOOL_SETUP])dnl AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' AC_SUBST(LIBTOOL)dnl # Prevent multiple expansion define([AC_PROG_LIBTOOL], []) ])# _AC_PROG_LIBTOOL # AC_LIBTOOL_SETUP # ---------------- AC_DEFUN([AC_LIBTOOL_SETUP], [AC_PREREQ(2.50)dnl AC_REQUIRE([AC_ENABLE_SHARED])dnl AC_REQUIRE([AC_ENABLE_STATIC])dnl AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_PROG_LD])dnl AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl AC_REQUIRE([AC_PROG_NM])dnl AC_REQUIRE([AC_PROG_LN_S])dnl AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl # Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! AC_REQUIRE([AC_OBJEXT])dnl AC_REQUIRE([AC_EXEEXT])dnl dnl AC_LIBTOOL_SYS_MAX_CMD_LEN AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE AC_LIBTOOL_OBJDIR AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl _LT_AC_PROG_ECHO_BACKSLASH case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='sed -e 1s/^X//' [sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'] # Same as above, but do not quote variable references. [double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'] # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' # Constants: rm="rm -f" # Global variables: default_ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a ltmain="$ac_aux_dir/ltmain.sh" ofile="$default_ofile" with_gnu_ld="$lt_cv_prog_gnu_ld" AC_CHECK_TOOL(AR, ar, false) AC_CHECK_TOOL(RANLIB, ranlib, :) AC_CHECK_TOOL(STRIP, strip, :) old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$AR" && AR=ar test -z "$AR_FLAGS" && AR_FLAGS=cru test -z "$AS" && AS=as test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$DLLTOOL" && DLLTOOL=dlltool test -z "$LD" && LD=ld test -z "$LN_S" && LN_S="ln -s" test -z "$MAGIC_CMD" && MAGIC_CMD=file test -z "$NM" && NM=nm test -z "$SED" && SED=sed test -z "$OBJDUMP" && OBJDUMP=objdump test -z "$RANLIB" && RANLIB=: test -z "$STRIP" && STRIP=: test -z "$ac_objext" && ac_objext=o # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" fi _LT_CC_BASENAME([$compiler]) # Only perform the check for file, if the check method requires it case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then AC_PATH_MAGIC fi ;; esac AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no) AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], enable_win32_dll=yes, enable_win32_dll=no) AC_ARG_ENABLE([libtool-lock], [AC_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes AC_ARG_WITH([pic], [AC_HELP_STRING([--with-pic], [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], [pic_mode="$withval"], [pic_mode=default]) test -z "$pic_mode" && pic_mode=default # Use C for the default configuration in the libtool script tagname= AC_LIBTOOL_LANG_C_CONFIG _LT_AC_TAGCONFIG ])# AC_LIBTOOL_SETUP # _LT_AC_SYS_COMPILER # ------------------- AC_DEFUN([_LT_AC_SYS_COMPILER], [AC_REQUIRE([AC_PROG_CC])dnl # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC ])# _LT_AC_SYS_COMPILER # _LT_CC_BASENAME(CC) # ------------------- # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. AC_DEFUN([_LT_CC_BASENAME], [for cc_temp in $1""; do case $cc_temp in compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` ]) # _LT_COMPILER_BOILERPLATE # ------------------------ # Check for compiler boilerplate output or warnings with # the simple compiler test code. AC_DEFUN([_LT_COMPILER_BOILERPLATE], [AC_REQUIRE([LT_AC_PROG_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $rm conftest* ])# _LT_COMPILER_BOILERPLATE # _LT_LINKER_BOILERPLATE # ---------------------- # Check for linker boilerplate output or warnings with # the simple link test code. AC_DEFUN([_LT_LINKER_BOILERPLATE], [AC_REQUIRE([LT_AC_PROG_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $rm conftest* ])# _LT_LINKER_BOILERPLATE # _LT_AC_SYS_LIBPATH_AIX # ---------------------- # Links a minimal program and checks the executable # for the system default hardcoded library path. In most cases, # this is /usr/lib:/lib, but when the MPI compilers are used # the location of the communication and MPI libs are included too. # If we don't find anything, use the default library path according # to the aix ld manual. AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX], [AC_REQUIRE([LT_AC_PROG_SED])dnl AC_LINK_IFELSE(AC_LANG_PROGRAM,[ lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi],[]) if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ])# _LT_AC_SYS_LIBPATH_AIX # _LT_AC_SHELL_INIT(ARG) # ---------------------- AC_DEFUN([_LT_AC_SHELL_INIT], [ifdef([AC_DIVERSION_NOTICE], [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], [AC_DIVERT_PUSH(NOTICE)]) $1 AC_DIVERT_POP ])# _LT_AC_SHELL_INIT # _LT_AC_PROG_ECHO_BACKSLASH # -------------------------- # Add some code to the start of the generated configure script which # will find an echo command which doesn't interpret backslashes. AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH], [_LT_AC_SHELL_INIT([ # Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} case X$ECHO in X*--fallback-echo) # Remove one level of quotation (which was required for Make). ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` ;; esac echo=${ECHO-echo} if test "X[$]1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X[$]1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then # Yippee, $echo works! : else # Restart under the correct shell. exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} fi if test "X[$]1" = X--fallback-echo; then # used as fallback echo shift cat </dev/null 2>&1 && unset CDPATH if test -z "$ECHO"; then if test "X${echo_test_string+set}" != Xset; then # find a string as large as possible, as long as the shell can cope with it for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... if (echo_test_string=`eval $cmd`) 2>/dev/null && echo_test_string=`eval $cmd` && (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null then break fi done fi if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then : else # The Solaris, AIX, and Digital Unix default echo programs unquote # backslashes. This makes it impossible to quote backslashes using # echo "$something" | sed 's/\\/\\\\/g' # # So, first we look for a working echo in the user's PATH. lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for dir in $PATH /usr/ucb; do IFS="$lt_save_ifs" if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$dir/echo" break fi done IFS="$lt_save_ifs" if test "X$echo" = Xecho; then # We didn't find a better echo, so look for alternatives. if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # This shell has a builtin print -r that does the trick. echo='print -r' elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && test "X$CONFIG_SHELL" != X/bin/ksh; then # If we have ksh, try running configure again with it. ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} export ORIGINAL_CONFIG_SHELL CONFIG_SHELL=/bin/ksh export CONFIG_SHELL exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} else # Try using printf. echo='printf %s\n' if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # Cool, printf works : elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL export CONFIG_SHELL SHELL="$CONFIG_SHELL" export SHELL echo="$CONFIG_SHELL [$]0 --fallback-echo" elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$CONFIG_SHELL [$]0 --fallback-echo" else # maybe with a smaller string... prev=: for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null then break fi prev="$cmd" done if test "$prev" != 'sed 50q "[$]0"'; then echo_test_string=`eval $prev` export echo_test_string exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} else # Oops. We lost completely, so just stick with echo. echo=echo fi fi fi fi fi fi # Copy echo and quote the copy suitably for passing to libtool from # the Makefile, instead of quoting the original, which is used later. ECHO=$echo if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" fi AC_SUBST(ECHO) ])])# _LT_AC_PROG_ECHO_BACKSLASH # _LT_AC_LOCK # ----------- AC_DEFUN([_LT_AC_LOCK], [AC_ARG_ENABLE([libtool-lock], [AC_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '[#]line __oline__ "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ s390*-*linux*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) libsuff=64 case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; ppc*-*linux*|powerpc*-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_LANG_PUSH(C) AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) AC_LANG_POP]) if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; sparc*-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) LD="${LD-ld} -m elf64_sparc" ;; *) LD="${LD-ld} -64" ;; esac ;; esac fi rm -rf conftest* ;; AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], [*-*-cygwin* | *-*-mingw* | *-*-pw32*) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) ;; ]) esac need_locks="$enable_libtool_lock" ])# _LT_AC_LOCK # AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------------------- # Check whether the given compiler option works AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [AC_REQUIRE([LT_AC_PROG_SED]) AC_CACHE_CHECK([$1], [$2], [$2=no ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$3" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi fi $rm conftest* ]) if test x"[$]$2" = xyes; then ifelse([$5], , :, [$5]) else ifelse([$6], , :, [$6]) fi ])# AC_LIBTOOL_COMPILER_OPTION # AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [ACTION-SUCCESS], [ACTION-FAILURE]) # ------------------------------------------------------------ # Check whether the given compiler option works AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [AC_REQUIRE([LT_AC_PROG_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $3" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&AS_MESSAGE_LOG_FD $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi else $2=yes fi fi $rm conftest* LDFLAGS="$save_LDFLAGS" ]) if test x"[$]$2" = xyes; then ifelse([$4], , :, [$4]) else ifelse([$5], , :, [$5]) fi ])# AC_LIBTOOL_LINKER_OPTION # AC_LIBTOOL_SYS_MAX_CMD_LEN # -------------------------- AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [# find the maximum length of command line arguments AC_MSG_CHECKING([the maximum length of command line arguments]) AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \ = "XX$teststring") >/dev/null 2>&1 && new_result=`expr "X$teststring" : ".*" 2>&1` && lt_cv_sys_max_cmd_len=$new_result && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done teststring= # Add a significant safety factor because C++ compilers can tack on massive # amounts of additional arguments before passing them to the linker. # It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac ]) if test -n $lt_cv_sys_max_cmd_len ; then AC_MSG_RESULT($lt_cv_sys_max_cmd_len) else AC_MSG_RESULT(none) fi ])# AC_LIBTOOL_SYS_MAX_CMD_LEN # _LT_AC_CHECK_DLFCN # ------------------ AC_DEFUN([_LT_AC_CHECK_DLFCN], [AC_CHECK_HEADERS(dlfcn.h)dnl ])# _LT_AC_CHECK_DLFCN # _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, # ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) # --------------------------------------------------------------------- AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF], [AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl if test "$cross_compiling" = yes; then : [$4] else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } else puts (dlerror ()); exit (status); }] EOF if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) $1 ;; x$lt_dlneed_uscore) $2 ;; x$lt_dlunknown|x*) $3 ;; esac else : # compilation failed $3 fi fi rm -fr conftest* ])# _LT_AC_TRY_DLOPEN_SELF # AC_LIBTOOL_DLOPEN_SELF # ---------------------- AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ]) ;; *) AC_CHECK_FUNC([shl_load], [lt_cv_dlopen="shl_load"], [AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], [AC_CHECK_FUNC([dlopen], [lt_cv_dlopen="dlopen"], [AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) ]) ]) ]) ]) ]) ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" AC_CACHE_CHECK([whether a program can dlopen itself], lt_cv_dlopen_self, [dnl _LT_AC_TRY_DLOPEN_SELF( lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ]) if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" AC_CACHE_CHECK([whether a statically linked program can dlopen itself], lt_cv_dlopen_self_static, [dnl _LT_AC_TRY_DLOPEN_SELF( lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) ]) fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi ])# AC_LIBTOOL_DLOPEN_SELF # AC_LIBTOOL_PROG_CC_C_O([TAGNAME]) # --------------------------------- # Check to see if options -c and -o are simultaneously supported by compiler AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O], [AC_REQUIRE([LT_AC_PROG_SED])dnl AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)], [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes fi fi chmod u+w . 2>&AS_MESSAGE_LOG_FD $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* ]) ])# AC_LIBTOOL_PROG_CC_C_O # AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME]) # ----------------------------------------- # Check to see if we can do hard links to lock some files if needed AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_REQUIRE([_LT_AC_LOCK])dnl hard_links="nottested" if test "$_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user AC_MSG_CHECKING([if we can lock with hard links]) hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no AC_MSG_RESULT([$hard_links]) if test "$hard_links" = no; then AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) need_locks=warn fi else need_locks=no fi ])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS # AC_LIBTOOL_OBJDIR # ----------------- AC_DEFUN([AC_LIBTOOL_OBJDIR], [AC_CACHE_CHECK([for objdir], [lt_cv_objdir], [rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null]) objdir=$lt_cv_objdir ])# AC_LIBTOOL_OBJDIR # AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME]) # ---------------------------------------------- # Check hardcoding attributes. AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_MSG_CHECKING([how to hardcode library paths into programs]) _LT_AC_TAGVAR(hardcode_action, $1)= if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \ test -n "$_LT_AC_TAGVAR(runpath_var, $1)" || \ test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then # We can hardcode non-existant directories. if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no && test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then # Linking always hardcodes the temporary library directory. _LT_AC_TAGVAR(hardcode_action, $1)=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. _LT_AC_TAGVAR(hardcode_action, $1)=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. _LT_AC_TAGVAR(hardcode_action, $1)=unsupported fi AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)]) if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi ])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH # AC_LIBTOOL_SYS_LIB_STRIP # ------------------------ AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP], [striplib= old_striplib= AC_MSG_CHECKING([whether stripping libraries is possible]) if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" AC_MSG_RESULT([yes]) else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi ;; *) AC_MSG_RESULT([no]) ;; esac fi ])# AC_LIBTOOL_SYS_LIB_STRIP # AC_LIBTOOL_SYS_DYNAMIC_LINKER # ----------------------------- # PORTME Fill in your ld.so characteristics AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_REQUIRE([LT_AC_PROG_SED])dnl AC_MSG_CHECKING([dynamic linker characteristics]) library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" m4_if($1,[],[ if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$lt_search_path_spec" | grep ';' >/dev/null ; then # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e 's/;/ /g'` else lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path/$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" else test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`echo $lt_tmp_lt_search_path_spec | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo="/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[[lt_foo]]++; } if (lt_freq[[lt_foo]] == 1) { print lt_foo; } }'` sys_lib_search_path_spec=`echo $lt_search_path_spec` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi]) need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix4* | aix5*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[[01]] | aix4.[[01]].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[[45]]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[[123]]*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[[01]]* | freebsdelf3.[[01]]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; interix[[3-9]]*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux* | k*bsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[[89]] | openbsd2.[[89]].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' shlibpath_overrides_runpath=no else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' shlibpath_overrides_runpath=yes case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac AC_MSG_RESULT([$dynamic_linker]) test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi ])# AC_LIBTOOL_SYS_DYNAMIC_LINKER # _LT_AC_TAGCONFIG # ---------------- AC_DEFUN([_LT_AC_TAGCONFIG], [AC_REQUIRE([LT_AC_PROG_SED])dnl AC_ARG_WITH([tags], [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@], [include additional configurations @<:@automatic@:>@])], [tagnames="$withval"]) if test -f "$ltmain" && test -n "$tagnames"; then if test ! -f "${ofile}"; then AC_MSG_WARN([output file `$ofile' does not exist]) fi if test -z "$LTCC"; then eval "`$SHELL ${ofile} --config | grep '^LTCC='`" if test -z "$LTCC"; then AC_MSG_WARN([output file `$ofile' does not look like a libtool script]) else AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile']) fi fi if test -z "$LTCFLAGS"; then eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`" fi # Extract list of available tagged configurations in $ofile. # Note that this assumes the entire list is on one line. available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for tagname in $tagnames; do IFS="$lt_save_ifs" # Check whether tagname contains only valid characters case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in "") ;; *) AC_MSG_ERROR([invalid tag name: $tagname]) ;; esac if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null then AC_MSG_ERROR([tag name \"$tagname\" already exists]) fi # Update the list of available tags. if test -n "$tagname"; then echo appending configuration tag \"$tagname\" to $ofile case $tagname in CXX) if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then AC_LIBTOOL_LANG_CXX_CONFIG else tagname="" fi ;; F77) if test -n "$F77" && test "X$F77" != "Xno"; then AC_LIBTOOL_LANG_F77_CONFIG else tagname="" fi ;; GCJ) if test -n "$GCJ" && test "X$GCJ" != "Xno"; then AC_LIBTOOL_LANG_GCJ_CONFIG else tagname="" fi ;; RC) AC_LIBTOOL_LANG_RC_CONFIG ;; *) AC_MSG_ERROR([Unsupported tag name: $tagname]) ;; esac # Append the new tag name to the list of available tags. if test -n "$tagname" ; then available_tags="$available_tags $tagname" fi fi done IFS="$lt_save_ifs" # Now substitute the updated list of available tags. if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then mv "${ofile}T" "$ofile" chmod +x "$ofile" else rm -f "${ofile}T" AC_MSG_ERROR([unable to update list of available tagged configurations.]) fi fi ])# _LT_AC_TAGCONFIG # AC_LIBTOOL_DLOPEN # ----------------- # enable checks for dlopen support AC_DEFUN([AC_LIBTOOL_DLOPEN], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP]) ])# AC_LIBTOOL_DLOPEN # AC_LIBTOOL_WIN32_DLL # -------------------- # declare package support for building win32 DLLs AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_BEFORE([$0], [AC_LIBTOOL_SETUP]) ])# AC_LIBTOOL_WIN32_DLL # AC_ENABLE_SHARED([DEFAULT]) # --------------------------- # implement the --enable-shared flag # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. AC_DEFUN([AC_ENABLE_SHARED], [define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE([shared], [AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@], [build shared libraries @<:@default=]AC_ENABLE_SHARED_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_shared=]AC_ENABLE_SHARED_DEFAULT) ])# AC_ENABLE_SHARED # AC_DISABLE_SHARED # ----------------- # set the default shared flag to --disable-shared AC_DEFUN([AC_DISABLE_SHARED], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_SHARED(no) ])# AC_DISABLE_SHARED # AC_ENABLE_STATIC([DEFAULT]) # --------------------------- # implement the --enable-static flag # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. AC_DEFUN([AC_ENABLE_STATIC], [define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE([static], [AC_HELP_STRING([--enable-static@<:@=PKGS@:>@], [build static libraries @<:@default=]AC_ENABLE_STATIC_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_static=]AC_ENABLE_STATIC_DEFAULT) ])# AC_ENABLE_STATIC # AC_DISABLE_STATIC # ----------------- # set the default static flag to --disable-static AC_DEFUN([AC_DISABLE_STATIC], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_STATIC(no) ])# AC_DISABLE_STATIC # AC_ENABLE_FAST_INSTALL([DEFAULT]) # --------------------------------- # implement the --enable-fast-install flag # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. AC_DEFUN([AC_ENABLE_FAST_INSTALL], [define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE([fast-install], [AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], [optimize for fast installation @<:@default=]AC_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_fast_install=]AC_ENABLE_FAST_INSTALL_DEFAULT) ])# AC_ENABLE_FAST_INSTALL # AC_DISABLE_FAST_INSTALL # ----------------------- # set the default to --disable-fast-install AC_DEFUN([AC_DISABLE_FAST_INSTALL], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_FAST_INSTALL(no) ])# AC_DISABLE_FAST_INSTALL # AC_LIBTOOL_PICMODE([MODE]) # -------------------------- # implement the --with-pic flag # MODE is either `yes' or `no'. If omitted, it defaults to `both'. AC_DEFUN([AC_LIBTOOL_PICMODE], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl pic_mode=ifelse($#,1,$1,default) ])# AC_LIBTOOL_PICMODE # AC_PROG_EGREP # ------------- # This is predefined starting with Autoconf 2.54, so this conditional # definition can be removed once we require Autoconf 2.54 or later. m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP], [AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep], [if echo a | (grep -E '(a|b)') >/dev/null 2>&1 then ac_cv_prog_egrep='grep -E' else ac_cv_prog_egrep='egrep' fi]) EGREP=$ac_cv_prog_egrep AC_SUBST([EGREP]) ])]) # AC_PATH_TOOL_PREFIX # ------------------- # find a file program which can recognize shared library AC_DEFUN([AC_PATH_TOOL_PREFIX], [AC_REQUIRE([AC_PROG_EGREP])dnl AC_MSG_CHECKING([for $1]) AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, [case $MAGIC_CMD in [[\\/*] | ?:[\\/]*]) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR dnl $ac_dummy forces splitting on constant user-supplied paths. dnl POSIX.2 word splitting is done only on the output of word expansions, dnl not every word. This closes a longstanding sh security hole. ac_dummy="ifelse([$2], , $PATH, [$2])" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$1; then lt_cv_path_MAGIC_CMD="$ac_dir/$1" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac]) MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then AC_MSG_RESULT($MAGIC_CMD) else AC_MSG_RESULT(no) fi ])# AC_PATH_TOOL_PREFIX # AC_PATH_MAGIC # ------------- # find a file program which can recognize a shared library AC_DEFUN([AC_PATH_MAGIC], [AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) else MAGIC_CMD=: fi fi ])# AC_PATH_MAGIC # AC_PROG_LD # ---------- # find the pathname to the GNU or non-GNU linker AC_DEFUN([AC_PROG_LD], [AC_ARG_WITH([gnu-ld], [AC_HELP_STRING([--with-gnu-ld], [assume the C compiler uses GNU ld @<:@default=no@:>@])], [test "$withval" = no || with_gnu_ld=yes], [with_gnu_ld=no]) AC_REQUIRE([LT_AC_PROG_SED])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by $CC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]]* | ?:[[\\/]]*) re_direlt='/[[^/]][[^/]]*/\.\./' # Canonicalize the pathname of ld ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(lt_cv_path_LD, [if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[[3-9]]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be Linux ELF. linux* | k*bsd*-gnu) lt_cv_deplibs_check_method=pass_all ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; nto-qnx*) lt_cv_deplibs_check_method=unknown ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; esac ]) file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown ])# AC_DEPLIBS_CHECK_METHOD # AC_PROG_NM # ---------- # find the pathname to a BSD-compatible name lister AC_DEFUN([AC_PROG_NM], [AC_CACHE_CHECK([for BSD-compatible nm], lt_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_nm_to_check="${ac_tool_prefix}nm" if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/$lt_tmp_nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS="$lt_save_ifs" done test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm fi]) NM="$lt_cv_path_NM" ])# AC_PROG_NM # AC_CHECK_LIBM # ------------- # check for math library AC_DEFUN([AC_CHECK_LIBM], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in *-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") ;; *) AC_CHECK_LIB(m, cos, LIBM="-lm") ;; esac ])# AC_CHECK_LIBM # AC_LIBLTDL_CONVENIENCE([DIRECTORY]) # ----------------------------------- # sets LIBLTDL to the link flags for the libltdl convenience library and # LTDLINCL to the include flags for the libltdl header and adds # --enable-ltdl-convenience to the configure arguments. Note that # AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided, # it is assumed to be `libltdl'. LIBLTDL will be prefixed with # '${top_builddir}/' and LTDLINCL will be prefixed with '${top_srcdir}/' # (note the single quotes!). If your package is not flat and you're not # using automake, define top_builddir and top_srcdir appropriately in # the Makefiles. AC_DEFUN([AC_LIBLTDL_CONVENIENCE], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl case $enable_ltdl_convenience in no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; "") enable_ltdl_convenience=yes ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; esac LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) # For backwards non-gettext consistent compatibility... INCLTDL="$LTDLINCL" ])# AC_LIBLTDL_CONVENIENCE # AC_LIBLTDL_INSTALLABLE([DIRECTORY]) # ----------------------------------- # sets LIBLTDL to the link flags for the libltdl installable library and # LTDLINCL to the include flags for the libltdl header and adds # --enable-ltdl-install to the configure arguments. Note that # AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided, # and an installed libltdl is not found, it is assumed to be `libltdl'. # LIBLTDL will be prefixed with '${top_builddir}/'# and LTDLINCL with # '${top_srcdir}/' (note the single quotes!). If your package is not # flat and you're not using automake, define top_builddir and top_srcdir # appropriately in the Makefiles. # In the future, this macro may have to be called after AC_PROG_LIBTOOL. AC_DEFUN([AC_LIBLTDL_INSTALLABLE], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_CHECK_LIB(ltdl, lt_dlinit, [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], [if test x"$enable_ltdl_install" = xno; then AC_MSG_WARN([libltdl not installed, but installation disabled]) else enable_ltdl_install=yes fi ]) if test x"$enable_ltdl_install" = x"yes"; then ac_configure_args="$ac_configure_args --enable-ltdl-install" LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) else ac_configure_args="$ac_configure_args --enable-ltdl-install=no" LIBLTDL="-lltdl" LTDLINCL= fi # For backwards non-gettext consistent compatibility... INCLTDL="$LTDLINCL" ])# AC_LIBLTDL_INSTALLABLE # AC_LIBTOOL_CXX # -------------- # enable support for C++ libraries AC_DEFUN([AC_LIBTOOL_CXX], [AC_REQUIRE([_LT_AC_LANG_CXX]) ])# AC_LIBTOOL_CXX # _LT_AC_LANG_CXX # --------------- AC_DEFUN([_LT_AC_LANG_CXX], [AC_REQUIRE([AC_PROG_CXX]) AC_REQUIRE([_LT_AC_PROG_CXXCPP]) _LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX]) ])# _LT_AC_LANG_CXX # _LT_AC_PROG_CXXCPP # ------------------ AC_DEFUN([_LT_AC_PROG_CXXCPP], [ AC_REQUIRE([AC_PROG_CXX]) if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then AC_PROG_CXXCPP fi ])# _LT_AC_PROG_CXXCPP # AC_LIBTOOL_F77 # -------------- # enable support for Fortran 77 libraries AC_DEFUN([AC_LIBTOOL_F77], [AC_REQUIRE([_LT_AC_LANG_F77]) ])# AC_LIBTOOL_F77 # _LT_AC_LANG_F77 # --------------- AC_DEFUN([_LT_AC_LANG_F77], [AC_REQUIRE([AC_PROG_F77]) _LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77]) ])# _LT_AC_LANG_F77 # AC_LIBTOOL_GCJ # -------------- # enable support for GCJ libraries AC_DEFUN([AC_LIBTOOL_GCJ], [AC_REQUIRE([_LT_AC_LANG_GCJ]) ])# AC_LIBTOOL_GCJ # _LT_AC_LANG_GCJ # --------------- AC_DEFUN([_LT_AC_LANG_GCJ], [AC_PROVIDE_IFELSE([AC_PROG_GCJ],[], [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[], [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[], [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])], [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])], [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])]) _LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ]) ])# _LT_AC_LANG_GCJ # AC_LIBTOOL_RC # ------------- # enable support for Windows resource files AC_DEFUN([AC_LIBTOOL_RC], [AC_REQUIRE([LT_AC_PROG_RC]) _LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}RC]) ])# AC_LIBTOOL_RC # AC_LIBTOOL_LANG_C_CONFIG # ------------------------ # Ensure that the configuration vars for the C compiler are # suitably defined. Those variables are subsequently used by # AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG]) AC_DEFUN([_LT_AC_LANG_C_CONFIG], [lt_save_CC="$CC" AC_LANG_PUSH(C) # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o _LT_AC_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' _LT_AC_SYS_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) AC_LIBTOOL_PROG_COMPILER_PIC($1) AC_LIBTOOL_PROG_CC_C_O($1) AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) AC_LIBTOOL_PROG_LD_SHLIBS($1) AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) AC_LIBTOOL_SYS_LIB_STRIP AC_LIBTOOL_DLOPEN_SELF # Report which library types will actually be built AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix4* | aix5*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) AC_LIBTOOL_CONFIG($1) AC_LANG_POP CC="$lt_save_CC" ])# AC_LIBTOOL_LANG_C_CONFIG # AC_LIBTOOL_LANG_CXX_CONFIG # -------------------------- # Ensure that the configuration vars for the C compiler are # suitably defined. Those variables are subsequently used by # AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)]) AC_DEFUN([_LT_AC_LANG_CXX_CONFIG], [AC_LANG_PUSH(C++) AC_REQUIRE([AC_PROG_CXX]) AC_REQUIRE([_LT_AC_PROG_CXXCPP]) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(allow_undefined_flag, $1)= _LT_AC_TAGVAR(always_export_symbols, $1)=no _LT_AC_TAGVAR(archive_expsym_cmds, $1)= _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= _LT_AC_TAGVAR(hardcode_minus_L, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_AC_TAGVAR(hardcode_automatic, $1)=no _LT_AC_TAGVAR(module_cmds, $1)= _LT_AC_TAGVAR(module_expsym_cmds, $1)= _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown _LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_AC_TAGVAR(no_undefined_flag, $1)= _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Dependencies to place before and after the object being linked: _LT_AC_TAGVAR(predep_objects, $1)= _LT_AC_TAGVAR(postdep_objects, $1)= _LT_AC_TAGVAR(predeps, $1)= _LT_AC_TAGVAR(postdeps, $1)= _LT_AC_TAGVAR(compiler_lib_search_path, $1)= # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o _LT_AC_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_AC_SYS_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} compiler=$CC _LT_AC_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) # We don't want -fno-exception wen compiling C++ code, so set the # no_builtin_flag separately if test "$GXX" = yes; then _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' else _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration AC_PROG_LD # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ grep 'no-whole-archive' > /dev/null; then _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) _LT_AC_TAGVAR(ld_shlibs, $1)=yes case $host_os in aix3*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; aix4* | aix5*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_AC_TAGVAR(archive_cmds, $1)='' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_AC_TAGVAR(link_all_deplibs, $1)=yes if test "$GXX" = yes; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_AC_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an empty executable. _LT_AC_SYS_LIBPATH_AIX _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. _LT_AC_SYS_LIBPATH_AIX _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience' _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared libraries. _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_AC_TAGVAR(always_export_symbols, $1)=no _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; darwin* | rhapsody*) case $host_os in rhapsody* | darwin1.[[012]]) _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[[012]]) _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' ;; esac fi ;; esac _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_automatic, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' _LT_AC_TAGVAR(link_all_deplibs, $1)=yes if test "$GXX" = yes ; then lt_int_apple_cc_single_mod=no output_verbose_link_cmd='echo' if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then lt_int_apple_cc_single_mod=yes fi if test "X$lt_int_apple_cc_single_mod" = Xyes ; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' else _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' fi _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds if test "X$lt_int_apple_cc_single_mod" = Xyes ; then _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' else _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' fi _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' else case $cc_basename in xlc*) output_verbose_link_cmd='echo' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ;; *) _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac fi ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac ;; freebsd[[12]]*) # C++ shared libraries reported to be fairly broken before switch to ELF _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; freebsd-elf*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions _LT_AC_TAGVAR(ld_shlibs, $1)=yes ;; gnu*) ;; hpux9*) _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; aCC*) _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[[-]]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) ;; *) _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; aCC*) case $host_cpu in hppa*64*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then case $host_cpu in hppa*64*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; interix[[3-9]]*) _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' fi fi _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ;; esac _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ;; linux* | k*bsd*-gnu) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc*) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; pgCC*) # Portland Group C++ compiler _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ;; cxx*) # Compaq C++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='echo' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; m88k*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; openbsd2*) # C++ shared libraries are fairly broken _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi output_verbose_link_cmd='echo' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; osf3*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; cxx*) _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using # the KAI C++ compiler. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; cxx*) _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~ $rm $lib.exp' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac ;; solaris*) case $cc_basename in CC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_AC_TAGVAR(archive_cmds_need_lc,$1)=yes _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; esac _LT_AC_TAGVAR(link_all_deplibs, $1)=yes output_verbose_link_cmd='echo' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' if $CC --version | grep -v '^2\.7' > /dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. # So that behaviour is only enabled if SCOABSPATH is set to a # non-empty value in the environment. Most likely only useful for # creating official distributions of packages. # This is a hack until libtool officially supports absolute path # names for shared libraries. _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_AC_TAGVAR(link_all_deplibs, $1)=yes _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no _LT_AC_TAGVAR(GCC, $1)="$GXX" _LT_AC_TAGVAR(LD, $1)="$LD" AC_LIBTOOL_POSTDEP_PREDEP($1) AC_LIBTOOL_PROG_COMPILER_PIC($1) AC_LIBTOOL_PROG_CC_C_O($1) AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) AC_LIBTOOL_PROG_LD_SHLIBS($1) AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) AC_LIBTOOL_CONFIG($1) AC_LANG_POP CC=$lt_save_CC LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ldcxx=$with_gnu_ld with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld ])# AC_LIBTOOL_LANG_CXX_CONFIG # AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME]) # ------------------------------------ # Figure out "hidden" library dependencies from verbose # compiler output when linking a shared library. # Parse the compiler output and extract the necessary # objects, libraries and library flags. AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP],[ dnl we can't use the lt_simple_compile_test_code here, dnl because it contains code intended for an executable, dnl not a library. It's possible we should let each dnl tag define a new lt_????_link_test_code variable, dnl but it's only used here... ifelse([$1],[],[cat > conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext <&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 # # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac if test "$solaris_use_stlport4" != yes; then _LT_AC_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' fi ;; esac ;; solaris*) case $cc_basename in CC*) # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac # Adding this requires a known-good setup of shared libraries for # Sun compiler versions before 5.6, else PIC objects from an old # archive will be linked into the output, leading to subtle bugs. if test "$solaris_use_stlport4" != yes; then _LT_AC_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' fi ;; esac ;; esac ]) case " $_LT_AC_TAGVAR(postdeps, $1) " in *" -lc "*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;; esac ])# AC_LIBTOOL_POSTDEP_PREDEP # AC_LIBTOOL_LANG_F77_CONFIG # -------------------------- # Ensure that the configuration vars for the C compiler are # suitably defined. Those variables are subsequently used by # AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG], [_LT_AC_LANG_F77_CONFIG(F77)]) AC_DEFUN([_LT_AC_LANG_F77_CONFIG], [AC_REQUIRE([AC_PROG_F77]) AC_LANG_PUSH(Fortran 77) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(allow_undefined_flag, $1)= _LT_AC_TAGVAR(always_export_symbols, $1)=no _LT_AC_TAGVAR(archive_expsym_cmds, $1)= _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= _LT_AC_TAGVAR(hardcode_minus_L, $1)=no _LT_AC_TAGVAR(hardcode_automatic, $1)=no _LT_AC_TAGVAR(module_cmds, $1)= _LT_AC_TAGVAR(module_expsym_cmds, $1)= _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown _LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_AC_TAGVAR(no_undefined_flag, $1)= _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for f77 test sources. ac_ext=f # Object file extension for compiled f77 test sources. objext=o _LT_AC_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_AC_SYS_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${F77-"f77"} compiler=$CC _LT_AC_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix4* | aix5*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_AC_TAGVAR(GCC, $1)="$G77" _LT_AC_TAGVAR(LD, $1)="$LD" AC_LIBTOOL_PROG_COMPILER_PIC($1) AC_LIBTOOL_PROG_CC_C_O($1) AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) AC_LIBTOOL_PROG_LD_SHLIBS($1) AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) AC_LIBTOOL_CONFIG($1) AC_LANG_POP CC="$lt_save_CC" ])# AC_LIBTOOL_LANG_F77_CONFIG # AC_LIBTOOL_LANG_GCJ_CONFIG # -------------------------- # Ensure that the configuration vars for the C compiler are # suitably defined. Those variables are subsequently used by # AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG], [_LT_AC_LANG_GCJ_CONFIG(GCJ)]) AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG], [AC_LANG_SAVE # Source file extension for Java test sources. ac_ext=java # Object file extension for compiled Java test sources. objext=o _LT_AC_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="class foo {}" # Code to be used in simple link tests lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_AC_SYS_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${GCJ-"gcj"} compiler=$CC _LT_AC_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) # GCJ did not exist at the time GCC didn't implicitly link libc in. _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) AC_LIBTOOL_PROG_COMPILER_PIC($1) AC_LIBTOOL_PROG_CC_C_O($1) AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) AC_LIBTOOL_PROG_LD_SHLIBS($1) AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) AC_LIBTOOL_CONFIG($1) AC_LANG_RESTORE CC="$lt_save_CC" ])# AC_LIBTOOL_LANG_GCJ_CONFIG # AC_LIBTOOL_LANG_RC_CONFIG # ------------------------- # Ensure that the configuration vars for the Windows resource compiler are # suitably defined. Those variables are subsequently used by # AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG], [_LT_AC_LANG_RC_CONFIG(RC)]) AC_DEFUN([_LT_AC_LANG_RC_CONFIG], [AC_LANG_SAVE # Source file extension for RC test sources. ac_ext=rc # Object file extension for compiled RC test sources. objext=o _LT_AC_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' # Code to be used in simple link tests lt_simple_link_test_code="$lt_simple_compile_test_code" # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_AC_SYS_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${RC-"windres"} compiler=$CC _LT_AC_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes AC_LIBTOOL_CONFIG($1) AC_LANG_RESTORE CC="$lt_save_CC" ])# AC_LIBTOOL_LANG_RC_CONFIG # AC_LIBTOOL_CONFIG([TAGNAME]) # ---------------------------- # If TAGNAME is not passed, then create an initial libtool script # with a default configuration from the untagged config vars. Otherwise # add code to config.status for appending the configuration named by # TAGNAME from the matching tagged config vars. AC_DEFUN([AC_LIBTOOL_CONFIG], [# The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ _LT_AC_TAGVAR(compiler, $1) \ _LT_AC_TAGVAR(CC, $1) \ _LT_AC_TAGVAR(LD, $1) \ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1) \ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1) \ _LT_AC_TAGVAR(lt_prog_compiler_static, $1) \ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) \ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1) \ _LT_AC_TAGVAR(thread_safe_flag_spec, $1) \ _LT_AC_TAGVAR(whole_archive_flag_spec, $1) \ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) \ _LT_AC_TAGVAR(old_archive_cmds, $1) \ _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) \ _LT_AC_TAGVAR(predep_objects, $1) \ _LT_AC_TAGVAR(postdep_objects, $1) \ _LT_AC_TAGVAR(predeps, $1) \ _LT_AC_TAGVAR(postdeps, $1) \ _LT_AC_TAGVAR(compiler_lib_search_path, $1) \ _LT_AC_TAGVAR(archive_cmds, $1) \ _LT_AC_TAGVAR(archive_expsym_cmds, $1) \ _LT_AC_TAGVAR(postinstall_cmds, $1) \ _LT_AC_TAGVAR(postuninstall_cmds, $1) \ _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) \ _LT_AC_TAGVAR(allow_undefined_flag, $1) \ _LT_AC_TAGVAR(no_undefined_flag, $1) \ _LT_AC_TAGVAR(export_symbols_cmds, $1) \ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) \ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) \ _LT_AC_TAGVAR(hardcode_libdir_separator, $1) \ _LT_AC_TAGVAR(hardcode_automatic, $1) \ _LT_AC_TAGVAR(module_cmds, $1) \ _LT_AC_TAGVAR(module_expsym_cmds, $1) \ _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) \ _LT_AC_TAGVAR(fix_srcfile_path, $1) \ _LT_AC_TAGVAR(exclude_expsyms, $1) \ _LT_AC_TAGVAR(include_expsyms, $1); do case $var in _LT_AC_TAGVAR(old_archive_cmds, $1) | \ _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) | \ _LT_AC_TAGVAR(archive_cmds, $1) | \ _LT_AC_TAGVAR(archive_expsym_cmds, $1) | \ _LT_AC_TAGVAR(module_cmds, $1) | \ _LT_AC_TAGVAR(module_expsym_cmds, $1) | \ _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) | \ _LT_AC_TAGVAR(export_symbols_cmds, $1) | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\[$]0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\[$]0 --fallback-echo"[$]/[$]0 --fallback-echo"/'` ;; esac ifelse([$1], [], [cfgfile="${ofile}T" trap "$rm \"$cfgfile\"; exit 1" 1 2 15 $rm -f "$cfgfile" AC_MSG_NOTICE([creating $ofile])], [cfgfile="$ofile"]) cat <<__EOF__ >> "$cfgfile" ifelse([$1], [], [#! $SHELL # `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 # Free Software Foundation, Inc. # # This file is part of GNU Libtool: # Originally by Gordon Matzigkeit , 1996 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="$SED -e 1s/^X//" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # The names of the tagged configurations supported by this script. available_tags= # ### BEGIN LIBTOOL CONFIG], [# ### BEGIN LIBTOOL TAG CONFIG: $tagname]) # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1) # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # LTCC compiler flags. LTCFLAGS=$lt_LTCFLAGS # A language-specific compiler. CC=$lt_[]_LT_AC_TAGVAR(compiler, $1) # Is the compiler the GNU C compiler? with_gcc=$_LT_AC_TAGVAR(GCC, $1) # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_[]_LT_AC_TAGVAR(LD, $1) # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) # Must we lock files when doing compilation? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1) # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1) # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1) # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1) # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1) old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1) # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) # Commands used to build and install a shared archive. archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1) archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1) postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1) module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1) # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_[]_LT_AC_TAGVAR(predep_objects, $1) # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1) # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1) # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1) # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1) # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1) # Flag that forces no undefined symbols. no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1) # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1) # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1) # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1) # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1) # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1) # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$_LT_AC_TAGVAR(hardcode_automatic, $1) # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1) # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path=$lt_fix_srcfile_path # Set to yes if exported symbols are required. always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1) # The commands to list exported symbols. export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1) # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1) # Symbols that must always be exported. include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1) ifelse([$1],[], [# ### END LIBTOOL CONFIG], [# ### END LIBTOOL TAG CONFIG: $tagname]) __EOF__ ifelse([$1],[], [ case $host_os in aix3*) cat <<\EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi EOF ;; esac # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || \ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ]) else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ])# AC_LIBTOOL_CONFIG # AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME]) # ------------------------------------------- AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= if test "$GCC" = yes; then _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], lt_cv_prog_compiler_rtti_exceptions, [-fno-rtti -fno-exceptions], [], [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) fi ])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE # --------------------------------- AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([LT_AC_PROG_SED]) AC_REQUIRE([AC_PROG_NM]) AC_REQUIRE([AC_OBJEXT]) # Check for command to grab the raw symbol name followed by C symbol from nm. AC_MSG_CHECKING([command to parse $NM output from $compiler object]) AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [ # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[[BCDEGRST]]' # Regexp to match symbols that can be accessed directly from C. sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' # Transform an extracted symbol line into a proper C declaration lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" # Define system-specific variables. case $host_os in aix*) symcode='[[BCDT]]' ;; cygwin* | mingw* | pw32*) symcode='[[ABCDGISTW]]' ;; hpux*) # Its linker distinguishes data from code symbols if test "$host_cpu" = ia64; then symcode='[[ABCDEGRST]]' fi lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" ;; linux* | k*bsd*-gnu) if test "$host_cpu" = ia64; then symcode='[[ABCDGIRSTW]]' lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" fi ;; irix* | nonstopux*) symcode='[[BCDEGRST]]' ;; osf*) symcode='[[BCDEGQRST]]' ;; solaris*) symcode='[[BDRT]]' ;; sco3.2v5*) symcode='[[DT]]' ;; sysv4.2uw2*) symcode='[[DT]]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[[ABDT]]' ;; sysv4) symcode='[[DFNSTU]]' ;; esac # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[[ABCDGIRSTW]]' ;; esac # Try without a prefix undercore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext < $nlist) && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if grep ' nm_test_var$' "$nlist" >/dev/null; then if grep ' nm_test_func$' "$nlist" >/dev/null; then cat < conftest.$ac_ext #ifdef __cplusplus extern "C" { #endif EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' cat <> conftest.$ac_ext #if defined (__STDC__) && __STDC__ # define lt_ptr_t void * #else # define lt_ptr_t char * # define const #endif /* The mapping between symbol names and symbols. */ const struct { const char *name; lt_ptr_t address; } lt_preloaded_symbols[[]] = { EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext cat <<\EOF >> conftest.$ac_ext {0, (lt_ptr_t) 0} }; #ifdef __cplusplus } #endif EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_save_LIBS="$LIBS" lt_save_CFLAGS="$CFLAGS" LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS="$lt_save_LIBS" CFLAGS="$lt_save_CFLAGS" else echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD fi else echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD cat conftest.$ac_ext >&5 fi rm -f conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done ]) if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then AC_MSG_RESULT(failed) else AC_MSG_RESULT(ok) fi ]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE # AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME]) # --------------------------------------- AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC], [_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)= _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= _LT_AC_TAGVAR(lt_prog_compiler_static, $1)= AC_MSG_CHECKING([for $compiler option to produce PIC]) ifelse([$1],[CXX],[ # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else case $host_os in aix4* | aix5*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; darwin*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files case $cc_basename in xlc*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; esac ;; dgux*) case $cc_basename in ec++*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; ghcx*) # Green Hills C++ Compiler _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' if test "$host_cpu" != ia64; then _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' fi ;; aCC*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu) case $cc_basename in KCC*) # KAI C++ Compiler _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; icpc* | ecpc*) # Intel C++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgCC*) # Portland Group C++ compiler. _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' ;; *) ;; esac ;; netbsd*) ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; cxx*) # Digital/Compaq C++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; lcc*) # Lucid _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; vxworks*) ;; *) _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ], [ if test "$GCC" = yes; then _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no enable_shared=no ;; sysv4*MP*) if test -d /usr/nec; then _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; darwin*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files case $cc_basename in xlc*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; esac ;; mingw* | cygwin* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC (with -KPIC) is the default. _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; newsos6) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; linux* | k*bsd*-gnu) case $cc_basename in icc* | ecc*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgcc* | pgf77* | pgf90* | pgf95*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; ccc*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All Alpha code is PIC. _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; *Sun\ F*) # Sun Fortran 8.3 passes all unrecognized flags to the linker _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='' ;; esac ;; esac ;; osf3* | osf4* | osf5*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All OSF/1 code is PIC. _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; rdos*) _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; solaris*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' case $cc_basename in f77* | f90* | f95*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; *) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; esac ;; sunos4*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; unicos*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; uts4*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *) _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ]) AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)]) # # Check to make sure the PIC flag actually works. # if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works], _LT_AC_TAGVAR(lt_prog_compiler_pic_works, $1), [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [], [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in "" | " "*) ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;; esac], [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])" ;; esac # # Check to make sure the static flag actually works. # wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_AC_TAGVAR(lt_prog_compiler_static, $1)\" AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1), $lt_tmp_static_flag, [], [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=]) ]) # AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME]) # ------------------------------------ # See if the linker supports building shared libraries. AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_REQUIRE([LT_AC_PROG_SED])dnl AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) ifelse([$1],[CXX],[ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' case $host_os in aix4* | aix5*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' else _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" ;; cygwin* | mingw*) _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' ;; *) _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac ],[ runpath_var= _LT_AC_TAGVAR(allow_undefined_flag, $1)= _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no _LT_AC_TAGVAR(archive_cmds, $1)= _LT_AC_TAGVAR(archive_expsym_cmds, $1)= _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)= _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)= _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= _LT_AC_TAGVAR(thread_safe_flag_spec, $1)= _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_minus_L, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown _LT_AC_TAGVAR(hardcode_automatic, $1)=no _LT_AC_TAGVAR(module_cmds, $1)= _LT_AC_TAGVAR(module_expsym_cmds, $1)= _LT_AC_TAGVAR(always_export_symbols, $1)=no _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list _LT_AC_TAGVAR(include_expsyms, $1)= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. _LT_AC_TAGVAR(exclude_expsyms, $1)="_GLOBAL_OFFSET_TABLE_" # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. extract_expsyms_cmds= # Just being paranoid about ensuring that cc_basename is set. _LT_CC_BASENAME([$compiler]) case $host_os in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac _LT_AC_TAGVAR(ld_shlibs, $1)=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= fi supports_anon_versioning=no case `$LD -v 2>/dev/null` in *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix3* | aix4* | aix5*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then _LT_AC_TAGVAR(ld_shlibs, $1)=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF fi ;; amigaos*) _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can't use # them. _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_AC_TAGVAR(always_export_symbols, $1)=no _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; interix[[3-9]]*) _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | k*bsd*-gnu) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then tmp_addflag= case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; *) tmp_sharedflag='-shared' ;; esac _LT_AC_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test $supports_anon_versioning = yes; then _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ $echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then _LT_AC_TAGVAR(ld_shlibs, $1)=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) _LT_AC_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; sunos4*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; esac if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no; then runpath_var= _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_AC_TAGVAR(always_export_symbols, $1)=yes _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported fi ;; aix4* | aix5*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' else _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_AC_TAGVAR(archive_cmds, $1)='' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_AC_TAGVAR(link_all_deplibs, $1)=yes if test "$GCC" = yes; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_AC_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an empty executable. _LT_AC_SYS_LIBPATH_AIX _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. _LT_AC_SYS_LIBPATH_AIX _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience' _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared libraries. _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # see comment about different semantics on the GNU ld section _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; bsdi[[45]]*) _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true' # FIXME: Should let the user specify the lib program. _LT_AC_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' _LT_AC_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`' _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; darwin* | rhapsody*) case $host_os in rhapsody* | darwin1.[[012]]) _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[[012]]) _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' ;; esac fi ;; esac _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_automatic, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' _LT_AC_TAGVAR(link_all_deplibs, $1)=yes if test "$GCC" = yes ; then output_verbose_link_cmd='echo' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' else case $cc_basename in xlc*) output_verbose_link_cmd='echo' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ;; *) _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac fi ;; dgux*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; freebsd1*) _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; hpux9*) if test "$GCC" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(hardcode_direct, $1)=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; hpux10*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes fi ;; hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac fi if test "$with_gnu_ld" = no; then _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; newsos6) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' else case $host_os in openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ;; esac fi else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; os2*) _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_AC_TAGVAR(archive_cmds, $1)='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' else _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' # Both c and cxx compiler support -rpath directly _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' fi _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ;; solaris*) _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' if test "$GCC" = yes; then wlarc='${wl}' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' else wlarc='' _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' fi ;; esac _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4) case $host_vendor in sni) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' _LT_AC_TAGVAR(hardcode_direct, $1)=no ;; motorola) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4.3*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes _LT_AC_TAGVAR(ld_shlibs, $1)=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_AC_TAGVAR(link_all_deplibs, $1)=yes _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac fi ]) AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no # # Do we need to explicitly link libc? # case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in x|xyes) # Assume -lc should be added _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $_LT_AC_TAGVAR(archive_cmds, $1) in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. AC_MSG_CHECKING([whether -lc should be explicitly linked in]) $rm conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if AC_TRY_EVAL(ac_compile) 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) pic_flag=$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1) _LT_AC_TAGVAR(allow_undefined_flag, $1)= if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) then _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no else _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes fi _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)]) ;; esac fi ;; esac ])# AC_LIBTOOL_PROG_LD_SHLIBS # _LT_AC_FILE_LTDLL_C # ------------------- # Be careful that the start marker always follows a newline. AC_DEFUN([_LT_AC_FILE_LTDLL_C], [ # /* ltdll.c starts here */ # #define WIN32_LEAN_AND_MEAN # #include # #undef WIN32_LEAN_AND_MEAN # #include # # #ifndef __CYGWIN__ # # ifdef __CYGWIN32__ # # define __CYGWIN__ __CYGWIN32__ # # endif # #endif # # #ifdef __cplusplus # extern "C" { # #endif # BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); # #ifdef __cplusplus # } # #endif # # #ifdef __CYGWIN__ # #include # DECLARE_CYGWIN_DLL( DllMain ); # #endif # HINSTANCE __hDllInstance_base; # # BOOL APIENTRY # DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) # { # __hDllInstance_base = hInst; # return TRUE; # } # /* ltdll.c ends here */ ])# _LT_AC_FILE_LTDLL_C # _LT_AC_TAGVAR(VARNAME, [TAGNAME]) # --------------------------------- AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])]) # old names AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL]) AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) AC_DEFUN([AM_PROG_LD], [AC_PROG_LD]) AC_DEFUN([AM_PROG_NM], [AC_PROG_NM]) # This is just to silence aclocal about the macro not being used ifelse([AC_DISABLE_FAST_INSTALL]) AC_DEFUN([LT_AC_PROG_GCJ], [AC_CHECK_TOOL(GCJ, gcj, no) test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" AC_SUBST(GCJFLAGS) ]) AC_DEFUN([LT_AC_PROG_RC], [AC_CHECK_TOOL(RC, windres, no) ]) # Cheap backport of AS_EXECUTABLE_P and required macros # from Autoconf 2.59; we should not use $as_executable_p directly. # _AS_TEST_PREPARE # ---------------- m4_ifndef([_AS_TEST_PREPARE], [m4_defun([_AS_TEST_PREPARE], [if test -x / >/dev/null 2>&1; then as_executable_p='test -x' else as_executable_p='test -f' fi ])])# _AS_TEST_PREPARE # AS_EXECUTABLE_P # --------------- # Check whether a file is executable. m4_ifndef([AS_EXECUTABLE_P], [m4_defun([AS_EXECUTABLE_P], [AS_REQUIRE([_AS_TEST_PREPARE])dnl $as_executable_p $1[]dnl ])])# AS_EXECUTABLE_P # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_SED. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # # LT_AC_PROG_SED # -------------- # Check for a fully-functional sed program, that truncates # as few characters as possible. Prefer GNU sed if found. AC_DEFUN([LT_AC_PROG_SED], [AC_MSG_CHECKING([for a sed that does not truncate output]) AC_CACHE_VAL(lt_cv_path_SED, [# Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if AS_EXECUTABLE_P(["$as_dir/$lt_ac_prog$ac_exec_ext"]); then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done done done IFS=$as_save_IFS lt_ac_max=0 lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do test ! -f $lt_ac_sed && continue cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in # Check for GNU sed and select it if it is found. if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then lt_cv_path_SED=$lt_ac_sed break fi while true; do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo >>conftest.nl $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough test $lt_ac_count -gt 10 && break lt_ac_count=`expr $lt_ac_count + 1` if test $lt_ac_count -gt $lt_ac_max; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi done done ]) SED=$lt_cv_path_SED AC_SUBST([SED]) AC_MSG_RESULT([$SED]) ]) # Copyright (C) 2002, 2003, 2005, 2006, 2007 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.10' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.10.1], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AC_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.10.1])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(AC_AUTOCONF_VERSION)]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to # `$srcdir', `$srcdir/..', or `$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is `.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [dnl Rely on autoconf to set up CDPATH properly. AC_PREREQ([2.50])dnl # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 8 # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ(2.52)dnl ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 9 # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "GCJ", or "OBJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl ifelse([$1], CC, [depcc="$CC" am_compiler_list=], [$1], CXX, [depcc="$CXX" am_compiler_list=], [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], UPC, [depcc="$UPC" am_compiler_list=], [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; none) break ;; esac # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE(dependency-tracking, [ --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. #serial 3 # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [for mf in $CONFIG_FILES; do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking # is enabled. FIXME. This creates each `.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) # Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 8 # AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2008 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 13 # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.60])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) AM_MISSING_PROG(AUTOCONF, autoconf) AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) AM_MISSING_PROG(AUTOHEADER, autoheader) AM_MISSING_PROG(MAKEINFO, makeinfo) AM_PROG_INSTALL_SH AM_PROG_INSTALL_STRIP AC_REQUIRE([AM_PROG_MKDIR_P])dnl # We need awk for the "check" target. The system "awk" is bad on # some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES(CC)], [define([AC_PROG_CC], defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES(CXX)], [define([AC_PROG_CXX], defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES(OBJC)], [define([AC_PROG_OBJC], defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl ]) ]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"} AC_SUBST(install_sh)]) # Copyright (C) 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 3 # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo done .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # We grep out `Entering directory' and `Leaving directory' # messages which can occur if `w' ends up in MAKEFLAGS. # In particular we don't look at `^make:' because GNU make might # be invoked under some other name (usually "gmake"), in which # case it prints its new name instead of `make'. if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then am__include=include am__quote= _am_result=GNU fi # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then am__include=.include am__quote="\"" _am_result=BSD fi fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 5 # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it supports --run. # If it does, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= AC_MSG_WARN([`missing' script is too old or missing]) fi ]) # Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_MKDIR_P # --------------- # Check for `mkdir -p'. AC_DEFUN([AM_PROG_MKDIR_P], [AC_PREREQ([2.60])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, dnl while keeping a definition of mkdir_p for backward compatibility. dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of dnl Makefile.ins that do not define MKDIR_P, so we do our own dnl adjustment using top_builddir (which is defined more often than dnl MKDIR_P). AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl case $mkdir_p in [[\\/$]]* | ?:[[\\/]]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 3 # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # ------------------------------ # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), 1)]) # _AM_SET_OPTIONS(OPTIONS) # ---------------------------------- # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 4 # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Just in case sleep 1 echo timestamp > conftest.file # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t $srcdir/configure conftest.file` fi rm -f conftest.file if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT(yes)]) # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor `install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in `make install-strip', and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be `maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of `v7', `ustar', or `pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. AM_MISSING_PROG([AMTAR], [tar]) m4_if([$1], [v7], [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], [m4_case([$1], [ustar],, [pax],, [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' _am_tools=${am_cv_prog_tar_$1-$_am_tools} # Do not fold the above two line into one, because Tru64 sh and # Solaris sh will not grok spaces in the rhs of `-'. for _am_tool in $_am_tools do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR rampartc-src-1.3.0/build.sh0000755000076500007650000000023111202453435015414 0ustar shankarshankar#!/bin/bash set -e ./autogen.sh ./configure --prefix=${AXIS2C_HOME} --enable-static=no --with-axis2=${AXIS2C_HOME}/include/axis2-1.6.0 make make install rampartc-src-1.3.0/docs/0000755000076500007650000000000011202454500014704 5ustar shankarshankarrampartc-src-1.3.0/docs/project-info.html0000644000076500007650000001061111202454500020170 0ustar shankarshankarApache Rampart/C - Project Information

General Project Information

This document provides an overview of the various documents and links that are part of this project's general information. All of this content is automatically generated by Maven on behalf of the project.

Overview

DocumentDescription
Mailing Lists This document provides subscription and archive information for this project's mailing lists.
Project Team This document provides information on the members of this project. These are the individuals who have contributed to the project in one form or another.
Dependencies This document lists the projects dependencies and provides information on each dependency.
Issue Tracking This is a link to the issue tracking system for this project. Issues (bugs, features, change requests) can be created and queried using this link.

rampartc-src-1.3.0/docs/style/0000755000076500007650000000000011202454500016044 5ustar shankarshankarrampartc-src-1.3.0/docs/style/maven-theme.css0000644000076500007650000000301511202454500020763 0ustar shankarshankarbody, td, select, input, li{ font-family: Verdana, Helvetica, Arial, sans-serif; font-size: 13px; } a { text-decoration: none; } a:link { color:#36a; } a:visited { color:#47a; } a:active, a:hover { color:#69c; } a.externalLink, a.externalLink:link, a.externalLink:visited, a.externalLink:active, a.externalLink:hover { background: url(../images/external.png) right center no-repeat; padding-right: 15px; } a.newWindow, a.newWindow:link, a.newWindow:visited, a.newWindow:active, a.newWindow:hover { background: url(../images/newwindow.png) right center no-repeat; padding-right: 18px; } h2 { padding: 4px 4px 4px 6px; border: 1px solid #999; color: #900; background-color: #ddd; font-weight:900; font-size: x-large; } h3 { padding: 4px 4px 4px 6px; border: 1px solid #aaa; color: #900; background-color: #eee; font-weight: normal; font-size: large; } p { line-height: 1.3em; font-size: small; } #breadcrumbs { border-top: 1px solid #aaa; border-bottom: 1px solid #aaa; background-color: #ccc; } #leftColumn { margin: 10px 0 0 5px; border: 1px solid #999; background-color: #eee; } #navcolumn h5 { font-size: smaller; border-bottom: 1px solid #aaaaaa; padding-top: 2px; } table.bodyTable th { color: white; background-color: #bbb; text-align: left; font-weight: bold; } table.bodyTable th, table.bodyTable td { font-size: 1em; } table.bodyTable tr.a { background-color: #ddd; } table.bodyTable tr.b { background-color: #eee; } .source { border: 1px solid #999; } rampartc-src-1.3.0/docs/style/maven-classic.css0000644000076500007650000003257011202454500021312 0ustar shankarshankarbody { background: #fff; color: #000; } .contentBox h2 { color: #fff; background-color: #036; } .contentBox h3 { color: #fff; background-color: #888; } .a td { background: #ddd; color: #000; } .b td { background: #efefef; color: #000; } .contentBox th { background-color: #bbb; color: #fff; } div#banner { border-top: 1px solid #fff; border-bottom: 1px solid #fff; } #banner, #banner td { background: #fff; color: #fff; } #leftColumn { background: #fff; color: #000; border-right: 1px solid #aaa; border-bottom: 1px solid #aaa; border-top: 1px solid #fff; } #navcolumn { /* bad for IE background: #fff; */ color: #000; border-right: none; border-bottom: none; border-top: none; } #breadcrumbs { background-color: #ddd; color: #000; border-top: 1px solid #fff; border-bottom: 1px solid #aaa; } .source { background-color: #fff; color: #000; border-right: 1px solid #888; border-left: 1px solid #888; border-top: 1px solid #888; border-bottom: 1px solid #888; margin-right: 7px; margin-left: 7px; margin-top: 1em; } .source pre { margin-right: 7px; margin-left: 7px; } a[name]:hover, #leftColumn a[name]:hover { color: inherit !important; } a:link, #breadcrumbs a:visited, #navcolumn a:visited, .contentBox a:visited, .tasknav a:visited { color: blue; } a:active, a:hover, #leftColumn a:active, #leftColumn a:hover { color: #f30 !important; } a:link.selfref, a:visited.selfref { color: #555 !important; } a.externalLink, a.externalLink:link, a.externalLink:visited, a.externalLink:active, a.externalLink:hover { background: url(../images/external-classic.png) right center no-repeat; padding-right: 15px; } a.newWindow, a.newWindow:link, a.newWindow:visited, a.newWindow:active, a.newWindow:hover { background: url(../images/newwindow-classic.png) right center no-repeat; padding-right: 18px; } h2, h3 { margin-top: 1em; margin-bottom: 0; } img.handle { border: 0; padding-right: 2px; } #navcolumn div div { background-image: none; background-repeat: no-repeat; } #navcolumn div div { padding-left: 10px; } /* $Id: maven-classic.css,v 1.3 2004/05/18 09:23:28 aheritier Exp $ This file defines basic default formatting for HTML conforming to Tigris application style. To extend or override these rules for your instance, edit inst.css instead of this file. */ /* colors, backgrounds, borders, link indication */ .contentBox h2, .contentBox h3, .tabs td, .tabs th, .functnbar { background-image: url(../images/nw_maj_rond.gif); background-repeat: no-repeat; } .functnbar, .functnbar2 { background-color: #aaa; } .functnbar2, .functnbar3 { background-color: #aaa; background-image: url(../images/sw_maj_rond.gif); background-repeat: no-repeat; background-position: bottom left; } .functnbar3 { background-color: #ddd; background-image: url(../images/sw_med_rond.gif); } .functnbar, .functnbar2, .functnbar3 { color: #000; } .functnbar a, .functnbar2 a, .functnbar3 a { color: #000; text-decoration: underline; } #navcolumn .body div, body.docs #toc li li { background-image: url(../images/strich.gif); background-repeat: no-repeat; background-position: .5em .5em; } #searchbox .body div, #navcolumn .body .heading { background-image: none; } a:link.selfref, a:visited.selfref { text-decoration: none; } #leftColumn a, #breadcrumbs a { text-decoration: none; } /* Unsure of this. TODO */ .contentBox h2 a:link, .contentBox h2 a:visited, .contentBox h3 a:link, .contentBox h3 a:visited { color: #fff !important; text-decoration: underline; } table, th, td { border: none; } div.colbar { background: #eee; border-color: #999 #EEE #EEE #999; border-width: 1px; border-style: solid; } .toolgroup { background: #efefef; } .toolgroup .label { border-bottom: 1px solid #666; border-right: 1px solid #666; background: #ddd; color: #555; } .toolgroup .body { border-right: 1px solid #aaa; border-bottom: 1px solid #aaa; } #main { border-top: 1px solid #999; } #rightcol div.www, #rightcol div.help { border: 1px solid #ddd; } body.docs div.docs { background-color: #fff; border-left: 1px solid #ddd; border-top: 1px solid #ddd; } #helptext .label { background-image: url(../images/icon_help_sml.gif); background-repeat: no-repeat; background-position: 97%; } body.docs { background: #eee url(../images/help_logo.gif) top right no-repeat !important; } .docs h2, .docs h3 { border-top: solid 1px #000; } #apphead h2 em { color: #777; } .tabs th { border-right: 1px solid #333; background-color: #ddd; color: #fff; border-left: 1px solid #fff; } .tabs td { background-color: #999; border-bottom: 1px solid #fff; border-right: 1px solid #fff; border-left: 1px solid #fff; } .tabs { border-bottom: 6px #ddd solid; } .tabs th, .tabs th a:link, .tabs th a:visited { color: #555; } .tabs td, .tabs td a:link, .tabs td a:visited { color: #fff; } .tabs a { text-decoration: none; } .axial th { background-color: #ddd; color: black; } .alert { background-color: #ff9; } .expandedwaste { background: url(../images/icon_arrowwaste2_sml.gif) no-repeat; } .collapsedwaste { background: url(../images/icon_arrowwaste1_sml.gif) no-repeat; } .filebrowse .expanded, .filebrowse-alt .expanded { background-image: url(../images/icon_arrowfolderopen2_sml.gif); background-repeat: no-repeat; } .filebrowse .collapsed, .filebrowse-alt .collapsed { background-image: url(../images/icon_arrowfolderclosed1_sml.gif); background-repeat: no-repeat; } .filebrowse .leafnode, .filebrowse-alt .leafnode { background-image: url(../images/icon_folder_sml.gif); background-repeat: no-repeat; } .filebrowse .leaf, .filebrowse-alt .leaf { background-image: url(../images/icon_doc_sml.gif); background-repeat: no-repeat; } .sortup { background: url(../images/icon_sortup.gif) no-repeat; } .sortdown { background: url(../images/icon_sortdown.gif) no-repeat; } .collapsedwaste { background: url(../images/icon_arrowwaste1_sml.gif) no-repeat; } body .grid td { border-top: 1px solid #ccc; border-left: 1px solid #ccc; background-color: transparent; } .confirm { color: #090; } .info { color: #069; } .errormessage, .warningmessage, .donemessage, .infomessage { border-top: 5px solid #900; border-left: 1px solid #900; background-image: url(../images/icon_error_lrg.gif); background-repeat: no-repeat; background-position: 5px 1.33em; } .warningmessage { background-image: url(../images/icon_warning_lrg.gif); border-color: #c60; } .donemessage { background-image: url(../images/icon_success_lrg.gif); border-color: #090; } .infomessage { background-image: url(../images/icon_info_lrg.gif); border-color: #069; } .docinfo { background: url(../images/icon_doc_lrg.gif) no-repeat; } .dirinfo { background: url(../images/icon_folder_lrg.gif) no-repeat; } .memberinfo { background: url(../images/icon_members_lrg.gif) no-repeat; } .usergroupinfo { background: url(../images/icon_usergroups_lrg.gif) no-repeat; } .errormark, .warningmark, .donemark, .infomark { background: url(../images/icon_error_sml.gif) no-repeat; } .warningmark { background-image: url(../images/icon_warning_sml.gif); } .donemark { background-image: url(../images/icon_success_sml.gif); } .infomark { background-image: url(../images/icon_info_sml.gif); } .cvsdiff, .cvsblame { background-color: #ccc; } .cvsdiffadd { background-color: #afa; } .cvsdiffremove { background-color: #faa; } .cvsdiffchanges1 { background-color: #ff7; } .cvsdiffchanges2 { background-color: #ff7; } li.selection ul a { background: #fff; } .band1 { color: #fff; background-color: #663; } .band2 { color: #fff; background-color: #66C; } .band3 { background-color: #C99; } .band4 { background-color: #CFF; } .band5 { color: #fff; background-color: #336; } .band6 { color: #fff; background-color: #966; } .band7 { background-color: #9CC; } .band8 { background-color: #FFC; } .band9 { color: #fff; background-color: #633; } .band10 { color: #fff; background-color: #699; } .band11 { background-color: #CC9; } .band12 { background-color: #CCF; } .band13 { color: #fff; background-color: #366; } .band14 { color: #fff; background-color: #996; } .band15 { background-color: #99C; } .band16 { background-color: #FCC; } .contentBox .helplink, #helptext .helplink { cursor: help; } .legend th, .bars th { background-color: #fff; } /* font and text properties, exclusive of link indication, alignment, text-indent */ body, th, td, input, select { font-family: Verdana, Helvetica, Arial, sans-serif; } code, pre { font-family: 'Andale Mono', Courier, monospace; } body, .contentBox h2, .contentBox h3, #rightcol h2, pre, code, #apphead h2 small, h3, th, td { font-size: x-small; voice-family: "\"}\""; voice-family: inherit; font-size: small; } small, div#footer, div#login, div.tabs th, div.tabs td, input, select, .paginate, .functnbar, .functnbar2, .functnbar3, #breadcrumbs, .courtesylinks, #rightcol div.help, .colbar, .tasknav, body.docs div#toc, #leftColumn, .legend, .bars { font-size: xx-small; voice-family: "\"}\""; voice-family: inherit; font-size: x-small; } .tabs td, .tabs th, dt, .tasknav .selfref, #login .username, .selection { font-weight: bold; } li.selection ul { font-weight: normal; } #apphead h2 em { font-style: normal; } #banner h1 { font-size: 1.25em; } /* box properties (exclusive of borders), positioning, alignments, list types, text-indent */ #bodyColumn h2 { margin-top: .3em; margin-bottom: .5em; } p, ul, ol, dl, .bars table { margin-top: .67em; margin-bottom: .67em; } form { margin: 0; } #bodyColumn { padding-left: 12px; padding-right: 12px; width: 100%; voice-family: "\"}\""; voice-family: inherit; width: auto; } html>body #bodyColumn { width: auto; } .docs { line-height: 1.4; } ol ol { list-style-type: lower-alpha; } ol ol ol { list-style-type: lower-roman; } .contentBox h2, .contentBox h3 { padding: 5px; margin-right: 2px; } .contentBox td, .contentBox th { padding: 2px 3px; } .h2 p, .h3 p, .h2 dt, .h3 dt { margin-right: 7px; margin-left: 7px; } .tasknav { margin-bottom: 1.33em; } div.colbar { padding: 3px; margin: 2px 2px 0; } .tabs { margin-top: .67em; margin-right: 2px; margin-left: 2px; padding-left: 8px; } .tabs td, .tabs th { padding: 3px 9px; } #rightcol div.www, #rightcol div.help { padding: 0 .5em; } body.docs #toc { position: absolute; top: 15px; left: 0px; width: 120px; padding: 0 20px 0 0; } body.docs #toc ul, #toc ol { margin-left: 0; padding-left: 0; } body.docs #toc li { margin-top: 7px; padding-left: 10px; list-style-type: none; } body.docs div.docs { margin: 61px 0 0 150px; padding: 1em 2em 1em 1em !important; } .docs p+p { text-indent: 5%; margin-top: -.67em; } .docs h2, .docs h3 { margin-bottom: .1em; padding-top: .3em; } .functnbar, .functnbar2, .functnbar3 { padding: 5px; margin: .67em 2px; } .functnbar3 { margin-top: 0; } body { padding: 1em; } body.composite, body.docs { margin: 0; padding: 0; } th, td { text-align: left; vertical-align: top; } .right { text-align: right !important; } .center { text-align: center !important; } .axial th, .axial th .strut { text-align: right; } .contentBox .axial td th { text-align: left; } body .stb { margin-top: 1em; text-indent: 0; } body .mtb { margin-top: 2em; text-indent: 0; } .courtesylinks { margin-top: 1em; padding-top: 1em; } dd { margin-bottom: .67em; } .toolgroup { margin-bottom: 6px; } .toolgroup .body { padding: 4px 4px 4px 0; } .toolgroup .label { padding: 4px; } .toolgroup .body div { padding-bottom: .3em; padding-left: 1em; } .toolgroup .body div div { margin-top: .3em; padding-bottom: 0; } .tier1 { margin-left: 0; } .tier2 { margin-left: 1.5em; } .tier3 { margin-left: 3em; } .tier4 { margin-left: 4.5em; } .tier5 { margin-left: 6em; } .tier6 { margin-left: 7.5em; } .tier7 { margin-left: 9em; } .tier8 { margin-left: 10.5em; } .tier9 { margin-left: 12em; } .tier10 { margin-left: 13.5em; } .filebrowse .expanded, .filebrowse .collapsed { padding-left: 34px; } .filebrowse .leafnode, .filebrowse .leaf { padding-left: 20px; } .messagechild { padding-left: 34px; } .filebrowse-alt .expanded, .filebrowse-alt .collapsed, .filebrowse-alt .leaf, .filebrowse-alt .leafnode, .expandedwaste, .collapsedwaste, .sortup, .sortdown { /* hide from macie5\*/ float: left; /* resume */ display: inline-block; height: 15px; width: 34px; padding-left: 0 !important; } .filebrowse-alt .leaf, .filebrowse-alt .leafnode, .sortup, .sortdown { width: 20px; } .filebrowse ul, .filebrowse-alt ul { list-style-type: none; padding-left: 0; margin-left: 0; } .filebrowse ul ul, .filebrowse-alt ul ul { margin-left: 1.5em; margin-top: 0; padding-top: .67em; } .filebrowse li, .filebrowse-alt li { margin-bottom: .67em; } td.filebrowse h2 { margin-top: 0; } .errormessage, .warningmessage, .donemessage, .infomessage, .docinfo, .dirinfo, .memberinfo, .usergroupinfo { margin: .67em 0; padding: .33em 0 .67em 42px; min-height: 32px; } .errormark, .warningmark, .donemark, .infomark { padding-left: 20px; min-height: 15px; } .alt { display: none; } #banner h1 { margin: 0; } .axial th, .axial th .strut, #leftColumn .strut { width: 12em; } #breadcrumbs { padding: 2px 8px; } /* Bad for IE .contentBox h2, .contentBox h3, .bars { clear: both; } */ .legend { float: right; } .legend th, .bars th { text-align: right; padding-left: 1em; } .bars table { table-layout: fixed; } .bars th { width: 12em; } #projectdocumentlist td.filebrowse-alt { padding-right: .75em; } rampartc-src-1.3.0/docs/style/print.css0000644000076500007650000000031411202454500017710 0ustar shankarshankar#banner, #footer, #leftcol, #breadcrumbs, .docs #toc, .docs .courtesylinks, #leftColumn, #navColumn { display: none; } #bodyColumn, body.docs div.docs { margin: 0 !important; border: none !important } rampartc-src-1.3.0/docs/style/maven-base.css0000644000076500007650000000434711202454500020604 0ustar shankarshankarbody { margin: 0px; padding: 0px 0px 10px 0px; } img { border:none; } table { padding:0px; width: 100%; margin-left: -2px; margin-right: -2px; } acronym { cursor: help; border-bottom: 1px dotted #feb; } table.bodyTable th, table.bodyTable td { padding: 2px 4px 2px 4px; vertical-align: top; } div.clear{ clear:both; visibility: hidden; } div.clear hr{ display: none; } #projectLogo { font-size: xx-large; font-weight: bold; } #organizationLogo img, #projectLogo img, #projectLogo span{ margin: 8px; } #projectLogo span{ border: 1px solid; padding: 4px 10px 4px 10px; background-color: #eee; cursor: pointer; } .xleft, #organizationLogo img{ float:left; } .xright, #projectLogo img, #projectLogo span{ float:right; text-shadow: #7CFC00; } #banner { border-bottom: 1px solid #fff; } #banner img { border: none; } #footer, #breadcrumbs { padding: 3px 10px 3px 10px; } #leftColumn { width: 18%; float:left; } #bodyColumn { margin-left: 20%; } #navcolumn { padding: 8px 4px 0 8px; } #navcolumn h5, #navcolumn ul { margin: 0; padding: 0; font-size: small; } #navcolumn li { list-style-type: none; background-image: none; background-repeat: no-repeat; background-position: 0 0.4em; padding-left: 16px; list-style-position: ouside; line-height: 1.2em; font-size: smaller; } #navcolumn li.expanded { background-image: url(../images/expanded.gif); } #navcolumn li.collapsed { background-image: url(../images/collapsed.gif); } #poweredBy { text-align: center; } #navcolumn img { margin-top: 10px; margin-bottom: 3px; } #poweredBy img { display:block; margin: 20px 0 20px 17px; border: 1px solid black; width: 90px; height: 30px; } #search img { margin: 0px; display: block; } #search #q, #search #btnG { border: 1px solid #999; margin-bottom:10px; } #search form { margin: 0px; } #lastPublished { font-size: x-small; } .navSection { margin-bottom: 2px; padding: 8px; } .navSectionHead { font-weight: bold; font-size: x-small; } .section { padding: 4px; } #footer { font-size: x-small; } #breadcrumbs { font-size: x-small; margin: 0pt; } .source { padding: 12px; margin: 1em 7px 1em 7px; } .source pre { margin: 0px; padding: 0px; } rampartc-src-1.3.0/docs/versioning.html0000644000076500007650000000620711202454500017762 0ustar shankarshankarApache Rampart/C - Versioning

Versioning of Apache Rampart/C

Apache Rampart/C versioning guide lines as specified in Apache Axis2/C http://ws.apache.org/axis2/c/versioning.html


rampartc-src-1.3.0/docs/api/0000755000076500007650000000000011202454512015460 5ustar shankarshankarrampartc-src-1.3.0/docs/api/html/0000755000076500007650000000000011202454500016421 5ustar shankarshankarrampartc-src-1.3.0/docs/api/html/group__openssl__pem.html0000644000076500007650000000544511202454500023355 0ustar shankarshankar Rampart/C: OpenSSL PEM

OpenSSL PEM
[OpenSSL wrapper]


Enumerations

enum  openssl_pem_pkey_type_t { OPENSSL_PEM_PKEY_TYPE_PRIVATE_KEY = 0, OPENSSL_PEM_PKEY_TYPE_PUBLIC_KEY, OPENSSL_PEM_PKEY_TYPE_UNKNOWN }

Functions

AXIS2_EXTERN axis2_status_t openssl_pem_buf_read_pkey (const axutil_env_t *env, axis2_char_t *b64_encoded_buf, axis2_char_t *password, openssl_pem_pkey_type_t type, EVP_PKEY **pkey)
AXIS2_EXTERN axis2_status_t openssl_pem_read_pkey (const axutil_env_t *env, axis2_char_t *filename, axis2_char_t *password, openssl_pem_pkey_type_t type, EVP_PKEY **pkey)

Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/globals_0x73.html0000644000076500007650000001627611202454500021527 0ustar shankarshankar Rampart/C: Class Members
Here is a list of all documented file members with links to the documentation:

- s -


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/openssl__pkey_8h-source.html0000644000076500007650000002541611202454500024066 0ustar shankarshankar Rampart/C: openssl_pkey.h Source File

openssl_pkey.h

Go to the documentation of this file.
00001 /*
00002  *   Copyright 2003-2004 The Apache Software Foundation.
00003  *
00004  *   Licensed under the Apache License, Version 2.0 (the "License");
00005  *   you may not use this file except in compliance with the License.
00006  *   You may obtain a copy of the License at
00007  *
00008  *       http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  *   Unless required by applicable law or agreed to in writing, software
00011  *   distributed under the License is distributed on an "AS IS" BASIS,
00012  *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  *   See the License for the specific language governing permissions and
00014  *   limitations under the License.
00015  */
00016 
00017 #include <openssl/rand.h>
00018 #include <openssl/evp.h>
00019 #include <openssl/pem.h>
00020 #include <openssl/bio.h>
00021 #include <openssl/rand.h>
00022 #include <openssl_constants.h>
00023 #include <axis2_util.h>
00024 
00030 #ifndef OPENSSL_PKEY_H
00031 #define OPENSSL_PKEY_H
00032 
00033 #ifdef __cplusplus
00034 extern "C" {
00035 #endif
00036 
00042 #define OPENSSL_PKEY_TYPE_UNKNOWN        0
00043 #define OPENSSL_PKEY_TYPE_PUBLIC_KEY     1
00044 #define OPENSSL_PKEY_TYPE_PRIVATE_KEY    2
00045 
00046 
00048     typedef struct openssl_pkey_t openssl_pkey_t;
00049 
00050 
00051 
00052     EVP_PKEY *AXIS2_CALL
00053     openssl_pkey_get_key(
00054         const openssl_pkey_t *pkey,
00055         const axutil_env_t *env
00056     );
00057 
00058     axis2_char_t *AXIS2_CALL
00059     openssl_pkey_get_name(
00060         const openssl_pkey_t *pkey,
00061         const axutil_env_t *env
00062     );
00063 
00064     int AXIS2_CALL
00065     openssl_pkey_get_size(
00066         const openssl_pkey_t *pkey,
00067         const axutil_env_t *env
00068     );
00069 
00070     int AXIS2_CALL
00071     openssl_pkey_get_type(
00072         const openssl_pkey_t *pkey,
00073         const axutil_env_t *env
00074     );
00075 
00076 
00077     axis2_status_t AXIS2_CALL
00078     openssl_pkey_set_key(
00079         openssl_pkey_t *pkey,
00080         const axutil_env_t *env,
00081         EVP_PKEY *key
00082     );
00083 
00084     axis2_status_t AXIS2_CALL
00085     openssl_pkey_set_name(
00086         openssl_pkey_t *pkey,
00087         const axutil_env_t *env,
00088         axis2_char_t *name
00089     );
00090 
00091     axis2_status_t AXIS2_CALL
00092     openssl_pkey_set_type(
00093         openssl_pkey_t *pkey,
00094         const axutil_env_t *env,
00095         int type
00096     );
00097 
00098     axis2_status_t AXIS2_CALL
00099     openssl_pkey_load(
00100         openssl_pkey_t *pkey,
00101         const axutil_env_t *env,
00102         axis2_char_t *filename,
00103         axis2_char_t *password
00104     );
00105 
00106     axis2_status_t AXIS2_CALL
00107     openssl_pkey_populate(
00108         openssl_pkey_t *pkey,
00109         const axutil_env_t *env,
00110         EVP_PKEY *key,
00111         axis2_char_t *name,
00112         int type
00113     );
00114 
00115     axis2_status_t AXIS2_CALL
00116     openssl_pkey_free(
00117         openssl_pkey_t *pkey,
00118         const axutil_env_t *env
00119     );
00120 
00121     axis2_status_t AXIS2_CALL
00122     openssl_pkey_increment_ref(
00123         openssl_pkey_t *pkey,
00124         const axutil_env_t *env);
00125     /*Create function*/
00126     AXIS2_EXTERN openssl_pkey_t *AXIS2_CALL
00127     openssl_pkey_create(const axutil_env_t *env);
00128 
00130 #ifdef __cplusplus
00131 }
00132 #endif
00133 
00134 #endif    /* OPENSSL_PKEY_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__rahas.html0000644000076500007650000001011711202454500021760 0ustar shankarshankar Rampart/C: SecurityContextToken Issuer

SecurityContextToken Issuer


Functions

AXIS2_EXTERN axis2_status_t rahas_process_issue_request (const axutil_env_t *env, trust_rst_t *rst, trust_rstr_t *rstr, axis2_msg_ctx_t *msg_ctx, int trust_version)

Function Documentation

AXIS2_EXTERN axis2_status_t rahas_process_issue_request ( const axutil_env_t *  env,
trust_rst_t *  rst,
trust_rstr_t *  rstr,
axis2_msg_ctx_t *  msg_ctx,
int  trust_version 
)

Processes issue request

Parameters:
env pointer to environment struct
rst request security token struct
rstr request security token response struct
msg_ctx message context structure
trust_version Trust specification. Can be TRUST_VERSION_05_02 or TRUST_VERSION_05_12
Returns:
AXIS2_SUCCESS if processed successfully. AXIS2_FAILURE otherwise.


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/files.html0000644000076500007650000005035711202454500020423 0ustar shankarshankar Rampart/C: File Index

File List

Here is a list of all documented files with brief descriptions:
axis2_key_type.h [code]Defines the key type
openssl_cipher_ctx.h [code]The cipher context in which the information regarding a cipher cycle is stored
openssl_cipher_property.h [code]The class to store cipher properties such as name, key size, block size etc
openssl_constants.h [code]Constants for the openssl wrapper
openssl_crypt.h [code]The encryption/decryption methods for OMXMLSecurity
openssl_digest.h [code]Digest function implementations. Supports SHA1 and MD5
openssl_hmac.h [code]HMAC function implementations. Supports SHA1
openssl_pem.h [code]Funcitons related to keys that are in PEM format
openssl_pkcs12.h [code]Functions related to keys that are in pkcs12 format
openssl_pkcs12_keystore.h [code]Key Store manager for keys that are in pkcs12 format
openssl_pkey.h [code]Holds either a public key or a private key. The type is determined by the type attribute
openssl_rsa.h [code]For RSA encryption
openssl_sign.h [code]The signature functions in openssl wrapper
openssl_util.h [code]General utility routines for openssl related functions
openssl_x509.h [code]Extracts information from a X509 certificate
oxs_asym_ctx.h [code]Keeps information relavent for asymmetric encryption
oxs_axiom.h [code]Utility functions related to AXIOM. A place for common code
oxs_axis2_utils.h [code]Utility functions related to Axis2/C
oxs_buffer.h [code]The buffer representation in OMXMLSecurity
oxs_c14n.h [code]Cannonicalization implementation for OMXMLSecurity
oxs_cipher.h [code]Cipher related functions in OMXMLSecurity
oxs_constants.h [code]Constants for OMXMLSecurity
oxs_ctx.h [code]Keeps configurations for the OMXMLSecurity
oxs_derivation.h [code]The Key derivation module for OMXMLSecurity
oxs_encryption.h [code]Provides data encryption and decryption functionalities of the OMXMLSec
oxs_error.h [code]Represents an Error occured during the OMXMLSecurity execution
oxs_iv.h [code]Initial Vector related functionalities
oxs_key.h [code]Key in OMXMLSecurity
oxs_key_mgr.h [code]Key Manager responsible for loading keys for OMXMLSecurity
oxs_saml_token.h [code]
oxs_sign_ctx.h [code]Keeps information relavent for a single node of signing
oxs_sign_part.h [code]Keeps information relavent for a single node of signing
oxs_signature.h [code]Does the XML Signature for OMXMLSecurity
oxs_tokens.h [code]Includes all tokens of OMXMLSecurity
oxs_transform.h [code]The class representing a single step of transformation. For example a Cannonicalization
oxs_transforms_factory.h [code]Produces transforms for OMXMLSecurity
oxs_utility.h [code]The utility module for OMXMLSecurity
oxs_x509_cert.h [code]OMXMLSecurity representation of an X509 certificate
oxs_xml_encryption.h [code]Does the XML encryption for OMXMLSecurity
oxs_xml_key_info_builder.h [code]Process elements available under ds:KeyInfo
oxs_xml_key_processor.h [code]Process elements available under ds:KeyInfo
oxs_xml_signature.h [code]Does the XML Signature for OMXMLSecurity
rahas_mod.h [code]Axis2 rahas module interface
rahas_request_processor.h [code]Process requests related to secure conversation
rampart_authn_provider.h [code]The authentication interface of rampart. Validates a username and password pair
rampart_callback.h [code]The callback module for a password
rampart_config.h [code]The Rampart Config, in which user configurations are stored
rampart_constants.h [code]Holds constants for rampart
rampart_context.h [code]The Rampart Context, in which configurations are stored
rampart_credentials.h [code]The credentials interface for rampart. To retrieve a username and password pair
rampart_crypto_util.h [code]Crypto related utility module
rampart_encryption.h [code]Encrypts a SOAP message
rampart_engine.h [code]Loads configuratins for Rampart, which defines its behaviuor. Also loads modules and initialize Rampart
rampart_error.h [code]Rampart specific error codes
rampart_handler_util.h [code]Utilities related to handlers
rampart_issued.h [code]
rampart_issued_token.h [code]
rampart_mod.h [code]Axis2 rampart module interface
rampart_policy_validator.h [code]Verifies whether the message complies with the security policy reqmnt
rampart_replay_detector.h [code]The replay_detector module for rampart
rampart_saml.h [code]Build saml tokens and validate saml tokens
rampart_saml_token.h [code]
rampart_sct_provider.h [code]Security context token provider module for rampart
rampart_sct_provider_utility.h [code]Utility methods using Security context token provider module
rampart_sec_header_builder.h [code]Build the Security related SOAP headers
rampart_sec_header_processor.h [code]Processes a message depending on it's security related claims
rampart_sec_processed_result.h [code]The module to keep the results after processing the message
rampart_signature.h [code]Sign a SOAP message
rampart_timestamp_token.h [code]Timestamp token related functions
rampart_token_builder.h [code]Reference Token builfing/of rampart
rampart_token_processor.h [code]Token processing of rampart
rampart_username_token.h [code]The Usernametoken
rampart_util.h [code]Utilities of rampart
saml.h [code]
saml_req.h [code]
secconv_security_context_token.h [code]Security context token
trust_claims.h [code]
trust_constants.h [code]Holds constants for trust implementation
trust_context.h [code]Holds function declarations and data for data
trust_entropy.h [code]
trust_life_time.h [code]
trust_policy_util.h [code]
trust_rst.h [code]
trust_rstr.h [code]
trust_sts_client.h [code]Specific sts client interface
trust_token.h [code]Holds function declarations and data for token
trust_util.h [code]Generic operations related to trust module

Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__oxs__xml__encryption.html0000644000076500007650000004702411202454500025132 0ustar shankarshankar Rampart/C: XML Encryption

XML Encryption
[OMXMLSecurity]


Functions

AXIS2_EXTERN axis2_status_t oxs_xml_enc_encrypt_node (const axutil_env_t *env, oxs_ctx_t *enc_ctx, axiom_node_t *node, axiom_node_t **enc_type_node, axiom_node_t *key_reference_node)
AXIS2_EXTERN axis2_status_t oxs_xml_enc_decrypt_node (const axutil_env_t *env, oxs_ctx_t *enc_ctx, axiom_node_t *enc_type_node, axiom_node_t **decrypted_node)
AXIS2_EXTERN axis2_status_t oxs_xml_enc_encrypt_data (const axutil_env_t *env, oxs_ctx_t *enc_ctx, oxs_buffer_t *content_buf, axiom_node_t **enc_type_node, axiom_node_t *key_reference_node)
AXIS2_EXTERN axis2_status_t oxs_xml_enc_decrypt_data (const axutil_env_t *env, oxs_ctx_t *enc_ctx, axiom_node_t *enc_type_node, oxs_buffer_t *result_buf)
AXIS2_EXTERN axis2_status_t oxs_xml_enc_encrypt_key (const axutil_env_t *env, oxs_asym_ctx_t *asym_ctx, axiom_node_t *parent, oxs_key_t *sym_key, axutil_array_list_t *id_list)
AXIS2_EXTERN axis2_status_t oxs_xml_enc_decrypt_key (const axutil_env_t *env, oxs_asym_ctx_t *asym_ctx, axiom_node_t *parent, axiom_node_t *encrypted_key_node, oxs_key_t *key)

Function Documentation

AXIS2_EXTERN axis2_status_t oxs_xml_enc_decrypt_data ( const axutil_env_t *  env,
oxs_ctx_t enc_ctx,
axiom_node_t *  enc_type_node,
oxs_buffer_t result_buf 
)

Decrypts and places the data inside the The name of the method is bit tricky as it doesn't exactly decrypts a data buffer.

Parameters:
env pointer to environment struct
enc_ctx encryption context
enc_type_node the EncryptedData node which needs to be decrypted
result_buf the buffer to keep the decrypted content
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_xml_enc_decrypt_key ( const axutil_env_t *  env,
oxs_asym_ctx_t *  asym_ctx,
axiom_node_t *  parent,
axiom_node_t *  encrypted_key_node,
oxs_key_t key 
)

Decrypts a key/data in asymmetric way as specified in . This method is specifically written to support the key decryption in WS-Secruity

Parameters:
env pointer to environment struct
enc_ctx encryption context
parent parent of the EncryptedKey node
encrypted_key_node the EncryptedKey node
key,the key which holds the decrypted key data
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_xml_enc_decrypt_node ( const axutil_env_t *  env,
oxs_ctx_t enc_ctx,
axiom_node_t *  enc_type_node,
axiom_node_t **  decrypted_node 
)

Decrypts a node as specified in the . A reference is taken to assign the address of the decrypted node

Parameters:
env pointer to environment struct
enc_ctx encryption context
enc_type_node the EncryptedData node which needs to be decrypted
decrypted_node reference to the decrypted node
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_xml_enc_encrypt_data ( const axutil_env_t *  env,
oxs_ctx_t enc_ctx,
oxs_buffer_t content_buf,
axiom_node_t **  enc_type_node,
axiom_node_t *  key_reference_node 
)

Encrypts data or the content of the as specified in the . A reference is taken for the EncryptedData to place the encrypted data

Parameters:
env pointer to environment struct
enc_ctx encryption context
content_buf the content to be encrypted.
enc_type_node reference to the EncryptedData node
key_reference_node key reference provided by STS generated tokens.
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_xml_enc_encrypt_key ( const axutil_env_t *  env,
oxs_asym_ctx_t *  asym_ctx,
axiom_node_t *  parent,
oxs_key_t sym_key,
axutil_array_list_t *  id_list 
)

Encrypts a key/data in asymmetric way as specified in . This method is specifically written to support the key encryption in WS-Secruity

Parameters:
env pointer to environment struct
enc_ctx encryption context
parent parent of the EncryptedKey node
sym_key,the symmetric key that needs to be encrypted
id_list the list of nodes that are encrypted by this particular key
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_xml_enc_encrypt_node ( const axutil_env_t *  env,
oxs_ctx_t enc_ctx,
axiom_node_t *  node,
axiom_node_t **  enc_type_node,
axiom_node_t *  key_reference_node 
)

Encrypts a given node as specified in the . A reference is taken for the EncryptedData to place the encrypted data.

Parameters:
env pointer to environment struct
enc_ctx encryption context
node the node tobe encrypted
enc_type_node reference to the EncryptedData node
key_reference_node key reference provided by STS generated tokens.
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/dirs.html0000644000076500007650000000236511202454500020256 0ustar shankarshankar Rampart/C: Directory Hierarchy

Directories

This directory hierarchy is sorted roughly, but not completely, alphabetically:

Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/oxs__utility_8h-source.html0000644000076500007650000001426711202454500023751 0ustar shankarshankar Rampart/C: oxs_utility.h Source File

oxs_utility.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef OXS_UTILITY_H
00019 #define OXS_UTILITY_H
00020 
00021 
00032 #include <axis2_defines.h>
00033 #include <axutil_env.h>
00034 #include <oxs_asym_ctx.h>
00035 #include <oxs_key_mgr.h>
00036 
00037 #ifdef __cplusplus
00038 extern "C"
00039 {
00040 #endif
00041     
00048     AXIS2_EXTERN axis2_char_t* AXIS2_CALL
00049     oxs_util_generate_nonce(const axutil_env_t *env, int length);
00050 
00059     AXIS2_EXTERN axis2_char_t* AXIS2_CALL
00060     oxs_util_generate_id(const axutil_env_t *env,
00061                          axis2_char_t *prefix);
00062 
00069     AXIS2_EXTERN oxs_key_mgr_format_t AXIS2_CALL
00070     oxs_util_get_format_by_file_extension(const axutil_env_t *env,
00071                                           axis2_char_t *file_name);
00072 
00073 
00081     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00082     oxs_util_get_newline_removed_string(const axutil_env_t *env,
00083                                         axis2_char_t *input);
00084 
00085 
00087 #ifdef __cplusplus
00088 }
00089 #endif
00090 
00091 #endif                          /* OXS_UTILITY_H */

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/rampart__saml_8h.html0000644000076500007650000004762311202454500022543 0ustar shankarshankar Rampart/C: rampart_saml.h File Reference

rampart_saml.h File Reference

build saml tokens and validate saml tokens More...

#include <axutil_utils_defines.h>
#include <axis2_defines.h>
#include <axutil_env.h>
#include <axiom_soap.h>
#include <axis2_msg_ctx.h>
#include <oxs_asym_ctx.h>
#include <oxs_xml_encryption.h>
#include <rampart_context.h>
#include <axutil_utils.h>
#include <axiom.h>
#include <rampart_saml_token.h>
#include <oxs_key_mgr.h>
#include <rp_rampart_config.h>

Go to the source code of this file.

Defines

#define RAMPART_ST_FAULT_SECURITYTOKENUNAVAILABLE_STR   "A referenced SAML assertion could not be retrieved."
#define RAMPART_ST_FAULT_UNSUPPORTEDSECURITYTOKEN_STR   "An assertion contains a <saml:condition> element that the receive does not understand."
#define RAMPART_ST_FAULT_FAILEDCHECK_STR   "A signature withing an assertion or referencing an assertion is invalid."
#define RAMPART_ST_FAULT_INVALIDSECURITYTOKEN_STR   "The issuer of an assertion is not acceptable to the receiver."
#define RAMPART_ST_FAULT_SECURITYTOKENUNAVAILABLE_CODE   "wsse:SecurityTokenUnavailable"
#define RAMPART_ST_FAULT_UNSUPPORTEDSECURITYTOKEN_CODE   "wsse:UnsupportedSecurityToken"
#define RAMPART_ST_FAULT_FAILEDCHECK_CODE   "wsse:FailedCheck"
#define RAMPART_ST_FAULT_INVALIDSECURITYTOKEN_CODE   "wsse:InvalidSecurityToken"
#define RAMPART_SAML_FAULT_CODE   "env:Sender"

Functions

AXIS2_EXTERN axis2_status_t rampart_saml_supporting_token_build (const axutil_env_t *env, rampart_context_t *rampart_context, axiom_node_t *sec_node, axutil_array_list_t *sign_parts)
AXIS2_EXTERN axis2_status_t rampart_saml_token_validate (const axutil_env_t *env, rampart_context_t *rampart_context, axiom_node_t *assertion)
AXIS2_EXTERN char * rampart_saml_token_get_subject_confirmation (const axutil_env_t *env, axiom_node_t *assertion)
AXIS2_EXTERN int rampart_saml_token_fault_securitytokenunavailable (axutil_env_t *env, axis2_msg_ctx_t *ctx)
AXIS2_EXTERN int rampart_saml_token_fault_unsupportedsecuritytoken (axutil_env_t *env, axis2_msg_ctx_t *ctx)
AXIS2_EXTERN int rampart_saml_token_fault_failedcheck (axutil_env_t *env, axis2_msg_ctx_t *ctx)
AXIS2_EXTERN int rampart_saml_token_fault_invalidsecuritytoken (axutil_env_t *env, axis2_msg_ctx_t *ctx)
AXIS2_EXTERN rampart_saml_token_t * rampart_saml_add_token (rampart_context_t *rampart_context, const axutil_env_t *env, axiom_node_t *assertion, axiom_node_t *str, rampart_st_type_t type)


Detailed Description

build saml tokens and validate saml tokens


Function Documentation

AXIS2_EXTERN axis2_status_t rampart_saml_supporting_token_build ( const axutil_env_t *  env,
rampart_context_t *  rampart_context,
axiom_node_t *  sec_node,
axutil_array_list_t *  sign_parts 
)

Parameters:
env pointer to environment struct,Must not be NULL.
rampart_context 
sec_node 
sign_parts 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN int rampart_saml_token_fault_failedcheck ( axutil_env_t *  env,
axis2_msg_ctx_t *  ctx 
)

Parameters:
env pointer to environment struct,Must not be NULL.
ctx 
Returns:

AXIS2_EXTERN int rampart_saml_token_fault_invalidsecuritytoken ( axutil_env_t *  env,
axis2_msg_ctx_t *  ctx 
)

Parameters:
env pointer to environment struct,Must not be NULL.
ctx 
Returns:

AXIS2_EXTERN int rampart_saml_token_fault_securitytokenunavailable ( axutil_env_t *  env,
axis2_msg_ctx_t *  ctx 
)

SAML token proccessing faults

Parameters:
env pointer to environment struct,Must not be NULL.
ctx 
Returns:

AXIS2_EXTERN int rampart_saml_token_fault_unsupportedsecuritytoken ( axutil_env_t *  env,
axis2_msg_ctx_t *  ctx 
)

Parameters:
env pointer to environment struct,Must not be NULL.
ctx 
Returns:

AXIS2_EXTERN char* rampart_saml_token_get_subject_confirmation ( const axutil_env_t *  env,
axiom_node_t *  assertion 
)

Parameters:
env pointer to environment struct,Must not be NULL.
assertion 
Returns:

AXIS2_EXTERN axis2_status_t rampart_saml_token_validate ( const axutil_env_t *  env,
rampart_context_t *  rampart_context,
axiom_node_t *  assertion 
)

Parameters:
env pointer to environment struct,Must not be NULL.
rampart_context 
assertion 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/globals_defs.html0000644000076500007650000000345411202454500021741 0ustar shankarshankar Rampart/C: Class Members
 


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/rahas__mod_8h-source.html0000644000076500007650000001074611202454500023310 0ustar shankarshankar Rampart/C: rahas_mod.h Source File

rahas_mod.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef RAHAS_MOD_H
00019 #define RAHAS_MOD_H
00020 
00030 #include <axis2_handler.h>
00031 
00032 #ifdef __cplusplus
00033 extern "C"
00034 {
00035 #endif
00036 
00043     AXIS2_EXTERN axis2_handler_t* AXIS2_CALL
00044     rahas_in_handler_create(
00045         const axutil_env_t *env,
00046         axutil_string_t *name);
00047 
00050 #ifdef __cplusplus
00051 }
00052 #endif
00053 
00054 #endif    /* RAHAS_MOD_H */

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__oxs__axis2__utils.html0000644000076500007650000000232111202454500024315 0ustar shankarshankar Rampart/C: Axis2 Utils

Axis2 Utils
[OMXMLSecurity]


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__oxs__asym__ctx.html0000644000076500007650000005171211202454500023706 0ustar shankarshankar Rampart/C: Asymmetric Context

Asymmetric Context
[OMXMLSecurity]


Typedefs

typedef struct oxs_asym_ctx_t oxs_asym_ctx_t

Enumerations

enum  oxs_asym_ctx_format_t { OXS_ASYM_CTX_FORMAT_UNKNOWN = 0, OXS_ASYM_CTX_FORMAT_PEM, OXS_ASYM_CTX_FORMAT_PKCS12 }
enum  oxs_asym_ctx_operation_t { OXS_ASYM_CTX_OPERATION_PUB_ENCRYPT = 0, OXS_ASYM_CTX_OPERATION_PRV_DECRYPT, OXS_ASYM_CTX_OPERATION_PUB_DECRYPT, OXS_ASYM_CTX_OPERATION_PRV_ENCRYPT }

Functions

AXIS2_EXTERN oxs_asym_ctx_t * oxs_asym_ctx_create (const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_asym_ctx_free (oxs_asym_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_asym_ctx_get_algorithm (const oxs_asym_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_asym_ctx_get_st_ref_pattern (const oxs_asym_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN
oxs_asym_ctx_operation_t 
oxs_asym_ctx_get_operation (const oxs_asym_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN openssl_pkey_toxs_asym_ctx_get_private_key (const oxs_asym_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN oxs_x509_cert_t * oxs_asym_ctx_get_certificate (const oxs_asym_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_asym_ctx_set_algorithm (oxs_asym_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *algorithm)
AXIS2_EXTERN axis2_status_t oxs_asym_ctx_set_st_ref_pattern (oxs_asym_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *st_ref_pattern)
AXIS2_EXTERN axis2_status_t oxs_asym_ctx_set_operation (oxs_asym_ctx_t *ctx, const axutil_env_t *env, oxs_asym_ctx_operation_t operation)
AXIS2_EXTERN axis2_status_t oxs_asym_ctx_set_certificate (oxs_asym_ctx_t *ctx, const axutil_env_t *env, oxs_x509_cert_t *certificate)
AXIS2_EXTERN axis2_status_t oxs_asym_ctx_set_private_key (oxs_asym_ctx_t *asym_ctx, const axutil_env_t *env, openssl_pkey_t *private_key)

Function Documentation

AXIS2_EXTERN axis2_status_t oxs_asym_ctx_free ( oxs_asym_ctx_t *  ctx,
const axutil_env_t *  env 
)

Free function for the asymmetric context struct pointer to the OMXMLSec asymmetric context struct pointer to environment struct

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_char_t* oxs_asym_ctx_get_algorithm ( const oxs_asym_ctx_t *  ctx,
const axutil_env_t *  env 
)

Get the algorithm used to encrypt pointer to the OMXMLSec asymmetric context struct pointer to environment struct

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN oxs_x509_cert_t* oxs_asym_ctx_get_certificate ( const oxs_asym_ctx_t *  ctx,
const axutil_env_t *  env 
)

Get the x509 crtificate used. pointer to the OMXMLSec asymmetric context struct pointer to environment struct

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN oxs_asym_ctx_operation_t oxs_asym_ctx_get_operation ( const oxs_asym_ctx_t *  ctx,
const axutil_env_t *  env 
)

Get the operation. For ex: Public Key encrypt, Private Key Decrypt pointer to the OMXMLSec asymmetric context struct pointer to environment struct

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN openssl_pkey_t* oxs_asym_ctx_get_private_key ( const oxs_asym_ctx_t *  ctx,
const axutil_env_t *  env 
)

Get the private key used pointer to the OMXMLSec asymmetric context struct pointer to environment struct

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_char_t* oxs_asym_ctx_get_st_ref_pattern ( const oxs_asym_ctx_t *  ctx,
const axutil_env_t *  env 
)

Get the SecurityTokenReference pattern. For ex: IssuerSerial pointer to the OMXMLSec asymmetric context struct pointer to environment struct

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_asym_ctx_set_algorithm ( oxs_asym_ctx_t *  ctx,
const axutil_env_t *  env,
axis2_char_t *  algorithm 
)

Sets the algorithm used to encrypt pointer to the OMXMLSec asymmetric context struct pointer to environment struct used to encrypt

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_asym_ctx_set_certificate ( oxs_asym_ctx_t *  ctx,
const axutil_env_t *  env,
oxs_x509_cert_t *  certificate 
)

Sets the x509 crtificate used. pointer to the OMXMLSec asymmetric context struct pointer to environment struct the x509 crtificate used.

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_asym_ctx_set_operation ( oxs_asym_ctx_t *  ctx,
const axutil_env_t *  env,
oxs_asym_ctx_operation_t  operation 
)

Sets the operation. For ex: Public Key encrypt, Private Key Decrypt pointer to the OMXMLSec asymmetric context struct pointer to environment struct the operation. For ex: Public Key encrypt, Private Key Decrypt

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_asym_ctx_set_private_key ( oxs_asym_ctx_t *  asym_ctx,
const axutil_env_t *  env,
openssl_pkey_t private_key 
)

Sets private key used pointer to the OMXMLSec asymmetric context struct pointer to environment struct private key used

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_asym_ctx_set_st_ref_pattern ( oxs_asym_ctx_t *  ctx,
const axutil_env_t *  env,
axis2_char_t *  st_ref_pattern 
)

Set the SecurityTokenReference pattern. For ex: IssuerSerial pointer to the OMXMLSec asymmetric context struct pointer to environment struct SecurityTokenReference pattern. For ex: IssuerSerial

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__openssl__cipher__property.html0000644000076500007650000007755411202454500026163 0ustar shankarshankar Rampart/C: OpenSSL Cipher Property

OpenSSL Cipher Property
[OpenSSL wrapper]


Typedefs

typedef struct
openssl_cipher_property_t 
openssl_cipher_property_t

Functions

EVP_CIPHER * openssl_cipher_property_get_cipher (const openssl_cipher_property_t *cprop, const axutil_env_t *env)
axis2_char_t * openssl_cipher_property_get_name (const openssl_cipher_property_t *cprop, const axutil_env_t *env)
axis2_char_t * openssl_cipher_property_get_url (const openssl_cipher_property_t *cprop, const axutil_env_t *env)
int openssl_cipher_property_get_key_size (const openssl_cipher_property_t *cprop, const axutil_env_t *env)
int openssl_cipher_property_get_block_size (const openssl_cipher_property_t *cprop, const axutil_env_t *env)
int openssl_cipher_property_get_iv_size (const openssl_cipher_property_t *cprop, const axutil_env_t *env)
axis2_status_t openssl_cipher_property_set_cipher (openssl_cipher_property_t *cprop, const axutil_env_t *env, EVP_CIPHER *cipher)
axis2_status_t openssl_cipher_property_set_name (openssl_cipher_property_t *cprop, const axutil_env_t *env, axis2_char_t *name)
axis2_status_t openssl_cipher_property_set_url (openssl_cipher_property_t *cprop, const axutil_env_t *env, axis2_char_t *url)
axis2_status_t openssl_cipher_property_set_key_size (openssl_cipher_property_t *cprop, const axutil_env_t *env, int key_size)
axis2_status_t openssl_cipher_property_set_block_size (openssl_cipher_property_t *cprop, const axutil_env_t *env, int block_size)
axis2_status_t openssl_cipher_property_set_iv_size (openssl_cipher_property_t *cprop, const axutil_env_t *env, int iv_size)
axis2_status_t openssl_cipher_property_free (openssl_cipher_property_t *cprop, const axutil_env_t *env)
AXIS2_EXTERN
openssl_cipher_property_t
openssl_cipher_property_create (const axutil_env_t *env)

Typedef Documentation

Type name for struct openssl_cipher_property


Function Documentation

AXIS2_EXTERN openssl_cipher_property_t* openssl_cipher_property_create ( const axutil_env_t *  env  ) 

Create a fresh block cipher property

Parameters:
env pointer to environment struct
Returns:
cipher_prop_ptr

axis2_status_t openssl_cipher_property_free ( openssl_cipher_property_t cprop,
const axutil_env_t *  env 
)

Free the cipher property

Parameters:
cprop The OpenSSL cipher property
env pointer to environment struct
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

int openssl_cipher_property_get_block_size ( const openssl_cipher_property_t cprop,
const axutil_env_t *  env 
)

Given the OpenSSL cipher property returns the cipher block size

Parameters:
cprop The OpenSSL cipher property
env pointer to environment struct
Returns:
the block size of the cipher

EVP_CIPHER* openssl_cipher_property_get_cipher ( const openssl_cipher_property_t cprop,
const axutil_env_t *  env 
)

Given the OpenSSL cipher property returns the cipher

Parameters:
cprop The OpenSSL cipher property
env pointer to environment struct
Returns:
the cipher

int openssl_cipher_property_get_iv_size ( const openssl_cipher_property_t cprop,
const axutil_env_t *  env 
)

Given the OpenSSL cipher property returns the size of the initial vector

Parameters:
cprop The OpenSSL cipher property
env pointer to environment struct
Returns:
the size of the initial vector

int openssl_cipher_property_get_key_size ( const openssl_cipher_property_t cprop,
const axutil_env_t *  env 
)

Given the OpenSSL cipher property returns the size of the key

Parameters:
cprop The OpenSSL cipher property
env pointer to environment struct
Returns:
size of the key

axis2_char_t* openssl_cipher_property_get_name ( const openssl_cipher_property_t cprop,
const axutil_env_t *  env 
)

Given the OpenSSL cipher property returns the name of the property

Parameters:
cprop The OpenSSL cipher property
env pointer to environment struct
Returns:
the name of the cipher property

axis2_char_t* openssl_cipher_property_get_url ( const openssl_cipher_property_t cprop,
const axutil_env_t *  env 
)

Given the OpenSSL cipher property returns the URL Which usually is an algorithm URL

Parameters:
cprop The OpenSSL cipher property
env pointer to environment struct
Returns:
the URL

axis2_status_t openssl_cipher_property_set_block_size ( openssl_cipher_property_t cprop,
const axutil_env_t *  env,
int  block_size 
)

Set the size of the cipher block for the OpenSSL cipher property

Parameters:
cprop The OpenSSL cipher property
env pointer to environment struct
block_size the size of the cipher block
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

axis2_status_t openssl_cipher_property_set_cipher ( openssl_cipher_property_t cprop,
const axutil_env_t *  env,
EVP_CIPHER *  cipher 
)

Set the Cipher for the OpenSSL cipher property

Parameters:
cprop The OpenSSL cipher property
env pointer to environment struct
cipher The cipher to be set in the property
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

axis2_status_t openssl_cipher_property_set_iv_size ( openssl_cipher_property_t cprop,
const axutil_env_t *  env,
int  iv_size 
)

Set the size of the initial vector for the OpenSSL cipher property

Parameters:
cprop The OpenSSL cipher property
env pointer to environment struct
iv_size the size of the initial vector
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

axis2_status_t openssl_cipher_property_set_key_size ( openssl_cipher_property_t cprop,
const axutil_env_t *  env,
int  key_size 
)

Set the the size of the key for the OpenSSL cipher property

Parameters:
cprop The OpenSSL cipher property
env pointer to environment struct
key_size the size of the key
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

axis2_status_t openssl_cipher_property_set_name ( openssl_cipher_property_t cprop,
const axutil_env_t *  env,
axis2_char_t *  name 
)

Set the name for the OpenSSL cipher property

Parameters:
cprop The OpenSSL cipher property
env pointer to environment struct
name of the OpenSSL cipher property
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

axis2_status_t openssl_cipher_property_set_url ( openssl_cipher_property_t cprop,
const axutil_env_t *  env,
axis2_char_t *  url 
)

Set the url for the OpenSSL cipher property

Parameters:
cprop The OpenSSL cipher property
env pointer to environment struct
url The URL of the OpenSSL cipher property
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/oxs__derivation_8h-source.html0000644000076500007650000001655511202454500024414 0ustar shankarshankar Rampart/C: oxs_derivation.h Source File

oxs_derivation.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef OXS_DERIVATION_H
00019 #define OXS_DERIVATION_H
00020 
00021 
00032 #include <axis2_defines.h>
00033 #include <axutil_env.h>
00034 #include <oxs_key.h>
00035 #include <oxs_buffer.h>
00036 
00037 #ifdef __cplusplus
00038 extern "C"
00039 {
00040 #endif
00041 
00042 
00056     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00057     oxs_derivation_derive_key(
00058         const axutil_env_t *env,
00059         oxs_key_t *secret,
00060         oxs_key_t *derived_key,
00061         axis2_bool_t build_fresh);
00062 
00074     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00075     oxs_derivation_build_derived_key_token(
00076         const axutil_env_t *env,
00077         oxs_key_t *derived_key,
00078         axiom_node_t *parent,
00079         axis2_char_t *stref_uri,
00080         axis2_char_t *stref_val_type, 
00081         axis2_char_t *wsc_ns_uri);
00082 
00093     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00094     oxs_derivation_build_derived_key_token_with_stre(
00095         const axutil_env_t *env,
00096         oxs_key_t *derived_key,
00097         axiom_node_t *parent,    
00098         axiom_node_t *stre,
00099         axis2_char_t *wsc_ns_uri);
00100 
00111     AXIS2_EXTERN oxs_key_t * AXIS2_CALL
00112     oxs_derivation_extract_derived_key_from_token(
00113         const axutil_env_t *env,
00114         axiom_node_t *dk_token,
00115         axiom_node_t *root_node,
00116         oxs_key_t *session_key);
00117 
00119 #ifdef __cplusplus
00120 }
00121 #endif
00122 
00123 #endif                          /* OXS_DERIVATION_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/rampart__error_8h-source.html0000644000076500007650000001365211202454500024231 0ustar shankarshankar Rampart/C: rampart_error.h Source File

rampart_error.h

Go to the documentation of this file.
00001 /*
00002  * Copyright 2004,2005 The Apache Software Foundation.
00003  *
00004  * Licensed under the Apache License, Version 2.0 (the "License")
00005  * you may not use this file except in compliance with the License.
00006  * You may obtain a copy of the License at
00007  *
00008  *      http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  * Unless required by applicable law or agreed to in writing, software
00011  * distributed under the License is distributed on an "AS IS" BASIS,
00012  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  * See the License for the specific language governing permissions and
00014  * limitations under the License.
00015  */
00016  
00017 #ifndef RAMPART_ERROR_H
00018 #define RAMPART_ERROR_H
00019 
00020 #include <axutil_error.h>
00021 
00022 #ifdef __cplusplus
00023 extern "C"
00024 {
00025 #endif
00026 
00042     enum rampart_error_codes
00043     { 
00044         /* No error */
00045         RAMPART_ERROR_NONE = RAMPART_ERROR_CODES_START,
00046         RAMPART_ERROR_UNSUPPORTED_SECURITY_TOKEN,
00047         RAMPART_ERROR_INVALID_SECURITY,
00048         RAMPART_ERROR_INVALID_SECURITY_TOKEN,
00049         RAMPART_ERROR_FAILED_AUTHENTICATION,
00050         RAMPART_ERROR_FAILED_CHECK,
00051         RAMPART_ERROR_SECURITY_TOKEN_UNAVAILABLE,
00052         RAMPART_ERROR_RAMPART_ERROR_LAST,
00053         RAMPART_ERROR_IN_TIMESTAMP,
00054         RAMPART_ERROR_IN_USERNAMETOKEN ,
00055         RAMPART_ERROR_IN_ENCRYPTED_KEY  ,
00056         RAMPART_ERROR_IN_ENCRYPTED_DATA ,
00057         RAMPART_ERROR_IN_SIGNATURE ,
00058         RAMPART_ERROR_MSG_REPLAYED ,
00059         RAMPART_ERROR_IN_POLICY ,
00060         RAMPART_ERROR_LAST
00061     };
00062       
00063     typedef enum rampart_error_codes rampart_error_codes_t;
00064 
00071 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00072 rampart_error_init();
00073 
00075 #ifdef __cplusplus
00076 }
00077 #endif
00078  
00079 #endif /*RAMPART_ERROR_H*/

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__oxs__token.html0000644000076500007650000031124711202454500023042 0ustar shankarshankar Rampart/C: OMXMLSecurity Tokens

OMXMLSecurity Tokens
[OMXMLSecurity]


Functions

AXIS2_EXTERN axiom_node_t * oxs_token_build_binary_security_token_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *id, axis2_char_t *encoding_type, axis2_char_t *value_type, axis2_char_t *data)
AXIS2_EXTERN axiom_node_t * oxs_token_build_c14n_method_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *algorithm)
AXIS2_EXTERN axis2_char_t * oxs_token_get_c14n_method (const axutil_env_t *env, axiom_node_t *c14n_mtd_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_cipher_data_element (const axutil_env_t *env, axiom_node_t *parent)
AXIS2_EXTERN axis2_char_t * oxs_token_get_cipher_value_from_cipher_data (const axutil_env_t *env, axiom_node_t *cd_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_cipher_value_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *cipher_val)
AXIS2_EXTERN axis2_char_t * oxs_token_get_cipher_value (const axutil_env_t *env, axiom_node_t *cv_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_data_reference_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *data_ref)
AXIS2_EXTERN axis2_char_t * oxs_token_get_data_reference (const axutil_env_t *env, axiom_node_t *data_ref_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_digest_method_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *algorithm)
AXIS2_EXTERN axis2_char_t * oxs_token_get_digest_method (const axutil_env_t *env, axiom_node_t *enc_mtd_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_digest_value_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *digest_val)
AXIS2_EXTERN axis2_char_t * oxs_token_get_digest_value (const axutil_env_t *env, axiom_node_t *sv_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_ds_reference_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *id, axis2_char_t *uri, axis2_char_t *type)
AXIS2_EXTERN axis2_char_t * oxs_token_get_ds_reference (const axutil_env_t *env, axiom_node_t *ref_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_embedded_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *id)
AXIS2_EXTERN axis2_char_t * oxs_token_get_embedded_id (const axutil_env_t *env, axiom_node_t *embedded_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_encrypted_data_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *type_attribute, axis2_char_t *id)
AXIS2_EXTERN axiom_node_t * oxs_token_build_encrypted_key_element (const axutil_env_t *env, axiom_node_t *parent)
AXIS2_EXTERN axiom_node_t * oxs_token_get_encrypted_key_node (const axutil_env_t *env, axiom_node_t *parent)
AXIS2_EXTERN axiom_node_t * oxs_token_build_encryption_method_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *algorithm)
AXIS2_EXTERN axis2_char_t * oxs_token_get_encryption_method (const axutil_env_t *env, axiom_node_t *enc_mtd_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_key_identifier_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *encoding_type, axis2_char_t *value_type, axis2_char_t *value)
AXIS2_EXTERN axiom_node_t * oxs_token_build_key_info_element (const axutil_env_t *env, axiom_node_t *parent)
AXIS2_EXTERN axiom_node_t * oxs_token_build_key_name_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *key_name_val)
AXIS2_EXTERN axiom_node_t * oxs_token_build_reference_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *ref, axis2_char_t *value_type)
AXIS2_EXTERN axis2_char_t * oxs_token_get_reference (const axutil_env_t *env, axiom_node_t *ref_node)
AXIS2_EXTERN axis2_char_t * oxs_token_get_reference_value_type (const axutil_env_t *env, axiom_node_t *ref_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_reference_list_element (const axutil_env_t *env, axiom_node_t *parent)
AXIS2_EXTERN axiom_node_t * oxs_token_build_data_reference_list (const axutil_env_t *env, axiom_node_t *parent, axutil_array_list_t *id_list)
AXIS2_EXTERN axutil_array_list_t * oxs_token_get_reference_list_data (const axutil_env_t *env, axiom_node_t *ref_list_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_security_token_reference_element (const axutil_env_t *env, axiom_node_t *parent)
AXIS2_EXTERN axiom_node_t * oxs_token_build_signature_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *id)
AXIS2_EXTERN axiom_node_t * oxs_token_build_enc_header_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *id)
AXIS2_EXTERN axiom_node_t * oxs_token_build_signature_method_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *algorithm)
AXIS2_EXTERN axis2_char_t * oxs_token_get_signature_method (const axutil_env_t *env, axiom_node_t *enc_mtd_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_signature_value_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *signature_val)
AXIS2_EXTERN axis2_char_t * oxs_token_get_signature_value (const axutil_env_t *env, axiom_node_t *sv_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_signed_info_element (const axutil_env_t *env, axiom_node_t *parent)
AXIS2_EXTERN axiom_node_t * oxs_token_build_transform_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *algorithm)
AXIS2_EXTERN axis2_char_t * oxs_token_get_transform (const axutil_env_t *env, axiom_node_t *transform_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_transforms_element (const axutil_env_t *env, axiom_node_t *parent)
AXIS2_EXTERN axiom_node_t * oxs_token_build_x509_certificate_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *cert_data)
AXIS2_EXTERN axis2_char_t * oxs_token_get_x509_certificate (const axutil_env_t *env, axiom_node_t *sv_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_x509_data_element (const axutil_env_t *env, axiom_node_t *parent)
AXIS2_EXTERN axiom_node_t * oxs_token_build_issuer_name_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *value)
AXIS2_EXTERN axis2_char_t * oxs_token_get_issuer_name (const axutil_env_t *env, axiom_node_t *issuer_name_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_x509_issuer_serial_element (const axutil_env_t *env, axiom_node_t *parent)
AXIS2_EXTERN axiom_node_t * oxs_token_build_x509_issuer_serial_with_data (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *issuer_name, axis2_char_t *serial_number)
AXIS2_EXTERN axiom_node_t * oxs_token_build_serial_number_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *value)
AXIS2_EXTERN axis2_char_t * oxs_token_get_serial_number (const axutil_env_t *env, axiom_node_t *serial_number_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_signature_confirmation_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *id, axis2_char_t *val)
AXIS2_EXTERN axis2_char_t * oxs_token_get_signature_confirmation_value (const axutil_env_t *env, axiom_node_t *signature_confirmation_node)
AXIS2_EXTERN axis2_char_t * oxs_token_get_signature_confirmation_id (const axutil_env_t *env, axiom_node_t *signature_confirmation_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_derived_key_token_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *id, axis2_char_t *algo, axis2_char_t *wsc_ns_uri)
AXIS2_EXTERN axiom_node_t * oxs_token_build_length_element (const axutil_env_t *env, axiom_node_t *parent, int length, axis2_char_t *wsc_ns_uri)
AXIS2_EXTERN int oxs_token_get_length_value (const axutil_env_t *env, axiom_node_t *length_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_offset_element (const axutil_env_t *env, axiom_node_t *parent, int offset, axis2_char_t *wsc_ns_uri)
AXIS2_EXTERN int oxs_token_get_offset_value (const axutil_env_t *env, axiom_node_t *offset_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_nonce_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *nonce_val, axis2_char_t *wsc_ns_uri)
AXIS2_EXTERN axis2_char_t * oxs_token_get_nonce_value (const axutil_env_t *env, axiom_node_t *nonce_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_label_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *label, axis2_char_t *wsc_ns_uri)
AXIS2_EXTERN axis2_char_t * oxs_token_get_label_value (const axutil_env_t *env, axiom_node_t *label_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_properties_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *properties_val, axis2_char_t *wsc_ns_uri)
AXIS2_EXTERN axis2_char_t * oxs_token_get_properties_value (const axutil_env_t *env, axiom_node_t *properties_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_generation_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *generation_val, axis2_char_t *wsc_ns_uri)
AXIS2_EXTERN axis2_char_t * oxs_token_get_generation_value (const axutil_env_t *env, axiom_node_t *generation_node)

Function Documentation

AXIS2_EXTERN axiom_node_t* oxs_token_build_binary_security_token_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  id,
axis2_char_t *  encoding_type,
axis2_char_t *  value_type,
axis2_char_t *  data 
)

Creates <wsse:BinarySecurityToken> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_c14n_method_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  algorithm 
)

Creates <ds:CanonicalizationMethod> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_cipher_data_element ( const axutil_env_t *  env,
axiom_node_t *  parent 
)

Creates <xenc:CipherData> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_cipher_value_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  cipher_val 
)

Creates <xenc:CipherValue> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_data_reference_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  data_ref 
)

Creates <xenc:DataReference> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_data_reference_list ( const axutil_env_t *  env,
axiom_node_t *  parent,
axutil_array_list_t *  id_list 
)

Creates <xenc:DataReference> elements under <xenc:ReferenceList> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_derived_key_token_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  id,
axis2_char_t *  algo,
axis2_char_t *  wsc_ns_uri 
)

Creates <wsc:DerivedKeyToken> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_digest_method_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  algorithm 
)

Creates <ds:DigestMethod> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_digest_value_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  digest_val 
)

Creates <ds:DigestValue> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_ds_reference_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  id,
axis2_char_t *  uri,
axis2_char_t *  type 
)

Creates <ds:Reference> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_embedded_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  id 
)

Creates <wsse:Embedded> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_enc_header_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  id 
)

Creates <wss11:EncryptedHeader> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_encrypted_data_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  type_attribute,
axis2_char_t *  id 
)

Creates <xenc:EncryptedData> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_encrypted_key_element ( const axutil_env_t *  env,
axiom_node_t *  parent 
)

Creates <xenc:EncryptedKey> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_encryption_method_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  algorithm 
)

Creates <xenc:EncryptionMethod> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_generation_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  generation_val,
axis2_char_t *  wsc_ns_uri 
)

Creates <wsc:Generation> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_issuer_name_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  value 
)

Creates <ds:X509IssuerName> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_key_identifier_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  encoding_type,
axis2_char_t *  value_type,
axis2_char_t *  value 
)

Creates <wsse:KeyIdentifier> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_key_info_element ( const axutil_env_t *  env,
axiom_node_t *  parent 
)

Creates <ds:KeyInfo> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_key_name_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  key_name_val 
)

Creates <ds:KeyName> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_label_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  label,
axis2_char_t *  wsc_ns_uri 
)

Creates <wsc:Label> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_length_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
int  length,
axis2_char_t *  wsc_ns_uri 
)

Creates <wsc:Length> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_nonce_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  nonce_val,
axis2_char_t *  wsc_ns_uri 
)

Creates <wsc:Nonce> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_offset_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
int  offset,
axis2_char_t *  wsc_ns_uri 
)

Creates <wsc:Offset> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_properties_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  properties_val,
axis2_char_t *  wsc_ns_uri 
)

Creates <wsc:Properties> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_reference_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  ref,
axis2_char_t *  value_type 
)

Creates <wsse:Reference> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_reference_list_element ( const axutil_env_t *  env,
axiom_node_t *  parent 
)

Creates <xenc:ReferenceList> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_security_token_reference_element ( const axutil_env_t *  env,
axiom_node_t *  parent 
)

Creates <wsse:SecurityTokenReference> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_serial_number_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  value 
)

Creates <ds:X509SerialNumber> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_signature_confirmation_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  id,
axis2_char_t *  val 
)

Creates <wsse11:SignatureConfirmation> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_signature_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  id 
)

Creates <ds:Signature> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_signature_method_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  algorithm 
)

Creates <ds:SignatureMethod> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_signature_value_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  signature_val 
)

Creates <ds:SignatureValue> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_signed_info_element ( const axutil_env_t *  env,
axiom_node_t *  parent 
)

Creates <ds:SignedInfo> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_transform_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  algorithm 
)

Creates <ds:Transform> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_transforms_element ( const axutil_env_t *  env,
axiom_node_t *  parent 
)

Creates <ds:Transforms> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_x509_certificate_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  cert_data 
)

Creates <ds:X509Certificate> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_x509_data_element ( const axutil_env_t *  env,
axiom_node_t *  parent 
)

Creates <ds:X509Data> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_x509_issuer_serial_element ( const axutil_env_t *  env,
axiom_node_t *  parent 
)

Creates <ds:X509IssuerSerial> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_x509_issuer_serial_with_data ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  issuer_name,
axis2_char_t *  serial_number 
)

Creates <ds:X509IssuerSerial> element with issuer name and serial number

AXIS2_EXTERN axis2_char_t* oxs_token_get_c14n_method ( const axutil_env_t *  env,
axiom_node_t *  c14n_mtd_node 
)

Gets algorithm from <ds:CanonicalizationMethod> element

AXIS2_EXTERN axis2_char_t* oxs_token_get_cipher_value ( const axutil_env_t *  env,
axiom_node_t *  cv_node 
)

Gets value from <xenc:CipherValue> element

AXIS2_EXTERN axis2_char_t* oxs_token_get_cipher_value_from_cipher_data ( const axutil_env_t *  env,
axiom_node_t *  cd_node 
)

Gets cipher value from <xenc:CipherData> element

AXIS2_EXTERN axis2_char_t* oxs_token_get_data_reference ( const axutil_env_t *  env,
axiom_node_t *  data_ref_node 
)

Gets URI reference from <xenc:DataReference> element

AXIS2_EXTERN axis2_char_t* oxs_token_get_digest_method ( const axutil_env_t *  env,
axiom_node_t *  enc_mtd_node 
)

Gets the algorithm from <ds:DigestMethod> element

AXIS2_EXTERN axis2_char_t* oxs_token_get_digest_value ( const axutil_env_t *  env,
axiom_node_t *  sv_node 
)

Gets the value from <ds:DigestValue> element

AXIS2_EXTERN axis2_char_t* oxs_token_get_ds_reference ( const axutil_env_t *  env,
axiom_node_t *  ref_node 
)

Gets URI reference from <ds:Reference> element

AXIS2_EXTERN axis2_char_t* oxs_token_get_embedded_id ( const axutil_env_t *  env,
axiom_node_t *  embedded_node 
)

Gets id from <wsse:Embedded> element

AXIS2_EXTERN axis2_char_t* oxs_token_get_encryption_method ( const axutil_env_t *  env,
axiom_node_t *  enc_mtd_node 
)

Gets algorithm from <xenc:EncryptionMethod> element

AXIS2_EXTERN axis2_char_t* oxs_token_get_generation_value ( const axutil_env_t *  env,
axiom_node_t *  generation_node 
)

Gets value from <wsc:Generation> element

AXIS2_EXTERN axis2_char_t* oxs_token_get_issuer_name ( const axutil_env_t *  env,
axiom_node_t *  issuer_name_node 
)

Gets issuer name from <ds:X509IssuerName> element

AXIS2_EXTERN axis2_char_t* oxs_token_get_label_value ( const axutil_env_t *  env,
axiom_node_t *  label_node 
)

Gets value from <wsc:Label> element

AXIS2_EXTERN int oxs_token_get_length_value ( const axutil_env_t *  env,
axiom_node_t *  length_node 
)

Gets value from <wsc:Length> element

AXIS2_EXTERN axis2_char_t* oxs_token_get_nonce_value ( const axutil_env_t *  env,
axiom_node_t *  nonce_node 
)

Gets value from <wsc:Nonce> element

AXIS2_EXTERN int oxs_token_get_offset_value ( const axutil_env_t *  env,
axiom_node_t *  offset_node 
)

Gets value from <wsc:Offset> element

AXIS2_EXTERN axis2_char_t* oxs_token_get_properties_value ( const axutil_env_t *  env,
axiom_node_t *  properties_node 
)

Gets value from <wsc:Properties> element

AXIS2_EXTERN axis2_char_t* oxs_token_get_reference ( const axutil_env_t *  env,
axiom_node_t *  ref_node 
)

Gets URI reference from <wsse:Reference> element

AXIS2_EXTERN axutil_array_list_t* oxs_token_get_reference_list_data ( const axutil_env_t *  env,
axiom_node_t *  ref_list_node 
)

Gets URI references from <xenc:DataReference> elements under <xenc:ReferenceList> element

AXIS2_EXTERN axis2_char_t* oxs_token_get_reference_value_type ( const axutil_env_t *  env,
axiom_node_t *  ref_node 
)

Gets value type from <wsse:Reference> element

AXIS2_EXTERN axis2_char_t* oxs_token_get_serial_number ( const axutil_env_t *  env,
axiom_node_t *  serial_number_node 
)

Gets serial number from <ds:X509SerialNumber> element

AXIS2_EXTERN axis2_char_t* oxs_token_get_signature_confirmation_id ( const axutil_env_t *  env,
axiom_node_t *  signature_confirmation_node 
)

Gets id from <wsse11:SignatureConfirmation> element

AXIS2_EXTERN axis2_char_t* oxs_token_get_signature_confirmation_value ( const axutil_env_t *  env,
axiom_node_t *  signature_confirmation_node 
)

Gets value from <wsse11:SignatureConfirmation> element

AXIS2_EXTERN axis2_char_t* oxs_token_get_signature_method ( const axutil_env_t *  env,
axiom_node_t *  enc_mtd_node 
)

Gets algorithm from <ds:SignatureMethod> element

AXIS2_EXTERN axis2_char_t* oxs_token_get_signature_value ( const axutil_env_t *  env,
axiom_node_t *  sv_node 
)

Gets signature value from <ds:SignatureValue> element

AXIS2_EXTERN axis2_char_t* oxs_token_get_transform ( const axutil_env_t *  env,
axiom_node_t *  transform_node 
)

Gets algorithm from <ds:Transform> element

AXIS2_EXTERN axis2_char_t* oxs_token_get_x509_certificate ( const axutil_env_t *  env,
axiom_node_t *  sv_node 
)

Gets data from <ds:X509Certificate> element


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/rampart__issued__token_8h-source.html0000644000076500007650000001577511202454500025743 0ustar shankarshankar Rampart/C: rampart_issued_token.h Source File

rampart_issued_token.h

00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  */
00016 
00017 #ifndef RAMPART_ISSUED_TOKEN_H
00018 #define RAMPART_ISSUED_TOKEN_H
00019 
00020 #include <rp_property.h>
00021 #include <rp_includes.h>
00022 #include <rp_secpolicy.h>
00023 #include <axutil_property.h>
00024 #include <axis2_key_type.h>
00025 #include <axis2_msg_ctx.h>
00026 #include <axutil_array_list.h>
00027 #include <axiom.h>
00028 
00029 #ifdef __cplusplus
00030 extern "C"
00031 {
00032 #endif
00033 
00034         typedef struct rampart_issued_token_t rampart_issued_token_t;
00035 
00036         typedef rampart_issued_token_t *(AXIS2_CALL * issued_token_callback_func)(
00037                 const axutil_env_t *env,
00038                 rp_property_t *issued_token,
00039         void *ctx);
00048         AXIS2_EXTERN rampart_issued_token_t * AXIS2_CALL
00049         rampart_issued_token_create(
00050                 const axutil_env_t *env);
00051 
00060         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00061         rampart_issued_token_free(
00062                 rampart_issued_token_t *token, 
00063                 const axutil_env_t *env);
00064 
00075         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00076         rampart_issued_token_set_token(
00077                 rampart_issued_token_t *issued_token, 
00078                 const axutil_env_t *env, void *token, 
00079                 rp_property_type_t token_type);
00088         AXIS2_EXTERN rp_property_type_t AXIS2_CALL
00089         rampart_issued_token_get_token_type(
00090                 rampart_issued_token_t *token, 
00091                 const axutil_env_t *env);
00092 
00101         AXIS2_EXTERN void * AXIS2_CALL
00102         rampart_issued_token_get_token(
00103                 rampart_issued_token_t *token, 
00104                 const axutil_env_t *env);
00105 
00106 #ifdef __cplusplus
00107 }
00108 #endif
00109 
00110 #endif
00111 

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__oxs__error.html0000644000076500007650000002342311202454500023047 0ustar shankarshankar Rampart/C: Error

Error
[OMXMLSecurity]


Classes

struct  _oxs_error_description

Defines

#define FUNCTION_NAME   __FUNCTION__
#define LINE_NUMBER   __LINE__
#define FILE_NAME   __FILE__
#define OXS_ERROR_LOCATION   FILE_NAME,LINE_NUMBER,FUNCTION_NAME
#define OXS_ERROR_DEFAULT   0
#define OXS_ERROR_ENCRYPT_FAILED   1
#define OXS_ERROR_DECRYPT_FAILED   2
#define OXS_ERROR_INVALID_DATA   3
#define OXS_ERROR_INVALID_SIZE   4
#define OXS_ERROR_INVALID_FORMAT   5
#define OXS_ERROR_ELEMENT_FAILED   6
#define OXS_ERROR_UNSUPPORTED_ALGO   7
#define OXS_ERROR_CREATION_FAILED   8
#define OXS_ERROR_INITIALIZATION_FAILED   9
#define OXS_ERROR_DATA_CONV_FAILED   10
#define OXS_ERROR_OPENSSL_FUNC_FAILED   11
#define OXS_ERROR_TRANSFORM_FAILED   12
#define OXS_ERROR_SIGN_FAILED   13
#define OXS_ERROR_SIG_VERIFICATION_FAILED   14
#define OXS_ERROR_KEY_DERIVATION_FAILED   15

Typedefs

typedef struct
_oxs_error_description 
oxs_error_description
typedef struct
_oxs_error_description
oxs_error_description_ptr

Variables

const char * _oxs_error_description::message

Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/globals_0x74.html0000644000076500007650000002036511202454500021522 0ustar shankarshankar Rampart/C: Class Members
Here is a list of all documented file members with links to the documentation:

- t -


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/oxs__xml__signature_8h-source.html0000644000076500007650000002006111202454500025253 0ustar shankarshankar Rampart/C: oxs_xml_signature.h Source File

oxs_xml_signature.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef OXS_XML_SIGNATURE_H
00019 #define OXS_XML_SIGNATURE_H
00020 
00021 
00031 #include <axis2_defines.h>
00032 #include <oxs_ctx.h>
00033 #include <axutil_env.h>
00034 #include <axiom_node.h>
00035 #include <axiom_element.h>
00036 #include <axutil_qname.h>
00037 #include <oxs_sign_ctx.h>
00038 #include <oxs_sign_part.h>
00039 
00040 #ifdef __cplusplus
00041 extern "C"
00042 {
00043 #endif
00044 
00052     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00053     oxs_xml_sig_sign(const axutil_env_t *env,
00054                      oxs_sign_ctx_t *sign_ctx,
00055                      axiom_node_t *parent,
00056                      axiom_node_t **sig_node);
00057 
00066     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00067     oxs_xml_sig_verify(const axutil_env_t *env,
00068                        oxs_sign_ctx_t *sign_ctx,
00069                        axiom_node_t *signature_node,
00070                        axiom_node_t *scope_node);
00071 
00079     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00080     oxs_xml_sig_verify_sign_part(const axutil_env_t *env,
00081                                  oxs_sign_part_t *sign_part);
00082 
00089     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00090     oxs_xml_sig_verify_digests(const axutil_env_t *env,
00091                                oxs_sign_ctx_t *sign_ctx);
00092 
00093 
00102     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00103     oxs_xml_sig_process_ref_node(const axutil_env_t *env,
00104                                  oxs_sign_part_t *sign_part,
00105                                  axiom_node_t *ref_node,
00106                                  axiom_node_t *scope_node);
00107 
00116     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00117     oxs_xml_sig_process_signature_node(const axutil_env_t *env,
00118                                        oxs_sign_ctx_t *sign_ctx,
00119                                        axiom_node_t *signature_node,
00120                                        axiom_node_t *scope_node);
00122 #ifdef __cplusplus
00123 }
00124 #endif
00125 
00126 #endif                          /* OXS_XML_SIGNATURE_H */

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/rampart__username__token_8h.html0000644000076500007650000000563111202454500024756 0ustar shankarshankar Rampart/C: rampart_username_token.h File Reference

rampart_username_token.h File Reference

The Usernametoken. More...

#include <axutil_env.h>
#include <rampart_context.h>

Go to the source code of this file.

Functions

axis2_status_t rampart_username_token_build (const axutil_env_t *env, rampart_context_t *rampart_context, axiom_node_t *sec_node, axiom_namespace_t *sec_ns_obj)
axis2_status_t rampart_username_token_validate (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axiom_node_t *ut_node, rampart_context_t *rampart_context)


Detailed Description

The Usernametoken.


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/rampart__signature_8h-source.html0000644000076500007650000001356411202454500025103 0ustar shankarshankar Rampart/C: rampart_signature.h Source File

rampart_signature.h

Go to the documentation of this file.
00001 /*
00002  *   Copyright 2003-2004 The Apache Software Foundation.
00003  *
00004  *   Licensed under the Apache License, Version 2.0 (the "License");
00005  *   you may not use this file except in compliance with the License.
00006  *   You may obtain a copy of the License at
00007  *
00008  *       http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  *   Unless required by applicable law or agreed to in writing, software
00011  *   distributed under the License is distributed on an "AS IS" BASIS,
00012  *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  *   See the License for the specific language governing permissions and
00014  *   limitations under the License.
00015  */
00016 
00017 #include <axutil_utils_defines.h>
00018 #include <axis2_defines.h>
00019 #include <axutil_env.h>
00020 #include <axiom_soap.h>
00021 #include <axis2_msg_ctx.h>
00022 #include <rampart_context.h>
00034 #ifndef RAMPART_SIGNATURE_H
00035 #define RAMPART_SIGNATURE_H
00036 
00037 #ifdef __cplusplus
00038 extern "C" {
00039 #endif
00040 
00048     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00049     rampart_sig_confirm_signature(const axutil_env_t *env,
00050                              axis2_msg_ctx_t *msg_ctx,
00051                              rampart_context_t *rampart_context,
00052                              axiom_node_t *sec_node);
00053                 
00063     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00064     rampart_sig_sign_message(const axutil_env_t *env,
00065                              axis2_msg_ctx_t *msg_ctx,
00066                              rampart_context_t *rampart_context,
00067                              axiom_soap_envelope_t *soap_envelope,
00068                              axiom_node_t *sec_node, 
00069                              axutil_array_list_t *sign_parts_list);
00070 
00071 
00072 
00073     /* @} */
00074 #ifdef __cplusplus
00075 }
00076 #endif
00077 
00078 #endif    /* !RAMPART_SIGNATURE_H */

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__sct__provider.html0000644000076500007650000010302311202454500023523 0ustar shankarshankar Rampart/C: Security Context Token provider

Security Context Token provider
[Rampart Utilities]


Classes

struct  rampart_sct_provider_ops
struct  rampart_sct_provider

Defines

#define RAMPART_SCT_PROVIDER_FREE(sct_provider, env)   ((sct_provider)->ops->free(sct_provider, env))

Typedefs

typedef struct
rampart_sct_provider_ops 
rampart_sct_provider_ops_t
typedef struct rampart_sct_provider rampart_sct_provider_t

Functions

AXIS2_EXTERN oxs_buffer_tsct_provider_get_secret (const axutil_env_t *env, rp_property_t *token, axis2_bool_t is_encryption, rampart_context_t *rampart_context, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN oxs_buffer_tsct_provider_get_secret_using_id (const axutil_env_t *env, axis2_char_t *sct_id, rampart_context_t *rampart_context, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN axiom_node_t * sct_provider_get_token (const axutil_env_t *env, rp_property_t *token, axis2_bool_t is_encryption, rampart_context_t *rampart_context, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN axiom_node_t * sct_provider_get_attached_reference (const axutil_env_t *env, rp_property_t *token, axis2_bool_t is_encryption, rampart_context_t *rampart_context, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN axiom_node_t * sct_provider_get_unattached_reference (const axutil_env_t *env, rp_property_t *token, axis2_bool_t is_encryption, rampart_context_t *rampart_context, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN axis2_status_t sct_provider_validate_security_context_token (const axutil_env_t *env, axiom_node_t *sct_node, rampart_context_t *rampart_context, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN void * sct_provider_obtain_sct_default (const axutil_env_t *env, axis2_bool_t is_encryption, axis2_msg_ctx_t *msg_ctx, axis2_char_t *sct_id, int sct_id_type, void *user_params)
AXIS2_EXTERN axis2_status_t sct_provider_store_sct_default (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axis2_char_t *sct_global_id, axis2_char_t *sct_local_id, void *sct, void *user_params)
AXIS2_EXTERN axis2_status_t sct_provider_delete_sct_default (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axis2_char_t *sct_id, int sct_id_type, void *user_params)
AXIS2_EXTERN axis2_status_t sct_provider_validate_sct_default (const axutil_env_t *env, axiom_node_t *sct_node, axis2_msg_ctx_t *msg_ctx, void *user_params)

Function Documentation

AXIS2_EXTERN axis2_status_t sct_provider_delete_sct_default ( const axutil_env_t *  env,
axis2_msg_ctx_t *  msg_ctx,
axis2_char_t *  sct_id,
int  sct_id_type,
void *  user_params 
)

Default implementation of delete sct function. If neither sct_provider nor user defined store function is given, this function will be used. (delete_security_context_token_fn)

Parameters:
env pointer to environment struct
msg_ctx pointer to message context structure
sct_id identifier of security context token. Should not be NULL.
sct_id_type type of sct id. can be global or local.
user_params parameter provided by user (not used in this method)
Returns:
AXIS2_SUCCESS if deleted. AXIS2_FAILURE otherwise.

AXIS2_EXTERN axiom_node_t* sct_provider_get_attached_reference ( const axutil_env_t *  env,
rp_property_t *  token,
axis2_bool_t  is_encryption,
rampart_context_t *  rampart_context,
axis2_msg_ctx_t *  msg_ctx 
)

Finds security context token and gets the xml representation of key reference. This reference is used when security context token is included in the message

Parameters:
env Pointer to environment struct
token rampart policy property of the token
is_encryption boolean showing whether the token is needed for encryption or signature
rampart_context pointer to rampart context structure
msg_ctx pointer to message context structure
Returns:
shared secret of the security context token. returned buffer should NOT be freed

AXIS2_EXTERN oxs_buffer_t* sct_provider_get_secret ( const axutil_env_t *  env,
rp_property_t *  token,
axis2_bool_t  is_encryption,
rampart_context_t *  rampart_context,
axis2_msg_ctx_t *  msg_ctx 
)

Finds security context token and gets shared secret. returned buffer should NOT be cleared by the caller

Parameters:
env Pointer to environment struct
token rampart policy property of the token
is_encryption boolean showing whether the token is needed for encryption or signature
rampart_context pointer to rampart context structure
msg_ctx pointer to message context structure
Returns:
shared secret of the security context token. returned buffer should NOT be freed

AXIS2_EXTERN oxs_buffer_t* sct_provider_get_secret_using_id ( const axutil_env_t *  env,
axis2_char_t *  sct_id,
rampart_context_t *  rampart_context,
axis2_msg_ctx_t *  msg_ctx 
)

Finds security context token and gets shared secret. returned buffer should NOT be cleared by the caller

Parameters:
env Pointer to environment struct
sct_id id of security context token
rampart_context pointer to rampart context structure
msg_ctx pointer to message context structure
Returns:
shared secret of the security context token. returned buffer should NOT be freed

AXIS2_EXTERN axiom_node_t* sct_provider_get_token ( const axutil_env_t *  env,
rp_property_t *  token,
axis2_bool_t  is_encryption,
rampart_context_t *  rampart_context,
axis2_msg_ctx_t *  msg_ctx 
)

Finds security context token and gets the xml representation of token

Parameters:
env Pointer to environment struct
token rampart policy property of the token
is_encryption boolean showing whether the token is needed for encryption or signature
rampart_context pointer to rampart context structure
msg_ctx pointer to message context structure
Returns:
shared secret of the security context token. returned buffer should NOT be freed

AXIS2_EXTERN axiom_node_t* sct_provider_get_unattached_reference ( const axutil_env_t *  env,
rp_property_t *  token,
axis2_bool_t  is_encryption,
rampart_context_t *  rampart_context,
axis2_msg_ctx_t *  msg_ctx 
)

Finds security context token and gets the xml representation of key reference. This reference is used when security context token is NOT included in the message

Parameters:
env Pointer to environment struct
token rampart policy property of the token
is_encryption boolean showing whether the token is needed for encryption or signature
rampart_context pointer to rampart context structure
msg_ctx pointer to message context structure
Returns:
shared secret of the security context token. returned buffer should NOT be freed

AXIS2_EXTERN void* sct_provider_obtain_sct_default ( const axutil_env_t *  env,
axis2_bool_t  is_encryption,
axis2_msg_ctx_t *  msg_ctx,
axis2_char_t *  sct_id,
int  sct_id_type,
void *  user_params 
)

Default implementation of obtain sct function. If neither sct_provider nor user defined obtain function is given, this function will be used. (obtain_security_context_token_fn)

Parameters:
env pointer to environment struct
is_encryption boolean denotes sct is needed for encryption or signature
msg_ctx pointer to message context structure
sct_id identifier of security context token. Can be NULL
sct_id_type type of sct id. can be global, local or unknown
user_params parameter provided by user (not used in this method) return security context token if found. NULL otherwise.

AXIS2_EXTERN axis2_status_t sct_provider_store_sct_default ( const axutil_env_t *  env,
axis2_msg_ctx_t *  msg_ctx,
axis2_char_t *  sct_global_id,
axis2_char_t *  sct_local_id,
void *  sct,
void *  user_params 
)

Default implementation of store sct function. If neither sct_provider nor user defined store function is given, this function will be used. (store_security_context_token_fn)

Parameters:
env pointer to environment struct
msg_ctx pointer to message context structure
sct_global_id global identifier of security context token. Can be NULL
sct_local_id local identifier of security context token. Can be NULL
sct security context token to be stored
user_params parameter provided by user (not used in this method) return AXIS2_SUCCESS if stored. AXIS2_FAILURE otherwise.

AXIS2_EXTERN axis2_status_t sct_provider_validate_sct_default ( const axutil_env_t *  env,
axiom_node_t *  sct_node,
axis2_msg_ctx_t *  msg_ctx,
void *  user_params 
)

Default implementation of validate sct function. If neither sct_provider nor user defined store function is given, this function will be used. (validate_security_context_token_fn)

Parameters:
env pointer to environment struct
sct_node axiom representation of security context token
user_params parameter provided by user (not used in this method)
Returns:
AXIS2_SUCCESS if valid. AXIS2_FAILURE otherwise.

AXIS2_EXTERN axis2_status_t sct_provider_validate_security_context_token ( const axutil_env_t *  env,
axiom_node_t *  sct_node,
rampart_context_t *  rampart_context,
axis2_msg_ctx_t *  msg_ctx 
)

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.

Parameters:
env Pointer to environment struct
sct_node axiom node representation of security context token.
rampart_context pointer to rampart context structure
msg_ctx pointer to message context structure
Returns:
AXIS2_TRUE is sct is valid. AXIS2_FALSE otherwise.


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/rampart__token__builder_8h-source.html0000644000076500007650000002243611202454500026065 0ustar shankarshankar Rampart/C: rampart_token_builder.h Source File

rampart_token_builder.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #include <axutil_utils_defines.h>
00019 #include <axis2_defines.h>
00020 #include <axutil_env.h>
00021 #include <oxs_x509_cert.h>
00033 #ifndef RAMPART_TOKEN_BUILDER_H
00034 #define RAMPART_TOKEN_BUILDER_H
00035 
00036 #ifdef __cplusplus
00037 extern "C" {
00038 #endif
00039 
00040     typedef enum {
00041         RTBP_UNKNOWN = 0,
00042         RTBP_EMBEDDED,
00043         RTBP_KEY_IDENTIFIER,
00044         RTBP_X509DATA_ISSUER_SERIAL,
00045         RTBP_X509DATA_X509CERTIFICATE,
00046         RTBP_THUMBPRINT
00047     } rampart_token_build_pattern_t;
00048 
00060     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00061     rampart_token_build_security_token_reference(
00062         const axutil_env_t *env,
00063         axiom_node_t *parent,
00064         oxs_x509_cert_t *cert,
00065         rampart_token_build_pattern_t pattern);
00066 
00079     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00080     rampart_token_build_embedded(
00081         const axutil_env_t *env,
00082         axiom_node_t *parent,
00083         oxs_x509_cert_t *cert);
00084 
00095     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00096     rampart_token_build_key_identifier(
00097         const axutil_env_t *env,
00098         axiom_node_t *parent,
00099         oxs_x509_cert_t *cert);
00100     
00101     /*
00102      * Build an X509Certificate token with data available in the certificate.
00103      *        <SecurityTokenReference>
00104      *          <ds:X509Data>
00105      *              <ds:X509Certificate>
00106      *                  MIICzjCCAjegAwIBAgIJANyD+jwekxGuMA......
00107      *              </ds:X509Certificate>
00108      *          <ds:X509Data>
00109      *        </SecurityTokenReference>
00110      * @param env pointer to environment struct
00111      * @param parent The parent node
00112      * @param cert The X509 certificate
00113      * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
00114      */
00115     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00116     rampart_token_build_x509_data_x509_certificate(
00117         const axutil_env_t *env,
00118         axiom_node_t *parent,
00119         oxs_x509_cert_t *cert);
00120 
00136     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00137     rampart_token_build_x509_data_issuer_serial(
00138         const axutil_env_t *env,
00139         axiom_node_t *parent,
00140         oxs_x509_cert_t *cert);
00141 
00154     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00155     rampart_token_build_thumbprint_reference(
00156         const axutil_env_t *env,
00157         axiom_node_t *parent,
00158         oxs_x509_cert_t *cert);
00159 
00160 
00161     /* @} */
00162 #ifdef __cplusplus
00163 }
00164 #endif
00165 
00166 #endif    /* !RAMPART_TOKEN_BUILDER_H */
00167 
00168 

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/openssl__sign_8h-source.html0000644000076500007650000001407011202454500024050 0ustar shankarshankar Rampart/C: openssl_sign.h Source File

openssl_sign.h

Go to the documentation of this file.
00001 /*
00002  *   Copyright 2003-2004 The Apache Software Foundation.
00003  *
00004  *   Licensed under the Apache License, Version 2.0 (the "License");
00005  *   you may not use this file except in compliance with the License.
00006  *   You may obtain a copy of the License at
00007  *
00008  *       http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  *   Unless required by applicable law or agreed to in writing, software
00011  *   distributed under the License is distributed on an "AS IS" BASIS,
00012  *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  *   See the License for the specific language governing permissions and
00014  *   limitations under the License.
00015  */
00016 
00017 #include <openssl/evp.h>
00018 #include <openssl_cipher_ctx.h>
00019 #include <openssl_constants.h>
00020 #include <oxs_sign_ctx.h>
00021 #include <axis2_util.h>
00022 
00027 #ifndef OPENSSL_SIGN_H
00028 #define OPENSSL_SIGN_H
00029 
00030 #ifdef __cplusplus
00031 extern "C" {
00032 #endif
00033 
00042     AXIS2_EXTERN int AXIS2_CALL
00043     openssl_sig_sign(const axutil_env_t *env,
00044                      openssl_pkey_t *prvkey,
00045                      oxs_buffer_t *input_buf,
00046                      oxs_buffer_t *output_buf);
00052     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00053     openssl_sig_verify(const axutil_env_t *env,
00054                        openssl_pkey_t *pubkey,
00055                        oxs_buffer_t *input_buf,
00056                        oxs_buffer_t *sig_buf);
00058 #ifdef __cplusplus
00059 }
00060 #endif
00061 
00062 #endif    /* OPENSSL_SIGN_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/globals_func_0x74.html0000644000076500007650000002030111202454500022523 0ustar shankarshankar Rampart/C: Class Members
 

- t -


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/modules.html0000644000076500007650000001342111202454500020760 0ustar shankarshankar Rampart/C: Module Index
Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/openssl__digest_8h-source.html0000644000076500007650000001176711202454500024401 0ustar shankarshankar Rampart/C: openssl_digest.h Source File

openssl_digest.h

Go to the documentation of this file.
00001 /*
00002  *   Copyright 2003-2004 The Apache Software Foundation.
00003  *
00004  *   Licensed under the Apache License, Version 2.0 (the "License");
00005  *   you may not use this file except in compliance with the License.
00006  *   You may obtain a copy of the License at
00007  *
00008  *       http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  *   Unless required by applicable law or agreed to in writing, software
00011  *   distributed under the License is distributed on an "AS IS" BASIS,
00012  *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  *   See the License for the specific language governing permissions and
00014  *   limitations under the License.
00015  */
00016 
00017 #include <openssl/sha.h>
00018 
00019 #include <axutil_utils_defines.h>
00020 #include <axis2_defines.h>
00021 #include <axutil_env.h>
00022 
00027 #ifndef OPENSSL_DIGEST
00028 #define OPENSSL_DIGEST
00029 
00030 #ifdef __cplusplus
00031 extern "C" {
00032 #endif
00033 
00046     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00047     openssl_sha1(const axutil_env_t *env,
00048                  axis2_char_t *input,
00049                  int length);
00050 
00051     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00052     openssl_md5(const axutil_env_t *env,
00053                 axis2_char_t *input,
00054                 int length);
00055     /* @} */
00056 #ifdef __cplusplus
00057 }
00058 #endif
00059 
00060 #endif    /* OPENSSL_DIGEST */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/struct__oxs__error__description.html0000644000076500007650000000553011202454500026000 0ustar shankarshankar Rampart/C: _oxs_error_description Struct Reference

_oxs_error_description Struct Reference
[Error]

#include <oxs_error.h>

List of all members.

Public Attributes

int code
const char * message


Detailed Description

Structure to hold error descriptions
Parameters:
code Error Code
message Error Message

The documentation for this struct was generated from the following file:

Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/rampart__credentials_8h-source.html0000644000076500007650000002017711202454500025375 0ustar shankarshankar Rampart/C: rampart_credentials.h Source File

rampart_credentials.h

Go to the documentation of this file.
00001 /*
00002 * Licensed to the Apache Software Foundation (ASF) under one or more
00003 * contributor license agreements.  See the NOTICE file distributed with
00004 * this work for additional information regarding copyright ownership.
00005 * The ASF licenses this file to You under the Apache License, Version 2.0
00006 * (the "License"); you may not use this file except in compliance with
00007 * the License.  You may obtain a copy of the License at
00008 *
00009 *      http://www.apache.org/licenses/LICENSE-2.0
00010 *
00011 * Unless required by applicable law or agreed to in writing, software
00012 * distributed under the License is distributed on an "AS IS" BASIS,
00013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014 * See the License for the specific language governing permissions and
00015 * limitations under the License.
00016 */
00017 
00018 #ifndef RAMPART_CREDENTIALS_H
00019 #define RAMPART_CREDENTIALS_H
00020 
00021 #include <axis2_defines.h>
00022 #include <axutil_error.h>
00023 #include <axutil_env.h>
00024 #include <axutil_utils.h>
00025 #include <axis2_msg_ctx.h>
00026 #include <axutil_param.h>
00037 #ifdef __cplusplus
00038 extern "C"
00039 {
00040 #endif
00041     enum rampart_credentials_status
00042     {
00043         RAMPART_CREDENTIALS_PW_FOUND = 0,
00044         RAMPART_CREDENTIALS_PW_NOT_FOUND,
00045         RAMPART_CREDENTIALS_USER_FOUND,
00046         RAMPART_CREDENTIALS_USER_NOT_FOUND,
00047         RAMPART_CREDENTIALS_GENERAL_ERROR
00048     };
00049 
00050     typedef enum rampart_credentials_status rampart_credentials_status_t;
00051 
00056     typedef struct rampart_credentials_ops rampart_credentials_ops_t;
00057     typedef struct rampart_credentials rampart_credentials_t;
00058 
00059     struct rampart_credentials_ops
00060     {
00061 
00071         rampart_credentials_status_t (AXIS2_CALL*
00072         rampart_credentials_username_get)(
00073             rampart_credentials_t *credentials,
00074             const axutil_env_t* env,
00075             axis2_msg_ctx_t *msg_ctx,
00076             axis2_char_t **username,
00077             axis2_char_t **password);
00078 
00085         axis2_status_t (AXIS2_CALL*
00086         free)(
00087             rampart_credentials_t *credentials,
00088             const axutil_env_t* env);
00089 
00090     };
00091 
00092     struct rampart_credentials
00093     {
00094         rampart_credentials_ops_t *ops;
00095         axutil_param_t *param;
00096     };
00097 
00098     /*************************** Function macros **********************************/
00099 #define RAMPART_CREDENTIALS_FREE(credentials, env) \
00100       ((credentials)->ops->free (credentials, env))
00101 
00102 #define RAMPART_CREDENTIALS_USERNAME_GET(credentials, env, msg_ctx, username, password) \
00103       ((credentials)->ops->rampart_credentials_username_get( \
00104             credentials, env, msg_ctx, username, password))
00105 
00106 
00107 
00109 #ifdef __cplusplus
00110 }
00111 #endif
00112 
00113 #endif /* RAMPART_CREDENTIALS_H */
00114 

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/rampart__constants_8h.html0000644000076500007650000011130711202454500023612 0ustar shankarshankar Rampart/C: rampart_constants.h File Reference

rampart_constants.h File Reference

Holds constants for rampart. More...

#include <oxs_constants.h>
#include <rampart_error.h>

Go to the source code of this file.

Defines

#define RAMPART_IN_HANDLER   "RampartInHandler"
#define RAMPART_OUT_HANDLER   "RampartOutHandler"
#define RAHAS_IN_HANDLER   "RahasInHandler"
#define RAHAS_OUT_HANDLER   "RahasOutHandler"
#define RAMPART_DEFAULT_KT_ALGO   OXS_DEFAULT_KT_ALGO_HREF
#define RAMPART_STR_DEFAULT   OXS_STR_DEFAULT
#define RAMPART_TIMESTAMP_TOKEN_DEFAULT_TIME_TO_LIVE   300
#define RAMPART_SECURITY   "Security"
#define RAMPART_SECURITY_USERNAMETOKEN   "UsernameToken"
#define RAMPART_SECURITY_USERNAMETOKEN_USERNAME   "Username"
#define RAMPART_SECURITY_USERNAMETOKEN_PASSWORD   "Password"
#define RAMPART_SECURITY_USERNAMETOKEN_CREATED   "Created"
#define RAMPART_SECURITY_USERNAMETOKEN_NONCE   "Nonce"
#define RAMPART_SECURITY_USERNAMETOKEN_PASSWORD_ATTR_TYPE   "Type"
#define RAMPART_SECURITY_TIMESTAMP   "Timestamp"
#define RAMPART_SECURITY_TIMESTAMP_CREATED   "Created"
#define RAMPART_SECURITY_TIMESTAMP_EXPIRES   "Expires"
#define RAMPART_RAMPART   "rampart"
#define RAMPART_WSSE   "wsse"
#define RAMPART_WSSE_XMLNS   "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
#define RAMPART_WSU   "wsu"
#define RAMPART_WSU_XMLNS   "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
#define RAMPART_PASSWORD_DIGEST_URI   "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest"
#define RAMPART_PASSWORD_TEXT_URI   "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText"
#define RAMPART_INFLOW_SECURITY_POLICY   "InflowSecurityPolicy"
#define RAMPART_OUTFLOW_SECURITY_POLICY   "OutflowSecurityPolicy"
#define INFLOW_RAMPART_CONTEXT   "InflowRampartContext"
#define OUTFLOW_RAMPART_CONTEXT   "OutflowRampartContext"
#define RAMPART_CONTEXT   "RampartContext"
#define IN_MESSAGE_SECURITY   "InMessageSecurity"
#define OUT_MESSAGE_SECURITY   "OutMessageSEcurity"
#define RAMPART_PASSWORD_TEXT   "plainText"
#define RAMPART_PASSWORD_DIGEST   "Digest"
#define RAMPART_CONFIGURATION   "RampartConfiguration"
#define RAMPART_CLIENT_CONFIGURATION   "RampartClientConfiguration"
#define RAMPART_FAULT_UNSUPPORTED_SECURITY_TOKEN   "wsse:UnsupportedSecurityToken"
#define RAMPART_FAULT_UNSUPPORTED_ALGORITHM   "wsse:UnsupportedAlgorithm"
#define RAMPART_FAULT_INVALID_SECURITY   "wsse:InvalidSecurity"
#define RAMPART_FAULT_INVALID_SECURITY_TOKEN   "wsse:InvalidSecurityToken"
#define RAMPART_FAULT_FAILED_AUTHENTICATION   "wsse:FailedAuthentication"
#define RAMPART_FAULT_FAILED_CHECK   "wsse:FailedCheck"
#define RAMPART_FAULT_SECURITY_TOKEN_UNAVAILABLE   "wsse:SecurityTokenUnavailable"
#define RAMPART_FAULT_TRUST_REQUEST_FAILED   "wst:RequestFailed"
#define RAMPART_FAULT_TRUST_REQUEST_INVALID   "wst:InvalidRequest"
#define RAMPART_FAULT_IN_TIMESTAMP   "wsse:Timestamp"
#define RAMPART_FAULT_IN_USERNAMETOKEN   "wsse:UsernameToken"
#define RAMPART_FAULT_IN_ENCRYPTED_KEY   "xenc:EncryptedKey"
#define RAMPART_FAULT_IN_ENCRYPTED_DATA   "xenc:EncryptedData"
#define RAMPART_FAULT_IN_SIGNATURE   "ds:Signature"
#define RAMPART_FAULT_MSG_REPLAYED   "rampc:Message-Replayed"
#define RAMPART_FAULT_IN_POLICY   "rampc:Policy"
#define RAMPART_FAULT_ELEMENT_LOCAL_NAME   "ProblemSecurityHeader"
#define RAMPART_ACTION_PASSWORD   "password"
#define RAMPART_ACTION_ENC_USER_PASSWORD   "encUserPassword"
#define RAMPART_CALLBACK_SPECIFIC_PROPERTY   "callbackSpecificProperty"
#define RAMPART_SECURITY_PROCESSED_RESULTS   "SecurityProcessedResults"
#define RAMPART_SPR_UT_USERNAME   "SPR_UT_username"
#define RAMPART_SPR_UT_CREATED   "SPR_UT_created"
#define RAMPART_SPR_UT_NONCE   "SPR_UT_nonce"
#define RAMPART_SPR_UT_PASSWORD_TYPE   "SPR_UT_passwordType"
#define RAMPART_SPR_TS_CREATED   "SPR_TS_created"
#define RAMPART_SPR_TS_EXPIRES   "SPR_TS_expires"
#define RAMPART_SPR_UT_CHECKED   "SPR_UT_Checked"
#define RAMPART_SPR_TS_CHECKED   "SPR_TS_Checked"
#define RAMPART_SPR_ENC_CHECKED   "SPR_ENC_Checked"
#define RAMPART_SPR_SIG_VALUE   "SPR_Sig_Val"
#define RAMPART_SPR_ENDORSED_VALUE   "SPR_Endorsed_Value"
#define RAMPART_SPR_SIG_VERIFIED   "SPR_Sig_Verified"
#define RAMPART_SPR_SIG_ENCRYPTED   "SPR_Sig_Encrypted"
#define RAMPART_SPR_SIG_CONFIRM_FOUND   "SPR_Sig_Confirmation_Found"
#define RAMPART_SPR_BODY_ENCRYPTED   "SPR_Body_Encrypted"
#define RAMPART_YES   "YES"
#define RAMPART_NO   "NO"
#define RAMPART_STR_DIRECT_REFERENCE   OXS_STR_DIRECT_REFERENCE
#define RAMPART_STR_KEY_IDENTIFIER   OXS_STR_KEY_IDENTIFIER
#define RAMPART_STR_EMBEDDED   OXS_STR_EMBEDDED
#define RAMPART_STR_ISSUER_SERIAL   OXS_STR_ISSUER_SERIAL
#define RAMPART_STR_THUMB_PRINT   OXS_STR_THUMB_PRINT
#define RAMPART_STR_EXTERNAL_URI   OXS_STR_EXTERNAL_URI
#define RAMPART_STR_ENCRYPTED_KEY   OXS_STR_ENCRYPTED_KEY
#define RAMPART_RD_DEF_VALID_DURATION   60
#define RAMPART_RD_DEF_MAX_RCDS   5
#define RAMPART_SCT_ID_TYPE_UNKNOWN   0
#define RAMPART_SCT_ID_TYPE_LOCAL   1
#define RAMPART_SCT_ID_TYPE_GLOBAL   2
#define RAMPART_USERNAME_TOKEN_NONCE_LENGTH   24
#define RAMPART_ENC_TOKEN_ID   "EncryptionTokenID"
#define RAMPART_SIG_TOKEN_ID   "SignatureTokenID"
#define RAMPART_BST_ID_PREFIX   "BST-"
#define RAMPART_EMBED_TOKEN_ID   "ID"


Detailed Description

Holds constants for rampart.


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__rampart__callback.html0000644000076500007650000000757611202454500024322 0ustar shankarshankar Rampart/C: Rampart Callback Module

Rampart Callback Module


Classes

struct  rampart_callback_ops
struct  rampart_callback

Defines

#define RAMPART_CALLBACK_FREE(callback, env)   ((callback)->ops->free (callback, env))
#define RAMPART_CALLBACK_CALLBACK_PASSWORD(callback, env, username, param)   ((callback)->ops->callback_password(callback, env, username, param))
#define RAMPART_CALLBACK_CALLBACK_PKCS12_PASSWORD(callback, env, username, param)   ((callback)->ops->callback_pkcs12_password(callback, env, username, param))

Typedefs

typedef struct rampart_callback_ops rampart_callback_ops_t
typedef struct rampart_callback rampart_callback_t

Detailed Description

Struct to get password using callbacks

Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/dir_2ab6243317ac98a7842daf660931c511.html0000644000076500007650000007734411202454500024313 0ustar shankarshankar Rampart/C: /home/shankar/src/release/rampart/include/ Directory Reference

include Directory Reference


Files

file  axis2_key_type.h [code]
 defines the key type
file  openssl_cipher_ctx.h [code]
 The cipher context in which the information regarding a cipher cycle is stored.
file  openssl_cipher_property.h [code]
 The class to store cipher properties such as name, key size, block size etc.
file  openssl_constants.h [code]
 Constants for the openssl wrapper.
file  openssl_crypt.h [code]
 The encryption/decryption methods for OMXMLSecurity.
file  openssl_digest.h [code]
 Digest function implementations. Supports SHA1 and MD5.
file  openssl_hmac.h [code]
 HMAC function implementations. Supports SHA1.
file  openssl_pem.h [code]
 Funcitons related to keys that are in PEM format.
file  openssl_pkcs12.h [code]
 Functions related to keys that are in pkcs12 format.
file  openssl_pkcs12_keystore.h [code]
 Key Store manager for keys that are in pkcs12 format.
file  openssl_pkey.h [code]
 holds either a public key or a private key. The type is determined by the type attribute
file  openssl_rsa.h [code]
 For RSA encryption.
file  openssl_sign.h [code]
 The signature functions in openssl wrapper.
file  openssl_util.h [code]
 General utility routines for openssl related functions.
file  openssl_x509.h [code]
 Extracts information from a X509 certificate.
file  oxs_asym_ctx.h [code]
 Keeps information relavent for asymmetric encryption.
file  oxs_axiom.h [code]
 Utility functions related to AXIOM. A place for common code.
file  oxs_axis2_utils.h [code]
 Utility functions related to Axis2/C.
file  oxs_buffer.h [code]
 The buffer representation in OMXMLSecurity.
file  oxs_c14n.h [code]
 Cannonicalization implementation for OMXMLSecurity.
file  oxs_cipher.h [code]
 Cipher related functions in OMXMLSecurity.
file  oxs_constants.h [code]
 Constants for OMXMLSecurity.
file  oxs_ctx.h [code]
 Keeps configurations for the OMXMLSecurity.
file  oxs_derivation.h [code]
 The Key derivation module for OMXMLSecurity.
file  oxs_encryption.h [code]
 Provides data encryption and decryption functionalities of the OMXMLSec.
file  oxs_error.h [code]
 Represents an Error occured during the OMXMLSecurity execution.
file  oxs_iv.h [code]
 Initial Vector related functionalities.
file  oxs_key.h [code]
 represents a Key in OMXMLSecurity
file  oxs_key_mgr.h [code]
 the Key Manager responsible for loading keys for OMXMLSecurity
file  oxs_saml_token.h [code]
file  oxs_sign_ctx.h [code]
 Keeps information relavent for a single node of signing.
file  oxs_sign_part.h [code]
 Keeps information relavent for a single node of signing.
file  oxs_signature.h [code]
 Does the XML Signature for OMXMLSecurity.
file  oxs_tokens.h [code]
 includes all tokens of OMXMLSecurity.
file  oxs_transform.h [code]
 The class representing a single step of transformation. For example a Cannonicalization.
file  oxs_transforms_factory.h [code]
 Produces transforms for OMXMLSecurity.
file  oxs_utility.h [code]
 The utility module for OMXMLSecurity.
file  oxs_x509_cert.h [code]
 the OMXMLSecurity representation of an X509 certificate
file  oxs_xml_encryption.h [code]
 Does the XML encryption for OMXMLSecurity.
file  oxs_xml_key_info_builder.h [code]
 Process elements available under ds:KeyInfo.
file  oxs_xml_key_processor.h [code]
 Process elements available under ds:KeyInfo.
file  oxs_xml_signature.h [code]
 Does the XML Signature for OMXMLSecurity.
file  rahas_mod.h [code]
 Axis2 rahas module interface.
file  rahas_request_processor.h [code]
 Process requests related to secure conversation.
file  rampart_authn_provider.h [code]
 The authentication interface of rampart. Validates a username and password pair.
file  rampart_callback.h [code]
 The callback module for a password.
file  rampart_config.h [code]
 The Rampart Config, in which user configurations are stored.
file  rampart_constants.h [code]
 Holds constants for rampart.
file  rampart_context.h [code]
 The Rampart Context, in which configurations are stored.
file  rampart_credentials.h [code]
 The credentials interface for rampart. To retrieve a username and password pair.
file  rampart_crypto_util.h [code]
 Crypto related utility module.
file  rampart_encryption.h [code]
 encrypts a SOAP message
file  rampart_engine.h [code]
 Loads configuratins for Rampart, which defines its behaviuor. Also loads modules and initialize Rampart.
file  rampart_error.h [code]
 Rampart specific error codes.
file  rampart_handler_util.h [code]
 Utilities related to handlers.
file  rampart_issued.h [code]
file  rampart_issued_token.h [code]
file  rampart_mod.h [code]
 Axis2 rampart module interface.
file  rampart_policy_validator.h [code]
 Verifies whether the message complies with the security policy reqmnt.
file  rampart_replay_detector.h [code]
 The replay_detector module for rampart.
file  rampart_saml.h [code]
 build saml tokens and validate saml tokens
file  rampart_saml_token.h [code]
file  rampart_sct_provider.h [code]
 Security context token provider module for rampart.
file  rampart_sct_provider_utility.h [code]
 Utility methods using Security context token provider module.
file  rampart_sec_header_builder.h [code]
 Build the Security related SOAP headers.
file  rampart_sec_header_processor.h [code]
 Processes a message depending on it's security related claims.
file  rampart_sec_processed_result.h [code]
 The module to keep the results after processing the message.
file  rampart_signature.h [code]
 sign a SOAP message
file  rampart_timestamp_token.h [code]
 Timestamp token related functions.
file  rampart_token_builder.h [code]
 Reference Token builfing/of rampart.
file  rampart_token_processor.h [code]
 Token processing of rampart.
file  rampart_username_token.h [code]
 The Usernametoken.
file  rampart_util.h [code]
 Utilities of rampart.
file  saml.h [code]
file  saml_req.h [code]
file  secconv_security_context_token.h [code]
 security context token
file  trust_claims.h [code]
file  trust_constants.h [code]
 Holds constants for trust implementation.
file  trust_context.h [code]
 Holds function declarations and data for data.
file  trust_entropy.h [code]
file  trust_life_time.h [code]
file  trust_policy_util.h [code]
file  trust_rst.h [code]
file  trust_rstr.h [code]
file  trust_sts_client.h [code]
 contains the specific sts client interface
file  trust_token.h [code]
 Holds function declarations and data for token.
file  trust_util.h [code]
 contains generic operations related to trust module

Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/openssl__rsa_8h-source.html0000644000076500007650000002066211202454500023701 0ustar shankarshankar Rampart/C: openssl_rsa.h Source File

openssl_rsa.h

Go to the documentation of this file.
00001 /*
00002  *   Copyright 2003-2004 The Apache Software Foundation.
00003  *
00004  *   Licensed under the Apache License, Version 2.0 (the "License");
00005  *   you may not use this file except in compliance with the License.
00006  *   You may obtain a copy of the License at
00007  *
00008  *       http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  *   Unless required by applicable law or agreed to in writing, software
00011  *   distributed under the License is distributed on an "AS IS" BASIS,
00012  *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  *   See the License for the specific language governing permissions and
00014  *   limitations under the License.
00015  */
00016 
00017 #include <openssl/rand.h>
00018 #include <openssl/evp.h>
00019 #include <openssl/pem.h>
00020 #include <openssl/bio.h>
00021 #include <openssl/rand.h>
00022 #include <openssl_constants.h>
00023 #include <openssl_pkey.h>
00024 #include <axis2_util.h>
00025 #include <oxs_buffer.h>
00026 
00031 #ifndef OPENSSL_RSA_H
00032 #define OPENSSL_RSA_H
00033 
00034 #ifdef __cplusplus
00035 extern "C" {
00036 #endif
00037 
00052     int AXIS2_CALL
00053     openssl_rsa_prv_decrypt(
00054         const axutil_env_t *env,
00055         const openssl_pkey_t *pkey,
00056         const axis2_char_t *padding,
00057         oxs_buffer_t *in,
00058         oxs_buffer_t *out);
00059 
00069     int AXIS2_CALL
00070     openssl_rsa_pub_encrypt(
00071         const axutil_env_t *env,
00072         const openssl_pkey_t *pkey,
00073         const axis2_char_t *padding,
00074         oxs_buffer_t *in,
00075         oxs_buffer_t *out);
00076 
00086     int AXIS2_CALL
00087     openssl_rsa_prv_encrypt(
00088         const axutil_env_t *env,
00089         const openssl_pkey_t *pkey,
00090         const axis2_char_t *padding,
00091         oxs_buffer_t *in,
00092         oxs_buffer_t *out);
00093 
00103     int AXIS2_CALL
00104     openssl_rsa_pub_decrypt(
00105         const axutil_env_t *env,
00106         const openssl_pkey_t *pkey,
00107         const axis2_char_t *padding,
00108         oxs_buffer_t *in,
00109         oxs_buffer_t *out);
00110 
00111 
00113 #ifdef __cplusplus
00114 }
00115 #endif
00116 
00117 #endif    /* OPENSSL_RSA_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/globals_0x72.html0000644000076500007650000010126711202454500021521 0ustar shankarshankar Rampart/C: Class Members
Here is a list of all documented file members with links to the documentation:

- r -


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/tab_r.gif0000644000076500007650000000503111202454500020176 0ustar shankarshankarGIF89a,Õö÷ùñô÷öøúüýþúûüùúûøùúêïóïóöÆÕßÒÞæØâéÞçíÝæìåìñèîòô÷ùóöø³ÈÕÁÒÝËÙâÏÜäÖá薴ŹɯÂÍ»ÎÙÃÔÞÂÓÝÈ×àÌÚâÕáèÙäê×âèåìðëðó„°ÇÑÞåÜæëãëïëñôîóõ÷úûûüüÿÿÿþþþ,,ÿ@’pH,ȤrÉl:ŸÐ¨tJ­Z¯Ø¬v •h<¬pkL.›Ïè´zÍn»ßð¸|N¯Ûïø¼~ÏwVa+‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ “*)^,*ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂö)'ÆÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæÚ¥(" ðñòóôõö÷øùúûüýþÿ H° ÁƒòK"ƒRHœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\éÅu&@€ Á²¦Í›8sêÜɳ§Oÿ–(±€DУH“*]Ê´©Ó§P£JJµªÕ«X³jÝʵ«×¯S84± ‰hÓª]˶­Û·pãÊK·®Ý»xóêÝË·¯ß¿€Ó} âDÌf(^̸±ãÇ#KžL¹²å˘3kÞ̹³çÏ C‹m¹ðCÄHœXͺµë×°cËžM»¶íÛ¸sëÞÍ»·ïßÀƒ N÷ÃJ” Á®¹óçУKŸN½ºõëØ³kßν»÷ïàËO¾úñ€ dÇ@€‚‚L¤"ÉÈF:ò‘Œ¤$9† (8…&ÉÉNzò“  ¥(G©FB^²!˨)WÉÊVºò•°l¤)1™ wÄò–¸Ì¥.wÊYºäƒà¥0‡IÌbó¾|ÉHpÌf:ó™Ðìe pJ±ˆ€}Ȧ6·ÉÍnzó›à §8û0Â%"¸æ8×ÉÎvºóðŒ§<ÉPÎQ`ò%×$€>÷ÉÏ~úóŸ ¨@JЂô M¨BÊІ:ô¡¨D'ZPKF Ö¼&16ÊÑŽzô£ ©HGJRb ÷Lç5ÏÁÒ–ºô¥ÿ0©LgJÓšš#(e>¯‰Óžúô§@ ªP‡JÔ¢õ¨HMªR—ÊÔ¦:õ©PªT§JÕª&5;%U·ÊÕ®zõ«` «XÇJV«ÂC§‹ÑjY×ÊÖ¶ºõ­p«\ŠU´À¦xÍ«^÷Ê×¾úõ¯ÐÀi)$‚”ô°ˆM¬bËØÆ:vˆ, ಘͬf7ËÙÎzö³  ­hGKÚÒšö´¨M­jWËÚÖºöµ°­*$ÛSPô¶¸Í­nwËÛÞúö·ÀÅm +„â¸ÈM®r—ËÜæ:÷¹ÐE®?±9ÏêZ÷ºØÍ®v¿9€î"‚ºÛ ¯xÇKÞòb—™ÑLÿ¯z×Ë^A¢·½ð¯|ç†÷Ò÷¾øÍ¯0í«ßþú÷¿¡ä/€Là»×ÀN°‚ï(à;øÁ n0„'LaýJ¸ÂÎ0{/¬á{ؘþ°ˆG|Ë“øÄ(¥‰SÌâCrÅ.ޱŒ ãÛøÆv¬1ŽwÌc6ê¸Ç@ÞñƒLd¹ÈHNñ‘“Ìd/¹ÉPÎð“£LeO¹ÊXŽp–·|â+sùËýõ2˜ÇL_1“ùÌí53š×M5³ùÍÇt3œç¼_:ÛÙÂwÎs™õÌgøÊ¹Ï€p ýÌ?úÐ/F´¢ë¼èFãÒÐŽŽt!-éJã‘Ò–Îô1­éN»‘ÓžuÿA-êP“ºÔ>5ª3­êUWºÕ®Ž4¬cÝèYÓZѶ¾õ¡s­ëAóº×€þ5°ù,ìaç¹ØÆ¶3²“=çe3ûÍÎ~öš£-í3S»Úc¾6¶¿¬ímo¹ÛÞÆ2¸ÃMåq“Êæ>7“Ó­n$³»ÝD~7¼,ïyó¸ÞöÆ1¾ómã}óÛÈÿvµ¿Þâ\É/µÁNâ…3ÜÉ÷´Ã#Þá‰S\ÊguÆ-mñO¸ã0ÈC¾à‘“\Ë'_´ÉS^à•³|À.ùc.ó0לÐ4¿9~s®ó=÷¼Ï<ÿy|ƒ.ô4]ÏD?ºz“®ô67]ÙO§3Ó£ÞÌ©SÄW‡vÖÙl>õ­3Úëdî:Øu)ö±?ÚìÙF;˜Ë®öW²½í­|;ÜW)÷¹²îvtÞ˽w¾÷Ý|à×=xÂÞÝA;rampartc-src-1.3.0/docs/api/html/oxs__sign__part_8h-source.html0000644000076500007650000002517511202454500024373 0ustar shankarshankar Rampart/C: oxs_sign_part.h Source File

oxs_sign_part.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef OXS_SIGN_PART_H
00019 #define OXS_SIGN_PART_H
00020 
00021 
00032 #include <axis2_defines.h>
00033 #include <axutil_env.h>
00034 #include <axiom_node.h>
00035 #include <axiom_namespace.h>
00036 
00037 #ifdef __cplusplus
00038 extern "C"
00039 {
00040 #endif
00041 
00042 
00043     typedef struct oxs_sign_part_t oxs_sign_part_t;
00044 
00045     /*Create function*/
00046     AXIS2_EXTERN oxs_sign_part_t *AXIS2_CALL
00047     oxs_sign_part_create(const axutil_env_t *env);
00048 
00049     /*Free*/
00050     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00051     oxs_sign_part_free(oxs_sign_part_t *ctx,
00052                        const axutil_env_t *env);
00053 
00054 
00055     /**********************Getter functions******************************************/
00056     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00057     oxs_sign_part_get_id(
00058         const oxs_sign_part_t *sign_part,
00059         const axutil_env_t *env);
00060 
00061     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00062     oxs_sign_part_get_digest_mtd(
00063         const oxs_sign_part_t *sign_part,
00064         const axutil_env_t *env);
00065 
00066     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00067     oxs_sign_part_get_digest_val(
00068         const oxs_sign_part_t *sign_part,
00069         const axutil_env_t *env);
00070 
00071     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00072     oxs_sign_part_get_node(
00073         const oxs_sign_part_t *sign_part,
00074         const axutil_env_t *env);
00075 
00076     AXIS2_EXTERN axutil_array_list_t *AXIS2_CALL
00077     oxs_sign_part_get_transforms(
00078         const oxs_sign_part_t *sign_part,
00079         const axutil_env_t *env);
00080 
00081         AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00082         oxs_sign_part_get_id_name(
00083                 const oxs_sign_part_t *sign_part,
00084                 const axutil_env_t *env);
00085 
00086         AXIS2_EXTERN axiom_namespace_t *AXIS2_CALL
00087         oxs_sign_part_get_sign_namespace(
00088                 const oxs_sign_part_t *sign_part,
00089                 const axutil_env_t *env);
00090 
00091 
00092     /**********************Setter functions******************************************/
00093     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00094     oxs_sign_part_set_id(
00095         oxs_sign_part_t *sign_part,
00096         const axutil_env_t *env,
00097         axis2_char_t *id);
00098 
00099     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00100     oxs_sign_part_set_digest_mtd(
00101         oxs_sign_part_t *sign_part,
00102         const axutil_env_t *env,
00103         axis2_char_t *digest_mtd);
00104 
00105     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00106     oxs_sign_part_set_digest_val(
00107         oxs_sign_part_t *sign_part,
00108         const axutil_env_t *env,
00109         axis2_char_t *digest_val);
00110 
00111     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00112     oxs_sign_part_set_node(
00113         oxs_sign_part_t *sign_part,
00114         const axutil_env_t *env,
00115         axiom_node_t *node);
00116 
00117     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00118     oxs_sign_part_set_transforms(
00119         oxs_sign_part_t *sign_part,
00120         const axutil_env_t *env,
00121         axutil_array_list_t *transforms);
00122 
00123         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00124         oxs_sign_part_set_id_name(
00125                 oxs_sign_part_t *sign_part,
00126                 const axutil_env_t *env,
00127                 axis2_char_t *id_name);         
00128 
00129         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00130         oxs_sign_part_set_sign_namespace(
00131                 oxs_sign_part_t *sign_part,
00132                 const axutil_env_t *env,
00133                 axiom_namespace_t *sig_ns);
00134 
00136 #ifdef __cplusplus
00137 }
00138 #endif
00139 
00140 #endif                          /* OXS_SIGN_PART_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__rampart__engine.html0000644000076500007650000000640111202454500024015 0ustar shankarshankar Rampart/C: Engine

Engine
[Rampart Utilities]


Functions

AXIS2_EXTERN rampart_context_t * rampart_engine_build_configuration (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axis2_bool_t is_inflow)

Function Documentation

AXIS2_EXTERN rampart_context_t* rampart_engine_build_configuration ( const axutil_env_t *  env,
axis2_msg_ctx_t *  msg_ctx,
axis2_bool_t  is_inflow 
)

Parameters:
env pointer to environment struct,Must not be
msg_ctx 
is_inflow returns


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__oxs__buffer.html0000644000076500007650000006661611202454500023202 0ustar shankarshankar Rampart/C: Buffer

Buffer
[OMXMLSecurity]


Defines

#define OXS_BUFFER_INITIAL_SIZE   1024

Typedefs

typedef struct oxs_buffer oxs_buffer_t

Enumerations

enum  oxs_AllocMode { oxs_alloc_mode_exact = 0, oxs_alloc_mode_double }

Functions

AXIS2_EXTERN axis2_status_t oxs_buffer_free (oxs_buffer_t *buffer, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_buffer_remove_head (oxs_buffer_t *buffer, const axutil_env_t *env, int size)
AXIS2_EXTERN axis2_status_t oxs_buffer_remove_tail (oxs_buffer_t *buffer, const axutil_env_t *env, int size)
AXIS2_EXTERN axis2_status_t oxs_buffer_populate (oxs_buffer_t *buffer, const axutil_env_t *env, unsigned char *data, int size)
AXIS2_EXTERN axis2_status_t oxs_buffer_append (oxs_buffer_t *buffer, const axutil_env_t *env, unsigned char *data, int size)
AXIS2_EXTERN axis2_status_t oxs_buffer_prepend (oxs_buffer_t *buffer, const axutil_env_t *env, unsigned char *data, int size)
AXIS2_EXTERN axis2_status_t oxs_buffer_read_file (oxs_buffer_t *buffer, const axutil_env_t *env, const axis2_char_t *filename)
AXIS2_EXTERN axis2_status_t oxs_buffer_set_size (oxs_buffer_t *buffer, const axutil_env_t *env, int size)
AXIS2_EXTERN axis2_status_t oxs_buffer_set_max_size (oxs_buffer_t *buffer, const axutil_env_t *env, int size)
AXIS2_EXTERN unsigned char * oxs_buffer_get_data (oxs_buffer_t *buffer, const axutil_env_t *env)
AXIS2_EXTERN int oxs_buffer_get_size (oxs_buffer_t *buffer, const axutil_env_t *env)
AXIS2_EXTERN int oxs_buffer_get_max_size (oxs_buffer_t *buffer, const axutil_env_t *env)
AXIS2_EXTERN oxs_buffer_toxs_buffer_dup (oxs_buffer_t *buffer, const axutil_env_t *env)
AXIS2_EXTERN oxs_buffer_toxs_buffer_create (const axutil_env_t *env)

Typedef Documentation

typedef struct oxs_buffer oxs_buffer_t

Type name for struct oxs_buffer


Enumeration Type Documentation

Allocate mode for the buffer oxs_alloc_mode_exact : Minimizes the allocated memory size oxs_alloc_mode_double : Minimizes number of Malloc calls


Function Documentation

AXIS2_EXTERN axis2_status_t oxs_buffer_append ( oxs_buffer_t buffer,
const axutil_env_t *  env,
unsigned char *  data,
int  size 
)

Append data (to the end) pointer to the OMXMLSec buffer struct pointer to environment struct the data for the buffer the effective length of data

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_buffer_free ( oxs_buffer_t buffer,
const axutil_env_t *  env 
)

Free function of the buffer

Parameters:
buffer pointer to the OMXMLSec buffer struct
env pointer to environment struct
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN unsigned char* oxs_buffer_get_data ( oxs_buffer_t buffer,
const axutil_env_t *  env 
)

Returns data pointer to the OMXMLSec buffer struct pointer to environment struct

Returns:
data in the buffer

AXIS2_EXTERN int oxs_buffer_get_max_size ( oxs_buffer_t buffer,
const axutil_env_t *  env 
)

Returns the maximum size of the buffer pointer to the OMXMLSec buffer struct pointer to environment struct

Returns:
the maximum size of the buffer

AXIS2_EXTERN int oxs_buffer_get_size ( oxs_buffer_t buffer,
const axutil_env_t *  env 
)

Returns the effective length of the buffer pointer to the OMXMLSec buffer struct pointer to environment struct

Returns:
the effective length of the buffer as int

AXIS2_EXTERN axis2_status_t oxs_buffer_populate ( oxs_buffer_t buffer,
const axutil_env_t *  env,
unsigned char *  data,
int  size 
)

populates the buffer using the set the as the useful length pointer to the OMXMLSec buffer struct pointer to environment struct the data for the buffer the effective length of data

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_buffer_prepend ( oxs_buffer_t buffer,
const axutil_env_t *  env,
unsigned char *  data,
int  size 
)

Prepends data (to the front of the buffer) pointer to the OMXMLSec buffer struct pointer to environment struct the data for the buffer the effective length of data

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_buffer_read_file ( oxs_buffer_t buffer,
const axutil_env_t *  env,
const axis2_char_t *  filename 
)

Reads a file specified by pointer to the OMXMLSec buffer struct pointer to environment struct The name of the file

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_buffer_remove_head ( oxs_buffer_t buffer,
const axutil_env_t *  env,
int  size 
)

Removes the first (size) charcters from the buffer

Parameters:
buffer pointer to the OMXMLSec buffer struct
env pointer to environment struct
size number of characters to be removed
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_buffer_remove_tail ( oxs_buffer_t buffer,
const axutil_env_t *  env,
int  size 
)

Removes the last (size) charcters from the buffer

Parameters:
buffer pointer to the OMXMLSec buffer struct
env pointer to environment struct
size number of characters to be removed
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_buffer_set_max_size ( oxs_buffer_t buffer,
const axutil_env_t *  env,
int  size 
)

Sets the maximum size of the buffer. Usually this will be allocated dynamically pointer to the OMXMLSec buffer struct pointer to environment struct the maximum size of the buffer

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_buffer_set_size ( oxs_buffer_t buffer,
const axutil_env_t *  env,
int  size 
)

Sets the size pointer to the OMXMLSec buffer struct pointer to environment struct the value of the size

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/openssl__cipher__property_8h.html0000644000076500007650000002033311202454500025166 0ustar shankarshankar Rampart/C: openssl_cipher_property.h File Reference

openssl_cipher_property.h File Reference

The class to store cipher properties such as name, key size, block size etc. More...

#include <openssl/evp.h>
#include <oxs_buffer.h>

Go to the source code of this file.

Typedefs

typedef struct
openssl_cipher_property_t 
openssl_cipher_property_t

Functions

EVP_CIPHER * openssl_cipher_property_get_cipher (const openssl_cipher_property_t *cprop, const axutil_env_t *env)
axis2_char_t * openssl_cipher_property_get_name (const openssl_cipher_property_t *cprop, const axutil_env_t *env)
axis2_char_t * openssl_cipher_property_get_url (const openssl_cipher_property_t *cprop, const axutil_env_t *env)
int openssl_cipher_property_get_key_size (const openssl_cipher_property_t *cprop, const axutil_env_t *env)
int openssl_cipher_property_get_block_size (const openssl_cipher_property_t *cprop, const axutil_env_t *env)
int openssl_cipher_property_get_iv_size (const openssl_cipher_property_t *cprop, const axutil_env_t *env)
axis2_status_t openssl_cipher_property_set_cipher (openssl_cipher_property_t *cprop, const axutil_env_t *env, EVP_CIPHER *cipher)
axis2_status_t openssl_cipher_property_set_name (openssl_cipher_property_t *cprop, const axutil_env_t *env, axis2_char_t *name)
axis2_status_t openssl_cipher_property_set_url (openssl_cipher_property_t *cprop, const axutil_env_t *env, axis2_char_t *url)
axis2_status_t openssl_cipher_property_set_key_size (openssl_cipher_property_t *cprop, const axutil_env_t *env, int key_size)
axis2_status_t openssl_cipher_property_set_block_size (openssl_cipher_property_t *cprop, const axutil_env_t *env, int block_size)
axis2_status_t openssl_cipher_property_set_iv_size (openssl_cipher_property_t *cprop, const axutil_env_t *env, int iv_size)
axis2_status_t openssl_cipher_property_free (openssl_cipher_property_t *cprop, const axutil_env_t *env)
AXIS2_EXTERN
openssl_cipher_property_t
openssl_cipher_property_create (const axutil_env_t *env)


Detailed Description

The class to store cipher properties such as name, key size, block size etc.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/oxs__saml__token_8h-source.html0000644000076500007650000001523611202454500024536 0ustar shankarshankar Rampart/C: oxs_saml_token.h Source File

oxs_saml_token.h

00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef OXS_SAML_TOKEN_H
00019 #define OXS_SAML_TOKEN_H
00020 
00021 #include <oxs_tokens.h>
00022 #include <oxs_axiom.h>
00023 
00024 #ifdef __cplusplus
00025 extern "C"
00026 {
00027 #endif
00028 
00029 #define OXS_ST_KEY_ID_VALUE_TYPE    "http://docs.oasis-open.org/wss/oass-wss-saml-token-profile-1.0#SAMLAssertionID"
00030 
00031 AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00032 oxs_saml_token_build_key_identifier_reference_local(const axutil_env_t *env, 
00033                                              axiom_node_t *parent, 
00034                                              axiom_node_t *assertion);
00035 AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00036 oxs_saml_token_build_key_identifier_reference_remote(const axutil_env_t *env, 
00037                                              axiom_node_t *parent, 
00038                                              axiom_node_t *assertion, 
00039                                              axiom_node_t *auth_bind);
00040 
00041 AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00042 oxs_saml_token_build_embeded_reference(const axutil_env_t *env, 
00043                                              axiom_node_t *parent, 
00044                                              axiom_node_t *assertion);
00045 
00046 AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00047 oxs_saml_token_get_from_key_identifer_reference(const axutil_env_t *env, 
00048                                                     axiom_node_t *key_id,
00049                                                     axiom_node_t *scope);
00050 
00051 AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00052 oxs_saml_token_get_from_embeded_reference(const axutil_env_t *env, 
00053                                                   axiom_node_t *embeded);
00054 
00055 
00056 #ifdef __cplusplus
00057 }
00058 #endif
00059 
00060 
00061 #endif 
00062 

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/doxygen.css0000644000076500007650000001775711202454500020631 0ustar shankarshankarBODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV { font-family: Geneva, Arial, Helvetica, sans-serif; } BODY,TD { font-size: 90%; } H1 { text-align: center; font-size: 160%; } H2 { font-size: 120%; } H3 { font-size: 100%; } CAPTION { font-weight: bold } DIV.qindex { width: 100%; background-color: #e8eef2; border: 1px solid #84b0c7; text-align: center; margin: 2px; padding: 2px; line-height: 140%; } DIV.navpath { width: 100%; background-color: #e8eef2; border: 1px solid #84b0c7; text-align: center; margin: 2px; padding: 2px; line-height: 140%; } DIV.navtab { background-color: #e8eef2; border: 1px solid #84b0c7; text-align: center; margin: 2px; margin-right: 15px; padding: 2px; } TD.navtab { font-size: 70%; } A.qindex { text-decoration: none; font-weight: bold; color: #1A419D; } A.qindex:visited { text-decoration: none; font-weight: bold; color: #1A419D } A.qindex:hover { text-decoration: none; background-color: #ddddff; } A.qindexHL { text-decoration: none; font-weight: bold; background-color: #6666cc; color: #ffffff; border: 1px double #9295C2; } A.qindexHL:hover { text-decoration: none; background-color: #6666cc; color: #ffffff; } A.qindexHL:visited { text-decoration: none; background-color: #6666cc; color: #ffffff } A.el { text-decoration: none; font-weight: bold } A.elRef { font-weight: bold } A.code:link { text-decoration: none; font-weight: normal; color: #0000FF } A.code:visited { text-decoration: none; font-weight: normal; color: #0000FF } A.codeRef:link { font-weight: normal; color: #0000FF } A.codeRef:visited { font-weight: normal; color: #0000FF } A:hover { text-decoration: none; background-color: #f2f2ff } DL.el { margin-left: -1cm } .fragment { font-family: monospace, fixed; font-size: 95%; } PRE.fragment { border: 1px solid #CCCCCC; background-color: #f5f5f5; margin-top: 4px; margin-bottom: 4px; margin-left: 2px; margin-right: 8px; padding-left: 6px; padding-right: 6px; padding-top: 4px; padding-bottom: 4px; } DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px } DIV.groupHeader { margin-left: 16px; margin-top: 12px; margin-bottom: 6px; font-weight: bold; } DIV.groupText { margin-left: 16px; font-style: italic; font-size: 90% } BODY { background: white; color: black; margin-right: 20px; margin-left: 20px; } TD.indexkey { background-color: #e8eef2; font-weight: bold; padding-right : 10px; padding-top : 2px; padding-left : 10px; padding-bottom : 2px; margin-left : 0px; margin-right : 0px; margin-top : 2px; margin-bottom : 2px; border: 1px solid #CCCCCC; } TD.indexvalue { background-color: #e8eef2; font-style: italic; padding-right : 10px; padding-top : 2px; padding-left : 10px; padding-bottom : 2px; margin-left : 0px; margin-right : 0px; margin-top : 2px; margin-bottom : 2px; border: 1px solid #CCCCCC; } TR.memlist { background-color: #f0f0f0; } P.formulaDsp { text-align: center; } IMG.formulaDsp { } IMG.formulaInl { vertical-align: middle; } SPAN.keyword { color: #008000 } SPAN.keywordtype { color: #604020 } SPAN.keywordflow { color: #e08000 } SPAN.comment { color: #800000 } SPAN.preprocessor { color: #806020 } SPAN.stringliteral { color: #002080 } SPAN.charliteral { color: #008080 } SPAN.vhdldigit { color: #ff00ff } SPAN.vhdlchar { color: #000000 } SPAN.vhdlkeyword { color: #700070 } SPAN.vhdllogic { color: #ff0000 } .mdescLeft { padding: 0px 8px 4px 8px; font-size: 80%; font-style: italic; background-color: #FAFAFA; border-top: 1px none #E0E0E0; border-right: 1px none #E0E0E0; border-bottom: 1px none #E0E0E0; border-left: 1px none #E0E0E0; margin: 0px; } .mdescRight { padding: 0px 8px 4px 8px; font-size: 80%; font-style: italic; background-color: #FAFAFA; border-top: 1px none #E0E0E0; border-right: 1px none #E0E0E0; border-bottom: 1px none #E0E0E0; border-left: 1px none #E0E0E0; margin: 0px; } .memItemLeft { padding: 1px 0px 0px 8px; margin: 4px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: #E0E0E0; border-right-color: #E0E0E0; border-bottom-color: #E0E0E0; border-left-color: #E0E0E0; border-top-style: solid; border-right-style: none; border-bottom-style: none; border-left-style: none; background-color: #FAFAFA; font-size: 80%; } .memItemRight { padding: 1px 8px 0px 8px; margin: 4px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: #E0E0E0; border-right-color: #E0E0E0; border-bottom-color: #E0E0E0; border-left-color: #E0E0E0; border-top-style: solid; border-right-style: none; border-bottom-style: none; border-left-style: none; background-color: #FAFAFA; font-size: 80%; } .memTemplItemLeft { padding: 1px 0px 0px 8px; margin: 4px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: #E0E0E0; border-right-color: #E0E0E0; border-bottom-color: #E0E0E0; border-left-color: #E0E0E0; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; background-color: #FAFAFA; font-size: 80%; } .memTemplItemRight { padding: 1px 8px 0px 8px; margin: 4px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: #E0E0E0; border-right-color: #E0E0E0; border-bottom-color: #E0E0E0; border-left-color: #E0E0E0; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; background-color: #FAFAFA; font-size: 80%; } .memTemplParams { padding: 1px 0px 0px 8px; margin: 4px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: #E0E0E0; border-right-color: #E0E0E0; border-bottom-color: #E0E0E0; border-left-color: #E0E0E0; border-top-style: solid; border-right-style: none; border-bottom-style: none; border-left-style: none; color: #606060; background-color: #FAFAFA; font-size: 80%; } .search { color: #003399; font-weight: bold; } FORM.search { margin-bottom: 0px; margin-top: 0px; } INPUT.search { font-size: 75%; color: #000080; font-weight: normal; background-color: #e8eef2; } TD.tiny { font-size: 75%; } a { color: #1A41A8; } a:visited { color: #2A3798; } .dirtab { padding: 4px; border-collapse: collapse; border: 1px solid #84b0c7; } TH.dirtab { background: #e8eef2; font-weight: bold; } HR { height: 1px; border: none; border-top: 1px solid black; } /* Style for detailed member documentation */ .memtemplate { font-size: 80%; color: #606060; font-weight: normal; margin-left: 3px; } .memnav { background-color: #e8eef2; border: 1px solid #84b0c7; text-align: center; margin: 2px; margin-right: 15px; padding: 2px; } .memitem { padding: 4px; background-color: #eef3f5; border-width: 1px; border-style: solid; border-color: #dedeee; -moz-border-radius: 8px 8px 8px 8px; } .memname { white-space: nowrap; font-weight: bold; } .memdoc{ padding-left: 10px; } .memproto { background-color: #d5e1e8; width: 100%; border-width: 1px; border-style: solid; border-color: #84b0c7; font-weight: bold; -moz-border-radius: 8px 8px 8px 8px; } .paramkey { text-align: right; } .paramtype { white-space: nowrap; } .paramname { color: #602020; font-style: italic; white-space: nowrap; } /* End Styling for detailed member documentation */ /* for the tree view */ .ftvtree { font-family: sans-serif; margin:0.5em; } .directory { font-size: 9pt; font-weight: bold; } .directory h3 { margin: 0px; margin-top: 1em; font-size: 11pt; } .directory > h3 { margin-top: 0; } .directory p { margin: 0px; white-space: nowrap; } .directory div { display: none; margin: 0px; } .directory img { vertical-align: -30%; } rampartc-src-1.3.0/docs/api/html/tabs.css0000644000076500007650000000334211202454500020066 0ustar shankarshankar/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */ DIV.tabs { float : left; width : 100%; background : url("tab_b.gif") repeat-x bottom; margin-bottom : 4px; } DIV.tabs UL { margin : 0px; padding-left : 10px; list-style : none; } DIV.tabs LI, DIV.tabs FORM { display : inline; margin : 0px; padding : 0px; } DIV.tabs FORM { float : right; } DIV.tabs A { float : left; background : url("tab_r.gif") no-repeat right top; border-bottom : 1px solid #84B0C7; font-size : x-small; font-weight : bold; text-decoration : none; } DIV.tabs A:hover { background-position: 100% -150px; } DIV.tabs A:link, DIV.tabs A:visited, DIV.tabs A:active, DIV.tabs A:hover { color: #1A419D; } DIV.tabs SPAN { float : left; display : block; background : url("tab_l.gif") no-repeat left top; padding : 5px 9px; white-space : nowrap; } DIV.tabs INPUT { float : right; display : inline; font-size : 1em; } DIV.tabs TD { font-size : x-small; font-weight : bold; text-decoration : none; } /* Commented Backslash Hack hides rule from IE5-Mac \*/ DIV.tabs SPAN {float : none;} /* End IE5-Mac hack */ DIV.tabs A:hover SPAN { background-position: 0% -150px; } DIV.tabs LI.current A { background-position: 100% -150px; border-width : 0px; } DIV.tabs LI.current SPAN { background-position: 0% -150px; padding-bottom : 6px; } DIV.navpath { background : none; border : none; border-bottom : 1px solid #84B0C7; } rampartc-src-1.3.0/docs/api/html/group__openssl__x509.html0000644000076500007650000001746311202454500023304 0ustar shankarshankar Rampart/C: OpenSSL X509

OpenSSL X509


Enumerations

enum  openssl_x509_format_t { OPENSSL_X509_FORMAT_PEM = 0, OPENSSL_X509_FORMAT_DER, OPENSSL_X509_FORMAT_PKCS12 }
enum  openssl_x509_info_type_t {
  OPENSSL_X509_INFO_SUBJECT = 0, OPENSSL_X509_INFO_ISSUER, OPENSSL_X509_INFO_VALID_FROM, OPENSSL_X509_INFO_VALID_TO,
  OPENSSL_X509_INFO_FINGER, OPENSSL_X509_INFO_SIGNATURE, OPENSSL_X509_INFO_VERSION, OPENSSL_X509_INFO_PUBKEY,
  OPENSSL_X509_INFO_PUBKEY_ALGO, OPENSSL_X509_INFO_DATA_CERT, OPENSSL_X509_INFO_COMMON_NAME
}

Functions

AXIS2_EXTERN axis2_status_t openssl_x509_load_from_buffer (const axutil_env_t *env, axis2_char_t *b64_encoded_buf, X509 **cert)
AXIS2_EXTERN axis2_status_t openssl_x509_load_from_pem (const axutil_env_t *env, axis2_char_t *filename, X509 **cert)
AXIS2_EXTERN axis2_status_t openssl_x509_load_from_pkcs12 (const axutil_env_t *env, axis2_char_t *filename, axis2_char_t *password, X509 **cert, EVP_PKEY **pkey, STACK_OF(X509)**ca)
AXIS2_EXTERN axis2_status_t openssl_x509_load_certificate (const axutil_env_t *env, openssl_x509_format_t format, axis2_char_t *filename, axis2_char_t *password, X509 **cert)
AXIS2_EXTERN axis2_char_t * openssl_x509_get_cert_data (const axutil_env_t *env, X509 *cert)
AXIS2_EXTERN int openssl_x509_get_serial (const axutil_env_t *env, X509 *cert)
AXIS2_EXTERN unsigned long openssl_x509_get_subject_name_hash (const axutil_env_t *env, X509 *cert)
AXIS2_EXTERN axis2_status_t openssl_x509_get_pubkey (const axutil_env_t *env, X509 *cert, EVP_PKEY **pubkey)
AXIS2_EXTERN axis2_char_t * openssl_x509_get_subject_key_identifier (const axutil_env_t *env, X509 *cert)
AXIS2_EXTERN axis2_char_t * openssl_x509_get_info (const axutil_env_t *env, openssl_x509_info_type_t type, X509 *cert)
AXIS2_EXTERN axis2_char_t * openssl_x509_get_common_name (const axutil_env_t *env, X509 *cert)
AXIS2_EXTERN void openssl_x509_print (const axutil_env_t *env, X509 *cert)

Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__oxs__sign__part.html0000644000076500007650000002261411202454500024044 0ustar shankarshankar Rampart/C: Signature Part

Signature Part
[OMXMLSecurity]


Typedefs

typedef struct oxs_sign_part_t oxs_sign_part_t

Functions

AXIS2_EXTERN oxs_sign_part_t * oxs_sign_part_create (const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_sign_part_free (oxs_sign_part_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_sign_part_get_id (const oxs_sign_part_t *sign_part, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_sign_part_get_digest_mtd (const oxs_sign_part_t *sign_part, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_sign_part_get_digest_val (const oxs_sign_part_t *sign_part, const axutil_env_t *env)
AXIS2_EXTERN axiom_node_t * oxs_sign_part_get_node (const oxs_sign_part_t *sign_part, const axutil_env_t *env)
AXIS2_EXTERN axutil_array_list_t * oxs_sign_part_get_transforms (const oxs_sign_part_t *sign_part, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_sign_part_get_id_name (const oxs_sign_part_t *sign_part, const axutil_env_t *env)
AXIS2_EXTERN axiom_namespace_t * oxs_sign_part_get_sign_namespace (const oxs_sign_part_t *sign_part, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_sign_part_set_id (oxs_sign_part_t *sign_part, const axutil_env_t *env, axis2_char_t *id)
AXIS2_EXTERN axis2_status_t oxs_sign_part_set_digest_mtd (oxs_sign_part_t *sign_part, const axutil_env_t *env, axis2_char_t *digest_mtd)
AXIS2_EXTERN axis2_status_t oxs_sign_part_set_digest_val (oxs_sign_part_t *sign_part, const axutil_env_t *env, axis2_char_t *digest_val)
AXIS2_EXTERN axis2_status_t oxs_sign_part_set_node (oxs_sign_part_t *sign_part, const axutil_env_t *env, axiom_node_t *node)
AXIS2_EXTERN axis2_status_t oxs_sign_part_set_transforms (oxs_sign_part_t *sign_part, const axutil_env_t *env, axutil_array_list_t *transforms)
AXIS2_EXTERN axis2_status_t oxs_sign_part_set_id_name (oxs_sign_part_t *sign_part, const axutil_env_t *env, axis2_char_t *id_name)
AXIS2_EXTERN axis2_status_t oxs_sign_part_set_sign_namespace (oxs_sign_part_t *sign_part, const axutil_env_t *env, axiom_namespace_t *sig_ns)

Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/oxs__xml__encryption_8h.html0000644000076500007650000001155111202454500024152 0ustar shankarshankar Rampart/C: oxs_xml_encryption.h File Reference

oxs_xml_encryption.h File Reference

Does the XML encryption for OMXMLSecurity. More...

#include <axis2_defines.h>
#include <oxs_ctx.h>
#include <axutil_env.h>
#include <axiom_node.h>
#include <axiom_element.h>
#include <axutil_qname.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN axis2_status_t oxs_xml_enc_encrypt_node (const axutil_env_t *env, oxs_ctx_t *enc_ctx, axiom_node_t *node, axiom_node_t **enc_type_node, axiom_node_t *key_reference_node)
AXIS2_EXTERN axis2_status_t oxs_xml_enc_decrypt_node (const axutil_env_t *env, oxs_ctx_t *enc_ctx, axiom_node_t *enc_type_node, axiom_node_t **decrypted_node)
AXIS2_EXTERN axis2_status_t oxs_xml_enc_encrypt_data (const axutil_env_t *env, oxs_ctx_t *enc_ctx, oxs_buffer_t *content_buf, axiom_node_t **enc_type_node, axiom_node_t *key_reference_node)
AXIS2_EXTERN axis2_status_t oxs_xml_enc_decrypt_data (const axutil_env_t *env, oxs_ctx_t *enc_ctx, axiom_node_t *enc_type_node, oxs_buffer_t *result_buf)
AXIS2_EXTERN axis2_status_t oxs_xml_enc_encrypt_key (const axutil_env_t *env, oxs_asym_ctx_t *asym_ctx, axiom_node_t *parent, oxs_key_t *sym_key, axutil_array_list_t *id_list)
AXIS2_EXTERN axis2_status_t oxs_xml_enc_decrypt_key (const axutil_env_t *env, oxs_asym_ctx_t *asym_ctx, axiom_node_t *parent, axiom_node_t *encrypted_key_node, oxs_key_t *key)


Detailed Description

Does the XML encryption for OMXMLSecurity.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/openssl__pkcs12__keystore_8h-source.html0000644000076500007650000002355211202454500026304 0ustar shankarshankar Rampart/C: openssl_pkcs12_keystore.h Source File

openssl_pkcs12_keystore.h

Go to the documentation of this file.
00001 /*
00002  *   Copyright 2003-2004 The Apache Software Foundation.
00003  *
00004  *   Licensed under the Apache License, Version 2.0 (the "License");
00005  *   you may not use this file except in compliance with the License.
00006  *   You may obtain a copy of the License at
00007  *
00008  *       http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  *   Unless required by applicable law or agreed to in writing, software
00011  *   distributed under the License is distributed on an "AS IS" BASIS,
00012  *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  *   See the License for the specific language governing permissions and
00014  *   limitations under the License.
00015  */
00016 
00017 #include <openssl/rand.h>
00018 #include <openssl/evp.h>
00019 #include <openssl/pem.h>
00020 #include <openssl/bio.h>
00021 #include <openssl/rand.h>
00022 #include <openssl_constants.h>
00023 #include <openssl_pkey.h>
00024 #include <axis2_util.h>
00025 #include <openssl/pkcs12.h>
00026 #include <openssl/rsa.h>
00027 #include <openssl/x509.h>
00028 #include <openssl_pkcs12.h>
00029 #include <oxs_error.h>
00030 #include <oxs_x509_cert.h>
00031 #include <openssl_pkey.h>
00032 #include <openssl_x509.h>
00033 
00034 
00039 #ifndef OPENSSL_PKCS12_KEYSTORE_H
00040 #define OPENSSL_PKCS12_KEYSTORE_H
00041 
00042 #ifdef __cplusplus
00043 extern "C" {
00044 #endif
00045     
00046     typedef struct pkcs12_keystore pkcs12_keystore_t;
00047     
00048     AXIS2_EXTERN pkcs12_keystore_t * AXIS2_CALL pkcs12_keystore_create(
00049         const axutil_env_t *env, 
00050         axis2_char_t *filename, 
00051         axis2_char_t *password);
00052     
00053     axutil_array_list_t * AXIS2_CALL pkcs12_keystore_populate_cert_array(
00054         const axutil_env_t *env,
00055         STACK_OF(X509) *other_certs);
00056     
00057     oxs_x509_cert_t * AXIS2_CALL pkcs12_keystore_populate_oxs_cert(
00058         const axutil_env_t *env, 
00059         X509 *cert_in);
00060     
00061     AXIS2_EXTERN openssl_pkey_t * AXIS2_CALL pkcs12_keystore_get_owner_private_key(
00062         pkcs12_keystore_t *keystore,
00063         const axutil_env_t *env);
00064     
00065     AXIS2_EXTERN oxs_x509_cert_t * AXIS2_CALL pkcs12_keystore_get_owner_certificate(
00066         pkcs12_keystore_t *keystore, 
00067         const axutil_env_t *env);
00068     
00069     AXIS2_EXTERN oxs_x509_cert_t * AXIS2_CALL pkcs12_keystore_get_certificate_for_issuer_serial(
00070         pkcs12_keystore_t *keystore,
00071         const axutil_env_t *env,
00072         axis2_char_t *issuer,
00073         int serial_number);
00074     
00075     AXIS2_EXTERN oxs_x509_cert_t * AXIS2_CALL pkcs12_keystore_get_certificate_for_thumbprint(
00076         pkcs12_keystore_t *keystore, 
00077         const axutil_env_t *env, 
00078         axis2_char_t *thumbprint);
00079     
00080     AXIS2_EXTERN oxs_x509_cert_t * AXIS2_CALL pkcs12_keystore_get_certificate_for_subject_key_id(
00081         pkcs12_keystore_t *keystore,
00082         const axutil_env_t *env,
00083         axis2_char_t *ski);
00084 
00085     AXIS2_EXTERN oxs_x509_cert_t * AXIS2_CALL 
00086     pkcs12_keystore_get_other_certificate(
00087         pkcs12_keystore_t *keystore,
00088         const axutil_env_t *env);
00089      
00090     AXIS2_EXTERN pkcs12_keystore_t * AXIS2_CALL
00091     pkcs12_keystore_create_from_buffer(
00092         const axutil_env_t *env,
00093         axis2_char_t *buffer,
00094         axis2_char_t *password,
00095         int len);
00096 
00097     
00098         
00099 #ifdef __cplusplus
00100 }
00101 #endif
00102 
00103 #endif    /* OPENSSL_PKCS12_KEYSTORE_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/oxs__utility_8h.html0000644000076500007650000000615111202454500022444 0ustar shankarshankar Rampart/C: oxs_utility.h File Reference

oxs_utility.h File Reference

The utility module for OMXMLSecurity. More...

#include <axis2_defines.h>
#include <axutil_env.h>
#include <oxs_asym_ctx.h>
#include <oxs_key_mgr.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN axis2_char_t * oxs_util_generate_nonce (const axutil_env_t *env, int length)
AXIS2_EXTERN axis2_char_t * oxs_util_generate_id (const axutil_env_t *env, axis2_char_t *prefix)
AXIS2_EXTERN oxs_key_mgr_format_t oxs_util_get_format_by_file_extension (const axutil_env_t *env, axis2_char_t *file_name)
AXIS2_EXTERN axis2_char_t * oxs_util_get_newline_removed_string (const axutil_env_t *env, axis2_char_t *input)


Detailed Description

The utility module for OMXMLSecurity.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/rampart__sct__provider_8h-source.html0000644000076500007650000002375611202454500025750 0ustar shankarshankar Rampart/C: rampart_sct_provider.h Source File

rampart_sct_provider.h

Go to the documentation of this file.
00001 /*
00002 * Licensed to the Apache Software Foundation (ASF) under one or more
00003 * contributor license agreements.  See the NOTICE file distributed with
00004 * this work for additional information regarding copyright ownership.
00005 * The ASF licenses this file to You under the Apache License, Version 2.0
00006 * (the "License"); you may not use this file except in compliance with
00007 * the License.  You may obtain a copy of the License at
00008 *
00009 *      http://www.apache.org/licenses/LICENSE-2.0
00010 *
00011 * Unless required by applicable law or agreed to in writing, software
00012 * distributed under the License is distributed on an "AS IS" BASIS,
00013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014 * See the License for the specific language governing permissions and
00015 * limitations under the License.
00016 */
00017 
00018 #ifndef RAMPART_SCT_PROVIDER_H
00019 #define RAMPART_SCT_PROVIDER_H
00020 
00032 #include <axis2_defines.h>
00033 #include <axutil_env.h>
00034 #include <rampart_context.h>
00035 
00036 #ifdef __cplusplus
00037 extern "C"
00038 {
00039 #endif
00040 
00041     typedef struct rampart_sct_provider_ops rampart_sct_provider_ops_t;
00042     typedef struct rampart_sct_provider rampart_sct_provider_t;
00043 
00044     struct rampart_sct_provider_ops
00045     {
00046         /* This function will be called to get previously stored sct. If secure conversation token 
00047          * is referred by this method, then sct_id will be not null. However, if security context 
00048          * token (pre-agreed and established offline) is refered then sct_id might be NULL. 
00049          * is_encryption is passed, so that if pre-agreed sct is different for encryption and 
00050          * signature, then it could be accessed. sct_id_type can be RAMPART_SCT_ID_TYPE_LOCAL 
00051          * or RAMPART_SCT_ID_TYPE_GLOBAL. user_param will be whatever stored using 
00052          * rampart_context_set_security_context_token_user_params. 
00053          */
00054         obtain_security_context_token_fn obtain_security_context_token;
00055 
00056         /* This function will be used to store sct. Global id, local id will be given so function 
00057          * writer can store them in anyway. Get or Delete method will use any of the Global id or 
00058          * local id, so Store function writer should be ready for that. 
00059          */
00060         store_security_context_token_fn store_security_context_token;
00061 
00062         /* This function will be called to delete previously stored sct. sct_id_type can be 
00063          * RAMPART_SCT_ID_TYPE_LOCAL or RAMPART_SCT_ID_TYPE_GLOBAL
00064          */
00065         delete_security_context_token_fn delete_security_context_token;
00066 
00067         /* Validates whether security context token is valid or not. Normally, we can directly send 
00068          * true as response. But if syntax of security context token is altered/added by using 
00069          * extensible mechanism (e.g having sessions, etc.) then user can implement this method. 
00070          * Axiom representation of the sct will be given as the parameter, because if sct is 
00071          * extended, we don't know the syntax. Method writer can implement whatever needed.
00072          */
00073         validate_security_context_token_fn validate_security_context_token;
00074 
00075         /* This function will be called to get the user paramters. It will be called only when 
00076          * loading sct_provider module. If user_params are not needed, this method can return NULL
00077          */
00078         void* (AXIS2_CALL*
00079         get_user_params)(
00080             const axutil_env_t *env);
00081 
00082         /* This function will be called to free security context token provider module */
00083         axis2_status_t (AXIS2_CALL*
00084         free)(
00085             rampart_sct_provider_t *sct_provider,
00086             const axutil_env_t* env);
00087     };
00088 
00089     struct rampart_sct_provider
00090     {
00091         rampart_sct_provider_ops_t *ops;
00092                 axutil_param_t *param;
00093     };
00094 
00095     /*************************** Function macros **********************************/
00096 #define RAMPART_SCT_PROVIDER_FREE(sct_provider, env) \
00097         ((sct_provider)->ops->free(sct_provider, env))
00098 
00100 #ifdef __cplusplus
00101 }
00102 #endif
00103 
00104 #endif  /* RAMPART_SCT_PROVIDER_H */
00105 
00106 

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__oxs__ctx.html0000644000076500007650000014107211202454500022515 0ustar shankarshankar Rampart/C: OXS Context

OXS Context
[OMXMLSecurity]


Typedefs

typedef struct oxs_ctx_t oxs_ctx_t

Enumerations

enum  oxs_ctx_operation_t { OXS_CTX_OPERATION_NONE = 0, OXS_CTX_OPERATION_ENCRYPT, OXS_CTX_OPERATION_DECRYPT }
enum  oxs_ctx_mode_t { OXS_CTX_MODE_ENCRYPTED_DATA = 0, OXS_CTX_MODE_ENCRYPTED_KEY }

Functions

AXIS2_EXTERN axis2_status_t oxs_ctx_free (oxs_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN oxs_ctx_mode_t oxs_ctx_get_mode (oxs_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN oxs_ctx_operation_t oxs_ctx_get_operation (oxs_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN oxs_key_toxs_ctx_get_key (oxs_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_ctx_get_id (oxs_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_ctx_get_type (oxs_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_ctx_get_mime_type (oxs_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_ctx_get_encoding (oxs_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_ctx_get_recipient (oxs_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_ctx_get_ref_key_name (oxs_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_ctx_get_enc_mtd_algorithm (oxs_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_ctx_get_input_data (oxs_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_ctx_set_mode (oxs_ctx_t *ctx, const axutil_env_t *env, oxs_ctx_mode_t mode)
AXIS2_EXTERN axis2_status_t oxs_ctx_set_operation (oxs_ctx_t *ctx, const axutil_env_t *env, oxs_ctx_operation_t operation)
AXIS2_EXTERN axis2_status_t oxs_ctx_set_key (oxs_ctx_t *ctx, const axutil_env_t *env, oxs_key_t *key)
AXIS2_EXTERN axis2_status_t oxs_ctx_set_id (oxs_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *id)
AXIS2_EXTERN axis2_status_t oxs_ctx_set_type (oxs_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *type)
AXIS2_EXTERN axis2_status_t oxs_ctx_set_mime_type (oxs_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *mime_type)
AXIS2_EXTERN axis2_status_t oxs_ctx_set_encoding (oxs_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *encoding)
AXIS2_EXTERN axis2_status_t oxs_ctx_set_recipient (oxs_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *recipient)
AXIS2_EXTERN axis2_status_t oxs_ctx_set_ref_key_name (oxs_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *ref_key_name)
AXIS2_EXTERN axis2_status_t oxs_ctx_set_enc_mtd_algorithm (oxs_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *enc_mtd_algorithm)
AXIS2_EXTERN axis2_status_t oxs_ctx_set_input_data (oxs_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *input_data)
AXIS2_EXTERN oxs_ctx_toxs_ctx_create (const axutil_env_t *env)

Typedef Documentation

typedef struct oxs_ctx_t oxs_ctx_t

Type name for struct oxs_ctx


Function Documentation

AXIS2_EXTERN axis2_status_t oxs_ctx_free ( oxs_ctx_t ctx,
const axutil_env_t *  env 
)

Free function of the context

Parameters:
ctx The OMXMLSecurity context
env pointer to environment struct
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_char_t* oxs_ctx_get_enc_mtd_algorithm ( oxs_ctx_t ctx,
const axutil_env_t *  env 
)

Parameters:
ctx The OMXMLSecurity context
env pointer to environment struct
Returns:
of the context

AXIS2_EXTERN axis2_char_t* oxs_ctx_get_encoding ( oxs_ctx_t ctx,
const axutil_env_t *  env 
)

Parameters:
ctx The OMXMLSecurity context
env pointer to environment struct
Returns:
of the context

AXIS2_EXTERN axis2_char_t* oxs_ctx_get_id ( oxs_ctx_t ctx,
const axutil_env_t *  env 
)

Parameters:
ctx The OMXMLSecurity context
env pointer to environment struct
Returns:
of the context

AXIS2_EXTERN axis2_char_t* oxs_ctx_get_input_data ( oxs_ctx_t ctx,
const axutil_env_t *  env 
)

Parameters:
ctx The OMXMLSecurity context
env pointer to environment struct
Returns:
of the context

AXIS2_EXTERN oxs_key_t* oxs_ctx_get_key ( oxs_ctx_t ctx,
const axutil_env_t *  env 
)

Parameters:
ctx The OMXMLSecurity context
env pointer to environment struct
Returns:
of the context

AXIS2_EXTERN axis2_char_t* oxs_ctx_get_mime_type ( oxs_ctx_t ctx,
const axutil_env_t *  env 
)

Parameters:
ctx The OMXMLSecurity context
env pointer to environment struct
Returns:
of the context

AXIS2_EXTERN oxs_ctx_mode_t oxs_ctx_get_mode ( oxs_ctx_t ctx,
const axutil_env_t *  env 
)

Returns the mode of the context

Parameters:
ctx The OMXMLSecurity context
env pointer to environment struct
Returns:
mode of the context

AXIS2_EXTERN oxs_ctx_operation_t oxs_ctx_get_operation ( oxs_ctx_t ctx,
const axutil_env_t *  env 
)

Parameters:
ctx The OMXMLSecurity context
env pointer to environment struct
Returns:
operation of the context

AXIS2_EXTERN axis2_char_t* oxs_ctx_get_recipient ( oxs_ctx_t ctx,
const axutil_env_t *  env 
)

Parameters:
ctx The OMXMLSecurity context
env pointer to environment struct
Returns:
of the context

AXIS2_EXTERN axis2_char_t* oxs_ctx_get_ref_key_name ( oxs_ctx_t ctx,
const axutil_env_t *  env 
)

Parameters:
ctx The OMXMLSecurity context
env pointer to environment struct
Returns:
of the context

AXIS2_EXTERN axis2_char_t* oxs_ctx_get_type ( oxs_ctx_t ctx,
const axutil_env_t *  env 
)

Parameters:
ctx The OMXMLSecurity context
env pointer to environment struct
Returns:
of the context

AXIS2_EXTERN axis2_status_t oxs_ctx_set_enc_mtd_algorithm ( oxs_ctx_t ctx,
const axutil_env_t *  env,
axis2_char_t *  enc_mtd_algorithm 
)

Parameters:
ctx The OMXMLSecurity context
env pointer to environment struct
enc_mtd_algorithm the encryption method algorithm
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_ctx_set_encoding ( oxs_ctx_t ctx,
const axutil_env_t *  env,
axis2_char_t *  encoding 
)

Parameters:
ctx The OMXMLSecurity context
env pointer to environment struct
encoding the encoding used
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_ctx_set_id ( oxs_ctx_t ctx,
const axutil_env_t *  env,
axis2_char_t *  id 
)

Parameters:
ctx The OMXMLSecurity context
env pointer to environment struct
id the id of the context
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_ctx_set_input_data ( oxs_ctx_t ctx,
const axutil_env_t *  env,
axis2_char_t *  input_data 
)

Parameters:
ctx The OMXMLSecurity context
env pointer to environment struct
input_data the input data
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_ctx_set_key ( oxs_ctx_t ctx,
const axutil_env_t *  env,
oxs_key_t key 
)

Parameters:
ctx The OMXMLSecurity context
env pointer to environment struct
key the key used
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_ctx_set_mime_type ( oxs_ctx_t ctx,
const axutil_env_t *  env,
axis2_char_t *  mime_type 
)

Parameters:
ctx The OMXMLSecurity context
env pointer to environment struct
mime_type the mime type used
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_ctx_set_mode ( oxs_ctx_t ctx,
const axutil_env_t *  env,
oxs_ctx_mode_t  mode 
)

Parameters:
ctx The OMXMLSecurity context
env pointer to environment struct
mode the mode of operation, EncryptedData/EncryptedKey
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_ctx_set_operation ( oxs_ctx_t ctx,
const axutil_env_t *  env,
oxs_ctx_operation_t  operation 
)

Parameters:
ctx The OMXMLSecurity context
env pointer to environment struct
operation the operation Encrypt/Decrypt/Sign/Verify
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_ctx_set_recipient ( oxs_ctx_t ctx,
const axutil_env_t *  env,
axis2_char_t *  recipient 
)

Parameters:
ctx The OMXMLSecurity context
env pointer to environment struct
recipient name of recipient
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_ctx_set_ref_key_name ( oxs_ctx_t ctx,
const axutil_env_t *  env,
axis2_char_t *  ref_key_name 
)

Parameters:
ctx The OMXMLSecurity context
env pointer to environment struct
ref_key_name the key name
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_ctx_set_type ( oxs_ctx_t ctx,
const axutil_env_t *  env,
axis2_char_t *  type 
)

Parameters:
ctx The OMXMLSecurity context
env pointer to environment struct
type ???Depricated?
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/rampart__authn__provider_8h-source.html0000644000076500007650000002324411202454500026266 0ustar shankarshankar Rampart/C: rampart_authn_provider.h Source File

rampart_authn_provider.h

Go to the documentation of this file.
00001 /*
00002 * Licensed to the Apache Software Foundation (ASF) under one or more
00003 * contributor license agreements.  See the NOTICE file distributed with
00004 * this work for additional information regarding copyright ownership.
00005 * The ASF licenses this file to You under the Apache License, Version 2.0
00006 * (the "License"); you may not use this file except in compliance with
00007 * the License.  You may obtain a copy of the License at
00008 *
00009 *      http://www.apache.org/licenses/LICENSE-2.0
00010 *
00011 * Unless required by applicable law or agreed to in writing, software
00012 * distributed under the License is distributed on an "AS IS" BASIS,
00013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014 * See the License for the specific language governing permissions and
00015 * limitations under the License.
00016 */
00017 
00018 #ifndef RAMPART_AUTHN_PROVIDER_H
00019 #define RAMPART_AUTHN_PROVIDER_H
00020 
00031 #include <axutil_param.h>
00032 #include <axis2_defines.h>
00033 #include <axutil_error.h>
00034 #include <axutil_env.h>
00035 #include <axutil_utils.h>
00036 #include <axis2_msg_ctx.h>
00037 
00038 #ifdef __cplusplus
00039 extern "C"
00040 {
00041 #endif
00042     enum rampart_authn_provider_status
00043     {
00044         RAMPART_AUTHN_PROVIDER_DENIED = 0,
00045         RAMPART_AUTHN_PROVIDER_GRANTED,
00046         RAMPART_AUTHN_PROVIDER_FOUND,
00047         RAMPART_AUTHN_PROVIDER_USER_FOUND,
00048         RAMPART_AUTHN_PROVIDER_USER_NOT_FOUND,
00049         RAMPART_AUTHN_PROVIDER_GENERAL_ERROR
00050     };
00051 
00052     typedef enum rampart_authn_provider_status rampart_authn_provider_status_t;
00053 
00059     typedef struct rampart_authn_provider_ops rampart_authn_provider_ops_t;
00060     typedef struct rampart_authn_provider rampart_authn_provider_t;
00061 
00062     struct rampart_authn_provider_ops
00063     {
00074         rampart_authn_provider_status_t (AXIS2_CALL*
00075         rampart_authn_provider_check_password)(
00076             rampart_authn_provider_t *authn_provider,
00077             const axutil_env_t* env,
00078             axis2_msg_ctx_t *msg_ctx,
00079             const axis2_char_t *username,
00080             const axis2_char_t *password);
00081 
00094         rampart_authn_provider_status_t (AXIS2_CALL*
00095         rampart_authn_provider_check_password_digest)(
00096             rampart_authn_provider_t *authn_provider,
00097             const axutil_env_t* env,
00098             axis2_msg_ctx_t *msg_ctx,
00099             const axis2_char_t *username,
00100             const axis2_char_t *nonce,
00101             const axis2_char_t *created,
00102             const char *digest);
00103 
00110         axis2_status_t (AXIS2_CALL*
00111         free)(
00112             rampart_authn_provider_t *authn_provider,
00113             const axutil_env_t* env);
00114 
00115     };
00116 
00117     struct rampart_authn_provider
00118     {
00119         rampart_authn_provider_ops_t *ops;
00120         axutil_param_t *param;
00121     };
00122 
00123     /*************************** Function macros **********************************/
00124 #define RAMPART_AUTHN_PROVIDER_FREE(authn_provider, env) \
00125       ((authn_provider)->ops->free (authn_provider, env))
00126 
00127 #define RAMPART_AUTHN_PROVIDER_CHECK_PASSWORD(authn_provider, env, msg_ctx, username, password) \
00128       ((authn_provider)->ops->rampart_authn_provider_check_password( \
00129             authn_provider, env, msg_ctx, username, password))
00130 
00131 #define RAMPART_AUTHN_PROVIDER_CHECK_PASSWORD_DIGEST(authn_provider, env, msg_ctx, username, nonce, nonce_length, digest) \
00132       ((authn_provider)->ops->rampart_authn_provider_check_password_digest( \
00133             authn_provider, env, msg_ctx, username, nonce, nonce_length, digest))
00134 
00136 #ifdef __cplusplus
00137 }
00138 #endif
00139 
00140 #endif /* RAMPART_AUTHN_PROVIDER_H */
00141 

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__openssl__pkey.html0000644000076500007650000002344511202454500023544 0ustar shankarshankar Rampart/C: OpenSSL PKEY

OpenSSL PKEY
[OpenSSL wrapper]


Defines

#define OPENSSL_PKEY_TYPE_UNKNOWN   0
#define OPENSSL_PKEY_TYPE_PUBLIC_KEY   1
#define OPENSSL_PKEY_TYPE_PRIVATE_KEY   2

Typedefs

typedef struct openssl_pkey_t openssl_pkey_t

Functions

EVP_PKEY * openssl_pkey_get_key (const openssl_pkey_t *pkey, const axutil_env_t *env)
axis2_char_t * openssl_pkey_get_name (const openssl_pkey_t *pkey, const axutil_env_t *env)
int openssl_pkey_get_size (const openssl_pkey_t *pkey, const axutil_env_t *env)
int openssl_pkey_get_type (const openssl_pkey_t *pkey, const axutil_env_t *env)
axis2_status_t openssl_pkey_set_key (openssl_pkey_t *pkey, const axutil_env_t *env, EVP_PKEY *key)
axis2_status_t openssl_pkey_set_name (openssl_pkey_t *pkey, const axutil_env_t *env, axis2_char_t *name)
axis2_status_t openssl_pkey_set_type (openssl_pkey_t *pkey, const axutil_env_t *env, int type)
axis2_status_t openssl_pkey_load (openssl_pkey_t *pkey, const axutil_env_t *env, axis2_char_t *filename, axis2_char_t *password)
axis2_status_t openssl_pkey_populate (openssl_pkey_t *pkey, const axutil_env_t *env, EVP_PKEY *key, axis2_char_t *name, int type)
axis2_status_t openssl_pkey_free (openssl_pkey_t *pkey, const axutil_env_t *env)
axis2_status_t openssl_pkey_increment_ref (openssl_pkey_t *pkey, const axutil_env_t *env)
AXIS2_EXTERN openssl_pkey_topenssl_pkey_create (const axutil_env_t *env)

Typedef Documentation

Type name for struct openssl_pkey


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/rampart__sct__provider__utility_8h-source.html0000644000076500007650000002620011202454500027655 0ustar shankarshankar Rampart/C: rampart_sct_provider_utility.h Source File

rampart_sct_provider_utility.h

Go to the documentation of this file.
00001 /*
00002 * Licensed to the Apache Software Foundation (ASF) under one or more
00003 * contributor license agreements.  See the NOTICE file distributed with
00004 * this work for additional information regarding copyright ownership.
00005 * The ASF licenses this file to You under the Apache License, Version 2.0
00006 * (the "License"); you may not use this file except in compliance with
00007 * the License.  You may obtain a copy of the License at
00008 *
00009 *      http://www.apache.org/licenses/LICENSE-2.0
00010 *
00011 * Unless required by applicable law or agreed to in writing, software
00012 * distributed under the License is distributed on an "AS IS" BASIS,
00013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014 * See the License for the specific language governing permissions and
00015 * limitations under the License.
00016 */
00017 
00018 #ifndef RAMPART_SCT_PROVIDER_UTILITY_H
00019 #define RAMPART_SCT_PROVIDER_UTILITY_H
00020 
00032 #include <axis2_defines.h>
00033 #include <axutil_env.h>
00034 #include <axis2_msg_ctx.h>
00035 #include <axis2_conf_ctx.h>
00036 #include <rampart_context.h>
00037 #include <secconv_security_context_token.h>
00038 #include <axutil_hash.h>
00039 
00040 #ifdef __cplusplus
00041 extern "C"
00042 {
00043 #endif
00044 
00055     AXIS2_EXTERN oxs_buffer_t *AXIS2_CALL
00056     sct_provider_get_secret(
00057         const axutil_env_t* env, 
00058         rp_property_t *token, 
00059         axis2_bool_t is_encryption, 
00060         rampart_context_t* rampart_context, 
00061         axis2_msg_ctx_t* msg_ctx);
00062 
00072     AXIS2_EXTERN oxs_buffer_t *AXIS2_CALL
00073         sct_provider_get_secret_using_id(
00074         const axutil_env_t* env, 
00075         axis2_char_t* sct_id, 
00076         rampart_context_t* rampart_context, 
00077         axis2_msg_ctx_t* msg_ctx);
00078 
00088     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00089     sct_provider_get_token(
00090         const axutil_env_t* env, 
00091         rp_property_t *token, 
00092         axis2_bool_t is_encryption, 
00093         rampart_context_t* rampart_context, 
00094         axis2_msg_ctx_t* msg_ctx);
00095 
00106     AXIS2_EXTERN axiom_node_t* AXIS2_CALL
00107     sct_provider_get_attached_reference(
00108         const axutil_env_t* env, 
00109         rp_property_t *token, 
00110         axis2_bool_t is_encryption, 
00111         rampart_context_t* rampart_context, 
00112         axis2_msg_ctx_t* msg_ctx);
00113 
00124     AXIS2_EXTERN axiom_node_t* AXIS2_CALL
00125     sct_provider_get_unattached_reference(
00126         const axutil_env_t* env, 
00127         rp_property_t *token, 
00128         axis2_bool_t is_encryption, 
00129         rampart_context_t* rampart_context, 
00130         axis2_msg_ctx_t* msg_ctx);
00131 
00144     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00145     sct_provider_validate_security_context_token(
00146         const axutil_env_t *env, 
00147         axiom_node_t *sct_node, 
00148         rampart_context_t *rampart_context, 
00149         axis2_msg_ctx_t *msg_ctx);
00150 
00162     AXIS2_EXTERN void* AXIS2_CALL
00163     sct_provider_obtain_sct_default(
00164         const axutil_env_t *env, 
00165         axis2_bool_t is_encryption, 
00166         axis2_msg_ctx_t* msg_ctx, 
00167         axis2_char_t *sct_id, 
00168         int sct_id_type,
00169         void* user_params);
00170 
00182     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00183     sct_provider_store_sct_default(
00184         const axutil_env_t *env, 
00185         axis2_msg_ctx_t* msg_ctx, 
00186         axis2_char_t *sct_global_id, 
00187         axis2_char_t *sct_local_id, 
00188         void *sct, 
00189         void *user_params);
00190 
00201     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00202     sct_provider_delete_sct_default(
00203         const axutil_env_t *env, 
00204         axis2_msg_ctx_t* msg_ctx, 
00205         axis2_char_t *sct_id, 
00206         int sct_id_type,
00207         void* user_params);
00208 
00217     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00218     sct_provider_validate_sct_default(
00219         const axutil_env_t *env, 
00220         axiom_node_t *sct_node, 
00221         axis2_msg_ctx_t *msg_ctx,
00222         void *user_params);
00223 
00224 
00226 #ifdef __cplusplus
00227 }
00228 #endif
00229 
00230 #endif  /* RAMPART_SCT_PROVIDER_UTILITY_H */
00231 
00232 

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__oxs__key__mgr.html0000644000076500007650000010132011202454500023503 0ustar shankarshankar Rampart/C: Key Manager

Key Manager
[OMXMLSecurity]


Typedefs

typedef struct oxs_key_mgr_t oxs_key_mgr_t

Enumerations

enum  oxs_key_mgr_format_t { OXS_KEY_MGR_FORMAT_UNKNOWN = 0, OXS_KEY_MGR_FORMAT_PEM, OXS_KEY_MGR_FORMAT_PKCS12 }

Functions

AXIS2_EXTERN openssl_pkey_toxs_key_mgr_load_private_key_from_string (const axutil_env_t *env, axis2_char_t *pem_buf, axis2_char_t *password)
AXIS2_EXTERN openssl_pkey_toxs_key_mgr_load_private_key_from_pem_file (const axutil_env_t *env, axis2_char_t *file_name, axis2_char_t *password)
AXIS2_EXTERN oxs_x509_cert_t * oxs_key_mgr_load_x509_cert_from_string (const axutil_env_t *env, axis2_char_t *pem_buf)
AXIS2_EXTERN oxs_x509_cert_t * oxs_key_mgr_load_x509_cert_from_pem_file (const axutil_env_t *env, axis2_char_t *filename)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_read_pkcs12_key_store (const axutil_env_t *env, axis2_char_t *pkcs12_file, axis2_char_t *password, oxs_x509_cert_t **cert, openssl_pkey_t **prv_key)
AXIS2_EXTERN oxs_key_mgr_t * oxs_key_mgr_create (const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_free (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_prv_key_password (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, axis2_char_t *password)
AXIS2_EXTERN axis2_char_t * oxs_key_mgr_get_prv_key_password (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_key_mgr_get_private_key_file (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_key_mgr_get_certificate_file (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_key_mgr_get_reciever_certificate_file (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_private_key_file (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, axis2_char_t *file_name)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_certificate_file (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, axis2_char_t *file_name)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_reciever_certificate_file (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, axis2_char_t *file_name)
AXIS2_EXTERN void * oxs_key_mgr_get_certificate (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN axis2_key_type_t oxs_key_mgr_get_certificate_type (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN void * oxs_key_mgr_get_prv_key (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN axis2_key_type_t oxs_key_mgr_get_prv_key_type (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN void * oxs_key_mgr_get_receiver_certificate (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN axis2_key_type_t oxs_key_mgr_get_receiver_certificate_type (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_certificate (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, void *certificate)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_certificate_type (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, axis2_key_type_t type)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_prv_key (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, void *key)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_prv_key_type (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, axis2_key_type_t type)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_receiver_certificate (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, void *certificate)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_receiver_certificate_type (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, axis2_key_type_t type)
AXIS2_EXTERN oxs_key_mgr_format_t oxs_key_mgr_get_format (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_format (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, oxs_key_mgr_format_t format)
AXIS2_EXTERN void * oxs_key_mgr_get_pem_buf (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_pem_buf (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, void *pem_buf)
AXIS2_EXTERN pkcs12_keystore_t * oxs_key_mgr_get_key_store (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_key_store (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, pkcs12_keystore_t *key_store)
AXIS2_EXTERN void * oxs_key_mgr_get_key_store_buff (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN oxs_x509_cert_t * oxs_key_mgr_get_receiver_certificate_from_ski (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, axis2_char_t *ski)
AXIS2_EXTERN oxs_x509_cert_t * oxs_key_mgr_get_receiver_certificate_from_issuer_serial (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, axis2_char_t *issuer, int serial)
AXIS2_EXTERN int oxs_key_mgr_get_key_store_buff_len (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_key_store_buff (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, void *key_store_buf, int len)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_increment_ref (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)

Function Documentation

AXIS2_EXTERN oxs_key_mgr_t* oxs_key_mgr_create ( const axutil_env_t *  env  ) 

Creates the key manager strucutre. pointer to environment struct

Returns:
pointer to the key manager (oxs_key_mgr_t *)

AXIS2_EXTERN axis2_status_t oxs_key_mgr_free ( oxs_key_mgr_t *  key_mgr,
const axutil_env_t *  env 
)

Free the key manager struct pointer to key manager struct which is going to free pointer to environment struct

Returns:
status of the free operation

AXIS2_EXTERN axis2_char_t* oxs_key_mgr_get_private_key_file ( oxs_key_mgr_t *  key_mgr,
const axutil_env_t *  env 
)

Returns the private key file location pointer to key manager struct pointer to environment struct

Returns:
location of the private key file

AXIS2_EXTERN axis2_char_t* oxs_key_mgr_get_prv_key_password ( oxs_key_mgr_t *  key_mgr,
const axutil_env_t *  env 
)

Return the private key file password pointer to key manager struct pointer to environment struct

Returns:
password of the private key file

AXIS2_EXTERN openssl_pkey_t* oxs_key_mgr_load_private_key_from_pem_file ( const axutil_env_t *  env,
axis2_char_t *  file_name,
axis2_char_t *  password 
)

Loads a private key from a file (in PEM format) pointer to environment struct the name of the file the passowrd for the file

Returns:
the generated key

AXIS2_EXTERN openssl_pkey_t* oxs_key_mgr_load_private_key_from_string ( const axutil_env_t *  env,
axis2_char_t *  pem_buf,
axis2_char_t *  password 
)

Loads a private key from a string buffer which of PEM format. -----BEGIN RSA PRIVATE KEY----- -----END RSA PRIVATE KEY----- pointer to environment struct the string buffer which of PEM format the password for the key file

Returns:
the generated key

AXIS2_EXTERN oxs_x509_cert_t* oxs_key_mgr_load_x509_cert_from_pem_file ( const axutil_env_t *  env,
axis2_char_t *  filename 
)

Loads an X509 certificate from a file pointer to environment struct the name of the file

Returns:
the generated X509 certificate

AXIS2_EXTERN oxs_x509_cert_t* oxs_key_mgr_load_x509_cert_from_string ( const axutil_env_t *  env,
axis2_char_t *  pem_buf 
)

Loads an X509 certificate from a string buffer -----BEGIN CERTIFICATE----- -----END CERTIFICATE----- pointer to environment struct PEM formatted string buffer

Returns:
the generated X509 certificate

AXIS2_EXTERN axis2_status_t oxs_key_mgr_read_pkcs12_key_store ( const axutil_env_t *  env,
axis2_char_t *  pkcs12_file,
axis2_char_t *  password,
oxs_x509_cert_t **  cert,
openssl_pkey_t **  prv_key 
)

Read a PKCS12 key store and populate a key and a certificate. pointer to environment struct name of the pkcs12 file password for the key/certificate pair in the key store the certificate the private key

Returns:
the generated X509 certificate

AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_prv_key_password ( oxs_key_mgr_t *  key_mgr,
const axutil_env_t *  env,
axis2_char_t *  password 
)

Set the password used to encrypt the private key (if any) Pointer to key manager struct pointer to environment struct password used to encrypt the private key

Returns:
status of the operation


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/openssl__hmac_8h-source.html0000644000076500007650000001573511202454500024031 0ustar shankarshankar Rampart/C: openssl_hmac.h Source File

openssl_hmac.h

Go to the documentation of this file.
00001 /*
00002  *   Copyright 2003-2004 The Apache Software Foundation.
00003  *
00004  *   Licensed under the Apache License, Version 2.0 (the "License");
00005  *   you may not use this file except in compliance with the License.
00006  *   You may obtain a copy of the License at
00007  *
00008  *       http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  *   Unless required by applicable law or agreed to in writing, software
00011  *   distributed under the License is distributed on an "AS IS" BASIS,
00012  *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  *   See the License for the specific language governing permissions and
00014  *   limitations under the License.
00015  */
00016 
00017 #include <openssl/sha.h>
00018 #include <openssl/hmac.h>
00019 #include <axutil_utils_defines.h>
00020 #include <axis2_defines.h>
00021 #include <axutil_env.h>
00022 #include <oxs_buffer.h>
00023 #include <oxs_key.h>
00024 
00029 #ifndef OPENSSL_HMAC
00030 #define OPENSSL_HMAC
00031 
00032 #ifdef __cplusplus
00033 extern "C" {
00034 #endif
00035 
00042         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00043         openssl_hmac_sha1(const axutil_env_t *env,
00044              oxs_key_t *secret,
00045              oxs_buffer_t *input,
00046              oxs_buffer_t *output); 
00047 
00048                 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00049                 openssl_p_sha1(const axutil_env_t *env,
00050                          oxs_key_t *secret,
00051                          axis2_char_t *label,
00052                          axis2_char_t *seed,
00053                          oxs_key_t *derived_key);
00054 
00055         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00056         openssl_p_hash(const axutil_env_t *env,
00057                         unsigned char *secret,
00058             unsigned int secret_len,
00059                         unsigned char *seed, 
00060                         unsigned int seed_len, 
00061                         unsigned char *output,
00062                         unsigned int output_len);
00063 
00064     /* @} */
00065 #ifdef __cplusplus
00066 }
00067 #endif
00068 
00069 #endif    /* OPENSSL_HMAC */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/rampart__callback_8h.html0000644000076500007650000001052411202454500023331 0ustar shankarshankar Rampart/C: rampart_callback.h File Reference

rampart_callback.h File Reference

The callback module for a password. More...

#include <axutil_utils_defines.h>
#include <axis2_defines.h>
#include <axutil_param.h>

Go to the source code of this file.

Classes

struct  rampart_callback_ops
struct  rampart_callback

Defines

#define RAMPART_CALLBACK_FREE(callback, env)   ((callback)->ops->free (callback, env))
#define RAMPART_CALLBACK_CALLBACK_PASSWORD(callback, env, username, param)   ((callback)->ops->callback_password(callback, env, username, param))
#define RAMPART_CALLBACK_CALLBACK_PKCS12_PASSWORD(callback, env, username, param)   ((callback)->ops->callback_pkcs12_password(callback, env, username, param))

Typedefs

typedef struct rampart_callback_ops rampart_callback_ops_t
typedef struct rampart_callback rampart_callback_t


Detailed Description

The callback module for a password.


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/oxs__c14n_8h.html0000644000076500007650000000741711202454500021514 0ustar shankarshankar Rampart/C: oxs_c14n.h File Reference

oxs_c14n.h File Reference

Cannonicalization implementation for OMXMLSecurity. More...

#include <axis2_const.h>
#include <axutil_error.h>
#include <axutil_utils_defines.h>
#include <axutil_utils.h>
#include <axutil_env.h>
#include <axutil_string.h>
#include <axiom_document.h>
#include <axutil_array_list.h>
#include <axutil_stream.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN axis2_status_t oxs_c14n_apply_stream_algo (const axutil_env_t *env, const axiom_document_t *doc, axutil_stream_t *stream, const axutil_array_list_t *ns_prefixes, const axiom_node_t *node, const axis2_char_t *algo)
AXIS2_EXTERN axis2_status_t oxs_c14n_apply_algo (const axutil_env_t *env, const axiom_document_t *doc, axis2_char_t **outbuf, const axutil_array_list_t *ns_prefixes, const axiom_node_t *node, const axis2_char_t *algo)
AXIS2_EXTERN axis2_status_t oxs_c14n_apply_stream (const axutil_env_t *env, const axiom_document_t *doc, axis2_bool_t comments, axutil_stream_t *stream, const axis2_bool_t exclusive, const axutil_array_list_t *ns_prefixes, const axiom_node_t *node)
AXIS2_EXTERN axis2_status_t oxs_c14n_apply (const axutil_env_t *env, const axiom_document_t *doc, const axis2_bool_t comments, axis2_char_t **outbuf, const axis2_bool_t exclusive, const axutil_array_list_t *ns_prefixes, const axiom_node_t *node)


Detailed Description

Cannonicalization implementation for OMXMLSecurity.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/rampart__engine_8h-source.html0000644000076500007650000001200311202454500024332 0ustar shankarshankar Rampart/C: rampart_engine.h Source File

rampart_engine.h

Go to the documentation of this file.
00001 /*
00002  * Copyright 2004,2005 The Apache Software Foundation.
00003  *
00004  * Licensed under the Apache License, Version 2.0 (the "License");
00005  * you may not use this file except in compliance with the License.
00006  * You may obtain a copy of the License at
00007  *
00008  *      http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  * Unless required by applicable law or agreed to in writing, software
00011  * distributed under the License is distributed on an "AS IS" BASIS,
00012  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  * See the License for the specific language governing permissions and
00014  * limitations under the License.
00015  */
00016 
00017 #ifndef RAMPART_ENGINE_H
00018 #define RAMPART_ENGINE_H
00019 
00032 #include <rp_includes.h>
00033 #include <rampart_context.h>
00034 #include <rampart_constants.h>
00035 #include <axis2_msg_ctx.h>
00036 
00037 
00038 #ifdef __cplusplus
00039 extern "C"
00040 {
00041 #endif
00042 
00050     AXIS2_EXTERN rampart_context_t *AXIS2_CALL
00051     rampart_engine_build_configuration(
00052         const axutil_env_t *env,
00053         axis2_msg_ctx_t *msg_ctx,
00054         axis2_bool_t is_inflow);
00055 
00056 #ifdef __cplusplus
00057 }
00058 #endif
00059 #endif
00060 
00061 
00062 
00063 
00064 
00065 
00066 

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__rampart__context.html0000644000076500007650000105256011202454500024244 0ustar shankarshankar Rampart/C: Rampart Context

Rampart Context
[Rampart Utilities]


Typedefs

typedef struct rampart_context_t rampart_context_t
typedef axis2_char_t *(* password_callback_fn )(const axutil_env_t *env, const axis2_char_t *username, void *user_params)
typedef axis2_status_t(* rampart_is_replayed_fn )(const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, void *user_params)
typedef
rampart_authn_provider_status_t(* 
auth_password_func )(const axutil_env_t *env, const axis2_char_t *username, const axis2_char_t *password, void *ctx)
typedef
rampart_authn_provider_status_t(* 
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, void *ctx)
typedef axis2_status_t(* store_security_context_token_fn )(const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axis2_char_t *sct_global_id, axis2_char_t *sct_local_id, void *sct, void *user_params)
typedef void *(* obtain_security_context_token_fn )(const axutil_env_t *env, axis2_bool_t is_encryption, axis2_msg_ctx_t *msg_ctx, axis2_char_t *sct_id, int sct_id_type, void *user_params)
typedef axis2_status_t(* delete_security_context_token_fn )(const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axis2_char_t *sct_id, int sct_id_type, void *user_params)
typedef axis2_status_t(* validate_security_context_token_fn )(const axutil_env_t *env, axiom_node_t *sct_node, axis2_msg_ctx_t *msg_ctx, void *user_params)

Functions

AXIS2_EXTERN rampart_context_t * rampart_context_create (const axutil_env_t *env)
AXIS2_EXTERN void rampart_context_free (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_policy_node (rampart_context_t *rampart_context, const axutil_env_t *env, axiom_node_t *policy_node)
AXIS2_EXTERN axis2_status_t rampart_context_set_prv_key (rampart_context_t *rampart_context, const axutil_env_t *env, void *prv_key)
AXIS2_EXTERN axis2_status_t 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 rampart_context_set_certificate (rampart_context_t *rampart_context, const axutil_env_t *env, void *certificate)
AXIS2_EXTERN axis2_status_t 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 rampart_context_set_receiver_certificate (rampart_context_t *rampart_context, const axutil_env_t *env, void *receiver_certificate)
AXIS2_EXTERN axis2_status_t 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 rampart_context_set_user (rampart_context_t *rampart_context, const axutil_env_t *env, axis2_char_t *user)
AXIS2_EXTERN axis2_status_t rampart_context_set_password (rampart_context_t *rampart_context, const axutil_env_t *env, axis2_char_t *password)
AXIS2_EXTERN axis2_status_t 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 rampart_context_set_pwcb_function (rampart_context_t *rampart_context, const axutil_env_t *env, password_callback_fn pwcb_function, void *user_params)
AXIS2_EXTERN axis2_status_t rampart_context_set_replay_detect_function (rampart_context_t *rampart_context, const axutil_env_t *env, rampart_is_replayed_fn is_replayed_function, void *user_params)
AXIS2_EXTERN void * rampart_context_get_rd_user_params (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t 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 rampart_context_set_ttl (rampart_context_t *rampart_context, const axutil_env_t *env, int ttl)
AXIS2_EXTERN axis2_status_t rampart_context_set_need_millisecond_precision (rampart_context_t *rampart_context, const axutil_env_t *env, axis2_bool_t need_millisecond_precision)
AXIS2_EXTERN axis2_status_t rampart_context_set_clock_skew_buffer (rampart_context_t *rampart_context, const axutil_env_t *env, int skew_buffer)
AXIS2_EXTERN axis2_status_t 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 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 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 rampart_context_add_key (rampart_context_t *rampart_context, const axutil_env_t *env, oxs_key_t *key)
AXIS2_EXTERN axiom_node_t * rampart_context_get_policy_node (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN void * rampart_context_get_prv_key (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_key_type_t rampart_context_get_prv_key_type (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN void * rampart_context_get_certificate (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_key_type_t rampart_context_get_certificate_type (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN void * rampart_context_get_receiver_certificate (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_key_type_t rampart_context_get_receiver_certificate_type (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_user (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_password (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_prv_key_password (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN password_callback_fn rampart_context_get_pwcb_function (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN rampart_is_replayed_fn rampart_context_get_replay_detect_function (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN void * rampart_context_get_pwcb_user_params (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN int rampart_context_get_ttl (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t rampart_context_get_need_millisecond_precision (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN int rampart_context_get_clock_skew_buffer (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_rd_val (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_password_type (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axutil_array_list_t * rampart_context_get_keys (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN oxs_key_trampart_context_get_key (rampart_context_t *rampart_context, const axutil_env_t *env, axis2_char_t *key_id)
AXIS2_EXTERN oxs_key_trampart_context_get_key_using_hash (rampart_context_t *rampart_context, const axutil_env_t *env, axis2_char_t *hash)
AXIS2_EXTERN rp_secpolicy_t * rampart_context_get_secpolicy (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_secpolicy (rampart_context_t *rampart_context, const axutil_env_t *env, rp_secpolicy_t *secpolicy)
AXIS2_EXTERN rampart_callback_t * rampart_context_get_password_callback (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t 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 rampart_context_get_auth_password_function (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t 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 rampart_context_get_auth_digest_function (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t 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 * 
rampart_context_get_authn_provider (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN void * rampart_context_get_replay_detector (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN void * rampart_context_get_sct_provider (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t 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 rampart_context_set_replay_detector (rampart_context_t *rampart_context, const axutil_env_t *env, void *replay_detector)
AXIS2_EXTERN axis2_status_t rampart_context_set_sct_provider (rampart_context_t *rampart_context, const axutil_env_t *env, void *sct_module)
AXIS2_EXTERN axis2_bool_t rampart_context_get_require_timestamp (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t rampart_context_get_require_ut (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN rp_property_type_t rampart_context_get_binding_type (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t rampart_context_is_include_timestamp (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t rampart_context_is_include_username_token (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t rampart_context_is_include_supporting_token (rampart_context_t *rampart_context, const axutil_env_t *env, axis2_bool_t server_side, axis2_bool_t is_inpath, rp_property_type_t token_type)
AXIS2_EXTERN axis2_bool_t rampart_context_is_include_protection_saml_token (rampart_context_t *rampart_context, axis2_bool_t server_side, axis2_bool_t is_inpath, const axutil_env_t *env)
AXIS2_EXTERN rp_property_t * rampart_context_get_supporting_token (rampart_context_t *rampart_context, const axutil_env_t *env, rp_property_type_t token_type)
AXIS2_EXTERN axis2_char_t * rampart_context_get_password_callback_class (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_authn_module_name (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_replay_detector_name (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_sct_provider_name (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t rampart_context_is_encrypt_before_sign (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t rampart_context_is_encrypt_signature (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t 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 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 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 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 * 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 rp_property_t * rampart_context_get_endorsing_token (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t rampart_context_check_is_derived_keys (const axutil_env_t *env, rp_property_t *token)
AXIS2_EXTERN axis2_char_t * rampart_context_get_derived_key_version (const axutil_env_t *env, rp_property_t *token)
AXIS2_EXTERN axis2_char_t * rampart_context_get_enc_sym_algo (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_enc_asym_algo (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_asym_sig_algo (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_digest_mtd (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_encryption_user (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t 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 * rampart_context_get_key_identifier (rampart_context_t *rampart_context, rp_property_t *token, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t rampart_context_is_token_type_supported (rp_property_type_t token_type, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t 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 * rampart_context_get_layout (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t rampart_context_check_whether_to_encrypt (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t rampart_context_check_whether_to_sign (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_user_from_file (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_password_type_from_file (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_certificate_file (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_receiver_certificate_file (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_private_key_file (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_ttl_from_file (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_clock_skew_buffer_from_file (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_need_millisecond_precision_from_file (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_rd_val_from_file (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN oxs_key_trampart_context_get_encryption_session_key (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_encryption_session_key (rampart_context_t *rampart_context, const axutil_env_t *env, oxs_key_t *session_key)
AXIS2_EXTERN oxs_key_trampart_context_get_signature_session_key (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_signature_session_key (rampart_context_t *rampart_context, const axutil_env_t *env, oxs_key_t *session_key)
AXIS2_EXTERN axis2_status_t rampart_context_increment_ref (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t rampart_context_is_sig_confirmation_reqd (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_encryption_token_id (rampart_context_t *rampart_context, const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN axis2_char_t * rampart_context_get_signature_token_id (rampart_context_t *rampart_context, const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN axis2_status_t rampart_context_set_encryption_token_id (rampart_context_t *rampart_context, const axutil_env_t *env, axis2_char_t *sct_id, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN axis2_status_t rampart_context_set_signature_token_id (rampart_context_t *rampart_context, const axutil_env_t *env, axis2_char_t *sct_id, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN rampart_saml_token_t * rampart_context_get_saml_token (rampart_context_t *rampart_context, const axutil_env_t *env, rampart_st_type_t token_type)
AXIS2_EXTERN axis2_status_t rampart_context_add_saml_token (rampart_context_t *rampart_context, const axutil_env_t *env, rampart_saml_token_t *token)
AXIS2_EXTERN axis2_status_t rampart_context_set_saml_tokens (rampart_context_t *rampart_context, const axutil_env_t *env, axutil_array_list_t *tokens)
AXIS2_EXTERN
issued_token_callback_func 
rampart_context_get_issued_token_aquire_function (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_issued_token_aquire_function (rampart_context_t *rampart_context, const axutil_env_t *env, issued_token_callback_func issued_token_aquire)
AXIS2_EXTERN int rampart_context_get_encryption_derived_key_len (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN int rampart_context_get_signature_derived_key_len (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN rp_algorithmsuite_t * rampart_context_get_algorithmsuite (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN oxs_key_mgr_t * rampart_context_get_key_mgr (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_key_mgr (rampart_context_t *rampart_context, const axutil_env_t *env, oxs_key_mgr_t *key_mgr)
AXIS2_EXTERN axis2_char_t * rampart_context_get_pkcs12_file_name (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_custom_tokens (rampart_context_t *rampart_context, const axutil_env_t *env, axutil_array_list_t *tokens)
AXIS2_EXTERN axutil_array_list_t * rampart_context_get_custom_tokens (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t rampart_context_get_found_cert_in_shp (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_found_cert_in_shp (rampart_context_t *rampart_context, const axutil_env_t *env, axis2_bool_t found_cert_in_shp)
AXIS2_EXTERN oxs_x509_cert_t * rampart_context_get_receiver_cert_found_in_shp (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_receiver_cert_found_in_shp (rampart_context_t *rampart_context, const axutil_env_t *env, oxs_x509_cert_t *cert)
AXIS2_EXTERN void * rampart_context_get_key_store_buff (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_key_store_buff (rampart_context_t *rampart_context, const axutil_env_t *env, void *key_store_buf, int length)
AXIS2_EXTERN axis2_status_t rampart_context_set_store_security_context_token_fn (rampart_context_t *rampart_context, const axutil_env_t *env, store_security_context_token_fn store_fn)
AXIS2_EXTERN axis2_status_t rampart_context_set_obtain_security_context_token_fn (rampart_context_t *rampart_context, const axutil_env_t *env, obtain_security_context_token_fn get_fn)
AXIS2_EXTERN axis2_status_t rampart_context_set_delete_security_context_token_fn (rampart_context_t *rampart_context, const axutil_env_t *env, delete_security_context_token_fn delete_fn)
AXIS2_EXTERN axis2_status_t rampart_context_set_security_context_token_user_params (rampart_context_t *rampart_context, const axutil_env_t *env, void *user_params)
AXIS2_EXTERN axis2_status_t rampart_context_set_validate_security_context_token_fn (rampart_context_t *rampart_context, const axutil_env_t *env, validate_security_context_token_fn validate_fn)
AXIS2_EXTERN
store_security_context_token_fn 
rampart_context_get_store_security_context_token_fn (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN
obtain_security_context_token_fn 
rampart_context_get_obtain_security_context_token_fn (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN
delete_security_context_token_fn 
rampart_context_get_delete_security_context_token_fn (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN void * rampart_context_get_security_context_token_user_params (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN
validate_security_context_token_fn 
rampart_context_get_validate_security_context_token_fn (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t rampart_context_is_different_session_key_for_enc_and_sign (const axutil_env_t *env, rampart_context_t *rampart_context)
AXIS2_EXTERN axis2_status_t rampart_context_set_receiver_certificate_file (rampart_context_t *rampart_context, const axutil_env_t *env, axis2_char_t *receiver_certificate_file)

Function Documentation

AXIS2_EXTERN axis2_status_t rampart_context_add_key ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
oxs_key_t key 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
key 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_add_saml_token ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
rampart_saml_token_t *  token 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
token 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_bool_t rampart_context_check_is_derived_keys ( const axutil_env_t *  env,
rp_property_t *  token 
)

Parameters:
env pointer to environment struct,Must not be NULL.
token 
Returns:
whether derived key needed or not

AXIS2_EXTERN axis2_bool_t rampart_context_check_whether_to_encrypt ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_bool_t rampart_context_check_whether_to_sign ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN rampart_context_t* rampart_context_create ( const axutil_env_t *  env  ) 

Create a rampart_context.rampart_context is the wrapper of secpolicy and the main configuration for rampart.

Parameters:
env pointer to environment struct,Must not be NULL.
Returns:
ramaprt_context_t* on successful creation.Else NULL;

AXIS2_EXTERN void rampart_context_free ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Frees a rampart_context.

Parameters:
rampart_context the rampart_context pointer to environment struct,Must not be NULL.

AXIS2_EXTERN rp_algorithmsuite_t* rampart_context_get_algorithmsuite ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_char_t* rampart_context_get_asym_sig_algo ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN auth_digest_func rampart_context_get_auth_digest_function ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN auth_password_func rampart_context_get_auth_password_function ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
password_callback_module 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_char_t* rampart_context_get_authn_module_name ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN rampart_authn_provider_t* rampart_context_get_authn_provider ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN rp_property_type_t rampart_context_get_binding_type ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN void* rampart_context_get_certificate ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_char_t* rampart_context_get_certificate_file ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_key_type_t rampart_context_get_certificate_type ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axutil_array_list_t* rampart_context_get_custom_tokens ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Get the node or the token list as an array. If the size is 0 that means there are no custom tokens specified by the client

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
the custom tokens list

AXIS2_EXTERN delete_security_context_token_fn rampart_context_get_delete_security_context_token_fn ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Get the function used to delete security context token

Parameters:
rampart_context Pointer to rampart context struct.
env Pointer to environment struct
Returns:
funtion pointer used to delete stored sct

AXIS2_EXTERN axis2_char_t* rampart_context_get_derived_key_version ( const axutil_env_t *  env,
rp_property_t *  token 
)

Parameters:
env pointer to environment struct,Must not be NULL.
token 
Returns:
derived key version. NULL on error.

AXIS2_EXTERN axis2_char_t* rampart_context_get_digest_mtd ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t 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 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
soap_envelope 
nodes_to_encrypt 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t 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 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
soap_envelope 
nodes_to_sign 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_char_t* rampart_context_get_enc_asym_algo ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_char_t* rampart_context_get_enc_sym_algo ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN int rampart_context_get_encryption_derived_key_len ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN oxs_key_t* rampart_context_get_encryption_session_key ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_char_t* rampart_context_get_encryption_token_id ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
axis2_msg_ctx_t *  msg_ctx 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_char_t* rampart_context_get_encryption_user ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN rp_property_t* rampart_context_get_endorsing_token ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_bool_t rampart_context_get_found_cert_in_shp ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Get the found_cert_in_shp from rampart context.

Parameters:
rampart_context Pointer to rampart context struct.
env Pointer to environment struct
Returns:
axis2_bool_t

AXIS2_EXTERN issued_token_callback_func rampart_context_get_issued_token_aquire_function ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN oxs_key_t* rampart_context_get_key ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
axis2_char_t *  key_id 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
key_id 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_char_t* rampart_context_get_key_identifier ( rampart_context_t *  rampart_context,
rp_property_t *  token,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
token 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN oxs_key_mgr_t* rampart_context_get_key_mgr ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Get the key manager from rampart context.

Parameters:
rampart_context Pointer to rampart context struct.
Pointer to environment struct
Returns:
pointer Key manager struct

AXIS2_EXTERN oxs_key_t* rampart_context_get_key_using_hash ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
axis2_char_t *  hash 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
hash 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axutil_array_list_t* rampart_context_get_keys ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_char_t* rampart_context_get_layout ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t 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 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
soap_envelope 
nodes_to_encrypt 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t 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 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
soap_envelope 
nodes_to_sign 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN obtain_security_context_token_fn rampart_context_get_obtain_security_context_token_fn ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Get the function used to get security context token

Parameters:
rampart_context Pointer to rampart context struct.
env Pointer to environment struct
Returns:
funtion pointer used to get stored sct

AXIS2_EXTERN axis2_char_t* rampart_context_get_password ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN rampart_callback_t* rampart_context_get_password_callback ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_char_t* rampart_context_get_password_callback_class ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_char_t* rampart_context_get_password_type ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_char_t* rampart_context_get_pkcs12_file_name ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Get the pkcs12 file name from rampart context.

Parameters:
rampart_context Pointer to rampart context struct.
Pointer to environment struct
Returns:
PKCS12 file name

AXIS2_EXTERN axiom_node_t* rampart_context_get_policy_node ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_char_t* rampart_context_get_private_key_file ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN void* rampart_context_get_prv_key ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_char_t* rampart_context_get_prv_key_password ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_key_type_t rampart_context_get_prv_key_type ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN password_callback_fn rampart_context_get_pwcb_function ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN void* rampart_context_get_pwcb_user_params ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN void* rampart_context_get_rd_user_params ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
user parameters for replay detector function or NULL

AXIS2_EXTERN axis2_char_t* rampart_context_get_rd_val ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN oxs_x509_cert_t* rampart_context_get_receiver_cert_found_in_shp ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Get the certificate found in shp from rampart context.

Parameters:
rampart_context Pointer to rampart context struct.
env Pointer to environment struct
Returns:
oxs_x509_cert_t Client certificate found when processing sec header, otherwise NULL

AXIS2_EXTERN void* rampart_context_get_receiver_certificate ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_char_t * rampart_context_get_receiver_certificate_file ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error
Get the receiver certificate file name from rampart context.
Parameters:
rampart_context Pointer to rampart context struct.
env Pointer to environment struct
Returns:
Receiver certificate file name

AXIS2_EXTERN axis2_key_type_t rampart_context_get_receiver_certificate_type ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN rampart_is_replayed_fn rampart_context_get_replay_detect_function ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN void* rampart_context_get_replay_detector ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_char_t* rampart_context_get_replay_detector_name ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_bool_t rampart_context_get_require_timestamp ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_bool_t rampart_context_get_require_ut ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN rampart_saml_token_t* rampart_context_get_saml_token ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
rampart_st_type_t  token_type 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
token_type 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN void* rampart_context_get_sct_provider ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_char_t* rampart_context_get_sct_provider_name ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN rp_secpolicy_t* rampart_context_get_secpolicy ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN void* rampart_context_get_security_context_token_user_params ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Get the user parameters used to invoke security context token related funtions

Parameters:
rampart_context Pointer to rampart context struct.
env Pointer to environment struct
user_params pointer to user params
Returns:
pointer to user parameter.

AXIS2_EXTERN int rampart_context_get_signature_derived_key_len ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN oxs_key_t* rampart_context_get_signature_session_key ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_char_t* rampart_context_get_signature_token_id ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
axis2_msg_ctx_t *  msg_ctx 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN store_security_context_token_fn rampart_context_get_store_security_context_token_fn ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Get the function used to store security context token

Parameters:
rampart_context Pointer to rampart context struct.
env Pointer to environment struct
Returns:
untion pointer used to store sct

AXIS2_EXTERN rp_property_t* rampart_context_get_supporting_token ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
rp_property_type_t  token_type 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
token_type 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN rp_property_t* 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 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op.
Parameters:
for_encryption 
sever_side 
is_inpath AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN int rampart_context_get_ttl ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_char_t* rampart_context_get_user ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN validate_security_context_token_fn rampart_context_get_validate_security_context_token_fn ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Get the function used to validate security context token

Parameters:
rampart_context Pointer to rampart context struct.
env Pointer to environment struct
Returns:
funtion pointer used to validate sct

AXIS2_EXTERN axis2_status_t rampart_context_increment_ref ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_bool_t rampart_context_is_different_session_key_for_enc_and_sign ( const axutil_env_t *  env,
rampart_context_t *  rampart_context 
)

check whether different keys are needed for encryption and signature

Parameters:
env pointer to environment struct
rampart_context rampart context
Returns:
AXIS2_TRUE if different keys are needed. AXIS2_FALSE otherwise.

AXIS2_EXTERN axis2_bool_t rampart_context_is_encrypt_before_sign ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_bool_t rampart_context_is_encrypt_signature ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_bool_t rampart_context_is_include_protection_saml_token ( rampart_context_t *  rampart_context,
axis2_bool_t  server_side,
axis2_bool_t  is_inpath,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
server_side 
is_inpath 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_bool_t rampart_context_is_include_supporting_token ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
axis2_bool_t  server_side,
axis2_bool_t  is_inpath,
rp_property_type_t  token_type 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
server_side 
is_inpath 
token_type 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_bool_t rampart_context_is_include_timestamp ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_bool_t rampart_context_is_include_username_token ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_bool_t 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 
)

Parameters:
rampart_context 
token 
identifier 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_bool_t rampart_context_is_sig_confirmation_reqd ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_bool_t 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 
)

Parameters:
rampart_context 
token 
token_type 
server_side 
is_inpath 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_bool_t rampart_context_is_token_type_supported ( rp_property_type_t  token_type,
const axutil_env_t *  env 
)

Parameters:
token_type 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_auth_digest_function ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
auth_digest_func  authenticate_with_digest 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
authentication_with_digest 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_auth_password_function ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
auth_password_func  authenticate_with_password 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
authentication_with_password 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_authn_provider ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
rampart_authn_provider_t *  authn_provider 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
authn_provider 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_certificate ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
void *  certificate 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
certificate 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_certificate_file ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
axis2_char_t *  certificate_file 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
cerficate_file 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_certificate_type ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
axis2_key_type_t  type 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
type 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_custom_tokens ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
axutil_array_list_t *  tokens 
)

Set the a node list to the context. These nodes will be append to the Security header

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
tokens the token list as an array
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_delete_security_context_token_fn ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
delete_security_context_token_fn  delete_fn 
)

Set the function used to delete security context token

Parameters:
rampart_context Pointer to rampart context struct.
env Pointer to environment struct
delete_fn funtion pointer used to delete stored sct
Returns:
status of the operation

AXIS2_EXTERN axis2_status_t rampart_context_set_encryption_session_key ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
oxs_key_t session_key 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
session_key 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_encryption_token_id ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
axis2_char_t *  sct_id,
axis2_msg_ctx_t *  msg_ctx 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
sct_id 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_found_cert_in_shp ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
axis2_bool_t  found_cert_in_shp 
)

Set the certificate found status to rampart context.

Parameters:
rampart_context Pointer to rampart context struct.
env Pointer to environment struct
found_cert_in_shp boolean value which specify the certificate found status
Returns:
status of the operation

AXIS2_EXTERN axis2_status_t rampart_context_set_issued_token_aquire_function ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
issued_token_callback_func  issued_token_aquire 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
issued_token_aquire 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_key_mgr ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
oxs_key_mgr_t *  key_mgr 
)

Set the key manager to rampart context.

Parameters:
rampart_context Pointer to rampart context struct.
Pointer to environment struct
key_mgr Pointer to key manager struct.
Returns:
status of the operation. AXIS2_SUCCESS on success AXIS2_FAILURE otherwise.

AXIS2_EXTERN axis2_status_t rampart_context_set_obtain_security_context_token_fn ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
obtain_security_context_token_fn  get_fn 
)

Set the function used to get security context token

Parameters:
rampart_context Pointer to rampart context struct.
env Pointer to environment struct
get_fn funtion pointer used to get stored sct
Returns:
status of the operation

AXIS2_EXTERN axis2_status_t rampart_context_set_password ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
axis2_char_t *  password 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
password 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_password_callback ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
rampart_callback_t *  password_callback_module 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_password_type ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
axis2_char_t *  password_type 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
password_type 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_password_type_from_file ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_policy_node ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
axiom_node_t *  policy_node 
)

Sets the policy node which is an om_node containing policy.This om_node can be build outside rampart.

Parameters:
rampart_context the rampart_context
env pointer to environment struct,Must not be NULL.
policy_node is an axiom_node.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_private_key_file ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
axis2_char_t *  private_key_file 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
private_key_file 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_prv_key ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
void *  prv_key 
)

Sets private key of sender as a buffer.This can be set from outside rampart.

Parameters:
rampart_context the rampart_context
env pointer to environment struct,Must not be NULL.
prv_key is a void buffer.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_prv_key_password ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
axis2_char_t *  prv_key_password 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
prv_key_password 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_prv_key_type ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
axis2_key_type_t  type 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_pwcb_function ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
password_callback_fn  pwcb_function,
void *  user_params 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
pwcb_function 
ctx 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_rd_val ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
axis2_char_t *  rd_val 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
rd_val 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_rd_val_from_file ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_receiver_cert_found_in_shp ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
oxs_x509_cert_t *  cert 
)

Set the found_cert_in_shp to rampart context.

Parameters:
rampart_context Pointer to rampart context struct.
env Pointer to environment struct
cert pointer to the certficate
Returns:
status of the operation

AXIS2_EXTERN axis2_status_t rampart_context_set_receiver_certificate ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
void *  receiver_certificate 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op.
Parameters:
receiver_certificate returns status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_receiver_certificate_type ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
axis2_key_type_t  type 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
type 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_replay_detect_function ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
rampart_is_replayed_fn  is_replayed_function,
void *  user_params 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
is_replayed_function 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_replay_detector ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
void *  replay_detector 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
replay_detector 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_saml_tokens ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
axutil_array_list_t *  tokens 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
tokens 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_sct_provider ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
void *  sct_module 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
sct_module 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_secpolicy ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
rp_secpolicy_t *  secpolicy 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
secpolicy 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_security_context_token_user_params ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
void *  user_params 
)

Set the user parameters used to invoke security context token related funtions

Parameters:
rampart_context Pointer to rampart context struct.
env Pointer to environment struct
user_params pointer to user params
Returns:
status of the operation

AXIS2_EXTERN axis2_status_t rampart_context_set_signature_session_key ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
oxs_key_t session_key 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
session_key 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_signature_token_id ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
axis2_char_t *  sct_id,
axis2_msg_ctx_t *  msg_ctx 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
sct_id 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_store_security_context_token_fn ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
store_security_context_token_fn  store_fn 
)

Set the function used to store security context token

Parameters:
rampart_context Pointer to rampart context struct.
env Pointer to environment struct
store_fn funtion pointer used to store sct
Returns:
status of the operation

AXIS2_EXTERN axis2_status_t rampart_context_set_ttl ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
int  ttl 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
ttl 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_ttl_from_file ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_user ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
axis2_char_t *  user 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
user 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_user_from_file ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_validate_security_context_token_fn ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
validate_security_context_token_fn  validate_fn 
)

Set the function used to validate security context token

Parameters:
rampart_context Pointer to rampart context struct.
env Pointer to environment struct
validate_fn funtion pointer used to validate sct
Returns:
status of the operation


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/rampart__config_8h.html0000644000076500007650000001563211202454500023047 0ustar shankarshankar Rampart/C: rampart_config.h File Reference

rampart_config.h File Reference

The Rampart Config, in which user configurations are stored. More...

#include <axis2_util.h>
#include <axis2_defines.h>
#include <axutil_env.h>
#include <rampart_saml_token.h>
#include <rampart_issued_token.h>

Go to the source code of this file.

Typedefs

typedef struct rampart_config_t rampart_config_t

Functions

AXIS2_EXTERN rampart_config_t * rampart_config_create (const axutil_env_t *env)
AXIS2_EXTERN void rampart_config_free (rampart_config_t *rampart_config, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_config_set_username (rampart_config_t *rampart_config, const axutil_env_t *env, axis2_char_t *user)
AXIS2_EXTERN axis2_status_t rampart_config_set_password (rampart_config_t *rampart_config, const axutil_env_t *env, axis2_char_t *password)
AXIS2_EXTERN axis2_status_t rampart_config_set_password_type (rampart_config_t *rampart_config, const axutil_env_t *env, axis2_char_t *password_type)
AXIS2_EXTERN axis2_status_t rampart_config_set_ttl (rampart_config_t *rampart_config, const axutil_env_t *env, int ttl)
AXIS2_EXTERN int rampart_config_add_saml_token (rampart_config_t *rampart_config, const axutil_env_t *env, rampart_saml_token_t *saml)
AXIS2_EXTERN axis2_status_t rampart_config_set_issued_token_aquire_function (rampart_config_t *rampart_config, const axutil_env_t *env, issued_token_callback_func issued_token_aquire)
AXIS2_EXTERN axis2_char_t * rampart_config_get_username (rampart_config_t *rampart_config, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_config_get_password (rampart_config_t *rampart_config, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_config_get_password_type (rampart_config_t *rampart_config, const axutil_env_t *env)
AXIS2_EXTERN int rampart_config_get_ttl (rampart_config_t *rampart_config, const axutil_env_t *env)
AXIS2_EXTERN axutil_array_list_t * rampart_config_get_saml_tokens (rampart_config_t *rampart_config, const axutil_env_t *env)
AXIS2_EXTERN
issued_token_callback_func 
rampart_config_get_issued_token_aquire_function (rampart_config_t *rampart_config, const axutil_env_t *env)


Detailed Description

The Rampart Config, in which user configurations are stored.


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__rampart__config.html0000644000076500007650000007040611202454500024023 0ustar shankarshankar Rampart/C: Rampart Config

Rampart Config
[Rampart Utilities]


Typedefs

typedef struct rampart_config_t rampart_config_t

Functions

AXIS2_EXTERN rampart_config_t * rampart_config_create (const axutil_env_t *env)
AXIS2_EXTERN void rampart_config_free (rampart_config_t *rampart_config, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_config_set_username (rampart_config_t *rampart_config, const axutil_env_t *env, axis2_char_t *user)
AXIS2_EXTERN axis2_status_t rampart_config_set_password (rampart_config_t *rampart_config, const axutil_env_t *env, axis2_char_t *password)
AXIS2_EXTERN axis2_status_t rampart_config_set_password_type (rampart_config_t *rampart_config, const axutil_env_t *env, axis2_char_t *password_type)
AXIS2_EXTERN axis2_status_t rampart_config_set_ttl (rampart_config_t *rampart_config, const axutil_env_t *env, int ttl)
AXIS2_EXTERN int rampart_config_add_saml_token (rampart_config_t *rampart_config, const axutil_env_t *env, rampart_saml_token_t *saml)
AXIS2_EXTERN axis2_status_t rampart_config_set_issued_token_aquire_function (rampart_config_t *rampart_config, const axutil_env_t *env, issued_token_callback_func issued_token_aquire)
AXIS2_EXTERN axis2_char_t * rampart_config_get_username (rampart_config_t *rampart_config, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_config_get_password (rampart_config_t *rampart_config, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_config_get_password_type (rampart_config_t *rampart_config, const axutil_env_t *env)
AXIS2_EXTERN int rampart_config_get_ttl (rampart_config_t *rampart_config, const axutil_env_t *env)
AXIS2_EXTERN axutil_array_list_t * rampart_config_get_saml_tokens (rampart_config_t *rampart_config, const axutil_env_t *env)
AXIS2_EXTERN
issued_token_callback_func 
rampart_config_get_issued_token_aquire_function (rampart_config_t *rampart_config, const axutil_env_t *env)

Function Documentation

AXIS2_EXTERN int rampart_config_add_saml_token ( rampart_config_t *  rampart_config,
const axutil_env_t *  env,
rampart_saml_token_t *  saml 
)

Sets saml token needed to build/process the message

Parameters:
rampart_config rampart configuration structure
evn pointer to environment struct,Must not b e NULL.
saml SAML token used to build/process the message
Returns:
status of the op.

AXIS2_EXTERN rampart_config_t* rampart_config_create ( const axutil_env_t *  env  ) 

Create a rampart_config which can be used to get rampart specific configurations from user

Parameters:
env pointer to environment struct,Must not be NULL.
Returns:
ramaprt_config_t* on successful creation. Else NULL;

AXIS2_EXTERN void rampart_config_free ( rampart_config_t *  rampart_config,
const axutil_env_t *  env 
)

Frees a rampart_config.

Parameters:
rampart_config the rampart_config
env pointer to environment struct,Must not be NULL.

AXIS2_EXTERN issued_token_callback_func rampart_config_get_issued_token_aquire_function ( rampart_config_t *  rampart_config,
const axutil_env_t *  env 
)

Gets stored issued token aquire function pointer

Parameters:
rampart_config rampart configuration structure
evn pointer to environment struct,Must not be NULL. returns issued token aquire function pointer stored in rampart config

AXIS2_EXTERN axis2_char_t* rampart_config_get_password ( rampart_config_t *  rampart_config,
const axutil_env_t *  env 
)

Gets stored password

Parameters:
rampart_config rampart configuration structure
evn pointer to environment struct,Must not be NULL. returns password stored in rampart config

AXIS2_EXTERN axis2_char_t* rampart_config_get_password_type ( rampart_config_t *  rampart_config,
const axutil_env_t *  env 
)

Gets stored password type

Parameters:
rampart_config rampart configuration structure
evn pointer to environment struct,Must not be NULL. returns password type stored in rampart config

AXIS2_EXTERN axutil_array_list_t* rampart_config_get_saml_tokens ( rampart_config_t *  rampart_config,
const axutil_env_t *  env 
)

Gets stored SAML token

Parameters:
rampart_config rampart configuration structure
evn pointer to environment struct,Must not be NULL. returns SAML token stored in rampart config

AXIS2_EXTERN int rampart_config_get_ttl ( rampart_config_t *  rampart_config,
const axutil_env_t *  env 
)

Gets stored time to live

Parameters:
rampart_config rampart configuration structure
evn pointer to environment struct,Must not be NULL. returns time to live parameter stored in rampart config

AXIS2_EXTERN axis2_char_t* rampart_config_get_username ( rampart_config_t *  rampart_config,
const axutil_env_t *  env 
)

Gets stored username

Parameters:
rampart_config rampart configuration structure
evn pointer to environment struct,Must not be NULL. returns username stored in rampart config

AXIS2_EXTERN axis2_status_t rampart_config_set_issued_token_aquire_function ( rampart_config_t *  rampart_config,
const axutil_env_t *  env,
issued_token_callback_func  issued_token_aquire 
)

sets function pointer used to aquire issued token

Parameters:
rampart_config rampart configuration structure
evn pointer to environment struct,Must not be NULL.
issued_token_aquire function pointer from which issued token will be obtained
Returns:
status of the op.

AXIS2_EXTERN axis2_status_t rampart_config_set_password ( rampart_config_t *  rampart_config,
const axutil_env_t *  env,
axis2_char_t *  password 
)

set password of the user. Will be used to build UsernameToken

Parameters:
rampart_config rampart configuration structure
evn pointer to environment struct,Must not be NULL.
password password of the user
Returns:
status of the op.

AXIS2_EXTERN axis2_status_t rampart_config_set_password_type ( rampart_config_t *  rampart_config,
const axutil_env_t *  env,
axis2_char_t *  password_type 
)

set password type needed. Will be used to build UsernameToken

Parameters:
rampart_config rampart configuration structure
evn pointer to environment struct,Must not be NULL.
password_type type of the password. (hash/plain)
Returns:
status of the op.

AXIS2_EXTERN axis2_status_t rampart_config_set_ttl ( rampart_config_t *  rampart_config,
const axutil_env_t *  env,
int  ttl 
)

sets time to live parameter needed by Timestamp element

Parameters:
rampart_config rampart configuration structure
evn pointer to environment struct,Must not be NULL.
ttl time to live value in seconds
Returns:
status of the op.

AXIS2_EXTERN axis2_status_t rampart_config_set_username ( rampart_config_t *  rampart_config,
const axutil_env_t *  env,
axis2_char_t *  user 
)

set username needed to build username token

Parameters:
rampart_config rampart configuration structure
evn pointer to environment struct,Must not be NULL.
user name of the user
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/openssl__x509_8h.html0000644000076500007650000002152511202454500022322 0ustar shankarshankar Rampart/C: openssl_x509.h File Reference

openssl_x509.h File Reference

Extracts information from a X509 certificate. More...

#include <openssl/rand.h>
#include <openssl/evp.h>
#include <openssl/pem.h>
#include <openssl/bio.h>
#include <openssl_constants.h>
#include <openssl_pkey.h>
#include <axis2_util.h>
#include <openssl/pkcs12.h>
#include <oxs_error.h>

Go to the source code of this file.

Enumerations

enum  openssl_x509_format_t { OPENSSL_X509_FORMAT_PEM = 0, OPENSSL_X509_FORMAT_DER, OPENSSL_X509_FORMAT_PKCS12 }
enum  openssl_x509_info_type_t {
  OPENSSL_X509_INFO_SUBJECT = 0, OPENSSL_X509_INFO_ISSUER, OPENSSL_X509_INFO_VALID_FROM, OPENSSL_X509_INFO_VALID_TO,
  OPENSSL_X509_INFO_FINGER, OPENSSL_X509_INFO_SIGNATURE, OPENSSL_X509_INFO_VERSION, OPENSSL_X509_INFO_PUBKEY,
  OPENSSL_X509_INFO_PUBKEY_ALGO, OPENSSL_X509_INFO_DATA_CERT, OPENSSL_X509_INFO_COMMON_NAME
}

Functions

AXIS2_EXTERN axis2_status_t openssl_x509_load_from_buffer (const axutil_env_t *env, axis2_char_t *b64_encoded_buf, X509 **cert)
AXIS2_EXTERN axis2_status_t openssl_x509_load_from_pem (const axutil_env_t *env, axis2_char_t *filename, X509 **cert)
AXIS2_EXTERN axis2_status_t openssl_x509_load_from_pkcs12 (const axutil_env_t *env, axis2_char_t *filename, axis2_char_t *password, X509 **cert, EVP_PKEY **pkey, STACK_OF(X509)**ca)
AXIS2_EXTERN axis2_status_t openssl_x509_load_certificate (const axutil_env_t *env, openssl_x509_format_t format, axis2_char_t *filename, axis2_char_t *password, X509 **cert)
AXIS2_EXTERN axis2_char_t * openssl_x509_get_cert_data (const axutil_env_t *env, X509 *cert)
AXIS2_EXTERN int openssl_x509_get_serial (const axutil_env_t *env, X509 *cert)
AXIS2_EXTERN unsigned long openssl_x509_get_subject_name_hash (const axutil_env_t *env, X509 *cert)
AXIS2_EXTERN axis2_status_t openssl_x509_get_pubkey (const axutil_env_t *env, X509 *cert, EVP_PKEY **pubkey)
AXIS2_EXTERN axis2_char_t * openssl_x509_get_subject_key_identifier (const axutil_env_t *env, X509 *cert)
AXIS2_EXTERN axis2_char_t * openssl_x509_get_info (const axutil_env_t *env, openssl_x509_info_type_t type, X509 *cert)
AXIS2_EXTERN axis2_char_t * openssl_x509_get_common_name (const axutil_env_t *env, X509 *cert)
AXIS2_EXTERN void openssl_x509_print (const axutil_env_t *env, X509 *cert)


Detailed Description

Extracts information from a X509 certificate.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/rampart__issued_8h-source.html0000644000076500007650000001146211202454500024371 0ustar shankarshankar Rampart/C: rampart_issued.h Source File

rampart_issued.h

00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef RAMPART_ISSUED_H
00019 #define RAMPART_ISSUED_H
00020 
00021 #include <rampart_context.h>
00022 #include <rampart_issued_token.h>
00023 
00024 #ifdef __cplusplus
00025 extern "C"
00026 {
00027 #endif
00028 
00039         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00040         rampart_issued_supporting_token_build(
00041                 rampart_context_t *rampart_context, 
00042         const axutil_env_t *env, 
00043                 axiom_node_t *sec_node,
00044         axutil_array_list_t *sign_parts);
00045 
00046 
00047 
00048 #ifdef __cplusplus
00049 }
00050 #endif
00051 
00052 #endif
00053 

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/rampart__context_8h-source.html0000644000076500007650000022677411202454500024577 0ustar shankarshankar Rampart/C: rampart_context.h Source File

rampart_context.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef RAMPART_CONTEXT_H
00019 #define RAMPART_CONTEXT_H
00020 
00032 #include <rp_includes.h>
00033 #include <rp_secpolicy.h>
00034 #include <rampart_authn_provider.h>
00035 #include <axutil_property.h>
00036 #include <rampart_constants.h>
00037 #include <rampart_callback.h>
00038 #include <rampart_authn_provider.h>
00039 #include <axis2_key_type.h>
00040 #include <axis2_msg_ctx.h>
00041 #include <oxs_key.h>
00042 #include <axutil_array_list.h>
00043 #include <rampart_saml_token.h>
00044 #include <rampart_issued_token.h>
00045 #include <oxs_key_mgr.h>
00046 
00047 #ifdef __cplusplus
00048 extern "C"
00049 {
00050 #endif
00051 
00052     typedef struct rampart_context_t rampart_context_t;
00053 
00054     typedef axis2_char_t *(AXIS2_CALL*
00055         password_callback_fn)(
00056         const axutil_env_t *env,
00057         const axis2_char_t *username,
00058         void *user_params);
00059 
00060     typedef axis2_status_t (AXIS2_CALL*
00061         rampart_is_replayed_fn)(
00062         const axutil_env_t *env,
00063         axis2_msg_ctx_t* msg_ctx,
00064         rampart_context_t *rampart_context,
00065         void *user_params);
00066 
00067     typedef rampart_authn_provider_status_t (AXIS2_CALL*
00068         auth_password_func)(
00069         const axutil_env_t* env,
00070         const axis2_char_t *username,
00071         const axis2_char_t *password,
00072         void *ctx);
00073 
00074     typedef rampart_authn_provider_status_t (AXIS2_CALL*
00075         auth_digest_func)(
00076         const axutil_env_t* env,
00077         const axis2_char_t *username,
00078         const axis2_char_t *nonce,
00079         const axis2_char_t *created,
00080         const char *digest,
00081         void *ctx);
00082 
00083     /* This function will be used to store sct. Global id, local id will be given so function 
00084      * writer can store them in anyway. Get or Delete method will use any of the Global id or local 
00085      * id, so Store function writer should be ready for that.
00086      */
00087     typedef axis2_status_t (AXIS2_CALL*
00088         store_security_context_token_fn)(
00089         const axutil_env_t *env, 
00090         axis2_msg_ctx_t* msg_ctx, 
00091         axis2_char_t *sct_global_id, 
00092         axis2_char_t *sct_local_id, 
00093         void *sct, 
00094         void *user_params);
00095 
00096     /* This function will be called to get previously stored sct. If secure conversation token is 
00097      * referred by this method, then sct_id will be not null. However, if security context token 
00098      * (pre-agreed and established offline) is refered then sct_id might be NULL. is_encryption is 
00099      * passed, so that if pre-agreed sct is different for encryption and signature, then it could be 
00100      * accessed. sct_id_type will be RAMPART_SCT_ID_TYPE_LOCAL or RAMPART_SCT_ID_TYPE_GLOBAL if 
00101      * sct_id is NOT NULL. If sct_id is NULL, then sct_id_type will be RAMPART_SCT_ID_TYPE_UNKNOWN
00102      */
00103     typedef void* (AXIS2_CALL*
00104         obtain_security_context_token_fn)(
00105         const axutil_env_t *env, 
00106         axis2_bool_t is_encryption, 
00107         axis2_msg_ctx_t* msg_ctx, 
00108         axis2_char_t *sct_id, 
00109         int sct_id_type,
00110         void* user_params);
00111 
00112     /* This function will be called to delete previously stored sct. sct_id_type can be 
00113      * RAMPART_SCT_ID_TYPE_LOCAL or RAMPART_SCT_ID_TYPE_GLOBAL
00114      */
00115     typedef axis2_status_t (AXIS2_CALL*
00116         delete_security_context_token_fn)(
00117         const axutil_env_t *env, 
00118         axis2_msg_ctx_t* msg_ctx, 
00119         axis2_char_t *sct_id, 
00120         int sct_id_type,
00121         void* user_params);
00122 
00123     /* Validates whether security context token is valid or not. Normally, we can directly send 
00124      * true as response. But if syntax of security context token is altered/added by using 
00125      * extensible mechanism (e.g having sessions, etc.) then user can implement this method. 
00126      * Axiom representation of the sct will be given as the parameter, because if sct is 
00127      * extended, we don't know the syntax. Method writer can implement whatever needed.
00128      */
00129     typedef axis2_status_t (AXIS2_CALL*
00130     validate_security_context_token_fn)(
00131         const axutil_env_t *env, 
00132         axiom_node_t *sct_node, 
00133         axis2_msg_ctx_t *msg_ctx, 
00134         void *user_params);
00135 
00136         
00144     AXIS2_EXTERN rampart_context_t *AXIS2_CALL
00145     rampart_context_create(
00146         const axutil_env_t *env);
00147 
00148 
00155     AXIS2_EXTERN void AXIS2_CALL
00156     rampart_context_free(
00157         rampart_context_t *rampart_context,
00158         const axutil_env_t *env);
00159 
00160 
00161     /****************************************************************/
00162 
00173     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00174     rampart_context_set_policy_node(rampart_context_t *rampart_context,
00175                                     const axutil_env_t *env,
00176                                     axiom_node_t *policy_node);
00177 
00188     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00189     rampart_context_set_prv_key(rampart_context_t *rampart_context,
00190                                 const axutil_env_t *env,
00191                                 void *prv_key);
00201     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00202     rampart_context_set_prv_key_type(rampart_context_t *rampart_context,
00203                                      const axutil_env_t *env,
00204                                      axis2_key_type_t type);
00214     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00215     rampart_context_set_certificate(rampart_context_t *rampart_context,
00216                                     const axutil_env_t *env,
00217                                     void *certificate);
00227     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00228     rampart_context_set_certificate_type(rampart_context_t *rampart_context,
00229                                          const axutil_env_t *env,
00230                                          axis2_key_type_t type);
00241     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00242     rampart_context_set_receiver_certificate(rampart_context_t *rampart_context,
00243             const axutil_env_t *env,
00244             void *receiver_certificate);
00254     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00255     rampart_context_set_receiver_certificate_type(rampart_context_t *rampart_context,
00256             const axutil_env_t *env,
00257             axis2_key_type_t type);
00267     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00268     rampart_context_set_user(rampart_context_t *rampart_context,
00269                              const axutil_env_t *env,
00270                              axis2_char_t *user);
00280     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00281     rampart_context_set_password(rampart_context_t *rampart_context,
00282                                  const axutil_env_t *env,
00283                                  axis2_char_t *password);
00293     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00294     rampart_context_set_prv_key_password(rampart_context_t *rampart_context,
00295                                          const axutil_env_t *env,
00296                                          axis2_char_t *prv_key_password);
00307     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00308     rampart_context_set_pwcb_function(rampart_context_t *rampart_context,
00309                                       const axutil_env_t *env,
00310                                       password_callback_fn pwcb_function,
00311                                       void *user_params);
00321     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00322     rampart_context_set_replay_detect_function(rampart_context_t *rampart_context,
00323         const axutil_env_t *env,
00324         rampart_is_replayed_fn is_replayed_function,
00325         void *user_params);
00326     
00332     AXIS2_EXTERN void * AXIS2_CALL
00333     rampart_context_get_rd_user_params(
00334         rampart_context_t *rampart_context,
00335         const axutil_env_t *env);
00346     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00347     rampart_context_set_password_type(rampart_context_t *rampart_context,
00348                                       const axutil_env_t *env,
00349                                       axis2_char_t *password_type);
00359     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00360     rampart_context_set_ttl(
00361         rampart_context_t *rampart_context,
00362         const axutil_env_t *env,
00363         int ttl);
00364 
00365     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00366     rampart_context_set_need_millisecond_precision(
00367         rampart_context_t *rampart_context,
00368         const axutil_env_t *env,
00369         axis2_bool_t need_millisecond_precision);
00370 
00371     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00372     rampart_context_set_clock_skew_buffer(
00373         rampart_context_t *rampart_context,
00374         const axutil_env_t *env,
00375         int skew_buffer);
00376 
00386     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00387     rampart_context_set_rd_val(rampart_context_t *rampart_context,
00388                                const axutil_env_t *env,
00389                                axis2_char_t *rd_val);
00399     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00400     rampart_context_set_private_key_file(rampart_context_t *rampart_context,
00401                                          const axutil_env_t *env,
00402                                          axis2_char_t *private_key_file);
00412     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00413     rampart_context_set_certificate_file(rampart_context_t *rampart_context,
00414                                          const axutil_env_t *env,
00415                                          axis2_char_t *certificate_file);
00416     
00426     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00427     rampart_context_add_key(rampart_context_t *rampart_context,
00428                                 const axutil_env_t *env,
00429                                 oxs_key_t *key);
00430 
00431     /**********************************************************8*/
00432 
00433     /*Getters of the above set functions*/
00441     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00442     rampart_context_get_policy_node(
00443         rampart_context_t *rampart_context,
00444         const axutil_env_t *env);
00453     AXIS2_EXTERN void *AXIS2_CALL
00454     rampart_context_get_prv_key(
00455         rampart_context_t *rampart_context,
00456         const axutil_env_t *env);
00465     AXIS2_EXTERN axis2_key_type_t AXIS2_CALL
00466     rampart_context_get_prv_key_type(
00467         rampart_context_t *rampart_context,
00468         const axutil_env_t *env);
00477     AXIS2_EXTERN void *AXIS2_CALL
00478     rampart_context_get_certificate(
00479         rampart_context_t *rampart_context,
00480         const axutil_env_t *env);
00489     AXIS2_EXTERN axis2_key_type_t AXIS2_CALL
00490     rampart_context_get_certificate_type(
00491         rampart_context_t *rampart_context,
00492         const axutil_env_t *env);
00501     AXIS2_EXTERN void *AXIS2_CALL
00502     rampart_context_get_receiver_certificate(
00503         rampart_context_t *rampart_context,
00504         const axutil_env_t *env);
00513     AXIS2_EXTERN axis2_key_type_t AXIS2_CALL
00514     rampart_context_get_receiver_certificate_type(
00515         rampart_context_t *rampart_context,
00516         const axutil_env_t *env);
00525     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00526     rampart_context_get_user(
00527         rampart_context_t *rampart_context,
00528         const axutil_env_t *env);
00537     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00538     rampart_context_get_password(
00539         rampart_context_t *rampart_context,
00540         const axutil_env_t *env);
00549     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00550     rampart_context_get_prv_key_password(
00551         rampart_context_t *rampart_context,
00552         const axutil_env_t *env);
00561     AXIS2_EXTERN password_callback_fn AXIS2_CALL
00562     rampart_context_get_pwcb_function(
00563         rampart_context_t *rampart_context,
00564         const axutil_env_t *env);
00573     AXIS2_EXTERN rampart_is_replayed_fn AXIS2_CALL
00574     rampart_context_get_replay_detect_function(
00575         rampart_context_t *rampart_context,
00576         const axutil_env_t *env);
00585     AXIS2_EXTERN void * AXIS2_CALL
00586     rampart_context_get_pwcb_user_params(
00587         rampart_context_t *rampart_context,
00588         const axutil_env_t *env);
00597     AXIS2_EXTERN int AXIS2_CALL
00598     rampart_context_get_ttl(
00599         rampart_context_t *rampart_context,
00600         const axutil_env_t *env);
00601 
00602     AXIS2_EXTERN axis2_bool_t AXIS2_CALL
00603     rampart_context_get_need_millisecond_precision(
00604         rampart_context_t *rampart_context,
00605         const axutil_env_t *env);
00606 
00607     AXIS2_EXTERN int AXIS2_CALL
00608     rampart_context_get_clock_skew_buffer(
00609         rampart_context_t *rampart_context,
00610         const axutil_env_t *env);
00611 
00620     AXIS2_EXTERN axis2_char_t* AXIS2_CALL
00621     rampart_context_get_rd_val(
00622         rampart_context_t *rampart_context,
00623         const axutil_env_t *env);
00633     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00634     rampart_context_get_password_type(
00635         rampart_context_t *rampart_context,
00636         const axutil_env_t *env);
00645     AXIS2_EXTERN axutil_array_list_t* AXIS2_CALL
00646     rampart_context_get_keys(rampart_context_t *rampart_context,
00647         const axutil_env_t *env);
00657     AXIS2_EXTERN oxs_key_t* AXIS2_CALL
00658     rampart_context_get_key(rampart_context_t *rampart_context,
00659         const axutil_env_t *env,
00660         axis2_char_t* key_id);
00670     AXIS2_EXTERN oxs_key_t* AXIS2_CALL
00671     rampart_context_get_key_using_hash(rampart_context_t *rampart_context,
00672         const axutil_env_t *env,
00673         axis2_char_t* hash);
00674 
00675     /*End of Getters */
00676 
00677     /*Rampart specific functions */
00686     AXIS2_EXTERN rp_secpolicy_t *AXIS2_CALL
00687     rampart_context_get_secpolicy(
00688         rampart_context_t *rampart_context,
00689         const axutil_env_t *env);
00699     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00700     rampart_context_set_secpolicy(rampart_context_t *rampart_context,
00701                                   const axutil_env_t *env,
00702                                   rp_secpolicy_t *secpolicy);
00711     AXIS2_EXTERN rampart_callback_t *AXIS2_CALL
00712     rampart_context_get_password_callback(
00713         rampart_context_t *rampart_context,
00714         const axutil_env_t *env);
00723     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00724     rampart_context_set_password_callback(rampart_context_t *rampart_context,
00725                                           const axutil_env_t *env,
00726                                           rampart_callback_t *password_callback_module);
00736     AXIS2_EXTERN auth_password_func AXIS2_CALL
00737     rampart_context_get_auth_password_function(
00738         rampart_context_t *rampart_context,
00739         const axutil_env_t *env);
00749     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00750     rampart_context_set_auth_password_function(rampart_context_t *rampart_context,
00751             const axutil_env_t *env,
00752             auth_password_func authenticate_with_password);
00761     AXIS2_EXTERN auth_digest_func AXIS2_CALL
00762     rampart_context_get_auth_digest_function(
00763         rampart_context_t *rampart_context,
00764         const axutil_env_t *env);
00774     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00775     rampart_context_set_auth_digest_function(rampart_context_t *rampart_context,
00776             const axutil_env_t *env,
00777             auth_digest_func authenticate_with_digest);
00786     AXIS2_EXTERN rampart_authn_provider_t *AXIS2_CALL
00787     rampart_context_get_authn_provider(
00788         rampart_context_t *rampart_context,
00789         const axutil_env_t *env);
00797     AXIS2_EXTERN void *AXIS2_CALL
00798     rampart_context_get_replay_detector(
00799         rampart_context_t *rampart_context,
00800         const axutil_env_t *env);
00809     AXIS2_EXTERN void *AXIS2_CALL
00810     rampart_context_get_sct_provider(
00811         rampart_context_t *rampart_context,
00812         const axutil_env_t *env);
00822     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00823     rampart_context_set_authn_provider(rampart_context_t *rampart_context,
00824        const axutil_env_t *env,
00825        rampart_authn_provider_t *authn_provider);
00835         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00836         rampart_context_set_replay_detector(rampart_context_t *rampart_context,
00837        const axutil_env_t *env,
00838        void *replay_detector);
00848     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00849         rampart_context_set_sct_provider(rampart_context_t *rampart_context,
00850        const axutil_env_t *env,
00851        void *sct_module);
00860     AXIS2_EXTERN axis2_bool_t AXIS2_CALL
00861     rampart_context_get_require_timestamp(
00862         rampart_context_t *rampart_context,
00863         const axutil_env_t *env);
00872     AXIS2_EXTERN axis2_bool_t AXIS2_CALL
00873     rampart_context_get_require_ut(
00874         rampart_context_t *rampart_context,
00875         const axutil_env_t *env);
00884     AXIS2_EXTERN rp_property_type_t AXIS2_CALL
00885     rampart_context_get_binding_type(
00886         rampart_context_t *rampart_context,
00887         const axutil_env_t *env);
00896     AXIS2_EXTERN axis2_bool_t AXIS2_CALL
00897     rampart_context_is_include_timestamp(
00898         rampart_context_t *rampart_context,
00899         const axutil_env_t *env);
00908     AXIS2_EXTERN axis2_bool_t AXIS2_CALL
00909     rampart_context_is_include_username_token(
00910         rampart_context_t *rampart_context,
00911         const axutil_env_t *env);
00923         AXIS2_EXTERN axis2_bool_t AXIS2_CALL
00924         rampart_context_is_include_supporting_token(
00925                 rampart_context_t *rampart_context, const axutil_env_t *env,
00926                 axis2_bool_t server_side, axis2_bool_t is_inpath, 
00927                 rp_property_type_t token_type);
00938     AXIS2_EXTERN axis2_bool_t AXIS2_CALL
00939     rampart_context_is_include_protection_saml_token(
00940         rampart_context_t *rampart_context, axis2_bool_t server_side, 
00941         axis2_bool_t is_inpath, const axutil_env_t *env);
00951         AXIS2_EXTERN rp_property_t * AXIS2_CALL
00952         rampart_context_get_supporting_token(
00953                 rampart_context_t *rampart_context,
00954                 const axutil_env_t *env, rp_property_type_t token_type);
00963     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00964     rampart_context_get_password_callback_class(
00965         rampart_context_t *rampart_context,
00966         const axutil_env_t *env);
00975     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00976     rampart_context_get_authn_module_name(
00977         rampart_context_t *rampart_context,
00978         const axutil_env_t *env);
00987     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00988     rampart_context_get_replay_detector_name(
00989         rampart_context_t *rampart_context,
00990         const axutil_env_t *env);
00999     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
01000     rampart_context_get_sct_provider_name(
01001         rampart_context_t *rampart_context,
01002         const axutil_env_t *env);
01011     AXIS2_EXTERN axis2_bool_t AXIS2_CALL
01012     rampart_context_is_encrypt_before_sign(
01013         rampart_context_t *rampart_context,
01014         const axutil_env_t *env);
01023     AXIS2_EXTERN axis2_bool_t AXIS2_CALL
01024     rampart_context_is_encrypt_signature(
01025         rampart_context_t *rampart_context,
01026         const axutil_env_t *env);
01037     AXIS2_EXTERN axis2_status_t AXIS2_CALL
01038     rampart_context_get_nodes_to_encrypt(
01039         rampart_context_t *rampart_context,
01040         const axutil_env_t *env,
01041         axiom_soap_envelope_t *soap_envelope,
01042         axutil_array_list_t *nodes_to_encrypt);
01053     AXIS2_EXTERN axis2_status_t AXIS2_CALL
01054     rampart_context_get_nodes_to_sign(
01055         rampart_context_t *rampart_context,
01056         const axutil_env_t *env,
01057         axiom_soap_envelope_t *soap_envelope,
01058         axutil_array_list_t *nodes_to_sign);
01069     AXIS2_EXTERN axis2_status_t AXIS2_CALL
01070     rampart_context_get_elements_to_encrypt(
01071         rampart_context_t *rampart_context,
01072         const axutil_env_t *env,
01073         axiom_soap_envelope_t *soap_envelope,
01074         axutil_array_list_t *nodes_to_encrypt);
01085     AXIS2_EXTERN axis2_status_t AXIS2_CALL
01086     rampart_context_get_elements_to_sign(
01087         rampart_context_t *rampart_context,
01088         const axutil_env_t *env,
01089         axiom_soap_envelope_t *soap_envelope,
01090         axutil_array_list_t *nodes_to_sign);
01102     AXIS2_EXTERN rp_property_t *AXIS2_CALL
01103     rampart_context_get_token(
01104         rampart_context_t *rampart_context,
01105         const axutil_env_t *env,
01106         axis2_bool_t for_encryption,
01107         axis2_bool_t server_side,
01108         axis2_bool_t is_inpath);
01117     AXIS2_EXTERN rp_property_t *AXIS2_CALL
01118     rampart_context_get_endorsing_token(
01119         rampart_context_t *rampart_context,
01120         const axutil_env_t *env);
01127     AXIS2_EXTERN axis2_bool_t AXIS2_CALL
01128     rampart_context_check_is_derived_keys(
01129         const axutil_env_t *env,
01130         rp_property_t *token);
01131 
01137     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
01138     rampart_context_get_derived_key_version(
01139         const axutil_env_t *env, 
01140         rp_property_t *token);
01141 
01150     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
01151     rampart_context_get_enc_sym_algo(
01152         rampart_context_t *rampart_context,
01153         const axutil_env_t *env);
01162     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
01163     rampart_context_get_enc_asym_algo(
01164         rampart_context_t *rampart_context,
01165         const axutil_env_t *env);
01174     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
01175     rampart_context_get_asym_sig_algo(
01176         rampart_context_t *rampart_context,
01177         const axutil_env_t *env);
01186     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
01187     rampart_context_get_digest_mtd(
01188         rampart_context_t *rampart_context,
01189         const axutil_env_t *env);
01198     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
01199     rampart_context_get_encryption_user(
01200         rampart_context_t *rampart_context,
01201         const axutil_env_t *env);
01214     AXIS2_EXTERN axis2_bool_t AXIS2_CALL
01215     rampart_context_is_token_include(
01216         rampart_context_t *rampart_context,
01217         rp_property_t *token,
01218         rp_property_type_t token_type,
01219         axis2_bool_t server_side,
01220         axis2_bool_t is_inpath,
01221         const axutil_env_t *env);
01231     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
01232     rampart_context_get_key_identifier(
01233         rampart_context_t *rampart_context,
01234         rp_property_t *token,
01235         const axutil_env_t *env);
01244     AXIS2_EXTERN axis2_bool_t AXIS2_CALL
01245     rampart_context_is_token_type_supported(
01246         rp_property_type_t token_type,
01247         const axutil_env_t *env);
01258     AXIS2_EXTERN axis2_bool_t AXIS2_CALL
01259     rampart_context_is_key_identifier_type_supported(
01260         rampart_context_t *rampart_context,
01261         rp_property_t *token,
01262         axis2_char_t *identifier,
01263         const axutil_env_t *env);
01272     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
01273     rampart_context_get_layout(
01274         rampart_context_t *rampart_context,
01275         const axutil_env_t *env);
01284     AXIS2_EXTERN axis2_bool_t AXIS2_CALL
01285     rampart_context_check_whether_to_encrypt(
01286         rampart_context_t *rampart_context,
01287         const axutil_env_t *env);
01296     AXIS2_EXTERN axis2_bool_t AXIS2_CALL
01297     rampart_context_check_whether_to_sign(
01298         rampart_context_t *rampart_context,
01299         const axutil_env_t *env);
01308     AXIS2_EXTERN axis2_status_t AXIS2_CALL
01309     rampart_context_set_user_from_file(
01310         rampart_context_t *rampart_context,
01311         const axutil_env_t *env);
01320     AXIS2_EXTERN axis2_status_t AXIS2_CALL
01321     rampart_context_set_password_type_from_file(
01322         rampart_context_t *rampart_context,
01323         const axutil_env_t *env);
01332     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
01333     rampart_context_get_certificate_file(
01334         rampart_context_t *rampart_context,
01335         const axutil_env_t *env);
01344     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
01345     rampart_context_get_receiver_certificate_file(
01346         rampart_context_t *rampart_context,
01347         const axutil_env_t *env);
01356     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
01357     rampart_context_get_private_key_file(
01358         rampart_context_t *rampart_context,
01359         const axutil_env_t *env);
01368     AXIS2_EXTERN axis2_status_t AXIS2_CALL
01369     rampart_context_set_ttl_from_file(
01370         rampart_context_t *rampart_context,
01371         const axutil_env_t *env);
01372 
01373     AXIS2_EXTERN axis2_status_t AXIS2_CALL
01374     rampart_context_set_clock_skew_buffer_from_file(
01375         rampart_context_t *rampart_context,
01376         const axutil_env_t *env);
01377 
01378     AXIS2_EXTERN axis2_status_t AXIS2_CALL
01379     rampart_context_set_need_millisecond_precision_from_file(
01380         rampart_context_t *rampart_context,
01381         const axutil_env_t *env);
01382 
01391     AXIS2_EXTERN axis2_status_t AXIS2_CALL
01392     rampart_context_set_rd_val_from_file(
01393         rampart_context_t *rampart_context,
01394         const axutil_env_t *env);
01403     AXIS2_EXTERN oxs_key_t *AXIS2_CALL
01404     rampart_context_get_encryption_session_key(
01405         rampart_context_t *rampart_context,
01406         const axutil_env_t *env);
01416     AXIS2_EXTERN axis2_status_t AXIS2_CALL
01417     rampart_context_set_encryption_session_key(
01418         rampart_context_t *rampart_context,
01419         const axutil_env_t *env,
01420         oxs_key_t *session_key);
01429     AXIS2_EXTERN oxs_key_t *AXIS2_CALL
01430     rampart_context_get_signature_session_key(
01431         rampart_context_t *rampart_context,
01432         const axutil_env_t *env);
01442     AXIS2_EXTERN axis2_status_t AXIS2_CALL
01443     rampart_context_set_signature_session_key(
01444         rampart_context_t *rampart_context,
01445         const axutil_env_t *env,
01446         oxs_key_t *session_key);
01455     AXIS2_EXTERN axis2_status_t AXIS2_CALL
01456     rampart_context_increment_ref(
01457         rampart_context_t *rampart_context,
01458         const axutil_env_t *env);
01467     AXIS2_EXTERN axis2_bool_t AXIS2_CALL
01468     rampart_context_is_sig_confirmation_reqd(
01469         rampart_context_t *rampart_context,
01470         const axutil_env_t *env);
01479     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
01480     rampart_context_get_encryption_token_id(
01481         rampart_context_t *rampart_context,
01482         const axutil_env_t *env, 
01483         axis2_msg_ctx_t* msg_ctx);
01492     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
01493     rampart_context_get_signature_token_id(
01494         rampart_context_t *rampart_context,
01495         const axutil_env_t *env, 
01496         axis2_msg_ctx_t* msg_ctx);
01506     AXIS2_EXTERN axis2_status_t AXIS2_CALL
01507     rampart_context_set_encryption_token_id(
01508         rampart_context_t *rampart_context,
01509         const axutil_env_t *env,
01510         axis2_char_t *sct_id, 
01511         axis2_msg_ctx_t* msg_ctx);
01521     AXIS2_EXTERN axis2_status_t AXIS2_CALL
01522     rampart_context_set_signature_token_id(
01523         rampart_context_t *rampart_context,
01524         const axutil_env_t *env,
01525         axis2_char_t *sct_id, 
01526         axis2_msg_ctx_t* msg_ctx);
01527 
01528 
01529     /* Return the saml token of token type set in the rampart context */
01539     AXIS2_EXTERN rampart_saml_token_t * AXIS2_CALL
01540     rampart_context_get_saml_token(rampart_context_t *rampart_context,
01541                                         const axutil_env_t *env,
01542                                                                                 rampart_st_type_t token_type);
01543 
01544     /* Add a saml token */
01554     AXIS2_EXTERN axis2_status_t AXIS2_CALL
01555     rampart_context_add_saml_token(rampart_context_t *rampart_context,
01556                                     const axutil_env_t *env,
01557                                     rampart_saml_token_t *token);
01567      AXIS2_EXTERN axis2_status_t AXIS2_CALL
01568     rampart_context_set_saml_tokens(
01569         rampart_context_t *rampart_context,
01570         const axutil_env_t *env,
01571         axutil_array_list_t *tokens);
01580     AXIS2_EXTERN issued_token_callback_func AXIS2_CALL
01581     rampart_context_get_issued_token_aquire_function(
01582         rampart_context_t *rampart_context, 
01583         const axutil_env_t *env);  
01593     AXIS2_EXTERN axis2_status_t AXIS2_CALL
01594     rampart_context_set_issued_token_aquire_function(
01595         rampart_context_t *rampart_context,
01596         const axutil_env_t *env,
01597         issued_token_callback_func issued_token_aquire);
01606     AXIS2_EXTERN int AXIS2_CALL
01607     rampart_context_get_encryption_derived_key_len(
01608         rampart_context_t *rampart_context,
01609         const axutil_env_t *env);
01618     AXIS2_EXTERN int AXIS2_CALL
01619     rampart_context_get_signature_derived_key_len(
01620         rampart_context_t *rampart_context,
01621         const axutil_env_t *env);
01630     AXIS2_EXTERN rp_algorithmsuite_t *AXIS2_CALL
01631     rampart_context_get_algorithmsuite(
01632         rampart_context_t *rampart_context,
01633         const axutil_env_t *env);
01634     
01641     AXIS2_EXTERN oxs_key_mgr_t * AXIS2_CALL
01642     rampart_context_get_key_mgr(
01643         rampart_context_t *rampart_context,
01644         const axutil_env_t *env);
01645 
01653     AXIS2_EXTERN axis2_status_t AXIS2_CALL
01654     rampart_context_set_key_mgr(
01655         rampart_context_t *rampart_context, 
01656         const axutil_env_t *env, 
01657         oxs_key_mgr_t *key_mgr); 
01658     
01665     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
01666     rampart_context_get_pkcs12_file_name(
01667         rampart_context_t *rampart_context,
01668         const axutil_env_t *env);
01669 
01679     AXIS2_EXTERN axis2_status_t AXIS2_CALL
01680     rampart_context_set_custom_tokens(rampart_context_t *rampart_context,
01681                                         const axutil_env_t *env,
01682                                         axutil_array_list_t *tokens); 
01683 
01691     AXIS2_EXTERN axutil_array_list_t* AXIS2_CALL
01692     rampart_context_get_custom_tokens(rampart_context_t *rampart_context,
01693                                         const axutil_env_t *env);
01694 
01701     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
01702     rampart_context_get_receiver_certificate_file(
01703         rampart_context_t *rampart_context,
01704         const axutil_env_t *env);
01705       
01712     AXIS2_EXTERN axis2_bool_t AXIS2_CALL
01713     rampart_context_get_found_cert_in_shp(
01714         rampart_context_t *rampart_context,
01715         const axutil_env_t *env);
01716     
01724     AXIS2_EXTERN axis2_status_t AXIS2_CALL
01725     rampart_context_set_found_cert_in_shp(
01726         rampart_context_t *rampart_context,
01727         const axutil_env_t *env,
01728         axis2_bool_t found_cert_in_shp);
01729     
01736     AXIS2_EXTERN oxs_x509_cert_t *AXIS2_CALL
01737     rampart_context_get_receiver_cert_found_in_shp(
01738         rampart_context_t *rampart_context,
01739         const axutil_env_t *env);
01740     
01748     AXIS2_EXTERN axis2_status_t AXIS2_CALL
01749     rampart_context_set_receiver_cert_found_in_shp(
01750         rampart_context_t *rampart_context,
01751         const axutil_env_t *env,
01752         oxs_x509_cert_t *cert);
01753 
01754     AXIS2_EXTERN void * AXIS2_CALL
01755     rampart_context_get_key_store_buff(
01756         rampart_context_t *rampart_context,
01757         const axutil_env_t *env);
01758 
01759     AXIS2_EXTERN axis2_status_t AXIS2_CALL
01760     rampart_context_set_key_store_buff(
01761         rampart_context_t *rampart_context,
01762         const axutil_env_t *env,
01763         void *key_store_buf,
01764         int length);
01765 
01773     AXIS2_EXTERN axis2_status_t AXIS2_CALL
01774     rampart_context_set_store_security_context_token_fn(
01775         rampart_context_t *rampart_context,
01776         const axutil_env_t *env,
01777         store_security_context_token_fn store_fn);
01778 
01786     AXIS2_EXTERN axis2_status_t AXIS2_CALL
01787     rampart_context_set_obtain_security_context_token_fn(
01788         rampart_context_t *rampart_context,
01789         const axutil_env_t *env,
01790         obtain_security_context_token_fn get_fn);
01791 
01799     AXIS2_EXTERN axis2_status_t AXIS2_CALL
01800     rampart_context_set_delete_security_context_token_fn(
01801         rampart_context_t *rampart_context,
01802         const axutil_env_t *env,
01803         delete_security_context_token_fn delete_fn);
01804 
01812     AXIS2_EXTERN axis2_status_t AXIS2_CALL
01813     rampart_context_set_security_context_token_user_params(
01814         rampart_context_t *rampart_context,
01815         const axutil_env_t *env,
01816         void* user_params);
01817 
01825     AXIS2_EXTERN axis2_status_t AXIS2_CALL
01826     rampart_context_set_validate_security_context_token_fn(
01827         rampart_context_t *rampart_context,
01828         const axutil_env_t *env,
01829         validate_security_context_token_fn validate_fn);
01830 
01837     AXIS2_EXTERN store_security_context_token_fn AXIS2_CALL
01838     rampart_context_get_store_security_context_token_fn(
01839         rampart_context_t *rampart_context,
01840         const axutil_env_t *env);
01841 
01848     AXIS2_EXTERN obtain_security_context_token_fn AXIS2_CALL
01849     rampart_context_get_obtain_security_context_token_fn(
01850         rampart_context_t *rampart_context,
01851         const axutil_env_t *env);
01852 
01859     AXIS2_EXTERN delete_security_context_token_fn AXIS2_CALL
01860     rampart_context_get_delete_security_context_token_fn(
01861         rampart_context_t *rampart_context,
01862         const axutil_env_t *env);
01863 
01871     AXIS2_EXTERN void* AXIS2_CALL
01872     rampart_context_get_security_context_token_user_params(
01873         rampart_context_t *rampart_context,
01874         const axutil_env_t *env);
01875 
01882     AXIS2_EXTERN validate_security_context_token_fn AXIS2_CALL
01883     rampart_context_get_validate_security_context_token_fn(
01884         rampart_context_t *rampart_context,
01885         const axutil_env_t *env);
01886 
01893     AXIS2_EXTERN axis2_bool_t AXIS2_CALL
01894     rampart_context_is_different_session_key_for_enc_and_sign(
01895         const axutil_env_t *env,
01896         rampart_context_t *rampart_context);
01897 
01898     AXIS2_EXTERN axis2_status_t AXIS2_CALL
01899 rampart_context_set_receiver_certificate_file(
01900         rampart_context_t *rampart_context,
01901         const axutil_env_t *env,
01902         axis2_char_t *receiver_certificate_file);
01903 
01904 
01905     
01906 #ifdef __cplusplus
01907 }
01908 #endif
01909 #endif

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/openssl__sign_8h.html0000644000076500007650000000630011202454500022547 0ustar shankarshankar Rampart/C: openssl_sign.h File Reference

openssl_sign.h File Reference

The signature functions in openssl wrapper. More...

#include <openssl/evp.h>
#include <openssl_cipher_ctx.h>
#include <openssl_constants.h>
#include <oxs_sign_ctx.h>
#include <axis2_util.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN int openssl_sig_sign (const axutil_env_t *env, openssl_pkey_t *prvkey, oxs_buffer_t *input_buf, oxs_buffer_t *output_buf)
AXIS2_EXTERN axis2_status_t openssl_sig_verify (const axutil_env_t *env, openssl_pkey_t *pubkey, oxs_buffer_t *input_buf, oxs_buffer_t *sig_buf)


Detailed Description

The signature functions in openssl wrapper.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__rampart__timestamp__token.html0000644000076500007650000001462611202454500026122 0ustar shankarshankar Rampart/C: Timestamp Token

Timestamp Token
[Rampart Utilities]


Functions

axis2_status_t rampart_timestamp_token_build (const axutil_env_t *env, axiom_node_t *sec_node, int ttl, axis2_bool_t with_millisecond)
axis2_status_t rampart_timestamp_token_validate (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axiom_node_t *ts_node, int clock_skew_buffer)

Function Documentation

axis2_status_t rampart_timestamp_token_build ( const axutil_env_t *  env,
axiom_node_t *  sec_node,
int  ttl,
axis2_bool_t  with_millisecond 
)

Builds timestamp token.

Parameters:
env pointer to environment struct
sec_node security node
ttl Time to live. The time difference btwn Created and Expired. If it is zero or less than zero, then Expired element will not be created.
with_millisecond shows whether millisecond precision is needed
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

axis2_status_t rampart_timestamp_token_validate ( const axutil_env_t *  env,
axis2_msg_ctx_t *  msg_ctx,
axiom_node_t *  ts_node,
int  clock_skew_buffer 
)

Validates time stamp token. Validation is based in expiration time of the Expired element.

Parameters:
env pointer to environment struct
msg_ctx pointer to message context structure
ts_node Timestamp node
clock_skew_buffer buffer of allowable skew of time between sender and receiver
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/rampart__encryption_8h-source.html0000644000076500007650000002047111202454500025267 0ustar shankarshankar Rampart/C: rampart_encryption.h Source File

rampart_encryption.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #include <axutil_utils_defines.h>
00019 #include <axis2_defines.h>
00020 #include <axutil_env.h>
00021 #include <axiom_soap.h>
00022 #include <axis2_msg_ctx.h>
00023 #include <oxs_asym_ctx.h>
00024 #include <oxs_xml_encryption.h>
00025 #include <rampart_context.h>
00026 
00037 #ifndef RAMPART_ENCRYPTION_H
00038 #define RAMPART_ENCRYPTION_H
00039 
00040 #ifdef __cplusplus
00041 extern "C" {
00042 #endif
00043 
00051     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00052     rampart_enc_encrypt_message(const axutil_env_t *env,
00053         axis2_msg_ctx_t *msg_ctx,
00054         rampart_context_t *rampart_context,
00055         axiom_soap_envelope_t *soap_envelope,
00056         axiom_node_t *sec_node);
00057 
00067     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00068     rampart_enc_dk_encrypt_message(
00069         const axutil_env_t *env,
00070         axis2_msg_ctx_t *msg_ctx,
00071         rampart_context_t *rampart_context,
00072         axiom_soap_envelope_t *soap_envelope,
00073         axiom_node_t *sec_node);
00074  
00075 
00083     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00084     rampart_enc_add_key_info(
00085         const axutil_env_t *env,
00086         axis2_msg_ctx_t *msg_ctx,
00087         rampart_context_t *rampart_context,
00088         axiom_soap_envelope_t *soap_envelope,
00089         axiom_node_t *sec_node);
00090 
00091 
00099     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00100     rampart_enc_encrypt_signature(
00101         const axutil_env_t *env,
00102         axis2_msg_ctx_t *msg_ctx,
00103         rampart_context_t *rampart_context,
00104         axiom_soap_envelope_t *soap_envelope,
00105         axiom_node_t *sec_node);
00106 
00116     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00117     rampart_enc_encrypt_session_key(
00118         const axutil_env_t *env,
00119         oxs_key_t *session_key,
00120         axis2_msg_ctx_t *msg_ctx,
00121         rampart_context_t *rampart_context,
00122         axiom_node_t *sec_node,
00123         axutil_array_list_t *id_list);
00124 
00125 
00126     /* @} */
00127 #ifdef __cplusplus
00128 }
00129 #endif
00130 
00131 #endif    /* !RAMPART_ENCRYPTION_H */

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/trust__sts__client_8h.html0000644000076500007650000002730411202454500023622 0ustar shankarshankar Rampart/C: trust_sts_client.h File Reference

trust_sts_client.h File Reference

contains the specific sts client interface More...

#include <stdio.h>
#include <stdlib.h>
#include <axiom.h>
#include <axutil_utils.h>
#include <axis2_client.h>
#include <rp_includes.h>
#include <rp_secpolicy.h>
#include <neethi_policy.h>
#include <neethi_util.h>
#include <rampart_util.h>
#include <trust_constants.h>
#include <trust_util.h>
#include <trust_policy_util.h>
#include <trust_token.h>
#include <rampart_config.h>
#include <trust_rst.h>
#include <trust_rstr.h>
#include <trust_context.h>

Go to the source code of this file.

Typedefs

typedef struct trust_sts_client trust_sts_client_t

Functions

AXIS2_EXTERN trust_sts_client_t * trust_sts_client_create (const axutil_env_t *env)
AXIS2_EXTERN void trust_sts_client_free (trust_sts_client_t *sts_client, const axutil_env_t *env)
AXIS2_EXTERN void trust_sts_client_request_security_token (trust_sts_client_t *sts_client, const axutil_env_t *env, trust_context_t *trust_context)
AXIS2_EXTERN axis2_status_t trust_sts_client_process_policies (trust_sts_client_t *sts_client, const axutil_env_t *env, neethi_policy_t *issuer_policy, neethi_policy_t *service_policy)
AXIS2_EXTERN axis2_svc_client_t * trust_sts_client_get_svc_client (trust_sts_client_t *sts_client, const axutil_env_t *env, axis2_char_t *action, axis2_char_t *address_version, axis2_bool_t is_soap11)
AXIS2_EXTERN axis2_status_t trust_sts_client_set_issuer_address (trust_sts_client_t *sts_client, const axutil_env_t *env, axis2_char_t *address)
AXIS2_EXTERN axis2_status_t trust_sts_client_set_home_dir (trust_sts_client_t *sts_client, const axutil_env_t *env, axis2_char_t *directory)
AXIS2_EXTERN oxs_buffer_ttrust_sts_client_request_security_token_using_policy (trust_sts_client_t *sts_client, const axutil_env_t *env, trust_context_t *trust_context, neethi_policy_t *issuer_policy, axis2_char_t *address_version, axis2_bool_t is_soap11, rampart_context_t *rampart_context)
AXIS2_EXTERN axis2_status_t trust_sts_client_set_issuer_policy_location (trust_sts_client_t *sts_client, const axutil_env_t *env, axis2_char_t *file_path)
AXIS2_EXTERN axis2_char_t * trust_sts_client_get_issuer_policy_location (trust_sts_client_t *sts_client, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * trust_sts_client_get_service_policy_location (trust_sts_client_t *sts_client, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t trust_sts_client_set_service_policy_location (trust_sts_client_t *sts_client, const axutil_env_t *env, axis2_char_t *file_path)
AXIS2_EXTERN axis2_status_t trust_sts_client_set_auth_info (trust_sts_client_t *sts_client, const axutil_env_t *env, axis2_char_t *username, axis2_char_t *password, axis2_char_t *auth_type)
AXIS2_EXTERN axis2_status_t trust_sts_client_set_issued_token (trust_sts_client_t *sts_client, const axutil_env_t *env, rampart_saml_token_t *saml_token)
AXIS2_EXTERN axis2_status_t trust_sts_client_set_issued_token_func (trust_sts_client_t *sts_client, const axutil_env_t *env, issued_token_callback_func issue_token_func)


Detailed Description

contains the specific sts client interface


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/oxs__ctx_8h-source.html0000644000076500007650000004366611202454500023051 0ustar shankarshankar Rampart/C: oxs_ctx.h Source File

oxs_ctx.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef OXS_CTX_H
00019 #define OXS_CTX_H
00020 
00021 
00027 #include <axis2_defines.h>
00028 #include <axutil_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 
00045     typedef enum  {
00046         OXS_CTX_OPERATION_NONE = 0,
00047         OXS_CTX_OPERATION_ENCRYPT,
00048         OXS_CTX_OPERATION_DECRYPT
00049     } oxs_ctx_operation_t;
00050 
00051     typedef enum {
00052         OXS_CTX_MODE_ENCRYPTED_DATA = 0,
00053         OXS_CTX_MODE_ENCRYPTED_KEY
00054     } oxs_ctx_mode_t;
00055 
00056 
00058     typedef struct oxs_ctx_t oxs_ctx_t;
00059 
00066     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00067     oxs_ctx_free(
00068         oxs_ctx_t *ctx,
00069         const axutil_env_t *env
00070     );
00071 
00078     AXIS2_EXTERN oxs_ctx_mode_t AXIS2_CALL
00079     oxs_ctx_get_mode(
00080         oxs_ctx_t *ctx,
00081         const axutil_env_t *env
00082     );
00083 
00090     AXIS2_EXTERN oxs_ctx_operation_t AXIS2_CALL
00091     oxs_ctx_get_operation(
00092         oxs_ctx_t *ctx,
00093         const axutil_env_t *env
00094     );
00095 
00096 
00103     AXIS2_EXTERN oxs_key_t *AXIS2_CALL
00104     oxs_ctx_get_key(
00105         oxs_ctx_t *ctx,
00106         const axutil_env_t *env
00107     );
00108 
00115     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00116     oxs_ctx_get_id(
00117         oxs_ctx_t *ctx,
00118         const axutil_env_t *env
00119     );
00120 
00127     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00128     oxs_ctx_get_type(
00129         oxs_ctx_t *ctx,
00130         const axutil_env_t *env
00131     );
00138     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00139     oxs_ctx_get_mime_type(
00140         oxs_ctx_t *ctx,
00141         const axutil_env_t *env
00142     );
00143 
00150     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00151     oxs_ctx_get_encoding(
00152         oxs_ctx_t *ctx,
00153         const axutil_env_t *env
00154     );
00155 
00162     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00163     oxs_ctx_get_recipient(
00164         oxs_ctx_t *ctx,
00165         const axutil_env_t *env
00166     );
00167 
00174     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00175     oxs_ctx_get_ref_key_name(
00176         oxs_ctx_t *ctx,
00177         const axutil_env_t *env
00178     );
00179 
00186     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00187     oxs_ctx_get_enc_mtd_algorithm(
00188         oxs_ctx_t *ctx,
00189         const axutil_env_t *env
00190     );
00191 
00198     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00199     oxs_ctx_get_input_data(
00200         oxs_ctx_t *ctx,
00201         const axutil_env_t *env
00202     );
00210     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00211     oxs_ctx_set_mode(
00212         oxs_ctx_t *ctx,
00213         const axutil_env_t *env,
00214         oxs_ctx_mode_t mode
00215     );
00216 
00224     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00225     oxs_ctx_set_operation(
00226         oxs_ctx_t *ctx,
00227         const axutil_env_t *env,
00228         oxs_ctx_operation_t operation
00229     );
00230 
00238     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00239     oxs_ctx_set_key(
00240         oxs_ctx_t *ctx,
00241         const axutil_env_t *env,
00242         oxs_key_t *key
00243     );
00251     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00252     oxs_ctx_set_id(
00253         oxs_ctx_t *ctx,
00254         const axutil_env_t *env,
00255         axis2_char_t *id
00256     );
00257 
00265     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00266     oxs_ctx_set_type(
00267         oxs_ctx_t *ctx,
00268         const axutil_env_t *env,
00269         axis2_char_t *type
00270     );
00271 
00279     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00280     oxs_ctx_set_mime_type(
00281         oxs_ctx_t *ctx,
00282         const axutil_env_t *env,
00283         axis2_char_t *mime_type
00284     );
00285 
00286 
00294     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00295     oxs_ctx_set_encoding(
00296         oxs_ctx_t *ctx,
00297         const axutil_env_t *env,
00298         axis2_char_t *encoding
00299     );
00300 
00308     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00309     oxs_ctx_set_recipient(
00310         oxs_ctx_t *ctx,
00311         const axutil_env_t *env,
00312         axis2_char_t *recipient
00313     );
00314 
00315 
00323     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00324     oxs_ctx_set_ref_key_name(
00325         oxs_ctx_t *ctx,
00326         const axutil_env_t *env,
00327         axis2_char_t *ref_key_name
00328     );
00329 
00337     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00338     oxs_ctx_set_enc_mtd_algorithm(
00339         oxs_ctx_t *ctx,
00340         const axutil_env_t *env,
00341         axis2_char_t *enc_mtd_algorithm
00342     );
00350     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00351     oxs_ctx_set_input_data(
00352         oxs_ctx_t *ctx,
00353         const axutil_env_t *env,
00354         axis2_char_t *input_data
00355     );
00356 
00357 
00358 
00359     /*Create function*/
00360     AXIS2_EXTERN oxs_ctx_t *AXIS2_CALL
00361     oxs_ctx_create(const axutil_env_t *env);
00362 
00363 
00365 #ifdef __cplusplus
00366 }
00367 #endif
00368 
00369 #endif                          /* OXS_CTX_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/rahas__mod_8h.html0000644000076500007650000000364711202454500022014 0ustar shankarshankar Rampart/C: rahas_mod.h File Reference

rahas_mod.h File Reference

Axis2 rahas module interface. More...

#include <axis2_handler.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN axis2_handler_t * rahas_in_handler_create (const axutil_env_t *env, axutil_string_t *name)


Detailed Description

Axis2 rahas module interface.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/oxs__xml__key__processor_8h-source.html0000644000076500007650000001703711202454500026311 0ustar shankarshankar Rampart/C: oxs_xml_key_processor.h Source File

oxs_xml_key_processor.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef OXS_XML_KEY_PROCESSOR_H
00019 #define OXS_XML_KEY_PROCESSOR_H
00020 
00021 
00033 #include <axis2_defines.h>
00034 #include <oxs_ctx.h>
00035 #include <axutil_env.h>
00036 #include <axiom_node.h>
00037 #include <axiom_element.h>
00038 #include <axutil_qname.h>
00039 #include <oxs_x509_cert.h>
00040 
00041 #ifdef __cplusplus
00042 extern "C"
00043 {
00044 #endif
00045     /*Process a ds:X509SKI element and populate a certificate */
00046     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00047     oxs_xml_key_process_X509SKI(const axutil_env_t *env,
00048                                 axiom_node_t *X509SKI_node,
00049                                 oxs_x509_cert_t *cert);
00050 
00051     /*Process a ds:X509SubjectName element and populate a  certificate*/
00052     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00053     oxs_xml_key_process_X509SubjectName(const axutil_env_t *env,
00054                                         axiom_node_t *X509_subj_name_node,
00055                                         oxs_x509_cert_t *cert);
00056 
00057     /*Process a ds:X509IssuerSerial element and populate a certificate*/
00058     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00059     oxs_xml_key_process_X509IssuerSerial(const axutil_env_t *env,
00060                                          axiom_node_t *X509_issuer_serial_node,
00061                                          oxs_x509_cert_t *cert);
00062 
00063     /*Process data in a ds:X509Certificate and returns a certificate*/
00064     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00065     oxs_xml_key_process_X509Certificate(const axutil_env_t *env,
00066                                         axiom_node_t *X509_cert_node,
00067                                         oxs_x509_cert_t *cert);
00068 
00069     /*Higher level function ot process an ds:X509Data element*/
00070     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00071     oxs_xml_key_process_X509Data(const axutil_env_t *env,
00072                                  axiom_node_t *X509_data_node,
00073                                  oxs_x509_cert_t *cert);
00074 
00075 
00077 #ifdef __cplusplus
00078 }
00079 #endif
00080 
00081 #endif                          /* OXS_XML_KEY_PROCESSOR_H */

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/trust__rstr_8h-source.html0000644000076500007650000003463511202454500023611 0ustar shankarshankar Rampart/C: trust_rstr.h Source File

trust_rstr.h

00001 
00002 /*
00003  * Licensed to the Apache Software Foundation (ASF) under one or more
00004  * contributor license agreements.  See the NOTICE file distributed with
00005  * this work for additional information regarding copyright ownership.
00006  * The ASF licenses this file to You under the Apache License, Version 2.0
00007  * (the "License"); you may not use this file except in compliance with
00008  * the License.  You may obtain a copy of the License at
00009  *
00010  *      http://www.apache.org/licenses/LICENSE-2.0
00011  *
00012  * Unless required by applicable law or agreed to in writing, software
00013  * distributed under the License is distributed on an "AS IS" BASIS,
00014  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00015  * See the License for the specific language governing permissions and
00016  * limitations under the License.
00017  */
00018 
00019 #ifndef TRUST_RSTR_H
00020 #define TRUST_RSTR_H
00021 
00022 #include <stdio.h>
00023 #include <stdlib.h>
00024 #include <axutil_utils.h>
00025 #include <axutil_string.h>
00026 #include <axutil_base64.h>
00027 #include <axiom_soap.h>
00028 #include <axiom.h>
00029 #include <trust_constants.h>
00030 #include <trust_entropy.h>
00031 #include <trust_life_time.h>
00032 
00033 #ifdef __cplusplus
00034 extern "C"
00035 {
00036 #endif
00037     
00038     typedef struct trust_rstr trust_rstr_t;
00039     
00040     AXIS2_EXTERN trust_rstr_t * AXIS2_CALL
00041     trust_rstr_create(
00042         const axutil_env_t *env);
00043     
00044     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00045     trust_rstr_free(
00046         trust_rstr_t *rstr,
00047         const axutil_env_t *env);
00048     
00049     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00050     trust_rstr_populate_rstr(
00051         trust_rstr_t *rstr,
00052         const axutil_env_t *env,
00053         axiom_node_t *rstr_node);
00054     
00055     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00056     trust_rstr_build_rstr(
00057         trust_rstr_t *rstr,
00058         const axutil_env_t *env,
00059         axiom_node_t *parent);
00060     
00061     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00062     trust_rstr_get_token_type(
00063         trust_rstr_t *rstr,
00064         const axutil_env_t *env);
00065     
00066     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00067     trust_rstr_set_token_type(
00068         trust_rstr_t *rstr,
00069         const axutil_env_t *env,
00070         axis2_char_t *token_type);
00071     
00072     
00073     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00074     trust_rstr_get_request_type(
00075         trust_rstr_t *rstr,
00076         const axutil_env_t *env);
00077     
00078     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00079     trust_rstr_set_request_type(
00080         trust_rstr_t *rstr,
00081         const axutil_env_t *env,
00082         axis2_char_t *request_type);
00083     
00084     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00085     trust_rstr_get_requested_security_token(
00086         trust_rstr_t *rstr,
00087         const axutil_env_t *env);
00088     
00089     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00090     trust_rstr_set_requested_security_token(
00091         trust_rstr_t *rstr,
00092         const axutil_env_t *env,
00093         axiom_node_t *security_token);
00094     
00095     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00096     trust_rstr_get_applies_to(
00097         trust_rstr_t *rstr,
00098         const axutil_env_t *env);
00099     
00100     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00101     trust_rstr_set_applies_to(
00102         trust_rstr_t *rstr,
00103         const axutil_env_t *env,
00104         axis2_char_t *applies_to);
00105     
00106     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00107     trust_rstr_get_requested_attached_reference(
00108         trust_rstr_t *rstr,
00109         const axutil_env_t *env);
00110     
00111     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00112     trust_rstr_set_requested_attached_reference(
00113         trust_rstr_t *rstr,
00114         const axutil_env_t *env,
00115         axiom_node_t *ref_node);
00116     
00117     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00118     trust_rstr_get_requested_unattached_reference(
00119         trust_rstr_t *rstr,
00120         const axutil_env_t *env);
00121     
00122     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00123     trust_rstr_set_requested_unattached_reference(
00124         trust_rstr_t *rstr,
00125         const axutil_env_t *env,
00126         axiom_node_t *ref_node);
00127     
00128     AXIS2_EXTERN  axiom_node_t * AXIS2_CALL
00129     trust_rstr_get_requested_proof_token(
00130         trust_rstr_t *rstr,
00131         const axutil_env_t *env);
00132     
00133     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00134     trust_rstr_set_requested_proof_token(
00135         trust_rstr_t *rstr,
00136         const axutil_env_t *env,
00137         axiom_node_t *proof_token);
00138     
00139     AXIS2_EXTERN trust_entropy_t * AXIS2_CALL
00140     trust_rstr_get_entropy(
00141         trust_rstr_t *rstr,
00142         const axutil_env_t *env);
00143     
00144     AXIS2_EXTERN  axis2_status_t AXIS2_CALL
00145     trust_rstr_set_entropy(
00146         trust_rstr_t *rstr,
00147         const axutil_env_t *env,
00148         trust_entropy_t *entropy);
00149     
00150     AXIS2_EXTERN trust_life_time_t* AXIS2_CALL
00151     trust_rstr_get_life_time(
00152         trust_rstr_t *rstr,
00153         const axutil_env_t *env);
00154     
00155     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00156     trust_rstr_set_life_time(
00157         trust_rstr_t *rstr,
00158         const axutil_env_t *env,
00159         trust_life_time_t *life_time);
00160     
00161     AXIS2_EXTERN axis2_bool_t AXIS2_CALL
00162     trust_rstr_get_in_header(
00163         trust_rstr_t *rstr,
00164         const axutil_env_t *env);
00165     
00166     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00167     trust_rstr_set_in_header(
00168         trust_rstr_t *rstr,
00169         const axutil_env_t *env,
00170         axis2_bool_t in_header); 
00171         
00172     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00173         trust_rstr_set_wst_ns_uri(
00174         trust_rstr_t *rstr,
00175         const axutil_env_t *env,
00176         axis2_char_t *wst_ns_uri);
00177 
00178     AXIS2_EXTERN int AXIS2_CALL
00179     trust_rstr_get_key_size(
00180         trust_rstr_t *rstr,
00181         const axutil_env_t *env);
00182 
00183     AXIS2_EXTERN  axis2_status_t AXIS2_CALL
00184     trust_rstr_set_key_size(
00185         trust_rstr_t *rstr,
00186         const axutil_env_t *env,
00187         int key_size);
00188 
00189     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00190     trust_rstr_get_wst_ns_uri(
00191             trust_rstr_t *rstr,
00192             const axutil_env_t *env);    
00193      
00194 
00195 #ifdef __cplusplus
00196 }
00197 #endif
00198 
00199 #endif

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__oxs__xml__signature.html0000644000076500007650000003102711202454500024735 0ustar shankarshankar Rampart/C: XML Signature

XML Signature
[OMXMLSecurity]


Functions

AXIS2_EXTERN axis2_status_t oxs_xml_sig_sign (const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, axiom_node_t *parent, axiom_node_t **sig_node)
AXIS2_EXTERN axis2_status_t oxs_xml_sig_verify (const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, axiom_node_t *signature_node, axiom_node_t *scope_node)
AXIS2_EXTERN axis2_status_t oxs_xml_sig_verify_sign_part (const axutil_env_t *env, oxs_sign_part_t *sign_part)
AXIS2_EXTERN axis2_status_t oxs_xml_sig_verify_digests (const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx)
AXIS2_EXTERN axis2_status_t oxs_xml_sig_process_ref_node (const axutil_env_t *env, oxs_sign_part_t *sign_part, axiom_node_t *ref_node, axiom_node_t *scope_node)
AXIS2_EXTERN axis2_status_t oxs_xml_sig_process_signature_node (const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, axiom_node_t *signature_node, axiom_node_t *scope_node)

Function Documentation

AXIS2_EXTERN axis2_status_t oxs_xml_sig_process_ref_node ( const axutil_env_t *  env,
oxs_sign_part_t *  sign_part,
axiom_node_t *  ref_node,
axiom_node_t *  scope_node 
)

Process the ds:Reference node. Populate a signature part pointer to environment struct the signature part the ds:Reference node the root node in which the referenced are found

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_xml_sig_process_signature_node ( const axutil_env_t *  env,
oxs_sign_ctx_t *  sign_ctx,
axiom_node_t *  signature_node,
axiom_node_t *  scope_node 
)

Process the ds:Signature node. Populate a signature context pointer to environment struct the signature context the ds:Signature node the root node in which the referenced are found

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_xml_sig_sign ( const axutil_env_t *  env,
oxs_sign_ctx_t *  sign_ctx,
axiom_node_t *  parent,
axiom_node_t **  sig_node 
)

Sign according to the information available in the . pointer to environment struct the signature context the node that the ds:Signature element should be attached. a reference to the ds:Signature node

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_xml_sig_verify ( const axutil_env_t *  env,
oxs_sign_ctx_t *  sign_ctx,
axiom_node_t *  signature_node,
axiom_node_t *  scope_node 
)

Verify a complete xml document pointer to environment struct the signature context the ds:Signature node the root node in which the referenced are found

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_xml_sig_verify_digests ( const axutil_env_t *  env,
oxs_sign_ctx_t *  sign_ctx 
)

Verify all digests in signature parts of a single signature context pointer to environment struct the signature context

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_xml_sig_verify_sign_part ( const axutil_env_t *  env,
oxs_sign_part_t *  sign_part 
)

Verify a single signature part . Do transforms, Generate digest and compare with the digest in hand pointer to environment struct the signature part

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/oxs__tokens_8h-source.html0000644000076500007650000011005511202454500023541 0ustar shankarshankar Rampart/C: oxs_tokens.h Source File

oxs_tokens.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef OXS_TOKENS_H
00019 #define OXS_TOKENS_H
00020 
00021 #include <axis2_util.h>
00022 #include <stdio.h>
00023 #include <axutil_qname.h>
00024 #include <axis2_defines.h>
00025 #include <axutil_env.h>
00026 #include <axiom_node.h>
00027 #include <axiom_element.h>
00028 #include <axiom_attribute.h>
00029 #include <oxs_constants.h>
00030 #include <rampart_constants.h>
00031 #include <oxs_utility.h>
00032 #include <oxs_axiom.h>
00033 #include <axutil_array_list.h>
00034 
00039 #ifdef __cplusplus
00040 extern "C"
00041 {
00042 #endif
00043 
00052     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00053     oxs_token_build_binary_security_token_element(
00054                 const axutil_env_t * env,
00055                 axiom_node_t * parent,
00056                 axis2_char_t * id,
00057                 axis2_char_t * encoding_type,
00058                 axis2_char_t * value_type,
00059                 axis2_char_t * data);
00060    
00064     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00065     oxs_token_build_c14n_method_element(
00066                 const axutil_env_t * env,
00067                 axiom_node_t * parent,
00068                 axis2_char_t * algorithm);
00069 
00073     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00074     oxs_token_get_c14n_method(
00075                 const axutil_env_t * env, 
00076                 axiom_node_t * c14n_mtd_node);
00077 
00081     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00082     oxs_token_build_cipher_data_element(
00083                 const axutil_env_t * env,
00084                 axiom_node_t * parent);
00085 
00089     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00090     oxs_token_get_cipher_value_from_cipher_data(
00091                 const axutil_env_t * env,
00092                 axiom_node_t * cd_node);
00093 
00097     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00098     oxs_token_build_cipher_value_element(
00099                 const axutil_env_t * env,
00100                 axiom_node_t * parent,
00101                 axis2_char_t * cipher_val);
00102 
00106     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00107     oxs_token_get_cipher_value(
00108                 const axutil_env_t * env,
00109                 axiom_node_t * cv_node);
00110 
00114     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00115     oxs_token_build_data_reference_element(
00116                 const axutil_env_t * env,
00117                 axiom_node_t * parent,
00118                 axis2_char_t * data_ref);
00119 
00123     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00124     oxs_token_get_data_reference(
00125                 const axutil_env_t * env, 
00126                 axiom_node_t * data_ref_node);
00127 
00131     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00132     oxs_token_build_digest_method_element(
00133                 const axutil_env_t * env,
00134                 axiom_node_t * parent,
00135                 axis2_char_t * algorithm);
00136 
00140     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00141     oxs_token_get_digest_method(
00142                 const axutil_env_t * env, 
00143                 axiom_node_t * enc_mtd_node);
00144 
00148     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00149     oxs_token_build_digest_value_element(
00150                 const axutil_env_t * env,
00151                 axiom_node_t * parent,
00152                 axis2_char_t * digest_val);
00153 
00157     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00158     oxs_token_get_digest_value(
00159                 const axutil_env_t * env,
00160                 axiom_node_t * sv_node);
00161 
00165     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00166     oxs_token_build_ds_reference_element(
00167                 const axutil_env_t *env,
00168                 axiom_node_t *parent,
00169                 axis2_char_t *id,
00170                 axis2_char_t *uri,
00171                 axis2_char_t *type);
00172 
00176     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00177     oxs_token_get_ds_reference(
00178                 const axutil_env_t * env, 
00179                 axiom_node_t * ref_node);
00180 
00184     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00185     oxs_token_build_embedded_element(
00186                 const axutil_env_t * env,
00187                 axiom_node_t * parent,
00188                 axis2_char_t * id);
00189 
00193     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00194     oxs_token_get_embedded_id(
00195                 const axutil_env_t * env, 
00196                 axiom_node_t * embedded_node);
00197 
00201     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00202     oxs_token_build_encrypted_data_element(
00203                 const axutil_env_t * env,
00204                 axiom_node_t * parent,
00205                 axis2_char_t * type_attribute,
00206                 axis2_char_t * id);
00207 
00211     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00212     oxs_token_build_encrypted_key_element(
00213                 const axutil_env_t * env,
00214                 axiom_node_t * parent );
00215 
00216     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00217     oxs_token_get_encrypted_key_node(
00218                 const axutil_env_t * env,
00219                 axiom_node_t * parent);
00220 
00224     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00225     oxs_token_build_encryption_method_element(
00226                 const axutil_env_t * env,
00227                 axiom_node_t * parent,
00228                 axis2_char_t * algorithm);
00229 
00233     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00234     oxs_token_get_encryption_method(
00235                 const axutil_env_t * env, 
00236                 axiom_node_t * enc_mtd_node);
00237 
00241     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00242     oxs_token_build_key_identifier_element(
00243                 const axutil_env_t * env,
00244                 axiom_node_t * parent,
00245                 axis2_char_t * encoding_type,
00246                 axis2_char_t * value_type,
00247                 axis2_char_t * value);
00248 
00252     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00253     oxs_token_build_key_info_element(
00254                 const axutil_env_t * env,
00255                 axiom_node_t * parent);
00256 
00260     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00261     oxs_token_build_key_name_element(
00262                 const axutil_env_t * env,
00263                 axiom_node_t * parent,
00264                 axis2_char_t * key_name_val);
00265 
00269     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00270     oxs_token_build_reference_element(
00271                 const axutil_env_t * env,
00272                 axiom_node_t * parent,
00273                 axis2_char_t * ref,
00274                 axis2_char_t * value_type);
00275 
00279     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00280     oxs_token_get_reference(
00281                 const axutil_env_t * env, 
00282                 axiom_node_t * ref_node);
00283 
00287     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00288     oxs_token_get_reference_value_type(
00289                 const axutil_env_t * env, 
00290         axiom_node_t * ref_node);
00291 
00295     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00296     oxs_token_build_reference_list_element(
00297                 const axutil_env_t * env,
00298                 axiom_node_t * parent);
00299 
00303     AXIS2_EXTERN axiom_node_t* AXIS2_CALL
00304     oxs_token_build_data_reference_list(
00305                 const axutil_env_t * env, 
00306                 axiom_node_t * parent, 
00307                 axutil_array_list_t * id_list);
00308 
00312     AXIS2_EXTERN axutil_array_list_t * AXIS2_CALL
00313     oxs_token_get_reference_list_data(
00314                 const axutil_env_t * env, 
00315                 axiom_node_t * ref_list_node);
00316 
00320     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00321     oxs_token_build_security_token_reference_element(
00322                 const axutil_env_t * env,
00323                 axiom_node_t * parent);
00324 
00328     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00329     oxs_token_build_signature_element(
00330                 const axutil_env_t * env,
00331                 axiom_node_t * parent,
00332                 axis2_char_t * id);
00333 
00337     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00338     oxs_token_build_enc_header_element(
00339                 const axutil_env_t * env,
00340                 axiom_node_t * parent,
00341                 axis2_char_t * id);
00342 
00346     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00347     oxs_token_build_signature_method_element(
00348                 const axutil_env_t * env,
00349                 axiom_node_t * parent,
00350                 axis2_char_t * algorithm);
00351 
00355     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00356     oxs_token_get_signature_method(
00357                 const axutil_env_t * env, 
00358                 axiom_node_t * enc_mtd_node);
00359 
00363     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00364     oxs_token_build_signature_value_element(
00365                 const axutil_env_t * env,
00366                 axiom_node_t * parent,
00367                 axis2_char_t * signature_val);
00368 
00372     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00373     oxs_token_get_signature_value(
00374                 const axutil_env_t * env,
00375                 axiom_node_t * sv_node);
00376 
00380     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00381     oxs_token_build_signed_info_element(
00382                 const axutil_env_t * env,
00383                 axiom_node_t * parent);
00384 
00388     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00389     oxs_token_build_transform_element(
00390                 const axutil_env_t * env,
00391                 axiom_node_t * parent,
00392                 axis2_char_t * algorithm);
00393 
00397     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00398     oxs_token_get_transform(
00399                 const axutil_env_t * env, 
00400                 axiom_node_t * transform_node);
00401 
00405     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00406     oxs_token_build_transforms_element(
00407                 const axutil_env_t * env,
00408                 axiom_node_t * parent);
00409 
00413     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00414     oxs_token_build_x509_certificate_element(
00415                 const axutil_env_t * env,
00416                 axiom_node_t * parent,
00417                 axis2_char_t * cert_data);
00418 
00422     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00423     oxs_token_get_x509_certificate(
00424                 const axutil_env_t * env,
00425                 axiom_node_t * sv_node);
00426 
00430     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00431     oxs_token_build_x509_data_element(
00432                 const axutil_env_t * env,
00433                 axiom_node_t * parent);
00434 
00438     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00439     oxs_token_build_issuer_name_element(
00440                 const axutil_env_t * env,
00441                 axiom_node_t * parent,
00442                 axis2_char_t * value );
00443 
00447     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00448     oxs_token_get_issuer_name(
00449                 const axutil_env_t * env,
00450                 axiom_node_t * issuer_name_node);
00451 
00455     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00456     oxs_token_build_x509_issuer_serial_element(
00457                 const axutil_env_t * env,
00458                 axiom_node_t * parent);
00459         
00463     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00464     oxs_token_build_x509_issuer_serial_with_data(
00465                 const axutil_env_t * env,
00466                 axiom_node_t * parent,
00467                 axis2_char_t * issuer_name,
00468                 axis2_char_t * serial_number);
00469 
00473     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00474     oxs_token_build_serial_number_element(
00475                 const axutil_env_t * env,
00476                 axiom_node_t * parent,
00477                 axis2_char_t * value );
00478 
00482     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00483     oxs_token_get_serial_number(
00484                 const axutil_env_t * env,
00485                 axiom_node_t * serial_number_node);
00486 
00490     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00491     oxs_token_build_signature_confirmation_element(
00492                 const axutil_env_t * env,
00493                 axiom_node_t * parent,
00494                 axis2_char_t * id,
00495                 axis2_char_t * val); 
00496 
00500     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00501     oxs_token_get_signature_confirmation_value(
00502                 const axutil_env_t * env, 
00503                 axiom_node_t * signature_confirmation_node);
00504 
00508     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00509     oxs_token_get_signature_confirmation_id(
00510                 const axutil_env_t * env, 
00511                 axiom_node_t * signature_confirmation_node);
00512 
00516     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00517     oxs_token_build_derived_key_token_element(
00518         const axutil_env_t * env,
00519         axiom_node_t * parent,
00520         axis2_char_t * id,
00521         axis2_char_t * algo, 
00522         axis2_char_t* wsc_ns_uri);
00523 
00527     AXIS2_EXTERN axiom_node_t* AXIS2_CALL
00528     oxs_token_build_length_element(
00529         const axutil_env_t *env,
00530         axiom_node_t *parent,
00531         int length, 
00532         axis2_char_t *wsc_ns_uri);
00533 
00537     AXIS2_EXTERN int AXIS2_CALL
00538     oxs_token_get_length_value(
00539         const axutil_env_t *env,
00540         axiom_node_t *length_node);
00541 
00545     AXIS2_EXTERN axiom_node_t* AXIS2_CALL
00546     oxs_token_build_offset_element(
00547         const axutil_env_t *env,
00548         axiom_node_t *parent,
00549         int offset, 
00550         axis2_char_t *wsc_ns_uri);
00551 
00555     AXIS2_EXTERN int AXIS2_CALL
00556     oxs_token_get_offset_value(
00557         const axutil_env_t *env,
00558         axiom_node_t *offset_node);
00559 
00563     AXIS2_EXTERN axiom_node_t* AXIS2_CALL
00564     oxs_token_build_nonce_element(
00565         const axutil_env_t *env,
00566         axiom_node_t *parent,
00567         axis2_char_t *nonce_val,
00568         axis2_char_t *wsc_ns_uri);
00569 
00573     AXIS2_EXTERN axis2_char_t* AXIS2_CALL
00574     oxs_token_get_nonce_value(
00575         const axutil_env_t *env,
00576         axiom_node_t *nonce_node);
00577 
00581         AXIS2_EXTERN axiom_node_t* AXIS2_CALL
00582         oxs_token_build_label_element(
00583         const axutil_env_t *env,
00584                 axiom_node_t *parent,
00585                 axis2_char_t *label, 
00586         axis2_char_t *wsc_ns_uri);
00587 
00591     AXIS2_EXTERN axis2_char_t* AXIS2_CALL
00592     oxs_token_get_label_value(
00593         const axutil_env_t *env,
00594         axiom_node_t *label_node);
00595 
00599     AXIS2_EXTERN axiom_node_t* AXIS2_CALL
00600     oxs_token_build_properties_element(
00601         const axutil_env_t *env,
00602         axiom_node_t *parent,
00603         axis2_char_t* properties_val, 
00604         axis2_char_t *wsc_ns_uri);
00605 
00609     AXIS2_EXTERN axis2_char_t* AXIS2_CALL
00610     oxs_token_get_properties_value(
00611         const axutil_env_t *env,
00612         axiom_node_t *properties_node);
00613     
00617     AXIS2_EXTERN axiom_node_t* AXIS2_CALL
00618     oxs_token_build_generation_element(
00619         const axutil_env_t *env,
00620         axiom_node_t *parent,
00621         axis2_char_t *generation_val, 
00622         axis2_char_t *wsc_ns_uri);
00623     
00627     AXIS2_EXTERN axis2_char_t* AXIS2_CALL
00628     oxs_token_get_generation_value(
00629         const axutil_env_t *env,
00630         axiom_node_t *generation_node);
00631 
00634 #ifdef __cplusplus
00635 }
00636 #endif
00637 
00638 #endif /*OXS_TOKENS_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/oxs__sign__part_8h.html0000644000076500007650000002375011202454500023072 0ustar shankarshankar Rampart/C: oxs_sign_part.h File Reference

oxs_sign_part.h File Reference

Keeps information relavent for a single node of signing. More...

#include <axis2_defines.h>
#include <axutil_env.h>
#include <axiom_node.h>
#include <axiom_namespace.h>

Go to the source code of this file.

Typedefs

typedef struct oxs_sign_part_t oxs_sign_part_t

Functions

AXIS2_EXTERN oxs_sign_part_t * oxs_sign_part_create (const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_sign_part_free (oxs_sign_part_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_sign_part_get_id (const oxs_sign_part_t *sign_part, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_sign_part_get_digest_mtd (const oxs_sign_part_t *sign_part, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_sign_part_get_digest_val (const oxs_sign_part_t *sign_part, const axutil_env_t *env)
AXIS2_EXTERN axiom_node_t * oxs_sign_part_get_node (const oxs_sign_part_t *sign_part, const axutil_env_t *env)
AXIS2_EXTERN axutil_array_list_t * oxs_sign_part_get_transforms (const oxs_sign_part_t *sign_part, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_sign_part_get_id_name (const oxs_sign_part_t *sign_part, const axutil_env_t *env)
AXIS2_EXTERN axiom_namespace_t * oxs_sign_part_get_sign_namespace (const oxs_sign_part_t *sign_part, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_sign_part_set_id (oxs_sign_part_t *sign_part, const axutil_env_t *env, axis2_char_t *id)
AXIS2_EXTERN axis2_status_t oxs_sign_part_set_digest_mtd (oxs_sign_part_t *sign_part, const axutil_env_t *env, axis2_char_t *digest_mtd)
AXIS2_EXTERN axis2_status_t oxs_sign_part_set_digest_val (oxs_sign_part_t *sign_part, const axutil_env_t *env, axis2_char_t *digest_val)
AXIS2_EXTERN axis2_status_t oxs_sign_part_set_node (oxs_sign_part_t *sign_part, const axutil_env_t *env, axiom_node_t *node)
AXIS2_EXTERN axis2_status_t oxs_sign_part_set_transforms (oxs_sign_part_t *sign_part, const axutil_env_t *env, axutil_array_list_t *transforms)
AXIS2_EXTERN axis2_status_t oxs_sign_part_set_id_name (oxs_sign_part_t *sign_part, const axutil_env_t *env, axis2_char_t *id_name)
AXIS2_EXTERN axis2_status_t oxs_sign_part_set_sign_namespace (oxs_sign_part_t *sign_part, const axutil_env_t *env, axiom_namespace_t *sig_ns)


Detailed Description

Keeps information relavent for a single node of signing.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/axis2__key__type_8h.html0000644000076500007650000000377511202454500023157 0ustar shankarshankar Rampart/C: axis2_key_type.h File Reference

axis2_key_type.h File Reference

defines the key type More...

#include <axis2_defines.h>
#include <axutil_env.h>

Go to the source code of this file.

Enumerations

enum  axis2_key_type_t {
  AXIS2_KEY_TYPE_UNKNOWN = 0, AXIS2_KEY_TYPE_PEM, AXIS2_KEY_TYPE_CERT, AXIS2_KEY_TYPE_DER,
  AXIS2_KEY_TYPE_OTHER
}


Detailed Description

defines the key type


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/saml_8h-source.html0000644000076500007650000055717411202454500022163 0ustar shankarshankar Rampart/C: saml.h Source File

saml.h

00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 #ifndef SAML_H
00018 #define SAML_H
00019 
00020 #include <axutil_utils.h>
00021 #include <axutil_array_list.h>
00022 #include <axutil_hash.h>
00023 #include <axutil_date_time.h>
00024 #include <axiom.h>
00025 #include <oxs_xml_signature.h>
00026 #include <oxs_sign_ctx.h>
00027 #include <oxs_xml_key_processor.h>
00028 #include <oxs_utility.h>
00029 #include <oxs_transforms_factory.h>
00030 #include <oxs_xml_key_info_builder.h>
00031 #include <oxs_key_mgr.h>
00032 #include <oxs_transform.h>
00033 #include <oxs_x509_cert.h>
00034 #include <openssl_pkey.h>
00035 
00036 #ifdef __cplusplus
00037 extern "C"
00038 {
00039 #endif
00040 
00041 
00042 #define SAML_VERSION_MAX    16
00043 #define SAML_URI_LEN_MAX    2048
00044 #define SAML_ARRAY_LIST_DEF    4
00045 
00046 #define SAML_PREFIX                                                     "saml"
00047 #define SAML_NMSP_URI                                           "urn:oasis:names:tc:SAML:1.0:assertion"
00048 #define SAML_XML_TYPE                                           "type"
00049 #define SAML_XSI_NS                                                     "http://www.w3.org/2001/XMLSchema-instance"
00050 #define SAML_XSI                                                        "xsi"
00051 
00052 #define SAML_MAJORVERSION                                       "MajorVersion"
00053 #define SAML_MINORVERSION                                       "MinorVersion"
00054 #define SAML_ASSERTION_ID                                       "AssertionID"
00055 #define SAML_ISSUER                                                     "Issuer"
00056 #define SAML_ISSUE_INSTANT                                      "IssueInstant"
00057 #define SAML_STATEMENT                                          "Statement"
00058 #define SAML_SUBJECT_STATEMENT                          "SubjectStatement"
00059 #define SAML_AUTHENTICATION_STATEMENT           "AuthenticationStatement"
00060 #define SAML_AUTHORIZATION_DECISION_STATEMENT "AuthorizationDecisionStatement"
00061 #define SAML_ATTRIBUTE_STATEMENT                        "AttributeStatement"
00062 #define SAML_CONDITIONS                                         "Conditions"
00063 #define SAML_ADVICE                                                     "Advice"
00064 #define SAML_NOT_BEFORE                                         "NotBefore"
00065 #define SAML_NOT_ON_OR_AFTER                "NotOnOrAfter"
00066 #define SAML_SIGNATURE                                          "Signature"
00067 
00068 #define SAML_EMAIL_ADDRESS                                      "#emailAddress"
00069 #define SAML_X509_SUBJECT_NAME                          "#X509SubjectName"
00070 #define SAML_WINDOWS_DOMAIN_QUALIFIED_NAME  "#WindowsDomainQualifiedName"
00071 
00072 #define SAML_NAME_QUALIFIER                                     "NameQualifier"
00073 #define SAML_FORMAT                                                     "Format"
00074 #define SAML_NAME_IDENTIFIER                "NameIdentifier"
00075 #define SAML_SUBJECT_CONFIRMATION                       "SubjectConfirmation"
00076 #define SAML_CONFIRMATION_METHOD            "ConfirmationMethod"
00077 #define SAML_SUBJECT_CONFIRMATION_DATA          "SubjectConfirmationData"
00078 #define SAML_KEY_INFO                                           "KeyInfo"
00079 #define SAML_SUBJECT                                            "Subject"
00080 
00081 #define SAML_AUDIENCE                                           "Audience"
00082 #define SAML_AUDIENCE_RESTRICTION_CONDITION_TYPE "AudienceRestrictionConditionType" 
00083 #define SAML_AUDIENCE_RESTRICTION_CONDITION "AudienceRestrictionCondition"
00084 
00085 #define SAML_AUTHENTICATION_METHOD                      "AuthenticationMethod"
00086 #define SAML_AUTHENTICATION_INSTANT                     "AuthenticationInstant"
00087 #define SAML_IP_ADDRESS                                         "IPAddress" 
00088 #define SAML_DNS_ADDRESS                    "DNSAddress"
00089 #define SAML_SUBJECT_LOCALITY                "SubjectLocality"
00090 #define SAML_AUTHORITY_BINDING                          "AuthorityBinding"
00091 #define SAML_AUTHORITY_KIND                                     "AuthorityKind"
00092 #define SAML_LOCATION                                           "Location"
00093 #define SAML_BINDING                                            "Binding"
00094 
00095 #define SAML_RESOURCE                                           "Resource"
00096 #define SAML_DECISION                                           "Decision"    
00097 #define SAML_ACTION                                                     "Action"
00098 #define SAML_NAMESPACE                                          "Namespace"
00099 #define SAML_ASSERTION_ID_REFERENCE                     "AssertionIDReference" 
00100 #define SAML_ASSERTION                                          "Assertion"    
00101 #define SAML_ACTION                                                     "Action"
00102 #define SAML_EVIDENCE                                           "Evidence"
00103 
00104 #define SAML_ATTRIBUTE_NAME                                     "AttributeName"
00105 #define SAML_ATTRIBUTE_NAMESPACE            "AttributeNamespace"
00106 #define SAML_ATTRIBUTE_VALUE                "AttributeValue"
00107 #define SAML_ATTRIBUTE                                          "Attribute"
00108 #define SAML_ATTRIBUTE_DESIGNATOR                       "AttributeDesignator"
00109 
00110 #define SAML_SUB_CONFIRMATION_HOLDER_OF_KEY     "urn:oasis:names:tc:SAML:1.0:cm:holder-of-key"
00111 #define SAML_SUB_CONFIRMATION_SENDER_VOUCHES    "urn:oasis:names:tc:SAML:1.0:cm:sender-vouches"
00112 #define SAML_SUB_CONFIRMATION_ARTIFACT          "urn:oasis:names:tc:SAML:1.0:cm:artifact-01"
00113 #define SAML_SUB_CONFIRMATION_BEARER            "urn:oasis:names:tc:SAML:1.0:cm:bearer"
00114 
00115 #define SAML_AUTH_METHOD_URI_PASSWORD           "urn:oasis:names:tc:SAML:1.0:am:password"
00116 #define SAML_AUTH_METHOD_URI_KERBEROS           "urn:ietf:rfc:1510"
00117 #define SAML_AUTH_METHOD_URI_SRP                        "urn:ietf:rfc:2945"
00118 #define SAML_AUTH_METHOD_URI_HARDWARE_TOKEN     "urn:oasis:names:tc:SAML:1.0:am:HardwareToken"
00119 #define SAML_AUTH_METHOD_URI_SSL_TLS            "urn:ietf:rfc:2246"
00120 #define SAML_AUTH_METHOD_URI_X509                       "urn:oasis:names:tc:SAML:1.0:am:X509-PKI"
00121 #define SAML_AUTH_METHOD_URI_PGP                        "urn:oasis:names:tc:SAML:1.0:am:PGP"
00122 #define SAML_AUTH_METHOD_URI_SPKI                       "urn:oasis:names:tc:SAML:1.0:am:SPKI"
00123 #define SAML_AUTH_METHOD_URI_XKMS                       "urn:oasis:names:tc:SAML:1.0:am:XKMS"
00124 #define SAML_AUTH_METHOD_URI_XML_DS                     "urn:ietf:rfc:3075"
00125 #define SAML_AUTH_METHOD_URI_UNSPECIFIED        "urn:oasis:names:tc:SAML:1.0:am:unspecified"
00126 
00127 #define SAML_ACTION_URI_RWEDC_N                         "urn:oasis:names:tc:SAML:1.0:action:rwedc-negation"
00128 #define SAML_ACTION_URI_RWEDC                           "urn:oasis:names:tc:SAML:1.0:action:rwedc"
00129 
00130 #define SAML_ACTION_READ                                        "Read"
00131 #define SAML_ACTION_WRITE                                       "Write"
00132 #define SAML_ACTION_EXECUTE                                     "Execute"
00133 #define SAML_ACTION_DELETE                                      "Delete"
00134 #define SAML_ACTION_CONTROL                                     "Control"
00135 #define SAML_ACTION_READ_N                                      "~Read"
00136 #define SAML_ACTION_WRITE_N                                     "~Write"
00137 #define SAML_ACTION_EXECUTE_N                           "~Execute"
00138 #define SAML_ACTION_DELETE_N                            "~Delete"
00139 #define SAML_ACTION_CONTROL_N                           "~Control"
00140 
00141 #define SAML_MAJOR_VERSION                                      "1"
00142 
00143 typedef struct saml_assertion_s saml_assertion_t;
00144 
00145 #ifndef SAML_DECLARE
00146 #define SAML_DECLARE(type)      AXIS2_EXTERN type AXIS2_CALL
00147 #endif
00148 
00149 /* Defines the possible values to be reported as the status of an
00150  * authorization decision statement.
00151  */
00152 typedef enum decision_type
00153 {
00154     PERMIT = 0,
00155     DENY,
00156     INDETERMINATE
00157 } decision_type_t;
00158 
00159 typedef enum
00160 {
00161     SAML_COND_UNSPECFIED = 0,
00162     SAML_COND_AUDI_RESTRICTION 
00163 } saml_cond_type_t; 
00164 
00165 typedef struct condition_s 
00166 {
00167     saml_cond_type_t type;
00168     void *cond;
00169 } saml_condition_t;
00170 
00171 typedef struct saml_audi_restriction_cond_s
00172 {
00173     axutil_array_list_t *audiences;     
00174 } saml_audi_restriction_cond_t;
00175 
00176 typedef struct saml_advise_s
00177 {
00178     int a;
00179 } saml_advise_t;
00180 
00181 typedef enum
00182 {
00183     SAML_STMT_UNSPECIFED = 0,
00184     SAML_STMT_SUBJECTSTATEMENT,
00185     SAML_STMT_AUTHENTICATIONSTATEMENT,
00186     SAML_STMT_AUTHORIZATIONDECISIONSTATEMENT,
00187     SAML_STMT_ATTRIBUTESTATEMENT
00188 } saml_stmt_type_t;
00189 
00190 typedef struct
00191 {
00192     saml_stmt_type_t type;
00193     void *stmt;
00194 } saml_stmt_t;
00195 
00196 typedef struct saml_named_id_s
00197 {
00198     /* The security or administrative domain that qualifies the name of 
00199      * the subject 
00200      */
00201     axis2_char_t *name_qualifier;
00202 
00203     /* The syntax used to describe the name of the subject */
00204     axis2_char_t *format;
00205 
00206     axis2_char_t *name;
00207 } saml_named_id_t;
00208 
00209 
00210 typedef struct saml_subject_s
00211 {
00212     saml_named_id_t *named_id;
00213     
00214     /* URI reference that identifies a protocol to be used to authenticate 
00215      * the subject 
00216      */
00217     axutil_array_list_t *confirmation_methods;
00218 
00219     /* An XML Signature element that specifies a cryptographic key held by 
00220      * the subject 
00221      */
00222     axiom_node_t *key_info;
00223 
00224     /* Additional authentication information to be used by a specific 
00225      * authentication protocol 
00226      */
00227     axiom_node_t *confirmation_data;    
00228 } saml_subject_t;
00229 
00230 typedef struct saml_subject_stmt_s
00231 {
00232     saml_subject_t *subject;
00233 } saml_subject_stmt_t;
00234 
00235 typedef struct saml_action
00236 {
00237     /* URI for the specified action to be performed */
00238     char *name_space;
00239 
00240     /* An action to be performed on the data */
00241     char *data;
00242 } saml_action_t;
00243 
00244 
00245 typedef struct saml_evidence_s
00246 {
00247     /* Specifies an assertion by reference to the value of the assertion’s 
00248      * AssertionID attribute 
00249      */
00250     axutil_array_list_t *assertion_ids;
00251 
00252     /* Specifies an assertion by value */
00253     axutil_array_list_t *assertions;
00254 } saml_evidence_t;
00255 
00256 
00257 typedef struct saml_subject_locality
00258 {
00259     /* The IP address of the system entity that was authenticated */
00260     axis2_char_t *ip;
00261 
00262     /* The DNS address of the system entity that was authenticated */
00263     axis2_char_t *dns;
00264 } saml_subject_locality_t;
00265 
00266 
00267 typedef struct saml_auth_binding
00268 {
00269     /* The type of SAML Protocol queries to which the authority described 
00270      * by this element will respond 
00271      */
00272     axis2_char_t *auth_kind;
00273 
00274     /* A URI reference describing how to locate and communicate with the 
00275      * authority 
00276      */
00277     axis2_char_t *location;
00278 
00279     /* A URI reference identifying the SAML protocol binding to use 
00280      * in communicating with the authority 
00281      */
00282     axis2_char_t *binding;
00283 } saml_auth_binding_t;
00284 
00285 typedef struct saml_auth_stmt
00286 {
00287         saml_subject_t *subject;
00288 
00289     /* A URI reference that specifies the type of authentication that took place */
00290     axis2_char_t *auth_method;
00291     
00292     /* Specifies the time at which the authentication took place */
00293     axutil_date_time_t *auth_instanse;
00294 
00295     /* 
00296      * Specifies the DNS domain name and IP address for the system entity from which the Subject was
00297      * apparently authenticated 
00298      */
00299     /*saml_subject_locality_t *sub_locality;*/
00300         axis2_char_t *ip;
00301         
00302         axis2_char_t *dns;
00303 
00304     /* Indicates that additional information about the subject of the statement may be available */
00305     axutil_array_list_t *auth_binding;
00306 
00307 } saml_auth_stmt_t;
00308 
00309 typedef struct saml_auth_desicion_stmt
00310 {
00311     saml_subject_t *subject;
00312     /* A URI reference identifying the resource to which access authorization */
00313     char *resource;
00314 
00315     /* The decision rendered by the issuer with respect to the specified resource */
00316     char *decision;
00317 
00318     /* The set of actions authorized to be performed on the specified resource */
00319     axutil_array_list_t *action;
00320 
00321     /* A set of assertions that the issuer relied on in making the decision */
00322     saml_evidence_t *evidence;
00323 } saml_auth_desicion_stmt_t;
00324 
00325 typedef struct saml_attr_s 
00326 {
00327     /* The name of the attribute */
00328     char *attr_name;
00329 
00330     /* The namespace in which the AttributeName elements are interpreted */
00331     char *attr_nmsp;
00332 
00333     axutil_array_list_t *attr_value;
00334 } saml_attr_t;
00335 
00336 
00337 typedef struct saml_attr_stmt_s 
00338 {
00339     saml_subject_t *subject;
00340     /* An attribute */
00341     axutil_array_list_t *attribute;
00342 } saml_attr_stmt_t;
00343 
00344 typedef struct saml_attr_desig_s
00345 {
00346     axis2_char_t *attr_name;
00347     axis2_char_t *attr_nmsp;
00348 } saml_attr_desig_t;
00349 
00350 struct saml_assertion_s
00351 {
00352     /* majod version */
00353     axis2_char_t *major_version;
00354 
00355     /* minor version */
00356     axis2_char_t *minor_version;
00357 
00358     /* id */
00359     axis2_char_t *assertion_id;
00360 
00361     /* uri representing the issuer */
00362     axis2_char_t *issuer;
00363 
00364     /* time instant of the issue */
00365     axutil_date_time_t *issue_instant;
00366         
00367         /* specifies the time instant at which the validity interval begins */
00368     axutil_date_time_t *not_before;    
00369 
00370         /* specifies the time instant at which the validity interval has ended */
00371     axutil_date_time_t *not_on_or_after;
00372 
00373     /* SAML condition */
00374     axutil_array_list_t *conditions;
00375 
00376     /* An XML Signature that authenticates the assertion */
00377     axiom_node_t *signature;
00378 
00379         /* array list containing the statements */
00380         axutil_array_list_t *statements;
00381 
00382         /* information about the signing */
00383         oxs_sign_ctx_t *sign_ctx;
00384 
00385         /* The xml node which is used to build the assertion */
00386         axiom_node_t *ori_xml;  
00387 };
00388 
00389 /* assertion */
00390 
00391 /* 
00392  * Creates a saml assertion.
00393  * @param env pointer to environment struct
00394  */
00395 AXIS2_EXTERN saml_assertion_t *AXIS2_CALL 
00396 saml_assertion_create(
00397         const axutil_env_t *env);
00398 
00399 /* 
00400  * Free a saml assertion
00401  * @param env pointer to environment struct
00402  */
00403 AXIS2_EXTERN void AXIS2_CALL 
00404 saml_assertion_free(
00405         saml_assertion_t *assertion, 
00406         const axutil_env_t *env);
00407 
00408 /* 
00409  * Build the saml assertion from a axiom node.
00410  * @param assertion assertion to be populated
00411  * @param env pointer to environment struct
00412  */
00413 AXIS2_EXTERN int AXIS2_CALL 
00414 saml_assertion_build(
00415         saml_assertion_t *a, 
00416         axiom_node_t *node, 
00417         const axutil_env_t *env);
00418 
00419 /* 
00420  * Serialize a saml assertion to a om node.
00421  * @param assertion assertion to be serialized
00422  * @param parent if specified created node will be a child of this  
00423  * @param env pointer to environment struct
00424  */
00425 AXIS2_EXTERN axiom_node_t * AXIS2_CALL 
00426 saml_assertion_to_om(
00427         saml_assertion_t *assertion, 
00428         axiom_node_t *parent, 
00429         const axutil_env_t *env);
00430 
00431 /* 
00432  * Returns all the condition in the assertion.
00433  * @param assertion assertion object
00434  * @param env pointer to environment struct
00435  */
00436 AXIS2_EXTERN axutil_array_list_t * AXIS2_CALL 
00437 saml_assetion_get_conditions(
00438         saml_assertion_t *assertion, 
00439         const axutil_env_t *env);
00440 
00441 /* 
00442  * Returns all the statements in the assertion.
00443  * @param assertion SAML assertion object
00444  * @param env pointer to environment struct
00445  */
00446 AXIS2_EXTERN axutil_array_list_t * AXIS2_CALL 
00447 saml_assertion_get_statements(
00448         saml_assertion_t *assertion, 
00449         const axutil_env_t *env);
00450 
00451 /* 
00452  * Set the conditions for the assertion. If there are conditions already 
00453  * specified, they will be freed. 
00454  * @param assertion SAML assertion object
00455  * @param env pointer to environment struct
00456  * @param list array list containing the conditions
00457  */
00458 AXIS2_EXTERN int AXIS2_CALL 
00459 saml_assertion_set_conditions(
00460         saml_assertion_t *assertion, 
00461         const axutil_env_t *env, axutil_array_list_t *list);
00462 
00463 /* 
00464  * Add a condition to the assertin.
00465  * @param assertion SAML assertion object
00466  * @param env pointer to environment struct
00467  * @param cond a pointer to a condition to be added
00468  */
00469 AXIS2_EXTERN int AXIS2_CALL 
00470 saml_assertion_add_condition(
00471         saml_assertion_t *assertion, 
00472         const axutil_env_t *env, 
00473         saml_condition_t *cond);
00474 
00475 /*
00476  * Remove a condition from the assertion.
00477  * @param assertion SAML assertion object
00478  * @param env pointer to environment struct
00479  */
00480 AXIS2_EXTERN int AXIS2_CALL 
00481 saml_assertion_remove_condition(
00482         saml_assertion_t *assertion, 
00483         const axutil_env_t *env, 
00484         int index);
00485 
00486 /* 
00487  * Set the statements for the assertion. If there are statements already 
00488  * specified, they will be freed. 
00489  * @param assertion SAML assertion object
00490  * @param env pointer to environment struct
00491  * @param list array list containing the statements
00492  */
00493 AXIS2_EXTERN int AXIS2_CALL 
00494 saml_assertion_set_statements(
00495         saml_assertion_t *assertion, 
00496         const axutil_env_t *env, 
00497         axutil_array_list_t *list);
00498 
00499 /* 
00500  * Add a statement to the assertin.
00501  * @param assertion SAML assertion object
00502  * @param env pointer to environment struct
00503  * @param cond a pointer to a statement to be added
00504  */
00505 AXIS2_EXTERN int AXIS2_CALL 
00506 saml_assertion_add_statement(
00507         saml_assertion_t *assertion, 
00508         const axutil_env_t *env, 
00509         saml_stmt_t *stmt);
00510 
00511 /*
00512  * Remove a statement from the assertion.
00513  * @param assertion SAML assertion object
00514  * @param env pointer to environment struct
00515  */
00516 AXIS2_EXTERN int AXIS2_CALL 
00517 saml_assertion_remove_statement(
00518         saml_assertion_t *assertion, 
00519         const axutil_env_t *env, 
00520         int index);
00521 
00522 /* 
00523  * Set the minor vertion of the assertion
00524  * @param assertion SAML assertion object
00525  * @param env pointer to environment struct
00526  * @param version minor version number
00527  */ 
00528 AXIS2_EXTERN int AXIS2_CALL 
00529 saml_assertion_set_minor_version(
00530         saml_assertion_t *assertion, 
00531         const axutil_env_t *env, 
00532         int version);
00533 
00534 /* 
00535  * Set the minor vertion of the assertion
00536  * @param assertion SAML assertion object
00537  * @param env pointer to environment struct
00538  */ 
00539 AXIS2_EXTERN int AXIS2_CALL 
00540 saml_assertion_set_issuer(
00541         saml_assertion_t *assertion, 
00542         const axutil_env_t *env, 
00543         axis2_char_t *issuer);
00544 
00545 /* 
00546  * Set the issuer of the assertion
00547  * @param assertion SAML assertion object
00548  * @param env pointer to environment struct
00549  * @instant time of the saml issue
00550  */
00551 AXIS2_EXTERN int AXIS2_CALL 
00552 saml_assertion_set_issue_instant(
00553         saml_assertion_t *assertion, 
00554         const axutil_env_t *env, 
00555         axutil_date_time_t *instant);
00556 
00557 /* 
00558  * Specifies the time instant at which the validity interval begins.
00559  * @param assertion SAML assertion object
00560  * @param env pointer to environment struct
00561  * @instant time at which validity interval begins 
00562  */ 
00563 AXIS2_EXTERN int AXIS2_CALL 
00564 saml_assertion_set_not_before(
00565         saml_assertion_t *assertion, 
00566         const axutil_env_t *env, 
00567         axutil_date_time_t *time);
00568 
00569 /* 
00570  * Specifies the time instant at which the validity interval has ended
00571  * @param assertion SAML assertion object
00572  * @param env pointer to environment struct
00573  * @instant time at which validity interval has ended 
00574  */ 
00575 AXIS2_EXTERN int AXIS2_CALL 
00576 saml_assertion_set_not_on_or_after(
00577         saml_assertion_t *assertion, 
00578         const axutil_env_t *env, 
00579         axutil_date_time_t *time);
00580 
00581 /* 
00582  * Return SAML authority that created the assertion. The name of the issuer 
00583  * is provided as a string and it is unambiguous to the relying party.
00584  * @param assertion SAML assertion object
00585  * @param env pointer to environment struct
00586  */
00587 AXIS2_EXTERN axis2_char_t * AXIS2_CALL 
00588 saml_assertion_get_issuer(
00589         saml_assertion_t *assertion, 
00590         const axutil_env_t *env);
00591 
00592 /*
00593  * Return the time instant of issue.
00594  * @param assertion SAML assertion object
00595  * @param env pointer to environment struct
00596  */
00597 AXIS2_EXTERN axutil_date_time_t * AXIS2_CALL 
00598 saml_assertion_get_issue_instant(
00599         saml_assertion_t *assertion, 
00600         const axutil_env_t *env);
00601 
00602 /* 
00603  * Get the time instant at which the validity interval begins.
00604  * @param assertion SAML assertion object
00605  * @param env pointer to environment struct
00606  */ 
00607 AXIS2_EXTERN axutil_date_time_t * AXIS2_CALL 
00608 saml_assertion_get_not_before(
00609         saml_assertion_t *assertion, 
00610         const axutil_env_t *env);
00611 
00612 /* 
00613  * Get the time instant at which the validity interval has ended
00614  * @param assertion SAML assertion object
00615  * @param env pointer to environment struct
00616  */ 
00617 AXIS2_EXTERN axutil_date_time_t * AXIS2_CALL 
00618 saml_assertion_get_not_on_or_after(
00619         saml_assertion_t *assertion, 
00620         const axutil_env_t *env);
00621 
00622 /* sign methods */
00623 
00624 /* 
00625  * Get weather a assertion is signed. This is set when the Assertion is built 
00626  * from a om node.
00627  * @param assertion SAML assertion object
00628  * @param env pointer to environment struct
00629  * @return AXIS2_TRUE if signed.
00630  */
00631 AXIS2_EXTERN int AXIS2_CALL
00632 saml_assertion_is_signed(
00633         saml_assertion_t *assertion, 
00634         const axutil_env_t *env);
00635 
00636 /*
00637  * Get weather a assertion is set to be signed. This applies when building 
00638  * the SAML object programmatically.
00639  * @param assertion SAML assertion object
00640  * @param env pointer to environment struct
00641  * @return AXIS2_TRUE if the object model is set to be signed.
00642  */
00643 AXIS2_EXTERN int AXIS2_CALL
00644 saml_assertion_is_sign_set(
00645         saml_assertion_t *assertion, 
00646         const axutil_env_t *env);
00647 
00648 /*
00649  * Verify the assertion according to the sign context set in the 
00650  * saml_assertion_set_default_signature or saml_assertion_set_signature method.
00651  * @param assertion SAML assertion object
00652  * @param env pointer to environment struct
00653  */
00654 AXIS2_EXTERN int AXIS2_CALL
00655 saml_assertion_signature_verify(
00656         saml_assertion_t *assertion, 
00657         const axutil_env_t *env);
00658 
00659 /* 
00660  * Sign the assertion using the information set in the 
00661  * saml_assertion_set_default_signature or saml_assertion_set_signature method.
00662  * @param assertion SAML assertion object
00663  * @param env pointer to environment struct
00664  */
00665 AXIS2_EXTERN int AXIS2_CALL
00666 saml_assertion_sign(
00667         saml_assertion_t *assertion, 
00668         axiom_node_t *node, 
00669         const axutil_env_t *env);
00670 
00671 /* 
00672  * Remove the information set for signing or verifying the assertion.
00673  * @param assertion SAML assertion object
00674  * @param env pointer to environment struct
00675  */
00676 AXIS2_EXTERN int AXIS2_CALL 
00677 saml_assertion_unsign(
00678         saml_assertion_t *assertion, 
00679         const axutil_env_t *env);
00680 
00681 /* 
00682  * Set the information required to sign the message. 
00683  * @param assertion SAML assertion object
00684  * @param env pointer to environment struct
00685  * @param sign_ctx oxs_sign_ctx_t object which contains the sign information
00686  */
00687 AXIS2_EXTERN int AXIS2_CALL 
00688 saml_assertion_set_default_signature(
00689         saml_assertion_t *assertion, 
00690         const axutil_env_t *env, 
00691         oxs_sign_ctx_t *sign_ctx);
00692 
00693 /* 
00694  * Set the information required to sign the message.
00695  * @param assertion SAML assertion object
00696  * @param env pointer to environment struct
00697  * @param sign_ctx oxs_sign_ctx_t object which contains the sign information
00698  */
00699 AXIS2_EXTERN int AXIS2_CALL 
00700 saml_assertion_set_signature(
00701         saml_assertion_t *assertion, 
00702         const axutil_env_t *env, 
00703         oxs_sign_ctx_t *sign_ctx);
00704 
00705 
00706 /* statement */
00707 
00708 /* 
00709  * Create a saml statement. Statement is a generic object which can hold 
00710  * tatement object can hold other statements like Autherization statements.
00711  * @param env pointer to environment struct 
00712  * @return saml_stmt object to hold other staments
00713  */
00714 AXIS2_EXTERN saml_stmt_t * AXIS2_CALL 
00715 saml_stmt_create(
00716         const axutil_env_t *env);
00717 
00718 /* 
00719  * Free a saml statment. 
00720  * @param stmt SAML stmt object
00721  * @param env pointer to environment struct
00722  */
00723 AXIS2_EXTERN void AXIS2_CALL 
00724 saml_stmt_free(
00725         saml_stmt_t *stmt, 
00726         const axutil_env_t *env);
00727 
00728 /* 
00729  * Build a saml statement from a XML node. The statement types that are 
00730  * supported are Authentication Statement, Attribute Statement, 
00731  * Authentication Dicision Statement.
00732  * @param stmt SAML stmt object
00733  * @param env pointer to environment struct
00734  */
00735 AXIS2_EXTERN int AXIS2_CALL 
00736 saml_stmt_build(
00737         saml_stmt_t *stmt, 
00738         axiom_node_t *node, 
00739         const axutil_env_t *env);
00740 
00741 /*
00742  * Serialize a statement to a axiom node.
00743  * @param stmt SAML stmt object
00744  * @param parent if specified created node will be a child of this  
00745  * @param env pointer to environment struct
00746  */
00747 AXIS2_EXTERN axiom_node_t * AXIS2_CALL 
00748 saml_stmt_to_om(saml_stmt_t *stmt, axiom_node_t *parent, const axutil_env_t *env);
00749 
00750 /*
00751  * Get the type of the statement. 
00752  * @param stmt SAML stmt object
00753  * @param env pointer to environment struct
00754  * @return statment type as saml_stmt_type_t
00755  */
00756 AXIS2_EXTERN saml_stmt_type_t AXIS2_CALL 
00757 saml_stmt_get_type(saml_stmt_t *stmt, const axutil_env_t *env);
00758 
00759 /*
00760  * Return the specific stament in this statement. 
00761  * @param stmt SAML stmt object
00762  * @param env pointer to environment struct
00763  */
00764 AXIS2_EXTERN saml_stmt_t * AXIS2_CALL 
00765 saml_stmt_get_stmt(saml_stmt_t *stmt, const axutil_env_t *env);
00766 
00767 /* 
00768  * Set the type of statement.
00769  * @param stmt SAML stmt object
00770  * @param env pointer to environment struct
00771  * @param type type of the statement as saml_stmt_type_t 
00772  */
00773 AXIS2_EXTERN int AXIS2_CALL 
00774 saml_stmt_set_type(saml_stmt_t *stmt, const axutil_env_t *env, saml_stmt_type_t type);
00775 
00776 /*
00777  * Set the statement. If a statment is already specified it will be freed.
00778  * @param stmt SAML stmt object
00779  * @param env pointer to environment struct
00780  * @param st pointer to the statement to be set
00781  * @param type type of the statement as saml_stmt_type_t 
00782  */
00783 AXIS2_EXTERN int AXIS2_CALL 
00784 saml_stmt_set_stmt(saml_stmt_t *stmt, const axutil_env_t *env, 
00785                                    void *st, saml_stmt_type_t type);
00786 
00787 
00788 /*AXIS2_EXTERN int AXIS2_CALL saml_id_init(saml_id_t *id, const axutil_env_t *env);*/
00789 AXIS2_EXTERN axis2_char_t * AXIS2_CALL saml_id_generate_random_bytes(const axutil_env_t *env);
00790 /*AXIS2_EXTERN void AXIS2_CALL saml_id_uninit(saml_id_t *id, const axutil_env_t *env);*/
00791 
00792 
00793 /* AuthorityBinding */
00794 
00795 /*
00796  * Creates a SAML AuthorityBinding.
00797  * @param env pointer to environment struct
00798  */
00799 AXIS2_EXTERN saml_auth_binding_t * AXIS2_CALL 
00800 saml_auth_binding_create(const axutil_env_t *env);
00801 
00802 /*
00803  * Free a SAML Autherity binding.
00804  * @param auth_bind SAML Autherity binding object
00805  * @param env pointer to environment struct
00806  */
00807 AXIS2_EXTERN void AXIS2_CALL 
00808 saml_auth_binding_free(saml_auth_binding_t *auth_bind, const axutil_env_t *env);
00809 
00810 /*
00811  * Create a SAML autherity binding from a XML node.
00812  * @param auth_bind SAML Autherity binding object
00813  * @param node XML node containing the autherity binding 
00814  * @param env pointer to environment struct 
00815  */
00816 AXIS2_EXTERN int AXIS2_CALL 
00817 saml_auth_binding_build(saml_auth_binding_t *auth_bind, 
00818                                                 axiom_node_t *node, const axutil_env_t *env);
00819 
00820 /*
00821  * Serialize an auth binding to axiom node
00822  * @param auth_bind SAML Autherity binding object
00823  * @param parent if specified created node will be a child of this node  
00824  * @param env pointer to environment struct 
00825  */
00826 AXIS2_EXTERN axiom_node_t * AXIS2_CALL 
00827 saml_auth_binding_to_om(saml_auth_binding_t *auth_binding, 
00828                                                 axiom_node_t *parent, const axutil_env_t *env);
00829 
00830 /*
00831  * Return the type of SAML protocol queries to which the authority described 
00832  * by this element will respond.
00833  * @param auth_bind SAML Autherity binding object
00834  * @param env pointer to environment struct 
00835  */
00836 AXIS2_EXTERN axis2_char_t * AXIS2_CALL 
00837 saml_auth_binding_get_authoity_kind(saml_auth_binding_t *auth_bind, 
00838                                                                         const axutil_env_t *env);
00839 
00840 /*
00841  * Return the URI identifying the SAML protocol binding to use in 
00842  * communicating with the authority.
00843  * @param auth_bind SAML Autherity binding object
00844  * @param env pointer to environment struct 
00845  */
00846 AXIS2_EXTERN axis2_char_t * AXIS2_CALL 
00847 saml_auth_binding_get_binding(saml_auth_binding_t *auth_binding, 
00848                                                           const axutil_env_t *env);
00849 
00850 /*
00851  * Return a URI describing how to locate and communicate with the authority
00852  * @param auth_bind SAML Autherity binding object
00853  * @param env pointer to environment struct 
00854  */
00855 AXIS2_EXTERN axis2_char_t * AXIS2_CALL 
00856 saml_auth_binding_get_location(saml_auth_binding_t *auth_bind, 
00857                                                            const axutil_env_t *env);
00858 
00859 /*
00860  * Set the type of SAML protocol queries to which the authority described 
00861  * by this element will respond.
00862  * @param auth_bind SAML Autherity binding object
00863  * @param env pointer to environment struct 
00864  * @param auth_kind A string representing the SAML protocol queries 
00865  */
00866 AXIS2_EXTERN int AXIS2_CALL 
00867 saml_auth_binding_set_authority_kind(saml_auth_binding_t *auth_bind, 
00868                                                                          const axutil_env_t *env, axis2_char_t *auth_kind);
00869 
00870 /*
00871  * Set the URI identifying the SAML protocol binding to use in 
00872  * communicating with the authority.
00873  * @param auth_bind SAML Autherity binding object
00874  * @param env pointer to environment struct 
00875  * @param binding URI identifying the SAML protocol binding 
00876  */
00877 AXIS2_EXTERN int AXIS2_CALL 
00878 saml_auth_binding_set_binding(saml_auth_binding_t *auth_bind, 
00879                                                           const axutil_env_t *env, axis2_char_t *binding);
00880 
00881 /*
00882  * Set a URI describing how to locate and communicate with the authority
00883  * @param auth_bind SAML Autherity binding object
00884  * @param env pointer to environment struct 
00885  * @param location URI describing location and communication protocol
00886  */
00887 AXIS2_EXTERN int AXIS2_CALL 
00888 saml_auth_binding_set_location(saml_auth_binding_t *auth_bind, 
00889                                                            const axutil_env_t *env, axis2_char_t *location);
00890 
00891 
00892 /* subject locality */
00893 
00894 /*
00895  * Create a SAML subject locality.
00896  * @param env pointer to environment struct 
00897  */
00898 AXIS2_EXTERN saml_subject_locality_t * AXIS2_CALL 
00899 saml_subject_locality_create(const axutil_env_t *env);
00900 
00901 /*
00902  * Free a SAML subject locality.
00903  * @param sub_locality SAML subject locality object
00904  * @param env pointer to environment struct 
00905  */
00906 AXIS2_EXTERN void AXIS2_CALL 
00907 saml_subject_locality_free(saml_subject_locality_t *sub_locality, 
00908                                                    const axutil_env_t *env);
00909 
00910 /*
00911  * Populate a SAML subject locality from a XML node containing a SAML 
00912  * subject locality.
00913  * @param sub_locality SAML subject locality object
00914  * @param node XML node containing the SAML subject locality
00915  * @param env pointer to environment struct 
00916  */
00917 AXIS2_EXTERN int AXIS2_CALL 
00918 saml_subject_locality_build(saml_subject_locality_t *sub_locality, 
00919                                                         axiom_node_t *node, const axutil_env_t *env);
00920 
00921 /*
00922  * Serialize a subject locality to an axiom node.
00923  * @param sub_locality SAML subject locality object
00924  * @param parent if specified created node will be a child of this node  
00925  * @param env pointer to environment struct 
00926  */
00927 AXIS2_EXTERN axiom_node_t *AXIS2_CALL 
00928 saml_subject_locality_to_om(saml_subject_locality_t *sub_locality, 
00929                                                         axiom_node_t *parent, const axutil_env_t *env);
00930 
00931 /*
00932  * Return the IP address of the system entity that was authenticated.
00933  * @param sub_locality SAML subject locality object
00934  * @param env pointer to environment struct 
00935  * @return IP address
00936  */
00937 AXIS2_EXTERN axis2_char_t * AXIS2_CALL 
00938 saml_subject_locality_get_ip(saml_subject_locality_t *sub_locality, 
00939                                                          const axutil_env_t *env);
00940 
00941 /*
00942  * Return the DNS address of the system entity that was authenticated.
00943  * @param sub_locality SAML subject locality object
00944  * @param env pointer to environment struct 
00945  * @return DNS address
00946  */
00947 AXIS2_EXTERN axis2_char_t * AXIS2_CALL 
00948 saml_subject_locality_get_dns(saml_subject_locality_t *sub_locality, 
00949                                                           const axutil_env_t *env);
00950 
00951 /*
00952  * Set the IP address of the system entity that was authenticated.
00953  * @param sub_locality SAML subject locality object
00954  * @param env pointer to environment struct 
00955  * @param ip IP address
00956  */
00957 AXIS2_EXTERN int AXIS2_CALL 
00958 saml_subject_locality_set_ip(saml_subject_locality_t *sub_locality, 
00959                                                          const axutil_env_t *env, axis2_char_t *ip);
00960 
00961 /*
00962  * Set the DNS address of the system entity that was authenticated.
00963  * @param sub_locality SAML subject locality object
00964  * @param env pointer to environment struct 
00965  * @param ip DNS address
00966  */
00967 AXIS2_EXTERN int AXIS2_CALL 
00968 saml_subject_locality_set_dns(saml_subject_locality_t *sub_locality, 
00969                                                           const axutil_env_t *env, axis2_char_t *dns);
00970 
00971 
00972 /* subject */
00973 
00974 /*
00975  * Create a SAML subject
00976  * @param env pointer to environment struct 
00977  */
00978 AXIS2_EXTERN saml_subject_t * AXIS2_CALL 
00979 saml_subject_create(const axutil_env_t *env);
00980 
00981 /*
00982  * Free a SAML subject
00983  * @param subject SAML subject object
00984  * @param env pointer to environment struct 
00985  */
00986 AXIS2_EXTERN void AXIS2_CALL 
00987 saml_subject_free(saml_subject_t *subject, const axutil_env_t *env);
00988 
00989 /*
00990  * Populates a SAML subject from a XML node containing a SAML subject.
00991  * @param subject SAML subject object
00992  * @param node XML node containing the SAML subject locality
00993  * @param env pointer to environment struct 
00994  */
00995 AXIS2_EXTERN int AXIS2_CALL 
00996 saml_subject_build(saml_subject_t *subject, 
00997                                    axiom_node_t *node, const axutil_env_t *env);
00998 
00999 /*
01000  * Serialize a SAML subject to a axiom node.
01001  * @param subject SAML subject object
01002  * @param parent if specified created node will be a child of this node  
01003  * @param env pointer to environment struct 
01004  */
01005 AXIS2_EXTERN axiom_node_t * AXIS2_CALL 
01006 saml_subject_to_om(saml_subject_t *subject, 
01007                                    axiom_node_t *parent, const axutil_env_t *env);
01008 
01009 /*
01010  * Return the named id of the subject.
01011  * @param subject SAML subject object
01012  * @param env pointer to environment struct 
01013  * @return named id object
01014  */
01015 AXIS2_EXTERN saml_named_id_t * AXIS2_CALL 
01016 saml_subject_get_named_id(saml_subject_t *subject, const axutil_env_t *env);
01017 
01018 /*
01019  * Return the list of confirmation methods. Array list contains string values.
01020  * @param subject SAML subject object
01021  * @param env pointer to environment struct 
01022  * @return list containing the subject confirmation methods
01023  */
01024 AXIS2_EXTERN axutil_array_list_t * AXIS2_CALL 
01025 saml_subject_get_confirmation_methods(saml_subject_t *subject, 
01026                                                                           const axutil_env_t *env);
01027 
01028 /*
01029  * Return the list of confirmation data. Array list contains string values.
01030  * @param subject SAML subject object
01031  * @param env pointer to environment struct 
01032  * @return list containing the subject confirmation data
01033  */
01034 AXIS2_EXTERN axiom_node_t * AXIS2_CALL 
01035 saml_subject_get_confirmation_data(saml_subject_t *subject, const axutil_env_t *env);
01036 
01037 /*
01038  * Return an axiom node containing the key info of this subject. The axiom node 
01039  * is a ds:keyinfo of XML signature. 
01040  * @param subject SAML subject object
01041  * @param env pointer to environment struct 
01042  */
01043 AXIS2_EXTERN axiom_node_t * AXIS2_CALL 
01044 saml_subject_get_key_info(saml_subject_t *subject, const axutil_env_t *env);
01045 
01046 /*
01047  * Set the named id of the subject.
01048  * @param subject SAML subject object
01049  * @param env pointer to environment struct  
01050  * @param named_id a named id to be set
01051  */
01052 AXIS2_EXTERN int AXIS2_CALL 
01053 saml_subject_set_named_id(saml_subject_t *subject, 
01054                                                   const axutil_env_t *env, saml_named_id_t *named_id);
01055 
01056 /*
01057  * Set the confirmation as a array list. The array list should contain 
01058  * string values. If confirmation methods are already present they will 
01059  * be freed.
01060  * @param subject SAML subject object
01061  * @param env pointer to environment struct  
01062  * @param list list of confirmation methods
01063  */
01064 AXIS2_EXTERN int AXIS2_CALL 
01065 saml_subject_set_confirmation_methods(saml_subject_t *subject, 
01066                                                                           const axutil_env_t *env, 
01067                                                                           axutil_array_list_t *list);
01068 /* 
01069  * Add a subject confirmation to this subject.
01070  * @param subject SAML subject object
01071  * @param env pointer to environment struct
01072  * @param sub_confirmation subject confirmation
01073  */
01074 AXIS2_EXTERN int AXIS2_CALL 
01075 saml_subject_add_confirmation(saml_subject_t *subject, 
01076                                                           const axutil_env_t *env, 
01077                                                           axis2_char_t *sub_confirmation);
01078 
01079 /* 
01080  * Remove a subject confirmatin at the specified index.
01081  * @param subject SAML subject object
01082  * @param env pointer to environment struct
01083  * @param index index of the subject confirmation
01084  */
01085 AXIS2_EXTERN int AXIS2_CALL 
01086 saml_subject_remove_subject_confiirmation(saml_subject_t *subject, 
01087                                                                                   const axutil_env_t *env, int index);
01088 
01089 /* 
01090  * Set an XML Signature keyinfo element that provides access to a cryptographic 
01091  * key held by the subject
01092  * @param subject SAML subject object
01093  * @param env pointer to environment struct
01094  * @param node XML signature keyinfo element
01095  */
01096 AXIS2_EXTERN int AXIS2_CALL 
01097 saml_subject_set_key_info(saml_subject_t *subject, 
01098                                                   const axutil_env_t *env, axiom_node_t *node);
01099 
01100 /* subject statement */
01101 
01102 /*
01103  * Builds a subject statement from a om node containing a subject statement.
01104  * @param subject_stmt a subject statement object
01105  * @param node om node containing a subject statement
01106  * @param env pointer to environment struct
01107  */ 
01108 AXIS2_EXTERN int AXIS2_CALL 
01109 saml_subject_stmt_build(saml_subject_stmt_t *subject_stmt, 
01110                                                 axiom_node_t *node, const axutil_env_t *env);
01111 
01112 /* 
01113  * Free a subject statement object
01114  * @param subject_stmt a subject statement object 
01115  * @param env pointer to environment struct
01116  */
01117 AXIS2_EXTERN void AXIS2_CALL 
01118 saml_subject_stmt_free(saml_subject_stmt_t *subject_stmt, 
01119                                            const axutil_env_t *env);
01120 
01121 /* 
01122  * Create a subject statment object
01123  * @param env pointer to environment struct
01124  * @return a subject statement object
01125  */
01126 AXIS2_EXTERN saml_subject_stmt_t * AXIS2_CALL 
01127 saml_subject_stmt_create(const axutil_env_t *env);
01128 
01129 /*
01130  * Serialize a subject statment to an axiom node
01131  * @param subject_stmt a subject statement object 
01132  * @param parent if specified created node will be a child of this node  
01133  * @param env pointer to environment struct 
01134  */
01135 AXIS2_EXTERN axiom_node_t * AXIS2_CALL 
01136 saml_subject_stmt_to_om(saml_subject_stmt_t *subject_stmt, 
01137                                                 axiom_node_t *parent, const axutil_env_t *env);
01138 
01139 /* 
01140  * Set the subject of the subject statement
01141  * @param subject_stmt a subject statement object 
01142  * @param env pointer to environment struct 
01143  * @param subject subject to be set
01144  */
01145 AXIS2_EXTERN int AXIS2_CALL 
01146 saml_subject_stmt_set_subject(saml_subject_stmt_t *subject_stmt, 
01147                                                           const axutil_env_t *env, saml_subject_t *subject);
01148 
01149 /*
01150  * Set the subject of the subject statement
01151  * @param subject_stmt a subject statement object 
01152  * @param env pointer to environment struct 
01153  * @param subject subject to be set
01154  */
01155 AXIS2_EXTERN saml_subject_t * AXIS2_CALL 
01156 saml_subject_stmt_get_subject(saml_subject_stmt_t *subject_stmt, 
01157                                                           const axutil_env_t *env);
01158 
01159 /* auth desicin statement */
01160 /*
01161  * Create an autherization decision statement object.
01162  * @param env pointer to environment struct 
01163  * @return an autherization decision statement object
01164  */
01165 AXIS2_EXTERN saml_auth_desicion_stmt_t * AXIS2_CALL 
01166 saml_auth_desicion_stmt_create(const axutil_env_t *env);
01167 
01168 /*
01169  * Free an autherization decision statement object.
01170  * @param auth_des_stmt a autherization decision statement object
01171  * @param env pointer to environment struct 
01172  */
01173 AXIS2_EXTERN void AXIS2_CALL 
01174 saml_auth_desicion_stmt_free(saml_auth_desicion_stmt_t *auth_des_stmt, 
01175                                                          const axutil_env_t *env);
01176 
01177 /*
01178  * Populates an saml_auth_desicion_stmt_t object from a XML node containing
01179  * autherization decision statement.
01180  * @param auth_des_stmt a autherization decision statement object
01181  * @param node xml node containing autherization decision object.
01182  * @param env pointer to environment struct 
01183  */
01184 AXIS2_EXTERN int AXIS2_CALL 
01185 saml_auth_desicion_stmt_build(saml_auth_desicion_stmt_t *auth_des_stmt, 
01186                                                           axiom_node_t *node, const axutil_env_t *env);
01187 
01188 /*
01189  * Serialize an saml_auth_desicion_stmt_t object to a axiom node.
01190  * @param auth_des_stmt a autherization decision statement object
01191  * @param parent if specified created node will be a child of this node  
01192  * @param env pointer to environment struct 
01193  */
01194 AXIS2_EXTERN axiom_node_t * AXIS2_CALL 
01195 saml_auth_desicion_stmt_to_om(saml_auth_desicion_stmt_t *auth_des_stmt, 
01196                                                           axiom_node_t *parent, const axutil_env_t *env);
01197 
01198 /*
01199  * Get the subject which is in this autheization decision statement.
01200  * @param auth_des_stmt a autherization decision statement object
01201  * @param env pointer to environment struct 
01202  */
01203 AXIS2_EXTERN saml_subject_t * AXIS2_CALL 
01204 saml_auth_desicion_stmt_get_subject(saml_auth_desicion_stmt_t *auth_des_stmt, 
01205                                                                         const axutil_env_t *env);
01206 /*
01207  * Return a URI reference identifying the resource to which access 
01208  * authorization is sought.
01209  * @param auth_des_stmt a autherization decision statement object
01210  * @param env pointer to environment struct 
01211  */
01212 AXIS2_EXTERN axis2_char_t * AXIS2_CALL 
01213 saml_auth_desicion_stmt_get_resource(saml_auth_desicion_stmt_t *auth_des_stmt, 
01214                                                                          const axutil_env_t *env);
01215 
01216 /*
01217  * Return the decision rendered by the SAML authority with respect to 
01218  * the specified resource. 
01219  * @param auth_des_stmt a autherization decision statement object
01220  * @param env pointer to environment struct 
01221  */
01222 AXIS2_EXTERN axis2_char_t * AXIS2_CALL 
01223 saml_auth_desicion_stmt_get_desicion(saml_auth_desicion_stmt_t *auth_des_stmt, 
01224                                                                          const axutil_env_t *env);
01225 
01226 /* 
01227  * Return the list of actions authorized to be performed on the specified 
01228  * resource.
01229  * @param auth_des_stmt a autherization decision statement object
01230  * @param env pointer to environment struct 
01231  */
01232 AXIS2_EXTERN axutil_array_list_t * AXIS2_CALL 
01233 saml_auth_desicion_stmt_get_actions(saml_auth_desicion_stmt_t *auth_des_stmt, 
01234                                                                         const axutil_env_t *env);
01235 
01236 /*
01237  * Return the list of assertions that the SAML authority relied on in making 
01238  * the decision.
01239  * @param auth_des_stmt a autherization decision statement object
01240  * @param env pointer to environment struct 
01241  */
01242 AXIS2_EXTERN saml_evidence_t * AXIS2_CALL 
01243 saml_auth_desicion_stmt_get_evidence(saml_auth_desicion_stmt_t *auth_des_stmt, 
01244                                                                          const axutil_env_t *env);
01245 
01246 /*
01247  * Set a URI reference identifying the resource to which access 
01248  * authorization is sought.
01249  * @param auth_des_stmt a autherization decision statement object
01250  * @param env pointer to environment struct 
01251  * @param resource a URI referencing the resource
01252  */
01253 AXIS2_EXTERN int AXIS2_CALL 
01254 saml_auth_desicion_stmt_set_resource(saml_auth_desicion_stmt_t *auth_des_stmt, 
01255                                                                          const axutil_env_t *env, axis2_char_t *resource);
01256 
01257 /*
01258  * Set the decision rendered by the SAML authority with respect to 
01259  * the specified resource as a string value. Valid decisions are Permit, 
01260  * Deny and Indeterminate.
01261  * @param auth_des_stmt a autherization decision statement object
01262  * @param env pointer to environment struct 
01263  * @param decision set the decision.
01264  */
01265 AXIS2_EXTERN int AXIS2_CALL 
01266 saml_auth_desicion_stmt_set_desicion(saml_auth_desicion_stmt_t *auth_des_stmt, 
01267                                                                          const axutil_env_t *env, axis2_char_t *desicion);
01268 
01269 /* 
01270  * Set the list of actions authorized to be performed on the specified 
01271  * resource.
01272  * @param auth_des_stmt a autherization decision statement object
01273  * @param env pointer to environment struct 
01274  * @param list list containing action objects
01275  */
01276 AXIS2_EXTERN int AXIS2_CALL 
01277 saml_auth_desicion_stmt_set_actions(saml_auth_desicion_stmt_t *auth_des_stmt, 
01278                                                                         const axutil_env_t *env, axutil_array_list_t *list);
01279 
01280 /*
01281  * Remove an action in the specified index.
01282  * @param auth_des_stmt a autherization decision statement object
01283  * @param env pointer to environment struct 
01284  */
01285 AXIS2_EXTERN int AXIS2_CALL 
01286 saml_auth_desicion_stmt_remove_action(saml_auth_desicion_stmt_t *auth_des_stmt, 
01287                                                                           const axutil_env_t *env, int index);
01288 
01289 /*
01290  * Add an action.
01291  * @param auth_des_stmt a autherization decision statement object
01292  * @param env pointer to environment struct 
01293  * @param action action object to be added
01294  */
01295 AXIS2_EXTERN int AXIS2_CALL 
01296 saml_auth_desicion_stmt_add_action(saml_auth_desicion_stmt_t *auth_des_stmt, 
01297                                                                    const axutil_env_t *env, saml_action_t *action);
01298 
01299 /*
01300  * Set the subject of the autherization decision object
01301  * @param auth_des_stmt a autherization decision statement object
01302  * @param env pointer to environment struct 
01303  * @param subject subject to be added
01304  */
01305 AXIS2_EXTERN int AXIS2_CALL 
01306 saml_auth_desicion_stmt_set_subject(saml_auth_desicion_stmt_t *auth_des_stmt, 
01307                                                                         const axutil_env_t *env, saml_subject_t *subject);
01308 
01309 /* auth statement */
01310 
01311 /*
01312  * Create an autherization statement.
01313  * @param env pointer to environment struct 
01314  * @return autherization statement object
01315  */ 
01316 AXIS2_EXTERN saml_auth_stmt_t * AXIS2_CALL 
01317 saml_auth_stmt_create(const axutil_env_t *env);
01318 
01319 /*
01320  * Free a autherization statement.
01321  * @param auth_stmt autherization statment object
01322  * @param env pointer to environment struct 
01323  */
01324 AXIS2_EXTERN void AXIS2_CALL 
01325 saml_auth_stmt_free(saml_auth_stmt_t *auth_stmt, const axutil_env_t *env);
01326 
01327 /*
01328  * Populates an auth_stmt from a om node containing a autherization statement
01329  * @param auth_stmt autherization statment object
01330  * @param node an om node containing an autherization statement
01331  * @param env pointer to environment struct 
01332  */
01333 AXIS2_EXTERN int AXIS2_CALL 
01334 saml_auth_stmt_build(saml_auth_stmt_t *auth_stmt, 
01335                                          axiom_node_t *node, const axutil_env_t *env);
01336 
01337 /*
01338  * Serialize an autherization statement to an om node
01339  * @param auth_stmt autherization statment object
01340  * @param parent if specified created node will be a child of this node  
01341  * @param env pointer to environment struct 
01342  */
01343 AXIS2_EXTERN axiom_node_t *AXIS2_CALL 
01344 saml_auth_stmt_to_om(saml_auth_stmt_t *auth_stmt, 
01345                                          axiom_node_t *parent, const axutil_env_t *env);
01346 
01347 /*
01348  * Return a URI reference that specifies the type of authentication that 
01349  * took place.
01350  * @param auth_stmt autherization statment object
01351  * @param env pointer to environment struct
01352  * @return URI reference 
01353  */
01354 AXIS2_EXTERN axis2_char_t * AXIS2_CALL 
01355 saml_auth_stmt_get_auth_method(saml_auth_stmt_t *auth_stmt, 
01356                                                            const axutil_env_t *env);
01357 
01358 /*
01359  * Return the time at which the authentication took place.
01360  * @param auth_stmt autherization statment object
01361  * @param env pointer to environment struct
01362  * @return time at which authentication took place 
01363  */
01364 AXIS2_EXTERN axutil_date_time_t * AXIS2_CALL 
01365 saml_auth_stmt_get_auth_instant(saml_auth_stmt_t *auth_stmt, 
01366                                                                 const axutil_env_t *env);
01367 
01368 /*
01369  * Return a list of additional information about the subject of 
01370  * the statement that may be available.
01371  * @param auth_stmt autherization statment object
01372  * @param env pointer to environment struct
01373  * @return a list of autherization binings
01374  */
01375 AXIS2_EXTERN axutil_array_list_t * AXIS2_CALL 
01376 saml_auth_stmt_get_auth_bindings(saml_auth_stmt_t *auth_stmt, 
01377                                                                  const axutil_env_t *env);
01378 
01379 /*
01380  * Return the IP address of the system entity that was authenticated.
01381  * @param auth_stmt autherization statment object
01382  * @param env pointer to environment struct
01383  * @return an IP address
01384  */
01385 AXIS2_EXTERN axis2_char_t * AXIS2_CALL 
01386 saml_auth_stmt_get_subject_ip(saml_auth_stmt_t *auth_stmt, 
01387                                                           const axutil_env_t *env);
01388 /*
01389  * Return the DNS address of the system entity that was authenticated.
01390  * @param auth_stmt autherization statment object
01391  * @param env pointer to environment struct
01392  * @return an DNS address
01393  */
01394 AXIS2_EXTERN axis2_char_t * AXIS2_CALL 
01395 saml_auth_stmt_get_subject_dns(saml_auth_stmt_t *auth_stmt, 
01396                                                            const axutil_env_t *env);
01397 
01398 /* 
01399  * Set the subject of the autherization statement
01400  * @param auth_stmt autherization statment object
01401  * @param env pointer to environment struct
01402  * @param subject a subject to be added
01403  */
01404 AXIS2_EXTERN int AXIS2_CALL 
01405 saml_auth_stmt_set_subject(saml_auth_stmt_t *auth_stmt, 
01406                                                    const axutil_env_t *env, saml_subject_t *subject);
01407 
01408 /*
01409  * Set a URI reference that specifies the type of authentication that 
01410  * took place.
01411  * @param auth_stmt autherization statment object
01412  * @param env pointer to environment struct
01413  * @param method URI reference 
01414  */
01415 AXIS2_EXTERN int AXIS2_CALL 
01416 saml_auth_stmt_set_auth_method(saml_auth_stmt_t *auth_stmt, 
01417                                                            const axutil_env_t *env, axis2_char_t *method);
01418 
01419 /*
01420  * Set the time at which the authentication took place.
01421  * @param auth_stmt autherization statment object
01422  * @param env pointer to environment struct
01423  * @param dt time at which authentication took place 
01424  */
01425 AXIS2_EXTERN int AXIS2_CALL 
01426 saml_auth_stmt_set_auth_instant(saml_auth_stmt_t *auth_stmt, 
01427                                                                 const axutil_env_t *env, axutil_date_time_t *dt);
01428 
01429 /*
01430  * Set a list of additional information about the subject of 
01431  * the statement that may be available as auth_bindings.
01432  * @param auth_stmt autherization statment object
01433  * @param env pointer to environment struct
01434  * @param list a list of autherization binings
01435  */
01436 AXIS2_EXTERN int AXIS2_CALL 
01437 saml_auth_stmt_set_auth_bindings(saml_auth_stmt_t *auth_stmt, 
01438                                                                  const axutil_env_t *env, axutil_array_list_t *list);
01439 
01440 /*
01441  * Add a additional information about the subject of 
01442  * the statement that may be available as an auth_binding.
01443  * @param auth_stmt autherization statment object
01444  * @param env pointer to environment struct
01445  * @param bind an authority binding
01446  */
01447 AXIS2_EXTERN int AXIS2_CALL 
01448 saml_auth_stmt_add_auth_binding(saml_auth_stmt_t *auth_stmt, 
01449                                                                 const axutil_env_t *env, saml_auth_binding_t *bind);
01450 
01451 /*
01452  * Remove an authority binding from a auth_statement.
01453  * @param auth_stmt autherization statment object
01454  * @param env pointer to environment struct
01455  * @param index index of the authority binding to be removed
01456  */
01457 AXIS2_EXTERN int AXIS2_CALL 
01458 saml_auth_stmt_remove_auth_binding(saml_auth_stmt_t *auth_stmt, 
01459                                                                    const axutil_env_t *env, int index);
01460 
01461 /*
01462  * Set the DNS address of the system entity that was authenticated.
01463  * @param auth_stmt autherization statment object
01464  * @param env pointer to environment struct
01465  * @param dns a DNS address
01466  */
01467 AXIS2_EXTERN int AXIS2_CALL 
01468 saml_auth_stmt_set_subject_dns(saml_auth_stmt_t *auth_stmt, 
01469                                                            const axutil_env_t *env, axis2_char_t *dns);
01470 
01471 /*
01472  * Set the IP address of the system entity that was authenticated.
01473  * @param auth_stmt autherization statment object
01474  * @param env pointer to environment struct
01475  * @param ip an IP address
01476  */
01477 AXIS2_EXTERN int AXIS2_CALL 
01478 saml_auth_stmt_set_subject_ip(saml_auth_stmt_t *auth_stmt, 
01479                                                           const axutil_env_t *env, axis2_char_t *ip);
01480 
01481 /* attribute statement */
01482 
01483 /*
01484  * Create a attribute statement.
01485  * @param env pointer to environment struct
01486  * @return saml attribute object
01487  */
01488 AXIS2_EXTERN saml_attr_stmt_t * AXIS2_CALL 
01489 saml_attr_stmt_create(const axutil_env_t *env);
01490 
01491 /*
01492  * Free an attribute statement.
01493  * @param attr_stmt pointer to an attribute statement object
01494  * @param env pointer to environment struct
01495  */
01496 AXIS2_EXTERN void AXIS2_CALL 
01497 saml_attr_stmt_free(saml_attr_stmt_t *attr_stmt, const axutil_env_t *env);
01498 
01499 /* 
01500  * Populates a attribute statement object from a axiom node containing a 
01501  * attribute statement.
01502  * @param attr_stmt pointer to an attribute statement object
01503  * @param node om node containing a attribute statement
01504  * @param env pointer to environment struct
01505  */
01506 AXIS2_EXTERN int AXIS2_CALL 
01507 saml_attr_stmt_build(saml_attr_stmt_t *attr_stmt, 
01508                                          axiom_node_t *node, const axutil_env_t *env);
01509 
01510 /*
01511  * Serialize an saml_attr_stmt to an om node
01512  * @param attr_stmt pointer to an attribute statement object
01513  * @param parent if specified created node will be a child of this node  
01514  * @param env pointer to environment struct
01515  */
01516 AXIS2_EXTERN axiom_node_t * AXIS2_CALL 
01517 saml_attr_stmt_to_om(saml_attr_stmt_t *attr_stmt, 
01518                                          axiom_node_t *parent, const axutil_env_t *env);
01519 
01520 /*
01521  * Get the saml subject in this attribute statement.
01522  * @param attr_stmt pointer to an attribute statement object
01523  * @param env pointer to environment struct
01524  * @return saml subject
01525  */
01526 AXIS2_EXTERN saml_subject_t * AXIS2_CALL 
01527 saml_attr_stmt_get_subject(saml_attr_stmt_t *attr_stmt, const axutil_env_t *env);
01528 
01529 /*
01530  * Get the list of attributes in this attribute statement.
01531  * @param attr_stmt pointer to an attribute statement object
01532  * @param env pointer to environment struct
01533  * @return array list containing the attribute objects
01534  */
01535 AXIS2_EXTERN axutil_array_list_t * AXIS2_CALL 
01536 saml_attr_stmt_get_attributes(saml_attr_stmt_t *attr_stmt, const axutil_env_t *env);
01537 
01538 /*
01539  * Set the subject of this attribute statement
01540  * @param attr_stmt pointer to an attribute statement object
01541  * @param env pointer to environment struct
01542  * @param subject 
01543  */
01544 AXIS2_EXTERN int AXIS2_CALL 
01545 saml_attr_stmt_set_subject(saml_attr_stmt_t *attr_stmt, 
01546                                                    const axutil_env_t *env, saml_subject_t *subject);
01547 
01548 /*
01549  * Set the attributes of the attribute statement as a list. If the attribute 
01550  * statement already contains attributes they will be replaced.
01551  * @param attr_stmt pointer to an attribute statement object
01552  * @param env pointer to environment struct
01553  * @param list attribute list
01554  */
01555 AXIS2_EXTERN int AXIS2_CALL 
01556 saml_attr_stmt_set_attributes(saml_attr_stmt_t *attr_stmt, 
01557                                                           const axutil_env_t *env, axutil_array_list_t *list);
01558 
01559 /*
01560  * Add an attribute to the attribute statement       
01561  * @param attr_stmt pointer to an attribute statement object
01562  * @param env pointer to environment struct
01563  * @param attribute an attribute to be added
01564  */
01565 AXIS2_EXTERN int AXIS2_CALL 
01566 saml_attr_stmt_add_attribute(saml_attr_stmt_t *attr_stmt, 
01567                                                          const axutil_env_t *env, saml_attr_t *attribute);
01568 
01569 /* 
01570  * Remove an attribute at the given index.
01571  * @param attr_stmt pointer to an attribute statement object
01572  * @param env pointer to environment struct
01573  * @param index index of the attribute
01574  */
01575 AXIS2_EXTERN int AXIS2_CALL 
01576 saml_attr_stmt_remove_attribute(saml_attr_stmt_t *attr_stmt, 
01577                                                                 const axutil_env_t *env, int index);
01578 
01579 /* condition */
01580 
01581 /*
01582  * Create a generic condition. Condition objects holds more specific 
01583  * conditions. The type attribute of a condition determines the specific 
01584  * condition.
01585  * @param env pointer to environment struct
01586  */
01587 AXIS2_EXTERN saml_condition_t * AXIS2_CALL 
01588 saml_condition_create(const axutil_env_t *env);
01589 
01590 /*
01591  * Free a condition object. The specific condition which is in this conditions 
01592  * will also be freed.
01593  * @param cond pointer to a condition object
01594  * @param env pointer to environment struct
01595  */
01596 AXIS2_EXTERN void AXIS2_CALL 
01597 saml_condition_free(saml_condition_t *cond, const axutil_env_t *env);
01598 
01599 /*
01600  * Populates a condition from a om node containing a condition. After this a 
01601  * specific condition will be built and set to this condition. 
01602  * @param cond pointer to a condition object
01603  * @param env pointer to environment struct
01604  * @param node om node containing a condition
01605  */
01606 AXIS2_EXTERN int AXIS2_CALL 
01607 saml_condition_build(saml_condition_t *cond, 
01608                                          axiom_node_t *node, const axutil_env_t *env);
01609 
01610 /* 
01611  * Serialize a condition to a om node. 
01612  * @param cond pointer to a condition object
01613  * @param parent if specified created node will be a child of this node  
01614  * @param env pointer to environment struct
01615  */
01616 AXIS2_EXTERN axiom_node_t * AXIS2_CALL 
01617 saml_condition_to_om(saml_condition_t *cond, 
01618                                          axiom_node_t *parent, const axutil_env_t *env);
01619 
01620 /*
01621  * Set the specific condition for this condition.
01622  * @param cond pointer to a condition object
01623  * @param env pointer to environment struct
01624  * @param condition the specific condition
01625  * @param type condition type
01626  */
01627 AXIS2_EXTERN int AXIS2_CALL 
01628 saml_condition_set_condition(saml_condition_t *cond, 
01629                                                          const axutil_env_t *env, void * condition, 
01630                                                          saml_cond_type_t type);
01631 
01632 /*
01633  * Set the type of the conition. 
01634  * @param cond pointer to a condition object
01635  * @param env pointer to environment struct
01636  * @param type specific type of the condition
01637  */
01638 AXIS2_EXTERN int AXIS2_CALL 
01639 saml_condition_set_type(saml_condition_t *cond, 
01640                                                 const axutil_env_t *env, saml_cond_type_t type);
01641 
01642 /*
01643  * Get the specific condtion in this generic condition.
01644  * @param cond pointer to a condition object
01645  * @param env pointer to environment struct
01646  */
01647 AXIS2_EXTERN void * AXIS2_CALL 
01648 saml_condition_get_condition(saml_condition_t *cond, const axutil_env_t *env);
01649 
01650 /*
01651  * Get the type of the specific condtion in this generic condition.
01652  * @param cond pointer to a condition object
01653  * @param env pointer to environment struct
01654  */
01655 AXIS2_EXTERN saml_cond_type_t AXIS2_CALL 
01656 saml_condition_get_type(saml_condition_t *cond, const axutil_env_t *env);
01657 
01658 /* audio restriction */
01659 
01660 /*
01661  * Populates an audi restriction condition from an om node.
01662  * @param arc a ponter to saml_aud_restriction_conf object
01663  * @param node om node containing an audience restriction condition
01664  * @param env pointer to environment struct
01665  */
01666 AXIS2_EXTERN int AXIS2_CALL 
01667 saml_audi_restriction_cond_build(saml_audi_restriction_cond_t *arc, 
01668                                                                  axiom_node_t *node, const axutil_env_t *env);
01669 
01670 /*
01671  * Serialize an saml_audi_restriction_cond_t object in to an om node.
01672  * @param arc a ponter to saml_aud_restriction_conf object
01673  * @param parent if specified created node will be a child of this node  
01674  * @param env pointer to environment struct
01675  */
01676 AXIS2_EXTERN axiom_node_t *AXIS2_CALL 
01677 saml_audi_restriction_cond_to_om(saml_audi_restriction_cond_t *arc, 
01678                                                                  axiom_node_t *parent, const axutil_env_t *env);
01679 
01680 /*
01681  * Free a saml_aud_restriction_conf object.
01682  * @param arc a ponter to saml_aud_restriction_conf object
01683  * @param env pointer to environment struct
01684  */
01685 AXIS2_EXTERN void AXIS2_CALL 
01686 saml_audi_restriction_cond_free(saml_audi_restriction_cond_t *arc, 
01687                                                                 const axutil_env_t *env);
01688 
01689 /*
01690  * Create a saml_aud_restriction_conf object.
01691  * @param env pointer to environment struct
01692  * @return a ponter to saml_aud_restriction_conf object
01693  */
01694 AXIS2_EXTERN saml_audi_restriction_cond_t * AXIS2_CALL 
01695 saml_audi_restriction_cond_create(const axutil_env_t *env);
01696 
01697 /*
01698  * Return a list of URI references that identifies a list of intended audiences.
01699  * @param arc a ponter to saml_aud_restriction_conf object
01700  * @param env pointer to environment struct
01701  */
01702 AXIS2_EXTERN axutil_array_list_t * AXIS2_CALL 
01703 saml_audi_restriction_cond_get_audiences(saml_audi_restriction_cond_t *arc, 
01704                                                                                  const axutil_env_t *env);
01705 
01706 /*
01707  * Set a list of URI references that identifies a list of intended audiences.
01708  * @param arc a ponter to saml_aud_restriction_conf object
01709  * @param env pointer to environment struct
01710  */
01711 AXIS2_EXTERN int AXIS2_CALL 
01712 saml_audi_restriction_cond_set_audiences(saml_audi_restriction_cond_t *cond, 
01713                                                                                  const axutil_env_t *env, axutil_array_list_t *list);
01714 
01715 /*
01716  * Remove a URI reference that identifies an intended audiences.
01717  * @param arc a ponter to saml_aud_restriction_conf object
01718  * @param env pointer to environment struct
01719  * @param index the number of the audience in the list, to be removed
01720  */
01721 AXIS2_EXTERN int AXIS2_CALL 
01722 saml_audi_restriction_cond_remove_audiences(saml_audi_restriction_cond_t *cond, 
01723                                                                                         const axutil_env_t *env, int index);
01724 
01725 /*
01726  * Ad a URI reference that identifies an intended audiences.
01727  * @param arc a ponter to saml_aud_restriction_conf object
01728  * @param env pointer to environment struct
01729  * @param audience a new audience to be added
01730  */
01731 AXIS2_EXTERN int AXIS2_CALL 
01732 saml_audi_restriction_cond_add_audience(saml_audi_restriction_cond_t *cond, 
01733                                                                                 const axutil_env_t *env, axis2_char_t *audience);
01734 
01735 
01736 /* action */
01737 
01738 /*
01739  * Create a saml_action_t.
01740  * @param env pointer to environment struct
01741  * @return pointer to saml_action_t 
01742  */
01743 AXIS2_EXTERN saml_action_t * AXIS2_CALL 
01744 saml_action_create(const axutil_env_t *env);
01745 
01746 /*
01747  * Free a saml_action_t.
01748  * @param action pointer to saml_action_t 
01749  * @param env pointer to environment struct
01750  */
01751 AXIS2_EXTERN void AXIS2_CALL 
01752 saml_action_free(saml_action_t *action, const axutil_env_t *env);
01753 
01754 /*
01755  * Populates a saml action from a om node containing a saml action.
01756  * @param action pointer to saml_action_t 
01757  * @param node om node conatining a saml action
01758  * @param env pointer to environment struct
01759  */
01760 AXIS2_EXTERN int AXIS2_CALL 
01761 saml_action_build(saml_action_t *action, axiom_node_t *node, const axutil_env_t *env);
01762 
01763 /*
01764  * Serialize a action_t object to an om node.
01765  * @param action pointer to saml_action_t 
01766  * @param parent if specified created node will be a child of this node  
01767  * @param env pointer to environment struct
01768  */
01769 AXIS2_EXTERN axiom_node_t * AXIS2_CALL 
01770 saml_action_to_om(saml_action_t *action, 
01771                                   axiom_node_t *parent, const axutil_env_t *env);
01772 
01773 /*
01774  * Get an action sought to be performed on the specified resource.
01775  * @param action pointer to saml_action_t 
01776  * @param env pointer to environment struct
01777  */
01778 AXIS2_EXTERN axis2_char_t * AXIS2_CALL 
01779 saml_action_get_data(saml_action_t *action, const axutil_env_t *env);
01780 
01781 /*
01782  * Get a URI reference representing the namespace in which the name of the 
01783  * specified action is to be interpreted.
01784  * @param action pointer to saml_action_t 
01785  * @param env pointer to environment struct
01786  */
01787 AXIS2_EXTERN axis2_char_t * AXIS2_CALL 
01788 saml_action_get_namespace(saml_action_t *action, const axutil_env_t *env);
01789 
01790 /*
01791  * Set an action sought to be performed on the specified resource.
01792  * @param action pointer to saml_action_t 
01793  * @param env pointer to environment struct
01794  * @param data an action to be performed
01795  */
01796 AXIS2_EXTERN int AXIS2_CALL 
01797 saml_action_set_data(saml_action_t *action, const axutil_env_t *env, 
01798                                          axis2_char_t *data);
01799 
01800 /*
01801  * Set a URI reference representing the namespace in which the name of the 
01802  * specified action is to be interpreted.
01803  * @param action pointer to saml_action_t 
01804  * @param env pointer to environment struct
01805  * @param name_space a URI reference
01806  */
01807 AXIS2_EXTERN int AXIS2_CALL 
01808 saml_action_set_namespace(saml_action_t *action, const axutil_env_t *env, 
01809                                                   axis2_char_t *name_space);
01810 
01811 /* evidence */
01812 AXIS2_EXTERN saml_evidence_t * AXIS2_CALL 
01813 saml_evidence_create(const axutil_env_t *env);
01814 
01815 AXIS2_EXTERN void AXIS2_CALL 
01816 saml_evidence_free(saml_evidence_t *evidence, const axutil_env_t *env);
01817 
01818 AXIS2_EXTERN int AXIS2_CALL 
01819 saml_evidence_build(saml_evidence_t *evidence, 
01820                                         axiom_node_t *node, const axutil_env_t *env);
01821 
01822 AXIS2_EXTERN axiom_node_t * AXIS2_CALL 
01823 saml_evidence_to_om(saml_evidence_t *evidence, axiom_node_t *parent, 
01824                                         const axutil_env_t *env);
01825 
01826 AXIS2_EXTERN axutil_array_list_t * AXIS2_CALL 
01827 saml_evidence_get_assertions(saml_evidence_t *evidence, const axutil_env_t *env);
01828 
01829 AXIS2_EXTERN axutil_array_list_t * AXIS2_CALL 
01830 saml_evidence_get_assertion_ids(saml_evidence_t *evidence, const axutil_env_t *env);
01831 
01832 AXIS2_EXTERN int AXIS2_CALL 
01833 saml_evidence_set_assertions(saml_evidence_t *evidence, 
01834                                                          const axutil_env_t *env, axutil_array_list_t *list);
01835 
01836 AXIS2_EXTERN int AXIS2_CALL 
01837 saml_evidence_remove_assertion(saml_evidence_t *evidence, 
01838                                                            const axutil_env_t *env, int index);
01839 
01840 AXIS2_EXTERN int AXIS2_CALL 
01841 saml_evidence_add_assertion(saml_evidence_t *evidence, 
01842                                                         const axutil_env_t *env, saml_assertion_t *assertion);
01843 
01844 AXIS2_EXTERN int AXIS2_CALL 
01845 saml_evidence_set_assertion_ids(saml_evidence_t *evidence, 
01846                                                                 const axutil_env_t *env, axutil_array_list_t *list);
01847 
01848 AXIS2_EXTERN int AXIS2_CALL 
01849 saml_evidence_remove_assertion_id(saml_evidence_t *evidence, 
01850                                                                   const axutil_env_t *env, int index);
01851 
01852 AXIS2_EXTERN int AXIS2_CALL 
01853 saml_evidence_add_assertion_id(saml_evidence_t *evidence, 
01854                                                            const axutil_env_t *env, axis2_char_t *assertion_id);
01855 
01856 /* atrribute designature */
01857 
01858 /* 
01859  * Create a saml_attr_desig_t. 
01860  * @param env pointer to environment struct
01861  * @return pointer to saml_attr_desig_t
01862  */
01863 AXIS2_EXTERN saml_attr_desig_t * AXIS2_CALL 
01864 saml_attr_desig_create(const axutil_env_t *env);
01865 
01866 /* 
01867  * Free a saml_attr_desig_t. 
01868  * @param attr_desig a pointer to saml_attr_desig_t
01869  * @param env pointer to environment struct 
01870  */
01871 AXIS2_EXTERN void AXIS2_CALL 
01872 saml_attr_desig_free(saml_attr_desig_t *attr_desig, const axutil_env_t *env);
01873 
01874 /*
01875  * Populates a saml_attr_desig_t from a om node contailing a saml attriibute desgnator
01876  * @param attr_desig a pointer to saml_attr_desig_t
01877  * @param node om node containing saml attriibute desgnator
01878  * @param env pointer to environment struct 
01879  */
01880 AXIS2_EXTERN int AXIS2_CALL 
01881 saml_attr_desig_build(saml_attr_desig_t *attr_desig, 
01882                                           axiom_node_t *node, const axutil_env_t *env);
01883 
01884 /*
01885  * Serialize a saml_attr_desig_t to an om node.
01886  * @param attr_desig a pointer to saml_attr_desig_t
01887  * @param parent if specified created node will be a child of this node  
01888  * @param env pointer to environment struct 
01889  */
01890 AXIS2_EXTERN axiom_node_t * AXIS2_CALL 
01891 saml_attr_desig_to_om(saml_attr_desig_t *attr_desig, 
01892                                           axiom_node_t *parent, const axutil_env_t *env);
01893 
01894 /* 
01895  * Get the name of the attribute.
01896  * @param attr_desig a pointer to saml_attr_desig_t
01897  * @param env pointer to environment struct 
01898  * @return a string name of the attribute
01899  */
01900 AXIS2_EXTERN axis2_char_t * AXIS2_CALL 
01901 saml_attr_desig_get_name(saml_attr_desig_t *attr_desig, const axutil_env_t *env);
01902 
01903 /*
01904  * Get the namespace in which the AttributeName elements are interpreted.
01905  * @param attr_desig a pointer to saml_attr_desig_t
01906  * @param env pointer to environment struct 
01907  * @return a string representing a namespace
01908  */
01909 AXIS2_EXTERN axis2_char_t * AXIS2_CALL 
01910 saml_attr_desig_get_namespace(saml_attr_desig_t *attr_desig, const axutil_env_t *env);
01911 
01912 /* 
01913  * Set the name of the attribute.
01914  * @param attr_desig a pointer to saml_attr_desig_t
01915  * @param env pointer to environment struct 
01916  * @param name a string name of the attribute
01917  */
01918 AXIS2_EXTERN int AXIS2_CALL 
01919 saml_attr_desig_set_name(saml_attr_desig_t *attr_desig, 
01920                                                  const axutil_env_t *env, axis2_char_t *name);
01921 
01922 /*
01923  * Set the namespace in which the AttributeName elements are interpreted.
01924  * @param attr_desig a pointer to saml_attr_desig_t
01925  * @param env pointer to environment struct 
01926  * @param name_space a string representing a namespace
01927  */
01928 AXIS2_EXTERN int AXIS2_CALL 
01929 saml_attr_desig_set_namespace(saml_attr_desig_t *attr_desig, 
01930                                                           const axutil_env_t *env, axis2_char_t *name_space);
01931 
01932 /* attribute */
01933 
01934 /*
01935  * Create a saml_attr_t.
01936  * @param env pointer to environment struct 
01937  * @return pointer to saml_attr_t
01938  */
01939 AXIS2_EXTERN saml_attr_t * AXIS2_CALL 
01940 saml_attr_create(const axutil_env_t *env);
01941 
01942 /*
01943  * Free a saml_attr_t.
01944  * @param attr pointer to saml_attr_t
01945  * @param env pointer to environment struct 
01946  */
01947 AXIS2_EXTERN void AXIS2_CALL 
01948 saml_attr_free(saml_attr_t *attr, const axutil_env_t *env);
01949 
01950 /*
01951  * Populates a saml_attr_t from an om node containing a saml attribute.
01952  * @param attr pointer to saml_attr_t
01953  * @node an om node containing a saml attribute
01954  * @param env pointer to environment struct 
01955  */
01956 AXIS2_EXTERN int AXIS2_CALL 
01957 saml_attr_build(saml_attr_t *attr, axiom_node_t *node, const axutil_env_t *env);
01958 
01959 /*
01960  * Serialize a saml_attr_t in to an om node.
01961  * @param attr pointer to saml_attr_t
01962  * @param parent if specified created node will be a child of this node  
01963  * @param env pointer to environment struct 
01964  */
01965 AXIS2_EXTERN axiom_node_t * AXIS2_CALL 
01966 saml_attr_to_om(saml_attr_t *attr, axiom_node_t *parent, const axutil_env_t *env);
01967 
01968 /* 
01969  * Get the name of the attribute.
01970  * @param attr a pointer to saml_attr_t
01971  * @param env pointer to environment struct 
01972  * @return a string name of the attribute
01973  */
01974 AXIS2_EXTERN axis2_char_t * AXIS2_CALL 
01975 saml_attr_get_name(saml_attr_t *attr, const axutil_env_t *env);
01976 
01977 /*
01978  * Get the namespace in which the AttributeName elements are interpreted.
01979  * @param attr a pointer to saml_attr_t
01980  * @param env pointer to environment struct 
01981  * @return a string representing a namespace
01982  */
01983 AXIS2_EXTERN axis2_char_t * AXIS2_CALL 
01984 saml_attr_get_namespace(saml_attr_t *attr_stmt, const axutil_env_t *env);
01985 
01986 /* 
01987  * Set the name of the attribute.
01988  * @param attr a pointer to saml_attr_t
01989  * @param env pointer to environment struct 
01990  * @param name a string name of the attribute
01991  */
01992 AXIS2_EXTERN int AXIS2_CALL 
01993 saml_attr_set_name(saml_attr_t *attr, const axutil_env_t *env, axis2_char_t *name);
01994 
01995 /*
01996  * Set the namespace in which the AttributeName elements are interpreted.
01997  * @param attr a pointer to saml_attr_t
01998  * @param env pointer to environment struct 
01999  * @param name_space a string representing a namespace
02000  */
02001 AXIS2_EXTERN int AXIS2_CALL 
02002 saml_attr_set_namespace(saml_attr_t *attr, const axutil_env_t *env, 
02003                                                 axis2_char_t *name_space);
02004 
02005 /*
02006  * Set the values of the attribute as a list of om nodes.
02007  * @param attr a pointer to saml_attr_t
02008  * @param env pointer to environment struct 
02009  * @param list a om node list
02010  */
02011 AXIS2_EXTERN int AXIS2_CALL 
02012 saml_attr_set_values(saml_attr_t *attr, const axutil_env_t *env, 
02013                                          axutil_array_list_t *list);
02014 
02015 /*
02016  * Remove om node at the specified index.
02017  * @param attr a pointer to saml_attr_t
02018  * @param env pointer to environment struct 
02019  * @param index index number of the om node to be removed
02020  */
02021 AXIS2_EXTERN int AXIS2_CALL 
02022 saml_attr_remove_value(saml_attr_t *attr, const axutil_env_t *env, int index);
02023 
02024 /*
02025  * Add a om node to the attribute value list.
02026  * @param attr a pointer to saml_attr_t
02027  * @param env pointer to environment struct 
02028  * @param value an om node
02029  */
02030 AXIS2_EXTERN int AXIS2_CALL 
02031 saml_attr_add_value(saml_attr_t *attr, const axutil_env_t *env, axiom_node_t *value);
02032 
02033 
02034 /*named id*/
02035 
02036 /*
02037  * Create a SAML named id object
02038  * @param env pointer to environment struct
02039  * @return saml named id object
02040  */
02041 AXIS2_EXTERN saml_named_id_t * AXIS2_CALL 
02042 saml_named_id_create(const axutil_env_t *env);
02043 
02044 /*
02045  * Free a saml named id object
02046  * @param named_id named_id to be freed
02047  * @param env pointer to environment struct
02048  */
02049 AXIS2_EXTERN void AXIS2_CALL 
02050 saml_named_id_free(saml_named_id_t *named_id, const axutil_env_t *env);
02051 
02052 /*
02053  * Build a saml named id from an om node containing a saml named identifier
02054  * @param named_id named id object
02055  * @param node om node containing the saml named identifier
02056  * @param env pointer to environment struct
02057  */
02058 AXIS2_EXTERN int AXIS2_CALL 
02059 saml_named_id_build(saml_named_id_t *named_id, axiom_node_t *node, 
02060                                         const axutil_env_t *env);
02061 
02062 /*
02063  * Serialize a named id object in to an om node.
02064  * @param named_id named id object
02065  * @param parent if specified this will be the parent of the newely created node
02066  * @param env pointer to environment struct
02067  */
02068 AXIS2_EXTERN axiom_node_t * AXIS2_CALL 
02069 saml_named_id_to_om(saml_named_id_t *id, axiom_node_t *parent, 
02070                                         const axutil_env_t *env);
02071 
02072 /* 
02073  * Get the name of the named identifier.
02074  * @param named_id named id object
02075  * @param env pointer to environment struct
02076  * @return name as a string
02077  */
02078 AXIS2_EXTERN axis2_char_t * AXIS2_CALL 
02079 saml_named_id_get_name(saml_named_id_t *id, const axutil_env_t *env);
02080 
02081 /*
02082  * Get a URI reference representing the format in which the <NameIdentifier> 
02083  * information is provided.
02084  * @param named_id named id object
02085  * @param env pointer to environment struct
02086  * @return format as a URI string
02087  */
02088 AXIS2_EXTERN axis2_char_t * AXIS2_CALL 
02089 saml_named_id_get_format(saml_named_id_t *id, const axutil_env_t *env);
02090 
02091 /*
02092  * Get the security or administrative domain that qualifies the name of the 
02093  * subject.
02094  * @param named_id named id object
02095  * @param env pointer to environment struct
02096  * @return string representing the domain
02097  */
02098 AXIS2_EXTERN axis2_char_t * AXIS2_CALL 
02099 saml_named_id_get_name_qualifier(saml_named_id_t *id, const axutil_env_t *env);
02100 
02101 /* 
02102  * Set the name of the named identifier.
02103  * @param named_id named id object
02104  * @param env pointer to environment struct
02105  * @param name name as a string
02106  */
02107 AXIS2_EXTERN int AXIS2_CALL 
02108 saml_named_id_set_name(saml_named_id_t *id, 
02109                                            const axutil_env_t *env, axis2_char_t *name);
02110 
02111 /*
02112  * Set a URI reference representing the format in which the <NameIdentifier> 
02113  * information is provided.
02114  * @param named_id named id object
02115  * @param env pointer to environment struct
02116  * @param format format of the nameidentifier
02117  */
02118 AXIS2_EXTERN int AXIS2_CALL 
02119 saml_named_id_set_format(saml_named_id_t *id, 
02120                                                  const axutil_env_t *env, axis2_char_t *format);
02121 
02122 /*
02123  * Set the security or administrative domain that qualifies the name of the 
02124  * subject.
02125  * @param named_id named id object
02126  * @param env pointer to environment struct
02127  * @param qualifier string representing the domain 
02128  */
02129 AXIS2_EXTERN int AXIS2_CALL 
02130 saml_named_id_set_name_qualifier(saml_named_id_t *id, 
02131                                                                  const axutil_env_t *env, axis2_char_t *qualifier);
02132 
02133 
02134 /* private method */
02135 AXIS2_EXTERN int AXIS2_CALL saml_util_set_sig_ctx_defaults(oxs_sign_ctx_t *sig_ctx, const axutil_env_t *env, axis2_char_t *id);
02136 
02137 /* Get the session key from a assertion. Session key is inside the SAML 
02138  * token as an EncryptedKey 
02139  * @param env pointer to environment struct
02140  * @param assertion an saml assertion node
02141  * @param pvt_key private key used to encrypt the session key
02142  */
02143 AXIS2_EXTERN oxs_key_t * AXIS2_CALL
02144 saml_assertion_get_session_key(const axutil_env_t *env, axiom_node_t *assertion, 
02145                                openssl_pkey_t *pvt_key);
02146 
02147 #ifdef __cplusplus
02148 }
02149 #endif
02150 
02151 
02152 #endif 

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/oxs__transform_8h-source.html0000644000076500007650000002317511202454500024257 0ustar shankarshankar Rampart/C: oxs_transform.h Source File

oxs_transform.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef OXS_TRANSFORM_H
00019 #define OXS_TRANSFORM_H
00020 
00021 
00028 #include <axis2_defines.h>
00029 #include <axutil_env.h>
00030 #include <axiom_node.h>
00031 
00032 #ifdef __cplusplus
00033 extern "C"
00034 {
00035 #endif
00036 
00037 
00038     /*The input or output data type*/
00039     typedef enum  {
00040         OXS_TRANSFORM_TYPE_UNKNOWN = 0,
00041         OXS_TRANSFORM_TYPE_CHAR,
00042         OXS_TRANSFORM_TYPE_NODE,
00043         OXS_TRANSFORM_TYPE_NODE_ARRAY_LIST        
00044     } oxs_tr_dtype_t;
00045 
00046 
00047     /*Function interface for any transform*/
00048     typedef oxs_tr_dtype_t (AXIS2_CALL*
00049                             oxs_transform_tr_func)(const axutil_env_t *env,
00050                                                    void *input,
00051                                                    oxs_tr_dtype_t input_dtype,
00052                                                    void **output);
00053 
00054     typedef struct oxs_transform_t oxs_transform_t;
00055 
00056 
00057     /*Create function*/
00058     AXIS2_EXTERN oxs_transform_t *AXIS2_CALL
00059     oxs_transform_create(const axutil_env_t *env);
00060 
00061     /*Free*/
00062     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00063     oxs_transform_free(oxs_transform_t *ctx,
00064                        const axutil_env_t *env);
00065 
00066 
00067     /**********************Getter functions******************************************/
00068     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00069     oxs_transform_get_id(
00070         const oxs_transform_t *transform,
00071         const axutil_env_t *env);
00072 
00073     AXIS2_EXTERN oxs_tr_dtype_t AXIS2_CALL
00074     oxs_transform_get_input_data_type(
00075         const oxs_transform_t *transform,
00076         const axutil_env_t *env);
00077 
00078     AXIS2_EXTERN oxs_tr_dtype_t AXIS2_CALL
00079     oxs_transform_get_output_data_type(
00080         const oxs_transform_t *transform,
00081         const axutil_env_t *env);
00082 
00083     AXIS2_EXTERN oxs_transform_tr_func AXIS2_CALL
00084     oxs_transform_get_transform_function(
00085         const oxs_transform_t *transform,
00086         const axutil_env_t *env);
00087 
00088     /**********************Setter functions******************************************/
00089     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00090     oxs_transform_set_id(
00091         oxs_transform_t *transform,
00092         const axutil_env_t *env,
00093         axis2_char_t *id);
00094 
00095     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00096     oxs_transform_set_input_data_type(
00097         oxs_transform_t *transform,
00098         const axutil_env_t *env,
00099         oxs_tr_dtype_t input_data_type);
00100 
00101     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00102     oxs_transform_set_output_data_type(
00103         oxs_transform_t *transform,
00104         const axutil_env_t *env,
00105         oxs_tr_dtype_t output_data_type);
00106 
00107     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00108     oxs_transform_set_transform_func(
00109         oxs_transform_t *transform,
00110         const axutil_env_t *env,
00111         oxs_transform_tr_func transform_func);
00112 
00114 #ifdef __cplusplus
00115 }
00116 #endif
00117 
00118 #endif                          /* OXS_TRANSFORM_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__oxs__x509__cert.html0000644000076500007650000012547711202454500023613 0ustar shankarshankar Rampart/C: X509 Certificate

X509 Certificate
[OMXMLSecurity]


Typedefs

typedef struct oxs_x509_cert_t oxs_x509_cert_t

Functions

AXIS2_EXTERN oxs_x509_cert_t * oxs_x509_cert_create (const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_x509_cert_free (oxs_x509_cert_t *x509_cert, const axutil_env_t *env)
AXIS2_EXTERN int oxs_x509_cert_get_serial_number (oxs_x509_cert_t *x509_cert, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_x509_cert_get_subject (oxs_x509_cert_t *x509_cert, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_x509_cert_get_issuer (oxs_x509_cert_t *x509_cert, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_x509_cert_get_key_identifier (oxs_x509_cert_t *x509_cert, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_x509_cert_get_fingerprint (oxs_x509_cert_t *x509_cert, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_x509_cert_get_date (oxs_x509_cert_t *x509_cert, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_x509_cert_get_hash (oxs_x509_cert_t *x509_cert, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_x509_cert_get_data (oxs_x509_cert_t *x509_cert, const axutil_env_t *env)
AXIS2_EXTERN openssl_pkey_toxs_x509_cert_get_public_key (oxs_x509_cert_t *x509_cert, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_serial_number (oxs_x509_cert_t *x509_cert, const axutil_env_t *env, int value)
AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_issuer (oxs_x509_cert_t *x509_cert, const axutil_env_t *env, axis2_char_t *value)
AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_key_identifier (oxs_x509_cert_t *x509_cert, const axutil_env_t *env, axis2_char_t *value)
AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_subject (oxs_x509_cert_t *x509_cert, const axutil_env_t *env, axis2_char_t *value)
AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_fingerprint (oxs_x509_cert_t *x509_cert, const axutil_env_t *env, axis2_char_t *value)
AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_date (oxs_x509_cert_t *x509_cert, const axutil_env_t *env, axis2_char_t *value)
AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_hash (oxs_x509_cert_t *x509_cert, const axutil_env_t *env, axis2_char_t *value)
AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_data (oxs_x509_cert_t *x509_cert, const axutil_env_t *env, axis2_char_t *value)
AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_public_key (oxs_x509_cert_t *x509_cert, const axutil_env_t *env, openssl_pkey_t *public_key)
AXIS2_EXTERN axis2_status_t oxs_x509_cert_copy_to (oxs_x509_cert_t *x509_cert, const axutil_env_t *env, oxs_x509_cert_t *to)
AXIS2_EXTERN axis2_char_t * oxs_x509_cert_get_common_name (oxs_x509_cert_t *x509_cert, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_common_name (oxs_x509_cert_t *x509_cert, const axutil_env_t *env, axis2_char_t *common_name)

Function Documentation

AXIS2_EXTERN axis2_status_t oxs_x509_cert_copy_to ( oxs_x509_cert_t *  x509_cert,
const axutil_env_t *  env,
oxs_x509_cert_t *  to 
)

Copy contents of a certificate to another

Parameters:
x509_cert the X509 certificate, the source
env pointer to environment struct
to,another x509 certificate, the target
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN oxs_x509_cert_t* oxs_x509_cert_create ( const axutil_env_t *  env  ) 

Create function of the X509 certificate

Parameters:
env pointer to environment struct
Returns:
created X509 certificate

AXIS2_EXTERN axis2_status_t oxs_x509_cert_free ( oxs_x509_cert_t *  x509_cert,
const axutil_env_t *  env 
)

Free function of the X509 certificate

Parameters:
x509_cert the X509 certificate to be freed
env pointer to environment struct
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_char_t* oxs_x509_cert_get_data ( oxs_x509_cert_t *  x509_cert,
const axutil_env_t *  env 
)

Get the data of X509 Certificate This is the base64 encoded string in between the --BEGIN CERTIFICATE- --END CERTIFICATE-- lines

Parameters:
x509_cert the X509 certificate
env pointer to environment struct
Returns:
the data of X509 certificate

AXIS2_EXTERN axis2_char_t* oxs_x509_cert_get_date ( oxs_x509_cert_t *  x509_cert,
const axutil_env_t *  env 
)

Get the expiration date of X509 Certificate

Parameters:
x509_cert the X509 certificate
env pointer to environment struct
Returns:
the expiration date of X509 certificate

AXIS2_EXTERN axis2_char_t* oxs_x509_cert_get_fingerprint ( oxs_x509_cert_t *  x509_cert,
const axutil_env_t *  env 
)

Get the finger print of X509 Certificate

Parameters:
x509_cert the X509 certificate
env pointer to environment struct
Returns:
the finger print of X509 certificate

AXIS2_EXTERN axis2_char_t* oxs_x509_cert_get_hash ( oxs_x509_cert_t *  x509_cert,
const axutil_env_t *  env 
)

Get the hash of X509 Certificate

Parameters:
x509_cert the X509 certificate
env pointer to environment struct
Returns:
the hash of X509 certificate

AXIS2_EXTERN axis2_char_t* oxs_x509_cert_get_issuer ( oxs_x509_cert_t *  x509_cert,
const axutil_env_t *  env 
)

Get the issuer of X509 Certificate

Parameters:
x509_cert the X509 certificate
env pointer to environment struct
Returns:
the issuer of X509 certificate

AXIS2_EXTERN axis2_char_t* oxs_x509_cert_get_key_identifier ( oxs_x509_cert_t *  x509_cert,
const axutil_env_t *  env 
)

Get the key identifier of X509 Certificate

Parameters:
x509_cert the X509 certificate
env pointer to environment struct
Returns:
the key identifier of X509 certificate

AXIS2_EXTERN openssl_pkey_t* oxs_x509_cert_get_public_key ( oxs_x509_cert_t *  x509_cert,
const axutil_env_t *  env 
)

Get the public key of X509 Certificate

Parameters:
x509_cert the X509 certificate
env pointer to environment struct
Returns:
the public key of X509 certificate

AXIS2_EXTERN int oxs_x509_cert_get_serial_number ( oxs_x509_cert_t *  x509_cert,
const axutil_env_t *  env 
)

Get the serial number of X509 Certificate

Parameters:
x509_cert the X509 certificate
env pointer to environment struct
Returns:
the serial number of X509 certificate

AXIS2_EXTERN axis2_char_t* oxs_x509_cert_get_subject ( oxs_x509_cert_t *  x509_cert,
const axutil_env_t *  env 
)

Get the subject of X509 Certificate

Parameters:
x509_cert the X509 certificate
env pointer to environment struct
Returns:
the subject of X509 certificate

AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_data ( oxs_x509_cert_t *  x509_cert,
const axutil_env_t *  env,
axis2_char_t *  value 
)

Set the data of X509 Certificate. This is the base64 encoded string in between the --BEGIN CERTIFICATE- --END CERTIFICATE-- lines

Parameters:
x509_cert the X509 certificate
env pointer to environment struct
value the data of X509 Certificate
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_date ( oxs_x509_cert_t *  x509_cert,
const axutil_env_t *  env,
axis2_char_t *  value 
)

Set the expiration date of X509 Certificate

Parameters:
x509_cert the X509 certificate
env pointer to environment struct
value the expiration date of X509 Certificate
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_fingerprint ( oxs_x509_cert_t *  x509_cert,
const axutil_env_t *  env,
axis2_char_t *  value 
)

Set the finger print of X509 Certificate

Parameters:
x509_cert the X509 certificate
env pointer to environment struct
value the fingerprint of X509 Certificate
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_hash ( oxs_x509_cert_t *  x509_cert,
const axutil_env_t *  env,
axis2_char_t *  value 
)

Set the hash of X509 Certificate

Parameters:
x509_cert the X509 certificate
env pointer to environment struct
value the hash of X509 Certificate
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_issuer ( oxs_x509_cert_t *  x509_cert,
const axutil_env_t *  env,
axis2_char_t *  value 
)

Set the issuer of X509 Certificate

Parameters:
x509_cert the X509 certificate
env pointer to environment struct
value the issuer of X509 Certificate
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_key_identifier ( oxs_x509_cert_t *  x509_cert,
const axutil_env_t *  env,
axis2_char_t *  value 
)

Set the key identifier of X509 Certificate

Parameters:
x509_cert the X509 certificate
env pointer to environment struct
value the key identifier of X509 Certificate
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_public_key ( oxs_x509_cert_t *  x509_cert,
const axutil_env_t *  env,
openssl_pkey_t public_key 
)

Set the public key of X509 Certificate

Parameters:
x509_cert the X509 certificate
env pointer to environment struct
public_key public key of X509 Certificate
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_serial_number ( oxs_x509_cert_t *  x509_cert,
const axutil_env_t *  env,
int  value 
)

Set the serial number of X509 Certificate

Parameters:
x509_cert the X509 certificate
env pointer to environment struct
value the serial number of X509 Certificate
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_subject ( oxs_x509_cert_t *  x509_cert,
const axutil_env_t *  env,
axis2_char_t *  value 
)

Set the subject of X509 Certificate

Parameters:
x509_cert the X509 certificate
env pointer to environment struct
value the subject of X509 Certificate
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/trust__util_8h.html0000644000076500007650000021103111202454500022261 0ustar shankarshankar Rampart/C: trust_util.h File Reference

trust_util.h File Reference

contains generic operations related to trust module More...

#include <stdio.h>
#include <stdlib.h>
#include <axiom.h>
#include <axutil_utils.h>
#include <axutil_string.h>
#include <trust_constants.h>

Go to the source code of this file.

Enumerations

enum  trust_allow_t { TRUST_ALLOW = 0, TRUST_NOT_ALLOW }
enum  trust_ok_t { TRUST_OK = 0, TRUST_NOT_OK }

Functions

AXIS2_EXTERN axiom_node_t * trust_util_create_rst_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axis2_char_t *context)
AXIS2_EXTERN axiom_node_t * trust_util_create_rstr_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axis2_char_t *context)
AXIS2_EXTERN axiom_node_t * trust_util_create_rstr_collection_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri)
AXIS2_EXTERN axiom_node_t * trust_util_create_request_type_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axiom_node_t *parent_node, axis2_char_t *request_type)
AXIS2_EXTERN axiom_node_t * trust_util_create_token_type_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axiom_node_t *parent_node, axis2_char_t *token_type)
AXIS2_EXTERN axiom_node_t * 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)
AXIS2_EXTERN axiom_node_t * trust_util_create_claims_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axiom_node_t *parent_node, axis2_char_t *dialect_uri)
AXIS2_EXTERN axiom_node_t * trust_util_create_requested_security_token_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axiom_node_t *parent_node, axiom_node_t *sec_token_node)
AXIS2_EXTERN axiom_node_t * trust_util_create_requsted_proof_token_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axiom_node_t *parent_node, axiom_node_t *req_proof_token)
AXIS2_EXTERN axiom_node_t * trust_util_create_entropy_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axiom_node_t *parent_node)
AXIS2_EXTERN axiom_node_t * trust_util_computed_key_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axiom_node_t *parent_node)
AXIS2_EXTERN axiom_node_t * trust_util_create_binary_secret_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axiom_node_t *parent_node, axis2_char_t *enc_secret, axis2_char_t *bin_sec_type)
AXIS2_EXTERN axiom_node_t * trust_util_create_computed_key_algo_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axiom_node_t *parent_node, axis2_char_t *algo_id)
AXIS2_EXTERN axiom_node_t * trust_util_create_key_size_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axiom_node_t *parent_node, axis2_char_t *key_size)
AXIS2_EXTERN axiom_node_t * trust_util_create_key_type_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axiom_node_t *parent_node, axis2_char_t *key_type)
AXIS2_EXTERN axiom_node_t * trust_util_create_authentication_type_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axiom_node_t *parent_node, axis2_char_t *authentication_type)
AXIS2_EXTERN axiom_node_t * trust_util_create_signature_algo_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axiom_node_t *parent_node, axis2_char_t *signature_algo)
AXIS2_EXTERN axiom_node_t * trust_util_create_encryption_algo_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axiom_node_t *parent_node, axis2_char_t *encryption_algo)
AXIS2_EXTERN axiom_node_t * trust_util_create_canonicalization_algo_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axiom_node_t *parent_node, axis2_char_t *canonicalization_algo)
AXIS2_EXTERN axiom_node_t * trust_util_create_computedkey_algo_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axiom_node_t *parent_node, axis2_char_t *computedkey_algo)
AXIS2_EXTERN axiom_node_t * trust_util_create_desired_encryption_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axiom_node_t *parent_node, axiom_node_t *encryption_key)
AXIS2_EXTERN axiom_node_t * trust_util_create_proof_encryption_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axiom_node_t *parent_node, axiom_node_t *proof_encryption_key)
AXIS2_EXTERN axiom_node_t * trust_util_create_usekey_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axiom_node_t *parent_node, axiom_node_t *usekey_key)
AXIS2_EXTERN axiom_node_t * trust_util_create_signwith_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axiom_node_t *parent_node, axis2_char_t *signwith)
AXIS2_EXTERN axiom_node_t * trust_util_create_encryptwith_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axiom_node_t *parent_node, axis2_char_t *encryptwith)
AXIS2_EXTERN axiom_node_t * trust_util_create_life_time_element (const axutil_env_t *env, axiom_node_t *parent_node, axis2_char_t *wst_ns_uri, int ttl)
AXIS2_EXTERN axiom_node_t * trust_util_create_req_attached_reference_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axiom_node_t *parent_node)
AXIS2_EXTERN axiom_node_t * trust_util_create_req_unattached_reference_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axiom_node_t *parent_node)
AXIS2_EXTERN axiom_node_t * trust_util_create_encrypted_data_element (const axutil_env_t *env, axiom_node_t *parent_node, axis2_char_t *enc_data)
AXIS2_EXTERN axiom_node_t * trust_util_create_renew_traget_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axiom_node_t *parent_node, axiom_node_t *token_renew_pending_node)
AXIS2_EXTERN axiom_node_t * trust_util_create_allow_postdating_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axiom_node_t *parent_node)
AXIS2_EXTERN axiom_node_t * trust_util_create_renewing_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axiom_node_t *parent_node, trust_allow_t allow_flag, trust_ok_t ok_flag)
AXIS2_EXTERN axiom_node_t * trust_util_create_cancel_target_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axiom_node_t *parent_node, axiom_node_t *token_cancel_pending_node)
AXIS2_EXTERN axiom_node_t * trust_util_create_validation_response_element (const axutil_env_t *env, axiom_node_t *parent_node, axis2_char_t *wst_ns_uri, axis2_char_t *code, axis2_char_t *reason)
AXIS2_EXTERN axiom_node_t * trust_util_create_random_session_key_proof_token_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri)
AXIS2_EXTERN axis2_char_t * trust_util_get_wst_ns (const axutil_env_t *env, int wst_version)


Detailed Description

contains generic operations related to trust module


Function Documentation

AXIS2_EXTERN axiom_node_t* trust_util_computed_key_element ( const axutil_env_t *  env,
axis2_char_t *  wst_ns_uri,
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.

Parameters:
env pointer to environment struct
wst_verson integer representing wst version
parent_node parent axiom node
Returns:
RequestedSecurityToken axiom node, NULL if error ocurred.

AXIS2_EXTERN axiom_node_t* trust_util_create_allow_postdating_element ( const axutil_env_t *  env,
axis2_char_t *  wst_ns_uri,
axiom_node_t *  parent_node 
)

Create AllowPostdating element.

Parameters:
env pointer to environment struct
wst_version integer representing wst version
parent_node pointer to parent axiom node
Returns:
AllowPostdating element or NULL if error occurred.

AXIS2_EXTERN axiom_node_t* 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 
)

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>

Parameters:
env pointer to environment struct
wst_verson integer representing wst version
parent_node parent axiom node
token_type string representing token type
Returns:
TokenType axiom node, NULL if error ocurred.

AXIS2_EXTERN axiom_node_t* trust_util_create_binary_secret_element ( const axutil_env_t *  env,
axis2_char_t *  wst_ns_uri,
axiom_node_t *  parent_node,
axis2_char_t *  enc_secret,
axis2_char_t *  bin_sec_type 
)

Create BinarySecret element. This contains base64 encoded binary secret or key. And also contain attribute.

Parameters:
env pointer to environment struct
wst_version integer representing wst version
parent_node pointer to parent axiom node
enc_secret string representing encoded secret
bin_sec_type Type of the binary secret
Returns:
BinarySecret element or NULL if error occurred.

AXIS2_EXTERN axiom_node_t* trust_util_create_cancel_target_element ( const axutil_env_t *  env,
axis2_char_t *  wst_ns_uri,
axiom_node_t *  parent_node,
axiom_node_t *  token_cancel_pending_node 
)

Create CancelTarget element.

Parameters:
env pointer to environment struct
wst_version integer representing wst version
parent_node pointer to parent axiom node
token_cancel_pending_node 
Returns:
CancelTarget element or NULL if error occurred.

AXIS2_EXTERN axiom_node_t* trust_util_create_claims_element ( const axutil_env_t *  env,
axis2_char_t *  wst_ns_uri,
axiom_node_t *  parent_node,
axis2_char_t *  dialect_uri 
)

Claims :Requests a set of specific claims. These claims are identified by using the service's policy :URI to indicate the syntax of the claims

AXIS2_EXTERN axiom_node_t* trust_util_create_computed_key_algo_element ( const axutil_env_t *  env,
axis2_char_t *  wst_ns_uri,
axiom_node_t *  parent_node,
axis2_char_t *  algo_id 
)

Create ComputedKeyAlgorithm element.

Parameters:
env pointer to environment struct
wst_version integer representing wst version
parent_node pointer to parent axiom node
algo_id Algorithm identifier
Returns:
ComputedKeyAlgorithm element or NULL if error occurred.

AXIS2_EXTERN axiom_node_t* trust_util_create_encrypted_data_element ( const axutil_env_t *  env,
axiom_node_t *  parent_node,
axis2_char_t *  enc_data 
)

Create EncryptedData element.

Parameters:
env pointer to environment struct
wst_version integer representing wst version
parent_node pointer to parent axiom node
enc_data encrypted data string
Returns:
EncryptedData element or NULL if error occurred.

AXIS2_EXTERN axiom_node_t* trust_util_create_entropy_element ( const axutil_env_t *  env,
axis2_char_t *  wst_ns_uri,
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.

Parameters:
env pointer to environment struct
wst_verson integer representing wst version
parent_node parent axiom node
Returns:
Entropy axiom node, NULL if error ocurred.

AXIS2_EXTERN axiom_node_t* trust_util_create_key_size_element ( const axutil_env_t *  env,
axis2_char_t *  wst_ns_uri,
axiom_node_t *  parent_node,
axis2_char_t *  key_size 
)

Create KeySize element.

Parameters:
env pointer to environment struct
wst_version integer representing wst version
parent_node pointer to parent axiom node
key_size Key size string
Returns:
KeySize element or NULL if error occurred.

AXIS2_EXTERN axiom_node_t* trust_util_create_key_type_element ( const axutil_env_t *  env,
axis2_char_t *  wst_ns_uri,
axiom_node_t *  parent_node,
axis2_char_t *  key_type 
)

Create KeyType element.

Parameters:
env pointer to environment struct
wst_version integer representing wst version
parent_node pointer to parent axiom node
key_type Key type string
Returns:
KeySize element or NULL if error occurred.

AXIS2_EXTERN axiom_node_t* trust_util_create_life_time_element ( const axutil_env_t *  env,
axiom_node_t *  parent_node,
axis2_char_t *  wst_ns_uri,
int  ttl 
)

Create LifeTime element.

Parameters:
env pointer to environment struct
wst_version integer representing wst version
parent_node pointer to parent axiom node
Returns:
LifeTime element or NULL if error occurred.

AXIS2_EXTERN axiom_node_t* trust_util_create_renew_traget_element ( const axutil_env_t *  env,
axis2_char_t *  wst_ns_uri,
axiom_node_t *  parent_node,
axiom_node_t *  token_renew_pending_node 
)

Create RenewTarget element.

Parameters:
env pointer to environment struct
wst_version integer representing wst version
parent_node pointer to parent axiom node
token_renew_pending_node 
Returns:
RenewTarget element or NULL if error occurred.

AXIS2_EXTERN axiom_node_t* trust_util_create_renewing_element ( const axutil_env_t *  env,
axis2_char_t *  wst_ns_uri,
axiom_node_t *  parent_node,
trust_allow_t  allow_flag,
trust_ok_t  ok_flag 
)

Create Renewing element.

Parameters:
env pointer to environment struct
wst_version integer representing wst version
parent_node pointer to parent axiom node
allow_flag 
ok_flag 
Returns:
Renewing element or NULL if error occurred.

AXIS2_EXTERN axiom_node_t* trust_util_create_req_attached_reference_element ( const axutil_env_t *  env,
axis2_char_t *  wst_ns_uri,
axiom_node_t *  parent_node 
)

Create RequestedAttachedReference element.

Parameters:
env pointer to environment struct
wst_version integer representing wst version
parent_node pointer to parent axiom node
Returns:
RequestedAttachedReference element or NULL if error occurred.

AXIS2_EXTERN axiom_node_t* trust_util_create_req_unattached_reference_element ( const axutil_env_t *  env,
axis2_char_t *  wst_ns_uri,
axiom_node_t *  parent_node 
)

Create RequestedUnAttachedReference element.

Parameters:
env pointer to environment struct
wst_version integer representing wst version
parent_node pointer to parent axiom node
Returns:
RequestedUnAttachedReference element or NULL if error occurred.

AXIS2_EXTERN axiom_node_t* trust_util_create_request_type_element ( const axutil_env_t *  env,
axis2_char_t *  wst_ns_uri,
axiom_node_t *  parent_node,
axis2_char_t *  request_type 
)

Create the RequestType Element for Issuance binding. <wst:RequestType> .... </wst:RequestType>

Parameters:
env pointer to environment struct
wst_verson integer representing wst version
parent_node parent axiom node
request_type string representing request type
Returns:
RequestType axiom node, NULL if error ocurred.

AXIS2_EXTERN axiom_node_t* trust_util_create_requested_security_token_element ( const axutil_env_t *  env,
axis2_char_t *  wst_ns_uri,
axiom_node_t *  parent_node,
axiom_node_t *  sec_token_node 
)

Create the RequestedSecurityToken Element for Issuance binding. <wst:RequestedSecurityToken> .... </wst:RequestedSecurityToken>

Parameters:
env pointer to environment struct
wst_verson integer representing wst version
parent_node parent axiom node
Returns:
RequestedSecurityToken axiom node, NULL if error ocurred.

AXIS2_EXTERN axiom_node_t* trust_util_create_requsted_proof_token_element ( const axutil_env_t *  env,
axis2_char_t *  wst_ns_uri,
axiom_node_t *  parent_node,
axiom_node_t *  req_proof_token 
)

Create the RequestedProofToken Element for Issuance binding. <wst:RequestedProofToken> .... </wst:RequestedProofToken>

Parameters:
env pointer to environment struct
wst_verson integer representing wst version
parent_node parent axiom node
Returns:
RequestedSecurityToken axiom node, NULL if error ocurred.

AXIS2_EXTERN axiom_node_t* trust_util_create_rst_element ( const axutil_env_t *  env,
axis2_char_t *  wst_ns_uri,
axis2_char_t *  context 
)

Create the RST Element for Issuance binding. <wst:RequestSecurityToken> ... ... </wst:RequestSecurityToken>

Parameters:
env pointer to environment struct
wst_verson integer representing wst version
context string representing contest of the request, can be NULL
Returns:
RST axiom node, NULL if error occurred.

AXIS2_EXTERN axiom_node_t* trust_util_create_rstr_collection_element ( const axutil_env_t *  env,
axis2_char_t *  wst_ns_uri 
)

Create the RSTRC Element for Issuance binding. <wst:RequestSecurityTokenResponseCollection> ... ... </wst:RequestSecurityTokenResponseCollection>

Parameters:
env pointer to environment struct
wst_verson integer representing wst version
Returns:
RSTRC axiom node, NULL if error ocurred.

AXIS2_EXTERN axiom_node_t* trust_util_create_rstr_element ( const axutil_env_t *  env,
axis2_char_t *  wst_ns_uri,
axis2_char_t *  context 
)

Create the RSTR Element for Issuance binding. <wst:RequestSecurityTokenResponse> ... ... </wst:RequestSecurityTokenResponse>

Parameters:
env pointer to environment struct
wst_verson integer representing wst version
context string representing contest of the request, can be NULL
Returns:
RSTR axiom node, NULL if error ocurred.

AXIS2_EXTERN axiom_node_t* trust_util_create_token_type_element ( const axutil_env_t *  env,
axis2_char_t *  wst_ns_uri,
axiom_node_t *  parent_node,
axis2_char_t *  token_type 
)

Create the TokenType Element for Issuance binding. <wst:TokenType> .... </wst:TokenType>

Parameters:
env pointer to environment struct
wst_verson integer representing wst version
parent_node parent axiom node
token_type string representing token type
Returns:
TokenType axiom node, NULL if error ocurred.

AXIS2_EXTERN axiom_node_t* trust_util_create_validation_response_element ( const axutil_env_t *  env,
axiom_node_t *  parent_node,
axis2_char_t *  wst_ns_uri,
axis2_char_t *  code,
axis2_char_t *  reason 
)

Create Status element for validation response.

Parameters:
env pointer to environment struct
wst_version integer representing wst version
parent_node pointer to parent axiom node
token_cancel_pending_node 
Returns:
Status element or NULL if error occurred.

AXIS2_EXTERN axis2_char_t* trust_util_get_wst_ns ( const axutil_env_t *  env,
int  wst_version 
)

Returns the namespace uri of WST according to the version.

Parameters:
env pointer to environment struct
wst_version integer representing wst version
Returns:
namespace uri according to version.


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__oxs__xml__key__processor.html0000644000076500007650000000770711202454500025772 0ustar shankarshankar Rampart/C: XML Key Processor

XML Key Processor
[OMXMLSecurity]


Functions

AXIS2_EXTERN axis2_status_t oxs_xml_key_process_X509SKI (const axutil_env_t *env, axiom_node_t *X509SKI_node, oxs_x509_cert_t *cert)
AXIS2_EXTERN axis2_status_t oxs_xml_key_process_X509SubjectName (const axutil_env_t *env, axiom_node_t *X509_subj_name_node, oxs_x509_cert_t *cert)
AXIS2_EXTERN axis2_status_t oxs_xml_key_process_X509IssuerSerial (const axutil_env_t *env, axiom_node_t *X509_issuer_serial_node, oxs_x509_cert_t *cert)
AXIS2_EXTERN axis2_status_t oxs_xml_key_process_X509Certificate (const axutil_env_t *env, axiom_node_t *X509_cert_node, oxs_x509_cert_t *cert)
AXIS2_EXTERN axis2_status_t oxs_xml_key_process_X509Data (const axutil_env_t *env, axiom_node_t *X509_data_node, oxs_x509_cert_t *cert)

Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/openssl__pkey_8h.html0000644000076500007650000002367211202454500022572 0ustar shankarshankar Rampart/C: openssl_pkey.h File Reference

openssl_pkey.h File Reference

holds either a public key or a private key. The type is determined by the type attribute More...

#include <openssl/rand.h>
#include <openssl/evp.h>
#include <openssl/pem.h>
#include <openssl/bio.h>
#include <openssl_constants.h>
#include <axis2_util.h>

Go to the source code of this file.

Defines

#define OPENSSL_PKEY_TYPE_UNKNOWN   0
#define OPENSSL_PKEY_TYPE_PUBLIC_KEY   1
#define OPENSSL_PKEY_TYPE_PRIVATE_KEY   2

Typedefs

typedef struct openssl_pkey_t openssl_pkey_t

Functions

EVP_PKEY * openssl_pkey_get_key (const openssl_pkey_t *pkey, const axutil_env_t *env)
axis2_char_t * openssl_pkey_get_name (const openssl_pkey_t *pkey, const axutil_env_t *env)
int openssl_pkey_get_size (const openssl_pkey_t *pkey, const axutil_env_t *env)
int openssl_pkey_get_type (const openssl_pkey_t *pkey, const axutil_env_t *env)
axis2_status_t openssl_pkey_set_key (openssl_pkey_t *pkey, const axutil_env_t *env, EVP_PKEY *key)
axis2_status_t openssl_pkey_set_name (openssl_pkey_t *pkey, const axutil_env_t *env, axis2_char_t *name)
axis2_status_t openssl_pkey_set_type (openssl_pkey_t *pkey, const axutil_env_t *env, int type)
axis2_status_t openssl_pkey_load (openssl_pkey_t *pkey, const axutil_env_t *env, axis2_char_t *filename, axis2_char_t *password)
axis2_status_t openssl_pkey_populate (openssl_pkey_t *pkey, const axutil_env_t *env, EVP_PKEY *key, axis2_char_t *name, int type)
axis2_status_t openssl_pkey_free (openssl_pkey_t *pkey, const axutil_env_t *env)
axis2_status_t openssl_pkey_increment_ref (openssl_pkey_t *pkey, const axutil_env_t *env)
AXIS2_EXTERN openssl_pkey_topenssl_pkey_create (const axutil_env_t *env)


Detailed Description

holds either a public key or a private key. The type is determined by the type attribute


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/trust__util_8h-source.html0000644000076500007650000005723111202454500023571 0ustar shankarshankar Rampart/C: trust_util.h Source File

trust_util.h

Go to the documentation of this file.
00001 
00002 /*
00003 * Licensed to the Apache Software Foundation (ASF) under one or more
00004 * contributor license agreements.  See the NOTICE file distributed with
00005 * this work for additional information regarding copyright ownership.
00006 * The ASF licenses this file to You under the Apache License, Version 2.0
00007 * (the "License"); you may not use this file except in compliance with
00008 * the License.  You may obtain a copy of the License at
00009 *
00010 *      http://www.apache.org/licenses/LICENSE-2.0
00011 *
00012 * Unless required by applicable law or agreed to in writing, software
00013 * distributed under the License is distributed on an "AS IS" BASIS,
00014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00015 * See the License for the specific language governing permissions and
00016 * limitations under the License.
00017 */
00018 
00019 #ifndef TRUST_UTIL
00020 #define TRUST_UTIL
00021 
00027 #include <stdio.h>
00028 #include <stdlib.h>
00029 #include <axiom.h>
00030 #include <axutil_utils.h>
00031 #include <axutil_string.h>
00032 
00033 #include <trust_constants.h>
00034 
00035 #ifdef __cplusplus
00036 extern "C"
00037 {
00038 #endif
00039 
00040     typedef enum
00041     {
00042         TRUST_ALLOW = 0,
00043         TRUST_NOT_ALLOW
00044     } trust_allow_t;
00045 
00046     typedef enum
00047     {
00048         TRUST_OK = 0,
00049         TRUST_NOT_OK
00050     } trust_ok_t;
00051 
00063     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00064     trust_util_create_rst_element(
00065         const axutil_env_t * env,
00066         axis2_char_t *wst_ns_uri,
00067         axis2_char_t * context);
00068 
00080     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00081     trust_util_create_rstr_element(
00082         const axutil_env_t * env,
00083         axis2_char_t *wst_ns_uri,
00084         axis2_char_t * context);
00085 
00096     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00097     trust_util_create_rstr_collection_element(
00098         const axutil_env_t * env,
00099         axis2_char_t *wst_ns_uri);
00100 
00110     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00111     trust_util_create_request_type_element(
00112         const axutil_env_t * env,
00113         axis2_char_t *wst_ns_uri,
00114         axiom_node_t * parent_node,
00115         axis2_char_t * request_type);
00116 
00126     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00127     trust_util_create_token_type_element(
00128         const axutil_env_t * env,
00129         axis2_char_t *wst_ns_uri,
00130         axiom_node_t * parent_node,
00131         axis2_char_t * token_type);
00132 
00148     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00149     trust_util_create_applies_to_element(
00150         const axutil_env_t * env,
00151         axiom_node_t * parent_node,
00152         const axis2_char_t * address,
00153         const axis2_char_t * addressing_ns);
00154 
00161     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00162     trust_util_create_claims_element(
00163         const axutil_env_t * env,
00164         axis2_char_t *wst_ns_uri,
00165         axiom_node_t * parent_node,
00166         axis2_char_t * dialect_uri);
00167 
00176     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00177     trust_util_create_requested_security_token_element(
00178         const axutil_env_t * env,
00179         axis2_char_t *wst_ns_uri,
00180         axiom_node_t * parent_node,
00181         axiom_node_t * sec_token_node);
00182 
00183 
00192     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00193     trust_util_create_requsted_proof_token_element(
00194         const axutil_env_t * env,
00195         axis2_char_t *wst_ns_uri,
00196         axiom_node_t * parent_node,
00197         axiom_node_t *req_proof_token);
00198 
00209     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00210     trust_util_create_entropy_element(
00211         const axutil_env_t * env,
00212         axis2_char_t *wst_ns_uri,
00213         axiom_node_t * parent_node);
00214 
00224     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00225     trust_util_computed_key_element(
00226         const axutil_env_t * env,
00227         axis2_char_t *wst_ns_uri,
00228         axiom_node_t * parent_node);
00229 
00240     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00241     trust_util_create_binary_secret_element(
00242         const axutil_env_t * env,
00243         axis2_char_t *wst_ns_uri,
00244         axiom_node_t * parent_node,
00245         axis2_char_t * enc_secret,
00246         axis2_char_t * bin_sec_type);
00247 
00256     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00257     trust_util_create_computed_key_algo_element(
00258         const axutil_env_t * env,
00259         axis2_char_t *wst_ns_uri,
00260         axiom_node_t * parent_node,
00261         axis2_char_t * algo_id);
00262 
00271     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00272     trust_util_create_key_size_element(
00273         const axutil_env_t * env,
00274         axis2_char_t *wst_ns_uri,
00275         axiom_node_t * parent_node,
00276         axis2_char_t * key_size);
00277 
00286     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00287     trust_util_create_key_type_element(
00288         const axutil_env_t * env,
00289         axis2_char_t *wst_ns_uri,
00290         axiom_node_t * parent_node,
00291         axis2_char_t * key_type);
00292 
00293     
00294     /*AuthenticationType*/
00295     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00296     trust_util_create_authentication_type_element(
00297         const axutil_env_t * env,
00298         axis2_char_t *wst_ns_uri,
00299         axiom_node_t * parent_node,
00300         axis2_char_t * authentication_type);
00301 
00302    /*SignatureAlgorithm*/
00303     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00304     trust_util_create_signature_algo_element(
00305         const axutil_env_t * env,
00306         axis2_char_t *wst_ns_uri,
00307         axiom_node_t * parent_node,
00308         axis2_char_t * signature_algo);
00309     
00310     /*EncryptionAlgorithm*/
00311     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00312     trust_util_create_encryption_algo_element(
00313         const axutil_env_t * env,
00314         axis2_char_t *wst_ns_uri,
00315         axiom_node_t * parent_node,
00316         axis2_char_t * encryption_algo);
00317         
00318     /*CanonicalizationAlgorithm*/
00319     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00320     trust_util_create_canonicalization_algo_element(
00321         const axutil_env_t * env,
00322         axis2_char_t *wst_ns_uri,
00323         axiom_node_t * parent_node,
00324         axis2_char_t * canonicalization_algo);
00325 
00326     /*ComputedKeyAlgorithm*/
00327     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00328     trust_util_create_computedkey_algo_element(
00329         const axutil_env_t * env,
00330         axis2_char_t *wst_ns_uri,
00331         axiom_node_t * parent_node,
00332         axis2_char_t * computedkey_algo);
00333     
00334    /*(Desired)Encryption*/
00335     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00336     trust_util_create_desired_encryption_element(
00337         const axutil_env_t * env,
00338         axis2_char_t * wst_ns_uri,
00339         axiom_node_t * parent_node,
00340         axiom_node_t * encryption_key); /*@param encryption_key - This can be either a key or a STR*/
00341    
00342    /*ProofEncryption*/
00343     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00344     trust_util_create_proof_encryption_element(
00345         const axutil_env_t * env,
00346         axis2_char_t * wst_ns_uri,
00347         axiom_node_t * parent_node,
00348         axiom_node_t * proof_encryption_key); /*@param encryption_key - This can be either a key or a STR*/
00349 
00350     /*UseKey*/
00351     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00352     trust_util_create_usekey_element(
00353         const axutil_env_t * env,
00354         axis2_char_t * wst_ns_uri,
00355         axiom_node_t * parent_node,
00356         axiom_node_t * usekey_key); /*@param encryption_key - This can be either a key or a STR*/
00357 
00358    /*SignWith*/
00359     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00360     trust_util_create_signwith_element(
00361         const axutil_env_t * env,
00362         axis2_char_t *wst_ns_uri,
00363         axiom_node_t * parent_node,
00364         axis2_char_t * signwith);
00365        
00366    /*EncryptWith*/
00367     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00368     trust_util_create_encryptwith_element(
00369         const axutil_env_t * env,
00370         axis2_char_t *wst_ns_uri,
00371         axiom_node_t * parent_node,
00372         axis2_char_t * encryptwith);
00373  
00382     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00383     trust_util_create_life_time_element(
00384         const axutil_env_t * env,
00385         axiom_node_t * parent_node,
00386         axis2_char_t *wst_ns_uri,
00387         int ttl);
00388 
00396     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00397     trust_util_create_req_attached_reference_element(
00398         const axutil_env_t * env,
00399         axis2_char_t *wst_ns_uri,
00400         axiom_node_t * parent_node);
00401 
00409     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00410     trust_util_create_req_unattached_reference_element(
00411         const axutil_env_t * env,
00412         axis2_char_t *wst_ns_uri,
00413         axiom_node_t * parent_node);
00414 
00423     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00424     trust_util_create_encrypted_data_element(
00425         const axutil_env_t * env,
00426         axiom_node_t * parent_node,
00427         axis2_char_t * enc_data);
00428 
00437     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00438     trust_util_create_renew_traget_element(
00439         const axutil_env_t * env,
00440         axis2_char_t *wst_ns_uri,
00441         axiom_node_t * parent_node,
00442         axiom_node_t * token_renew_pending_node);
00443 
00451     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00452     trust_util_create_allow_postdating_element(
00453         const axutil_env_t * env,
00454         axis2_char_t *wst_ns_uri,
00455         axiom_node_t * parent_node);
00456 
00466     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00467     trust_util_create_renewing_element(
00468         const axutil_env_t * env,
00469         axis2_char_t *wst_ns_uri,
00470         axiom_node_t * parent_node,
00471         trust_allow_t allow_flag,
00472         trust_ok_t ok_flag);
00473 
00482     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00483     trust_util_create_cancel_target_element(
00484         const axutil_env_t * env,
00485         axis2_char_t *wst_ns_uri,
00486         axiom_node_t * parent_node,
00487         axiom_node_t * token_cancel_pending_node);
00488 
00497     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00498     trust_util_create_validation_response_element(
00499         const axutil_env_t * env,
00500         axiom_node_t * parent_node,
00501         axis2_char_t *wst_ns_uri,
00502         axis2_char_t * code,
00503         axis2_char_t * reason);
00504 
00505         /* Generate random se*/
00506         AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00507         trust_util_create_random_session_key_proof_token_element(
00508                 const axutil_env_t * env,
00509                 axis2_char_t *wst_ns_uri);
00510 
00517     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00518     trust_util_get_wst_ns(
00519         const axutil_env_t * env,
00520         int wst_version);
00521 
00522 #ifdef __cplusplus
00523 }
00524 #endif
00525 #endif                          /*TRUST_UTIL_H */

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/tab_b.gif0000644000076500007650000000004311202454500020154 0ustar shankarshankarGIF89a€„°Ç,D;rampartc-src-1.3.0/docs/api/html/rampart__constants_8h-source.html0000644000076500007650000004672511202454500025123 0ustar shankarshankar Rampart/C: rampart_constants.h Source File

rampart_constants.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 
00019 #ifndef RAMPART_CONSTANTS_H
00020 #define RAMPART_CONSTANTS_H
00021 
00031 #include <oxs_constants.h>
00032 #include <rampart_error.h>
00033 
00034 #ifdef __cplusplus
00035 extern "C"
00036 {
00037 #endif
00038 
00054     /*Rampart module*/
00055 #define RAMPART_IN_HANDLER  "RampartInHandler"
00056 #define RAMPART_OUT_HANDLER  "RampartOutHandler"
00057 
00058     /* Rahas module */
00059 #define RAHAS_IN_HANDLER "RahasInHandler"
00060 #define RAHAS_OUT_HANDLER "RahasOutHandler"
00061 
00062     /*Default values*/
00063 #define RAMPART_DEFAULT_KT_ALGO OXS_DEFAULT_KT_ALGO_HREF
00064 #define RAMPART_STR_DEFAULT OXS_STR_DEFAULT
00065 #define RAMPART_TIMESTAMP_TOKEN_DEFAULT_TIME_TO_LIVE 300
00066 
00067     /* rampart element names*/
00068 #define RAMPART_SECURITY "Security"
00069 #define RAMPART_SECURITY_USERNAMETOKEN "UsernameToken"
00070 #define RAMPART_SECURITY_USERNAMETOKEN_USERNAME "Username"
00071 #define RAMPART_SECURITY_USERNAMETOKEN_PASSWORD "Password"
00072 #define RAMPART_SECURITY_USERNAMETOKEN_CREATED "Created"
00073 #define RAMPART_SECURITY_USERNAMETOKEN_NONCE "Nonce"
00074 #define RAMPART_SECURITY_USERNAMETOKEN_PASSWORD_ATTR_TYPE "Type"
00075 #define RAMPART_SECURITY_TIMESTAMP "Timestamp"
00076 #define RAMPART_SECURITY_TIMESTAMP_CREATED "Created"
00077 #define RAMPART_SECURITY_TIMESTAMP_EXPIRES "Expires"
00078 #define RAMPART_RAMPART "rampart"
00079 
00080     /*Rampart URIs*/
00081 #define RAMPART_WSSE "wsse"
00082 #define RAMPART_WSSE_XMLNS "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
00083 #define RAMPART_WSU "wsu"
00084 #define RAMPART_WSU_XMLNS "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
00085 #define RAMPART_PASSWORD_DIGEST_URI "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest"
00086 
00087 #define RAMPART_PASSWORD_TEXT_URI "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText"
00088 
00089 
00090 #define RAMPART_INFLOW_SECURITY_POLICY              "InflowSecurityPolicy"
00091 #define RAMPART_OUTFLOW_SECURITY_POLICY             "OutflowSecurityPolicy"
00092 
00093 #define INFLOW_RAMPART_CONTEXT                      "InflowRampartContext"
00094 #define OUTFLOW_RAMPART_CONTEXT                     "OutflowRampartContext"
00095 
00096 #define RAMPART_CONTEXT                             "RampartContext"
00097 
00098 #define IN_MESSAGE_SECURITY                          "InMessageSecurity"
00099 #define OUT_MESSAGE_SECURITY                         "OutMessageSEcurity"
00100 #define RAMPART_PASSWORD_TEXT                       "plainText"
00101 #define RAMPART_PASSWORD_DIGEST                     "Digest"
00102 #define RAMPART_CONFIGURATION                       "RampartConfiguration"
00103 #define RAMPART_CLIENT_CONFIGURATION                "RampartClientConfiguration"
00104 
00105     /************fault codes***************/
00106 #define RAMPART_FAULT_UNSUPPORTED_SECURITY_TOKEN    "wsse:UnsupportedSecurityToken"
00107 #define RAMPART_FAULT_UNSUPPORTED_ALGORITHM         "wsse:UnsupportedAlgorithm"
00108 #define RAMPART_FAULT_INVALID_SECURITY              "wsse:InvalidSecurity"
00109 #define RAMPART_FAULT_INVALID_SECURITY_TOKEN        "wsse:InvalidSecurityToken"
00110 #define RAMPART_FAULT_FAILED_AUTHENTICATION         "wsse:FailedAuthentication"
00111 #define RAMPART_FAULT_FAILED_CHECK                  "wsse:FailedCheck"
00112 #define RAMPART_FAULT_SECURITY_TOKEN_UNAVAILABLE    "wsse:SecurityTokenUnavailable"
00113 #define RAMPART_FAULT_TRUST_REQUEST_FAILED          "wst:RequestFailed"
00114 #define RAMPART_FAULT_TRUST_REQUEST_INVALID         "wst:InvalidRequest"
00115 
00116     /***********fault related strings*********/
00117 #define RAMPART_FAULT_IN_TIMESTAMP             "wsse:Timestamp"
00118 #define RAMPART_FAULT_IN_USERNAMETOKEN         "wsse:UsernameToken"
00119 #define RAMPART_FAULT_IN_ENCRYPTED_KEY         "xenc:EncryptedKey"
00120 #define RAMPART_FAULT_IN_ENCRYPTED_DATA        "xenc:EncryptedData"
00121 #define RAMPART_FAULT_IN_SIGNATURE             "ds:Signature"
00122 #define RAMPART_FAULT_MSG_REPLAYED             "rampc:Message-Replayed"
00123 #define RAMPART_FAULT_IN_POLICY                "rampc:Policy"
00124 
00125 #define RAMPART_FAULT_ELEMENT_LOCAL_NAME       "ProblemSecurityHeader"
00126 
00127 
00128     /*Dynamically set values*/
00129 #define RAMPART_ACTION_PASSWORD "password"
00130 #define RAMPART_ACTION_ENC_USER_PASSWORD "encUserPassword"
00131 #define RAMPART_CALLBACK_SPECIFIC_PROPERTY "callbackSpecificProperty"
00132 
00133     /*Security processed results*/
00134 #define RAMPART_SECURITY_PROCESSED_RESULTS "SecurityProcessedResults"
00135 #define RAMPART_SPR_UT_USERNAME "SPR_UT_username"
00136 #define RAMPART_SPR_UT_CREATED "SPR_UT_created"
00137 #define RAMPART_SPR_UT_NONCE "SPR_UT_nonce"
00138 #define RAMPART_SPR_UT_PASSWORD_TYPE "SPR_UT_passwordType"
00139 #define RAMPART_SPR_TS_CREATED "SPR_TS_created"
00140 #define RAMPART_SPR_TS_EXPIRES "SPR_TS_expires"
00141 #define RAMPART_SPR_UT_CHECKED "SPR_UT_Checked"
00142 #define RAMPART_SPR_TS_CHECKED "SPR_TS_Checked"
00143 #define RAMPART_SPR_ENC_CHECKED "SPR_ENC_Checked"
00144 #define RAMPART_SPR_SIG_VALUE "SPR_Sig_Val"
00145 #define RAMPART_SPR_ENDORSED_VALUE "SPR_Endorsed_Value"
00146 #define RAMPART_SPR_SIG_VERIFIED "SPR_Sig_Verified"
00147 #define RAMPART_SPR_SIG_ENCRYPTED "SPR_Sig_Encrypted"
00148 #define RAMPART_SPR_SIG_CONFIRM_FOUND "SPR_Sig_Confirmation_Found"
00149 #define RAMPART_SPR_BODY_ENCRYPTED "SPR_Body_Encrypted"
00150 
00151 #define RAMPART_YES "YES"
00152 #define RAMPART_NO "NO"
00153 
00154 #define RAMPART_STR_DIRECT_REFERENCE    OXS_STR_DIRECT_REFERENCE
00155 #define RAMPART_STR_KEY_IDENTIFIER      OXS_STR_KEY_IDENTIFIER
00156 #define RAMPART_STR_EMBEDDED            OXS_STR_EMBEDDED
00157 #define RAMPART_STR_ISSUER_SERIAL       OXS_STR_ISSUER_SERIAL
00158 #define RAMPART_STR_THUMB_PRINT         OXS_STR_THUMB_PRINT
00159 #define RAMPART_STR_EXTERNAL_URI        OXS_STR_EXTERNAL_URI
00160 #define RAMPART_STR_ENCRYPTED_KEY       OXS_STR_ENCRYPTED_KEY
00161 
00162 #define RAMPART_RD_DEF_VALID_DURATION 60
00163 #define RAMPART_RD_DEF_MAX_RCDS 5
00164 
00165 #define RAMPART_SCT_ID_TYPE_UNKNOWN 0
00166 #define RAMPART_SCT_ID_TYPE_LOCAL 1
00167 #define RAMPART_SCT_ID_TYPE_GLOBAL 2
00168 
00169 #define RAMPART_USERNAME_TOKEN_NONCE_LENGTH 24
00170 
00171 #define RAMPART_ENC_TOKEN_ID "EncryptionTokenID"
00172 #define RAMPART_SIG_TOKEN_ID "SignatureTokenID"
00173 
00174 #define RAMPART_BST_ID_PREFIX "BST-"
00175 #define RAMPART_EMBED_TOKEN_ID "ID"
00176 
00177 #ifdef __cplusplus
00178 }
00179 #endif
00180 
00182 #endif /* RAMPART_CONSTANTS_H*/

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/rampart__callback_8h-source.html0000644000076500007650000001730611202454500024634 0ustar shankarshankar Rampart/C: rampart_callback.h Source File

rampart_callback.h

Go to the documentation of this file.
00001 /*
00002 * Licensed to the Apache Software Foundation (ASF) under one or more
00003 * contributor license agreements.  See the NOTICE file distributed with
00004 * this work for additional information regarding copyright ownership.
00005 * The ASF licenses this file to You under the Apache License, Version 2.0
00006 * (the "License"); you may not use this file except in compliance with
00007 * the License.  You may obtain a copy of the License at
00008 *
00009 *      http://www.apache.org/licenses/LICENSE-2.0
00010 *
00011 * Unless required by applicable law or agreed to in writing, software
00012 * distributed under the License is distributed on an "AS IS" BASIS,
00013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014 * See the License for the specific language governing permissions and
00015 * limitations under the License.
00016 */
00017 
00018 #include <axutil_utils_defines.h>
00019 #include <axis2_defines.h>
00020 #include <axutil_param.h>
00021 #ifndef RAMPART_CALLBACK_H
00022 #define RAMPART_CALLBACK_H
00023 
00030 #ifdef __cplusplus
00031 extern "C"
00032 {
00033 #endif
00034 
00041     typedef struct rampart_callback_ops rampart_callback_ops_t;
00042     typedef struct rampart_callback rampart_callback_t;
00043 
00044     struct rampart_callback_ops
00045     {
00056         axis2_char_t *(AXIS2_CALL*
00057                        callback_password)(rampart_callback_t *callback,
00058                                           const axutil_env_t *env,
00059                                           const axis2_char_t *username,
00060                                           void *param);
00072                 axis2_char_t *(AXIS2_CALL*
00073                                            callback_pkcs12_password)(rampart_callback_t *callback,
00074                                                                                                 const axutil_env_t *env,
00075                                                                                                 const axis2_char_t *username,
00076                                                                                                 void *param);
00083         axis2_status_t (AXIS2_CALL*
00084                         free)(rampart_callback_t *rcb,
00085                               const axutil_env_t* env);
00086 
00087     };
00088 
00089     struct rampart_callback
00090     {
00091         rampart_callback_ops_t *ops;
00092         axutil_param_t *param;
00093     };
00094 
00095     /*************************** Function macros **********************************/
00096 #define RAMPART_CALLBACK_FREE(callback, env) \
00097       ((callback)->ops->free (callback, env))
00098 
00099 #define RAMPART_CALLBACK_CALLBACK_PASSWORD(callback, env, username, param) \
00100       ((callback)->ops->callback_password(callback, env, username, param))
00101 
00102 #define RAMPART_CALLBACK_CALLBACK_PKCS12_PASSWORD(callback, env, username, param) \
00103           ((callback)->ops->callback_pkcs12_password(callback, env, username, param))
00104 
00106 #ifdef __cplusplus
00107 }
00108 #endif
00109 
00110 #endif /* RAMPART_CALLBACK_H */
00111 

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/oxs__axis2__utils_8h.html0000644000076500007650000000327711202454500023354 0ustar shankarshankar Rampart/C: oxs_axis2_utils.h File Reference

oxs_axis2_utils.h File Reference

Utility functions related to Axis2/C. More...

#include <axis2_util.h>
#include <oxs_buffer.h>

Go to the source code of this file.


Detailed Description

Utility functions related to Axis2/C.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/rampart__sec__header__processor_8h-source.html0000644000076500007650000001360211202454500027552 0ustar shankarshankar Rampart/C: rampart_sec_header_processor.h Source File

rampart_sec_header_processor.h

Go to the documentation of this file.
00001 /*
00002  *   Copyright 2003-2004 The Apache Software Foundation.
00003  *
00004  *   Licensed under the Apache License, Version 2.0 (the "License");
00005  *   you may not use this file except in compliance with the License.
00006  *   You may obtain a copy of the License at
00007  *
00008  *       http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  *   Unless required by applicable law or agreed to in writing, software
00011  *   distributed under the License is distributed on an "AS IS" BASIS,
00012  *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  *   See the License for the specific language governing permissions and
00014  *   limitations under the License.
00015  */
00016 
00017 #include <axutil_utils_defines.h>
00018 #include <axis2_defines.h>
00019 #include <axutil_env.h>
00020 #include <axiom_soap.h>
00021 #include <axis2_msg_ctx.h>
00022 #include <oxs_asym_ctx.h>
00023 #include <oxs_xml_encryption.h>
00024 #include <rampart_context.h>
00025 #include <oxs_key_mgr.h>
00037 #ifndef RAMPART_SEC_HEADER_PROCESSOR_H
00038 #define RAMPART_SEC_HEADER_PROCESSOR_H
00039 
00040 #ifdef __cplusplus
00041 extern "C" {
00042 #endif
00043 
00055     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00056     rampart_shp_process_sec_header(const axutil_env_t *env,
00057                                 axis2_msg_ctx_t *msg_ctx,
00058                                 rampart_context_t *rampart_context,
00059                                 axiom_soap_envelope_t *soap_envelope,
00060                                 axiom_node_t *sec_node);
00061 
00062 
00063     /* @} */
00064 #ifdef __cplusplus
00065 }
00066 #endif
00067 
00068 #endif    /* !RAMPART_SEC_HEADER_PROCESSOR_H */

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/rampart__mod_8h.html0000644000076500007650000000436011202454500022355 0ustar shankarshankar Rampart/C: rampart_mod.h File Reference

rampart_mod.h File Reference

Axis2 rampart module interface. More...

#include <axis2_handler.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN axis2_handler_t * rampart_in_handler_create (const axutil_env_t *env, axutil_string_t *name)
AXIS2_EXTERN axis2_handler_t * rampart_out_handler_create (const axutil_env_t *env, axutil_string_t *name)


Detailed Description

Axis2 rampart module interface.


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/rampart__crypto__util_8h-source.html0000644000076500007650000001203311202454500025604 0ustar shankarshankar Rampart/C: rampart_crypto_util.h Source File

rampart_crypto_util.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 
00019 #include <axutil_utils_defines.h>
00020 #include <axis2_defines.h>
00021 #include <axutil_env.h>
00022 
00027 #ifndef RAMPART_CRYPTO_UTIL
00028 #define RAMPART_CRYPTO_UTIL
00029 
00030 #ifdef __cplusplus
00031 extern "C" {
00032 #endif
00033 
00048     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00049     rampart_crypto_sha1(
00050         const axutil_env_t *env,
00051         const axis2_char_t *nonce,
00052         const axis2_char_t *created,
00053         const axis2_char_t *password);
00054 
00055 
00056     /* @} */
00057 #ifdef __cplusplus
00058 }
00059 #endif
00060 
00061 #endif    /* !RAMPART_CRYPTO_UTIL */

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__oxs.html0000644000076500007650000001320411202454500021473 0ustar shankarshankar Rampart/C: OMXMLSecurity
Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/rampart__sec__processed__result_8h-source.html0000644000076500007650000001554611202454500027621 0ustar shankarshankar Rampart/C: rampart_sec_processed_result.h Source File

rampart_sec_processed_result.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #include <axutil_utils_defines.h>
00019 #include <axis2_defines.h>
00020 #include <axutil_env.h>
00021 #include <axis2_msg_ctx.h>
00022 
00027 #ifndef RAMPART_SEC_PROCESSED_RESULT
00028 #define RAMPART_SEC_PROCESSED_RESULT
00029 
00030 #ifdef __cplusplus
00031 extern "C" {
00032 #endif
00033 
00047     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00048     rampart_set_security_processed_result(
00049         const axutil_env_t *env,
00050         axis2_msg_ctx_t *msg_ctx,
00051         axis2_char_t *key,
00052         void *value);
00053 
00062     AXIS2_EXTERN void *AXIS2_CALL
00063     rampart_get_security_processed_result(
00064         const axutil_env_t *env,
00065         axis2_msg_ctx_t *msg_ctx,
00066         axis2_char_t *key);
00067 
00074     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00075     rampart_set_security_processed_results_property(
00076         const axutil_env_t *env,
00077         axis2_msg_ctx_t *msg_ctx);
00078 
00085     AXIS2_EXTERN axutil_hash_t* AXIS2_CALL
00086     rampart_get_all_security_processed_results(
00087         const axutil_env_t *env,
00088         axis2_msg_ctx_t *msg_ctx);
00089 
00096     AXIS2_EXTERN void AXIS2_CALL
00097     rampart_print_security_processed_results_set(
00098         const axutil_env_t *env,
00099         axis2_msg_ctx_t *msg_ctx);
00100 
00101 
00102     /* @} */
00103 #ifdef __cplusplus
00104 }
00105 #endif
00106 
00107 #endif    /* !RAMPART_SEC_PROCESSED_RESULT */

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/secconv__security__context__token_8h-source.html0000644000076500007650000003361211202454500030201 0ustar shankarshankar Rampart/C: secconv_security_context_token.h Source File

secconv_security_context_token.h

Go to the documentation of this file.
00001 
00002 /*
00003  * Licensed to the Apache Software Foundation (ASF) under one or more
00004  * contributor license agreements.  See the NOTICE file distributed with
00005  * this work for additional information regarding copyright ownership.
00006  * The ASF licenses this file to You under the Apache License, Version 2.0
00007  * (the "License"); you may not use this file except in compliance with
00008  * the License.  You may obtain a copy of the License at
00009  *
00010  *      http://www.apache.org/licenses/LICENSE-2.0
00011  *
00012  * Unless required by applicable law or agreed to in writing, software
00013  * distributed under the License is distributed on an "AS IS" BASIS,
00014  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00015  * See the License for the specific language governing permissions and
00016  * limitations under the License.
00017  */
00018 
00019 #ifndef SECCONV_SECURITY_CONTEXT_TOKEN_H
00020 #define SECCONV_SECURITY_CONTEXT_TOKEN_H
00021 
00027 #include <stdio.h>
00028 #include <stdlib.h>
00029 #include <axutil_utils.h>
00030 #include <axutil_string.h>
00031 #include <oxs_buffer.h>
00032 
00033 #ifdef __cplusplus
00034 extern "C"
00035 {
00036 #endif
00037 
00038     typedef struct security_context_token_t security_context_token_t;
00039 
00045     AXIS2_EXTERN security_context_token_t *AXIS2_CALL
00046     security_context_token_create(
00047         const axutil_env_t * env);
00048 
00055     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00056     security_context_token_free(
00057         security_context_token_t *sct, 
00058         const axutil_env_t *env);
00059 
00066     AXIS2_EXTERN oxs_buffer_t *AXIS2_CALL
00067     security_context_token_get_secret(
00068         security_context_token_t * sct, 
00069         const axutil_env_t * env);
00070 
00078     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00079     security_context_token_get_global_identifier(
00080         security_context_token_t * sct, 
00081         const axutil_env_t * env);
00082     
00090     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00091     security_context_token_get_local_identifier(
00092         security_context_token_t * sct, 
00093         const axutil_env_t * env);
00094 
00103     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00104     security_context_token_set_secret(
00105         security_context_token_t * sct, 
00106         const axutil_env_t * env,
00107         oxs_buffer_t *buffer);
00108 
00117     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00118     security_context_token_set_global_identifier(
00119         security_context_token_t * sct, 
00120         const axutil_env_t * env,
00121         axis2_char_t *global_id);
00122     
00131     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00132     security_context_token_set_local_identifier(
00133         security_context_token_t * sct, 
00134         const axutil_env_t * env,
00135         axis2_char_t *local_id);
00136 
00144     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00145     security_context_token_set_is_sc10(
00146         security_context_token_t *sct, 
00147         const axutil_env_t * env,
00148         axis2_bool_t is_sc10);
00149 
00157     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00158     security_context_token_get_requested_proof_token(
00159         security_context_token_t *sct, 
00160         const axutil_env_t * env);
00161 
00169     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00170     security_context_token_get_attached_reference(
00171         security_context_token_t *sct, 
00172         const axutil_env_t * env);
00173 
00181     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00182     security_context_token_get_unattached_reference(
00183         security_context_token_t *sct, 
00184         const axutil_env_t * env);
00185 
00193     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00194     security_context_token_get_token(
00195         security_context_token_t *sct, 
00196         const axutil_env_t * env);
00197 
00206     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00207     security_context_token_set_requested_proof_token(
00208         security_context_token_t *sct, 
00209         const axutil_env_t * env,
00210         axiom_node_t *node);
00211 
00219     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00220     security_context_token_set_attached_reference(
00221         security_context_token_t *sct, 
00222         const axutil_env_t * env,
00223         axiom_node_t *node);
00224 
00232     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00233     security_context_token_set_unattached_reference(
00234         security_context_token_t *sct, 
00235         const axutil_env_t * env,
00236         axiom_node_t *node);
00237 
00245     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00246     security_context_token_set_token(
00247         security_context_token_t *sct, 
00248         const axutil_env_t * env,
00249         axiom_node_t *node);
00250 
00257     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00258     security_context_token_increment_ref(
00259         security_context_token_t *sct,
00260         const axutil_env_t * env);
00261 
00268     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00269     security_context_token_serialize(
00270         security_context_token_t *sct, 
00271         const axutil_env_t *env);
00272 
00280     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00281     security_context_token_deserialize(
00282         security_context_token_t *sct, 
00283         const axutil_env_t *env, 
00284         axis2_char_t *serialised_node);
00285    
00286 #ifdef __cplusplus
00287 }
00288 #endif
00289 #endif                          /*SECCONV_SECURITY_CONTEXT_TOKEN_H */

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/oxs__x509__cert_8h.html0000644000076500007650000002420611202454500022623 0ustar shankarshankar Rampart/C: oxs_x509_cert.h File Reference

oxs_x509_cert.h File Reference

the OMXMLSecurity representation of an X509 certificate More...

#include <axis2_defines.h>
#include <axutil_env.h>
#include <axiom_node.h>
#include <openssl_pkey.h>

Go to the source code of this file.

Typedefs

typedef struct oxs_x509_cert_t oxs_x509_cert_t

Functions

AXIS2_EXTERN oxs_x509_cert_t * oxs_x509_cert_create (const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_x509_cert_free (oxs_x509_cert_t *x509_cert, const axutil_env_t *env)
AXIS2_EXTERN int oxs_x509_cert_get_serial_number (oxs_x509_cert_t *x509_cert, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_x509_cert_get_subject (oxs_x509_cert_t *x509_cert, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_x509_cert_get_issuer (oxs_x509_cert_t *x509_cert, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_x509_cert_get_key_identifier (oxs_x509_cert_t *x509_cert, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_x509_cert_get_fingerprint (oxs_x509_cert_t *x509_cert, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_x509_cert_get_date (oxs_x509_cert_t *x509_cert, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_x509_cert_get_hash (oxs_x509_cert_t *x509_cert, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_x509_cert_get_data (oxs_x509_cert_t *x509_cert, const axutil_env_t *env)
AXIS2_EXTERN openssl_pkey_toxs_x509_cert_get_public_key (oxs_x509_cert_t *x509_cert, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_serial_number (oxs_x509_cert_t *x509_cert, const axutil_env_t *env, int value)
AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_issuer (oxs_x509_cert_t *x509_cert, const axutil_env_t *env, axis2_char_t *value)
AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_key_identifier (oxs_x509_cert_t *x509_cert, const axutil_env_t *env, axis2_char_t *value)
AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_subject (oxs_x509_cert_t *x509_cert, const axutil_env_t *env, axis2_char_t *value)
AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_fingerprint (oxs_x509_cert_t *x509_cert, const axutil_env_t *env, axis2_char_t *value)
AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_date (oxs_x509_cert_t *x509_cert, const axutil_env_t *env, axis2_char_t *value)
AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_hash (oxs_x509_cert_t *x509_cert, const axutil_env_t *env, axis2_char_t *value)
AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_data (oxs_x509_cert_t *x509_cert, const axutil_env_t *env, axis2_char_t *value)
AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_public_key (oxs_x509_cert_t *x509_cert, const axutil_env_t *env, openssl_pkey_t *public_key)
AXIS2_EXTERN axis2_status_t oxs_x509_cert_copy_to (oxs_x509_cert_t *x509_cert, const axutil_env_t *env, oxs_x509_cert_t *to)
AXIS2_EXTERN axis2_char_t * oxs_x509_cert_get_common_name (oxs_x509_cert_t *x509_cert, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_common_name (oxs_x509_cert_t *x509_cert, const axutil_env_t *env, axis2_char_t *common_name)


Detailed Description

the OMXMLSecurity representation of an X509 certificate


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__rampart__mod.html0000644000076500007650000001110711202454500023326 0ustar shankarshankar Rampart/C: Rampart Module

Rampart Module


Functions

AXIS2_EXTERN axis2_handler_t * rampart_in_handler_create (const axutil_env_t *env, axutil_string_t *name)
AXIS2_EXTERN axis2_handler_t * rampart_out_handler_create (const axutil_env_t *env, axutil_string_t *name)

Function Documentation

AXIS2_EXTERN axis2_handler_t* rampart_in_handler_create ( const axutil_env_t *  env,
axutil_string_t *  name 
)

Creates In handler

Parameters:
env pointer to environment struct
name handler name
Returns:
Created In handler

AXIS2_EXTERN axis2_handler_t* rampart_out_handler_create ( const axutil_env_t *  env,
axutil_string_t *  name 
)

Creates Out handler

Parameters:
env pointer to environment struct
name handler name
Returns:
Created Out handler


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/trust__sts__client_8h-source.html0000644000076500007650000003175511202454500025125 0ustar shankarshankar Rampart/C: trust_sts_client.h Source File

trust_sts_client.h

Go to the documentation of this file.
00001 
00002 /*
00003 * Licensed to the Apache Software Foundation (ASF) under one or more
00004 * contributor license agreements.  See the NOTICE file distributed with
00005 * this work for additional information regarding copyright ownership.
00006 * The ASF licenses this file to You under the Apache License, Version 2.0
00007 * (the "License"); you may not use this file except in compliance with
00008 * the License.  You may obtain a copy of the License at
00009 *
00010 *      http://www.apache.org/licenses/LICENSE-2.0
00011 *
00012 * Unless required by applicable law or agreed to in writing, software
00013 * distributed under the License is distributed on an "AS IS" BASIS,
00014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00015 * See the License for the specific language governing permissions and
00016 * limitations under the License.
00017 */
00018 
00019 #ifndef TRUST_STS_CLIENT
00020 #define TRUST_STS_CLIENT
00021 
00027 #include <stdio.h>
00028 #include <stdlib.h>
00029 #include <axiom.h>
00030 #include <axutil_utils.h>
00031 #include <axis2_client.h>
00032 #include <rp_includes.h>
00033 #include <rp_secpolicy.h>
00034 #include <neethi_policy.h>
00035 #include <neethi_util.h>
00036 #include <rampart_util.h>
00037 #include <trust_constants.h>
00038 #include <trust_util.h>
00039 #include <trust_policy_util.h>
00040 #include <trust_token.h>
00041 #include <rampart_config.h>
00042 #include <trust_rst.h>
00043 #include <trust_rstr.h>
00044 #include <trust_context.h>
00045 
00046 #ifdef __cplusplus
00047 extern "C"
00048 {
00049 #endif
00050 
00051     typedef struct trust_sts_client trust_sts_client_t;
00052 
00053     AXIS2_EXTERN trust_sts_client_t *AXIS2_CALL
00054     trust_sts_client_create(
00055         const axutil_env_t * env);
00056 
00057     AXIS2_EXTERN void AXIS2_CALL
00058     trust_sts_client_free(
00059         trust_sts_client_t * sts_client,
00060         const axutil_env_t * env);
00061 
00062     
00063     /*Send RST to the specified STS/IP. RST Node that is built from RST_Context should be passed*/
00064     AXIS2_EXTERN void AXIS2_CALL
00065     trust_sts_client_request_security_token(
00066         trust_sts_client_t * sts_client,
00067         const axutil_env_t * env,
00068         trust_context_t *trust_context);
00069 
00070 
00071     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00072     trust_sts_client_process_policies(
00073         trust_sts_client_t * sts_client,
00074         const axutil_env_t * env,
00075         neethi_policy_t * issuer_policy,
00076         neethi_policy_t * service_policy);
00077 
00078 
00079     AXIS2_EXTERN axis2_svc_client_t *AXIS2_CALL
00080     trust_sts_client_get_svc_client(
00081         trust_sts_client_t * sts_client,
00082         const axutil_env_t * env,
00083         axis2_char_t * action,
00084         axis2_char_t * address_version, 
00085         axis2_bool_t is_soap11);
00086 
00087     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00088     trust_sts_client_set_issuer_address(
00089         trust_sts_client_t * sts_client,
00090         const axutil_env_t * env,
00091         axis2_char_t * address);
00092 
00093     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00094     trust_sts_client_set_home_dir(
00095         trust_sts_client_t * sts_client,
00096         const axutil_env_t * env,
00097         axis2_char_t * directory);
00098 
00099     AXIS2_EXTERN oxs_buffer_t* AXIS2_CALL
00100     trust_sts_client_request_security_token_using_policy(
00101         trust_sts_client_t * sts_client,
00102         const axutil_env_t * env,
00103         trust_context_t *trust_context,
00104         neethi_policy_t *issuer_policy,
00105         axis2_char_t *address_version,
00106         axis2_bool_t is_soap11,
00107         rampart_context_t *rampart_context);
00108 
00109         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00110         trust_sts_client_set_issuer_policy_location(
00111         trust_sts_client_t * sts_client,
00112         const axutil_env_t * env,
00113         axis2_char_t * file_path);
00114 
00115         AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00116         trust_sts_client_get_issuer_policy_location(
00117         trust_sts_client_t * sts_client,
00118             const axutil_env_t * env);
00119 
00120         AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00121         trust_sts_client_get_service_policy_location(
00122             trust_sts_client_t * sts_client,
00123             const axutil_env_t * env);
00124 
00125         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00126         trust_sts_client_set_service_policy_location(
00127         trust_sts_client_t * sts_client,
00128         const axutil_env_t * env,
00129             axis2_char_t * file_path);
00130 
00131                 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00132         trust_sts_client_set_auth_info(
00133                 trust_sts_client_t * sts_client,
00134                 const axutil_env_t * env,
00135                 axis2_char_t *username,
00136                 axis2_char_t *password,
00137                 axis2_char_t * auth_type);
00138 
00139 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00140         trust_sts_client_set_issued_token(
00141                 trust_sts_client_t * sts_client,
00142                 const axutil_env_t * env,
00143                 rampart_saml_token_t *saml_token);
00144 
00145 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00146         trust_sts_client_set_issued_token_func(
00147                 trust_sts_client_t * sts_client,
00148                 const axutil_env_t * env,
00149                         issued_token_callback_func issue_token_func);
00150 
00151 
00152 
00153 #ifdef __cplusplus
00154 }
00155 #endif
00156 #endif                          /*TRUST_STS_CLIENT_H */

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/oxs__transforms__factory_8h.html0000644000076500007650000000503711202454500025027 0ustar shankarshankar Rampart/C: oxs_transforms_factory.h File Reference

oxs_transforms_factory.h File Reference

Produces transforms for OMXMLSecurity. More...

#include <axis2_defines.h>
#include <oxs_ctx.h>
#include <axutil_env.h>
#include <axiom_node.h>
#include <axiom_element.h>
#include <axutil_qname.h>
#include <oxs_transform.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN oxs_transform_t * oxs_transforms_factory_produce_transform (const axutil_env_t *env, axis2_char_t *id)


Detailed Description

Produces transforms for OMXMLSecurity.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/oxs__axis2__utils_8h-source.html0000644000076500007650000001155011202454500024643 0ustar shankarshankar Rampart/C: oxs_axis2_utils.h Source File

oxs_axis2_utils.h

Go to the documentation of this file.
00001 /*
00002  *   Copyright 2003-2004 The Apache Software Foundation.
00003  *
00004  *   Licensed under the Apache License, Version 2.0 (the "License");
00005  *   you may not use this file except in compliance with the License.
00006  *   You may obtain a copy of the License at
00007  *
00008  *       http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  *   Unless required by applicable law or agreed to in writing, software
00011  *   distributed under the License is distributed on an "AS IS" BASIS,
00012  *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  *   See the License for the specific language governing permissions and
00014  *   limitations under the License.
00015  */
00016 
00017 #include <axis2_util.h>
00018 #include <oxs_buffer.h>
00019 
00024 #ifndef OXS_AXIS_UTILS
00025 #define OXS_AXIS_UTILS
00026 
00027 #ifdef __cplusplus
00028 extern "C" {
00029 #endif
00030 
00035 #if 0
00036     /*Decoded buffer will be returned*/
00037     AXIS2_EXTERN oxs_buffer_ptr AXIS2_CALL  oxs_base64_decode(axutil_env_t *env,
00038             oxs_buffer_ptr coded_buf);
00039 
00040     /*Encoded input buffer will be returned*/
00041     AXIS2_EXTERN oxs_buffer_ptr AXIS2_CALL  oxs_base64_encode(axutil_env_t *env,
00042             oxs_buffer_ptr plain_buf);
00043 #endif
00044 
00046 #ifdef __cplusplus
00047 }
00048 #endif
00049 
00050 #endif    /* OXS_AXIS_UTILS */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/globals_func_0x72.html0000644000076500007650000010032511202454500022526 0ustar shankarshankar Rampart/C: Class Members
 

- r -


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/rampart__token__processor_8h-source.html0000644000076500007650000001627511202454500026462 0ustar shankarshankar Rampart/C: rampart_token_processor.h Source File

rampart_token_processor.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #include <axis2_util.h>
00019 #include <axis2_defines.h>
00020 #include <axutil_utils_defines.h>
00021 #include <axutil_env.h>
00022 #include <axiom_node.h>
00023 #include <oxs_x509_cert.h>
00024 
00036 #ifndef RAMPART_TOKEN_PROCESSOR_H
00037 #define RAMPART_TOKEN_PROCESSOR_H
00038 
00039 #ifdef __cplusplus
00040 extern "C" {
00041 #endif
00042     
00052     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00053     rampart_token_process_security_token_reference(
00054         const axutil_env_t *env,
00055         axiom_node_t *st_ref_node,
00056         axiom_node_t *scope_node,
00057         oxs_x509_cert_t *cert);
00058 
00067     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00068     rampart_token_process_direct_ref(
00069         const axutil_env_t *env,
00070         axiom_node_t *ref_node,
00071         axiom_node_t *scope_node,
00072         oxs_x509_cert_t *cert);
00073 
00081     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00082     rampart_token_process_embedded(
00083         const axutil_env_t *env,
00084         axiom_node_t *embed_node,
00085         oxs_x509_cert_t *cert);
00086 
00094     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00095     rampart_token_process_key_identifier(
00096         const axutil_env_t *env,
00097         axiom_node_t *ki_node,
00098         oxs_x509_cert_t *cert);
00099 
00107     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00108     rampart_token_process_x509_data(
00109         const axutil_env_t *env,
00110         axiom_node_t *x509_data_node,
00111         oxs_x509_cert_t *cert);
00112 
00113     /* @} */
00114 #ifdef __cplusplus
00115 }
00116 #endif
00117 
00118 #endif    /* !RAMPART_TOKEN_PROCESSOR_H */
00119 
00120 

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/openssl__pkcs12_8h-source.html0000644000076500007650000001525011202454500024214 0ustar shankarshankar Rampart/C: openssl_pkcs12.h Source File

openssl_pkcs12.h

Go to the documentation of this file.
00001 /*
00002  *   Copyright 2003-2004 The Apache Software Foundation.
00003  *
00004  *   Licensed under the Apache License, Version 2.0 (the "License");
00005  *   you may not use this file except in compliance with the License.
00006  *   You may obtain a copy of the License at
00007  *
00008  *       http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  *   Unless required by applicable law or agreed to in writing, software
00011  *   distributed under the License is distributed on an "AS IS" BASIS,
00012  *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  *   See the License for the specific language governing permissions and
00014  *   limitations under the License.
00015  */
00016 
00017 #include <openssl/rand.h>
00018 #include <openssl/evp.h>
00019 #include <openssl/pem.h>
00020 #include <openssl/bio.h>
00021 #include <openssl/rand.h>
00022 #include <openssl_constants.h>
00023 #include <openssl_pkey.h>
00024 #include <axis2_util.h>
00025 #include <openssl/pkcs12.h>
00026 
00031 #ifndef OPENSSL_PKCS12_H
00032 #define OPENSSL_PKCS12_H
00033 
00034 #ifdef __cplusplus
00035 extern "C" {
00036 #endif
00037 
00043     /*Load*/
00044     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00045     openssl_pkcs12_load(const axutil_env_t *env,
00046                         axis2_char_t *filename,
00047                         PKCS12 **p12);
00048     
00049     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00050     openssl_pkcs12_load_from_buffer(const axutil_env_t *env,
00051                         axis2_char_t *buffer,
00052                         PKCS12 **p12,
00053                         int len);
00054 
00055     /*Parse*/
00056     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00057     openssl_pkcs12_parse(const axutil_env_t *env,
00058                          axis2_char_t *password ,
00059                          PKCS12 *p12,
00060                          EVP_PKEY **prvkey,
00061                          X509 **cert,
00062                          STACK_OF(X509) **ca);
00063 
00064     /*Free*/
00065     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00066     openssl_pkcs12_free(const axutil_env_t *env,
00067                         PKCS12 *p12);
00068 
00069 
00071 #ifdef __cplusplus
00072 }
00073 #endif
00074 
00075 #endif    /* OPENSSL_PKCS12_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/oxs__key_8h-source.html0000644000076500007650000004347611202454500023042 0ustar shankarshankar Rampart/C: oxs_key.h Source File

oxs_key.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef OXS_KEY_H
00019 #define OXS_KEY_H
00020 
00021 
00032 #include <axis2_defines.h>
00033 #include <oxs_constants.h>
00034 #include <oxs_buffer.h>
00035 #include <axutil_env.h>
00036 #include <rp_algorithmsuite.h>
00037 
00038 #ifdef __cplusplus
00039 extern "C"
00040 {
00041 #endif
00042 
00043     /*Key usage is not specified yet*/
00044 #define OXS_KEY_USAGE_NONE              0
00045     /*Key is a session key */
00046 #define OXS_KEY_USAGE_SESSION           1
00047     /*Key is a signature session key*/
00048 #define OXS_KEY_USAGE_SIGNATURE_SESSION 2
00049     /*Key is a derived key */
00050 #define OXS_KEY_USAGE_DERIVED           3 
00051 
00052 #define OXS_KEY_DEFAULT_SIZE            64
00053 
00055     typedef struct oxs_key_t oxs_key_t;
00056 
00064     AXIS2_EXTERN unsigned char *AXIS2_CALL
00065     oxs_key_get_data(
00066         const oxs_key_t *key,
00067         const axutil_env_t *env);
00074     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00075     oxs_key_get_name(
00076         const oxs_key_t *key,
00077         const axutil_env_t *env);
00084     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00085     oxs_key_get_nonce(
00086         const oxs_key_t *key,
00087         const axutil_env_t *env);
00088 
00095     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00096     oxs_key_get_label(
00097         const oxs_key_t *key,
00098         const axutil_env_t *env);
00099 
00106     AXIS2_EXTERN int AXIS2_CALL
00107     oxs_key_get_size(
00108         const oxs_key_t *key,
00109         const axutil_env_t *env);
00116     AXIS2_EXTERN int AXIS2_CALL
00117     oxs_key_get_usage(
00118         const oxs_key_t *key,
00119         const axutil_env_t *env);
00120 
00127     AXIS2_EXTERN int AXIS2_CALL
00128     oxs_key_get_offset(
00129         const oxs_key_t *key,
00130         const axutil_env_t *env);
00131 
00138     AXIS2_EXTERN int AXIS2_CALL
00139     oxs_key_get_length(
00140         const oxs_key_t *key,
00141         const axutil_env_t *env);
00142 
00150     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00151     oxs_key_set_name(
00152         oxs_key_t *key,
00153         const axutil_env_t *env,
00154         axis2_char_t *name);
00155 
00156 
00164     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00165     oxs_key_set_usage(
00166         oxs_key_t *key,
00167         const axutil_env_t *env,
00168         int usage);
00169 
00170     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00171     oxs_key_set_nonce(
00172         oxs_key_t *key,
00173         const axutil_env_t *env,
00174         axis2_char_t *nonce); 
00175 
00176     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00177     oxs_key_set_label(
00178         oxs_key_t *key,
00179         const axutil_env_t *env,
00180         axis2_char_t *label); 
00181 
00182     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00183     oxs_key_set_offset(
00184         oxs_key_t *key,
00185         const axutil_env_t *env,
00186         int offset);
00187 
00188     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00189     oxs_key_set_length(
00190         oxs_key_t *key,
00191         const axutil_env_t *env,
00192         int length);
00199     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00200     oxs_key_free(
00201         oxs_key_t *key,
00202         const axutil_env_t *env
00203     );
00204 
00205     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00206     oxs_key_populate_with_buf(oxs_key_t *key,
00207                               const axutil_env_t *env,
00208                               oxs_buffer_t *buffer,
00209                               axis2_char_t *name,
00210                               int usage);
00211 
00222     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00223     oxs_key_populate(
00224         oxs_key_t *key,
00225         const axutil_env_t *env,
00226         unsigned char *data,
00227         axis2_char_t *name,
00228         int size,
00229         int usage);
00230 
00237     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00238     oxs_key_read_from_file(
00239         oxs_key_t *key,
00240         const axutil_env_t *env,
00241         axis2_char_t *file_name);
00242 
00249     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00250     oxs_key_for_algo(oxs_key_t *key,
00251                      const axutil_env_t *env,
00252                      rp_algorithmsuite_t *key_algo);
00253 
00254 
00255     AXIS2_EXTERN oxs_buffer_t *AXIS2_CALL
00256     oxs_key_get_buffer(const oxs_key_t *key,
00257                        const axutil_env_t *env);
00258 
00259     AXIS2_EXTERN oxs_key_t *AXIS2_CALL
00260     oxs_key_dup(oxs_key_t *key,
00261                 const axutil_env_t *env);
00262 
00263     AXIS2_EXTERN oxs_key_t *AXIS2_CALL
00264     oxs_key_create(const axutil_env_t *env);
00265 
00266     /* once the key_sha is given, ownership is assumed */
00267     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00268     oxs_key_set_key_sha(
00269         oxs_key_t *key,
00270         const axutil_env_t *env,
00271         axis2_char_t *key_sha);
00272     
00273     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00274     oxs_key_get_key_sha(
00275         const oxs_key_t *key,
00276         const axutil_env_t *env);
00277 
00278 
00279 #ifdef __cplusplus
00280 }
00281 #endif
00282 
00283 #endif                          /* OXS_KEY_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/rampart__replay__detector_8h-source.html0000644000076500007650000001701411202454500026420 0ustar shankarshankar Rampart/C: rampart_replay_detector.h Source File

rampart_replay_detector.h

Go to the documentation of this file.
00001 /*
00002 * Licensed to the Apache Software Foundation (ASF) under one or more
00003 * contributor license agreements.  See the NOTICE file distributed with
00004 * this work for additional information regarding copyright ownership.
00005 * The ASF licenses this file to You under the Apache License, Version 2.0
00006 * (the "License"); you may not use this file except in compliance with
00007 * the License.  You may obtain a copy of the License at
00008 *
00009 *      http://www.apache.org/licenses/LICENSE-2.0
00010 *
00011 * Unless required by applicable law or agreed to in writing, software
00012 * distributed under the License is distributed on an "AS IS" BASIS,
00013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014 * See the License for the specific language governing permissions and
00015 * limitations under the License.
00016 */
00017 
00018 #ifndef RAMPART_REPLAY_DETECTOR_H
00019 #define RAMPART_REPLAY_DETECTOR_H
00020 
00032 #include <axis2_defines.h>
00033 #include <axutil_env.h>
00034 #include <axis2_msg_ctx.h>
00035 #include <rampart_context.h>
00036 
00037 #ifdef __cplusplus
00038 extern "C"
00039 {
00040 #endif
00041 
00042     typedef struct rampart_replay_detector_ops rampart_replay_detector_ops_t;
00043     typedef struct rampart_replay_detector rampart_replay_detector_t;
00044 
00045     struct rampart_replay_detector_ops
00046     {
00056         axis2_status_t (AXIS2_CALL*
00057         is_replayed)(
00058             rampart_replay_detector_t *rrd,
00059             const axutil_env_t* env,
00060             axis2_msg_ctx_t *msg_ctx,
00061             rampart_context_t *rampart_context);
00062 
00069         axis2_status_t (AXIS2_CALL*
00070         free)(
00071             rampart_replay_detector_t *rrd,
00072             const axutil_env_t* env);
00073     };
00074 
00075     struct rampart_replay_detector
00076     {
00077         rampart_replay_detector_ops_t *ops;
00078                 axutil_param_t *param;
00079     };
00080 
00081     
00092     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00093     rampart_replay_detector_default(
00094         const axutil_env_t *env,
00095         axis2_msg_ctx_t* msg_ctx,
00096         rampart_context_t *rampart_context,
00097         void *user_params);
00098 
00099     /*************************** Function macros **********************************/
00100 #define RAMPART_REPLAY_DETECTOR_IS_REPLAYED(replay_detector, env, msg_ctx, rampart_context) \
00101       ((replay_detector)->ops->is_replayed(replay_detector, env, msg_ctx, rampart_context))
00102 
00103 #define RAMPART_REPLAY_DETECTOR_FREE(replay_detector, env) \
00104         ((replay_detector)->ops->free(replay_detector, env))
00105 
00107 #ifdef __cplusplus
00108 }
00109 #endif
00110 
00111 #endif /* RAMPART_REPLAY_DETECTOR_H */
00112 

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/rampart__sec__processed__result_8h.html0000644000076500007650000002566011202454500026321 0ustar shankarshankar Rampart/C: rampart_sec_processed_result.h File Reference

rampart_sec_processed_result.h File Reference

The module to keep the results after processing the message. More...

#include <axutil_utils_defines.h>
#include <axis2_defines.h>
#include <axutil_env.h>
#include <axis2_msg_ctx.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN axis2_status_t rampart_set_security_processed_result (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axis2_char_t *key, void *value)
AXIS2_EXTERN void * rampart_get_security_processed_result (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axis2_char_t *key)
AXIS2_EXTERN axis2_status_t rampart_set_security_processed_results_property (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN axutil_hash_t * rampart_get_all_security_processed_results (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN void rampart_print_security_processed_results_set (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx)


Detailed Description

The module to keep the results after processing the message.


Function Documentation

AXIS2_EXTERN axutil_hash_t* rampart_get_all_security_processed_results ( const axutil_env_t *  env,
axis2_msg_ctx_t *  msg_ctx 
)

Get the complete set of security processed results the environment the message context in which data are extracted

Returns:
complete set of security processed results.

AXIS2_EXTERN void* rampart_get_security_processed_result ( const axutil_env_t *  env,
axis2_msg_ctx_t *  msg_ctx,
axis2_char_t *  key 
)

Get a security processed result from a message context. A service may use this method to retirieve a particular result by the key the environment the message context in which data are extracted as specified in rampart_constants section SPR

Returns:
value of the security processed result corresponding to

AXIS2_EXTERN void rampart_print_security_processed_results_set ( const axutil_env_t *  env,
axis2_msg_ctx_t *  msg_ctx 
)

Prints all ke/val pairs in the security processed results. For debugging purposes the environment the message context in which data are extracted

Returns:
void

AXIS2_EXTERN axis2_status_t rampart_set_security_processed_result ( const axutil_env_t *  env,
axis2_msg_ctx_t *  msg_ctx,
axis2_char_t *  key,
void *  value 
)

Set a security processed result to the message context

Parameters:
env Environment structure
msg_ctx message context sttucture
key key of the security processed result
value value of the security processed result
Returns:
status of the operation

AXIS2_EXTERN axis2_status_t rampart_set_security_processed_results_property ( const axutil_env_t *  env,
axis2_msg_ctx_t *  msg_ctx 
)

Set a security processed result property to the message context the environment the message context in which data are stored/extracted

Returns:
status of the operation


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__oxs__utility.html0000644000076500007650000002026511202454500023422 0ustar shankarshankar Rampart/C: Utility

Utility
[OMXMLSecurity]


Functions

AXIS2_EXTERN axis2_char_t * oxs_util_generate_nonce (const axutil_env_t *env, int length)
AXIS2_EXTERN axis2_char_t * oxs_util_generate_id (const axutil_env_t *env, axis2_char_t *prefix)
AXIS2_EXTERN oxs_key_mgr_format_t oxs_util_get_format_by_file_extension (const axutil_env_t *env, axis2_char_t *file_name)
AXIS2_EXTERN axis2_char_t * oxs_util_get_newline_removed_string (const axutil_env_t *env, axis2_char_t *input)

Function Documentation

AXIS2_EXTERN axis2_char_t* oxs_util_generate_id ( const axutil_env_t *  env,
axis2_char_t *  prefix 
)

Generates an id for an element. Specially used in xml encryption and signature references. Caller must free memory

Parameters:
env pointer to environment struct
prefix the prefix of the id. For ex: EncDataID-1u343yrcarwqe
Returns:
the generated id

AXIS2_EXTERN axis2_char_t* oxs_util_generate_nonce ( const axutil_env_t *  env,
int  length 
)

Generate a nonce or a random text for a given length

Parameters:
env pointer to environment struct
length the length of the nonce
Returns:
the generated nonce

AXIS2_EXTERN oxs_key_mgr_format_t oxs_util_get_format_by_file_extension ( const axutil_env_t *  env,
axis2_char_t *  file_name 
)

Given the filename returns the format of the file. These formats are defined in asym_ctx.h

Parameters:
env pointer to environment struct
file_name the file name

AXIS2_EXTERN axis2_char_t* oxs_util_get_newline_removed_string ( const axutil_env_t *  env,
axis2_char_t *  input 
)

Given string and returns new lined removed string Caller MUST free memory

Parameters:
env pointer to environment struct
input a pointer to the string which has
s. return the newline removed buffer.


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/rampart__context_8h.html0000644000076500007650000016642211202454500023272 0ustar shankarshankar Rampart/C: rampart_context.h File Reference

rampart_context.h File Reference

The Rampart Context, in which configurations are stored. More...

#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 <axis2_key_type.h>
#include <axis2_msg_ctx.h>
#include <oxs_key.h>
#include <axutil_array_list.h>
#include <rampart_saml_token.h>
#include <rampart_issued_token.h>
#include <oxs_key_mgr.h>

Go to the source code of this file.

Typedefs

typedef struct rampart_context_t rampart_context_t
typedef axis2_char_t *(* password_callback_fn )(const axutil_env_t *env, const axis2_char_t *username, void *user_params)
typedef axis2_status_t(* rampart_is_replayed_fn )(const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, void *user_params)
typedef
rampart_authn_provider_status_t(* 
auth_password_func )(const axutil_env_t *env, const axis2_char_t *username, const axis2_char_t *password, void *ctx)
typedef
rampart_authn_provider_status_t(* 
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, void *ctx)
typedef axis2_status_t(* store_security_context_token_fn )(const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axis2_char_t *sct_global_id, axis2_char_t *sct_local_id, void *sct, void *user_params)
typedef void *(* obtain_security_context_token_fn )(const axutil_env_t *env, axis2_bool_t is_encryption, axis2_msg_ctx_t *msg_ctx, axis2_char_t *sct_id, int sct_id_type, void *user_params)
typedef axis2_status_t(* delete_security_context_token_fn )(const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axis2_char_t *sct_id, int sct_id_type, void *user_params)
typedef axis2_status_t(* validate_security_context_token_fn )(const axutil_env_t *env, axiom_node_t *sct_node, axis2_msg_ctx_t *msg_ctx, void *user_params)

Functions

AXIS2_EXTERN rampart_context_t * rampart_context_create (const axutil_env_t *env)
AXIS2_EXTERN void rampart_context_free (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_policy_node (rampart_context_t *rampart_context, const axutil_env_t *env, axiom_node_t *policy_node)
AXIS2_EXTERN axis2_status_t rampart_context_set_prv_key (rampart_context_t *rampart_context, const axutil_env_t *env, void *prv_key)
AXIS2_EXTERN axis2_status_t 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 rampart_context_set_certificate (rampart_context_t *rampart_context, const axutil_env_t *env, void *certificate)
AXIS2_EXTERN axis2_status_t 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 rampart_context_set_receiver_certificate (rampart_context_t *rampart_context, const axutil_env_t *env, void *receiver_certificate)
AXIS2_EXTERN axis2_status_t 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 rampart_context_set_user (rampart_context_t *rampart_context, const axutil_env_t *env, axis2_char_t *user)
AXIS2_EXTERN axis2_status_t rampart_context_set_password (rampart_context_t *rampart_context, const axutil_env_t *env, axis2_char_t *password)
AXIS2_EXTERN axis2_status_t 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 rampart_context_set_pwcb_function (rampart_context_t *rampart_context, const axutil_env_t *env, password_callback_fn pwcb_function, void *user_params)
AXIS2_EXTERN axis2_status_t rampart_context_set_replay_detect_function (rampart_context_t *rampart_context, const axutil_env_t *env, rampart_is_replayed_fn is_replayed_function, void *user_params)
AXIS2_EXTERN void * rampart_context_get_rd_user_params (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t 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 rampart_context_set_ttl (rampart_context_t *rampart_context, const axutil_env_t *env, int ttl)
AXIS2_EXTERN axis2_status_t rampart_context_set_need_millisecond_precision (rampart_context_t *rampart_context, const axutil_env_t *env, axis2_bool_t need_millisecond_precision)
AXIS2_EXTERN axis2_status_t rampart_context_set_clock_skew_buffer (rampart_context_t *rampart_context, const axutil_env_t *env, int skew_buffer)
AXIS2_EXTERN axis2_status_t 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 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 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 rampart_context_add_key (rampart_context_t *rampart_context, const axutil_env_t *env, oxs_key_t *key)
AXIS2_EXTERN axiom_node_t * rampart_context_get_policy_node (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN void * rampart_context_get_prv_key (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_key_type_t rampart_context_get_prv_key_type (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN void * rampart_context_get_certificate (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_key_type_t rampart_context_get_certificate_type (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN void * rampart_context_get_receiver_certificate (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_key_type_t rampart_context_get_receiver_certificate_type (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_user (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_password (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_prv_key_password (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN password_callback_fn rampart_context_get_pwcb_function (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN rampart_is_replayed_fn rampart_context_get_replay_detect_function (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN void * rampart_context_get_pwcb_user_params (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN int rampart_context_get_ttl (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t rampart_context_get_need_millisecond_precision (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN int rampart_context_get_clock_skew_buffer (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_rd_val (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_password_type (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axutil_array_list_t * rampart_context_get_keys (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN oxs_key_trampart_context_get_key (rampart_context_t *rampart_context, const axutil_env_t *env, axis2_char_t *key_id)
AXIS2_EXTERN oxs_key_trampart_context_get_key_using_hash (rampart_context_t *rampart_context, const axutil_env_t *env, axis2_char_t *hash)
AXIS2_EXTERN rp_secpolicy_t * rampart_context_get_secpolicy (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_secpolicy (rampart_context_t *rampart_context, const axutil_env_t *env, rp_secpolicy_t *secpolicy)
AXIS2_EXTERN rampart_callback_t * rampart_context_get_password_callback (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t 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 rampart_context_get_auth_password_function (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t 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 rampart_context_get_auth_digest_function (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t 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 * 
rampart_context_get_authn_provider (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN void * rampart_context_get_replay_detector (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN void * rampart_context_get_sct_provider (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t 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 rampart_context_set_replay_detector (rampart_context_t *rampart_context, const axutil_env_t *env, void *replay_detector)
AXIS2_EXTERN axis2_status_t rampart_context_set_sct_provider (rampart_context_t *rampart_context, const axutil_env_t *env, void *sct_module)
AXIS2_EXTERN axis2_bool_t rampart_context_get_require_timestamp (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t rampart_context_get_require_ut (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN rp_property_type_t rampart_context_get_binding_type (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t rampart_context_is_include_timestamp (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t rampart_context_is_include_username_token (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t rampart_context_is_include_supporting_token (rampart_context_t *rampart_context, const axutil_env_t *env, axis2_bool_t server_side, axis2_bool_t is_inpath, rp_property_type_t token_type)
AXIS2_EXTERN axis2_bool_t rampart_context_is_include_protection_saml_token (rampart_context_t *rampart_context, axis2_bool_t server_side, axis2_bool_t is_inpath, const axutil_env_t *env)
AXIS2_EXTERN rp_property_t * rampart_context_get_supporting_token (rampart_context_t *rampart_context, const axutil_env_t *env, rp_property_type_t token_type)
AXIS2_EXTERN axis2_char_t * rampart_context_get_password_callback_class (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_authn_module_name (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_replay_detector_name (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_sct_provider_name (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t rampart_context_is_encrypt_before_sign (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t rampart_context_is_encrypt_signature (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t 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 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 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 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 * 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 rp_property_t * rampart_context_get_endorsing_token (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t rampart_context_check_is_derived_keys (const axutil_env_t *env, rp_property_t *token)
AXIS2_EXTERN axis2_char_t * rampart_context_get_derived_key_version (const axutil_env_t *env, rp_property_t *token)
AXIS2_EXTERN axis2_char_t * rampart_context_get_enc_sym_algo (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_enc_asym_algo (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_asym_sig_algo (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_digest_mtd (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_encryption_user (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t 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 * rampart_context_get_key_identifier (rampart_context_t *rampart_context, rp_property_t *token, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t rampart_context_is_token_type_supported (rp_property_type_t token_type, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t 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 * rampart_context_get_layout (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t rampart_context_check_whether_to_encrypt (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t rampart_context_check_whether_to_sign (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_user_from_file (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_password_type_from_file (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_certificate_file (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_receiver_certificate_file (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_private_key_file (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_ttl_from_file (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_clock_skew_buffer_from_file (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_need_millisecond_precision_from_file (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_rd_val_from_file (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN oxs_key_trampart_context_get_encryption_session_key (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_encryption_session_key (rampart_context_t *rampart_context, const axutil_env_t *env, oxs_key_t *session_key)
AXIS2_EXTERN oxs_key_trampart_context_get_signature_session_key (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_signature_session_key (rampart_context_t *rampart_context, const axutil_env_t *env, oxs_key_t *session_key)
AXIS2_EXTERN axis2_status_t rampart_context_increment_ref (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t rampart_context_is_sig_confirmation_reqd (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_encryption_token_id (rampart_context_t *rampart_context, const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN axis2_char_t * rampart_context_get_signature_token_id (rampart_context_t *rampart_context, const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN axis2_status_t rampart_context_set_encryption_token_id (rampart_context_t *rampart_context, const axutil_env_t *env, axis2_char_t *sct_id, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN axis2_status_t rampart_context_set_signature_token_id (rampart_context_t *rampart_context, const axutil_env_t *env, axis2_char_t *sct_id, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN rampart_saml_token_t * rampart_context_get_saml_token (rampart_context_t *rampart_context, const axutil_env_t *env, rampart_st_type_t token_type)
AXIS2_EXTERN axis2_status_t rampart_context_add_saml_token (rampart_context_t *rampart_context, const axutil_env_t *env, rampart_saml_token_t *token)
AXIS2_EXTERN axis2_status_t rampart_context_set_saml_tokens (rampart_context_t *rampart_context, const axutil_env_t *env, axutil_array_list_t *tokens)
AXIS2_EXTERN
issued_token_callback_func 
rampart_context_get_issued_token_aquire_function (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_issued_token_aquire_function (rampart_context_t *rampart_context, const axutil_env_t *env, issued_token_callback_func issued_token_aquire)
AXIS2_EXTERN int rampart_context_get_encryption_derived_key_len (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN int rampart_context_get_signature_derived_key_len (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN rp_algorithmsuite_t * rampart_context_get_algorithmsuite (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN oxs_key_mgr_t * rampart_context_get_key_mgr (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_key_mgr (rampart_context_t *rampart_context, const axutil_env_t *env, oxs_key_mgr_t *key_mgr)
AXIS2_EXTERN axis2_char_t * rampart_context_get_pkcs12_file_name (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_custom_tokens (rampart_context_t *rampart_context, const axutil_env_t *env, axutil_array_list_t *tokens)
AXIS2_EXTERN axutil_array_list_t * rampart_context_get_custom_tokens (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t rampart_context_get_found_cert_in_shp (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_found_cert_in_shp (rampart_context_t *rampart_context, const axutil_env_t *env, axis2_bool_t found_cert_in_shp)
AXIS2_EXTERN oxs_x509_cert_t * rampart_context_get_receiver_cert_found_in_shp (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_receiver_cert_found_in_shp (rampart_context_t *rampart_context, const axutil_env_t *env, oxs_x509_cert_t *cert)
AXIS2_EXTERN void * rampart_context_get_key_store_buff (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_key_store_buff (rampart_context_t *rampart_context, const axutil_env_t *env, void *key_store_buf, int length)
AXIS2_EXTERN axis2_status_t rampart_context_set_store_security_context_token_fn (rampart_context_t *rampart_context, const axutil_env_t *env, store_security_context_token_fn store_fn)
AXIS2_EXTERN axis2_status_t rampart_context_set_obtain_security_context_token_fn (rampart_context_t *rampart_context, const axutil_env_t *env, obtain_security_context_token_fn get_fn)
AXIS2_EXTERN axis2_status_t rampart_context_set_delete_security_context_token_fn (rampart_context_t *rampart_context, const axutil_env_t *env, delete_security_context_token_fn delete_fn)
AXIS2_EXTERN axis2_status_t rampart_context_set_security_context_token_user_params (rampart_context_t *rampart_context, const axutil_env_t *env, void *user_params)
AXIS2_EXTERN axis2_status_t rampart_context_set_validate_security_context_token_fn (rampart_context_t *rampart_context, const axutil_env_t *env, validate_security_context_token_fn validate_fn)
AXIS2_EXTERN
store_security_context_token_fn 
rampart_context_get_store_security_context_token_fn (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN
obtain_security_context_token_fn 
rampart_context_get_obtain_security_context_token_fn (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN
delete_security_context_token_fn 
rampart_context_get_delete_security_context_token_fn (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN void * rampart_context_get_security_context_token_user_params (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN
validate_security_context_token_fn 
rampart_context_get_validate_security_context_token_fn (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t rampart_context_is_different_session_key_for_enc_and_sign (const axutil_env_t *env, rampart_context_t *rampart_context)
AXIS2_EXTERN axis2_status_t rampart_context_set_receiver_certificate_file (rampart_context_t *rampart_context, const axutil_env_t *env, axis2_char_t *receiver_certificate_file)


Detailed Description

The Rampart Context, in which configurations are stored.


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/oxs__tokens_8h.html0000644000076500007650000006107711202454500022254 0ustar shankarshankar Rampart/C: oxs_tokens.h File Reference

oxs_tokens.h File Reference

includes all tokens of OMXMLSecurity. More...

#include <axis2_util.h>
#include <stdio.h>
#include <axutil_qname.h>
#include <axis2_defines.h>
#include <axutil_env.h>
#include <axiom_node.h>
#include <axiom_element.h>
#include <axiom_attribute.h>
#include <oxs_constants.h>
#include <rampart_constants.h>
#include <oxs_utility.h>
#include <oxs_axiom.h>
#include <axutil_array_list.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN axiom_node_t * oxs_token_build_binary_security_token_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *id, axis2_char_t *encoding_type, axis2_char_t *value_type, axis2_char_t *data)
AXIS2_EXTERN axiom_node_t * oxs_token_build_c14n_method_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *algorithm)
AXIS2_EXTERN axis2_char_t * oxs_token_get_c14n_method (const axutil_env_t *env, axiom_node_t *c14n_mtd_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_cipher_data_element (const axutil_env_t *env, axiom_node_t *parent)
AXIS2_EXTERN axis2_char_t * oxs_token_get_cipher_value_from_cipher_data (const axutil_env_t *env, axiom_node_t *cd_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_cipher_value_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *cipher_val)
AXIS2_EXTERN axis2_char_t * oxs_token_get_cipher_value (const axutil_env_t *env, axiom_node_t *cv_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_data_reference_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *data_ref)
AXIS2_EXTERN axis2_char_t * oxs_token_get_data_reference (const axutil_env_t *env, axiom_node_t *data_ref_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_digest_method_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *algorithm)
AXIS2_EXTERN axis2_char_t * oxs_token_get_digest_method (const axutil_env_t *env, axiom_node_t *enc_mtd_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_digest_value_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *digest_val)
AXIS2_EXTERN axis2_char_t * oxs_token_get_digest_value (const axutil_env_t *env, axiom_node_t *sv_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_ds_reference_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *id, axis2_char_t *uri, axis2_char_t *type)
AXIS2_EXTERN axis2_char_t * oxs_token_get_ds_reference (const axutil_env_t *env, axiom_node_t *ref_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_embedded_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *id)
AXIS2_EXTERN axis2_char_t * oxs_token_get_embedded_id (const axutil_env_t *env, axiom_node_t *embedded_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_encrypted_data_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *type_attribute, axis2_char_t *id)
AXIS2_EXTERN axiom_node_t * oxs_token_build_encrypted_key_element (const axutil_env_t *env, axiom_node_t *parent)
AXIS2_EXTERN axiom_node_t * oxs_token_get_encrypted_key_node (const axutil_env_t *env, axiom_node_t *parent)
AXIS2_EXTERN axiom_node_t * oxs_token_build_encryption_method_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *algorithm)
AXIS2_EXTERN axis2_char_t * oxs_token_get_encryption_method (const axutil_env_t *env, axiom_node_t *enc_mtd_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_key_identifier_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *encoding_type, axis2_char_t *value_type, axis2_char_t *value)
AXIS2_EXTERN axiom_node_t * oxs_token_build_key_info_element (const axutil_env_t *env, axiom_node_t *parent)
AXIS2_EXTERN axiom_node_t * oxs_token_build_key_name_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *key_name_val)
AXIS2_EXTERN axiom_node_t * oxs_token_build_reference_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *ref, axis2_char_t *value_type)
AXIS2_EXTERN axis2_char_t * oxs_token_get_reference (const axutil_env_t *env, axiom_node_t *ref_node)
AXIS2_EXTERN axis2_char_t * oxs_token_get_reference_value_type (const axutil_env_t *env, axiom_node_t *ref_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_reference_list_element (const axutil_env_t *env, axiom_node_t *parent)
AXIS2_EXTERN axiom_node_t * oxs_token_build_data_reference_list (const axutil_env_t *env, axiom_node_t *parent, axutil_array_list_t *id_list)
AXIS2_EXTERN axutil_array_list_t * oxs_token_get_reference_list_data (const axutil_env_t *env, axiom_node_t *ref_list_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_security_token_reference_element (const axutil_env_t *env, axiom_node_t *parent)
AXIS2_EXTERN axiom_node_t * oxs_token_build_signature_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *id)
AXIS2_EXTERN axiom_node_t * oxs_token_build_enc_header_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *id)
AXIS2_EXTERN axiom_node_t * oxs_token_build_signature_method_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *algorithm)
AXIS2_EXTERN axis2_char_t * oxs_token_get_signature_method (const axutil_env_t *env, axiom_node_t *enc_mtd_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_signature_value_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *signature_val)
AXIS2_EXTERN axis2_char_t * oxs_token_get_signature_value (const axutil_env_t *env, axiom_node_t *sv_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_signed_info_element (const axutil_env_t *env, axiom_node_t *parent)
AXIS2_EXTERN axiom_node_t * oxs_token_build_transform_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *algorithm)
AXIS2_EXTERN axis2_char_t * oxs_token_get_transform (const axutil_env_t *env, axiom_node_t *transform_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_transforms_element (const axutil_env_t *env, axiom_node_t *parent)
AXIS2_EXTERN axiom_node_t * oxs_token_build_x509_certificate_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *cert_data)
AXIS2_EXTERN axis2_char_t * oxs_token_get_x509_certificate (const axutil_env_t *env, axiom_node_t *sv_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_x509_data_element (const axutil_env_t *env, axiom_node_t *parent)
AXIS2_EXTERN axiom_node_t * oxs_token_build_issuer_name_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *value)
AXIS2_EXTERN axis2_char_t * oxs_token_get_issuer_name (const axutil_env_t *env, axiom_node_t *issuer_name_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_x509_issuer_serial_element (const axutil_env_t *env, axiom_node_t *parent)
AXIS2_EXTERN axiom_node_t * oxs_token_build_x509_issuer_serial_with_data (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *issuer_name, axis2_char_t *serial_number)
AXIS2_EXTERN axiom_node_t * oxs_token_build_serial_number_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *value)
AXIS2_EXTERN axis2_char_t * oxs_token_get_serial_number (const axutil_env_t *env, axiom_node_t *serial_number_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_signature_confirmation_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *id, axis2_char_t *val)
AXIS2_EXTERN axis2_char_t * oxs_token_get_signature_confirmation_value (const axutil_env_t *env, axiom_node_t *signature_confirmation_node)
AXIS2_EXTERN axis2_char_t * oxs_token_get_signature_confirmation_id (const axutil_env_t *env, axiom_node_t *signature_confirmation_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_derived_key_token_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *id, axis2_char_t *algo, axis2_char_t *wsc_ns_uri)
AXIS2_EXTERN axiom_node_t * oxs_token_build_length_element (const axutil_env_t *env, axiom_node_t *parent, int length, axis2_char_t *wsc_ns_uri)
AXIS2_EXTERN int oxs_token_get_length_value (const axutil_env_t *env, axiom_node_t *length_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_offset_element (const axutil_env_t *env, axiom_node_t *parent, int offset, axis2_char_t *wsc_ns_uri)
AXIS2_EXTERN int oxs_token_get_offset_value (const axutil_env_t *env, axiom_node_t *offset_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_nonce_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *nonce_val, axis2_char_t *wsc_ns_uri)
AXIS2_EXTERN axis2_char_t * oxs_token_get_nonce_value (const axutil_env_t *env, axiom_node_t *nonce_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_label_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *label, axis2_char_t *wsc_ns_uri)
AXIS2_EXTERN axis2_char_t * oxs_token_get_label_value (const axutil_env_t *env, axiom_node_t *label_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_properties_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *properties_val, axis2_char_t *wsc_ns_uri)
AXIS2_EXTERN axis2_char_t * oxs_token_get_properties_value (const axutil_env_t *env, axiom_node_t *properties_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_generation_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *generation_val, axis2_char_t *wsc_ns_uri)
AXIS2_EXTERN axis2_char_t * oxs_token_get_generation_value (const axutil_env_t *env, axiom_node_t *generation_node)


Detailed Description

includes all tokens of OMXMLSecurity.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/oxs__transforms__factory_8h-source.html0000644000076500007650000001253011202454500026321 0ustar shankarshankar Rampart/C: oxs_transforms_factory.h Source File

oxs_transforms_factory.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef OXS_TRANSFORMS_FACTORY_H
00019 #define OXS_TRANSFORMS_FACTORY_H
00020 
00021 
00027 #include <axis2_defines.h>
00028 #include <oxs_ctx.h>
00029 #include <axutil_env.h>
00030 #include <axiom_node.h>
00031 #include <axiom_element.h>
00032 #include <axutil_qname.h>
00033 #include <oxs_transform.h>
00034 
00035 #ifdef __cplusplus
00036 extern "C"
00037 {
00038 #endif
00039 
00040     AXIS2_EXTERN oxs_transform_t *AXIS2_CALL
00041     oxs_transforms_factory_produce_transform(const axutil_env_t *env,
00042             axis2_char_t *id);
00043 
00044 
00046 #ifdef __cplusplus
00047 }
00048 #endif
00049 
00050 #endif                          /* OXS_TRANSFORMS_FACTORY_H */

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__openssl__sign.html0000644000076500007650000001355411202454500023534 0ustar shankarshankar Rampart/C: OpenSSL Signatue

OpenSSL Signatue
[OpenSSL wrapper]


Functions

AXIS2_EXTERN int openssl_sig_sign (const axutil_env_t *env, openssl_pkey_t *prvkey, oxs_buffer_t *input_buf, oxs_buffer_t *output_buf)
AXIS2_EXTERN axis2_status_t openssl_sig_verify (const axutil_env_t *env, openssl_pkey_t *pubkey, oxs_buffer_t *input_buf, oxs_buffer_t *sig_buf)

Function Documentation

AXIS2_EXTERN int openssl_sig_sign ( const axutil_env_t *  env,
openssl_pkey_t prvkey,
oxs_buffer_t input_buf,
oxs_buffer_t output_buf 
)

Signs a content a using the private key The result would be placed in the

AXIS2_EXTERN axis2_status_t openssl_sig_verify ( const axutil_env_t *  env,
openssl_pkey_t pubkey,
oxs_buffer_t input_buf,
oxs_buffer_t sig_buf 
)

Verifies a signature placed in with the content placed in the using the public key


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/oxs__encryption_8h-source.html0000644000076500007650000001465611202454500024442 0ustar shankarshankar Rampart/C: oxs_encryption.h Source File

oxs_encryption.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef OXS_ENCRYPTION_H
00019 #define OXS_ENCRYPTION_H
00020 
00021 
00032 #include <axis2_defines.h>
00033 #include <oxs_ctx.h>
00034 #include <oxs_asym_ctx.h>
00035 #include <axutil_env.h>
00036 #include <axiom_node.h>
00037 #include <axiom_element.h>
00038 #include <axutil_qname.h>
00039 
00040 #ifdef __cplusplus
00041 extern "C"
00042 {
00043 #endif
00044 
00055     AXIS2_EXTERN  axis2_status_t AXIS2_CALL
00056     oxs_encryption_symmetric_crypt(const axutil_env_t *env,
00057                                    oxs_ctx_t * enc_ctx,
00058                                    oxs_buffer_t *input,
00059                                    oxs_buffer_t *result);
00060 
00072     AXIS2_EXTERN  axis2_status_t AXIS2_CALL
00073     oxs_encryption_asymmetric_crypt(const axutil_env_t *env,
00074                                     oxs_asym_ctx_t * asym_ctx,
00075                                     oxs_buffer_t *input,
00076                                     oxs_buffer_t *result);
00077 
00079 #ifdef __cplusplus
00080 }
00081 #endif
00082 
00083 #endif                          /* OXS_ENCRYPTION_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/trust__constants_8h-source.html0000644000076500007650000005631411202454500024631 0ustar shankarshankar Rampart/C: trust_constants.h Source File

trust_constants.h

Go to the documentation of this file.
00001 /*
00002 * Licensed to the Apache Software Foundation (ASF) under one or more
00003 * contributor license agreements.  See the NOTICE file distributed with
00004 * this work for additional information regarding copyright ownership.
00005 * The ASF licenses this file to You under the Apache License, Version 2.0
00006 * (the "License"); you may not use this file except in compliance with
00007 * the License.  You may obtain a copy of the License at
00008 *
00009 *      http://www.apache.org/licenses/LICENSE-2.0
00010 *
00011 * Unless required by applicable law or agreed to in writing, software
00012 * distributed under the License is distributed on an "AS IS" BASIS,
00013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014 * See the License for the specific language governing permissions and
00015 * limitations under the License.
00016 */
00017 
00018 
00019 #ifndef TRUST_CONSTANTS_H
00020 #define TRUST_CONSTANTS_H
00021 
00022 
00023 #include <axutil_utils.h>
00029 #ifdef __cplusplus
00030 extern "C"
00031 {
00032 #endif
00033 
00034 
00035 
00036         /*Trust XML Element names */
00037 #define TRUST_RST_CONTEXT               "Context"
00038 #define TRUST_TOKEN_TYPE                "TokenType"
00039 #define TRUST_REQUEST_TYPE              "RequestType"
00040 #define TRUST_APPLIES_TO                "AppliesTo"
00041 
00042 #define TRUST_CLAIMS                    "Claims"
00043 #define TRUST_CLAIMS_DIALECT    "Dialect"
00044 
00045 #define TRUST_ENTROPY                   "Entropy"
00046 #define TRUST_BINARY_SECRET             "BinarySecret"
00047 
00048 #define TRUST_LIFE_TIME                 "LifeTime"
00049 #define TRUST_LIFE_TIME_CREATED         "Created"
00050 #define TRUST_LIFE_TIME_EXPIRES         "Expires"
00051 
00052 #define TRUST_REQUEST_SECURITY_TOKEN            "RequestSecurityToken"
00053 #define TRUST_REQUESTED_SECURITY_TOKEN          "RequestedSecurityToken"
00054 #define TRUST_REQUEST_SECURITY_TOKEN_RESPONSE   "RequestSecurityTokenResponse"
00055 #define TRUST_REQUESTED_PROOF_TOKEN             "RequestedProofToken"
00056 #define TRUST_REQUEST_SECURITY_TOKEN_RESPONSE_COLLECTION "RequestSecurityTokenResponseCollection"
00057 #define TRUST_REQUESTED_TOKEN_CANCELED          "RequestedTokenCancelled"
00058 #define TRUST_COMPUTED_KEY                      "ComputedKey"
00059 #define TRUST_REQUESTED_ATTACHED_REFERENCE      "RequestedAttachedReference"
00060 #define TRUST_REQUESTED_UNATTACHED_REFERENCE    "RequestedUnattachedReference"
00061 #define TRUST_SECURITY_TOKEN_REFERENCE          "SecurityTokenReference"
00062 #define TRUST_ENCRYPTED_DATA                    "EncryptedData"
00063 #define TRUST_REQUESTED_TOKEN_CANCELED          "RequestedTokenCancelled"
00064 #define TRUST_CANCEL_TARGET                     "CancelTarget"
00065 #define TRUST_URI                               "URI"
00066 #define TRUST_EPR                   "EndpointReference"
00067 #define TRUST_EPR_ADDRESS                       "Address"
00068 #define TRUST_STR_REFERENCE                     "Reference"
00069 
00070         /* Renewal Bindings */
00071 #define TRUST_RENEW_TARGET          "RenewTarget"
00072 #define TRUST_ALLOW_POSTDATING      "AllowPostdating"
00073 #define TRUST_RENEWING              "Renewing"
00074 
00075 #define TRUST_RENEW_ALLOW_ATTR      "Allow"
00076 #define TRUST_RENEW_OK_ATTR         "OK"
00077 
00078 #define TRUST_VALIDATION_STATUS         "Status"
00079 #define TRUST_VALIDATION_CODE           "Code"
00080 #define TRUST_VALIDATION_REASON         "Reason"
00081     
00082 #define TRUST_CANCEL_TARGET                     "CancelTarget"
00083 
00084     
00085 #define ATTR_TYPE                   "Type"
00086 #define TRUST_BIN_SEC_TYPE_NONCE        "/Nonce"
00087 
00088         /* Request Types */
00089 #define TRUST_REQ_TYPE_ISSUE            "/Issue"
00090 #define TRUST_REQ_TYPE_VALIDATE         "/Validate"
00091 #define TRUST_REQ_TYPE_RENEW            "/Renew"
00092 #define TRUST_REQ_TYPE_CANCEL           "/Cancel"
00093     
00094 #define TRUST_RST_ACTION_ISSUE          "/RST/Issue" 
00095 #define TRUST_RST_ACTION_VALIDATE       "/RST/Validate"
00096 #define TRUST_RST_ACTION_RENEW          "/RST/Renew"
00097 #define TRUST_RST_ACTION_CANCEL         "/RST/Cancel"
00098 #define TRUST_RST_ACTION_SCT            "/RST/SCT"
00099 #define TRUST_RST_ACTION_CANCEL_SCT     "/RST/SCT/Cancel"
00100     
00101 #define TRUST_KEY_TYPE_SYMM_KEY         "/SymmetricKey"
00102 #define TRUST_KEY_TYPE_PUBLIC_KEY       "/PublicKey"
00103 #define TRUST_KEY_TYPE_BEARER           "/Bearer"
00104 
00105 
00106     /*Key and Token Parameter Extensions*/
00107 #define TRUST_AUTHENTICATION_TYPE       "AuthenticationType"
00108 #define TRUST_KEY_TYPE                  "KeyType"
00109 #define TRUST_KEY_SIZE                  "KeySize"
00110 #define TRUST_SIGNATURE_ALGO            "SignatureAlgorithm"
00111 #define TRUST_ENCRYPTION_ALGO           "EncryptionAlgorithm"
00112 #define TRUST_CANONICAL_ALGO            "CanonicalizationAlgorithm"
00113 #define TRUST_COMPUTED_KEY_ALGO         "ComputedKeyAlgorithm"
00114 #define TRUST_DESIRED_ENCRYPTION         "Encryption"
00115 #define TRUST_PROOF_ENCRYPTION           "ProofEncryption"
00116 #define TRUST_USE_KEY                    "UseKey"
00117 #define TRUST_SIGN_WITH                  "SignWith"
00118 #define TRUST_ENCRYPT_WITH               "EncryptWith"
00119 
00120 #define TRUST_ATTR_USE_KEY_SIG          "Sig"
00121 
00122 
00123 #define TRUST_DEFAULT_KEY_SIZE 256
00124 
00125         /* Trust Namespace URIs and Namespace prefix */
00126 #define TRUST_S11        "S11"
00127 #define TRUST_S11_XMLNS  "http://schemas.xmlsoap.org/soap/envelope/"
00128 #define TRUST_S12        "S12"
00129 #define TRUST_S12_XMLNS  "http://www.w3.org/2003/05/soap-envelope"
00130 #define TRUST_WSU        "wsu"
00131 #define TRUST_WSU_XMLNS  "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
00132 #define TRUST_WSSE       "wsse"
00133 #define TRUST_WSSE_XMLNS "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
00134 #define TRUST_WST        "wst"
00135 #define TRUST_DS         "ds"
00136 #define TRUST_DS_XMLNS   "http://www.w3.org/2000/09/xmldsig#"
00137 #define TRUST_XENC       "xenc"
00138 #define TRUST_XENC_XMLNS "http://www.w3.org/2001/04/xmlenc#"
00139 #define TRUST_WSP        "wsp"
00140 #define TRUST_WSP_XMLNS  "http://schemas.xmlsoap.org/ws/2004/09/policy"
00141 #define TRUST_WSA        "wsa"
00142 #define TRUST_WSA_XMLNS  "http://schemas.xmlsoap.org/ws/2004/08/addressing"
00143 #define TRUST_XS         "xs"
00144 #define TRUST_XS_XMLNS   "http://www.w3.org/2001/XMLSchema"
00145 
00146 #define SECCONV_200502_REQUEST_ISSUE_ACTION "http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT"
00147 #define SECCONV_200502_REPLY_ISSUE_ACTION "http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/SCT"
00148 #define SECCONV_200502_REQUEST_AMEND_ACTION "http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT/Amend"
00149 #define SECCONV_200502_REPLY_AMEND_ACTION "http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/SCT/Amend"
00150 #define SECCONV_200502_REQUEST_RENEW_ACTION "http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT/Renew"
00151 #define SECCONV_200502_REPLY_RENEW_ACTION "http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/SCT/Renew"
00152 #define SECCONV_200502_REQUEST_CANCEL_ACTION "http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT/Cancel"
00153 #define SECCONV_200502_REPLY_CANCEL_ACTION "http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/SCT/Cancel"
00154 #define SECCONV_200512_REQUEST_ISSUE_ACTION "http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/SCT"
00155 #define SECCONV_200512_REPLY_ISSUE_ACTION "http://docs.oasis-open.org/ws-sx/ws-trust/200512/RSTR/SCT"
00156 #define SECCONV_200512_REQUEST_AMEND_ACTION "http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/SCT/Amend"
00157 #define SECCONV_200512_REPLY_AMEND_ACTION "http://docs.oasis-open.org/ws-sx/ws-trust/200512/RSTR/SCT/Amend"
00158 #define SECCONV_200512_REQUEST_RENEW_ACTION "http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/SCT/Renew"
00159 #define SECCONV_200512_REPLY_RENEW_ACTION "http://docs.oasis-open.org/ws-sx/ws-trust/200512/RSTR/SCT/Renew"
00160 #define SECCONV_200512_REQUEST_CANCEL_ACTION "http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/SCT/Cancel"
00161 #define SECCONV_200512_REPLY_CANCEL_ACTION "http://docs.oasis-open.org/ws-sx/ws-trust/200512/RSTR/SCT/Cancel"
00162 
00163 #define SECCONV_GLOBAL_ID_PREFIX "urn:uuid:"
00164 #define SECCONV_LOCAL_ID_PREFIX "sctId"
00165 
00166 
00167 #define TRUST_COMPUTED_KEY_PSHA1 "http://schemas.xmlsoap.org/ws/2005/02/trust/CK/PSHA1"
00168 #define TRUST_COMPUTED_KEY_PSHA1_05_12 "http://docs.oasis-open.org/ws-sx/ws-trust/200512/CK/PSHA1"
00169 /* NS Versions */
00170 
00171 #define TRUST_VERSION_INVALID 0
00172 #define TRUST_VERSION_05_02 1
00173 #define TRUST_VERSION_05_12 2
00174 
00175 #define SECCONV_ACTION_INVALID 0
00176 #define SECCONV_ACTION_ISSUE 1
00177 #define SECCONV_ACTION_AMEND 2
00178 #define SECCONV_ACTION_RENEW 3
00179 #define SECCONV_ACTION_CANCEL 4
00180 
00181 
00182 /* WS-SX Namespaces*/
00183 
00184 #define TRUST_WST_XMLNS_05_12 "http://docs.oasis-open.org/ws-sx/ws-trust/200512"
00185 #define TRUST_WST_XMLNS_05_02 "http://schemas.xmlsoap.org/ws/2005/02/trust"
00186 
00187 #ifdef __cplusplus
00188 }
00189 #endif
00190 
00191 #endif /* TRUST_CONSTANTS_H*/

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/trust__life__time_8h-source.html0000644000076500007650000002273311202454500024707 0ustar shankarshankar Rampart/C: trust_life_time.h Source File

trust_life_time.h

00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef TRUST_LIFETIME_H
00019 #define TRUST_LIFETIME_H
00020 
00021 #include <stdio.h>
00022 #include <stdlib.h>
00023 #include <axutil_utils.h>
00024 #include <axutil_string.h>
00025 #include <axutil_base64.h>
00026 #include <axiom_soap.h>
00027 #include <axiom.h>
00028 #include <axis2_msg_ctx.h>
00029 #include <axis2_addr.h>
00030 
00031 #include <trust_constants.h>
00032 #include <trust_util.h>
00033 
00034 #ifdef __cplusplus
00035 extern "C"
00036 {
00037 #endif
00038     
00039     typedef struct trust_life_time trust_life_time_t;
00040     
00041     AXIS2_EXTERN trust_life_time_t * AXIS2_CALL
00042     trust_life_time_create(
00043         const axutil_env_t *env);
00044     
00045     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00046     trust_life_time_free(
00047         trust_life_time_t *life_time,
00048         const axutil_env_t *env);
00049     
00050     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00051     trust_life_time_deserialize(
00052         trust_life_time_t *life_time,
00053         const axutil_env_t *env,
00054         axiom_node_t *life_time_node);
00055     
00056     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00057     trust_life_time_serialize(
00058         trust_life_time_t *life_time,
00059         const axutil_env_t *env,
00060         axiom_node_t *parent);
00061     
00062     AXIS2_EXTERN int AXIS2_CALL
00063     trust_life_time_get_ttl(
00064         trust_life_time_t *life_time,
00065         const axutil_env_t *env);
00066 
00067     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00068     trust_life_time_set_ttl(
00069             trust_life_time_t *life_time,
00070             const axutil_env_t *env,
00071             int ttl);        
00072 
00073     AXIS2_EXTERN axutil_date_time_t * AXIS2_CALL
00074     trust_life_time_get_created(
00075             trust_life_time_t *life_time,
00076             const axutil_env_t *env);
00077 
00078     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00079     trust_life_time_set_created(
00080             trust_life_time_t *life_time,
00081             const axutil_env_t *env,
00082             axutil_date_time_t *created);
00083 
00084     AXIS2_EXTERN axutil_date_time_t * AXIS2_CALL
00085     trust_life_time_get_expires(
00086             trust_life_time_t *life_time,
00087             const axutil_env_t *env);
00088 
00089 
00090     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00091     trust_life_time_set_expires(
00092             trust_life_time_t *life_time,
00093             const axutil_env_t *env,
00094             axutil_date_time_t *expires);
00095 
00096 
00097     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00098     trust_life_time_get_ns_uri(
00099             trust_life_time_t *life_time,
00100             const axutil_env_t *env);
00101 
00102 
00103     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00104     trust_life_time_set_ns_uri(
00105             trust_life_time_t *life_time,
00106             const axutil_env_t *env,
00107             axis2_char_t *ns_uri);
00108 
00109     
00110 #ifdef __cplusplus
00111 }
00112 #endif
00113 #endif 

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__Token.html0000644000076500007650000003160111202454500021743 0ustar shankarshankar Rampart/C: Processor

Processor
[Rampart Utilities]


Functions

AXIS2_EXTERN axis2_status_t rampart_token_process_security_token_reference (const axutil_env_t *env, axiom_node_t *st_ref_node, axiom_node_t *scope_node, oxs_x509_cert_t *cert)
AXIS2_EXTERN axis2_status_t rampart_token_process_direct_ref (const axutil_env_t *env, axiom_node_t *ref_node, axiom_node_t *scope_node, oxs_x509_cert_t *cert)
AXIS2_EXTERN axis2_status_t rampart_token_process_embedded (const axutil_env_t *env, axiom_node_t *embed_node, oxs_x509_cert_t *cert)
AXIS2_EXTERN axis2_status_t rampart_token_process_key_identifier (const axutil_env_t *env, axiom_node_t *ki_node, oxs_x509_cert_t *cert)
AXIS2_EXTERN axis2_status_t rampart_token_process_x509_data (const axutil_env_t *env, axiom_node_t *x509_data_node, oxs_x509_cert_t *cert)

Function Documentation

AXIS2_EXTERN axis2_status_t rampart_token_process_direct_ref ( const axutil_env_t *  env,
axiom_node_t *  ref_node,
axiom_node_t *  scope_node,
oxs_x509_cert_t *  cert 
)

extract certificate using reference id given in reference node

Parameters:
env Environment structure
ref_node security token reference node.
scope_node node where certificate details should be found using reference id
cert certificate where values extracted shuold be populated
Returns:
status of the operation

AXIS2_EXTERN axis2_status_t rampart_token_process_embedded ( const axutil_env_t *  env,
axiom_node_t *  embed_node,
oxs_x509_cert_t *  cert 
)

extract embedded certificate from given embed_node

Parameters:
env Environment structure
embed_node node where certificate is embedded.
cert certificate where values extracted shuold be populated
Returns:
status of the operation

AXIS2_EXTERN axis2_status_t rampart_token_process_key_identifier ( const axutil_env_t *  env,
axiom_node_t *  ki_node,
oxs_x509_cert_t *  cert 
)

extract key identifier and populate the certificate

Parameters:
env Environment structure
ki_node node where key identifier is available.
cert certificate where values extracted shuold be populated
Returns:
status of the operation

AXIS2_EXTERN axis2_status_t rampart_token_process_security_token_reference ( const axutil_env_t *  env,
axiom_node_t *  st_ref_node,
axiom_node_t *  scope_node,
oxs_x509_cert_t *  cert 
)

extract certificate related information using given token_reference node and scope node

Parameters:
env Environment structure
st_ref_node security token reference node.
scope_node node where additional details should be found. Can be NULL for all other scenarios but the Direct Reference
cert certificate where values extracted shuold be populated
Returns:
status of the operation

AXIS2_EXTERN axis2_status_t rampart_token_process_x509_data ( const axutil_env_t *  env,
axiom_node_t *  x509_data_node,
oxs_x509_cert_t *  cert 
)

extract key details from x509data node

Parameters:
env Environment structure
x509_data_node x509data node.
cert certificate where values extracted shuold be populated
Returns:
status of the operation


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/openssl__pem_8h-source.html0000644000076500007650000001466611202454500023704 0ustar shankarshankar Rampart/C: openssl_pem.h Source File

openssl_pem.h

Go to the documentation of this file.
00001 /*
00002  *   Copyright 2003-2004 The Apache Software Foundation.
00003  *
00004  *   Licensed under the Apache License, Version 2.0 (the "License");
00005  *   you may not use this file except in compliance with the License.
00006  *   You may obtain a copy of the License at
00007  *
00008  *       http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  *   Unless required by applicable law or agreed to in writing, software
00011  *   distributed under the License is distributed on an "AS IS" BASIS,
00012  *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  *   See the License for the specific language governing permissions and
00014  *   limitations under the License.
00015  */
00016 
00017 #include <openssl/rand.h>
00018 #include <openssl/evp.h>
00019 #include <openssl/pem.h>
00020 #include <openssl/bio.h>
00021 #include <openssl/rand.h>
00022 #include <openssl_constants.h>
00023 #include <openssl_pkey.h>
00024 #include <axis2_util.h>
00025 #include <openssl/pkcs12.h>
00026 #include <oxs_error.h>
00031 #ifndef OPENSSL_PEM_H
00032 #define OPENSSL_PEM_H
00033 
00034 #ifdef __cplusplus
00035 extern "C" {
00036 #endif
00037 
00043     typedef enum {
00044         OPENSSL_PEM_PKEY_TYPE_PRIVATE_KEY = 0,
00045         OPENSSL_PEM_PKEY_TYPE_PUBLIC_KEY,
00046         OPENSSL_PEM_PKEY_TYPE_UNKNOWN
00047     } openssl_pem_pkey_type_t;
00048 
00049     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00050     openssl_pem_buf_read_pkey(const axutil_env_t *env,
00051                               axis2_char_t *b64_encoded_buf,
00052                               axis2_char_t *password,
00053                               openssl_pem_pkey_type_t type,
00054                               EVP_PKEY **pkey);
00055 
00056     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00057     openssl_pem_read_pkey(const axutil_env_t *env,
00058                           axis2_char_t *filename,
00059                           axis2_char_t *password,
00060                           openssl_pem_pkey_type_t type,
00061                           EVP_PKEY **pkey);
00062 
00064 #ifdef __cplusplus
00065 }
00066 #endif
00067 
00068 #endif    /* OPENSSL_PEM_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/oxs__sign__ctx_8h-source.html0000644000076500007650000003546311202454500024224 0ustar shankarshankar Rampart/C: oxs_sign_ctx.h Source File

oxs_sign_ctx.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef OXS_SIGN_CTX_H
00019 #define OXS_SIGN_CTX_H
00020 
00021 
00032 #include <axis2_defines.h>
00033 #include <axutil_env.h>
00034 #include <axiom_node.h>
00035 #include <oxs_x509_cert.h>
00036 #include <oxs_key.h>
00037 #include <openssl_pkey.h>
00038 
00039 #ifdef __cplusplus
00040 extern "C"
00041 {
00042 #endif
00043 
00044     /*The type of operation*/
00045     typedef enum  {
00046         OXS_SIGN_OPERATION_NONE = 0,
00047         OXS_SIGN_OPERATION_SIGN,
00048         OXS_SIGN_OPERATION_VERIFY
00049     } oxs_sign_operation_t;
00050 
00051 
00052     typedef struct oxs_sign_ctx_t oxs_sign_ctx_t;
00053 
00059     AXIS2_EXTERN oxs_sign_ctx_t *AXIS2_CALL
00060     oxs_sign_ctx_create(const axutil_env_t *env);
00061 
00069     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00070     oxs_sign_ctx_free(oxs_sign_ctx_t *ctx,
00071                       const axutil_env_t *env);
00072 
00073 
00074     /**********************Getter functions******************************************/
00081     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00082     oxs_sign_ctx_get_sign_mtd_algo(
00083         const oxs_sign_ctx_t *sign_ctx,
00084         const axutil_env_t *env);
00085 
00092     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00093     oxs_sign_ctx_get_c14n_mtd(
00094         const oxs_sign_ctx_t *sign_ctx,
00095         const axutil_env_t *env);
00096 
00103     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00104     oxs_sign_ctx_get_sig_val(
00105         const oxs_sign_ctx_t *sign_ctx,
00106         const axutil_env_t *env);
00107 
00114     AXIS2_EXTERN axutil_array_list_t *AXIS2_CALL
00115     oxs_sign_ctx_get_sign_parts(
00116         const oxs_sign_ctx_t *sign_ctx,
00117         const axutil_env_t *env);
00118 
00125     AXIS2_EXTERN oxs_x509_cert_t *AXIS2_CALL
00126     oxs_sign_ctx_get_certificate(
00127         const oxs_sign_ctx_t *sign_ctx,
00128         const axutil_env_t *env);
00136     AXIS2_EXTERN openssl_pkey_t *AXIS2_CALL
00137     oxs_sign_ctx_get_private_key(
00138         const oxs_sign_ctx_t *sign_ctx,
00139         const axutil_env_t *env);
00140 
00147     AXIS2_EXTERN openssl_pkey_t *AXIS2_CALL
00148     oxs_sign_ctx_get_public_key(
00149         const oxs_sign_ctx_t *sign_ctx,
00150         const axutil_env_t *env);
00151 
00158     AXIS2_EXTERN oxs_key_t *AXIS2_CALL
00159     oxs_sign_ctx_get_secret(
00160     const oxs_sign_ctx_t *sign_ctx,
00161     const axutil_env_t *env);
00162  
00169     AXIS2_EXTERN oxs_sign_operation_t AXIS2_CALL
00170     oxs_sign_ctx_get_operation(
00171         const oxs_sign_ctx_t *sign_ctx,
00172         const axutil_env_t *env);
00173 
00174     /**********************Setter functions******************************************/
00182     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00183     oxs_sign_ctx_set_sign_mtd_algo(
00184         oxs_sign_ctx_t *sign_ctx,
00185         const axutil_env_t *env,
00186         axis2_char_t *sign_mtd_algo);
00187 
00195     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00196     oxs_sign_ctx_set_c14n_mtd(
00197         oxs_sign_ctx_t *sign_ctx,
00198         const axutil_env_t *env,
00199         axis2_char_t *c14n_mtd);
00200 
00208     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00209     oxs_sign_ctx_set_sig_val(
00210         oxs_sign_ctx_t *sign_ctx,
00211         const axutil_env_t *env,
00212         axis2_char_t *sig_val);
00213 
00221     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00222     oxs_sign_ctx_set_sign_parts(
00223         oxs_sign_ctx_t *sign_ctx,
00224         const axutil_env_t *env,
00225         axutil_array_list_t *sign_parts);
00226 
00234     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00235     oxs_sign_ctx_set_certificate(
00236         oxs_sign_ctx_t *sign_ctx,
00237         const axutil_env_t *env,
00238         oxs_x509_cert_t *certificate);
00239 
00247     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00248     oxs_sign_ctx_set_private_key(
00249         oxs_sign_ctx_t *sign_ctx,
00250         const axutil_env_t *env,
00251         openssl_pkey_t *prv_key);
00252 
00260     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00261     oxs_sign_ctx_set_public_key(
00262         oxs_sign_ctx_t *sign_ctx,
00263         const axutil_env_t *env,
00264         openssl_pkey_t *pub_key);
00265 
00273     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00274     oxs_sign_ctx_set_secret(
00275         oxs_sign_ctx_t *sign_ctx,
00276         const axutil_env_t *env,
00277         oxs_key_t *secret);
00278     
00286     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00287     oxs_sign_ctx_set_operation(
00288         oxs_sign_ctx_t *sign_ctx,
00289         const axutil_env_t *env,
00290         oxs_sign_operation_t operation);
00292 #ifdef __cplusplus
00293 }
00294 #endif
00295 
00296 #endif                          /* OXS_SIGN_CTX_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__rampart__util.html0000644000076500007650000006157411202454500023541 0ustar shankarshankar Rampart/C: Utils

Utils
[Rampart Utilities]


Functions

AXIS2_EXTERN
rampart_credentials_t * 
rampart_load_credentials_module (const axutil_env_t *env, axis2_char_t *cred_module_name)
AXIS2_EXTERN
rampart_credentials_status_t 
rampart_call_credentials (const axutil_env_t *env, rampart_credentials_t *cred_module, axis2_msg_ctx_t *ctx, axis2_char_t **username, axis2_char_t **password)
AXIS2_EXTERN
rampart_authn_provider_t * 
rampart_load_auth_module (const axutil_env_t *env, axis2_char_t *auth_module_name)
AXIS2_EXTERN
rampart_replay_detector_t * 
rampart_load_replay_detector (const axutil_env_t *env, axis2_char_t *replay_detector_name)
AXIS2_EXTERN
rampart_sct_provider_t * 
rampart_load_sct_provider (const axutil_env_t *env, axis2_char_t *sct_provider_name)
AXIS2_EXTERN rampart_callback_t * rampart_load_pwcb_module (const axutil_env_t *env, axis2_char_t *callback_module_name)
AXIS2_EXTERN
rampart_authn_provider_status_t 
rampart_authenticate_un_pw (const axutil_env_t *env, rampart_authn_provider_t *authp, const axis2_char_t *username, const axis2_char_t *password, const axis2_char_t *nonce, const axis2_char_t *created, const axis2_char_t *password_type, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN axis2_char_t * rampart_callback_password (const axutil_env_t *env, rampart_callback_t *callback_module, const axis2_char_t *username)
AXIS2_EXTERN axis2_char_t * rampart_callback_pkcs12_password (const axutil_env_t *env, rampart_callback_t *callback_module, const axis2_char_t *username)
AXIS2_EXTERN axis2_char_t * rampart_generate_time (const axutil_env_t *env, int ttl, axis2_bool_t with_millisecond)
AXIS2_EXTERN axis2_status_t rampart_compare_date_time (const axutil_env_t *env, axis2_char_t *dt1, axis2_char_t *dt2)

Function Documentation

AXIS2_EXTERN rampart_authn_provider_status_t rampart_authenticate_un_pw ( const axutil_env_t *  env,
rampart_authn_provider_t *  authp,
const axis2_char_t *  username,
const axis2_char_t *  password,
const axis2_char_t *  nonce,
const axis2_char_t *  created,
const axis2_char_t *  password_type,
axis2_msg_ctx_t *  msg_ctx 
)

Call auth module

Parameters:
env pointer to environment struct
authp the authentication module
username the username in the UsernameToken
password the password in the UsernameToken
nonce the nonce in the UsernameToken. Can be NULL if plain text password is used.
created created time in UsernameToken. Can be NULL if plain text password is used.
password_type the type of the password. either plain text of digest
msg_ctx the message context
Returns:
status of the operation

AXIS2_EXTERN rampart_credentials_status_t rampart_call_credentials ( const axutil_env_t *  env,
rampart_credentials_t *  cred_module,
axis2_msg_ctx_t *  ctx,
axis2_char_t **  username,
axis2_char_t **  password 
)

Call credentials module User MUST free memory of username and password

Parameters:
env pointer to environment struct
cred_module the credentails module
ctx the message context
username reference to the returned username
password reference to the returned password
Returns:
the status of the operation

AXIS2_EXTERN axis2_char_t* rampart_callback_password ( const axutil_env_t *  env,
rampart_callback_t *  callback_module,
const axis2_char_t *  username 
)

Gets the password of given user. the environment callback module structure the name of the user to get the password

Returns:
the password for the user or NULL if failed

AXIS2_EXTERN axis2_char_t* rampart_callback_pkcs12_password ( const axutil_env_t *  env,
rampart_callback_t *  callback_module,
const axis2_char_t *  username 
)

Get the password for pkcs12 key store. pointer to environment struct pointer to rampart callback module name of the pkcs12 owner

Returns:
the password for the user or NULL if username is incorrect

AXIS2_EXTERN axis2_status_t rampart_compare_date_time ( const axutil_env_t *  env,
axis2_char_t *  dt1,
axis2_char_t *  dt2 
)

Check if < . if not returns a false

Parameters:
env pointer to environment struct
dt1 date time 1.
dt2 date time 2.
Returns:
AXIS2_SUCCESS if dt1 < dt2. AXIS2_FALSE otherwise

AXIS2_EXTERN axis2_char_t* rampart_generate_time ( const axutil_env_t *  env,
int  ttl,
axis2_bool_t  with_millisecond 
)

Generates time. User MUST free memory

Parameters:
ttl Time to live. The time difference between created and expired in mili seconds.
with_millisecond shows whether millisecond precision is needed or not
Returns:
generated time

AXIS2_EXTERN rampart_authn_provider_t* rampart_load_auth_module ( const axutil_env_t *  env,
axis2_char_t *  auth_module_name 
)

Load authentication module User MUST free memory

Parameters:
env pointer to environment struct
auth_module_name name of the authentication module
Returns:
created athenticaiton module

AXIS2_EXTERN rampart_credentials_t* rampart_load_credentials_module ( const axutil_env_t *  env,
axis2_char_t *  cred_module_name 
)

Load the credentials module User MUST free memory

Parameters:
env pointer to environment struct
cred_module_name name of the credentails module to be loaded
Returns:
the loaded credentails module

AXIS2_EXTERN rampart_callback_t* rampart_load_pwcb_module ( const axutil_env_t *  env,
axis2_char_t *  callback_module_name 
)

Load the password callback module User MUST free memory

Parameters:
env pointer to environment struct the name of the callback module
Returns:
the loaded callback module

AXIS2_EXTERN rampart_replay_detector_t* rampart_load_replay_detector ( const axutil_env_t *  env,
axis2_char_t *  replay_detector_name 
)

Load replay detection module User MUST free memory

Parameters:
env pointer to environment struct
replay_detector_name name of the replay detection module
Returns:
created replay detection module

AXIS2_EXTERN rampart_sct_provider_t* rampart_load_sct_provider ( const axutil_env_t *  env,
axis2_char_t *  sct_provider_name 
)

Load security context token provider User MUST free memory

Parameters:
env pointer to environment struct
sct_provider_name name of the security context token provider
Returns:
created security context token provider module


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__oxs__encryption.html0000644000076500007650000001516111202454500024110 0ustar shankarshankar Rampart/C: Encryption

Encryption
[OMXMLSecurity]


Functions

AXIS2_EXTERN axis2_status_t oxs_encryption_symmetric_crypt (const axutil_env_t *env, oxs_ctx_t *enc_ctx, oxs_buffer_t *input, oxs_buffer_t *result)
AXIS2_EXTERN axis2_status_t oxs_encryption_asymmetric_crypt (const axutil_env_t *env, oxs_asym_ctx_t *asym_ctx, oxs_buffer_t *input, oxs_buffer_t *result)

Function Documentation

AXIS2_EXTERN axis2_status_t oxs_encryption_asymmetric_crypt ( const axutil_env_t *  env,
oxs_asym_ctx_t *  asym_ctx,
oxs_buffer_t input,
oxs_buffer_t result 
)

En/Decrypts given data buffer deoending on the information avalable in the encryption context using an asymmetric key, which can be a publik key extracted from a certificate or a private key. The resulted data will be placed on the result buffer. Data are not valid only if the method returns AXIS2_SUCCESS pointer to the OMXMLSec asymmetric encryption context struct pointer to environment struct the input buffer

Returns:
the ouput or the ressulted data buffer

AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_encryption_symmetric_crypt ( const axutil_env_t *  env,
oxs_ctx_t enc_ctx,
oxs_buffer_t input,
oxs_buffer_t result 
)

En/Decrypts given data buffer depending on the information avalable in the encryption context using a symmetric key. The resulted data will be placed on the result buffer. Data are not valid only if the method returns AXIS2_SUCCESS pointer to the OMXMLSec symmetric encryption context struct pointer to environment struct the input buffer

Returns:
the ouput or the ressulted data buffer

AXIS2_SUCCESS on success, else AXIS2_FAILURE


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/annotated.html0000644000076500007650000000270011202454500021263 0ustar shankarshankar Rampart/C: Class List

Class List

Here are the classes, structs, unions and interfaces with brief descriptions:
_oxs_error_description

Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__oxs__derivation.html0000644000076500007650000003410511202454500024061 0ustar shankarshankar Rampart/C: Derivation

Derivation
[OMXMLSecurity]


Functions

AXIS2_EXTERN axis2_status_t oxs_derivation_derive_key (const axutil_env_t *env, oxs_key_t *secret, oxs_key_t *derived_key, axis2_bool_t build_fresh)
AXIS2_EXTERN axiom_node_t * oxs_derivation_build_derived_key_token (const axutil_env_t *env, oxs_key_t *derived_key, axiom_node_t *parent, axis2_char_t *stref_uri, axis2_char_t *stref_val_type, axis2_char_t *wsc_ns_uri)
AXIS2_EXTERN axiom_node_t * oxs_derivation_build_derived_key_token_with_stre (const axutil_env_t *env, oxs_key_t *derived_key, axiom_node_t *parent, axiom_node_t *stre, axis2_char_t *wsc_ns_uri)
AXIS2_EXTERN oxs_key_toxs_derivation_extract_derived_key_from_token (const axutil_env_t *env, axiom_node_t *dk_token, axiom_node_t *root_node, oxs_key_t *session_key)

Function Documentation

AXIS2_EXTERN axiom_node_t* oxs_derivation_build_derived_key_token ( const axutil_env_t *  env,
oxs_key_t derived_key,
axiom_node_t *  parent,
axis2_char_t *  stref_uri,
axis2_char_t *  stref_val_type,
axis2_char_t *  wsc_ns_uri 
)

Build the <wsc:DerivedKeyToken> depending a given derived key The token will be attached to the parent

Parameters:
env pointer to environment struct
derived_key The derived key to be used to get information
parent The parent node to be attached to
stref_uri Security Token Reference URI
stref_val_type Security Token Reference Valut Type
wsc_ns_uri namespace uri of ws-secconv version
Returns:
the built axiom node

AXIS2_EXTERN axiom_node_t* oxs_derivation_build_derived_key_token_with_stre ( const axutil_env_t *  env,
oxs_key_t derived_key,
axiom_node_t *  parent,
axiom_node_t *  stre,
axis2_char_t *  wsc_ns_uri 
)

Build the <wsc:DerivedKeyToken> depending a given derived key The token will be attached to the parent

Parameters:
env pointer to environment struct
derived_key The derived key to be used to get information
parent The parent node to be attached to
stre Security Toekn Reference element
wsc_ns_uri namespace uri of ws-secconv version
Returns:
the built axiom node

AXIS2_EXTERN axis2_status_t oxs_derivation_derive_key ( const axutil_env_t *  env,
oxs_key_t secret,
oxs_key_t derived_key,
axis2_bool_t  build_fresh 
)

Derive Key depending on the secret key Caller must free memory for derived key

Parameters:
env pointer to environment struct
secret The secret is the shared secret that is exchanged (note that if two secrets were securely exchanged, possible as part of an initial exchange, they are concatenated in the order they were sent/received)
derived_key The derived key. Caller must create and free
build_fresh Whether to build fresh or build using details in derived key (in case of recovering the derive key from xml)
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN oxs_key_t* oxs_derivation_extract_derived_key_from_token ( const axutil_env_t *  env,
axiom_node_t *  dk_token,
axiom_node_t *  root_node,
oxs_key_t session_key 
)

Extract information from an AXIOM node of typ <wsse:DerivedKeyToken> and build a key If the (optional) session_key is NULL then extract it form the refered EncryptedKey. Otherwise use it to Derive a new key using information available in the dk_token.

Parameters:
env pointer to environment struct
dk_token The <wsse:DerivedKeyToken> axiom node
root_node The root node, which the search scope limited to
session_key The session key, which is the base for the key derivation.
return the derived key on SUCCESS or NULL on failure


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/oxs__key__mgr_8h-source.html0000644000076500007650000005572511202454500024046 0ustar shankarshankar Rampart/C: oxs_key_mgr.h Source File

oxs_key_mgr.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef OXS_KEY_MGR_H
00019 #define OXS_KEY_MGR_H
00020 
00021 
00032 #include <axis2_defines.h>
00033 #include <oxs_ctx.h>
00034 #include <oxs_asym_ctx.h>
00035 #include <axutil_env.h>
00036 #include <axutil_qname.h>
00037 #include <oxs_x509_cert.h>
00038 #include <openssl_pkey.h>
00039 #include <openssl_x509.h>
00040 #include <openssl_pkcs12.h>
00041 #include <axis2_key_type.h>
00042 #include <openssl_pkcs12.h>
00043 #include <openssl_pkcs12_keystore.h>
00044 
00045 #ifdef __cplusplus
00046 extern "C"
00047 {
00048 #endif
00049 
00050         typedef struct oxs_key_mgr_t oxs_key_mgr_t;
00051         /* Enum which is used to specify the key format. */
00052         typedef enum  {
00053                 OXS_KEY_MGR_FORMAT_UNKNOWN=0,
00054                 OXS_KEY_MGR_FORMAT_PEM,
00055                 OXS_KEY_MGR_FORMAT_PKCS12
00056         }oxs_key_mgr_format_t;
00057         
00058 #if 0
00059 
00066     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00067         oxs_key_mgr_load_key(
00068                 oxs_key_mgr_t *key_mgr,
00069                 const axutil_env_t *env,
00070             oxs_asym_ctx_t *ctx);
00071 
00072 #endif
00073 
00084     AXIS2_EXTERN openssl_pkey_t* AXIS2_CALL
00085     oxs_key_mgr_load_private_key_from_string(const axutil_env_t *env,
00086             axis2_char_t *pem_buf, /*in PEM format*/
00087             axis2_char_t *password);
00095     AXIS2_EXTERN openssl_pkey_t* AXIS2_CALL
00096     oxs_key_mgr_load_private_key_from_pem_file(const axutil_env_t *env,
00097             axis2_char_t *file_name,
00098             axis2_char_t *password);
00099 
00109     AXIS2_EXTERN oxs_x509_cert_t* AXIS2_CALL
00110     oxs_key_mgr_load_x509_cert_from_string(const axutil_env_t *env,
00111                                            axis2_char_t *pem_buf);
00112 
00119     AXIS2_EXTERN oxs_x509_cert_t* AXIS2_CALL
00120     oxs_key_mgr_load_x509_cert_from_pem_file(const axutil_env_t *env,
00121             axis2_char_t *filename);
00122 
00132     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00133     oxs_key_mgr_read_pkcs12_key_store(const axutil_env_t *env,
00134                                       axis2_char_t *pkcs12_file,
00135                                       axis2_char_t *password,
00136                                       oxs_x509_cert_t **cert,
00137                                       openssl_pkey_t **prv_key);
00138         
00144         AXIS2_EXTERN oxs_key_mgr_t * AXIS2_CALL
00145         oxs_key_mgr_create(const axutil_env_t *env);
00146 
00153         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00154         oxs_key_mgr_free(oxs_key_mgr_t *key_mgr, 
00155                                         const axutil_env_t *env);
00156         
00164         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00165         oxs_key_mgr_set_prv_key_password(
00166                 oxs_key_mgr_t *key_mgr,
00167                 const axutil_env_t *env,
00168                 axis2_char_t *password);
00169 
00176         AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00177         oxs_key_mgr_get_prv_key_password(
00178                 oxs_key_mgr_t *key_mgr,
00179                 const axutil_env_t *env);
00180 
00187         AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00188         oxs_key_mgr_get_private_key_file(
00189                 oxs_key_mgr_t *key_mgr,
00190                 const axutil_env_t *env);
00191 
00192         AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00193         oxs_key_mgr_get_certificate_file(
00194                 oxs_key_mgr_t *key_mgr,
00195                 const axutil_env_t *env);
00196 
00197         AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00198         oxs_key_mgr_get_reciever_certificate_file(
00199                 oxs_key_mgr_t *key_mgr,
00200                 const axutil_env_t *env);
00201 
00202         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00203         oxs_key_mgr_set_private_key_file(
00204                 oxs_key_mgr_t *key_mgr,
00205                 const axutil_env_t *env,
00206                 axis2_char_t *file_name);
00207 
00208         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00209         oxs_key_mgr_set_certificate_file(
00210                 oxs_key_mgr_t *key_mgr,
00211                 const axutil_env_t *env,
00212                 axis2_char_t *file_name);
00213 
00214         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00215         oxs_key_mgr_set_reciever_certificate_file(
00216                 oxs_key_mgr_t *key_mgr,
00217                 const axutil_env_t *env,
00218                 axis2_char_t *file_name);
00219 
00220 
00221         AXIS2_EXTERN void *AXIS2_CALL
00222         oxs_key_mgr_get_certificate(
00223                 oxs_key_mgr_t *key_mgr,
00224                 const axutil_env_t *env);
00225 
00226         AXIS2_EXTERN axis2_key_type_t AXIS2_CALL
00227         oxs_key_mgr_get_certificate_type(
00228                 oxs_key_mgr_t *key_mgr,
00229                 const axutil_env_t *env);
00230 
00231         AXIS2_EXTERN void *AXIS2_CALL
00232         oxs_key_mgr_get_prv_key(
00233                 oxs_key_mgr_t *key_mgr,
00234                 const axutil_env_t *env);
00235 
00236         AXIS2_EXTERN axis2_key_type_t AXIS2_CALL
00237         oxs_key_mgr_get_prv_key_type(
00238                 oxs_key_mgr_t *key_mgr,
00239                 const axutil_env_t *env);
00240 
00241         AXIS2_EXTERN void *AXIS2_CALL
00242         oxs_key_mgr_get_receiver_certificate(
00243                 oxs_key_mgr_t *key_mgr,
00244                 const axutil_env_t *env);
00245 
00246         AXIS2_EXTERN axis2_key_type_t AXIS2_CALL
00247         oxs_key_mgr_get_receiver_certificate_type(
00248                 oxs_key_mgr_t *key_mgr,
00249                 const axutil_env_t *env);
00250 
00251         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00252         oxs_key_mgr_set_certificate(
00253                 oxs_key_mgr_t *key_mgr,
00254                 const axutil_env_t *env, 
00255                 void *certificate);
00256 
00257         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00258         oxs_key_mgr_set_certificate_type(
00259                 oxs_key_mgr_t *key_mgr,
00260                 const axutil_env_t *env,
00261                 axis2_key_type_t type);
00262 
00263         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00264         oxs_key_mgr_set_prv_key(
00265                 oxs_key_mgr_t *key_mgr,
00266                 const axutil_env_t *env, 
00267                 void *key);
00268 
00269         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00270         oxs_key_mgr_set_prv_key_type(
00271                 oxs_key_mgr_t *key_mgr,
00272                 const axutil_env_t *env,
00273                 axis2_key_type_t type);
00274 
00275         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00276         oxs_key_mgr_set_receiver_certificate(
00277                 oxs_key_mgr_t *key_mgr,
00278                 const axutil_env_t *env,
00279                 void *certificate);
00280 
00281         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00282         oxs_key_mgr_set_receiver_certificate_type(
00283                 oxs_key_mgr_t *key_mgr,
00284                 const axutil_env_t *env,
00285                 axis2_key_type_t type);
00286         
00287         AXIS2_EXTERN oxs_key_mgr_format_t AXIS2_CALL
00288         oxs_key_mgr_get_format(
00289                 oxs_key_mgr_t *key_mgr,
00290                 const axutil_env_t *env);
00291 
00292         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00293         oxs_key_mgr_set_format(
00294                 oxs_key_mgr_t *key_mgr,
00295                 const axutil_env_t *env,
00296                 oxs_key_mgr_format_t format);
00297 
00298         AXIS2_EXTERN void * AXIS2_CALL
00299         oxs_key_mgr_get_pem_buf(
00300                 oxs_key_mgr_t *key_mgr,
00301                 const axutil_env_t *env);
00302 
00303         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00304         oxs_key_mgr_set_pem_buf(
00305                 oxs_key_mgr_t *key_mgr,
00306                 const axutil_env_t *env,
00307                 void *pem_buf);
00308         
00309         AXIS2_EXTERN pkcs12_keystore_t* AXIS2_CALL
00310         oxs_key_mgr_get_key_store(
00311                 oxs_key_mgr_t *key_mgr,
00312                 const axutil_env_t *env);
00313         
00314         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00315         oxs_key_mgr_set_key_store(
00316                 oxs_key_mgr_t *key_mgr,
00317                 const axutil_env_t *env,
00318                 pkcs12_keystore_t *key_store);
00319         
00320         AXIS2_EXTERN void * AXIS2_CALL
00321         oxs_key_mgr_get_key_store_buff(
00322             oxs_key_mgr_t *key_mgr,
00323             const axutil_env_t *env);
00324         
00325         AXIS2_EXTERN oxs_x509_cert_t * AXIS2_CALL
00326         oxs_key_mgr_get_receiver_certificate_from_ski(
00327             oxs_key_mgr_t *key_mgr,
00328             const axutil_env_t *env,
00329             axis2_char_t *ski);
00330         
00331         AXIS2_EXTERN oxs_x509_cert_t * AXIS2_CALL
00332         oxs_key_mgr_get_receiver_certificate_from_issuer_serial(
00333             oxs_key_mgr_t *key_mgr,
00334             const axutil_env_t *env,
00335             axis2_char_t *issuer,
00336             int serial);
00337         
00338         AXIS2_EXTERN int AXIS2_CALL
00339         oxs_key_mgr_get_key_store_buff_len(
00340             oxs_key_mgr_t *key_mgr,
00341             const axutil_env_t *env);
00342         
00343         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00344         oxs_key_mgr_set_key_store_buff(
00345             oxs_key_mgr_t *key_mgr,
00346             const axutil_env_t *env,
00347             void *key_store_buf,
00348             int len);
00349 
00350         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00351         oxs_key_mgr_increment_ref(
00352             oxs_key_mgr_t *key_mgr, 
00353             const axutil_env_t *env);
00354 
00355         
00357 #ifdef __cplusplus
00358 }
00359 #endif
00360 
00361 #endif                          /* OXS_KEY_MGR_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/index.html0000644000076500007650000000336111202454500020421 0ustar shankarshankar Rampart/C: Rampart/C API Documentation

Rampart/C API Documentation

1.3.0

Introduction

This is the API documetation of Apache Rampart/C, which is the security module for Apache Axis2/C. It features in many ways to protect SOAP messages exchanged. This includes SOAP message encryption and signature as specified in WS-Security Specification. In addition Apache Rampart/C configurations are based on security policy assertions as per WS-Security Policy specification

We welcome your feedback on this implementation and documentation. Please send your feedback to rampart-c-dev@ws.apache.org


Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__oxs__iv.html0000644000076500007650000000661411202454500022337 0ustar shankarshankar Rampart/C: Initial Vector

Initial Vector
[OMXMLSecurity]


Defines

#define OXS_IV_DEFAULT   OPENSSL_DEFAULT_IV16

Functions

AXIS2_EXTERN axis2_char_t * oxs_iv_generate_for_algo (const axutil_env_t *env, axis2_char_t *key_algo)

Function Documentation

AXIS2_EXTERN axis2_char_t* oxs_iv_generate_for_algo ( const axutil_env_t *  env,
axis2_char_t *  key_algo 
)

Generates an Initial Vector(IV) for the given algorithm

Parameters:
env pointer to environment struct
key_algo the algorithm
Returns:
the generated IV


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/rahas__request__processor_8h.html0000644000076500007650000000377611202454500025166 0ustar shankarshankar Rampart/C: rahas_request_processor.h File Reference

rahas_request_processor.h File Reference

Process requests related to secure conversation. More...

Go to the source code of this file.

Functions

AXIS2_EXTERN axis2_status_t rahas_process_issue_request (const axutil_env_t *env, trust_rst_t *rst, trust_rstr_t *rstr, axis2_msg_ctx_t *msg_ctx, int trust_version)


Detailed Description

Process requests related to secure conversation.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__openssl__cipher__ctx.html0000644000076500007650000005533211202454500025063 0ustar shankarshankar Rampart/C: OpenSSL Cipher Context

OpenSSL Cipher Context
[OpenSSL wrapper]


Typedefs

typedef struct openssl_cipher_ctx_t openssl_cipher_ctx_t

Functions

axis2_status_t openssl_cipher_ctx_free (openssl_cipher_ctx_t *ctx, const axutil_env_t *env)
const EVP_CIPHER * openssl_cipher_ctx_get_cipher (openssl_cipher_ctx_t *ctx, const axutil_env_t *env)
oxs_key_topenssl_cipher_ctx_get_key (openssl_cipher_ctx_t *ctx, const axutil_env_t *env)
axis2_char_t * openssl_cipher_ctx_get_iv (openssl_cipher_ctx_t *ctx, const axutil_env_t *env)
axis2_char_t * openssl_cipher_ctx_get_pad (openssl_cipher_ctx_t *ctx, const axutil_env_t *env)
axis2_status_t openssl_cipher_ctx_set_cipher (openssl_cipher_ctx_t *ctx, const axutil_env_t *env, const EVP_CIPHER *)
axis2_status_t openssl_cipher_ctx_set_key (openssl_cipher_ctx_t *ctx, const axutil_env_t *env, oxs_key_t *key)
axis2_status_t openssl_cipher_ctx_set_iv (openssl_cipher_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *iv)
axis2_status_t openssl_cipher_ctx_set_pad (openssl_cipher_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *pad)
AXIS2_EXTERN openssl_cipher_ctx_topenssl_cipher_ctx_create (const axutil_env_t *env)

Typedef Documentation

Type name for struct openssl_cipher_ctx


Function Documentation

AXIS2_EXTERN openssl_cipher_ctx_t* openssl_cipher_ctx_create ( const axutil_env_t *  env  ) 

Create a new cipher context. All the fields carry NULL values at the begining.

Parameters:
env pointer to environment struct
Returns:
Fresh Cipher Context

axis2_status_t openssl_cipher_ctx_free ( openssl_cipher_ctx_t ctx,
const axutil_env_t *  env 
)

Free function

Parameters:
ctx to the openssl cipher ctx struct
env pointer to environment struct
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

const EVP_CIPHER* openssl_cipher_ctx_get_cipher ( openssl_cipher_ctx_t ctx,
const axutil_env_t *  env 
)

Given the ctx return the CIPHER

Parameters:
ctx to the openssl cipher ctx struct
env pointer to environment struct
Returns:
RVP_CIPHER the cipher

axis2_char_t* openssl_cipher_ctx_get_iv ( openssl_cipher_ctx_t ctx,
const axutil_env_t *  env 
)

Given the ctx return iv

Parameters:
ctx to the openssl cipher ctx struct
env pointer to environment struct
Returns:
iv

oxs_key_t* openssl_cipher_ctx_get_key ( openssl_cipher_ctx_t ctx,
const axutil_env_t *  env 
)

Given the ctx return key

Parameters:
ctx to the openssl cipher ctx struct
env pointer to environment struct
Returns:
key

axis2_char_t* openssl_cipher_ctx_get_pad ( openssl_cipher_ctx_t ctx,
const axutil_env_t *  env 
)

Given the ctx return the padding

Parameters:
ctx to the openssl cipher ctx struct
env pointer to environment struct
Returns:
padding

axis2_status_t openssl_cipher_ctx_set_cipher ( openssl_cipher_ctx_t ctx,
const axutil_env_t *  env,
const EVP_CIPHER *   
)

Set the Cipher for the cipher context.

Parameters:
ctx to the openssl cipher ctx struct
env pointer to environment struct
EVP_CIPHER The pointer for the Cipher to be set in the cipher context
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

axis2_status_t openssl_cipher_ctx_set_iv ( openssl_cipher_ctx_t ctx,
const axutil_env_t *  env,
axis2_char_t *  iv 
)

Set the Initial Value for the cipher context.

Parameters:
ctx to the openssl cipher ctx struct
env pointer to environment struct
iv The Initial Value to be set in the cipher context
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

axis2_status_t openssl_cipher_ctx_set_key ( openssl_cipher_ctx_t ctx,
const axutil_env_t *  env,
oxs_key_t key 
)

Set the Key for the cipher context.

Parameters:
ctx to the openssl cipher ctx struct
env pointer to environment struct
key The key to be set in the cipher context
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

axis2_status_t openssl_cipher_ctx_set_pad ( openssl_cipher_ctx_t ctx,
const axutil_env_t *  env,
axis2_char_t *  pad 
)

Set the pad for the cipher context.

Parameters:
ctx to the openssl cipher ctx struct
env pointer to environment struct
pad the pad to be set in the cipher context
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/oxs__ctx_8h.html0000644000076500007650000003015211202454500021535 0ustar shankarshankar Rampart/C: oxs_ctx.h File Reference

oxs_ctx.h File Reference

Keeps configurations for the OMXMLSecurity. More...

#include <axis2_defines.h>
#include <axutil_env.h>
#include <axiom_node.h>
#include <oxs_buffer.h>
#include <oxs_key.h>

Go to the source code of this file.

Typedefs

typedef struct oxs_ctx_t oxs_ctx_t

Enumerations

enum  oxs_ctx_operation_t { OXS_CTX_OPERATION_NONE = 0, OXS_CTX_OPERATION_ENCRYPT, OXS_CTX_OPERATION_DECRYPT }
enum  oxs_ctx_mode_t { OXS_CTX_MODE_ENCRYPTED_DATA = 0, OXS_CTX_MODE_ENCRYPTED_KEY }

Functions

AXIS2_EXTERN axis2_status_t oxs_ctx_free (oxs_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN oxs_ctx_mode_t oxs_ctx_get_mode (oxs_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN oxs_ctx_operation_t oxs_ctx_get_operation (oxs_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN oxs_key_toxs_ctx_get_key (oxs_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_ctx_get_id (oxs_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_ctx_get_type (oxs_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_ctx_get_mime_type (oxs_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_ctx_get_encoding (oxs_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_ctx_get_recipient (oxs_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_ctx_get_ref_key_name (oxs_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_ctx_get_enc_mtd_algorithm (oxs_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_ctx_get_input_data (oxs_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_ctx_set_mode (oxs_ctx_t *ctx, const axutil_env_t *env, oxs_ctx_mode_t mode)
AXIS2_EXTERN axis2_status_t oxs_ctx_set_operation (oxs_ctx_t *ctx, const axutil_env_t *env, oxs_ctx_operation_t operation)
AXIS2_EXTERN axis2_status_t oxs_ctx_set_key (oxs_ctx_t *ctx, const axutil_env_t *env, oxs_key_t *key)
AXIS2_EXTERN axis2_status_t oxs_ctx_set_id (oxs_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *id)
AXIS2_EXTERN axis2_status_t oxs_ctx_set_type (oxs_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *type)
AXIS2_EXTERN axis2_status_t oxs_ctx_set_mime_type (oxs_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *mime_type)
AXIS2_EXTERN axis2_status_t oxs_ctx_set_encoding (oxs_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *encoding)
AXIS2_EXTERN axis2_status_t oxs_ctx_set_recipient (oxs_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *recipient)
AXIS2_EXTERN axis2_status_t oxs_ctx_set_ref_key_name (oxs_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *ref_key_name)
AXIS2_EXTERN axis2_status_t oxs_ctx_set_enc_mtd_algorithm (oxs_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *enc_mtd_algorithm)
AXIS2_EXTERN axis2_status_t oxs_ctx_set_input_data (oxs_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *input_data)
AXIS2_EXTERN oxs_ctx_toxs_ctx_create (const axutil_env_t *env)


Detailed Description

Keeps configurations for the OMXMLSecurity.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/rampart__timestamp__token_8h.html0000644000076500007650000000456611202454500025150 0ustar shankarshankar Rampart/C: rampart_timestamp_token.h File Reference

rampart_timestamp_token.h File Reference

Timestamp token related functions. More...

#include <axutil_env.h>

Go to the source code of this file.

Functions

axis2_status_t rampart_timestamp_token_build (const axutil_env_t *env, axiom_node_t *sec_node, int ttl, axis2_bool_t with_millisecond)
axis2_status_t rampart_timestamp_token_validate (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axiom_node_t *ts_node, int clock_skew_buffer)


Detailed Description

Timestamp token related functions.


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/oxs__asym__ctx_8h.html0000644000076500007650000001620611202454500022731 0ustar shankarshankar Rampart/C: oxs_asym_ctx.h File Reference

oxs_asym_ctx.h File Reference

Keeps information relavent for asymmetric encryption. More...

#include <axis2_defines.h>
#include <axutil_env.h>
#include <axiom_node.h>
#include <oxs_x509_cert.h>
#include <openssl_pkey.h>

Go to the source code of this file.

Typedefs

typedef struct oxs_asym_ctx_t oxs_asym_ctx_t

Enumerations

enum  oxs_asym_ctx_format_t { OXS_ASYM_CTX_FORMAT_UNKNOWN = 0, OXS_ASYM_CTX_FORMAT_PEM, OXS_ASYM_CTX_FORMAT_PKCS12 }
enum  oxs_asym_ctx_operation_t { OXS_ASYM_CTX_OPERATION_PUB_ENCRYPT = 0, OXS_ASYM_CTX_OPERATION_PRV_DECRYPT, OXS_ASYM_CTX_OPERATION_PUB_DECRYPT, OXS_ASYM_CTX_OPERATION_PRV_ENCRYPT }

Functions

AXIS2_EXTERN oxs_asym_ctx_t * oxs_asym_ctx_create (const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_asym_ctx_free (oxs_asym_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_asym_ctx_get_algorithm (const oxs_asym_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_asym_ctx_get_st_ref_pattern (const oxs_asym_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN
oxs_asym_ctx_operation_t 
oxs_asym_ctx_get_operation (const oxs_asym_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN openssl_pkey_toxs_asym_ctx_get_private_key (const oxs_asym_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN oxs_x509_cert_t * oxs_asym_ctx_get_certificate (const oxs_asym_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_asym_ctx_set_algorithm (oxs_asym_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *algorithm)
AXIS2_EXTERN axis2_status_t oxs_asym_ctx_set_st_ref_pattern (oxs_asym_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *st_ref_pattern)
AXIS2_EXTERN axis2_status_t oxs_asym_ctx_set_operation (oxs_asym_ctx_t *ctx, const axutil_env_t *env, oxs_asym_ctx_operation_t operation)
AXIS2_EXTERN axis2_status_t oxs_asym_ctx_set_certificate (oxs_asym_ctx_t *ctx, const axutil_env_t *env, oxs_x509_cert_t *certificate)
AXIS2_EXTERN axis2_status_t oxs_asym_ctx_set_private_key (oxs_asym_ctx_t *asym_ctx, const axutil_env_t *env, openssl_pkey_t *private_key)


Detailed Description

Keeps information relavent for asymmetric encryption.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/rampart__sct__provider__utility_8h.html0000644000076500007650000001427211202454500026365 0ustar shankarshankar Rampart/C: rampart_sct_provider_utility.h File Reference

rampart_sct_provider_utility.h File Reference

Utility methods using Security context token provider module. More...

#include <axis2_defines.h>
#include <axutil_env.h>
#include <axis2_msg_ctx.h>
#include <axis2_conf_ctx.h>
#include <rampart_context.h>
#include <secconv_security_context_token.h>
#include <axutil_hash.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN oxs_buffer_tsct_provider_get_secret (const axutil_env_t *env, rp_property_t *token, axis2_bool_t is_encryption, rampart_context_t *rampart_context, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN oxs_buffer_tsct_provider_get_secret_using_id (const axutil_env_t *env, axis2_char_t *sct_id, rampart_context_t *rampart_context, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN axiom_node_t * sct_provider_get_token (const axutil_env_t *env, rp_property_t *token, axis2_bool_t is_encryption, rampart_context_t *rampart_context, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN axiom_node_t * sct_provider_get_attached_reference (const axutil_env_t *env, rp_property_t *token, axis2_bool_t is_encryption, rampart_context_t *rampart_context, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN axiom_node_t * sct_provider_get_unattached_reference (const axutil_env_t *env, rp_property_t *token, axis2_bool_t is_encryption, rampart_context_t *rampart_context, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN axis2_status_t sct_provider_validate_security_context_token (const axutil_env_t *env, axiom_node_t *sct_node, rampart_context_t *rampart_context, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN void * sct_provider_obtain_sct_default (const axutil_env_t *env, axis2_bool_t is_encryption, axis2_msg_ctx_t *msg_ctx, axis2_char_t *sct_id, int sct_id_type, void *user_params)
AXIS2_EXTERN axis2_status_t sct_provider_store_sct_default (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axis2_char_t *sct_global_id, axis2_char_t *sct_local_id, void *sct, void *user_params)
AXIS2_EXTERN axis2_status_t sct_provider_delete_sct_default (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axis2_char_t *sct_id, int sct_id_type, void *user_params)
AXIS2_EXTERN axis2_status_t sct_provider_validate_sct_default (const axutil_env_t *env, axiom_node_t *sct_node, axis2_msg_ctx_t *msg_ctx, void *user_params)


Detailed Description

Utility methods using Security context token provider module.


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/openssl__x509_8h-source.html0000644000076500007650000002534511202454500023624 0ustar shankarshankar Rampart/C: openssl_x509.h Source File

openssl_x509.h

Go to the documentation of this file.
00001 /*
00002  *   Copyright 2003-2004 The Apache Software Foundation.
00003  *
00004  *   Licensed under the Apache License, Version 2.0 (the "License");
00005  *   you may not use this file except in compliance with the License.
00006  *   You may obtain a copy of the License at
00007  *
00008  *       http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  *   Unless required by applicable law or agreed to in writing, software
00011  *   distributed under the License is distributed on an "AS IS" BASIS,
00012  *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  *   See the License for the specific language governing permissions and
00014  *   limitations under the License.
00015  */
00016 
00017 #include <openssl/rand.h>
00018 #include <openssl/evp.h>
00019 #include <openssl/pem.h>
00020 #include <openssl/bio.h>
00021 #include <openssl/rand.h>
00022 #include <openssl_constants.h>
00023 #include <openssl_pkey.h>
00024 #include <axis2_util.h>
00025 #include <openssl/pkcs12.h>
00026 #include <oxs_error.h>
00031 #ifndef OPENSSL_X509_H
00032 #define OPENSSL_X509_H
00033 
00034 #ifdef __cplusplus
00035 extern "C" {
00036 #endif
00037 
00043     typedef enum {
00044         OPENSSL_X509_FORMAT_PEM = 0,
00045         OPENSSL_X509_FORMAT_DER,
00046         OPENSSL_X509_FORMAT_PKCS12
00047     } openssl_x509_format_t;
00048 
00049     typedef enum {
00050         OPENSSL_X509_INFO_SUBJECT = 0,
00051         OPENSSL_X509_INFO_ISSUER ,
00052         OPENSSL_X509_INFO_VALID_FROM ,
00053         OPENSSL_X509_INFO_VALID_TO ,
00054         OPENSSL_X509_INFO_FINGER ,
00055         OPENSSL_X509_INFO_SIGNATURE ,
00056         OPENSSL_X509_INFO_VERSION ,
00057         OPENSSL_X509_INFO_PUBKEY ,
00058         OPENSSL_X509_INFO_PUBKEY_ALGO ,
00059         OPENSSL_X509_INFO_DATA_CERT,
00060                 OPENSSL_X509_INFO_COMMON_NAME
00061     } openssl_x509_info_type_t;
00062 
00063     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00064     openssl_x509_load_from_buffer(const axutil_env_t *env,
00065                                   axis2_char_t *b64_encoded_buf,
00066                                   X509 **cert);
00067 
00068     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00069     openssl_x509_load_from_pem(const axutil_env_t *env,
00070                                axis2_char_t *filename,
00071                                X509 **cert);
00072 
00073     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00074     openssl_x509_load_from_pkcs12(const axutil_env_t *env,
00075                                   axis2_char_t *filename,
00076                                   axis2_char_t *password,
00077                                   X509 **cert,
00078                                   EVP_PKEY **pkey,
00079                                   STACK_OF(X509) **ca);
00080 
00081     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00082     openssl_x509_load_certificate(const axutil_env_t *env,
00083                                   openssl_x509_format_t format,
00084                                   axis2_char_t *filename,
00085                                   axis2_char_t *password,
00086                                   X509 **cert);
00087 
00088     /*Caller MUST free */
00089     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00090     openssl_x509_get_cert_data(const axutil_env_t *env,
00091                                X509 *cert);
00092 
00093 
00094     AXIS2_EXTERN int AXIS2_CALL
00095     openssl_x509_get_serial(const axutil_env_t *env,
00096                             X509 *cert);
00097 
00098     AXIS2_EXTERN unsigned long AXIS2_CALL
00099     openssl_x509_get_subject_name_hash(const axutil_env_t *env,
00100                                        X509 *cert);
00101 
00102     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00103     openssl_x509_get_pubkey(const axutil_env_t *env,
00104                             X509 *cert,
00105                             EVP_PKEY **pubkey);
00106 
00107     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00108     openssl_x509_get_subject_key_identifier(const axutil_env_t *env,
00109                                             X509 *cert);
00110 
00111     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00112     openssl_x509_get_info(const axutil_env_t *env,
00113                           openssl_x509_info_type_t type,
00114                           X509 *cert);
00115         
00116         AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00117     openssl_x509_get_common_name(
00118         const axutil_env_t *env,
00119         X509 *cert);
00120 
00121     AXIS2_EXTERN void AXIS2_CALL
00122     openssl_x509_print(const axutil_env_t *env,
00123                        X509 *cert);
00124 
00126 #ifdef __cplusplus
00127 }
00128 #endif
00129 
00130 #endif    /* OPENSSL_X509_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/trust__context_8h.html0000644000076500007650000001656211202454500023004 0ustar shankarshankar Rampart/C: trust_context.h File Reference

trust_context.h File Reference

Holds function declarations and data for data. More...

#include <stdio.h>
#include <stdlib.h>
#include <axutil_utils.h>
#include <axutil_string.h>
#include <axutil_base64.h>
#include <axiom_soap.h>
#include <axiom.h>
#include <axis2_msg_ctx.h>
#include <axis2_addr.h>
#include <trust_constants.h>
#include <trust_rst.h>
#include <trust_rstr.h>

Go to the source code of this file.

Typedefs

typedef struct trust_context trust_context_t

Functions

AXIS2_EXTERN trust_context_t * trust_context_create (const axutil_env_t *env)
AXIS2_EXTERN void trust_context_free (trust_context_t *trust_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t trust_context_process_rst (trust_context_t *trust_context, const axutil_env_t *env, axis2_msg_ctx_t *in_msg_ctx)
AXIS2_EXTERN axis2_status_t trust_context_process_rstr (trust_context_t *trust_context, const axutil_env_t *env, axis2_msg_ctx_t *in_msg_ctx)
AXIS2_EXTERN axiom_node_t * trust_context_build_rst_node (trust_context_t *trust_context, const axutil_env_t *env)
AXIS2_EXTERN axiom_node_t * trust_context_build_rstr_node (trust_context_t *trust_context, const axutil_env_t *env)
AXIS2_EXTERN trust_rst_t * trust_context_get_rst (trust_context_t *trust_context, const axutil_env_t *env)
AXIS2_EXTERN trust_rstr_t * trust_context_get_rstr (trust_context_t *trust_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t trust_context_set_rst (trust_context_t *trust_context, const axutil_env_t *env, trust_rst_t *rst)
AXIS2_EXTERN axis2_status_t trust_context_set_rstr (trust_context_t *trust_context, const axutil_env_t *env, trust_rstr_t *rstr)


Detailed Description

Holds function declarations and data for data.


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/rampart__crypto__util_8h.html0000644000076500007650000001041111202454500024304 0ustar shankarshankar Rampart/C: rampart_crypto_util.h File Reference

rampart_crypto_util.h File Reference

Crypto related utility module. More...

#include <axutil_utils_defines.h>
#include <axis2_defines.h>
#include <axutil_env.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN axis2_char_t * rampart_crypto_sha1 (const axutil_env_t *env, const axis2_char_t *nonce, const axis2_char_t *created, const axis2_char_t *password)


Detailed Description

Crypto related utility module.


Function Documentation

AXIS2_EXTERN axis2_char_t* rampart_crypto_sha1 ( const axutil_env_t *  env,
const axis2_char_t *  nonce,
const axis2_char_t *  created,
const axis2_char_t *  password 
)

Calculate the hash of concatenated string of nonce+created+password

Parameters:
env pointer to environment variable
nonce randomly created bytes
created created time
password password to be hashed
Returns:
calculated hash on success. NULL otherwise


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__rampart__credentials.html0000644000076500007650000001330111202454500025042 0ustar shankarshankar Rampart/C: Credentials Provider

Credentials Provider


Classes

struct  rampart_credentials_ops
struct  rampart_credentials

Defines

#define RAMPART_CREDENTIALS_FREE(credentials, env)   ((credentials)->ops->free (credentials, env))
#define RAMPART_CREDENTIALS_USERNAME_GET(credentials, env, msg_ctx, username, password)

Typedefs

typedef enum
rampart_credentials_status 
rampart_credentials_status_t
typedef struct
rampart_credentials_ops 
rampart_credentials_ops_t
typedef struct rampart_credentials rampart_credentials_t

Enumerations

enum  rampart_credentials_status {
  RAMPART_CREDENTIALS_PW_FOUND = 0, RAMPART_CREDENTIALS_PW_NOT_FOUND, RAMPART_CREDENTIALS_USER_FOUND, RAMPART_CREDENTIALS_USER_NOT_FOUND,
  RAMPART_CREDENTIALS_GENERAL_ERROR
}

Define Documentation

#define RAMPART_CREDENTIALS_USERNAME_GET ( credentials,
env,
msg_ctx,
username,
password   ) 

Value:

((credentials)->ops->rampart_credentials_username_get( \
            credentials, env, msg_ctx, username, password))


Typedef Documentation

typedef struct rampart_credentials_ops rampart_credentials_ops_t

Struct to get username/password pair


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__oxs__axiom.html0000644000076500007650000011621711202454500023037 0ustar shankarshankar Rampart/C: OXS Axiom

OXS Axiom
[OMXMLSecurity]


Functions

AXIS2_EXTERN axis2_status_t oxs_axiom_add_attribute (const axutil_env_t *env, axiom_node_t *node, axis2_char_t *attribute_ns, axis2_char_t *attribute_ns_uri, axis2_char_t *attribute, axis2_char_t *value)
AXIS2_EXTERN int oxs_axiom_get_number_of_children_with_qname (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *local_name, axis2_char_t *ns_uri, axis2_char_t *prefix)
AXIS2_EXTERN axiom_node_t * oxs_axiom_get_node_by_local_name (const axutil_env_t *env, axiom_node_t *node, axis2_char_t *local_name)
AXIS2_EXTERN axiom_node_t * oxs_axiom_get_node_by_id (const axutil_env_t *env, axiom_node_t *node, axis2_char_t *attr, axis2_char_t *val, axis2_char_t *ns)
AXIS2_EXTERN axis2_char_t * oxs_axiom_get_attribute_value_of_node_by_name (const axutil_env_t *env, axiom_node_t *node, axis2_char_t *attribute_name, axis2_char_t *ns)
AXIS2_EXTERN axis2_char_t * oxs_axiom_get_attribute_val_of_node_by_qname (const axutil_env_t *env, axiom_node_t *node, axutil_qname_t *qname)
AXIS2_EXTERN axiom_node_t * oxs_axiom_get_first_child_node_by_name (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *local_name, axis2_char_t *ns_uri, axis2_char_t *prefix)
AXIS2_EXTERN axis2_char_t * oxs_axiom_get_node_content (const axutil_env_t *env, axiom_node_t *node)
AXIS2_EXTERN axiom_node_t * oxs_axiom_deserialize_node (const axutil_env_t *env, axis2_char_t *buffer)
AXIS2_EXTERN axis2_bool_t oxs_axiom_check_node_name (const axutil_env_t *env, axiom_node_t *node, axis2_char_t *name, axis2_char_t *ns)
AXIS2_EXTERN axis2_status_t oxs_axiom_interchange_nodes (const axutil_env_t *env, axiom_node_t *node_to_move, axiom_node_t *node_before)
AXIS2_EXTERN axis2_status_t oxs_axiom_add_as_the_first_child (const axutil_env_t *env, axiom_node_t *parent, axiom_node_t *child)
AXIS2_EXTERN axiom_node_t * oxs_axiom_get_first_node_by_name_and_attr_val (const axutil_env_t *env, axiom_node_t *node, axis2_char_t *e_name, axis2_char_t *e_ns, axis2_char_t *attr_name, axis2_char_t *attr_val, axis2_char_t *attr_ns)
AXIS2_EXTERN axiom_node_t * oxs_axiom_get_first_node_by_name_and_attr_val_from_xml_doc (const axutil_env_t *env, axiom_node_t *node, axis2_char_t *e_name, axis2_char_t *e_ns, axis2_char_t *attr_name, axis2_char_t *attr_val, axis2_char_t *attr_ns)
AXIS2_EXTERN axiom_node_t * oxs_axiom_clone_node (const axutil_env_t *env, axiom_node_t *node)

Function Documentation

AXIS2_EXTERN axis2_status_t oxs_axiom_add_as_the_first_child ( const axutil_env_t *  env,
axiom_node_t *  parent,
axiom_node_t *  child 
)

Adds as the first child of

Parameters:
env Environment. Must not be null
parent parent node
child child node which has to be the first child of parent
Returns:
status of the operation

AXIS2_EXTERN axis2_status_t oxs_axiom_add_attribute ( const axutil_env_t *  env,
axiom_node_t *  node,
axis2_char_t *  attribute_ns,
axis2_char_t *  attribute_ns_uri,
axis2_char_t *  attribute,
axis2_char_t *  value 
)

Adds an attribute to a particular node

Parameters:
env Environment. MUST NOT be NULL
node the node where the attibute will be added
attribute_ns the the ns_prefix of the attribute
attribute_ns_uri the uri of the attribute
attribute the localname of the attribute
value the value of the attribute
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_bool_t oxs_axiom_check_node_name ( const axutil_env_t *  env,
axiom_node_t *  node,
axis2_char_t *  name,
axis2_char_t *  ns 
)

Checks whether given node is having same name and namespace as given

Parameters:
env Environment. Must not be null
node node to be checked for name and namespace
name local name to be checked against given node
ns namespace to be checked against given node. Can be null. If null, will be omitted
Returns:
AXIS2_TRUE if given name/ns is same as in the node. AXIS2_FALSE otherwise.

AXIS2_EXTERN axiom_node_t* oxs_axiom_clone_node ( const axutil_env_t *  env,
axiom_node_t *  node 
)

Clones the given node.

Parameters:
env Environment. Must not be null
node node to be cloned
Returns:
cloned node if success. NULL otherwise

AXIS2_EXTERN axiom_node_t* oxs_axiom_deserialize_node ( const axutil_env_t *  env,
axis2_char_t *  buffer 
)

Deserialises given buffer and creates the axiom node

Parameters:
env Environment. Must not be NULL
buffer representation of serialised node
Returns:
deserialised node if success. NULL otherwise.

AXIS2_EXTERN axis2_char_t* oxs_axiom_get_attribute_val_of_node_by_qname ( const axutil_env_t *  env,
axiom_node_t *  node,
axutil_qname_t *  qname 
)

Traverse thru the node and its descendents. Check if the node has a particular attribute with qname as in . Returns the attribute value.

Parameters:
env Environment. MUST NOT be NULL,
node the node to be searched
qname the qname of the attribute
Returns:
the attribute value if found, else NULL

AXIS2_EXTERN axis2_char_t* oxs_axiom_get_attribute_value_of_node_by_name ( const axutil_env_t *  env,
axiom_node_t *  node,
axis2_char_t *  attribute_name,
axis2_char_t *  ns 
)

Traverse thru the node and its descendents. Check if the node has a particular attribute with name as in and namespace as in . Returns the attribute value.

Parameters:
env Environment. MUST NOT be NULL,
node the node to be searched
attribute_name the attribute name of the node
ns namespace of the attribute
Returns:
the attribute value if found, else NULL

AXIS2_EXTERN axiom_node_t* oxs_axiom_get_first_child_node_by_name ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  local_name,
axis2_char_t *  ns_uri,
axis2_char_t *  prefix 
)

Check the node and its children. Check if the localname is equal to the given name Note: You may pass the prefix=NULL as the prefix may be different depending on the impl

Parameters:
env Environment. MUST NOT be NULL,
parent the node to be searched
local_name the local name of the node to be searched namespace uri of the node to be searched prefix of the node to be searched. If NULL, node with any prefix will be considered
Returns:
the node if found, else NULL

AXIS2_EXTERN axiom_node_t* oxs_axiom_get_first_node_by_name_and_attr_val ( const axutil_env_t *  env,
axiom_node_t *  node,
axis2_char_t *  e_name,
axis2_char_t *  e_ns,
axis2_char_t *  attr_name,
axis2_char_t *  attr_val,
axis2_char_t *  attr_ns 
)

Traverse thru the node and its children. Check if the element has the given qname and has a id attribute equal to the given value.

Parameters:
env Environment. MUST NOT be NULL,
node the node to be searched
e_name element name
e_ns element namespace. If NULL doesn't consider the namespaces
attr_name the attribute name of the node
attr_val the attribute value of the node
attr_ns the attribute namespace. If NULL doesn't consider namespaces.
Returns:
the node if found, else NULL

AXIS2_EXTERN axiom_node_t* oxs_axiom_get_first_node_by_name_and_attr_val_from_xml_doc ( const axutil_env_t *  env,
axiom_node_t *  node,
axis2_char_t *  e_name,
axis2_char_t *  e_ns,
axis2_char_t *  attr_name,
axis2_char_t *  attr_val,
axis2_char_t *  attr_ns 
)

First find the root of the scope node. Traverse thru the root node and its children. Check if the element has the given qname and has a attribute equal to the given values.

Parameters:
env Environment. MUST NOT be NULL,
node the node to be searched
e_name element name
e_ns element namespace. If NULL doesn't consider the namespaces
attr_name the attribute name of the node
attr_val the attribute value of the node
attr_ns the attribute namespace. If NULL doesn't consider namespaces.
Returns:
the node if found, else NULL

AXIS2_EXTERN axiom_node_t* oxs_axiom_get_node_by_id ( const axutil_env_t *  env,
axiom_node_t *  node,
axis2_char_t *  attr,
axis2_char_t *  val,
axis2_char_t *  ns 
)

Traverse thru the node and its descendents. Check if the node has a particular attibure value, whose attribute name as in and value as in

Parameters:
env Environment. MUST NOT be NULL,
node the node to be searched
attr the attribute name of the node
val the attribute value of the node
ns namespace of the attribute
Returns:
the node if found, else NULL

AXIS2_EXTERN axiom_node_t* oxs_axiom_get_node_by_local_name ( const axutil_env_t *  env,
axiom_node_t *  node,
axis2_char_t *  local_name 
)

Traverse thru the node and its descendents. Check if the localname is equal to the given name

Parameters:
env Environment. MUST NOT be NULL,
node the node to be searched
localname the local name of the node to be searched
Returns:
the node if found, else NULL

AXIS2_EXTERN axis2_char_t* oxs_axiom_get_node_content ( const axutil_env_t *  env,
axiom_node_t *  node 
)

Returns content of a node

Parameters:
env Environment. MUST NOT be NULL,
node the node whose content should be retrieved
Returns:
the content of the node if found, else NULL

AXIS2_EXTERN int oxs_axiom_get_number_of_children_with_qname ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  local_name,
axis2_char_t *  ns_uri,
axis2_char_t *  prefix 
)

Finds the number of childern with given qname

Parameters:
env Environment. MUST NOT be NULL,
parent the root element defining start of the search
localname the local part of the qname
ns_uri uri part of the qname
prefix the prefix part of the qname
Returns:
the number of children found

AXIS2_EXTERN axis2_status_t oxs_axiom_interchange_nodes ( const axutil_env_t *  env,
axiom_node_t *  node_to_move,
axiom_node_t *  node_before 
)

moves the given node before second node.

Parameters:
env Environment. Must not be null
node_to_move node to be moved
node_before node_to_move will be moved before this node
Returns:
status of the operation


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/rampart__util_8h-source.html0000644000076500007650000002624011202454500024052 0ustar shankarshankar Rampart/C: rampart_util.h Source File

rampart_util.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #include <axutil_utils_defines.h>
00019 #include <axis2_defines.h>
00020 #include <axutil_date_time.h>
00021 #include <axutil_env.h>
00022 #include <axis2_msg_ctx.h>
00023 #include <rampart_authn_provider.h>
00024 #include <rampart_credentials.h>
00025 #include <rampart_callback.h>
00026 #include <rampart_replay_detector.h>
00027 #include <rampart_sct_provider.h>
00028 
00040 #ifndef RAMPART_UTIL_H
00041 #define RAMPART_UTIL_H
00042 
00043 #ifdef __cplusplus
00044 extern "C" {
00045 #endif
00046 
00054     AXIS2_EXTERN rampart_credentials_t* AXIS2_CALL
00055     rampart_load_credentials_module(
00056         const axutil_env_t *env,
00057         axis2_char_t *cred_module_name);
00058 
00069     AXIS2_EXTERN rampart_credentials_status_t AXIS2_CALL
00070     rampart_call_credentials(
00071         const axutil_env_t *env,
00072         rampart_credentials_t *cred_module,
00073         axis2_msg_ctx_t *ctx,
00074         axis2_char_t **username,
00075         axis2_char_t **password);
00076 
00084     AXIS2_EXTERN rampart_authn_provider_t* AXIS2_CALL
00085     rampart_load_auth_module(
00086         const axutil_env_t *env,
00087         axis2_char_t *auth_module_name);
00088 
00096     AXIS2_EXTERN rampart_replay_detector_t* AXIS2_CALL
00097     rampart_load_replay_detector(
00098         const axutil_env_t *env,
00099         axis2_char_t *replay_detector_name);
00100 
00108     AXIS2_EXTERN rampart_sct_provider_t* AXIS2_CALL
00109     rampart_load_sct_provider(
00110         const axutil_env_t *env,
00111         axis2_char_t *sct_provider_name);
00112 
00120     AXIS2_EXTERN rampart_callback_t* AXIS2_CALL
00121     rampart_load_pwcb_module(
00122         const axutil_env_t *env,
00123         axis2_char_t *callback_module_name);
00124 
00125 
00138     AXIS2_EXTERN rampart_authn_provider_status_t AXIS2_CALL
00139     rampart_authenticate_un_pw(
00140         const axutil_env_t *env,
00141         rampart_authn_provider_t *authp,
00142         const axis2_char_t *username,
00143         const axis2_char_t *password,
00144         const axis2_char_t *nonce,
00145         const axis2_char_t *created,
00146         const axis2_char_t *password_type,
00147         axis2_msg_ctx_t *msg_ctx);
00148 
00149 
00157     AXIS2_EXTERN axis2_char_t* AXIS2_CALL
00158     rampart_callback_password(
00159         const axutil_env_t *env,
00160         rampart_callback_t *callback_module,
00161         const axis2_char_t *username);
00162 
00170         AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00171         rampart_callback_pkcs12_password(
00172             const axutil_env_t *env,
00173             rampart_callback_t *callback_module,
00174             const axis2_char_t *username);      
00175 
00183     AXIS2_EXTERN axis2_char_t* AXIS2_CALL
00184     rampart_generate_time(
00185         const axutil_env_t *env, 
00186         int ttl, 
00187         axis2_bool_t with_millisecond);
00188 
00196     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00197     rampart_compare_date_time(
00198         const axutil_env_t *env, 
00199         axis2_char_t *dt1, 
00200         axis2_char_t *dt2);
00201 
00202     /* @} */
00203 #ifdef __cplusplus
00204 }
00205 #endif
00206 
00207 #endif    /* RAMPART_UTIL_H */
00208 
00209 

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/openssl__cipher__ctx_8h-source.html0000644000076500007650000002332311202454500025400 0ustar shankarshankar Rampart/C: openssl_cipher_ctx.h Source File

openssl_cipher_ctx.h

Go to the documentation of this file.
00001 /*
00002  *   Copyright 2003-2004 The Apache Software Foundation.
00003  *
00004  *   Licensed under the Apache License, Version 2.0 (the "License");
00005  *   you may not use this file except in compliance with the License.
00006  *   You may obtain a copy of the License at
00007  *
00008  *       http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  *   Unless required by applicable law or agreed to in writing, software
00011  *   distributed under the License is distributed on an "AS IS" BASIS,
00012  *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  *   See the License for the specific language governing permissions and
00014  *   limitations under the License.
00015  */
00016 #include <axis2_defines.h>
00017 #include <axutil_env.h>
00018 #include <openssl/evp.h>
00019 #include <oxs_key.h>
00024 #ifndef OPENSSL_CIPHER_CTX_H
00025 #define OPENSSL_CIPHER_CTX_H
00026 
00035 #ifdef __cplusplus
00036 extern "C" {
00037 #endif
00038 
00040     typedef struct openssl_cipher_ctx_t openssl_cipher_ctx_t;
00041 
00048     axis2_status_t AXIS2_CALL
00049     openssl_cipher_ctx_free(
00050         openssl_cipher_ctx_t *ctx,
00051         const axutil_env_t *env);
00058     const EVP_CIPHER* AXIS2_CALL
00059     openssl_cipher_ctx_get_cipher(
00060         openssl_cipher_ctx_t *ctx,
00061         const axutil_env_t *env);
00068     oxs_key_t *AXIS2_CALL
00069     openssl_cipher_ctx_get_key(
00070         openssl_cipher_ctx_t *ctx,
00071         const axutil_env_t *env);
00078     axis2_char_t *AXIS2_CALL
00079     openssl_cipher_ctx_get_iv(
00080         openssl_cipher_ctx_t *ctx,
00081         const axutil_env_t *env);
00088     axis2_char_t *AXIS2_CALL
00089     openssl_cipher_ctx_get_pad(
00090         openssl_cipher_ctx_t *ctx,
00091         const axutil_env_t *env);
00092 
00100     axis2_status_t AXIS2_CALL
00101     openssl_cipher_ctx_set_cipher(
00102         openssl_cipher_ctx_t *ctx,
00103         const axutil_env_t *env,
00104         const EVP_CIPHER*);
00105 
00113     axis2_status_t AXIS2_CALL
00114     openssl_cipher_ctx_set_key(
00115         openssl_cipher_ctx_t *ctx,
00116         const axutil_env_t *env,
00117         oxs_key_t *key);
00118 
00126     axis2_status_t AXIS2_CALL
00127     openssl_cipher_ctx_set_iv(
00128         openssl_cipher_ctx_t *ctx,
00129         const axutil_env_t *env,
00130         axis2_char_t *iv);
00131 
00139     axis2_status_t AXIS2_CALL
00140     openssl_cipher_ctx_set_pad(
00141         openssl_cipher_ctx_t *ctx,
00142         const axutil_env_t *env,
00143         axis2_char_t *pad);
00144 
00145 
00151     AXIS2_EXTERN openssl_cipher_ctx_t *AXIS2_CALL
00152     openssl_cipher_ctx_create(const axutil_env_t *env);
00153 
00154     /* @} */
00155 #ifdef __cplusplus
00156 }
00157 #endif
00158 
00159 #endif    /* OPENSSL_CIPHER_CTX_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/openssl__util_8h.html0000644000076500007650000000676711202454500022605 0ustar shankarshankar Rampart/C: openssl_util.h File Reference

openssl_util.h File Reference

General utility routines for openssl related functions. More...

#include <openssl/evp.h>
#include <oxs_buffer.h>
#include <openssl_cipher_property.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN axis2_status_t openssl_generate_random_data (const axutil_env_t *env, oxs_buffer_t *buffer, int size)
AXIS2_EXTERN axis2_status_t openssl_populate_cipher_property (const axutil_env_t *env, openssl_cipher_property_t *cprop)
AXIS2_EXTERN EVP_CIPHER * openssl_get_evp_cipher_by_name (const axutil_env_t *env, axis2_char_t *cipher_name)


Detailed Description

General utility routines for openssl related functions.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/oxs__buffer_8h.html0000644000076500007650000002152211202454500022211 0ustar shankarshankar Rampart/C: oxs_buffer.h File Reference

oxs_buffer.h File Reference

The buffer representation in OMXMLSecurity. More...

#include <axis2_defines.h>
#include <axutil_env.h>
#include <axis2_util.h>
#include <oxs_axiom.h>
#include <oxs_error.h>
#include <oxs_constants.h>
#include <stdio.h>

Go to the source code of this file.

Defines

#define OXS_BUFFER_INITIAL_SIZE   1024

Typedefs

typedef struct oxs_buffer oxs_buffer_t

Enumerations

enum  oxs_AllocMode { oxs_alloc_mode_exact = 0, oxs_alloc_mode_double }

Functions

AXIS2_EXTERN axis2_status_t oxs_buffer_free (oxs_buffer_t *buffer, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_buffer_remove_head (oxs_buffer_t *buffer, const axutil_env_t *env, int size)
AXIS2_EXTERN axis2_status_t oxs_buffer_remove_tail (oxs_buffer_t *buffer, const axutil_env_t *env, int size)
AXIS2_EXTERN axis2_status_t oxs_buffer_populate (oxs_buffer_t *buffer, const axutil_env_t *env, unsigned char *data, int size)
AXIS2_EXTERN axis2_status_t oxs_buffer_append (oxs_buffer_t *buffer, const axutil_env_t *env, unsigned char *data, int size)
AXIS2_EXTERN axis2_status_t oxs_buffer_prepend (oxs_buffer_t *buffer, const axutil_env_t *env, unsigned char *data, int size)
AXIS2_EXTERN axis2_status_t oxs_buffer_read_file (oxs_buffer_t *buffer, const axutil_env_t *env, const axis2_char_t *filename)
AXIS2_EXTERN axis2_status_t oxs_buffer_set_size (oxs_buffer_t *buffer, const axutil_env_t *env, int size)
AXIS2_EXTERN axis2_status_t oxs_buffer_set_max_size (oxs_buffer_t *buffer, const axutil_env_t *env, int size)
AXIS2_EXTERN unsigned char * oxs_buffer_get_data (oxs_buffer_t *buffer, const axutil_env_t *env)
AXIS2_EXTERN int oxs_buffer_get_size (oxs_buffer_t *buffer, const axutil_env_t *env)
AXIS2_EXTERN int oxs_buffer_get_max_size (oxs_buffer_t *buffer, const axutil_env_t *env)
AXIS2_EXTERN oxs_buffer_toxs_buffer_dup (oxs_buffer_t *buffer, const axutil_env_t *env)
AXIS2_EXTERN oxs_buffer_toxs_buffer_create (const axutil_env_t *env)


Detailed Description

The buffer representation in OMXMLSecurity.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/oxs__axiom_8h.html0000644000076500007650000001617411202454500022064 0ustar shankarshankar Rampart/C: oxs_axiom.h File Reference

oxs_axiom.h File Reference

Utility functions related to AXIOM. A place for common code. More...

#include <axis2_defines.h>
#include <axutil_env.h>
#include <axis2_util.h>
#include <axiom_node.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN axis2_status_t oxs_axiom_add_attribute (const axutil_env_t *env, axiom_node_t *node, axis2_char_t *attribute_ns, axis2_char_t *attribute_ns_uri, axis2_char_t *attribute, axis2_char_t *value)
AXIS2_EXTERN int oxs_axiom_get_number_of_children_with_qname (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *local_name, axis2_char_t *ns_uri, axis2_char_t *prefix)
AXIS2_EXTERN axiom_node_t * oxs_axiom_get_node_by_local_name (const axutil_env_t *env, axiom_node_t *node, axis2_char_t *local_name)
AXIS2_EXTERN axiom_node_t * oxs_axiom_get_node_by_id (const axutil_env_t *env, axiom_node_t *node, axis2_char_t *attr, axis2_char_t *val, axis2_char_t *ns)
AXIS2_EXTERN axis2_char_t * oxs_axiom_get_attribute_value_of_node_by_name (const axutil_env_t *env, axiom_node_t *node, axis2_char_t *attribute_name, axis2_char_t *ns)
AXIS2_EXTERN axis2_char_t * oxs_axiom_get_attribute_val_of_node_by_qname (const axutil_env_t *env, axiom_node_t *node, axutil_qname_t *qname)
AXIS2_EXTERN axiom_node_t * oxs_axiom_get_first_child_node_by_name (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *local_name, axis2_char_t *ns_uri, axis2_char_t *prefix)
AXIS2_EXTERN axis2_char_t * oxs_axiom_get_node_content (const axutil_env_t *env, axiom_node_t *node)
AXIS2_EXTERN axiom_node_t * oxs_axiom_deserialize_node (const axutil_env_t *env, axis2_char_t *buffer)
AXIS2_EXTERN axis2_bool_t oxs_axiom_check_node_name (const axutil_env_t *env, axiom_node_t *node, axis2_char_t *name, axis2_char_t *ns)
AXIS2_EXTERN axis2_status_t oxs_axiom_interchange_nodes (const axutil_env_t *env, axiom_node_t *node_to_move, axiom_node_t *node_before)
AXIS2_EXTERN axis2_status_t oxs_axiom_add_as_the_first_child (const axutil_env_t *env, axiom_node_t *parent, axiom_node_t *child)
AXIS2_EXTERN axiom_node_t * oxs_axiom_get_first_node_by_name_and_attr_val (const axutil_env_t *env, axiom_node_t *node, axis2_char_t *e_name, axis2_char_t *e_ns, axis2_char_t *attr_name, axis2_char_t *attr_val, axis2_char_t *attr_ns)
AXIS2_EXTERN axiom_node_t * oxs_axiom_get_first_node_by_name_and_attr_val_from_xml_doc (const axutil_env_t *env, axiom_node_t *node, axis2_char_t *e_name, axis2_char_t *e_ns, axis2_char_t *attr_name, axis2_char_t *attr_val, axis2_char_t *attr_ns)
AXIS2_EXTERN axiom_node_t * oxs_axiom_clone_node (const axutil_env_t *env, axiom_node_t *node)


Detailed Description

Utility functions related to AXIOM. A place for common code.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/oxs__asym__ctx_8h-source.html0000644000076500007650000002663211202454500024233 0ustar shankarshankar Rampart/C: oxs_asym_ctx.h Source File

oxs_asym_ctx.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef OXS_ASYM_CTX_H
00019 #define OXS_ASYM_CTX_H
00020 
00021 
00027 #include <axis2_defines.h>
00028 #include <axutil_env.h>
00029 #include <axiom_node.h>
00030 #include <oxs_x509_cert.h>
00031 #include <openssl_pkey.h>
00032 
00033 #ifdef __cplusplus
00034 extern "C"
00035 {
00036 #endif
00037 
00043     typedef enum  {
00044         OXS_ASYM_CTX_FORMAT_UNKNOWN=0,
00045         OXS_ASYM_CTX_FORMAT_PEM,
00046         OXS_ASYM_CTX_FORMAT_PKCS12
00047     }oxs_asym_ctx_format_t;
00048 
00049     typedef enum  {
00050         OXS_ASYM_CTX_OPERATION_PUB_ENCRYPT=0,
00051         OXS_ASYM_CTX_OPERATION_PRV_DECRYPT,
00052         OXS_ASYM_CTX_OPERATION_PUB_DECRYPT,
00053         OXS_ASYM_CTX_OPERATION_PRV_ENCRYPT
00054     }oxs_asym_ctx_operation_t;
00055 
00056     typedef struct oxs_asym_ctx_t oxs_asym_ctx_t;
00057 
00058     /*Create function*/
00059     AXIS2_EXTERN oxs_asym_ctx_t *AXIS2_CALL
00060     oxs_asym_ctx_create(const axutil_env_t *env);
00061 
00062     /*Free*/
00063     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00064     oxs_asym_ctx_free(oxs_asym_ctx_t *ctx,
00065                       const axutil_env_t *env);
00066 
00067 
00068     /**********************Getter functions******************************************/
00069 
00076     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00077     oxs_asym_ctx_free(oxs_asym_ctx_t *ctx,
00078                       const axutil_env_t *env);
00079 
00086     AXIS2_EXTERN axis2_char_t* AXIS2_CALL
00087     oxs_asym_ctx_get_algorithm(const oxs_asym_ctx_t *ctx,
00088                                const axutil_env_t *env);
00089 
00096     AXIS2_EXTERN axis2_char_t* AXIS2_CALL
00097     oxs_asym_ctx_get_st_ref_pattern(const oxs_asym_ctx_t *ctx,
00098                                     const axutil_env_t *env);
00099 
00106     AXIS2_EXTERN oxs_asym_ctx_operation_t AXIS2_CALL
00107     oxs_asym_ctx_get_operation(const oxs_asym_ctx_t *ctx,
00108                                const axutil_env_t *env);
00109 
00116     AXIS2_EXTERN openssl_pkey_t* AXIS2_CALL
00117     oxs_asym_ctx_get_private_key(const oxs_asym_ctx_t *ctx,
00118                                  const axutil_env_t *env);
00119 
00126     AXIS2_EXTERN oxs_x509_cert_t* AXIS2_CALL
00127     oxs_asym_ctx_get_certificate(const oxs_asym_ctx_t *ctx,
00128                                  const axutil_env_t *env);
00129 
00137     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00138     oxs_asym_ctx_set_algorithm(oxs_asym_ctx_t *ctx,
00139                                const axutil_env_t *env,
00140                                axis2_char_t *algorithm);
00148     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00149     oxs_asym_ctx_set_st_ref_pattern(oxs_asym_ctx_t *ctx,
00150                                     const axutil_env_t *env,
00151                                     axis2_char_t *st_ref_pattern);
00159     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00160     oxs_asym_ctx_set_operation(oxs_asym_ctx_t *ctx,
00161                                const axutil_env_t *env,
00162                                oxs_asym_ctx_operation_t operation);
00170     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00171     oxs_asym_ctx_set_certificate(oxs_asym_ctx_t *ctx,
00172                                  const axutil_env_t *env,
00173                                  oxs_x509_cert_t *certificate);
00181     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00182     oxs_asym_ctx_set_private_key(oxs_asym_ctx_t *asym_ctx,
00183                                  const axutil_env_t *env,
00184                                  openssl_pkey_t *private_key);
00186 #ifdef __cplusplus
00187 }
00188 #endif
00189 
00190 #endif                          /* OXS_ASYM_CTX_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/oxs__xml__signature_8h.html0000644000076500007650000001035511202454500023762 0ustar shankarshankar Rampart/C: oxs_xml_signature.h File Reference

oxs_xml_signature.h File Reference

Does the XML Signature for OMXMLSecurity. More...

#include <axis2_defines.h>
#include <oxs_ctx.h>
#include <axutil_env.h>
#include <axiom_node.h>
#include <axiom_element.h>
#include <axutil_qname.h>
#include <oxs_sign_ctx.h>
#include <oxs_sign_part.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN axis2_status_t oxs_xml_sig_sign (const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, axiom_node_t *parent, axiom_node_t **sig_node)
AXIS2_EXTERN axis2_status_t oxs_xml_sig_verify (const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, axiom_node_t *signature_node, axiom_node_t *scope_node)
AXIS2_EXTERN axis2_status_t oxs_xml_sig_verify_sign_part (const axutil_env_t *env, oxs_sign_part_t *sign_part)
AXIS2_EXTERN axis2_status_t oxs_xml_sig_verify_digests (const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx)
AXIS2_EXTERN axis2_status_t oxs_xml_sig_process_ref_node (const axutil_env_t *env, oxs_sign_part_t *sign_part, axiom_node_t *ref_node, axiom_node_t *scope_node)
AXIS2_EXTERN axis2_status_t oxs_xml_sig_process_signature_node (const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, axiom_node_t *signature_node, axiom_node_t *scope_node)


Detailed Description

Does the XML Signature for OMXMLSecurity.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/rampart__sct__provider_8h.html0000644000076500007650000000672011202454500024442 0ustar shankarshankar Rampart/C: rampart_sct_provider.h File Reference

rampart_sct_provider.h File Reference

Security context token provider module for rampart. More...

#include <axis2_defines.h>
#include <axutil_env.h>
#include <rampart_context.h>

Go to the source code of this file.

Classes

struct  rampart_sct_provider_ops
struct  rampart_sct_provider

Defines

#define RAMPART_SCT_PROVIDER_FREE(sct_provider, env)   ((sct_provider)->ops->free(sct_provider, env))

Typedefs

typedef struct
rampart_sct_provider_ops 
rampart_sct_provider_ops_t
typedef struct rampart_sct_provider rampart_sct_provider_t


Detailed Description

Security context token provider module for rampart.


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__sec__header__processor.html0000644000076500007650000001052311202454500025342 0ustar shankarshankar Rampart/C: Security Header Processor

Security Header Processor
[Rampart Utilities]


Functions

AXIS2_EXTERN axis2_status_t rampart_shp_process_sec_header (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_soap_envelope_t *soap_envelope, axiom_node_t *sec_node)

Function Documentation

AXIS2_EXTERN axis2_status_t rampart_shp_process_sec_header ( const axutil_env_t *  env,
axis2_msg_ctx_t *  msg_ctx,
rampart_context_t *  rampart_context,
axiom_soap_envelope_t *  soap_envelope,
axiom_node_t *  sec_node 
)

Processes a message depending on it's security related claims. This is the main module in the infow of a message if rampart is enabled. Processing is depending on the order of tokens apear in the Also the module will check for security policy settings

Parameters:
env pointer to environment struct
msg_ctx message context
soap_envelope the SOAP envelope
sec_node The security element
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/rampart__credentials_8h.html0000644000076500007650000001105011202454500024065 0ustar shankarshankar Rampart/C: rampart_credentials.h File Reference

rampart_credentials.h File Reference

The credentials interface for rampart. To retrieve a username and password pair. More...

#include <axis2_defines.h>
#include <axutil_error.h>
#include <axutil_env.h>
#include <axutil_utils.h>
#include <axis2_msg_ctx.h>
#include <axutil_param.h>

Go to the source code of this file.

Classes

struct  rampart_credentials_ops
struct  rampart_credentials

Defines

#define RAMPART_CREDENTIALS_FREE(credentials, env)   ((credentials)->ops->free (credentials, env))
#define RAMPART_CREDENTIALS_USERNAME_GET(credentials, env, msg_ctx, username, password)

Typedefs

typedef enum
rampart_credentials_status 
rampart_credentials_status_t
typedef struct
rampart_credentials_ops 
rampart_credentials_ops_t
typedef struct rampart_credentials rampart_credentials_t

Enumerations

enum  rampart_credentials_status {
  RAMPART_CREDENTIALS_PW_FOUND = 0, RAMPART_CREDENTIALS_PW_NOT_FOUND, RAMPART_CREDENTIALS_USER_FOUND, RAMPART_CREDENTIALS_USER_NOT_FOUND,
  RAMPART_CREDENTIALS_GENERAL_ERROR
}


Detailed Description

The credentials interface for rampart. To retrieve a username and password pair.


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/oxs__constants_8h.html0000644000076500007650000024312311202454500022757 0ustar shankarshankar Rampart/C: oxs_constants.h File Reference

oxs_constants.h File Reference

Constants for OMXMLSecurity. More...

Go to the source code of this file.

Defines

#define OXS_DEFAULT_KT_ALGO_HREF   OXS_HREF_RSA_PKCS1
#define OXS_DEFAULT_SYM_ALGO   OXS_HREF_AES_256_CBC
#define OXS_STR_DEFAULT   OXS_STR_EMBEDDED
#define OXS_XENC   "xenc"
#define OXS_DS   "ds"
#define OXS_WSSE   "wsse"
#define OXS_WSSE_11   "wsse11"
#define OXS_WSU   "wsu"
#define OXS_WSC   "wsc"
#define OXS_WSSE_XMLNS   "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
#define OXS_WSSE_11_XMLNS   "http://docs.oasis-open.org/wss/oasis-wss-wssecurity-secext-1.1.xsd"
#define OXS_WSU_XMLNS   "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
#define OXS_ENCDATA_ID   "EncDataID"
#define OXS_ENCKEY_ID   "EncKeyID"
#define OXS_SIG_ID   "SigID"
#define OXS_CERT_ID   "CertID"
#define OXS_EMBEDDED_ID   "EmbeddedID"
#define OXS_DERIVED_ID   "DKID"
#define OXS_SIG_CONF_ID   "SigConfID"
#define OXS_LOCAL_REFERENCE_PREFIX   "#"
#define OXS_DSIG_NS   "http://www.w3.org/2000/09/xmldsig#"
#define OXS_ENC_NS   "http://www.w3.org/2001/04/xmlenc#"
#define OXS_WSSE_NS   "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
#define OXS_WSC_NS_05_02   "http://schemas.xmlsoap.org/ws/2005/02/sc"
#define OXS_WSC_NS_05_12   "http://docs.oasis-open.org/ws-sx/ws-secureconversation/200512"
#define OXS_NODE_SIGNATURE   "Signature"
#define OXS_NODE_SIGNEDINFO   "SignedInfo"
#define OXS_NODE_CANONICALIZATION_METHOD   "CanonicalizationMethod"
#define OXS_NODE_SIGNATURE_METHOD   "SignatureMethod"
#define OXS_NODE_SIGNATURE_VALUE   "SignatureValue"
#define OXS_NODE_DIGEST_METHOD   "DigestMethod"
#define OXS_NODE_DIGEST_VALUE   "DigestValue"
#define OXS_NODE_OBJECT   "Object"
#define OXS_NODE_MANIFEST   "Manifest"
#define OXS_NODE_SIGNATUREPROPERTIES   "SignatureProperties"
#define OXS_NODE_SIGNATURE_CONFIRMATION   "SignatureConfirmation"
#define OXS_NODE_ENCRYPTED_DATA   "EncryptedData"
#define OXS_NODE_ENCRYPTION_METHOD   "EncryptionMethod"
#define OXS_NODE_ENCRYPTION_PROPERTIES   "EncryptionProperties"
#define OXS_NODE_ENCRYPTION_PROPERTY   "EncryptionProperty"
#define OXS_NODE_CIPHER_DATA   "CipherData"
#define OXS_NODE_CIPHER_VALUE   "CipherValue"
#define OXS_NODE_CIPHER_REFERENCE   "CipherReference"
#define OXS_NODE_REFERENCE_LIST   "ReferenceList"
#define OXS_NODE_DATA_REFERENCE   "DataReference"
#define OXS_NODE_KEY_REFERENCE   "KeyReference"
#define OXS_NODE_CARRIED_KEYNAME   "CarriedKeyName"
#define OXS_TYPE_ENC_CONTENT   "http://www.w3.org/2001/04/xmlenc#Content"
#define OXS_TYPE_ENC_ELEMENT   "http://www.w3.org/2001/04/xmlenc#Element"
#define OXS_NODE_KEY_INFO   "KeyInfo"
#define OXS_NODE_REFERENCE   "Reference"
#define OXS_NODE_TRANSFORMS   "Transforms"
#define OXS_NODE_TRANSFORM   "Transform"
#define OXS_NODE_TRANSFORMATIONPARAMETERS   "TransformationParameters"
#define OXS_NODE_BINARY_SECURITY_TOKEN   "BinarySecurityToken"
#define OXS_NODE_KEY_IDENTIFIER   "KeyIdentifier"
#define OXS_NODE_SECURITY_TOKEN_REFRENCE   "SecurityTokenReference"
#define OXS_NODE_EMBEDDED   "Embedded"
#define OXS_NODE_DERIVED_KEY_TOKEN   "DerivedKeyToken"
#define OXS_NODE_PROPERTIES   "Properties"
#define OXS_NODE_GENERATION   "Generation"
#define OXS_NODE_OFFSET   "Offset"
#define OXS_NODE_LENGTH   "Length"
#define OXS_NODE_LABEL   "Label"
#define OXS_NODE_NONCE   "Nonce"
#define OXS_NODE_SECURITY_CONTEXT_TOKEN   "SecurityContextToken"
#define OXS_NODE_IDENTIFIER   "Identifier"
#define OXS_VALUE_TYPE_SECURITY_CONTEXT_TOKEN_05_02   "http://schemas.xmlsoap.org/ws/2005/02/sc/sct"
#define OXS_VALUE_TYPE_SECURITY_CONTEXT_TOKEN_05_12   "http://docs.oasis-open.org/ws-sx/ws-secureconversation/200512/sct"
#define OXS_NODE_SAML_ASSERTION   "Assertion"
#define OXS_NODE_SAML_PREFIX   "saml"
#define OXS_NODE_SAML_SUBJECT_CONFIRMATION_METHOD   "ConfirmationMethod"
#define OXS_ATTR_ID   "Id"
#define OXS_ATTR_URI   "URI"
#define OXS_ATTR_TYPE   "Type"
#define OXS_ATTR_MIMETYPE   "MimeType"
#define OXS_ATTR_ENCODING   "Encoding"
#define OXS_ATTR_ALGORITHM   "Algorithm"
#define OXS_ATTR_FILTER   "Filter"
#define OXS_ATTR_RECIPIENT   "Recipient"
#define OXS_ATTR_TARGET   "Target"
#define OXS_ATTR_ENCODING_TYPE   "EncodingType"
#define OXS_ATTR_VALUE_TYPE   "ValueType"
#define OXS_ATTR_VALUE   "Value"
#define OXS_NAME_AES_128_CBC   "aes128-cbc"
#define OXS_HREF_AES_128_CBC   "http://www.w3.org/2001/04/xmlenc#aes128-cbc"
#define OXS_NAME_AES_192_CBC   "aes192-cbc"
#define OXS_HREF_AES_192_CBC   "http://www.w3.org/2001/04/xmlenc#aes192-cbc"
#define OXS_NAME_AES_256_CBC   "aes256-cbc"
#define OXS_HREF_AES_256_CBC   "http://www.w3.org/2001/04/xmlenc#aes256-cbc"
#define OXS_NAME_KW_AES_128   "kw-aes128"
#define OXS_HREF_KW_AES_128   "http://www.w3.org/2001/04/xmlenc#kw-aes128"
#define OXS_NAME_KW_AES_192   "kw-aes192"
#define OXS_HREF_KW_AES_192   "http://www.w3.org/2001/04/xmlenc#kw-aes192"
#define OXS_NAME_KW_AES_256   "kw-aes256"
#define OXS_HREF_KW_AES_256   "http://www.w3.org/2001/04/xmlenc#kw-aes256"
#define OXS_NAME_BASE64   "base64"
#define OXS_HREF_BASE64   "http://www.w3.org/2000/09/xmldsig#base64"
#define OXS_NAME_DES_KEY_VALUE   "des"
#define OXS_NAME_DES3_CBC   "tripledes-cbc"
#define OXS_HREF_DES3_CBC   "http://www.w3.org/2001/04/xmlenc#tripledes-cbc"
#define OXS_NAME_KW_DES3   "kw-tripledes"
#define OXS_HREF_KW_DES3   "http://www.w3.org/2001/04/xmlenc#kw-tripledes"
#define OXS_NAME_DSA_KEY_VALUE   "dsa"
#define OXS_NODE_DSA_KEY_VALUE   "DSAKeyValue"
#define OXS_HREF_DSA_KEY_VALUE   "http://www.w3.org/2000/09/xmldsig#DSAKeyValue"
#define OXS_NAME_DSA_SHA1   "dsa-sha1"
#define OXS_HREF_DSA_SHA1   "http://www.w3.org/2000/09/xmldsig#dsa-sha1"
#define OXS_NAME_HMAC_SHA1   "HmacSha1"
#define OXS_HREF_HMAC_SHA1   "http://www.w3.org/2000/09/xmldsig#hmac-sha1"
#define OXS_NAME_ENCRYPTED_KEY   "enc-key"
#define OXS_NODE_ENCRYPTED_KEY   "EncryptedKey"
#define OXS_HREF_ENCRYPTED_KEY   "http://www.w3.org/2001/04/xmlenc#EncryptedKey"
#define OXS_HREF_XML_C14N   "http://www.w3.org/TR/2001/REC-xml-c14n-20010315"
#define OXS_HREF_XML_EXC_C14N   "http://www.w3.org/2001/10/xml-exc-c14n#"
#define OXS_HREF_XML_C14N_WITH_COMMENTS   "http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"
#define OXS_HREF_XML_EXC_C14N_WITH_COMMENTS   "http://www.w3.org/2001/10/xml-exc-c14n#WithComments"
#define OXS_HREF_TRANSFORM_XML_EXC_C14N   OXS_HREF_XML_EXC_C14N
#define OXS_HREF_TRANSFORM_STR_TRANSFORM   "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#STR-Transform"
#define OXS_HREF_TRANSFORM_ENVELOPED_SIGNATURE   "http://www.w3.org/2000/09/xmldsig#enveloped-signature"
#define OXS_NAME_KEY_NAME   "key-name"
#define OXS_NODE_KEY_NAME   "KeyName"
#define OXS_NAME_KEY_VALUE   "key-value"
#define OXS_NODE_KEY_VALUE   "KeyValue"
#define OXS_NAME_MD5   "md5"
#define OXS_HREF_MD5   "http://www.w3.org/2001/04/xmldsig-more#md5"
#define OXS_NAME_RETRIEVAL_METHOD   "retrieval-method"
#define OXS_NODE_RETRIEVAL_METHOD   "RetrievalMethod"
#define OXS_NAME_RSAKEY_VALUE   "rsa"
#define OXS_NODE_RSAKEY_VALUE   "RSAKeyValue"
#define OXS_HREF_RSAKEY_VALUE   "http://www.w3.org/2000/09/xmldsig#RSAKeyValue"
#define OXS_NAME_RSA_MD5   "rsa-md5"
#define OXS_HREF_RSA_MD5   "http://www.w3.org/2001/04/xmldsig-more#rsa-md5"
#define OXS_NAME_RSA_RIPEMD160   "rsa-ripemd160"
#define OXS_HREF_RSA_RIPEMD160   "http://www.w3.org/2001/04/xmldsig-more#rsa-ripemd160"
#define OXS_NAME_RSA_SHA1   "rsa-sha1"
#define OXS_HREF_RSA_SHA1   "http://www.w3.org/2000/09/xmldsig#rsa-sha1"
#define OXS_NAME_RSA_SHA224   "rsa-sha224"
#define OXS_HREF_RSA_SHA224   "http://www.w3.org/2001/04/xmldsig-more#rsa-sha224"
#define OXS_NAME_RSA_SHA256   "rsa-sha256"
#define OXS_HREF_RSA_SHA256   "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"
#define OXS_NAME_RSA_SHA384   "rsa-sha384"
#define OXS_HREF_RSA_SHA384   "http://www.w3.org/2001/04/xmldsig-more#rsa-sha384"
#define OXS_NAME_RSA_SHA512   "rsa-sha512"
#define OXS_HREF_RSA_SHA512   "http://www.w3.org/2001/04/xmldsig-more#rsa-sha512"
#define OXS_NAME_RSA_PKCS1   "rsa-1_5"
#define OXS_HREF_RSA_PKCS1   "http://www.w3.org/2001/04/xmlenc#rsa-1_5"
#define OXS_NAME_RSA_OAEP   "rsa-oaep-mgf1p"
#define OXS_HREF_RSA_OAEP   "http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p"
#define OXS_NODE_RSA_OAEP_PARAMS   "OAEPparams"
#define OXS_NAME_SHA1   "sha1"
#define OXS_HREF_SHA1   "http://www.w3.org/2000/09/xmldsig#sha1"
#define OXS_NAME_SHA224   "sha224"
#define OXS_HREF_SHA224   "http://www.w3.org/2001/04/xmldsig-more#sha224"
#define OXS_NAME_SHA256   "sha256"
#define OXS_HREF_SHA256   "http://www.w3.org/2001/04/xmlenc#sha256"
#define OXS_NAME_SHA384   "sha384"
#define OXS_HREF_SHA384   "http://www.w3.org/2001/04/xmldsig-more#sha384"
#define OXS_NAME_SHA512   "sha512"
#define OXS_HREF_SHA512   "http://www.w3.org/2001/04/xmlenc#sha512"
#define OXS_SC_DK_NAME_P_SHA1   "P_SHA-1"
#define OXS_SC_DK_HREF_P_SHA1   "http://schemas.xmlsoap.org/ws/2005/02/sc/dk/p_sha1"
#define OXS_NAME_X509_DATA   "x509"
#define OXS_NODE_X509_DATA   "X509Data"
#define OXS_HREF_X509_DATA   "http://www.w3.org/2000/09/xmldsig#X509Data"
#define OXS_NODE_X509_CERTIFICATE   "X509Certificate"
#define OXS_NODE_X509_CRL   "X509CRL"
#define OXS_NODE_X509_SUBJECT_NAME   "X509SubjectName"
#define OXS_NODE_X509_ISSUER_SERIAL   "X509IssuerSerial"
#define OXS_NODE_X509_ISSUER_NAME   "X509IssuerName"
#define OXS_NODE_X509_SERIAL_NUMBER   "X509SerialNumber"
#define OXS_NODE_X509_SKI   "X509SKI"
#define OXS_NAME_RAW_X509_CERT   "raw-x509-cert"
#define OXS_HREF_RAW_X509_CERT   "http://www.w3.org/2000/09/xmldsig#rawX509Certificate"
#define OXS_NAME_X509_STORE   "x509-store"
#define OXS_NODE_ENVELOPE   "Envelope"
#define OXS_NODE_HEADER   "Header"
#define OXS_NODE_BODY   "Body"
#define OXS_NODE_FAULT   "Fault"
#define OXS_NODE_FAULT_CODE   "faultcode"
#define OXS_NODE_FAULT_STRING   "faultstring"
#define OXS_NODE_FAULT_ACTOR   "faultactor"
#define OXS_NODE_FAULT_DETAIL   "detail"
#define OXS_NODE_CODE   "Code"
#define OXS_NODE_REASON   "Reason"
#define OXS_NODE_NODE   "Node"
#define OXS_NODE_ROLE   "Role"
#define OXS_NODE_DETAIL   "Detail"
#define OXS_NODE_VALUE   "Value"
#define OXS_NODE_SUBCODE   "Subcode"
#define OXS_NODE_TEXT   "Text"
#define OXS_SOAP_FAULT_CODE_VERSION_MISMATCH   "VersionMismatch"
#define OXS_SOAP_FAULT_CODE_MUST_UNDERSTAND   "MustUnderstand"
#define OXS_SOAP_FAULT_CODE_CLIENT   "Client"
#define OXS_SOAP_FAULT_CODE_SERVER   "Server"
#define OXS_SOAP_FAULT_CODE_RECEIVER   "Receiver"
#define OXS_SOAP_FAULT_CODE_SENDER   "Sender"
#define OXS_SOAP_FAULT_DATA_ENCODNING_UNKNOWN   "DataEncodingUnknown"
#define OXS_ENCODING_BASE64BINARY   "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary"
#define OXS_VALUE_X509V3   "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3"
#define OXS_X509_SUBJ_KI   "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509SubjectKeyIdentifier"
#define OXS_X509_TUMBP_PRINT_SHA1   "http://docs.oasis-open.org/wss/oasis-wss-soap-message-security-1.1#ThumbprintSHA1"
#define OXS_X509_ENCRYPTED_KEY_SHA1   "http://docs.oasis-open.org/wss/oasis-wss-soap-message-security-1.1#EncryptedKeySHA1"
#define OXS_STR_DIRECT_REFERENCE   "DirectReference"
#define OXS_STR_KEY_IDENTIFIER   OXS_NODE_KEY_IDENTIFIER
#define OXS_STR_EMBEDDED   OXS_NODE_EMBEDDED
#define OXS_STR_ISSUER_SERIAL   "IssuerSerial"
#define OXS_STR_THUMB_PRINT   "ThumbPrint"
#define OXS_STR_EXTERNAL_URI   "ExternalUri"
#define OXS_STR_ENCRYPTED_KEY   "Encryptedkey"
#define OXS_WSS_11_VALUE_TYPE_ENCRYPTED_KEY   "http://docs.oasis-open.org/wss/oasis-wss-soap-message-security-1.1#EncryptedKey"
#define OXS_NODE_ENCRYPTED_HEADER   "EncryptedHeader"


Detailed Description

Constants for OMXMLSecurity.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__oxs__key.html0000644000076500007650000011200411202454500022500 0ustar shankarshankar Rampart/C: Key

Key
[OMXMLSecurity]


Defines

#define OXS_KEY_USAGE_NONE   0
#define OXS_KEY_USAGE_SESSION   1
#define OXS_KEY_USAGE_SIGNATURE_SESSION   2
#define OXS_KEY_USAGE_DERIVED   3
#define OXS_KEY_DEFAULT_SIZE   64

Typedefs

typedef struct oxs_key_t oxs_key_t

Functions

AXIS2_EXTERN unsigned char * oxs_key_get_data (const oxs_key_t *key, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_key_get_name (const oxs_key_t *key, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_key_get_nonce (const oxs_key_t *key, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_key_get_label (const oxs_key_t *key, const axutil_env_t *env)
AXIS2_EXTERN int oxs_key_get_size (const oxs_key_t *key, const axutil_env_t *env)
AXIS2_EXTERN int oxs_key_get_usage (const oxs_key_t *key, const axutil_env_t *env)
AXIS2_EXTERN int oxs_key_get_offset (const oxs_key_t *key, const axutil_env_t *env)
AXIS2_EXTERN int oxs_key_get_length (const oxs_key_t *key, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_key_set_name (oxs_key_t *key, const axutil_env_t *env, axis2_char_t *name)
AXIS2_EXTERN axis2_status_t oxs_key_set_usage (oxs_key_t *key, const axutil_env_t *env, int usage)
AXIS2_EXTERN axis2_status_t oxs_key_set_nonce (oxs_key_t *key, const axutil_env_t *env, axis2_char_t *nonce)
AXIS2_EXTERN axis2_status_t oxs_key_set_label (oxs_key_t *key, const axutil_env_t *env, axis2_char_t *label)
AXIS2_EXTERN axis2_status_t oxs_key_set_offset (oxs_key_t *key, const axutil_env_t *env, int offset)
AXIS2_EXTERN axis2_status_t oxs_key_set_length (oxs_key_t *key, const axutil_env_t *env, int length)
AXIS2_EXTERN axis2_status_t oxs_key_free (oxs_key_t *key, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_key_populate_with_buf (oxs_key_t *key, const axutil_env_t *env, oxs_buffer_t *buffer, axis2_char_t *name, int usage)
AXIS2_EXTERN axis2_status_t oxs_key_populate (oxs_key_t *key, const axutil_env_t *env, unsigned char *data, axis2_char_t *name, int size, int usage)
AXIS2_EXTERN axis2_status_t oxs_key_read_from_file (oxs_key_t *key, const axutil_env_t *env, axis2_char_t *file_name)
AXIS2_EXTERN axis2_status_t oxs_key_for_algo (oxs_key_t *key, const axutil_env_t *env, rp_algorithmsuite_t *key_algo)
AXIS2_EXTERN oxs_buffer_toxs_key_get_buffer (const oxs_key_t *key, const axutil_env_t *env)
AXIS2_EXTERN oxs_key_toxs_key_dup (oxs_key_t *key, const axutil_env_t *env)
AXIS2_EXTERN oxs_key_toxs_key_create (const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_key_set_key_sha (oxs_key_t *key, const axutil_env_t *env, axis2_char_t *key_sha)
AXIS2_EXTERN axis2_char_t * oxs_key_get_key_sha (const oxs_key_t *key, const axutil_env_t *env)

Typedef Documentation

typedef struct oxs_key_t oxs_key_t

Type name for struct oxs_key


Function Documentation

AXIS2_EXTERN axis2_status_t oxs_key_for_algo ( oxs_key_t key,
const axutil_env_t *  env,
rp_algorithmsuite_t *  key_algo 
)

Fill the key for the given algo.

Parameters:
key oxs_key ptr to key
env pointer to environment struct
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_key_free ( oxs_key_t key,
const axutil_env_t *  env 
)

Free function for key.

Parameters:
key oxs_key ptr to key
env pointer to environment struct
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN unsigned char* oxs_key_get_data ( const oxs_key_t key,
const axutil_env_t *  env 
)

Gets data of the key.

Parameters:
key oxs_key ptr to key
env pointer to environment struct
Returns:
data

AXIS2_EXTERN axis2_char_t* oxs_key_get_label ( const oxs_key_t key,
const axutil_env_t *  env 
)

Gets the label of the key.

Parameters:
key oxs_key ptr to key
env pointer to environment struct
Returns:
label of the key

AXIS2_EXTERN int oxs_key_get_length ( const oxs_key_t key,
const axutil_env_t *  env 
)

Gets the length of the key.

Parameters:
key oxs_key ptr to key
env pointer to environment struct
Returns:
length of the key

AXIS2_EXTERN axis2_char_t* oxs_key_get_name ( const oxs_key_t key,
const axutil_env_t *  env 
)

Gets the name of the key.

Parameters:
key oxs_key ptr to key
env pointer to environment struct
Returns:
name of the key

AXIS2_EXTERN axis2_char_t* oxs_key_get_nonce ( const oxs_key_t key,
const axutil_env_t *  env 
)

Gets the nonce of the key.

Parameters:
key oxs_key ptr to key
env pointer to environment struct
Returns:
nonce of the key

AXIS2_EXTERN int oxs_key_get_offset ( const oxs_key_t key,
const axutil_env_t *  env 
)

Gets the offset of the key.

Parameters:
key oxs_key ptr to key
env pointer to environment struct
Returns:
offset of the key

AXIS2_EXTERN int oxs_key_get_size ( const oxs_key_t key,
const axutil_env_t *  env 
)

Gets the size of the key.

Parameters:
key oxs_key ptr to key
env pointer to environment struct
Returns:
size of the key

AXIS2_EXTERN int oxs_key_get_usage ( const oxs_key_t key,
const axutil_env_t *  env 
)

Gets the usage of the key.

Parameters:
key oxs_key ptr to key
env pointer to environment struct
Returns:
usage of the key

AXIS2_EXTERN axis2_status_t oxs_key_populate ( oxs_key_t key,
const axutil_env_t *  env,
unsigned char *  data,
axis2_char_t *  name,
int  size,
int  usage 
)

Populate a key.

Parameters:
key oxs_key ptr to key
env pointer to environment struct
data data of the key
name name of the key
size size of the key
usage usage of the key
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_key_read_from_file ( oxs_key_t key,
const axutil_env_t *  env,
axis2_char_t *  file_name 
)

Read a key from a file.

Parameters:
key oxs_key ptr to key
env pointer to environment struct
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_key_set_name ( oxs_key_t key,
const axutil_env_t *  env,
axis2_char_t *  name 
)

Sets the name of the key.

Parameters:
key oxs_key ptr to key
env pointer to environment struct
name name of the key
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_key_set_usage ( oxs_key_t key,
const axutil_env_t *  env,
int  usage 
)

Set the usage of the key.

Parameters:
key oxs_key ptr to key
env pointer to environment struct
usage usage of the key
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/rampart__sec__header__builder_8h.html0000644000076500007650000000575411202454500025674 0ustar shankarshankar Rampart/C: rampart_sec_header_builder.h File Reference

rampart_sec_header_builder.h File Reference

Build the Security related SOAP headers. More...

#include <axutil_utils_defines.h>
#include <axis2_defines.h>
#include <axutil_env.h>
#include <axiom_soap.h>
#include <axis2_msg_ctx.h>
#include <rampart_context.h>
#include <oxs_asym_ctx.h>
#include <oxs_xml_encryption.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN axis2_status_t rampart_shb_build_message (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *context, axiom_soap_envelope_t *soap_envelope)
AXIS2_EXTERN axis2_status_t rampart_shb_ensure_sec_header_order (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_node_t *sec_node)


Detailed Description

Build the Security related SOAP headers.


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__oxs__constants.html0000644000076500007650000024155411202454500023741 0ustar shankarshankar Rampart/C: OXS Constants

OXS Constants
[OMXMLSecurity]


Defines

#define OXS_DEFAULT_KT_ALGO_HREF   OXS_HREF_RSA_PKCS1
#define OXS_DEFAULT_SYM_ALGO   OXS_HREF_AES_256_CBC
#define OXS_STR_DEFAULT   OXS_STR_EMBEDDED
#define OXS_XENC   "xenc"
#define OXS_DS   "ds"
#define OXS_WSSE   "wsse"
#define OXS_WSSE_11   "wsse11"
#define OXS_WSU   "wsu"
#define OXS_WSC   "wsc"
#define OXS_WSSE_XMLNS   "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
#define OXS_WSSE_11_XMLNS   "http://docs.oasis-open.org/wss/oasis-wss-wssecurity-secext-1.1.xsd"
#define OXS_WSU_XMLNS   "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
#define OXS_ENCDATA_ID   "EncDataID"
#define OXS_ENCKEY_ID   "EncKeyID"
#define OXS_SIG_ID   "SigID"
#define OXS_CERT_ID   "CertID"
#define OXS_EMBEDDED_ID   "EmbeddedID"
#define OXS_DERIVED_ID   "DKID"
#define OXS_SIG_CONF_ID   "SigConfID"
#define OXS_LOCAL_REFERENCE_PREFIX   "#"
#define OXS_DSIG_NS   "http://www.w3.org/2000/09/xmldsig#"
#define OXS_ENC_NS   "http://www.w3.org/2001/04/xmlenc#"
#define OXS_WSSE_NS   "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
#define OXS_WSC_NS_05_02   "http://schemas.xmlsoap.org/ws/2005/02/sc"
#define OXS_WSC_NS_05_12   "http://docs.oasis-open.org/ws-sx/ws-secureconversation/200512"
#define OXS_NODE_SIGNATURE   "Signature"
#define OXS_NODE_SIGNEDINFO   "SignedInfo"
#define OXS_NODE_CANONICALIZATION_METHOD   "CanonicalizationMethod"
#define OXS_NODE_SIGNATURE_METHOD   "SignatureMethod"
#define OXS_NODE_SIGNATURE_VALUE   "SignatureValue"
#define OXS_NODE_DIGEST_METHOD   "DigestMethod"
#define OXS_NODE_DIGEST_VALUE   "DigestValue"
#define OXS_NODE_OBJECT   "Object"
#define OXS_NODE_MANIFEST   "Manifest"
#define OXS_NODE_SIGNATUREPROPERTIES   "SignatureProperties"
#define OXS_NODE_SIGNATURE_CONFIRMATION   "SignatureConfirmation"
#define OXS_NODE_ENCRYPTED_DATA   "EncryptedData"
#define OXS_NODE_ENCRYPTION_METHOD   "EncryptionMethod"
#define OXS_NODE_ENCRYPTION_PROPERTIES   "EncryptionProperties"
#define OXS_NODE_ENCRYPTION_PROPERTY   "EncryptionProperty"
#define OXS_NODE_CIPHER_DATA   "CipherData"
#define OXS_NODE_CIPHER_VALUE   "CipherValue"
#define OXS_NODE_CIPHER_REFERENCE   "CipherReference"
#define OXS_NODE_REFERENCE_LIST   "ReferenceList"
#define OXS_NODE_DATA_REFERENCE   "DataReference"
#define OXS_NODE_KEY_REFERENCE   "KeyReference"
#define OXS_NODE_CARRIED_KEYNAME   "CarriedKeyName"
#define OXS_TYPE_ENC_CONTENT   "http://www.w3.org/2001/04/xmlenc#Content"
#define OXS_TYPE_ENC_ELEMENT   "http://www.w3.org/2001/04/xmlenc#Element"
#define OXS_NODE_KEY_INFO   "KeyInfo"
#define OXS_NODE_REFERENCE   "Reference"
#define OXS_NODE_TRANSFORMS   "Transforms"
#define OXS_NODE_TRANSFORM   "Transform"
#define OXS_NODE_TRANSFORMATIONPARAMETERS   "TransformationParameters"
#define OXS_NODE_BINARY_SECURITY_TOKEN   "BinarySecurityToken"
#define OXS_NODE_KEY_IDENTIFIER   "KeyIdentifier"
#define OXS_NODE_SECURITY_TOKEN_REFRENCE   "SecurityTokenReference"
#define OXS_NODE_EMBEDDED   "Embedded"
#define OXS_NODE_DERIVED_KEY_TOKEN   "DerivedKeyToken"
#define OXS_NODE_PROPERTIES   "Properties"
#define OXS_NODE_GENERATION   "Generation"
#define OXS_NODE_OFFSET   "Offset"
#define OXS_NODE_LENGTH   "Length"
#define OXS_NODE_LABEL   "Label"
#define OXS_NODE_NONCE   "Nonce"
#define OXS_NODE_SECURITY_CONTEXT_TOKEN   "SecurityContextToken"
#define OXS_NODE_IDENTIFIER   "Identifier"
#define OXS_VALUE_TYPE_SECURITY_CONTEXT_TOKEN_05_02   "http://schemas.xmlsoap.org/ws/2005/02/sc/sct"
#define OXS_VALUE_TYPE_SECURITY_CONTEXT_TOKEN_05_12   "http://docs.oasis-open.org/ws-sx/ws-secureconversation/200512/sct"
#define OXS_NODE_SAML_ASSERTION   "Assertion"
#define OXS_NODE_SAML_PREFIX   "saml"
#define OXS_NODE_SAML_SUBJECT_CONFIRMATION_METHOD   "ConfirmationMethod"
#define OXS_ATTR_ID   "Id"
#define OXS_ATTR_URI   "URI"
#define OXS_ATTR_TYPE   "Type"
#define OXS_ATTR_MIMETYPE   "MimeType"
#define OXS_ATTR_ENCODING   "Encoding"
#define OXS_ATTR_ALGORITHM   "Algorithm"
#define OXS_ATTR_FILTER   "Filter"
#define OXS_ATTR_RECIPIENT   "Recipient"
#define OXS_ATTR_TARGET   "Target"
#define OXS_ATTR_ENCODING_TYPE   "EncodingType"
#define OXS_ATTR_VALUE_TYPE   "ValueType"
#define OXS_ATTR_VALUE   "Value"
#define OXS_NAME_AES_128_CBC   "aes128-cbc"
#define OXS_HREF_AES_128_CBC   "http://www.w3.org/2001/04/xmlenc#aes128-cbc"
#define OXS_NAME_AES_192_CBC   "aes192-cbc"
#define OXS_HREF_AES_192_CBC   "http://www.w3.org/2001/04/xmlenc#aes192-cbc"
#define OXS_NAME_AES_256_CBC   "aes256-cbc"
#define OXS_HREF_AES_256_CBC   "http://www.w3.org/2001/04/xmlenc#aes256-cbc"
#define OXS_NAME_KW_AES_128   "kw-aes128"
#define OXS_HREF_KW_AES_128   "http://www.w3.org/2001/04/xmlenc#kw-aes128"
#define OXS_NAME_KW_AES_192   "kw-aes192"
#define OXS_HREF_KW_AES_192   "http://www.w3.org/2001/04/xmlenc#kw-aes192"
#define OXS_NAME_KW_AES_256   "kw-aes256"
#define OXS_HREF_KW_AES_256   "http://www.w3.org/2001/04/xmlenc#kw-aes256"
#define OXS_NAME_BASE64   "base64"
#define OXS_HREF_BASE64   "http://www.w3.org/2000/09/xmldsig#base64"
#define OXS_NAME_DES_KEY_VALUE   "des"
#define OXS_NAME_DES3_CBC   "tripledes-cbc"
#define OXS_HREF_DES3_CBC   "http://www.w3.org/2001/04/xmlenc#tripledes-cbc"
#define OXS_NAME_KW_DES3   "kw-tripledes"
#define OXS_HREF_KW_DES3   "http://www.w3.org/2001/04/xmlenc#kw-tripledes"
#define OXS_NAME_DSA_KEY_VALUE   "dsa"
#define OXS_NODE_DSA_KEY_VALUE   "DSAKeyValue"
#define OXS_HREF_DSA_KEY_VALUE   "http://www.w3.org/2000/09/xmldsig#DSAKeyValue"
#define OXS_NAME_DSA_SHA1   "dsa-sha1"
#define OXS_HREF_DSA_SHA1   "http://www.w3.org/2000/09/xmldsig#dsa-sha1"
#define OXS_NAME_HMAC_SHA1   "HmacSha1"
#define OXS_HREF_HMAC_SHA1   "http://www.w3.org/2000/09/xmldsig#hmac-sha1"
#define OXS_NAME_ENCRYPTED_KEY   "enc-key"
#define OXS_NODE_ENCRYPTED_KEY   "EncryptedKey"
#define OXS_HREF_ENCRYPTED_KEY   "http://www.w3.org/2001/04/xmlenc#EncryptedKey"
#define OXS_HREF_XML_C14N   "http://www.w3.org/TR/2001/REC-xml-c14n-20010315"
#define OXS_HREF_XML_EXC_C14N   "http://www.w3.org/2001/10/xml-exc-c14n#"
#define OXS_HREF_XML_C14N_WITH_COMMENTS   "http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"
#define OXS_HREF_XML_EXC_C14N_WITH_COMMENTS   "http://www.w3.org/2001/10/xml-exc-c14n#WithComments"
#define OXS_HREF_TRANSFORM_XML_EXC_C14N   OXS_HREF_XML_EXC_C14N
#define OXS_HREF_TRANSFORM_STR_TRANSFORM   "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#STR-Transform"
#define OXS_HREF_TRANSFORM_ENVELOPED_SIGNATURE   "http://www.w3.org/2000/09/xmldsig#enveloped-signature"
#define OXS_NAME_KEY_NAME   "key-name"
#define OXS_NODE_KEY_NAME   "KeyName"
#define OXS_NAME_KEY_VALUE   "key-value"
#define OXS_NODE_KEY_VALUE   "KeyValue"
#define OXS_NAME_MD5   "md5"
#define OXS_HREF_MD5   "http://www.w3.org/2001/04/xmldsig-more#md5"
#define OXS_NAME_RETRIEVAL_METHOD   "retrieval-method"
#define OXS_NODE_RETRIEVAL_METHOD   "RetrievalMethod"
#define OXS_NAME_RSAKEY_VALUE   "rsa"
#define OXS_NODE_RSAKEY_VALUE   "RSAKeyValue"
#define OXS_HREF_RSAKEY_VALUE   "http://www.w3.org/2000/09/xmldsig#RSAKeyValue"
#define OXS_NAME_RSA_MD5   "rsa-md5"
#define OXS_HREF_RSA_MD5   "http://www.w3.org/2001/04/xmldsig-more#rsa-md5"
#define OXS_NAME_RSA_RIPEMD160   "rsa-ripemd160"
#define OXS_HREF_RSA_RIPEMD160   "http://www.w3.org/2001/04/xmldsig-more#rsa-ripemd160"
#define OXS_NAME_RSA_SHA1   "rsa-sha1"
#define OXS_HREF_RSA_SHA1   "http://www.w3.org/2000/09/xmldsig#rsa-sha1"
#define OXS_NAME_RSA_SHA224   "rsa-sha224"
#define OXS_HREF_RSA_SHA224   "http://www.w3.org/2001/04/xmldsig-more#rsa-sha224"
#define OXS_NAME_RSA_SHA256   "rsa-sha256"
#define OXS_HREF_RSA_SHA256   "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"
#define OXS_NAME_RSA_SHA384   "rsa-sha384"
#define OXS_HREF_RSA_SHA384   "http://www.w3.org/2001/04/xmldsig-more#rsa-sha384"
#define OXS_NAME_RSA_SHA512   "rsa-sha512"
#define OXS_HREF_RSA_SHA512   "http://www.w3.org/2001/04/xmldsig-more#rsa-sha512"
#define OXS_NAME_RSA_PKCS1   "rsa-1_5"
#define OXS_HREF_RSA_PKCS1   "http://www.w3.org/2001/04/xmlenc#rsa-1_5"
#define OXS_NAME_RSA_OAEP   "rsa-oaep-mgf1p"
#define OXS_HREF_RSA_OAEP   "http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p"
#define OXS_NODE_RSA_OAEP_PARAMS   "OAEPparams"
#define OXS_NAME_SHA1   "sha1"
#define OXS_HREF_SHA1   "http://www.w3.org/2000/09/xmldsig#sha1"
#define OXS_NAME_SHA224   "sha224"
#define OXS_HREF_SHA224   "http://www.w3.org/2001/04/xmldsig-more#sha224"
#define OXS_NAME_SHA256   "sha256"
#define OXS_HREF_SHA256   "http://www.w3.org/2001/04/xmlenc#sha256"
#define OXS_NAME_SHA384   "sha384"
#define OXS_HREF_SHA384   "http://www.w3.org/2001/04/xmldsig-more#sha384"
#define OXS_NAME_SHA512   "sha512"
#define OXS_HREF_SHA512   "http://www.w3.org/2001/04/xmlenc#sha512"
#define OXS_SC_DK_NAME_P_SHA1   "P_SHA-1"
#define OXS_SC_DK_HREF_P_SHA1   "http://schemas.xmlsoap.org/ws/2005/02/sc/dk/p_sha1"
#define OXS_NAME_X509_DATA   "x509"
#define OXS_NODE_X509_DATA   "X509Data"
#define OXS_HREF_X509_DATA   "http://www.w3.org/2000/09/xmldsig#X509Data"
#define OXS_NODE_X509_CERTIFICATE   "X509Certificate"
#define OXS_NODE_X509_CRL   "X509CRL"
#define OXS_NODE_X509_SUBJECT_NAME   "X509SubjectName"
#define OXS_NODE_X509_ISSUER_SERIAL   "X509IssuerSerial"
#define OXS_NODE_X509_ISSUER_NAME   "X509IssuerName"
#define OXS_NODE_X509_SERIAL_NUMBER   "X509SerialNumber"
#define OXS_NODE_X509_SKI   "X509SKI"
#define OXS_NAME_RAW_X509_CERT   "raw-x509-cert"
#define OXS_HREF_RAW_X509_CERT   "http://www.w3.org/2000/09/xmldsig#rawX509Certificate"
#define OXS_NAME_X509_STORE   "x509-store"
#define OXS_NODE_ENVELOPE   "Envelope"
#define OXS_NODE_HEADER   "Header"
#define OXS_NODE_BODY   "Body"
#define OXS_NODE_FAULT   "Fault"
#define OXS_NODE_FAULT_CODE   "faultcode"
#define OXS_NODE_FAULT_STRING   "faultstring"
#define OXS_NODE_FAULT_ACTOR   "faultactor"
#define OXS_NODE_FAULT_DETAIL   "detail"
#define OXS_NODE_CODE   "Code"
#define OXS_NODE_REASON   "Reason"
#define OXS_NODE_NODE   "Node"
#define OXS_NODE_ROLE   "Role"
#define OXS_NODE_DETAIL   "Detail"
#define OXS_NODE_VALUE   "Value"
#define OXS_NODE_SUBCODE   "Subcode"
#define OXS_NODE_TEXT   "Text"
#define OXS_SOAP_FAULT_CODE_VERSION_MISMATCH   "VersionMismatch"
#define OXS_SOAP_FAULT_CODE_MUST_UNDERSTAND   "MustUnderstand"
#define OXS_SOAP_FAULT_CODE_CLIENT   "Client"
#define OXS_SOAP_FAULT_CODE_SERVER   "Server"
#define OXS_SOAP_FAULT_CODE_RECEIVER   "Receiver"
#define OXS_SOAP_FAULT_CODE_SENDER   "Sender"
#define OXS_SOAP_FAULT_DATA_ENCODNING_UNKNOWN   "DataEncodingUnknown"
#define OXS_ENCODING_BASE64BINARY   "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary"
#define OXS_VALUE_X509V3   "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3"
#define OXS_X509_SUBJ_KI   "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509SubjectKeyIdentifier"
#define OXS_X509_TUMBP_PRINT_SHA1   "http://docs.oasis-open.org/wss/oasis-wss-soap-message-security-1.1#ThumbprintSHA1"
#define OXS_X509_ENCRYPTED_KEY_SHA1   "http://docs.oasis-open.org/wss/oasis-wss-soap-message-security-1.1#EncryptedKeySHA1"
#define OXS_STR_DIRECT_REFERENCE   "DirectReference"
#define OXS_STR_KEY_IDENTIFIER   OXS_NODE_KEY_IDENTIFIER
#define OXS_STR_EMBEDDED   OXS_NODE_EMBEDDED
#define OXS_STR_ISSUER_SERIAL   "IssuerSerial"
#define OXS_STR_THUMB_PRINT   "ThumbPrint"
#define OXS_STR_EXTERNAL_URI   "ExternalUri"
#define OXS_STR_ENCRYPTED_KEY   "Encryptedkey"
#define OXS_WSS_11_VALUE_TYPE_ENCRYPTED_KEY   "http://docs.oasis-open.org/wss/oasis-wss-soap-message-security-1.1#EncryptedKey"
#define OXS_NODE_ENCRYPTED_HEADER   "EncryptedHeader"

Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/rampart__mod_8h-source.html0000644000076500007650000001160211202454500023650 0ustar shankarshankar Rampart/C: rampart_mod.h Source File

rampart_mod.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef RAMPART_MOD_H
00019 #define RAMPART_MOD_H
00020 
00030 #include <axis2_handler.h>
00031 
00032 #ifdef __cplusplus
00033 extern "C"
00034 {
00035 #endif
00036 
00043     AXIS2_EXTERN axis2_handler_t* AXIS2_CALL
00044     rampart_in_handler_create(
00045         const axutil_env_t *env,
00046         axutil_string_t *name);
00047 
00054     AXIS2_EXTERN axis2_handler_t* AXIS2_CALL
00055     rampart_out_handler_create(
00056         const axutil_env_t *env,
00057         axutil_string_t *name);
00058 
00061 #ifdef __cplusplus
00062 }
00063 #endif
00064 
00065 #endif    /* AXIS2_ADDR_MOD_H */

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/globals_enum.html0000644000076500007650000000363611202454500021766 0ustar shankarshankar Rampart/C: Class Members
 


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/oxs__encryption_8h.html0000644000076500007650000000631511202454500023135 0ustar shankarshankar Rampart/C: oxs_encryption.h File Reference

oxs_encryption.h File Reference

Provides data encryption and decryption functionalities of the OMXMLSec. More...

#include <axis2_defines.h>
#include <oxs_ctx.h>
#include <oxs_asym_ctx.h>
#include <axutil_env.h>
#include <axiom_node.h>
#include <axiom_element.h>
#include <axutil_qname.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN axis2_status_t oxs_encryption_symmetric_crypt (const axutil_env_t *env, oxs_ctx_t *enc_ctx, oxs_buffer_t *input, oxs_buffer_t *result)
AXIS2_EXTERN axis2_status_t oxs_encryption_asymmetric_crypt (const axutil_env_t *env, oxs_asym_ctx_t *asym_ctx, oxs_buffer_t *input, oxs_buffer_t *result)


Detailed Description

Provides data encryption and decryption functionalities of the OMXMLSec.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__openssl__pkcs12.html0000644000076500007650000000635611202454500023701 0ustar shankarshankar Rampart/C: OpenSSL PKCS12

OpenSSL PKCS12
[OpenSSL wrapper]


Functions

AXIS2_EXTERN axis2_status_t openssl_pkcs12_load (const axutil_env_t *env, axis2_char_t *filename, PKCS12 **p12)
AXIS2_EXTERN axis2_status_t openssl_pkcs12_load_from_buffer (const axutil_env_t *env, axis2_char_t *buffer, PKCS12 **p12, int len)
AXIS2_EXTERN axis2_status_t openssl_pkcs12_parse (const axutil_env_t *env, axis2_char_t *password, PKCS12 *p12, EVP_PKEY **prvkey, X509 **cert, STACK_OF(X509)**ca)
AXIS2_EXTERN axis2_status_t openssl_pkcs12_free (const axutil_env_t *env, PKCS12 *p12)

Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__rampart__error.html0000644000076500007650000001103711202454500023702 0ustar shankarshankar Rampart/C: Rampart_error

Rampart_error
[Rampart Utilities]


Typedefs

typedef enum rampart_error_codes rampart_error_codes_t

Enumerations

enum  rampart_error_codes {
  RAMPART_ERROR_NONE = RAMPART_ERROR_CODES_START, RAMPART_ERROR_UNSUPPORTED_SECURITY_TOKEN, RAMPART_ERROR_INVALID_SECURITY, RAMPART_ERROR_INVALID_SECURITY_TOKEN,
  RAMPART_ERROR_FAILED_AUTHENTICATION, RAMPART_ERROR_FAILED_CHECK, RAMPART_ERROR_SECURITY_TOKEN_UNAVAILABLE, RAMPART_ERROR_RAMPART_ERROR_LAST,
  RAMPART_ERROR_IN_TIMESTAMP, RAMPART_ERROR_IN_USERNAMETOKEN, RAMPART_ERROR_IN_ENCRYPTED_KEY, RAMPART_ERROR_IN_ENCRYPTED_DATA,
  RAMPART_ERROR_IN_SIGNATURE, RAMPART_ERROR_MSG_REPLAYED, RAMPART_ERROR_IN_POLICY, RAMPART_ERROR_LAST
}
 rampart error codes More...

Functions

AXIS2_EXTERN axis2_status_t rampart_error_init ()

Enumeration Type Documentation

rampart error codes

Set of error codes for rampart


Function Documentation

AXIS2_EXTERN axis2_status_t rampart_error_init (  ) 

initialising method for error

Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__rahas__mod.html0000644000076500007650000000556711202454500022773 0ustar shankarshankar Rampart/C: Rahas Module

Rahas Module


Functions

AXIS2_EXTERN axis2_handler_t * rahas_in_handler_create (const axutil_env_t *env, axutil_string_t *name)

Function Documentation

AXIS2_EXTERN axis2_handler_t* rahas_in_handler_create ( const axutil_env_t *  env,
axutil_string_t *  name 
)

Creates In handler

Parameters:
env pointer to environment struct
name 
Returns:
Created In handler


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/rampart__timestamp__token_8h-source.html0000644000076500007650000001246411202454500026442 0ustar shankarshankar Rampart/C: rampart_timestamp_token.h Source File

rampart_timestamp_token.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef RAMPART_TIMESTAMP_TOKEN_H
00019 #define RAMPART_TIMESTAMP_TOKEN_H
00020 
00032 #ifdef __cplusplus
00033 extern "C"
00034 {
00035 #endif
00036 
00037 #include <axutil_env.h>
00047     axis2_status_t AXIS2_CALL
00048     rampart_timestamp_token_build(
00049         const axutil_env_t *env,
00050         axiom_node_t *sec_node,
00051         int ttl, 
00052         axis2_bool_t with_millisecond);
00053 
00062     axis2_status_t AXIS2_CALL
00063     rampart_timestamp_token_validate(
00064         const axutil_env_t *env,
00065         axis2_msg_ctx_t *msg_ctx,
00066         axiom_node_t *ts_node,
00067         int clock_skew_buffer);
00068 
00069     /* @} */
00070 #ifdef __cplusplus
00071 }
00072 #endif
00073 
00074 
00075 #endif /*RAMPART_TIMESTAMP_TOKEN_H*/

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/rampart__config_8h-source.html0000644000076500007650000002777311202454500024356 0ustar shankarshankar Rampart/C: rampart_config.h Source File

rampart_config.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef RAMPART_CONFIG_H
00019 #define RAMPART_CONFIG_H
00020 
00032 #include <axis2_util.h>
00033 #include <axis2_defines.h>
00034 /*#include <axutil_utils_defines.h>*/
00035 #include <axutil_env.h>
00036 #include <rampart_saml_token.h>
00037 #include <rampart_issued_token.h>
00038 
00039 /*#include <rp_includes.h>
00040 #include <rp_secpolicy.h>
00041 #include <rampart_authn_provider.h>
00042 #include <axutil_property.h>
00043 #include <rampart_constants.h>
00044 #include <rampart_callback.h>
00045 #include <rampart_authn_provider.h>
00046 #include <axis2_key_type.h>
00047 #include <axis2_msg_ctx.h>
00048 #include <oxs_key.h>
00049 #include <axutil_array_list.h>
00050 */
00051 
00052 #ifdef __cplusplus
00053 extern "C"
00054 {
00055 #endif
00056 
00057     typedef struct rampart_config_t rampart_config_t;
00058 
00064     AXIS2_EXTERN rampart_config_t *AXIS2_CALL
00065     rampart_config_create(
00066         const axutil_env_t *env);
00067 
00073     AXIS2_EXTERN void AXIS2_CALL
00074     rampart_config_free(
00075         rampart_config_t *rampart_config,
00076         const axutil_env_t *env);
00077 
00085     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00086     rampart_config_set_username(
00087         rampart_config_t *rampart_config,
00088         const axutil_env_t *env,
00089         axis2_char_t *user);
00090 
00098     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00099     rampart_config_set_password(
00100         rampart_config_t *rampart_config,
00101         const axutil_env_t *env,
00102         axis2_char_t *password);
00103 
00111     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00112     rampart_config_set_password_type(
00113         rampart_config_t *rampart_config,
00114         const axutil_env_t *env,
00115         axis2_char_t *password_type);
00116 
00124     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00125     rampart_config_set_ttl(
00126         rampart_config_t *rampart_config,
00127         const axutil_env_t *env,
00128         int ttl);
00129 
00137         AXIS2_EXTERN int AXIS2_CALL
00138         rampart_config_add_saml_token(
00139         rampart_config_t *rampart_config, 
00140                 const axutil_env_t *env, 
00141                 rampart_saml_token_t *saml);
00142 
00150         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00151         rampart_config_set_issued_token_aquire_function(
00152         rampart_config_t *rampart_config,
00153                 const axutil_env_t *env,
00154                 issued_token_callback_func issued_token_aquire);
00155 
00162     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00163     rampart_config_get_username(
00164         rampart_config_t *rampart_config,
00165         const axutil_env_t *env);
00166 
00173     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00174     rampart_config_get_password(
00175         rampart_config_t *rampart_config,
00176         const axutil_env_t *env);
00177 
00184     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00185     rampart_config_get_password_type(
00186         rampart_config_t *rampart_config,
00187         const axutil_env_t *env);
00188 
00195     AXIS2_EXTERN int AXIS2_CALL
00196     rampart_config_get_ttl(
00197         rampart_config_t *rampart_config,
00198         const axutil_env_t *env);
00199 
00206         AXIS2_EXTERN axutil_array_list_t * AXIS2_CALL
00207         rampart_config_get_saml_tokens(
00208         rampart_config_t *rampart_config, 
00209                 const axutil_env_t *env);    
00210 
00217         AXIS2_EXTERN issued_token_callback_func AXIS2_CALL
00218         rampart_config_get_issued_token_aquire_function(
00219         rampart_config_t *rampart_config, 
00220                 const axutil_env_t *env);    
00221 
00222     /* @} */
00223 #ifdef __cplusplus
00224 }
00225 #endif
00226 
00227 #endif /* RAMPART_CONFIG_H */
00228 

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__rampart__encryption.html0000644000076500007650000003731211202454500024747 0ustar shankarshankar Rampart/C: Encryption

Encryption
[Rampart Utilities]


Functions

AXIS2_EXTERN axis2_status_t rampart_enc_encrypt_message (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_soap_envelope_t *soap_envelope, axiom_node_t *sec_node)
AXIS2_EXTERN axis2_status_t rampart_enc_dk_encrypt_message (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_soap_envelope_t *soap_envelope, axiom_node_t *sec_node)
AXIS2_EXTERN axis2_status_t rampart_enc_add_key_info (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_soap_envelope_t *soap_envelope, axiom_node_t *sec_node)
AXIS2_EXTERN axis2_status_t rampart_enc_encrypt_signature (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_soap_envelope_t *soap_envelope, axiom_node_t *sec_node)
AXIS2_EXTERN axis2_status_t rampart_enc_encrypt_session_key (const axutil_env_t *env, oxs_key_t *session_key, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_node_t *sec_node, axutil_array_list_t *id_list)

Function Documentation

AXIS2_EXTERN axis2_status_t rampart_enc_add_key_info ( const axutil_env_t *  env,
axis2_msg_ctx_t *  msg_ctx,
rampart_context_t *  rampart_context,
axiom_soap_envelope_t *  soap_envelope,
axiom_node_t *  sec_node 
)

Parameters:
env pointer to environment struct
msg_ctx message context
soap_envelope the SOAP envelope
sec_node The security element
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t rampart_enc_dk_encrypt_message ( const axutil_env_t *  env,
axis2_msg_ctx_t *  msg_ctx,
rampart_context_t *  rampart_context,
axiom_soap_envelope_t *  soap_envelope,
axiom_node_t *  sec_node 
)

Encrypt the message using derived keys. Uses symmetric encryption

Parameters:
env pointer to environment struct
msg_ctx message context
rampart_context rampart context
soap_envelope the SOAP envelope
sec_node The security element
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t rampart_enc_encrypt_message ( const axutil_env_t *  env,
axis2_msg_ctx_t *  msg_ctx,
rampart_context_t *  rampart_context,
axiom_soap_envelope_t *  soap_envelope,
axiom_node_t *  sec_node 
)

Parameters:
env pointer to environment struct
msg_ctx message context
soap_envelope the SOAP envelope
sec_node The security element
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t rampart_enc_encrypt_session_key ( const axutil_env_t *  env,
oxs_key_t session_key,
axis2_msg_ctx_t *  msg_ctx,
rampart_context_t *  rampart_context,
axiom_node_t *  sec_node,
axutil_array_list_t *  id_list 
)

Encrypts the session key using assymmetric encription

Parameters:
env pointer to environment struct
session_key the session key to be encrypted
msg_ctx message context
rampart_context the rampart context
sec_node The security element
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t rampart_enc_encrypt_signature ( const axutil_env_t *  env,
axis2_msg_ctx_t *  msg_ctx,
rampart_context_t *  rampart_context,
axiom_soap_envelope_t *  soap_envelope,
axiom_node_t *  sec_node 
)

Parameters:
env pointer to environment struct
msg_ctx message context
soap_envelope the SOAP envelope
sec_node The security element
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__rampart__token__builder.html0000644000076500007650000003455611202454500025551 0ustar shankarshankar Rampart/C: Token Builder

Token Builder
[Rampart Utilities]


Enumerations

enum  rampart_token_build_pattern_t {
  RTBP_UNKNOWN = 0, RTBP_EMBEDDED, RTBP_KEY_IDENTIFIER, RTBP_X509DATA_ISSUER_SERIAL,
  RTBP_X509DATA_X509CERTIFICATE, RTBP_THUMBPRINT
}

Functions

AXIS2_EXTERN axis2_status_t rampart_token_build_security_token_reference (const axutil_env_t *env, axiom_node_t *parent, oxs_x509_cert_t *cert, rampart_token_build_pattern_t pattern)
AXIS2_EXTERN axis2_status_t rampart_token_build_embedded (const axutil_env_t *env, axiom_node_t *parent, oxs_x509_cert_t *cert)
AXIS2_EXTERN axis2_status_t rampart_token_build_key_identifier (const axutil_env_t *env, axiom_node_t *parent, oxs_x509_cert_t *cert)
AXIS2_EXTERN axis2_status_t rampart_token_build_x509_data_x509_certificate (const axutil_env_t *env, axiom_node_t *parent, oxs_x509_cert_t *cert)
AXIS2_EXTERN axis2_status_t rampart_token_build_x509_data_issuer_serial (const axutil_env_t *env, axiom_node_t *parent, oxs_x509_cert_t *cert)
AXIS2_EXTERN axis2_status_t rampart_token_build_thumbprint_reference (const axutil_env_t *env, axiom_node_t *parent, oxs_x509_cert_t *cert)

Function Documentation

AXIS2_EXTERN axis2_status_t rampart_token_build_embedded ( const axutil_env_t *  env,
axiom_node_t *  parent,
oxs_x509_cert_t *  cert 
)

Build an Embedded token with data available in the certificate. <SecurityTokenReference> <Embedded> <BinarySecurityToken>UYISDjsdaousdWEqswOIUsd</BinarySecurityToken> </Embedded> </SecurityTokenReference>

Parameters:
env pointer to environment struct
parent The parent node
cert The X509 certificate
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t rampart_token_build_key_identifier ( const axutil_env_t *  env,
axiom_node_t *  parent,
oxs_x509_cert_t *  cert 
)

Build a KeyIndentifer token with data available in the certificate. <SecurityTokenReference> <KeyIdentifier>WEqswOIUsd</KeyIdentifier> </SecurityTokenReference>

Parameters:
env pointer to environment struct
parent The parent node
cert The X509 certificate
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t rampart_token_build_security_token_reference ( const axutil_env_t *  env,
axiom_node_t *  parent,
oxs_x509_cert_t *  cert,
rampart_token_build_pattern_t  pattern 
)

Build a SecurityTokenReference element according to the pattern specified in . The token will be attached to the node and relavent data will be extracted from certificate . Note that this method will internally call other token building methods specified in this header depending on the .

Parameters:
env pointer to environment struct
parent The parent node
cert The X509 certificate
pattern The build pattern
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t rampart_token_build_thumbprint_reference ( const axutil_env_t *  env,
axiom_node_t *  parent,
oxs_x509_cert_t *  cert 
)

Build a Thumbprint Reference of the certificate. <wsse:SecurityTokenReference> <wsse:KeyIdentifier EncodingType="..." ValueType="...# ThumbprintSHA1">bg6I8267h0TUcPYvYE0D6k6+UJQ=</wsse:KeyIdentifier> </wsse:SecurityTokenReference>

Parameters:
env pointer to environment struct
parent The parent node
cert The X509 certificate
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t rampart_token_build_x509_data_issuer_serial ( const axutil_env_t *  env,
axiom_node_t *  parent,
oxs_x509_cert_t *  cert 
)

Build an X509IssuerSerial token with data available in the certificate. <SecurityTokenReference> <x509Data> <X509IssuerSerial> <X509IssuerName>C=US, O=VeriSign, Inc.,</X509IssuerName> <X509SerialNumber>93243297328</X509SerialNumber> </X509IssuerSerial> </x509Data> </SecurityTokenReference>

Parameters:
env pointer to environment struct
parent The parent node
cert The X509 certificate
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/openssl__rsa_8h.html0000644000076500007650000001073011202454500022376 0ustar shankarshankar Rampart/C: openssl_rsa.h File Reference

openssl_rsa.h File Reference

For RSA encryption. More...

#include <openssl/rand.h>
#include <openssl/evp.h>
#include <openssl/pem.h>
#include <openssl/bio.h>
#include <openssl_constants.h>
#include <openssl_pkey.h>
#include <axis2_util.h>
#include <oxs_buffer.h>

Go to the source code of this file.

Functions

int openssl_rsa_prv_decrypt (const axutil_env_t *env, const openssl_pkey_t *pkey, const axis2_char_t *padding, oxs_buffer_t *in, oxs_buffer_t *out)
int openssl_rsa_pub_encrypt (const axutil_env_t *env, const openssl_pkey_t *pkey, const axis2_char_t *padding, oxs_buffer_t *in, oxs_buffer_t *out)
int openssl_rsa_prv_encrypt (const axutil_env_t *env, const openssl_pkey_t *pkey, const axis2_char_t *padding, oxs_buffer_t *in, oxs_buffer_t *out)
int openssl_rsa_pub_decrypt (const axutil_env_t *env, const openssl_pkey_t *pkey, const axis2_char_t *padding, oxs_buffer_t *in, oxs_buffer_t *out)


Detailed Description

For RSA encryption.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/rampart__username__token_8h-source.html0000644000076500007650000001541411202454500026254 0ustar shankarshankar Rampart/C: rampart_username_token.h Source File

rampart_username_token.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef RAMPART_USERNAME_TOKEN_H
00019 #define RAMPART_USERNAME_TOKEN_H
00020 
00031 #ifdef __cplusplus
00032 extern "C"
00033 {
00034 #endif
00035 
00036 
00037 #include <axutil_env.h>
00038 #include <rampart_context.h>
00039 
00040     /*
00041      * builds username token
00042      * @param env pointer to environment struct
00043      * @param rampart_context pointer to rampart context structure
00044      * @param sec_node Security header node
00045      * @param sec_ns_obj security namespace object
00046      * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
00047      */
00048     axis2_status_t AXIS2_CALL
00049     rampart_username_token_build(
00050         const axutil_env_t *env,
00051         rampart_context_t *rampart_context,
00052         axiom_node_t *sec_node,
00053         axiom_namespace_t *sec_ns_obj);
00054 
00055     /*
00056      * Validates the given username token
00057      * @param env pointer to environment struct
00058      * @param msg_ctx axis2 message context
00059      * @param ut_node User name token node
00060      * @param rampart_context pointer to rampart context structure
00061      * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
00062      */
00063     axis2_status_t AXIS2_CALL
00064     rampart_username_token_validate(
00065         const axutil_env_t *env,
00066         axis2_msg_ctx_t *msg_ctx,
00067         axiom_node_t *ut_node,
00068         rampart_context_t *rampart_context);
00069 
00070 #ifdef __cplusplus
00071 }
00072 #endif
00073 
00074 
00075 #endif /*RAMPART_USERNAME_TOKEN_H*/

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__rampart__username__token.html0000644000076500007650000000470311202454500025731 0ustar shankarshankar Rampart/C: Username Token

Username Token
[Rampart Utilities]


Functions

axis2_status_t rampart_username_token_build (const axutil_env_t *env, rampart_context_t *rampart_context, axiom_node_t *sec_node, axiom_namespace_t *sec_ns_obj)
axis2_status_t rampart_username_token_validate (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axiom_node_t *ut_node, rampart_context_t *rampart_context)

Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/rampart__policy__validator_8h-source.html0000644000076500007650000001237111202454500026600 0ustar shankarshankar Rampart/C: rampart_policy_validator.h Source File

rampart_policy_validator.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #include <axutil_utils_defines.h>
00019 #include <axis2_defines.h>
00020 #include <axutil_env.h>
00021 #include <axis2_msg_ctx.h>
00022 #include <rampart_context.h>
00034 #ifndef RAMPART_POLICY_VALIDATOR_H
00035 #define RAMPART_POLICY_VALIDATOR_H
00036 
00037 #ifdef __cplusplus
00038 extern "C" {
00039 #endif
00040 
00049     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00050     rampart_pv_validate_sec_header(
00051         const axutil_env_t *env,
00052         rampart_context_t *rampart_context,
00053         axiom_node_t *sec_node,
00054         axis2_msg_ctx_t *msg_ctx);
00055 
00056 
00057     /* @} */
00058 #ifdef __cplusplus
00059 }
00060 #endif
00061 
00062 #endif    /* !RAMPART_POLICY_VALIDATOR_H */

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/doxygen.png0000644000076500007650000000240111202454500020601 0ustar shankarshankar‰PNG  IHDRd-ok>ÂgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<]PLTEǾÏ"&©ÈÎï¶»ÖÓÚú“¢Þ ¬à¶Âõ‡§ÕÙêÉÊÎáâæ{ŽÔ¡ëˆ™× ²ø§¬¹ÀÀ±ÝÝÎùùéõõçëëåED9×ÖËhg]_X<@:#mhUÿÿÿÝÀ1tRNSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÍvÿIDATxÚbC£: d#„„………h` @¡X",***LKˆ.–], ºX@t± €èb @ÑÅ€BµD„6–š%""´° € ˜% ˆ™B:H¢ˆ²Áf@• ˆRPy"K`\PbC(!II!h©…ëƒ(ñ„Ä!ꈬC„Ä…àl!0[X\J\$TMˆ(’>a$S„ Ù@ Ш@R.$‚¬LJBR¢‰AÌG1 ¬ Â(FȃÔPhhÁTÀ¢„%!`€&q°%u P ¹¢ ¬ € ¹CT$B¢à|‚ºW„¤Àl £!B`R$( …Ĉ‘’ž@AÅ%ĤÄ%@,(—ʂڱ%$ÁââRPmB U`1IˆYB  99€\1 yCCCÿf"[N 'Ü=TGÈ’øl8˜^Kû5<êSæRɤ”%î@@ à›Ê b1 qÅAXHˆ¸&ØB’R y n˜P„Ìã–4A €€j¹€€>Ü ˜ t!˜+(.ÈÅWQ±A2ÜÜMUÜ‚’’‚‚â `1 %`19€F< 3cZÄ`óe!\ˆ DÈ+. 83‹³Àä¸!lYYA -6‚EJŠ¢V €@©žXXX 4„å Ê@86Ð`RdB´€4I "Ý "–@xrÊŒ‚H€AÊ`—f ÉȰCŒ"XV0ɲ³C b@2…¬H ¬È“ p)!(ì‚ 0Ž4ˆ)(%RÁÎ ¶$€TÊ€¥Àþb‡b,säÐ@7À üѰ‚Òî?f¥Ö—\PIx!I´¦"”Ȉ’3¨ QY˜ÿt^^ÛØgv- }>WJOAV`$&#”¦8ùøø8€\FF ›SFJ$ÂÆ€ÐƊС䈉ÀÀ 4ª…Èäå -Á§‡ €H²…—ŸŸŸf ?ðâ5„ €k1Âd‰,ŒÃ ³ƒ“€.€"­F™ËË€àñ‚½ÁIÈ€"±Ù4ÉH gx|‚f©m)))9´. aMDƒ& ºX@t± €èb @ÑÅ€¢‹%DKˆ.–], ºX@t± €èb @€d`‚ɽSµOIEND®B`‚rampartc-src-1.3.0/docs/api/html/rampart__replay__detector_8h.html0000644000076500007650000001105111202454500025115 0ustar shankarshankar Rampart/C: rampart_replay_detector.h File Reference

rampart_replay_detector.h File Reference

The replay_detector module for rampart. More...

#include <axis2_defines.h>
#include <axutil_env.h>
#include <axis2_msg_ctx.h>
#include <rampart_context.h>

Go to the source code of this file.

Classes

struct  rampart_replay_detector_ops
struct  rampart_replay_detector

Defines

#define RAMPART_REPLAY_DETECTOR_IS_REPLAYED(replay_detector, env, msg_ctx, rampart_context)   ((replay_detector)->ops->is_replayed(replay_detector, env, msg_ctx, rampart_context))
#define RAMPART_REPLAY_DETECTOR_FREE(replay_detector, env)   ((replay_detector)->ops->free(replay_detector, env))

Typedefs

typedef struct
rampart_replay_detector_ops 
rampart_replay_detector_ops_t
typedef struct
rampart_replay_detector 
rampart_replay_detector_t

Functions

AXIS2_EXTERN axis2_status_t rampart_replay_detector_default (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, void *user_params)


Detailed Description

The replay_detector module for rampart.


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/oxs__xml__encryption_8h-source.html0000644000076500007650000002161411202454500025451 0ustar shankarshankar Rampart/C: oxs_xml_encryption.h Source File

oxs_xml_encryption.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef OXS_XML_ENCRYPTION_H
00019 #define OXS_XML_ENCRYPTION_H
00020 
00021 
00032 #include <axis2_defines.h>
00033 #include <oxs_ctx.h>
00034 #include <axutil_env.h>
00035 #include <axiom_node.h>
00036 #include <axiom_element.h>
00037 #include <axutil_qname.h>
00038 
00039 #ifdef __cplusplus
00040 extern "C"
00041 {
00042 #endif
00043 
00054     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00055     oxs_xml_enc_encrypt_node(const axutil_env_t *env,
00056                              oxs_ctx_t * enc_ctx,
00057                              axiom_node_t *node,
00058                              axiom_node_t **enc_type_node, 
00059                              axiom_node_t *key_reference_node);
00060 
00070     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00071     oxs_xml_enc_decrypt_node(const axutil_env_t *env,
00072                              oxs_ctx_t * enc_ctx,
00073                              axiom_node_t *enc_type_node,
00074                              axiom_node_t **decrypted_node);
00075 
00086     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00087     oxs_xml_enc_encrypt_data(const axutil_env_t *env,
00088                              oxs_ctx_t * enc_ctx,
00089                              oxs_buffer_t *content_buf,
00090                              axiom_node_t **enc_type_node, 
00091                              axiom_node_t *key_reference_node);
00092 
00102     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00103     oxs_xml_enc_decrypt_data(const axutil_env_t *env,
00104                              oxs_ctx_t * enc_ctx,
00105                              axiom_node_t *enc_type_node,
00106                              oxs_buffer_t *result_buf);
00107 
00118     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00119     oxs_xml_enc_encrypt_key(const axutil_env_t *env,
00120                             oxs_asym_ctx_t * asym_ctx,
00121                             axiom_node_t *parent,
00122                             oxs_key_t *sym_key,
00123                             axutil_array_list_t *id_list);
00124 
00135     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00136     oxs_xml_enc_decrypt_key(const axutil_env_t *env,
00137                             oxs_asym_ctx_t * asym_ctx,
00138                             axiom_node_t *parent,
00139                             axiom_node_t *encrypted_key_node,
00140                             oxs_key_t *key);
00142 #ifdef __cplusplus
00143 }
00144 #endif
00145 
00146 #endif                          /* OXS_XML_ENCRYPTION_H */

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/oxs__sign__ctx_8h.html0000644000076500007650000002332711202454500022722 0ustar shankarshankar Rampart/C: oxs_sign_ctx.h File Reference

oxs_sign_ctx.h File Reference

Keeps information relavent for a single node of signing. More...

#include <axis2_defines.h>
#include <axutil_env.h>
#include <axiom_node.h>
#include <oxs_x509_cert.h>
#include <oxs_key.h>
#include <openssl_pkey.h>

Go to the source code of this file.

Typedefs

typedef struct oxs_sign_ctx_t oxs_sign_ctx_t

Enumerations

enum  oxs_sign_operation_t { OXS_SIGN_OPERATION_NONE = 0, OXS_SIGN_OPERATION_SIGN, OXS_SIGN_OPERATION_VERIFY }

Functions

AXIS2_EXTERN oxs_sign_ctx_t * oxs_sign_ctx_create (const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_sign_ctx_free (oxs_sign_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_sign_ctx_get_sign_mtd_algo (const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_sign_ctx_get_c14n_mtd (const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_sign_ctx_get_sig_val (const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env)
AXIS2_EXTERN axutil_array_list_t * oxs_sign_ctx_get_sign_parts (const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env)
AXIS2_EXTERN oxs_x509_cert_t * oxs_sign_ctx_get_certificate (const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env)
AXIS2_EXTERN openssl_pkey_toxs_sign_ctx_get_private_key (const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env)
AXIS2_EXTERN openssl_pkey_toxs_sign_ctx_get_public_key (const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env)
AXIS2_EXTERN oxs_key_toxs_sign_ctx_get_secret (const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env)
AXIS2_EXTERN oxs_sign_operation_t oxs_sign_ctx_get_operation (const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_sign_ctx_set_sign_mtd_algo (oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, axis2_char_t *sign_mtd_algo)
AXIS2_EXTERN axis2_status_t oxs_sign_ctx_set_c14n_mtd (oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, axis2_char_t *c14n_mtd)
AXIS2_EXTERN axis2_status_t oxs_sign_ctx_set_sig_val (oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, axis2_char_t *sig_val)
AXIS2_EXTERN axis2_status_t oxs_sign_ctx_set_sign_parts (oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, axutil_array_list_t *sign_parts)
AXIS2_EXTERN axis2_status_t oxs_sign_ctx_set_certificate (oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, oxs_x509_cert_t *certificate)
AXIS2_EXTERN axis2_status_t oxs_sign_ctx_set_private_key (oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, openssl_pkey_t *prv_key)
AXIS2_EXTERN axis2_status_t oxs_sign_ctx_set_public_key (oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, openssl_pkey_t *pub_key)
AXIS2_EXTERN axis2_status_t oxs_sign_ctx_set_secret (oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, oxs_key_t *secret)
AXIS2_EXTERN axis2_status_t oxs_sign_ctx_set_operation (oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, oxs_sign_operation_t operation)


Detailed Description

Keeps information relavent for a single node of signing.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/rampart__saml_8h-source.html0000644000076500007650000002510411202454500024027 0ustar shankarshankar Rampart/C: rampart_saml.h Source File

rampart_saml.h

Go to the documentation of this file.
00001 /*
00002  *   Copyright 2003-2004 The Apache Software Foundation.
00003  *
00004  *   Licensed under the Apache License, Version 2.0 (the "License");
00005  *   you may not use this file except in compliance with the License.
00006  *   You may obtain a copy of the License at
00007  *
00008  *       http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  *   Unless required by applicable law or agreed to in writing, software
00011  *   distributed under the License is distributed on an "AS IS" BASIS,
00012  *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  *   See the License for the specific language governing permissions and
00014  *   limitations under the License.
00015  */
00016 
00017 #include <axutil_utils_defines.h>
00018 #include <axis2_defines.h>
00019 #include <axutil_env.h>
00020 #include <axiom_soap.h>
00021 #include <axis2_msg_ctx.h>
00022 #include <oxs_asym_ctx.h>
00023 #include <oxs_xml_encryption.h>
00024 #include <rampart_context.h>
00025 #include <axutil_utils.h>
00026 #include <axiom.h>
00027 #include <rampart_saml_token.h>
00028 #include <oxs_key_mgr.h>
00029 #include <rp_rampart_config.h>
00030 
00037 #ifndef RAMPART_SAML_H
00038 #define RAMPART_SAML_H
00039 
00040 #ifdef __cplusplus
00041 extern "C" {
00042 #endif
00043 
00044 #define RAMPART_ST_FAULT_SECURITYTOKENUNAVAILABLE_STR   "A referenced SAML assertion could not be retrieved."
00045 #define RAMPART_ST_FAULT_UNSUPPORTEDSECURITYTOKEN_STR   "An assertion contains a <saml:condition> element that the receive does not understand."
00046 #define RAMPART_ST_FAULT_FAILEDCHECK_STR                "A signature withing an assertion or referencing an assertion is invalid."
00047 #define RAMPART_ST_FAULT_INVALIDSECURITYTOKEN_STR       "The issuer of an assertion is not acceptable to the receiver."                
00048 
00049 #define RAMPART_ST_FAULT_SECURITYTOKENUNAVAILABLE_CODE  "wsse:SecurityTokenUnavailable"
00050 #define RAMPART_ST_FAULT_UNSUPPORTEDSECURITYTOKEN_CODE  "wsse:UnsupportedSecurityToken"
00051 #define RAMPART_ST_FAULT_FAILEDCHECK_CODE               "wsse:FailedCheck"
00052 #define RAMPART_ST_FAULT_INVALIDSECURITYTOKEN_CODE      "wsse:InvalidSecurityToken"                
00053 
00054 #define RAMPART_SAML_FAULT_CODE                         "env:Sender"
00055 
00065 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00066 rampart_saml_supporting_token_build(const axutil_env_t *env, 
00067                          rampart_context_t *rampart_context,                         
00068                          axiom_node_t *sec_node,
00069                          axutil_array_list_t *sign_parts);
00079 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00080 rampart_saml_token_validate(const axutil_env_t *env, 
00081                             rampart_context_t *rampart_context, 
00082                             axiom_node_t *assertion);
00090 AXIS2_EXTERN char * AXIS2_CALL
00091 rampart_saml_token_get_subject_confirmation(const axutil_env_t *env, 
00092                                             axiom_node_t *assertion);
00093 
00094 
00102 AXIS2_EXTERN int AXIS2_CALL
00103 rampart_saml_token_fault_securitytokenunavailable(axutil_env_t *env, 
00104                                                   axis2_msg_ctx_t *ctx);
00112 AXIS2_EXTERN int AXIS2_CALL
00113 rampart_saml_token_fault_unsupportedsecuritytoken(axutil_env_t *env, 
00114                                                   axis2_msg_ctx_t *ctx);
00122 AXIS2_EXTERN int AXIS2_CALL
00123 rampart_saml_token_fault_failedcheck(axutil_env_t *env, 
00124                                                   axis2_msg_ctx_t *ctx);
00132 AXIS2_EXTERN int AXIS2_CALL
00133 rampart_saml_token_fault_invalidsecuritytoken(axutil_env_t *env, 
00134                                                   axis2_msg_ctx_t *ctx);
00135 
00136 
00137 AXIS2_EXTERN rampart_saml_token_t * AXIS2_CALL
00138 rampart_saml_add_token(rampart_context_t *rampart_context, 
00139                                            const axutil_env_t *env, axiom_node_t *assertion, 
00140                                            axiom_node_t *str,
00141                                            rampart_st_type_t type);
00142 #ifdef __cplusplus
00143 }
00144 #endif
00145 
00146 #endif    

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/oxs__error_8h.html0000644000076500007650000002364711202454500022103 0ustar shankarshankar Rampart/C: oxs_error.h File Reference

oxs_error.h File Reference

Represents an Error occured during the OMXMLSecurity execution. More...

#include <axis2_defines.h>
#include <axutil_env.h>

Go to the source code of this file.

Classes

struct  _oxs_error_description

Defines

#define FUNCTION_NAME   __FUNCTION__
#define LINE_NUMBER   __LINE__
#define FILE_NAME   __FILE__
#define OXS_ERROR_LOCATION   FILE_NAME,LINE_NUMBER,FUNCTION_NAME
#define OXS_ERROR_DEFAULT   0
#define OXS_ERROR_ENCRYPT_FAILED   1
#define OXS_ERROR_DECRYPT_FAILED   2
#define OXS_ERROR_INVALID_DATA   3
#define OXS_ERROR_INVALID_SIZE   4
#define OXS_ERROR_INVALID_FORMAT   5
#define OXS_ERROR_ELEMENT_FAILED   6
#define OXS_ERROR_UNSUPPORTED_ALGO   7
#define OXS_ERROR_CREATION_FAILED   8
#define OXS_ERROR_INITIALIZATION_FAILED   9
#define OXS_ERROR_DATA_CONV_FAILED   10
#define OXS_ERROR_OPENSSL_FUNC_FAILED   11
#define OXS_ERROR_TRANSFORM_FAILED   12
#define OXS_ERROR_SIGN_FAILED   13
#define OXS_ERROR_SIG_VERIFICATION_FAILED   14
#define OXS_ERROR_KEY_DERIVATION_FAILED   15

Typedefs

typedef struct
_oxs_error_description 
oxs_error_description
typedef struct
_oxs_error_description
oxs_error_description_ptr


Detailed Description

Represents an Error occured during the OMXMLSecurity execution.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/globals.html0000644000076500007650000011302711202454500020736 0ustar shankarshankar Rampart/C: Class Members
Here is a list of all documented file members with links to the documentation:

- o -


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__oxs__cipher.html0000644000076500007650000001520611202454500023170 0ustar shankarshankar Rampart/C: Cipher

Cipher
[OMXMLSecurity]


Functions

AXIS2_EXTERN
openssl_cipher_property_t
oxs_get_cipher_property_for_url (const axutil_env_t *env, axis2_char_t *url)
AXIS2_EXTERN axis2_char_t * oxs_get_cipher_name_for_url (const axutil_env_t *env, axis2_char_t *url)
AXIS2_EXTERN axis2_char_t * oxs_get_cipher_url_for_name (const axutil_env_t *env, axis2_char_t *name)

Function Documentation

AXIS2_EXTERN axis2_char_t* oxs_get_cipher_name_for_url ( const axutil_env_t *  env,
axis2_char_t *  url 
)

Get the cipher name for the given url

Parameters:
env pointer to environment struct
url the url as a string
return the name as a string

AXIS2_EXTERN openssl_cipher_property_t* oxs_get_cipher_property_for_url ( const axutil_env_t *  env,
axis2_char_t *  url 
)

Get the cipher property for the given url

Parameters:
env pointer to environment struct
url the url as a string
return the property

AXIS2_EXTERN axis2_char_t* oxs_get_cipher_url_for_name ( const axutil_env_t *  env,
axis2_char_t *  name 
)

Get the cipher url for the given name

Parameters:
env pointer to environment struct
name the name as a string
return the url as a string


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__rampart__utils.html0000644000076500007650000011645011202454500023716 0ustar shankarshankar Rampart/C: Rampart Utilities

Rampart Utilities


Modules

 Key File Type
 Rampart Config
 Rampart Context
 Rampart Crypto Util
 Encryption
 Engine
 Rampart_error
 Handler Utilities
 PolicyValidator
 Replay Detector
 Security Context Token provider
 Security Header Builder
 Security Header Processor
 Signature
 Timestamp Token
 Token Builder
 Processor
 Username Token
 Utils

Defines

#define RAMPART_IN_HANDLER   "RampartInHandler"
#define RAMPART_OUT_HANDLER   "RampartOutHandler"
#define RAHAS_IN_HANDLER   "RahasInHandler"
#define RAHAS_OUT_HANDLER   "RahasOutHandler"
#define RAMPART_DEFAULT_KT_ALGO   OXS_DEFAULT_KT_ALGO_HREF
#define RAMPART_STR_DEFAULT   OXS_STR_DEFAULT
#define RAMPART_TIMESTAMP_TOKEN_DEFAULT_TIME_TO_LIVE   300
#define RAMPART_SECURITY   "Security"
#define RAMPART_SECURITY_USERNAMETOKEN   "UsernameToken"
#define RAMPART_SECURITY_USERNAMETOKEN_USERNAME   "Username"
#define RAMPART_SECURITY_USERNAMETOKEN_PASSWORD   "Password"
#define RAMPART_SECURITY_USERNAMETOKEN_CREATED   "Created"
#define RAMPART_SECURITY_USERNAMETOKEN_NONCE   "Nonce"
#define RAMPART_SECURITY_USERNAMETOKEN_PASSWORD_ATTR_TYPE   "Type"
#define RAMPART_SECURITY_TIMESTAMP   "Timestamp"
#define RAMPART_SECURITY_TIMESTAMP_CREATED   "Created"
#define RAMPART_SECURITY_TIMESTAMP_EXPIRES   "Expires"
#define RAMPART_RAMPART   "rampart"
#define RAMPART_WSSE   "wsse"
#define RAMPART_WSSE_XMLNS   "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
#define RAMPART_WSU   "wsu"
#define RAMPART_WSU_XMLNS   "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
#define RAMPART_PASSWORD_DIGEST_URI   "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest"
#define RAMPART_PASSWORD_TEXT_URI   "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText"
#define RAMPART_INFLOW_SECURITY_POLICY   "InflowSecurityPolicy"
#define RAMPART_OUTFLOW_SECURITY_POLICY   "OutflowSecurityPolicy"
#define INFLOW_RAMPART_CONTEXT   "InflowRampartContext"
#define OUTFLOW_RAMPART_CONTEXT   "OutflowRampartContext"
#define RAMPART_CONTEXT   "RampartContext"
#define IN_MESSAGE_SECURITY   "InMessageSecurity"
#define OUT_MESSAGE_SECURITY   "OutMessageSEcurity"
#define RAMPART_PASSWORD_TEXT   "plainText"
#define RAMPART_PASSWORD_DIGEST   "Digest"
#define RAMPART_CONFIGURATION   "RampartConfiguration"
#define RAMPART_CLIENT_CONFIGURATION   "RampartClientConfiguration"
#define RAMPART_FAULT_UNSUPPORTED_SECURITY_TOKEN   "wsse:UnsupportedSecurityToken"
#define RAMPART_FAULT_UNSUPPORTED_ALGORITHM   "wsse:UnsupportedAlgorithm"
#define RAMPART_FAULT_INVALID_SECURITY   "wsse:InvalidSecurity"
#define RAMPART_FAULT_INVALID_SECURITY_TOKEN   "wsse:InvalidSecurityToken"
#define RAMPART_FAULT_FAILED_AUTHENTICATION   "wsse:FailedAuthentication"
#define RAMPART_FAULT_FAILED_CHECK   "wsse:FailedCheck"
#define RAMPART_FAULT_SECURITY_TOKEN_UNAVAILABLE   "wsse:SecurityTokenUnavailable"
#define RAMPART_FAULT_TRUST_REQUEST_FAILED   "wst:RequestFailed"
#define RAMPART_FAULT_TRUST_REQUEST_INVALID   "wst:InvalidRequest"
#define RAMPART_FAULT_IN_TIMESTAMP   "wsse:Timestamp"
#define RAMPART_FAULT_IN_USERNAMETOKEN   "wsse:UsernameToken"
#define RAMPART_FAULT_IN_ENCRYPTED_KEY   "xenc:EncryptedKey"
#define RAMPART_FAULT_IN_ENCRYPTED_DATA   "xenc:EncryptedData"
#define RAMPART_FAULT_IN_SIGNATURE   "ds:Signature"
#define RAMPART_FAULT_MSG_REPLAYED   "rampc:Message-Replayed"
#define RAMPART_FAULT_IN_POLICY   "rampc:Policy"
#define RAMPART_FAULT_ELEMENT_LOCAL_NAME   "ProblemSecurityHeader"
#define RAMPART_ACTION_PASSWORD   "password"
#define RAMPART_ACTION_ENC_USER_PASSWORD   "encUserPassword"
#define RAMPART_CALLBACK_SPECIFIC_PROPERTY   "callbackSpecificProperty"
#define RAMPART_SECURITY_PROCESSED_RESULTS   "SecurityProcessedResults"
#define RAMPART_SPR_UT_USERNAME   "SPR_UT_username"
#define RAMPART_SPR_UT_CREATED   "SPR_UT_created"
#define RAMPART_SPR_UT_NONCE   "SPR_UT_nonce"
#define RAMPART_SPR_UT_PASSWORD_TYPE   "SPR_UT_passwordType"
#define RAMPART_SPR_TS_CREATED   "SPR_TS_created"
#define RAMPART_SPR_TS_EXPIRES   "SPR_TS_expires"
#define RAMPART_SPR_UT_CHECKED   "SPR_UT_Checked"
#define RAMPART_SPR_TS_CHECKED   "SPR_TS_Checked"
#define RAMPART_SPR_ENC_CHECKED   "SPR_ENC_Checked"
#define RAMPART_SPR_SIG_VALUE   "SPR_Sig_Val"
#define RAMPART_SPR_ENDORSED_VALUE   "SPR_Endorsed_Value"
#define RAMPART_SPR_SIG_VERIFIED   "SPR_Sig_Verified"
#define RAMPART_SPR_SIG_ENCRYPTED   "SPR_Sig_Encrypted"
#define RAMPART_SPR_SIG_CONFIRM_FOUND   "SPR_Sig_Confirmation_Found"
#define RAMPART_SPR_BODY_ENCRYPTED   "SPR_Body_Encrypted"
#define RAMPART_YES   "YES"
#define RAMPART_NO   "NO"
#define RAMPART_STR_DIRECT_REFERENCE   OXS_STR_DIRECT_REFERENCE
#define RAMPART_STR_KEY_IDENTIFIER   OXS_STR_KEY_IDENTIFIER
#define RAMPART_STR_EMBEDDED   OXS_STR_EMBEDDED
#define RAMPART_STR_ISSUER_SERIAL   OXS_STR_ISSUER_SERIAL
#define RAMPART_STR_THUMB_PRINT   OXS_STR_THUMB_PRINT
#define RAMPART_STR_EXTERNAL_URI   OXS_STR_EXTERNAL_URI
#define RAMPART_STR_ENCRYPTED_KEY   OXS_STR_ENCRYPTED_KEY
#define RAMPART_RD_DEF_VALID_DURATION   60
#define RAMPART_RD_DEF_MAX_RCDS   5
#define RAMPART_SCT_ID_TYPE_UNKNOWN   0
#define RAMPART_SCT_ID_TYPE_LOCAL   1
#define RAMPART_SCT_ID_TYPE_GLOBAL   2
#define RAMPART_USERNAME_TOKEN_NONCE_LENGTH   24
#define RAMPART_ENC_TOKEN_ID   "EncryptionTokenID"
#define RAMPART_SIG_TOKEN_ID   "SignatureTokenID"
#define RAMPART_BST_ID_PREFIX   "BST-"
#define RAMPART_EMBED_TOKEN_ID   "ID"

Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/oxs__derivation_8h.html0000644000076500007650000000762711202454500023116 0ustar shankarshankar Rampart/C: oxs_derivation.h File Reference

oxs_derivation.h File Reference

The Key derivation module for OMXMLSecurity. More...

#include <axis2_defines.h>
#include <axutil_env.h>
#include <oxs_key.h>
#include <oxs_buffer.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN axis2_status_t oxs_derivation_derive_key (const axutil_env_t *env, oxs_key_t *secret, oxs_key_t *derived_key, axis2_bool_t build_fresh)
AXIS2_EXTERN axiom_node_t * oxs_derivation_build_derived_key_token (const axutil_env_t *env, oxs_key_t *derived_key, axiom_node_t *parent, axis2_char_t *stref_uri, axis2_char_t *stref_val_type, axis2_char_t *wsc_ns_uri)
AXIS2_EXTERN axiom_node_t * oxs_derivation_build_derived_key_token_with_stre (const axutil_env_t *env, oxs_key_t *derived_key, axiom_node_t *parent, axiom_node_t *stre, axis2_char_t *wsc_ns_uri)
AXIS2_EXTERN oxs_key_toxs_derivation_extract_derived_key_from_token (const axutil_env_t *env, axiom_node_t *dk_token, axiom_node_t *root_node, oxs_key_t *session_key)


Detailed Description

The Key derivation module for OMXMLSecurity.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/rampart__error_8h.html0000644000076500007650000000704711202454500022734 0ustar shankarshankar Rampart/C: rampart_error.h File Reference

rampart_error.h File Reference

Rampart specific error codes. More...

#include <axutil_error.h>

Go to the source code of this file.

Typedefs

typedef enum rampart_error_codes rampart_error_codes_t

Enumerations

enum  rampart_error_codes {
  RAMPART_ERROR_NONE = RAMPART_ERROR_CODES_START, RAMPART_ERROR_UNSUPPORTED_SECURITY_TOKEN, RAMPART_ERROR_INVALID_SECURITY, RAMPART_ERROR_INVALID_SECURITY_TOKEN,
  RAMPART_ERROR_FAILED_AUTHENTICATION, RAMPART_ERROR_FAILED_CHECK, RAMPART_ERROR_SECURITY_TOKEN_UNAVAILABLE, RAMPART_ERROR_RAMPART_ERROR_LAST,
  RAMPART_ERROR_IN_TIMESTAMP, RAMPART_ERROR_IN_USERNAMETOKEN, RAMPART_ERROR_IN_ENCRYPTED_KEY, RAMPART_ERROR_IN_ENCRYPTED_DATA,
  RAMPART_ERROR_IN_SIGNATURE, RAMPART_ERROR_MSG_REPLAYED, RAMPART_ERROR_IN_POLICY, RAMPART_ERROR_LAST
}
 rampart error codes More...

Functions

AXIS2_EXTERN axis2_status_t rampart_error_init ()


Detailed Description

Rampart specific error codes.


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/trust__rst_8h-source.html0000644000076500007650000005510411202454500023421 0ustar shankarshankar Rampart/C: trust_rst.h Source File

trust_rst.h

00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef TRUST_RST_H
00019 #define TRUST_RST_H
00020 
00021 #include <stdio.h>
00022 #include <stdlib.h>
00023 #include <axutil_utils.h>
00024 #include <axutil_base64.h>
00025 #include <axiom_soap.h>
00026 #include <axiom.h>
00027 #include <trust_constants.h>
00028 #include <trust_entropy.h>
00029 #include <trust_claims.h>
00030 #include <trust_life_time.h>
00031 #include <rp_issued_token.h>
00032 
00033 #ifdef __cplusplus
00034 extern "C"
00035 {
00036 #endif
00037     
00038    typedef struct trust_rst trust_rst_t;
00039     
00040    /* Create RST Context*/
00041    AXIS2_EXTERN trust_rst_t * AXIS2_CALL
00042    trust_rst_create(
00043            const axutil_env_t *env);
00044     
00045     /* Populate RST Context from axiom_node*/
00046     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00047     trust_rst_populate_rst(
00048         trust_rst_t *rst,
00049         const axutil_env_t *env,
00050         axiom_node_t *rst_node);
00051     
00052     /*Build RST message from the created RST Context */
00053     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00054     trust_rst_build_rst(
00055         trust_rst_t *rst,
00056         const axutil_env_t *env,
00057         axiom_node_t *parent);
00058 
00059         /*Automated RST building with RelyingParty's policy*/
00060         AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00061         trust_rst_build_rst_with_issued_token_assertion(
00062                 trust_rst_t *rst,
00063                 const axutil_env_t *env,
00064                 rp_issued_token_t *issued_token);
00065 
00066     
00067     /* Getters & Setters */
00068     
00069     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00070     trust_rst_get_attr_context(
00071         trust_rst_t *rst,
00072         const axutil_env_t *env);
00073     
00074     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00075     trust_rst_set_attr_context(
00076         trust_rst_t *rst,
00077         const axutil_env_t *env,
00078         axis2_char_t *attr_context);
00079     
00080     
00081     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00082     trust_rst_get_token_type(
00083         trust_rst_t *rst,
00084         const axutil_env_t *env);
00085     
00086     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00087     trust_rst_set_token_type(
00088         trust_rst_t *rst,
00089         const axutil_env_t *env,
00090         axis2_char_t *token_type);
00091     
00092     
00093     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00094     trust_rst_get_request_type(
00095         trust_rst_t *rst,
00096         const axutil_env_t *env);
00097  
00098     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00099     trust_rst_set_request_type(
00100         trust_rst_t *rst,
00101         const axutil_env_t *env,
00102         axis2_char_t *request_type);
00103     
00104         AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00105         trust_rst_get_wsa_action(
00106                         trust_rst_t *rst,
00107                         const axutil_env_t *env);
00108 
00109         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00110         trust_rst_set_wsa_action(
00111                         trust_rst_t *rst,
00112                         const axutil_env_t *env,
00113                         axis2_char_t *wsa_action);
00114     
00115     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00116     trust_rst_get_applies_to_addr(
00117         trust_rst_t *rst,
00118         const axutil_env_t *env);
00119     
00120     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00121     trust_rst_set_appliesto(
00122         trust_rst_t *rst,
00123         const axutil_env_t *env,
00124         axis2_char_t *applies_to_addr);
00125     
00126     
00127     AXIS2_EXTERN trust_claims_t * AXIS2_CALL
00128     trust_rst_get_claims(
00129         trust_rst_t *rst,
00130         const axutil_env_t *env);
00131     
00132     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00133     trust_rst_set_claims(
00134         trust_rst_t *rst,
00135         const axutil_env_t *env,
00136         trust_claims_t *claims);
00137     
00138     AXIS2_EXTERN trust_entropy_t * AXIS2_CALL
00139     trust_rst_get_entropy(
00140         trust_rst_t *rst,
00141         const axutil_env_t *env);
00142     
00143     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00144     trust_rst_set_entropy(
00145         trust_rst_t *rst,
00146         const axutil_env_t *env,
00147         trust_entropy_t *entropy);
00148     
00149     
00150     AXIS2_EXTERN  trust_life_time_t * AXIS2_CALL
00151     trust_rst_get_life_time(
00152         trust_rst_t *rst,
00153         const axutil_env_t *env);
00154     
00155     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00156     trust_rst_set_life_time(
00157         trust_rst_t *rst,
00158         const axutil_env_t *env,
00159         trust_life_time_t *life_time);
00160     
00161     
00162     /*Key and Token Parameter Extensions*/
00163     
00164     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00165     trust_rst_set_key_type(
00166         trust_rst_t *rst,
00167         const axutil_env_t *env,
00168         axis2_char_t *key_type);
00169     
00170     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00171     trust_rst_get_key_type(
00172         trust_rst_t *rst,
00173         const axutil_env_t *env);
00174         
00175       
00176     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00177     trust_rst_set_key_size(
00178         trust_rst_t *rst,
00179         const axutil_env_t *env,
00180         int key_size);
00181     
00182     AXIS2_EXTERN int AXIS2_CALL
00183     trust_rst_get_key_size(
00184         trust_rst_t *rst,
00185         const axutil_env_t *env);
00186     
00187     
00188 
00189     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00190     trust_rst_set_authentication_type(
00191         trust_rst_t *rst,
00192         const axutil_env_t *env,
00193         axis2_char_t *authentication_type);
00194     
00195     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00196     trust_rst_get_authentication_type(
00197         trust_rst_t *rst,
00198         const axutil_env_t *env);
00199 
00200     
00201     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00202     trust_rst_set_signature_algorithm(
00203         trust_rst_t *rst,
00204         const axutil_env_t *env,
00205         axis2_char_t *signature_algorithm);
00206     
00207     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00208     trust_rst_get_signature_algorithm(
00209         trust_rst_t *rst,
00210         const axutil_env_t *env);
00211     
00212     
00213     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00214     trust_rst_set_encryption_algorithm(
00215         trust_rst_t *rst,
00216         const axutil_env_t *env,
00217         axis2_char_t *encryption_algorithm);
00218     
00219     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00220     trust_rst_get_encryption_algorithm(
00221         trust_rst_t *rst,
00222         const axutil_env_t *env);
00223     
00224     
00225     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00226     trust_rst_set_canonicalization_algorithm(
00227         trust_rst_t *rst,
00228         const axutil_env_t *env,
00229         axis2_char_t *canonicalization_algorithm);
00230     
00231     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00232     trust_rst_get_canonicalization_algorithm(
00233         trust_rst_t *rst,
00234         const axutil_env_t *env);
00235 
00236     
00237     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00238     trust_rst_set_computedkey_algorithm(
00239         trust_rst_t *rst,
00240         const axutil_env_t *env,
00241         axis2_char_t *computedkey_algorithm);
00242     
00243     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00244     trust_rst_get_computedkey_algorithm(
00245         trust_rst_t *rst,
00246         const axutil_env_t *env);
00247 
00248 
00249    
00250     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00251     trust_rst_set_desired_encryption(
00252         trust_rst_t *rst,
00253         const axutil_env_t *env,
00254         axiom_node_t *desired_encryption_key);
00255     
00256     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00257     trust_rst_get_desired_encryption(
00258         trust_rst_t *rst,
00259         const axutil_env_t *env);
00260 
00261 
00262     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00263     trust_rst_set_proof_encryption(
00264         trust_rst_t *rst,
00265         const axutil_env_t *env,
00266         axiom_node_t *proof_encryption_key);
00267     
00268     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00269     trust_rst_get_proof_encryption(
00270         trust_rst_t *rst,
00271         const axutil_env_t *env);
00272     
00273     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00274     trust_rst_set_usekey(
00275         trust_rst_t *rst,
00276         const axutil_env_t *env,
00277         axiom_node_t *usekey_key);
00278     
00279     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00280     trust_rst_get_usekey(
00281         trust_rst_t *rst,
00282         const axutil_env_t *env);
00283     /*FIX Usekey attr @Sig*/
00284 
00285 
00286     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00287     trust_rst_set_signwith(
00288         trust_rst_t *rst,
00289         const axutil_env_t *env,
00290         axis2_char_t *signwith);
00291     
00292     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00293     trust_rst_get_signwith(
00294         trust_rst_t *rst,
00295         const axutil_env_t *env);
00296     
00297     
00298     
00299     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00300     trust_rst_set_encryptwith(
00301         trust_rst_t *rst,
00302         const axutil_env_t *env,
00303         axis2_char_t *encryptwith);
00304     
00305     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00306     trust_rst_get_encryptwith(
00307         trust_rst_t *rst,
00308         const axutil_env_t *env);
00309      
00310     
00311     /*Trust Version 1 -2005/02 - http://schemas.xmlsoap.org/ws/2005/02/trust */
00312     /*Trust Version 2 -2005/12 - http://docs.oasis-open.org/ws-sx/ws-trust/200512 */
00313     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00314     trust_rst_get_wst_ns_uri(
00315         trust_rst_t *rst,
00316         const axutil_env_t *env);
00317     
00318     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00319     trust_rst_set_wst_ns_uri(
00320         trust_rst_t *rst,
00321         const axutil_env_t *env,
00322         axis2_char_t *wst_ns_uri);
00323     
00324     
00325     
00326     
00327     AXIS2_EXTERN void AXIS2_CALL
00328     trust_rst_free(
00329         trust_rst_t *rst,
00330         const axutil_env_t *env);
00331     
00332     
00333 #ifdef __cplusplus
00334 }
00335 #endif
00336 
00337 #endif 
00338 
00339 

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/rahas__request__processor_8h-source.html0000644000076500007650000001120611202454500026447 0ustar shankarshankar Rampart/C: rahas_request_processor.h Source File

rahas_request_processor.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef RAHAS_REQUEST_PROCESSOR_H
00019 #define RAHAS_REQUEST_PROCESSOR_H
00020 
00031 #ifdef __cplusplus
00032 extern "C"
00033 {
00034 #endif
00035 
00045     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00046     rahas_process_issue_request(
00047         const axutil_env_t *env, 
00048         trust_rst_t *rst, 
00049         trust_rstr_t *rstr,
00050         axis2_msg_ctx_t *msg_ctx,
00051         int trust_version);
00052 
00055 #ifdef __cplusplus
00056 }
00057 #endif
00058 
00059 #endif    /* RAHAS_REQUEST_PROCESSOR_H */

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/rampart__handler__util_8h.html0000644000076500007650000000764111202454500024414 0ustar shankarshankar Rampart/C: rampart_handler_util.h File Reference

rampart_handler_util.h File Reference

Utilities related to handlers. More...

#include <axiom_soap_header.h>
#include <axis2_msg_ctx.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN axiom_node_t * rampart_get_security_header (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axiom_soap_header_t *soap_header)
AXIS2_EXTERN void rampart_create_fault_envelope (const axutil_env_t *env, const axis2_char_t *sub_code, const axis2_char_t *reason_text, const axis2_char_t *detail_node_text, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN void * rampart_get_rampart_configuration (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axis2_char_t *param_name)
AXIS2_EXTERN axis2_bool_t rampart_is_rampart_engaged (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx)


Detailed Description

Utilities related to handlers.

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.


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/trust__claims_8h-source.html0000644000076500007650000002017511202454500024061 0ustar shankarshankar Rampart/C: trust_claims.h Source File

trust_claims.h

00001 /*
00002 * Licensed to the Apache Software Foundation (ASF) under one or more
00003 * contributor license agreements.  See the NOTICE file distributed with
00004 * this work for additional information regarding copyright ownership.
00005 * The ASF licenses this file to You under the Apache License, Version 2.0
00006 * (the "License"); you may not use this file except in compliance with
00007 * the License.  You may obtain a copy of the License at
00008 *
00009 *      http://www.apache.org/licenses/LICENSE-2.0
00010 *
00011 * Unless required by applicable law or agreed to in writing, software
00012 * distributed under the License is distributed on an "AS IS" BASIS,
00013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014 * See the License for the specific language governing permissions and
00015 * limitations under the License.
00016 */
00017 
00018 #ifndef TRUST_CLAIMS_H
00019 #define TRUST_CLAIMS_H
00020 
00021 #include <axutil_utils.h>
00022 #include <axutil_array_list.h>
00023 #include <axiom.h>
00024 
00025 #include <trust_constants.h>
00026 #include <trust_util.h>
00027 
00028 #ifdef __cplusplus
00029 extern "C"
00030 {
00031 #endif
00032     
00033     typedef struct trust_claims trust_claims_t;
00034     
00035     AXIS2_EXTERN trust_claims_t * AXIS2_CALL
00036     trust_claims_create(
00037         const axutil_env_t *env);
00038     
00039     AXIS2_EXTERN  axis2_status_t AXIS2_CALL
00040     trust_claims_free(
00041         trust_claims_t *claims,
00042         const axutil_env_t *env);
00043     
00044     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00045     trust_claims_deserialize(
00046         trust_claims_t *claims,
00047         const axutil_env_t *env,
00048         axiom_node_t *claims_node);
00049     
00050     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00051     trust_claims_serialize(
00052         trust_claims_t *claims,
00053         const axutil_env_t *env,
00054         axiom_node_t *parent);
00055         
00056     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00057     trust_claims_set_attr_dialect(
00058         trust_claims_t *claims,
00059         const axutil_env_t *env,
00060         axis2_char_t *dialect_attr);
00061 
00062     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00063     trust_claims_get_attr_dialect(
00064         trust_claims_t *claims,
00065         const axutil_env_t *env);
00066 
00067     AXIS2_EXTERN axutil_array_list_t * AXIS2_CALL
00068     trust_claims_get_claim_list(
00069         trust_claims_t *claims,
00070         const axutil_env_t *env);
00071 
00072         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00073     trust_claims_set_claim_list(
00074         trust_claims_t *claims,
00075                 axutil_array_list_t *claims_list,
00076         const axutil_env_t *env);
00077 
00078     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00079     trust_claims_set_wst_ns_uri(
00080         trust_claims_t *claims,
00081         const axutil_env_t *env,
00082         axis2_char_t *wst_ns_uri);
00083 
00084     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00085     trust_claims_get_wst_ns_uri(
00086         trust_claims_t *claims,
00087         const axutil_env_t *env);
00088         
00089             
00090     
00091 #ifdef __cplusplus
00092 }
00093 #endif
00094 
00095 #endif /*TRUST_CLAIMS_H*/

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/saml__req_8h-source.html0000644000076500007650000031345611202454500023162 0ustar shankarshankar Rampart/C: saml_req.h Source File

saml_req.h

00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef SAML_REQ_H
00019 #define SAML_REQ_H
00020 
00021 #include <saml.h>
00022 #include <oxs_xml_signature.h>
00023 #include <oxs_sign_ctx.h>
00024 #include <oxs_xml_key_processor.h>
00025 #include <oxs_utility.h>
00026 #include <oxs_transforms_factory.h>
00027 #include <oxs_xml_key_info_builder.h>
00028 #include <oxs_key_mgr.h>
00029 #include <oxs_transform.h>
00030 #include <oxs_x509_cert.h>
00031 
00032 #ifdef __cplusplus
00033 extern "C"
00034 {
00035 #endif
00036 
00037 #define SAML_REQUEST_ID        "RequestID"
00038 #define SAML_SIGNATURE        "Signature"
00039 #define SAML_SUBJECT_QUERY    "SubjectQuery"
00040 #define SAML_ATTRIBUTE_QUERY  "AttributeQuery"
00041 #define SAML_AUTHENTICATION_QUERY    "AuthenticationQuery"
00042 #define SAML_AUTHORIZATION_DECISION_QUERY    "AuthorizationDecisionQuery"
00043 #define SAML_ASSERTION_ID_REF        "AssertionIDReference"
00044 #define SAML_ASSERTION_ARTIFACT    "AssertionArtifact"
00045 #define SAML_RESPOND_WITH            "RespondWith"
00046 #define SAML_ATTRIBUTE_DESIGNATOR        "AttributeDesignator"
00047 #define SAML_RESPONSE_ID            "ResponceID"
00048 #define SAML_IN_RESPONSE_TO        "InResponseTo"
00049 #define SAML_RECEPIENT            "Recipient"
00050 #define SAML_STATUS_CODE            "StatusCode"
00051 #define SAML_STATUS_MESSAGE            "StatusMessage"
00052 #define SAML_STATUS_DETAIL        "StatusDetail"
00053 #define SAML_STATUS_VALUE        "Value"
00054 #define SAML_STATUS                "Status"
00055 #define SAML_PROTOCOL_NMSP                      "urn:oasis:names:tc:SAML:1.0:protocol"
00056 #define SAML_PROTOCOL_PREFIX            "samlp"
00057 #define SAML_REQUEST                            "Request"
00058 #define SAML_RESPONSE                           "Response"
00059 
00060 /*A code representing the status of the corresponding request*/
00061 
00062 /*
00063  * saml artifact for saml passive client assertion identifiers 
00064  */
00065 typedef struct saml_artifact
00066 {
00067         axis2_char_t *artifact; 
00068 }saml_artifact_t;
00069 
00070 /*
00071  * saml status : defines the status returned in saml response
00072  */
00073 typedef struct saml_status
00074 {
00075     axutil_qname_t *status_value;
00076     axis2_char_t *status_code;
00077     axis2_char_t *status_msg;
00078     axiom_node_t *status_detail;
00079 
00080 }saml_status_t;
00081 
00082 /*
00083  * the saml query for requesting required saml assertion
00084  */
00085 typedef struct saml_query
00086 {
00087         axis2_char_t *type;
00088         void *query;
00089 }saml_query_t;
00090 
00091 typedef struct saml_subject_query
00092 {
00093     saml_subject_t *subject;
00094 }saml_subject_query_t;
00095 
00096 /*
00097  * saml authentication query : for requesting authentication details
00098  */
00099 typedef struct saml_authentication_query
00100 {
00101     saml_subject_t *subject;
00102     /* A URI reference that specifies the type of authentication that took place */
00103     axis2_char_t *auth_method;
00104 
00105 }saml_authentication_query_t;
00106 
00107 /*
00108  * saml qttribute query : for requesting the attributes 
00109  */
00110 typedef struct saml_attr_query
00111 {
00112     saml_subject_t *subject;
00113     axis2_char_t *resource;
00114     axutil_array_list_t *attr_desigs;
00115 }saml_attr_query_t;
00116 
00117 /*
00118  * saml authorization decision query : for requesting information for asserting authorization decisions  
00119  */
00120 typedef struct saml_autho_decision_query
00121 {
00122     saml_subject_t *subject;
00123     axis2_char_t *resource;
00124     /* One or more saml actions*/
00125     axutil_array_list_t *saml_actions;
00126     saml_evidence_t *evidence;
00127 
00128 }saml_autho_decision_query_t;
00129 
00130 typedef struct saml_request
00131 {
00132         /* unique request id*/
00133     axis2_char_t *request_id;
00134 
00135     /* major version */
00136     axis2_char_t *major_version;
00137 
00138     /* minor version */
00139     axis2_char_t *minor_version;
00140 
00141     /* time instant of the issue */
00142     axutil_date_time_t *issue_instant;
00143 
00144     /*optional*/
00145     oxs_sign_ctx_t *sig_ctx;
00146 
00147     /* An array for QNames      
00148          * specifies the type of statement the SAML relying party wants from the
00149          * SAML authority*
00150          */
00151     axutil_array_list_t *saml_responds;
00152 
00153     /*To request assrtions by means of ID one or more*/
00154     axutil_array_list_t *saml_asserion_id_ref;
00155 
00156         /* saml artifacts for saml passive client*/    
00157     axutil_array_list_t *saml_artifacts;
00158 
00159         saml_query_t *query;
00160 
00161         /*reference to the saml request node*/
00162         axiom_node_t *original_xml;
00163 
00164         /*reference to the saml response node*/
00165         axiom_node_t *signature;
00166 }saml_request_t;
00167 
00168 typedef struct saml_response
00169 {
00170         /*sunique saml response id*/
00171     axis2_char_t *response_id;
00172 
00173         /*major version*/
00174     axis2_char_t *major_version;
00175 
00176         /*minor version*/
00177     axis2_char_t *minor_version;
00178 
00179     /*saml request party*/
00180     axis2_char_t *recepient;
00181 
00182         /*saml request identifier for the specific saml response*/
00183     axis2_char_t  *request_response_id;
00184 
00185         /*time instant for the respone*/
00186     axutil_date_time_t *issue_instant;
00187 
00188         /* information about the signing */
00189     oxs_sign_ctx_t *sig_ctx;
00190 
00191     saml_status_t *status;
00192 
00193     axutil_array_list_t *saml_assertions;
00194 
00195         /* reference to the saml response node*/
00196         axiom_node_t *original_xml;
00197 
00198         /*reference to the saml signature node*/
00199         axiom_node_t *signature;
00200 }saml_response_t;
00201 
00202 /* request */
00203 
00204 /* 
00205  *  Creates a saml request.
00206  *  @param env pointer to environment struct
00207  */
00208 AXIS2_EXTERN saml_request_t *AXIS2_CALL 
00209 saml_request_create(const axutil_env_t *env);
00210 
00211 /* 
00212  * Free a saml request
00213  * @param env pointer to environment struct
00214  */
00215 AXIS2_EXTERN void AXIS2_CALL 
00216 saml_request_free(saml_request_t *request, const axutil_env_t *env);
00217 
00218 /* 
00219 * Build the saml request from a axiom node.
00220 * @param request request to be populated
00221 * @param env pointer to environment struct
00222 */
00223 AXIS2_EXTERN int AXIS2_CALL 
00224 saml_request_build(saml_request_t *request, axiom_node_t *node, 
00225                                    const axutil_env_t *env);
00226 
00227 /* 
00228 * Serialize a saml request to a om node.
00229 * @param request request to be serialized
00230 * @param parent if specified created node will be a child of this  
00231 * @param env pointer to environment struct
00232 */
00233 AXIS2_EXTERN axiom_node_t* AXIS2_CALL 
00234 saml_request_to_om(saml_request_t *request, axiom_node_t *parent, 
00235                                    const axutil_env_t *env); 
00236 /*
00237 * Return the unique ID of the request. 
00238 * @param request SAML Request object
00239 * @param env pointer to environment struct
00240 */
00241 AXIS2_EXTERN axis2_char_t* AXIS2_CALL 
00242 saml_request_get_id(saml_request_t *request, const axutil_env_t *env);
00243 
00244 /* 
00245  * Set the information required to sign the message.
00246  * @param assertion SAML Request object
00247  * @param env pointer to environment struct
00248  * @param sign_ctx oxs_sign_ctx_t object which contains the sign information
00249  */
00250 AXIS2_EXTERN int AXIS2_CALL 
00251 saml_request_set_signature(saml_request_t *request, const axutil_env_t *env, 
00252                                                    oxs_sign_ctx_t *sig_ctx);
00253 /* 
00254  * Set the default information required to sign the message. 
00255  * @param response SAML response object
00256  * @param env pointer to environment struct
00257  * @param sign_ctx oxs_sign_ctx_t object which contains the sign information
00258  * oxs_sign_ctx should contain the key info and the certification info.
00259  * all other information are set to default settings.
00260  */
00261 AXIS2_EXTERN void AXIS2_CALL 
00262 saml_request_set_default_signature(saml_request_t *request, const axutil_env_t *env, 
00263                                                                    oxs_sign_ctx_t *sig_ctx);
00264 /* 
00265  * Remove the information set for signing or verifying the Request.
00266  * @param assertion SAML Request object
00267  * @param env pointer to environment struct
00268  */
00269 AXIS2_EXTERN int AXIS2_CALL 
00270 saml_request_unsign(saml_request_t *request, const axutil_env_t *env);
00271 
00272 /* 
00273  * Sign the Request using the information set in the 
00274  * saml_request_set_default_signature or saml_request_set_signature method.
00275  * @param assertion SAML Request object
00276  * @param env pointer to environment struct
00277  */
00278 AXIS2_EXTERN int AXIS2_CALL 
00279 saml_request_sign(saml_request_t *request, axiom_node_t *node, const axutil_env_t *env);
00280 
00281 /* 
00282  * Set the minor version of the Request
00283  * @param request SAML Request object
00284  * @param env pointer to environment struct
00285  * @param version minor version number
00286  */ 
00287 AXIS2_EXTERN int AXIS2_CALL 
00288 saml_request_set_minor_version(saml_request_t *request, const axutil_env_t *env,
00289                                                            int version);
00290 /* 
00291  * Set the major version of the assertion
00292  * @param assertion SAML Request object
00293  * @param env pointer to environment struct
00294  * @param version major version number
00295  */ 
00296 AXIS2_EXTERN int AXIS2_CALL 
00297 saml_request_set_major_version(saml_request_t *request, 
00298                                                            const axutil_env_t *env, int version);
00299 /* 
00300  * Set the issue instant of the Request
00301  * @param request SAML Request object
00302  * @param env pointer to environment struct
00303  * @param time time instant of the saml issue
00304  */
00305 AXIS2_EXTERN int AXIS2_CALL 
00306 saml_request_set_issue_instant(saml_request_t *request, 
00307                                                            const axutil_env_t *env, axutil_date_time_t *date_time);
00308 
00309 /*
00310  * Return the time instant of the Request
00311  * @param request SAML Request object
00312  * @param env pointer to the environment struct
00313  */
00314 AXIS2_EXTERN axutil_date_time_t* AXIS2_CALL 
00315 saml_request_get_issue_instant(saml_request_t *request, const  axutil_env_t *env);
00316 
00317 /*
00318  * Set the set of qname respond with references in Request
00319  * @param request SAML Request object
00320  * @param responds list of qname objects
00321  * @param env pointer to the environment struct
00322  */
00323 AXIS2_EXTERN int AXIS2_CALL 
00324 saml_request_set_respond_withs(saml_request_t *request, 
00325                                                            const axutil_env_t *env, axutil_array_list_t *responds);
00326 
00327 /*
00328  * Return the set of qname respond with references in Request
00329  * @param request SAML Request object
00330  * @param env pointer to the environment struct
00331  */
00332 AXIS2_EXTERN axutil_array_list_t* AXIS2_CALL 
00333 saml_request_get_respond_withs(saml_request_t *request, const axutil_env_t *env);
00334 
00335 /*
00336  * Add a qname object respond with to the Request
00337  * @param request SAML Request object
00338  * @param env pointer to the environment struct
00339  */
00340 AXIS2_EXTERN int AXIS2_CALL 
00341 saml_request_add_respond_with(saml_request_t *request, const axutil_env_t *env,
00342                                                           axutil_qname_t *respond);
00343 /*
00344  * Remove a qname object at the specified index
00345  * @param request SAML Request object
00346  * @index the specific index to remove
00347  * @param env pointer to the environment struct
00348  */
00349 AXIS2_EXTERN int AXIS2_CALL 
00350 saml_request_remove_respond_with(saml_request_t *request, const axutil_env_t *env, int index);
00351 
00352 /*
00353  * Set the SAML Query of SAML Request.
00354  * @param request SAML Request object
00355  * @param query SAML Query object
00356  * @param env pointer to the environment struct
00357  */
00358 AXIS2_EXTERN int AXIS2_CALL 
00359 saml_request_set_query(saml_request_t *request, const axutil_env_t *env, saml_query_t *query);
00360 
00361 /*
00362  * Returns the SAML Query of SAML Request.
00363  * @param request SAML Request
00364  * @param env pointer to the environemt struct
00365  */
00366 AXIS2_EXTERN saml_query_t* AXIS2_CALL 
00367 saml_request_get_query(saml_request_t *request, const axutil_env_t *env);
00368 
00369 /*
00370  * Set the set of Identifer References of the Request.
00371  * @param request SAML Request
00372  * @param id_refs list of Identifier references
00373  * @param env pointer to the environment struct
00374  */
00375 AXIS2_EXTERN int AXIS2_CALL 
00376 saml_request_set_id_refs(saml_request_t *request, const axutil_env_t *env,
00377                                                  axutil_array_list_t *id_refs);
00378 /*
00379  * Returne the list of Identifier references of the Request
00380  * @param request SAML Request
00381  * @param env pointer to the environment struct
00382  */
00383 AXIS2_EXTERN axutil_array_list_t* AXIS2_CALL 
00384 saml_request_get_id_refs(saml_request_t *request, const axutil_env_t *env);
00385 
00386 /*
00387  * Add an Id Reference to the SAML Request.
00388  * @param request SAML Request
00389  * @param id_references list of Id references
00390  * @param env pointer to the environment struct
00391  */
00392 AXIS2_EXTERN int AXIS2_CALL 
00393 saml_request_add_id_refs(saml_request_t *request, const axutil_env_t *env, 
00394                                                  axis2_char_t *id_reference);
00395 /*
00396  * Remove an Id Reference at the specified index.
00397  * @param request SAML Request
00398  * @param index the specific to remove
00399  * @param env pointer to the environment struct
00400  */
00401 AXIS2_EXTERN int AXIS2_CALL 
00402 saml_request_remove_id_refs(saml_request_t *request, 
00403                                                         const axutil_env_t *env, int index);
00404 /*
00405  * Set the set of SAML Assertion Artifact objects of the Request.
00406  * @param request SAML Request
00407  * @param artifacts list of SAML Artifact objects
00408  * @param env pointer to the environment struct
00409  */
00410 AXIS2_EXTERN int AXIS2_CALL 
00411 saml_request_set_artifacts(saml_request_t *request, 
00412                                                    const axutil_env_t *env, axutil_array_list_t *artifacts);
00413 /*
00414  * Returns the list of SAML Assertion Artifacts of the Request
00415  * @param request SAML Request
00416  * @param env pointer to the environment struct
00417  */
00418 AXIS2_EXTERN axutil_array_list_t*  AXIS2_CALL 
00419 saml_request_get_artifacts(saml_request_t *request, const axutil_env_t *env);
00420 
00421 /*
00422  * Add a SAML Assertion Artifact to the Request
00423  * @param request SAML Request
00424  * @param artifact SAML Assertion Artifact
00425  * @param env pointer to the environment struct
00426  */
00427 AXIS2_EXTERN int AXIS2_CALL 
00428 saml_request_add_artifact(saml_request_t *request, const axutil_env_t *env,
00429                                                   saml_artifact_t *artifact);
00430 /* 
00431  * Remove a SAML Assertion Artifact at the specified index
00432  * @param request SAML Request
00433  * @param index specific index to remove
00434  * @param env pointer to the environment struct
00435  */
00436 AXIS2_EXTERN int AXIS2_CALL 
00437 saml_request_remove_artifact(saml_request_t *request, const axutil_env_t *env,
00438                                                          int index);
00439 /*
00440  * Check the validity of the recieved Request
00441  * @param request SAML Request
00442  * @param env pointer to the environment struct
00443  */
00444 AXIS2_EXTERN axis2_bool_t AXIS2_CALL 
00445 saml_request_check_validity(saml_request_t *request, const axutil_env_t *env);
00446 
00447 /* 
00448  *  Creates a saml Response.
00449  *  @param env pointer to environment struct
00450  */
00451 AXIS2_EXTERN saml_response_t* saml_response_create(const axutil_env_t *env);
00452 
00453 /* 
00454  * Free a saml Response
00455  * @param env pointer to environment struct
00456  */
00457 AXIS2_EXTERN void saml_response_free(saml_response_t *response, 
00458                                                                          const axutil_env_t *env);
00459 /* 
00460 * Build the saml response from a axiom node.
00461 * @param request response to be populated
00462 * @param env pointer to environment struct
00463 */
00464 AXIS2_EXTERN int AXIS2_CALL 
00465 saml_response_build(saml_response_t *response, axiom_node_t *node, 
00466                                         const axutil_env_t *env);
00467 /* 
00468 * Serialize a saml response to a om node.
00469 * @param request response to be serialized
00470 * @param parent if specified created node will be a child of this  
00471 * @param env pointer to environment struct
00472 */
00473 AXIS2_EXTERN axiom_node_t* AXIS2_CALL 
00474 saml_response_to_om(saml_response_t *response, axiom_node_t *parent, 
00475                                         const axutil_env_t *env);
00476 /*
00477 * Returns the unique ID of the response. 
00478 * @param request SAML response object
00479 * @param env pointer to environment struct
00480 */
00481 AXIS2_EXTERN axis2_char_t* AXIS2_CALL 
00482 saml_response_get_id(saml_response_t *response, const axutil_env_t *env);
00483 
00484 /* 
00485  * Set the information required to sign the message.
00486  * @param assertion SAML response object
00487  * @param env pointer to environment struct
00488  * @param sign_ctx oxs_sign_ctx_t object which contains the sign information
00489  */
00490 AXIS2_EXTERN int AXIS2_CALL 
00491 saml_response_set_signature(saml_response_t *response, 
00492                                                         const axutil_env_t *env, oxs_sign_ctx_t *sig_ctx);
00493 
00494 AXIS2_EXTERN int AXIS2_CALL 
00495 saml_response_unset_signature(saml_response_t *response, const axutil_env_t *env);
00496 
00497 /* 
00498  * Sign the response using the information set in the 
00499  * saml_response_set_default_signature or saml_response_set_signature method.
00500  * @param response SAML response object
00501  * @param node axiom node to of the response
00502  * @param env pointer to environment struct
00503  */
00504 AXIS2_EXTERN int AXIS2_CALL 
00505 saml_response_sign(saml_response_t *response, axiom_node_t *node, 
00506                                    const axutil_env_t *env);
00507 
00508 /* 
00509  * Set the default information required to sign the message. 
00510  * @param response SAML response object
00511  * @param env pointer to environment struct
00512  * @param sign_ctx oxs_sign_ctx_t object which contains the sign information
00513  * oxs_sign_ctx should contain the key info and the certification info.
00514  * all other information are set to default settings.
00515  */
00516 AXIS2_EXTERN void AXIS2_CALL 
00517 saml_response_set_default_signature(saml_response_t *response, 
00518                                                                         const axutil_env_t *env, oxs_sign_ctx_t *sig_ctx);
00519 
00520 /* 
00521  * Set the minor version of the response
00522  * @param response SAML response object
00523  * @param env pointer to environment struct
00524  * @param version minor version number
00525  */
00526 AXIS2_EXTERN int AXIS2_CALL 
00527 saml_response_set_minor_version(saml_response_t *response, 
00528                                                                 const axutil_env_t *env, int version);
00529 /* 
00530  * Set the major version of the response
00531  * @param response SAML response object
00532  * @param env pointer to environment struct
00533  * @param version major version number
00534  */ 
00535 AXIS2_EXTERN int AXIS2_CALL 
00536 saml_response_set_major_version(saml_response_t *response, 
00537                                                                 const axutil_env_t *env, int version);
00538 /* 
00539  * Set the issue instant of the response
00540  * @param response SAML response object
00541  * @param env pointer to environment struct
00542  * @param time time instant of the saml issue
00543  */
00544 AXIS2_EXTERN int AXIS2_CALL 
00545 saml_response_set_issue_instant(saml_response_t *response, 
00546                                                                 const axutil_env_t *env, axutil_date_time_t *date_time);
00547 /*
00548  * Returns the time instant of the response
00549  * @param response SAML response object
00550  * @param env pointer to the environment struct
00551  */
00552 AXIS2_EXTERN  axutil_date_time_t* AXIS2_CALL 
00553 saml_response_get_issue_instant(saml_response_t *response, const axutil_env_t *env);
00554 
00555 /*
00556  * Set the SAML recepient of the response
00557  * @param response SAML response
00558  * @param recepient SAML recepient identifier
00559  * @param env pointer to the environment struct
00560  */
00561 AXIS2_EXTERN int AXIS2_CALL 
00562 saml_response_set_recepient(saml_response_t *response, const axutil_env_t *env,
00563                                                         axis2_char_t *recepient);
00564 /*
00565  * Returns the SAML response recepient.
00566  * @param response SAML response
00567  * @param env pointer to the environment struct
00568  */
00569 AXIS2_EXTERN axis2_char_t* AXIS2_CALL 
00570 saml_response_get_recepient(saml_response_t *response, const axutil_env_t *env);
00571 
00572 /*
00573  * Set the status of the SAML response.
00574  * @param response SAML response
00575  * @param status SAML status
00576  * @param env pointer to the environment struct
00577  */
00578 AXIS2_EXTERN int AXIS2_CALL 
00579 saml_response_set_status(saml_response_t *response, const axutil_env_t *env,
00580                                                  saml_status_t *status);
00581 /*
00582  * Returns the status of the recieved SAML response
00583  * @param response SAML response
00584  * @param env pointer to the environment struct
00585  */
00586 AXIS2_EXTERN saml_status_t* AXIS2_CALL 
00587 saml_response_get_status(saml_response_t *response, const axutil_env_t *env);
00588 
00589 /*
00590  * Set the set of SAML Assertion of the SAML response
00591  * @param response SAML response
00592  * @param assertions list of SAML Assertions
00593  * @param env pointer to the environment struct
00594  */
00595 AXIS2_EXTERN int AXIS2_CALL 
00596 saml_response_set_assertions(saml_response_t *response, 
00597                                                          const axutil_env_t *env, axutil_array_list_t *assertions);
00598 
00599 /*
00600  * Returns the set of SAML Assertions of response
00601  * @param response SAML response
00602  * @param env pointer to the environment struct
00603  */
00604 AXIS2_EXTERN axutil_array_list_t* AXIS2_CALL 
00605 saml_response_get_assertions(saml_response_t *response, const axutil_env_t *env);
00606 
00607 /*
00608  * Add a SAML assertion to the response
00609  * @param response SAML response
00610  * @param assertion SAML Assertion
00611  * @param env pointer to the environment struct
00612  */
00613 AXIS2_EXTERN int AXIS2_CALL 
00614 saml_response_add_assertion(saml_response_t *response, const axutil_env_t *env,
00615                                                         saml_assertion_t *assertion);
00616 
00617 /* 
00618  * Remove a SAML assertion at the specified index
00619  * @param response SAML response
00620  * @param index the specific index to remove
00621  * @param env pointer to the environment struct
00622  */
00623 AXIS2_EXTERN int AXIS2_CALL 
00624 saml_response_remove_assertion(saml_response_t *response, const axutil_env_t *env, int index);
00625 
00626 /*
00627  * Set the request reference of the SAML response
00628  * @param response SAML response
00629  * @param request_response request reference
00630  * @param env pointer to the environment struct
00631  */
00632 AXIS2_EXTERN int AXIS2_CALL 
00633 saml_response_set_in_reponses_to(saml_response_t *response, 
00634                                                                  const axutil_env_t *env, axis2_char_t *request_response);
00635 
00636 /* 
00637  *  Creates a saml query.
00638  *  @param env pointer to environment struct
00639  */
00640 AXIS2_EXTERN saml_query_t* AXIS2_CALL 
00641 saml_query_create(const axutil_env_t *env);
00642 
00643 /* 
00644  * Build the saml query from an axiom node.
00645  * @param query SAML query to be populated
00646  * @param node axiom node of SAML query
00647  * @param env pointer to environment struct
00648  */
00649 AXIS2_EXTERN int AXIS2_CALL 
00650 saml_query_build(saml_query_t *query, axiom_node_t *node, const axutil_env_t *env);
00651 
00652 
00653 /* 
00654 * Serialize a saml query to a om node.
00655 * @param query SAML response to be serialized
00656 * @param parent if specified created node will be a child of this  
00657 * @param env pointer to environment struct
00658 */
00659 AXIS2_EXTERN axiom_node_t* AXIS2_CALL 
00660 saml_query_to_om(saml_query_t *query, axiom_node_t *parent, const axutil_env_t *env);
00661 
00662 /* 
00663  * Free a saml query
00664  * @param env pointer to environment struct
00665  */
00666 AXIS2_EXTERN void AXIS2_CALL 
00667 saml_query_free(saml_query_t *query, const axutil_env_t *env);
00668 
00669 /* 
00670  *  Creates a saml subject query.
00671  *  @param env pointer to environment struct
00672  */
00673 
00674 AXIS2_EXTERN saml_subject_query_t* AXIS2_CALL 
00675 saml_subject_query_create(const axutil_env_t *env);
00676 
00677 /* 
00678  * Free a saml subject query
00679  * @param env pointer to environment struct
00680  */
00681 AXIS2_EXTERN void AXIS2_CALL 
00682 saml_subject_query_free(saml_subject_query_t* subject_query, const axutil_env_t *env);
00683 
00684 /* 
00685  * Build the saml subject query from an axiom node.
00686  * @param query SAML subject query to be populated
00687  * @param node axiom node of SAML subject query
00688  * @param env pointer to environment struct
00689  */
00690 AXIS2_EXTERN int AXIS2_CALL 
00691 saml_subject_query_build(saml_subject_query_t* subject_query, 
00692                                                  axiom_node_t *node, const axutil_env_t *env);
00693 
00694 /* 
00695 * Serialize a saml subject query to a om node.
00696 * @param query saml subject query to be serialized
00697 * @param parent if specified created node will be a child of this  
00698 * @param env pointer to environment struct
00699 */
00700 AXIS2_EXTERN axiom_node_t* AXIS2_CALL 
00701 saml_subject_query_to_om(saml_subject_query_t *subject_query, 
00702                                                  axiom_node_t *parent, const axutil_env_t *env);
00703 /* 
00704  *  Creates a saml authentication query.
00705  *  @param env pointer to environment struct
00706  */
00707 AXIS2_EXTERN saml_authentication_query_t* AXIS2_CALL 
00708 saml_authentication_query_create(const axutil_env_t *env);
00709 
00710 /* 
00711  * Free a saml authentication query
00712  * @param env pointer to environment struct
00713  */
00714 AXIS2_EXTERN void AXIS2_CALL 
00715 saml_authentication_query_free(saml_authentication_query_t *authentication_query, 
00716                                                            const axutil_env_t *env);
00717 /* 
00718  * Build the saml authentication query from an axiom node.
00719  * @param query SAML authentication query to be populated
00720  * @param node axiom node of SAML query
00721  * @param env pointer to environment struct
00722  */
00723 AXIS2_EXTERN int AXIS2_CALL 
00724 saml_authentication_query_build(saml_authentication_query_t* authentication_query, 
00725                                                                 axiom_node_t *node, const axutil_env_t *env);
00726 
00727 /* 
00728 * Serialize a saml authentication query to a om node.
00729 * @param authentication_query saml authentication query to be serialized
00730 * @param parent if specified created node will be a child of this  
00731 * @param env pointer to environment struct
00732 */
00733 AXIS2_EXTERN axiom_node_t* AXIS2_CALL 
00734 saml_authentication_query_to_om(saml_authentication_query_t *authentication_query, 
00735                                                                 axiom_node_t *parent, const axutil_env_t *env);
00736 
00737 /*
00738  * Set authetication method of saml authentication query.
00739  * @param authentication_query saml authentication query
00740  * @param env pointer to environment struct
00741  * @param authentication_mtd required authentication method in the secifying query
00742  */
00743 AXIS2_EXTERN int AXIS2_CALL 
00744 saml_auth_query_set_authentication_method(
00745         saml_authentication_query_t *authentication_query,
00746         const axutil_env_t *env, 
00747         axis2_char_t *authentication_mtd);
00748 
00749 /*
00750  * Returns the authentication method of the saml authentication query.
00751  * @param authentication_query saml authentication query
00752  * @param env pointer to the environment struct
00753  */
00754 AXIS2_EXTERN axis2_char_t * AXIS2_CALL 
00755 saml_auth_query_get_authentication_method(
00756         saml_authentication_query_t *authentication_query,
00757         const axutil_env_t *env);
00758 
00759 /* 
00760  *  Creates a saml attribute query.
00761  *  @param env pointer to environment struct
00762  */
00763 AXIS2_EXTERN saml_attr_query_t* AXIS2_CALL 
00764 saml_attr_query_create(const axutil_env_t *env);
00765 
00766 /* 
00767  * Free a saml attribute query
00768  * @param env pointer to environment struct
00769  */
00770 AXIS2_EXTERN void AXIS2_CALL
00771 saml_attr_query_free(saml_attr_query_t* attribute_query, const axutil_env_t *env);
00772 
00773 /* 
00774  * Build the saml attribute query from an axiom node.
00775  * @param attribute_query SAML attribute query to be populated
00776  * @param node axiom node of SAML query
00777  * @param env pointer to environment struct
00778  */
00779 AXIS2_EXTERN int AXIS2_CALL 
00780 saml_attr_query_build(saml_attr_query_t* attribute_query, 
00781                                           axiom_node_t *node, const axutil_env_t *env);
00782 
00783 /* 
00784 * Serialize a saml attribute to a om node.
00785 * @param attribute_query saml attribute query to be serialized
00786 * @param parent if specified created node will be a child of this  
00787 * @param env pointer to environment struct
00788 */
00789 AXIS2_EXTERN axiom_node_t* AXIS2_CALL 
00790 saml_attr_query_to_om(saml_attr_query_t *attribute_query, 
00791                                           axiom_node_t *parent, const axutil_env_t *env);
00792 
00793 /*
00794  * Returns the saml subject of the saml query.
00795  * @param query saml query
00796  * @param env pointer to the environment struct
00797  */
00798 AXIS2_EXTERN saml_subject_t* AXIS2_CALL 
00799 saml_query_get_subject(saml_query_t* query,
00800                                                 const axutil_env_t *env);
00801 /*
00802  * Set the subject of a saml query.
00803  * @param query saml query
00804  * @param env pointer to the environment struct
00805  * @param subject saml subject
00806  */
00807 AXIS2_EXTERN int AXIS2_CALL 
00808 saml_query_set_subject(saml_query_t *query, const axutil_env_t *env,
00809                                            saml_subject_t *subject);
00810 /*
00811  * Set the type of the saml query.
00812  * @param query saml query
00813  * @param env pointer to the environment struct
00814  * @param type type of the saml query
00815  */
00816 AXIS2_EXTERN int AXIS2_CALL 
00817 saml_query_set_type(saml_query_t *query, const axutil_env_t *env, axis2_char_t *type);
00818 
00819 /*
00820  * Set the saml specific query object of saml query
00821  * @param query saml query
00822  * @param spec_query specific query object to be set as the saml query
00823  * @param type the type of the specifying query
00824  * spec_query can be any type of query defined in saml queries.
00825  * the specified saml queries, saml subject query, attribute query, 
00826  * authentication query, athorization decision query
00827  */
00828 AXIS2_EXTERN int AXIS2_CALL 
00829 saml_query_set_query(saml_query_t *query, const axutil_env_t *env,
00830                                          void *spec_query, 
00831                                          axis2_char_t *type);
00832 
00833 /*
00834  * Set the resource required of saml attribute query.
00835  * @param attr_query saml attribute query
00836  * @param env pointer to environment struct
00837  * @param resource specific saml resource
00838  */
00839 AXIS2_EXTERN int AXIS2_CALL 
00840 saml_attr_query_set_resource(saml_attr_query_t *attr_query, 
00841                                                          const axutil_env_t *env, axis2_char_t *resource);
00842 
00843 /*
00844  * Returns the saml resource required of saml attribute query.
00845  * @param attr_query saml attribute query
00846  * @param env pointer to environment struct
00847  */
00848 AXIS2_EXTERN axis2_char_t* AXIS2_CALL 
00849 saml_attr_query_get_resource(saml_attr_query_t *attr_query, const axutil_env_t *env);
00850 
00851 /*
00852  * Set a set of attribute designators of the saml attribute query.
00853  * @param env pointer to environment struct
00854  * @param saml_designators list of saml attribute designators
00855  */
00856 AXIS2_EXTERN int AXIS2_CALL 
00857 saml_attr_query_set_designators(saml_attr_query_t *attr_query,  
00858                                                                 const axutil_env_t *env,
00859                                                                 axutil_array_list_t *saml_designators);
00860 /*
00861  * Returns the set of attribute designators of saml attribute query.
00862  * @param attr_query saml attribute query
00863  * @param env pointer to environment struct
00864  */
00865 AXIS2_EXTERN axutil_array_list_t* AXIS2_CALL 
00866 saml_attr_query_get_designators(saml_attr_query_t *attr_query, const axutil_env_t *env);
00867 
00868 /*
00869  * Add a saml attribute designator to the saml attribute query.
00870  * @param attr_query saml attribute query
00871  * @param env pointer to environment struct
00872  * @param desig saml attribute designator object
00873  */
00874 AXIS2_EXTERN int AXIS2_CALL 
00875 saml_attr_query_add_designators(saml_attr_query_t *attr_query, const axutil_env_t *env,
00876                                                                 saml_attr_desig_t *desig);
00877 /*
00878  * Remove saml attribute designator at the specified index.
00879  * @param attr_query saml attribute query
00880  * @param env pointer to environment struct
00881  * @param index the specified index to remove
00882  */
00883 AXIS2_EXTERN int AXIS2_CALL 
00884 saml_attr_query_remove_designator(saml_attr_query_t *attr_query, const axutil_env_t *env,
00885                                                                   int index);
00886 
00887 /* 
00888  *  Creates a saml authorization decision query.
00889  *  @param env pointer to environment struct
00890  */
00891 AXIS2_EXTERN saml_autho_decision_query_t* AXIS2_CALL 
00892 saml_autho_decision_query_create(const axutil_env_t *env);
00893 
00894 /* 
00895  * Free a saml authorizaion decision query
00896  * @param env pointer to environment struct
00897  */
00898 AXIS2_EXTERN void AXIS2_CALL 
00899 saml_autho_decision_query_free(saml_autho_decision_query_t* autho_decision_query, 
00900                                                            const axutil_env_t *env);
00901 
00902 /* 
00903  * Build the saml authorization decision query from an axiom node.
00904  * @param query SAML authorization decision query to be populated
00905  * @param node axiom node of SAML authorization decision query
00906  * @param env pointer to environment struct
00907  */
00908 AXIS2_EXTERN int AXIS2_CALL 
00909 saml_autho_decision_query_build(saml_autho_decision_query_t* autho_decision_query, 
00910                                                                 axiom_node_t *node, const axutil_env_t *env);
00911 
00912 /* 
00913 * Serialize a saml authorization decision query to a om node.
00914 * @param autho_decision_query authorization decision query to be serialized
00915 * @param parent if specified created node will be a child of this  
00916 * @param env pointer to environment struct
00917 */
00918 AXIS2_EXTERN axiom_node_t* AXIS2_CALL 
00919 saml_autho_decision_query_to_om(saml_autho_decision_query_t *autho_decision_query, 
00920                                                                 axiom_node_t *parent, const axutil_env_t *env);
00921 /*
00922  * Set the resource required of saml authorization decision query.
00923  * @param autho_dec_query saml authorization decision query
00924  * @param env pointer to environment struct
00925  * @param resource saml resource required
00926  */
00927 AXIS2_EXTERN int AXIS2_CALL 
00928 saml_autho_decision_query_set_resource(
00929                         saml_autho_decision_query_t *autho_dec_query,
00930                         const axutil_env_t *env,
00931                         axis2_char_t *resource);
00932 /*
00933  * Returns the saml resource of saml authorization decision query.
00934  * @param autho_dec_query saml authorization decision query
00935  * @param env pointer to environment struct
00936  */
00937 AXIS2_EXTERN axis2_char_t* AXIS2_CALL 
00938 saml_autho_decision_query_get_resource(saml_autho_decision_query_t *autho_dec_query,
00939                                                                                                                  const axutil_env_t *env);
00940 /*
00941  * Set a set of action of saml authorization decision query.
00942  * @param autho_dec_query saml authorization decision query
00943  * @param env pointer to the environment struct
00944  * @param actions list of saml action objects
00945  */
00946 AXIS2_EXTERN int AXIS2_CALL 
00947 saml_autho_decision_query_set_actions(
00948                         saml_autho_decision_query_t *autho_dec_query,
00949                         const axutil_env_t *env,
00950                         axutil_array_list_t *actions);
00951 /*
00952  * Returns the set of actions of saml authorization decision query.
00953  * @param autho_dec_query saml authorization decision query
00954  * @param env envionment struct
00955  */
00956 AXIS2_EXTERN axutil_array_list_t* AXIS2_CALL 
00957 saml_autho_decision_query_get_actions(
00958                         saml_autho_decision_query_t *autho_dec_query,
00959                         const axutil_env_t *env);
00960                                                                                                                 
00961 /*
00962  * Add a saml action to saml authorization decision query.
00963  * @param autho_dec_query saml authorization decision query
00964  * @param env pointer to environment struct
00965  * @param action saml action object
00966  */
00967 AXIS2_EXTERN int AXIS2_CALL 
00968 saml_autho_decision_query_add_action(
00969                         saml_autho_decision_query_t *autho_dec_query,
00970                         const axutil_env_t *env,
00971                         saml_action_t *action);
00972 /*
00973  * Remove a saml action at the the specified index.
00974  * @param autho_dec_query saml authorization decision query
00975  * @param env pointer to environment struct
00976  * @param index specified index to remove
00977  */
00978 AXIS2_EXTERN int AXIS2_CALL 
00979 saml_autho_decision_remove_action(saml_autho_decision_query_t *autho_dec_query,
00980                                                                   const axutil_env_t *env,
00981                                                                   int index);
00982 /*
00983  * Set a saml evidence of the saml authorization decision query.
00984  * @param autho_dec_query saml authorization decision query
00985  * @param env pointer to environment struct
00986  * @param evidence saml evidence object
00987  */
00988 AXIS2_EXTERN int AXIS2_CALL 
00989 saml_autho_decision_query_set_evidence(
00990                         saml_autho_decision_query_t *autho_dec_query,
00991                         const axutil_env_t *env,
00992                         saml_evidence_t *evidence);
00993 /*
00994  * Returns the saml evidence of saml authorization decision query.
00995  * @param autho_dec_query saml authorization decision query
00996  * @param env pointer to environment struct
00997  */
00998 AXIS2_EXTERN saml_evidence_t* AXIS2_CALL 
00999 saml_autho_decision_query_get_evidence(
01000                         saml_autho_decision_query_t *autho_dec_query,
01001                         const axutil_env_t *env);
01002         
01003 /* 
01004  * Build the saml status from an axiom node.
01005  * @param query SAML status to be populated
01006  * @param node axiom node of SAML status
01007  * @param env pointer to environment struct
01008  */
01009 AXIS2_EXTERN int AXIS2_CALL 
01010 saml_status_build(saml_status_t *status, axiom_node_t *node, const axutil_env_t *env);
01011 
01012 /* 
01013 * Serialize a saml status to a om node.
01014 * @param status saml status to be serialized
01015 * @param parent if specified created node will be a child of this  
01016 * @param env pointer to environment struct
01017 */
01018 AXIS2_EXTERN axiom_node_t* AXIS2_CALL saml_status_to_om(saml_status_t *status, 
01019                                                                                                                 axiom_node_t *parent, 
01020                                                                                                                 const axutil_env_t *env);
01021 
01022 /* 
01023  *  Creates a saml status.
01024  *  @param env pointer to environment struct
01025  */
01026 AXIS2_EXTERN saml_status_t* AXIS2_CALL 
01027 saml_status_create(const axutil_env_t *env);
01028 
01029 /* 
01030  * Free a saml status
01031  * @param env pointer to environment struct
01032  */
01033 AXIS2_EXTERN void 
01034 saml_status_free(saml_status_t *status, const axutil_env_t *env);
01035 
01036 /*
01037  * Set the saml status value to be returned in saml status.
01038  * @param status saml status object
01039  * @param qname axutil qname object which specify saml status value
01040  * @param env pointer to environment struct
01041 */
01042 AXIS2_EXTERN int AXIS2_CALL 
01043 saml_status_set_status_value(saml_status_t *status, 
01044                                                          const axutil_env_t *env, axutil_qname_t *qname);
01045 
01046 /*
01047  * Returns the saml status value of saml status.
01048  * @param status saml status
01049  * @param env pointer to environment struct
01050  */
01051 AXIS2_EXTERN axutil_qname_t* AXIS2_CALL 
01052 saml_status_get_status_value(saml_status_t *status, const axutil_env_t *env);
01053 
01054 /*
01055  * Set the status message of saml status
01056  * @param status saml status object
01057  * @param env pointer to environment struct
01058  * @param msg status message to be set in saml status
01059  */
01060 AXIS2_EXTERN int AXIS2_CALL 
01061 saml_status_set_status_msg(saml_status_t *status, const axutil_env_t *env,
01062                                                    axis2_char_t *msg);
01063 /*
01064  * Set the status code of saml status object.
01065  * @param status saml status object
01066  * @param env pointer to environment struct
01067  * @param code status code to be set in saml status
01068  */
01069 AXIS2_EXTERN int AXIS2_CALL 
01070 saml_status_set_status_code(saml_status_t *status, const axutil_env_t *env,
01071                                                         axis2_char_t *code);
01072 /*
01073  * Returns the status message of saml status.
01074  * @param status saml status struct
01075  * @env pointer to environment struct
01076  */
01077 AXIS2_EXTERN axis2_char_t* AXIS2_CALL 
01078 saml_status_get_status_msg(saml_status_t *status, const axutil_env_t *env);
01079 /* 
01080  * Set the saml status detail of saml status.
01081  * @param status saml status struct
01082  * @param det axiom node struct to be set as saml status detail
01083  * @param env pointer to environment struct
01084  */
01085 AXIS2_EXTERN int AXIS2_CALL 
01086 saml_status_set_status_detail(saml_status_t *status, axiom_node_t *det, 
01087                                                           const axutil_env_t *env);
01088 /*
01089  * Returns the saml status detail node of saml status
01090  * @param status saml status struct
01091  * @param env pointer to environment struct
01092  */
01093 AXIS2_EXTERN axiom_node_t* AXIS2_CALL 
01094 saml_status_get_status_detail(saml_status_t *status, const axutil_env_t *env);
01095 
01096 /* 
01097  *  Creates a saml artifact.
01098  *  @param env pointer to environment struct
01099  */
01100 AXIS2_EXTERN saml_artifact_t* AXIS2_CALL 
01101 saml_artifact_create(const axutil_env_t *env);
01102 
01103 /* 
01104  * Free a saml artifact
01105  * @param env pointer to environment struct
01106  */
01107 AXIS2_EXTERN void AXIS2_CALL 
01108 saml_artifact_free(saml_artifact_t *artifact, const axutil_env_t *env);
01109 
01110 /*
01111  * Returns the data value of saml artifact.
01112  * @param artifact saml artifact srtuct
01113  * @param env pointer to environment struct
01114  */
01115 AXIS2_EXTERN axis2_char_t* AXIS2_CALL 
01116 saml_artifact_get_data(saml_artifact_t *artifact, const axutil_env_t *env);
01117 
01118 /*
01119  * Set data value of saml artifact.
01120  * @param artifact saml artifact
01121  * @param env pointer to environment struct
01122  * @data data value to be set in smal artifact
01123  */
01124 AXIS2_EXTERN int AXIS2_CALL 
01125 saml_artifact_set_data(saml_artifact_t *artifact, const axutil_env_t *env, 
01126                                            axis2_char_t *data);
01127 /*
01128  * Verify a signed saml response.
01129  * @param response saml response struct
01130  * @param env pointer to environement struct
01131  */
01132 AXIS2_EXTERN int AXIS2_CALL
01133 saml_response_signature_verify(saml_response_t *response, const axutil_env_t *env);
01134 
01135 /*
01136  * Check whether the saml response has to sign.
01137  * @param response saml response struct
01138  * @param env pointer to environment struct
01139  */
01140 AXIS2_EXTERN int AXIS2_CALL
01141 saml_response_is_sign_set(saml_response_t *response, const axutil_env_t *env);
01142 
01143 /*
01144  * Check whether the recieved response is signed.
01145  * @param response saml response struct
01146  * @param env pointer to environment struct
01147  */
01148 AXIS2_EXTERN int AXIS2_CALL
01149 saml_response_is_signed(saml_response_t *response, const axutil_env_t *env);
01150 
01151 /*
01152  * Verify a signed saml request.
01153  * @param response saml request struct
01154  * @param env pointer to environement struct
01155  */
01156 AXIS2_EXTERN int AXIS2_CALL
01157 saml_request_signature_verify(saml_request_t *request, const axutil_env_t *env);
01158 
01159 /*
01160  * Check whether the saml request has to sign.
01161  * @param request saml request struct
01162  * @param env pointer to environment struct
01163  */
01164 AXIS2_EXTERN int AXIS2_CALL
01165 saml_request_is_sign_set(saml_request_t *request, const axutil_env_t *env);
01166 
01167 /*
01168  * Check whether the recieved request is signed.
01169  * @param request saml request struct
01170  * @param env pointer to environment struct
01171  */
01172 AXIS2_EXTERN int AXIS2_CALL
01173 saml_request_is_signed(saml_request_t *request, const axutil_env_t *env);
01174 
01175 #ifdef __cplusplus
01176 }
01177 #endif
01178 
01179 #endif 
01180 

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/openssl__constants_8h-source.html0000644000076500007650000001533611202454500025132 0ustar shankarshankar Rampart/C: openssl_constants.h Source File

openssl_constants.h

Go to the documentation of this file.
00001 /*
00002  *   Copyright 2003-2004 The Apache Software Foundation.
00003  *
00004  *   Licensed under the Apache License, Version 2.0 (the "License");
00005  *   you may not use this file except in compliance with the License.
00006  *   You may obtain a copy of the License at
00007  *
00008  *       http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  *   Unless required by applicable law or agreed to in writing, software
00011  *   distributed under the License is distributed on an "AS IS" BASIS,
00012  *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  *   See the License for the specific language governing permissions and
00014  *   limitations under the License.
00015  */
00016 
00017 #include <axis2_util.h>
00018 
00023 #ifndef OPENSSL_CONSTANTS_H
00024 #define OPENSSL_CONSTANTS_H
00025 
00033 #ifdef __cplusplus
00034 extern "C" {
00035 #endif
00036 
00037 #define OPENSSL_ENCRYPT             1
00038 #define OPENSSL_DECRYPT             0
00039 #define OPENSSL_LEAVE_UNCHANGED     -1
00040 
00043 #define OPENSSL_EVP_des_ede3_cbc     "EVP_des_ede3_cbc"
00044 #define OPENSSL_EVP_aes_128_cbc      "EVP_aes_128_cbc"
00045 #define OPENSSL_EVP_aes_192_cbc      "EVP_aes_192_cbc"
00046 #define OPENSSL_EVP_aes_256_cbc      "EVP_aes_256_cbc"
00047 
00048 #define OPENSSL_HMAC_SHA1            "HmacSha1"
00049 #define OPENSSL_HMAC_SHA1_KEY_LEN     32
00050 
00051 #define OPENSSL_RSA_ENCRYPTION      "rsaEncryption"
00052 #define OPENSSL_RSA_PKCS1_PADDING    "RSA_PKCS1_PADDING"
00053 #define OPENSSL_RSA_PKCS1_OAEP_PADDING     "RSA_PKCS1_OAEP_PADDING"
00054 
00055 #define OPENSSL_DEFAULT_IV8          "01234567"
00056 #define OPENSSL_DEFAULT_IV16         "0123456701234567"
00057 #define OPENSSL_DEFAULT_IV24         "012345670123456701234567"
00058 
00059 #define OPENSSL_DEFAULT_LABEL_FOR_PSHA1 "WS-SecureConversation"
00060 #define OPENSSL_DEFAULT_KEY_LEN_FOR_PSHA1 32
00061 #define OPENSSL_DEFAULT_KEY_OFFSET_FOR_PSHA1 0
00062 
00064 #ifdef __cplusplus
00065 }
00066 #endif
00067 
00068 #endif    /* OPENSSL_CONSTANTS_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/trust__token_8h-source.html0000644000076500007650000003625111202454500023733 0ustar shankarshankar Rampart/C: trust_token.h Source File

trust_token.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 #ifndef TRUST_TOKEN_H
00018 #define TRUST_TOKEN_H
00019 
00025 #include <axiom.h>
00026 #include <axutil_utils.h>
00027 #include <trust_constants.h>
00028 
00029 #ifdef __cplusplus
00030 extern "C" {
00031 #endif
00032 
00033     /* Security token states. */
00034     typedef enum {
00035         ISSUED = 1,
00036         EXPIRED,
00037         CANCELED,
00038         RENEWED
00039     }trust_token_state_t;
00040 
00041     typedef struct trust_token trust_token_t;
00042 
00051     AXIS2_EXTERN trust_token_t* AXIS2_CALL
00052     trust_token_create(
00053         const axutil_env_t *env,
00054         axis2_char_t *id,
00055         axiom_node_t *token_node,
00056         axiom_node_t *life_node);
00057 
00067     AXIS2_EXTERN trust_token_t* AXIS2_CALL 
00068     trust_token_create_with_dates(
00069         const axutil_env_t *env,
00070         axis2_char_t *id,
00071         axiom_node_t *token_node,
00072         axutil_date_time_t *created,
00073         axutil_date_time_t *expire);
00074 
00087     AXIS2_EXTERN axis2_status_t AXIS2_CALL 
00088     trust_token_process_life_elem(
00089         const axutil_env_t *env,
00090         axiom_node_t *life_node,
00091         trust_token_t *token);
00092 
00099     AXIS2_EXTERN axis2_bool_t AXIS2_CALL 
00100     trust_token_is_changed(
00101         const axutil_env_t *env,
00102         trust_token_t *token);
00103 
00111     AXIS2_EXTERN axis2_status_t AXIS2_CALL 
00112     trust_token_set_changed(
00113         const axutil_env_t *env,
00114         trust_token_t *token,
00115         axis2_bool_t changed);
00116 
00123     AXIS2_EXTERN trust_token_state_t AXIS2_CALL 
00124     trust_token_get_state(
00125         const axutil_env_t *env,
00126         trust_token_t *token);
00127 
00135     AXIS2_EXTERN axis2_status_t AXIS2_CALL 
00136     trust_token_set_state(
00137         const axutil_env_t *env,
00138         trust_token_t *token,
00139         trust_token_state_t state);
00140 
00147     AXIS2_EXTERN axiom_node_t* AXIS2_CALL 
00148     trust_token_get_token(
00149         const axutil_env_t *env,
00150         trust_token_t *token);
00151 
00159     AXIS2_EXTERN axis2_status_t AXIS2_CALL 
00160     trust_token_set_token(
00161         const axutil_env_t *env,
00162         trust_token_t *token,
00163         axiom_node_t *token_node);
00164 
00171     AXIS2_EXTERN axis2_char_t* AXIS2_CALL 
00172     trust_token_get_id(
00173         const axutil_env_t *env,
00174         trust_token_t *token);
00175 
00182     AXIS2_EXTERN axiom_node_t* AXIS2_CALL
00183     trust_token_get_previous_token(
00184         const axutil_env_t *env,
00185         trust_token_t *token);
00186 
00194     AXIS2_EXTERN axis2_status_t AXIS2_CALL 
00195     trust_token_set_previous_token(
00196         const axutil_env_t *env,
00197         trust_token_t *token,
00198         axiom_node_t *prev_token);
00199 
00200     /* **
00201      * @return Returns the secret.
00202 
00203      public byte[] getSecret() {
00204      return secret;
00205      } */
00206 
00220     AXIS2_EXTERN axiom_node_t* AXIS2_CALL 
00221     trust_token_get_attached_reference(
00222         const axutil_env_t *env, 
00223         trust_token_t *token);
00224 
00232     AXIS2_EXTERN axis2_status_t AXIS2_CALL 
00233     trust_token_set_attached_reference(
00234         const axutil_env_t *env,
00235         trust_token_t *token,
00236         axiom_node_t *attached_reference);
00237 
00244     AXIS2_EXTERN axiom_node_t* AXIS2_CALL 
00245     trust_token_get_unattached_reference(
00246         const axutil_env_t *env,
00247         trust_token_t *token);
00248 
00256     AXIS2_EXTERN axis2_status_t AXIS2_CALL 
00257     trust_token_set_unattached_reference(
00258         const axutil_env_t *env,
00259         trust_token_t *token,
00260         axiom_node_t *unattached_reference);
00261 
00268     AXIS2_EXTERN axutil_date_time_t* AXIS2_CALL 
00269     trust_token_get_created(
00270         const axutil_env_t *env,
00271         trust_token_t *token);
00272 
00280     AXIS2_EXTERN axis2_status_t AXIS2_CALL 
00281     trust_token_set_created(
00282         const axutil_env_t *env,
00283         trust_token_t *token,
00284         axutil_date_time_t *created);
00285 
00292     AXIS2_EXTERN axutil_date_time_t* AXIS2_CALL 
00293     trust_token_get_expires(
00294         const axutil_env_t *env,
00295         trust_token_t *token);
00296 
00304     AXIS2_EXTERN axis2_status_t AXIS2_CALL 
00305     trust_token_set_expires(
00306         const axutil_env_t *env,
00307         trust_token_t *token,
00308         axutil_date_time_t *expire);
00309 
00316     AXIS2_EXTERN axis2_char_t* AXIS2_CALL 
00317     trust_token_get_issuer_address(
00318         const axutil_env_t *env,
00319         trust_token_t *token);
00320 
00328     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00329     trust_token_set_issuer_address(
00330         const axutil_env_t *env,
00331         trust_token_t *token,
00332         axis2_char_t *issuer_address);
00333 
00334     AXIS2_EXTERN axis2_status_t AXIS2_CALL 
00335     trust_token_process_life_elem(
00336         const axutil_env_t *env,
00337         axiom_node_t *life_node,
00338         trust_token_t *token);
00339         
00340 
00341 #ifdef __cplusplus
00342 }
00343 #endif
00344 
00345 #endif   /*TRUST_TOKEN_H*/
00346 

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__openssl__rsa.html0000644000076500007650000002776011202454500023365 0ustar shankarshankar Rampart/C: OpenSSL RSA

OpenSSL RSA
[OpenSSL wrapper]


Functions

int openssl_rsa_prv_decrypt (const axutil_env_t *env, const openssl_pkey_t *pkey, const axis2_char_t *padding, oxs_buffer_t *in, oxs_buffer_t *out)
int openssl_rsa_pub_encrypt (const axutil_env_t *env, const openssl_pkey_t *pkey, const axis2_char_t *padding, oxs_buffer_t *in, oxs_buffer_t *out)
int openssl_rsa_prv_encrypt (const axutil_env_t *env, const openssl_pkey_t *pkey, const axis2_char_t *padding, oxs_buffer_t *in, oxs_buffer_t *out)
int openssl_rsa_pub_decrypt (const axutil_env_t *env, const openssl_pkey_t *pkey, const axis2_char_t *padding, oxs_buffer_t *in, oxs_buffer_t *out)

Function Documentation

int openssl_rsa_prv_decrypt ( const axutil_env_t *  env,
const openssl_pkey_t pkey,
const axis2_char_t *  padding,
oxs_buffer_t in,
oxs_buffer_t out 
)

Decrypts data using a private key specified in pointer to openssl_rsa struct pointer to environment struct private key for decryption input data output data

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

int openssl_rsa_prv_encrypt ( const axutil_env_t *  env,
const openssl_pkey_t pkey,
const axis2_char_t *  padding,
oxs_buffer_t in,
oxs_buffer_t out 
)

Sign data using a private key specified in pointer to openssl_rsa struct pointer to environment struct private key for decryption input data output data

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

int openssl_rsa_pub_decrypt ( const axutil_env_t *  env,
const openssl_pkey_t pkey,
const axis2_char_t *  padding,
oxs_buffer_t in,
oxs_buffer_t out 
)

Verifies data using a public key specified in pointer to openssl_rsa struct pointer to environment struct public key for encryption input data output data

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

int openssl_rsa_pub_encrypt ( const axutil_env_t *  env,
const openssl_pkey_t pkey,
const axis2_char_t *  padding,
oxs_buffer_t in,
oxs_buffer_t out 
)

Encrypts data using a public key specified in pointer to openssl_rsa struct pointer to environment struct public key for encryption input data output data

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/oxs__xml__key__info__builder_8h-source.html0000644000076500007650000001445111202454500027067 0ustar shankarshankar Rampart/C: oxs_xml_key_info_builder.h Source File

oxs_xml_key_info_builder.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef OXS_XML_KEY_INFO_BUILDER_H
00019 #define OXS_XML_KEY_INFO_BUILDER_H
00020 
00021 
00031 #include <axis2_defines.h>
00032 #include <oxs_ctx.h>
00033 #include <axutil_env.h>
00034 #include <axiom_node.h>
00035 #include <axiom_element.h>
00036 #include <axutil_qname.h>
00037 
00038 #ifdef __cplusplus
00039 extern "C"
00040 {
00041 #endif
00042 
00043     typedef enum{
00044         OXS_KIBP_UNKNOWN = 0,
00045         OXS_KIBP_X509DATA_X509CERTIFICATE,
00046         OXS_KIBP_X509DATA_ISSUER_SERIAL,
00047     }oxs_key_info_build_pattern_t;
00048 
00049     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00050     oxs_xml_key_info_build(const axutil_env_t *env,
00051                            axiom_node_t *parent,
00052                            oxs_x509_cert_t *cert,
00053                            oxs_key_info_build_pattern_t pattern);
00054 
00055     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00056     oxs_xml_key_info_build_x509_data_x509_certificate(const axutil_env_t *env,
00057             axiom_node_t *parent,
00058             oxs_x509_cert_t *cert);
00059 
00060     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00061     oxs_xml_key_info_build_x509_data_issuer_serial(const axutil_env_t *env,
00062             axiom_node_t *parent,
00063             oxs_x509_cert_t *cert);
00064 
00066 #ifdef __cplusplus
00067 }
00068 #endif
00069 
00070 #endif                          /* OXS_XML_KEY_INFO_BUILDER_H */

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/trust__policy__util_8h-source.html0000644000076500007650000001307011202454500025300 0ustar shankarshankar Rampart/C: trust_policy_util.h Source File

trust_policy_util.h

00001 
00002 /*
00003 * Licensed to the Apache Software Foundation (ASF) under one or more
00004 * contributor license agreements.  See the NOTICE file distributed with
00005 * this work for additional information regarding copyright ownership.
00006 * The ASF licenses this file to You under the Apache License, Version 2.0
00007 * (the "License"); you may not use this file except in compliance with
00008 * the License.  You may obtain a copy of the License at
00009 *
00010 *      http://www.apache.org/licenses/LICENSE-2.0
00011 *
00012 * Unless required by applicable law or agreed to in writing, software
00013 * distributed under the License is distributed on an "AS IS" BASIS,
00014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00015 * See the License for the specific language governing permissions and
00016 * limitations under the License.
00017 */
00018 
00019 #ifndef TRUST_POLICY_UTIL_H
00020 #define TRUST_POLICY_UTIL_H
00021 
00022 #include <axutil_utils.h>
00023 #include <rp_includes.h>
00024 #include <rp_secpolicy.h>
00025 #include <neethi_policy.h>
00026 #include <rp_secpolicy_builder.h>
00027 
00028 #ifdef  __cplusplus
00029 extern "C"
00030 {
00031 #endif
00032 
00033     AXIS2_EXTERN rp_algorithmsuite_t *AXIS2_CALL
00034     trust_policy_util_get_algorithmsuite(
00035         const axutil_env_t * env,
00036         neethi_policy_t * policy,
00037                 rp_secpolicy_t **secpolicy);
00038 
00039     AXIS2_EXTERN rp_binding_commons_t *AXIS2_CALL
00040     trust_policy_util_get_binding_commons(
00041         const axutil_env_t * env,
00042         rp_secpolicy_t * secpolicy);
00043 
00044     AXIS2_EXTERN rp_trust10_t *AXIS2_CALL
00045     trust_policy_util_get_trust10(
00046         const axutil_env_t * env,
00047         neethi_policy_t * policy,
00048                 rp_secpolicy_t **secpolicy);
00049 
00050 #ifdef  __cplusplus
00051 }
00052 #endif
00053 
00054 #endif                          /* _TRUST_POLICY_UTIL_H */

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__openssl__hmac.html0000644000076500007650000000657611202454500023512 0ustar shankarshankar Rampart/C: OpenSSL Hmac

OpenSSL Hmac
[OpenSSL wrapper]


Functions

AXIS2_EXTERN axis2_status_t openssl_hmac_sha1 (const axutil_env_t *env, oxs_key_t *secret, oxs_buffer_t *input, oxs_buffer_t *output)
AXIS2_EXTERN axis2_status_t openssl_p_sha1 (const axutil_env_t *env, oxs_key_t *secret, axis2_char_t *label, axis2_char_t *seed, oxs_key_t *derived_key)
AXIS2_EXTERN axis2_status_t openssl_p_hash (const axutil_env_t *env, unsigned char *secret, unsigned int secret_len, unsigned char *seed, unsigned int seed_len, unsigned char *output, unsigned int output_len)

Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/oxs__axiom_8h-source.html0000644000076500007650000002776411202454500023371 0ustar shankarshankar Rampart/C: oxs_axiom.h Source File

oxs_axiom.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef OXS_AXIOM_H
00019 #define OXS_AXIOM_H
00020 
00026 #include <axis2_defines.h>
00027 #include <axutil_env.h>
00028 #include <axis2_util.h>
00029 #include <axiom_node.h>
00030 
00031 #ifdef __cplusplus
00032 extern "C"
00033 {
00034 #endif
00035 
00050     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00051     oxs_axiom_add_attribute(
00052         const axutil_env_t *env,
00053         axiom_node_t* node,
00054         axis2_char_t* attribute_ns,
00055         axis2_char_t* attribute_ns_uri,
00056         axis2_char_t* attribute,
00057         axis2_char_t* value);
00058 
00068     AXIS2_EXTERN int AXIS2_CALL
00069     oxs_axiom_get_number_of_children_with_qname(
00070         const axutil_env_t *env,
00071         axiom_node_t* parent,
00072         axis2_char_t* local_name,
00073         axis2_char_t* ns_uri,
00074         axis2_char_t* prefix);
00075 
00083     AXIS2_EXTERN axiom_node_t* AXIS2_CALL
00084     oxs_axiom_get_node_by_local_name(
00085         const axutil_env_t *env,
00086         axiom_node_t *node,
00087         axis2_char_t *local_name);
00088 
00099     AXIS2_EXTERN axiom_node_t* AXIS2_CALL
00100     oxs_axiom_get_node_by_id(
00101         const axutil_env_t *env,
00102         axiom_node_t *node,
00103         axis2_char_t *attr,
00104         axis2_char_t *val,
00105         axis2_char_t *ns);
00106 
00116     AXIS2_EXTERN axis2_char_t* AXIS2_CALL
00117     oxs_axiom_get_attribute_value_of_node_by_name(
00118         const axutil_env_t *env,
00119         axiom_node_t *node,
00120         axis2_char_t *attribute_name,
00121         axis2_char_t *ns);
00122 
00131     AXIS2_EXTERN axis2_char_t* AXIS2_CALL
00132     oxs_axiom_get_attribute_val_of_node_by_qname(
00133         const axutil_env_t *env,
00134         axiom_node_t *node,
00135         axutil_qname_t *qname);
00136 
00147     AXIS2_EXTERN axiom_node_t* AXIS2_CALL
00148     oxs_axiom_get_first_child_node_by_name(
00149         const axutil_env_t *env,
00150         axiom_node_t* parent,
00151         axis2_char_t* local_name,
00152         axis2_char_t* ns_uri,
00153         axis2_char_t* prefix);
00154 
00161     AXIS2_EXTERN axis2_char_t* AXIS2_CALL
00162     oxs_axiom_get_node_content(
00163         const axutil_env_t *env, 
00164         axiom_node_t* node);
00165 
00172     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00173     oxs_axiom_deserialize_node(
00174         const axutil_env_t *env,  
00175         axis2_char_t* buffer);
00176 
00185     AXIS2_EXTERN axis2_bool_t AXIS2_CALL
00186     oxs_axiom_check_node_name(
00187         const axutil_env_t *env, 
00188         axiom_node_t* node, 
00189         axis2_char_t* name, 
00190         axis2_char_t* ns);
00191 
00199     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00200     oxs_axiom_interchange_nodes(
00201         const axutil_env_t *env,
00202         axiom_node_t *node_to_move,
00203         axiom_node_t *node_before); 
00204     
00212     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00213     oxs_axiom_add_as_the_first_child(
00214         const axutil_env_t *env,
00215         axiom_node_t *parent,
00216         axiom_node_t *child);
00217 
00230         AXIS2_EXTERN axiom_node_t* AXIS2_CALL
00231         oxs_axiom_get_first_node_by_name_and_attr_val(
00232         const axutil_env_t *env,
00233         axiom_node_t *node,
00234         axis2_char_t *e_name,
00235         axis2_char_t *e_ns,
00236         axis2_char_t *attr_name,
00237         axis2_char_t *attr_val,
00238         axis2_char_t *attr_ns);
00239 
00253         AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00254         oxs_axiom_get_first_node_by_name_and_attr_val_from_xml_doc(
00255         const axutil_env_t *env,
00256         axiom_node_t *node,
00257         axis2_char_t *e_name,
00258         axis2_char_t *e_ns,
00259         axis2_char_t *attr_name,
00260         axis2_char_t *attr_val,
00261         axis2_char_t *attr_ns);
00262 
00269     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00270     oxs_axiom_clone_node(
00271         const axutil_env_t *env,
00272         axiom_node_t *node);
00273                           
00275 #ifdef __cplusplus
00276 }
00277 #endif
00278 
00279 #endif                          /* OXS_AXIOM_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__key__file__type.html0000644000076500007650000000317011202454500024011 0ustar shankarshankar Rampart/C: Key File Type

Key File Type
[Rampart Utilities]


Enumerations

enum  axis2_key_type_t {
  AXIS2_KEY_TYPE_UNKNOWN = 0, AXIS2_KEY_TYPE_PEM, AXIS2_KEY_TYPE_CERT, AXIS2_KEY_TYPE_DER,
  AXIS2_KEY_TYPE_OTHER
}

Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/struct__oxs__error__description-members.html0000644000076500007650000000357611202454500027440 0ustar shankarshankar Rampart/C: Member List

_oxs_error_description Member List

This is the complete list of members for _oxs_error_description, including all inherited members.

code (defined in _oxs_error_description)_oxs_error_description
message (defined in _oxs_error_description)_oxs_error_description


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__openssl__digest.html0000644000076500007650000000646111202454500024052 0ustar shankarshankar Rampart/C: OpenSSL Digest

OpenSSL Digest
[OpenSSL wrapper]


Functions

AXIS2_EXTERN axis2_char_t * openssl_sha1 (const axutil_env_t *env, axis2_char_t *input, int length)
AXIS2_EXTERN axis2_char_t * openssl_md5 (const axutil_env_t *env, axis2_char_t *input, int length)

Function Documentation

AXIS2_EXTERN axis2_char_t* openssl_sha1 ( const axutil_env_t *  env,
axis2_char_t *  input,
int  length 
)

Calculate the digest of the input. Caller MUST free memory

Returns:
calculated digest


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__oxs__c14n.html0000644000076500007650000004005511202454500022463 0ustar shankarshankar Rampart/C: C14N

C14N
[OMXMLSecurity]


Files

file  oxs_c14n.h
 Cannonicalization implementation for OMXMLSecurity.

Functions

AXIS2_EXTERN axis2_status_t oxs_c14n_apply_stream_algo (const axutil_env_t *env, const axiom_document_t *doc, axutil_stream_t *stream, const axutil_array_list_t *ns_prefixes, const axiom_node_t *node, const axis2_char_t *algo)
AXIS2_EXTERN axis2_status_t oxs_c14n_apply_algo (const axutil_env_t *env, const axiom_document_t *doc, axis2_char_t **outbuf, const axutil_array_list_t *ns_prefixes, const axiom_node_t *node, const axis2_char_t *algo)
AXIS2_EXTERN axis2_status_t oxs_c14n_apply_stream (const axutil_env_t *env, const axiom_document_t *doc, axis2_bool_t comments, axutil_stream_t *stream, const axis2_bool_t exclusive, const axutil_array_list_t *ns_prefixes, const axiom_node_t *node)
AXIS2_EXTERN axis2_status_t oxs_c14n_apply (const axutil_env_t *env, const axiom_document_t *doc, const axis2_bool_t comments, axis2_char_t **outbuf, const axis2_bool_t exclusive, const axutil_array_list_t *ns_prefixes, const axiom_node_t *node)

Detailed Description

XML Canonicalization (XML-C14N).

Function Documentation

AXIS2_EXTERN axis2_status_t oxs_c14n_apply ( const axutil_env_t *  env,
const axiom_document_t *  doc,
const axis2_bool_t  comments,
axis2_char_t **  outbuf,
const axis2_bool_t  exclusive,
const axutil_array_list_t *  ns_prefixes,
const axiom_node_t *  node 
)

Perform given XML-Canonicalization (XML-C14N) method and returns the result as an

axis2_char_t
buffer.

Parameters:
env Pointer to the Axis2/C environment.
doc Document on which the canonicalization is performed.
comments 
TRUE
if comments should be included in the output;
FALSE
otherwise.
outbuf Output buffer. A new buffer is allocated by the function, should be free'd by the caller.
ns_prefixes List of inclusive namespace prefixes.
exclusive 
TRUE
if exclusive cannonicalization should be used;
FALSE
otherwise.
node Node that defines the subdocument to be canonicalized. When it is
NULL
the whole document will be canonicalized.

AXIS2_EXTERN axis2_status_t oxs_c14n_apply_algo ( const axutil_env_t *  env,
const axiom_document_t *  doc,
axis2_char_t **  outbuf,
const axutil_array_list_t *  ns_prefixes,
const axiom_node_t *  node,
const axis2_char_t *  algo 
)

Perform given XML-Canonicalization (XML-C14N) method and returns the result as an

axis2_char_t
buffer.

Parameters:
env Pointer to the Axis2/C environment.
doc Document on which the canonicalization is performed.
outbuf Output buffer. A new buffer is allocated by the function, should be free'd by the caller.
ns_prefixes List of inclusive namespace prefixes.
node Node that defines the subdocument to be canonicalized. When it is
NULL
the whole document will be canonicalized.
algo Canonicalization method to be used.

AXIS2_EXTERN axis2_status_t oxs_c14n_apply_stream ( const axutil_env_t *  env,
const axiom_document_t *  doc,
axis2_bool_t  comments,
axutil_stream_t *  stream,
const axis2_bool_t  exclusive,
const axutil_array_list_t *  ns_prefixes,
const axiom_node_t *  node 
)

Perform given XML-Canonicalization (XML-C14N) method and returns the result as an

axutil_stream
.

Parameters:
env Pointer to the Axis2/C environment.
doc Document on which the canonicalization is performed.
comments 
TRUE
if comments should be included in the output;
FALSE
otherwise.
stream Output stream.
ns_prefixes List of inclusive namespace prefixes.
exclusive 
TRUE
if exclusive cannonicalization should be used;
FALSE
otherwise.
node Node that defines the subdocument to be canonicalized. When it is
NULL
the whole document will be canonicalized.

AXIS2_EXTERN axis2_status_t oxs_c14n_apply_stream_algo ( const axutil_env_t *  env,
const axiom_document_t *  doc,
axutil_stream_t *  stream,
const axutil_array_list_t *  ns_prefixes,
const axiom_node_t *  node,
const axis2_char_t *  algo 
)

Perform given XML-Canonicalization (XML-C14N) method and returns the result as an

axutil_stream
.

Parameters:
env Pointer to the Axis2/C environment.
doc Document on which the canonicalization is performed.
stream Output stream.
ns_prefixes List of inclusive namespace prefixes.
node Node that defines the subdocument to be canonicalized. When it is
NULL
the whole document will be canonicalized.
algo Canonicalization method to be used.


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/tab_l.gif0000644000076500007650000000130211202454500020165 0ustar shankarshankarGIF89a ,Õö÷ùñô÷öøúüýþúûüùúûøùúêïóïóöÆÕßÒÞæØâéÞçíÝæìåìñèîòô÷ùóöø³ÈÕÁÒÝËÙâÏÜäÖá薴ŹɯÂÍ»ÎÙÃÔÞÂÓÝÈ×àÌÚâÕáèÙäê×âèåìðëðó„°ÇÑÞåÜæëãëïëñôîóõ÷úûûüüÿÿÿþþþ, ,ÿ@–P±É`H$!%CqVe2X­ŠÌJ(“Ä +€˜3 2$ÀÆ ¼kvŠä-Ëçõu*…"}ã|}|~q(" $f„ 'Žl(Œ&&$r‘™ › & ! )¢¤›{¨£¥r­ª°©¯„±¯¬´¦·»º³®«§¾¶ÃÂÀ¿²¹ÇÄËÆ²ÌÉεҽͼ„ÔÈÓ×иÙÝÕÏÙÊâÜßãçæê¾äÛÅëÇíáîÖìéïøñ÷õüÑðåùü¤Pß?‚ƒœÇÛBm åAœÎáÀ†%V܈î!Çk÷Ø/áÄ;^¤¨²$Æ–#Mf)f͇(WÎL‰“æKçÒ„° ’I)L:eD ¡Cµ´x*4 U¨h  %A«£^ÁNKb¬Ùe§X±‚´k»x!ÁÖí—2tÝÖ !¯š5tÛæé—À]$¬´%ƒXíâ.i[¬]Y­•ÊfžEëõkg`µ††:zëçÒž;£}ºµj×aa‹–Mš¶é׸cçž½»vïÛºƒóî›8ðáÈ‹'?®¼9óç©G_>Ýyuè¬_ßž]zwêß­‡Ç¾º¼mîæµG~½ûôÞთ/ž>ùööÙ«Ïÿ¿ÿýÿÅà|ÖWà}v;rampartc-src-1.3.0/docs/api/html/rampart__token__builder_8h.html0000644000076500007650000001117711202454500024567 0ustar shankarshankar Rampart/C: rampart_token_builder.h File Reference

rampart_token_builder.h File Reference

Reference Token builfing/of rampart. More...

#include <axutil_utils_defines.h>
#include <axis2_defines.h>
#include <axutil_env.h>
#include <oxs_x509_cert.h>

Go to the source code of this file.

Enumerations

enum  rampart_token_build_pattern_t {
  RTBP_UNKNOWN = 0, RTBP_EMBEDDED, RTBP_KEY_IDENTIFIER, RTBP_X509DATA_ISSUER_SERIAL,
  RTBP_X509DATA_X509CERTIFICATE, RTBP_THUMBPRINT
}

Functions

AXIS2_EXTERN axis2_status_t rampart_token_build_security_token_reference (const axutil_env_t *env, axiom_node_t *parent, oxs_x509_cert_t *cert, rampart_token_build_pattern_t pattern)
AXIS2_EXTERN axis2_status_t rampart_token_build_embedded (const axutil_env_t *env, axiom_node_t *parent, oxs_x509_cert_t *cert)
AXIS2_EXTERN axis2_status_t rampart_token_build_key_identifier (const axutil_env_t *env, axiom_node_t *parent, oxs_x509_cert_t *cert)
AXIS2_EXTERN axis2_status_t rampart_token_build_x509_data_x509_certificate (const axutil_env_t *env, axiom_node_t *parent, oxs_x509_cert_t *cert)
AXIS2_EXTERN axis2_status_t rampart_token_build_x509_data_issuer_serial (const axutil_env_t *env, axiom_node_t *parent, oxs_x509_cert_t *cert)
AXIS2_EXTERN axis2_status_t rampart_token_build_thumbprint_reference (const axutil_env_t *env, axiom_node_t *parent, oxs_x509_cert_t *cert)


Detailed Description

Reference Token builfing/of rampart.


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/trust__entropy_8h-source.html0000644000076500007650000002443211202454500024311 0ustar shankarshankar Rampart/C: trust_entropy.h Source File

trust_entropy.h

00001 /*
00002 * Licensed to the Apache Software Foundation (ASF) under one or more
00003 * contributor license agreements.  See the NOTICE file distributed with
00004 * this work for additional information regarding copyright ownership.
00005 * The ASF licenses this file to You under the Apache License, Version 2.0
00006 * (the "License"); you may not use this file except in compliance with
00007 * the License.  You may obtain a copy of the License at
00008 *
00009 *      http://www.apache.org/licenses/LICENSE-2.0
00010 *
00011 * Unless required by applicable law or agreed to in writing, software
00012 * distributed under the License is distributed on an "AS IS" BASIS,
00013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014 * See the License for the specific language governing permissions and
00015 * limitations under the License.
00016 */
00017 
00018 #ifndef TRUST_ENTROPY_H
00019 #define TRUST_ENTROPY_H
00020 
00021 #include <axutil_utils.h>
00022 #include <axutil_string.h>
00023 #include <axutil_base64.h>
00024 #include <axiom_soap.h>
00025 #include <axiom.h>
00026 #include <trust_constants.h>
00027 #include <trust_util.h>
00028 
00029 
00030 #ifdef  __cplusplus
00031 extern "C"
00032 {
00033 #endif
00034     
00035     #define BIN_SEC_ASSYM   "/AsymmetricKey"
00036     #define BIN_SEC_SYM     "/SymmetricKey"
00037     #define BIN_SEC_NONCE   "/Nonce"    
00038 
00039     typedef enum
00040     {
00041         BIN_SEC_TYPE_ERROR = -1,
00042         ASYMMETRIC ,
00043         SYMMETRIC,
00044         NONCE
00045     }trust_bin_sec_type_t;
00046 
00047     typedef struct trust_entropy trust_entropy_t;
00048 
00049     #define TRUST_BIN_SEC_TYPE_ATTR "Type"
00050             
00051     AXIS2_EXTERN trust_entropy_t * AXIS2_CALL
00052     trust_entropy_create(
00053         const axutil_env_t *env);
00054     
00055     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00056     trust_entropy_free(
00057         trust_entropy_t *entropy,
00058         const axutil_env_t *env);
00059     
00060     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00061     trust_entropy_deserialize(
00062         trust_entropy_t *entropy,
00063         const axutil_env_t *env,
00064         axiom_node_t *entropy_node);
00065     
00066     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00067     trust_entropy_serialize(
00068         trust_entropy_t *entropy,
00069         const axutil_env_t *env,
00070         axiom_node_t *parent);
00071     
00072     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00073     trust_entropy_get_binary_secret(
00074         trust_entropy_t *entropy,
00075         const axutil_env_t *env);
00076 
00077         AXIS2_EXTERN trust_bin_sec_type_t AXIS2_CALL
00078         trust_entropy_get_bin_sec_type_from_str(
00079         axis2_char_t *str,
00080         const axutil_env_t *env);
00081     
00082     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00083         trust_entropy_get_str_for_bin_sec_type(
00084         trust_bin_sec_type_t type,
00085         const axutil_env_t *env);
00086     
00087     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00088     trust_entropy_set_binary_secret(
00089         trust_entropy_t *entropy,
00090         const axutil_env_t *env,
00091         axis2_char_t *bin_sec);
00092     
00093     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00094     trust_entropy_get_other(
00095         trust_entropy_t *entropy,
00096         const axutil_env_t *env);
00097     
00098     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00099     trust_entropy_set_other(
00100         trust_entropy_t *entropy,
00101         const axutil_env_t *env,
00102         axiom_node_t *other_node);
00103     
00104     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00105     trust_entropy_get_ns_uri(
00106         trust_entropy_t *entropy,
00107         const axutil_env_t *env);
00108     
00109     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00110     trust_entropy_set_ns_uri(
00111         trust_entropy_t *entropy,
00112         const axutil_env_t *env,
00113         axis2_char_t *ns_uri);
00114 
00115     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00116     trust_entropy_set_binary_secret_type(
00117         trust_entropy_t *entropy,
00118         const axutil_env_t *env,
00119         trust_bin_sec_type_t binsec_type);
00120 
00121 #ifdef  __cplusplus
00122 }
00123 #endif
00124 
00125 #endif                          /* _TRUST_ENTROPY_H */

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__openssl.html0000644000076500007650000002443411202454500022354 0ustar shankarshankar Rampart/C: OpenSSL wrapper

OpenSSL wrapper


Modules

 OpenSSL Cipher Context
 OpenSSL Cipher Property
 OpenSSL Crypt
 OpenSSL Digest
 OpenSSL Hmac
 OpenSSL PEM
 OpenSSL PKCS12
 OpenSSL PKEY
 OpenSSL RSA
 OpenSSL Signatue
 OpenSSL Utility

Defines

#define OPENSSL_ENCRYPT   1
#define OPENSSL_DECRYPT   0
#define OPENSSL_LEAVE_UNCHANGED   -1
#define OPENSSL_EVP_des_ede3_cbc   "EVP_des_ede3_cbc"
#define OPENSSL_EVP_aes_128_cbc   "EVP_aes_128_cbc"
#define OPENSSL_EVP_aes_192_cbc   "EVP_aes_192_cbc"
#define OPENSSL_EVP_aes_256_cbc   "EVP_aes_256_cbc"
#define OPENSSL_HMAC_SHA1   "HmacSha1"
#define OPENSSL_HMAC_SHA1_KEY_LEN   32
#define OPENSSL_RSA_ENCRYPTION   "rsaEncryption"
#define OPENSSL_RSA_PKCS1_PADDING   "RSA_PKCS1_PADDING"
#define OPENSSL_RSA_PKCS1_OAEP_PADDING   "RSA_PKCS1_OAEP_PADDING"
#define OPENSSL_DEFAULT_IV8   "01234567"
#define OPENSSL_DEFAULT_IV16   "0123456701234567"
#define OPENSSL_DEFAULT_IV24   "012345670123456701234567"
#define OPENSSL_DEFAULT_LABEL_FOR_PSHA1   "WS-SecureConversation"
#define OPENSSL_DEFAULT_KEY_LEN_FOR_PSHA1   32
#define OPENSSL_DEFAULT_KEY_OFFSET_FOR_PSHA1   0

Define Documentation

#define OPENSSL_EVP_des_ede3_cbc   "EVP_des_ede3_cbc"

Supported Ciphers


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/openssl__crypt_8h-source.html0000644000076500007650000001251111202454500024247 0ustar shankarshankar Rampart/C: openssl_crypt.h Source File

openssl_crypt.h

Go to the documentation of this file.
00001 /*
00002  *   Copyright 2003-2004 The Apache Software Foundation.
00003  *
00004  *   Licensed under the Apache License, Version 2.0 (the "License");
00005  *   you may not use this file except in compliance with the License.
00006  *   You may obtain a copy of the License at
00007  *
00008  *       http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  *   Unless required by applicable law or agreed to in writing, software
00011  *   distributed under the License is distributed on an "AS IS" BASIS,
00012  *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  *   See the License for the specific language governing permissions and
00014  *   limitations under the License.
00015  */
00016 
00017 #include <openssl/evp.h>
00018 #include <openssl_cipher_ctx.h>
00019 #include <openssl_constants.h>
00020 #include <axis2_util.h>
00021 
00026 #ifndef OPENSSL_CRYPT_H
00027 #define OPENSSL_CRYPT_H
00028 
00029 #ifdef __cplusplus
00030 extern "C" {
00031 #endif
00032 
00051     AXIS2_EXTERN int AXIS2_CALL
00052     openssl_bc_crypt(const axutil_env_t *env,
00053                      openssl_cipher_ctx_t *oc_ctx,
00054                      oxs_buffer_t *input_buf,
00055                      oxs_buffer_t *output_buf,
00056                      int encrypt);
00057 
00058 
00059 
00061 #ifdef __cplusplus
00062 }
00063 #endif
00064 
00065 #endif    /* OPENSSL_CRYPT_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/oxs__key_8h.html0000644000076500007650000003537611202454500021544 0ustar shankarshankar Rampart/C: oxs_key.h File Reference

oxs_key.h File Reference

represents a Key in OMXMLSecurity More...

#include <axis2_defines.h>
#include <oxs_constants.h>
#include <oxs_buffer.h>
#include <axutil_env.h>
#include <rp_algorithmsuite.h>

Go to the source code of this file.

Defines

#define OXS_KEY_USAGE_NONE   0
#define OXS_KEY_USAGE_SESSION   1
#define OXS_KEY_USAGE_SIGNATURE_SESSION   2
#define OXS_KEY_USAGE_DERIVED   3
#define OXS_KEY_DEFAULT_SIZE   64

Typedefs

typedef struct oxs_key_t oxs_key_t

Functions

AXIS2_EXTERN unsigned char * oxs_key_get_data (const oxs_key_t *key, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_key_get_name (const oxs_key_t *key, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_key_get_nonce (const oxs_key_t *key, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_key_get_label (const oxs_key_t *key, const axutil_env_t *env)
AXIS2_EXTERN int oxs_key_get_size (const oxs_key_t *key, const axutil_env_t *env)
AXIS2_EXTERN int oxs_key_get_usage (const oxs_key_t *key, const axutil_env_t *env)
AXIS2_EXTERN int oxs_key_get_offset (const oxs_key_t *key, const axutil_env_t *env)
AXIS2_EXTERN int oxs_key_get_length (const oxs_key_t *key, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_key_set_name (oxs_key_t *key, const axutil_env_t *env, axis2_char_t *name)
AXIS2_EXTERN axis2_status_t oxs_key_set_usage (oxs_key_t *key, const axutil_env_t *env, int usage)
AXIS2_EXTERN axis2_status_t oxs_key_set_nonce (oxs_key_t *key, const axutil_env_t *env, axis2_char_t *nonce)
AXIS2_EXTERN axis2_status_t oxs_key_set_label (oxs_key_t *key, const axutil_env_t *env, axis2_char_t *label)
AXIS2_EXTERN axis2_status_t oxs_key_set_offset (oxs_key_t *key, const axutil_env_t *env, int offset)
AXIS2_EXTERN axis2_status_t oxs_key_set_length (oxs_key_t *key, const axutil_env_t *env, int length)
AXIS2_EXTERN axis2_status_t oxs_key_free (oxs_key_t *key, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_key_populate_with_buf (oxs_key_t *key, const axutil_env_t *env, oxs_buffer_t *buffer, axis2_char_t *name, int usage)
AXIS2_EXTERN axis2_status_t oxs_key_populate (oxs_key_t *key, const axutil_env_t *env, unsigned char *data, axis2_char_t *name, int size, int usage)
AXIS2_EXTERN axis2_status_t oxs_key_read_from_file (oxs_key_t *key, const axutil_env_t *env, axis2_char_t *file_name)
AXIS2_EXTERN axis2_status_t oxs_key_for_algo (oxs_key_t *key, const axutil_env_t *env, rp_algorithmsuite_t *key_algo)
AXIS2_EXTERN oxs_buffer_toxs_key_get_buffer (const oxs_key_t *key, const axutil_env_t *env)
AXIS2_EXTERN oxs_key_toxs_key_dup (oxs_key_t *key, const axutil_env_t *env)
AXIS2_EXTERN oxs_key_toxs_key_create (const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_key_set_key_sha (oxs_key_t *key, const axutil_env_t *env, axis2_char_t *key_sha)
AXIS2_EXTERN axis2_char_t * oxs_key_get_key_sha (const oxs_key_t *key, const axutil_env_t *env)


Detailed Description

represents a Key in OMXMLSecurity


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/rampart__engine_8h.html0000644000076500007650000000460711202454500023047 0ustar shankarshankar Rampart/C: rampart_engine.h File Reference

rampart_engine.h File Reference

Loads configuratins for Rampart, which defines its behaviuor. Also loads modules and initialize Rampart. More...

#include <rp_includes.h>
#include <rampart_context.h>
#include <rampart_constants.h>
#include <axis2_msg_ctx.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN rampart_context_t * rampart_engine_build_configuration (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axis2_bool_t is_inflow)


Detailed Description

Loads configuratins for Rampart, which defines its behaviuor. Also loads modules and initialize Rampart.


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/openssl__cipher__ctx_8h.html0000644000076500007650000001476011202454500024107 0ustar shankarshankar Rampart/C: openssl_cipher_ctx.h File Reference

openssl_cipher_ctx.h File Reference

The cipher context in which the information regarding a cipher cycle is stored. More...

#include <axis2_defines.h>
#include <axutil_env.h>
#include <openssl/evp.h>
#include <oxs_key.h>

Go to the source code of this file.

Typedefs

typedef struct openssl_cipher_ctx_t openssl_cipher_ctx_t

Functions

axis2_status_t openssl_cipher_ctx_free (openssl_cipher_ctx_t *ctx, const axutil_env_t *env)
const EVP_CIPHER * openssl_cipher_ctx_get_cipher (openssl_cipher_ctx_t *ctx, const axutil_env_t *env)
oxs_key_topenssl_cipher_ctx_get_key (openssl_cipher_ctx_t *ctx, const axutil_env_t *env)
axis2_char_t * openssl_cipher_ctx_get_iv (openssl_cipher_ctx_t *ctx, const axutil_env_t *env)
axis2_char_t * openssl_cipher_ctx_get_pad (openssl_cipher_ctx_t *ctx, const axutil_env_t *env)
axis2_status_t openssl_cipher_ctx_set_cipher (openssl_cipher_ctx_t *ctx, const axutil_env_t *env, const EVP_CIPHER *)
axis2_status_t openssl_cipher_ctx_set_key (openssl_cipher_ctx_t *ctx, const axutil_env_t *env, oxs_key_t *key)
axis2_status_t openssl_cipher_ctx_set_iv (openssl_cipher_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *iv)
axis2_status_t openssl_cipher_ctx_set_pad (openssl_cipher_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *pad)
AXIS2_EXTERN openssl_cipher_ctx_topenssl_cipher_ctx_create (const axutil_env_t *env)


Detailed Description

The cipher context in which the information regarding a cipher cycle is stored.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/openssl__crypt_8h.html0000644000076500007650000000505311202454500022754 0ustar shankarshankar Rampart/C: openssl_crypt.h File Reference

openssl_crypt.h File Reference

The encryption/decryption methods for OMXMLSecurity. More...

#include <openssl/evp.h>
#include <openssl_cipher_ctx.h>
#include <openssl_constants.h>
#include <axis2_util.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN int openssl_bc_crypt (const axutil_env_t *env, openssl_cipher_ctx_t *oc_ctx, oxs_buffer_t *input_buf, oxs_buffer_t *output_buf, int encrypt)


Detailed Description

The encryption/decryption methods for OMXMLSecurity.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/trust__token_8h.html0000644000076500007650000013523211202454500022434 0ustar shankarshankar Rampart/C: trust_token.h File Reference

trust_token.h File Reference

Holds function declarations and data for token. More...

#include <axiom.h>
#include <axutil_utils.h>
#include <trust_constants.h>

Go to the source code of this file.

Typedefs

typedef struct trust_token trust_token_t

Enumerations

enum  trust_token_state_t { ISSUED = 1, EXPIRED, CANCELED, RENEWED }

Functions

AXIS2_EXTERN trust_token_t * trust_token_create (const axutil_env_t *env, axis2_char_t *id, axiom_node_t *token_node, axiom_node_t *life_node)
AXIS2_EXTERN trust_token_t * trust_token_create_with_dates (const axutil_env_t *env, axis2_char_t *id, axiom_node_t *token_node, axutil_date_time_t *created, axutil_date_time_t *expire)
AXIS2_EXTERN axis2_status_t trust_token_process_life_elem (const axutil_env_t *env, axiom_node_t *life_node, trust_token_t *token)
AXIS2_EXTERN axis2_bool_t trust_token_is_changed (const axutil_env_t *env, trust_token_t *token)
AXIS2_EXTERN axis2_status_t trust_token_set_changed (const axutil_env_t *env, trust_token_t *token, axis2_bool_t changed)
AXIS2_EXTERN trust_token_state_t trust_token_get_state (const axutil_env_t *env, trust_token_t *token)
AXIS2_EXTERN axis2_status_t trust_token_set_state (const axutil_env_t *env, trust_token_t *token, trust_token_state_t state)
AXIS2_EXTERN axiom_node_t * trust_token_get_token (const axutil_env_t *env, trust_token_t *token)
AXIS2_EXTERN axis2_status_t trust_token_set_token (const axutil_env_t *env, trust_token_t *token, axiom_node_t *token_node)
AXIS2_EXTERN axis2_char_t * trust_token_get_id (const axutil_env_t *env, trust_token_t *token)
AXIS2_EXTERN axiom_node_t * trust_token_get_previous_token (const axutil_env_t *env, trust_token_t *token)
AXIS2_EXTERN axis2_status_t trust_token_set_previous_token (const axutil_env_t *env, trust_token_t *token, axiom_node_t *prev_token)
AXIS2_EXTERN axiom_node_t * trust_token_get_attached_reference (const axutil_env_t *env, trust_token_t *token)
AXIS2_EXTERN axis2_status_t trust_token_set_attached_reference (const axutil_env_t *env, trust_token_t *token, axiom_node_t *attached_reference)
AXIS2_EXTERN axiom_node_t * trust_token_get_unattached_reference (const axutil_env_t *env, trust_token_t *token)
AXIS2_EXTERN axis2_status_t trust_token_set_unattached_reference (const axutil_env_t *env, trust_token_t *token, axiom_node_t *unattached_reference)
AXIS2_EXTERN axutil_date_time_t * trust_token_get_created (const axutil_env_t *env, trust_token_t *token)
AXIS2_EXTERN axis2_status_t trust_token_set_created (const axutil_env_t *env, trust_token_t *token, axutil_date_time_t *created)
AXIS2_EXTERN axutil_date_time_t * trust_token_get_expires (const axutil_env_t *env, trust_token_t *token)
AXIS2_EXTERN axis2_status_t trust_token_set_expires (const axutil_env_t *env, trust_token_t *token, axutil_date_time_t *expire)
AXIS2_EXTERN axis2_char_t * trust_token_get_issuer_address (const axutil_env_t *env, trust_token_t *token)
AXIS2_EXTERN axis2_status_t trust_token_set_issuer_address (const axutil_env_t *env, trust_token_t *token, axis2_char_t *issuer_address)


Detailed Description

Holds function declarations and data for token.


Function Documentation

AXIS2_EXTERN trust_token_t* trust_token_create ( const axutil_env_t *  env,
axis2_char_t *  id,
axiom_node_t *  token_node,
axiom_node_t *  life_node 
)

Create trust token with given id, token node and life element data

Parameters:
env const pointer to axutil environment
id Token identifier
toke_node Actual token axiom node
life_node Life axiom node containing created and expire dates
Returns:
pointer to trust_token_t

AXIS2_EXTERN trust_token_t* trust_token_create_with_dates ( const axutil_env_t *  env,
axis2_char_t *  id,
axiom_node_t *  token_node,
axutil_date_time_t *  created,
axutil_date_time_t *  expire 
)

Create trust token with given id, token node, created date and expire date

Parameters:
env const pointer to axutil environment
id Token identifier
toke_node Actual token axiom node
created Date which token is created
expire Date which token will expire
Returns:
pointer to trust_token_t

AXIS2_EXTERN axiom_node_t* trust_token_get_attached_reference ( const axutil_env_t *  env,
trust_token_t *  token 
)

Parameters:
secret The secret to set.
public void setSecret(byte[] secret) { this.secret = secret; } Get the attached reference of trust token
Parameters:
env const pointer to axutil environment
token Trust token structure
Returns:
axiom_node_t axiom node pointer for attached reference

AXIS2_EXTERN axutil_date_time_t* trust_token_get_created ( const axutil_env_t *  env,
trust_token_t *  token 
)

Get the created date of trust token

Parameters:
env const pointer to axutil environment
token Trust token structure
Returns:
axutil_date_time_t ceated date

AXIS2_EXTERN axutil_date_time_t* trust_token_get_expires ( const axutil_env_t *  env,
trust_token_t *  token 
)

Get the expire date of trust token

Parameters:
env const pointer to axutil environment
token Trust token structure
Returns:
axutil_date_time_t expire date

AXIS2_EXTERN axis2_char_t* trust_token_get_id ( const axutil_env_t *  env,
trust_token_t *  token 
)

Get the identifier of trust token

Parameters:
env const pointer to axutil environment
token Trust token structure
Returns:
axis2_char_t identifier string of token

AXIS2_EXTERN axis2_char_t* trust_token_get_issuer_address ( const axutil_env_t *  env,
trust_token_t *  token 
)

Get the issuer's address of token

Parameters:
env const pointer to axutil environment
token Trust token structure
Returns:
axis2_char_t* issuer's address

AXIS2_EXTERN axiom_node_t* trust_token_get_previous_token ( const axutil_env_t *  env,
trust_token_t *  token 
)

Get the actual previous token om node of trust token

Parameters:
env const pointer to axutil environment
token Trust token structure
Returns:
axiom_node_t axiom node pointer for previous token

AXIS2_EXTERN trust_token_state_t trust_token_get_state ( const axutil_env_t *  env,
trust_token_t *  token 
)

Get the state of trust token

Parameters:
env const pointer to axutil environment
token Trust token structure
Returns:
trust_token_state_t token's state can be ISSUED, EXPIRED, CANCELLED, RENEWED

AXIS2_EXTERN axiom_node_t* trust_token_get_token ( const axutil_env_t *  env,
trust_token_t *  token 
)

Get the actual token om node of trust token

Parameters:
env const pointer to axutil environment
token Trust token structure
Returns:
axiom_node_t axiom node pointer for token

AXIS2_EXTERN axiom_node_t* trust_token_get_unattached_reference ( const axutil_env_t *  env,
trust_token_t *  token 
)

Get the unattached reference of trust token

Parameters:
env const pointer to axutil environment
token Trust token structure
Returns:
axiom_node_t axiom node pointer for unattached reference

AXIS2_EXTERN axis2_bool_t trust_token_is_changed ( const axutil_env_t *  env,
trust_token_t *  token 
)

Get the change status of trust token

Parameters:
env const pointer to axutil environment
token Trust token structure
Returns:
axis2_bool_t whether the token is changed or not

AXIS2_EXTERN axis2_status_t trust_token_process_life_elem ( const axutil_env_t *  env,
axiom_node_t *  life_node,
trust_token_t *  token 
)

Process the life element of the token which represent by the following xml format assign values to related fields. <wst:LifeTime> <wsu:Created>...</wsu:Created> <wsu:Expires>...</wsu:Expires> </wst:LifeTime>

Parameters:
env const pointer to axutil environment
life_node Axiom node containing created and expire dates
token Trust token containing token data
Returns:
status of the life element processing

AXIS2_EXTERN axis2_status_t trust_token_set_attached_reference ( const axutil_env_t *  env,
trust_token_t *  token,
axiom_node_t *  attached_reference 
)

Set the attached reference of trust token

Parameters:
env const pointer to axutil environment
token Trust token structure
attached_reference axiom node pointer for attached reference
Returns:
axis2_status_t whether the set operation is successful or not

AXIS2_EXTERN axis2_status_t trust_token_set_changed ( const axutil_env_t *  env,
trust_token_t *  token,
axis2_bool_t  changed 
)

Set the change status of trust token

Parameters:
env const pointer to axutil environment
token Trust token structure
changed Bollean value representing the if token is changed
Returns:
axis2_status_t whether the operation is successful or not

AXIS2_EXTERN axis2_status_t trust_token_set_created ( const axutil_env_t *  env,
trust_token_t *  token,
axutil_date_time_t *  created 
)

Set the created date of trust token

Parameters:
env const pointer to axutil environment
token Trust token structure
created date which token is created
Returns:
axis2_status_t whether the set operation is successful or not

AXIS2_EXTERN axis2_status_t trust_token_set_expires ( const axutil_env_t *  env,
trust_token_t *  token,
axutil_date_time_t *  expire 
)

Set the expire date of trust token

Parameters:
env const pointer to axutil environment
token Trust token structure
expire Expire date of token
Returns:
axis2_status_t whether the set operation is successful or not

AXIS2_EXTERN axis2_status_t trust_token_set_issuer_address ( const axutil_env_t *  env,
trust_token_t *  token,
axis2_char_t *  issuer_address 
)

Set the issuer's address of token

Parameters:
env const pointer to axutil environment
token Trust token structure
issuer_address issure's address string
Returns:
axis2_status_t whether the set operation is successful or not

AXIS2_EXTERN axis2_status_t trust_token_set_previous_token ( const axutil_env_t *  env,
trust_token_t *  token,
axiom_node_t *  prev_token 
)

Set the actual token om node of trust token's previous token

Parameters:
env const pointer to axutil environment
token Trust token structure
prev_token axiom node pointer for previous token
Returns:
axis2_status_t whether the set operation is successful or not

AXIS2_EXTERN axis2_status_t trust_token_set_state ( const axutil_env_t *  env,
trust_token_t *  token,
trust_token_state_t  state 
)

Set the state of trust token

Parameters:
env const pointer to axutil environment
token Trust token structure
state State of the trust token
Returns:
axis2_status_t whether the set operation is successful or not

AXIS2_EXTERN axis2_status_t trust_token_set_token ( const axutil_env_t *  env,
trust_token_t *  token,
axiom_node_t *  token_node 
)

Set the actual token om node of trust token

Parameters:
env const pointer to axutil environment
token Trust token structure
token_node axiom node pointer for token
Returns:
axis2_status_t whether the set operation is successful or not

AXIS2_EXTERN axis2_status_t trust_token_set_unattached_reference ( const axutil_env_t *  env,
trust_token_t *  token,
axiom_node_t *  unattached_reference 
)

Set the unattached reference of trust token

Parameters:
env const pointer to axutil environment
token Trust token structure
attached_reference axiom node pointer for unattached reference
Returns:
axis2_status_t whether the set operation is successful or not


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/openssl__digest_8h.html0000644000076500007650000000511311202454500023067 0ustar shankarshankar Rampart/C: openssl_digest.h File Reference

openssl_digest.h File Reference

Digest function implementations. Supports SHA1 and MD5. More...

#include <openssl/sha.h>
#include <axutil_utils_defines.h>
#include <axis2_defines.h>
#include <axutil_env.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN axis2_char_t * openssl_sha1 (const axutil_env_t *env, axis2_char_t *input, int length)
AXIS2_EXTERN axis2_char_t * openssl_md5 (const axutil_env_t *env, axis2_char_t *input, int length)


Detailed Description

Digest function implementations. Supports SHA1 and MD5.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/oxs__key__mgr_8h.html0000644000076500007650000005171111202454500022537 0ustar shankarshankar Rampart/C: oxs_key_mgr.h File Reference

oxs_key_mgr.h File Reference

the Key Manager responsible for loading keys for OMXMLSecurity More...

#include <axis2_defines.h>
#include <oxs_ctx.h>
#include <oxs_asym_ctx.h>
#include <axutil_env.h>
#include <axutil_qname.h>
#include <oxs_x509_cert.h>
#include <openssl_pkey.h>
#include <openssl_x509.h>
#include <openssl_pkcs12.h>
#include <axis2_key_type.h>
#include <openssl_pkcs12_keystore.h>

Go to the source code of this file.

Typedefs

typedef struct oxs_key_mgr_t oxs_key_mgr_t

Enumerations

enum  oxs_key_mgr_format_t { OXS_KEY_MGR_FORMAT_UNKNOWN = 0, OXS_KEY_MGR_FORMAT_PEM, OXS_KEY_MGR_FORMAT_PKCS12 }

Functions

AXIS2_EXTERN openssl_pkey_toxs_key_mgr_load_private_key_from_string (const axutil_env_t *env, axis2_char_t *pem_buf, axis2_char_t *password)
AXIS2_EXTERN openssl_pkey_toxs_key_mgr_load_private_key_from_pem_file (const axutil_env_t *env, axis2_char_t *file_name, axis2_char_t *password)
AXIS2_EXTERN oxs_x509_cert_t * oxs_key_mgr_load_x509_cert_from_string (const axutil_env_t *env, axis2_char_t *pem_buf)
AXIS2_EXTERN oxs_x509_cert_t * oxs_key_mgr_load_x509_cert_from_pem_file (const axutil_env_t *env, axis2_char_t *filename)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_read_pkcs12_key_store (const axutil_env_t *env, axis2_char_t *pkcs12_file, axis2_char_t *password, oxs_x509_cert_t **cert, openssl_pkey_t **prv_key)
AXIS2_EXTERN oxs_key_mgr_t * oxs_key_mgr_create (const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_free (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_prv_key_password (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, axis2_char_t *password)
AXIS2_EXTERN axis2_char_t * oxs_key_mgr_get_prv_key_password (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_key_mgr_get_private_key_file (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_key_mgr_get_certificate_file (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_key_mgr_get_reciever_certificate_file (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_private_key_file (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, axis2_char_t *file_name)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_certificate_file (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, axis2_char_t *file_name)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_reciever_certificate_file (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, axis2_char_t *file_name)
AXIS2_EXTERN void * oxs_key_mgr_get_certificate (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN axis2_key_type_t oxs_key_mgr_get_certificate_type (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN void * oxs_key_mgr_get_prv_key (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN axis2_key_type_t oxs_key_mgr_get_prv_key_type (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN void * oxs_key_mgr_get_receiver_certificate (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN axis2_key_type_t oxs_key_mgr_get_receiver_certificate_type (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_certificate (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, void *certificate)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_certificate_type (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, axis2_key_type_t type)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_prv_key (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, void *key)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_prv_key_type (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, axis2_key_type_t type)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_receiver_certificate (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, void *certificate)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_receiver_certificate_type (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, axis2_key_type_t type)
AXIS2_EXTERN oxs_key_mgr_format_t oxs_key_mgr_get_format (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_format (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, oxs_key_mgr_format_t format)
AXIS2_EXTERN void * oxs_key_mgr_get_pem_buf (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_pem_buf (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, void *pem_buf)
AXIS2_EXTERN pkcs12_keystore_t * oxs_key_mgr_get_key_store (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_key_store (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, pkcs12_keystore_t *key_store)
AXIS2_EXTERN void * oxs_key_mgr_get_key_store_buff (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN oxs_x509_cert_t * oxs_key_mgr_get_receiver_certificate_from_ski (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, axis2_char_t *ski)
AXIS2_EXTERN oxs_x509_cert_t * oxs_key_mgr_get_receiver_certificate_from_issuer_serial (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, axis2_char_t *issuer, int serial)
AXIS2_EXTERN int oxs_key_mgr_get_key_store_buff_len (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_key_store_buff (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, void *key_store_buf, int len)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_increment_ref (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)


Detailed Description

the Key Manager responsible for loading keys for OMXMLSecurity


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__oxs__sign__ctx.html0000644000076500007650000010417611202454500023700 0ustar shankarshankar Rampart/C: Signature Context

Signature Context
[OMXMLSecurity]


Typedefs

typedef struct oxs_sign_ctx_t oxs_sign_ctx_t

Enumerations

enum  oxs_sign_operation_t { OXS_SIGN_OPERATION_NONE = 0, OXS_SIGN_OPERATION_SIGN, OXS_SIGN_OPERATION_VERIFY }

Functions

AXIS2_EXTERN oxs_sign_ctx_t * oxs_sign_ctx_create (const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_sign_ctx_free (oxs_sign_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_sign_ctx_get_sign_mtd_algo (const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_sign_ctx_get_c14n_mtd (const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_sign_ctx_get_sig_val (const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env)
AXIS2_EXTERN axutil_array_list_t * oxs_sign_ctx_get_sign_parts (const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env)
AXIS2_EXTERN oxs_x509_cert_t * oxs_sign_ctx_get_certificate (const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env)
AXIS2_EXTERN openssl_pkey_toxs_sign_ctx_get_private_key (const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env)
AXIS2_EXTERN openssl_pkey_toxs_sign_ctx_get_public_key (const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env)
AXIS2_EXTERN oxs_key_toxs_sign_ctx_get_secret (const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env)
AXIS2_EXTERN oxs_sign_operation_t oxs_sign_ctx_get_operation (const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_sign_ctx_set_sign_mtd_algo (oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, axis2_char_t *sign_mtd_algo)
AXIS2_EXTERN axis2_status_t oxs_sign_ctx_set_c14n_mtd (oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, axis2_char_t *c14n_mtd)
AXIS2_EXTERN axis2_status_t oxs_sign_ctx_set_sig_val (oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, axis2_char_t *sig_val)
AXIS2_EXTERN axis2_status_t oxs_sign_ctx_set_sign_parts (oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, axutil_array_list_t *sign_parts)
AXIS2_EXTERN axis2_status_t oxs_sign_ctx_set_certificate (oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, oxs_x509_cert_t *certificate)
AXIS2_EXTERN axis2_status_t oxs_sign_ctx_set_private_key (oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, openssl_pkey_t *prv_key)
AXIS2_EXTERN axis2_status_t oxs_sign_ctx_set_public_key (oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, openssl_pkey_t *pub_key)
AXIS2_EXTERN axis2_status_t oxs_sign_ctx_set_secret (oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, oxs_key_t *secret)
AXIS2_EXTERN axis2_status_t oxs_sign_ctx_set_operation (oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, oxs_sign_operation_t operation)

Function Documentation

AXIS2_EXTERN oxs_sign_ctx_t* oxs_sign_ctx_create ( const axutil_env_t *  env  ) 

Create a signature context the environemnt struct

Returns:
created signature context

AXIS2_EXTERN axis2_status_t oxs_sign_ctx_free ( oxs_sign_ctx_t *  ctx,
const axutil_env_t *  env 
)

Free a signature context. signature context the environemnt struct

Returns:
AXIS2_SUCCESS on success or AXIS2_FAILURE on failure

AXIS2_EXTERN axis2_char_t* oxs_sign_ctx_get_c14n_mtd ( const oxs_sign_ctx_t *  sign_ctx,
const axutil_env_t *  env 
)

Get cannocanicalization method of the signature context the signature context the environemnt struct

Returns:
cannocanicalization method

AXIS2_EXTERN oxs_x509_cert_t* oxs_sign_ctx_get_certificate ( const oxs_sign_ctx_t *  sign_ctx,
const axutil_env_t *  env 
)

Get x509 certificate of the signature context the signature context the environemnt struct

Returns:
x509 certificate

AXIS2_EXTERN oxs_sign_operation_t oxs_sign_ctx_get_operation ( const oxs_sign_ctx_t *  sign_ctx,
const axutil_env_t *  env 
)

Get the operation of the signature context the signature context the environemnt struct

Returns:
operation SIGN/VERIFY/NONE

AXIS2_EXTERN openssl_pkey_t* oxs_sign_ctx_get_private_key ( const oxs_sign_ctx_t *  sign_ctx,
const axutil_env_t *  env 
)

Get private key of the signature context the signature context the environemnt struct

Returns:
private key

AXIS2_EXTERN openssl_pkey_t* oxs_sign_ctx_get_public_key ( const oxs_sign_ctx_t *  sign_ctx,
const axutil_env_t *  env 
)

Get public key of the signature context the signature context the environemnt struct

Returns:
public key

AXIS2_EXTERN oxs_key_t* oxs_sign_ctx_get_secret ( const oxs_sign_ctx_t *  sign_ctx,
const axutil_env_t *  env 
)

Get shared secret of the signature context the signature context the environemnt struct

Returns:
the shared secret

AXIS2_EXTERN axis2_char_t* oxs_sign_ctx_get_sig_val ( const oxs_sign_ctx_t *  sign_ctx,
const axutil_env_t *  env 
)

Get sginature valueof the signature context the signature context the environemnt struct

Returns:
signature value

AXIS2_EXTERN axis2_char_t* oxs_sign_ctx_get_sign_mtd_algo ( const oxs_sign_ctx_t *  sign_ctx,
const axutil_env_t *  env 
)

Get signature algorithm of the signature context the signature context the environemnt struct

Returns:
signature algorithm

AXIS2_EXTERN axutil_array_list_t* oxs_sign_ctx_get_sign_parts ( const oxs_sign_ctx_t *  sign_ctx,
const axutil_env_t *  env 
)

Get signature parts of the signature context the signature context the environemnt struct

Returns:
sgnature parts as a list

AXIS2_EXTERN axis2_status_t oxs_sign_ctx_set_c14n_mtd ( oxs_sign_ctx_t *  sign_ctx,
const axutil_env_t *  env,
axis2_char_t *  c14n_mtd 
)

Set Cannocanicalization method of the signature context the signature context the environemnt struct Cannocanicalization method

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_sign_ctx_set_certificate ( oxs_sign_ctx_t *  sign_ctx,
const axutil_env_t *  env,
oxs_x509_cert_t *  certificate 
)

Set the x509 certificate of the signature context the signature context the environemnt struct the x509 certificate

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_sign_ctx_set_operation ( oxs_sign_ctx_t *  sign_ctx,
const axutil_env_t *  env,
oxs_sign_operation_t  operation 
)

Set the operation of the signature context the signature context the environemnt struct the operation

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_sign_ctx_set_private_key ( oxs_sign_ctx_t *  sign_ctx,
const axutil_env_t *  env,
openssl_pkey_t prv_key 
)

Set private key of the signature context the signature context the environemnt struct private key

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_sign_ctx_set_public_key ( oxs_sign_ctx_t *  sign_ctx,
const axutil_env_t *  env,
openssl_pkey_t pub_key 
)

Set the public key of the signature context the signature context the environemnt struct the public key

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_sign_ctx_set_secret ( oxs_sign_ctx_t *  sign_ctx,
const axutil_env_t *  env,
oxs_key_t secret 
)

Set the shared secret of the signature context the signature context the environemnt struct the shared secret

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_sign_ctx_set_sig_val ( oxs_sign_ctx_t *  sign_ctx,
const axutil_env_t *  env,
axis2_char_t *  sig_val 
)

Set signature value of the signature context the signature context the environemnt struct signature value

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_sign_ctx_set_sign_mtd_algo ( oxs_sign_ctx_t *  sign_ctx,
const axutil_env_t *  env,
axis2_char_t *  sign_mtd_algo 
)

Set Signature algorithm of the signature context the signature context the environemnt struct Signature algorithm

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_sign_ctx_set_sign_parts ( oxs_sign_ctx_t *  sign_ctx,
const axutil_env_t *  env,
axutil_array_list_t *  sign_parts 
)

Set signature parts of the signature context the signature context the environemnt struct signature parts

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/oxs__signature_8h-source.html0000644000076500007650000002051211202454500024235 0ustar shankarshankar Rampart/C: oxs_signature.h Source File

oxs_signature.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef OXS_SIGNATURE_H
00019 #define OXS_SIGNATURE_H
00020 
00021 
00032 #include <axis2_defines.h>
00033 #include <oxs_ctx.h>
00034 #include <axutil_env.h>
00035 #include <axiom_node.h>
00036 #include <axiom_element.h>
00037 #include <axutil_qname.h>
00038 #include <oxs_sign_ctx.h>
00039 
00040 #ifdef __cplusplus
00041 extern "C"
00042 {
00043 #endif
00044 
00054     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00055     oxs_sig_sign_hmac_sha1(const axutil_env_t *env,
00056                       oxs_sign_ctx_t *sign_ctx,
00057                       oxs_buffer_t *input,
00058                       oxs_buffer_t *output);
00059 
00069     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00070     oxs_sig_sign_rsa_sha1(const axutil_env_t *env,
00071                           oxs_sign_ctx_t *sign_ctx,
00072                           oxs_buffer_t *input,
00073                           oxs_buffer_t *output);
00074 
00086     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00087     oxs_sig_sign(const axutil_env_t *env,
00088                  oxs_sign_ctx_t *sign_ctx,
00089                  oxs_buffer_t *input,
00090                  oxs_buffer_t *output);
00091 
00102     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00103     oxs_sig_verify(const axutil_env_t *env,
00104                    oxs_sign_ctx_t *sign_ctx,
00105                    axis2_char_t *content,
00106                    axis2_char_t *signature);
00116     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00117     oxs_sig_verify_hmac_sha1(const axutil_env_t *env,
00118                oxs_sign_ctx_t *sign_ctx,
00119                axis2_char_t *content,
00120                axis2_char_t *signature);
00121 
00131     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00132     oxs_sig_verify_rsa_sha1(const axutil_env_t *env,
00133                oxs_sign_ctx_t *sign_ctx,
00134                axis2_char_t *content,
00135                axis2_char_t *signature);
00136 
00138 #ifdef __cplusplus
00139 }
00140 #endif
00141 
00142 #endif                          /* OXS_SIGNATURE_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/rampart__util_8h.html0000644000076500007650000001445611202454500022562 0ustar shankarshankar Rampart/C: rampart_util.h File Reference

rampart_util.h File Reference

Utilities of rampart. More...

#include <axutil_utils_defines.h>
#include <axis2_defines.h>
#include <axutil_date_time.h>
#include <axutil_env.h>
#include <axis2_msg_ctx.h>
#include <rampart_authn_provider.h>
#include <rampart_credentials.h>
#include <rampart_callback.h>
#include <rampart_replay_detector.h>
#include <rampart_sct_provider.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN
rampart_credentials_t * 
rampart_load_credentials_module (const axutil_env_t *env, axis2_char_t *cred_module_name)
AXIS2_EXTERN
rampart_credentials_status_t 
rampart_call_credentials (const axutil_env_t *env, rampart_credentials_t *cred_module, axis2_msg_ctx_t *ctx, axis2_char_t **username, axis2_char_t **password)
AXIS2_EXTERN
rampart_authn_provider_t * 
rampart_load_auth_module (const axutil_env_t *env, axis2_char_t *auth_module_name)
AXIS2_EXTERN
rampart_replay_detector_t * 
rampart_load_replay_detector (const axutil_env_t *env, axis2_char_t *replay_detector_name)
AXIS2_EXTERN
rampart_sct_provider_t * 
rampart_load_sct_provider (const axutil_env_t *env, axis2_char_t *sct_provider_name)
AXIS2_EXTERN rampart_callback_t * rampart_load_pwcb_module (const axutil_env_t *env, axis2_char_t *callback_module_name)
AXIS2_EXTERN
rampart_authn_provider_status_t 
rampart_authenticate_un_pw (const axutil_env_t *env, rampart_authn_provider_t *authp, const axis2_char_t *username, const axis2_char_t *password, const axis2_char_t *nonce, const axis2_char_t *created, const axis2_char_t *password_type, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN axis2_char_t * rampart_callback_password (const axutil_env_t *env, rampart_callback_t *callback_module, const axis2_char_t *username)
AXIS2_EXTERN axis2_char_t * rampart_callback_pkcs12_password (const axutil_env_t *env, rampart_callback_t *callback_module, const axis2_char_t *username)
AXIS2_EXTERN axis2_char_t * rampart_generate_time (const axutil_env_t *env, int ttl, axis2_bool_t with_millisecond)
AXIS2_EXTERN axis2_status_t rampart_compare_date_time (const axutil_env_t *env, axis2_char_t *dt1, axis2_char_t *dt2)


Detailed Description

Utilities of rampart.


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/rampart__encryption_8h.html0000644000076500007650000001046111202454500023767 0ustar shankarshankar Rampart/C: rampart_encryption.h File Reference

rampart_encryption.h File Reference

encrypts a SOAP message More...

#include <axutil_utils_defines.h>
#include <axis2_defines.h>
#include <axutil_env.h>
#include <axiom_soap.h>
#include <axis2_msg_ctx.h>
#include <oxs_asym_ctx.h>
#include <oxs_xml_encryption.h>
#include <rampart_context.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN axis2_status_t rampart_enc_encrypt_message (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_soap_envelope_t *soap_envelope, axiom_node_t *sec_node)
AXIS2_EXTERN axis2_status_t rampart_enc_dk_encrypt_message (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_soap_envelope_t *soap_envelope, axiom_node_t *sec_node)
AXIS2_EXTERN axis2_status_t rampart_enc_add_key_info (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_soap_envelope_t *soap_envelope, axiom_node_t *sec_node)
AXIS2_EXTERN axis2_status_t rampart_enc_encrypt_signature (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_soap_envelope_t *soap_envelope, axiom_node_t *sec_node)
AXIS2_EXTERN axis2_status_t rampart_enc_encrypt_session_key (const axutil_env_t *env, oxs_key_t *session_key, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_node_t *sec_node, axutil_array_list_t *id_list)


Detailed Description

encrypts a SOAP message


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/oxs__signature_8h.html0000644000076500007650000001114411202454500022740 0ustar shankarshankar Rampart/C: oxs_signature.h File Reference

oxs_signature.h File Reference

Does the XML Signature for OMXMLSecurity. More...

#include <axis2_defines.h>
#include <oxs_ctx.h>
#include <axutil_env.h>
#include <axiom_node.h>
#include <axiom_element.h>
#include <axutil_qname.h>
#include <oxs_sign_ctx.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN axis2_status_t oxs_sig_sign_hmac_sha1 (const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, oxs_buffer_t *input, oxs_buffer_t *output)
AXIS2_EXTERN axis2_status_t oxs_sig_sign_rsa_sha1 (const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, oxs_buffer_t *input, oxs_buffer_t *output)
AXIS2_EXTERN axis2_status_t oxs_sig_sign (const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, oxs_buffer_t *input, oxs_buffer_t *output)
AXIS2_EXTERN axis2_status_t oxs_sig_verify (const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, axis2_char_t *content, axis2_char_t *signature)
AXIS2_EXTERN axis2_status_t oxs_sig_verify_hmac_sha1 (const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, axis2_char_t *content, axis2_char_t *signature)
AXIS2_EXTERN axis2_status_t oxs_sig_verify_rsa_sha1 (const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, axis2_char_t *content, axis2_char_t *signature)


Detailed Description

Does the XML Signature for OMXMLSecurity.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/rampart__policy__validator_8h.html0000644000076500007650000000460111202454500025277 0ustar shankarshankar Rampart/C: rampart_policy_validator.h File Reference

rampart_policy_validator.h File Reference

Verifies whether the message complies with the security policy reqmnt. More...

#include <axutil_utils_defines.h>
#include <axis2_defines.h>
#include <axutil_env.h>
#include <axis2_msg_ctx.h>
#include <rampart_context.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN axis2_status_t rampart_pv_validate_sec_header (const axutil_env_t *env, rampart_context_t *rampart_context, axiom_node_t *sec_node, axis2_msg_ctx_t *msg_ctx)


Detailed Description

Verifies whether the message complies with the security policy reqmnt.


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/oxs__error_8h-source.html0000644000076500007650000002345211202454500023373 0ustar shankarshankar Rampart/C: oxs_error.h Source File

oxs_error.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef OXS_ERROR_H
00019 #define OXS_ERROR_H
00020 
00021 
00031 #include <axis2_defines.h>
00032 #include <axutil_env.h>
00033 
00034 #ifdef __cplusplus
00035 extern "C"
00036 {
00037 #endif
00038 
00039 #if defined( WIN32 ) && (_MSC_VER < 1300)
00040 #define __FUNCTION__ NULL
00041 #endif
00042 
00043     /*Macros for locating thr error*/
00044 #define FUNCTION_NAME __FUNCTION__
00045 #define LINE_NUMBER __LINE__
00046 #define FILE_NAME __FILE__
00047 
00048 #define OXS_ERROR_LOCATION FILE_NAME,LINE_NUMBER,FUNCTION_NAME
00049 
00050     /*Error codes*/
00051 #define OXS_ERROR_DEFAULT               0
00052 #define OXS_ERROR_ENCRYPT_FAILED        1
00053 #define OXS_ERROR_DECRYPT_FAILED        2
00054 #define OXS_ERROR_INVALID_DATA          3
00055 #define OXS_ERROR_INVALID_SIZE          4
00056 #define OXS_ERROR_INVALID_FORMAT        5
00057 #define OXS_ERROR_ELEMENT_FAILED        6
00058 #define OXS_ERROR_UNSUPPORTED_ALGO      7
00059 #define OXS_ERROR_CREATION_FAILED       8
00060 #define OXS_ERROR_INITIALIZATION_FAILED 9
00061 #define OXS_ERROR_DATA_CONV_FAILED     10
00062 #define OXS_ERROR_OPENSSL_FUNC_FAILED  11
00063 #define OXS_ERROR_TRANSFORM_FAILED     12
00064 #define OXS_ERROR_SIGN_FAILED          13
00065 #define OXS_ERROR_SIG_VERIFICATION_FAILED        14
00066 #define OXS_ERROR_KEY_DERIVATION_FAILED 15
00067 
00068     typedef struct _oxs_error_description oxs_error_description, *oxs_error_description_ptr;
00069 
00075     struct _oxs_error_description
00076     {
00077         int code;
00078         const char* message;
00079     };
00080 
00086     AXIS2_EXTERN const char* AXIS2_CALL
00087     oxs_errors_get_msg_by_code(int code);
00088 
00094     AXIS2_EXTERN const char* AXIS2_CALL
00095     oxs_errors_get_msg(unsigned int pos);
00096 
00102     AXIS2_EXTERN int AXIS2_CALL
00103     oxs_errors_get_code(unsigned int pos);
00104 
00114     AXIS2_EXTERN void AXIS2_CALL
00115     oxs_error(const axutil_env_t *env, const char* file, int line, const char* func,
00116               int code, const char* msg,...);
00117 
00119 #ifdef __cplusplus
00120 }
00121 #endif
00122 
00123 #endif                          /* OXS_ERROR_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/openssl__pkcs12__keystore_8h.html0000644000076500007650000002053211202454500025001 0ustar shankarshankar Rampart/C: openssl_pkcs12_keystore.h File Reference

openssl_pkcs12_keystore.h File Reference

Key Store manager for keys that are in pkcs12 format. More...

#include <openssl/rand.h>
#include <openssl/evp.h>
#include <openssl/pem.h>
#include <openssl/bio.h>
#include <openssl_constants.h>
#include <openssl_pkey.h>
#include <axis2_util.h>
#include <openssl/pkcs12.h>
#include <openssl/rsa.h>
#include <openssl/x509.h>
#include <openssl_pkcs12.h>
#include <oxs_error.h>
#include <oxs_x509_cert.h>
#include <openssl_x509.h>

Go to the source code of this file.

Typedefs

typedef struct pkcs12_keystore pkcs12_keystore_t

Functions

AXIS2_EXTERN pkcs12_keystore_t * pkcs12_keystore_create (const axutil_env_t *env, axis2_char_t *filename, axis2_char_t *password)
axutil_array_list_t * pkcs12_keystore_populate_cert_array (const axutil_env_t *env, STACK_OF(X509)*other_certs)
oxs_x509_cert_t * pkcs12_keystore_populate_oxs_cert (const axutil_env_t *env, X509 *cert_in)
AXIS2_EXTERN openssl_pkey_tpkcs12_keystore_get_owner_private_key (pkcs12_keystore_t *keystore, const axutil_env_t *env)
AXIS2_EXTERN oxs_x509_cert_t * pkcs12_keystore_get_owner_certificate (pkcs12_keystore_t *keystore, const axutil_env_t *env)
AXIS2_EXTERN oxs_x509_cert_t * pkcs12_keystore_get_certificate_for_issuer_serial (pkcs12_keystore_t *keystore, const axutil_env_t *env, axis2_char_t *issuer, int serial_number)
AXIS2_EXTERN oxs_x509_cert_t * pkcs12_keystore_get_certificate_for_thumbprint (pkcs12_keystore_t *keystore, const axutil_env_t *env, axis2_char_t *thumbprint)
AXIS2_EXTERN oxs_x509_cert_t * pkcs12_keystore_get_certificate_for_subject_key_id (pkcs12_keystore_t *keystore, const axutil_env_t *env, axis2_char_t *ski)
AXIS2_EXTERN oxs_x509_cert_t * pkcs12_keystore_get_other_certificate (pkcs12_keystore_t *keystore, const axutil_env_t *env)
AXIS2_EXTERN pkcs12_keystore_t * pkcs12_keystore_create_from_buffer (const axutil_env_t *env, axis2_char_t *buffer, axis2_char_t *password, int len)


Detailed Description

Key Store manager for keys that are in pkcs12 format.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__rampart__authn__provider.html0000644000076500007650000003015611202454500025744 0ustar shankarshankar Rampart/C: Authentication Provider

Authentication Provider


Classes

struct  rampart_authn_provider_ops
struct  rampart_authn_provider
typedef struct
rampart_authn_provider_ops 
rampart_authn_provider_ops_t
typedef struct
rampart_authn_provider 
rampart_authn_provider_t
#define RAMPART_AUTHN_PROVIDER_FREE(authn_provider, env)   ((authn_provider)->ops->free (authn_provider, env))
#define RAMPART_AUTHN_PROVIDER_CHECK_PASSWORD(authn_provider, env, msg_ctx, username, password)
#define RAMPART_AUTHN_PROVIDER_CHECK_PASSWORD_DIGEST(authn_provider, env, msg_ctx, username, nonce, nonce_length, digest)

Typedefs

typedef enum
rampart_authn_provider_status 
rampart_authn_provider_status_t

Enumerations

enum  rampart_authn_provider_status {
  RAMPART_AUTHN_PROVIDER_DENIED = 0, RAMPART_AUTHN_PROVIDER_GRANTED, RAMPART_AUTHN_PROVIDER_FOUND, RAMPART_AUTHN_PROVIDER_USER_FOUND,
  RAMPART_AUTHN_PROVIDER_USER_NOT_FOUND, RAMPART_AUTHN_PROVIDER_GENERAL_ERROR
}

Variables

rampart_authn_provider_status_t(* rampart_authn_provider_ops::rampart_authn_provider_check_password_digest )(rampart_authn_provider_t *authn_provider, const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, const axis2_char_t *username, const axis2_char_t *nonce, const axis2_char_t *created, const char *digest)
axis2_status_t(* rampart_authn_provider_ops::free )(rampart_authn_provider_t *authn_provider, const axutil_env_t *env)
axutil_param_t * rampart_authn_provider::param

Define Documentation

#define RAMPART_AUTHN_PROVIDER_CHECK_PASSWORD ( authn_provider,
env,
msg_ctx,
username,
password   ) 

Value:

((authn_provider)->ops->rampart_authn_provider_check_password( \
            authn_provider, env, msg_ctx, username, password))

#define RAMPART_AUTHN_PROVIDER_CHECK_PASSWORD_DIGEST ( authn_provider,
env,
msg_ctx,
username,
nonce,
nonce_length,
digest   ) 

Value:

((authn_provider)->ops->rampart_authn_provider_check_password_digest( \
            authn_provider, env, msg_ctx, username, nonce, nonce_length, digest))


Typedef Documentation

typedef struct rampart_authn_provider_ops rampart_authn_provider_ops_t

Struct to authenticate username/password pair


Variable Documentation

axis2_status_t( * rampart_authn_provider_ops::free)(rampart_authn_provider_t *authn_provider, const axutil_env_t *env) [inherited]

The free function to free all resources allocated

Parameters:
authn_provider the authentication provider struct
env pointer to environment struct
Returns:
AXIS2_SUCCESS on success. AXIS2_FAILURE otherwise.

rampart_authn_provider_status_t( * rampart_authn_provider_ops::rampart_authn_provider_check_password_digest)(rampart_authn_provider_t *authn_provider, const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, const axis2_char_t *username, const axis2_char_t *nonce, const axis2_char_t *created, const char *digest) [inherited]

Check digested passwords. If the UseranmeToken is in password digest form this function will be called.

Parameters:
authn_provider the authentication provider struct
env pointer to environment struct
msg_ctx message context
username the username
nonce the nonce or the random value of the username token
created the created value of the username token
digest the digest value of the SHA-1(password+created+nonce)
Returns:
the status of the check


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/secconv__security__context__token_8h.html0000644000076500007650000012665511202454500026715 0ustar shankarshankar Rampart/C: secconv_security_context_token.h File Reference

secconv_security_context_token.h File Reference

security context token More...

#include <stdio.h>
#include <stdlib.h>
#include <axutil_utils.h>
#include <axutil_string.h>
#include <oxs_buffer.h>

Go to the source code of this file.

Typedefs

typedef struct
security_context_token_t 
security_context_token_t

Functions

AXIS2_EXTERN
security_context_token_t * 
security_context_token_create (const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t security_context_token_free (security_context_token_t *sct, const axutil_env_t *env)
AXIS2_EXTERN oxs_buffer_tsecurity_context_token_get_secret (security_context_token_t *sct, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * security_context_token_get_global_identifier (security_context_token_t *sct, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * security_context_token_get_local_identifier (security_context_token_t *sct, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t security_context_token_set_secret (security_context_token_t *sct, const axutil_env_t *env, oxs_buffer_t *buffer)
AXIS2_EXTERN axis2_status_t security_context_token_set_global_identifier (security_context_token_t *sct, const axutil_env_t *env, axis2_char_t *global_id)
AXIS2_EXTERN axis2_status_t security_context_token_set_local_identifier (security_context_token_t *sct, const axutil_env_t *env, axis2_char_t *local_id)
AXIS2_EXTERN axis2_status_t security_context_token_set_is_sc10 (security_context_token_t *sct, const axutil_env_t *env, axis2_bool_t is_sc10)
AXIS2_EXTERN axiom_node_t * security_context_token_get_requested_proof_token (security_context_token_t *sct, const axutil_env_t *env)
AXIS2_EXTERN axiom_node_t * security_context_token_get_attached_reference (security_context_token_t *sct, const axutil_env_t *env)
AXIS2_EXTERN axiom_node_t * security_context_token_get_unattached_reference (security_context_token_t *sct, const axutil_env_t *env)
AXIS2_EXTERN axiom_node_t * security_context_token_get_token (security_context_token_t *sct, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t security_context_token_set_requested_proof_token (security_context_token_t *sct, const axutil_env_t *env, axiom_node_t *node)
AXIS2_EXTERN axis2_status_t security_context_token_set_attached_reference (security_context_token_t *sct, const axutil_env_t *env, axiom_node_t *node)
AXIS2_EXTERN axis2_status_t security_context_token_set_unattached_reference (security_context_token_t *sct, const axutil_env_t *env, axiom_node_t *node)
AXIS2_EXTERN axis2_status_t security_context_token_set_token (security_context_token_t *sct, const axutil_env_t *env, axiom_node_t *node)
AXIS2_EXTERN axis2_status_t security_context_token_increment_ref (security_context_token_t *sct, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * security_context_token_serialize (security_context_token_t *sct, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t security_context_token_deserialize (security_context_token_t *sct, const axutil_env_t *env, axis2_char_t *serialised_node)


Detailed Description

security context token


Function Documentation

AXIS2_EXTERN security_context_token_t* security_context_token_create ( const axutil_env_t *  env  ) 

Creates security context token

Parameters:
env Pointer to environment struct
Returns:
Security context token if success. NULL otherwise.

AXIS2_EXTERN axis2_status_t security_context_token_deserialize ( security_context_token_t *  sct,
const axutil_env_t *  env,
axis2_char_t *  serialised_node 
)

Deserializes the security context token.

Parameters:
sct Pointer to secuirty context token struct
env Pointer to environment struct
serialised_node serialised string representation of security context token
Returns:
serialized security context token if success. NULL otherwise

AXIS2_EXTERN axis2_status_t security_context_token_free ( security_context_token_t *  sct,
const axutil_env_t *  env 
)

Free security context token

Parameters:
sct Pointer to secuirty context token struct
env Pointer to environment struct
Returns:
AXIS2_SUCCESS if success. AXIS2_FAILURE otherwise.

AXIS2_EXTERN axiom_node_t* security_context_token_get_attached_reference ( security_context_token_t *  sct,
const axutil_env_t *  env 
)

Get local id of security context token as axiom node. This id will be used when token is included in the message

Parameters:
sct Pointer to secuirty context token struct
env Pointer to environment struct
Returns:
valid axiom node if success. NULL otherwise.

AXIS2_EXTERN axis2_char_t* security_context_token_get_global_identifier ( security_context_token_t *  sct,
const axutil_env_t *  env 
)

Get global id of security context token. This id will be used when token is not included in the message

Parameters:
sct Pointer to secuirty context token struct
env Pointer to environment struct
Returns:
global id if success. NULL otherwise.

AXIS2_EXTERN axis2_char_t* security_context_token_get_local_identifier ( security_context_token_t *  sct,
const axutil_env_t *  env 
)

Get local id of security context token. This id will be used when token is included in the message

Parameters:
sct Pointer to secuirty context token struct
env Pointer to environment struct
Returns:
local id if success. NULL otherwise.

AXIS2_EXTERN axiom_node_t* security_context_token_get_requested_proof_token ( security_context_token_t *  sct,
const axutil_env_t *  env 
)

Get shared secret as axiom_node. Shared secret will be included inside 'RequestedProofToken' node. This is acording to WS-Trust specification

Parameters:
sct Pointer to secuirty context token struct
env Pointer to environment struct
Returns:
valid axiom_node if success. NULL otherwise.

AXIS2_EXTERN oxs_buffer_t* security_context_token_get_secret ( security_context_token_t *  sct,
const axutil_env_t *  env 
)

Get shared secret from security context token. Callers should not free returned buffer

Parameters:
sct Pointer to secuirty context token struct
env Pointer to environment struct
Returns:
shared secret if success. NULL otherwise.

AXIS2_EXTERN axiom_node_t* security_context_token_get_token ( security_context_token_t *  sct,
const axutil_env_t *  env 
)

Get axiom node representation of security context token. This will be included in the message if the token needs to be sent in the message

Parameters:
sct Pointer to secuirty context token struct
env Pointer to environment struct
Returns:
valid axiom node if success. NULL otherwise.

AXIS2_EXTERN axiom_node_t* security_context_token_get_unattached_reference ( security_context_token_t *  sct,
const axutil_env_t *  env 
)

Get global id of security context token as axiom node. This id will be used when token is not included in the message

Parameters:
sct Pointer to secuirty context token struct
env Pointer to environment struct
Returns:
valid axiom node if success. NULL otherwise.

AXIS2_EXTERN axis2_status_t security_context_token_increment_ref ( security_context_token_t *  sct,
const axutil_env_t *  env 
)

Increment the reference of security context token

Parameters:
sct Pointer to secuirty context token struct
env Pointer to environment struct
Returns:
AXIS2_SUCCESS if success. AXIS2_FAILURE otherwise.

AXIS2_EXTERN axis2_char_t* security_context_token_serialize ( security_context_token_t *  sct,
const axutil_env_t *  env 
)

Serializes the security context token. Caller should take the ownership of returned value

Parameters:
sct Pointer to secuirty context token struct
env Pointer to environment struct
Returns:
serialized security context token if success. NULL otherwise

AXIS2_EXTERN axis2_status_t security_context_token_set_attached_reference ( security_context_token_t *  sct,
const axutil_env_t *  env,
axiom_node_t *  node 
)

Set local identifier of security context token from attached reference node.

Parameters:
sct Pointer to secuirty context token struct
env Pointer to environment struct
node Pointer to attached reference axiom node
Returns:
AXIS2_SUCCESS if success. AXIS2_FAILURE otherwise.

AXIS2_EXTERN axis2_status_t security_context_token_set_global_identifier ( security_context_token_t *  sct,
const axutil_env_t *  env,
axis2_char_t *  global_id 
)

Set global identifier of security context token. After this method is called, ownership of global_id will be with security context token. Users should not free it.

Parameters:
sct Pointer to secuirty context token struct
env Pointer to environment struct
global_id Global identifier of security context token
Returns:
AXIS2_SUCCESS if success. AXIS2_FAILURE otherwise.

AXIS2_EXTERN axis2_status_t security_context_token_set_is_sc10 ( security_context_token_t *  sct,
const axutil_env_t *  env,
axis2_bool_t  is_sc10 
)

Set WS-SecureConversation version

Parameters:
sct Pointer to secuirty context token struct
env Pointer to environment struct
is_sc10 Boolean denoting whether we need security context token as in WS-SecConv 1.0
Returns:
AXIS2_SUCCESS if success. AXIS2_FAILURE otherwise.

AXIS2_EXTERN axis2_status_t security_context_token_set_local_identifier ( security_context_token_t *  sct,
const axutil_env_t *  env,
axis2_char_t *  local_id 
)

Set local identifier of security context token. After this method is called, ownership of local_id will be with security context token. Users should not free it.

Parameters:
sct Pointer to secuirty context token struct
env Pointer to environment struct
local_id Local identifier of security context token
Returns:
AXIS2_SUCCESS if success. AXIS2_FAILURE otherwise.

AXIS2_EXTERN axis2_status_t security_context_token_set_requested_proof_token ( security_context_token_t *  sct,
const axutil_env_t *  env,
axiom_node_t *  node 
)

Set shared secret of security context token from proof token. This proof token will be given by STS.

Parameters:
sct Pointer to secuirty context token struct
env Pointer to environment struct
node Pointer to proof token axiom node
Returns:
AXIS2_SUCCESS if success. AXIS2_FAILURE otherwise.

AXIS2_EXTERN axis2_status_t security_context_token_set_secret ( security_context_token_t *  sct,
const axutil_env_t *  env,
oxs_buffer_t buffer 
)

Set shared secret of security context token. After this method is called, ownership of the buffer will be with security context token. Users should not free it.

Parameters:
sct Pointer to secuirty context token struct
env Pointer to environment struct
buffer Pointer to shared secret
Returns:
AXIS2_SUCCESS if success. AXIS2_FAILURE otherwise.

AXIS2_EXTERN axis2_status_t security_context_token_set_token ( security_context_token_t *  sct,
const axutil_env_t *  env,
axiom_node_t *  node 
)

Set axiom representation of security context token

Parameters:
sct Pointer to secuirty context token struct
env Pointer to environment struct
node Pointer to security context token axiom node
Returns:
AXIS2_SUCCESS if success. AXIS2_FAILURE otherwise.

AXIS2_EXTERN axis2_status_t security_context_token_set_unattached_reference ( security_context_token_t *  sct,
const axutil_env_t *  env,
axiom_node_t *  node 
)

Set global identifier of security context token from unattached reference node.

Parameters:
sct Pointer to secuirty context token struct
env Pointer to environment struct
node Pointer to unattached reference axiom node
Returns:
AXIS2_SUCCESS if success. AXIS2_FAILURE otherwise.


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/axis2__key__type_8h-source.html0000644000076500007650000001136311202454500024445 0ustar shankarshankar Rampart/C: axis2_key_type.h Source File

axis2_key_type.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef AXIS2_KEY_TYPE_H
00019 #define AXIS2_KEY_TYPE_H
00020 
00021 
00027 #include <axis2_defines.h>
00028 #include <axutil_env.h>
00029 
00030 #ifdef __cplusplus
00031 extern "C"
00032 {
00033 #endif
00034 
00040     typedef enum
00041     {
00042         AXIS2_KEY_TYPE_UNKNOWN = 0,
00043         AXIS2_KEY_TYPE_PEM,
00044         AXIS2_KEY_TYPE_CERT,
00045         AXIS2_KEY_TYPE_DER,
00046                 AXIS2_KEY_TYPE_OTHER
00047     }axis2_key_type_t;
00048 
00049 
00050 
00052 #ifdef __cplusplus
00053 }
00054 #endif
00055 
00056 #endif

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__oxs__xml__key__info__builder.html0000644000076500007650000000644611202454500026552 0ustar shankarshankar Rampart/C: XML Eky Information Builder

XML Eky Information Builder
[OMXMLSecurity]


Enumerations

enum  oxs_key_info_build_pattern_t { OXS_KIBP_UNKNOWN = 0, OXS_KIBP_X509DATA_X509CERTIFICATE, OXS_KIBP_X509DATA_ISSUER_SERIAL }

Functions

AXIS2_EXTERN axis2_status_t oxs_xml_key_info_build (const axutil_env_t *env, axiom_node_t *parent, oxs_x509_cert_t *cert, oxs_key_info_build_pattern_t pattern)
AXIS2_EXTERN axis2_status_t oxs_xml_key_info_build_x509_data_x509_certificate (const axutil_env_t *env, axiom_node_t *parent, oxs_x509_cert_t *cert)
AXIS2_EXTERN axis2_status_t oxs_xml_key_info_build_x509_data_issuer_serial (const axutil_env_t *env, axiom_node_t *parent, oxs_x509_cert_t *cert)

Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/openssl__pkcs12_8h.html0000644000076500007650000001013311202454500022711 0ustar shankarshankar Rampart/C: openssl_pkcs12.h File Reference

openssl_pkcs12.h File Reference

Functions related to keys that are in pkcs12 format. More...

#include <openssl/rand.h>
#include <openssl/evp.h>
#include <openssl/pem.h>
#include <openssl/bio.h>
#include <openssl_constants.h>
#include <openssl_pkey.h>
#include <axis2_util.h>
#include <openssl/pkcs12.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN axis2_status_t openssl_pkcs12_load (const axutil_env_t *env, axis2_char_t *filename, PKCS12 **p12)
AXIS2_EXTERN axis2_status_t openssl_pkcs12_load_from_buffer (const axutil_env_t *env, axis2_char_t *buffer, PKCS12 **p12, int len)
AXIS2_EXTERN axis2_status_t openssl_pkcs12_parse (const axutil_env_t *env, axis2_char_t *password, PKCS12 *p12, EVP_PKEY **prvkey, X509 **cert, STACK_OF(X509)**ca)
AXIS2_EXTERN axis2_status_t openssl_pkcs12_free (const axutil_env_t *env, PKCS12 *p12)


Detailed Description

Functions related to keys that are in pkcs12 format.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/oxs__c14n_8h-source.html0000644000076500007650000001763511202454500023015 0ustar shankarshankar Rampart/C: oxs_c14n.h Source File

oxs_c14n.h

Go to the documentation of this file.
00001 /*
00002  * Copyright 2004,2005 The Apache Software Foundation.
00003  *
00004  * Licensed under the Apache License, Version 2.0 (the "License");
00005  * you may not use this file except in compliance with the License.
00006  * You may obtain a copy of the License at
00007  *
00008  *      http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  * Unless required by applicable law or agreed to in writing, software
00011  * distributed under the License is distributed on an "AS IS" BASIS,
00012  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  * See the License for the specific language governing permissions and
00014  * limitations under the License.
00015  */
00016 
00017 #ifndef OXS_C14N_H
00018 #define OXS_C14N_H
00019 
00031 #include <axis2_const.h>
00032 #include <axutil_error.h>
00033 #include <axutil_utils_defines.h>
00034 #include <axutil_utils.h>
00035 #include <axutil_env.h>
00036 #include <axutil_string.h>
00037 #include <axiom_document.h>
00038 #include <axutil_array_list.h>
00039 #include <axutil_stream.h>
00040 
00041 
00042 #ifdef __cplusplus
00043 extern "C"
00044 {
00045 #endif
00046     
00060     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00061     oxs_c14n_apply_stream_algo(
00062         const axutil_env_t *env,
00063         const axiom_document_t *doc,
00064         axutil_stream_t *stream,
00065         const axutil_array_list_t *ns_prefixes,
00066         const axiom_node_t *node,
00067         const axis2_char_t* algo
00068     );
00069 
00070 
00085     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00086     oxs_c14n_apply_algo(
00087         const axutil_env_t *env,
00088         const axiom_document_t *doc,
00089         axis2_char_t **outbuf,
00090         const axutil_array_list_t *ns_prefixes,
00091         const axiom_node_t *node,
00092         const axis2_char_t *algo
00093     );
00094 
00095 
00112     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00113     oxs_c14n_apply_stream(
00114         const axutil_env_t *env,
00115         const axiom_document_t *doc,
00116         axis2_bool_t comments,
00117         axutil_stream_t *stream,
00118         const axis2_bool_t exclusive,
00119         const axutil_array_list_t *ns_prefixes,
00120         const axiom_node_t *node
00121     );
00122 
00123 
00141     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00142     oxs_c14n_apply (
00143         const axutil_env_t *env,
00144         const axiom_document_t *doc,
00145         const axis2_bool_t comments,
00146         axis2_char_t **outbuf,
00147         const axis2_bool_t exclusive,
00148         const axutil_array_list_t *ns_prefixes,
00149         const axiom_node_t *node
00150     );
00151 #ifdef __cplusplus
00152 }
00154 #endif
00155 #endif  /* OXS_C14N_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__openssl__util.html0000644000076500007650000000557011202454500023550 0ustar shankarshankar Rampart/C: OpenSSL Utility

OpenSSL Utility
[OpenSSL wrapper]


Functions

AXIS2_EXTERN axis2_status_t openssl_generate_random_data (const axutil_env_t *env, oxs_buffer_t *buffer, int size)
AXIS2_EXTERN axis2_status_t openssl_populate_cipher_property (const axutil_env_t *env, openssl_cipher_property_t *cprop)
AXIS2_EXTERN EVP_CIPHER * openssl_get_evp_cipher_by_name (const axutil_env_t *env, axis2_char_t *cipher_name)

Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/oxs__buffer_8h-source.html0000644000076500007650000003244311202454500023513 0ustar shankarshankar Rampart/C: oxs_buffer.h Source File

oxs_buffer.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef OXS_BUFFER_H
00019 #define OXS_BUFFER_H
00020 
00021 
00027 #include <axis2_defines.h>
00028 #include <axutil_env.h>
00029 #include <axis2_util.h>
00030 #include <oxs_axiom.h>
00031 #include <oxs_error.h>
00032 #include <oxs_constants.h>
00033 #include <stdio.h>
00034 
00035 #ifdef __cplusplus
00036 extern "C"
00037 {
00038 #endif
00039 
00045 #define OXS_BUFFER_INITIAL_SIZE 1024
00046 
00052     typedef enum {
00053         oxs_alloc_mode_exact = 0,
00054         oxs_alloc_mode_double
00055     } oxs_AllocMode;
00056 
00057 
00059     typedef struct oxs_buffer oxs_buffer_t;
00060 
00067     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00068     oxs_buffer_free(
00069         oxs_buffer_t *buffer,
00070         const axutil_env_t *env
00071     );
00079     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00080     oxs_buffer_remove_head(
00081         oxs_buffer_t *buffer,
00082         const axutil_env_t *env,
00083         int size
00084     );
00092     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00093     oxs_buffer_remove_tail(
00094         oxs_buffer_t *buffer,
00095         const axutil_env_t *env,
00096         int size
00097     );
00106     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00107     oxs_buffer_populate(
00108         oxs_buffer_t *buffer,
00109         const axutil_env_t *env,
00110         unsigned char *data,
00111         int size
00112     );
00121     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00122     oxs_buffer_append(
00123         oxs_buffer_t *buffer,
00124         const axutil_env_t *env,
00125         unsigned char *data,
00126         int size
00127     );
00136     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00137     oxs_buffer_prepend(
00138         oxs_buffer_t *buffer,
00139         const axutil_env_t *env,
00140         unsigned char *data,
00141         int size
00142     );
00150     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00151     oxs_buffer_read_file(
00152         oxs_buffer_t *buffer,
00153         const axutil_env_t *env,
00154         const axis2_char_t *filename
00155     );
00163     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00164     oxs_buffer_set_size(
00165         oxs_buffer_t *buffer,
00166         const axutil_env_t *env,
00167         int size
00168     );
00176     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00177     oxs_buffer_set_max_size(
00178         oxs_buffer_t *buffer,
00179         const axutil_env_t *env,
00180         int size
00181     );
00188     AXIS2_EXTERN unsigned char* AXIS2_CALL
00189     oxs_buffer_get_data(
00190         oxs_buffer_t *buffer,
00191         const axutil_env_t *env
00192     );
00199     AXIS2_EXTERN int AXIS2_CALL
00200     oxs_buffer_get_size(
00201         oxs_buffer_t *buffer,
00202         const axutil_env_t *env
00203     );
00210     AXIS2_EXTERN int AXIS2_CALL
00211     oxs_buffer_get_max_size(
00212         oxs_buffer_t *buffer,
00213         const axutil_env_t *env
00214     );
00215 
00216     AXIS2_EXTERN oxs_buffer_t *AXIS2_CALL
00217     oxs_buffer_dup(oxs_buffer_t *buffer, const axutil_env_t *env);
00218 
00219     AXIS2_EXTERN oxs_buffer_t *AXIS2_CALL
00220     oxs_buffer_create(const axutil_env_t *env);
00221 
00222 
00224 #ifdef __cplusplus
00225 }
00226 #endif
00227 
00228 #endif                          /* OXS_BUFFER_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/trust__constants_8h.html0000644000076500007650000013257511202454500023337 0ustar shankarshankar Rampart/C: trust_constants.h File Reference

trust_constants.h File Reference

Holds constants for trust implementation. More...

#include <axutil_utils.h>

Go to the source code of this file.

Defines

#define TRUST_RST_CONTEXT   "Context"
#define TRUST_TOKEN_TYPE   "TokenType"
#define TRUST_REQUEST_TYPE   "RequestType"
#define TRUST_APPLIES_TO   "AppliesTo"
#define TRUST_CLAIMS   "Claims"
#define TRUST_CLAIMS_DIALECT   "Dialect"
#define TRUST_ENTROPY   "Entropy"
#define TRUST_BINARY_SECRET   "BinarySecret"
#define TRUST_LIFE_TIME   "LifeTime"
#define TRUST_LIFE_TIME_CREATED   "Created"
#define TRUST_LIFE_TIME_EXPIRES   "Expires"
#define TRUST_REQUEST_SECURITY_TOKEN   "RequestSecurityToken"
#define TRUST_REQUESTED_SECURITY_TOKEN   "RequestedSecurityToken"
#define TRUST_REQUEST_SECURITY_TOKEN_RESPONSE   "RequestSecurityTokenResponse"
#define TRUST_REQUESTED_PROOF_TOKEN   "RequestedProofToken"
#define TRUST_REQUEST_SECURITY_TOKEN_RESPONSE_COLLECTION   "RequestSecurityTokenResponseCollection"
#define TRUST_REQUESTED_TOKEN_CANCELED   "RequestedTokenCancelled"
#define TRUST_COMPUTED_KEY   "ComputedKey"
#define TRUST_REQUESTED_ATTACHED_REFERENCE   "RequestedAttachedReference"
#define TRUST_REQUESTED_UNATTACHED_REFERENCE   "RequestedUnattachedReference"
#define TRUST_SECURITY_TOKEN_REFERENCE   "SecurityTokenReference"
#define TRUST_ENCRYPTED_DATA   "EncryptedData"
#define TRUST_REQUESTED_TOKEN_CANCELED   "RequestedTokenCancelled"
#define TRUST_CANCEL_TARGET   "CancelTarget"
#define TRUST_URI   "URI"
#define TRUST_EPR   "EndpointReference"
#define TRUST_EPR_ADDRESS   "Address"
#define TRUST_STR_REFERENCE   "Reference"
#define TRUST_RENEW_TARGET   "RenewTarget"
#define TRUST_ALLOW_POSTDATING   "AllowPostdating"
#define TRUST_RENEWING   "Renewing"
#define TRUST_RENEW_ALLOW_ATTR   "Allow"
#define TRUST_RENEW_OK_ATTR   "OK"
#define TRUST_VALIDATION_STATUS   "Status"
#define TRUST_VALIDATION_CODE   "Code"
#define TRUST_VALIDATION_REASON   "Reason"
#define TRUST_CANCEL_TARGET   "CancelTarget"
#define ATTR_TYPE   "Type"
#define TRUST_BIN_SEC_TYPE_NONCE   "/Nonce"
#define TRUST_REQ_TYPE_ISSUE   "/Issue"
#define TRUST_REQ_TYPE_VALIDATE   "/Validate"
#define TRUST_REQ_TYPE_RENEW   "/Renew"
#define TRUST_REQ_TYPE_CANCEL   "/Cancel"
#define TRUST_RST_ACTION_ISSUE   "/RST/Issue"
#define TRUST_RST_ACTION_VALIDATE   "/RST/Validate"
#define TRUST_RST_ACTION_RENEW   "/RST/Renew"
#define TRUST_RST_ACTION_CANCEL   "/RST/Cancel"
#define TRUST_RST_ACTION_SCT   "/RST/SCT"
#define TRUST_RST_ACTION_CANCEL_SCT   "/RST/SCT/Cancel"
#define TRUST_KEY_TYPE_SYMM_KEY   "/SymmetricKey"
#define TRUST_KEY_TYPE_PUBLIC_KEY   "/PublicKey"
#define TRUST_KEY_TYPE_BEARER   "/Bearer"
#define TRUST_AUTHENTICATION_TYPE   "AuthenticationType"
#define TRUST_KEY_TYPE   "KeyType"
#define TRUST_KEY_SIZE   "KeySize"
#define TRUST_SIGNATURE_ALGO   "SignatureAlgorithm"
#define TRUST_ENCRYPTION_ALGO   "EncryptionAlgorithm"
#define TRUST_CANONICAL_ALGO   "CanonicalizationAlgorithm"
#define TRUST_COMPUTED_KEY_ALGO   "ComputedKeyAlgorithm"
#define TRUST_DESIRED_ENCRYPTION   "Encryption"
#define TRUST_PROOF_ENCRYPTION   "ProofEncryption"
#define TRUST_USE_KEY   "UseKey"
#define TRUST_SIGN_WITH   "SignWith"
#define TRUST_ENCRYPT_WITH   "EncryptWith"
#define TRUST_ATTR_USE_KEY_SIG   "Sig"
#define TRUST_DEFAULT_KEY_SIZE   256
#define TRUST_S11   "S11"
#define TRUST_S11_XMLNS   "http://schemas.xmlsoap.org/soap/envelope/"
#define TRUST_S12   "S12"
#define TRUST_S12_XMLNS   "http://www.w3.org/2003/05/soap-envelope"
#define TRUST_WSU   "wsu"
#define TRUST_WSU_XMLNS   "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
#define TRUST_WSSE   "wsse"
#define TRUST_WSSE_XMLNS   "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
#define TRUST_WST   "wst"
#define TRUST_DS   "ds"
#define TRUST_DS_XMLNS   "http://www.w3.org/2000/09/xmldsig#"
#define TRUST_XENC   "xenc"
#define TRUST_XENC_XMLNS   "http://www.w3.org/2001/04/xmlenc#"
#define TRUST_WSP   "wsp"
#define TRUST_WSP_XMLNS   "http://schemas.xmlsoap.org/ws/2004/09/policy"
#define TRUST_WSA   "wsa"
#define TRUST_WSA_XMLNS   "http://schemas.xmlsoap.org/ws/2004/08/addressing"
#define TRUST_XS   "xs"
#define TRUST_XS_XMLNS   "http://www.w3.org/2001/XMLSchema"
#define SECCONV_200502_REQUEST_ISSUE_ACTION   "http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT"
#define SECCONV_200502_REPLY_ISSUE_ACTION   "http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/SCT"
#define SECCONV_200502_REQUEST_AMEND_ACTION   "http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT/Amend"
#define SECCONV_200502_REPLY_AMEND_ACTION   "http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/SCT/Amend"
#define SECCONV_200502_REQUEST_RENEW_ACTION   "http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT/Renew"
#define SECCONV_200502_REPLY_RENEW_ACTION   "http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/SCT/Renew"
#define SECCONV_200502_REQUEST_CANCEL_ACTION   "http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT/Cancel"
#define SECCONV_200502_REPLY_CANCEL_ACTION   "http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/SCT/Cancel"
#define SECCONV_200512_REQUEST_ISSUE_ACTION   "http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/SCT"
#define SECCONV_200512_REPLY_ISSUE_ACTION   "http://docs.oasis-open.org/ws-sx/ws-trust/200512/RSTR/SCT"
#define SECCONV_200512_REQUEST_AMEND_ACTION   "http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/SCT/Amend"
#define SECCONV_200512_REPLY_AMEND_ACTION   "http://docs.oasis-open.org/ws-sx/ws-trust/200512/RSTR/SCT/Amend"
#define SECCONV_200512_REQUEST_RENEW_ACTION   "http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/SCT/Renew"
#define SECCONV_200512_REPLY_RENEW_ACTION   "http://docs.oasis-open.org/ws-sx/ws-trust/200512/RSTR/SCT/Renew"
#define SECCONV_200512_REQUEST_CANCEL_ACTION   "http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/SCT/Cancel"
#define SECCONV_200512_REPLY_CANCEL_ACTION   "http://docs.oasis-open.org/ws-sx/ws-trust/200512/RSTR/SCT/Cancel"
#define SECCONV_GLOBAL_ID_PREFIX   "urn:uuid:"
#define SECCONV_LOCAL_ID_PREFIX   "sctId"
#define TRUST_COMPUTED_KEY_PSHA1   "http://schemas.xmlsoap.org/ws/2005/02/trust/CK/PSHA1"
#define TRUST_COMPUTED_KEY_PSHA1_05_12   "http://docs.oasis-open.org/ws-sx/ws-trust/200512/CK/PSHA1"
#define TRUST_VERSION_INVALID   0
#define TRUST_VERSION_05_02   1
#define TRUST_VERSION_05_12   2
#define SECCONV_ACTION_INVALID   0
#define SECCONV_ACTION_ISSUE   1
#define SECCONV_ACTION_AMEND   2
#define SECCONV_ACTION_RENEW   3
#define SECCONV_ACTION_CANCEL   4
#define TRUST_WST_XMLNS_05_12   "http://docs.oasis-open.org/ws-sx/ws-trust/200512"
#define TRUST_WST_XMLNS_05_02   "http://schemas.xmlsoap.org/ws/2005/02/trust"


Detailed Description

Holds constants for trust implementation.


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__rampart__replay__detector.html0000644000076500007650000001452111202454500026076 0ustar shankarshankar Rampart/C: Replay Detector

Replay Detector
[Rampart Utilities]


Classes

struct  rampart_replay_detector_ops
struct  rampart_replay_detector

Defines

#define RAMPART_REPLAY_DETECTOR_IS_REPLAYED(replay_detector, env, msg_ctx, rampart_context)   ((replay_detector)->ops->is_replayed(replay_detector, env, msg_ctx, rampart_context))
#define RAMPART_REPLAY_DETECTOR_FREE(replay_detector, env)   ((replay_detector)->ops->free(replay_detector, env))

Typedefs

typedef struct
rampart_replay_detector_ops 
rampart_replay_detector_ops_t
typedef struct
rampart_replay_detector 
rampart_replay_detector_t

Functions

AXIS2_EXTERN axis2_status_t rampart_replay_detector_default (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, void *user_params)

Function Documentation

AXIS2_EXTERN axis2_status_t rampart_replay_detector_default ( const axutil_env_t *  env,
axis2_msg_ctx_t *  msg_ctx,
rampart_context_t *  rampart_context,
void *  user_params 
)

A linked list based implementation for replay detection. This doesnt require addressing headers to be present. If the user doesn't give any replay detection function, then this will be used.

Parameters:
env pointer to environment struct,Must not be NULL.
msg_ctx message context structure
rampart_context rampart context structure
user_params parameters given by user. (Not used in this method)
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/openssl__util_8h-source.html0000644000076500007650000001332111202454500024063 0ustar shankarshankar Rampart/C: openssl_util.h Source File

openssl_util.h

Go to the documentation of this file.
00001 /*
00002  *   Copyright 2003-2004 The Apache Software Foundation.
00003  *
00004  *   Licensed under the Apache License, Version 2.0 (the "License");
00005  *   you may not use this file except in compliance with the License.
00006  *   You may obtain a copy of the License at
00007  *
00008  *       http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  *   Unless required by applicable law or agreed to in writing, software
00011  *   distributed under the License is distributed on an "AS IS" BASIS,
00012  *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  *   See the License for the specific language governing permissions and
00014  *   limitations under the License.
00015  */
00016 
00017 #include<openssl/evp.h>
00018 #include<oxs_buffer.h>
00019 #include<openssl_cipher_property.h>
00020 
00025 #ifndef OPENSSL_UTIL_H
00026 #define OPENSSL_UTIL_H
00027 
00028 #ifdef __cplusplus
00029 extern "C" {
00030 #endif
00031 
00037     /*Generate a random sgtring.*/
00038     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00039     openssl_generate_random_data(const axutil_env_t *env, oxs_buffer_t *buffer, int size);
00040 
00041     /*Get the cipher property for a given cipher name
00042       @see openssl_cipher_property.h*/
00043     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00044     openssl_populate_cipher_property(const axutil_env_t *env, openssl_cipher_property_t *cprop);
00045 
00046     /*Get a cipher for a given name*/
00047     AXIS2_EXTERN EVP_CIPHER*  AXIS2_CALL
00048     openssl_get_evp_cipher_by_name(const axutil_env_t *env, axis2_char_t *cipher_name);
00049 
00050 
00051     /* @} */
00052 #ifdef __cplusplus
00053 }
00054 #endif
00055 
00056 #endif    /* OPENSSL_UTIL_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__rampart__handler__util.html0000644000076500007650000002441111202454500025362 0ustar shankarshankar Rampart/C: Handler Utilities

Handler Utilities
[Rampart Utilities]


Functions

AXIS2_EXTERN axiom_node_t * rampart_get_security_header (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axiom_soap_header_t *soap_header)
AXIS2_EXTERN void rampart_create_fault_envelope (const axutil_env_t *env, const axis2_char_t *sub_code, const axis2_char_t *reason_text, const axis2_char_t *detail_node_text, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN void * rampart_get_rampart_configuration (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axis2_char_t *param_name)
AXIS2_EXTERN axis2_bool_t rampart_is_rampart_engaged (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx)

Function Documentation

AXIS2_EXTERN void rampart_create_fault_envelope ( const axutil_env_t *  env,
const axis2_char_t *  sub_code,
const axis2_char_t *  reason_text,
const axis2_char_t *  detail_node_text,
axis2_msg_ctx_t *  msg_ctx 
)

Creates a SOAP fault based on params described below and store in msg_ctx

Parameters:
env pointer to environment struct
sub_code the text of the Subcode element of a SOAP fault message
reason_text the text in soapenv:Reason element
detail_node_text the text in the soapenv:Detail element
msg_ctx the msg_ctx
Returns:
void

AXIS2_EXTERN void* rampart_get_rampart_configuration ( const axutil_env_t *  env,
axis2_msg_ctx_t *  msg_ctx,
axis2_char_t *  param_name 
)

Get rampart configurations from the message context

Parameters:
env pointer to environment struct
msg_ctx message context
param_name name of the parameter of the configuration
Returns:
the loaded configuration params

AXIS2_EXTERN axiom_node_t* rampart_get_security_header ( const axutil_env_t *  env,
axis2_msg_ctx_t *  msg_ctx,
axiom_soap_header_t *  soap_header 
)

Get the security header from the header block

Parameters:
env pointer to environment struct
msg_ctx message context
soap_header header block
Returns:
security soap header node

AXIS2_EXTERN axis2_bool_t rampart_is_rampart_engaged ( const axutil_env_t *  env,
axis2_msg_ctx_t *  msg_ctx 
)

Check wether rampart is engaged or not

Parameters:
env pointer to environment struct
msg_ctx message context
Returns:
if engaged returns AXIS2_TRUE, else returns AXIS2_FALSE


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/globals_type.html0000644000076500007650000000527711202454500022006 0ustar shankarshankar Rampart/C: Class Members
 


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/rampart__saml__token_8h-source.html0000644000076500007650000002563611202454500025400 0ustar shankarshankar Rampart/C: rampart_saml_token.h Source File

rampart_saml_token.h

00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef RAMPART_SAML_TOKEN_H
00019 #define RAMPART_SAML_TOKEN_H
00020 
00021 #include <rampart_saml_token.h>
00022 #include <oxs_saml_token.h>
00023 #include <axutil_utils.h>
00024 #include <axiom.h>
00025 #include <axis2_msg_ctx.h>
00026 #include <oxs_key.h>
00027 #include <rp_property.h>
00028 
00029 #ifdef __cplusplus
00030 extern "C"
00031 {
00032 #endif
00033     
00034 /*
00035  * Rampart saml token subject confirmation types. Rampart support both holder 
00036  * of key and sender vouches methods of subject confiramtions.
00037  */
00038 typedef enum 
00039 {
00040     RAMPART_ST_CONFIR_TYPE_UNSPECIFIED = 0,
00041     RAMPART_ST_CONFIR_TYPE_SENDER_VOUCHES,
00042     RAMPART_ST_CONFIR_TYPE_HOLDER_OF_KEY
00043 } rampart_st_confir_type_t;
00044 
00045 typedef enum
00046 {
00047     RAMPART_ST_TYPE_UNSPECIFIED = 0,
00048     RAMPART_ST_TYPE_SIGNED_SUPPORTING_TOKEN,
00049     RAMPART_ST_TYPE_SIGNATURE_TOKEN,
00050     RAMPART_ST_TYPE_ENCRYPTION_TOKEN,
00051     RAMPART_ST_TYPE_PROTECTION_TOKEN
00052 } rampart_st_type_t;
00053 
00054 typedef struct rampart_saml_token_t rampart_saml_token_t;
00055 
00064 AXIS2_EXTERN rampart_saml_token_t *AXIS2_CALL
00065 rampart_saml_token_create(const axutil_env_t *env, axiom_node_t *assertion, 
00066                           rampart_st_confir_type_t type);
00074 AXIS2_EXTERN int AXIS2_CALL
00075 rampart_saml_token_free(rampart_saml_token_t *tok, const axutil_env_t *env);
00084 AXIS2_EXTERN int AXIS2_CALL
00085 rampart_saml_token_set_assertion(rampart_saml_token_t *tok, const axutil_env_t *env, 
00086                                  axiom_node_t *assertion);
00094 AXIS2_EXTERN axiom_node_t* AXIS2_CALL
00095 rampart_saml_token_get_assertion(rampart_saml_token_t *tok, const axutil_env_t *env);
00104 AXIS2_EXTERN int AXIS2_CALL
00105 rampart_saml_token_set_type(rampart_saml_token_t *tok, const axutil_env_t *env, 
00106                             rampart_st_confir_type_t type);
00114 AXIS2_EXTERN rampart_st_confir_type_t AXIS2_CALL
00115 rampart_saml_token_get_type(rampart_saml_token_t *tok, const axutil_env_t *env);
00124 AXIS2_EXTERN int AXIS2_CALL
00125 rampart_saml_token_set_key_value(rampart_saml_token_t *tok, const axutil_env_t *env, 
00126                                  oxs_key_t *key);
00134 AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00135 rampart_saml_token_get_str(rampart_saml_token_t *tok, const axutil_env_t *env);
00144 AXIS2_EXTERN int AXIS2_CALL
00145 rampart_saml_token_set_str(rampart_saml_token_t *tok, const axutil_env_t *env, 
00146                            axiom_node_t *str);
00156 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00157 rampart_saml_token_set_is_added_to_header(rampart_saml_token_t *tok, 
00158                                       const axutil_env_t *env,
00159                                       axis2_bool_t is_token_added);
00167 AXIS2_EXTERN axis2_bool_t AXIS2_CALL
00168 rampart_saml_token_is_added_to_header(rampart_saml_token_t *tok, 
00169                                       const axutil_env_t *env);
00179 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00180 rampart_saml_token_set_token_type(rampart_saml_token_t *tok,
00181                                                                   const axutil_env_t *env,
00182                                                                   rampart_st_type_t token_type);
00190 AXIS2_EXTERN rampart_st_type_t AXIS2_CALL
00191 rampart_saml_token_get_token_type(rampart_saml_token_t *tok,
00192                                                                   const axutil_env_t *env);
00193 
00194 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00195 rampart_saml_token_set_session_key(rampart_saml_token_t *tok, 
00196                                                                    const axutil_env_t *env,
00197                                                                    oxs_key_t *key);
00198 
00199 
00200 AXIS2_EXTERN oxs_key_t * AXIS2_CALL
00201 rampart_saml_token_get_session_key(rampart_saml_token_t *tok, 
00202                                                                    const axutil_env_t *env);
00203 #ifdef __cplusplus
00204 }
00205 #endif
00206 
00207 
00208 #endif 
00209 
00210 

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__oxs__signature.html0000644000076500007650000003503011202454500023714 0ustar shankarshankar Rampart/C: Signature

Signature
[OMXMLSecurity]


Functions

AXIS2_EXTERN axis2_status_t oxs_sig_sign_hmac_sha1 (const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, oxs_buffer_t *input, oxs_buffer_t *output)
AXIS2_EXTERN axis2_status_t oxs_sig_sign_rsa_sha1 (const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, oxs_buffer_t *input, oxs_buffer_t *output)
AXIS2_EXTERN axis2_status_t oxs_sig_sign (const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, oxs_buffer_t *input, oxs_buffer_t *output)
AXIS2_EXTERN axis2_status_t oxs_sig_verify (const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, axis2_char_t *content, axis2_char_t *signature)
AXIS2_EXTERN axis2_status_t oxs_sig_verify_hmac_sha1 (const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, axis2_char_t *content, axis2_char_t *signature)
AXIS2_EXTERN axis2_status_t oxs_sig_verify_rsa_sha1 (const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, axis2_char_t *content, axis2_char_t *signature)

Function Documentation

AXIS2_EXTERN axis2_status_t oxs_sig_sign ( const axutil_env_t *  env,
oxs_sign_ctx_t *  sign_ctx,
oxs_buffer_t input,
oxs_buffer_t output 
)

Signs a content placed in buf using the information available in the signature context . The result will be placed in the buffer . Note that the result is base64 encoded. pointer to environment struct the signature context input buffer output buffer

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_sig_sign_hmac_sha1 ( const axutil_env_t *  env,
oxs_sign_ctx_t *  sign_ctx,
oxs_buffer_t input,
oxs_buffer_t output 
)

Signs an input buffer using the HMAC-SHA1 algorithm. The secret will be taken form the signature context Result will be placed in output buffer pointer to environment struct the signature context input buffer output buffer

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_sig_sign_rsa_sha1 ( const axutil_env_t *  env,
oxs_sign_ctx_t *  sign_ctx,
oxs_buffer_t input,
oxs_buffer_t output 
)

Signs an input buffer using the RSA-SHA1 algorithm. Result will be placed in output buffer pointer to environment struct the signature context input buffer output buffer

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_sig_verify ( const axutil_env_t *  env,
oxs_sign_ctx_t *  sign_ctx,
axis2_char_t *  content,
axis2_char_t *  signature 
)

Verifies a with using the information available in the signature content . Note that the signature should be the base64 encoded value of a digital signature. pointer to environment struct the signature context the content that's signed the signature value

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_sig_verify_hmac_sha1 ( const axutil_env_t *  env,
oxs_sign_ctx_t *  sign_ctx,
axis2_char_t *  content,
axis2_char_t *  signature 
)

Verifies with using the information available in the signature content as per the HMA-SHA1 algorithm pointer to environment struct the signature context the content that's signed the signature value

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_sig_verify_rsa_sha1 ( const axutil_env_t *  env,
oxs_sign_ctx_t *  sign_ctx,
axis2_char_t *  content,
axis2_char_t *  signature 
)

Verifies with using the information available in the signature content as per the RSA-SHA1 algorithm pointer to environment struct the signature context the content that's signed the signature value

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/oxs__cipher_8h.html0000644000076500007650000000567011202454500022220 0ustar shankarshankar Rampart/C: oxs_cipher.h File Reference

oxs_cipher.h File Reference

Cipher related functions in OMXMLSecurity. More...

#include <axis2_defines.h>
#include <oxs_constants.h>
#include <openssl_cipher_property.h>
#include <axutil_env.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN
openssl_cipher_property_t
oxs_get_cipher_property_for_url (const axutil_env_t *env, axis2_char_t *url)
AXIS2_EXTERN axis2_char_t * oxs_get_cipher_name_for_url (const axutil_env_t *env, axis2_char_t *url)
AXIS2_EXTERN axis2_char_t * oxs_get_cipher_url_for_name (const axutil_env_t *env, axis2_char_t *name)


Detailed Description

Cipher related functions in OMXMLSecurity.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__rampart__sec__processed__result.html0000644000076500007650000000224511202454500027267 0ustar shankarshankar Rampart/C: Rampart_sec_processed_result

Rampart_sec_processed_result


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/globals_func.html0000644000076500007650000011100611202454500021744 0ustar shankarshankar Rampart/C: Class Members
 

- o -


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/rampart__signature_8h.html0000644000076500007650000000536211202454500023602 0ustar shankarshankar Rampart/C: rampart_signature.h File Reference

rampart_signature.h File Reference

sign a SOAP message More...

#include <axutil_utils_defines.h>
#include <axis2_defines.h>
#include <axutil_env.h>
#include <axiom_soap.h>
#include <axis2_msg_ctx.h>
#include <rampart_context.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN axis2_status_t rampart_sig_confirm_signature (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_node_t *sec_node)
AXIS2_EXTERN axis2_status_t rampart_sig_sign_message (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_soap_envelope_t *soap_envelope, axiom_node_t *sec_node, axutil_array_list_t *sign_parts_list)


Detailed Description

sign a SOAP message


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__openssl__crypt.html0000644000076500007650000001042011202454500023722 0ustar shankarshankar Rampart/C: OpenSSL Crypt

OpenSSL Crypt
[OpenSSL wrapper]


Functions

AXIS2_EXTERN int openssl_bc_crypt (const axutil_env_t *env, openssl_cipher_ctx_t *oc_ctx, oxs_buffer_t *input_buf, oxs_buffer_t *output_buf, int encrypt)

Function Documentation

AXIS2_EXTERN int openssl_bc_crypt ( const axutil_env_t *  env,
openssl_cipher_ctx_t oc_ctx,
oxs_buffer_t input_buf,
oxs_buffer_t output_buf,
int  encrypt 
)

Encrypt or decrypts data in the and place the result in the . This function works for block ciphers AES-128, AES-192, AES-256 and 3-DES The key and the cipher name must be specified in the cipher context. pointer to environment struct openssl block cipher context the input buffer to en/decrypt the output buffer to place en/decrypted result For encryption encrypt=OPENSSL_ENCRYPT and for decryption encrypt=OPENSSL_DECRYPT

Returns:
the length of the en/decrypted result OR -1 if failed


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/oxs__cipher_8h-source.html0000644000076500007650000001354311202454500023514 0ustar shankarshankar Rampart/C: oxs_cipher.h Source File

oxs_cipher.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef OXS_CIPHER_H
00019 #define OXS_CIPHER_H
00020 
00021 
00027 #include <axis2_defines.h>
00028 #include <oxs_constants.h>
00029 #include <openssl_cipher_property.h>
00030 #include <axutil_env.h>
00031 #ifdef __cplusplus
00032 extern "C"
00033 {
00034 #endif
00035 
00049     AXIS2_EXTERN openssl_cipher_property_t *AXIS2_CALL
00050     oxs_get_cipher_property_for_url(const axutil_env_t *env,
00051                                     axis2_char_t *url);
00052 
00059     AXIS2_EXTERN axis2_char_t* AXIS2_CALL
00060     oxs_get_cipher_name_for_url(const axutil_env_t *env,
00061                                 axis2_char_t *url);
00062 
00069     AXIS2_EXTERN axis2_char_t* AXIS2_CALL
00070     oxs_get_cipher_url_for_name(const axutil_env_t *env,
00071                                 axis2_char_t *name);
00072 
00074 #ifdef __cplusplus
00075 }
00076 #endif
00077 
00078 #endif                          /* OXS_CIPHER_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/rampart__authn__provider_8h.html0000644000076500007650000001156711202454500024775 0ustar shankarshankar Rampart/C: rampart_authn_provider.h File Reference

rampart_authn_provider.h File Reference

The authentication interface of rampart. Validates a username and password pair. More...

#include <axutil_param.h>
#include <axis2_defines.h>
#include <axutil_error.h>
#include <axutil_env.h>
#include <axutil_utils.h>
#include <axis2_msg_ctx.h>

Go to the source code of this file.

Classes

struct  rampart_authn_provider_ops
struct  rampart_authn_provider
#define RAMPART_AUTHN_PROVIDER_FREE(authn_provider, env)   ((authn_provider)->ops->free (authn_provider, env))
#define RAMPART_AUTHN_PROVIDER_CHECK_PASSWORD(authn_provider, env, msg_ctx, username, password)
#define RAMPART_AUTHN_PROVIDER_CHECK_PASSWORD_DIGEST(authn_provider, env, msg_ctx, username, nonce, nonce_length, digest)
typedef struct
rampart_authn_provider_ops 
rampart_authn_provider_ops_t
typedef struct
rampart_authn_provider 
rampart_authn_provider_t

Typedefs

typedef enum
rampart_authn_provider_status 
rampart_authn_provider_status_t

Enumerations

enum  rampart_authn_provider_status {
  RAMPART_AUTHN_PROVIDER_DENIED = 0, RAMPART_AUTHN_PROVIDER_GRANTED, RAMPART_AUTHN_PROVIDER_FOUND, RAMPART_AUTHN_PROVIDER_USER_FOUND,
  RAMPART_AUTHN_PROVIDER_USER_NOT_FOUND, RAMPART_AUTHN_PROVIDER_GENERAL_ERROR
}


Detailed Description

The authentication interface of rampart. Validates a username and password pair.


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/globals_func_0x73.html0000644000076500007650000001621211202454500022530 0ustar shankarshankar Rampart/C: Class Members
 

- s -


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/oxs__xml__key__info__builder_8h.html0000644000076500007650000000774311202454500025577 0ustar shankarshankar Rampart/C: oxs_xml_key_info_builder.h File Reference

oxs_xml_key_info_builder.h File Reference

Process elements available under ds:KeyInfo. More...

#include <axis2_defines.h>
#include <oxs_ctx.h>
#include <axutil_env.h>
#include <axiom_node.h>
#include <axiom_element.h>
#include <axutil_qname.h>

Go to the source code of this file.

Enumerations

enum  oxs_key_info_build_pattern_t { OXS_KIBP_UNKNOWN = 0, OXS_KIBP_X509DATA_X509CERTIFICATE, OXS_KIBP_X509DATA_ISSUER_SERIAL }

Functions

AXIS2_EXTERN axis2_status_t oxs_xml_key_info_build (const axutil_env_t *env, axiom_node_t *parent, oxs_x509_cert_t *cert, oxs_key_info_build_pattern_t pattern)
AXIS2_EXTERN axis2_status_t oxs_xml_key_info_build_x509_data_x509_certificate (const axutil_env_t *env, axiom_node_t *parent, oxs_x509_cert_t *cert)
AXIS2_EXTERN axis2_status_t oxs_xml_key_info_build_x509_data_issuer_serial (const axutil_env_t *env, axiom_node_t *parent, oxs_x509_cert_t *cert)


Detailed Description

Process elements available under ds:KeyInfo.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/oxs__constants_8h-source.html0000644000076500007650000013614311202454500024260 0ustar shankarshankar Rampart/C: oxs_constants.h Source File

oxs_constants.h

Go to the documentation of this file.
00001 /*
00002  * Copyright 2004,2005 The Apache Software Foundation.
00003  *
00004  * Licensed under the Apache License, Version 2.0 (the "License")" "
00005  * you may not use this file except in compliance with the License.
00006  * You may obtain a copy of the License at
00007  *
00008  *      http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  * Unless required by applicable law or agreed to in writing, software
00011  * distributed under the License is distributed on an "AS IS" BASIS,
00012  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  * See the License for the specific language governing permissions and
00014  * limitations under the License.
00015  */
00016 
00022 #ifndef OXS_CONSTANTS_H
00023 #define OXS_CONSTANTS_H
00024 
00025 #ifdef __cplusplus
00026 extern "C"
00027 {
00028 #endif
00029 
00040     /*Default values*/
00041     /*Key transfer algo*/
00042 #define OXS_DEFAULT_KT_ALGO_HREF    OXS_HREF_RSA_PKCS1
00043 #define OXS_DEFAULT_SYM_ALGO        OXS_HREF_AES_256_CBC
00044 #define OXS_STR_DEFAULT             OXS_STR_EMBEDDED
00045 
00046 
00047     /****************************************************************
00048        Global prefixes 
00049     ****************************************************************/
00050 #define OXS_XENC "xenc"
00051 #define OXS_DS "ds"
00052 #define OXS_WSSE "wsse"
00053 #define OXS_WSSE_11 "wsse11"
00054 #define OXS_WSU "wsu"
00055 #define OXS_WSC "wsc"
00056 #define OXS_WSSE_XMLNS      "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
00057 #define OXS_WSSE_11_XMLNS   "http://docs.oasis-open.org/wss/oasis-wss-wssecurity-secext-1.1.xsd"
00058 #define OXS_WSU_XMLNS "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
00059     /****************************************************************
00060         ID Prefixes
00061     ****************************************************************/
00062 #define OXS_ENCDATA_ID "EncDataID"
00063 #define OXS_ENCKEY_ID "EncKeyID"
00064 #define OXS_SIG_ID "SigID"
00065 #define OXS_CERT_ID "CertID"
00066 #define OXS_EMBEDDED_ID "EmbeddedID"
00067 #define OXS_DERIVED_ID "DKID"
00068 #define OXS_SIG_CONF_ID "SigConfID"
00069 #define OXS_LOCAL_REFERENCE_PREFIX "#"
00070 
00071     /****************************************************************
00072        Global namespaces 
00073     ****************************************************************/
00074 #define OXS_DSIG_NS                "http://www.w3.org/2000/09/xmldsig#"
00075 #define OXS_ENC_NS                 "http://www.w3.org/2001/04/xmlenc#"
00076 /*#define OXS_WSSE_NS                "http://schemas.xmlsoap.org/ws/2002/04/secext"*/
00077 #define OXS_WSSE_NS                "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
00078 #define OXS_WSC_NS_05_02 "http://schemas.xmlsoap.org/ws/2005/02/sc"
00079 #define OXS_WSC_NS_05_12 "http://docs.oasis-open.org/ws-sx/ws-secureconversation/200512"
00080 
00081     /****************************************************************
00082         DSig Nodes  
00083     ****************************************************************/
00084 #define OXS_NODE_SIGNATURE         "Signature"
00085 #define OXS_NODE_SIGNEDINFO        "SignedInfo"
00086 #define OXS_NODE_CANONICALIZATION_METHOD "CanonicalizationMethod"
00087 #define OXS_NODE_SIGNATURE_METHOD    "SignatureMethod"
00088 #define OXS_NODE_SIGNATURE_VALUE     "SignatureValue"
00089 #define OXS_NODE_DIGEST_METHOD       "DigestMethod"
00090 #define OXS_NODE_DIGEST_VALUE        "DigestValue"
00091 #define OXS_NODE_OBJECT             "Object"
00092 #define OXS_NODE_MANIFEST           "Manifest"
00093 #define OXS_NODE_SIGNATUREPROPERTIES "SignatureProperties"
00094 #define OXS_NODE_SIGNATURE_CONFIRMATION "SignatureConfirmation" /*SOAP 11*/
00095 
00096     /****************************************************************
00097        Encryption Nodes 
00098     ****************************************************************/
00099 #define OXS_NODE_ENCRYPTED_DATA             "EncryptedData"
00100 #define OXS_NODE_ENCRYPTION_METHOD          "EncryptionMethod"
00101 #define OXS_NODE_ENCRYPTION_PROPERTIES      "EncryptionProperties"
00102 #define OXS_NODE_ENCRYPTION_PROPERTY        "EncryptionProperty"
00103 #define OXS_NODE_CIPHER_DATA                "CipherData"
00104 #define OXS_NODE_CIPHER_VALUE               "CipherValue"
00105 #define OXS_NODE_CIPHER_REFERENCE           "CipherReference"
00106 #define OXS_NODE_REFERENCE_LIST             "ReferenceList"
00107 #define OXS_NODE_DATA_REFERENCE             "DataReference"
00108 #define OXS_NODE_KEY_REFERENCE              "KeyReference"
00109 #define OXS_NODE_CARRIED_KEYNAME            "CarriedKeyName"
00110 #define OXS_TYPE_ENC_CONTENT                "http://www.w3.org/2001/04/xmlenc#Content"
00111 #define OXS_TYPE_ENC_ELEMENT                "http://www.w3.org/2001/04/xmlenc#Element"
00112 
00113     /****************************************************************
00114        KeyInfo Nodes
00115     ****************************************************************/
00116 #define OXS_NODE_KEY_INFO               "KeyInfo"
00117 #define OXS_NODE_REFERENCE             "Reference"
00118 #define OXS_NODE_TRANSFORMS            "Transforms"
00119 #define OXS_NODE_TRANSFORM             "Transform"
00120 #define OXS_NODE_TRANSFORMATIONPARAMETERS   "TransformationParameters"
00121     /****************************************************************
00122         KeyInfo Nodes
00123     ****************************************************************/
00124 #define OXS_NODE_BINARY_SECURITY_TOKEN     "BinarySecurityToken"
00125 #define OXS_NODE_KEY_IDENTIFIER     "KeyIdentifier"
00126 #define OXS_NODE_SECURITY_TOKEN_REFRENCE    "SecurityTokenReference"
00127 #define OXS_NODE_EMBEDDED    "Embedded"
00128 
00129     /****************************************************************
00130         Secure Conversation Nodes
00131     ****************************************************************/
00132 #define OXS_NODE_DERIVED_KEY_TOKEN     "DerivedKeyToken"
00133 #define OXS_NODE_PROPERTIES "Properties"
00134 #define OXS_NODE_GENERATION "Generation"
00135 #define OXS_NODE_OFFSET "Offset"
00136 #define OXS_NODE_LENGTH "Length"
00137 #define OXS_NODE_LABEL "Label"
00138 #define OXS_NODE_NONCE "Nonce"
00139 #define OXS_NODE_SECURITY_CONTEXT_TOKEN "SecurityContextToken"
00140 #define OXS_NODE_IDENTIFIER "Identifier"
00141 #define OXS_VALUE_TYPE_SECURITY_CONTEXT_TOKEN_05_02 "http://schemas.xmlsoap.org/ws/2005/02/sc/sct"
00142 #define OXS_VALUE_TYPE_SECURITY_CONTEXT_TOKEN_05_12 "http://docs.oasis-open.org/ws-sx/ws-secureconversation/200512/sct"
00143 
00144 /************************
00145     SAML nodes
00146 *************************/
00147 #define OXS_NODE_SAML_ASSERTION  "Assertion"
00148 #define OXS_NODE_SAML_PREFIX    "saml"
00149 #define OXS_NODE_SAML_SUBJECT_CONFIRMATION_METHOD "ConfirmationMethod"
00150     /****************************************************************
00151         Attributes
00152     ****************************************************************/
00153 #define OXS_ATTR_ID            "Id"
00154 #define OXS_ATTR_URI           "URI"
00155 #define OXS_ATTR_TYPE          "Type"
00156 #define OXS_ATTR_MIMETYPE      "MimeType"
00157 #define OXS_ATTR_ENCODING      "Encoding"
00158 #define OXS_ATTR_ALGORITHM     "Algorithm"
00159 #define OXS_ATTR_FILTER        "Filter"
00160 #define OXS_ATTR_RECIPIENT     "Recipient"
00161 #define OXS_ATTR_TARGET        "Target"
00162 #define OXS_ATTR_ENCODING_TYPE  "EncodingType"
00163 #define OXS_ATTR_VALUE_TYPE     "ValueType"
00164 #define OXS_ATTR_VALUE     "Value"
00165 
00166 
00167     /****************************************************************
00168        AES 
00169     ****************************************************************/
00170 
00171 #define OXS_NAME_AES_128_CBC        "aes128-cbc"
00172 #define OXS_HREF_AES_128_CBC        "http://www.w3.org/2001/04/xmlenc#aes128-cbc"
00173 
00174 #define OXS_NAME_AES_192_CBC        "aes192-cbc"
00175 #define OXS_HREF_AES_192_CBC        "http://www.w3.org/2001/04/xmlenc#aes192-cbc"
00176 
00177 #define OXS_NAME_AES_256_CBC        "aes256-cbc"
00178 #define OXS_HREF_AES_256_CBC        "http://www.w3.org/2001/04/xmlenc#aes256-cbc"
00179 
00180 #define OXS_NAME_KW_AES_128         "kw-aes128"
00181 #define OXS_HREF_KW_AES_128         "http://www.w3.org/2001/04/xmlenc#kw-aes128"
00182 
00183 #define OXS_NAME_KW_AES_192         "kw-aes192"
00184 #define OXS_HREF_KW_AES_192         "http://www.w3.org/2001/04/xmlenc#kw-aes192"
00185 
00186 #define OXS_NAME_KW_AES_256         "kw-aes256"
00187 #define OXS_HREF_KW_AES_256         "http://www.w3.org/2001/04/xmlenc#kw-aes256"
00188 
00189     /****************************************************************
00190       BASE64 
00191     ****************************************************************/
00192 #define OXS_NAME_BASE64           "base64"
00193 #define OXS_HREF_BASE64           "http://www.w3.org/2000/09/xmldsig#base64"
00194 
00195 
00196     /****************************************************************
00197      DES 
00198     ****************************************************************/
00199 #define OXS_NAME_DES_KEY_VALUE       "des"
00200 
00201 #define OXS_NAME_DES3_CBC           "tripledes-cbc"
00202 #define OXS_HREF_DES3_CBC           "http://www.w3.org/2001/04/xmlenc#tripledes-cbc"
00203 
00204 #define OXS_NAME_KW_DES3            "kw-tripledes"
00205 #define OXS_HREF_KW_DES3            "http://www.w3.org/2001/04/xmlenc#kw-tripledes"
00206 
00207 
00208 
00209     /****************************************************************
00210         DSA 
00211     ****************************************************************/
00212 #define OXS_NAME_DSA_KEY_VALUE          "dsa"
00213 #define OXS_NODE_DSA_KEY_VALUE          "DSAKeyValue"
00214 #define OXS_HREF_DSA_KEY_VALUE          "http://www.w3.org/2000/09/xmldsig#DSAKeyValue"
00215 
00216 #define OXS_NAME_DSA_SHA1          "dsa-sha1"
00217 #define OXS_HREF_DSA_SHA1          "http://www.w3.org/2000/09/xmldsig#dsa-sha1"
00218 
00219     /****************************************************************
00220        HMAC
00221      ****************************************************************/
00222 #define OXS_NAME_HMAC_SHA1      "HmacSha1"
00223 #define OXS_HREF_HMAC_SHA1    "http://www.w3.org/2000/09/xmldsig#hmac-sha1"
00224 
00225     /****************************************************************
00226        EncryptedKey
00227     ****************************************************************/
00228 #define OXS_NAME_ENCRYPTED_KEY         "enc-key"
00229 #define OXS_NODE_ENCRYPTED_KEY         "EncryptedKey"
00230 #define OXS_HREF_ENCRYPTED_KEY         "http://www.w3.org/2001/04/xmlenc#EncryptedKey"
00231 
00232     /****************************************************************
00233        C14N
00234     ****************************************************************/
00235 
00236 #define OXS_HREF_XML_C14N                   "http://www.w3.org/TR/2001/REC-xml-c14n-20010315"
00237 #define OXS_HREF_XML_EXC_C14N     "http://www.w3.org/2001/10/xml-exc-c14n#"
00238 
00239 #define OXS_HREF_XML_C14N_WITH_COMMENTS         "http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"
00240 #define OXS_HREF_XML_EXC_C14N_WITH_COMMENTS "http://www.w3.org/2001/10/xml-exc-c14n#WithComments"
00241     /****************************************************************
00242        Transforms
00243     ****************************************************************/
00244 #define OXS_HREF_TRANSFORM_XML_EXC_C14N     OXS_HREF_XML_EXC_C14N
00245 #define OXS_HREF_TRANSFORM_STR_TRANSFORM     "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#STR-Transform"
00246 #define OXS_HREF_TRANSFORM_ENVELOPED_SIGNATURE "http://www.w3.org/2000/09/xmldsig#enveloped-signature"
00247 
00248     /****************************************************************
00249         KeyNAME
00250     ****************************************************************/
00251 #define OXS_NAME_KEY_NAME          "key-name"
00252 #define OXS_NODE_KEY_NAME          "KeyName"
00253 
00254 
00255     /****************************************************************
00256         KeyValue 
00257     ****************************************************************/
00258 #define OXS_NAME_KEY_VALUE         "key-value"
00259 #define OXS_NODE_KEY_VALUE         "KeyValue"
00260 
00261 
00262     /****************************************************************
00263         MD5 
00264     ****************************************************************/
00265 #define OXS_NAME_MD5              "md5"
00266 #define OXS_HREF_MD5              "http://www.w3.org/2001/04/xmldsig-more#md5"
00267 
00268     /****************************************************************
00269         RetrievalMethod
00270     ****************************************************************/
00271 #define OXS_NAME_RETRIEVAL_METHOD      "retrieval-method"
00272 #define OXS_NODE_RETRIEVAL_METHOD      "RetrievalMethod"
00273 
00274     /****************************************************************
00275         RSA 
00276     ****************************************************************/
00277 #define OXS_NAME_RSAKEY_VALUE          "rsa"
00278 #define OXS_NODE_RSAKEY_VALUE          "RSAKeyValue"
00279 #define OXS_HREF_RSAKEY_VALUE          "http://www.w3.org/2000/09/xmldsig#RSAKeyValue"
00280 
00281 #define OXS_NAME_RSA_MD5           "rsa-md5"
00282 #define OXS_HREF_RSA_MD5           "http://www.w3.org/2001/04/xmldsig-more#rsa-md5"
00283 
00284 #define OXS_NAME_RSA_RIPEMD160         "rsa-ripemd160"
00285 #define OXS_HREF_RSA_RIPEMD160         "http://www.w3.org/2001/04/xmldsig-more#rsa-ripemd160"
00286 
00287 #define OXS_NAME_RSA_SHA1          "rsa-sha1"
00288 #define OXS_HREF_RSA_SHA1          "http://www.w3.org/2000/09/xmldsig#rsa-sha1"
00289 
00290 #define OXS_NAME_RSA_SHA224        "rsa-sha224"
00291 #define OXS_HREF_RSA_SHA224        "http://www.w3.org/2001/04/xmldsig-more#rsa-sha224"
00292 
00293 #define OXS_NAME_RSA_SHA256        "rsa-sha256"
00294 #define OXS_HREF_RSA_SHA256        "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"
00295 
00296 #define OXS_NAME_RSA_SHA384        "rsa-sha384"
00297 #define OXS_HREF_RSA_SHA384        "http://www.w3.org/2001/04/xmldsig-more#rsa-sha384"
00298 
00299 #define OXS_NAME_RSA_SHA512        "rsa-sha512"
00300 #define OXS_HREF_RSA_SHA512        "http://www.w3.org/2001/04/xmldsig-more#rsa-sha512"
00301 
00302 #define OXS_NAME_RSA_PKCS1         "rsa-1_5"
00303 #define OXS_HREF_RSA_PKCS1         "http://www.w3.org/2001/04/xmlenc#rsa-1_5"
00304 
00305 #define OXS_NAME_RSA_OAEP          "rsa-oaep-mgf1p"
00306 #define OXS_HREF_RSA_OAEP          "http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p"
00307 #define OXS_NODE_RSA_OAEP_PARAMS        "OAEPparams"
00308 
00309 
00310     /****************************************************************
00311         SHA1 
00312     ****************************************************************/
00313 #define OXS_NAME_SHA1             "sha1"
00314 #define OXS_HREF_SHA1             "http://www.w3.org/2000/09/xmldsig#sha1"
00315 
00316 #define OXS_NAME_SHA224           "sha224"
00317 #define OXS_HREF_SHA224           "http://www.w3.org/2001/04/xmldsig-more#sha224"
00318 
00319 #define OXS_NAME_SHA256           "sha256"
00320 #define OXS_HREF_SHA256           "http://www.w3.org/2001/04/xmlenc#sha256"
00321 
00322 #define OXS_NAME_SHA384           "sha384"
00323 #define OXS_HREF_SHA384           "http://www.w3.org/2001/04/xmldsig-more#sha384"
00324 
00325 #define OXS_NAME_SHA512           "sha512"
00326 #define OXS_HREF_SHA512           "http://www.w3.org/2001/04/xmlenc#sha512"
00327 
00328 #define OXS_SC_DK_NAME_P_SHA1     "P_SHA-1"
00329 #define OXS_SC_DK_HREF_P_SHA1     "http://schemas.xmlsoap.org/ws/2005/02/sc/dk/p_sha1"
00330     /****************************************************************
00331         X509 
00332     ****************************************************************/
00333 #define OXS_NAME_X509_DATA         "x509"
00334 #define OXS_NODE_X509_DATA         "X509Data"
00335 #define OXS_HREF_X509_DATA         "http://www.w3.org/2000/09/xmldsig#X509Data"
00336 
00337 #define OXS_NODE_X509_CERTIFICATE      "X509Certificate"
00338 #define OXS_NODE_X509_CRL          "X509CRL"
00339 #define OXS_NODE_X509_SUBJECT_NAME      "X509SubjectName"
00340 #define OXS_NODE_X509_ISSUER_SERIAL     "X509IssuerSerial"
00341 #define OXS_NODE_X509_ISSUER_NAME       "X509IssuerName"
00342 #define OXS_NODE_X509_SERIAL_NUMBER     "X509SerialNumber"
00343 #define OXS_NODE_X509_SKI          "X509SKI"
00344 
00345 #define OXS_NAME_RAW_X509_CERT          "raw-x509-cert"
00346 #define OXS_HREF_RAW_X509_CERT          "http://www.w3.org/2000/09/xmldsig#rawX509Certificate"
00347 
00348 #define OXS_NAME_X509_STORE        "x509-store"
00349 
00350     /****************************************************************
00351         SOAP 1.1/1.2
00352     ****************************************************************/
00353 #define OXS_NODE_ENVELOPE         "Envelope"
00354 #define OXS_NODE_HEADER           "Header"
00355 #define OXS_NODE_BODY                 "Body"
00356 #define OXS_NODE_FAULT                "Fault"
00357 #define OXS_NODE_FAULT_CODE        "faultcode"
00358 #define OXS_NODE_FAULT_STRING              "faultstring"
00359 #define OXS_NODE_FAULT_ACTOR               "faultactor"
00360 #define OXS_NODE_FAULT_DETAIL              "detail"
00361 #define OXS_NODE_CODE             "Code"
00362 #define OXS_NODE_REASON           "Reason"
00363 #define OXS_NODE_NODE             "Node"
00364 #define OXS_NODE_ROLE             "Role"
00365 #define OXS_NODE_DETAIL           "Detail"
00366 #define OXS_NODE_VALUE            "Value"
00367 #define OXS_NODE_SUBCODE          "Subcode"
00368 #define OXS_NODE_TEXT             "Text"
00369 
00370 
00371 #define OXS_SOAP_FAULT_CODE_VERSION_MISMATCH     "VersionMismatch"
00372 #define OXS_SOAP_FAULT_CODE_MUST_UNDERSTAND      "MustUnderstand"
00373 #define OXS_SOAP_FAULT_CODE_CLIENT          "Client"
00374 #define OXS_SOAP_FAULT_CODE_SERVER          "Server"
00375 #define OXS_SOAP_FAULT_CODE_RECEIVER        "Receiver"
00376 #define OXS_SOAP_FAULT_CODE_SENDER          "Sender"
00377 #define OXS_SOAP_FAULT_DATA_ENCODNING_UNKNOWN    "DataEncodingUnknown"
00378 
00379     /****************************************************************
00380         Ext
00381     ****************************************************************/
00382 #define OXS_ENCODING_BASE64BINARY "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary"
00383 #define OXS_VALUE_X509V3 "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3"
00384 #define OXS_X509_SUBJ_KI "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509SubjectKeyIdentifier"
00385 #define OXS_X509_TUMBP_PRINT_SHA1 "http://docs.oasis-open.org/wss/oasis-wss-soap-message-security-1.1#ThumbprintSHA1"
00386 #define OXS_X509_ENCRYPTED_KEY_SHA1 "http://docs.oasis-open.org/wss/oasis-wss-soap-message-security-1.1#EncryptedKeySHA1"
00387     /****************************************************************
00388         ST References
00389     ****************************************************************/
00390 #define OXS_STR_DIRECT_REFERENCE "DirectReference"
00391 #define OXS_STR_KEY_IDENTIFIER  OXS_NODE_KEY_IDENTIFIER
00392 #define OXS_STR_EMBEDDED        OXS_NODE_EMBEDDED
00393 #define OXS_STR_ISSUER_SERIAL "IssuerSerial"
00394 #define OXS_STR_THUMB_PRINT "ThumbPrint"
00395 #define OXS_STR_EXTERNAL_URI "ExternalUri"
00396 #define OXS_STR_ENCRYPTED_KEY "Encryptedkey"
00397 
00398     
00399     /****************************************************************
00400         WS Security 1.1
00401     ****************************************************************/
00402 #define OXS_WSS_11_VALUE_TYPE_ENCRYPTED_KEY "http://docs.oasis-open.org/wss/oasis-wss-soap-message-security-1.1#EncryptedKey"
00403 #define OXS_NODE_ENCRYPTED_HEADER "EncryptedHeader"
00404     /*************************************************************************/
00405 
00406 
00408 #ifdef __cplusplus
00409 }
00410 #endif
00411 
00412 #endif /* OXS_CONSTANTS_H*/

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/trust__context_8h-source.html0000644000076500007650000002336111202454500024275 0ustar shankarshankar Rampart/C: trust_context.h Source File

trust_context.h

Go to the documentation of this file.
00001 
00002 /*
00003  * Licensed to the Apache Software Foundation (ASF) under one or more
00004  * contributor license agreements.  See the NOTICE file distributed with
00005  * this work for additional information regarding copyright ownership.
00006  * The ASF licenses this file to You under the Apache License, Version 2.0
00007  * (the "License"); you may not use this file except in compliance with
00008  * the License.  You may obtain a copy of the License at
00009  *
00010  *      http://www.apache.org/licenses/LICENSE-2.0
00011  *
00012  * Unless required by applicable law or agreed to in writing, software
00013  * distributed under the License is distributed on an "AS IS" BASIS,
00014  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00015  * See the License for the specific language governing permissions and
00016  * limitations under the License.
00017  */
00018 
00019 #ifndef TRUST_CONTEXT_H
00020 #define TRUST_CONTEXT_H
00021 
00027 #include <stdio.h>
00028 #include <stdlib.h>
00029 #include <axutil_utils.h>
00030 #include <axutil_string.h>
00031 #include <axutil_base64.h>
00032 #include <axiom_soap.h>
00033 #include <axiom.h>
00034 #include <axis2_msg_ctx.h>
00035 #include <axis2_addr.h>
00036 #include <trust_constants.h>
00037 #include <trust_rst.h>
00038 #include <trust_rstr.h>
00039 
00040 #ifdef __cplusplus
00041 extern "C"
00042 {
00043 #endif
00044 
00045     typedef struct trust_context trust_context_t;
00046 
00047     AXIS2_EXTERN trust_context_t *AXIS2_CALL
00048                 trust_context_create(
00049             const axutil_env_t * env);
00050     
00051     AXIS2_EXTERN  void AXIS2_CALL
00052             trust_context_free( 
00053                         trust_context_t *trust_context,           
00054             const axutil_env_t * env);
00055     
00056     
00057     /*Populate RST_CONTEXT : Often used in STS/IP side */
00058         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00059         trust_context_process_rst(
00060                 trust_context_t *trust_context,
00061         const axutil_env_t * env,    
00062         axis2_msg_ctx_t * in_msg_ctx);
00063     
00064     /*Populate RSTR_CONTEXT : Often used in Token Requestor side*/
00065     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00066         trust_context_process_rstr(
00067                 trust_context_t *trust_context,
00068         const axutil_env_t * env,
00069         axis2_msg_ctx_t * in_msg_ctx);
00070     
00071     /*Build RST Node from created RST_CONTEXT */
00072     AXIS2_EXTERN axiom_node_t* AXIS2_CALL
00073         trust_context_build_rst_node(
00074                 trust_context_t *trust_context,
00075         const axutil_env_t * env);
00076     
00077     /*Build RSTR Node from created RSTR_CONTEXT */
00078     AXIS2_EXTERN axiom_node_t* AXIS2_CALL
00079         trust_context_build_rstr_node(
00080                 trust_context_t *trust_context,
00081         const axutil_env_t * env);
00082     
00083     
00084     /*Get Populated RST_CONTEXT */
00085     AXIS2_EXTERN trust_rst_t* AXIS2_CALL
00086         trust_context_get_rst(
00087                 trust_context_t *trust_context,
00088         const axutil_env_t * env);
00089     
00090     /*Get Populated RSTR_CONTEXT */
00091     AXIS2_EXTERN trust_rstr_t* AXIS2_CALL
00092         trust_context_get_rstr(
00093                 trust_context_t *trust_context,
00094         const axutil_env_t * env);
00095     
00096     /*Set RST_CONTEXT */
00097     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00098     trust_context_set_rst(
00099                 trust_context_t *trust_context,
00100         const axutil_env_t * env,    
00101         trust_rst_t *rst);
00102     
00103     /*Set RSTR_CONTEXT */
00104     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00105         trust_context_set_rstr(
00106                 trust_context_t *trust_context,
00107         const axutil_env_t * env,
00108         trust_rstr_t *rstr);
00109     
00110     
00111  
00112     
00113 #ifdef __cplusplus
00114 }
00115 #endif
00116 #endif                          /*TRUST_CONTEXT_H */

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/rampart__sec__header__builder_8h-source.html0000644000076500007650000001401511202454500027160 0ustar shankarshankar Rampart/C: rampart_sec_header_builder.h Source File

rampart_sec_header_builder.h

Go to the documentation of this file.
00001 /*
00002  *   Copyright 2003-2004 The Apache Software Foundation.
00003  *
00004  *   Licensed under the Apache License, Version 2.0 (the "License");
00005  *   you may not use this file except in compliance with the License.
00006  *   You may obtain a copy of the License at
00007  *
00008  *       http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  *   Unless required by applicable law or agreed to in writing, software
00011  *   distributed under the License is distributed on an "AS IS" BASIS,
00012  *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  *   See the License for the specific language governing permissions and
00014  *   limitations under the License.
00015  */
00016 
00017 #include <axutil_utils_defines.h>
00018 #include <axis2_defines.h>
00019 #include <axutil_env.h>
00020 #include <axiom_soap.h>
00021 #include <axis2_msg_ctx.h>
00022 #include <rampart_context.h>
00023 #include <oxs_asym_ctx.h>
00024 #include <oxs_xml_encryption.h>
00036 #ifndef RAMPART_SEC_HEADER_BUILDER_H
00037 #define RAMPART_SEC_HEADER_BUILDER_H
00038 
00039 #ifdef __cplusplus
00040 extern "C" {
00041 #endif
00042 
00050     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00051     rampart_shb_build_message(const axutil_env_t *env,
00052                               axis2_msg_ctx_t *msg_ctx,
00053                               rampart_context_t *context,
00054                               axiom_soap_envelope_t *soap_envelope);
00064     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00065     rampart_shb_ensure_sec_header_order(const axutil_env_t *env,
00066         axis2_msg_ctx_t *msg_ctx,
00067         rampart_context_t *rampart_context,
00068         axiom_node_t* sec_node);
00069 
00070     /* @} */
00071 #ifdef __cplusplus
00072 }
00073 #endif
00074 
00075 #endif    /* !RAMPART_SEC_HEADER_BUILDER_H */

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/oxs__iv_8h.html0000644000076500007650000000511511202454500021356 0ustar shankarshankar Rampart/C: oxs_iv.h File Reference

oxs_iv.h File Reference

Initial Vector related functionalities. More...

#include <axis2_defines.h>
#include <oxs_constants.h>
#include <openssl_constants.h>
#include <axutil_env.h>

Go to the source code of this file.

Defines

#define OXS_IV_DEFAULT   OPENSSL_DEFAULT_IV16

Functions

AXIS2_EXTERN axis2_char_t * oxs_iv_generate_for_algo (const axutil_env_t *env, axis2_char_t *key_algo)


Detailed Description

Initial Vector related functionalities.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/openssl__pem_8h.html0000644000076500007650000000734611202454500022403 0ustar shankarshankar Rampart/C: openssl_pem.h File Reference

openssl_pem.h File Reference

Funcitons related to keys that are in PEM format. More...

#include <openssl/rand.h>
#include <openssl/evp.h>
#include <openssl/pem.h>
#include <openssl/bio.h>
#include <openssl_constants.h>
#include <openssl_pkey.h>
#include <axis2_util.h>
#include <openssl/pkcs12.h>
#include <oxs_error.h>

Go to the source code of this file.

Enumerations

enum  openssl_pem_pkey_type_t { OPENSSL_PEM_PKEY_TYPE_PRIVATE_KEY = 0, OPENSSL_PEM_PKEY_TYPE_PUBLIC_KEY, OPENSSL_PEM_PKEY_TYPE_UNKNOWN }

Functions

AXIS2_EXTERN axis2_status_t openssl_pem_buf_read_pkey (const axutil_env_t *env, axis2_char_t *b64_encoded_buf, axis2_char_t *password, openssl_pem_pkey_type_t type, EVP_PKEY **pkey)
AXIS2_EXTERN axis2_status_t openssl_pem_read_pkey (const axutil_env_t *env, axis2_char_t *filename, axis2_char_t *password, openssl_pem_pkey_type_t type, EVP_PKEY **pkey)


Detailed Description

Funcitons related to keys that are in PEM format.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/rampart__token__processor_8h.html0000644000076500007650000000724211202454500025156 0ustar shankarshankar Rampart/C: rampart_token_processor.h File Reference

rampart_token_processor.h File Reference

Token processing of rampart. More...

#include <axis2_util.h>
#include <axis2_defines.h>
#include <axutil_utils_defines.h>
#include <axutil_env.h>
#include <axiom_node.h>
#include <oxs_x509_cert.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN axis2_status_t rampart_token_process_security_token_reference (const axutil_env_t *env, axiom_node_t *st_ref_node, axiom_node_t *scope_node, oxs_x509_cert_t *cert)
AXIS2_EXTERN axis2_status_t rampart_token_process_direct_ref (const axutil_env_t *env, axiom_node_t *ref_node, axiom_node_t *scope_node, oxs_x509_cert_t *cert)
AXIS2_EXTERN axis2_status_t rampart_token_process_embedded (const axutil_env_t *env, axiom_node_t *embed_node, oxs_x509_cert_t *cert)
AXIS2_EXTERN axis2_status_t rampart_token_process_key_identifier (const axutil_env_t *env, axiom_node_t *ki_node, oxs_x509_cert_t *cert)
AXIS2_EXTERN axis2_status_t rampart_token_process_x509_data (const axutil_env_t *env, axiom_node_t *x509_data_node, oxs_x509_cert_t *cert)


Detailed Description

Token processing of rampart.


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/rampart__sec__header__processor_8h.html0000644000076500007650000000542111202454500026254 0ustar shankarshankar Rampart/C: rampart_sec_header_processor.h File Reference

rampart_sec_header_processor.h File Reference

Processes a message depending on it's security related claims. More...

#include <axutil_utils_defines.h>
#include <axis2_defines.h>
#include <axutil_env.h>
#include <axiom_soap.h>
#include <axis2_msg_ctx.h>
#include <oxs_asym_ctx.h>
#include <oxs_xml_encryption.h>
#include <rampart_context.h>
#include <oxs_key_mgr.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN axis2_status_t rampart_shp_process_sec_header (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_soap_envelope_t *soap_envelope, axiom_node_t *sec_node)


Detailed Description

Processes a message depending on it's security related claims.


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/oxs__transform_8h.html0000644000076500007650000001773211202454500022763 0ustar shankarshankar Rampart/C: oxs_transform.h File Reference

oxs_transform.h File Reference

The class representing a single step of transformation. For example a Cannonicalization. More...

#include <axis2_defines.h>
#include <axutil_env.h>
#include <axiom_node.h>

Go to the source code of this file.

Typedefs

typedef oxs_tr_dtype_t(* oxs_transform_tr_func )(const axutil_env_t *env, void *input, oxs_tr_dtype_t input_dtype, void **output)
typedef struct oxs_transform_t oxs_transform_t

Enumerations

enum  oxs_tr_dtype_t { OXS_TRANSFORM_TYPE_UNKNOWN = 0, OXS_TRANSFORM_TYPE_CHAR, OXS_TRANSFORM_TYPE_NODE, OXS_TRANSFORM_TYPE_NODE_ARRAY_LIST }

Functions

AXIS2_EXTERN oxs_transform_t * oxs_transform_create (const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_transform_free (oxs_transform_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_transform_get_id (const oxs_transform_t *transform, const axutil_env_t *env)
AXIS2_EXTERN oxs_tr_dtype_t oxs_transform_get_input_data_type (const oxs_transform_t *transform, const axutil_env_t *env)
AXIS2_EXTERN oxs_tr_dtype_t oxs_transform_get_output_data_type (const oxs_transform_t *transform, const axutil_env_t *env)
AXIS2_EXTERN oxs_transform_tr_func oxs_transform_get_transform_function (const oxs_transform_t *transform, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_transform_set_id (oxs_transform_t *transform, const axutil_env_t *env, axis2_char_t *id)
AXIS2_EXTERN axis2_status_t oxs_transform_set_input_data_type (oxs_transform_t *transform, const axutil_env_t *env, oxs_tr_dtype_t input_data_type)
AXIS2_EXTERN axis2_status_t oxs_transform_set_output_data_type (oxs_transform_t *transform, const axutil_env_t *env, oxs_tr_dtype_t output_data_type)
AXIS2_EXTERN axis2_status_t oxs_transform_set_transform_func (oxs_transform_t *transform, const axutil_env_t *env, oxs_transform_tr_func transform_func)


Detailed Description

The class representing a single step of transformation. For example a Cannonicalization.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/oxs__xml__key__processor_8h.html0000644000076500007650000001137411202454500025011 0ustar shankarshankar Rampart/C: oxs_xml_key_processor.h File Reference

oxs_xml_key_processor.h File Reference

Process elements available under ds:KeyInfo. More...

#include <axis2_defines.h>
#include <oxs_ctx.h>
#include <axutil_env.h>
#include <axiom_node.h>
#include <axiom_element.h>
#include <axutil_qname.h>
#include <oxs_x509_cert.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN axis2_status_t oxs_xml_key_process_X509SKI (const axutil_env_t *env, axiom_node_t *X509SKI_node, oxs_x509_cert_t *cert)
AXIS2_EXTERN axis2_status_t oxs_xml_key_process_X509SubjectName (const axutil_env_t *env, axiom_node_t *X509_subj_name_node, oxs_x509_cert_t *cert)
AXIS2_EXTERN axis2_status_t oxs_xml_key_process_X509IssuerSerial (const axutil_env_t *env, axiom_node_t *X509_issuer_serial_node, oxs_x509_cert_t *cert)
AXIS2_EXTERN axis2_status_t oxs_xml_key_process_X509Certificate (const axutil_env_t *env, axiom_node_t *X509_cert_node, oxs_x509_cert_t *cert)
AXIS2_EXTERN axis2_status_t oxs_xml_key_process_X509Data (const axutil_env_t *env, axiom_node_t *X509_data_node, oxs_x509_cert_t *cert)


Detailed Description

Process elements available under ds:KeyInfo.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__rampart__signature.html0000644000076500007650000001575711202454500024567 0ustar shankarshankar Rampart/C: Signature

Signature
[Rampart Utilities]


Functions

AXIS2_EXTERN axis2_status_t rampart_sig_confirm_signature (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_node_t *sec_node)
AXIS2_EXTERN axis2_status_t rampart_sig_sign_message (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_soap_envelope_t *soap_envelope, axiom_node_t *sec_node, axutil_array_list_t *sign_parts_list)

Function Documentation

AXIS2_EXTERN axis2_status_t rampart_sig_confirm_signature ( const axutil_env_t *  env,
axis2_msg_ctx_t *  msg_ctx,
rampart_context_t *  rampart_context,
axiom_node_t *  sec_node 
)

Build the signature confirmation element in the security header

Parameters:
env pointer to environment struct
msg_ctx message context
rampart_context The rampart context
sec_node The security element
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t rampart_sig_sign_message ( const axutil_env_t *  env,
axis2_msg_ctx_t *  msg_ctx,
rampart_context_t *  rampart_context,
axiom_soap_envelope_t *  soap_envelope,
axiom_node_t *  sec_node,
axutil_array_list_t *  sign_parts_list 
)

Sign a message depending on the security policies

Parameters:
env pointer to environment struct
msg_ctx message context
rampart_context The rampart context
soap_envelope The SOAP envelope
sec_node The security element
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/openssl__cipher__property_8h-source.html0000644000076500007650000003033511202454500026467 0ustar shankarshankar Rampart/C: openssl_cipher_property.h Source File

openssl_cipher_property.h

Go to the documentation of this file.
00001 /*
00002  *   Copyright 2003-2004 The Apache Software Foundation.
00003  *
00004  *   Licensed under the Apache License, Version 2.0 (the "License");
00005  *   you may not use this file except in compliance with the License.
00006  *   You may obtain a copy of the License at
00007  *
00008  *       http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  *   Unless required by applicable law or agreed to in writing, software
00011  *   distributed under the License is distributed on an "AS IS" BASIS,
00012  *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  *   See the License for the specific language governing permissions and
00014  *   limitations under the License.
00015  */
00016 
00017 #include<openssl/evp.h>
00018 #include<oxs_buffer.h>
00019 
00024 #ifndef OPENSSL_CIPHER_PROPERTY_H
00025 #define OPENSSL_CIPHER_PROPERTY_H
00026 
00033 #ifdef __cplusplus
00034 extern "C" {
00035 #endif
00036 
00037 
00039     typedef struct openssl_cipher_property_t openssl_cipher_property_t;
00040 
00041 
00048     EVP_CIPHER * AXIS2_CALL
00049     openssl_cipher_property_get_cipher(
00050         const openssl_cipher_property_t *cprop,
00051         const axutil_env_t *env);
00052 
00059     axis2_char_t * AXIS2_CALL
00060     openssl_cipher_property_get_name(
00061         const openssl_cipher_property_t *cprop,
00062         const axutil_env_t *env);
00063 
00071     axis2_char_t * AXIS2_CALL
00072     openssl_cipher_property_get_url(
00073         const openssl_cipher_property_t *cprop,
00074         const axutil_env_t *env);
00075 
00082     int AXIS2_CALL
00083     openssl_cipher_property_get_key_size(
00084         const openssl_cipher_property_t *cprop,
00085         const axutil_env_t *env);
00086 
00093     int AXIS2_CALL
00094     openssl_cipher_property_get_block_size(
00095         const openssl_cipher_property_t *cprop,
00096         const axutil_env_t *env);
00097 
00104     int AXIS2_CALL
00105     openssl_cipher_property_get_iv_size(
00106         const openssl_cipher_property_t *cprop,
00107         const axutil_env_t *env);
00108 
00116     axis2_status_t AXIS2_CALL
00117     openssl_cipher_property_set_cipher(
00118         openssl_cipher_property_t *cprop,
00119         const axutil_env_t *env,
00120         EVP_CIPHER *cipher);
00121 
00129     axis2_status_t AXIS2_CALL
00130     openssl_cipher_property_set_name(
00131         openssl_cipher_property_t *cprop,
00132         const axutil_env_t *env,
00133         axis2_char_t *name);
00134 
00142     axis2_status_t AXIS2_CALL
00143     openssl_cipher_property_set_url(
00144         openssl_cipher_property_t *cprop,
00145         const axutil_env_t *env,
00146         axis2_char_t *url);
00147 
00155     axis2_status_t AXIS2_CALL
00156     openssl_cipher_property_set_key_size(
00157         openssl_cipher_property_t *cprop,
00158         const axutil_env_t *env,
00159         int   key_size);
00160 
00161 
00169     axis2_status_t AXIS2_CALL
00170     openssl_cipher_property_set_block_size(
00171         openssl_cipher_property_t *cprop,
00172         const axutil_env_t *env,
00173         int  block_size);
00174 
00182     axis2_status_t AXIS2_CALL
00183     openssl_cipher_property_set_iv_size(
00184         openssl_cipher_property_t *cprop,
00185         const axutil_env_t *env,
00186         int   iv_size);
00187 
00194     axis2_status_t AXIS2_CALL
00195     openssl_cipher_property_free(openssl_cipher_property_t * cprop, 
00196         const axutil_env_t *env);
00197 
00198 
00204     AXIS2_EXTERN openssl_cipher_property_t *AXIS2_CALL
00205     openssl_cipher_property_create(const axutil_env_t *env);
00206 
00209 #ifdef __cplusplus
00210 }
00211 #endif
00212 
00213 #endif    /* OPENSSL_CIPHER_PROPERTY_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/openssl__hmac_8h.html0000644000076500007650000001023111202454500022515 0ustar shankarshankar Rampart/C: openssl_hmac.h File Reference

openssl_hmac.h File Reference

HMAC function implementations. Supports SHA1. More...

#include <openssl/sha.h>
#include <openssl/hmac.h>
#include <axutil_utils_defines.h>
#include <axis2_defines.h>
#include <axutil_env.h>
#include <oxs_buffer.h>
#include <oxs_key.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN axis2_status_t openssl_hmac_sha1 (const axutil_env_t *env, oxs_key_t *secret, oxs_buffer_t *input, oxs_buffer_t *output)
AXIS2_EXTERN axis2_status_t openssl_p_sha1 (const axutil_env_t *env, oxs_key_t *secret, axis2_char_t *label, axis2_char_t *seed, oxs_key_t *derived_key)
AXIS2_EXTERN axis2_status_t openssl_p_hash (const axutil_env_t *env, unsigned char *secret, unsigned int secret_len, unsigned char *seed, unsigned int seed_len, unsigned char *output, unsigned int output_len)


Detailed Description

HMAC function implementations. Supports SHA1.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__rampart__crypto__util.html0000644000076500007650000000236011202454500025264 0ustar shankarshankar Rampart/C: Rampart Crypto Util

Rampart Crypto Util
[Rampart Utilities]


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__rampart__sec__header__builder.html0000644000076500007650000001444311202454500026643 0ustar shankarshankar Rampart/C: Security Header Builder

Security Header Builder
[Rampart Utilities]


Functions

AXIS2_EXTERN axis2_status_t rampart_shb_build_message (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *context, axiom_soap_envelope_t *soap_envelope)
AXIS2_EXTERN axis2_status_t rampart_shb_ensure_sec_header_order (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_node_t *sec_node)

Function Documentation

AXIS2_EXTERN axis2_status_t rampart_shb_build_message ( const axutil_env_t *  env,
axis2_msg_ctx_t *  msg_ctx,
rampart_context_t *  context,
axiom_soap_envelope_t *  soap_envelope 
)

Build a message depending on configurations.

Parameters:
env pointer to environment struct
msg_ctx message context
soap_envelope the SOAP envelope
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t rampart_shb_ensure_sec_header_order ( const axutil_env_t *  env,
axis2_msg_ctx_t *  msg_ctx,
rampart_context_t *  rampart_context,
axiom_node_t *  sec_node 
)

After building the SOPA message as per the policy, this function will re-order the header elements of the SOAP message to make sure that the processing doesnt fail.

Parameters:
env pointer to environment struct
msg_ctx message context
rampart_context The Rampart Context
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/group__rampart__policy__validator.html0000644000076500007650000000754311202454500026263 0ustar shankarshankar Rampart/C: PolicyValidator

PolicyValidator
[Rampart Utilities]


Functions

AXIS2_EXTERN axis2_status_t rampart_pv_validate_sec_header (const axutil_env_t *env, rampart_context_t *rampart_context, axiom_node_t *sec_node, axis2_msg_ctx_t *msg_ctx)

Function Documentation

AXIS2_EXTERN axis2_status_t rampart_pv_validate_sec_header ( const axutil_env_t *  env,
rampart_context_t *  rampart_context,
axiom_node_t *  sec_node,
axis2_msg_ctx_t *  msg_ctx 
)

Validate security policies, those cannot be checked on the fly

Parameters:
env pointer to environment struct
rampart_context the Rampart Context
sec_node The security element
msg_ctx message context
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/rampart__handler__util_8h-source.html0000644000076500007650000001125111202454500025702 0ustar shankarshankar Rampart/C: rampart_handler_util.h Source File

rampart_handler_util.h

Go to the documentation of this file.
00001 
00019 #include <axiom_soap_header.h>
00020 #include <axis2_msg_ctx.h>
00021 
00022 #ifndef RAMPART_HANDLER_UTIL_H
00023 #define RAMPART_HANDLER_UTIL_H
00024 
00035 #ifdef __cplusplus
00036 extern "C"
00037 {
00038 #endif
00039 
00047     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00048     rampart_get_security_header(
00049         const axutil_env_t *env,
00050         axis2_msg_ctx_t *msg_ctx,
00051         axiom_soap_header_t *soap_header);
00052 
00062     AXIS2_EXTERN void AXIS2_CALL
00063     rampart_create_fault_envelope(
00064         const axutil_env_t *env,
00065         const axis2_char_t *sub_code,
00066         const axis2_char_t *reason_text,
00067         const axis2_char_t *detail_node_text,
00068         axis2_msg_ctx_t *msg_ctx);
00069 
00077     AXIS2_EXTERN void *AXIS2_CALL
00078     rampart_get_rampart_configuration(
00079         const axutil_env_t *env,
00080         axis2_msg_ctx_t *msg_ctx,
00081         axis2_char_t *param_name);
00082 
00089     AXIS2_EXTERN axis2_bool_t AXIS2_CALL
00090     rampart_is_rampart_engaged(
00091         const axutil_env_t *env,
00092         axis2_msg_ctx_t *msg_ctx);
00093 
00095 #ifdef __cplusplus
00096 }
00097 #endif
00098 
00099 
00100 #endif /*RAMPART_HANDLER_UTIL_H*/

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/oxs__x509__cert_8h-source.html0000644000076500007650000003442711202454500024127 0ustar shankarshankar Rampart/C: oxs_x509_cert.h Source File

oxs_x509_cert.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef OXS_X509_CERT
00019 #define OXS_X509_CERT
00020 
00021 
00027 #include <axis2_defines.h>
00028 #include <axutil_env.h>
00029 #include <axiom_node.h>
00030 #include <openssl_pkey.h>
00031 
00032 #ifdef __cplusplus
00033 extern "C"
00034 {
00035 #endif
00036 
00044     typedef struct oxs_x509_cert_t oxs_x509_cert_t;
00045 
00051     AXIS2_EXTERN oxs_x509_cert_t *AXIS2_CALL
00052     oxs_x509_cert_create( const axutil_env_t *env);
00053 
00060     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00061     oxs_x509_cert_free(oxs_x509_cert_t *x509_cert,
00062                        const axutil_env_t *env);
00063 
00064     /*Getters*/
00071     AXIS2_EXTERN int AXIS2_CALL
00072     oxs_x509_cert_get_serial_number(oxs_x509_cert_t *x509_cert,
00073                                     const axutil_env_t *env);
00074 
00081     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00082     oxs_x509_cert_get_subject(oxs_x509_cert_t *x509_cert,
00083                               const axutil_env_t *env);
00084 
00091     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00092     oxs_x509_cert_get_issuer(oxs_x509_cert_t *x509_cert,
00093                              const axutil_env_t *env);
00094 
00101     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00102     oxs_x509_cert_get_key_identifier(oxs_x509_cert_t *x509_cert,
00103                                      const axutil_env_t *env);
00104 
00111     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00112     oxs_x509_cert_get_fingerprint(oxs_x509_cert_t *x509_cert,
00113                                   const axutil_env_t *env);
00114 
00121     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00122     oxs_x509_cert_get_date(oxs_x509_cert_t *x509_cert,
00123                            const axutil_env_t *env);
00124 
00131     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00132     oxs_x509_cert_get_hash(oxs_x509_cert_t *x509_cert,
00133                            const axutil_env_t *env);
00134 
00142     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00143     oxs_x509_cert_get_data(oxs_x509_cert_t *x509_cert,
00144                            const axutil_env_t *env);
00145 
00152     AXIS2_EXTERN openssl_pkey_t *AXIS2_CALL
00153     oxs_x509_cert_get_public_key(oxs_x509_cert_t *x509_cert,
00154                                  const axutil_env_t *env);
00155 
00156     /*Setters*/
00164     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00165     oxs_x509_cert_set_serial_number(oxs_x509_cert_t *x509_cert,
00166                                     const axutil_env_t *env,
00167                                     int value);
00168 
00176     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00177     oxs_x509_cert_set_issuer(oxs_x509_cert_t *x509_cert,
00178                              const axutil_env_t *env,
00179                              axis2_char_t *value);
00180 
00188     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00189     oxs_x509_cert_set_key_identifier(oxs_x509_cert_t *x509_cert,
00190                                      const axutil_env_t *env,
00191                                      axis2_char_t *value);
00192 
00200     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00201     oxs_x509_cert_set_subject(oxs_x509_cert_t *x509_cert,
00202                               const axutil_env_t *env,
00203                               axis2_char_t *value);
00204 
00212     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00213     oxs_x509_cert_set_fingerprint(oxs_x509_cert_t *x509_cert,
00214                                   const axutil_env_t *env,
00215                                   axis2_char_t *value);
00216 
00224     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00225     oxs_x509_cert_set_date(oxs_x509_cert_t *x509_cert,
00226                            const axutil_env_t *env,
00227                            axis2_char_t *value);
00228 
00236     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00237     oxs_x509_cert_set_hash(oxs_x509_cert_t *x509_cert,
00238                            const axutil_env_t *env,
00239                            axis2_char_t *value);
00240 
00249     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00250     oxs_x509_cert_set_data(oxs_x509_cert_t *x509_cert,
00251                            const axutil_env_t *env,
00252                            axis2_char_t *value);
00253 
00261     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00262     oxs_x509_cert_set_public_key(oxs_x509_cert_t *x509_cert,
00263                                  const axutil_env_t *env,
00264                                  openssl_pkey_t *public_key);
00272     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00273     oxs_x509_cert_copy_to(oxs_x509_cert_t *x509_cert,
00274                           const axutil_env_t *env,
00275                           oxs_x509_cert_t *to);
00276 
00277         AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00278     oxs_x509_cert_get_common_name(oxs_x509_cert_t *x509_cert,
00279                                           const axutil_env_t *env);
00280     
00281     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00282     oxs_x509_cert_set_common_name(oxs_x509_cert_t *x509_cert,
00283                 const axutil_env_t *env,
00284                 axis2_char_t *common_name);
00286 #ifdef __cplusplus
00287 }
00288 #endif
00289 
00290 #endif                          /* OXS_X509_CERT */

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/openssl__constants_8h.html0000644000076500007650000002044111202454500023625 0ustar shankarshankar Rampart/C: openssl_constants.h File Reference

openssl_constants.h File Reference

Constants for the openssl wrapper. More...

#include <axis2_util.h>

Go to the source code of this file.

Defines

#define OPENSSL_ENCRYPT   1
#define OPENSSL_DECRYPT   0
#define OPENSSL_LEAVE_UNCHANGED   -1
#define OPENSSL_EVP_des_ede3_cbc   "EVP_des_ede3_cbc"
#define OPENSSL_EVP_aes_128_cbc   "EVP_aes_128_cbc"
#define OPENSSL_EVP_aes_192_cbc   "EVP_aes_192_cbc"
#define OPENSSL_EVP_aes_256_cbc   "EVP_aes_256_cbc"
#define OPENSSL_HMAC_SHA1   "HmacSha1"
#define OPENSSL_HMAC_SHA1_KEY_LEN   32
#define OPENSSL_RSA_ENCRYPTION   "rsaEncryption"
#define OPENSSL_RSA_PKCS1_PADDING   "RSA_PKCS1_PADDING"
#define OPENSSL_RSA_PKCS1_OAEP_PADDING   "RSA_PKCS1_OAEP_PADDING"
#define OPENSSL_DEFAULT_IV8   "01234567"
#define OPENSSL_DEFAULT_IV16   "0123456701234567"
#define OPENSSL_DEFAULT_IV24   "012345670123456701234567"
#define OPENSSL_DEFAULT_LABEL_FOR_PSHA1   "WS-SecureConversation"
#define OPENSSL_DEFAULT_KEY_LEN_FOR_PSHA1   32
#define OPENSSL_DEFAULT_KEY_OFFSET_FOR_PSHA1   0


Detailed Description

Constants for the openssl wrapper.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/html/oxs__iv_8h-source.html0000644000076500007650000001230411202454500022652 0ustar shankarshankar Rampart/C: oxs_iv.h Source File

oxs_iv.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef OXS_IV_H
00019 #define OXS_IV_H
00020 
00021 
00032 #include <axis2_defines.h>
00033 #include <oxs_constants.h>
00034 #include <openssl_constants.h>
00035 #include <axutil_env.h>
00036 
00037 #ifdef __cplusplus
00038 extern "C"
00039 {
00040 #endif
00041 
00042 
00043 #define OXS_IV_DEFAULT    OPENSSL_DEFAULT_IV16
00044 
00051     AXIS2_EXTERN axis2_char_t* AXIS2_CALL
00052     oxs_iv_generate_for_algo(const axutil_env_t *env,
00053                              axis2_char_t *key_algo);
00054 
00055 
00056 
00058 #ifdef __cplusplus
00059 }
00060 #endif
00061 
00062 #endif                          /* OXS_IV_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/docs/api/doxygenconf0000644000076500007650000014223111202454500017726 0ustar shankarshankar# Doxyfile 1.4.2 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project # # All text after a hash (#) is considered a comment and will be ignored # The format is: # TAG = value [value, ...] # For lists items can also be appended using: # TAG += value [value, ...] # Values that contain spaces should be placed between quotes (" ") #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- # The PROJECT_NAME tag is a single word (or a sequence of words surrounded # by quotes) that should identify the project. PROJECT_NAME = Rampart/C # The PROJECT_NUMBER tag can be used to enter a project or revision number. # This could be handy for archiving the generated documentation or # if some version control system is used. PROJECT_NUMBER = 1.3.0 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. # If a relative path is entered, it will be relative to the location # where doxygen was started. If left blank the current directory will be used. OUTPUT_DIRECTORY = ./ # If the CREATE_SUBDIRS tag is set to YES, then doxygen will create # 4096 sub-directories (in 2 levels) under the output directory of each output # format and will distribute the generated files over these directories. # Enabling this option can be useful when feeding doxygen a huge amount of # source files, where putting all generated files in the same directory would # otherwise cause performance problems for the file system. CREATE_SUBDIRS = NO # The OUTPUT_LANGUAGE tag is used to specify the language in which all # documentation generated by doxygen is written. Doxygen will use this # information to generate all constant output in the proper language. # The default language is English, other supported languages are: # Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, # Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese, # Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian, # Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, # Swedish, and Ukrainian. OUTPUT_LANGUAGE = English # This tag can be used to specify the encoding used in the generated output. # The encoding is not always determined by the language that is chosen, # but also whether or not the output is meant for Windows or non-Windows users. # In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES # forces the Windows encoding (this is the default for the Windows binary), # whereas setting the tag to NO uses a Unix-style encoding (the default for # all platforms other than Windows). USE_WINDOWS_ENCODING = NO # If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will # include brief member descriptions after the members that are listed in # the file and class documentation (similar to JavaDoc). # Set to NO to disable this. BRIEF_MEMBER_DESC = YES # If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend # the brief description of a member or function before the detailed description. # Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the # brief descriptions will be completely suppressed. REPEAT_BRIEF = YES # This tag implements a quasi-intelligent brief description abbreviator # that is used to form the text in various listings. Each string # in this list, if found as the leading text of the brief description, will be # stripped from the text and the result after processing the whole list, is # used as the annotated text. Otherwise, the brief description is used as-is. # If left blank, the following values are used ("$name" is automatically # replaced with the name of the entity): "The $name class" "The $name widget" # "The $name file" "is" "provides" "specifies" "contains" # "represents" "a" "an" "the" ABBREVIATE_BRIEF = # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then # Doxygen will generate a detailed section even if there is only a brief # description. ALWAYS_DETAILED_SEC = NO # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all # inherited members of a class in the documentation of that class as if those # members were ordinary class members. Constructors, destructors and assignment # operators of the base classes will not be shown. INLINE_INHERITED_MEMB = NO # If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full # path before files name in the file list and in the header files. If set # to NO the shortest path that makes the file name unique will be used. FULL_PATH_NAMES = NO # If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag # can be used to strip a user-defined part of the path. Stripping is # only done if one of the specified strings matches the left-hand part of # the path. The tag can be used to show relative paths in the file list. # If left blank the directory from which doxygen is run is used as the # path to strip. STRIP_FROM_PATH = # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of # the path mentioned in the documentation of a class, which tells # the reader which header file to include in order to use a class. # If left blank only the name of the header file containing the class # definition is used. Otherwise one should specify the include paths that # are normally passed to the compiler using the -I flag. STRIP_FROM_INC_PATH = # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter # (but less readable) file names. This can be useful is your file systems # doesn't support long names like on DOS, Mac, or CD-ROM. SHORT_NAMES = NO # If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen # will interpret the first line (until the first dot) of a JavaDoc-style # comment as the brief description. If set to NO, the JavaDoc # comments will behave just like the Qt-style comments (thus requiring an # explicit @brief command for a brief description. JAVADOC_AUTOBRIEF = NO # The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen # treat a multi-line C++ special comment block (i.e. a block of //! or /// # comments) as a brief description. This used to be the default behaviour. # The new default is to treat a multi-line C++ comment block as a detailed # description. Set this tag to YES if you prefer the old behaviour instead. MULTILINE_CPP_IS_BRIEF = NO # If the DETAILS_AT_TOP tag is set to YES then Doxygen # will output the detailed description near the top, like JavaDoc. # If set to NO, the detailed description appears after the member # documentation. DETAILS_AT_TOP = NO # If the INHERIT_DOCS tag is set to YES (the default) then an undocumented # member inherits the documentation from any documented member that it # re-implements. INHERIT_DOCS = YES # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC # tag is set to YES, then doxygen will reuse the documentation of the first # member in the group (if any) for the other members of the group. By default # all members of a group must be documented explicitly. DISTRIBUTE_GROUP_DOC = NO # If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce # a new page for each member. If set to NO, the documentation of a member will # be part of the file/class/namespace that contains it. SEPARATE_MEMBER_PAGES = NO # The TAB_SIZE tag can be used to set the number of spaces in a tab. # Doxygen uses this value to replace tabs by spaces in code fragments. TAB_SIZE = 8 # This tag can be used to specify a number of aliases that acts # as commands in the documentation. An alias has the form "name=value". # For example adding "sideeffect=\par Side Effects:\n" will allow you to # put the command \sideeffect (or @sideeffect) in the documentation, which # will result in a user-defined paragraph with heading "Side Effects:". # You can put \n's in the value part of an alias to insert newlines. ALIASES = # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C # sources only. Doxygen will then generate output that is more tailored for C. # For instance, some of the names that are used will be different. The list # of all members will be omitted, etc. OPTIMIZE_OUTPUT_FOR_C = NO # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources # only. Doxygen will then generate output that is more tailored for Java. # For instance, namespaces will be presented as packages, qualified scopes # will look different, etc. OPTIMIZE_OUTPUT_JAVA = NO # Set the SUBGROUPING tag to YES (the default) to allow class member groups of # the same type (for instance a group of public functions) to be put as a # subgroup of that type (e.g. under the Public Functions section). Set it to # NO to prevent subgrouping. Alternatively, this can be done per class using # the \nosubgrouping command. SUBGROUPING = YES #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- # If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in # documentation are documented, even if no documentation was available. # Private class members and static file members will be hidden unless # the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES EXTRACT_ALL = NO # If the EXTRACT_PRIVATE tag is set to YES all private members of a class # will be included in the documentation. EXTRACT_PRIVATE = NO # If the EXTRACT_STATIC tag is set to YES all static members of a file # will be included in the documentation. EXTRACT_STATIC = NO # If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) # defined locally in source files will be included in the documentation. # If set to NO only classes defined in header files are included. EXTRACT_LOCAL_CLASSES = YES # This flag is only useful for Objective-C code. When set to YES local # methods, which are defined in the implementation section but not in # the interface are included in the documentation. # If set to NO (the default) only methods in the interface are included. EXTRACT_LOCAL_METHODS = NO # If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all # undocumented members of documented classes, files or namespaces. # If set to NO (the default) these members will be included in the # various overviews, but no documentation section is generated. # This option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_MEMBERS = NO # If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all # undocumented classes that are normally visible in the class hierarchy. # If set to NO (the default) these classes will be included in the various # overviews. This option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_CLASSES = NO # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all # friend (class|struct|union) declarations. # If set to NO (the default) these declarations will be included in the # documentation. HIDE_FRIEND_COMPOUNDS = NO # If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any # documentation blocks found inside the body of a function. # If set to NO (the default) these blocks will be appended to the # function's detailed documentation block. HIDE_IN_BODY_DOCS = NO # The INTERNAL_DOCS tag determines if documentation # that is typed after a \internal command is included. If the tag is set # to NO (the default) then the documentation will be excluded. # Set it to YES to include the internal documentation. INTERNAL_DOCS = NO # If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate # file names in lower-case letters. If set to YES upper-case letters are also # allowed. This is useful if you have classes or files whose names only differ # in case and if your file system supports case sensitive file names. Windows # and Mac users are advised to set this option to NO. CASE_SENSE_NAMES = YES # If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen # will show members with their full class and namespace scopes in the # documentation. If set to YES the scope will be hidden. HIDE_SCOPE_NAMES = NO # If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen # will put a list of the files that are included by a file in the documentation # of that file. SHOW_INCLUDE_FILES = YES # If the INLINE_INFO tag is set to YES (the default) then a tag [inline] # is inserted in the documentation for inline members. INLINE_INFO = YES # If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen # will sort the (detailed) documentation of file and class members # alphabetically by member name. If set to NO the members will appear in # declaration order. SORT_MEMBER_DOCS = YES # If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the # brief documentation of file, namespace and class members alphabetically # by member name. If set to NO (the default) the members will appear in # declaration order. SORT_BRIEF_DOCS = NO # If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be # sorted by fully-qualified names, including namespaces. If set to # NO (the default), the class list will be sorted only by class name, # not including the namespace part. # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. # Note: This option applies only to the class list, not to the # alphabetical list. SORT_BY_SCOPE_NAME = NO # The GENERATE_TODOLIST tag can be used to enable (YES) or # disable (NO) the todo list. This list is created by putting \todo # commands in the documentation. GENERATE_TODOLIST = YES # The GENERATE_TESTLIST tag can be used to enable (YES) or # disable (NO) the test list. This list is created by putting \test # commands in the documentation. GENERATE_TESTLIST = YES # The GENERATE_BUGLIST tag can be used to enable (YES) or # disable (NO) the bug list. This list is created by putting \bug # commands in the documentation. GENERATE_BUGLIST = YES # The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or # disable (NO) the deprecated list. This list is created by putting # \deprecated commands in the documentation. GENERATE_DEPRECATEDLIST= YES # The ENABLED_SECTIONS tag can be used to enable conditional # documentation sections, marked by \if sectionname ... \endif. ENABLED_SECTIONS = # The MAX_INITIALIZER_LINES tag determines the maximum number of lines # the initial value of a variable or define consists of for it to appear in # the documentation. If the initializer consists of more lines than specified # here it will be hidden. Use a value of 0 to hide initializers completely. # The appearance of the initializer of individual variables and defines in the # documentation can be controlled using \showinitializer or \hideinitializer # command in the documentation regardless of this setting. MAX_INITIALIZER_LINES = 30 # Set the SHOW_USED_FILES tag to NO to disable the list of files generated # at the bottom of the documentation of classes and structs. If set to YES the # list will mention the files that were used to generate the documentation. SHOW_USED_FILES = YES # If the sources in your project are distributed over multiple directories # then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy # in the documentation. SHOW_DIRECTORIES = YES # The FILE_VERSION_FILTER tag can be used to specify a program or script that # doxygen should invoke to get the current version for each file (typically from the # version control system). Doxygen will invoke the program by executing (via # popen()) the command , where is the value of # the FILE_VERSION_FILTER tag, and is the name of an input file # provided by doxygen. Whatever the progam writes to standard output # is used as the file version. See the manual for examples. FILE_VERSION_FILTER = #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- # The QUIET tag can be used to turn on/off the messages that are generated # by doxygen. Possible values are YES and NO. If left blank NO is used. QUIET = NO # The WARNINGS tag can be used to turn on/off the warning messages that are # generated by doxygen. Possible values are YES and NO. If left blank # NO is used. WARNINGS = YES # If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings # for undocumented members. If EXTRACT_ALL is set to YES then this flag will # automatically be disabled. WARN_IF_UNDOCUMENTED = YES # If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for # potential errors in the documentation, such as not documenting some # parameters in a documented function, or documenting parameters that # don't exist or using markup commands wrongly. WARN_IF_DOC_ERROR = YES # This WARN_NO_PARAMDOC option can be abled to get warnings for # functions that are documented, but have no documentation for their parameters # or return value. If set to NO (the default) doxygen will only warn about # wrong or incomplete parameter documentation, but not about the absence of # documentation. WARN_NO_PARAMDOC = NO # The WARN_FORMAT tag determines the format of the warning messages that # doxygen can produce. The string should contain the $file, $line, and $text # tags, which will be replaced by the file and line number from which the # warning originated and the warning text. Optionally the format may contain # $version, which will be replaced by the version of the file (if it could # be obtained via FILE_VERSION_FILTER) WARN_FORMAT = "$file:$line: $text" # The WARN_LOGFILE tag can be used to specify a file to which warning # and error messages should be written. If left blank the output is written # to stderr. WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- # The INPUT tag can be used to specify the files and/or directories that contain # documented source files. You may enter file names like "myfile.cpp" or # directories like "/usr/src/myproject". Separate the files or directories # with spaces. INPUT = ../../include/ # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank the following patterns are tested: # *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx # *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm FILE_PATTERNS = # The RECURSIVE tag can be used to turn specify whether or not subdirectories # should be searched for input files as well. Possible values are YES and NO. # If left blank NO is used. RECURSIVE = NO # The EXCLUDE tag can be used to specify files and/or directories that should # excluded from the INPUT source files. This way you can easily exclude a # subdirectory from a directory tree whose root is specified with the INPUT tag. EXCLUDE = # The EXCLUDE_SYMLINKS tag can be used select whether or not files or # directories that are symbolic links (a Unix filesystem feature) are excluded # from the input. EXCLUDE_SYMLINKS = NO # If the value of the INPUT tag contains directories, you can use the # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude # certain files from those directories. EXCLUDE_PATTERNS = # The EXAMPLE_PATH tag can be used to specify one or more files or # directories that contain example code fragments that are included (see # the \include command). EXAMPLE_PATH = # If the value of the EXAMPLE_PATH tag contains directories, you can use the # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank all files are included. EXAMPLE_PATTERNS = # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be # searched for input files to be used with the \include or \dontinclude # commands irrespective of the value of the RECURSIVE tag. # Possible values are YES and NO. If left blank NO is used. EXAMPLE_RECURSIVE = NO # The IMAGE_PATH tag can be used to specify one or more files or # directories that contain image that are included in the documentation (see # the \image command). IMAGE_PATH = # The INPUT_FILTER tag can be used to specify a program that doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program # by executing (via popen()) the command , where # is the value of the INPUT_FILTER tag, and is the name of an # input file. Doxygen will then use the output that the filter program writes # to standard output. If FILTER_PATTERNS is specified, this tag will be # ignored. INPUT_FILTER = # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern # basis. Doxygen will compare the file name with each pattern and apply the # filter if there is a match. The filters are a list of the form: # pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further # info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER # is applied to all files. FILTER_PATTERNS = # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using # INPUT_FILTER) will be used to filter the input files when producing source # files to browse (i.e. when SOURCE_BROWSER is set to YES). FILTER_SOURCE_FILES = NO #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- # If the SOURCE_BROWSER tag is set to YES then a list of source files will # be generated. Documented entities will be cross-referenced with these sources. # Note: To get rid of all source code in the generated output, make sure also # VERBATIM_HEADERS is set to NO. SOURCE_BROWSER = NO # Setting the INLINE_SOURCES tag to YES will include the body # of functions and classes directly in the documentation. INLINE_SOURCES = NO # Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct # doxygen to hide any special comment blocks from generated source code # fragments. Normal C and C++ comments will always remain visible. STRIP_CODE_COMMENTS = YES # If the REFERENCED_BY_RELATION tag is set to YES (the default) # then for each documented function all documented # functions referencing it will be listed. REFERENCED_BY_RELATION = YES # If the REFERENCES_RELATION tag is set to YES (the default) # then for each documented function all documented entities # called/used by that function will be listed. REFERENCES_RELATION = YES # If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen # will generate a verbatim copy of the header file for each class for # which an include is specified. Set to NO to disable this. VERBATIM_HEADERS = YES #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- # If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index # of all compounds will be generated. Enable this if the project # contains a lot of classes, structs, unions or interfaces. ALPHABETICAL_INDEX = NO # If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then # the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns # in which this list will be split (can be a number in the range [1..20]) COLS_IN_ALPHA_INDEX = 5 # In case all classes in a project start with a common prefix, all # classes will be put under the same header in the alphabetical index. # The IGNORE_PREFIX tag can be used to specify one or more prefixes that # should be ignored while generating the index headers. IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- # If the GENERATE_HTML tag is set to YES (the default) Doxygen will # generate HTML output. GENERATE_HTML = YES # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `html' will be used as the default path. HTML_OUTPUT = html # The HTML_FILE_EXTENSION tag can be used to specify the file extension for # each generated HTML page (for example: .htm,.php,.asp). If it is left blank # doxygen will generate files with .html extension. HTML_FILE_EXTENSION = .html # The HTML_HEADER tag can be used to specify a personal HTML header for # each generated HTML page. If it is left blank doxygen will generate a # standard header. HTML_HEADER = # The HTML_FOOTER tag can be used to specify a personal HTML footer for # each generated HTML page. If it is left blank doxygen will generate a # standard footer. HTML_FOOTER = # The HTML_STYLESHEET tag can be used to specify a user-defined cascading # style sheet that is used by each HTML page. It can be used to # fine-tune the look of the HTML output. If the tag is left blank doxygen # will generate a default style sheet. Note that doxygen will try to copy # the style sheet file to the HTML output directory, so don't put your own # stylesheet in the HTML output directory as well, or it will be erased! HTML_STYLESHEET = # If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, # files or namespaces will be aligned in HTML using tables. If set to # NO a bullet list will be used. HTML_ALIGN_MEMBERS = YES # If the GENERATE_HTMLHELP tag is set to YES, additional index files # will be generated that can be used as input for tools like the # Microsoft HTML help workshop to generate a compressed HTML help file (.chm) # of the generated HTML documentation. GENERATE_HTMLHELP = NO # If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can # be used to specify the file name of the resulting .chm file. You # can add a path in front of the file if the result should not be # written to the html output directory. CHM_FILE = # If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can # be used to specify the location (absolute path including file name) of # the HTML help compiler (hhc.exe). If non-empty doxygen will try to run # the HTML help compiler on the generated index.hhp. HHC_LOCATION = # If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag # controls if a separate .chi index file is generated (YES) or that # it should be included in the master .chm file (NO). GENERATE_CHI = NO # If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag # controls whether a binary table of contents is generated (YES) or a # normal table of contents (NO) in the .chm file. BINARY_TOC = NO # The TOC_EXPAND flag can be set to YES to add extra items for group members # to the contents of the HTML help documentation and to the tree view. TOC_EXPAND = NO # The DISABLE_INDEX tag can be used to turn on/off the condensed index at # top of each HTML page. The value NO (the default) enables the index and # the value YES disables it. DISABLE_INDEX = NO # This tag can be used to set the number of enum values (range [1..20]) # that doxygen will group on one line in the generated HTML documentation. ENUM_VALUES_PER_LINE = 4 # If the GENERATE_TREEVIEW tag is set to YES, a side panel will be # generated containing a tree-like index structure (just like the one that # is generated for HTML Help). For this to work a browser that supports # JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, # Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are # probably better off using the HTML help feature. GENERATE_TREEVIEW = NO # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be # used to set the initial width (in pixels) of the frame in which the tree # is shown. TREEVIEW_WIDTH = 250 #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- # If the GENERATE_LATEX tag is set to YES (the default) Doxygen will # generate Latex output. GENERATE_LATEX = NO # The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `latex' will be used as the default path. LATEX_OUTPUT = latex # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be # invoked. If left blank `latex' will be used as the default command name. LATEX_CMD_NAME = latex # The MAKEINDEX_CMD_NAME tag can be used to specify the command name to # generate index for LaTeX. If left blank `makeindex' will be used as the # default command name. MAKEINDEX_CMD_NAME = makeindex # If the COMPACT_LATEX tag is set to YES Doxygen generates more compact # LaTeX documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_LATEX = NO # The PAPER_TYPE tag can be used to set the paper type that is used # by the printer. Possible values are: a4, a4wide, letter, legal and # executive. If left blank a4wide will be used. PAPER_TYPE = a4wide # The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX # packages that should be included in the LaTeX output. EXTRA_PACKAGES = # The LATEX_HEADER tag can be used to specify a personal LaTeX header for # the generated latex document. The header should contain everything until # the first chapter. If it is left blank doxygen will generate a # standard header. Notice: only use this tag if you know what you are doing! LATEX_HEADER = # If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated # is prepared for conversion to pdf (using ps2pdf). The pdf file will # contain links (just like the HTML output) instead of page references # This makes the output suitable for online browsing using a pdf viewer. PDF_HYPERLINKS = NO # If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of # plain latex in the generated Makefile. Set this option to YES to get a # higher quality PDF documentation. USE_PDFLATEX = NO # If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. # command to the generated LaTeX files. This will instruct LaTeX to keep # running if errors occur, instead of asking the user for help. # This option is also used when generating formulas in HTML. LATEX_BATCHMODE = NO # If LATEX_HIDE_INDICES is set to YES then doxygen will not # include the index chapters (such as File Index, Compound Index, etc.) # in the output. LATEX_HIDE_INDICES = NO #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- # If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output # The RTF output is optimized for Word 97 and may not look very pretty with # other RTF readers or editors. GENERATE_RTF = NO # The RTF_OUTPUT tag is used to specify where the RTF docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `rtf' will be used as the default path. RTF_OUTPUT = rtf # If the COMPACT_RTF tag is set to YES Doxygen generates more compact # RTF documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_RTF = NO # If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated # will contain hyperlink fields. The RTF file will # contain links (just like the HTML output) instead of page references. # This makes the output suitable for online browsing using WORD or other # programs which support those fields. # Note: wordpad (write) and others do not support links. RTF_HYPERLINKS = NO # Load stylesheet definitions from file. Syntax is similar to doxygen's # config file, i.e. a series of assignments. You only have to provide # replacements, missing definitions are set to their default value. RTF_STYLESHEET_FILE = # Set optional variables used in the generation of an rtf document. # Syntax is similar to doxygen's config file. RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- # If the GENERATE_MAN tag is set to YES (the default) Doxygen will # generate man pages GENERATE_MAN = NO # The MAN_OUTPUT tag is used to specify where the man pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `man' will be used as the default path. MAN_OUTPUT = man # The MAN_EXTENSION tag determines the extension that is added to # the generated man pages (default is the subroutine's section .3) MAN_EXTENSION = .3 # If the MAN_LINKS tag is set to YES and Doxygen generates man output, # then it will generate one additional man file for each entity # documented in the real man page(s). These additional files # only source the real man page, but without them the man command # would be unable to find the correct page. The default is NO. MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- # If the GENERATE_XML tag is set to YES Doxygen will # generate an XML file that captures the structure of # the code including all documentation. GENERATE_XML = NO # The XML_OUTPUT tag is used to specify where the XML pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `xml' will be used as the default path. XML_OUTPUT = xml # The XML_SCHEMA tag can be used to specify an XML schema, # which can be used by a validating XML parser to check the # syntax of the XML files. XML_SCHEMA = # The XML_DTD tag can be used to specify an XML DTD, # which can be used by a validating XML parser to check the # syntax of the XML files. XML_DTD = # If the XML_PROGRAMLISTING tag is set to YES Doxygen will # dump the program listings (including syntax highlighting # and cross-referencing information) to the XML output. Note that # enabling this will significantly increase the size of the XML output. XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- # If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will # generate an AutoGen Definitions (see autogen.sf.net) file # that captures the structure of the code including all # documentation. Note that this feature is still experimental # and incomplete at the moment. GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # configuration options related to the Perl module output #--------------------------------------------------------------------------- # If the GENERATE_PERLMOD tag is set to YES Doxygen will # generate a Perl module file that captures the structure of # the code including all documentation. Note that this # feature is still experimental and incomplete at the # moment. GENERATE_PERLMOD = NO # If the PERLMOD_LATEX tag is set to YES Doxygen will generate # the necessary Makefile rules, Perl scripts and LaTeX code to be able # to generate PDF and DVI output from the Perl module output. PERLMOD_LATEX = NO # If the PERLMOD_PRETTY tag is set to YES the Perl module output will be # nicely formatted so it can be parsed by a human reader. This is useful # if you want to understand what is going on. On the other hand, if this # tag is set to NO the size of the Perl module output will be much smaller # and Perl will parse it just the same. PERLMOD_PRETTY = YES # The names of the make variables in the generated doxyrules.make file # are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. # This is useful so different doxyrules.make files included by the same # Makefile don't overwrite each other's variables. PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- # If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will # evaluate all C-preprocessor directives found in the sources and include # files. ENABLE_PREPROCESSING = YES # If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro # names in the source code. If set to NO (the default) only conditional # compilation will be performed. Macro expansion can be done in a controlled # way by setting EXPAND_ONLY_PREDEF to YES. MACRO_EXPANSION = YES # If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES # then the macro expansion is limited to the macros specified with the # PREDEFINED and EXPAND_AS_PREDEFINED tags. EXPAND_ONLY_PREDEF = YES # If the SEARCH_INCLUDES tag is set to YES (the default) the includes files # in the INCLUDE_PATH (see below) will be search if a #include is found. SEARCH_INCLUDES = YES # The INCLUDE_PATH tag can be used to specify one or more directories that # contain include files that are not input files but should be processed by # the preprocessor. INCLUDE_PATH = # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard # patterns (like *.h and *.hpp) to filter out the header-files in the # directories. If left blank, the patterns specified with FILE_PATTERNS will # be used. INCLUDE_FILE_PATTERNS = # The PREDEFINED tag can be used to specify one or more macro names that # are defined before the preprocessor is started (similar to the -D option of # gcc). The argument of the tag is a list of macros of the form: name # or name=definition (no spaces). If the definition and the = are # omitted =1 is assumed. To prevent a macro definition from being # undefined via #undef or recursively expanded use the := operator # instead of the = operator. PREDEFINED = AXIS2_DECLARE(x)=x \ AXIS2_DECLARE_NONSTD(x)=x \ AXIS2_DECLARE_DATA= \ AXIS2_CALL= # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then # this tag can be used to specify a list of macro names that should be expanded. # The macro definition that is found in the sources will be used. # Use the PREDEFINED tag if you want to use a different macro definition. EXPAND_AS_DEFINED = AXIS2_DECLARAE AXIS2_DECLARE_NONSTD AXIS2_DECLARE_DATA AXIS2_CALL # If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then # doxygen's preprocessor will remove all function-like macros that are alone # on a line, have an all uppercase name, and do not end with a semicolon. Such # function macros are typically used for boiler-plate code, and will confuse # the parser if not removed. SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::additions related to external references #--------------------------------------------------------------------------- # The TAGFILES option can be used to specify one or more tagfiles. # Optionally an initial location of the external documentation # can be added for each tagfile. The format of a tag file without # this location is as follows: # TAGFILES = file1 file2 ... # Adding location for the tag files is done as follows: # TAGFILES = file1=loc1 "file2 = loc2" ... # where "loc1" and "loc2" can be relative or absolute paths or # URLs. If a location is present for each tag, the installdox tool # does not have to be run to correct the links. # Note that each tag file must have a unique name # (where the name does NOT include the path) # If a tag file is not located in the directory in which doxygen # is run, you must also specify the path to the tagfile here. TAGFILES = # When a file name is specified after GENERATE_TAGFILE, doxygen will create # a tag file that is based on the input files it reads. GENERATE_TAGFILE = # If the ALLEXTERNALS tag is set to YES all external classes will be listed # in the class index. If set to NO only the inherited external classes # will be listed. ALLEXTERNALS = NO # If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed # in the modules index. If set to NO, only the current project's groups will # be listed. EXTERNAL_GROUPS = YES # The PERL_PATH should be the absolute path and name of the perl script # interpreter (i.e. the result of `which perl'). PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- # If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will # generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base # or super classes. Setting the tag to NO turns the diagrams off. Note that # this option is superseded by the HAVE_DOT option below. This is only a # fallback. It is recommended to install and use dot, since it yields more # powerful graphs. CLASS_DIAGRAMS = YES # If set to YES, the inheritance and collaboration graphs will hide # inheritance and usage relations if the target is undocumented # or is not a class. HIDE_UNDOC_RELATIONS = YES # If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is # available from the path. This tool is part of Graphviz, a graph visualization # toolkit from AT&T and Lucent Bell Labs. The other options in this section # have no effect if this option is set to NO (the default) HAVE_DOT = NO # If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect inheritance relations. Setting this tag to YES will force the # the CLASS_DIAGRAMS tag to NO. CLASS_GRAPH = YES # If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect implementation dependencies (inheritance, containment, and # class references variables) of the class with other documented classes. COLLABORATION_GRAPH = YES # If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen # will generate a graph for groups, showing the direct groups dependencies GROUP_GRAPHS = YES # If the UML_LOOK tag is set to YES doxygen will generate inheritance and # collaboration diagrams in a style similar to the OMG's Unified Modeling # Language. UML_LOOK = NO # If set to YES, the inheritance and collaboration graphs will show the # relations between templates and their instances. TEMPLATE_RELATIONS = YES # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT # tags are set to YES then doxygen will generate a graph for each documented # file showing the direct and indirect include dependencies of the file with # other documented files. INCLUDE_GRAPH = YES # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and # HAVE_DOT tags are set to YES then doxygen will generate a graph for each # documented header file showing the documented files that directly or # indirectly include this file. INCLUDED_BY_GRAPH = YES # If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will # generate a call dependency graph for every global function or class method. # Note that enabling this option will significantly increase the time of a run. # So in most cases it will be better to enable call graphs for selected # functions only using the \callgraph command. CALL_GRAPH = NO # If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen # will graphical hierarchy of all classes instead of a textual one. GRAPHICAL_HIERARCHY = YES # If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES # then doxygen will show the dependencies a directory has on other directories # in a graphical way. The dependency relations are determined by the #include # relations between the files in the directories. DIRECTORY_GRAPH = YES # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images # generated by dot. Possible values are png, jpg, or gif # If left blank png will be used. DOT_IMAGE_FORMAT = gif # The tag DOT_PATH can be used to specify the path where the dot tool can be # found. If left blank, it is assumed the dot tool can be found in the path. DOT_PATH = # The DOTFILE_DIRS tag can be used to specify one or more directories that # contain dot files that are included in the documentation (see the # \dotfile command). DOTFILE_DIRS = # The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width # (in pixels) of the graphs generated by dot. If a graph becomes larger than # this value, doxygen will try to truncate the graph, so that it fits within # the specified constraint. Beware that most browsers cannot cope with very # large images. MAX_DOT_GRAPH_WIDTH = 1024 # The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height # (in pixels) of the graphs generated by dot. If a graph becomes larger than # this value, doxygen will try to truncate the graph, so that it fits within # the specified constraint. Beware that most browsers cannot cope with very # large images. MAX_DOT_GRAPH_HEIGHT = 1024 # The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the # graphs generated by dot. A depth value of 3 means that only nodes reachable # from the root by following a path via at most 3 edges will be shown. Nodes # that lay further from the root node will be omitted. Note that setting this # option to 1 or 2 may greatly reduce the computation time needed for large # code bases. Also note that a graph may be further truncated if the graph's # image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH # and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default), # the graph is not depth-constrained. MAX_DOT_GRAPH_DEPTH = 0 # Set the DOT_TRANSPARENT tag to YES to generate images with a transparent # background. This is disabled by default, which results in a white background. # Warning: Depending on the platform used, enabling this option may lead to # badly anti-aliased labels on the edges of a graph (i.e. they become hard to # read). DOT_TRANSPARENT = NO # Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output # files in one run (i.e. multiple -o and -T options on the command line). This # makes dot run faster, but since only newer versions of dot (>1.8.10) # support this, this feature is disabled by default. DOT_MULTI_TARGETS = NO # If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will # generate a legend page explaining the meaning of the various boxes and # arrows in the dot generated graphs. GENERATE_LEGEND = YES # If the DOT_CLEANUP tag is set to YES (the default) Doxygen will # remove the intermediate dot files that are used to generate # the various graphs. DOT_CLEANUP = YES #--------------------------------------------------------------------------- # Configuration::additions related to the search engine #--------------------------------------------------------------------------- # The SEARCHENGINE tag specifies whether or not a search engine should be # used. If set to NO the values of all tags below this one will be ignored. SEARCHENGINE = NO rampartc-src-1.3.0/docs/docs/0000755000076500007650000000000011202454500015634 5ustar shankarshankarrampartc-src-1.3.0/docs/docs/rampartc_manual.html0000644000076500007650000002322311202454500021672 0ustar shankarshankarApache Rampart/C - Manual

Preamble

This document is intended to be a reference manual for Apache Rampart/C.

For further details on Axis2/C please refer the Apache Axis2/C manual

Simplified Architecture

In a very simple view, Rampart/C consists of a core module and packages related to WS-Security and WS-Security Policy. For XML-Encryption and Signature Rampart/C uses OMXMLSecurity. Both Rampart/C and OMXMLSecurity uses Apache AXIOM and Axis2-Util libraries. OpenSSL is used as the crypto library in OMXMLSecurity.

Interface with Axis2/C

The interface between Rampart/C and Apache Axis2/C engine is the Rampart module called mod_rampart. The module has two handlers, one for the inflow and another for the outflow of the Axis2/C engine. Rampart/C directs messages to it's other components for further security related processing using these handlers.

Handlers are a way of extending capabilities of the core engine. Once the Axis2/C engine calls the invoke() method of the handler, the module can do the necessary processing over the SOAP message. Rampart/C use this mechanism to build/process security related SOAP headers.

Inside Rampart/C

Following is a detailed architecture diagram of Rampart/C

Rampart Engine

Rampart engine is the heart of Rampart/C. It sets security policies that defines the behavior of Rampart/C message processing. These policies are usually read from a selected policy.xml file depending on the message flow, which contains a set of policy assertions.

Processors and Builders

Rampart/C processes incoming SOAP message using it's processors. There are two processors in Rampart/C.

  1. Security Header Processor : Processes security header of the incoming message and make decisions upon security claims and the security policies.
  2. Token Processor : Processes token claims such as binary security token.

Similar to processes, Rampart/C uses two builders that builds outgoing messages.

  1. Security Header Builder : Builds Security headers of an outgoing message depending on security policies.
  2. Token Builder : Builds token claims such as binary security token.
These builders and processes assemble other components such as encryption, signature, UsernameToken together. Decisions are taken in these processes would result in further processing of the message or throwing of a SOAP fault.

Policy

The policy module of Rampart/C acts as the configuration module in Rampart/C. The policy module has a set of models that represents assertions. Also there are set of builders that builds these models.

Rampart/C is configured using policy assertions defined in WS-Security Policy specification (1.1 or 1.2). These policies are defined in policy.xml files. The client side policies are defined in a seperate policy.xml file located in the client's repository. The service's policies are defined in the services.xml file.

Rampart utilities

Rampart utilities groups different entities that cater for different purposes. Following is a brief description of major components inside utilities

  • Rampart context: Keeps configurations for Rampart/C. This includes certificates, keys, passwords, policies etc.
  • UsernameToken: Provides functionalities to build/process a UsernameToken.
  • TimestampToken: Provides functionalities to build/process a TimestampToken.
  • Authentication provider: The interface for authentication modules that can be plugged into Rampart/C. This allows users to define their own rules for processing user name / passwords.
  • Credentials provider: An interface for a credentials module to be plugged in. Users can provide custom user name/password pairs to build user name tokens.
  • Password callbacks: An interface for users to provide password for a given user name.

OMXMLSecurity

For XML cryptographic purposes Rampart/C uses OMXMLSecurity, which is a library written on top of Apache AXIOM. If a particular SOAP message needs to be encrypted or signed, Rampart/C get the work done through the OMXMLSecurity. Following are the functionalities of OMXMLSecurity.

  1. XML-Encryption / Decryption: This includes symmetric and asymmetric encryptions. Usually data is encrypted using a symmetric key (or a session key) which is again encrypted using an asymmetric algorithm using a public key.
  2. XML-Signature / Verification: Allows one or more part of an XML document to be signed using a private key. Also allows these signed parts to be verified.
  3. Key management: To load X509 certificates, Private keys etc, the Key management interface provide a series of functions. Keys might be stored in PEM files, PKCS12 key stores or can be in string buffers.
  4. Canonicalization: Provide Canonicalization (C14N) transform support.
  5. Creating/Processing tokens: There are number of XML elements that are introduced by security specifications. The token base in OMXMLSecurity provides functionalities to create/process such elements.

Following diagram shows the architecture of OMXMLSecurity

Please send your feedback to the Apache Axis2/C developer mailing list (rampart-c-dev@ws.apache.org). Subscription details are available on the Rampart site.


rampartc-src-1.3.0/docs/docs/installationguide.html0000644000076500007650000003156211202454500022250 0ustar shankarshankarApache Rampart/C - Installation Guide

Apache Rampart/C Installation Guide

This document guides you on how to install Rampart/C.

You must have OpenSSL 0.9.8 (or above) installed in you system.

This release comes in two forms, source and binary. This document covers both forms.

Please send your feedback to the developer mailing list: rampart-c-dev@ws.apache.org (Subscription details are available on the Rampart/C site).

1. Installing and Running on Linux

This can be done using binary or source distributions. (Download the two distributions)

1.1. Installing the Binary Distribution

The following steps have to be followed to install and run the Rampart/C binary distribution on Linux :

  1. Extract the binary tar package to a folder.
  2. Set the AXIS2C_HOME environment variable pointing to the location where you have extracted Axis2/C
    • AXIS2C_HOME='/your_path_to_axis2c'
    • export AXIS2C_HOME
  3. Copy modules/* to $AXIS2C_HOME/modules/
  4. Copy lib/* to $AXIS2C_HOME/lib
  5. Copy services/* to $AXIS2C_HOME/services/
  6. Copy samples/* to $AXIS2C_HOME/samples/. This will copy callback modules etc.
  7. Engage Rampart/C as specified in the section Engage Rampart/C with Axis2/C
  8. Go to samples/src/rampartc/client/ and deploy the client repo
    %sh deploy_client_repo.sh
  9. Go to samples/src/rampartc/secpolicy/ and try a scenario
     %sh test_scen.sh scenarioX server-port

1.2. Installing the Source Distribution

The following steps have to be followed to install and run Rampart/C using the source distribution on Linux :

  1. Extract the source tar package to a folder.
  2. Set the AXIS2C_HOME environment variable pointing to the location where you want to install Axis2/C
    • AXIS2C_HOME='/your_desired_path_to_axis2c_installation'
    • export AXIS2C_HOME
  3. Then go to the folder where you extracted the source.
  4. Build the source
    • This can be done using the following command sequence, in the directory where you have extracted the source:
      • ./configure --prefix=${AXIS2C_HOME} --enable-static=no --with-axis2=${AXIS2C_HOME}/include/axis2-1.6.0
      • make
      • make install
    • Please run "./configure --help" in the samples folder for more information on the configure options.
  5. Engage Rampart/C as specified in the section Engage Rampart/C with Axis2/C
  6. If you need to try samples,first you need to build them. Go to samples and run the script build.sh
    	%sh build.sh
    	
  7. Then go to samples/secpolicy and try a scenario
    	%sh test_scen.sh scenarioX server-port
    	

2. Installing and Running on Microsoft Windows

This too can be done using binary or source distributions. (Download the two distributions.)

2. 1. Installing the Binary Distribution

  1. Extract the binary distribution to a folder of your choice. (example: C:\rampartc).
  2. Set the AXIS2C_HOME envirionment variable to direct to your Axis2/C Installation.
  3. SET AXIS2C_HOME=[your-path-to-axis2c]
  4. Run the deploy_rampart.bat that could be found in the root of the rampart binary distribution.
  5. Engage Rampart/C as specified in the section Engage Rampart/C with Axis2/C.
  6. Go to samples/src/rampartc/secpolicy/ and try a scenario
     test_scen.bat scenarioX server-port

2. 2. Installing Source Distribution

2.2.1. Requirements

  • The makefile shipped with this version needs Microsoft Visual Studio Compiler (cl) and the nmake build tool.
  • (Note: You can download the Microsoft VSExpress edition and Platform SDK from the Microsoft Web site. You will need to add the path to the Platform SDK Include and Lib folders to the makefile)

2.2.2. Compiling the Source

The following steps will take you through the source compilation.

  • Extract the source distribution to a folder of your choice. (Example: C:\rampartc)
  • Edit the configure.in file to specify the Axis2/C repository path and the OpenSSL installation path
    • AXIS2_BIN_DIR = path/to/where/you/have/installed/axis2
    • OPENSSL_BIN_DIR = path/to/where/you/have/installed/openssl
    • DEBUG = 1 if enabled, 0 otherwise
  • Open a DOS shell
  • cd C:\rampartc\build\win32
  • to access .Net tools, run
    • C:\rampartc\build\win32\> vcvars32.bat

    (Note: You may have to set the PATH environment variable to vcvars32.bat if MS Windows gives an error indicating that it cannot find this batch file. This file is located in <your MS Visual Studio install Directory>\VC\bin directory.)

  • To build the system and create the binary files in a directory named deploy under the build directory,
    • C:\rampartc\build\win32>nmake install
  • Engage Rampart/C as specified in the section Engage Rampart/C with Axis2/C
  • Then go to samples/secpolicy and try a scenario
    	test_scen.bat scenarioX server-port
    	

Engage Rampart/C with axis2/C

You can engage Rampart/C in global level or in service level.

Just add the following entry either to axis2.xml(gloabl level) or in services.xml(service level) corresponding to the service you want to secure.

   
   <module ref="rampart"/>


If you want to provide Secure Token Service (STS) functionality to a service, add the following entry to services.xml.

<module ref="rahas"/>

Then add following "Security" phase to the phase order in the inflow and outflow in the axis2.xml. Also add "Rahas" phase to inflow.

    <phaseOrder type="inflow">
        <phase name="Transport"/>
        <phase name="PreDispatch"/>
        <phase name="Dispatch"/>
        <phase name="PostDispatch"/>
        <phase name="Security" />
        <phase name="Rahas"/>
    </phaseOrder>
    <phaseOrder type="outflow">
        <phase name="MessageOut"/>
        <phase name="Security"/>
    </phaseOrder>


Apart from that you must define security policies for the client and the server.



CLIENT SIDE:

In the client side just drop a policy.xml file to the same location(client-repo) where you have the axis2.xml.



SERVER SIDE:

Add WS-Security Policy assertions to the services.xml.

NOTE: Please find sample security policy files that are located under samples/secpolicy

You may go through each and every scenario and see how Rampart/C is configured using the policy assertions available in respective policy files.

For each scenario there are two files

  1. client-policy.xml : Defines what the security configurations are for the client using security policies
  2. services.xml : Defines what the security configurations are for a particular service using security policies

NOTE: If you have changed a client's policy file, make sure that you change the corresponding policy assertions in the services.xml file as well, and vise versa.


rampartc-src-1.3.0/docs/docs/files/0000755000076500007650000000000011202454500016736 5ustar shankarshankarrampartc-src-1.3.0/docs/docs/files/oxs_archi.png0000644000076500007650000013153511202454500021433 0ustar shankarshankar‰PNG  IHDR;p)¦Šÿ pHYs  šœgAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<²ÚIDATxÚìZoLE(­Å PlªØZ…¦`E Å ûÁPÿÄH›ZIÁ¤ib±g$ƒÒôZZbüÓ‹ ˆ´©Pƒl )H1T@1ƒE,X”F’*p·»Þ›»··»·{»3"/™ìÌîþffï½ù½Ç‘E.©y±mu»-få\™’ü#˜üäåÜr±ç9^õij¬%OnÞ‡{ÛRãå>¼‡c”% 2‘ Ôç%²$†"‰íäïKak .çæ,®êpa³­c‹«;PA.Í 'Š7vÖ!2cBDÎ  '8ôô£ë˜°‡+ÏÒ«AA¸^0ŽM¿[”k0ƒ>î×˃dh ÇÇÊú¸®s-&;váŒ,è›ÎNÚª«ª ±`AVbäd$û Ê LPwûÚÓÕÇMþ>N• xø£h×Eœ`  -Éɪ«vÖ.0¸˜`-Ù2S›-#ѱ›Lc ZN×¹3Γ1ié9¦1Þ ½1ŒÎñ‚íMØ ªÿbˆ+ÙŽd¦ ÒÚ6ËÁ¢U¦• ˜ˆÈÕäË“U*¥ª$H$ó©&•V6{Å ÜŒjí½Jºú®ê)Hà šó‰Ó*G‰Ã}ç:R×P¯ëRFX¥‚Þ>ÞkÕÅ\C‡ë¹>˜Ç«XŒAC?3cíLǼ[A„óØý×Eƒ*?û‘ ˃ˆÌƒ$·ìaZó`ÑG~á˜õãÞ§(Idï®XË¸ŠÆË¤, ÆlòÂ)ùMññäá”2vï–cÜCe"\ÌjCLˆ$qÛá”D±§×;ÐêÅ&I¶ ‰y=gª!òŸ´ôlÊKôÈ¢ΜÂû‡ *«íç²¥¢þ1,VÉ&'Æ(?ñu\ƒB•H’zlÎéX-ë^먦ÏsбXˆ1ÈÙQnzhà¢*ƒ?ZC^Û»Ýk%.:ö~™MÑ;U[®›Çiq,†&0fóIñ·r­‰§‹ ºÌÝʈIkqø>0bhzdOgÝä}çbƱDâZSÔŅĤÍ\lzF +oXf ×öí¸Œ={º‘yÝ  ÉûÿS%×ÌìfLmµ«RR”g“WPâû[¨.V¸/ Só¡ëgœ§Xº…bÛÉÖaïS¬¸(Ÿ¬¹-Œ$nŒ$““öîq²<$˜<±m-­£4=BßÃjÞ©Öa®1¯ä«xÇ Q-+-u¶w|æfò)fw}ôèè(‰ŠŠ¢ýWóòHxx8y½°’ÍØ¸8“˜¡HV%,&‰T9 ‘¡tŒ·bù2:~æñ»åE##V’”Íž£_[…qÿ¥IÕøÓæŸø“U÷>IRÆ^²Ùh3’7Þë–±˜‹¡r@Ž””Èýº†zýøóAQÜšš±«]Íl|}Z°ä¾æ`s-O.(¿À…UV§¦¦HBü}ÔòN45‘¯Z[ɱРù=ÁsЉºåH³±Ã+4ÄŒ¥äéí&"×1¯Ä*“Up+tË;wÒ†ï!FæAÚL×lì°ÜÑŒæàá%¢$qc!Õ(¯ëgÂÈAZ[+1[¡íÚ¿6S=Ƥ`ƃ…8úÊÏÿÞ¯üö—ܯ?3D6ǹbp÷ÊŠ"¯‹YˆA‹™ ãa%’A²ª´Fx†!–;´.ÆjA ‚£àé––9µ 9ÕðÃÅp}¤JeÃ3Ü/ôEO²êÒr,<áx†r¬ Ò°˜R`aàÚÚ ÎÁÛpŸ0'kCì¬Û¢‘"@ž† ž‚ Í žõä’+‚‘Sh'›ÕmQÍGP€´mIÂË‚ü ÒrÉ•«u1¥1Ú¢ü¥}äA’{Óh~²B ÆÓÿX%£»Á‘êwüÇz+ÈG 4©ÜÛüââp±Õëw,h»t" .öìœ]hEÇG¹6¶áöïj?--X¯ òÒO­õ ”bi}j‘XšçJi}Šm-ˆ>´´"¦ (†P_C‚¥¥¦K(#RF°r“Ìf³îvÏfv3³wçL«mz {'¹sÏܳ3gÎÌžßÑ(†×:æ!~ä´­“>5ä– |TéC¢R>·Ü´r9uº'oIÇ~]ó2±>,6ÒÆ–Ρv\}.ÙcCõÈ6í߯ ãgÓæ@ç8èãR=¶‡rh#‰ž€ÑY2ÇEßSë‹ÆÙwn÷…L6˜°J±#}Í£é,2ÇNwuÈ«¾53Ú olt¸v»°¨†¡¸"{Uÿ%k’‡héstw’²ÆîUðã'9éôÍn,˾w>ø:W߯U±bIt:H‰tÕ‰/ŸXøÖÏÛdjÎPþ ir]'ÛSÓùB” Ÿ?$)ä1"vÅ£è#òzL†QõõôÉbë?lgÑÈ™îÐQ5WŒ¤£²_Ûߨ—«TÕ—Gûèô=²jxtõÝ…¿ä'HOÑøœ—Ÿ^!ÆÇ}1kV”ž·dacêY|rÿù5«ƒ>Õ0ôÄ3ß±FÓ*kœŽ®_ŠL+_|sæ’,¶Â¥vÖRç$…w»!¾ÛE°&ß`œB>ç¡vÆ¡~"‹‹ÓÖúᣌs_<±¡IlÚØdÕä-­CíN#±cëѦ$ÉÎ0g>sÕ§†Òà å¹eyÍ*rZùŒiE¤çNº7×JŸš—ëåÈ ¬õÉüf]g±"0Ó±‘R>mÚV±>[B‡ÚÚo&i)×G¬ãä±ç¼¥œ¿ZÙ:}ýWÅ©sÑje;rÂ6£¹“DÖ ÚE¤›ÝûèŒóî¾É‘/öeYBǤ¯Ð¶#,dúE„l•*•0`¤¥œ£O¦Ëéâ)ˆvu¯ŽvÙs¨=uÕQ=&}µ‡yZߎ; Å:þ$ŸÌ¹é"äÃöн¯ ;¾ûáÏ$B®9¦ýUûGV4DÎMGãìoyÌêýmÇ.Ê•$à™—ž\žûþ¿«ÿˆîžAeµ‰S‹¢yqÓ2 |Ù}Y.ë›ï—PÊ÷áðýmpD¬^9_<¼rç{‡Äœ;KâÙKÅè˜'Np2 ‘8jx"tÊ jTXĸñô¦0¥]--â™Í›ÅÉÎNy„,[8v¼ž?·!ÎxUpm•¢Áëîž?Ru40 èê0 ôNÿåª4 dÑ}1ųTÖqz7î¹Pê'¨š·[›e˜Gß$9ˆ‚@uoE0 qÙÏÁ{eè«7‘OϸÖmÅ•ÀÉž‚ºªT CcôÐ$ǘ—¥klÑZuûÕʾÉn"qT"ÇDÖÝ»V^ïš×3­"ªf{¸tAóÀ=sR$úw"k®;URÄ +»Ÿ3¾„1õ“>ﯘ¬Q?'Ûöã¯ú§é2õaÒ÷ÿ¢ÆÔÎjÅÑÃ%jê4M]xR§hr¤NÐ1Ž =ù©çHòºõÍãâÂÅŸÅðÈØÌ0Nõê§ZôЖ7rþ€½+­¢ÃÓŠ H "T¢Eñµ‘Ö+ ^xPL$F¬A("Þ1*X4ÕxàE5F A ÔV«å¶}»öÛ×ÿõŸÙó½ÇΖ°2yÝÎÎ~ovÿ÷Ï?³ÿÿMNüã98¥xØ;æœ)%‘ápÑøXyRQó^ví¬mò’QÈÖ6@åsDŸ>…¢ûɧYÿ»uähÇsÝdÑÇï‹’ÁWÅ–çPP²ÈúœÕ7P{:—>¡P6¬“Ú£âvÍœâ[ÊãIV,™9„ÙpÙÄrÈ+OS@{QaWQÔ· TÀ§f|úûÑç‡ÞAާ»Ò‘EZäÔ²&f¬ #††3mÖ2gË“IÜgº¢ÛÒEÝ?z}XtNGѾ]ËŽWñùï6ܺzCKÿäTš4âb)ì‚Ýv3³I©;3ŸP´j'ú7(pF›#ž©!(Ré”çÚK›Bé°å Þ›ãU¬—I0ƒ ¹¤@¼ûé& ÷¿•‡ã¤öÈ4‚Èw×ìbÍMwˆÊÍ$Å Šeà Ð?ÊyÆšK’y¬Ve„gZ#²µƒÒÌxí5+Ð Âñ(RÅA°(ÿŸëól ¥‚¥° Ç‘|¯ˆ|¤9àáÑ'å”ÅñÜ4Rº¹õi(M2™¤8°tjFOZö ’q@ÉC„Ñ«°8M³n·<ó?úMtë”'ú÷ÎOEëpÊyˆSÐ,¢hÔ°F.[·íKWn³áÖÕ‡çpykD›ë¶í!m”n‚tÁ^’*¦Óð赡gþAñaa ¤°6WßϲŸäws/¼½ÆvþÕ{|}&Ž“kX{ ×gLï’¶¿ÅðtH”ý3\öiÆpD{B‘²Ç4%Ìtö5L·pÉò,^²Ê*ºäÑ)sõ®jiP»å1ÄÌ…¿ˆáWžœb£àÌ7ÙZ \;²©:?(èzœ(èÒ1ԛ˕ó‚âÞ¡?LŽÅ:YžÙ¿jÃÕ·ÎÃÂÝ ºä‹ Ï ÷.þæÇÔßac©x RƒuS,OƒÂÞyý¡B¾º`­„›m®WÐþ嚉_ ± aºžŽ‘*Âþ¡¨>ÏÚµk­ÏÚÚZi‡öi&Æ;Ú*Ç~k=Ö:ÃDÊjX…ã´àQö U¾7‡ïÒ ¶»½{vYÇ^ÌwRG3ô;°¾CëLnSv?¼ ýËÚyUú‡Ù2.ÇëiS¾í`Ck<ê:{1B(›“ã†iy8NÚSu>]åÊDqÒªs üú#ƒ©z¸³i›‡îó$"p˜f#œ‘ˆÞgXçü’¡eåßÕÛD¿âAÖëƒéOŒž(3Ÿ(µn’®òe£½ÊiEB”—´þüQãŸô\ö럇 r-8,¼7þ,jw×I¸¡º<²òž¿Lþ‹§WD<¤n*OVÉMq’àF ËF „|ÑN%Hr[åuÃÓcyìÖª8”CK/?ñ çeOÓ î‘oÚ.tmÔÄq$ž77¡9$#êþ9mÿN9ÆôÖŸ~¾›9•®ûšp¶Ì̺N<3’EBS<7{µVܯ>X åÞæœ:à®8†9D6"9´N¼ãìP®?íÍUbß 1wVYêS¿/´þ”Nl"+²å§?ódiüijûšj¶}Ž´¦ß~Z@* r·÷¾ëKfë$në-›±RÊß§æëJN<`ýZ¸hc²? ‡‚7ª]Oh#úöÊ÷¼ˆÛ˶~ùšbså.QØ«ƒÅ‘ Fbs˜?‹Öo:)α3 ¯bš®I…¾1ï@¡ás‘#Ï‘àY¡kJ³aªdT†«âP}þ±­<ë½”‡;þrköúßk]‡0zÒ.ã令÷Ól°<§/׊ëÖ8æ°r$ ¥„³îdùˆ ‡®Éql©7~7õõ/ÞüÚ£m ¿z/¹(•Çm‘P'®W$!,ϬFrj¢ýYõÓ&Ù¢¹Ð5Ý ­aË{6„z¯L¿öhï>adþ´*©—ž"óŽ:\œÖ­mªnè­÷ÛÚŽ;YTÕˆ†bߨºfŸØT¹ÓÇÆêéyzâPã‹\n|j6Ë“0aøÕ{Zžú‡-— ¸ûYÿÇ\)oü;ó½_¬éË‹»H[íùÃ%I™ÂÓ›H<Û´>B´Í;Rl¯Ùkñ9Ìu>œ¨ç|´×—~íÑ6†_}Âã']W¥å1"¶Ø‹ÑÆa{àYI†WzFsçÏ£® ž.[%Zµl!Ñëâ˜Ú©÷öøG‰­;vÛæ„a¤ý«'–ê$ï÷<)¿È¯=ÚòsTåK×ò \³b{Úò¨÷S—åá¸4U§{„{ G9ųjÑ;=RýÎ0Ü}5jdñĉNõÜçQӜڃO•jåѵs‡”=‘•@ÍÖ@½#¼ÚΩNq˜ G k² #¥—vuÌaæJãÖ£óêö­ˆó›¬¯‡Òò!‰ê©ƒ4Õä°.R‡YÆ6#ÀU-)NðaËÝòpœ\8@¼à¤{Ÿý>µxD¿vHeƒÓ„úu›ÿõðiìÊÁ mQ_Ù耑ÒÐÃ6ê½)•+Î×+«¬úO–m±-d©ß!Š¢ÞOŽ:†(/Ýb;oü´ï¬º¹Ÿ¬oLÙIS»¥«·Iä÷_¬¨tì_Nû.ƒ$5»~Lófïnî²à•ÉÒñÐÑzîgùŒÉZ09N.ÌTLqP•é¥çZŸÃw'u>Ú:.Ñ[Œ»±‡U¨ž>©ŽÚ£]¿ž¬z~-ª§sQG×4°³èÙ½]ê|©(÷3ˆ€™¤ã$—uãoê‘bl:l©˜tM\¬ï¸®ŠË…êñàã¸S~ké<Ž“sÌñK–ç†±Åæ# ™ÿò#"ŠûÉqÃÄä89m;^ÇóÄ’‘´0bNÂXb‰E·Øx˜û y)Ʋ*Æ2ÜÖ-Ôì­©Œìˬ^ü”zû‹bÝg·ûï¾\ ¿®È:§ü{Ä™<kksRž5U‘}™ï—ÿ,V,ÿQlZõ–¸aÔQùGµ¸çÎ!bkÃ'dãÆÍ¢lÎnqL!>ûr¥õ]Qÿâ«ñ“lÃÖ±Kâa+ ùkË¢CfØú_ö®ȊꊾÇŒl£PB@ EeS!€"8®„H¬¸àԸъT(QpK„R ‚¨HÑQ ÑhD˜X 0²©ÙjŠ è 0Ì8¿;ÿôÿ·ÿí÷{ýÿ÷kfèK=~w¿ž>ýúݾ}ß}÷ÝçžhÀT~ü‡#€Ý^õʵ/ÅÌÓ€É.q‰*ZöÁNñ‹+»wCƒ”8úÐA]"Ã?ñ„2ñÁžÞÛ‹ã®hxÔ­sö²£I?2PŒúµ5øR!áê(òqá|7¢s]è–˜y û˜xûÝTRb a×\b$e›üô,ñè„)æ¹HܶøÝ·ÄEåg…3‹Ì|ÏL+̉†?ðž>nøY9ÿýî];EÛvíÍýO¶m13Êä”ðÆû-‰%ÏHœq@NŒrK'gú‹)g*zÌ;1åÈ<*ÅtHž1#ÂOi8iúrexo},v|Y]ûn;GYGNšõ¾ñ;°WqnïŽááÌ~ŸKÅaÞâAªFÙ>•á"Nr˜KœyûÔëÛ‡¶ðµÈHÊ2°(-~!}}Ç.}SPɳ¨ês%&Còèj†ê%no$¥K²K”¶tÑü¬O=X×O‹Gg‚Á8`¢Óû”›×uê4O,ÌCíÃh óÆÜ§“x½’L³;É4m=Ø©}üëÑ?9¬nÞôè‚vä{+vfáê6vžömšŠË/î,^~k«(kv´Ø¹ç ¥Îmß­}9 ýföËUçq©–Ç/‘ô"%ÝØKòÜxù)¡H.ë"æþe›UòhÙÓ;v§i}ómQÚ·i&.=¿“˜1³èÓ³8øÁ.#Þ2ŽƒÉ(õ¤GWkÆW‰—ÃhËŽ(I]¾£-;O¾4h`{ËhKs°ó M%mïØýxîõMÆö‚ÊÏÄ÷Ö˜Çùyv…·¯q[˜-ÖÞÚgôˆÞŠ‹`$ØqÈΓ‡xµØyÂV˜yûùÜ–~ØÌmZ”•ùcÙdrI‘dG)À‡êÊæ Ðï&V(}Ъñ”}–ì<<°§„3WªZ»+…ÃfÕµÆ:«ÞØÉ*yRú…[ÄíWw-8ÖÖíÕF ëP]W'yŠbæ)(YF[™ã3çoQ‚«ká~¶xûJx$ð ÊÏ ýá.©ú§2<ޥдˆœÁ7lÞ¾’䮹sáy*˜ç#exK!ûXB ›¯8U”þ ðajëâ¥7·ZpÏV¨Lë 0«V(– &½¥a0]×”¤0ëêæbÕ¡îUâEÊß‚)™y͘¶²óÀ‡Ü0¨ÉF@8ÃzÊîc×—©ùßfèþ<¬}%BµÂ¬/ŠÁ€‹Kåñ€/l=` žê n÷ŽmæÚCÁÆ}Èžyt nj¨®¦}%ºP+ÚUâ©n›Œ)5ÉG‡|y쌄Ì))ã€î¹ét#ÓF]YûŠ3+u¥u뤱¦c;u,ý‚aàçëæÄNœë„·zÙ»&°, 2%µësÇ|(ïä®ê†¥J Y1­#. ½y&çB8‡e|³2˜ªÚçjavûtÈþÍäKL«<Ç–6äô·\÷‘Ïqu‡=L,Ìœ$L×ÖÐb¿U+Wöñ‘-ÌáK¦0kŠ•J•xZ ³æ0«Îí6ò/Ïk_jLaVÕ¾ÕJ¥J¼è‡êº2<•Ÿå¼†ê…ê5*,LzΓ“£¢QIå¶Ð4qæº,ÜíÿÚ`Kž1I©©­þøQ£kkQ×þ#ãp¨!Ñ·Þ¦ kîìTð‡Á ƒ/ÎèqO2É#bÞ O¹L=ÛïüQh>ÿazŒ•¤h½¦jbT‹™GÁ¨6t êGÅ$:¸sA0þ\ùo¦Z9¬žxr˜¸Çóëc'9ê!°ïPynÆ ±yÓ&ѾC[ÛOðÑ–fþ‚NhÓ´`m.Xô™'=ÚÊ4ÏÆ^)qí•VãÕ…ýOÇ••šûUkR뉎oyŒ(ï×ÎÜÿf­øÇÊ/-×ðÂðª\ÞA4k’ °xÙçâà¡úÃFÜØI0>:Ø&‹s.ŒcÁàs[ ]”5ÿ±$9œÍž5ˈ„_ø á>ÀÀ¸ìÃI­[÷î3ƒî>Ü´A¤FY¦'ÈÕðJq‡c¼ž3ŒrLéQF=~9ã€p¾| / ¯zÎ8 Ÿœ×1TLa×2EK…—²0 7 RGå¬W¥1LLó>¬«U§'¥¶Á@`^¸Å‚±À8p…“Ú·û÷‹“ÌÆAä2.XäöYVO˜Üå@ÅÅEâûïm'ý{ÿPTV}!úôlíxŽF¾õgœÖJ|´io”jr–TŸ¦ûeï‚#=5g=c’Œ…Lʺl½æn¯äîʃg=wó«ä°nËˉèP­{4õº:-‹ëo"œúÚºp½ùaqî9T[/œ¶F n"ýÙ²ëøGs7× D/­fýle¢Ô'O¨wy³½ê1ŒC½Ûð?_ ¯z4ŽÎ‰¢ðçI!VT” f*&¡Ý¤¬úô8ØË‘X³_ÚÔu£¡jþ¯^õà™TÜ:‘ó5ò­×ujˆï˜}™¢+,<ª¦9» ~i¤‡Ë~\Ÿ»5ªÎÞj÷¹ ¯z\ ç¸}¶òÅðªGëÑ­¿·NO¨Ç¥£k6|%úôh5Ò“•w7=ˆhmòZ › Ø’ >·^õø\á·ÏV¾~ï!:îÉ^n¬—ì< g+6Š~.ƒ?&tj_ …Ù«^OŸ£‡¨{Õ£úpQ˜# t e½Y¹~Ohí³Hž\:Ëbß^¸Ðäž„‡Î6óè!/= $ytõ¸›ÛºûºîYëä'¿œrš¿nðÉ–ã¯W~jn÷íf•Vk7e/yô<%É8±ä±ÑyÔ»ŸŠmÂ9Àêzvi•u¼{ç–bÃ'ûDßî­³$ZÂ^šZ¦'4/eTª§ÄäwkX8š«¸Š´ÞmD¨0{MO„k—¬÷eƦłv÷l¹žÓŠQ¯©|¹^vÖ6F[F Aëµ]‚H=¢Ñ–,9^y­ÂY9 ãuS ?¦[àuÛ“œ†Áž UÀkÈÒ+—{€¡‹æˆÈÎ+ÌöCôD:І|k8–p`,~=ÍiÑÞX··Ö«^O¿õò ÌfF(ù`še-|cÈõ˜ æ“‹$y¢*–EB(+™…†™ø<|Pca¶¦ŒŠfΉe[¯­A¼ý™9•!ÿ“ lSŸ5TOdf VÄSÉ×@à"VÖ C®—Mîxaæ›ò*ºqѲ??|P£9¨$±í®i â)®Ó˜ïÏ¢YÙ}¹T‘§'¸åÒéä&àTy¾ÊÒî8ƒËvzB(+<}@}ºØJî´ZfDúoì$O=¿¦S²6PžÎ—ë1K g"’,zú1:±ˆ‘ìÅ¿Ér=üJø½Øý=ŽMNaŽÆÎã•ݘ¢‹™ÒÃAa¶Óy¬ ³Cd0”$×Ô9e2¬7@Î%ƒæ¢ÌÙßê@ yè½:‘G‹×)>Ïß*+þ"…Y8*ÌîCuÞ¾b]K}'u®±Ž•5u¹žrd#!tÔsÉðH/×?7ãy‹IÀîïñ`d#adž„¬¨5lgpí>íô¢sÉc)>?÷Çчٯu×¢×HÓv:OP éö÷üœè§'ôHq5/gõº¬ûÄ1ÔíÛ_+Z¶(õe$,¶ÓªÝl,(5NæÏÌÛdÔã׎ðwaûó,ZñE¤ ³ê.ü¥‘ûñþ©VïÅ{Ç7~úu–RlKn|¸õ¦LåÔ¾¢Ö'þÔlå°_= bÊ*žyÌܾzÄ8e¸ ¦7~{ô;OôìWÎëÏŽ·ŸžHÄ :=®Ò°r)×-=íD%\sË™bÚ˜ÆöÉ˲~±ä‡ÎÅ,óât½TH~áx=¹.Ë—˜ý BÏÞ7À(­Ž-§t*Ëi´•Qƒ…¸ôÜŽÆõˆœ®Éϱ£ÒâAÞ¾¿ÜxÊ«ÄWu÷\ß#¹½Ñø½³üs±mÇ~˃Û[]klÓqÐ…}Ûzô”ÕÆþS£Î6ë&'¯‡{÷ÄÆïÖÕÆßâÚ£®ïi·õäCçœÞÆÀÁ=áÞè¾üŒ¶¸>‹{Ä5ˆîÚU4=¦ÄÜß[}ÈxÄ@t>µ ÏéÔNÇÇ~;y•¨I¯œáí+jÙþÇæÞÏG>Ò`™ˆ˜§PęƎIœèµi™gè÷yCCêìKw(¨IéQf§ùÅíyÖF ‹xûJ„Þ8ôœB2ˆ&ãä:T'IÈÇúd ®®0&¡®ÇJrcR˜u…í+:®íE1÷Ä”•h±ä‰)Wæq‚Ú˜bŠ)¦˜ ñÃæ<œüy$~,¹ÓŠŠ›ŠŽ‡Q}Í7qïÇ”#óÚ?‘˜rcžïk¾ìF–ÿõaQÖ¼‰8ã‚ûÏY¿d¢X³î3ѯ×Iæ1·ócRÈ ÍoʤÆé­(µž·LW¯X@Y=îò]ÃïX—_0¥»iºhÛD³K%‹¥Ë–QJJ Û¦xùÕW}¿çÏgÄ‚#vËÆ–îÓÔ{ϪÏáÛÃoÙ¶qM»e|8ÉeÉëQÛÚxŒÊÏxŸ’(ªêhŒ¬>x$;Nÿh ;&•«@{Ó/.&_Ì‚7F4F4X}\L´—ŸÐLµeÍä;qúBŸÌoM5â¡l9qÞ ?òw¹§¾·Œ¥A@—ö!®Zm”J”4t{‘äåÅdR5Ò`àkÌÈ5çÓ/öÛߤe4œ®8k8½Áê, Ið®ˆÛ=h ’S¿SVc‡Æ’éhµžfãwËý4 œoün™¯ñ£1 qXïdÈgh|m;õô#X¯=c!#Ÿ K% ä 2€œ£W+ÜËòw„x¤½ª-xeÁóq¿?ë²)iùù´×ܽ,/ÐbÙQ=ç68äŸw³¸A] |Dp¿²ð{¸ ]²ðŒàÕxœDrZÕx’“©FÕ$_(]:!àžÞëÆWã1(»„¶}^ÖÐN7§S–ìŽ^],ŒŸðt_ÛË6ç“5ôÛÁ“ò㚦ö¤ÏˆWÕÄ`,çÚ)×Þ@¾Ó[ÒÆ5ËiPöX•drqAkÃG1´C®éE«ü€Ç‡õô;ï¥6ªÊËØª ?ÿ6—þ•òÎåSåJe½ý¦£TåÚ²”xM)_ú´åX|´Ê/Q‰ó¨HIéc:C6…Ü\~JÆÈ‡¹1߆}ã7F»0¬Î‡ÚõÃçñF*I>Yƒ™Ë¡ §OŸ³]ø[{Î3æï^_ôÅÿ ÓG«üŒ‡Ó4ͱÌc6Bçüò³*!ˆ†“' =#ƒM,NÒ E ¯ÇÃérÉ„Ý5—_0-€Ï¯vhIÀ„Âñ'»Œ—¯\]*^2¡8nÉ„¡Æ³zÍ6œŠÿú19Š 4ˆ³ýJÃû_Ò£ûM.,VÒÉ/¤•ß6•WñØwuº±ÆCÒå²D ®·!øãyá/Ž”7ãrI/¿DE‘Äã¶k·î¤™”Nì>;Šx ÊÏÐOçÌ©s§–¶/ÈI“g‹ãÇ u¬l€;üñÆÕ®–LmVµÄËõóîStàÈ9Kò:ÓûÕé%÷‹é\ÙÜP~ÚKÛÖ¢ëT²\ðÃÀØÒU¹Á5ÅYñ"QÅáþ\œ,›ÊëÔ4F¤ƒ!t¸½à>uŒÀ]cÀ'O÷Õ—_²9>fvÝ iå/†õ—íŒýñ8Üg¯ÇÁóx<¦s\œ_~ÁfJ€ø:\_äÌšÅüé˜\¸aýŸ+ =222˜žÕ4ggÓ»3gú‘Òk]kèŸÊÜ ­"yí<œî1v‹a¶bͺºûds‹Œ¤ @ãÇìdŽÃ†§ ))>§^#G=á»÷СCŒPx\ߢ¡vA:ðHÈ=rÒIMK£ê5<_ÿì…¼r*ŠbcGb>ª………XHˆUÚz§Y_phG_q Gg¢µHá.Œ”ö+k2j•¬5J)ÿ—€{0WG;_Àµ ½³/ž†µ×õÚ ?×>Û*0G+‡[lù$¢Áˆ%éh5§–©ñpºÇÙ®3ÉÁŽÀLesAùèÑn´Ç ÞEðñ¸vEç %£YÍѶ€øÉ!’×ÎeiäÌx \‡L¹w°Öt{_7”Ÿ¦ANû`+~À^ÞŽÿq‘ÖévnÉ»÷œ„Dr¸³pÇû\vºÆ‚[Œ©ïo•õÕ&HhÚáqé L–ÿJ!-ý&7 >”¯Í§_Vâ×Wf…d¢¯ˆ»ˆ':óx­î‹GK2¸?“C±àP{?dâ„ÊÝ·j5>¾ òr PO¶«×®eNÎøûÂò‘ÑO?ãw®q²ÆÿÃùýÇSJJŠ)g(áx ÔzCc³J:·6}•Je,“rÉl]Óï8·J:þþ¯öVI€¼[ÿB>}Ó†•,“ÿŠ ]=ÐÅʃ)ŠŸ¯â)ïo±%±þcî6ÏeQ;ô¨â Š…ž´lÏ,BjZªÏ+#4ø™)YÑšà}qDv6›îG<š|"˜x 4þ¢Ffx֦ǟˆ¢{F8?üßhÊiúpÜ M¤ypºÆsár!{“#åå®Oz˜\“ÓzT„c¤Š®Ú-žõš öùüÿ‰ÊcUã1[ëÇ\á4zMzO8ÏPìj£-Œ®‘¦WÂ!`ð%qK0«ŸäÀ ’“wµx°úñâÝ,óŠÖ¢iãµö!\çëÓ"A¡.¯Fegj\ŽÔ뙿T ‡wüžΔ£hxo‹î{ÏPèRC¨(¯¾‡ÒÐÚµs'[ ÐZ;·ÝÀ^ÃɈ߃óÛn¿Ý²/é@O¨>—£ÜàÂíjù½ð¸¤+®%r™B²àðð‰ó–vKE©‘¡]ÔEÓ“®¥kÜ…XùÐ[)?SÇáÊnmú°*I‘a-•GÑ?#B9Šã=DC©ñØW^¯òjüÁcçéí¤GfÄkPïÆìøÚlï0yrÒ5tGV=Ãx½ÚXXºú7ºpñŠ&>…ªV*kX¤z'nÞyºÆ×C†]„»šôúá N‹ñ' 3­}F8ÚB¡î‘Êiúðçñ¸uùŠ»4‘¼Š@ãIoX)ä_½Úå-9ˆÃ}?ï¹:[¾JÅ2–ÚžøãÆ<¿¤av1Ìž¡YYA7õZôŒXä!ÔgDš>L»kg.›Ïã!Ça;T”€ù1FUQ?#™B¡¦þ ó†,†BA0œÇCqëj üŒùÁÅ´kL`ÒϨŒÊ<ž Ãéø¿)¤‹÷ úr`‹•¯¿ü’Ù¸´C›Ú4îNwר- 2?†¯ÓB:|è3eð^OëQ¬uOõ]{«ïYXGºZž¸M ¼ƒ2§pô,5OûH¤Äƒ|cê8 ú+•*&i­þk­M/Òx0#Rô…ײ¥_Bð•´Xø&Zƒ¢w) ºaÁ Idg ö>Tµ^À íÊ_Qzý’ h} ßÅ‹>U»›Øb=aߥkµ(‚ÕéN‘Wñxk üÏyÃBOíš+mÛÃ@‹Á}ž04¡)"Ú£ZØ£+`1Ó1Ã`f£W+0£ÕÇG²`ïÑ/:³ÒÕB߈ì‡XÖ7\3ïmÿÿÐ|0¼¯i³òä·X Q‘[³¥#˜ÊޝÏ7ºú½œ<.îj™mWÈËÊ_¯m¿Q¹æÌÓz,ÿ–5ƒ9H¡É5t À¬h8¼Û¤ï"hÓ‹eDþQºZŠqW‹¯1i`ÇGO  ærhó."`ïk8œ4EkaÌd€m2pòÒ.æ3z’xœ«ñO0G_çDšˆUÑϳ:i^¤ñ˜¬ÕRBSŠ0YÕP ,?Š<·›8M ]ñ"4ý Wú±Ð”`'1ZêlòˆC¤²Z}úûE Ø{àyÀ³D>TÜ_{ÿ8s‰ÆoÉž÷ú3¨E“Êì"?8¾0â&ß½ŸgÏLL,¥v][°´·¶©­Þ[ê×®@7eTe äö©j¥.Ëòóþ]0y2VRå8ôýìøñ[ŠGýäïy|Q•Ç!½›PoFÞ…T§F9öþ«s=&ϵ±viSKýXj}É[=µžêûîÁÇDñ¤úNç~¾×—äyýö“¬ÜZ«ïÿ¡¾MéËõ‡Ù5÷óòÛ{†t­O5«$«rÔ¦9ês 7ʦˆM»~gu å‰ÿ…z~¸_S_9¢nuoŸÊžaDÈFåWÊmÕ% ï~ú «¨äü«ÓD% œÃÐ-\dCÜ¢•Øoî • i8p~ãuUTKf縆ÿ3jP3ß=O½¶Å=òÒ÷¬¡¡âqÛÀÔœŸXEFÅÔ>@£Cž~*rŸ€¼uPÃêý 7üF¾@~*gÁwôÒÿöý/ÄáÙ’xüˆÇ}Ï_o¤!we1ÙÚ_%’ ¾÷иõƒ´wÓ?Ù9HçZh¯¿1s)-ÿêê–Õ’Æ=u7íüõ =ÿò\vîái[5«ÍŽ6ÿ*k£„k`:b–qÕ*ÂÁÿ¢:ÍÊgÚ9_Žj¹Oã9/ßPj4ú›| q!ž‹ä’ˆ:þ_ö®ÌŠâZ†a_dŸaADŒ (n,Ï$²øŒ æá|cÀÈËC…xqÄ-êsH↬IŒ€Š F@ÔAfYu†M¦_ÿu§ît÷­êî»ßúîÜuººþ:çTÕ)¥Æ*(¤yãæß¬´ˆ¸ù…¯\ÿƒ+mGAA!ádsoÓFuòóNHáUŸ”üŽh>éÄSMi: )&œ‰£zäì“Hùoœ²œOuõ*((¤}Þ´æ¶Ñ=+ÿˆ+;Ñ'û{·ÏR¯‚‚BJ´œ›ƒdRÙàE: ©A{õˆºvhBŠt2ÿ1~4íÛ[B« ߣåKÿÎŽ];ôRö¹pþËtßÝØÿüó†ÑCL×}½ç]ÀþçŸüüѲRv~ã†c*Ïg¼oÔ¤sŽ"…ŒB¯Þ}©e«7˜þ0ó!vlÔèm/ªÚÇkäõ7ÒCSî¥×,gß;uêBÍø-=4u’ð¾ÇŽ–Ñ¾}{¨Sçóô߸ˆžžó#6'% ˆÍJZ ¶¿´Ä h80Ãø}ñ;ÐR`Îñó ~¦˜Ý½p-̲7–}èº ‹W©É ™»Æ8¡È~ÇxÞ© ¸ژ̜³ƒ"…˜)mL‘Ž‚BŠP¡ö£#Mÿ«–wÓõ$R5z¥  Rd“RùRI:°±”¦£  àOÒ©¦HGAA!µæ•Ü>ÀóÂ=ö§ÕÂã—ömKôäWùü^À€Þ¹tiï6¾jŒnØM«7GÖåøK¼Ys?’ŽVá[F•ÊæíÎÏuç$Ÿ†:Ôü&¯&”Ù«ó{dõ—M¾v$kQ÷‹|ä{ù4J¯Idön©ÉHGAÁ“ÝhHÛñ™L"øm&³¿G¯üî$WòBfÏ>IÁ}=OG&›_döû+;ùBþ¿ñ&”Ù«&5¯‚¨éh>—/šŽÈ§Ó´qmз¥'Dû¡ì½¿fOäkM§š{K™l~‘¹šÏ5[ù,> ÏoJírxF¶³Ô¤Ÿ_Õž–¼½Ã$“Hf¯útdõ—íçåö2Ù4ŸËGϪº{‰pŒ~y[zóý]a™*|¤éTH5¿¸RÙ|"³ßg“ÛʧUUc׎<+cÍÕ«^GM,³g5I¹³ª¬ckJ –¼4'üÿ‹OaŸ¯>7ƒ}mÝ@ëV-eÿ—ìü:FeJdƒ 'Ž•ÑSÞ>Çÿ7K|~š‡$ONÒþzòdZ´p!Ksòómiíš5®JÔ©}‡¤I)•³’`½–dò$Ý‘|Ý/î¡é“FS>ytë}3Ù±:uë‡m¾yìÿÇ&áMîäÀ:õBr¬+\FýÓIt##Öën¼'| Ž%¯MxÈ\Óå/--¥‘£F™H(77—ÞyûmzcéRê}Á4~Âjа!-Ö‰©¡þùà´i4nÌv¼¸¸˜.îߟºvëÆÎß3)´§ÎÐï[¢ŸŸ[P@6mJŒœ™**4_Õ_Vh.ò/‘¸õ¾Ô¤YÕ¨ˆ„sÿŒ¹Iî'“+ÛhÒyt׃OVõ„]{ëÄ35Ez€–t¹6ǵÔÔê9ñIØM' #@ Ž«®¾š}±àû „~«“Í+óæ±< &h>‹.b¤õ€NVÈRpîRy%VãËêÍ$þËJ…rþÔ£÷ÐæO ÍjªÞ8Ó©œ'›×ÒÌç–šLÈAC®×IhNÚD¡d××L>®½Á”ä&ãòÅa3™O¤9iûBÕx‰Àsò«öc‚v³vÍÚðÿv€fbùtÓgì;Èæö‰M×Ü¢ÖfϦËä%D!'‘¬º¦ãÉ$©»,8{D)Q@9óùeL€™eÔv¬Ä­¿È‰rd%S>”µN½ÌÌ‚O§Êì2¤@.¤d8ê’]%;‹Øg“f­˜Œè,P—S&¥Ãö…ëÀw£Ö—\ùœ}:Eßî`æ4|‡o„Œ¨4½`RÁŒÂ9˜dÐzøÿÐxpýÊÕ«™fóÁê°Ÿœ˜åÓÉ ëÊ‹IZýG='¬³ïæy—À£OˆUß¼‹;ÓÀþ}+_"ëšK¿¼¡”Ó®3ó»å´íd"Õ•Ëç³s\s…V4hÈhFRÉ”¯¯tIïsØÿísP¿žÍ=[ó—ngŸmø†ÖlÜq~â˜Až”ëùy+Å>׳?‘BÙ|._‚ëNrhu œYN`DÄG —¼üd˜p ýÀŒNáD#ß·%ež­Âý‡N8Ê\áÑ$«»¸B[p[£Qèí¨ñV%vÅ5>Ÿ |ƒ®ÍÊ“¸r%Òë‘\ps‰|`¯É±ü™ªéØS"Ò¡ÉY“GJOѼ7·ÓŽÝ¥ßüð#­ýl?+oÄ€HV&©¦ÏðêºUËXƒÉiÛ™9SÑë¡‚„à4F¯ˆFˆy, §ÐpòÖkB=ï7p(Ó’pÜJfü<ÿ5ÞM¯l˜W„߃#R¼\(7ÊBáCæù/†?aZ ¡ÌF2æ×Ã4ö€ûŒ½mj8?]?’8ráÏÜúzûI§Uæ‘ç×èɛֲd•¹gõœ$h: 4ÞÛAàöüს‘ þ¿ÄpF‚`ÐàÞ0­CêÆ{ðFÏçú¸žH‡Oå¹à·#O¼L2€¨ÐhʈgÇ~§iKFH15òj:B¹ÑIðÑ(˜“v𦓳çJ>?NŒÔáÓ‰Û¼BƒáK¬¶>|"Üáhô¬\¾ÀdÆàc'Ne Ðø¢ò{Ä<ÙN*¸sV” eÃïwêÚËT¦Ð¹Â| 4\N(ÈϵBÑsbþ0]SÞúËNuT2£‘l¿–„мáY 2]>€DÂ:2MÍNË;p*½¸|j¥f³ÀT¯ÜgÅÉ9Ñòi–óõ^|øeÞØV¨Õ¡ŽmÒ©ò34é7R™Œ Ÿ+ëæÔºy= ŽÑÇúÿƒû·ÖI#D8CòÚлkJØuwÞp>-Y±ƒjÕ¬NõhF›¶¦[G¶¥¥«vѰmiÛ7ßÓÏ®è@¯/ÝNC†òõíÞŒÝ3õ§vƒð¥|Ñè=òÿ¹Æ¿óNZ ×¹C´N>œ”ãëX|àÂ1ÈU—æÐ;–dŠ/´·j§ë9éÉW>i¢=š³ã9-ê±ïźtÝ•X†.ç4¢GN²óø\õÉ^êyÞÙ´ÿÈ FL¸ní¦ý1„ØP»A($ܿןÉ"±ÁÅý/fä‚è0©íæÕˆQ#Y®{&ÝkÒ‚ÒïÓËìUMG>dHóJó¹|A0¯ªÖ^É^nn6A»ŠÔH2c#Ùw›íÉ®ÿŸß¿æÛwyåêÏYRð6n=D½»5:_ÜÕ•FtM§B½µ ÚÚ*lü æe‡¾?ɦø{ /ÿýë*óŠ ùTøHÓ×_¶¦^m…L}gzãÔ€¿­ø–i;Æ ñ¤ /ýý+:U^a‘)žõéH5R´£àEÚ‰Ô>ýâ K~“Ùo‘³ý¾5­‚wQMs¿öÊ«b[álåÑQÈTT8ö¡þ"M"³WùµBj^I$º,¯§ç+ñƒBñžDíÛµ öm[úV>?õüvç|§ìH‡Ìý5#9»š¤·¸| ÷Ige¡xñm[Ðe>–Ï7æ•“OGpì’^-èìFµ2Z®£ÇÊéƒ÷º–Ù«[™W“ñò±#Y&›æsù(òYÏhF^}Žgd;·C#zkõnÚ¹ç¨I&q`vÍWõ—È¥;äsù‚°´Ì²ÎÇK„ÃqÍ€6‚É‘É«Û ËäQ‘})ù^>£VÐ¥ýYž•°û¹ióW‡ šæÚ7âÕúSA¼ü(K¾õj #¬•Óµ[7?a‚ðºqcÆ„×iñëKKKië–-Žk³#žõ[ˆaì$s…ßÖ^q•¹o‚xz•¹fX> ÆŸ Xh # -ÖÇAsòŸ`çx”Á ÝÀ>± xdútF@ 6¤o¿ÃV¯#$F®žD5bÔ(Ó½£² 5£Lþ½ÒTä@¿IìÈnöÝ»êê«#´¬8çaKyl'N6Æï4¡?=ÿ<}°º‘Ïâ…‹˜†ƒkqÎzïhXǼWäŸW}:ÒÈ~ž‘,“Í/2û}6¹|ÕLþMbú<6}OZH,¦´Ž&Of$ÍȈXïmôüC&¡Ìš¿ê/KÅÕSòyQ>72B[¹}âD–KgåêÕÌs àQŸÕ5çÇxüþùà´iì<̨+uí ‘¹éU\\Ì´ë½)¯W·–ÉÐÑ+%ŸçåsáÓ`qÀô1ÆCέ$ãñÜJ_‘t@XÖ€`ˆ@h4Áb"­J&á‚OŸÕ_V·Â{Y#a‹YdÇãÈJžlس{tó}¾­À¹ä;ê’+cú‘öÛÑó´.Ê'3 ·2kY=«éHê.éšö#Ç.›×†k§®½¨IÓVl/lì‰-j‹¶n çû'¯§LŒÌ|ou6™¹>¸ýy +vÇ4WšNb䳎ôlÝ~„ºvlì)é>ÞÈŽË$ž§ã3M'U]%v€¹L{|>Õ©[ŸÖ.«Üžv*öŒh(ë¼eÛ]ÉìÝÉâºKYä@˜ þ -ÀˆWŸŸ!<ž¹zN%á+£~yC™™È÷÷6’‹ì¸Òsâ“OÄ=[·Ï’§9V¢Õù©þ’>#9d:m›"=úäÑ«ÏÍ`pøÀ>Ö0­ÇV‹Ij®('/77A¨ ˜&M[Ò­“f˜ˆ–Oø[êkÖ±¥’®ŒÉÉî/y/Ï1hÈõ¦ï‰óߤV°ÊeôñX¿[+]'ñ>p¬l2€ÏÖ^r„¦–A(ù¼#s…æ¯úËŽç¦|X8§mg6J/¸ÿ£dç×”Ó®sÚFJvÑ kF3ù¢-Wȡܛ’Ô‰ZÞé«’KÝ:ycëÙ×¾ Ë+\)4~ãÞ¸ö2Gƒ‚选¶nÕRzññ)&R‘àÜá{Ù°9>9Áàœãä…ásÇ(–ñ|¸÷Çw4þèÞÌèeC9îŸ1—@qBååBV.Ÿ¾2ó2Â/U%OAxw"C²ãÑFckyj/ó±ÿÖÉ3„ÜqÃùT³FV„TþªK±*äÅslÖ‘+>% dg;Yp¿˜F¶=;P ûujfW£æMêxN¼;uâÑ rø®.%òĵöªßÀ¡aMÇ-ø(ʈÇˤy0a0±ý¤;`2›ôç–ä*µ7&UzõMÚS,æ©Z{Â…ÝšÅt,Òĺ)€f¢¼~«¿¸†ÌCæÐ\6ÎÚÐî´ <wÐÑáãh\\«¦OÍ´4nhL|xÙxFV}c˜¿G/˜;˜;ć¿rAÛéÑg€0ßÊå X^ æï ü0Óðœøq#ðl¸ïˆO&Œ[>ßøm4Û7Úií‘3hÀ¶ ÓŠ /èÉÎcé¤UDÍgušŒ!sQ#áä‡+›H0“OË_`"$#¬÷àCÏîgìót@r3û.‹ ¾ÌѹËÂ?­Kxù­eæÏ ŸUë‹®/ñ5ëØœq7O _ÀÉÉÅH2[*ÃV`9V£oØ´)|þÚaÃè·Ó¦E,òL–„š/ƒx‹H'Å2ç·$}d' ²qŸ•hžNµI¿sN¥¦S¹åžv€70£¶bâäÀ…ðê$›p"Ê Î æ4J>ïËçVvh0s L!.d().afš¦K^?Õ©¦&:÷‹|~¯?î.pŸ›P\[áß>GŽeÊ—*·‡¦ù«N¥“®ÔçòQ äÓ‚•zÑÑ|U§Òp¥˜)J~€L6ÍçòUA>Cè„?ÝçeuÀrÅOu)«;µÙž/å#ßËgõ|wèµ8Û[ó_Ú,)Ræþ¹ÀWµª6Ûó£|ù,>¹K¾¤¶dÉ xü¯›MQɨ½ùJÓQšŽg5ëÙBÝÌ*ô°©å¿y:ÒQŠŽRt<©èhäÃx:Pt¨Úy—ܼ % žÇ½zQÏÞþ òÙ† ´iãÆ˜WšâoZ^¾{u%>ÙNö¤8“œ-!¯¶O˱~Ý›±@^^ÀªOöêiŸ+³¿Âgäš­‘Òt¼H:æÉ7]Û™Úµnà™òìÓŠÎmw½°h›Y&…+Õ<[GʼRðë˜ß[/G˦u©VÍêUCçO²¬‰ÖÈ΢Žm¦U†ÊNÑÞÇ]ÕQ•¦£8GÁ£œÃßÝA}[yVŽ‹{4§•ë÷ÚqŽPÓÜ¿55jX+cäxã½T~ºÂYJçéüïŒÔ›­Vü×ÔÇÔwó§é ÎåÞ‰\å¤0tíØ(£¸vp;ZôÖI ™‘eŒÑjL*©”æ¤Ù$·q„Ä‹‡"í}Á,Ôbæ |âì P>qŒò’ÅÞIªÊf‰ûl—25}ÛÖõ\•_:zU¡Ì.… ×ÜA¼8ÆO˜WÁÃW P‚w­]³–}ww'Õ2UHã#Ó§ÓVA¾2o^Ô¿ ’-ÓI7–¼VÔ­--«Ù¼Š2æÌ€¾-©™MäýO>?@»ö•ž?OW »v”3õžýÇhíÆýövp¯æÔºy=éù­ÛÐ6›=­Û¶®O}ºËƒy8|‚V¯—O§‡ÏA¦âž*?Ãd8xä¤ôžß”ÚåÈŸ;KÊèÓ/*ÇÍ97þHh/ì‘ÄÆAÃEƒãÑÓ*f”Žd&׿@®ÐÞJŠ‹)'7—ëÿߢ“ìUW_ÍŽãûƒúõˆ”øëÉ“™v‚]ñö;ôØìYL»{TÏêÇ@ÂÅú}W3Ãÿ<ä+þÿÃìÙôÎÛoÓŸ Â× ‹/u$KøÕJX`±¡ƒÚ8>@4æ]šÐïíŠ87òšŽùA&×]ÝA`º¿H Itk·¥š5ªÛæ©¢ ËVî¦ã'O[ÊW—.éÝÂ6?îŸwQ+ú¾ôGz÷£=1ÉBB’=‡`h3š+_ˆì*«?‡k=Æ^ý¥KcÖíÓÑ$2»2 py@²wèZ Häù¸ 縦ǵ>h<¸&(âDCƒÂóây`~â¼q÷ þ[FYŒe•Õ_–lŸ«æ†pŒÎjßõéÞ4ªÊ@ô–ÁMc5`SS~”ɉpŒ€ÌÖ28ŽЄêÖ®nÊ?d`t“×p½æÒÖ÷[²ÛF3ü}ôÙwž%Ö Ûšd·EwÛ`qDÍ„·D’1‚k2üS–×HÖk í*Ú^N¤£Wñ¥_Ô£9}[\efµÏ‰~E¼eÀo~¼é€©Lñ”¡Y“ÚQç‡æ·rÝÞð÷zujD•×wZƒ;ÁOž:CGt­²q†è8áħéû²SŽ2WDé`…©Í¦Üynw¦Ã$s[×n]M"€ªÐëOJ: ð$Ç{L(CõêÕ¨¼rÏéXf†Ö¨‘•ÏÁw¤cñéüñ¥Í4vhGêzŽ7¶ÞQRFûRÐÃiQS¯Õl´šŠü;77{€ñcðÓ˜‰ËWšßƒÿ–h*‚›áÿOG“ùtÐàã¼G&”Áh)–[Ò +žƒ')GsçÓ 7®eÛ=O±"™5¯t:𹬲ú“n+œˆí”™ß³eÐ_†À$²ÙjW 1÷SbÚ›@V´ccr˜V0—RMšÆrÊê.KVãPé)V³ Qù3¡ ±õ8ZŸCP’#9ísîÕ$”Õê`wËä1“¾>m€ûnøäGãþíÆkâÑLm'pV¦,ı°k¤Y¸üQ†°"žCP’f÷WéÓñW’µEsŠðÏ`(Ú†Âù®¦F§0®ÁžïÜÑ `>`é²× 3Ê%®‡Ìãe¾„0gšË“}¤%þ9¨!s³_Ç7ZQ\Cæ"€H0‘¯¬´ŒÍ×M’ä#ùÜ ©sç2´¡2ËH—kW‚$eÉÎ(ŸNæ–!(É~¢Ž_…µÅØ;_>ï†k˜7®-ãç¸fƒ™ÈœœŒ> ·(;Vn.«|„Üywƒ÷Á< Ó`lo’š§G#tÐþüƱš‹Nçýµ%tùÅ9))'"7ضã{Wõg9PKòk“Šü‰.CŒ¬“ÏÁ_šŽýÊ,Ó¬&š‘lþ¾õ›¨U³ztÞ92¦ä/.ÚQN©¦C.|Æf¤7¢ËP›9#žƒÿt Éyì=]ÛAêÓ€š6®¶Ò~S\F‡¾?UýIÕ*ŸNdþXGŸ”O'ñŠŽæC§Ž<\©<Ïv½Ñ#y©þ¤¡-ñžÇ{L+CÌÆU<oöùNÛ k¾“W†+ Èn‰Ôîk[ŒL5²«I ‡R“:tûõ]My²«W£Ÿ_Þ^:Eçpõ·š5ªMçè„#ªħºð¼¦Â2JçéÈR²µ N4˜õ([˜–yšN¬æ•Òt’áÓ ˆ¢#ì­îs¾ãý°§Vú5¨ôh(fÏuƒƒàáš×—™Žå¶¨ïøî·kÙ€vî)uçÓI×è•qü_6ã1ãF¯2  AóêØú?4ÿùt„A¼âa{?Úø]\ï››ç|öYµhG‰»ú˘ ^"ŸNæMŒaF²¦©ÉI ßÎÓI´#Ù°tÂí‹g ;ÒÑbÐm c!ZIq5 £ñgÜð•–þ2(αkŸ~äGM'´·×¦c|Ùƒqž˜Û×(RÓ‰Q#—äK[h „LüÇÒ7ÙÃAêjYnoͯÂk¨Ðæ?r¬<Œ‡|Ñ'ÖJ¡ ½2ï5ÊÉÍ1…Õ Q¢ÑX’$RM'óŒq=ø>©.C4ùc3¯ÔäÀdi:Z@4'9±BÚÜÆøÇ±*ÊZŒšŽKë*y»A8݃ï¯_b|4hØíÀ˜Ê2l±4BåYã$ÛºÂ(¦ fÉc³g›Bݺrt$ûNZ™#ÙYR¼·ÆH€|¥¸füåöyY/Ö|RŸNEš†ÌycÇv®|#°HÒIn09‘o'kµ…Eùc'yF>_‰Gm_0Y§Âq„ÏF¯$&¸“˜x_ø;ƒø7ÆôL)fE‹)Ÿ¬þÒ69¡@èžI÷²ïØC'Õþ”zåpŸ/‹,¿&ÁèÌí3ä®”ÏWÂ'´cotŸŽS¬=ÿE”µEû¥xgÐi#=0ù~öi5ï£1Ñ­¿å¶ün'ʳǗÕZx‘#Áƒ¸hÝ¢”„BȿŰ™¼›2{˜8¢Èi¦‡o¹GI%É /äàÙ¬ôoWÈ—†Ï[ÍY½tAH¶Ù5fmÃ"‰mu$5’>X]ÈF#µõtA”f—ö"æ$òÉ„†êò…½3Ö!¿¢àÏNeàùp/h Ý#`vù¡Š¢WÀ'´ QÀ"S4±ok%Ù—ìŽhW%/‡,¶õ9%9j: Ϫ¹Ø3ûKDšv aN#G¡Ü’¦»p¥Y²àdÚ b˜ÎÞЭic%ˆo¿µy…† m!E„ãT”¿AöÛo˜Ë  mi®¥‰4'ó ›ÞCëCï9DÄØ!óxb({0EGPbß4eÓþâ}”E·‹L”lF¯ìKÉ}vA›íîÑ*䇆"®{£.W#aÞ ±¢ñZ7~wrfsí†kvŽdYÍá·ñ»Ö­Y«†våe౑ÿ‹¢õv•¹ãì@?Ê+½rïîbÑ@{æ®Íßí{TA1Ž^Qœ3’ÝÌ øbMùØÝ½:È ]‘¶ä¶­ »‹{à÷ùö ?L®²Ë/ºö⚟Mp=߈ÈŽõ9s45#9ì›\lصÁ¸€Z‹a&Ù3’¥A¼œØõÙʨòVÍÂí=xcåf‘pí•C á€pÐØ1¹Z‚už‹Ý=ì~[”_´àÓè7FÚ7™W6eé‚p±##f“â~ÖgZÐÉöA¼üº "†1sK§o~—µ¸gºÎ1¿GOG:zeï‹@ϼU0ZäÖŸ‚ÆÅÀ ñ¨ý=¸ ‰FËÙ>š2¸eo»x: ,ž™>=êç`4aÞ¡|:UÏ*žÍν:|å¢-Zß#«Ç8H£¹Ø[Üyïtw9ÝÖ_vLvIŒŒ)2-D~·ùáK¶Â÷l¾RdžØÜDÁ'ò¹ eÑìwƒpވ̾§ÁB=$ wBK­A ð”äÀi:±øW[&GQc‰ç”¸UæÑšW.—ûvDP»{ð|ð£à8–­#PNe0úOdfžÝ=Üì\è´„q"–ˆ´4Žâ5hA%MÉì¢þoÑIƸ¤XÕ2Cþ¯2·1¯ÄÚ’ÓÄ<˜ãÆÜÀzfá„ !Ï’A~>bÓM¸Êܾ 0Ëx£Ç§Ó=Dš÷« ‰‡«å“C¾­ç²d›]  óIÆ-_ížCp&’ŠVêbÈá&¾tr`|V^"vHíe._šn?/=2„»C2¡È>ÿO‡ —›U‚ü¢{àaãX·$»—]~>7ˆ÷ ¢âÝ”AdW›Õ[y~®­4áˆ`u/s§Ð ¾ã›(ÂFXÁçèX5å„LLpÊrûÃbMg ë¥íbÛ Œ|èÙeNX§2 ¡#oi%Ë‹–AØåÇÔñÐË‹+M¾µöeÈÀj.®,K´Ï!äWZ&O'‚”ä Ñ(NÑæ‰Œk«ZâÓ‘lN…­•ŠæNZŽ›2ˆb‡Ds>¿‡ûvDeªÐìeŽeÐÜû•p/ÑÎÁVª)™)¾É¡‡ø±*¿ëÕâš;·GÊ~䓸t’Õëí.»×JDÏgÌ2¥:QqtÏA䪦cû>ú‘\º:–ÿ«ØÕ-×}~ œç‹G§)àëo•/wˆâ¨Ñ†¯¹6³ÜúSJö‹êù=3‹)ÿÃ/lˆ*ÿÊOöF”Ç¢~Ó˜eŠÙZ†'OGu·ô—Ø¿ào_F•×Õ§£ ït–¸Û±MÎúË&SžkK¨ôØ)éõ8‡k¬¿õñÖýú¹ri=ýkówQ)*®· ™õ×ÍtÿM=(§y=LJ4ýù ùéjÞS¯o¡»þ½›+v^òþΈã8V§V6õëÞÌñø-ü¦¨lÓ&övE8ÙŠ)O­§™wõ¥:µ³ï1åÉ#žÃ¦¢#l'EÙ.‹&yõëp}€››’™ä[=¦“JZÕé²>­"ÚÚº/óÌýçWl/¬®›ŽoÕ5h4Ò6¹í@Âê¯Z³vÄgnøÕoU£V¼öô#ÒsÝúæéi ¯äݲ~•ž #ŽÿûzRž×ŸyT¬éh1:qÒ©çg¹wMMMj^i±…¶PPH3#€¬“Ø>3±þ\;’UJ^ziæ§ŠçÈû4nX‹}oݼ.ûÞ©MCö*Grôèܶ¡é3ÊÃS®^Ïñ>¡IcÏOiù³ì63S)ùééßü„vwŒzvnB³&õ ¯­¿ ϪþÞIÁp̘7Gáø=à<|ïã=4qÄytãðN4\'œ7Wï¦ ôûâšIc»Ç\Fü6ÿ-ëo󄲎êŠö4uB/ö"?y𽄠–üW?gÂzž{6ÍÖIì3ýÞ2€xƒ366¼DøÄ9þ¢ášÛFtaç¾ãB6zgÌs¶þ£|¢†k¼?†{¹RÏÓø~òga%.ˆ˜b’8Ȋ΄®Ù|€•u‚wâz‡c}ö8v›Þ]Þ·{'0ŒNŽcðE­©fìýA=Zëÿß¿Gsö‰ë­u=e|O×õ—¥8'}8ôÃI½!Ч |½«”ïE8A]ÙC-|÷[örþ:ºó÷ÿÒóüÀ^¼Œø¾ðݶ½3Ƚ%îýÙW‡ØKù×7¿fçpïüW¿Ð{ÄÚt“þÒÿñLxš´*”ÏZ^¡rà^Åû3™Q&7SÒm~…ž©xB(žoüÉä·r>ôì§ì™ îkBéÍ"zý^Ö©ýUÿÿö‘çÑè+;˜H „‚÷$fê÷7’Oî«$+·òd)†IPÁ£®èî-Œ•‰/vþ®/˜&Ã+UÔXŸ©4ÑpÍG›÷Wjõ97Lf促ÆdòâeaáœQ]îyn“pÏX\9 ÷FÏf¼·Õ/€<¢Çñ{ñ$Ö“¼Ff7 ïq$,ÒaÆâ8[b‰'~³ÄbGè Þ-#PÿЬÑ)¸¯Ÿùâ~âÎS2O§qÎUÂ3cîúb…4ä`%†LrªB‹1ö€É*ï¼§äï`÷~—±”(Àl…IkÔl «HÓ?„*Ó‚bÅçë>`É/mQVÙª‰g2•p¸e$œL/¯[œÐÍG'“‘>³Ã‚Ùî î­8  M‹íœ—åõ“\šl åÓQÈÜ·VÉìCY²•¢£àIEǧtEGùt2¯Í™æ+yª5j9Xé: )C¶ZØ©  ZÒQÏ@AA!•¤£†ÌRK:jÈ\AA!¥æ•⯡šÝɼ_ÌW…´¢ð¥ë«©§à/Ø.ƒ8sú¤zB ©#­\‘Ž‚‚‚ÒtüJ:JÓQPPH)éœ9¥ž‚‚B Í«rVAA!•šÎéài:—èFO#-à¼þ¿¢Åÿ\Cï,|ˆ}¿âºiaÒ ê3VP¤£4n=¿ñ/êwá¹tû>­Épö,~6t mùr»æ‹­ßÒ;+7Ðîâïhĵ?¡3gB»]"㮡qgQéÑãT´þ–wÑ«é׿{‘þñÊ4êÓ3´¥ë¹[±|%{QñÞƒêmTP¤s¦-¡yŸ•⣒ž‘Lv ƒ‘ª$šœíLr˜ô¨èM“ƒÁ`¤ѹ@ýwdÔðn4°wHã«o˨`ÎülZ—‹ƒÁ`0)„ѰÉa¢ÃÀ7PcŸ5šÉƒÁ`0Qp´²‚^œø Ý6äZºa@wú—‘wÒ²¥Ÿ‡ùùÏ)/Òãä ¿Úp¸‡g@ÉæïÅ5þkýüaìc´pþÿŠkü‡Ÿµ…«ÂâGú¸/!ãÒž!Näîž;oá÷î)sµÜð.òÝ‘öߦ¾‘ùå],ÈÎuþ” ƒÁÐï°ÿ6í zöBz*â>HîWŒM”“{)Ýs×úhÁ?ĽÉ¿‹ú¸^<rr»Ð³' ?¿}äIêÙëJá÷zöºJøÙ·ww yz‰žzúYD¥I“ Z·võ9’t´2ìZ$é_}€>_º>æ{-ZPM°®p ¿ë¾°8æÎš.ÒÀ;ýdÈÏDú‹|H¿Î8ääå'C~JmÚf‰øÚ´m'î¯+\]s¿Ý9¿j"¼Dg5Þ-j¹hãCº(+m^œkv ƒÁÐÁ-jg‰[†þL­¦I“LzeÊÛBóÍ ~ãžM22úÇÒÏÑÁoIt´øë´Ùô¸JZ@(zô¼J3@\@¨T"&5;ÐIM4I¸¢õÊkS…)ÖJ45ï +ϾðªxöÛGŸ„k¯ú® ,Zàzo 9C9á> â‘„ê'5eˆgpýÕ÷Ù»·L9©ùI9LX³Ã`0 †@2Ðak5ÈCã&µˆ ˆ42:|=€P ³¿ã®ûÉøëÔYº~ߟµ€Ö®]-üFNkþûG#hRz¨$§š˜e„û_PíKɦZïj‘Ä.žzú9QsfM§¹³§Ó¨ä0Z™1Ùa0 #AÀ” ´ ДÓ¦˜>ºãΡéªH€ðè¶4£òïšIF@h0­õë‘ך¾¨ ´4Z<9öYA@Zzô¬&6È/â—$¦@%WÐ*É÷)QýB£òñáüeB£„i4ù SnÐd!>”îkÉ’€vιT„GØß>ú¤¸ ÞùÖÓp9 ^zÎ`0Œ”Á€³þ˜×©ùŸÆêÃ…áq@ã» L—% 5ûí|ÉšƒÁ`0®vAnɃÁ`0R Jc0äwPgÀ¯fó7Á`0 #eÁKÏ ƒÁ`¤4¬ëc0 ƒ‘Úd‡‚\ ƒÁ`0R—ì°b‡Á`0 FJ“R˜î0 ƒÁHa²SÇ"Ù¹öÊöÂ1’—Þ\Ʋó)ÞÿpíÚý£åp,CÿÖ¿ {eSÿ^qzË wÑ? KY¦Å‹S¿±Fv‚-”¶hö Xvþd´!–¡ëß9ò0þ¨£æeTªûõÏú4 ÔCµ‘eçkÙÙ™Bfú·þ…‚)l=à ñZ¨£B¦,T/׿€õÖ“ê­±Ëο²S\9Ã;õ‘ª2šZþ<]ÿØ@9 G– –#‰òc-€äkRNgeêéúPØîÃǼ–eçßzªØ’ËпõOŽ¥èùš•”ÝYi†{õmvÒidɲó娑e˜"õϦè5P£†|f³8~â ?yƼx-hvX[çíú¨c±õ¬Ã­­gÀ²ó³ììɃeèßúg%Ü—µ¤öíšp!';w¥ ›Ê©êL0ªœÌ˘ν^ÿøl,_3[._ å—–õ¯Z³£¸m«Fԯׅ\¶.dný÷‡hËÎ }ÅùÅXl³ãñúgcŸ†WÀ²ó³ìÈæ>; ¿Ö?@7äõ™è$Ý»´ c'ÎОÇkÉ)HV¦±¸,½\ÿ,ï ÌõXvþ–][6;,CßÖ? cÕ ­ŽU|²x1Í3‡*+*(#3“nq¬’ÆŽBKÎ ùÁsÜ“~€·_+î-œ75ÌŸÖ·á_Ù¥¯ÌìÊŽ÷ÝMÆ/ÇË—SNÇN”•MoÐŒ™3Åÿ;†§ÒÒÒ024eòdAˆ@<$ŠTˆG>—Àïwß#žÁÉpø?mêTáñjó‚ø´÷´¸dºpÚ°¾•¯rÎðœ;Îj X· ÷^ƒ›Õ!—&O_J/?=RüÞðíRzâù©Ô¼UÛ0<>‘Þ{k"ýnܵSMÝz Çú·©õ±ìÒUfZÙÙ[½Á„Ç¿õO.N H£££®]»Öz†{  kÖ¯šà¶¡CÅïGG¦ç'L <Õß3ãÇ ­Ësêõˆ»ï¤IÆ©ÕÆ<4j”¸°ˆ ÈÖ—Ë– OŽ#48ˆ~O¶JÄôâB:¸–qiIX’j»Žò>;Þ¯uSid‰N³üàjب‰pz@‡úò¸|jظ õ84ÍF–,3ÿk¼hØ^þ‘Ð5ˆ),4u¬Ù‰.Ãx% ¢¢Õ®èi~úöë6¢ƒûÚg±¦½>]ü‰˜&“š2•ì̘ù~(ÜK“&Õ™{Äo=&"t“š6°Aýû{‚ðèËÜL•šÕXìRH³ãŽаNxü.ºý¾GÔÎði*?°‡Æ>8Thròz…ùmØ8ƒ^(X–ÌÖK²KW™iG‘väáÕ½˜þš¬ÄïNSŒ· Ë‘#ÈwÐ-w ùkå Ò”Õ>—nÿ壡pø}âØQZ²h–ê÷µ”Ñìèµ4(˜"‚veØð;„Ú <ƒÖÚ LmÉ)$ 3D*#3Chhï05ü‡ó?hedZ…ë׋|@3ôÑüùÂ?~ƒÈ -½¸ UqB\˜†3C¶ÜPêD–¿UÍï³ãíúWçêáoY 1 o. è—Ë%íL|u>±ìü‰és–ÓβrËá¼&C—…ó¦ Ò ²s僧!íÈÊëÏ?ªS˜òù oÍq@Ã÷Àã/ˆçV/¥÷ & m_V‡ê3`(u»r€¯ëŸD¿^ÓÕª‹DלftYn3®IÀw›SQÉá°{ßn¥åª3ƒÞ—w¤ÞÝ:rAºˆ‚÷¿´ä߯Òsf¯^ËÎÇ£²»ôÜ{2ÌÉëIƒn¹K8hd`@>þ•YBcÓ¼eag „4&Çs#hôàoüäÙ!?˜²”Ú;z|Gˆì²""¹:Ïs2tXôÇŽŸ¡y‹·S³ÌúÔ§{kjvÁùÜ«%ÇŽWÑŠuûiùIcñ*¼©`ªÔ¿@2Wxô8¤ÖÈPvb+¿ZP½B§quTXB} !Œß~åéÐó’âµ¢ÁÄòetºè`—,šMƒ~r§øÿÀè‰a2l fGçŒNjxAbä‰8ÑI¿=ùéRöhÍvd­ŽùÀsŒ<µaÑpÇz§´ÉÊï«vГ£^9­Ã$EHÈ@µï‰AE¢µuiAuâŽÑ'гRÇ¿°H=]ÿ¬Oc9ØDƒ Xm8å^,è\Í„y‚¤ÔÐ@Ëc¤GÇé´˜y×j)j:q¬&‘÷]«I(#µ\a*!HA´Szåd’pÊ>zD).í‚ú=AKò–xMN­ϳÄ{怼â?®AvôHQõõÚ°•X›Ô˜JùËM#£iëäwƒô0p‘š6ùõ]«Õ•ñʰ dÍ[¶õÐb¦Ø? ”¹Ž_ØŽÍ/q_> %;É'*í¶ÿèÑXÊUÚûÅW¤¶Bs‚¹ ‹Õˆ/2\(-5N4®Ðòè-_•(JŒøe£‹Æ¹ziíTµ3¼K4¾zù€¦/–ÇÊ©£wHZcëìð.˜úA‡$w3† ´¶LxWø“å$ýGI½r‘aháP¾Ò@xù ²’›Ú¡ü±ldSRr:+RÚ¸å·xW.] ò'rû\AÚj/¢M›wÚ” ê'6D½Áõ{/„iÇ@&Poà²ÚçˆçÚM!í:(cÜ3ÒÖɽv´û*ÉiJ©ÕÕ~/ C¸§Õ¦Fj½FvØ@™á–xMÛìƒÎ¥}Õå­èªn­¢>ÿûgÛkŸåv­ÑÏoìHeûŽÑÿ~¾ƒÉŽ’¤åËF;áŠ2bÅFäܾ\êjNB4 šˆðÎ5?ªVHîûͯ^>̾Cüýerd äg$Cí»J›i×b*§HôÊE{ç‘20’òV«³ÓÈAOMމã:öF‚nŽ%1ÑC¤m”Ñž:V´uR3M 'ë–Vcã¹qL±ÃÕ Ô¥Þ—·¤Îí“»Ù^ªbßÁôMá>±.V-5ÿ-8W7WmÜ/ð³:RÖ…iÕÜ;òS¿^]2 ½x&Qqô4-Xº‹9‘¥†@µ¦S§Ï ²?òžž-[³—6m;RC–:‰8OW¥–Í ?[K+h¡šÆ9RÖ:,ï˾ÝCë(÷\ý ¤Ã#šíL/.iMôÈÒmÄ"Fi:nô¤üŒ4Z­4h0—šhLµájiÐT‚+5eFÚ:,9Ç3<×_©%|{ᬚ¥ìm…æ uY›†·5;ÑYArnîŸMÍyVBqaˆôó›;ŠNüã/vê’+g˜UŸ•ð#,_þô:¿þyT0»X}jµÒ/†\¬ºÎ4sþ–PÖ3×£îè"ü.U‰ÈºMÕDd耋èâ‹2©xëaªCó>Ù&Ò¡Ê»¸Ý~S'*U ÏŸnó\ýKšÍ# #K–ǸŽwmv’ ¹í@ÊÕ¿BìÒ¹)$¡{—´dåžÚr²b³“ ºY´å° pÚ4Þ›¿ELau½¸©Ø“ ¤eÉê=T¼õH á9MËUòrsòtÞœUL=Õ÷l¡’ ijdõ^Z¾n?åu®&)’ø ýå'Ôw:^¦+ó‚¸á·ËÅEÚ2ìG_îDÊ“š…µ>î/Yv~–BÞ]ÅHDýÓŽÐãK{â„ñ’íÕ#húY\T$ßLö¡šþÔðÔÕ9”,Ùì$J³‚ ¥{ §AvÖí »WX|0ìú¤JPp/ò¾|>2/‘Ͻ\ÿêZ<%á9íË.-dÇ2LJ¶SËYÏNïÕ½;ÝŸŸ/N—D§Žß6t¨8\^ßüÓÐ#ã`YF‘‰ §°sÝY­wêíxdéO°ìüݺm†cø³þi´I6;;[¸§ÆŒdGbÊäW)¯kž¸/ѵkW***¢GG$Ú ü~jÌôå²¥\#u5&e¬ù P×?¶ÙñuídÙùºie›ôª @ß~ýɉväed~¾úÿ1¡±yfüxáäfžz ¼4i¸ûnº®ÿš1ó}A˜öeÌ{'y¿þ¬Î3ò.‘^’5ËÎϲ³3ÇÏ2ôoý —}ü$GÚë 1…ëׇ®Azà$@f´×Ћ“^q1HÇfÇ| Š¥ç\7½\ÿVؾs?}¹l—´Á²óŽüxŒ !m[iý†úÐá“®eš 7 BšžtÇŽÝGkËÄªâœ¹Ž§ayŸ;÷ Çða…fÙ1β[¡ôõs;ö¥Â¢ƒÔ«kË„çœIŽ–èTÒw%‡uådVÆ Ÿzîùú`1~ªß\_½# »Fo§ ‹Ñw›ÓAQ‹¦ ¸ì ³`É.*ÿñTT9)vPVøØsO׿ƒÁ`¸95ÞcéTÕYúû§ÛÅoìÿÒ¦U#&>áè±*¡É‘Ç+Ä’“•1so#À#EƒÁ°5´´ËvLÅùC;ÊŽ Çp•Z1Ocy½þêðêÃg-0à ¨“ÀSÏÞ¨kuÈ;2â« W<ƒ©Ã2‚q(³$ýP×Ó2feï׿@‹ºn@ºn`O.iàOÏÿe—&² f¸AõÎÈÒ…i,FrG¦eÌ2õ|ý ðQ’é3ÊgÙùWv,ÃÔ’a¬°-šžOW÷¼ÚµnÌí0>IKVí¦CGNÅ-§s~ÞðÓãõ ”}-m–ËŽá;ì ŒÕW÷þS_ÿ<.ß¡e³tÇà‹ÅÒ󹋷Q屪èòµp\Ûìx»þX?NÜ–e—z†ÿe¨è‘Ã.åbu ” –3>ÚLGW™–“¾DÙfÇëõ÷Ùa0 —›h½fºÛ%-,Ç…ó­>Y¼˜*+*(#3“n<ØÑC=W,_Ny]»R¦7€ÃEq (ðâ¤IT¡¦ë÷ݘ/íÔ”Vw ¾®”mv<>õÜ×­&Ë.mdÇ2L)êµHN,ÇAž8å<’ü€ô #ÅEE‚Å"%8‡‚j Õ:eòdA~fÌœi˜¯2Õe©„KKºˆ¼¯—¦Õ|;B>+ô>Öìx½þÕ•B2븵õ’¬Yvé";–aêȰzʃj9+¢}jÌ• ÝZsÁºŒ•öÓª µ ”×n¤5k¿3ÇŹ¹ª»„ ÓE|:ÿcKþ~'£%Å…¡ß 5¡¬¹LlYf,;†gemr¤lß1¢n\®n£âhÅiŸ\cG•ÚËõ¯î¹ªgÅy¯?ÿ¨øŸ“×KtšèHÇŽB çM­ÕÁ•Øþ‘Z~ü{Lܾ”]zË,Ù±rJÈPÑw ;Ÿ~SÊÅê"V®ßOßo=U&VdªD-»8«õ®®õT¼ýñ¢}¡`ÚN iÐùá>0ú¾T¶csÔ8¬úO*µMÙ¥•ÌlËNa+È‘¡Q“\¼õ½6c#o9Ìå›@”ªÄò­YE´bÃ~ãa…™2q—ìX ’gcÉN.«}Žø MB·ÞÔŽ°'5oÕV<;qühÔ°Vü'{\™*²K™Å+ æ:) CÐ}òM™pŽ7Èl\Z5oÈ…nGOÓÃ'ŹX–ädÚ¯ÂÓX¯6ÎÆòž@W~µ@hN;J¾]ªvvmè…·æSÃÆT¦^è6nBKÎ Û¼e[Ú°z©Ð ü‰ã•†þ=7²ô©ìÒVf¶eÇt'•dh%$:i¸-¥•\ænw§ /=O•úçûã"&O_v}û/ »î3p¨pršCâÞŸ®§‘ËŒÁˆ{HÊZ€SðÒs¯ƒ7LŸÚÈ`Ù1< CÅ¢f‡‘,éZÜT…êéúPxc:ÿŠše—>²c¦Œ ­tŒ™MêQç‹2Õÿõ©U³\è6Pq¬Š”Ÿ -»*Ä2skr26V«¦§ë_Ò¦±°|¶} ÝóÚž+XÑó»qSBÓ"Xñ³réºeX~Zd°µAð£'R·+ˆ{°¡Y²h–Z^¯‰k, ï3`HÈX8@È‹L“ÁHÀù§×w`ƒd'ѹ]wU;ñóÔé³4{ÑVaÅH¼8RD'†eÈ· )ˆ NËì¥'&NÏ?xwŠèä@:` cW&Ü[²p¶X‘Ò„°ï½5Q<“q£cF\²ÓîÖ»¿Ú1†®ï¼ ŽÜ«EÒJÂS¯üZù@ئ¿F÷ŽzZ€XïàµMŠ|dÙàñ„ï,‰,'¼7žiË )@R´2tË]âa¥±òʯæ‹UU'Œ‘?˜>EÈDªzO½¡=w?H4ÒÕÊ[Kˆ@`±â ~ðíÀßËOÒHc‡%Üúøhi?\”°ýz\HW÷¼Ë68¿þytßm¹ô]I9-þG©-91üWÿÉ\ÀŒ&š1)‹Vƒ"7¢„fÑì0#WžeuÈ¡!ôì‰ç§Ò„ÇïR;¸jÈötÑBë¿ü`uç‰ÎÄ«6~­v#2èØ‘Oy/Ú;8(í¤ÈNk@ rò¸ré|µLÖÒøWf ’bTNe;7‡•¥V(k²%¡Mß~åi!”§ŒåŠç%ThYÓƒèsäuªH n÷ËB~@ÈJvxñy*´¶¶Ãé…Ät÷pYNsÚ_~’ ‹ÈWáz™"õϲÍN²‰®Ð´l#:)ÙÉ혋ŽWq4œ8V)49ÐÆœ»wÔ0ÐØ@#PM¤f ƒ{Ä69²Ã{bÊ„ONUìÄ’dItŒðò¸ü°é²·_¶N¤|/h{BÄ*ÆÆ‚È•6 | W^’+„¼8°tÖfÇÊ´Êq÷=a÷† ¿C jö$óAýûS^×®ÔUu7 LïLJÅEEâÐNÜ·r¨Ÿµ<ÑÄhÍf‡ëƒ×ë_ËޱâÆúÒM7öóÄËÊN3ÖRct^ ;<>1̯œBÁ” Föè”#mLÐYŠi”ö9a‹È|$ÃÞhì¸W)™²“ecFZ`jÐ[Bn”Ž^-d§-*#™}OVù!;/Ö¿t‡]öèÙzöêQëþ5=/Î Ù)Ù¾-t§Ž>œFæçS‘JZžŸ0fÌœz>âî»iœJ†@nà·¸¨˜úöë+ˆ ðÎÔiêï°¦Ùñ³öÍl £âH¢€Ü@‹ƒŽ-Z\fLÒöuI²ìÌ’;1ÕõíRAX@JPæV —ÒÑ“VÛ”ˆï)dÇH² õF¥6ÔS&Oý®¨¨š Rý½bùŠ‚´BÜ YÒ’ÜïÛ¯=9fŒˆï¥I“BÏ«‰O© 92nísŸªŒËëiÊÔ¿@:ìø §™"ÑÏ+«ü";”s4¤o=åV4]e¨(JÔS¶­ÄCâþü|º¢{ö%€è@Ãâ#ñÑüù)Ù_*†râzš*õφÍ ß;ƒ–]ºÈŽe˜:2” …x!ˆH_1$b²fýºÍΣ££œŽT¿‚ÁFÍ3^ íó7 Ä4–œîn|³Ðüdgg‡ùõ¿ã—1×Kï׿ƒÁ`¸Û¹Æ«ÙÝM,;­æ¶þjglMš…”·oúN8†wÁ§žû»µå"`Ù1RL†8»iÚ›Äolz×¾m&>qâÇÊÓôÃŽEÙr=e²ÃÂOùÆ–eçÿŽ’eèwŠÍ&5'O¡¶Žá¶t®o)„:]®~„¥É`0.¡{ÏžÔ£W/.c]a!­_»– "EÀKÏ Ãe°éƒá6ÙáZÇ`0.2kÞa³Ó¡].·8±c÷QÚ¹ç¨59™ìo¾á¬:†{xâkG•x;lƒÁp“ëÛìœþyt×à‹U‚“Á…å$zŸû¹÷àqz÷ÿ6Ó©SgåDæwP²âÀõzd‰ì°f‡Á`0\l¤•èÍôÀÞmiЕm¹Œ6-Ñ÷÷ %«÷ÐWßî‰*'³ýc5åru¹"Y$; ƒÁHz;©*&:îå}¤ò­ÛT·<­hvºtnJ9í/ zõê²TTUiÇîJú~˪:LH;˜ýû O±t FZã߯¾è耴£…i«Ë—Óˆ»ï©uÆÌ÷ÃN*gÄFÓŒó£ÊÉÊA A^o¼º5Í<Ÿ = }9.îHÅ)újÕÞ˜¤Ç•ƒ@Y]Ç`0¶õº µgÉömº÷Ÿ›0òºv¥²ÒRAŒÆOóæÌ©u‚Âï\õYeE¥8Ùü¥I“ÄÉéEEEô¼ú þ¦Lž,N;Ç©ç)' %š •bE¤1;ÆÛnì@õëÇŸ,ò©’ÁŸªeõá§ÛÕòØÒì°!ƒÁH{Êb³t²ù ÑbØðá‚”«D„E{êùó:÷zuï.LáúõâºT%BWtïAÎÿX%?*)Z!Ñ›i(_ó2ÆÐìtÍiæi¢b yƒ ãñ:w¸€ŠJ;Vÿl 2Ùa0iOwl‡sŠðh‰ #>b£/_Å‚LKߊ$€ÔÄÝ¡’U K%¬ ­nœŸ½•Ö¬_ç’O™’;•ÎL˜F Ô¯gkÇæ'1·|í~:~âŒé0-›7ypŠQï(«¤õß—[R­Õ Ô¥î]šS‡,g–‘ž®:+Êá`ùIÓaXr¤I=º´p¬*®ûþmÙQÁ=w®„Ó"Cí˜úöëK#î¾;쾜šBÇ™ÑYê݃F-4ü|xYnåá´G¾†›Š»šc žø_kCÄ'¯S3ê”ÅGGÄ‹me•T¼í°!Á‰”“•}vÜhkâÙCÉ AÊN t¦°7ëg²\«;òñÂj¬hyp«s«V±)¶„äf>Ò]é$†Ëd'ŽpfÃîQ;f8ZÅå ù*Vü*ÉïRk0AŽÚAùvSÁhyp³¿ñB9•äçÃ˲p+ qƒÆ°ÔŠs9øAN)ìm°r †¿v§´´+^ߺÀÉ2­’’4pîuòúé+.åÆkFåàÖiò ËÂP®å!F½`—zŽì:Ö€w]‹‰ábÕ§Ú! cV[ÁK¿q¿±œ[¿±­žÁ¿a€Œ8°:K†•~å5üaÅ”6]\Ë4`ä,ÿKà7ÂUTT¸Ò¦Z­w;²âu½’äi a¨o¸ €‹ƒÄ$ËÃÓ²ðÊ÷ÀH½?ÙÝAYqï»dÄÕÙš•±p%º;ÀV Ú3Ðð†ËpØß«¶ õÁ98"DoÕ•\².5; @ +ÚãG°ÌäFn?ž—4«²°Ë66$ürÙRqýuðÛ)ƒf…(F™º°ô\ñDCãlädÜnp–…AÜKŸû¯´ë }Ýv0”q¬y¬ü"§£´Ä‚t`U4-±HVÍF…Zà:ËÀHÓg/Nz9¤z£à-gš.S[6;ž6Pº5uÃ@ÙE­Šg ”= W§±X³Ã0«1`›_ÈÉJ¿ì–¢»$KòFAÐÊ€p`™86ÄsÚêÍ'‡–zã÷Njn$YÂ3܃_Ä{ÒHž¹ Ä…Ý—‡Õ¤åx»î`Áùö ÐhyP<·µ*É·—e¡¤‘Þí “Y7‰—q,»z㺤ã”Ѹ¾dçœQ146‘»_k—uë=—÷_ŠØ(0š_Ijô I–Þ¦€ñàÔé³bãnnLcyx5–«v"ÎídW9xu5–'dá•=¡ý”¿ d'–búG%t}ßvÔ¥SÓ”)£D'rððIš½h«ãõ/!gc%“q»¹HqÐx*žrH¶<¼, ×ä@<5‘†ÝaB2¼(c³õÿóåeÂa“Èk¯hC™Mês«¨8zZh¿¾ßv$aµ(`§Ö=²¿L²/”ƒâ|xY®n*È=÷ƒfÃñ·âùZØUÐJ[³µ´R8†{õ/´£Ù!/ت$W›à™rP’¿‹eá<0\$ØÏA  ï÷¥Ši»½·Ãzý³w깇WcÓ츈 ‡‹zâ¸^ÅHà‡gó[aÕŽÄkíÔs»MMÖ…)ïâ¦1§´0Õ³uW…mP£q8sã†õ¢ú9v¢Š”Ÿ¤ã'ÏÄ]~MÕ£ŒFõ ýT¯¢£ªs£þ¥Üqf27¨aAŽeuØ5Vè0´ÂìS€¥zf ¯•uíÜLüÄj¥Å_—Ò–]Æ»7ͨOý{µ1$8FÄgYá^:RyÚt˜‹Ô<¶nÞÈ´ÿ6šßûËÓ®}Ç&#[Ê^^zkp 2ƒýÞ,(×r¶ÂÆæKf—ÐÅÞÝÑ­rðîÒs×4;yp×f‡{°tëâlc.<ŸHWq\¨ƒ¯É¦®9ÍâÊHÒm×u Ò½GiÎâmº~®º¼uÊÊ´Ý6jP_}m+« Uú­_¯.uËiWç׺Y#á6”¢ÓUAÇë_ÀN!xzéyŒp؃&Éí²%°çÈö 0»ÝµâeÏ.=O³‘2s4ë ûáø[ñ‡|Ío lN³sYçfq-²Û4¡ž]ZКâƒa÷±ÚKxxö—ŸPIOôé³ÜöMkïÓõ/å4;fl4"7S’Éùhþ|Ó5!˜„íÁíV2¯Ê©V)ÙyPØ@1mÇþ6‡(\|¾¯bÞ§ ¯ Xj^¿þyµÒ†VÆI >£÷ƒfÇ©¶¶:.çë_Zn*­N4ѧ‹Ç´Ù‰õq+.–Cºo*h$ ¶Ùa¸þá›ÇŸŠOäkiSAÅ”?7ZN¯‹ŸÓ¯e*ïV ”›…›üïÐþHÆÉ0R†ÝŽv*KâSͱõ~(‡tßTÐ0-WwPæ.,ÝÆý¶Ãñ§â ùšÞfÇä>[F^pðfYÄaœrpŽ…4á‘gTéíµ¦$ , Ïþr¸í‹·,uÉŽ½i¬äˆñld‡é*½cï³[`ó¦‚ñË"Uò o*ÈtÇ oÊØ¤ÈÀ H ˆÍ¼rƒ6±ˆF{–>+SâÒz˜bsnæL¥•æûì˜a˜r¹¹<¥†É8í¬W´CÏj1yì³ã…ý]’¿Ç ï³ÃHF?…2Ÿ/äëàÙX±ºgly2mêÔÐIãÀ< ñÆö<Ú@Ëi«°Øšw¯ñ$js5–w§±blrðQ-Y¶,Dt®èÞƒ>œÿ±øˆ 2Ä—|îõrÆ1}‚•g1èMå9;QÉöm “…ßC¬¢‘+ðð$ÿ?Y¼XLu~ºøµ|3U…µ‹Üƒ1×a®“†\Ç|ý7ðSƒcgdÚ‰Q츷ՊbÊþÉZœ…RË@Ùêë¼£2é¾ýú†Ø2:¹²Ò2ß”C¼§mƒüyEÉèx hø´L±Z&Øo 6]Ðb¦h+ø<÷=0\¬zqÁ‹/ä«X:.œ†$ôlvÐ>C³óÌøñ¡þ)rk]͎êX6IɱÙqcËÇKÏAjÞP;1ho@j@tÞ¨Ù`£úÛ†¥qãÿ`Šy[§{És,Û¤7 ÞJ¨,"w«Fņ–Eà¡òG3"7[±ò’ƒ4ñ= ]ääG¦‰†Å̾K¼ôœU;V( _°¬ÆŠþ íÌÃ&ˆ}à0¸’íΧê£6PoCSÅáõcöw.õïñÔ?׋€mLq mB`^×<º???dÓ”HYhñ¼úmD’óSiö+¡Ñ÷†20S¼ôœa©åbð…œœî¼h÷yƒF}¥©)t´±Ëðý0mæ4\ßTƒ «§ú‰ëXºÓÚtêz›âc£† O¬6Þã"äÇ ÀV†Ñ(äÁLçî„F¢š)?8hZdž-‹jy¬„FÚœ¾5¿«mgòLUD»ÇE =hó$©Ñjq>ä„o"ááã"¸;´Ž?•Ô¢¥B“tNq‡f¡LÌ#ŒôÒNÛQ‚îÍd(Á¬Æ²“Çx OÑ™@xpèH5JÜÓ³2·“‡XYƒæ4)zÓÐ:A«’èrÀ‡Œ¼€ô¡àðþÈ—Õêh7Z:vé$ @cM!Å# ÄmDìÌjUâÉ4ZxO=-ò'íz%†O»B%žpü±øA¾– ”MÈ4©G[PRMÉ”H:íè7Ë~Éyn•erùp,©M@£]þ©%¹™Ÿ)‹t›Ú¤‰•V YÐ*@s€{ÕÆaetþHS+±œØBä&ÒðdgnÍ”¡{'†‰zÄÂ4ñŠC³£] %5+Å'5Sf ƒ·PŽm³ƒò–6\ZddfˆïÔÔ¾K|ೄk„®kvœ^znàíú%¹2Tïy´8õ ”W ”-ù„,=OXFLhQfßß( c±´L1÷ˆ‘>Ò€ Œ£¥† ÓZïL&4KÐ4˜Ñª˜Ý¹3ñá3‚™)µxdÔ\܃ƒ¡ i»%Öì0œïCI–“5BßÔ Ú!ôK 5zýÏMj[¤oò¡·ôÜái%—wêODZu²þ'ÏÉÐsæ:Øå¡N×Zhí7Œ;XýôÍÒ„Fä²kt¬½ºw§J“xÊDFÀ’è m0z t¼Ðl ³7×ÉÚË*Òƒ›1ó}±2M^K—hYÀ;©ë*¶(/Jl²£=+ 46Ðø`t¹H۪ؤSa—FÎþ±ó3ùWÓÖ˜qFZîw¢´ùè`b¡gza%xµ;Ñâ°3Q–ÿlêï³±¤q2ŒqA|äòbtþ¦¦M¢°i+Ãh ¤Zù¼9sáРéòûÙXØ´OEëa˜)Ci£2ˆÈALeiUȘJ4ÊŸùï‘z#Åv}áOÅâMÀA Ï0°‚&YO«ƒûr@i°¬·@#èðÆ•A—`xè Ðø^dÄÝ÷ØÒæ˜Éƒ™¼E¦WYQIeêVaÐpÄ<õEîíTv'5 HS»ß”ÊdDÏc‘Áxd¡5 Æ»ËM'Íl¨h*­y©ÃŔɯŠÝ³‘.<ƒñ´)#eÖì¤a?¨¸Žá¾| ÓXæ¬ý _Œ4¥ˆ­ýVt—ž;«Ø‰£ÃѦ–ž[K³®]ÖeÕøJBž;$ídЙÈ%çŽäÌä¡8ôà ?Vó P,ã)c”Õìc#ËA– HŽ™©#3ù°h/P.’t"/èôÍÇ# ¹ì[’== KD'Î<à]Ax° ®ºŠBDÈl>b~ìRÎ1ÚúTb»D|7Š é(&ÞËIg¦,­Âõi,h"WÀ SÑš±ã&À(VÞÃÔVÌ„cl™Ð(ȳ¡¢•ƒÜU9»µ+í~Cèèa7¤Õú Ìm*h_’ôIÂi3¯,ÌžÏõ¢:šÒj™ð B»MÈP¬o’ÏÆJË¡?—Ë8äOQ»© ñ@Kq¡(ת‚╳±âÝ9Ø DËCÐDXGŒb)¾}väî¼q—Cò+ÐôðfÍá¨~—…9D+©ytâ{`0©Í‰Ìô½‹¾.¥½ÚPÃÇÒþêÛ=µÒ.Úz˜®ÌkåXˆÏèýŠw¦.š9’Ö÷;'dQ×éõñï/Ü’ð iDK¿dg­üî@Âó0sÑÃrÀóDï‰÷eYDÏ—òO%4}Ätœßk‚]*:Öù‡ÁX‘kÐäôËØ×WSÙþcqgqŒ}m;y¶V?«¢‚Š©âØé¸Ò@xăøŒÞi÷¡ôõÆ}Tuæ¬íz°ˆq™›´ÿy›æþÉjt»j ŽÓ*µƒësY+ª¨ëè·wâäúó´uT²Ëxÿ™%‡Å‡pE—–Žÿˆ÷o¬Qór6F^ÏŠ°[N3Êl\ßñ|¼ý÷MôùÊÝ1òʲ#Ÿ5{©áùçQÇvŽça‰:ª*˜û=w iˆ «¾²®U»Â1¼»wÒ=;LùmÕžZ[é?ÖímGÕ™ eµnl©}þrõzsN±~¯ gÎ*´ö‡CTøÃAjÔ @­š54¯ÉÙv˜æ~±¾ýþ ˆÇ Μ ÒŽ}GiÛžJ:qê Ϋ«¶»Æ¬Ã•§„ÿ [‹°ˆÃ,6Z¬uZu¸Õò0ãžßŽ3í·Ïå­Dg›Ûþ[Üæ? íÀÊö4(ìA½ÛP·Üæ”­~TVq\íÔÑ¡ãÌձ!ç¢L5mÅÿF6T˜¥jǾas¹øÀñ!ÙË‚¨ùçÓ-×d 9´¸ åð‡~<)Ò^è‚Æˆám¼ÿŸÏÛ ×õÊÂ1¼¢ÕK…3ƒË®@—(Îãþb­þì,P³b…Ú1®Øx ir\% ÔŽ .™Ø¬v›ã KN€e²rŠf,ØÂ-#nØ]Ü«ðv„¾‘¯bm[A.4׿€ñ> ƒÁí ËXö‰¼@Áëõ/`§¾²P ·µÌ‘R^¾æWž³Ý¹Ç럽i,*#EݺýòÖ\ºèÂp"Øý÷Ç%´~s¹kyé×­ ¿±“®M×oþüµ0²~ðŽ.t‰ŽÍÕÇËv 7úÞËÄsyÍHd[›Zlgø)[­Ë7ìWÝPý~SõY‚“ßûNü¿µÿE¡oN÷àäw—Û>“¿÷rúaç¡pþ”°âˆLÿòûk¢>KvÉ6c×¾cjÛsýá5)YÿÌ\éŠî¹Íé!•<ϼñm˜Áñ³_!ž}¾j7Íùl{¨AX÷Ã!êqI‹¿ÿþxs¨c ¾–0Íùl›x.8?y6D®ß[ó6‰ç¿RI—ŒsÝåtâTø*3ItÐ8Îùt•î?×ûÿòÖºº[ëPãíçî-žýÛ++Dúò½‘'Ø;áÐ(ÂX½Ÿö‹Õ{D~p?’,N~o£Èc´wG<ðƒtdg -_m z¿Ró«-{Ä÷ÖÜïÅsYöߨu#Õ/ü½¢†…Q<Âi ¤,óø[ÛÔj;At ëÍ;ÏÙb?-¹!×~ãÊß-«î¸êÛÕjxĉ՜?¨éàûñvꌌ1Xd]ÐÞ‹$D³Õº}ÃUmE} Ò#JÚvG¯î nLœºNÔ-”{´: õRXß®j§Û–™É«6/ø&ðMÉïqMœ¶N´·zƒM<3y¥ã² 0×a¤+dCeŒ\Y…JÊ™¡ñù\mœeG9vdAPPÑo¸²­¨Ühøe\èäósô©Ð(DaТ1˜8u­HSž[Ï¥ Rð‚Ú8 ž#Þ§ó{†åëMµÓ·ª…z÷ãê¡6„rDþ¸š”:74ŽxWIð$a°NyÇ» ñj~AQ¶ÐhG¬Úw—DNëG–-ÈÍ¿?ÞW¼':…gU†Æ:R› ŸK ìßÕø™4º' V5Ê;Yý ŸÛ\”$åZY€4‹Îl…‘¥HíÂÈ:‚oÀë<ÇÂÊŽPK1C=E[ÔBT×ÏÜZß±¬;’øƒ¬ ¼%ÑÑ«¨;’ Èzôà°KE]Ö¶) ?HƒmÞ"ó™—0MóŸw…ò&Yø¶ä ä·tß1¡YLD™x™‘®€Öæz•¤ 2BËm FB¸§§ª«º$K¨ ’Ð`Ä*ÃHu>ž¡‘2ü0ÍV Dd‡t u¹SmpÖ©VÍ,G`=.iFvà_’™/=MFkhÄdƒ÷ŠJ<.©Ñ2É- 0gÙ A“¢Â0Fø²ìô­‘$z’(É[¾'Òê×Íx—X9EYâ}@°ðn‘£j›Ý¡ËáÜAsÍ·ë»5 Z|’HKmHr¼ÊÒ ²JŒLµÓƒïÖÔC£)1'ê€lËÐîȺ&}‡Þnã5_h_ÐîVk·sèNu„¶D4ÇSæb0Ò¨`P—¢qÑx°fJ :Ze“šjpN• -GuçÛZtþ’`ÈÑÊ¡šÎ#˜s£äý" ¤¿ 2ˆ[v0‘ù@xŒ¸dü¦»ä”“6N@;ý€tõ:™ì9$5\‘÷dÜÈOä;ˆQœ:áBÞåÈLÏF… •x?Ä9u(w4z(í»C³%åµ¹ÌÏæši“hÓ(H#U¹=?Ô:I@H$y¾º†lʲ}K³q& ðsŽ oŒ·ÔhoÄ»D'1uHz÷e=B»‚ºó…Zö‘þ"¯#ëB¬:m´º¨k²­A;ƒo@¶fßAÛÆE«§ÐË6é ŽÈ)|'P§YÖÍ–)éÝ¿û· Œ´‚V{{ÄÁˆÔZÅ2VT¥û3_·×^Þç:áÞÆÆ•_ Ç2MúÇšÃ䨗a ‡±HŒŸHƒÁðx5ƒÁ`ØA:Z(§›|“a¡ÌHH™xërƒÁ°ÑÖÚ>.‚áùš—1ËÔûõ/ÀRb0 f- –q*˦Îmn`q2 ƒÁHY°ÍƒÁ`0ŒÔ&;Lu ƒÁ`¤4ÙáIIƒÁ`0©Mv˜ë0 ƒÁHe²ÃKÏ ƒÁ`¤4Ùa®Ã`0 ƒÁ`0 ƒÁ`0 ƒÁ`0 ƒÁ`¸Š:vöñþÕâ"d0éŠe3î©Ã¥À`x»ƒU'¸ô ƒÁ`¤.Ù9{æ$—ƒÁ`0ŒÔ%;A&; ƒÁ`0RšìTâÒc0 ƒ‘Âdç “ƒÁ`0)LvΞ9Í¥—FÈhÒ€®¿¶+µkÓL\o*ÙC_ü£()yA®¿6OÍSCq½zÝV‘ŸÊ£ç¦V‘×KsÚŠß»÷¦M[ö?À•=;…ÞA†Á`0Lv˜ì¤!²Tb1ûíÇ)3£!}¶t#MŸ½TŒßŒ¼™&?;‚¾ß¼›†?ðŠn¸vm›Ó¦ÍeTA(ä3`Uá–¨éF†ÿù+é¹±¿ ²=å”ÿØ›T¦’ø»¡ÿetïíýè±q£Eÿ3–²Ôp™¶˜þóí"ž?øËëDÞW­ÝJoÿÇ?‹û#}C\3 ƒÉN²ÃÓXé€g§ :¯«ÄA’à“/×Ðß^„ú\‘Kýúñ¬øë)âÙØç¦Ón•ütp/ºýՇ賯ÖÓï~ÿ_4ö±aô«_\G|¼‚þ>Ý8°;MSŸ¯\³™~ý»×Bñázea Ý8 å]’ ¿«t_5RÉÌ¢YO‹ß+×”ˆ¸~÷T¸.ÛsH<ÿÍÈÁ­,ÜL/Lž+ži<{†¿cƒÁ`²cDvX³“(Ý}P«zv“yF“FÔ%7KüÞUº?ìÙÜ—‰ÿ߬*¢Ûoí+H žƒè˜†úMþ-â÷Šo}OŠR}*픂Tó-_ULÓßüWjÒ¸xŽø.éóP(}äkØ?]MŸ!žÝ÷п‡òÑ%7›úö¾„ù—¢Û‡ö¥×þúÂ…¾á³Uü3 “è8ÃDZ`Ìø¿ Êcýœ~XùfسŠÊãô࿾FŸ|Yvÿ¿ÿò¸øßïÊKÅøÁ÷‚ÿoýÇ#‚€mÚ©†?A]/½ˆ23‰çŠ ‘\ã?€û¸~ìÁŸ ,_½),'þø¶ð³uÍÔI+Ý}ˆ²Ûµñ#½·ß]öÝ‚Hiñê[ÿ+ƒÁ`0R ¶·:où>.‚†¦‹ÿºÝÇ…ÁH ìÜ8ƒ‹`0|€8¦±ª¸ôaÈÎûƒÁ`0R‰ìð4ƒÁ`0Œ&;gªX³Ã`0 #…Ékv ƒÁ`¤6Ùa̓Á`0 àÿÉQþ Å74ÂIEND®B`‚rampartc-src-1.3.0/docs/docs/files/rampart_archi.png0000644000076500007650000015634211202454500022273 0ustar shankarshankar‰PNG  IHDRMpÒñ pHYs  šœgAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<Ü_IDATxÚìZ PUþQò…àLÍ"æÕ’ÄG©¡#šÊ¨9S>1tÌ×$b2êhZ™f:>Q|ƒø6YŠd¥©døÊ”T %@tFM¾`w;ÿÙ{–»÷îîݽ\|Œü3{ÏÞÝ=ßžý÷ÿ¿ÿ;gÖ^` ¶ó =×ßþ•Ë‹ê¤ëyÅ‚‘ë]¡Æ`ÈG¡àåå í;t‚‰ àIö·}—*»¦&¢tšKpÄN¡&¦t¤žÀstgÜ€€gz «~È í´Q]ª„³`Æ1°qT…tàýP?§<Ô©yNÅBcãäùª%âÅÀ>®¼…£ž”­NH€±ãÇÃ'£FIÇð¿··7x7mªØ‡³nÚЧ›¯C÷Ý{(—âpÄQônn¨O-Àh8«_h¨ôpÌΜ>mh€…²ÿè´µ6H[ÇNT$zJ§¥“LÍšÃÉôtº <Øî8h$YET\l,ìÞµ‹b)a°>G©ÙÔTÙááC1tF»»;,Y¶ŒÃÿgÏœ¡¸øÖ¬_¿> 1Ó¦©„¿8ÎSçoAçvé~öµ\éü–íÛíŽ# q8 GEEGÓ6là@Í>2ŽªNèQûÏ^‚Ö `ãÌù·˜nUá(ÎG‰Žª;Ч3IØYÆÆÙ'Ø^nT×!ŒÍû²DGqÅ‰Žª…ae/ýž–¹5xI–z¸1'M‰D«(¥2gÌMŽB #U¯L=ÑI±É)Ï•,ÈÏWä•UkÖâ(½¼æÊ*^ï wuu<”ö;DGpÊÃ&î= mÛ¶‹ mò#‰Ý7ϲ°=}쨬/’7«vzˆœ=48ÀQ´êñ‚QÍ|@hHmuœœìzfG~Þ Í^ /ïæP¿~Cٹܜ z¼¨0š·°Uþwÿ»CÛ)ÚšfþæëÒ}×ì¼ cÂ[Óýwu;©¤ì1Á(¶ºSÏÜÇUàÄØså |ëœÜQ!½†ª^Ïœ£ä$ŠG°>‹Ð'üØ}9•¹»[18Rô©%o ‚>2§i!8‡ø­Ýo¶©t`’1—–”XÝ[çøÁþŠÄÂ-Ÿp H5ñˆ†É#ŠçyÙ‰þD‰Ï?Ÿüü¹sЮCÈÎÊ‚ýDx"wôéÑ 2rîh‚üå'}¯ŒcØÐXÒ£7X×d2Á_ä~©))0}æLÈÎΆ¢7 ´o_ó€yMâfÂÑÇÇ|É+=Fâ(ìc£Ì÷›•xìòå¶¥[óº nÝhÛž¼©5ï[bÆ&gTQ‰•_T >^ Ë]7!Ñ1ѧä=€”TsbÄkNœ•5%²­C‹“.Hò`GêUC÷&©gÄQzóÚxDEOœH£8$(ÜŠoº!i·¾±ÄdNBÚc>·`Ñ"šrÒrI×Ë—.›eÄ6Z+ÓHtÔÔQítká†ó´bD!?!g OxyyIªU–jLYJ)D,–óÔƒ!(8†‡Ó°«ŽI6ÃÄTHúþŠáþ× KeUÏxê©H,Ï6)åbRÈ_ŒÃ€ÍÙ¬0Q›¡_ò߬3d|„O;~œr"¦)îã†šŽ N´/'¼MÛ¹sæÀç³grÖ¬g(g` ƒ×RÁÉUCÕãT´™¥N²&mk‡[ÿ·ÆD>¹téUà%Å%”›˜:ÇsJs@ŒΈâD2s?nGD ò³3A´¼íP8*;¯ L~n:ROŽY\\ þþþpîÂu®Mæ¼Ë,|¥ŽzPÎÂÍ×´{‘ÌÓs Ã\¾éªêÆæ˜Æ2‹’6;ª"#ì®ð¬Xʵ®“†¶¬¼{Ð/Ènß{¯4ªG§gÜ„M² OaêÕ­ #ÃüÁôj#(¸Y r¿5:4†“·`tذvO¦*æ”%éU. -ܱT>CˆÝz‘¶Òò•ÃGGšXÚÃG$ÇV/çqÚºÝ™Š° ›¥19iò¢tŠcD½àµ²ÔÛ—´Ô©å|óƸjYfNÂ5ó…dê‚Þ”ÎË„Ø?$Bq©†j‹yœ9ŒV=Þ2¢ÒMrÚÃöŒt*ÔÍÁˆ“”\kÅ“73]=¸Y>žn:"Š‘¹à|qø¤0Ùz9ÊŒ¤“é'It5U%zºüM—‚¾I®<§Qó ÁTJefÃGN–öñºV­;¨¦¿%¦–aÚè‰6%Ôƒjšõ‘ª^ç¼/óq…s—ZìM‹¬£ÀQµ>.ž!5ßpÖ˜óLš,t’üLGÖ‰m#žê§ÞÒùïæÕ„G•Ý-4Ü93}į;@¶ºO׉JîCfVä߸ 3¾ÞÉ+'Ñó=»µƒù±»žÿÔkÒ*ì™N½ÿì~ª©÷¿ìœmlEǧ|Ñ(×LÀTÅQ +bŠÖ74~1$¦¶*JcDŠåE›4A ”` Ð@ƒ4 –¢¡©áƒ/4F*[ß ± ¡Dy'FÍíyÿÙ}æf÷vngö¶ Ê=ɦ{/3wûtžgž™ýÿ.ïR'Mºê³½Û*>¿d¡!¦šµ•Ë¥iÛæÏ}š}sðk~àü¾).}CyCs¬y}JŸ5q}ºŒ;GWé–ØB¸ØÉªc¿Ÿg_DBVÁLú¡6B% uÃõ16þæ‘õ—`‰PTTúâ֜Т6CBW©œDà‘ÌÕÈLŒü¼ûÛ&Œ©(¯}upPZºýYƺª´¤„_)Uå58¢²ªÊõ˜˜ž¾>þšºÿt*jg{ªÊ×!«&ß6ZZÔ„± ªÐnÃ{È*#º*ƒ£áˆŽ]»ØÒÆFö̬Yla}=§©ÈY0%4”H¿q)‹ÈtöËŽžuÉaÐUéè©\9*Jó =Ž>€B‹WUWgì‡öÓ)Gá‹¿Óy8ë¥{§˜È*—£¢¦¡ÂöWUQ̶µ}Ÿ–£ˆŠª~tlèï´6¹€çÐÜÍ%²Šç¨‹¬ŸˆëåÆÙÓ®M:ÊTœƈ’2¡«ä6]¥ã ›ŠŠÂL(-ÜWó£¢ ýA± dçk(>ãAh%s§ ×™ËúqH¦¡ÊÅ_S'ÊàŽ1]•§”"Þ{ÿTñ¢Ïܰnÿ<€ À-m?}8It´ê&#ŠÚðYOnF„i0Tt}Vm]xÎEMàŸéLëÙÐU²Vݤ<¥·u^«AK­oàë¼wMë€f˜Zb –¬Ú°ý;WyÒÊĹ\š(ûäåðX,ü…£«`3’µBïøñã.€+y¥µ²ÏÏ«ãj;œÇòc.5䊱ü|ö”µ•ãYKKÊQ:tÕG_×’z ªðeá0Pí;vøBްš™3EˆPø$|Bù¤Â“É÷€ZðÂHdïª*î„媨公ߢV¥77 ½GîÃ^P9Š’7F.HuQ°Í[¶øŽ(¯£Ðǧ!tá~¡G³9F9 £(Hï­ÌåöDj½ß¾Óå|j3Ì;ëe=í]eYîYf;ù‚‚œ*ËÛÜU>úõŽPjc¨;¬ÍE nð£DWáu¹¼PBØotú…Þ˯`E…ÃC8;az®dÎ ª¼pC Nèôlì%$ºŠ…úSÿÊå˹CñXvŒ|Ž×'—­X!&zÕ8gç`<”Ã'ȶ½õ†z#ƒ®…ÓUQÞ¯J° å­€é«r›˜¤ZJþ2…jŽºÆáˆ½?;¦Ø—‡QñT2·´¨©U­¿²úÇ‹4’áäÁÉ<•[œ:Uä$äì}Ë£LÅ' +s¹]GiRSïqÞ‡>7´þ’q C5îjÛ,vBMQQÞÄ-ê™ó”ÙîÜ&­<ðèªqc ÄcV‹[„ZŸ[°’õôþ$f+oŽÒÝnI(=G½¸vŸ4¢þtßr¨(f¹ò²)bôÐ’F÷{¡]žFÚ ¶8Záwìßß­|-ÓAt•êxsókâ¼iÙ¢ŒïÅañíXË5ËÉ!¦ã¤…Íûxr?%cGrv†h-UtžÚ²¶Rt•Šƒú ¸XÓê¬yÕ6¿~)»pþ?F]]ÈJn¤œ)2QSŽèõ¹ –VVܳO”dUß¡“®þ>ìú³KÙK-=žý¨ä°VQR¸ °Mow¦½†®jÛ¾1ylbÅJYE²ïâ ·kUÇ™èªy•Å|v8”‰‰ñ루ŸÃå×±« .cÍÉ~ÈIrNWEIVÙ#@MWM«¨áÙ?pQ<ùý2ÑUTÂÀIøÎ“gþR~/¯a©Ë T>ëEIVÑì%]e‡ž^*'eªïtfÊ]•³h/rdU°qyެÒt”)YbêÎÒqö@Ï¡ä¹-îºiòÖ½çU–»‚Ÿ×ÖØÛà«þ¡—#«‚í_Ø»à¨Ê+|ÁPQ« Rž %š0$ˆ’Â$ R"©V(C¤‚h*e¬< B T#ñ‘*"Œ#•"í# *¢-È£È+¬R^»Ûýþݳûß»ÿ½wwïÝû×éâ%Ÿ‘Pɺ«MSºãömñÙþieð²%>‰d3õ”—Ÿr 'Òj…vI%‡LrA¿›ý©ä}öäõhÊ^â!̆Âd Ô:wj`440Ã7÷ií߄ȒåÑj…;uqhv;Ä'PW/Z_êTE…X8‹©úxã¹f([Δ|?õ>‹\_ Äίœ’ÂûdÇ8ªr.nsYœ nSæ£ ,RÌ8t’ÒztªUå8|¬’¾­ª®1~.Å\5X&8ðVø-bDO9>òs¹Ýº°;f×§ È9ο6nÛNSFç× kÓ§§O¡–ùB™þÄßÀ»ëÏTôhŽo ÛôÀÛûöì¡êsg5oðGŸWRŸ^-4#«€µòï‹‚ÇŒ9«IÝŒµ…ÒÆ¡¤´ÿ¨3£€e~”²H[@Mñ´ô<ÚøÞ+Ô3e€!âpn¥czýþ™Bý²G©KqK2ývX+jvS#Û׋ºå^BÓ6’l¾8ð½Xj…t²8n¡o›l¡\×$…rnz·%·¯"~àÃF>ixŽJq¬P„f½ð¾É}Êä„2I¯¬¦m¼ÁùYíèçÉMjT._qÑ«k÷‡È3 %ñI”³T,‘XŽ2œ(%¬ÊÆçºË¡ å£;’[PñŠUTרÿƒBö¡T;ÊŒ × Ä\—Q˜‹ œ<êKË%–}I_nÍ((eâ(5F‚\k® ´'¤I[u‘I74ôédqÞ‡ò®[éC©ð3dRA;¡´p[Ýîé&۾؇øü¼ì\Ia>Áo­¯¤. åƒ9p§C†êßÔì¹æGØC%o~I“ ¢šs9MSŽ3zžzß&– eè”; ñû0£¬èåU߈ü5YÎ5 qílµ{æûËT¾¡ÂÙ;ìq+á…¯ï¥Ö5Ôí?ýƒ$ŽZÇ]5­B¹cêCÙ¥Áý’éݵuŽí*èg·&ÅàÆjSãð6ïÒC£˜FÃ9¿¸ì‹Y˜†zýºŽm›ÙºV`Q|u¨*pÝL \"Šê[T >|'ö!Ø×¨džH‚ͬÚµcÃ!–7bù6ú¡\°Ý?=]\³•ìð%äû©r„¡ð• HÇ6~s´œ×|naÁâ¤)ðx5S¹ÎI/‹Û¯àv• ”›ÑF´¥çcÙåÉ>#7±#Ê€Fï+`àÍÚbä(VÒéÓ¦QNn®hWå§©€ßôÔN~ˆ4£‡ˆ‡gºÇAO¼²ë0›ÉŠåÅËÈrÌß¡P(>}Æ 1#Kü¶â“(çü×”BEÓ–ÛU÷?^ ˆ&—Öže©KÒË¢'¶~²’Õ ‹L2諪k•ùèœrcŸ„»ü~Í?ÑãS‘à,¿³zuÀ‚ -øaÜÕ=f0,öÃr ©Þîm©·›Cl¨´¬Œ.\¸ Ú„ïóŠwÝ øpwh„‘Џ_äoˆîœ¯ûЇôq9†ÜÓG’gOH©QEšSú9]ºâRÊâxè@LÙqËM9¥™écQV¾„Y[rw„¶VYÕÝx›wQ!OÉ ø§¹sC|=YqØß3ëõ²°o(ó‘ÏÑû{Œf´Xznbè”b8ؘ½‰.d¼·;Ù÷ï}^kñ¶pÊfÀ1_¶bEXÝá´±½èÙ¥»Bd‰Uöhøhry:Õ–@ôPý˜¯¥lªHVÔlšJ¸¡…Hœr§‚›†Mw¸À£áÃmÉrðt¢Í éÆßú}o±ýx^ùQ©Ë“?ÈjÏ“ñöà# ðàCÃÅ>q1p½Ýd—î%tÅ(WÏ'ÑmóÍ_:µ/Í]¹‡NžñEhöÚ±M3š8o‡8†µ3/¿VÎ?{•ÊêÓKófIöð±sÚcºO/¥ëNº×öœ¾Â2ºuÑé¢ESñ“¾‰*2.!FQ*ÈuÕç—H <õ÷Ì# å‹o9) ܉3…"Eî€ÉMo#Ž5NJ¤GwçüÍ»=iÔ=´Ø1Îj)Ý×=9¬+¬ÑÕó½=GKßúR”¨xkÃAzÜ»ží¡LÅ»›ÐÁãaLÌÓ9¨ÜÍLyq'ÕEÊïò‚|ZvþUÛ F4bÌd*)êcH4£H>ÍÈ4¹ø#Z³²D# H–Ç ÒóÑøP;7—ÕÙ‡“6`t—qÂSwþÚr¨ÎŠ…O((w°Ü;zç”Í›6‰)*ý!ˆã=n8Û v*>õ,£>Èé ™v«=^æ/êÆVJáuíÚU,²3* æ€S)Ëã~èc Û!IXç”»%¦î:û°•ï¢D-~jòXš0±ˆ^ZZL/–”ÆHF—æêm‚YÄÙqåÖ=O½,ŽU;þlBœò«Œ-b:]Y!Àˇ>THÙƒò(¹EKÓÿ•¿¾œ’“[RvN^Tæ•«Ñ)T·î½©uÛŽô@ö*{uuïÑ[€­?7sŠ8þ쬅öÍ¿Ùy‚C!:Ëa}¯Ì¾fó7tcã†ôݹËâÿ?IjH­üó·€M.|/ï@ ˆ÷*°xÛ`Ææµ`³ç¯Pî·j£ p\ļd³ ´÷°ÜZ÷Ánújï§”’šIo¼¶œÚßÙ‰~™W@óf?M_øµm߉ ~=ŽNœôù*gNŸç4¹éæ¨,”Q×|ðXÍ¥oEâ&ÀžAñ™~7¼³¨óå‘÷U0ìò®¹êî€å¼…ZýÞ'âü»»ô¢¢I…ÔΫ<ÃGú,ëŒç—‰cØÆºù­¾T'^_ ~nƒþÁÊ50¸ÔC´]‘1Oð›³rO`ÿ‚É÷ ž#´7-cávÂBÕÖÛvåjtÎùó Þ°õÿp Áƒ¾¢ƒZ$Ñ d˜Ÿ^Ž­»O…Í'á–Yñ8Tœ#ÛŸ^â§8Å)f¤ùxwÿÐ%ñîÏ}²þ‰ë¾2E¢¼ñ¿ª“1g¸÷óhÄØÅ´¦tÝÛo*l¥ô¼“îë雎‚}8GõÛˆòrzSEeíÞóŸ¸V×%…:_u*æ wîÚG»w}F%ËÖ ~ÿܶ‹–—®¥Ñ…2àhÌÈTqþÃcçÑð¼tjÕò6ª>‘vîÞO3ŠFQÉòõbß¡ƒ‡ècï¾—=A³zSû¿‰?ÙºÐåý´uN¼Ë³AßßxÝwyÿ€½«¯¢¸ö'iÐ…’ R –Bø¨¼‚Úâ < ôYË¿„*P¡Z•giÅ€RäiŒ„_¾bä"¤ T!|‰ ¨(èKîvÏÜ{öÎÝ;w÷îÞÝÍFöä7Ù½{÷ΜýÏ™sΜ™ñv£º ià½ù?“?·*¿VŽšçé*¤m%îe5Ý7·ð˜®2‰ôvvƇvåïmivu‘°k{îOÀŒ‡ôÀäQìtúÔIÈyùu¶ÞÞÏ>Þƒ`‹ô&B !½øÒÿ@Ÿ¾¡“P @x} T˜.I,á¦ÍmZ7u,ayT¶]ü¤ÞÒZXN|œü/Î&0™ÚÌ9š÷‡?°#íTŽGˤ‡bŸñ|ca¡ ºÎÓ§¥¥ÂëÑÕe[Þ0T Ñúá<᪹jZ«·Ô£QÙZüˆxá‰v5RNÌ’‰ƒ»…ánâD¸Á3¶vì:ìÜÑÜ xP(k1ˆ6óá?#áÒËúŒ«¨Tš\1%D‡QI&5?L ¬¥®2ñ¢8u9ñ¢BŒI,P®aË&­—Á”,ë'Øí:xÊj® w5GðÒ9êPô™ºAѽt ò×1¿²˜§& pµ9~/`ÒÉ,»ƒKâËÃÕ‚­’LZüà‚¯´2 ¿/1ñÒ@Ýe€ÔåXæ´$P!aEñŸù.ĺØêcÐw*×ð··ïׯ_ÈùÛC 9Ê"käH¥!•LZÖ“h`\zG}-v )éòÃ/>OeÓb¯Ñò¢.'¾Ê7Œå¾û¢Îƒ€Æ7QƒÐ®ÝpëéG`ô°ÎŽÕ–§Å•¤äI`RK¦õ…'\åÏÙ±«J9Ç'®¹Æ=XWÑH¦Õ7˜g§Ÿ)*ɤ®$·PáÿV€«‰—S4£{ÉÉ)BÿOÉÞ3ù±T2ùBŸû;åg²ƒîÕƒ%³~&'„Ô¹c M?“Õ’‰/Ç AÑ¡ŠÁ™³598Z·jÆ®­Ì?©=ÚBÙ³áÖ\: ZO›6Â:ÙjëPÀÑß„Êø]²5…®ô!C˜ÛaÕÚA[—‰ŽŸØu&É“LÑPâõ×2à,?Ç€UzÀß…´k{½!?O$܃-*&\©·{lÖ£ìžù2¸ðÜ(Œø™,M!åxñL:tôø·!ŸQJ!mùð¸¦Â«% PH¬Z‘W$1$‡¬9N÷_Y”·ÉCŽ –Ž¢{¼Éf—7]¶ÍQêr“L}»w‚&×^Ó /¸dß!ÇÊò©^‚‡)p¸»8Ü>Œ–¨ñ[Ü[Uv¨d’l{FE2Ñ ï´;,/¬h»#Ÿéã²\!-nëÓ å°ó´ƒ-ŒNp¯<>-Å©îƒÐÍ|èü“mÿ'ÒÅÃ$vq¸k~`{T«UÆYˆŸÉ ZN‚ÏFkÎçBK±ïn°sïAÛŸWÔ­ hø…èQ2ÙÑíQÙ>‡º9*'A> ¹aò±»þ—æ‘K?ú.ô›sUЪu;v¼|ù$·OÚÚj¸\{‰]Gzjöp˜·`ƒðwj:v¤ :uŵK!|µmu-Ü?üƘž7;°oŸ/½ºåùŸÃÄQÝk,Xo$µLªrÜ–M¤£h › –CŸ~é 4Î_7˸9%•gܤlùZ|¿U;?9;ì·o,Ëî?~$È÷!ަP¾bÒ=ƒÛÁªªT~àùÒwÿÖPV€#:SP'Ÿxœ… ¢ÐF‚Qøð3³&*ç:‡Á0cnp°U-•`ÇRÊ wÙ\å{ü]$ Iª=嬠´kö¼TÏ·tj wö¿Ñ1ü|²ÿ,ìÞ6"?v`•ʉgã*Ìédý½”·RG‹8ÑÞøxØ)AÏË _8 $¤íÙ68t"àÇj‰/'^þÈþl©ÛÀߎ=û]£€Ÿùú›ˆÏ»}Û6¨¾x1æçe‚Ɖ®Lè ø ¨ˆñ3z¾ÑÊý€1 Ïéˆ ï™âö3~Še“?gdfBuu5téÚUìÄÓÐQü`Z°îú³±9t'¼C‡ŠOŠ,=· ñ›OëûœÑ™¤ Ó’œ¡7¦Ë•ˆ•¹÷³Ï`ÑË/ 3Å{B¾ãòÊø·!13ýõ7ç`×hmFúP¡GdµÏã"ëwÅž…üP(©ðÙ—,^¬Ü“””Ä‚M L¢üÉ1)Ú–UíkŠä{ÒRˆ.£Ãe:“âè‘ÊŠ =DnÉ‘^¨uòÔ~O=‚ “šVäæG ?CŒ6yœî ´²œñ€s‘–±²¡°Ð^ \2C6J'ߢ啹Š«èì¹Z%Ϩ%“Ù—ÿÔD|Ç 1çõò[GÃZÙÃ÷§Äœï‹o³áí‰%AÛVM¡éµßs@_U]ÒäçÅ7Km{nN2Y¹ðnœ%@âõ"«%ÓÐÛÛÀû;þn›$ Ó™ãz9.‘æ–:¢3©ŸÛ^¸UyIÖ×F‹ëìÓH#è(hæ“…†¦?Zn"Bë ·¶Ç9l±é2b~ß;æG}þ}aÏïcS‡ÅÊ-Zp‘¨p“sñOèÃÐâÓjB‹nxFó9‘uGG¼>(--ÂKô)Iä×áuùY»Sl$tà÷}{õR€'r1èùDüX$¤ºœx%(\ Qз‚•øìüù XX¹X™h½>í_mCää‹$C&Œ§¼”Ü(ç¤Iœî¤þΚ5ؼ9³fÑφG¬-c#`/…ñ˯)€Ó²Ñô'@ Ÿ‰ŸŠ=îÁñ~_ß“O²Y¶ÍšÅ>£ã’~¯×íDJVwo|Ò„‰•ˆþ¬Pô·\ª®fR +1ÎÀâèTK;ÌãM9ëÅ:G!•/4Ù쉉‰P¸y3Ë©Ø@,µÚBÛ9?®—Fü?ƒ–Âsy_R¤P¾«#Ç¥^x¯$éóci¯®VÀEeQ¥¥ýô§‘}+t&tø!ø°…c^R¼–£áË2"•xþ´X‚©w߾ޛâz~”J<˜°«Ã†…³R(3Vÿ?´ž»W£>­0¸“ÓÃÕ-ܬ٭Gè™&ït±™Ù¸DX¢ÈJ”B$Z4‚æ÷o)*bÝ^$åÜŒÄñ³Ž­vòWvD^PO{dú´˜Ê‰Zg…YmÍI`瀴•†ýù$)Lˆ"+D$” ˜bI Ÿ$éòÓ¼Es6O_u…t;^Ç#©¥WN‚ä“ìp3YœÆ 5¸Ï¿N´C‹Ô"¯ãEêúÔå(³S¬|x«óò'÷Ïï-1ïÕ=®âÇ1lÞœˆÐŸÒ¹K—NRn)’ O”Ê-æ543Þ—-,$TŠÑj¢ˆ<¢ÂŒJ¨ppYÀ§‘òõh´Ü:1RB `¶©Ù½¹}¢íà9~²:j~¬µæ$}k DNº±òËÆN/_&YMÑèL¨x˜Ôf8Ea.о$¨ äƒá]„¼£µhtè;!•wŒëB€‘û-Ðßÿîw°^~ºGhÍjá¿§ôs\"=ùÊîˆüXI”§6;ENÉ"Šèc2‘C˜ËO»›£Ø#ú—0 Á‰Ú´\t’Jø{J+ìÔGaß½·f ûî½ü|Ö¸ÔÕ«% øá=·§"Ž °“=X¶C~&PÍ›sóØœ$°DÔ’Mñ…%'‡€&šx,5)¦‰ù<è\÷£Š_õ©Hêñ9F^æ¾þ†|ïjöºŒšì ˜7g'š|i ‚+Œ¸]§$Z •7±8ºFGô1a8/ïƒÒ2ÏÅ&»?iñcI7§*'5àbkÎŽ¨[mòÖßU‘”¢k¢nÌ좩 µp…æ@o,’dÙº ë¤X?PYQuÙ²¼JT+•KIO¨Gýq8¥O4³O¢—ÑócE9ÁHË€ÎüÜÛÇ-q4~[SgY^þ˜¦`wåõÐ$ÆÈÅ¥þu—0âò·÷w2Ïùê:ظókòÞiêŽ §('Mwbá +™æù\þî— ÒÌÎNái!…ðš\E¤€‹¤h¤áQ7hE÷ãôÂñ±Ìº]2ç–“ >;wlé0êù´ §æ…ͨ¶‰u9ºNK=ª¹\™i7Á¦í_)×n¼áz¨<ãlÿwù»òçåtþ$oVN Ô^©7,™Ì´¬!i¡Ëü€úmöv®#_gÇž]ý«àþ$µ~tþcp TVU³²:´ó{«×m9 _{JŸ3¦r­uæ‹% h8; “Û;%ÎpÚ(¨x÷)H @t½òL Ü?¬+;ï*¿¸Šªv^RvÆT9Àïbff¤CÓ:*ÇÃ_ž—yN„fMZ·lÊ€TQåW¨›5I€{‡w5ÞT%‰?m°$âÇɤìb^2mä¤QÅ™šïò6úWå_´ê@Ø5³ŽK£ôꪲ@½‚ŸãüGÌnù9•>®3mÆgŒ3. è4gÖÇ%ÒŒJ"òc‡'DN!Qõ—7Cc ·ó–4 >Eà7:,Òxp/YšÐTP› wâ†ÐÀû™p Mù  ë2T¶?1ëLªr”n®dË®måŸîû¦Ì|Îõ|H¯) h¬ im \A„Èƒ‡ ‰I’I‚p{ã™T“0]ïhjtÃ)â[ÔC$4ã„(šǨÙp>ž©D0‚Ô#-µïÅ® wœÄˆ5hbÕ­$)2?SŸÝ![Ø-bzΚ+uPYUöÜ nÒçÕ˜xTs‹C)êE䉰ëëþ£îaóáp²¥™-0$~¸`Ës+ |>÷¶|6"Àg}½q>ór—º÷VŸ7|ô?MŸÀŽ ­P>Ó¹éJÕIåç‘Ôág¥ðDŸcÝKÅ©IÊ„’FßѾ½»¡wŸ~–ß+S}ÐãVg¢‚Œïlc¿=c,ÈY¡(ç/\€±c†AJ—n¦òޤ3¹M‡SÓ+sn‡)r—׬É÷`áŒþ03ç¯ìè—\çÙ±[Ç–³j?̸§§ò;üM¤rD>‰hè­ÜW!5'´%ß=b Ü–6.U_„7´K†ÁY°òÍe0qÊ,8zä Lšú($&67.™ˆÏzã/¬gê­P´ù/>$ ž}á58u²R>U§OAù¡/dÞfšÎ[Ï·„•ߺeø9ÙMµ—ëBœÇZ:œ{um ÃÒnb<Îß›dèù¯•õ¢)ýjéÚ/Øo"=CØŒ^ŸÁV™Ú»_ÈoJ÷í–[÷-0ãÑyìó°ô3PíØ^Ì>ð~ÜûÀ$¸îºDÃeIÜ2„õ&¤GL˜è·mÚ&àô!ß›Í[%Ͽ’ó’ɧ &öÞ£Ù%rÔ’§< _ HmË†Î´Ê J&ƒ9澉!¿ÁÖÿÇç—+×Ö‰ç‹ùÌtS¾ d2ûÂ?{<³`™r|iáÓP¼e,Ë-%h{Ø_êç÷Ý·—³ï­’L ÛËéó3ýžL¢-[çßO%Q¹@A/);«[Ž2=õo÷¦àäúzcé‰ÙÙñéì¥Ê±`Ý*˜:ý)V§Od×ËdÉڽǕûÌ$þÏ a—ƒÝ &Ë\*:ü ^„ƒñØÍ¡þDÔ+UñÂôŸèò6=ÜÍArgÍ•lOÍ_Ê~³fõkð«1¿f×2GŒf×ò v)yÞ=úצ¤¦Ö)Ëvñ3kÑ.EG…›º?*·µŽ¾6=Üçâ¹üþnμ΄t×Nˆ]'2à´4C[?9‰AD/Ø~¤c¦,}ÖÓ÷¦‡»L\0Ž?“Lñ¨¬±AƒåfŒNõ6á®w¿#Ew5ŸÒUÉ•÷ý¤;ÇxŠG®§F1;Å£F&h£ñyä‘GydŽ”y·Éó”§iÇêâ®æçW6©«ýÖCƒGéò¯6<²Lÿ_{Ñö¶ox Z$6ƒ^?Ÿí“ZAá;Á…êZHî[yfί`PڔϷtI†5+¦±ûµ(+ãV)§ÿš¾Ü{£nÓ?.Û¦¼w¶Â’þPÔüמ„]Ÿ‚¦,†/Jþ?0|~ Ö|¤ðrüx;ŽÙZ4¿.\¬¼w‹ÙýKVl”_ÎRR›ë@òÕÁÌÉCaìèA,/LWj«í—L;Kaöo²à™çWAï´‡à—Yi0yl:tê=–åµÜõС}ÆË´É¿€¿<E[÷°ë«WÌ1žeÇ™3áFù¾Ê“g÷b¾ÝR’àéì\È_·Õ‘gñHÚKîöKÏš‹‘NZëYs¬›«½ä¡Á£˜èŸ°wpRÔjü;<DªÒ‹ Mº4A'Hñè@z)¤© `AºHS©>@zõ*¢€¨€òDš ø€ƒå88Ù{óÏî7—ÝÝÛ»›ÝËùM&“™M¾Iþó%ù’D)((D6êuZÙº\‰˜>®ÄÓÀ{ÒÆ ëÄ5Ä9̹KÔ£õ*ëáÀê•‹Å}ˆ³oï.ý>Äãç[…"'7œ‹;#ˆ¤n½G鱦­éøqç21ÍZSŒvÞ­g?zª]g=>ÂK•*+ü ÷˜€)ïÍ×ÜTŸ“‚B7ë‹y3µµ­@IÇ :Ûøf´z… ‘‹Ôž)Û¥GßTû¨z]W)ã&Û!,›WPPÈ€äåP䤠 `Crr˜hNýZWQ’QHWÄþ‘@ëwüjzmhÏ:^>ãçíˆ(Ù˜å'Úêö½ÑÑQÔ´QQUk ØõãŠ;Ÿhz­@¾¬T³Z^%¤å– 󲩖CŒDÙx¦;úœŒÎˆ–1Å1yÈò1“Y(ˆéLl,Íž9SÅ•øxý>qî “&L0 ?zäHšÊM.¬feÓéH¹ˆ“g^¢£T‡¸mñlÏž4wÞ<êÓÏiG²~Ý:jР9s†²gÏNoŒIo½ý6*\˜–,^L:w¦ömÛÒòU«œÄrô(Õ¨YSLÙûï§Ý»v‰{åg´hÚ”~üé'WþÏj•+‹ð+W®Ð#FÐ[£G‹ûË–-KÙsäHýÌkÖ[Ù4jÕ*ÜC÷αåà¯ø´uç·0«²žhRÂVùùÏ—'<ÂÌò“)É¡±”Á)Ø ‰Õ©#H¤Q£F Zºd‰Ð¤@H—jäÄäaˆ‰a|Æ]Aá¾=»w‹ë8nýê+·ûë?ú¨S{¡¥1±ædR6…“¾¸Mê‰hbråÈ,ÆMÓ° 8»“¥‡æd’—Lbz£KC Ð¨ˆÜœ@EÁ97IðG®°û¹ƒ#´ ã½áˆowìÚˆ d-jò´i:y1>Û¸Qă†£‘v.çÆgðó¡%86ÐȈÏq 縧UëÖiÜ á0uI®=yá²e½ÝôÖ5«W»5Jl鯕lûŽíÞqTÕ´ÄNíÛ ?Ž8g?ðÊ!âyÔ­+ž“n½2R¾­ÈÆÛF;œGÈrà‡<8,/–‘,9Œý)É‹·üdr`×LƒKO€TPé:´k'ÎÑš84`€ T>næè}+ZÓqðUç¯;**¾ú[·n 2ùtZ~LŒþÔМ^œüÅõ†ØÓ§ÝÎË•/OÇ?¡5W«ˆU­<áü¿;wRyíÚ’åËi¾V†pÜë"føûöîMݵr÷T›6Âxýõt$§dgE6¾äÃyԛƚ\ È ¨U»¶8Œra læœÙ‚ìS’oùIw͉‰†Ðø .‡ƒ|dMµ $äM[@?LšñSPñYó©æúJ±vÈDÀ$„ë|MîÔæ0¾~ôEùz.ŸË÷Ã/k¨i[½kNèWaç  ?*ÐÃ$Ÿ³æÌäeöÌ´†[¾-ÈÆ›|8¿9´8牉ˆåÔ¸I=Ü(ŽËñX>ÁæÅ[~ÔÆb©€¬Yƒ[& D ²À‘É™ ˜Iä Âàëð#Œƒ¯C‹œóïë×¼=—ŸÅáò=òs[¶j%šÎh3‚;y)›r[ñÙ¯ôD“âtÇ푽4òéÑäõ#;Ã#&ù±4}åæMÝ~»Z]Å*oѵÄèάÑA”?ÈdaÔýÅ÷Y+õuwÀrÿV0€Œ|*NG¤Ö|q"Õ±¤Fëìc:ÍòMFç6nq¶ß>R(¨ ÉØüM¬ ##¶|“<ô{wžÌJP.^ºaíÓêL;¨T&å»;kÄÈéüÅD:ðË%/µ;Â4'Gš“Y…SqeT°®8’KöšFß®YɈÌþ{²R¥²y„ÓŽÓtîÄ€dckÍÉá_sÊäR  NAÁÕ/Nµkr kݼ4ujWA\àÿW¢”/ïâˆsı@O¦N>óFL…x¨<ÜѸNC õ/;×dÏtzæÅÒôo8wá*-ì4̼¯x.Ñ7‰Îé%+Rþ|Ùôxßî8Eç/\qqmÝgÇü_¯S4Iº³ Ø(É~ì—dã#€at¶åáëlÿ„p<ñáR›å|[‘M’µ(c:M§¯¨Ñ:…”àÀÁ ¿ýþ—8®Zë4  ÉG£ßB öúÕõ‡M_~©‘Hš0éqŽasÂVgæœ9ÔªYs*W¾œ¸V¸H·#[ÁÃÆéð¡CT«v-·ëɶ@µhâ¤IÔ²Y3-Þaúzû¶T×6B!»hNþÞuTæ=â èÚLÕ:…tÅ鸋´úËÿš^{®G+Ýß㩲F&ó×Õý3æ¯÷+;ËG΋·ü˜jNS?úTÕû~u-ªhjÁÈM3øaPÉaЬp<ìšÊm þÓ§O‹kˆkë|g;'E0OŽœa‘ÁKñ—ÝÎkW)K=PFÕ^ S>úÄí¢%Ë—‰~"šz˜SÆÓˆ ‹é"®æ›Ý ç;)Ì×sò°s2ÉO´ÙäÀš•*„E7nO^=oP÷VЉL0°[KZ´þkºpÉ9ùùúõDz°f ÿ¤埜ŒE')Ê? %Y$ÁÃû÷QüåË)¢8yš ÀÓ.äpž¦ðTã}6Ò7$Ù'¥H6vÊ‹·üXZÏ©R¹œT§æ=é–yËNÐß7M:ÌBЙâ×âX¢d¥4É ÿ_®Üù(wžü>ãž=ó,t_Šÿ³TÑôÇſ®íæ}Í¢dÿœ•‡©w»rÿ‘A>­”ý01sòHg”ùô•$ŸœÖ¯kú¸õìP‚Nœ¼J¿Žó˶â÷ßPíº­è?+¦ÐOa^:§iÚÿ­ŸK=úŽ×bZ=KG5ѯ´ ·&~êv°ì£ÑÚ³ZSœF*Õk­ÇsÓöÖÏ¡,Yï¢j4¤µ+§êÏÇs8þüYÃD8þ¿~ãŽZülZS,›HÓrí?›G[7-¥Ú5«_)o²Ê|{&z¾ý½¶(°ãÿÏMÍ÷–fcðì‡3œFlU6áÒçdª9™v¬EÙo#àŲy¦+DfY5²¡ìݽYÀ¾=[É0riâäÊßMY —âšæu=ñª81éÍ“Ÿ¿§rÒÏ hšž'?+—Kƒ*P°„ ¤EkOøÏû+ÔÖÓPIð"+»0¬ó½Éå#ÍÞú[ÊÏIÙ³Ý1tãæ-ïÓW”ýuI~óõ@ã7úUüuúʦyãi%0%ÀˆAbˆ‹%xA^‡Õ7ßk 'ž¢‚Q=Ñ3þøá™¯yÙma¶”BÎw°²± Á÷9ù~ðöo¿u+¼ ªºõêéväk¯ÑÖíÛ…sê{ïé´AݺâÚñãÇEÁðâ‹â:žÓ¬™Ûsý¥+Ož<Ó°1]úóý°'y™Ú=ŽB2²dÉJ×{Ä÷×ù ÔÞQ7‰\Ž;FÆŽïQ&&+~Ç\d´ˆ‰ÇO]+žzg'‡CÃÐÖÀ5"+\¤°˜¢ÒÂSS0GLeQåð³ÁâÇžŽ¤„u¸ñ¬á¯¿Ôj‘>óF²I=ÅØŸSPšÓêU«ô‹‚Ó´)½?}º (hC%K•Ò‰ …~ŽÙ׳@â:ˆiü˜1>¿°ÞÒ•;wz¬Ñcé.ðK—@’?¸…Å4Žñ’~kFŽÁ(ïI~lü‰Æ-_Í’§8ñ;c-JŽ0Y»‚Ö…‘•ÂkE;Ø{øªZÎÜÌ…µãR´|d ‰føÆ•ãúÙÞþC^Ê×Û=Áà×SñOs f³Â5tøpÝÿá‚ñøKÉ— ¬|ŸìË.0×Lz…ÀÊŽWiZоÙ}V¸~O—§ÌwDÞR½7þ¾E3W2‘AdiNæ+aRp}NéÝ…öDã‚T¤@ú®z¸iÇy:ò[B@Ò«rŽ€*QR å$kN‡~M Ë ÿ„ Ó{_‘ȬþÍX~ˆ2¬ÉfÊÂÔ¦I *Zà.[¤úü¥DZòéqKù‰N ÃѺ»ØÃ¼¡q|‚ 7wA¯7y¾`ƒ4?TÙ9R÷áǧ(þê?6¯z¾Œ0ÝÃóæÎB]ZEîœÊÛOi–?-iHf᫾ø-ì4)§æd¢N%Q”M ¬ýÒ•=[´{ºÂ Y÷ØÃ÷ЪMqöל,LÑhýè½TºXxLT1u‹Rý ÑûKú-gŽpµ ²Ú!®‚úaòäÑT£?û‚ý’ZѼ–IÁ(ixÈCüðcä öO¯ºVÃäµ5®‘;61€9ìð˜ôð’xV4è×»75jÒDŒâá> ÀÓ<÷£“˰,pmN‰ç!q|uÆËÈrÇmnù¶ª9e¾#õïTÉVeêú[ôÞÒŸýjN™Ä®gu âÒÒ§ÿdÃ=®Ñ<Áx¼ƒ®qÇáUsá,ÉÆîZ¼Ÿü¤h q£=‹ÑÆh>À€êk´gJIÀo‡¢Vˆ8 ¨ü HT~T4#Ld[˜B,0l2i™žR O¶ ófÈ]®}ÍA û]a¨ðiiEÜ”6¥LÉI²gb?äÆvnFƒY£9È /½äöÞCÝçäKs ´òsÓÁ–ãvÃÂJ˜áÔçä/?™¸mïælÚ„ 4ML8rCåéîúÊ㢒‰‰+w÷€¾òLÞcFÒûؘ¤õ2¨‘1úÔX~Øi÷źHȹ;Mm¨x€!ù1µ#L;jsÊB<”ruX²‚Þô"U){·Gy‰<"ÆSJ¸H¾ÆýC#^ÝíYòR¾¡œÈâþ¸f­ ÞB\γì7ë[3.],÷³›ÍF¹YÑœ|åÇÜ” ʦ%6ʦiŠ ¬p(XUœüÏ[»õ½ѷZÄÊbü¼ýb‹ ×>§$ËK¦XÌ wÔzk^ ³9!!Á­yòþ´in¤X+@gr-Mè³1›ýŽŽcôÕÈéº3Yj½E¢Sz²“WYš„¿5sOORÊ*‰]¾@¾É)øf–Ò¨âªà¨Ø<ÂÄÇŸ®€¼TŠP‡ CÍïæ"ŠPö¡ð ÈmÛº¥KÌx¢²øJ¹Fó0†çÀÒd½YÇËŒðœ‘ôù‘~iòµž’ì)û꯲š6&y–'ÞÌ>œ?ß)»=ÄÇy)Èé«ThñQp„é|žŸM 7û€8;E­HÁ@qX¯"–ˆ0ñ7îb¢A>‘5Zg>ñ7)eQ!6ºÚ¡Ù\ö/fàk<Ά}\ø­€Õtus–cA¥~{ìXQ±ØÎ68¸`ôZÂĵfÍDå|U«HÇjº’ørt@"lÀZ›lJÙp¸lÚ€û/À ýû;í‹4÷­YµÊͳ%O¬@6O@zqĵw ¯3©"2Á°9ß ™"? &܃ô3éz_×Éû€‚¼þt‡˜’Tî¾ÜÉÀŠ Æß )‹øÕ’(|ØÉ-­&ù‰*YíÐm{èþÁ‹Û&3ï.þÝvi:uî:­tÍS»xþ,}ÿ{e{ªM7q|¡‹}Öb?—¨Ï­³ë⻾Þ@^0Ÿÿ×¾g_Ý?úyó•=a2 ïÚ‹áò+ññúÀ}BG7F˜@ü°äFG0FåØ2œïA¯”‰M91º‡‘;ŒüÁÉSVpŽ˜ÒŠædŒø`·î_>o–_Ùø’à/?mç”ÖéJ¢”Û9)ÈÍ:/¶;~L5@8FãI —ƒ˜@0å]äÂÄÄ#R žZ?ß+ÙîðæL€˜?W­r4×1YËY’MYˆ›åEMü 5I)y†L˜ÁŽHxäá@ž¦"Ã8|nv1Ÿ³Y‚qZ‹<Ÿz}4‘?Z—I_«Yrv$ÞûÿÒÓd§ÓNÆ]O–O¹B ØÉAæåÓš…x “jùk vÒ&­ÈÆîJù1oÖE‘î&.þ¦­8™n! ;ü¥§iöÚÓ´ÌëA.rº|5ëânÚ¦PÈk9M^tÂ6érÛñפ¢±³º*A¤M_‘ómE6v×¢üåÇÒ×o:h‚«3Ú6˹ë¶K“¯fÝÂÿœ²ÅfÉAyÞã?}hD“›ut<¢irò5}e¸dÙŒ&!ú¡6»¦ªðôìÆÐ ©UÀü4ë(œzüaª¦Gèd­¦¯„î«êðaË“\w¼@5*äõˆiÓW.]¾á–o+²±ÿ;ö¿£u©éÞZGŸlX‚:7/EMëN¾f<¾Õ¯ºðó9âÃ?q@-=ž‡ð¡=ª¸]K—FmþÇê£áýjPëF%èÝaæk=•4¬)ŸçΙÙí¼”æÏ£…%Ÿ'OrÍšù6·s¸ÇÛµS½·Q)IÞË¿üFÌØÑD=yñ;oŸÏræ­îÚ]qò•Ÿh,FVUíTAýtì èX‘>Û~ŠŠä»S+ðY éˆrU„,ZE‰¦çÇG }X„7×*)ÎùºèCØâlîmÝu–ŠäÏ&žvyJ;Í)k–h*”ï.=ù¡(Hjð¸í‚t@^3– ÉZØ ñÛiòP瘢…ÿßeý9ß슥gÚ8mrh÷¿Ð±•º7'%^ÿ‡bÏ_¥Ï·Ÿ¤ã'ãišFô/ß¡AZo>ç´£™¾ä;â¢kM;¸¦¥sÐä”±Yš“Y~¢Š”Ú#7-»ôWíŠ ðGÜiú~ÓÇna;?ï¥;À>}Næ÷¤}Ÿ“|í»/?¦‹çÌ×jÛÓ}˜˾Ž}¡fÄ–«×Þß%ÖÝ–±jÞTK²™<¸¶mó5èÝ>ó­Öo µ®ªä9:¼ÊR…êS’¬˜7¢Eâ…ûÎBÿÓWÂw%L“q35pÝGSUå/|O !äüŸ\f½O%©Z¹²˜Æ"O3ḛ́ˆÛC!.Ì0ª‡kâÊÓYŽ0˜ÀÊÿ{­î ’ΗÍ-ߎö­ ‡÷è°j„©œrvvØñ`tÎ8̈́̀욦¼Š#ìŸF¥Çå­`ßÄÓV@L0AH +pšFòÊ‘þeNvNfy‰*XæI,ìܼ@}žƒÀûÐsƒÇ+Y†#äi†§ž¬ûß{åá #“'~§û×üû]¿²±³|NŸ»J>Úï3?™Y4^Á¿šªd™z² ÄB`«nŠá²çu­Ns t:LjjV-ÄŸŸð]¼|ÝVïvÜü}4nÁ~ÿâª7äµJÉ TrôÚ¯âŸD°¬‰lÑ~"ô'¡ÉËpø±L šfÃÚØhÒ¡ÿˆãÁ}Vh2‘á™Xäñ±ô 4åM7Ó¬h ›‘3 Ëz“)˜íf”S.=?€@¸ÏýI²k²uˆ ט”3˨y˜øùvÑ,#IS6[wË¡¾þA©ÝÏòÏ­´“墳¨Kwçbcýz=M3?\A/èEïLýžl%s³Óà¡£h±¯³DÜÊUœ†” WÜîIß&ŒµÊ¶ÿ—‹T¥Œçî+Æv{¸VA5›®2qÒ$kÆÓ]äÎo™õd£ÐÀØ4K µiXœ­YHø9y™¦.=˜¢gí¦·šouvØéó×è¹ñße´N¹ ï¼[#hL ¦Õ[~ˆfágÇ4Mèui^JăVr!ACºxù†~Ø?{ÍêóÔýôÕ®³â]€˜{'&sî¹·™Gè¶M‹m÷*ž~ü_´bí·Âߢq5út“ý:ùöî?Lý‡Œq ûzã¢Tù/4Ázwk!üÃÞx—Ο;K · èËϦûزê xe íûÉÜ” mßá¾ aÕ¬1%³ü˜nGžêÍŸ ܲ¿Ñýë¿ØcË4:ž²¼%šv¡wqgOÓÕ« ”7!*_±‹‹ácÞ$Ž­cª‹ãÒE³Äñµ—ŸÕïÝ¿o—pËÏÑÏåk|ܦ/Ö¹=/­\’Ãûväv7kJK§-ÊC(n~A{b?4§>O–ÕóÍ @ÓhP£ ÃD}«])¯8U~L×sr¨ñ ›užkÝJ¥ñå‹çRñ¥5é Å_ŽMVü×=ù Rç¶ ôÿæp¼ï³gbé1/ÓÙ²S»ŽÏR³VíiÄ+}è­q³¨O÷VÚóÊPóÖíõ{€¯6}*\^í¹·Ò°sß×zNi¢¹i»èäå& W\4sv¬(Âøˆkh*•)–3Mš˜¡– è«ÝgE}N#gî¡Ä·D¾_ˆ«@p“ñv?çŽËÁš-XÞŽÜ¡lu‚¬Pž#L©Õw3øµ‰nçOµï%þ«ë3…ãÿæð×ÇÌaã§&7Ùï¯PM÷Þܵnáœn¾/­ûÏÒ{h})]›{nLºjó ½¿EÆW»ÎÐþc—¨LÇœiØ'ÉtÈÔ<®1™/úüîΙ%E¤ly;r‡ZÌ1Hr¢4#§ˆ—¥#½Éé‚p´'cÅd?W»ÖK«Žy»Ù4¥4ߦäDªYÂf]’ÇŽ+Ž[J–Á÷A¨¯¤Âñù‰6#`Õ¬KI³Î=ì–’eÈd©àÎÝ‘žŸ¨œù¨"   `;¨9)(((((((„5L÷Kª×e¥R§ÒÛµ‹RRÈàÍ:³ÀÿR’QPP°9ÝT䤠 `Krº~EIFAAÁ~äô÷õ„°ÏØÐþ­©a½JÔ¸íh*\ 7mZ=’Ê×D‡¶O¦ø+‰4~úZ;¼}0ï á8|øØe´eÛÏâà{d?Žü W~+žÅØùùÊ‘=«Îçã§­¥¡/=.î}¾çc"ǵt>N… ä¡E«œËÁð5â#/ÀøéëT‰UÈèäþšÓ› ®íyéÛ­F<×ô|Õo9”jU/CÿÝs”nýsƒòå¾C„>z’^}±}¾é{q^ªÆ³ÔÿÙ–Ô©Ï$Z2{ˆ~Õ Î%N=E£&:×k:¾{.õüþ夈_¤à=ôH­’úy­êÎå'JËEòf§Ø³ÐÍ¿ér|µèð&õïí\‹ q‡zšZu¥?i¯Öà%UZ2LGDŠ”o¯Fël‚S—QÑ 2\¾OZ®Fë”æd¦9]U’± ò—l¥„  ÈI'§ÄkJ2 éŠÿ ÀÞuÀIQ,ïºó|’•##'IÄ*I‚äùWõ™Á¨H2 ð@’ Š€" ( I‚D•#ª„»Aàö?_ßÖÒ3;»;»·af®¿ûõMží®éþ¦º¦«Z©Î ùºLƒá²˜ ³vtéä#1)(ä/B:òlÏzŪ^Y¶yܲë0½:þGTqEL .Ç-÷ÏòŒØÌ1ùíõâBšÿ~›¤óÔ£SPp­¦4pâË-š8)Ï­š\Ik]MÉêñ)(¸+ø‚Só­ˆIAÁ¥¸ñÚ²ŽÍ·"&ê÷pZ·võìÞ>ê÷Æ}Ã…"&«®®KmÛß+Ö_ôœ ”V·Þ ¶±Äv§ö-u†å²¥‹èà £iÞÜÏ}ç75ª%öÏÿês±<°¯å¼¤¨Ç¡  €<²³3µµ;©H‘Tœž§ãÙ¹þ¢í4Âq•*UF,wîøEìè‘ÿŠíÏô¥q¦Q¯(­Tß=ïëÑGÎQ“‚‚B؉ÔÖD²níjš2}žåko¹µµ ¥EK7Pzze¿ãÙY™aåEcRPp)†OøÉÓ¦YzDׂH²5m©Téàt´«ôŠU|ÛfÚQ8ZÓ¬…;TWNAAÁER‹Š èÚÉäˆ|TWNAA!n¥QE ¥1)(¸í/ÇsL"ßIºNWâlÕ•SPP°RHM'®  `7bBNAAAAiL Áˆ)I“‚‚‚ýºrzÔ©\RKiJ2 ŘÙ{²ÇuùZ6¯MXá*¹,_»‡–­Í0“'G·Ã£4(ÀX/õ•lÜ$pޱL)¤Œß ö¬®Š—”€ÇÑ¥ñ‰É®ªY‚.-[Dµ 'þ>Cß,ÙðøÍËP¡‚jp}¸r³ò†Up‘\Lò,vÊÉ„wÑÀ)ù¤Óªåe¦Ç°_‘RørÓUÖ@I1ûäb(K²‡ôF,xžj`´É`ÛyÁäI“DŠ«W­2]7ÃìÏ?÷Û׳G¸ÊM¯ÞùóPþN®“‹YüÇ1¶•¦Ѻ‡£.³kjÕ¢Ÿ6lë‹-¢¦7Ý$¦Nݺ¦$dÜßëþûiÜûïS™2eÄ:ßK>7+3“²²²hÿ>ÿ®ÕšÕ«ƒÞ?Úr ¥Þ³¥T¸¬(•¾¤«êÕŸGNÒÖ]G-Ë&ÄÎOI¦úµK&¼ÂêØ¾=M>Ý·ìèѺk€Ï?O©©©¾mù_|õ• ¥ÊUrƒ|ñõFêÿè£4läHQÆÁê¥Ñ–rw‹ò®|þ—(@U*£/ýF§Ïä„”™éšêÓåeSmQžÊчÿ¦e«ø­±LÉ‹ 'å¢bü²u«n»õwŠåµuêøÈ €¶R1ÃÔiÓh¼¦5™ÝcÎìÙ>R ›éÅÆz)§ü@J2î¸érK²ñ³åH± )1.)Q..^À¯Ûn,K2F~ë“"»„Ûˆ¶&h3ÐrdtîÒ…Jkݵ"©þ•0µhQ‘d›ß× }í5©¬Ðeúúëº{,^¼X e§ŠªÆäW/Ï¥üh—ËlE.H ë–²eYê_UÒï{›_y®ïð¾îñÖ­Z–êV+çÛ®”~!UÖR,€Fñø“Oú­[µ½Äû- sæýî[ùÅIÁTn2ÞùCÀkú÷hê[o{‹¹Æ”~Eyªß ¾ å1ãÆÍÃÌ3¨m»vAÏy套è¹&§%?î6'`Ø„Å!åJ6;~ÝMôäãÓä©SMÏûaåJM† ,ï3çïö­¯X»[K¿ê»r‰üäøË/¿ø­ãKÐÀçžë¬)ð6º6f_Š`±±„¿bá\Þ¯à`!Ì¡Wk/.4<48&%ì{°W/±Þ¥cG± ²)1B¬oÞ¼Y4Z^GdRÂy¸. ÿsW<Ò÷QÊÌÌÔ•²LdB.€,®Ç>–i´Ÿ¯_Ø“xÛ˜ŒD3~ÂÑe@𣶹«%¶¯‘È`|]qáÖ¦†i‚•»1N@$_¿bñÅ,öíÝKeÊ–a3Œ¼fefùÕZ­N@CÈ%œq±æ°WÛÿHß¾Ô¸aC̦ªV­šhtÿÕ4Š%Ë–Ñíº@šEü)*ïm´Õm·Ñœ¹s©VFÈÚ`¹r儬ŠjmòbbÆ9,äòí²¥âš(P®_™’=¾‰Ò¢Abû*| Fff¨ÝæÕ´@@òqtñöíÛG7ÞpƒcH d Á`(@¼_"ŒíQÔ§JAÙreuoö°ìZåõ¡C#¾>. “¹„êü€”Šxi›•Ù(h¢ %{T&CYüŒß‰ü(×´iS꯽¹ ìƒaÖx o3>ƒË@7F\Œáq P>YÄ6–ЈÐ%Å6Ê…}ÊmfÆ>ÈIÈ@»Ž·Ý$ƒ%4OtqŒI²Å9û¤¯/¾òJLáAß!^¤¨ÐÐh¾^°@¼ý¹ëM¶§ÜÆVßgc‚v4Zkl¸×B‹è®É ×âºg5"ÒFm¢¶"—`͸¬F(LJU5y@&(#k–ÊÊ“,V&jÊö½6ô<—ÿýÊÓ ÝX]êU»”êU?g¼¥ñÛ­FÜHß²1Ÿ»g¼Ä‚ò Ilã `òÁ>Ö¼°_à Yâ³ûb›ûANø‡aòGœËÚ­1¿Ñ›Œ·§/xM¿î7ûÖ;ÜV!_Ô¯/ÿ&| á¿ )»ËfÚܾõkwÑÊu»õ]9å‡d/ûRP»@ëÖ¾./ÈÄèF"w‹}ÝßÊ•… Î `£Ão¬Öƒ0C¡RåÊ1T”¯œ &¥ ²q2Œ¾ræ½U…D@îv²ÆÃ Ý'G—{ïû@Ø6ŽÆ–íTµs¡ñ9f÷„1[û}´1 Û||.“'´%ào+“\‡ç/ÝãúzñÃúCþ -»ó”~“Y’M­P y±Ì"ºÄÊa×ø ÔÈmM¨/“<)Ÿ‡e /nLlÑЖ‚Ê)ˆÆ$Wá#Ú=ä11®3,úvgdéÕ r±{3öËk¸Ãvýš©lL¡º@;Žé¶¿ÿñ ÝÚìÒˆîÅÚP<É—ÀhhKSàŠkÝWîŸÓgiÊ;òM}ó„á+g_É£[÷.Jÿ;sÆC>©Ø'¶ˆ 2[²|¿L@>“²1åÝã|¹˜ ° öXñã!*W¶0]]ó"U)$ìÙ›0lGfÖiñÅ©hêùtþùjÂcÆéÓ9B6–_‡Ê•*L•Ës•¬víÉÝ8«²q7éòêñϼå˜ß{‹¤,5B…VkÄÔ¥uº+%vqAºîê4š<{‡%Ù8•˜<&‘s“sg(8—”õ[Á.6+©ý­î{âµ*}[vÈó5yÞj–…<¡fõK¨Võ’Þ®m&}·ÝBU*]$öW(_\lw¸»ª86wÁN:rôdLš%;ç m£cGÛ8ßæ%/*HÿúÛ5t*¯É꫇B´püÄiAJ *Ð]·WòíÇ>loØtH$&¯ oÑ@ãu"¨ª²¯‡=à#†ððƒÇ<Îc/z¬#⟇ë°óøzøâÉ×IJ!ë$†‹“Xz¬…=QPW^QLt㮫—;(_!¡9e× Äö‘#')c_?~:DC 1” Àáa;à!Aˆ&(€5*„?áp(‡kàÈŠÄaO@b¸ž\q?œâ l.*ÌL6þ,ga“¢&ë€&T®l*5¾á2Z³ö€ØA¬¾úzñŽ·lÕS\óé'Ãéî{úù® „‰cžK"ߟïsòäqA@‹¿þŸ8§ióξûñ’{ôð‡©O¿·"{=Ùˆ”€´ÿ¢·•Ö“SÁþô×QÅ>ðÉ‹ù|=AR( B'8çrô€pÁì€2% …”ó)÷\Jvj«¤WÒåyèøO ðýšŸiÏþC?Û&L eß}ñï¯[»6&ÔnØ„ÅÍÈÈ$²Âº³I}2âc£FŒÛ¹¡y;ú"`®A(̘Âf ›‚sp<Ú]+rqRWŽL´½OqLÊ–•E3¦O§«®¾Z¤H+m8×ó’ššê'ü7Æ}B—\TŒ*^Q6_Ò©S§iÍÏÛüɼjuË÷èØ®M5LId|f¡ž!ëûðÃ4⭷®¸VëB( œ ¢ ð žñä"‡>iÉ“ðd£Ç“Èk¤o6,™È8l &=x}èPªWŽj Í"˜lœóÛ¿LMFðö¨QôԳϬ´ ®PzÅŠ!+-ÞÊü ZÞÔœæ-Òûã¯#")èQ¤H*•.c°³³³iÈ«¯R»Äslª5¶ÅË–ùH†ŸÛýûiÈ AbŸƒëP?x›ÁÛÆýá6³h†5†>¡€€ä:Éñ›¬’ Ïœ’ã˜OÑÑ0‚« N ­ë1™É|ú&  2„iþW_ÑÛ#GŠJÉoWÍ-[Š};vìð‘Ò^õä5cÚ4_%•kù^¦H2O-on‘?*Øt?ù¬Šóży¾—ÏŽíÛ)­T)ñ,ñœñ¹á–*í?Ü ¥7̈Ã5òÂKk¸í)Ó7…}Â[bZH¨jµª‚X0³ŠYL#¸«Ù`½Ö•9Å´ä–‰jý'¼ _ä·HoTTNTZ¬ÏÓH+˜„síGxoâİËÔ¸ac[Èö«…óõ ´Ù-Aä:æQxqìpŒ,^ &*Î]¯í f‹Âs§i ,kÚ’õ8PS ]bœ?ŽgFánšúD^¤éð½yÉ÷‡Æ%ÿV4çš“»;ž<ÈÅN<¤ã$2våLŒL¡ÊíäÃĄЇmT>Tæçž~šZÞz+5¼ñF±¯T©ÀaIP¡Qáq}°Jëqš´¶/±mè½>KïÕœ®˜îü=“F|´QÉÅ —9ßþN}»Ö´]6g,ØR96íÊ…Ç”h™ÿëüdêÝñŠ„çé-ƒcq(‰¥N¡ªRcÚ1 dü>õOý´%ÓÝb¥‹Z·1½;eý§SuÛäüý™[0N¨°'xêv % ×=—Ó¸O~“õÑ€çv¼½,]R"±Ób5©s½3õ7:u:Ç }9Kö —¦výì‘ Þdc&—“ÿœ¥an°ÿ³öø…ÖUo£Hat õÑ”MJŒ‡:^NÃ>¶ÿd˜áÔCh\êÌ bÖãæ6jæ,•l>H+ÄË„ Éþù 0à-œî›‚á-j’äÍ{[Ut-)(ˆ×Ï·,„\œ”ȤLAmLN}ƒ&._JߌÇ—”,QÐõ’9Y©gÇ>iS“ê˹ž=]&K+C1àï'Z3Ày£¾yip/«J°{ˆ2ÐÖëZ×”hL?^.­í9p<¨lÉ¥FzqºµQâg×Þ³?›¦ÎÛi©/gÁR!/Ìï6I²¯#/ù&š² W®ðkCØ& Qr‰i¤.T ŸÈáMpl#òÎã(U½DÃáO,yûùþpèåãfaS¢)3Ü׺’-H ¸´tz¢{m*j˜Ã¬,Éþƒ´¬=xŒÔf„wοî5‹¸€%\Œà’_9KvÀ†k¶ÙQÏç"Ú–ÑyÛª,õ)¸ß*‡.Ùâ‹4Ë@LkJÐlº{G£#Œ ®ã(¸ÛpÆÅyHð³Ãý@*Å>fÜ8q.–¸H×óý÷jyƒ0ŽsÄ#¶ûôê¡É-´\Ê¥¦’Ù¯«Û»}5[“¾,¦¡u­„CF?­ò™‘Ö&_¡Ù5Œœ/ÿP§Î¢Eà9q$ Ž0€‘ú|çIçôìÞ]¸±£6ž5G#°nÅ—(xhÝPuZÈ£y‹y÷ãºPi±6„îHƒØ›‘ú„µ7ÂhÁê™™\î¾¹¼­{êçž¡Ih]Œh‘S8Í oþ)Áy•oEÖ—-]*ŽaŸìr"Ÿ‹Êž·h‡ÒÔÞÜÈî-çOÎw,`”e4!|<ÈxNÞqš )È1™‚ÃqcÀ¹Hd©“k•‰5Ø í`dŇ31böÜ/…vƒÐ'f@÷‹»h¸'4,Ü6$Dªä{vó†Ia ´ ¼Bõ¹r[’‹– \`㯕ú™üÊ‘/ƒ+$«çÊ r‚+tmƒœ|.¿M£¼Á9p–è~  ¢È1†8:ºlgdtE  ´kßÞçI‹­Íy@÷áDŒò`í#ÞàßäåÔéÓ±#"òÉ‘& Û9šŒ± ÙO=óŒØnبQnxœ Q&¢)K³Ð#Á‘0Y€`–HwÇøZ9$Šx&Rh•%Mµ.¾·|Ü6%|i¸oŠp â"ȈUw${ÂD€}뽚‘|n¬â˜B¬}`H Ý䇻&8¡ƒóöO–¬™°33ì6 #Û䨖ƒ%äÆÛ Sœ›—øÜV‰ ùƒ|8ÖY£âcLèØ‡mîÚ™•³,ËãuòÂÇ䄲„5Ž)œ ãîȪ=‡5ácÁΙDÓDä%£Ü݈^Ï9:@èÈøyMë  ëË2;®u§d»kXÐ@Ã×òìl…ˆLʰùdef†Õm—7¶ ù‡(›L0 87æ·iسÉçìmd¶ î&r÷ƒ op4r4d%=9bÂE »póÍ7ÙJóv@TÜe.¬i~È÷”H´:‡iæ)ø—ÏW5R)™M¿Ä3˜!“lQ[¤óä¯y‰H ¯o¾l‚<œÁ ÆYd„yäŠòQ.Nðò$»gv*sëÜýà8ä-%#%7z¶=ùˆ)@Üê0h*¢<³‰<¡»Æ†cù‹HǸkÄyŽžæg·WQdrå/rl”†v$OÄq¾±dòA”5-¼±ý8gbÆhå]ÌûÌrl¼—åĤ-“tîð†:’f`¯Å8¯Èeã_óÉ¢óš’}'ÜcnW™¬ˆ3žlˆž5c¦Xb¼ŽópÙ^¿A}?M*w„ø£¾ko“É› ã¨@J\&çõªwz*Y[D¯‚?€¸0¸2ÉwéØÉ7æ ËpdÊÆ”¬ØDÁɺT ˜Ù—F+ÞìРp6¤& é4“„ 3 ¤Ä¹vèÎ…*³Uý „dõ‹ <¦k¡&‹-^ùµsØè[7²¶ÒaÜ@™ÈxHïçíXN4ŽM&˜l¬z€œe¢E,Ð@Ô½£ÞYŽãe¦Àe‚·RùY{BŠS+Oú¶‚’e ðÛþì¨ÉÆ8æÊ8>‹g,–ñJù\Ùš»Íyê§JH6û"gËÐGΠǤ]“.­ÜpÈõ²øu_VdqŽü|S”±;?t8Ý%KùÈ|ï " j•t¥¶î>JŸÌ·[Þãè§k ­k VW`·’Úõ  ŸQTS4m*V+Ãüå{DÊ÷²qðT¼Æ2EüUnìzb¸ F‡ÙyQœ69à¢ÁnFp¬ cø4>EAAéÆþH‰”ee§Rö2—ÁƒÙ7DÏtv ¾¥JùÂgDì¢?3y"M3AUHO®ÈãÝ»ÓA-̈ce-Oq µe‡,ì8‰_$È£årÇYEt¨ÔEííQ&~Ý—–œª0˜%%òè¨ÄðŠoâDÑèeYñ(fœƒ†Èd÷Œ´ÆyðRïØ¾}Tkkˆ(Ìw n<šùE>Øá”I,œ|Y.ðö¨Qº°!Ƽ³œ8²\yçÁ)£¿ò•ϋȗÏj¾&ÇñÚ3f·ø?2Áù¿GoèØ®ÈdGcä#Ø9¸ÎÁq”>‹fþ’ž0|åìP•J_\È•ÚÄ‘ÌS4bÒÏ–dã\_9ÿ2%G:y<Ö¹£B¡Âµ áW‚*:Ç`’T¨‚X—Žû O}o4@0Ç6ˆÉjÃÖå+L¾Æ  yg?94jŽÀÀñ¬@ÂÚ¦7ÿ2™qœ+Îã{…«51 ø@ÞÎço¨‘8G¡LXŸêõãã4®Å=p/qíÚ€NÜA¦Î/¯†²äÉWä‚îÒ-1AóÁ6†¨Ä8í8/”[鵯V( ‹` ¤É™»ŽL8pð…?ò »—hLÚùh\†ûÂv?°.Kä‘ýóX«asƒÅqÖÞ78órôHÑMÕ´.~!0qñµÀAo—™·ÃÕ˜wóuÅ¥H¤L:¸Ïåâg{±+Gw_–ær-_ÖýScœ¬ÉÆé–¦sɸ€“ã,”xÐ7cå”+7À]%ŽßûX–BŸ$YÀdìÉ÷g"”xe0Y˜Ý't¾¬W3 „ ’„–Í‚µìƒvò÷źҺPÜà¡•Üâ%)\ƒmm½ÁÚÂ…1ªçÏQ‡¼`¿%„ÃõÏiÛß ùÁ ÏKœ‡{±¶žIÔº-aKà>ñ쀖f) —Á¡QÌfW7~,G‡_^:UŒg &GÛ˜B P#ó"lk²31 “5G6`û–Lb2¡Ë築4.“1ª‚üÛr¾Ep½/y]&~ùšPšr0Y†’²Lð}ãi—°±ÈŽ©pÏ`GT¤Ó¬E Af8®8—}èàÖ†sËj×Ê..¹~v+Ú*\»L Ù8ÚÆä7òÛ!Š¡òåÞ2ö’k¨ ØÁ€\ í€€˜”à]1žù€ޱw=Ÿ ¢Ã}pxÕ8¢’ýÎbEJrÀ~+r±ûdú PüË”¬ü(¢¬Ÿ*YÆF–rxÈŸLSµ%ÈcòÔ)Â[^FVf–8ÆT0§T8­BÛ2žm Ñ @„±"k+r±{íóË«1ìI¤ *˜ [É1V²Ôý…à~ž•]-c(ž´^ó¯ ª›Ý䵡o x»Ož B‚feœm…»wáxÚ‡ÍÓäâ,_9ÿ²¨)ÂcÕqVˆ™,C‰¤ÀôÆn{Çó~Ù+!âd{‘q–(ÇçÈÆr>‡'ÀŒ™¶DŽö•3ì0uâe¶õ(_¹0ó¥˜)>Ì”å¬SƒÜç+zú&邟wf«ö¡lL޳1ñ´p`´ ½â 3kG›L>±1þúqìø:–}&á…˜ûýŸº|ü'ÇÂýýÀIG•Ë8xÒ17Ðl4fpç,)þ³“‹ãâ1‘•¯rR𳱟eÐÆjNS¾>@?ïÊÖåiÔ´ßN˜Û÷œ © èØ¨?n8b› q,û´nû§-Çl‘¯…«GMcò¯ËfIq«Æ¤gÝ^š}Oš»âO‘ì„1Ÿe8Ê.²pù!jvC⃙½ÿ©^nßj„pèð?Ôò†K–§™ß¢m[·1Y@ YR°Ïl–Öì:KJ4ec_ª:‡e ‰®z[4­é’BV3OUÓoRèümÖòµIÎ[R’µ<ÈöˤHó¶,­´Ë`³¤`à$Ȉ5!yƳYRð¥ äÎ̾±l»Oär±#™u=MgIQˆTÖJzñe(9»r–©/8ì‰Ç‘ÏWÍ’’H•I!j²ÌbÞ¹'+¤Ü(.aS„ßÖðRzû©Dz½o}Ósí\÷¬xÙ¹¯&XçcöÓOã#Ë —](Rñ /p­Îdå{çÏ;»ž”ö:nQ6îyÞÉ¡>ÛÅ2mûý=4d9*;$%/+j O>¿LÉÂâXÏ6U}û˜ÜêÕ,Iéa=Õ½¶ :>—ï—ÇϵÿéRSÓc=®¦Ž·ûÚCùeÒÂ:Η‰MFº´]V»éܱÀîÁŽåõ0I2ÿ`ÎvM›Èt5) ŸüsÐz¨í:††¬Mß¿"•Ó*8šÏ3=®D鶆—Q¯6UhåÆƒô×±SÔUkœ#þ·‘Nœ:KƒGü Žýuì$-^µ/ÎâŽ,ûjT*!Öût®IeÓ Óރǩ„FB«6¢2Úöß§ÎøÈf‰&‹Úúð§ÒÛ“7Še¿ÁË|Û÷·­êk ‡5™b9R#ö÷fn¡ÁÙ¿1q ìSGÈuã¶ÃÔ¤n¥]÷@Û*4~ÖÖ¸ÉÒ"ãÝé›óΊ\ìÝ•óìMF“i!ã1«de âÿo½óÔõÒ:)è²à)¾u0wYmÿ=SwîÊІY¿ÐK}®Ñ~ç„÷¸»ˆ d´SÓ:?_¸[¬OÔd‡¶=L#šùiXúY¦ÓâZjľã·Ü1L‡ž¤ÿÓ40lºp=qn ¦ÛþÊ]n?LKVïZ)ðÒè5Þgq=¢]oY*KžÛæ•3#¦)LÛ?æ³5 š°N{;Ÿ ¾Ü®i:•éËe¹s„ñr¥öö =>\Ó„´·ó ­!bßù4­SZÓºªÓí ¾^k@ØÎFUÖkûãCJñ¯£5 Ñ KVí¥Wû5 ‚ZyÂÌ\mbØS 5m*›†j²¤Rà)„9Òmw¾÷¡ uÆ>ã˜ü®KÀ8&OYÊhßC1àÎ&—SãkK»²NíØ“IïNÓwU§OaI.Ãk`Ûrõóœ›Ï¦µ+ióZ½ÛO² »å·€’eldiœÉÇ›:ÞRÁµ¤¤_Z”ûwMýG rq’¯œYYjüÎ?:¶B4e)©Wã×KöW+àۓ3±1åJ³uÝ")ä“>z[ !V¯Û €ÛÉÞŒ ߤ±„ÙŒ)1ќʥŠnã‰L.v}†X5–)9¾#—TR)ï)To™g6aÇ\ÇLižâ‘Ížû¥.Ââ(¬áZ n¡P¤¸Ø È™æoÓ°'Jcа'K9D ˆC&™`d¢amJ>Ý6y9nS¼Ã DœhÃö¿¨VÅ‹ò¬ý&# 5þ&&g%ލÊ2Àxü$pÇ1›õ‹-‹_ËPã˜Ô„—Q­;Jޱ’¥Q²¡¸v¥@“ð$ø2Ηµx~… ÎÓ¡åÂiðÄu¶z®'Nž¡c~2ý¦h˜ðR5 èÚb.Ëbñ` ºp˜LÀ8 å¨#E÷ _Û0´Àê×µpÎiÎc}ÆËŒƒ'è¡!ßSÙ´BTH8À'}VMÔßÕœØË NL#}v#4' Öf¶!|þŸåýC7¾Âaæ|¡Ãƒn=zø¦w‚÷ÀqØ¢ðE/X±;‚rÒóL6WTWξ]¹p.E3ŒÜ %¾Âá«ÜÞŒ½‚”xÌ€ Úh¶aÇpy>ºDËÆMÏ;ÙÜ€æQ)‚ä/K%“hÉ2œ ˜ …烆¢–cœmW¶Gø k[ДÐ-äë0µS–¶ ã ð•ÎlRÍ8œÜY㘠"¹b(D`ÑË-''¾r¼ëŽFT!½²$2tÄ{ôÑc¨k·ýÎÃ~ Ð1³ý‰–e8àÙPtÇŒëòÌ(ܵãalâsä”r7}ð–,[æ(ÙØµÝxBÙ˜Ìê"C¼åX¡Bezcø{b}æôɾg9tÈ:x`mX¿šæ/^'öOúp }¬‘¶»vÌ©öÝ÷>QÏߦˆf°ÃwŸºÞ·þŸ!ßçé^};W§ÿÛ$î™×{élL¦>71tuZ·vµH;¶ÿÕûfee%Ü˸#'Î ¼¾|Ù"ßvá"Eèµáã½d™{^—ûzÓW‹ÖŠí»Úu¦´RehÖŒIº{$2ô9ì9xÜõ¤„Oì~Úƒ'²L·7¼TŒ#‰0‘ônSYËË}®Ñmí[OÄ×ùÈ„†åÓÝk‹õJ—](î)ï¯U±„», µI—’ýú÷[ÛÁ†u«¨VíkéÊ •|ûvìØê[_¿nµ¥ûðyOô½_, .ðVïýgbô>ßï—-¦þÿ}Ég3„¶$—í‰ëµ—ÄmºÐaãÔKL b’0xâzW“Héñ?šv}‚É%®úÄɳ‚4˜8jWºHì¿ÈjÛ -ãïå.ß“µ¯ÿû™l[E#³4\[·JJƲ˜våb©É/˜7[l!…‹¤Ò]m»ÐNM{ºRë†Ü×é6úpÊ\: 5¤¯çÏÖ¬Õºª½ô|?ðòpzóµÔü–Ö⺚¹Íš1Ùg/Û Ýçò=^ô^ÃÛm[5¢s–Æ·ïç>QÍZuh’Ö=»³mg*R8•jÔºVä¡gŸÇéSMâ>™ú?ñ’°“\yee±ÅòÅÞ†ä%TéаDËãdzcZ®sŸ$Sœ+r§®½u¿]C#,_ØŸvïÜF#GOÑí¤‘/™o+²LTC¶©¹8â+Wlÿη_^ÆðóBB5¦@ùîÛå)\Y*DG6˜/p¬Á‡û@(2ÁËÛ|þ†í‡ÓŒo~õí»®fÉ0 áþ6²¤‹/¿M·§û¿ÛP®mlõ6jdV^ëêѺpX¯©½ñíˆFÍïÕm;ïãØ‘Í›iÑ×_PýëšÐ3ߤ÷Æ ¥|<¬{<¸O{A”±¥,›´üwÀcí|6_óÒô1¯ºJ.›VG›W/ ®1‘ Ç1ùlž\ûˆmÇqÇ1Å0ŸM›µ¢‡û¿àû+®¬$–£Þ|Atoj~ý¼aèÚÒè‘Ç^ ©“ÆÑ&m_ÞZ×n×6qü¦æ­Ä²ã½½Äq,}=G\‡õÁ/=&îwïÇ”ÆäBm²\ÉBÔ®Yn@<ÌɈ‰bà¡Ñ ëÅyŒaOœ£Rd_Åôõ'v_ü¦NKwßZG,± 2)=Ü ÝÓ¥§ø‡}X/‰n³vÖ»÷êGýÿ¯‹FlwˆT½æ5ôÉäqâ8/ç|6EœÛï¡ÎôÔóCéžÎ=i—ôå4.#¿m LÁ^ÂkFÃv2`kÂ'tݺÞ^Qìã! jêg ‘»p8þïÛÓ…œ?:ð°hÀ?ìI>s»&þrr(féÅÁciÆ«rDz­ÕÐŒø8·m^Dzw·ÖtyùÊ~ûy›—z寚V…eÁB©âºX–ǘ¢é+ ø‹<~G§m¤öiñ5}G_.2©ôë\CU»›Ëë¾ÆÉã•ÆÎÜ*fÄÆŒÚ8$9I{,„=Q.)Ñ3~ÇPŽí[Õ£j5®ÑH$Õ÷2yqðjwG]º­uGª× ±4è\^<ÕÛ—·×^yœnoÝIÜGÞÏç0åêzOSñï¾ÿy¾îÊɃ YsØææ –µ‹çGÿäHÙ ,_ÑÀW: 0 `@ÛÊS7Ï"æ·Š/½ú˶5möºßyaб¼­UGZµr u{ ¿¶ïZ±¯}§žbùÎ{Ÿë®ù`Ê¢\’ÓŽ›Ý«FH|N¼yÂnïFÙí¬˂Á‰~#´$y¨H eÅñŒCþáR>úr»O{„<¦kšSûòrÙH~SÝÒ‚¬òhý6jLžì¥`•ù=¶~ë;Y–ñ!ìK‹Vïã| DD×F6s#ƹƒ&¬÷ëâ¸Q6FD£ûê±ÁR5¨è G ÒÑ0Ž$A1I…:W!oH!)fŠb/CŠ’}Ëã¯1™}•SÏ>}%ÇèÉRÁí²Q_åâö"ËQ"QJ’%J2ù*g¦U©Z ¤ä¨  ’Š•ºIµ[!E½ÕìGLJ v#&eeTPP°1©op ¶ëÊ)^RPPPPPPPPPPPPPPPPÈ’Œ;ý{Ú@mñ‚B¢°ôãIJ ù~.)gÏœTRQPP°1yN+bRPPP“‚‚‚BpbÊQ“‚‚‚íˆéì?J* 6ëÊ>¥¤¢  `3éŒ;4¦¦ «ÑÈWºŠõ­;öQ‡Fцo‡ˆíZMž¢>Ýš‰tÃ/Ðò/^ûÞÑ‹à;¸zÝnq ûR‹ðÇõ=úŽÓŽï÷ùjê“T¶Tq±.ïïèI÷÷/~¿¥  ˆI—H©ZÃþb}ó²aÔøºJ¾c… $ âŽͤo¾ÛHËæ ¤¢©Å5õ¸Eëݵ)Ýuk]\rΞö­ƒ”š·{™ö8"¶onTƒÞÜC¬ã>ÆmäøühÚw”•ý7Õ½ª‚ï¾ §‡Ÿž òѦû›¾óò±Æäž®—åÇŸ¶Qå ib½ëFÐÊyƒhÐðôL¿v✇þ;†¶®|‡>œºXl{rΈk@ ™Y't÷1ñú¬/VÒ×3žÏ%¥»zû½¹TôŸn7Óÿ=p;Uiðižx9hØ'b‰ßâ}| î×ôú*ôÚm®z. ¡l¦1¹!÷¶¿QÓŽR4¢¨D&-ûΞ=C£ÆÎ¦ “çûÊûã×oP—^oÐ}›ŠósrΊxÝ}{‡š´zZ§1UªPš®­]žJ]R”fÎYFéuzÒæ_öˆ}À„Ió©s¯×iŪ-¾ëpO¾Þlhßæ_~§w^ïE]z¿ášçbõÙ)äoœgÜqá%5šxrÎ"‘“ÓÈ1ŸQç¶©SÛ©ÓCèЇEùVþ¸™,Z#ÎŽËZьϿDЬqmA*{ÿ 9_­ “'s‡O¬ø1wÆÕžÖ…+AGµëš7¾Šzß×’&O_$®ÇoŽÜ‹:µ¹‘f|–»=ñ­¾T»Æ4ÿ›UT®ÌÅT¥bYZ¹z«ï~Xr^°Ž<¼üô½4ý³%ôÝòÔãÞ[hø;3ÉéÏ#œtôàúUÓÌßðóI*W­£ò•³ ¾_0І¿;ST~BÆæ©ÊWNÙ˜ô8{æ´’ŠMPÿ¦>J Š˜r‰IõñìFL§•Ƥ   ºr :ü¿í]|Eû~£QZš„@JèM‘"¨¥ù)¨ ê¨(DÅŠò) ß‡¢þAšÒ«‚ŠR•Þ«”@@$  Èýç™Ü“ÍîÝÞeïrwyŸûíïvwÊÎμ;óì;³ïËJFƒÁ`0"M»O.,þ`»ªH"5*£E pŨıgiëž4úãäÙ“âp¶Ÿ&Ü{ŠIƒÁ`0ÑC–(˜?v|ïNu¨A­’\!aÍæT3u#ýy<}Τ‰Á`0ŒÈ%KÐ,íУ~&KÁ%O#¾\ íShž.ã*a0 #â°ïÅG®gÂd ~QϨo_ÎUÂ`0 Fä i÷Éý›^›tw«&¸2B¬ ;vâl~*Ñêd,WƒÁ`0…"ÁZäýßQÃh×Îížãkê7¤Ž»S\|BXWȑÇhÁ¼™ô@¯àéq×w&M ƒÁ`0$@˜@”ùX·v5µoÓ„¾ÿiƒ<þ|ìhy(UºŒ T=(¹Juy<î ynýÚ52öÿ÷³´ì§%‚ÐÌ ¸¸x™¯Š¼êÕo ÃŽNÉv]u¸©é­ÔéÞYÈÜ|ñ|ׯ[-Ï)ÜѺ½¸~’ãõà Á ƒÁˆ 4í>ùå·%¿Ò¡E²ãy?ùïL?„ 0§O§KÂóx¿g©‰ -YÉÕ6žAOõ{ˆÞõ™Œ´:ñQëýÆzˆâ+vkÓºž´Št}>n4Mœ2ßsÓé´k×vB^*Ÿ™s—y4`ƼÆôÅ»húw»^á…à ƒÁ`0)g F(äu –›¼ÝF6‚Ûkì„ø+¨áµ%˜(1l °goϾtÚ¼í¤í”µª¡J¸ !‘·l}a@š&0y;ÖCÔz?ôý¶aC¶rd¤§Ë²#=îËxp•·@$@õJE¨rùºâ v IØý{:mÛs’þ¾p1Wä†eÇÛvŸ”mc÷¹Ž±·¦‰+–>dº$7°}ûvj~ë­^56 ):©êÒ¹3¤¢Oß¾ò¸LR’$;2¿mÛ¨ë½÷zÂ$i:tHž3#) %Èyƒ0á$ÈN9â9›%H“ž¿Qsem[·¦æÍ›{þQ(u.j@Ÿém}JõÊE¨Få¢üðG(*_ ·”£gh庣ŽÉ5M,;¾ëÛ®ßOÑÆíi>êÛ^Ù´ÓÄÌŠÁÐr­K3AŒš  ¥EÒãÒâ¼”v d(Rå«,:ÙÒá«Ð.9”$P/‡U™"19i§©nµb”|ua~ ¢e Q“¥è§5GLöÓIJc¨§+b/£_7ÿá•çØ²ÓdÇ"x s&G€é ¼õÇ'$ÈU 4ŒÈˆ 44˜ÞÂ4ÈÚ³Ù­·JmÈÚSc )h÷9óæÉ¶ *£(ÈÊï©þýe~G<3M ¬H Ϋ¼}•Çêz¸–^.•¿šJìÖ£G6R¤âΙ?_Ê·ºŽ^цí42襧§ÓÖ-[ä~š5)!¿$ ”(V€®*’ŸŽ8—c¹ñ=· ÓÁƒiúÔ©ÔoÀŸqGA:u¢²eËæZy¯NЧ5›þðÊRmñ¡ïýÌg¬†5’¨aMë›­š\˜ª%GãÅ`€IŒë8œÎbí ®ivmѬùû-ÃÚµ*ÏÄ™¼™áбtšñãV¿¯óT¯æ¦ç;ÞQÑvxƉ~i¤ITS%E ž8>3&GõнKjÔ¸±­0”yE"~Xu˜þ0!Mï]âˆÌ";h´Ë;ÇËs¯J‹.”D2å/V®X!òíJ»öùv+”\¡¢¸ÆDyýÜÄ´Öe]¾v¯ØöùÌã2—\¥ïc‹bǺ$µáX‡\Dûý÷2 ‹ñu½*Ò…chÞ¶U+Gå‹0EÂÇ È_ÏoþXw¢´Sê+)ä…8*¾*ÊÉ_11‘[}¦a ä«dã5jÄHúaÙ2a eR„ ¤ª]›6rpTd ƒ¥JkœûeP#®Šœß²e‹<®/úa·4iâ9ƵŽx8§öÍòʃbñ5œC2ã ÌVXG·¦m7mêT);8g$WÕ†'Ä7Ê—’ _ò¢ãÑÞ½å¦Ò©üCôðzùZÑÞfÓ"xôÒ&L‹èÓøêG_‚i†§ÅÖ€`*âtF†\¬ÒtïÑÃ3E^^~é%¦k’ôº:žv¿‘Ãu"¤k¾@ÈP.\Ó+˜‰ºÅ¶aã.îÅÙ¡˜fÒ5‘Ñ|ãBp59iòdÏaÄ ˆ¹`§IÕ«é8*¼Í«)h@Œ@^zºú«7þCníòD:u^ d‹.”€ðCîZ$L·\[·žøïHkÝ c^y’X; ÁuÑn E 5°@NV®XI»öMò´åà!C¤6 éŒò¥OµwOVòb,® ÙŒOˆÏFÜBß.þňµeu4®i’Z"A¢Ô×Eê ';‘ùêË/=¤ i­Ð®}{IÔÞ‚¤:G& 6f$¬?Ñ¥•Ic8|†zÖ×A&°øm«>ÏïÖ½;}5a‚l+„Ï>ëihñ…Ú 2¡·dBÏÇŽVtÖÌ™òz3Å?ˆsƒ d òH4dN]ߟòJM«û…eFþÈK-tWZSù²á^ã¤ÂAR/xÉ@|e~ÇíÝ_÷¡Ì¨[£¹†ÈQ"„Þ÷´K£Ç|LÍš4¥‡¼ä!?˜^Á4kî\1õ—S.£ÇŒ‘ö5n$É‹Nœ¬H™Ò a@}Pä-ÖLaC~‹Üƒ¡"UÐVü¶a½ü‡–Z0Ä3æ•›ëXrGiÞÞ®0ñ=§¦çŒ€œ@^@ª@–@Ð!C+äí>Ú­ÙD»+ø’£Öq !…œ´oÓV¦…œx«S†Ïbnèô±ï5M5ËÑõµ¬×“Dêš&»Ú HèüY´Aƒ7[;ú ¨ÑúНÊe7ïHA¸¬i’‹»E4È«6ȸ6M_‡éZ E”éž=ož‡Ä¼7r¤iÞˆ«Ù¦4¾ØÃàd¦¥A8dâ?ï¼ã!úþ”×l=îÁ¨iSeCYô5z lz}y[·‡ilÜCn¯éó{MÓÑSôí›ü¾Î“½Z˜žïܺ¿D–®L¡ciÙ×4½?v±#2ò8¦ÌÛc¶|íZ±voMÓEGVÑ tì9™.ñ'-H™]b–Ór1ìÕqNpØmèÑÓ¾î}%}Š× Þˆ°^.¬^}íµ ÈH9¬œƒèy3¶éO}ÅGè_è 29`ñ{ôøYJ,^€¶(Á_ÿ#ÛÔ ~›`ßsAÐ4¹¼†9gr€í41ò0………Œøt€‡F葇¢áï¼#ÉÈÒÄÉ“%é€Vaú´V Á_zIZãVfr9h—ŒV½¡iÒ-–û¬Ã=äz=¥mUZ5hð ÕBýD¤Õ`—skš–¬L¡;›•§B¯à‡. Ó‚e-ÛÚo“\¥Ayéñj‹5îð?Ÿ±®¯u5]_ûjËðhžžc„ádrD Á}¹2‰Ó܆‡”mÛ&‰ê4l”ù?=w’¾Y²ÁïëôïÕÒkxÑ„+©yã2tå—s'X¹þ(í=èÝPìȱ •™.m+sÅû‰Isv[†­X»›V®Ýí3G¾žKOÿ‹[ƒ‘cœò!G›¶ž Ú5Bç2ƒzD.VÞ,‹;O @ž‚ñ¾NÙŸ¾pŸç8±X~*’O(ö%ŽÀÚÌ—¿¹`Ë ÃIØû26Ö ƒGŽž¥í»N±¶‰0þþû"ý²*Õkœ½¿gÐñ´sÒ;=;¦däTÖÒ3þR·j’ÎÏ©™T1(§Z¬aDîL™aä¬NåW6òˆuê»Æ‚4íÙ—N×Ô)N¥KäÖaØÀÖm<.‰·` ›ÿÝAŠ¡J¨ÒÕñL ¶äl Ýè£.\ÈaŸ— &Q1b³Ì„sØ4j4Ùl=tFkÖ^òíR ÀåT°@,·#ާÏQzȈ:6#¤½nHS¹Ò…èÚZWQ/ `ñ÷Æíi´mÏ)g„€IS®‘&æ²5=¼–9{ö¹1 FÔt¼÷™•ÊÅÓ õKrÅF °pÿºÚ%ä¶m÷Iúuó!“F0žl§4MÜØ #ˆÀ'÷e“âéÊ+3¿K=z†Žû3ò^W-“˜§©[­Õ­^œ P½r!DZÒa¯rÃkš‚ñèz·ÓdozŽ ƒÁÈ%”-O·4É4%±{ï Ú³ï¤|{¯T¡Õ­•H‹—îóÄ-Z$¿\¿væÌßtæOû‹¸AÈ Êœòr†ˆ9g§‰ St¡\é8*’p¥ü².§rÃ#sH“1]ÓÄ`0þ@¦EKöf!4S.Ù¼¹«mŠ+t%mØ|Tj ®«_ŠÊ%%H’µbu Õ©UB,áÀ¯ëŽHâU½jqCšÛ›W”qt2æw·›Ký!œÂaªî¾ÀàËk¤I,LaK[[<ކ?¥²ÑF—¹ÈÎÁ`0œÇé3™oä% ™†'–(( ˆÎÆÍÇ$±úñç2¬rŬ6»@ª@†°8yN&éAª ©R¤*g]k?™nNSaÅŽV8T…CTáî8·ÑR8ÑE®«öõ<Œy!„„ù¯Ð¨q#y¸~DÌ9•fFÁi¯íæ;‹X¸ N/Á`0Þ"3o‘wÏâ˜jÃfh °)¾ “7¡ÔýNáDú`¯žôúС4zÌIH •¶èáÃ=ZƒØ@Û-Ѓ‚!^ ABú  IÊ¢… .‡Ò2Íš;Wæ5.nwPžî]ºÊ6䋲ՈTÂDÞ  ^ ¹Ì0ìשËíŽÛbÞù®Ï¶iT7™׫Â5Î`0ò49NÓ­ò;Ýã½Ú›žàžª\©Q†ù? Ô?²ëýïØ™ŽÈ ËNàøü›–a«Ön§Õbó…Xþ¬‘Á`0üx[e‹à ¯m1;ÇÆ-ÃàÙõþ\»ì™°÷vµ‚ë›Á`äq¤ŸÌdAn½œbº ëƒô/îÁ'ÕN´7+4BüÂc³ºmÙi:˜z\n ƒÁ ³Îazõu€5@/yɳPë°¶È Lˆ¿kß^n„¶µË)`ÊÚçÐeÓ÷eŠóÆo¼ñœÍÓ7›€¦Hm€ú²-óK´žEßX¤OøÍz# Ÿóã@ÝÔÀ£½{Ë|䉸Ê”Æðƒ9i›c2ãbFåd»øÛFìM7ŒQ¶dqj|MU*WŠ­3.á¦Ë×í`íoDõÕÁå@hÆ—E“„/ëŒÚ%#|Y§ŸëÛ»ü4ðS­>ýÇWmº†‹aw\v…­Ìðs˜³ú¶e<¹|9¹1œÁª›(íTºe8ˆÒ ×TãŠb˜$º\«äþòuÛ%²BR™2T©r%GÔ×ã«ëx[ZCÎ]ÇgŒ¿Òl[¿žÒOrô~shš’Ê&ÉÏþak À~‡N³Ä[»aƒ<òëáÐT!l+Á„šÞaBžút á3mo^žûMãòÅvm,!{{¹ýœÃ ÑéZŒ Ô©ÕT¶ÔU\I [¹‰š:ÿÓð3gNs%9<"Æäroh\ŸôòeÂ/ÈÏG‚é¤JÅ©RÄ Pö`¹kŸVMÿé&c>ŒÀãhT<Û±qaÇðVu^¿f%&L ¿™©W³"­Ý²Ç„ Ÿä rôÙµ~~éEŸ¼¡%FÖ!.[mã ÃÞøB±Ô ^Q*SªÅÇ]õÕ¿wÿÚwà mßá߇E}æ¿â –iF@€ìİ>?øÚQÇ1Úiš½äwêÒ6™òåÔµ #,0{éï–mÃÓs¹O™|LÏÙi£X'ÚåÆÅ©nÍ"y®*–/$·æ7%Òiçiæ‚úëoßfØÃåY÷ÑótòD*)Z’Î=-öR«öPý-›¬îÞHã?~ž^}g¶×x/?{'•*]‘òˆóœ»¦Ám9¾¿%‹¾¢}¢ =}+BÞ¡ì£V¥8º¶F%Ë—gžãý©çhãîÓ´qÏ™ Õ³Ušó¢¿øüÛTµBajv}Õ"Û÷ž¤VvTn˜3…¶´ûQ¢­…àÞ2ëÞ¡<%ı†ä*1ÈôêZ‘f,8D)¢Œî†þ1¹Fˆæ·wËBF©ÐIÇ‘”=T½Vcºç¾'=„ ÙBø¾=©U»GhݚŞø (­Û÷öäU¡RIÒòç/$ Úƒ‚t”.SI’?Í Rb_‘7¦Ê„¼—Šxˆƒk©<û¼E+×1½¿Vâúfa(?®%µ4îòwù׋T£væëµâ>¾<ÂSæsgÏPã¦wyêÊHàP÷×÷ÉäñaQ“>]žË ¿toŽw¾š–(z%unYŠòçQmGù’ùåÖöÆ«èÜ_iìœ:uæGëÙW’í{OÉ (^$•I,HW^ÁÚ§pƾCtüäù ©ŽXÓjM“½g;–l.7¦â˜0鿥hì¤}ó"‚M¨ën£ç^ä ðÜg´î×ï$YÁ>H–"!Ä¿" >Û6¯ðE&iš‰¸*-Â?ÑOj‹G‘¢‰ò:GRöRþsghþÌO²hrn„›?š&yêÀuŠ+)÷« ‚¤—Ų™’4É{Ù´ã1Ò{q½‹ØÁg¨n—ä ë—î¾­×m7éÖL’»ì·#´a{šßý>“¦ð›arÀì5MŒœ qÙqìxôÚÔ ÎžàäÎŒà…+Οÿ‹ŸÓ=»þ׳•Ѽ:U‹Q“ëJsµFš\[Š®*’–¬Lqdec˜ÎÃkºl:ìõ¨‘¼n\ÙN¢há"¦õüÛ¦t å(WÃ/@f ;f2U¸p® §_Uج|„2aŠ.T¯T”ŠÉoî_×!™a½9屬Oír™‹|ÿ¸‰œE|\œe]=g ýòë&®$†-@V 3VòÏ•äx§ÀÏ¢¶ ¸HQ[r…ŠÒœ:NOO—ÿÓ¦N Y=¨r0²ãÊ+,tÉ /— Ö;½v¹Ì®¢‰Ù®3l[õ*Õ(¾ü–õýó¯›éÝ1_Ó¤YßÓ~Ö<1 €L@6 #+9Ê'd,¹ª³ŽŸOgdÐÃ>(·ñbàÆ†ýæMš„¼pÍuk×Ê}”cÀ¿ÿšg;eSûO¸HQ‡»êÎvAb¦»I“"4öî-÷G!õvïÒ…-\(7„ãÀ?ÂAºéÚµi#Ã^:Tîã<â!@4ä þëpN‘9ĽE´Â)ÂqŒë#>þ×¾ºâb?ìLJd†ÇÞàÍvÚ%6TÕ¿kçNÙ©]S¿>%W©";ße?ýD¥J—¦|²JC'û¤(Ç·“KU¦5G–¡À-76¥­;¶Ñï÷[Æ9pø(}=û{–t†ß(R´Õ¿¶¡ãùN2…NŸ>M“4­†ñÙ™?w.}8j”|Î>Lqqqò‹—ýÀà矗çp¼^<ŸŒ'û<›ª/0>§ Hˆë ïÔ#G<çUÜÏ݃¦"o;w–ç??Þä®ÉÍ7çðYpÈÊÕ€rÜ b5jÄHé„W‘®FI'½··lI}{÷‘ç |&›6 ñA†ž8j¢¦ê®c§N‚¤MËâØ7]„÷¤èÐÁC2•G eRǃ‡ ñÄGÈ1Ò€4¾1ô5G/WøŒÌ.‹€ð–™<¡jòfg!¸ƒ¾ç¼h“¦Mé¹_ôœ{¢ÿ¬qFޤùóæÉΫ_ïˆA¸ŽˆŽsöüùÙH*ÕùªŽ÷ñ~ýäy¤Õ.œC§½ÞÝéÖù oä§Ê†ãv­[Óû"?œw5ªV—ÛÖ‚<íÿš‘cd©v½útÅW¥ÏÅóÓI’©“'ËgÛî]»èñŒàYÅylî½73xfð~ázB<‡ôìI³Ä3¤¤É¬^np„J']ÈÙÛo¼!Ë…ãóïì€è;Y¸¢C§Ž‚è¤Ñ‚Ð@k¥&ü¯Ý°!“¥§ÓµuëÑ̹s.%qN¥iߦ­ÈãcéV)C„;-‚0­\±’† .5MøWN†¡…©S„,\´9G™2§m¼†9å{Î[9´×ˆÎ o *ª³Åã Ñ™¶jÓFvpxƒU-:B%ÄÇ[)öA’òTù*u¾plìŒïlÕJv°(×â“Gý"L~Ö•"O²ÊH§C))”~:³³É¤íï XÚÙÈòý‰%Cr]<·x6<¤H{±À9<«ò9ÄÊHŒðüË<ÉrúÄ ¯¿õuéÔI¾X¡ŒºÖ)'Ýn@öÀwíۛ휮ñÙ1Æ1O˜tÉòÿ;‚€ #ÐæÄ tIûÓXž©J$EÏûJ“¤®™In2 —Nbü-“‚º6´IÆøêÚJîŠ&W.Ê Ãž¢É1ßsäÀtª³ÕÉɲ¤·ß|S’ÕÙêáj„ š%t|ÆŽ8øtÜ8ê*:}h½ íjåžßÅB||U¯–ç…;--VýºÊkœV··  þck³°IBô¥J•’Ï#4Cx^<#jº Ï8Žñì(íQrr²$T˜ŠG&Ð.ÓN×AMÓ±´³T¢X°xæ ¹QÚ;çÒi3'€|“Ü×µ{ípÁÁÔ3ް æL¡Õ4Ùõ+S·ù >c%WJ¦äÊÉÙÎ__·(]oÓ Þ2щªŽ:K¬1ÐãHµ¿xÕ;T%&©¥aH«È ÎcÚ¤ o¯ØÂðÎ['bÆsÆôê<¦ qNu¾þàÃ/ö°t2iÊuÒäëù/[2?ÝÛ2z?yWÓó§L‘„Í_¼õeö)ó«—Sú‰4¿óêÕ³‹ùKR¡+¨W‡êüÀG ¦.ÜC‡,HÓØq“‘…þ÷×á ÷#¿°vϵví&Z»Î÷—ë!3n‰NKŸ&³Šc\ç¤âd†óú:) ·êù×0Ï™¥9¹›ÂOxf2ÇïZŒÀ— }Áx¨ÞWýI‘~æo!:ò–7–¥š•Ù`¤b÷þS4ë‡ýŽÊ¯Øçÿú'Ó×)Ñ:µk^Éž•øKkÀ¼#to£v%¹vrQjÕ¤Wkà®[+Я[ŽÑ’U‡éÏxÔ õ“mÛŠ½Öãdai}±ÅFôp&KµAn&XÛ†§ R2ˆ®«Y‚~Ýü¥Ÿþ+竚Ârð޵ã€›Ž‘;cK^¸–þalV7 ²°ëàN–Èq=+[n¡zuQîùžSþßââ¥ûåçÍàr¤{—®Y\‘LŸ:Už7s_’S$W¨(òè±Ú뀤ÁÑo èÞ¥‹ÌOw3jÄê ò´²ž€©ˆS&¤É$MÖ…Þ}kE*_:Ž;$=~–¾ù~¯4á£Ú{¶/s¹íŽxÛ˜61rexò)—ŒÜ¬éÃÂ~r#Žq^,ïÃB7H8Mù¦3 G:XèWÞt‚æ-mP$ÓFŸ™}#Ó-âðâ—$ÑéÛ»$QzH„N(p˜æ6Ô‹sØ@`2ÉÌJy R»í4—Qp„‹ãE Ê û8§®U¿n]™/ÒÞÒ¤‰'L] ÿ*olÓ5cÁÈ ×Ãyä­Ê‰ø*Oüƒ|©ô(3þUœÌø#¥o:ù¨2Ë‹tÈK]yà8Ý!‡ÂF‘ùæŒÌèÛ}­*S¿îu˜0yAbñÔ§sMz }U¯ui÷ÙÎ;MʽÑZosñà½ÿÁŽ;ó„?*+é #ç Ý6ŒÒÈ™ÂÖ-[=r{ŠþTiŽð¯èbÐÀgä¿®iÒï#!!!‹C_¥1ƒ¿9Et0mÒ¢ŒÐ&5M:PN]»…îÇþ”;Xä:Æa;MU®æ/…ý…$™Võ*ÎÛi£X;fï‚5téo§Fto§ª3U-ˆ:JìC#¥Ôú•Å[+ÂÐIÂá/‚®ÅBÇl'_@ù¸ Gr²©r[ië±Â ”e‰ÉÔ†U{˜‘/«|ƒI¤rË$#äÇ8夠4$V–¶4R2…ÈV'ñìA†q|:.Î3U‡ççñìê/xéÁ³‹<”3oµN ¥‡{ö”ò¨wKRäzÏ-¹„ÖE_¤ðƒöüC‹¢¦°jˆøº&Äéy0ÓØ¨8ƼA¾ ÝJrkz£v˘òA:U=¤á @ÙSùª2âîY¿?\SÝÊ¢òQÀ/½¼ ’=ÝdÞxoêZ!âKlb6¼a÷Ù¶g´HzZã.P§_B¦ùp…g§1K"hðI=´” Gêk/¥‰UäõmŽõpÞi{FŒ`v¸ºQqèúø"M‘›ömÚJr"ƒu>‡äšŸ•ò+2¬%Âyµø['YX` â£y+ûO£Ç|œm¡8>áÇm|i§ÈššBÃ1¾àSd×6ü]Ï×t _0‘€/æpÝ`Ø„ŠZí·ˤL:¨vC›¢½ì¶G¦©‹!² ½‘f_„;œuIvMÙÄr7È`XÃH¡åô¦!Òɨ¾6ÊŒœZ¥3#«ŒÈ'[N@Ù0R_ÉÍœ;džAP-†ð¹=Húä^#* –øòƒÂA|@n°¯i†/Ð`_IÕ ¤Qƒ1þA°ôuGú‚ì<ÑÖµ·ÓïŒ:Ñ,m|éáʾ–"U Ã&_.bÑ=ÒB2IsÖ¯Ÿ8Pž‰†ÌÂ~–"îÏ-o—DDçf ârýpzsu!8ƒÒ^ƒÁpFÕ”k—×5M¾€Ïíuj) R³æÎ¥fMšŠüúËsfÄF}úo„c°ÔˤkÂò¦Œ„†—Ae£œL³BÓi´ü®l}!o$$% —7†õ!Èœ¾ð$I¹÷Q„>ÜØ®m7*¡¶ÓÏ Ã?Ùb7*Œð“×ݨ80`zsb†Ïõ1hÁ 6´-ĤkŒ2§g&Jm®¡J’$¨¿‡¤ašOåëè×Â50 BC€¦0Ð!žOÞãÖ.SÙ µÌX¡¬›8ë¤Z'Çv-¥ÃÀªnoKO§ ˆ²¥Ë¦·¼Gã™F¾ÐŒ:=ÕçmM“ËžÃ^;kšxðbäb¹c„çˆèØ‹ÔÉŒóT$>Ÿ­<¼ùm³ ñö¶ŽÍø‰¿QsTÓ`óÉNfùäìKÉpDnœìý°)Ãm ˆwO‡)`_¹½A[B¥“µFN奈 ´•Ê- H2d q•\({]ʽòPò¨ç©*”e­aa›,XJ —}“ ƒÁæPfÕÿßÌÔ¯{m®Ö(ÁŒ%û{×sòÑΖÞH¹NŠyI³‘@#¾Ùõ­ˆv°×¿åxM“ ŒcÉ)¸^ü««/ÌŸÁ'ÊäðW'3þ¢¡ýFí›_M×T+Ρ8òÇŸô¹ ÀçÿúÇ‹ìp Ïv¬?:ôÒ•'*ŸaÿÅݬ¾¸ ÑÕ'x—èßêÕ-A¥Š¤RW üùx2 ±ïP9þ'­ßž& SnÈ ÃézµWßö4MÜx¹£nJ´ëŒî;`ö€`´6†¬>i‡-!Äkep”™;dŠåŽ~oDÁ”K¬qZðóA®ç½Ð9+ßfF"d×{<¬0{óÍ,V—U~áIÒpåJD9©EÜiS¦H_váF´@”@ZÔ}))¾êËÌé¬"«º“_#ŒÎyÕu`ä û÷ëgé°6xÂ@ UÛ³En?änÔ¨,/'í¬¬6ç6P.½óWZ´@£“_#ˆp8÷Õù‚LêZ‡`¦`9FAVƒ?ä=¥¼ .1cð™áÄ€Žó¸_å2E'Y ±¨CcàV>!ƒ ê<Ò"ä D×U>þPÔ¡1Ê äΪ ŠÄ‚¸¢p.–ÄñT2ˆ2¢¬êœrj¬dþQv8#V޲U9¥–Óíë÷ð©›Àãü­ZÑsâ¥õ¦Èºzi@|Ü/^^ϰê7P'Ho$üè°)‡Ýþ5M^Âò_y9=zo *š‘ÛVM°•£³ç/ÐøowБãgÓ4q炾Ï!;M’¡QõÁ´9q‹ŽYÐÍÂ΂õ4480°ªrB+&I‹¨3 ¸7 :¨S v€´ˆ‹Áƒò^ït Fo‹  Îa°I@aà f}¹‚ôj¦êPM ¢94†l``×µuú€ŒÁº ‘ T¨7Èììùó³wlžÁXÔ® '€"¢ oº–E‘´ þÁõ¬Ê ×à‘×KDIiŽô:P6U^ÄSc½<ØIA:Ü¿^vܲØ@‘ÇÔ)S²¤C8diGå:A=MñQߨ¿Ý»vIçÓˆo¼òú¯;}Ž @všÌÓT(O½î®Æ#Y„£@¾Xê{_MZ²:EnNÈ ÷ iòâ°×¹5MÎ6h,t †Ñ-:E¼Å¢“Æ øÊ£|+1h¨NZ奴èHñf ò„xz\õ–©Þv‘74OH‡ëëÞëà Æ5[Æ©C}ð6jžô¸z=c@2¦3:ö­kþD¸Z næ08Ôï9Õ4ùBI·æÉCÜûȦ(­ˆ;ÈÙú/½ÎôuiúT1^ ×[œ$®>ŸYñ ÙÑh"ˆËÃ>(ëu²ƒçY=×x>Ÿè×Ï3/‰˜ ”÷ì)ï mr¸ì§Ÿ<¤dW=«ªÞ Ÿ õxƱ8ªMôëĹ_(¡ÊÙ ’³kšº¶®Ì£X¡yÃ2ôËúT:wþŸœkš˜3gTñêæÆw¥ÇT¾ö!Ÿ±ªÖ¼†ªÖÊÞaÞP·Ý(6FVüçË}ÙÎ=Ý£WŒ ¤ž£É‹²þǦå?Ì÷š¶c§²__·(]_¯¨W-“Õàoí ÚºvZQh9ÔE¾1à#ô)óKG©5ƒ·~^Ï×ÇyµÎ„C‘.«2èš?Ÿõ|ä,M1ÔsÙ’ùéÞ–¥Y-ðÖ—¿g;·zé\:q̲ڵף¦ç_{¼í<”sTTá&eüØqŽYN†UÝ—˜Sù ìºÏ1o0:4|öÍvS«àÇ~äˆÌ";ŒKxé¿kLÏo\»†6­]ã[ÓÄîzaù6¹ófFÁ*  «uvÐj§ª¤¶I«)3«ó¸¾¿e0N53B'›¡H£>ÂàuæÜ9Y¬+ƒ\ 2DîÃU\P(?_Ü~ãt/ôGøšƒË „Á%Îé~ÈÄ}]e)ǸŽ‘n‹Û=ò7v¬$9 sHày+_u+W¬ôä}K“&2-Âá†eK#TzºÝzàxí† )#®Ë ÿzµ;æÄr†G§ÊõÅ`D±¬æp®å›Ðør‡‘é„÷’68UEzlŸ>uš$> Y .ºFaˆÌ Ï2Õˆ¶ r¤òÆ9E¢@dô´‹.”ç@¬ ý¿Ò4)Ÿg ™qÆJâ•‘žá‰cÔp¡Ì¡4#Va)%NÌ­ñü\šÇ•£úŽå†aDœp3¹)“.g¿ž³‰:R»6m$)RSh_¬ü†ôÀ‘*4K ÐØ =HˆNft­‹Oˆ—Z"=ooêíd ×Uäy›½43§¦ƒM¬]ôgÜûå‹…àvVèó*~Fît<,wŒp”MW`C(âƒuLJûr£H N ·y5­­ ¼Û«i1h{ Á‰Áyä£<Ï#Ó`ÇÔ¼Î+/ö€îéÞìÚ¿mX/¯ r„óÈy AÐ0áº*OÝã½1oUvÄE¾zX$±&¿å†»¿²&Xw9er€‘koõ F¸Éd.hšt€dÜn G€ZËdD‚›™itMŽQƒcåuÞ8Mh¼6®iL§çôƵYfy{+{„q&Ö4…7g²ÝF9rØ{2ã·€GÓþâ±Þ‰1ˆëUrΗÚÚ‰öf™ í³h·¾/S ìk3Ãæ=§iÓîÓÜ nœûë"MZhþ9òš­é\A&ø~MšÅÛ@`2ɰƒ©ç¸,pòô…€åÒtÓ4. ìëP|±†¯ÎðµMõëÖ•Ó\NSjX;ä­˜Zcx×fdÛ’™àøJÈãmc ¼Þ¶Ë<¯úÞ6dc¾Í]þŸ“B§Nçm­ÓÜ_þ Q“÷Ó¹ Mëéû_ÓhúÒ£,±n¤¦ýE#¿ÞOGOþeZ_n ö)—:Ž8Ïkß¶™“öÉ så˜à«EG¬^SÜœù2×M’_‘}4fŒ4C ˆÌ³Êõ?Ȉ–‘dáX™é°^ʬ)B˜"k:QSf ™C¼inC­Š|aM®ð<=*;%3Ìš‚Ò>.›íâˆEð£'þ¢¿Íü$6¡P,•/™Ÿ ÇÅF}Ýï<ð§¼w»ØuðOzÇmø2¹lA*YìÊ<'¯þÕ™=Ã^‘÷7 Sèž–e¸cÐ0ci*íuc¥mztÇWQ­Êñy¾®VoM§Å¿žpT.Kaµ¸ZÙT‚Ý&…²†¯ä@XFùسþI}¥†E× ^ :XK„ð¾½{Ó‹C^’ûúu <ÓÅ5uã™:ùQö–Ôš$üÃ,¾Æ k›zæ!{bÖœ†×4…Kûä¤ÖcÉ•!ÈŽSg.ÐÆ=˜Aƒÿ·†úvª!ŸgFdâì¹ 4zêVJ9ö§cýs¦ÐŽ*.›µ›— ‚+œŸÚˆA¬ $-q’D™¶U†µiRN«9ËöÓÜeä¹ÿ>w“üüíŸMÚ÷:*.®±bcªØŽJ¤£n•bÔ§c yCyt«#HÐ2z$R8Î$S§éO1 "Ÿz"]½ªÅeÙv ’‡xÿj›Lo[]CS÷ I£¿Ú(÷ïjQ‘nn˜D=;Ö”çúŠ6O¾º0-øi?Õ®ZLñ8zê­eTF ª½„¼+’ÿR>¢ýǺÉV~!Ç]ÛV¥:B6ôÎü…÷WȰnwf K;yŽ>òž"wm!S/ÿ’òyãŽã2ƒy·;«Èrèù>?"Óký=â…£YÃK_,B~¿ò¼jc¦‰‘îçdúâ=t‹ˆ—vê<}*˜î"ϺZy€aŸ­£ƒÇÂû ¹ô–š‰÷¾Ì|«\.žn®_Š*—MÈÒŒ0|†¤Óš-Çhõæ?‚"7¬i íókר¿#&"Å`¡´JXW0üÉFbkœMƒä?b$Aa‚æê‹9»<çu4÷ 41’¼ˆ¯ŠoÔ~A…µm“òY*ÜÖH°¦)üRôŸç›d!!“æìȪ…í¾PcÔÓÀ‡êÓ!AžA ¡7Ÿº^êÛ^±BþC.^½šNb¢wCË ›/ˆ˜B«¦åé‘ç“"?E˜?ˆØ!!cŠô SÚ©sÙÂêP]±O¹Ú¸3ÍC¢º·­"5¨?¬¹d ûêø–¥%a‚ܪF»ÚÓ N;ÒQ™yïéÆÜà©ÿ˜ÛÛ¼vmY»Ò†¦‰í41Âöm ú$Sn»÷ŸòÇŠL 8«á1æù_š@À¾]lþÕ&ˆ6³‡Ij‘,ì4aùÆË× :YR9š¾xo„J¦³š&Lc>~oM^A¡-V¸5¬]BczýµO×úøˆ‡5Má3¶^ëö¦ç¸ù¹"Ý,wŒ0”É€V‚›Ÿ†Fé‰ûØä@¤ëß|¢!}5o7­Þ|Ì™þŒ»¿Ð²&»všì´ãöu+åÆ`„&ü߇\ Œˆî§»µªÌ•EèÖº2mÜ•fªqbΜI&nƒÁnGmÑû³nI9Ê…õmøƒƒóÞÁC†xµîÀ=á~¢Ér8Ö¥í2ùÒß±ÖÅšö>‹.÷Ï'iâ)ƒÁˆ èîQºwé*IÓ-MšÈc8Ð…/8*8äànë–-2N{á#n¤I’t½>t¨tÔ«HØÚ ä9ă뜿¶n=6ü]yqcÇÒtyÃgHº®NâP”­EËÛ¥Ï:ø¯CÊ‚0ÄAÞÈÃÌK”ŽÖ,ÀaÝ>ÄnT #\úc'0jÄH¹Å'ÄK²òÛ†Lƒ¶ $ã¡ ÉHÏç@N@H@’@‚@Rp¬|Ñá<â" ¤F‘,ä•\¡¢<5sî9Z¼p¡‡´µoÓV:üU¤G¥Óë>ëF!¯ '¿ sQ9ö†‘Ì0ìÕ«Ýú¶õõÜC÷ßEÿën®mFÈðÛúmôøÀa^ã,_4Ž+ŠR<öôÛ´vÃö\S2ôÐ?ÛTÈ´G€Ò)ŒÄš E¤¶kß^z°W¯,yð(„ëôíÝ[îÃaï;ÇS»6m$!R¤«QãF´H(Eš°2fF†pš*”O•ûQ7([®qåŠÌ0ìÖ«Mã–Ü0ŒÈn#Òä2çÂüâ!²‘•H &§$7©ùIQÄSgjš „Iç¡ýA:h­TþÈdH"ä‰8º $ Ú(!äÝBÄÁôž"H(ƒä-“*K‡Nh˜ cf÷ùº —rÃ`ðÚDzk M”—Ï1¼ßaÁc°\*Ô¬YÓk˜®¯ÑÁº%#@V¼-"7®52»¾·¼ÍÖ*á¼Y|fÛþã˹;©G›*üLúißíõþpóš&ƒÁˆºñ’æÄÚ‰öö•ÇŠÇè@êêßµ¶‰Û-†ø¸9q:ú§÷"¸ÌEö~ Fhû–IFdÊ¥•´šmþSpX{„…ÙØ°ÿhïÞ>Óa-â*`çäƒ|òS&ò g²Øœ‘};(HÀ3#WÑÀ+iβ’0.%Ô êu„ºò]§¾lr€Á¯ç †?2ˆÃ^D¹~ݺò 5}M’¬ÊüB-Ó7>÷Çæš!e>`劕”T6I.ÇtÎ’& ¶Êx5jÖëÔTÂß:T¦Ã"pLÉé_ÌXSS˜ÊCù‘‹ÌQN¤éiX¤É•s!ð'úŸçþ‘aβüŒühÛµÎuÅã·ÁG-B¨­Ìx[ƒ„0|¹† i@NÔWuÞ¤ˆ‹úú¦jÊÝ“<ùaá7L €¸)’¦›0BÙˆBмœ¡¬¸^ô-çþ,ÚÛè2Ï›“—ÍÅo!Þ²¼Õ[É%o¼…t³Ó_šn9È4@fÓhê³}L¹)#–êë·@ ò¡QSwʨ¦NÚ|™ PöŸ ¥RS¾°ƒÆ @ÞРå)-eˆd†œ6еcªÝåâ$ŒÐ«J}Éf4»8rø¥IñWN®Fqñ Ùâœ>AÉUªûÌo×ÎmO¥J'ù]–ófÐîÛé±~ϲ\æ¢ÜA£[H°—¤O—ÁÞÈÌè1KÍ4R˜šÃt˜2;/¿fk¤‘°Fò\f™Óp /H‹0e~f0=B†k©|0­2¥Ê£ nbJP™>@l0’ ͰûÀµ§MX´ôiŒÈs€X{™]¼È ÎìÈ[4Ëä‚y3iýº54|ħòähØ›/Ñ/˖ГæJ”X²ŒØ²ÖÃA´@¶$Éq*U®æ©³/Æ”%o…Ý»¶Ëë Ò_"g)´K„qàüÀ‡Åªþ|ù"¢ŒKš…);IF¨i6}_i}¬Ò)Káþ„§õk€8E3ŽŸ:–傟ÃzUŠyämÇþSt0õŒ©sáP¡Óm¨lÉB4uñ^¹P;p™=5¡+`­4o¼´)¶îeí›û±ó,OOJ÷tìN¯¼ø¤<÷ã>¢ý–û Y÷ß×FÆ«S¯üoÙìZ·v G<Ä7ËÛaAŒ* b…´øG^Ó¦L°ŒŸW7§§ç¦zµÈ4`!všiÊ¥é¹ÆuJÐÿž»‘žìV‹ÖïL“e\¾ñ(•M,Dÿj›œXU)Ÿ 7+âå-Ü_Lýnøj³‡0 eDYÊ?€·"ßÓs¶ó‰P!~vÀÃòÍ»d©2—ÞºÅ[ô£O<Ve¬{Mêñà£òxú5ôì“Óü%ëòð}ÞVw{>p5Üãî]Û„üVuO™_гpþ jѪ*—%g˜ט7´K¯@…ââ醛šK-S¡¸8q>Ý4>Ã9ÀÖÎŽýéôBÏzlk'ÂñþW›hçþðs £4_Å ç§×û^çÑ2­ÄéãéÛ=Ÿ[–‘d ç¡‘z²[m¤æ~A®n¨“(íBèä©“Ù·Æ­—G«ÈOÕò…=u¢Ž¡Y=xôŒŒƒ¸z¼Ì2æs½Dyy‚ÜunQ‘Öï8.Ë ø¯¶UdY¿˜³+äõiMS„v˜èì1˜ôxàÑl÷ôåçÑ¢ù3åtŒ=»¶Óí­ÚSŸÇŸqPÛéµ—ž”aØ6®ÿ•>3‰–ÿ¼„–/["‰Î·Ó¾¢»;v“ÿC†¾G74i.Ó"ü?Ã†Ðø‰se¾ƒžzD¼Å_GgÄ¥¦@†½ÿ©H76¬_#7”qTYU£ƒ‰ñÓÓâß×=Dò4ˆ/™‹æé"Ü:Èþ—ã?òÈÀF!#½{†ZÜÑNÞ»ªì?õÌ«ôDŸ.”z8ó2ªòQõ¤öËH9ùå§%Ržê ™Û³{õî;PNã´ã¸± PÆëäudÖ‡³õÍÄÀ«ä~Û&åä €ŽÞX²æ0}¿:ÅÖWn¡ -½ý‹Ü/ïrAr ”I<°! „I‘È "V LH’ÌÓMøýÅÇÓ·YKœÁƒìƒ¸©xøÇÊ€²a;~êœó„Éþš&—Ýü"HÖ¯]ã9.¤Ölˆ{Â3ì½O=žçž~DLT0Mžñc–µ!Š!ÄôhÙ^Æ7aŽ<:ä)¹_¨P¼§îÔu€ ‚ì „ çpݺõP÷.išT«2éåÀõ;·¿™æ~·Öë=Dƒ¾%ZeÒºÝßGnÞî[†‹ Ç%J–¡'qÂôdS‘®Úu¯“ûo ÿÄ“ö¶–íä¦cö¢ß<ûHÓÕ}mÄׯîѶµí²z(¢¡!hq€ÿ›³Sþ4m=Ú±º<@®sº 5ŒÀe‡8|³P=Û6§ç"·¹oäÈŠPÖ¥v½K52Óõ_}²ÜkûÝå¦Ã˜Náù§‘Ú#Äw™WäÝ•úd;"4à™W³äå«.‹²˜ÝCäv0Ñg§ið³}ä"ë‡ú<- ñÑÔú~Ñly®ÝÝÝhÓ†_å¹[ooÔrÜݺ½>ìc9Çð‡Ì³ª‰D5F„k¥°îè¬\èù%œú.Çç¤lNωúÄ›ïfú\2ÖUí:×ÑÌ¿rú#º}ËïÅ$M©‚%RùUbi¹ÝÛýÏýlܰF§f-î”Ò§žè&ÈTW)C{÷ì ±cÞ£×Þþˆj ²óÒ >òÜC½Ÿ–ÚÓQï½JnhF½ú<%óû@ß"×Õ­\¾”¾_<›>?“Výòƒ ÿnÑ,y=ä ¼ôÜ£4}îjOY;´iè¹Ö×ÆÐ¬o'ʸ˜ŠÆÿ™3§Å5_ñ\áG¦÷>œÝã?ÆŒ(âLêë73`‘;Ìø“ñ ºh}¶mNϹx(#Ô¯ô>õ›‘(“›éÙÇטûéùú«1tç]]é¾î½I÷ ó $8o·L/ö5Qiº¨M—# h.þ7oüÕ†uyo¿ö •Ä ¤æOAröìÚ!ãðþ«Ôì¶;=š&5³:½¨™(©X©* zé’aÂŽmf’³÷³jIq_ѪÁÊëÓsÊá ùizæ×Se R§å¾0Õ‚]}-Z¬Öؘ}ªÝœ)üåF­[ª[¥˜\ø¯ê@šÔ1 Ì`‘¸7R¥ˆ˜Êóùžõäâq|ù†ßX89À1¾âÓå`ø€ëeþƒGÿ¼õKO· M“ͯçxg„ú¥, ݨ {ýêùÈS’ÄÔªs-U¨X•V­Xší~°R3ù«Oä?â/Y<ÛôÞõ€c¤Û¼á7š:;s4RÏôë‘%>Ì_¨}õáƒúÈñ}] å:v4…ž}q¸œ^6oüMÞWÔ.@wQžö „ÁNŸr) 7õ5“ Š4)À¦ŽürkYÖOÙÀàŒÏá‘'¦z`à ŸõGË‹`¸Cÿú íôñ´mr_&}18l,TÁ`¦/@@˜¬¥gšAH¤æ J˯ä@˜‚ºà;mëÊ_Ï1"±ñ­ÝŒÄÙÎg^|W’•nÍñ¿üæGžûéÔõ¹aÿAJ°©°šµ¯•ûW•(%õtR  ¥Åëv]äup«9›ö¡åB8ˆ› ‡¦ ¶›*TÊ_ÏÛóV: Ó5ƱÔÚ³g»œ¬!ÊͳЬu÷ h  90jš”'³u.ÊС²X$*zd'üËhõ…Úí×§C5ú^X´6h‰Ð–¾,x#=Ú¤H×4)Q&:»5–Ð`m°AÆœn;mdk!8“&Fn NÑj§ .NjÖ¾ÎÖ}¬^±”öíÍ´¥R¡búzæ*Û÷®_Ç,>ˆ’± Þâ[áªÄ2r‹ä6ñGÑÄz÷Lw ŵýœS3|1˜Â½‡Tß».bü’Ù‘žpƒnüÒ ÊÚí ëÜ:!6ËC?VÇŠ`)b¬“m+h¸ì¬£ Nû8ä°7/t†ŒÈë^.桼®Ñ-rËK÷Ì_øÄF¹ÜPV¢}*Gi GM÷(7Þ-F½ªÅ³œÃÀ„):’“Ó)33-£"á‘`ÜÕ¦&MŒM.ßk–X&á(—Ñh|iÌâ(ëÎVÚ å-ze‡;,od,È’M7*ö2âg„›ð²L2xàc0¡=Çï×z/`²Œ\‘I&NŒ ôgŒÈx¶ÙN#|å—xzŽfrI샨ì°ÜDómß"8PŒ’&WTZgD¿\2–£2#âÛ(¦p©[¹) ƒÁ`0| –ç8 ƒÁ`0l&¦L ƒÁ`06HO´2 ƒÁ`Ø!MÌ™ ƒÁ`0|“&þ ’Á`0 ÃibÎÄ`0 ƒÁ`0 ƒÁ`0 ƒÁ`0 ƒÁ`0Â1v"5é>ñeñ÷ WƒÁÈ«X6¡k ׃‘·k'ÒÅ¿ÏrM1 ƒÁ`Òä ÿ\8Ç5Å`0 ƒI“/\dÒÄ`0 ƒI“ Òô÷y®)ƒÁ`0Lš|’¦ Lš ƒÁ`0iò‰.üÅ5fˆËOÍoªIeJ•ÇÛw¦%?oɧÁ5åÆés2\O[-¹´ÜO9rRþ—)UÄ“âãá||\Óxâ!>°fÝÞ,×7ÆÕ{¸T–´}÷á,e 5Úßq-Ý%¶ ~£™bc0 CÁÖ'´µšd“a‚$A’¦|ö$%Ä ï~ÚD_NùI’™ÇzÞNÕ«$Ѷ)Ôé¡÷eÜM?¾ëI÷í¼Õ4ø­Érÿ—9CezàãŠmÝÚ¤zóAynð[_K4èßwQzÆYºã¾7%éÁ5ëÙÒ“ç÷¾I‡ѹ¿sW¡öÍÏd¹~Ï~£iõº=YîcÁ×ÏSRébžë(Ã]­È{Òã7¬_9“TN“×3ÂWxNÐðšJ4nT_Z½v7õìÿ `ÆæŸ†³É#榉§ç¯=×Yž?›Gÿ›Â¢¥¿Ñçþ›®¿¶ =úÀ­Y¾™³’îiÛˆ¦üA÷´¹^ ?¹:(ã^¼øl_¤¿¾åVZ<íezýùûdºÿûz)½5rº'ÄVý¶S·ÿŽ' “º†™¼\üçB¶s‡—y€„a;$Ϫµ;é­ÓÜaÅiúøgEL½ðÆ™fìÈ>òü ÈQš,+ðÖˆéò~ºu¼QÜÛYyï[%ÃjÜØOþ?þPkzBlªÞ®¯_…>ÿï¿eØÖeºoæ®’eÒãAó@Æzp~å‚·E;¤{xG^eAÙZt|EÞ ƒÁ`0ò,iâé¹pˆÈNÃk*gi—ø¸‚RÓ8x4KØ´Y?ÓCǨ_ï;)=ãOj~×`úß»Ê0—$M™qïjÕT…Ý׌.ùM¤ž¸òßå¢öÝß %3^§çûw QcfË8—HSVyù矿³ëñè<ûÕ«”¥F×U¥?r§ uèƒOfËó ‡SŽÓýoqßûq¹•JLðLý!Êýå«·XÊ®§ìîûE™€•¿î ûû¾ç‰2èñPw™„ó8úx†'Þ]=pÿoÐo=$ï„iЫŸÓþGXH #/“¦ LšÂ‡|"HQ*õônÚ±*ëtQŸ§> EK×f#-#>š.7—ë¢G{„ö=ñªY­<›°^ûÏ$*[ú*úqÎ;ôåGO R²ˆ^>Ñ£iBÚ'OÒ5·<áɯÑuÕ,åyè)ÈGÿ>wyH IÙ2Å%aÛ²}?}öÅ|J?ý'Ývs]Y&§-ÛȯX³•Þ=]†K¢Õ¶±Ì£fµr²¬ÈÅšmÔ¸Aõlu¤îW‘&Ü‹^^u*ž"A uß~ñ‚,ãÍw>K¿8Lϼü½ûêC¢ì7ÐÔ™ËhÊŒX@ #Šak޾|í‰Á0 WVôò ´yÛïÔ¦ó‹\!QŽý›&ðš&#ÃæôÜß\S †ŸŒŸ%7ƒÁ`0iÒHOÏ1 ƒÁ`ÒäþfMƒÁ`0 &M>Áš&ƒÁ`0Lšì&Ö41 ƒÁÈãøN:JEWÁ•IEND®B`‚rampartc-src-1.3.0/docs/docs/files/rampart_simple_archi.png0000644000076500007650000013017311202454500023636 0ustar shankarshankar‰PNG  IHDR{fûq Ø pHYs  šœgAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<¯øIDATxÚÜY lEþ÷®íQh¥´ ×Þc÷n™½½îîíÝí⇓ü7³;ßÌþß|ÿ™UÕ ’¶ÈpÐX k7ìPÜGæ¨ATm­E¹Œ;t DÇëaWi ‹7!&6¬ÝÝ0uZ®êg¨R º¾Ã_ïµíí=ÙüŬ)ÉTlÈÒ úxê|e«rh?£c·Ú³»î9¡¦ê$ŒË™ _gi7ûPV³` ˆLÎHÝØÎ\4³QQZ8|`;äL-ˆ 9ZŠš[²ÃE± ‹Ôp»§'÷‡ eÊ7”bÔ(àpºdA11 C ¼óþN’ûÃΘ˜ða§.XTᔄF´Ð.‘=F%ÇBd„¼åZ’cKÖß,aÇÕâ°LBÀíµY“’àf[/ܳ:9Q8öÃ^’cë¶Ò§µQ’ÔâhÆÐ"¤ x—ÔºÛÀ¢(gÑOâàhÐé´ ÑP$Ç©³ËxÄEkáZ¡”&% q÷5’âûAwí%0:-YØþÙ>n“ê§…7­„Æ$£pºv£[‘cþæ™?ãR5¸P°ö2`µa£Iþkµ.7´Ãå«íð²ÊÚ6®¾—&˜ä¼\hìß·/hÍÊ Bþb¿¸0ƒäâŒáXc§ðÈs |½ë]>2 ¦Ì,†Îv ˜®]†»m0yÆB¢þadœX¼d‰ÌÆÄ=£¾¾æÌ&å‘)©ðí¡ƒ¤<1'G„óB_kûBhÄð”M×M-[ÖÖ>À…Ðü¥“r"#2óÉý¤¡"´^g®µ4û”½¡áy†^¯÷©“Ãáz&=®6vˆêcc¢ÐBâô*P!œ8nšsŠñrãFrßlúÛÛÁ’G#pýóC ¶‘¼«ˆœ’sP8‰¢‘?äÍýMâý£|”Èxvœ­¼Á@£†Û¶¹Fë—eÖ=5^ù¯oö–(ÂÕN,¾ÿGýGƒ>¼ÓRç…8¬ÀÄ Ip¾ºUTŸ5 NŸ3I–QËä¼ÝΈT £í!lŸB#’Ÿ€;hIU¼Œ2nU8†aÁø]É¥ ßÓHYó¦ÕRÐãpA/2ZÒìN7ZÚÜ$6¨süE#3ßîõ¶Q«€VÀP”Ir¡}úE5É5RÖB‹F›Vñ쑲˜:v©⃥“•­ê@N~°ãwE ô$‰Wm;ÿpù Ó®õ/R%ŸœUþBãr‡•ÿŠvbÝ&SaG@ÉYmdÍh)M5k + sÓ)&ȧ^y÷EKç„ç+~ÀÅ+Üú¯´mÔâý =ÛÜ¡8®‘KöH,w,Þ?—røÃœPb<м]¨ªò–ñ9^(³°ÍŠåË fZn.Ì)( í>ܺ•Ü“âñ=¬>‰b NBÕúBÈÐDû€]ðº'= Ëí’×Ã=ee>ü‚ò^I‰ßþ…j­Y·Î§ï`ßRù9@þ\³9ÕMJŒWÓF žÇ)R…Ð]¹ §Ïcƒ}ƒåwâýˆÄb;:ÂÎ[wBõŽ©¶<írÃÿ:‰oå?·„Õ?ˆs¦§äÈV!KGoÞ㦀„€í¾;*ž“&³~»h~tÚîÚﻣßÔ=þ€[ói«Šø¡•1Ú"lÌYWt2*ÝDaÆ`Ð?,ÎD?i–ÿEÙý0cXb¶D£!Q™û@¢LÌ¶Äø'ÙЄ96müƒ“µLþˆSÚÑM5–Òâ°Ðç;·½¯÷ݾ÷ú^[jç ·´ï÷Þ¹çžwßyçü âO„Ö©÷ÚìYÝÀùhÚ„Š#áò €ÏªÌð‘·¾*Ýšô€öƒ-»wWüç}îé'Ä ÄN0š7îÝóÄKwí~s>*üzóvaòùÂÑûŸé,8W¶°Œ6¯Û5ql×®îeY÷sÙ††<‚Ó¹¹Hcp4&ðŠýa±“ôò…©™ÌØ \îÁ>ñÓ [·xcí 6²yˆ-·7ÃÁ®£Òo y°ß¥ì'ÕÞZ)=dÊÏñvÇ^xñeuwFÈC©!ì!壸WM‡cuÑððŒ ¸ÖGs…Ãsä|ûÈ÷]0-ΚÄ,ÿz\9@ctXRÈ•²ùS™åÏŽå–o°˜‚²ß³ VcI«°üÁÙt红Ï\2fù¦M§¾tùI ÔÒX £¾°®‹þ¶f5øE…X¬@ÄñaïïDñ ‚¡Xo·B>šRº­Èë8>íó’Q•›-€ G¾à'½‚nË«áPÜ÷êokÔ”Ëu»kΆ.pañ‘A°Ù7ÂʲrU¹\ƒQ#n×ón±’šÖähØÜó‘9lTW•Âõ|?œ,Òmo¹1­%ñüzåÔ|~Q]ùäŽZ[95Py4âënÖˆDɾjq“ý/2Fa¥E…užÙ¦hùš5+Eÿ‘X‡Ue×ÄÝÇ_eþš]ö5;*ÁåžÖ©”1PC0byêËsóQ @«*Jå7ð|DÂ~ú9`¾à¦)ÀÊ+¤CØ\É{M?M‹ãt=ûÈFè>á“ÕvÐH†Åð»š;`^³§·WÓmh¾“M9R¹Ë£'„E×M4Žôœ—)&$*Ò§¿8L  üÙÐôÜ´ÁIv *pI­0Šóþª4:INEùàì‚ä6VÑúvÑú>,:×Õ[H9F`ªçøqGëcÉ*;3’ü3h …BÐè$%Blª¯³Ù,lc-î÷ûÁf³IrE ip¬†sÃ3’ÛÜwú¿‰c5¨8½Q\žiqU‰IŠ_œ8Ç>Ø/»àZ»¶í|M̵&¹B¨h:(M}:øŽl TŽºÍYÏe™åëj+¡¯‚(ïfÃMìK‰ƒp–ê:ØÑþ‰ìÀ©ˆ\a˜b}Ñд7›þfåè͹wO3tv ȶ‘ 2½YɈJo»ÛÝ'½©@†ò}®Üd¸Ä¯WΔ€0.øCÿß:ôC|5âGŒýóÓ>Ø÷”3ƈÆ;žAŒ²ëJ– ÄÀNsôëmf™ÅiW1:Þ÷ÐB­ñF×Ç#9µ½@ØõX>È[R÷jc@ž·¼žó*åNÙm¨¼ô& P‘o˜âX\Õ ÅU Qd PØ×­‚ÇŠÇ÷ŒƒïRö·ÅS᯿;˜?å3'ð˜Ñ÷¶ôm^,ÿ¯ì PUô<Dà!µŸ5""a¥i™–#ù!M²I²Ìèãdf:Ù¿Éþfåø×T$4'«±¬„$µ„Šú˜IJüD ÇøäS>ïÃkÏÝw÷Ý]v—}]BåÌœÙÝ»gϽ{î¹gïž=÷¬ . ¨Ù8牪jX P B7@ÏÄë9ÖÎo#4g}}¡ØÏɽ£›Iþˆ+’"¹é|%ä—ùÃKkLÝ—+.ªæ”È@alFm¶¾îô¶Zá³ÚCpÌòÌ4n¯v/.jŠÿÐ@ðÍå£%ƒü þ÷”bz*ì L‚ˆ¡¤Î^Ìœ›ŠeÕ%Å$@†bEâtgõ¢Yά),î– À|§KнÏÕ{é¡t¢òxØ®ØàÜœ±9 BCÃC¿Ï/%m}CT·?–nÙ2×þŠ´Œ/G¹Š¼ ¤§­û~ÚêÜù µºXmfBsËËêTe9(\•FÑ®•–×w¹…dãn 9 }Ó6Øš¾¾É+!e¸ei¤åe¥EPÎám“’ùÊñRƒ¨È0ÓEÿ¨ÊhHLUEá-ízÂG˜—:Ò¶nƒf{L=²¿/ù_Ú14*ÌTX¨R×O•FÑìØZ»¤ìayZ&X¬ šLFÁ÷MU›¿ÎïÛýL›z+dgeÂãï5´-Z¾]©Ñ¨¿k?¬ÞÞ˜ [¶me›¾ m h€Ýû~†1·%Ãwù0|ܽ†ßƒM÷75eá{˜ì†Øðœm™eŠïöEôsH/]o~´YB;Oží ÃFŽ#ÇÑqÃ=n¿wšßÚ!Eáô0¾oÁ_N ð¢÷͸vä &ǘ½*qTÿóêÅÅ0ÍÿîÐ)TÇÇáVø™Ÿ¬__3þ.¯yve¸ùš¾&»Í·{£ù6»g3ØÏü]ÁV¾9¢b &v˜Pæ Ï VóµöŽïuÿZ¡¶¡YÈföôËkaí»Ï@dÔí•—Aíé8Y§žW%<ÄFÄFtH0¥Õ(û“ú8ò]„½ûÀß#|«Šð“F_åU>ZídÙú÷ð·Ù™45¶F 2 enŽèg2AÿˆSUQÓ(Ë¿£‚'/A—›áè±uÕt©Lì„o÷Jóeæ§× ƒ3*â>9]‘?¸émö’°ÚaÃÛ\OrŸ¹öIX-wMH°UY 1 -6‡¡üìv‡á{3Ï—<(fN¹?Õù¥¨ÐɖþáœÙá ÒÖ½åÅðÐܧ``d´ÀãŸúf&¢ß9Íuˆ™1ugmº ߦóD_ÊOË—L5µ¼¼òøB¥^F“òUnµHØ@£{]p¸¸F%ô#ÑŽ‹ž}ATI?®cví¯b®Ñ@ˆKê;]ó1Ƈ`,«\:8uÍ×ÁìHOìÓË#†FÀ‘²·™Qà×y'h‰˜Fn´“N~ç×¢Z°jPTLø±oÏ^"$Læ!J¡!ZÖWÐ<ħ"x9~ž ?6† ;âúlI5×>ßÁuÂJwEî^.8|Š©h´4žA¢Na;ä£÷žÎÝ=gi›dGR«O›Æ£€Ùd#l²¥”1r÷ ÜK~>‰¥GÀ "ËéÓ0sFŠpcí‘f6ÇãïÅ«”5NjÙnHÿU‘¦¨¸"Â{ eôn1„=Tꢘš<˜,À,Ž<Ú´;{Bö§ëa颉BžMÄwžžDro&ÝÿT+„¤Y¯ó×4ÛÝ|šyZ,?ÕËd¿ñêkdK£­p‹¦BaEÉ݃h&Å43x-Ž<ž¿à øò«,"hþxl¨+jÏ)®Ùô A¶LJƒš?eR”p¬øºÿææßÄo£ÎV±¦‚{øØ]®¤ámL®xŠ» Ëx›ÿ\êÕºØü%釽â§dû)?„çŒ7-_÷£ £™wÅBß>°býO͹ÃE4JÜ1.Û/üåÁ*3Eâç¹n^j`ÙÑ0Â89>ÞS¡ûlÇj÷nª©dû¥üØàâ-Éçí%/š7Þ]S zàæj±—8N^|0ž[ó³xžòQQ'HÒÂÌþðAV™!ó|«Îóü66_ƒçTJóÖJw°Úk±.ÞpøkŸ1”¸mí.ÄL ~¡èd?ù¦Ë!¸W‚ruèé{1‚ŸÍ®žç™¢”&%9‚ýäs¡‹‡X«*®þø(éг“¢à–ëÚúPpкgG‰h÷œPå½`Y~‡…<ŒâÇf‡UC)M}C3ÔÖ7ɇUwÄ«¹%‹Ïúa’<Â1P÷±¥ž‡ßysMgòóÆììÈ,Ñæ^àÌÄXèUphp/8^8ÖnŠ¿8§[¼Ê°žäv ·kðíìg—Û"àR¬nÐ×ìhÖüf—ðKjHÃ×nw¯ÌÕ»Ž'ÏÂçßVêΟm³nŽ5—ö“|Û‚æ·«ùFòÇ•;Fð—òÔÅì É¡In;ËìÉŸ¬ù2€¿”§–?±©Ñ°óü ‘Ù‘änVÌwB—&ÊeÖ–5k.þíÕá ºÔ±=þ˜‡=˜”']^‰åZÚìé<_Š‚ð9íŸÆVÔbµd®¨eÀæk‘&×PÊŸ­ƒõR*ñGÄúåVëº}€NYþÒzrøAðbRŸîc¹–6£V«a{4>Êšé]¼~ãHž>øÂ©æ ~ºcÙšCBH'Ñrª±JüÙ:¤Ç ™fW§éލO~ïž=¢º¨Í—ãÏÖƒ¼q1Eú[)¶Íxjmî¨æ iriÿ+‚}“ÑôqOLŽY ¡]éâ_6”܈ãÏ^#½ÏÉyÙöˆl¾Ê:_ä%­‹~ £åZÚìÐ0Õt´7Õd…κŒ#ùãˆ7‚¿”§­UÃôV /YtÖ#Tdã{ùÎ'³ Y1º£øwt¶ÃN5ïgO4ÚÎó ú:€–HèΈ–î/@ñîöÌÒî.S”¤¨‡»+úvjj›:õfÌŠƒ[ 5Ñh¡=@Yøõ+ü½ù'HóUa1}à $'¥Ù•[I¶Wö7ñ?-ç¬ð‡Î£KòºÍŽ è‘4ï?Ø»ð(Š,üB&„ƒp!É ÑÕ¸B ®â&²¢\"ë±*ŸA.E$ŸÀ ñÀCx@]ðs% ( $!1†#¸IÈELÉLo¿š©žêšîIÏLÏÄ)-zºRýªúÕëW¯ª_ÿÏ÷?Ý’°D-!.4®D/ÑUò[[B†VÖeLu †ºF¨0vƒâ}§!î¢\m½o¨†d¿p( ‡¤Ù1PÒöäaÄuÉQ÷,Øíc¾éË”'²ã—$˜~» {Må9æj8×>ŠjKá§²ãзM(ü9vÜXVýëm뛆 L»‚ûÂ#¦¬­òI¾BB¸Ë•P§”©ÔRS(Sxt„"…(SMÕ1(ß  ºy¥r»þ½¼l!¤± ÃøM,-)Æ¿‘÷Nˆ¿1t½x~ûðþ™¿×\„ˆˆ(Hßb!·ã«Ïaْ瀿FMhM&!³)ÁvTG™ùÍèèéi)ðÚ[«eýë&2ïªnQ¤ìŸ“§“cÍÅj8{Ö(AvaìDú›^»m§ÅäD°¢¢ÿ‘Œï¬_eWÏQ2»YGMò›eZ± ¾+HÿÒ–Î…9ó—Ã3ó—Iý}Hd~vÖ˜3ýaç‘–§Ìx^úÇ»nO„-;ËbD¦­Ú ç‹‹Î[Ö§ß u¨ùŽê(êü抯†Ý¥£ fMMeo¤«Ö óìïꎄoŽðÓ_­©:mÔ$¿9fT˜PõL4†”!È]Ž(í˜ñwPHüšçÑ~H|2™U³–:ŠjÇ,4O½s}Â@n‡Ò½qó&ø,}5|ôåO’¤oßÞ›$N °eëç0|äxöÇ#:ßÜÌ—.íCÙ•"ÓC {g30a ¡¿¾|èíã=~îêü5áÊŒÎúp‚ X^oA¤eSžYIʼ‘šäŒïäWp¦J8ñ›Ü¿1¤½÷÷S^E†§˜ànøb—%_wA=ìüÍÛ „ý¹öKËD¡,<{"ã¡Qqáû•W¶¦­ÏH¾ 10ˆ! ¦ƒˆèX˜öüÛl•ÊÖæçïJÌìOvœ’Zyiíwp*?üýmdJÊ뼋»EK¾+ 14iZóò,ÂüëmÛ~~­ïu±Gt¾+à£jeËæ•wÛ-¥[ ¨)šâQÐ ù‚Ó:ß… —U1Ï\ ³''Áë›ö0’ïÝ?œÎwÅÚaƒËnXµ€ ʲe~â¦VÆ|èüF'A/ ¢¾7l:¿®ö" yŸ¬ %ߺ#E¸Ì”oëF ‚€ì:\¢»ä·Q»@Kî ×ö…¸¨`"å4/ZñäeËÊPéM쪉®»ÌÂë)-ËÙÕ Û?VªÕ²–:ÊÌw°GsB\8´%ž€‰ÿé·æÇï»n:JV†ÖÎ)c ôî ±Q!švݳD,´nˆÕ'˜P¬(`|ÿÜe¾Á꺘0 4/ƒ±f`&Ü%+7C­¨zØ2üEÁ±±þßoê_ï;ëq3P¯ Zü®ç‹gÞd9¸àšèPtÇš²Ö΂ÙÇÛÊMM? ((­xÌ#oŽ„/÷yÔtâ>ÒáùbÒð5¢Éì$ÞŽXC\dˆñJ,;¹~òõ!»kQíH’oeÈÁŸKÉÆ[%nÒëœè=èe_á;ž/^³óÇéYÇÊT¡|CÚ8ì„EòMvpþàû_¢©iA°ï§gì|¿?§DbÊ @xX TwþÓ‘ãÒWÖKe!íDÉ7ËŒÒ’Ø ¾=Xì!/è6˜v:_mGu4©Ñ·FÃáce² Œ‡b70{;Ë_ÛhGsç^#@·CŸµl£Î]Q;ˆµ€ZÕŽ»®Ä1+˜µ¢øhaÜeQrɱÁLð„QàÏóOWB÷®Alå°Ð¨¨®'ØÉ—¬°ˆóNŽäZù­dG»;ábv$œ—ô·#µ£·/IþÉ3…gÔÔ2Ž×ñJª¥Tæµ¹‚2gpß®°;ë¼C†R ê‰“'”“‹ÕU¡wµ¨ù/,$HäQÑÑ0»ÈhtNí8!ùÝ‚aäm±ðÎû¹Î™šÄ“g˜†²`å²£•`CE«§)©ŠŽ"ø;ZG wv2¤ðxl žJ¾«Ì?{®6¼wÄ^ç#¾XðóX.ë6b¥(˜—‹gZàVF?0êëj–>+hÝ"cáàž-ðà“+ ²ü<¬^òÌ}e‡l(ݳ%µvíò‰BÌPiwl€ÒbûCÑÁŸ3‡œ#VÏééÜ A:°ÿ€t mˆïŸ^‹¬BÊxËdÅI>ÁTÁ¨·˜¦ÚÀØGÂÉüÛ&UƒmÆB»ãbD ‘^À'd2Ð~€±ÍHtÓ è×§QWÚ„Ì·0Û „tª5Äña1y,®ºä«/ÐÂüL<¢¸;üãÕÐhRÔÙ³—}¥Šÿéºy0á±—dõ§/ÙnQa *©ûUíÅvå_œ#¾ZÞñ<)€±¤Ò^†»'L˜†RŠ £ÒJ%նµÑã);7׎!´Ž‘Óÿf%µÃÍ'«7d©ššúYp¦eŸ³·vXÀ#³hR±Ö`µP¬JƒÕryõ¹;ÉñtÁÉrA+fÌÄ¥ŠõmG“¬¼ê÷©=iITÃGÜF¢: ¾?ánb R: bÔ Âxd:«†$Z‚òÄÍÎJ^Ñâ$̯Tùþ±FP²ØlV— mQÐL™Ÿ){d9 6²:mäÌKë€`ú÷ÂÑd¯ËϜȕþ~ÙÊàß}kRÇJf)a|£%t¯DK‰†Ã´"-ÄHAŒúÏQ°ðb(©JºŸÒT,ý̽ߦÓAÈ;~\²õ•&r¢v¸þá€`îܱ9N{銋ûS˜][ºn/è&ùöÛ $€’5c šCÙÅÒ9_çèñRR‡½Æ J½ŸÒ+8Åw™âcSK·T"ÿ¨G²7<^yj ,YŸã¡7Yfßd v|11Ä1M‡Ð@¨ºxI±N¡±Z¬Æ©ý|šÚú“`’îÞ2þÅ·³ÁSɶŸ¯ß›,ž/¬UsCüUðóñR§^¦¸ä½d€è®í]¾‘»’c`Ñš,Uú-Eí°}Î9ZCÿã°Î¼§þªhç;Å|̪.ÁؤNÝÀâ”þ$zÐŽiëÉüô'u¡ÇöYÉÚÁüͮӪÖæ7Þ>$;wËoç??‰ùÔ!$€0V)aL¬ûnëEê-õ»ºî†VÂë)­ÒÊKn3qó­^ =_8ç˜1e€¬ŽK®#|ª©m„ÔµÙ2÷@Ib~0ºtÃÓWü¨›þד¯Š´ÖY´|¯¶×ˆÍõkÄæ–<òÝÇ{í;uÔ>ŽHö±Ö sÖÍ—)ò}éy·ìö±ö 1ÿƒ¯Oúƒôà±~ZçFM~;lœ,=ضnÉw¯+ùéFóµ1ß]ÉW ÁÍ2Àõ]tïô¡ce^£¯WèŸ_X¥¯ÎW ÁÍ2?1^æì?Râ5úzµñ¨Ð•ùôM–l?ß!±¯}½Ú@íÁÓã÷vø7[MÕqÊ?_¯Ôéãþ(OW—â¬Ñ‚’XµÃQ×9^¤ß¨£äóô°L-k©CÝ“XÝïiS³%ÒG«…§kÒ`í8ªC·”Se˜LRv”ÐõŽu@ÒµÓ›ôÕÚ@šHŸOª/ñ:GÏ]/Ðq OKŽ eG šØ›Ñ.™Þ£ï¨ t;Dï7ÖyêÁûÿ¡"ù`GÏ™ý|¥Œj'“]`Y$GÛc«,²iɼòô)Ý/¼`}ª^—•+̸vtÙÏWT;WÌU¼µÀ†¥‰ÞëŽ5ÂÓGgW¥x¸ªû+ê*…F¥×ð>™ü`¨3Q°£‡ú\-k©ÓÆk¤ÈX$ë<«Õ˜Æ« %úÔ˘êxüò„ÕýJmb_h[-Ö¶‘2e ùÐl]Ú.›Ù{R´v¿K>k©£bç+?+3fÍ$Žªè=ŒŽbÍ»PÓs>80_O>XδtmÚ:(ZYlüW‡ôoTýðý!’¯³Î7X£@Ë”xƒ‡W -‘>±óõþÔúQÄ8-®žËoÑ׫ *ù,=µ¬¥Jþ#âôÓ¢3õcNË£/(Ðu{…+2~Ú'ùÚLM‚5¤’µÔAɬ ­MRç™w_-5>¹7ÚÐãn&xÞj¡µ$=œ¦zò…—Í>æk“|}êø’/ý±’"Àñöo wùX£žFï©K¸VŽšú†d‹=Ÿ”™_ÛàãÌc~]£W;Û# âc;Âö]gÔõ!–o´ÛúCuÍe i Ÿí<Õ™ï]ÉïsM' û1‘!P\VÓ¸ê/› <Ôš·dmt„vm-–Ñ¥½×ûéæ×{WòWšG _êD†'\×R×dÁ°AQpº¨ZêÏ÷YŰ/ç<)ÿï"è ¡¡má\imë²v¦-ßç[8HoνÅÏc’oò9){%ý_ö®,Šc[EdGQ@DÅ Ä &hÜ5ƼxcŒ&&úLr—¬nI^Ìv5&Æ«‰ÛÕ$Þ\ãã¯QÜ…ˆ,FP@@Q@e•e†éW§fzè™éž™ž`†ôù¾óU×ÒÕ§ºÿ:}ªºú”t þ:T¸y^_§=£OíMËe|:Åvp¾]QiaÝ(¼KÔû¹JpuP€7Å… x´oLµœœHCÞÁÝ\¡E;'¸r¬ºÖAMQÜïÙGgph× |{tN~XÙr]ÄÐ;$àKÔhtç?®(ÍÎ[éæJ^'ä—P >‰†m§K­} rÑspã“êã 5uµ]‘å²JÊe²Gÿ¨ÚÙ9A_{hãì­ú¶€ÉÏÍ_YØW(WägeÛAH0³ßo$àKÔœ©þo È.UB–»;´’ËÁ³¶\ëêh<ÞUiMåVàÞƒk¥Ê!ì‡Ö0Ä#+ZÁ#žðÔý[éä²ÖΜªGFBË“‰¥¨¤@÷’ÉÀ9ÆjÎ㿆))rvNö­©YWæèè™±o‡­Ý; øMDü|;ß*,Ò˜LÙûó˜ð~‘PQ^FÇx‘|õÎO¢_Õ¦5³ò~±îì™üäí;³àÔ3~í@Á‰‚¸_S O†îN ê^´©®™½=”y´ÿ‡•àùâ$(Ýö ­Ó±‹ÜÌ/…öŠj3Ø»»Bc´ ñ—”\usÝ~°ºu첸oJ%_"³è…¯3¯Ç¾¡%¯ûŒ7BBCuÊÛ tü{(÷‘®`ÈáFI%t®¬T—kÑÉ ênÕ8ÛAfŸ¶ÆTûÜB]@^é÷Ão¦4G@›5³ QƒiyϬŒz–gO†=ÿþ÷l¢Ùw8ýý4pß¼ö¾·‰Øá2˜w—˜²‡ p•Cg½È@Ô:+'eU ˜ì²2äM«àštï%jdšûÒlæØoG™çþçi&;'›9þ,C€¼ê„1m–±u’z:KwV"kÖð#дAÀ#‡…1œ¾Vß¹I¤C“Æ>IAŸ5w¸€Ô&£ Ã1o¸eÖ u¶3qÏã–Åt}çŠìг,U—MØø¹¹%Ò']#iÁ«3 ùr¬ûf#w íKîßfxTW8}‘Úù+Ù²˜†¤Jß®:ß .'0ª45ef¤Áœ&ÓçÞo ¸¹yÀÙÓÇiÞÛﯱãŸö•«p¬—ûÌÞY:ËÒø˜ñSIÙ©ÑoÁ¶”——‘±Èv8rh/ÜáÊ* ^ê{V擱ÒÕÇìzDÍêdeKÀ7–R“þ 85ÉRFFy`=áñ!]áÄùz0¿2kÜÈLW§qóñ‰[þý·æÃ9ô.]{À·;”Ó’Ÿ|¸ ~;¼\ÝÜáà±ú}Š´¯ÅG;¶¬'ü•ιY™i0wÖdhç?î³È= ®þõk÷MÆR·îmÌ®GÔ–ìú~§“X“{…Ç€\á gO)Ýç,zm&M=ö)rú^ú»:~ü\†úxמ÷ý•&RÐc™MÛ¨Ó—¼»†¦±`çþÉçççñÊ9“\Ï­¬(§õ³éúýG/Á÷?Ÿ´Ø=ÑÀ’ž]: ±%ê¥ñÓ³J_$}þÑ2xwù[ôø×ƒ'aÔ¸©°äïÏÊÿûÜÜ= ?í:´ë&xþýëÙЦ[°ê-O4³Õö|TAL’ì¬tè1ˆ7¯ÇRé­UUgG(ÍSîTWj_£®¯kˆð\ÇV.Fß‹!Þj¼ýùç=“±Ô«W[³ëü«™ðÅÐØa¡w!^#mü¨Øs$‘O o¼³† %XǾŸ¶Ãñ#{aƒêk«-SÏ®õÀOM½k2–úôigv=¢€Ÿš!_,M ±o¯ÁCcàÝØ¿ÁwÿÚEÓ£‚_Og蔿B´zoýö¯ S€”N€£‡~…öAý!X@ó[+õ ­~RR¡ÉXŠˆð3»QÀO¾ö@¾™ôNìLøzãWi…ù°ý»ïàìéSPQQAÓÂ#ú§@çv˜_â®ÛdÛû×ÏÆ$&˜Œ¥ÈH³ë5)¹`0Ÿžõ:¼üÂóðÖ{Ë!%í6„õk>†«) fÜ»mgè5hx–AÎÕ8¢éÁß—}Ü,žƒ%÷?kpÿGz£iü’=|¼ÅžDäóÄsm OTr{…€Ukw5»NOž©oã¥¨Af×#Rã7<î£ÂZÛÕÔÊ™2E_,+ç!L¼=!ýa,ŒÍu€ŸN\kÔ{ݤßB¯-Së|E#üšžýÙs,—þR.D9)Ú—G>~8tcös㻄_¸ú@²«¬˜“©õˆ>£éS¿!¨ ¨j¥C þïjŸ¾«t¥¾ô£á÷_wÀø4Þ{PÞ²Jô±ñƒâ ˜¢‡Õ¼yÇn‡˜‰³ Ö1¢¿´mí"ýdcÅt".×dä?hgn=¢4þéä¢7<íärA3gÌ”«Ã®qd•H ÷µ³ßÞÚnN {{p°·ãåÅs¢áø/ÛAV] çŽÿ,XNRõÖOú¶Î0Ä–¨G”Æ—7‚·#'¢í[ðØø™éI°àíõÊqÀí5|,o9VåË%ÏL’o)S§®¾œØ;"ðuuö‘ýÛ4âÓf.ÐØ7FÛÔiHYýÛ´„ÐŽîàèÐ8/ÌŒ[åpëî#£eëäÙ¨ ÆÝ S³Jàa¹ñN¾¢Q€ß@^Ç»¸A _+¸û îÞÄ üÅ+¾†Ø—ž„gg-„¼ÜL¸rù ‡ ¿µ§Ü{XcQ9Ÿä×$Ú1´“;e¤ßâ ­J6$T‘Ý}èqUMޝ𗯷Ô²®Ž0¸WkÈ/ªR§±ÇÔÆ0a–®Ü»·+·Žš>;V°Zùž.”í‰ÍH:Ö1söcîk&üй|4tÖ@.Î- c[Èɯ4hã[j¬ÐàÀ7÷õ4qXdç•Óã›Ê£ý’à^pVç÷#?m®Ì÷‚P9,R#S¨êg íF t &v_8TdRgµÒ~ú>ö5Í…A¬Ø–Æ7qÀ8vp{ȹSéÙ¥j0jôZFsVGhÐ: j¬ýx)=®©ª,G_«Ú”™áäBÙÄ^îк%D„µ†}qy690ÔÙ†¬kæV¡Ú6¬ùØø"Œ“†w `/븛1Ãù3Y ŒÜdWbži°][ÖÂüذqÝ*È»™ ½Ãû ßjUÀ×~£°×¼˜|ü½œ¡#1ƒ.¤Þ·­‘:¾FY1 ÃX±)à‹¹Èc}Ú@ʵb~𠀑5)øl÷KçBѽ z: é¦ÇÆG¯½9-Ë•¬œ2å‡ÏçÛ ðµŸƒµ­gÃ{m+ mj=7uPc´v\bÚ0ZÚH·è‚ѾÿtæœWCeelÙøÌ™¿‚º„ò–c‘_+«ãU†|fÖy¢ý#»yC|Z±dê4’©cS«3 $œì¡­§3”UÊtLGŒ^îN:Ú©k7åov_}û“Q±V¦{ý[¦>ŽãÁ½ÚÀÙÔ"«~•k|ÏV mj=öb{—>Ú×JËk©}ÀÙq-Ë2%Ë0Ä2*–±i„/$݃Ð@jç‹eìx®.-àdB!ÕøÈ5Êj®QÉEeÁ8MS–MJ/†™ã‚yÛfm6¾†l&ˆWVV}úÐãÀ bÓ1ñ",]¼ØDŸ1x±c˜Ê–¨‡jü.ÑãlÂɨt G߸™[*ÆÔ‰êí —ÓŠ…mxN†®Æ×Œ8qK'QÌ[ƒïDƒ&*Ü}8<Ý¡¸´Æj5¾%L(/+§ ÏÊÍQƒÓ1Ž4cúßàÓÏ?·ÙY72^¬¨” ›:䋸KH¸ÊÔ‹´ón ×n”45Æ Z=F'ÒÊg„:fêô‘Á°yo†ÙÁwö ÌŸ;z„…ÁÞ=?«A3z,ˆ…0’ÞTƒ[àÚÇúÒŒ3? »!€èÛŽ„Nàïç[w¦êµñ½øUG°ã×4¦ffm|ä¸Ãÿ¢àß·ó3Wæ'ž; «Œ¢ù«Œ¦å1ÄNõÁÂÑÔ.Çëü0VÞ¸žëWÍ$a2ìX¿ÒRÎÒò»6,UÛöXŽÊ!¯SÅ•ÌÚú2—VÔêu[g,=Z ¸SgÏÂÁÃ‡Õ ü~÷n“Áh¬lƒ¢¢ÀÝÃ]mÓã›fÆôé4D0¸zµÆÛ‰/déÎíÛ”Ù¼ÛäëÒ§ñõÉÙP6>foÚ–lðZ\­2uìˆæAŽOéÎ&Ûm­½ZñîøË£¼ÕÑ!£fÀc„3¯^€ '÷‚‡w;ÈÉLÁ13(1”©Beü9ÚA¾ÿf)ÌY¶•zò=stD=1\Ü}¡G¿ðnDËO|þ=ø‘”›öÊÇ¢Æ8%[gÄ¿œ¬)ƒ B Ž@cµc‡(8öîÙ³_z ÒÓÒh>jPnÈjÕ4’e7nÞL¦]Fßs2)ñÜ’úØ:°£ahvy¨V¶²×¸œšBÛÁvF6Ä<ì¤lY6Ùø†îŸÌ³Œv ;ÎPÉ#“kÎé×jÉ„á;/‡Cañ#ö5&¡ÆåvCÏAìD>‚¯Ó™øvAðkšgñã)#Ø—-^BÓŒy(—,(ôÞC>»ÛÕÕnç—×ÿ¼Dù©‰ÝÌžÇÇzøÒí82 bU³:#ùôáwÉzïpK'{pv°‡b[ *WFwÞ™0êߘæÔ;­©ŒÚ âùôxwN_«™ÇÿhKŠFüùq] ³¿›ÕÈwúr!œIº«“þÞËáj¼­ý&KîNPV®ÄO‡öî´#hÓ¢W¬Çq·züËc¥©SPªëÀÑ­¸¶t€"¼%Àhè•®÷ãß¼½@'þ([ ë_¤&¯ÇïÚ.ü¡ÜnhÚäîðņQõtl¯œÅÊ#æÍ×*ǦÝþùó5QÛØX°4d³ÆeÉ&nDÁ›W—’ ¡%䚺ÐS¤ãà%gÿ­7o¾E©ióß&ƒ³S Xô|oQ`D ×ju xN'`YÎeA h0Þ3–¿^6<\`ç¡,£ÚbM¤-›µyÎBÀº‡B æãu`ì¨`ÕA°œ¾z† P—éæ+X‡8à›ø¥í«ÝiЊØý_-¬Œ,3\¶àÁ¡ß›î­aÙú?LþZØäÀ×’±Â7’¡{(¤©û÷õƒ>amUsðù¢5þéóy4¬®–ÃÁ£™‚×jÔŸÍ—¬K ßö¾­à… !ðþÆË þì_,D®•HlÆ:XûýŸ&Õs§¨|]­XZÏ]zX=ª6Â6Ⱦx¹€²ñŒ?ý·¸H%æö¨è Þ2"5¾Â"œw·>Ú’L§?‘'èÌï>žÎfßô>]}àóØ0,¼­µáÿ¸•U2³dþbç«¶E[¶­¬g`þ ´N%ðÞCc4¾%¶û|fR7˜<¦+¼ÿæ8p$Óüí>|v¡Ñß©½C¼! ­+„tÔüp’E@,76 ìé OìLÍ·Æ ½'ráÔåB£e›1¶K£kø-2 >‹õK«ñ¶bÍ“±´ê­aë ïÕ–Î !­üä¬Þy|#^±ï2%£˜²5ÑÅ+w)[#Y³lÖƒ…Æ%Bõ$’{¨ç>ˆüç$’È23?¶äIM"‰lEã[øß~Lr=/‘…4uÓÖ#i|‰šFã[‹ïL•§¯7s÷ÛÙùk–´½ŽD&ÓÌ !j‹¡©ýêh¯ÎÔûÏ­L.n%² Y…ïL•¶ÇŸÍבcÁõør ø5'à«üêìçûÁ\ø<ó™óÿ§‡ÍÜì?¥ó¦ÛBîÜ«„_ân æ[S ÉJkENc£ ø£U×±”\fÛß–åÇçk+ò#«¥¾…*ÌÕá‚t€Î$~SÇÆ·ñ/X¶,?âlE~cdµOÀ¾€ýKzò¾9Øø¶,?Õ¢rE³‘ÕšL@ú t$ßú´¨íŸ±)àO!œ«ú÷–דš\^gãÀ¯³aàÛŽüÆÈj5_nYÀ«Žygwb·ptn´ v!ub„ÇS§=­ÎCß/, 9W|–Ÿ1ân12#±Ž¬Ð/¾ÒwÎbê;}í ÿ”™uz»mëVx‘äYJÖ¦^«c¯²ïOªâѪø~à0:lî`ý9þïܹ4 ý±#sAƒ®ùØÍ Ì>cÑ64¦üŒùMiëQ Ý "ÈÑs3ºD·…éª4¶ XNŒKAƬ`ç0•-Q¨EgK>?¯s‡?}s°Í˜ K¿¸À›n m¸‘W ›~JÌ·¦6ÉúÙâ!j¼Í\xÈd³óËñf×#ê×C¹œÑa}Ú"¡¦ûyÏʨa05$£«iÜrýÇ#¡?G®k<ÆuIÍ Y/ÃX÷zbäçkƒ¶‹l¼š(?WF6åGFYÑ,ÀtlžÇ¶ÓðÛÃnŃu±õ°å…ífÆè6°íÀ:ñÞr·ûa5=2ÊÍÆ±}xÌÊ„&+7û<Øs¹ÏÅYµË˜Ê–¨ÇAËÔaíý‘æÚÈì&|u²¯MôÁøÉçŸÑ‚®µÑ7cVînõƒIOK×ð&¼}ë6ꔕ½áX^ٙ⩠ë2ZÇEZVȤ)ò³f‰Ò]w¼Z&lKi ëëž•_ÛvþhõÔnF3‡m;ƱÞtU‡GÞxPnÖG%»‘/˜L°ñ§ª<.³¦:ºÅøG´¢KrôÔŒqn;‘æÏG7·À ŸæãsÀg‡í`ÝŠ•µ©guìTÀÇQ޾Jô nç¯:¥s•o–uAÖg‚^µV8þ"4/“4¾D¢¦¶ñ%’H"‰$ú«¨Õ™{ŽfKï‰L¦ic‚­Æ¥(‚•dÒÓ“¨Y(àWTKÀ—è¯üªæ ü¥/…ç[“!2Ì:ù»Á¹¤Bˆìé ½»úÀöý×áÞƒ*X0£7ÔÔÖÁ¦ÿ¤Áô±!PVQ ýÜh ;\‡¶>.е³'ÝùñDüéä Y·JÕבÈf€/oö7?µ‡…xõìÀ¯n­áÈÙ[ðäÐŽ4ÿ‡#Y{§¼<œhçX¾á¬~­¿úÞT‘NqøÌ-_:¥œLȇ”Œ´Þ©1A´<’/é¸i[áýG ­}p»è‹ ©Á­‡3téà¤IH±­}s°mn«kÿZ_nóïWQ–¨ùÑÿ ÀÞ•ÀUQíÿȾƒ ¦€¨‰â¾–%Z.•©ÿÒô•ZYÖs{¯,3×ê¥i/µÒÜ1×|æRîK¢Y‚¹ *¦ ‹‚" ;ÈvïüÏïÜ;—ËefîÊeçç3Ë=sæœ3ßó;ßßïœ9#ÿËRK*2oôg††ÃSÞmÅžÏZóŽ' ý9š#‹´%{Û'ó”% ;¼<ÝaøL›`{suspÏQõlÊûUPRJ¨@™œüšh®w|Ê*Š” È®Û'(ñ%6M‹@hÒ¬%:¹A³½£]Ž-ž0iua£1je‘† F~Pê:Ý‘)Ž`f¥òÚ]` ìÀù`”ØØ€?Ã@“f ,*æA”k¥áÀ6”{¨²U-Â}:†yw€'G2Éœª(tpWÇr¸’Ueåã«~ãÅ®LeÐ7 ·Êˇ4oÕ±óÞ4`ʸSÞŒ ´gyêÍÔð± è––å>žéi×½´!FêÇ ÎGÎBŠ|ÁÇËš tƒ²Œ#àüš/(«œ îÆÅû´¶‹.t-Hó%÷yâïŸU.ÇëóÈšÞÊ€'Ú|8{½n-Œ¯ nªìCCBOñ¤±i»½ ¼Þz(<Ö¹ ôüåçý¼Þ÷Qÿz“–Ô›“ë䈖ȀI«O=ªÏA½•eåw+˜ç‡Ó'ß¼ ‹>_ÉIIi¨ÍŸ24þðÁ‘¤ v´4ƒÑˆüãÇÅ]¶ýçüðî¹bXŽ~×ÙÚy 7Ç(OP¤W€Ó0ot%€½MÌæ}Ã?ŠYY(?ôÖÖô—ö=ÞÅÍÝâ/^€éï¿—FÀ¢çšijú3ŸÄ]p|ÍöüÃ~õZ»Í&ùÝ…ŒÍ¥K`ëo6Ž6à4Ћ^£,¨eNU´]çùD£§Ë5/sz«{eX7!à µ¡ë½õú8ÔìÁä|ºV<œ×‚~Ö¹|²™®mÔ¶ ­*È}²KÄnƒ¢À̽œü#íí >î¼íxز6—¥¡¿1%5…ù×´2 —Ü a´~÷D`c<Z’&IÓ„yríÊ"J™;{:^{e¤6à§¡a+×’Ì雦Ï'”†í’âb6(j8¡*ûÔ<½iN|O5ÅÙÇ‘VçnÁ¾ñ{c¯ó>³'ƒS3òJq`k‰O{¤KZnQ]‰fó ¦RH¹ µ¼DiêëOrÝOר–9½, ïÃöSoÍèÃA xöpï 3^½?^·A /¦å Þ½;êÃùê-ÚØð"9.‰ÑÚ÷R{‡Ø%ÞÇ«ÓZÀs­,²p±,µéÛ£ë4-Ê—QóûKêýV7íãÝ4’ö°ð‹ÑžlL#*hìE{‘[Éyæ`© u˜›ŽIØ`NŸ–V0O«Ë”E@¾]ò $¥¦CòÍDØì|·ì¿0uÆçtSµlH›¶5ß‚BÀN{oü´ç$Ö|ÈùiÒ燎€Oæ,®•ö¨n@ÝŸðÖ8t`7dÝˤǧc“j]¯}®¸¸†ìN÷ƒ`0I{Â[S *Ïï§ŽÑûœ9}œsåˉ ö¢”.9)Ï,Å„µñaÓ1ëcmzE^DÖpIJI‡e+¿Õ'ßL¢õ—tó:ÌÈZu‰€GñhAíææ;öÄ@—®½à0ÚÇŸÖ×þc!²¯ Ð×ÕÜcÇψ=çJÒ9›_~ö9¸›^Ë^¿ìû-Ð¥[ïº=ÕÀš¦Êc,_¹…4šfáAi!0™šŽ­1 —ƒaá©?<ݸ(3g/¢ûþL øpá¢Uô·»w3jÅg¿pÑJøíÏ$X­rôŒ1n’žD;]®çöiDx†_Ž\ Á¦¿?Ž~ÛW÷>xÌûîhÐÂäza?ëcN07ƒAonF¥ Ò’ϧ}H÷»tëFÏ·{.]ˆÕÄÃ}”熌 Ç`î#©OqÝ Müu£çNüqž|*J•f›öôeÒ/ ¼ üŸë®9ÿû©£ôÚ}‡Ïkòf©zQåÉ2_ 7õzÃA/ƒÃ×ßm½G.­zu¯ßÓýéyÔä+—¡‰‡4C¨nQŽÚ£9.%š÷Clq÷V­¢–”t½VOÃþOl¾û,üre­¸óf½¯¢Dî­±hz™Ó×£¼;u6݆µm ËÿûLž6›R¶.³²2ë9ô}¿•¤šÜ>pðÎøHPþ ÆfhXûZÏmó†oi8zFÕ#|0e$\:W' lºÖpû¨'Û –MÏh.ÞÀß§2Ø{s=9_öÞ˜ k¿ÿœþ/:Éìûè¹×G €w„û÷2ÀÝÞ\|½9¯-ËÍÇe5À³e ”AJòõZ Ô•„KqÔ`EÊ£+x/-ïPî”:q|Û…òþÆ%l|C½.íü©×åêÕl³¼7;6cÓ©_ï #kz£å½ /Š•ßÑýu?neDÛ£öŸûŸ•°ô‹àߟ,¬[ç¦Þ$#ÓPˆ.½ŸþΗ Úç›¶ å}Æ\¿Y–Â’©éÈœ¾žÂe¢uð8wž•ÇÛµ„dBSB‰&~éÿÆÃÈÁÝõ¦ƒqJJŠEÈœ¾‘KG¢u_ÒN>°Ÿ³8gÑg áÕ7þ !„wïølö{0gî,5z´Ú—ß ÞüçlˆŸåeïì “^½d Ù.B€¿{vÿøÝÿ|%÷òÔw³Ë };g¯Òr…Œ.±rúžOoŒ!‹Æáüz®H[[~Ð_" G iÛ„âù:{ݸS2_†—¨$Mrš¾_DS\Ä¿^ò'…ˆPôУïsðúäÏà?ƒP<_O‡4?¯¦›dœÉ†,—ØŠ­BlšùÂ…³GÀÙÕ¢^/OñszI̧·–Ñ–”›—áãIª% ¿Z#£Gªœ^Ù°é úÓñ9õþŽlAI`–®7 è É…1$¿2ºÄ%1Owñ )No5M/@Oþ5±?´n×òr³`Î’ŸdI–ß4l:¶â=xsÊtùôÕ Å“Eæô–yGÖ/É’ Ù öð¾y;ƾ5K0γVÊ/õŠ—ÓKÅO¯´Â (†‡Þ”•S°;Õ „­Y)¿ê%jM/ No- qa9ÿAÚ»±Ö¹¶á]ó*c^Ì oØtDFo¸]–\TFȵÉÔ3½éæ ~ÞNVH~q%\N*€j#º¼±r7÷!$¦5>Mo ÐÛ5±á³_³@xaÔD8{ê ôí?V}=Kôôõ´zÈos?gèêiU@y»;@d·fp7ç!\M)UÞ4÷öu¦áì•P\V%zNßà+œ5!@ª‹ô÷{;[Jot.%Ý®C7ˆ?ÿ;=~XV ­ƒÜ,žO7» ê–.¢Ì+}#šÒçÙxV8³°æD­>°Wdf—ANžjIëf>M Ô‰ï} ûwm€¹‹£ãUU) G;opqn1-3HõD„oƒƒêñVz·T”yÓ¿cS8u)Gæôº‚šýay5ܾWjWÿ“ДŸ6-‡™ V æµ°¬ ‹ö …¥Õ„s6ޝÇ7!õSU­mþ\œìôc¥QoÕξ<Ûßh÷‡µh“v„4xnÎ=xm ½ñÐèc ¿Üü šôÐ'›Ãþ3™’½;¡2 xo¸a½3Œ¨9½Õ\–-š¹@ᥨÝmÀ×ú>#øšàƒì{°oç:ºþ™°¦W¨?þĨox«t÷‡ó×ó ¨´J² WñR±çQöÞ@W¯r}AQ%oŰ @HƒOÿä«$gß)ªë¾Ê~ëN1„6w…Û÷Ë · B¢ Ñ6ëËŸt8½‰wèþ¸”—+TšW lFŽLÍO‚Ó –}9ÊJKèþ–}çxã)ꫵr‰ÑÜÂ×*ˆ±[X"=¯”Àh³¾ü5êYt±UV*¡²J©ID7F+qú¹C c#ǼMA>6F0¥7 †÷ž¸dHXs7HL/‚2‰½K+…Ñf}ùkèµ,ëÞ »°™—#ä#¥atVî–Ê0ÂÞ|+êçíkõzyð …R€F1ôò¾¾p,.Krœ^êô¦¡§×½‰ìæã"Ñ?.Ïèý°—_£ÁJGà3zºÃ+7óaÔ³-açñtiqz™ÞX‡ÞÓª†ö ‚kIùüF+ÃGq^uÔàwº úÚsU^ÃùÔ¹,èâ ×R %zFü«éŠ[Ñ[^Ó»:ÙAzfI]MËpgT÷KÒ6<.ËŸ\€¹N‚…KÖè̓‚º,•Z†3¿âãá ™©ÈAÓKg-KoðÂÓ-à‹÷ëøàëjx†³àÓôW.@ii1$^Q}­£c§î¼y¨b”CV·áqyŽæ èá'ÎeIôŒì²43‹zo\í îrN µÐlêr .í‹ñø8ýO›77wºEéôõ:Þ|””USm¯·‘i屨¸Jsð•À{ÃXˆà˜šŽEéÍ'›Ã™‹ÙµJ­—âhißb\ ô_~³Þ |âŒÃÛwKÁÎõ`n¤BŸ_ø3!G䀒¾Ÿ^:ÞºÔ¤ô"«¯Å i_œ*У£<0c´4À×.ÿWëf `Hñtµ=u°ÆˆlQQ\OL„Þ}úÔ ½‘ŒŸ^_úá!žpGkÖ$#Øùµoæýðòp‚Ê*ãðã Ogö4BFíÙøljˆ—<¬µ¦·f‚C 9-ú÷ëGO9CÏ5’‚~ä¨Q0vôhغc‡åéØ8}ëVÁo¥§M0¶Uõêè OݩÕëOXû¦ß-¥ZOõ€Üürƒ^“C[gpPߟ¯áéóÛ+*Ы“œøK¼­ÒBÞ›ñ'ÀÏ»vAf†jæéÆ è9X±l9Õô¿;—jyÔì(Ñô¨í322`êôépìèQèÖ©3í ¤ê½ññv‚¼ürnÐÍ>ÀÜ$ß.¬£•¹Àh¬ö5 ¼zz!Ž+£Ø"¥k§ND¨M¿XøÒ‡˜3¿Cd¿§_î q±qFƒÊ’soP˵t©†î°àÞ Zyâ—ƒêÇ{SÏš~¸Nt+€Þ»U3÷K-¶Z´fš~.ÉpbÙà ¥zPHª•ªù/Úç0 P*Íœw¥VÀøµŽÕÓ h`ÓÔœW’F¦sOEíøªÙ–Jº¥yQ(uÒ`ÔiÔ„kÉù‚ïe*¨-@xÖ8t÷p§·Qƒ™¤E-‘7¢Òº?»=îc7Ãîz·µ~¿#‹Ò¦µì;Þø¼ß‘%Ú~¹>.É'Ánp¹0¯Þ´o,Ãg0Â^†ßçÅþ¦P(  ©3]Ö™0q¢F{"WžùÁPh ¢WdŲešÀhïÈýôÊÖô›·_V-=!,Ô‹hü|~C–hzF«ØÃÓÜ\ìÕo*1z݃,€Ó’.Ó€Òðë:€6¼ìïåK 0ï>øµ6ºú:CFv™EÌâ¥K(бü°f ;-Z´ §>9=Ûè‚ZQªeŽ—ÇONCrú·Þè\ëøfr>¯!ÛN¶­Ö ’j jæB©ƒ1Ú7å† ðí"ž€S§ˎÂÿÖϧ`ý¿7çÃýÌ[t¡Ös§÷À¨‰ó`׆0îý%pùÜQðòñ‡Ó‡·ã¯àØÞHÜxê¹qвu'øýèðôö‡Û·àvr óoxŒœç«%FÀ­j®pѤ=L~Ðæ WÔ ´¡¡qªÝ0/hk|ôÁ‡ê<Õe¶‰‰‰P\¤ZÀ).6–Úx}ûðöšüãy콌­»úÔôk£õc5dÙÏêİ—»õ 'T×µ¨O[3ðû‘-¼›áͯ$é+¡ß qä;×ͧFñ …¸˜=tsh33Æóðn±§öÀÇÁùß÷ÀÖ•3aæÒCp†¤9sÉ!p÷j² ($‚ØJ££FÎÐü†iô0F3ÿçå7ÿ£¹‡1ž£;¤ë낱ûG?7‚½3x "ôÔìÞõ31Êuu€@d·}äcGÑ ÅÒ‡ÙsçPà›ã½Ñ1 n®ßõͳѾyR¶û?q"= .Ú òÞôá Ÿ;“Ò¾zðY²½ W1ƒ¡Fñþ[Ý4û“ßì߯»ht:înŽð×Å{ªÁ7x®8¶jJÓ 9=jx ÆN]½•öMlTƒNüª;xÅPz²|ö0z|öøVXAö9žH¸C¨Íîu³jt‘°gý,ú›’‹£+Í—IjÒSj– ѽG×ö¾á¨+KKÐ/¯âècà8ÑøHðwêW)Žª=é!r´Wü°nKì-´ýúèyásÓ™28…i£ý€[Ö›SÛ¶c9cÛÄ…W¿[{¡V0w×ÁQ¡`oo˽€+ÑòéìóɶÐÔ.«SÛ¦›m´öE@¢§%îÄ68³]CS~˜ÿ=ß®Ë3ÑçظHe¬¶êç~ÛV·Ë'×ü¶g9dìTxý£­^ý½QG Ï^ÉÕû`QSëz/~Ðá¹Ú¿ëjípµ«õ}#e`Ý8 €oÐÊœÁ)¼Ò*¤aH³^MžôN­{±t ëÊd==؈ù<6Fygx~ tƒ—_hG÷+*ªaí¦ËF§sîÂ=Í~Nnøù8_Âé§o¥æò:.ÌZ”ôéÜ þˆ¿/H¸Æ”¬nžÍ(à‡½ñ9ìßô)d¤\¡àÆãµ ‡CfêUúúçô’ §v¨+•©ãѸyù·:$œc´*;ÿaƒ¿¤!4JkÎK$¨é±‡Á^ éÚüT§w-ƒ‹ÁƒS&βDÀ»ú<ÝïÕ½94õq‚ÜJgÊ;=j³éq²¨é½Èö²©Ãh'ÎÝU¯bÆpûå9O]Š´q0ðæœ=šHþ-;À½ô«pöðñ†–m{Á©}ËÁh~Œcïèñ§wP7fX§gT‡¤ƒç{ œ•¥Z3> ó(©ø|RŽ{¢~ªó§ Z¤O/ Býí\œŒBm×½8d¨fršIC¥öìo¾M!ñF®Aqµeùç œR_°/Ñ7àpîj.D„yÁ•¤<~C¶V¨Îú?ÖûL³ìßøOvÓý7ÈåñžÃhÔv=†ÖvM±Çä·ˆ'_¡»£glÖÜOû .>°ëzq^}® ì8’ bC§ôõºTŒý]wËúóÙ)Èiz¥iÞ› [.ôw{h¨IaQ…É^ ƒ@¯=§žkª±!]jTï ˆ¿ñ€ƒKsÞíkôôdi×ì~ütŒØß?e©œ5…õë zóçáîËVý¥Þw¨·òhN [ü†KŒ©­jížàîbÅ•&×h3¼ÍGÿXÖŒºÁþrê6ˆ] 8kø<šÆéG½ôx­ãoVž3:‰ã:ƒ§‡#dç–­Ôˆý+“—Ó³†kš:KÓ¨ Øç¼Ýæ­¼`1ík,x º†ã|ØcžpVä+!Ô€^üy4•Óý½ è}{éõqýŽ€Ç4:<î ‘ýZŸç2y5}gäô$x“ýTsº¬åÛ®ÁcnšYl9ó¾"È_ëÆ4²Ñυ¦ýI añR݇ŽßÒüöç¹ “z”¤”<ÕØÑõhâŇåôêA©HünãİŠÎ#ÆÇë/„ÁW/›­}M¥8Æ5 «ˆ}émíÖXW8ëð¸<Ñ«\ˆÏ‚gžnK¾3:½’ {ç z>G—­šÞà[Ø1BïÊóùÉo¶^ƒ)c:€Bíi AýŸÑ£¦ä¼B;èŽö25ת®×º§R5óRÉs_ ß|ÐNž¿§·L"sZŠ4oÂXÑá§Ý×é ~ºõ~›“;àõǶ%ÀÏ¿¦.u~·ÕòØœÒו¶Iní›Ö¼«ªÞj½ÎF£ào©ÃêF£=µUwú”WÃaΪ F}»T ÔA¬yÓ‡í2p…§ö†ÛE°xy,L}·‡Þ)Ê|¿—“†Ó²…ÜÏ)圊]oeÈ+¬ ïÎâŠc™:¯ÞñNM0Ð+#hðغÒ'Âöº-Z£]vÉÓžó߬ú **U‹|-ZkPÂ%Ëô PÕëçw.\#Ÿ †ŸŽ¦Àà … F­páL|E¥’6L©IcðÞðõN¨¡Û´ö†aƒÂÀÉѾ\vÖètfMï[ë˜+zÿŽì®ã©ðê P8›wî—5øAÀã[ï)E E+¥1 +1œšÀ¬ áË—­þ V~üÌ\~¤.AÓóýü°\ë6«°áïçbòB°ß®½SÞîéw 9ãXí‹á´P¤¯Ø~ f¿Ù™jÿ¤ÛõO1†ö{ <\íáÃeÒðêËíé~ÚíBˆ½pÏM_škáºKt¿_x9²Ä'åAì•lƒèO§6>ðLÏ@ú1…m‡oQ÷h}HFv)Mÿµç[7˜Î]ÍCfˆ2o¬¬ß{àž¨>W8CÀ—“<ì=xüÝçÞX…Óë“8ò`1°Ò>Ä ÂóGðñt¬áµä!c7z%9®§Ð` aó÷æKmic³†$Ý)¢`zX¡]ÞXI Jjý¾›F ÕRÆCÝSóŸ!ì¡ ŒÁ-=!æÌm34}øÆn¦Ò 6Á÷Ä*bΛ0¯q˜lÜ~…÷:;ëgU–G]$ó¡5¥ŒyY,¥¡ÓÇ“e‘E ¨·“Ÿ€,ÓË —Eæôf€>xVJE¤@,ªÞ`Яšõ$¾R˜.?;YCVY,z|1\Y¬Ëé6ƒA¿õà-\"d¾üÈd1QbÆi=@ ¤^{-Küàæp¾U”òè”,Ó«W7{ƒ„hr­ûÍ)… zYèñCkêïNm’5½,„!Ë~h —ìæ\ª[½, ÊÄ-—»€ëI­sѲ¦—¥^Ao!,™š»T7®Mß_("è›û¹@óf.’¨èâÒ*¸Áñ9©”áü5þ¿‰­ By¦W_p-K®y~ÎÐ=ÜW Ç·­¸Þ°’JÎ]å_;_leÊ«¨8=~aP½z17èKò)A:ÂH» \yk„òª«¥ b35=‘ñø¬Ö_`½a$4Éž‘x„l*±•ÁÔõéô‘Zûu@¯P2õ–yk¡^ÊeP‚^:y«×æôÔ4ç’¡œž)izFÒeš;.¶2(pÝc9ýIc»,©½B(å2(%¤éõÓñ̲Äy7…üÓ Œ„4=#szÑ€¾AÉz©nõwdY'öp¾‚è)jz©–+ïb-_>k¡Õœ`f:šïȪ?¥MB|ãÔôŒ¬éE¢é•ÒõJ0ŸÞ ÷Go‚ µÈ¥43‘x„<"J‰yoDá²Ä)5ເêE‘:Î¥Rü”ÔK¹ œyió*RÏ~~G{|¾ ·6©ûsºÕ¢¢" ÄÄDè߯=‡ÇðùÂ…tŸ=g©²d¬¾OÍ[í|aPâbc5ûº‚åÃ`‰¼Ö< óþÌM‡åô…jO_&1œÓ›þ=<<`üÄ ð⡜–Zñú=eeï4òoI—åØÑ£aöÜ9´ ];u‚SgÎ@·Ni9°1°Û¨Aaà AÐ><ܲœ¾ýô¬÷¦ žè¹Á—I¸yZÝ`næ£7lww8vô¨æVô/Ô§·l¬™®¼›Z†ÅK— ?£ûÅEŤ`êt•§zĨ‘´Q,^º¾"ñvïÚE¶%òªmx›ÌMÇNí®DïÍ7d;ƒoŠ» 51ïNšD+zêôéí‚òÚ5¼]²¶F5Õƒc©2X;ÿÂƸ2´hÑ‚jzÔòØ@YPcYè˜ß­;vÐ2ÆÅÆÑ†m¹¼6¼Ø©¿GÍågðrz Ómp°`Ð×9sU½%Ë`íü[ŠÞ°ù™0q" ºyD~ß»OoÞl z# ï þËì ^NÏH}–%#é2ν±`z÷éCµ|}åÕß-u}ÞƒZ¯1#¬ù¡©^ŒË–Y”ÔR†Ÿ ‡Å¦ãáæ£…BQI%lØ}F= »Ž¤ÈÈ“éMÃËÔ±°ãP2dç=„™»ÀWâaôà0 ÖÇÜ`õÿá™ÞAУƒDï½A¯éNö#ÚøÐc¼eâˆz­ª¨Ï£´ðw•©¢¬éÅ!NŽM ã~i­ò¶ tƒÏW_„OßéFð§/܃ñÃÛÁæ_o‚‡«=ÝèÕœl“èu;Ü¢åÛmWáÔù{šcLëQé5eN/IÍ,†¡ý[ÂÉ¿îÖ*¯îöxl&\MΧ'žV)ºeGÍ?÷ûó0fpk"Z_tÀãÿˆUuãyöž²X_ ‘ýhYœ9Ë+KBÂC½ ÐÏNÄ©¾Ì±hZ/Øy4…€³ò‹*)Пì@ïæ”·‡#9_A·÷È1Š·‡tkï‰)ùô\ Ÿ I×.^Ï¡i„¶¨ùžÒ¼ÚAþÙV”•C……"À.98@@]–UÂpG‰4KÉw± E’EDImºVy ‚¬QƒÁÂÅ Bƒe€ OƒäË+ì†ãÊÂÞÝ1Û¡<9Úç¾ÈûIdO ôO$¾tÿô¬K’Ø)e±‚¥Œä8l(3ϵÁPÏ6hµ³8#Ÿj9[²ªŽ^•!CÁ5£}©ÄÆ\XAõVVàÀÎMçä]îí>uP)eù--ogUŒyó›«ÀÃÖ•_+“—Ýhçà`- Màä ¥Y<ß~°3Ô—UCf|š·IÚ6ƒ ´©æÝs+¸ó„ôÔ4¨­­Ð°pØ¿ï'ðu´„±£G‚£“|úvPÆQp¶pee[CøÕ¡Ð4Ƚ2䆻ݨ7ÙýÁârÕdi\mÄ8:@Œ— ¬¤Ð°«Œ[­iH\°žÛª!ÔÂZ­í`T mòc0?ÚÒê,-y^ 4¸øÈÉÞÖòêKض78::Á š:hsq·iÁðãßðcjZê º¥J+¡YÚÒ©¾Cì=ùß ÆVa×÷‘Ø€7K΃ìù_¡â‘×~¢ Lp„Špg…ûà\N%ضºÞs›WØûxÔÖ91éŸÚ¸ù«–‘;‡Èž@èÓ®— ÛÐ ›ªe`²d¶ààКÚ¹g*ÀÇBî ùGV $rg¸à>)”6ñý•ƒA‹…¤¸ºðýh}cJ©ÊæÄ‹¤Ž„–uMK½òúÖÌÚ°r'7õõ‡qŠÁM&aŠÃAc}¹Ò¸g!Àæ]|ûh[9Œ´r‰• ¿Þ†ÝÁÈ¿eŽG"„©twU|Àä¹[©wÙ}™Y™ÁAÁ—$ÿvKjC\Û¥&H/k„€¬6NØè6ùÍV¥ÞpuaØ·¶rë].¥¶¶|Ó!O7°±´†FàùõÅœÌ1 Ö7’8Zúîî0¾uØÚ8±äÓŠŠ!]ZÇÉÝ3X^I¼ÀÞBkj utÏoNÉâ×õ¸rHŸ„,+pKðljâÊ&ÇÑ‘ÏïG¡t4¡qˆ-$¸xnu©,~ÆùoÎPO ²'Ì Ã|<¿_|ë­ §N›®ÌC?ó{8SX2V¤[_Êy2áƒì7ÎdFGTV¹FTU%® uç² uˆ¸\.‚ò»n„„#íoXW·ÔAVMdÖæ3b/áyNÌZö €Á2GNÀC]†Â°ÚZ`eCcôpÂÈ7él oµ€;K° µÖ³õê&ê’Ë…P5!¬N]Tº\2-Z!XjÅ÷7›ßOx»Cë¸ph:ðwY…Û­§%H‹Z¸k錛+صµ%¶I,v»Ù1¡±IR9ùåMDìDö‚É™{È¿9ÃHûL7ÇÊv|÷=øøé÷àxúÔBvîÝüÅu‹+b¼lÝ0¤Ü\ePQ) ¼¢´4A’@t½`tËàÁAÌ2/†Ìš|ȪÍã®o‰5;úq¿øÄAƒ¹ådzC.dB[„Ø]ª¨kw··‚Iõ­ÊíZY+w±8ÙÛ‚û£·CÅÖo ír5ØÎs…Öœf°ñ:°Èn„6FÜ.– ±µie«|~ Q –Þƒ ËPyÊÝ=¶vUå=ǶÈž@0;‚ç‹Ì™;Ž[¥ŒöXÿÒZØ¿o/šÐ˜úøøºF˜0B$4<¼«"cƒƒ‚{ô)ãdëÌ–møý­].. –0jNLŒd°¬\WÙ\ßàŠ¤Ž.—.°ìž0*é2üY\Á¹…|õвòNåZ89€ýô(¨ýé/°? °ZóTÞí–H ÉÏœrYÙS8K«Ú˜5n 2eäAnÔÙY'ÖÔBbÛ©ºÄ1ñaY?QH#‘=з­yFä ;¾ß­Õyé©©<4PTÁšµë^}Qäµ1ö} ¨|½6røHX½æùì=O}Ç,þݾõõÜý‚î×9“ eïŸzõsÏwÚ¿ïO°óëž–VÉ6w+RBNaI•Ž×ŠÇ‘‚"K(sÍë³»úúÛ$¤äµ¹º ‡ŸÅ ï^rÝDýò7?ýø6Î`UÑf‘cx¢¤Í…ÿm>ŸÏ#t,lø6¢à’ š$•˜›'Ù=s†4ž^:"ÙˆäxoÃ[Œà¿F"^ÃHý^^'@Að1 Í-ùݪÊbÿ#ÿžÞÜ )-*í<*\£ƒ]*§½¾É-{ãý‡-sb²[m!xp 48XóH˜Ú: 7Yñ˜ó³É’J'h‹O/±J¬ª’$,¿£ G ‰Dê"{Â@#u$ÛÄа0W뉚æ#×X¨j½â{P4®Š6@TR·%Ëž@ÐÆú};öž{ãbïýßFý ³gBÌ5×FþåŽ3j²kO>yvì£ ÷ß+ ¾i«Aô¸l‚bÔ‘­’%jd ¸V¶Êˆ¢[ë[ÝBVqSé<ª0@;á=%Bû;q½„"˜ ÙggWöûÏ3Li“Ã@u‚Ý7µµ°rÕ Žyê¹õpý¼›»-ëé'€£¿â¿§N› ¯¼þa§c~?ržyòAþ—ÞòÅìÚþ]–Y[S wßu#´/ñ»âÞG`É­±àèäÜáØÄSÇá•—žìpìº×>€«§ÏÒxß~;–Öí½p5n"<ýÜkÝÖÕÀ{Úøö:HOKQæ-¹u9<²êYC_:!0е“’KO+7/%„†¹kª¬Ï“}V‘=AÿxôÁ;O…Ðð0N¶êËàÚ5±÷®„±ã®âÛ§ÙÄ=´ Žü•Öm¹¯2’Ý¿ï;þ{1’QœœŒ r9ù††E(ÉY(SÀÞ';·:°Tª¤×ð¾V?ûšF’0}J;Ùwwoïnxv~Ýý`¦ž”aWÊìg&·ý{¿ëöÞðžbïY Kn‹5¹u&û4’}˜²O32ÙÄgO&'2f› ÑGßå1Þ¾C•ý‰yñ­·vÛwîˆWýUŒôbD/UX¥«THý°‚TÇŒ›O>»^{y5ß^ÉŽùäó»%ÄÖi$Co?(*Ìëx|m ¼úò“ì>üؽFöêYÃ{y(îÙ–6¦ÚÚjHOM3§ÿæ#Lë÷óÒú`j7бï.åý«bÌØ‰¬ÎàããÏGêõ75/ȤæÅLÆ®•anBFÌD0 NŸüæÌª ŸI🇗Áƒ+_ÒLÄŒXßg];9>úŒ²ïމžÿû#UcŸ¾îúEÜšE²Ì`$þ-S‹oYÞ©ü­Ÿ¾ [·¼Û~ÞÜ›àÉg^ëÚíÁÊ{nõPÇêõ¯å „(>ŽÿAoÏÞ¦N#¦pðºiØßY=±z®×XÆ¿bð{F„„€·ßÛÎ-÷¾ÀfÆõF¯…¡,{J”ôþûÞ6=.^,„“'R!fÊ$(,ÈWö»9óæq+U8>ŠYšŒˆv~¯±<ÌpåÕ3Á‹YÚbër×Ý(Ïý…YºšÊˆ-øÝûOÀãŒè»+ëûÃ/'•e#©Þ~óŒNÇéûYÃûþ(þGX¤PX¿°‘Î{L ª÷,SÑ?ΔžcÏäkŽ}E£ò‘ÉL–Ì¡>†±ìɰ'Á¡üïŒã?ù„õoæÌ»ÞÛð6wQ UÌIééõ°æé‡` #sõ ÊÄÓÇ•¿g_“Vý6Šd¤_€ššjfá¶ûî?ØøŠò÷¦Ï~`JÇYtùx_èç?ðó÷Üͳ‹)ŽE·Äöø¬a÷óØ#wòß‹–,‡ØHEÿ÷È2H:ý·¨:|÷ÍVx`å3Êþó÷öIß7Ö­æIW¼ùî|äeT·‰™ñ’±ëcË^F‰’’âï¿ýÆ×¾ðòk¯sR޹rÚ,xŒþK®áä®z~†ŠÝÝe°Ö×GK\úä…|U%ÂGNÎZ—=kî"e0’UÝ×Õ³† ÅAáRÑT¦¶P•בJÂ\8‚,ûÎÉ Ñ8)éC08pòóÍWVƒ¥¤Tߠť^}ù%øüÛÃÊH´”\±€[äk^ý€„׿‘êÖ)úåìÙb“EãŒí¥©>ý ‡Ü8¢ˆ÷Ú§„ððxæ¹ÕÊ/P ˜:}:|Ë—ÄÀs¯|È ÞËÇvþ|îûÍ!¡ðü+p«»·ÈdVý_y¼Ù5ž'Eb¶™™ÇØõ!Ÿ=¡Ï‰]>¾¾ˆ^¾hõÓÁ_ùúõm\ë7nã>õ™×/â ÃqTpìè!=.YS®ž%nDÁÎ=öû!ØöÙ»P\˜KW<ïmù±SßÇã6¿»þóÔkÔhfA®»>qãœM%7Áðx‹YÓƒ,šù·cq¢V Ügm)iƒ ïØAàwgÑ¿¿þm¬˜¼U-üňI<3=…‡?vV2~|r'{'OÙåËTI§ÃËÏ<×Ï› ÇýZ¤ÖìÁ¶€/¶|¿ìÛŸ}s˜ÏÐn“ðÎnœÄÄB“¹q¢£}4Õ§ï¿A›t±œÈž` 1 Ñ9íu <õè2¤“¹ë_^ Õ5õ°ê©õܪ×íÿ¾d–¾³“=àÂlªo÷ââlïnد¾óE§º C®QÃ;¿±zêTÉÈ~Ü8_Mõ!Ÿ= !ú›½ƒ¼ó‰üe¤—ž}Yÿ-Ê \$aá+V¸pÚуۄïФ©×r2F€n¢ 5bÎâ5œMü›§s,EÇãûÞxKŸgä_Ùð|õÓ z6˜ÛÄÜêcŸ=õ+‚à\âq8ÏÒŽï4¯Œ?ÆæcÒŒŽ+ñŽéËþ÷…+' gïìñúXîÑߎp÷P Yôf@®4AKdOè—øuÿ÷ {/,¾í6e¾š‰–;ZçsæÎã~ÿаðN‹«iBâ©“,âD.Œp¢vüø1ÜG¯jÙ§§¦AjjÌ_¼œdÙ÷/˞؞`xäÉõOÊ×xùpÓ»°gçVpvr„+®šÛöœÐxΩs)ðüªe<’GÙcië ·Å>‘ׂewØœY𸄺‘Ü1}xí2z.ÌR3ki°ìûùª—•ùz² xhÖ Òã©?ÜÂSO}4€YûÞþÜzV×Ä߈_ ›¾úµËs'L »_HÏYödÙ÷»~’(‘@Ì„÷*ùýÉð+DHÆ1ÐþE!} ¥Ý‰Dùe¢¿“Ëñ›Ÿ»õ|B7xócùäniƒ|Û?âZ9Ùÿï"Yè}šìÉg¯ÿ›è_}$zR¤ûÖ0ËYŠ?s± ¾Ú—Í-±ÙPy¬9zª&ŒòëA–ñŒøW°<·ãÉÎJ eov–}¿¡û…Œèñ~d?ÉŠêfå Ã}¾73·–'ëA±5uͱŽöƒâÐÚ?v¾,Ú¿/J Ȳ7-Ù÷—Xâ)#ݳ›[Ú¿ý%[Nðã~Ÿ½µU?ü/¦ŒñÜÀ:†ë_çËã‰ì yÉì>¦Bns†ãI%:Yñ_nzjaéýká¿ÏÝ uàã=½Y벎Ÿ-…à¡Îkdr7@ÐÉ’Øõ¡ ÚÐÒ*]<6)IÀ=«þ ‡÷måDÿðÓÁÞo?€Ã{·Âµ7,׺¼â²ð÷´‹¹\Ü@O- /‘Gï˜:z0F“¼Ø:ÇatÝHtpß ¡úöÿñßã¦\v®ºöfÊÃUŒ†yÙ%xÛKè±%Ȳ7 ²ïW@²×Á´ol¨åÄ~í+ó^ÝܛՉ㠄ހ^ª"t äy]Ü8î>pðÇx°³wìÅ•sÀí#ª'Ȳïódÿ[bI¿ˆ ¯¬mAÃ^§({{'¸zÖ ‰nQ=씤ôª&[zj „î‘0-ÚsFgrØ>{ ê=p,'gÐ:7 .§së>ób"ø å¿›ku*,{¡÷–´©’9Ô‡Ü8bÜ8:øqž}äXxûÜäÓ/$˜ñWCÈðh8ú( #ÁÆ&{3‹³—õ‹8û~{)ã–½.Ñ3hÙïþê=î»o¨¯…§šÇÿ.ý×S:•‡§Èð-ÌB èlÙäúдÝs½Âg¯ý©ÿzôþ7/'“ o¿üH·Ç¬zö]«[}¤²>'[7§A02Øìl,û=™àÒ™yuSTOrëÊ«›!5§jê[õþ<›¿ô}²ïÃÖ§—› øyØ—»-ßÎÒ".~ÄÈqðÑWðß÷ß~\sý-pë]*÷c^yi¡Nqö|ö}C¶(ÃQ!.ФYYÀð'žòJà\fÉM¸;[ÃäQƒ¹ò<‘RÕz"}òÙ÷ƒ›Ðh5…ú;q‚ok“AM] 44µA#K9uœð-t\.aþâ{`ÏÎOá?Ó~={G®t)Ù>"Ð l­-¡…Õ5=·†Š9bb¤;{`m4aùyÚñ~uät ´¶IIn:*Ï)£=x_OÏ­í=/™›çÀÈ×pnœ@_{êÄÉ?F‚ÖCA7¤©k4΂[îáI_À*Ô2 §´¢‰o;ÙZÁøánàîb•5Í’] Õu­&—oT¨ – Y]9z0$œ*Õ/InšYaYc¯û7ÅÙ‚ìÍ̲gä>Ì ª)V3ë½;r—©ýÐuyƒÇ¼ ÊJ ;å?±æ}nÝëB÷m¬s´¶µË¶²¦…'¬ë0/{ðp““ʼn å&#~VB;ì™RFÿ{™ÊWÎ4Á[á6$h†—›-TÖÖôÒã`f–}¿XõÒ ¤:ØÅ®ˆ MÍmP^Õ Ùyµˆ¼#ÉË:å£;J×7h#FŽ{G¸ãîUú±ìYp4‚I¦AÞõ RÈiüP{ðiåÕM˜ZÑAAL4`§(*“ËPffŽc×§ßÅÙ q…_È+®‡Kùu­uu;¾Ëµ+dÑëBö¥%p!áØûu‡ü§^ú"F×Y®ý¿²Ž·×ÊH?5»šÿž4Òí­à3%|TC0>ЭÙÓ3Aº gû±·¼B–½!:· „:n¸ê].¬ƒôK5]p»LGvkH E­Ë"•ϬûP¿7ˆ–½-{iW\¯13'_>¢ âÃ|áÔ…r½„´$*"s“Ëâì Ò0Æ»‰q#ÜÁw°dæÖ@f]M÷S&†äÛWr7Žn>û§ã–Â¥¬´NùÏ2% ‹e5*Ü8= T4n–”7ñ4ØÕF…ºÂÑÄb¨ª%KßXÃõžž 6è­ {.ÃÜî©?XöFÐXžŒ´¦ó†´KÕp1«ª£ðºè²25íç´:¸qèŸ{eœ8–ÉgOÁúÛaõÊ¥ÃòGF]¡“ißhÝw¼=™VÃCü–mQiŒv…Aƒ,à·ÓÅ<"‰`X ®Çg‚¸¾g˾×nг×ç6ð=ÌšèíÜÄ”rQBÓÆVï`'hXõ÷ÛÇÞÿ¼¸ú~¸}þˆ=bfÍשHZ[À2­ß }öÿî…s ’°hvû³/¿ù1Œ£ý­ß •ɺ]g¥g·T÷RjkøíŸB˜6ÁŽœ*‚¢r"|=9 D<D÷½—!YöF'{}¹q¦Dy‚½µ%¤dVvé‚èññ鬜 _çWÞþÄ å`o¥]¯LG¾ÐÔÙÚã'/€˜I¾pàXTT7ÓÃA\ߣ|dôR•9Zö½/#Äß‘/uz*¹¬GDgEл·…ýé9Õ=b0dèaŽÞÀ×ÃÒ²«:…žÉzˆ¬‡›ïêÔ¶æ68òOÌ›ê;~Ɇf ÍìÝ󀡗Äõ½&ÆÞ»q¶eoaÎ-“õ*ÙÛZÂÄ‘pš=Ÿ”T,Öª˜ ìœ¤<µ*R[Çu_F{â¢q…ÉãI%0"Èìl,”‘9ÆJV–Lé u„ÂÒ¸U¥xƒVí>¤S«" oÜvHêûÕ“¢ÜšºV8y¾fOöÕªí]» ÌAn»vî„ÐÀ ø÷}÷)ó^^»–ç=ñØcÊ<Üyx|uuµr[5©o2ìIž2™é’9ÔÇ,Ý83®ð”ŒJhj–êE+öÆ®¬n‚=‡s`¨DG 晸z¦!×sv°7[È+¬ƒ½G.‹v]éôR™ºëJ%;+¯|<í!ÄÏ Ò/WkÐc,¾¿yñbˆß²8¹¹¹œÈã·|Æ÷}·sÄÞ}7ÿû#"#øñKo» Ž;+ã…ElÛßߟƒç›•+Œ,{íÜ8!‡3.eÏPË;Íþıü#†vãàZ󨲸ñ]\||bɱ‹§M5';¿–'„‹ã N‚.ŽÖü-Tñ§{”T4rE’t±^¼ëJ—N#_µói0}¢¤æÙëîÆ1¯µqž}þyFà·ÃÆ  %9œœàtRŒŠ‚'™µî§ s<±}ÇnáÇÒÆ ï(Ë™4yß×WÜ8æ¶>‘ÔT>{FècØWLì÷tÕƒÉÕ®at¿ Œ§¿À¬ú6©¬Gîj§¡-`\2¹¬ªÙd,Ô];e¦¥þQÔ¿´²JÊù÷PÏeTšüAkIÇÉÙV(¬P!I -QD2#±C(óäìf¡ãû1ÒäÉÊã î„0£h¼ï™³gqKñáæøß×ß|¸ï~¦Rø~<–=Ê ­ú•qq\¶ëÖ¾d|gØÆYzËH8¡ ‹jáúY!rc,¥þ>™¯Ù3B?£ ý@±¼¾‡¤¾vü³{Ee ½vAôg–é,ÿnÎïFŽÉ™•0*Ì Î¦›žìÑ… 'òƒÉ éûîãÅ]`L Ìš=›[¨˜÷㾽܂E‹4öîJKÉ󿂿™Ñ›6orKÏÎê”2Cyá(@8NP´Fuã à8{_o°fÜxúL,˜ƿӱýëóp÷Qs¹ Šê´wã(,ûNÕ` @t°¹® ù ¶ƒKy5— ã¶ÒO’:ò‹ëaö•~|-æÓGæ {ÉÉz&#$õ×Þ|ƒoãd#ó-¾™+ThÑ£oZðO#p¿q†ë2³[^W[ ,}S£t¿UUPXË’;â·?r`˜¿|Ù•²òQeYõ†Ô»ëÜ:Yöžvp‘Y‘R©ŒXtõº/õô²î.(©wkÈ7ƒœûs—ÂÍÜ ‡èr@wL#öçÎ㮺à¿UÉjþÜ¹Ê IT†®Kµ]¬O$TÝRÂÄ©)Üjª.49qzµÔ}öNŽƒÀÑÑšÿ>u¦àLÇý{I‡Æ¦6íÜ8 Nû“ÈR K•HüмxõI[C(P'ûAН1É JÀ ?G~þ¢Ó®I17Áu‹0{¾”~¶ð ‰‚¥½Þååuòwqá|FöC<ì!¯¸Á,´îr"H´ÑÂÏc¡°èy»2’GÂÜ6èïÇsŒã¯é‚Ðâ™ÁÉÒ'{œGË C«ç#0'ZU‰e÷«I¡ Še…eèªx¥Š\f¹£š¯¶×ƒ§ïùì}¼!,Ô½Ûcò Òµ'{OÐf3b¯b$¿›¥G‘è‘üqWðëJ¨Îƒ8©Úê7mÎ2–îdä™_¼÷8\8ó'Ì\ _ÇæÛO×€­#¸¸{CêÙ?¡(?¢&Ì‚n ~ÿå –¶ñãp‹ò2 ©±llÀÛ/D¹}Ãmÿ£'΂íï?9IÊýøñÀ3[¡ª¢íÞa£®„¦†Z8ñûn¾ïßl^ûKFê—çb™WÍ^ içþâÇàu¶½ÿ8Œ¾bŒfuû&­._ð’qw˜Äl$'Md¢‰À‘ÐÇll?sG²×ŸÜ%†®*Å`4 *4a>â3Fü8*.ÆÈ£Û 'bÑÇÑž#(LŒ—GÙ ù«µ:q Û¨dÐo/Œ&0²#s>ܼYމ±Vñû&•]AÆpãðs¥2½» º>e§%AAîNžHÚw<øºr¾ ±¡RY>’,’.¢¢¼ˆ¯O#œÄ;uö28z`üq`;\1ma‡íŠòBÅÂeòÅ>CÙuþÀý·CÒßÀË/ªX¹˜ç9$XIê•e…àä⩼Á…ËŸãçò‡=h4|ýÑjðbÇßzÿkó¼|4„ÊB}?F-ah%Ž ÐzÇ¿ºÌ¨–IhO ëÄz#ÑcT”..4cGã ¿ÜÉÉššZ!;§ .¦•½>y̪DŽ?Ö—µSäÊ·m¬-aŲ(¾_Èë dŸ Nìø¢È_ªåÆy{ûùØŸ5ÚÞüâk 1¥¬KWŽ®.ˆN¾?ZÀšðíæÕ›uÿëUðŽÒ÷Ö¦Í¼Ï ‚ãçK ·‡•ÇÝ)ЬPÑ•€î$u‚†úHºÉŠ?$1´PŸµ*ÐÕ€e¨µ:q ÛHŒüAÊÍã2¾úPý­Z.ú¼Ñ-‚“ÂHZh1ÇL½Zé–è ;ÍîQnØ÷ý½úí覷JôØÙžD"aÕÒ‘æ?øä¤N¼„˜quŒÌøé)mOOxðÞñšê#J]Ü87 ü|5ðѶoÎCssÏ“´ênÁWÿ‚zeÑ“Àò‚|²öRoH¦+\.ªo;þ×Ðl( X£µsï«ÊßmmR½pW¦‚ø—ÊÄ· .±ç·½øž‘”‘X‘´‘v1bGâE¬Â ?h XǬQ´L‘è5‘†X7Z¬]Z¢šHIpC`ÝÑ5‚ C ÑËGx2ío?ƒÐæ½q…ÛgÏQ`ccÅ 5ëRìÞ›Êó}}ùßü‚Z£Ô燽rwÑ_G(-kEì=’½ñ,Ūg2‚Ql¡º†8!ÉÏ™â3 nhVEcC-”È;¢‡ow±p­ÙXÇò3yž¾Á`­ÈKÀxîÑ}³2ƒáªëïíñaÿƒ[Z˜Åõð ï$èMôÊŽ®<‚CYçÆ¶ihÖOŒ½ª•‡$à¯ú£[B°ðq!L"¢uçá~œ D%€îÜFKÁ˜{AA ›Bx H«¡»"*E˜`ˆ ‰}úÔ©ÊN.jãÆ1fØŸà–jwñÈÃ"ŸÇÔ'e»)Ükú–¡¶Ê¢TååN'Gk˜0Ö·ÃþÝù©F©ÏCÿßå¾3çŠàè_âÖ(R÷Ùã2 k´ ³ìʒѸN#ÓZ>̺Ïíá0}ZÀÕòÃgÏðßHèwþçNø_½·j*‹yþ‚ë`Hàhy'(Ì„¬ r‹3hĤÄŒ5ÿ§ŒÎÉË>'ï¨L&X&'W/žäÛEÜïäê %Œè Øñ¨|„‰ê¬‹Ç ¬P®ˆÂÇ\ÃëY¤åÈ¥G’ï|ôøHHË©ÖÛw 4Yyê‘5ª!„Â9B4Íž}ûº,»;ë±+ëR5ÝD]•ç£u¾qí&»ž½0î*WÀQ‰É•a w¥á„+*UMá—ŠMA â›´x.FØ rÆ–‰±ö‚« !¬¥£þ~CoØÞØëÙÿS*8;YCÔ(/ðlÏóJÊê!é\1’éõ-‰¬Ï{›OjÌt¹³C!3«Ré×ׯs„~KØK²Õö‰V½™5?‘\G{Â¥.*/ÓùáèÚª;$pß÷Å[÷r¢FÆ„Œ÷ÔÐPñë—‚µÜ'¹á>hnªƒØ'·Ã‰„pîø> b¬T’´0q›rúW8udŒ›~OêÛBÅ0ò%#åúæUc?íÆGàÒÅãðÕ;÷±íl{¥öî©nI¾ë5‚\™E3Œ w'äÀ@úë1i ùzöú‹ÆÑÆÂ—/s 'u|·@ËÄIRTš¸\ÔNÞê ‘ÂGTDZWóÑFü Á«Çó#pÔƒaž¨8ð7Îqèk4 —h-Ï_~ÇhFö6˜TÇOä+Öîº}4#û&ØúåY£Ôgâø!ó£GË5JJëE•¥nÙãbh1ŒØƒzwºŸ{6½‚Y’ƒ!Øß‰<¤·.1ujS ÷œ·üe8øµÜÇ>ëÖ§`ïÖg•\U.·òQXZÛ+—eAey·øaQ3ÀŠí—*Gò×åÛ£x4l·µoã¾êŠ"åH!/ë,/oβµ\Ñh\NB‹¼ôäÙWÝ3s²üïï| ˆKãXqú„¦y‰öýäÅŒT„cp~Ep© /n©†W Ë#ë¢»ë“ÆŒÆñâĉ~×!/¿=ê)—ýÎÈ®„›oC|:ì3vŸøé— ­®ß)Ξ~LoׯéíDÊw¿fÊÃaS~24vå'é‚c0 bDê0ܽ9Ñ^»dµœt»±<¼$[WÏXòð&8~` |ú’ü5„aáášÅOrÒŸ³ì%ø›í;ôízptñ„ШkÀ{ØHpó â qÅ ÏF §ûšÿu÷âûí=ù~~-V&*’W̯¡‘pæ÷o`ÿ6ùR³¬ÌÑ3ÀÅ+P«‘LdÏR_¢¿ÒåælIdÕ÷Ú‚“ÉŒçÆAÿzW;Þ(F÷ŒêËM‹¾}a™ãg˜•ŽV½ð–-ž‹ç#¹ãq³s%HîHö8ŠÐûÒÇzx1M›ÑSn~5OHêh9gdWÈ â@7ðô°Wî7F}ŽÈÓ‹%†èÜë>MÔ9ÄIÀ„Hpí{ÓuvAô´CŸ°¶¬®¬Õ%µÎQ«“5|ûô}¢Ÿ­|Õœè ¿Ÿ.d©Hìá ÏÜÝÉíüöëÄK!®œà— ZöZ"aÕƒ5ÕǨã=M/Uá`ˆ%¾·òurbµóÙ÷¾bÇÏ—‚—»Ì»z(üx$‡XK·UOUts´­%âr^5K5<íÿ5 ¦Lôƒ+'úéFöŒÔ—ƒ|M\âØUáÂÁ´FáÖÑ¢së·¡wΘñ>ðà-‘ðîŽóŠ€õ¡ÌĬë:ÔîY›v]„J=ÄTä+…áÆ1´QßûoÐjWÀ­Ì¢NË,‡ý‡2•kÆ»0¢Ÿsm0 õw†7Þ=nðúT2²×t?Žçò¤ T-ûx!âFaÍ käl5”/J>QYù5ðÜ}caó® ]/…ÜX=*8\WÂþ9WúCôðÁðêgIÄ*† * åz/C=ðŠ–§¿±ñ8_Vø‘û®èŸ–Q?:ÑûFÓâ|ggk¸?v,ÑË…*®™ ´ü7Ç'jïÆQ¹TÝ6fèeWÈbC˜W·œ–Dðü\ê·¬SÿÐÒuegckî ' àÃoSˆQ h•3ô²¿ Qfä%ޝšäÏ¢¨¤š˜u?ŒYô^ž|Ò]+ƪÆü õ¸~V0ÿ»õ«³ðÄÊÉàïç$ª.Vº¹±Ý8êxÿ›ˆrµŒ‡÷¿M†¼âú~CÀ=)­êÐÍwÍ å¡~om;Ç—¨ ’§däÆÑƒlìOÐŽŠð„/w&w"R/Fô‹æ‡MŸ6Z}rr«aï ˆ½c4W:ßíIå+q66µò}Z[öúì܆Frf%K‰pó5à=ØÞÝ‘ ìÆû2“G{Â’™AðÉî‹<Ú‰`–=é=ŒŽz4Bµ;ÿƒ-—2Ɔðwc ])R#Ôgt¤'D±´)Ñ‘P\"_3lÞlùz\¸-¶!{cZ1ß*"t–Ì ow;ظãÔ7¶õ)6Éß5/ ¾=”k?N$ö0"¤@´æ`Ùkû`ÏœÈÉÖÖ¶#M&/–Ƕ¡>9—«¡ªª‰û{W«[êz©·†1AÏþö |ѱ[g…@D°+løòä×ø‡äÎy¡îÎ'µWoü‡XÃ$l/±ê%iƒžäÓûU/µ;¸ö%+«!5£&ŽÂ'E[âÁëb”Ïž_Ò˜5/ç5/O{˜]|ºM\T¼,{ÓuܯÊ# ñw‚UKGAbj9ìdÖì@zÔßËî¿y¡üü§4øþÙD&µJŬzIèIöþ´ÚaÝ[*£Û&j¤'Þ«§ åIu¿1êóÛ_—aÙ’QÊ‘F#S8{~I]Ža,{3èé¹5ðü&¹Ïíº)þ0{²ì=z™§þw>éêáj [÷¤Áúx £4#ÞÈ\œ"ÓC;芊ª&8òçežôÙ/´ÁüëB9ÑŸ9'_}wÌ(/ž÷Æûº-— Ÿ†13å¿ryâÄÏH‰ÿrq|¾7Ê«šúì€~øyS‡Beu3üpäwÕ˜ÿœ/ #=‰Àþ•q¹çh‰sél4êLëR>å½çss•iYŸÏ¿>ÇC.ü¸? ¼=D—Óç'hµÅ‘S…9’õC’[g`_×Çü[çz6ºh„¨H/nÑsQæ¯}ãZö}dÐZVÝÄÈ)TWÿ1&2Ëtt¨;ÿîê±³ÅLTu²7*ÌÆ„»Cø0gNìg3Ê9ü™TÄ“¹ß}˜é wÌ °õ7á`ß"¹õNY¾ÇdÒÕÛòÚ“«yñ’Øú¼ðÄTþ}ôÒÊøúöHö äÀ‘?ćOÈÓw;ØÙ´ žÔ4Ä‘[]¡l¨íçåÀ}äeLÓ–±a:~/'€ëYcä×ua™[ÁPoùËqÕÎÖŠýu{ö7 óóØyørXzn5\Ȫä©O“ݹžPfH^(¯@Nû™zäda¯å6:Ô nš8 ä¦|¾?œÝáeISXÒæbÙïø.¢GyÈðÁ=Ú›'DàP(dFé…4q£û~c( • ×èÑÉ™îÁMe£¢5›OuÊ÷c ÏÞÆªOß[ÚeùüΰøŒ†‡8¬Ÿ¹yê›ZõNê]{ÌŒìE—ÂúAŠZ_pu¶áä?ýªaöײ§ÐBÈ-¢w tSžÕ$»MúB}ÐVÁ$VA¨Ð×'h{‹C ˆíb}¬¨„鯑=@ †½l@ׇȞ@ ²Øõ1ÙøÔU/²?/R÷"æÃ®»>dÙ„s{ÿGJn@ ÞȞ@ tbW ½ì€€ÀØŸøŒKÙ—t-tÛÞ ,c õ.`$,›2ƒ¸¾²g$ÿ"#|––+WäÚÀò·Š-TJoU3ƒ¹Ñ’ÔÔdDÏþıËR¶ÂÊßÊòäÛGº+´Èž@ ˜(ξ3¢Ñº•ÐIFôÓ¿BÔMÙ‚YÁJ…Ðǰ?®,m`¿ãTŽÁ¼x–Ã_ÔgÌɲ'dÙ›©e/9#õ Ü4nÚJ>{`n Ÿ}»e˜‘<Î`Dz߱ê*öé•ì¯éÁA¿È/®‡Ä®ŒÚÁt²§v0¼\ -{ÌÑ]#镯’Š[ÏÖ½7ÐðýÛÔ¦•=µƒáåj®ò5‡ ÚÝ̲?Õ,{Ñk݈µì©sìÉÐÊ•Fí`:ÙS;^®íò5³[2ƒ8û›z[¨x²§>l çBK²'™™JöÔ†—+‘}da–jYÑ,-ÔÆgß&ò.¤Ô» 6QeWÈC0Åià6™¨$“šFÈÿ¾ï> ‚¥·Ý¦ÌÛ¸aÏ{â±Çø6þÆ„Ç ÈÍÍUæãñªç ÛæòdˆmS´C¿–¿–²7F;2ðÙ–-|{þܹP]]ÝgØ^YvE®¦JæPu7†YÆ+&d…0Ùß8±a—Ú¹qL£j7mÞ €î»ÆFE³³3äåæÁûöBddd‡c;Æ èÙçŸç‡“³ÔTטùs!ÓÒ##ù›HöÆl$öéS§òߪ²NNNæŠW+ÊxûŽ|?Ê<%9>ÜüÌš=[Ùn±w¯€E‹³ß÷ñ¶0sö,Þ¾æ$Wrã¨Yö ?}~¨DaÙ£%¿[Aô[µ)‡[b’)‡UØqWÆ=Ê;8vVì¤êDƒØ³o|·sŒ‹ÃÏYq÷Ý}à Ù¦j‡~+-eoÌv@¢¼ýýý•²FezãÜyü÷¤É“xÂc„<$}<ެPñâ1¨|ãÙA zÌC€ùæ W²ì»°ìkÙïB.Ÿ$ŒÞšÕ6ôR´eo"¶G -ÁšÄ¿níKÜÊ´zð\“ù7eæë³ïÏò×VöÆl”#ZñHäèÆyíÍ7àf&'a´´2.Ž‘ödNêHäl‹í;¾b–ÿí3õj¥Õ/´0BÀ6Ee²kçN8”dVr5™“ÜÌê#Q9Æ×'¨=.„¶†mÿ Bö±b]9«ßúKÔǯì3§øA¿È¼\ ïL}<µƒédoN퀊 †‘¶#xõQ–àÎI8ú{%ŠŠ!%¹u?Ù\äš°þ?S:-ï²|Õ>Q¼d$l}{®¦ú•í¹e¯°Øƒ©? íQ8—D¿@Aüâ}ö"'š(øÀ€Ö¥“}Ô¦“½9µƒ&7š@èèžñc$¯>Zò×gnr%Ã^…ì0BGýÁº×¦œ , ?#uBs¥sž 5&нÂ,VMÖª9Ⱦ/´ƒ¿YZœ0B_¯)BïÔCÚÌÉbÐçÄ Þˆ‘(w!á°ßœ`a˜2#LÐ ýû½:)„Sš]°‰äJБì/UieÙ‹Iºh¶\…ðø±ã< '0Ô '—ßíÜÉ'“ð/ Jˆ×Ƈ@ØÆ =LÂCóòÚµÜ/©Ûd†ùx^ Ãý˜¿KQ¾@2¶ºèj¯%¦p]¼†ðЪƗë¤pE¶®í :ìî ¯C²Bà=©Ê“°OPÜ‚AªÇÛãñB{©_K؇åa¿Ž&k1/…‡ÞëØ±ªåáùB› ç÷t/†}oÚ}ä(;ì38ÁMêÊe*„¯ªö«žú>ž‡åâqBŸä ú¾ž+´™ÐÏc¾ªŒU¯+lªïZèS®šÏ7]2‡úXIJo3ÜÇK0ZCžcÇÙ¥ w ý¢à~ŒøÀ}B쯧NZè“Ä}XVÂZ:Ä:jü–Ïx‡Å°?T,µ€û1ŠáÉÇçÇ ŠF`H¡PœøÂ(!Bþ¦ûË.2™ø6Цðž»»××ß|SI˜B̶pO(aO=<ÏSÜC™`¸¥\yï‚gž®ÓäŸp-$sTüèºÃcð7þê)L ÀöT=C97nx‡ª÷¦é^ !ûÞ<(S$i$zŒƒGY:pPù| IcÝQ Nêýª«¾ÿWÇ!"2‚÷}ù¹5Ê}ò~ÿ¨Rf(Cu •j<»¢êü¼J®äÆQóÙkZÚX1ÚZ6†ºYMn??xMñpª[>Hø0ç!©êì´êob‡Å8œ#š<¯'æZXG CÅ>òy‡<ãùìE‹´êC!y=E`|Èd"·ànï¯N©$´‘è-¾Ycl½j?Àøîöz¼ÃI´¦˜o¬3Z¯X>ú¡QÑ"ꢰõî³×á<ÁhŸ&Ô(æ-tÊR(+ì«BPïçމm.W¼“ó&)½2`ôâ³77×”‘¯'Q!ûÃݨ͗ª\{DTˆÓÜi0oz€Áý¸ª…@y]ƒrè/HÍ®„w¾ëlŒvÐÖU‡1ݨą‘œ:Éw§,ú’ì͹ºƒ@æªâöÍ@® KHò2•ì© /Wò⨑½&2Wøðo2T£%c¸á.}ƒ¶oÈžÚÁðr5Wùšò Z|Ç9´\ÎX#Ù‹Ž³'Ì Ò*Ξ`*ÙS;^®íç›Ûý˜Î²_¡BüøåªÐä&CÝ2†jÓ‘¨L'{jÃËÕ\•©ÉÜ8yÃþÄ‚üíÙ ŒäÝ ­¿>ÎÁ´ v v ƒÜ8J$@ûËTŒüUÔîKUd¢‚9A•ìÑ¢gi¡â7"Zaékµ¸ M4sùìAùÁñD…ëf…úAŠ—­¢Å.ŒÖF\O Ì äÆ‘?2^ÙÍq•ŠcÄ‘=¹q‚¹‘ý¯'{f±Ÿa–ûB–pýØlh÷ÝÇ€<s!#¶Ð6rã³³ìv}$†(tÖC&ûH@ $|þ @ @ @ s„A&hwÈ¢ Z`*$,œD´j°2D¡Í­m$Y@èïdßÔ,%ÉBÿ·ì‰ì ¡ß“} ¹q,{@ ô²o!²ïËé3&Ææ68Ÿ^6Ö–0*ÔïûâÇT(.o4Z]l¬-àÞÅ`ËêpŽÕ¥º¶<Ým!l˜ |³?ƒsËœe]q¾(t˜3x¹ÛÁã“øþÿ‹â…mÈ^o–=¹qú*†ù:r¢/*«‡-ß_Tæø3þsWÜyc8¼úÉi~ÜÒyaÐØÔ Iiåàêh ᮚ] »eÁÌÉ~0a”ü~²ŠÊà†iÃ#}ßþ"©Ó¹lÛ{°½ò\UØÙZr¢G ÂÉ)¨åé «OUm3Œ“+!Apache Rampart/C - Documentation

Apache Rampart/C Documentation

Getting Started

Configurations


rampartc-src-1.3.0/docs/docs/configurations.html0000644000076500007650000005734211202454500021567 0ustar shankarshankarApache Rampart/C - Rampart configurations

Rampart configurations

Engaging Rampart/C

Rampart/C is deployed in Axis2/C engine as an axis2 module. Just as any other module you have to "engage" the Rampart/C with Axis2/C. All you have to do is to add following line to your descriptor file.

 <module ref="rampart"/>

This allows Rampart/C to intercept messages exchanged via the engine and add/verify security claims. You may find several examples comes with Rampart/C under samples/secpolicy/. There are several identified scenarios that demonstrates Rampart/C features. This includes

  1. Inclusion of Timestamps and verification
  2. Inclusion of Username Tokens and authentication
  3. SOAP message encryption/decryption
  4. SOAP message signature/verification
  5. Detecting replays of messages

In addition to that, if you want to provide Secure Token Service (STS) functionality to a service, add the following entry to your descriptor file.

 <module ref="rahas"/>


Security policy based configurations

Rampart/C configurations are based on WS Security Policy Language. Thus, we need to specify these policies in the descriptor file. For the client side we place them in a separate policy file, whilst in the server side we place them within either the services.xml or the axis2.xml.

Client configurations

For client side configurations, you need to create a client repository. This is the place where you keep axis2.xml, libraries and modules. When you create your service client, to invoke web services, you can give the client repository as follows.

svc_client = axis2_svc_client_create(env, "/my/path/to/client/repository");

In the axis2.xml, you need to engage Rampart/C as follows.

 
 <module ref="rampart"/>

Then you may place your client's policy file in the client repository. Following is an example of a policy file.

<wsp:Policy xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
    <wsp:ExactlyOne>
        <wsp:All>
            <sp:AsymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
                <wsp:Policy>
                    <sp:InitiatorToken>
                        <wsp:Policy>
                            <sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
                                <wsp:Policy>
                                    <sp:WssX509V3Token10/>
                                </wsp:Policy>
                            </sp:X509Token>
                        </wsp:Policy>
                    </sp:InitiatorToken>
                    <sp:RecipientToken>
                        <wsp:Policy>
                            <sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
                                <wsp:Policy>
                                    <sp:WssX509V3Token10/>
                                </wsp:Policy>
                            </sp:X509Token>
                        </wsp:Policy>
                    </sp:RecipientToken>
                    <sp:AlgorithmSuite>
                        <wsp:Policy>
                            <sp:Basic256Rsa15/>
                        </wsp:Policy>
                    </sp:AlgorithmSuite>
                    <sp:Layout>
                        <wsp:Policy>
                            <sp:Strict/>
                        </wsp:Policy>
                    </sp:Layout>
                </wsp:Policy>
            </sp:AsymmetricBinding>
            <sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
                <wsp:Policy>
                    <sp:MustSupportRefKeyIdentifier/>
                    <sp:MustSupportRefEmbeddedToken/>
                    <sp:MustSupportRefIssuerSerial/>
                </wsp:Policy>
            </sp:Wss10>
            <sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
                <sp:Body/>
            </sp:SignedParts>
            <rampc:RampartConfig xmlns:rampc="http://ws.apache.org/rampart/c/policy">
                <rampc:User>Bob</rampc:User>
                <rampc:EncryptionUser>b</rampc:EncryptionUser>
                <rampc:PasswordType>Digest</rampc:PasswordType>
                <rampc:PasswordCallbackClass>AXIS2C_HOME/samples/lib/rampartc/libpwcb.so</rampc:PasswordCallbackClass>
                <rampc:ReceiverCertificate>AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/bob_cert.cert</rampc:ReceiverCertificate>
                <rampc:Certificate>AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/alice_cert.cert</rampc:Certificate>
                <rampc:PrivateKey>AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/alice_key.pem</rampc:PrivateKey>
            </rampc:RampartConfig>
        </wsp:All>
    </wsp:ExactlyOne>
</wsp:Policy>


Server configurations

In order to engage Rampart/C in the server side you need to add following line to your descriptor file. This can be either services.xml (service level) or axis2.xml (global level).

 
<module ref="rampart"/>

Then we place our policies within the descriptor file as follows.

<service name="sec_echo">
    <parameter name="ServiceClass" locked="xsd:false">sec_echo</parameter>

   <description>
        This is a testing service , to test the system is working or not
   </description>
   <module ref="rampart"/>
   <operation name="echoString">
            <parameter name="wsamapping">http://example.com/ws/2004/09/policy/Test/EchoRequest</parameter>
   </operation>

    <wsp:Policy xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
		<!--Your policies are here-->
	</wsp:Policy>
</service>


Explaining policies

Here we will explain how to explore the various security features available in Rampart/C. We thoroughly recommend you to go through the samples available in Rampart/C in order see how these configurations are combined together.

Using Timestamps

To add a Timestamp to the SOAP message, user has to specify it in the policy by adding assertion

<sp:IncludeTimestamp/>

Beyond that user has to specify the duration of the validity of the message. This can be done by adding following Rampart/C specific assertion.

<rampc:TimeToLive>360</rampc:TimeToLive>

Here the time duration is specified using seconds. This would add a timestamp as follows to the security header. Note that the time difference is 360 seconds. If the message is not arrived within these limits, an error will be thrown back.

<wsu:Timestamp xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
            <wsu:Created>2007-06-18T05:10:01.448Z</wsu:Created>
            <wsu:Expires>2007-06-18T05:16:01.448Z</wsu:Expires>
 </wsu:Timestamp>


Using Username tokens

To add a username token to the SOAP message, user has to specify three things.

  1. The user
  2. The password type
  3. The password callback module

This can be done using following assertions in the policy file.

 <rampc:RampartConfig xmlns:rampc="http://ws.apache.org/rampart/c/policy">
                <rampc:User>Alice</rampc:User>
                <rampc:PasswordType>Digest</rampc:PasswordType>
                <rampc:PasswordCallbackClass>AXIS2C_HOME/samples/lib/rampartc/libpwcb.so</rampc:PasswordCallbackClass>
</rampc:RampartConfig>


Also it's necessary to specify inclusion of username token in the policy as follows.

<sp:UsernameToken sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Always"/>

Password callback modules: User passwords can be stored in different ways for different users. Passwords can be in databases, flat files... etc. Considering this Rampart/C provides an interface for users to write their own password callback modules. User has to assign the password callback function as follows.

rampart_callback_t* rcb = NULL;
rcb = AXIS2_MALLOC(env->allocator,  sizeof(rampart_callback_t));
rcb->ops = AXIS2_MALLOC(env->allocator, sizeof(rampart_callback_ops_t));
rcb->ops->callback_password = get_sample_password;/*Your password callback function*/


The signature of the password callback function is

axis2_char_t* AXIS2_CALL
get_sample_password(rampart_callback_t *rcb,
        const axutil_env_t *env,
        const axis2_char_t *username,
        void param) 

Please see the password callback sample available under samples/callback/pwcb.c for more details.

SOAP message Encryption

Specifying encryption options are a bit complex procedure. Thus here we wouldn't try to explain all WS Security Policy assertions. Following is a sample policy file that is used to encrypt SOAP messages.

<wsp:Policy xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
    <wsp:ExactlyOne>
        <wsp:All>
            <sp:AsymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
                <wsp:Policy>
                    <sp:InitiatorToken>
                        <wsp:Policy>
                            <sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
                                <wsp:Policy>
                                    <sp:WssX509V3Token10/>
                                </wsp:Policy>
                            </sp:X509Token>
                        </wsp:Policy>
                    </sp:InitiatorToken>
                    <sp:RecipientToken>
                        <wsp:Policy>
                            <sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
                                <wsp:Policy>
                                    <sp:WssX509V3Token10/>
                                </wsp:Policy>
                            </sp:X509Token>
                        </wsp:Policy>
                    </sp:RecipientToken>
                    <sp:AlgorithmSuite>
                        <wsp:Policy>
                            <sp:Basic256Rsa15/>
                        </wsp:Policy>
                    </sp:AlgorithmSuite>
                    <sp:Layout>
                        <wsp:Policy>
                            <sp:Strict/>
                        </wsp:Policy>
                    </sp:Layout>
                </wsp:Policy>
            </sp:AsymmetricBinding>
            <sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
                <wsp:Policy>
                          <sp:MustSupportRefEmbeddedToken/>
                </wsp:Policy>
            </sp:Wss10>
            <sp:EncryptedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
                <sp:Body/>
            </sp:EncryptedParts>
            <rampc:RampartConfig xmlns:rampc="http://ws.apache.org/rampart/c/policy">
                <rampc:User>Bob</rampc:User>
                <rampc:EncryptionUser>b</rampc:EncryptionUser>
                <rampc:PasswordCallbackClass>AXIS2C_HOME/samples/lib/rampartc/libpwcb.so</rampc:PasswordCallbackClass>
                <rampc:ReceiverCertificate>AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/bob_cert.cert</rampc:ReceiverCertificate>
                <rampc:Certificate>AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/alice_cert.cert</rampc:Certificate>
                <rampc:PrivateKey>AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/alice_key.pem</rampc:PrivateKey>
            </rampc:RampartConfig>
        </wsp:All>
    </wsp:ExactlyOne>
</wsp:Policy>


In the above sample file we have specified the algorithm suite to be used for encryption. Here the algorithm suite is Basic256Rsa15.

                    <sp:AlgorithmSuite>
                        <wsp:Policy>
                            <sp:Basic256Rsa15/>
                        </wsp:Policy>
                    </sp:AlgorithmSuite>

The parts to be encrypted are specified using following assertion. Here we have specified to encrypt the whole body.

            <sp:EncryptedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
                <sp:Body/>
            </sp:EncryptedParts>

The receiver's certificate is specified as follows. Here you have to specify the full path to the certificate. The public key of this certificate is used to encrypt the content.

<rampc:ReceiverCertificate>AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/bob_cert.cert</rampc:ReceiverCertificate>

To decrypt an incoming message you have to specify your own private as follows. Here you have to specify the full path to the key.

<rampc:PrivateKey>AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/alice_key.pem</rampc:PrivateKey>


SOAP message Signature

Similar to the Encryption, to apply the signature we have to specify the signing parts, certificates and keys. Following is a sample policy file that is being used to sign a SOAP message.

<wsp:Policy xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
    <wsp:ExactlyOne>
        <wsp:All>
            <sp:AsymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
                <wsp:Policy>
                    <sp:InitiatorToken>
                        <wsp:Policy>
                            <sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
                                <wsp:Policy>
                                    <sp:WssX509V3Token10/>
                                </wsp:Policy>
                            </sp:X509Token>
                        </wsp:Policy>
                    </sp:InitiatorToken>
                    <sp:RecipientToken>
                        <wsp:Policy>
                            <sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
                                <wsp:Policy>
                                    <sp:WssX509V3Token10/>
                                </wsp:Policy>
                            </sp:X509Token>
                        </wsp:Policy>
                    </sp:RecipientToken>
                    <sp:AlgorithmSuite>
                        <wsp:Policy>
                            <sp:Basic256Rsa15/>
                        </wsp:Policy>
                    </sp:AlgorithmSuite>
                    <sp:Layout>
                        <wsp:Policy>
                            <sp:Strict/>
                        </wsp:Policy>
                    </sp:Layout>
                </wsp:Policy>
            </sp:AsymmetricBinding>
            <sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
                <wsp:Policy>
                    <sp:MustSupportRefKeyIdentifier/>
                    <sp:MustSupportRefEmbeddedToken/>
                    <sp:MustSupportRefIssuerSerial/>
                </wsp:Policy>
            </sp:Wss10>
            <sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
                <sp:Body/>
            </sp:SignedParts>
            <rampc:RampartConfig xmlns:rampc="http://ws.apache.org/rampart/c/policy">
                <rampc:User>Bob</rampc:User>
                <rampc:EncryptionUser>b</rampc:EncryptionUser>
                <rampc:PasswordType>Digest</rampc:PasswordType>
                <rampc:PasswordCallbackClass>AXIS2C_HOME/samples/lib/rampartc/libpwcb.so</rampc:PasswordCallbackClass>
                <rampc:ReceiverCertificate>AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/bob_cert.cert</rampc:ReceiverCertificate>
                <rampc:Certificate>AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/alice_cert.cert</rampc:Certificate>
                <rampc:PrivateKey>AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/alice_key.pem</rampc:PrivateKey>
            </rampc:RampartConfig>
        </wsp:All>
    </wsp:ExactlyOne>
</wsp:Policy>

To specify which parts of the message to be signed use following assertion. Here we have asked to sign the whole body.

      <sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
                <sp:Body/>
      </sp:SignedParts>

Optionally if you need to sign a header you may use.

<sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">	
	<sp:Header Namespace="http://www.w3.org/2005/08/addressing"/>
</sp:SignedParts>

The algorithm suite to be used for signature is specified as follows. Same as encryption.

                    <sp:AlgorithmSuite>
                        <wsp:Policy>
                            <sp:Basic192Rsa15/>
                        </wsp:Policy>
                    </sp:AlgorithmSuite>


Replay detection

To detect replay attacks, Rampart/C has it's own Replay Detection module. This module detects if the message is a replay of a previous. By default the RD(Replay Detection) module is turned OFF. All you have to do turn it ON is to add

<rampc:ReplayDetection>N</rampc:ReplayDetection>

policy assertion to your descriptor file. Here N is the number of records that must be kept in memory. Greater the value of N is, greater the chance of detecting a replays. Rampart/C keeps records of messages in a list and process them on arrival of a new message. A record is the concatenation of message id(wsa:msg-id) and the value of the timestamp.

RECORD-ID = MSG-ID + TIMESTAMP

The message ID is considered to be unique to a particular message. But for this, user needs to have the addressing module engaged(which comes with axis2/c). This is NOT a MUST but is the RECOMONDED approach. One can just survive with only the timestamp. But shouldn't forget the chance of generating two message at the same time, which definitely make them suspicious as a replay.


rampartc-src-1.3.0/docs/archived_news.html0000644000076500007650000002642011202454500020417 0ustar shankarshankarApache Rampart/C - Archived News

Apache Ramaprt/C Archived News

This page contains information on previous releases running up to the latest.

13th May 2008 - Apache Rampart/C Version 1.2.0 Released

Download 1.2

Key Features

  1. Ability to send and verify UsernameTokens with
    • Username and PlainText password
    • Username and Digested password
  2. Ability to send Timestamp tokens
  3. SOAP message encryption
    • With derived key support for improved security
    • Symmetric and Asymmetric modes of operations
    • Support for AES and Tripple DES encryption
    • Signature encryption
    • Keys encryption
  4. SOAP message signature
    • XML signature with RSA-SHA1
    • Message authentication with HMAC-SHA1
    • Signature confirmation support
    • SOAP Header signing
  5. WS-Security Policy (spec 1.1) based configurations
    • Support for both Symmetric as well as Asymmetric policy bindings
    • Support for different modes of key identifiers
    • Support for different algorithm suites

      [Basic128, Basic 192, Basic256, TrippleDES, Basic128Rsa15, Basic192Rsa15,Basic256Rsa15, TripleDesRsa15]
  6. Replay detection support
    • Easy to use built-in replay detection module
    • Ability to deploy a customized replay detection module
  7. Different protection orders
    • Encrypt before signing
    • Sign before encrypting
  8. Extensible modules
    • Password callback module
    • Authentication module
    • Credentials module
  9. Keys management
    • Support for X509 token profile
    • Support for Key identifiers, Thumb prints, Issuer/Serial pairs, Embedded and Direct references
  10. WS-Secure Conversation Language support (Experimental)
    • Establishing Security Context and thereby maintaining a session
    • Per message key derivation
    • Support for stored securtiy context token
  11. WS-Trust Language support (Experimental)
    • Security Token Services (STS)
    • STS Client
    • Server and Client entrophy support
  12. Other
    • Easy to use deployment scripts
    • A comprehensive set of samples

Major Changes Since Last Release

  1. WS-Secure Conversation Language support (Experimental)
  2. WS-Trust Language support (Experimental)
  3. SAML Support
  4. Memory leak fixes
  5. Many bug fixes

16th Jan 2008 - Apache Rampart/C Version 1.1 Released

Download 1.1

Key Features

  1. Ability to send and verify UsernameTokens with
    • Username and PlainText password
    • Username and Digested password
  2. Ability to send Timestamp tokens
  3. SOAP message encryption
    • With derived key support for improved security
    • Symmetric and Asymmetric modes of operations
    • Support for AES and Tripple DES encryption
    • Signature encryption
    • Keys encryption
  4. SOAP message signature
    • XML signature with RSA-SHA1
    • Message authentication with HMAC-SHA1
    • Signature confirmation support
    • SOAP Header signing
  5. WS-Security Policy (spec 1.1) based configurations
    • Support for both Symmetric as well as Asymmetric policy bindings
    • Support for different modes of key identifiers
    • Support for different algorithm suites

      [Basic128, Basic 192, Basic256, TrippleDES, Basic128Rsa15, Basic192Rsa15,Basic256Rsa15, TripleDesRsa15]
  6. Replay detection support
    • Easy to use built-in replay detection module
    • Ability to deploy a customized replay detection module
  7. Different protection orders
    • Encrypt before signing
    • Sign before encrypting
  8. Extensible modules
    • Password callback module
    • Authentication module
    • Credentials module
  9. Keys management
    • Support for X509 token profile
    • Support for Key identifiers, Thumb prints, Issuer/Serial pairs, Embedded and Direct references
  10. Other
    • Easy to use deployment scripts
    • A comprehensive set of samples

Major Changes Since Last Release

  1. MAC support with HMAC-SHA1
  2. Derrived key encryption
  3. Derived key signing
  4. Symmetric policy bindings
  5. New security header processor based on SOAP header layout
  6. Security policy validator
  7. Extensible Replay detection module
  8. Signature confirmation support
  9. Support for X509 thumb prints
  10. Easy to use deployment scripts
  11. Memory leak fixes
  12. Many bug fixes

05th Oct 2007 - Apache Rampart/C Version 1.0 Released

Download 1.0

Key Features

  1. SOAP message encryption : Allows different parts of a SOAP message to be encrypted to keep the confidentiality of the message
  2. SOAP message signature : Allows different parts of a SOAP message to be signed to keep the integrity of the message
  3. Ability to send and verify UsernameTokens with
    1. PlainText password
    2. Digested password


    3. Allows users to send Username tokens for authentication purposes as per Web services security username token profile
  4. Ability to send Timestamp tokens : Allows users to add timestamps to their SOAP messages in order to ensure the freshness
  5. WS-Security Policy (spec 1.1) Policy based configurations as per WS-Security Policy : Allows users to express their security related requirements and constraints
  6. Replay detection support
  7. Improvements to the context model
  8. Authentication module implementation
  9. Credentials module implementation
  10. Improvements to Key/Certificate loading mechanisms
  11. Easy to use deployment scripts

11th May 2007 - Apache Rampart/C Version 0.90 Released

Download 0.90

Key Features

  1. SOAP message encryption : Allows different parts of the body of SOAP message to be encrypted to keep the confidentiality of the message
  2. SOAP message signature : Allows different parts of a SOAP message to be signed to keep the integrity of the message
  3. Ability to send and verify UsernameTokens with
    1. PlainText password
    2. Digested password


    3. Allows users to send Username tokens for authentication purposes as per Web services security username token profile
  4. Ability to send Timestamp tokens : Allows users to add timestamps to their SOAP messages in order to ensure the freshness
  5. Policy based configurations: Allows clients and services to express their security related requirements and constraints

rampartc-src-1.3.0/docs/svn.html0000644000076500007650000001363411202454500016407 0ustar shankarshankarApache Rampart/C - Developing Apache Rampart/C

Developing Apache Rampart/C

This document provides information on how to use SVN to get an SVN checkout/update and make commits to the source repository.

Working with Subversion (SVN)

The Apache Rampart/C development team uses Subversion (SVN) for source control. Subversion is a compelling replacement for CVS, developed under the auspices of the Tigris community and is licensed under an Apache compatible license. To learn more about Subversion or to download the latest distribution, visit the Subversion project site. If you are looking for guidelines on setting up/installing Subversion, please read the ASF Source Code Repositories page.

Checking-out Apache Rampart/C from Subversion

When checking out the latest version of Apache Rampart/C from the Apache Foundation's Subversion repository, you must use one of the following URLs, depending on your level of access to the Apache Rampart/C source code:

If you are a committer, make sure that you have set your svnpasswd. To do this you must log into svn.apache.org. For more information, please read the ASF Source Code Repositories page.

Once you have successfully installed Subversion, you can checkout the Rampart/C trunk by running the following command:

svn co <repository URL> <folder name>

where 'repository URL' is one of the URLs from the previous list and 'folder name' is the name of the folder into which the source code is to be checked out.



To update your working copy to the latest version from the repository, execute:

svn update



If you would like to submit a patch, execute:

svn diff

The above command will create a unified diff that can be attached to the Apache Rampart/C JIRA issue tracker.




rampartc-src-1.3.0/docs/index.html0000644000076500007650000001774311202454500016715 0ustar shankarshankarApache Rampart/C - The Security Module for Apache Axis2/C

Welcome to Apache Rampart/C

Apache Rampart/C is the security module for Apache Axis2/C. It features in many ways to protect SOAP messages exchanged. This includes SOAP message encryption and signature as specified in WS-Security Specification. In addition Apache Rampart/C configurations are based on security policy assertions as per WS-Security Policy specificatoin

Why Apache Rampart/C ?

In distributed computing, web services play a crucial role. But as many distributed systems web services are also vulnerable for security threats. Developers are always struggling to ensure the integrity, confidentiality of messages. Implementing the right security solution can be an expensive and time consuming task. Rampart/C makes the life easier for those who uses Axis2/C, by providing a configurable security module, which protect SOAP messages from such threats.

Latest Release

27th May 2009 - Apache Rampart/C Version 1.3.0 Released

Download 1.3

Key Features

  1. Ability to send and verify UsernameTokens with
    • Username and PlainText password
    • Username and Digested password
  2. Ability to send Timestamp tokens
  3. SOAP message encryption
    • With derived key support for improved security
    • Symmetric and Asymmetric modes of operations
    • Support for AES and Tripple DES encryption
    • Signature encryption
    • Keys encryption
  4. SOAP message signature
    • XML signature with RSA-SHA1
    • Message authentication with HMAC-SHA1
    • Signature confirmation support
    • SOAP Header signing
  5. WS-Security Policy (spec 1.1 and spec 1.2) based configurations
    • Support for both Symmetric as well as Asymmetric policy bindings
    • Support for different modes of key identifiers
    • Support for different algorithm suites

      [Basic128, Basic 192, Basic256, TrippleDES, Basic128Rsa15, Basic192Rsa15,Basic256Rsa15, TripleDesRsa15]
    • Support for IssuedToken assertion in client side
    • Support for SAMLToken assertion
  6. Replay detection support
    • Easy to use built-in replay detection module
    • Ability to deploy a customized replay detection module
  7. Different protection orders
    • Encrypt before signing
    • Sign before encrypting
  8. Extensible modules
    • Password callback module
    • Authentication module
    • Credentials module
    • Replay detection module
    • Secure conversation token module
  9. Keys management
    • Support for X509 token profile
    • Support for Key identifiers, Thumb prints, Issuer/Serial pairs, Embedded and Direct references
    • Support for PKCS12 keystore
  10. WS-Secure Conversation Language support
    • Establishing Security Context and thereby maintaining a session
    • Per message key derivation
    • Support for stored securtiy context token
    • Rahas module support to give STS functionality to a service
  11. WS-Trust Language support
    • Security Token Services (STS)
    • STS Client
    • Server and Client entrophy support
  12. SAML Support
    • Support for Creation and Processing of SAML Core 1.1 Assertion
    • SAML Token as Sign Supporting Token
    • Signing and Encryption with SAML
  13. Other
    • Easy to use deployment scripts
    • A comprehensive set of samples

Major Changes Since Last Release

  1. WS-Secure Conversation Language support
  2. WS-Trust Language support
  3. Rahas module to give STS support to a service
  4. PKCS12 Keystore support
  5. Security Policy 1.2 support
  6. Memory leak fixes
  7. Many bug fixes

Archived News

News on previous Rampart/C releases.


rampartc-src-1.3.0/docs/coding_conventions.html0000644000076500007650000000617311202454500021471 0ustar shankarshankarApache Rampart/C - Coding Conventions

Rampart/C Coding Conventions

Apache Rampart/C coding convensions are as specified in Apache Axis2/C Coding Conventions


rampartc-src-1.3.0/docs/download.html0000644000076500007650000005105111202454500017403 0ustar shankarshankarApache Rampart/C - Releases

Apache Rampart/C Releases

These releases are available for download as a source or binary. For more information on Apache software releases, please see Apache Releases FAQ.

NameTypeDistributionDateDescription
1.3.0ReleaseMS Windows Distribution

- Binary Distribution zip MD5 PGP

- Source Distribution zip MD5 PGP

Linux Distribution

- Binary Distribution tar.gz MD5 PGP

- Source Distribution tar.gz MD5 PGP
27 - 05 - 20091.3.0 Release (Mirrored) Depends on Axis2/C 1.6.0
1.2.0ReleaseMS Windows Distribution

- Binary Distribution zip MD5 PGP

- Source Distribution zip MD5 PGP

Linux Distribution

- Binary Distribution tar.gz MD5 PGP

- Source Distribution tar.gz MD5 PGP
13 - 05 - 20081.2.0 Release (Mirrored) Depends on Axis2/C 1.4.0
1.1.0ReleaseMS Windows Distribution

- Binary Distribution zip MD5 PGP

- Source Distribution zip MD5 PGP

Linux Distribution

- Binary Distribution tar.gz MD5 PGP

- Source Distribution tar.gz MD5 PGP
16 - 01 - 20081.1.0 Release (Archived) Depends on Axis2/C 1.2.0
1.0.0ReleaseMS Windows Distribution

- Binary Distribution zip MD5 PGP

- Source Distribution zip MD5 PGP

Linux Distribution

- Binary Distribution tar.gz MD5 PGP

- Source Distribution tar.gz MD5 PGP
05 - 10 - 20071.0.0 Release (Archived) Depends on Axis2/C 1.1.0
0.90ReleaseMS Windows Distribution

- Binary Distribution zip MD5 PGP

- Source Distribution zip MD5 PGP

Linux Distribution

- Binary Distribution tar.gz MD5 PGP

- Source Distribution tar.gz MD5 PGP
11 - 05 - 20070.90 Release (Archived) Depends on Axis2/C 1.0.0

[if-any logo] [end] The currently selected mirror is [preferred]. If you encounter a problem with this mirror, please select another mirror. If all mirrors are failing, there are backup mirrors (at the end of the mirrors list) that should be available.

Other mirrors:

You may also consult the complete list of mirrors.

Note: When downloading from a mirror, please check the md5sum and verify the OpenPGP compatible signature from the main Apache site. They can be downloaded by following the links above. This KEYS file contains the public keys that can be used for verifying signatures. It is recommended that (when possible) a web of trust is used to confirm the identity of these keys.


rampartc-src-1.3.0/docs/mail-lists.html0000644000076500007650000001020511202454500017646 0ustar shankarshankarApache Rampart/C - Mailing Lists

Mailing Lists

These are the mailing lists that have been established for this project. For each list, there is a subscribe, unsubscribe, and an archive link.

List NameSubscribeUnsubscribeArchive
Rampart C Developer List Subscribe Unsubscribe Archive
Rampart C User List Subscribe Unsubscribe Archive

rampartc-src-1.3.0/docs/downloads.html0000644000076500007650000000577111202454500017576 0ustar shankarshankarApache Rampart/C - Downloads

Downloads

You must define the maven.xdoc.distributionUrlproperty if you wish to generate the download report.


rampartc-src-1.3.0/docs/team-list.html0000644000076500007650000002127411202454500017477 0ustar shankarshankarApache Rampart/C - Project Team

The Team

A successful project requires many people to play many roles. Some members write code or documentation, while others are valuable as testers, submitting patches and suggestions.

The team is comprised of Members and Contributors. Members have direct access to the source of a project and actively evolve the code-base. Contributors improve the project through submission of patches and suggestions to the Members. The number of Contributors to the project is unbounded. Get involved today. All contributions to the project are greatly appreciated.

Members

The following is a list of developers with commit privileges that have directly contributed to the project in one way or another.

NameIdEmailOrganizationRolesTZ OffsetTime
Malinda Kaushalye Kapurugekaushalyekaushalye AT wso2.comWSO2 Unknown
Dumindu Palleweladumindudumindu AT wso2.comWSO2 Unknown
Manjula Peirismanjulamanjula AT wso2.comWSO2 Unknown
Samisa Abeysinghesamisasamisa AT wso2.comWSO2 Unknown
Sanjaya Ratnaweerapinisanjaya AT wso2.comWSO2 Unknown
Dushshantha Chandradasadushshanthadushshantha AT wso2.comWSO2 Unknown
Selvaratnam Uthaiyashankarshankarshankar AT wso2.comWSO2 Unknown
Milinda Pathiragemilindamilinda DOT pathirage AT gmail DOT comUniversity of Moratuwa, Sri Lanka Unknown
Supun Kamburugamuwasupunsupun06 AT gmail DOT comUniversity of Moratuwa, Sri Lanka Unknown

Contributors

The following additional people have contributed to this project through the way of suggestions, patches or documentation.

NameEmailOrganizationRoles
James Clarkjjc AT public DOT jclark DOT com Technical Adviser

Sanjiva Weerawarnesanjiva AT wso2 DOT com Technical Adviser

Kasun Indrasirikasun147 AT gmail DOT com Contributor : WS-Trust Implementation

Prasad Pereraprasadcse0 AT gmail DOT com Contributor : WS-Trust Implementation


rampartc-src-1.3.0/docs/download.cgi0000644000076500007650000000035311202454500017200 0ustar shankarshankar#!/bin/sh # Wrapper script around mirrors.cgi script # (we must change to that directory in order for python to pick up the # python includes correctly) cd /www/www.apache.org/dyn/mirrors /www/www.apache.org/dyn/mirrors/mirrors.cgi $*rampartc-src-1.3.0/docs/lists_issues.html0000644000076500007650000001065211202454500020327 0ustar shankarshankarApache Rampart/C - Mailing Lists and Issue Tracking

Mailing Lists

These are the mailing lists that have been established for this project. For each list, there is a subscribe, unsubscribe, and an archive link.

List NameSubscribeUnsubscribeArchive
Rampart C Developer List Subscribe Unsubscribe Archive

Note: For the moment many discussion related to Rampart/C can be seen in Axis2/C mailing lists


rampartc-src-1.3.0/docs/images/0000755000076500007650000000000011202454500016151 5ustar shankarshankarrampartc-src-1.3.0/docs/images/icon_sortright.gif0000644000076500007650000000017211202454500021675 0ustar shankarshankarGIF89a³ÿÿÿj´?S‡-˜ðZ}­ZÜ÷ÈJt)ÿÿÿ!ù,'ÉI«½W`+Φ‚á}ˆ@ãfEš±¬[™Å Ïõ=Ûd©[¿žÐ;rampartc-src-1.3.0/docs/images/icon_success_sml.gif0000644000076500007650000000173611202454500022202 0ustar shankarshankarGIF89a÷ÿÿÿ„™º¦¶Î§·Î¼ÈÚÇÑà¿ÈÕc~¢¡±Çßåíw¬™´¦¸Ë—®¿³Ã©½ËSq‚*/‚¡­%(#8='*!37,/(CH'AF&>B/2*,)FI"!Prkœ¼´¢À¸j•†„¬œtœ‹¢Å²FcOƒ­7G;ÅÖÈÈ£¬Ö©·Û´¸ß²2B.²á¥³â¦·ã«¸ä¬¸ä­ºå¯¼å±Â€¶ã©²à¢²à£œÎˆ¬Þ˜«Ü™©Ù—«Û—]•BÎ…¢Ô‹©Û‘Í„­Õ—]”>¡Ô„çñሻf“Çr¿mˆ¶jÐæÂøûöbœ7Jw*U‡0WŠ2•ÑiÔäÈmª;Ag$r³?o¬=ež8fž8b›7ZŽ2YŠ1S‚.Jt)Qy1‰ËW…½Yu¤Qe‹FcˆE—¹{›½{“h­Î×Çîóê„ÊGv·@uµ?k¥:hž7`’3Jr(ÃE^‘3Q|,S~-Dh%}¼DEi&‹ÎQ²Å¢ÖàÍÏ×ÈãëÜIm&Qx+Ot)Mo(êïåLl&Ig%Gc$õ÷òþþþûûû÷÷÷ÿÿÿ!ù‹,» H° A!,X E aCF5pAÆ *01#†"NT0è‡A˜ ¡ =†Y²&€ NR¤I’1ÅÁbà€JðÃ'À:oŒ8bŠ˜3‡ˆ-ÃeË“‹„у™>Ô|‰Â¥ (ØÌq£Å‹•4häÔ±(Ћm®TÉ"Jž;*d(Å"4l¨p ,Pø°( ;rampartc-src-1.3.0/docs/images/newwindow.png0000644000076500007650000000033411202454500020700 0ustar shankarshankar‰PNG  IHDR Óº&gAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe< PLTEuuu™ÿÿÿÿÿÿ€8ÉÙtRNSÿÿÿ@*©ôFIDATxÚb`fff„f€b±™@€‘ €€Æ „8@!³™ @`6Ô€±L€Ø& ±´Â^IEND®B`‚rampartc-src-1.3.0/docs/images/fix.gif0000644000076500007650000000026511202454500017431 0ustar shankarshankarGIF89a³-ƒ„„H/üƱ8)&#æè騦¨ûýûœrTö¶¦„:$TRTxwv˜˜–´¶·!ù,bÉ9 ½Ô^+â_'n¡¨YE1REãAÐeWÏáÜ®QŠ!{p¯ØãñKÐe×0`!…5 V©J…Å`ÕÍÀÔÐQ7­ ¿¦Ùëý‚ ÷)€ƒ„…;rampartc-src-1.3.0/docs/images/icon_usergroups_lrg.gif0000644000076500007650000000276011202454500022737 0ustar shankarshankarGIF89a ÷ÿÿÿÌÌÌÿ燦 ‡ k ¿Ÿ@C¿_e &,2Æ&6à´ºÈ4J¡]hÊ>XN&ÓMgÖ]|Òtfbdb`arIj®z©‘gŽJ2M5=ñó÷ùúüÐØåØßê 'SG]~\wŸRi‹pН‡½ÈÒáõ÷ú–ªÆ£´Ì±ÀÔ¾ËÝ.?Sëïôâèïûüý,0FkD¥Ø•¸ß¬ÏÜÈ“Äv‰¬tN· sÂ?wÇDŒÑa’Ói™ÕrBV©q»;˜ðZ†ÉXŽÌcn²8€»PÜöÈ;{k©3\ƒ;‘Áhgž.Mh2x•[opnFhd’):PnXõöó|}y}~mšš“ŒþþüÿÿþððïÔÔÓýú”ýüÂóð°ýú»éçÂàÚŽýø·áÝ®ú÷Ïøîíå•÷ï¦þö²îé·ˆ‡}þó¨ÐÇŒB@0üùáÿþ÷õæˆþï*&óáþì–Æ¸xýå†ùâ…ûä‡úå‰ÿéçÙžÿóÀäÞÅMD%ÜÄríÕ|àÈuÁ­eóÛ€åÎxƱhûã…÷߃ðØиkȰgØÀpÔ¼nѹlË´iÓ¼nÀ«iÜÄ{§‡'³—DÀ¨b½¥`¹¡^³›[Æ®fĬeªdýùîRQNšƒLª“V”|IŸ‡O‹sC„m@íÉ^T?‰{_wb>;/•{_ëˆ(®o-],¨‚\ÈÅÂârÜtâzê€ë9ë™LÞ“P n@ªxJê­vÚ«€®–€Í¸¥ËaÏiÊeÔmÎlØx%Û€2܇=Û‹HZ<#Ø“YâženM1ƒfM†~w³­¨épÀ\‚> ¡OÆa«XÄdÎr)Ìw6ÓˆOÛ•_Çe¡‚kwmeíãÛ·SºXŽGù'Ãh&¿l4Ê{D¤Ž~®L ¯W"k:¥D Ä€ZÁ¡Ž™9W"œ@_?/§£¡1S…(z!:þ ›àÑÐÇ??øññÀ¿¿þþþýýýøøøñññèèèÚÚÚfffÿÿÿ!ùÿ, ÿÿ H° Áƒ*\È L—2YÊ4¨áBO–òÀ™3`@£M†4 .^Ôä´(dA~ž 8ãåÌ™“p-tôiÓ¢J€âóÔ衎HoÚ)Ò5!µü'ªÑ A…ÈÃeN%„>•D RÅQв£u—3L ‚ºÚ1/y@ŽzäÇh­^ÂXBxŠÑ £m^ú7J“YAvþv<‰ áÞ¾l¨áR (L|¯2”YÐ'š¬:jò4¿S•Bÿùsë'~EYZÄЙNÿå)6$F~± •PѨ‰ŠzÿÁÄh ¨ç>9òj!¨Q—*-ÿr*>û´„:UªÔ©4Ê”-Ó¢P“¨O˜Deú§ïÞ”T­“L?]‘.¹,ƒP?ËX‘Æ6ÑD2ÃÌB -µ¤1?­àâá2ú ÔO6ÔE?çá£E'«¨ââ,Þ¢à?Vã!‚®t:ìÀC þ³Ï¬Èbä‹0Þá-Ç4Ù¤.úhDAÑ# ÞÓI,F^xá1Â3 1ÄÔR‹1ÖXsiäC<ðSt‚Œ,±ÄBK,°ÀRK0Á„9L8ÄTch5íDá¦8à DD±+yÆRKŸ¿ó 0ÀLã)5Ô„#ª8Hàðƒ? Ĭ:ÁJŸ° ÍÌ/½ã‹/Ð@#Í7¼‚ãk2HüðC¤C$qıP¼úË/Áé1Ð4Ó 7Ülà 9Ø’ƒL¬ADD¡„N Ó ­¾S1ßL»Í»ã˜#ï:ë”3ÅÇŠ;®O8ÑG/¸F;mµÛŒ¯9鸣0<ïܳHŒûÄÄýBÀ,o: »<ñÄ“Í?WhqOTDLDQ Å”ÓM7oÜñÇ!¿S AWåó†'gc';ê¨óÎÑï°“MŽç¹$TÓOÿìtH;rampartc-src-1.3.0/docs/images/icon_doc_sml.gif0000644000076500007650000000054311202454500021272 0ustar shankarshankarGIF89aÕÿÿÿÿœ¸Ñ…©tWpýýþˆœ¼°½ÒÁËÜÑÙæÐØåÕÜèØßê×Þé#.>]y¢[wŸYt›XsšUo•J`\x RjŽDXvt²z’¶ŠŸ¿—ªÅ§·Î©¹Ð¬»Ñ°¾Ó³ÁÕµÂÖ¶ÃÖ½ÉÛ¿ËܾÊÛÁÌÝÂÍÝÇÑàÌÕãÎ×äÒÚæôöùóõø“§ÃŸ±Ê£´Ì¢³ËÇÑßßåíáçïäéðîñõÝäíÜãìâèïöøúúûüÿÿÿ!ù<,€@/µZ,&N($lòrh·˜Î[@À¬W'CH`Fh¬p(i4Ëå’‰8dV£ôñTîmo‚%'€d:5 $M2‚%ŒNd-4*#Nƒ vM.;63 ($ 1N9n‘%/¯M)"0/½¾·BÂÃÄBA;rampartc-src-1.3.0/docs/images/se_maj_rond.gif0000644000076500007650000000006211202454500021116 0ustar shankarshankarGIF89a€ÿÿÿÿÿÿ!ù, Œ ‡ yšœ;rampartc-src-1.3.0/docs/images/icon_arrowfolder2_sml.gif0000644000076500007650000000207011202454500023132 0ustar shankarshankarGIF89a÷ÿÿÿÿþ—üø“þú•ýú•ýû•þü–ü÷’ü÷“ùðŽùîùï÷íŒöè‰õèˆæÙ€÷éŠ÷êŠîá…öæˆõå‡ôä‡áÑ{ëÖ~òðèÜÄrï×}íÕ|äÌwâÊvàÈußÇtÜÅsï×~îÖ}ìÔ|éÑzçÏyåÍxåÎxãËwðØÚÅtåÞÆÐ¸kζjÌ´iʲhȰgÁªcÚÂqÖ¾oÔ¼nÓ»mѹl͵j˳iÛÃrÕ½oÓ¼nËÁ åÞÈÁ©b¶ž\´œ[¿§a¾¦a½¥`¼¤`»£_º¢_¸¡^·Ÿ]· ]µ\³›[Æ®fÅ­eĬeëd¢—y©ž€ ˆO¡ŠP­•W«“V©‘U¨T§T¥S¤ŒR£‹R ‰Pœ…N°˜Y®–XŽwE—J•}Iœ„M˜K”|IŸ‡OŒ}\‡oAŒtDˆpB†oA„m@‘yGi=‚j>zb9ya9lY:nV2mU2kT1jZBdM.bM1bM2åããVUU’‘‘××׫««lllÿÿÿ!ù‚,ÿ H°`%H$y2pDN Jœø¥ ª ÄÈ b&Šxã‚T( €@Ài¾L13R"‰ "r– ñãË’+D p0Ñ¥¦Ä3#6`1²Ãƒ è fŸ«X³ò!xeÄ!  @À4\hÈgÏž? ´•à–-nذa‡3nÄøÁe ¸réJ¬r¢ÈŠ~Q„°CÆ‘)Hž[· p48¢F(F˜T c¥ @ ~H"ÆÀ/ž R% :~$Æ–HeŒNˆƒeL9=ŒNTæÉ%_®´ÁƒFúH7rŽ0Ñ'ï5߬!cçzé^ôD1;rampartc-src-1.3.0/docs/images/icon_error_sml.gif0000644000076500007650000000176211202454500021662 0ustar shankarshankarGIF89a÷ÿÿÿ ²±«£ q x v m¸;@’GJf46éÒÓ_ Á· œ › ‚ i [ ¾½¹·«¦ ˜ — – “ Š ˆ ~ } s q p n X V L ž  … ƒ  v l ¾~ ®Â"±",¢9?‚6;{6:Ždfå³¶ðàáÂ$¿'¿)©OWͱ³ÞÐÑÅ-Å/«*Ç"4À"3Øs}ôÖÙñÕØðÖÙúðñûòóÇ%8Ç&:È(=È*@È+AÃ*?É5H½=MÀM\ùñòÄ+BÉ.FÉ/GÉ0IË2MË3OÈ2NÇ%9J.F¯p«±r®N3O²v´³x·µ{»@-EL6RO8V08G3O1:bGm3=4>7 C5AgOx?2ME7TmW†|d™}gŽu²š„Á^Vƒøððèààöððýýýûûûúúúôôôÿÿÿ!ù,Ï; H° AJýéÃg’ÁN’Þ´YcŒ—* FrÃM™/]¨HI‚h $5iÎŒ³å “%B€øéTÉ ™0P8ÁÒ$À“2,Êã…‹•,Z(µ¤D‡ŒðL‰¢É¥¨@¡€¢;GŒÉák$<Hd‡ >`ê'‘!\2ƒ†?v°hp‰‡  uÚ@‹ .¨Xñà = q˜0 )f$Tp„"F¼ˆQƒ´ÁGrểCÇÁ€;rampartc-src-1.3.0/docs/images/sw_maj_rond.gif0000644000076500007650000000006311202454500021141 0ustar shankarshankarGIF89a€ÿÿÿÿÿÿ!ù, D~†šÎš’²;rampartc-src-1.3.0/docs/images/icon_members_lrg.gif0000644000076500007650000000304211202454500022145 0ustar shankarshankarGIF89a! ÷ÿÿÿÿ燱¿Ô‹ ¿DXv]]b­®°ùúüøùûÚàëÑÙæÐØåÕÜèØßê×Þé&2CXsšSl‘Rk^z£Wq—H]}EYxd€©h„¬z’¶˜º‚•°¡²Ë§·Î²ÀÔ·Ä×¶ÃÖ½ÉÛ²¾ÏÁÌÝÃÎÞÂÍÝÄÏßÉÓâÇÑàÆÐß¹ÂÐŽ•ŸËÔâÌÕãÎ×äÓÛçéíóôöùóõø—«Æt‚•ž°É£´ÌºÇÙž¨¶áçïåêñäéððó÷ïòöÝäíÜãìÛâëæëñìðõëïôâæêñô÷öøúûüýúûüvyzáâ⢦¤ŽiƒT^sN†œq…Ù/‚Ñ-„Ö/ƒÕ/Î.†Ø3ŠÚ7‹×<ŽÜ>‘ÝC×E•ÝKn£9–×PœáV™ÜTžÛ\•Í\¢Ûe|¡T¶â†czK„¢e±ÕŠgxU…y}Å*{À)€Ì,~È+|Ã*…Æ8ŒÊE’ÓI–ÎTb‡8žÖ_¦Öm¦Ór¯Ü}wµ%{¿(y¹'x¶&z½(}¼-}¹.€½2„¼:’ËM“ÆRšÍ[˜Å`ŸÎeªÕt«ÕxLUAu²$t®#r©"u°$t¬#sª#v²%w±'z±,j›(~±5Š»F—ÄY¢Ìjœ¼p³º©r¦!p¢ o¡ q¥!q¤"t¤'ƒ°>ºR›Âb«ˆmšnžu¢*‡­Ek–i‘wŸ/Wq(gŒhy›4e‡g†"c™ †a|_w_yv€X^t]q[len;UcFK…†~HMW\*GJxylHKEFFFýýÃýýÄ?>ýüÁýú»ýø·þ÷³þô¬þðžlhNÿí–þæ†üä…øâ‡ÿéŒàÈußÇtÝÅsóÛ€îÖ}êÒ{æÎyåÍxåÎxúâ„øàƒôÜðØиkʳhȰgÔ¼nѹl͵jÛÃrÓ¼nÀ¨b¸¡^³›[ªd½¥aÅ­f«”W˜KyGŸ‡O›ƒMˆqAzf?ƒk?ƒlAoX4eM-e\PËÉÈþþþèèèØØØÿÿÿ!ùÿ,! ÿÿ H° Áƒ<·N»vî¸)œHp^»iÍž @Žʼnòª PV Y2fÓ´ûˆ°ß¼o–%[Æ ™±fæX„G.›·@—“æQ'Azä¶]‹TÀ4dÏÒ@µªUƒôÂQ×­©€bËŠ , ¬Y³ Úw›7hM“)kGG€òæ  -A{îÐq»Ö îFdÈÖM p#‚cÇ7ÊVU¡¢Þ:¶Ù®yóÖUÀ·w=P¢tigðC²¤^:sç¸eÆí[4Ð;¤ÞÍ_GâÍK'Ý9kÔ¸«WP÷n³«“$aÄǽ{íØWnÞ½ ÍÍ–ÿ @¾¼ùò+Þáˇ=z½˜øËý<úôêE˜@9S(?~eñ£Fhd2sŒw^y58_|!F/fõsFø‚ª!!u>q@Wd¡`€AÆe5q"xàÆ>¨àyÐEV`ÅrxA†Ma‡‡$9JöHD ;4QÅT€ÆXÆ!‡ sBˆ!†\r &ûtà7š÷RHFm¸Qpć ƒ bI!…ˆÂ„ V÷ä:üRÀY‡k¼1‡~H •TÊ¥²ØpÄ =¤Yqº!zôAÈy(Òˆ$”P (§œÿb ‚BYhÀÀ²!~üq‰"‹8ˆ&|bŠ*®¸¢ CÄ :á@ ¼Ð‚¥î±Ç–\BÉ#Œt²I)¤ Ò +°Àò ¶š+.  B0{ð‘j±ÇvÂI)¨¤ÂÊ+±ÌB .Ã@­µØj‹Â $°0I#‹k.ºêÿhpm¶d° "ˆ€! JH"¼ø 1ÄãL/4þ“ÉP38 ]ô×!ØPÁ?PvIX0Ð ÷ÜsDw¥wA;rampartc-src-1.3.0/docs/images/icon_folder_sml.gif0000644000076500007650000000117211202454500021777 0ustar shankarshankarGIF89aæÿÿÿÿþ—üø“þú•ýú•ýû•þü–ü÷’ü÷“ùðŽùîùï÷íŒöè‰õèˆæÙ€÷éŠ÷êŠîá…öæˆõå‡ôä‡áÑ{ëÖ~òðèÜÄrï×}íÕ|äÌwâÊvàÈußÇtÜÅsï×~îÖ}ìÔ|éÑzçÏyåÍxåÎxãËwðØÚÅtåÞÆÐ¸kζjÌ´iʲhȰgÁªcÚÂqÖ¾oÔ¼nÓ»mѹl͵j˳iÛÃrÕ½oÓ¼nËÁ åÞÈÁ©b¶ž\´œ[¿§a¾¦a½¥`¼¤`»£_º¢_¸¡^·Ÿ]· ]µ\³›[Æ®fÅ­eĬeëd¢—y©ž€ ˆO¡ŠP­•W«“V©‘U¨T§T¥S¤ŒR£‹R ‰Pœ…N°˜Y®–XŽwE—J•}Iœ„M˜K”|IŸ‡OŒ}\‡oAŒtDˆpB†oA„m@‘yGi=‚j>zb9ya9lY:nV2mU2kT1jZBdM.bM1bM2×××ÿÿÿ!ù|,×€eJHHIO|ˆ#!:Nˆ|_ UH`@F78bŽ7 * 4i_Sf$A"°%4?_KWD&]|g#XF;* f|W#B   4.Z|[#-7#)371?\|U'E+å(!602GSH|40p N„¨‘Š&UÂXáó!‰x¼xB$H•,TèìADeŒNˆƒeL9=©aÓdˆ’/WÚàAãÈ‘9G˜h‰“GJÍšoÖ±sç§Q/z¢ý;rampartc-src-1.3.0/docs/images/nw_med_hi.gif0000644000076500007650000000005711202454500020573 0ustar shankarshankarGIF89a€ÿÿÿÿÿÿ!ù,„a¡ ;rampartc-src-1.3.0/docs/images/icon_arrowusergroups1_sml.gif0000644000076500007650000000206011202454500024073 0ustar shankarshankarGIF89a÷ÿÿÿõ÷ôJ»SÄ SÃAb.i‰VmŒ[™®ŒDCˆY±^·#T£"[–5bŽFI®K¥ /a P¤RŸª²¤¡š@;€%P<} f|T:{:u!=¤¨›†‰|±²­ª­œþþü××Öýùºþö°þö±VNþò¤þò¥þò¦þò§þò¨ÿì•ùè”þîœðá•þïžÕÉŒÿç‡ÿèŠÿéÿì—ÿò¼ÿò¾ÿôÆüöÛÿùßäÌwÞÆtîÖ}êÒ{éÑzíÖ~äÝÃÓ̴иkÁªc͵j˳iÕ½oÓ¼nηp­œhǵxæÕœ¹®‹§‡'³—D¼¤\À¨b«i¿©gº¤fº®Œ¸±ž­•W§T ŒY›ršw“|I˜L•M“}L–€P•…`¡hŒuHˆrFŠtH†rJ…ya‘Š|jZAzTl_KoHwS(QF9Ÿ]ˆOVK?U*êwçvãsÞrÛpßvãzàyÔs¬_ßyÜzêƒâ"ãƒ$`8æˆ*±r4°x>ze¾²¦÷õóálÖl ÏiÚwÛvÙ|'²¡‘¨“ëáØP%ÁZËaÈd}m_š’‹¿W¸R´O¿]‹IJ®KM% ªF¥D Cž<0=ƒ%;7 3 2åããVUU’‘‘ÓÓÓ«««lllÿÿÿ!ùµ,ÿk H° Áƒ",c…É" #ì"ÊU$dãÄÌ“Zc†Ø¸qÇãÔ`±BŒ.J„ÔháBŠ@X8sê|EP *häHsĈ1¢ |åÊ•,Y³fÑâIÐÍ’ /šìð²… ’a ¾zuªÁ5_’hÓƒ™3aÐ18V*UƒY°@áKS¢L“!’DwÖ]‚@H`Á?|-¢$hPº(ð@À…v ÚÓÐ#HoP*Ѐ„ rî Ê£§‘#Lž ¡\B þà é’%N¡H‰BÉaC†>ÌatiS§Q¦N¥R…²V  F„  ó©N%P¥P­bÕ* ;rampartc-src-1.3.0/docs/images/icon_waste_sml.gif0000644000076500007650000000106211202454500021645 0ustar shankarshankarGIF89aæÿÿÿÚÞé4WžðòöùúüÒÙæÚà냗¹…™º±¾Ó°½ÒÑÙæÐØåÕÜè×Þé`}§\x Ph‹EYxb©Un“`{¤h„¬j…­l‡®k†­y‘µ˜ºŠŸ¿‰ž¾ˆ½˜«Æ—ªÅ¯É§·Î©¹Ð­¼Ò«ºÐ±¿Ô°¾Ó²ÀÔ³ÁÕµÂÖ¶ÃÖ¼ÈÚ¿ËÜÁÌÝÃÎÞÂÍÝÄÏßÈÒáÇÑàÆÐßËÔâÎ×äóõøc€©š­ÇŸ±Ê®½Ò¹ÆØàæîáçïðó÷îñõÜãìÛâëçìòæëñëïôêîóöøúÿÿÿ!ùI,€I‚'!!;< ‚ŒI 3/6I)B’A™+ 8’17*¤?C77D6™*5’’C%9¸ 11,(:™)7¼2#"ËÍ’8C-:™'ÕG, Ó Þ>6&™ 1¼@Ø:™.¼A=ó™I0EŠ A‚^?&Ì;rampartc-src-1.3.0/docs/images/icon_usergroups_sml.gif0000644000076500007650000000200211202454500022733 0ustar shankarshankarGIF89a÷ÿÿÿøùøõ÷ôJ»SÄ SÃAb.i‰VmŒ[™®ŒDCˆY±^·#T£"[–5bŽFI®K¥ /a P¤RŸª²¤¡š@;€%P<} f|T:{:u!=¤¨›†‰|±²­ª­œþþü××Öýùºþö°þö±VNþò¤þò¥þò¦þò§þò¨ÿþøÿì•ùè”þîœðá•þïžÕÉŒØ×Òþýøÿç‡ÿèŠÿéÿì—ÿò¼ÿò¾ÿôÆüöÛÿùßÿýõäÌwÞÆtîÖ}êÒ{éÑzíÖ~äÝÃÓ̴иkÁªc͵j˳iÕ½oÓ¼nηp­œhǵxæÕœ¹®‹§‡'³—D¼¤\À¨b«i¿©gº¤fº®Œ¸±ž­•W§T ŒY›ršw“|I˜L•M“}L–€P•…`¡hŒuHˆrFŠtH†rJ…ya‘Š|jZAzTl_KoHwS(QF9Ÿ]ˆOVK?U*êwçvãsÞrÛpßvãzàyÔs¬_ßyÜzêƒâ"ãƒ$`8æˆ*±r4°x>ze¾²¦÷õóálÖl ÏiÚwÛvÙ|'²¡‘¨“ëáØP%ÁZËaÈd}m_š’‹¿W¸R´O¿]‹IJ®KM% ªF¥D Cž<0=ƒ%;7 3 2õõõãããÓÓÓÿÿÿ!ù¶,ßm H° A‚j¶Dá’äà@14N¤¨¡¥`œ)k¨ØBƒDÇ<° ´“£‹3>Â<9’ÃÅ‹+ßɱÂF7L– ‘1ÃÊÀ9PŒÄòc ˜,Mˆ˜!‡Œ“/e‚”HÃÆL%½t©¤Ö'Gž0=jtI`‚\8PgP F2B$A`P±gQ"@‚ QªDg &P¸Ã‘Ÿ?’&u¥ˆ„ 2l ÔÇ%N›B™Juª >€À‰(Q¨V±rõÊ–‰!HˆÈCJ¦RªZÁŠ%+ ;rampartc-src-1.3.0/docs/images/icon_success_lrg.gif0000644000076500007650000000272411202454500022171 0ustar shankarshankarGIF89a ÷ÿÿÿþþþŠŸ¿ýýþïñõøùûÙßêÑÙæÐØå]y¢XsšTn“Lc…G\|CWu[vžWq—RjŽPh‹Ne‡Ka‚I_H]}DXvb©5D[h„¬gƒ«pаt²{“¶–¸€—¹ƒ™º…›¼†œ¼‰ž¾ˆ½Ž¢Á‘¥Ã–©Å™¬Ç¯É¡²Ë¨¸Ï¬»Ñ±¿Ô°¾Ó³ÁÕ·Ä×¶Ã֏Ũ½ÉÛ¿ËܾÊÛÃÎÞÂÍÝÄÏßÉÓâÈÒáÇÑàËÔâÌÕãÓÛçôöù*7IŸ±Ê¤µÍºÇÙ¹ÆØàæîåêñðó÷ïòö`{œgƒ¤ÛâëçìòìðõêîóNd|Š¢»¦¸Ëñô÷öøúûüýúûüœ²’«½Vu‰v–ªQo}t˜£„ª«k•ŒRwnˆ±¤Šºšd™q@]G;Q@KuSGkM]“bš¼œqšp˦ۣ~¤|¢Ã «Ê©~¤zQƒKc™[ƒ¾zHpADi=Bd;£Û™”ЇŸÙ‘¬ãŸ©âš«ãœ>\5:U2§â•§â–©â™^Ÿ5X’1SŒ/Q†-J}*~ÌMvºH‰ÔW}ÂR|§_Œµr˜½{™h¯Éž¿Ó²¥´›¶Æ¬ÍÖÇöùô|ÍCvÄ@qº=o¸ƒÓJ€ÍJX‡7Ž«yÐÚÉíôèR„+Q‚+O~*N{)Jt)õ÷óÿÿÿ!ùÿ, ÿÿ H° Áƒ_$@àÇŽ‡ò衃F „qØ@€Çì¨A`F‚E@ªüeÆ’.žü÷Â#Ž8q‚t2£LCf¶XItǘV®ÈDÈÂc8m¢J•ªC«EŒ|8ÙT)Q˜ÂŠKKƒ!@¼ÀÕãµPpãÊ¥%çK˜0[\°ÅØõ›¿€§Ù†ϟ<[H´%ªr=%³añ˜3c.1‹ž=!rôe1cSØì4h’£K‹¤ðµ™Ó„‰¸A„-ú‘%PÆ`zÚc–;„ZC…ËT-NLˆ ¸¬31’%9¥i#¾jrzÿìª2©,‰&EºDIѶڦÑÓ2ž6NÛ#<¬‰”©Ò'O³²-ò¸cÈRuE€yUDìRÊ(³`³Ñ=ïˆs:`ÄP—sügKß\ó^öÄ#L8º¢A,\a@ƒJ<E_t"Ë,ßpÄQ=¹ˆ#Ì.¼˜QÐ ÞtœÈBÍ4ÖÈQ7Ëà 1Ũ²‰­@EŽHq„hPCÍ<ÓÄS7eóË)ªœ² +ÈÔA :Ѝ…4óÌSN:ê8 7Œ2¨°ÒL/¾$Kt¥àD™‘€å€c:ºŒ³Ê3ÁdsK+¯@ªŒ3ë,á±`¦“%ÄŒÂ03Œ1½¸M4Ь㌫í@“>~ DÂüÀ6p 3»“JͼòŒ+íϱûìÃO?Q ä=ˆ(BgÐánuØaG}"ˆ~4Ò#e,A9ÜP 1ÀàB D°°‚ )¤€Â Ü&‚'eP„ œðÂ?ñ"„Â'= ,,K Á4Ð@X`Áh0ÓÎ<;rampartc-src-1.3.0/docs/images/collapsed.gif0000644000076500007650000000006511202454500020607 0ustar shankarshankarGIF89a€!ù , DŽ`ºçžcŠ5 ;rampartc-src-1.3.0/docs/images/icon_members_sml.gif0000644000076500007650000000177711202454500022171 0ustar shankarshankarGIF89a÷ÿÿÿŽ”ùúüÑÙæ×Þé4D[RjŽ4CY!*8˜º‰ž½‹ ¿t…Ÿds‰Ž¢Á¤Â^hw¦¶Îgp~¬»Ñ±¿Ô²ÀÔ½ÉÛ¿ËܾÊÛÃÎÞÄÏßÈÒáÆÐßÍÖäÌÕãÓÛç7H`=Pj•©Åš­ÇºÇÙàæîëïôßãè[jzñô÷YjnY[ZTlXC\A>l*6]#`•Gfs`ôöóTxAdÉ&cÆ&T˜+rÆ>rÇ?R.Ew(hŸF= cÃ&a¿&a»&fÁ-iÅ/hÂ0c¸.jÂ3j»4l¾6i·4sÌ;,JxÊEŸ­–›¤•a¹"`³&_«(rº?°º©àèÚ6X¢T—Y£ ]Ÿ(S’[”(P‰Lq(-O…JvN|!1Knjoc#Ed?P 9=þþüýùºþö°þö±ûð§þò§ùè”ûëšðá•þïžÿç‡ÿèŠÿéÿì—äÌwÞÆtéÑzíÖ~äÝÃиkÁªc͵jÕ½oηp§‡'³—D¼¤\À¨b«i¿©gº¤f  §TžŠX›r•M–€P•…`¡hˆrFmEnG†rJþþþÌÌÌÿÿÿ!ù™,Ü3 H° A‚’ JÔG ˆpÀ ÐÑ6nèø!€ÇBâcçN<…2mpà@€ :4 ´§œ7„2•øÈÓÒ?yâÈ”©‚G ’2`ÁÈ =•RàùqM¤I(¥z4é‚+ZÈh"%“L<^RB "Bx̘’Ç N uà¢Æ’A†1‚Æ2X˜ ÃŽ@ž@Á¢E‰‚ ŒˆpÃÇ‘(W¬l#&Œˆ2!H°ÃI•,^¾”1ƒ&MALc¸ô Ò…Ì5Š;rampartc-src-1.3.0/docs/images/icon_doc_lrg.gif0000644000076500007650000000246711202454500021272 0ustar shankarshankarGIF89a ÷ÿÿÿýýþùúüøùûÚàëÑÙæÐØåÕÜèØßê×ÞéÖÝè]y¢[wŸYt›XsšUo•Sl‘OgŠLc…J`G\|CWua~¨ZuœWq—RjŽQiPh‹Ne‡Md†Ka‚I_H]}DXv?Rm5E\b©Un“LbƒI^~6F]3BXh„¬gƒ«mˆ¯pаrŒ²t²w´z’¶{“¶~•¸–¸˜º€—¹„š»ƒ™º…›¼†œ¼ŠŸ¿‰ž¾ˆ½‹ ¿Ž¢Á¡À¤Â’¦Ã˜«Æ—ªÅ¯Éœ®È¡²Ë¦¶Î¨¸Ï§·Î©¹Ð­¼Ò¬»Ñ«ºÐ±¿Ô°¾Ó²ÀÔ³ÁÕµÂÖ·Ä×¶Ã֏Ũ½ÉÛ¼ÈÚ¿ËܾÊÛÁÌÝÃÎÞÂÍÝÄÏßÉÓâÈÒáÇÑàÆÐßËÔâÍÖäÌÕãÎ×äÓÛçÒÚæéíóõ÷úôöùóõø^{¤*7Ic€©“§Ã•©Å”¨Äš­ÇŸ±Êž°É¤µÍ£´Ì¢³Ë®½ÒºÇÙ¹ÆØàæîßåíáçïåêñäéððó÷ïòöîñõÝäíÜãìÛâëçìòæëñìðõëïôêîóâèïñô÷öøúûüýúûüþûíÿž—þþþÿÿÿ!ù•, ÿ+ H° Áƒ+A9`à€0#B #æË% v À1¥ A¢ƒE•Œ÷„\ R •%`D åc—8q†DdÅELuP.aIŒŒ˜"ÍDˆä£P£J½ ‹Õ=|fdlJ σ¯`ÃzHñæ Pxlýè5¬[ #Rp3ċڄ\ ˆÙË·/–'yò\Aè.S¢ˆ)I¢$ˆPµ”¶LšL¹re2쀜8¤€ÌÖä€|§:RëÀ‘ÃÆgÚ ªÁ±€H±q4H‘­x?náA¼8qœ;vèÈAP£µA& ½{Ð"5ÎýzA:çiÕ«[¿ÿ>£M ÈŸ„nÓ˜"@ *ïpÅV†/Ž\9ó0]À±U$èÖ#‰Ò‡!,ÆdˆÑ…Y¸‘‘º•ÖÃwª±ælWLÑ@FGð¶H"h—”Æ^l±GSDá„¡#úíÇCË‘¡Äd$" €†Ca|Á|X!…O,GGDÑ)jÈajŽG„d´Ci˜ …WPEL$‘‡t1Ç@t ö¸Ìñàà ±ã!Ú8$t1‡@º•0cN,jEÄ!D’æp !dd `ð@˜HÐ|@(„P (õêk%;rampartc-src-1.3.0/docs/images/icon_alert.gif0000644000076500007650000000214011202454500020754 0ustar shankarshankarGIF89ajgÄÿÿÿýþÿÿ((ÿ;;ÿQQÿ__ÿ~~ÿ““ÿ––ÿžžÿ³³þÎÍÿååÿòòÿøøÿÿÿ!ù,jgÿ` Ždižhª®lë¾p,Ïtmßx®ï|ïÿÀ pH,#AÃ0h ¤¶pZ‡©VÕ \­ˆ­¸tøZ ãt€iv2Ôâ¶õ ×ÊÝ‚úôÞdäõH^wt€Glr…H‡mŠHewŽFw‰’@ Œ_ ˜™6 ¢ ŸW¡¢ ³ ¨1 ´²²m½²­¥¸+ ¿fÁË ­ ÆÇ%º¼Ð¢Í_ÏÛ¬Ô×# Úà¢wç §™º­ë²éò½â™ ñò¥‚f Í­[`­P¹z n ðÊIAœ¬Ã@µ‰kä˜P¢ì\«[ £ænD7'hPÿ$[§dšŠçÚ¥¨äl…ªs-ÓçMo,táĈäHY2WT1“¥ÅNhI§t„Jôƒ6a\$Û7 A”)0¡¾¸j&«Ö©# iî«Ö6n]ݦ ä´½âºh£Vî®H„eg—ßO…õr4ÁbÌvJ·Èà^}_4´WVfG ÒØ\cî2Cv-CðøÅI7.Ëj½£ó( €ÞÄÁ6Ú.~:{[Õ²osþ’ ÇÑÏ9þ.ƒ>ö‹Y +ïñ@{‚ãÕ¯ ÆÁÚòìr|¡ã(ð¶Ù¿Xÿ'¶vù3lOŽñå=ŒÚé•4ãáð‰ø¶Œÿ€7< Vî@`èå¥#)é 0Bƒ_pV§¡y<$÷a ‰4þÅ\‹ :ÑT¼X"‹:ÕDs;d· Œcáˆ7þ¸CBÞP£ Ò ”‘=zˆ 4Ò醽€‡˜”¸`)K‡ sw¾S¦„$fRa`=Øf%úHsb &úà£0sÎäÍ›)¸iç™3œÔûÉeœ .£¥Rw¨8ƒl^á¥(y–Ù œyX_‘#ÕÀÇʨb@ŒÚ Ÿ#|z] E„m¡Â * ¦z&€\ÆàÏaù¸(G)𫠹ɑa kÚšÚ6MªàÀ¥ÿÌ`ÚHÃâ`[Ý•ð,(Í*µM¶4$;[~xQÀ l:V°Õ"ç]N2,tƒ¸¢ ZƒÓŽdï¼G!î¼àÀ»V¿Q!‘œ(/ûî¾+‚óï ¬ò[׊"ÚyQª®×ÒÃJç<ìCÇã‘w˜Br-…r¡ ÊÊrð‚¶´à€*ÛÃ0‰ñS @@$q=^µ¬FÄõCåÒ0{Ø®NIGSO­šÔX_4Ž 匵,÷lBD_Cµ³$º µ -¶J›¢6Û?7€ÉÆo¿€76{çí÷߀.øà„^G;rampartc-src-1.3.0/docs/images/icon_error_lrg.gif0000644000076500007650000000277311202454500021656 0ustar shankarshankarGIF89a ÷ÿÿÿþþþŠŸ¿Ž ‘ † i c _¨FGŸBC£fg§ w t [ ž¼¹³­¤ ¡ Ÿ – “ Š ‰ ‡ ~ | z r p n f ¶µ¯©§ š  Ž … ‚  y w j  t s g ÆÈ·É!{lZ$&FHÄil®fh¬jm“dfÙ¨ªÄ#¹"¢!Ê)¾!,¼U[áÐÑÌ".Æ$1Ë&2Í,;¹)6ºW`“)Ì1BJL¥-;v!*Û¯´ëáâÏ6H".Ë8KPÑ:Nh']"†-9ä±·¿8KÐAWÆ>RÓCYÍBXDš=L•S]ãÕ×àÓÕÓG^¼@UÓJbF!H"M%ܶ½ÖOiT*ÖPjÖQlÑPj½IaH%£Zh]#0’9L= ×UqÑToÆOi¢[jØXv×YxØZyJ*ÊXvÚ`Ö^~e-<˜E\å¼Ç^*9Ûe‡Öc„ÛhŠÇw޾s‰{:NÛiÐ~—Þo•ŸQl…Ia‹Sn’[z±o•µvž™eˆ·{¤º€ªbƒ¢s™™m’¨}¦«„ªýýþøùûœ«Æ­ÇÑÙæÐØåÙàëîñö[wŸXsšTn“Lc…G\|CWuWq—RjŽPh‹Ne‡Ka‚I_H]}DXvb©_z£[uœ5D[gƒ«q‹±{“¶~•¸—¹„š»ƒ™º…›¼†œ¼‰ž¾ˆ½‹ ¿¡À’¦Ã˜«Æ¯É¡²Ë¨¸Ï§·Î¬»Ñ±¿Ô³ÁÕµÂÖ·Ä׏Ũ½ÉÛ¿ËܾÊÛÃÎÞÂÍÝÄÏßÉÓâÈÒáÇÑàÆÐßËÔâÍÖäÌÕãÓÛçôöù*7I–ªÅš­ÇŸ±Ê¤µÍ¯¾ÓºÇÙ¹ÆØßåíãèïÛâëçìòêîóñô÷öøúûüýúûü‘3.¢@?›=<ÝÐÐÛÐÐÿÿÿ!ùÿ, ÿÿ H° Áƒ«±ZÅʸ‡†÷-›4„»Ø@€ÇÏÓvêF‚ï@ªüXï3’§.žüWÍc7e8q‚¤wMÌSìfN[IÜ0˜øòÉDÍ#¥>„¢J•ʆ—¶«ïà ;ÙTÀ”`Êå,]º[Ī àê‘ɾ·pãòÓGW3ok1v½4©¯_¿¦—*5j©O¢´1% ²\(L˜,ARd(7™²ìÊm€çÏŒ=Ž<ùP ze¾²¦÷õóálÖl ÏiÚwÛvÙ|'²¡‘¨“ëáØP%ÁZËaÈd}m_š’‹¿W¸R´O¿]‹IJ®KM% ªF¥D Cž<0=ƒ%;7 3 2åããVUU’‘‘ÓÓÓ«««lllÿÿÿ!ùµ,ÿk H° Áƒ",c…É"a)<ØE† 3ªD|5‘3OjbãÆ S ÂrÅaœ,VˆÑÁE‰-\HQ)KVKƒj€ÔPA#Gš#F|Àˆ…§¬Y? ºYäE“^¶PAò#LħO£ \ó%‰0=H9M‘¯³h‰˜ ±4%Ê4I"I*ãέ…À„ ÀñÃçÐ"J‚µ!KîÁ <p!…C„öôôÒʃk)Ѐ„ rî Ê£§‘#Lž L]kA 0høƒ'P¤K–8…"%jâ@2tðða£K›:2u*•*çKˆ1"Ou**…j«V;rampartc-src-1.3.0/docs/images/icon_info_lrg.gif0000644000076500007650000000254711202454500021457 0ustar shankarshankarGIF89a ÷ÿÿÿýýþùúüøùûÚàëUm“ÑÙæÐØåÕÜèØßê×ÞéÖÝè 'S(Bi+Fm6OsG_ƒH^€H^_|¦]y¢Yt›Vp–Sl‘RkLc…J``}§Xr™RjŽQiOf‰Ne‡Md†H]}b©LbƒI^~e©gƒ¬j…­l‡®mˆ¯o‰°WlŠpаq‹±t²u޳z’¶g|š{“¶~•¸l€˜º€—¹uŠ©x«ƒ™º…›¼zެ†œ¼ŠŸ¿‰ž¾t†¡~‘®w‰¤‹ ¿€“¯¡À”¯£Áz‹¥¤Â’¦Ã…—²|¦Ÿ¹™¬Ç˜«Æ—ªÅ—©Ã¯Éœ®È ¸¡²Ë•¤»¦¶Î¨¸Ï§·Î©¹Ðœª¿¬»Ñ«ºÐ¡®Â±¿Ô°¾Ó²ÀÔ³ÁÕµÂÖ¶ÃÖ§³Å¸ÅؽÉÛ¼ÈÚ¬·È¯ºÊ­¸È¿ËÜÁÌÝÃÎÞÂÍÝÄÏßÉÓâÈÒáÇÑàÆÐ߸ÁÎËÔâÍÖäÌÕãÎ×äÁÉÕÓÛçÒÚæéíóõ÷úôöùóõø\xŸc€©oƒŸ£¿“§Ã}ަ•©Å”¨Ä¨Šœµš­Çƒ“©“¤¼Ÿ±Ê¤µÍ£´Ì¢³Ë®½Ò¤±ÃºÇÙ¹ÆØ¯ºÉ®¹È³½ËÀÉÕàæîßåíáçïÙÞååêñäéððó÷ïòöîñõ¨µÅÝäíÜãìÛâëçìòæëñìðõëïôêîóÒÙá×Þæâèïñô÷öøúûüýúûüþþþÿÿÿ!ùµ, ÿk H° Áƒ*\ȰáBqôàÉsGΜ:qà´A“æL™1’Ò0Œƒ*­“RÊš5`þ‚…'ŠB8NÒJ)`%K—±þš)j(%ù|Ò©råOv‚…J”ªU¬ÜL:ˆeO§ì4h0!P ª£T±òƒêÓƒtx‚%KÂØ™B¥ÅŠ*¨WDÆ‘5—îŸw÷ŒÂê'Õ§W8ù8èæ'P¡Z9hÐH-ÛT7•2…ƒkKÃSCéõÜ÷¯hSÐ8h õ̪šÖ`b£ÆÕãMœLRÀAŒƒd0S-ªê„»¤:m®€A|e;x`8t]6r[5{c:w_8nV2qY4ÿÿÿ!ùÕ, ÿ« H° Áƒv¡¦á"I“QªÔÈ$C‡}z”p % 8€Ð A‚ %?|À!ƒ`Hu¬#‚8HØ‚ˆ+~èÙ³çÌ™5·zq‘€B *jH­O=C‰Eƒ¦ªƒŽ*L0 á©U¯bÕz†+>idœä‰hñÐ(2D€#UÚºM“FMRƒ”*ˆr#í# `‚ná5[^lta‰´R$‹žrs¹ øàCm_ÈO¬ŠœIi6nh„ÔA ¬X"'±acŽd1}pÃéÒêà¡-t eF+sþ„†,H›7\¼€ÿéu‘…lÛŸljd%u–#IØÁT)zlEÓÇÏŸJƒH†„tÌ' #ürP"1ì ˜ejDY TÜQÆUbÑ1y‚ofÛGDv…—d1 %<‚Ñ0’ šFdƒ\R†%‚*©s)5n‘œoQ†˜ˆQ$‡™È&ÆÄɈF*×…d‘4r"©¨²‰' 0sÐ-k`ÆÆwá!™QŠI¦(¤$sÐ+GÂÁÅ|‹L"™"@Ž œtòÌAµ¸ÁE|NB‘d¬Lù ¡¶Ür 2ÙâH£rÑ*¬”bÊ'¡Rè-®¼²‹(Ó'E.fg”Ѝ§h2Š©•¾Ë/Ît„Ë!ž¦œƒâŠ*,²$#MGñÂK/ÀãK.¹(sk'•.3 1ÅŒÂ,³Ã`ëŠ0¬~kn3±Ü¢ª¹ìVCÍ,»jÖî·Ó3Ë2óš» 4Í$’¯¹ºDÓQ@;rampartc-src-1.3.0/docs/images/update.gif0000644000076500007650000000030011202454500020113 0ustar shankarshankarGIF89a³ Ù•\ëÒª?!y‰’ÄÄ~LWA(ç²xdG¬ûüúϾ¯V.°®¸Ü6+Vqg·!ù ,mPÉI«½8ëØßä!HhyÁ7’åE"[š¢\Ó¬'à O†ÜH °vhzÈ߉u  À"yÚ.ŽF#øJ‡¬Ã*ö` Ž<ñ ²cÀ`Ð Af{ €‹‰ŽŽ;rampartc-src-1.3.0/docs/images/icon_arrowfolderopen2_sml.gif0000644000076500007650000000123011202454500024011 0ustar shankarshankarGIF89a!æÿÿÿâæëÿÿþ€€üùÙúò®üöºûöÉýûçþýôøì¤òã•õçœä×™ìÖ}ÞË~òàëÙ‹òè»íÕ|âÊvàÈußÇtÙÂqÕ¾oîÖ}åÎxéÑ{ÚÅtïÙƒèÓ‚ÕÁ{Ì´iØÀpѹlÏ·kɱhÜÄsÓ¼nDzn¿«lijzãÜż¥`· ]±šZÅ­eÁ©c ˆO«”W¥ŽT”}IŽwF™‚L†oB­¬ªh=u^7jR0Àª‰ìãÚVUU’‘‘þþþòòòmmmÿÿÿ!ùC,!õ€C‚ƒ„….-ˆ,,„"!0…‘’C0 )*,30%/1“£‚ 5¤¤2ª ¬®&#³´“3­!/6,-44C?ÓÔÕ>„1 "$Ï56-#-'‚>=88Bׄ2ÚÈ014<+ Ñùh÷.^¤( œQãÃ*XÚ>Ì@Gh 6¼rJÌ|Qú›iãbé“g÷çß÷éâ÷óñörê—qû£|ÒŒlðyè˜våš{ó£ƒäž‡Ç›Ž¾”ˆÐ¢—Œxwÿÿÿ!ùÿ, ÿÿ H° Áƒ‰dÀÁŠ”‡N¡eI„ŸØ@€Ç¯Ha’àF‚`@ªü¨æÈ’ .žüGÄã8q‚<“äÌ^f YITÊ ˜nÞÈDÄ#¿sè¢J•N“«`ÂÌ8ÙT8A`ÊÍÃB‹–4ˆ àêž·pãæñƒ CÖbìÚoŸß¿€ù)ÈGOž<8ØU©DŸ½yîܵs¡ØÉ€Ë˜/ëÈqà¼ïÊùS¼Øc|õ8X7Â^›9wìÀA»FyëlÐM[8 LK{\`Ï:ÕÙ®M{\€åÌ—kðc×î8GiÏœ £r°«Ê¤°ÿcWNîО)Ûu¡;lœ²qÀ¨GŽÜ¸oª›ùºÅšƒ]%àÆ´‘#Ž7Ûd£/«¤â$˜@ÏaÖ‚9Ü`ƒÍ5ÒijQ<Ÿòˆ*¬“CA@¼Q f ¡Æþ`cM5Ñ<ÃL2%óI+¬H2 %sôCXÜŸÛD3Ëô¢K,´,"‹'†LRÉ%™#A?°aFd¬1FÔ,£Ì/»Ôò%ÅlTL'™`¢‰+œxrA>Șa ÁÜ‚J#F¢‰1 '›trÈ+ˆàœ@\œA†\‘> Š…x‚hÇŒ‚¤°€Š(È ´…™Jê°ˆ*«°Bˆ˜2Ë"§ØB ( Œ’)¥˜¢Ç@9h€S<Ñ„¹Y‰%˜¸rÈ(³ " )‰+Ë,ŠØâÀ@2TAE†7X|Ô!ÇvØÑÇ{è¡G CL:ÔN€±„E Ä@üÐ…[ôÀó݀ÂI+€Á#¬0ÃCŒÃ 6ÐÂI!p ‚ŒàÁÊ$P‚ |p ( ,̤óÎ;rampartc-src-1.3.0/docs/images/icon_arrowwaste2_sml.gif0000644000076500007650000000114111202454500023000 0ustar shankarshankarGIF89aæÿÿÿÚÞé4WžðòöùúüÒÙæÚà냗¹…™º±¾Ó°½ÒÑÙæÐØåÕÜè×Þé`}§\x Ph‹EYxb©Un“`{¤h„¬j…­l‡®k†­y‘µ˜ºŠŸ¿‰ž¾ˆ½˜«Æ—ªÅ¯É§·Î©¹Ð­¼Ò«ºÐ±¿Ô°¾Ó²ÀÔ³ÁÕµÂÖ¶ÃÖ¼ÈÚ¿ËÜÁÌÝÃÎÞÂÍÝÄÏßÈÒáÇÑàÆÐßËÔâÎ×äóõøc€©š­ÇŸ±Ê®½Ò¹ÆØàæîáçïðó÷îñõÜãìÛâëçìòæëñëïôêîóöøúåããVUU’‘‘«««lllÿÿÿ!ùO,¾€O‚ƒ„…‚'!!;< F†‘† 3/6’ž‚)B—AŸž+ 8—17*ª’+?C77D6„KÂÃÄJ„*5——C%9…JIILLMMNÆÇ 11,(:†JÔÖØ†)7Ë2#"‘å×Ù…êË8C-:’JMõ Xwéˆ âùó¤€`6Lx°P+Ò‚Ë€èÓ¡¢!.–9Ѓ£GC`)"€‰Ž'QF˜9³P ;rampartc-src-1.3.0/docs/images/nw_min_hi.gif0000644000076500007650000000005611202454500020610 0ustar shankarshankarGIF89a€ÿÿÿÿÿÿ!ù,„sËP;rampartc-src-1.3.0/docs/images/nw_maj_rond.gif0000644000076500007650000000006311202454500021134 0ustar shankarshankarGIF89a€ÿÿÿÿÿÿ!ù, „¦Ê š“¡;rampartc-src-1.3.0/docs/images/icon_warning_sml.gif0000644000076500007650000000110011202454500022160 0ustar shankarshankarGIF89aæÿÿÿ¸œ§º¡«b`awr}“ޤ˜ º¡¨¿¬²Æ~ް„’²j| £¯ÇfsŠ„™º§·Î·Ä×ÄÏßËÔ⣴ÌÜãì[M@Kƒ? àk®T£N ”G J$ùwñsïrêpÛi×fÖfÔeÎcÍbÇ_¿[¼Z°T©Q¤OšJ E D E ƒ? i2 çnämÃ]¹X·WµV•H ‰A €= h2 ]-Ëbùzù{ìz&«Z¿i&×iù(Ëj&ùƒ1ùƒ2ú†7Ìm-D2%Ìp4úŠBúŽIØ|DÌu@ú”Yú˜aæ\Ì}R׈[¦v[úmI:2̓`û¡vû¤û§ƒÙ‘s=.()ûª‹+*û­‘ç ….!Ó—<,&é¤5&!:*%²‡y*Švp묜*,-¨‡‚š~zÇŸžÿÿÿ!ùv,€v‚ƒ„…† †…oae‹ƒd][s’v iT ‹u^PW†\Z¥MI…gXU¥GAD„SRQ¥?4ƒVONK¥)#C‚nJHFE0=7'6*v B@%¥+8, l !5"9¥.:/Lt"$&(-3:øc‡ Yìø‚f3càÄ‘#¦ ;;rampartc-src-1.3.0/docs/images/newwindow-classic.png0000644000076500007650000000166711202454500022331 0ustar shankarshankar‰PNG  IHDR Óº&tIMEÔ 8e1 pHYsÁÁÃiTSgAMA± üaPLTE0`€€€ÿÿÿeŠtRNSÿÿ×Ê A+IDATxÚc`bbb€&›‰ L2022"ØÈâxØ0sÁ‚`d€ØÖ‡ZËïïIEND®B`‚rampartc-src-1.3.0/docs/images/icon_infosml.gif0000644000076500007650000000011511202454500021314 0ustar shankarshankarGIF89a ‘ÿÿÿÿ!ù, ” w¡šƒ©›lzO=àwi€XMèbŒL[;rampartc-src-1.3.0/docs/images/help_logo.gif0000644000076500007650000000410111202454500020604 0ustar shankarshankarGIF89a”4÷ÿÿÿîîî111üüïþþôþþûÿÿþýûÀúùÞýùºýú¼ÿþîüö´ýø·ýø¸ü÷¸ýø½üøÁüúâûùáúùêýõ®ûô¯ýö±üõ±ûô°þúÓþüêþýóûñ¨ýó«üó­ýøÖüùâÿüæþûåÿþöüí›ûíüð¢øë¡úî¤þõ¾ýöÍüùçùç“ñàùé–ûë™øè˜úëšmb6»©aüä…³¢_ûä‡üæ‰òÜ…øã‰öá‰õáŒ÷äûè“ùæ‘ñßüè–! 1*KB!_T,^S,ZP*OF%SJ'dY0nb5l`4h]3ˆyCi]4‹|E•…K~GˆzDwk<©˜V‰{F–†Mɵh¹¥`¨–WëÓ{äÌwâÊvàÈußÇtÜÅsØÂqϹlÁ­e¼¨b§•W£’UõÝóÛ€ï×~îÖ}ìÔ|èÐzçÐyçÏyåÎxåÍxʵjµ¢_³¡^¯\«™Zª™Y¨–Xúâ„ùá„øàƒöÞ‚ðØéÒ{Ô¿pÓ¾pðÙ'! ;3SI'иkÌ´iʳhȰgÁªc–„MÚÂqÖ¾oÓ»mѹlÏ·k͵j¬™YÙÁq׿pÕ½oÓ¼nưg¥“V¡T+$‹yFÁ©b´œ[²šZÀ¨b¾¦a¼¤`»£_º¢_¹¡^· ]·Ÿ]‘J}I{HÆ®fÅ­eëd”‚L’€K ˆO­•W«“V©’U©‘U§T¥S£‹R¢ŠQ°˜Y®–X’zG—J“{HxFž†Nœ„M˜K”|I›ƒM™L—€KuD‹sC‰qB…n@xF†oAg<}f;{d:ƒk>|e;x`8t]6r[5{c:w_8nV2qY4áááÕÕÕÈÈȼ¼¼¯¯¯¢¢¢–––‰‰‰}}}pppcccWWWJJJ>>>ÿÿÿ!ùæ,”4ÿÍ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\ɲ¥Ë—0cÊœI³¦Í›8sêÜɳ§ÏŸ@ƒ Jt¤Ka’6¢TÉ‘¥K IB”H‘¨HEwZ ¢`Áƒ(°ˆ 44€æTVœ—bHH@ B‡ xE´A‚=|ø AÃF×Ûš_^(¨`€Ã mäÉ£gàÀƒÓ¤¹´êðLH(Ø€"äÉ•-cF£¹O5µ<ˬô¡@ §óÔ0BDÐ#VX·V£faÙ0-Y!j&‚¢KÔ$Íëâl¸ÈBó'POÿ™Nž öì~bswyˆ©{G‡rÅôMkзysˤ¶mÙ\”7ô_€.IâÁ 1X–…tJÜpÓáÇ~qx‹Iâ àEÝ âuø¡K‰xà‰ N\A ãEGÈmÀÑÅa£‰Ùe#¢7Ûl£ 9â`c‘,)r «¹1!r<1ÝvdF”ó£‡A’9¤™q39…sä“h²ÄŠ >d–†rI!Ó%qG_RâÈ#ÂŒy¢APZ‘7ˆ3šå˜¨J‹ÈÀƒp×­!…tƒT‡d0u‰TÊ(zФe*£Ž”“pªÿºR()ôàqù±„tXl‘‰•XòH$Tc*¢q»j£©¾4ŠdŠ^Ñ’‰˜ zU«°‚Œ²A‰7áˆ7ášIà«Ý”{.BvHκžå6߈#Ž7ºê¾ßô{Ñ)Òrqáp”aÆšŒ•$‰t»H'É€;‘Ý”3¢ˆM $ä‘äl<À8°$²ˆIŠè±™Øt¸q9Ý ¢È1cäI®cèÅt“<2•"¬´ÒI(£<3æÉ"Ÿ¨¦‡NjÓa8+Ÿ8b9ß$ùÆã”$8#'‰Í6*Ç*Ð8]›3®ÆÚ¤q8Ûp㦬éÂFvmä¸cÓm±ÐD—ÿr 3G#=â‰!£;6!§ýñå¤=6×\«M¢Ø!fM£P[NÐ6Érp]|ÙH%Ó1ÒíУøíÉ'ÒŒ N’´ÓNö‡Ú¬iÐ7d.þÍîÌD¹@ž‹í¦äa£²‘Lw„Ë]xaz%PM÷Ê" ˆâz.ºè²ŒÅQ›Ãh9ú–/NÈŽ.zA`—sÐðæ$Öæë‹2œ¬Q.LÕ!SqÅ+P‘ Qâ¯ÓE,dá‹R€OlŒ³Ô§µ°M.xñ $x?ñ‘mDȳ2NbU…T'L@îÉ‚ˆÆBP%65µªYæQÍ‘¹÷aP~d"Ûúÿ’n­%»È.@Do­k¡gQ fTƒ!4ófŽ~-î†8|xC ~ˆkc,×ÁŒüâÀ1‚Á ^4ƒ…Ÿàž3Œq d˜âLp Ÿ9¸F²Ç•#‹#¬°Áµ¬Q|?Ô ™˜‡h?Â+’—ÒÌ2é f$ß¡FhÐB ”)ÅH‰h^a”Ú¶á cŽÌpd¬œ$5ùA…Ãqâs&Õ’(’k؆Û!I’8)È#ÙHBþƒÍ“Xƒ¶p†LÚ¸†øbÐXDLèYO†ô‚û\f?…ÂÏò¤ Õ‰¾Ú™Ð†:ô¡ ;rampartc-src-1.3.0/docs/images/folder-closed.gif0000644000076500007650000000033411202454500021362 0ustar shankarshankarGIF89a³ ™™™‹‹‹zzzÿÿÿìììÌÌÌfffªªª´´´ºººáááÿÿÿ!ù ,‰pÉI«½xªN)KqA€™Ä0Hr@*)âî'RƒAp`ÅA:8B¡ `¬x‰‚b†¢ÑUU( ]JØa (€îN™è mƒwqG `Sc+&t#5‚CE5ZuA7)‘’f‡!)+ ‡qŸ¡z;rampartc-src-1.3.0/docs/images/icon_waste_lrg.gif0000644000076500007650000000141411202454500021637 0ustar shankarshankarGIF89a æÿÿÿPq¨Riy´~”·Šž¾ˆœ¼‹Ÿ¿ÁËÜÃÍÝÄÎÞÉÒáÇÐßÖÝè[vžYsšWq—Tm’RjŽOf‰Ne‡_{¤]x \wŸWp–SkPgŠMc…c©b~¨Um’Qh‹Oe‡Nd†g‚«j„¬k…­p‰°pаqаt²u²|“¶˜º€—¹„š»Ž¢Á£Á’¦Ã™¬Ç—©Å˜ªÅ¯Éœ®È¡²Ë¨¸Ï©¸Ï­¼Ò¬»Ñ°¾Ó³ÁÕ·Ä׏Ũ¼ÈÚ¾ÊÛÃÎÞÂÍÝÄÏßÉÓâÈÒáÇÑà\´u—ӧ߱ʤµÍ¹ÆØƒ¢É¸Ø¸Îèëïô®Ñ«Äàÿÿÿ!ùT, ÿ€T‚ƒ„‚EGD C A…Ž… F'2CC:?>ƒF:QQ–—™:<žG¡£¤—³9ª… ­®®£³'¾'7¶ƒ ¹º'::22¾5ÂTBź'¦ÊÌ'3 CÆ2£—ÉË'1Â@ÜÞݤ§Ê/ÂMQé®Ý»âîÂ>õ˜Æì’ˆàBXKÞtx¢…0¢èHÎ%$+„íˆjbB_ʆÃÁ]ã–1ä# ’˜˜ Ea¸KRZ"1!lÉÌš4a=Á©³„0?]AJÔåa4’5tHN—„)‘º”jS$„ÁàÊԪΠÂü5¥””LWi‘<vÀd”“S£Tu"Ã%a,<¡©´lN$H2+0ä$Юz› ø ŒY¯f]j¦âräÌH@Cá¹êÕ!ž‘˜÷ذ² Ïy0¹j&±]À`3Ö¸sÊðA„(ˆà`+;rampartc-src-1.3.0/docs/images/folder-open.gif0000644000076500007650000000034511202454500021054 0ustar shankarshankarGIF89a³ ™™™ŠŠŠÿÿÿìììÌÌÌfff³³³ºººªªªvvváááÿÿÿ!ù ,’pÉI«½xª ! À0d@ ‚@Çð:m.4RÛ €@ñá @žÐ‚J‚ …ìåC£PÀD%l¹ "(ÆÊñ`@@ {Ôê´¶uNo lO)L&s# ƒ!PxYE<'…ˆ–—M4%w L¥œBªŸ|;rampartc-src-1.3.0/docs/images/icon_sortup.gif0000644000076500007650000000016511202454500021206 0ustar shankarshankarGIF89a³ÿÿÿj´?S‡-˜ðZ}­ZÜ÷ÈJt)ÿÿÿ!ù,"ÉI«½8ëÍ©è‚ql!AŒXIZ©ìÐVGmßn§ï<;rampartc-src-1.3.0/docs/images/sw_min.gif0000644000076500007650000000005511202454500020134 0ustar shankarshankarGIF89a€ÿÿÿÿÿÿ!ù,D–P;rampartc-src-1.3.0/docs/images/poweredby_036.gif0000644000076500007650000000145011202454500021230 0ustar shankarshankarGIF89af&³ÿÿÿßåì3f@p0YƒPs–q©ïòõ¡´ÆÏÙâÌÌÌÿÿÿ!ù ,f&ÿpÈI«½8ëÍ;`(Ždižhª®§Ä¾p,Ï;Sâ{ã5näŒ2[²Wc"ŸMf¥F§Ò˜Rë#±F*Tœ…bi[XÑ ®ÚŠïòðK ¢ÙÎöµJï“ýuv7$f€}W<V…VZ,s†A.cBi”hžž˜Ÿ¢£j¦§¨©ª«¬­®¯°±²³´µ¶·¸¹ ºÄ¬ %ÃËÒÓÒÚØÖÑÃÕÛáâ» Á !çË Ø   #PÎ…w¼`è»@ \ ð{˜¾óúU˜¨@2Ðÿ&¨4‡õ& ¼XÅ—ñ½ ©a¢šX¦@àH N`©e€,l C*43iÁ£FV2L¶ ZÐŒBÛЧÀ®"¯ZæðꄨV°vC\|8‡‚øï¡du‰Rˆ›€©Ô´ š)%@@S pÇVlê.» -ðCp€rNÉø ¸3f¡ãB] BÁ¯|éVqY3¾…›;»{XÐË÷jD°®±Á‚I5L8"¥lw¡Z`É—?w,"s¾‹ d÷‡Ü°åÔ ¨Ÿð¼ƒáÕÓ³ð.±g½½´apñ¾ÛïtÕÉL@^¹÷Zòu;¶*eUÙ:ɉíÄN‘ÏõuK‰K‘DJ‘HŠ$…èmlßÙ>sß™_ò7xqìf¾ï{Ÿ÷yž÷ý> ¶m#xý׋€ï_þÕ/ÒÂúêåÓ_xâ‘éÓ3­õ5Ê•J"L¬+&úýßÿÙϯýî,¿5:õÆ«·=ô±3«ËÓgÃþµœ²\œuáÖÿzú™¿ùÖ:?ÕVLYªPhïoÑ"íïÿúßy|á{ÿ뵉%•F>xõC[¬ø{'Þþeû¶[7¦’Û{*ã™ç.Üwx÷î¯>øÖ ¯P±ehÐLYŠ…Jÿ­n-yî£s¤›A«åʆubøÄëýbâwâý‡víØÑ¿ÿäÛÓësÿ÷»ÿÚKOýC>Ÿ/É×¾öµo¾õo3+ú®Ž¥…Ïô¹µûÑá‹·ßy o7¼ñî[sÙ–ILJbÑgþòg? ±[ð'Ÿ|òã·_gy»­¾3[–ãn«Éy¡ª‘~ÊM'ý¨'Ð 9Y¢±Ň÷ïéžôjÕf®¢‰d"‰„óktYöD¸µõ4ƒ‘² ô mMÍf*ãy±ÊP^¬lm\¿Ê±nE¯DbõK65ÄMdbîݽ·ÌO-³¨œŒDX–[ŸZ‰wøÃÁ&‹©¶÷l%Ø`©ÎM¡’…LS;öÒ䆴üéÛîhèï#cÁwOžªdÇ[ üúé7|{¯¾ nåW éœÌ}±XCÉ7Lüî©Ñɱ3¶m¿|>ÕÑ©¢Ã'?DYcú’$Kã·Þ‡›JbÀ¯×kF}[ „ ksÈÕ‘‘ž®‰áÅL‘©÷²”KZ³NÈOTq áɱ™K>’®J^lŽxÃtIj¾¢è6•Œ…ª†<9“ªVK=;¶¶D[{z;Šó×—r‹ÉÁ½·ììfUF+Ôš)m0käXUÎ7%›ç–òî¾X×®>LÅÆ‡gÇÆ>r‘T–׊ù|¶kÏÞÆ¡N‘.·ìÚÞÞê6+³Eyu&#HÅÅFÓrY¹·;’¹<ßµ»éÚÙëÍ\ÜÈ.œ÷ùqOãèßñ­¯'þ™Ô™séÙtK½ß6T^.ûâ+"ùÛgÿ pØqíʇl[hü£‹”*¥E¶Þ®ä|¾Fõ7¾ûòï£M.ÆŽ`v>ÒÐdÔjÙÔr´»½±±›ébˆàZN"©¡áV½ãBE½äºwös9¢²š–P“ X[øb¾î.±R./•×òëˆU¦ÂÃ…6Š…†¦&± Y¼žYHxÅòК@zCX­h-Oqˆ,sŒ0'q˜¨#«"5yêz4Èoè[.ÊÚõõyÒLÏD›â½^²¾×,͘+‹´7†ef>üO‹´E—‚ö.ŸGXbp'Š‘“ÃÙš˜ë=Ô÷nÏ­VCfبN+MÍ]…Ò*¸o½ýnŽT.í'™xÒŸtÔƒ3]X›n:<4½ØÞ—,ÈVzqÊpW¦Q÷Ð4d¯‚ÎM\vyÈtÁ*—Ò¶ªO6ŸéIøÜÁððø|A0׆?¼õÏ®,ÅêëâÖwôÑZhfx¹TNã•󸂨!Å•ëT(ØÒÙ‘×ùÅÌ’ÇšZÂ<.—ò‚"õ®0æêÊ3ãî4V׳b)7>z phœ %Bµ¥Tfç}ÄÈôŠšN÷œ¼x½óP`fªŠV7‚‘˜i鉩¶{÷‹ 5ÌÔ-ÖæM¸6e¥KF¹T ÚFºâe¨}·}ÚCÖÒNdæÇÜóùñócK 8WÃÂÆâjÙ”ÅL©µ# ¬Uö ¦7”ÔÄxk2ÎÚ¨¨[ë+ëÝÉæ­»cQïm_807ab*ÒÝÁ"ÊÅ—O¶ßÛŸŒÌúRÃ@¿'ÈíÞ±#ïþÏ÷~û¨`<ˆˆ*bYÍý se­0:GrTL™r-_w5EE¶Ãç139e~j2HâºÉ÷ô¶9lemEõ¸ß}åd´Ý­†©m†¶¾1ü'÷½_q««Á}hwÛû—W< º}OO8ºeb2mÉeÛ*Ö•hWs¥T«ˆžO®—¤¸¤Ð UÉì»û^ÇJ³K+XUšMe,ô«_ÑŠXs}Sœð–VV¼˜r!„Ëeä)´ºàÃ8µ$Iɧs8‚6øÞyãߪdåg¿üçÙáÇîøôǯ¾‘›žÚ×zç7¾UYÒ_yîåý·wY6ýG÷<ôökÏþRwÛŸ å—®WV+s3s;?÷™Ã»V FyälÀ\n¦‚° sR×¶ Ûåªä6n=´×D¹ÙlôD—&JéÙ¹î;úÄÃOåªæ'—F?9é©#^?9gÛ³/þëÏ%®m¦0úOüVR©p‹T6…™|rkÒ«ºMaã轟ٺg@E³d] ¤°f—0sዃZÚ÷(8BáóêMñmïžF”Õ?úÎ7‡?ʵvy=±m…ÔxçÐö•ÅÊlz:U\Š%"|,lÒ˜ÛåYš__^\ô0VÀÍ ©òÙ+’Z§Öu7ŸûýÉñsÒtñÅE»J‡jwï?øÐ³¯ÏÔ T—lœ0TÅD]~üè÷M}°Ð¿s‹·>JF¨Ôj%‰Æ:ojQ\7åÅMÏÌ—×S=}LW_^Þ€AFËÁ¾Þ@@}æ¥Çi|˶O…8„Ï¥GøÒ‘oÝùÃ×~÷‹»¾ñ€ „}êÍ—þ• YyõÕ÷U4½ï®}…÷§¼áÀâ¬UÏ&”O„æ‰ô¾½}&úô7µ£7áxïÝ_­Øª°Ñ>tèoÿüI»;ùöˆá®r\жéùk3¤Ž©µ‚»¡.—ËXè[2¾p0ÙÒ91y%‰:Á†xy£òû¿~ñ®ûöÝó•ÏgÓÕÔÛ#¬‚q˜÷¥çÿyVKm¾ò½¿~ù·çWϽŽ4-M«±Á–Ã{~ú“˜]ºÒ½oÀ0„*ÎZ^ÊZu‡©ŒŒEšzg—”OŸgéõH$4záJ¬+ùÿþæÍ/ú¿záxÇ‘Þ÷~{ÚvÇÜ2¹ÿXç×~øøc¯üäÁ¯Ü{ÿ§bÑæáKKë×Fš¶o¹¾:3zæljn4¾½÷­ß¼UM]y? ¶Å¹HêtÉ£÷?òù#÷|éÔ¯Nß„C!|³çò‹ékM^Ï–Ÿœ8½}(8?™®USÙnläƒõ4n{ I/­ˆ•"nùdUdÝU_´¡\@*Ùl÷ÎŽ®»ÔïÕwGCÍ-çëK6Õð•ÁcSåþçЧ¿ÿз_yùÇÚä>‚F³³£óum­ÂbfûgnÑ—Óñžö©÷.{buB¹†x b._&$ LõöØ>®~ãÌ•·~yjmüüŸ|óÏö|À üçN\.2K¦Ó³+)D—tK¯íHt>àón¿s~l¤µ/J{š6f2]._½íÊ-ÌÜ÷ó{Ú÷wîð…#Þ¹Ìj]Ü“ØÒvî×W.½vôÁûg>Z¿Ù¤3ÞhtkL™=:|æÂÎ[w¸T•9Övþ)ÎK#2»˜^ëé«ï¸åȯœ©kê5¢!oÍ0—³…mÛß¿|éêêÈú@S °´îH‘/‘ETUë"·×yü Ÿ½ÝX.‡ú;¦ç×™"Ö~øqy¹ogø7?Ý.ÐE—rfݘ’ܽM¦’qÕ…í\M·l‰wìì˜9Q›©N²4Ãáãš»Z³•ÕŸÛ“š¸'ÚYhîþu—Wý\•ž¯… ™qo×W½%üÂÉó;ö*:Z_™;¸)½¹þƒ¿¹òµ¯½ðO'¸¨tñã³Ý]ǖ֖͘UÓ͟Є|Ûî›mØ'kÙú–¤®–qqžÜÔ*ÎrÁhHÒ±æ ÂGc‰0ÆÄhA 0ª¥!Š·$S3béú:ð‡ZX¨’*¥6ò®#ÖØ±¶’.¬¤}1BhÍPøæH¨Íe–(œU¬¢M³^—×À,2Tg…ù'X©¨<§]~µjUE4¹…g\4ñ†cª˜Sk¬¯>Ñ6(¦ßûà\¬ß=tl6‚P‘¹p,(É" ´Î./æ¼­:«ãd¸‰KÖÒ+Hvyžòà=Ým}¢]yý¹D÷±¥…Ñ]}—?lñ¾ŠR(®˜u!’éG9p\zë_p’®UåµÙÙªdÉ´´–hW¦n„ð˜ýø}ÚÖøƒ»&§5ŽÏö Þ%Ó4ƒÔ74*6naˆ¥3¥êdyñ¢;ÑOÐ’…£‘PmKßîsÿq±7á3ýòF¡¥Ûc•ãyrA[6p '8.·¶Ñ|°ËÕÔ¾0ºÐÚÑíKâ*b{"þr^²DËÈYÜ,K‰#Ýõß$cñ—~éìÙÉ·_y3“šm³:Ÿ…–AU³Öqt‡)±éá‡4ììKÚ,»P­*Új%M6îjX¾ªÜõ‹S®z×üäÉ4Mf…JM£ân·A7XÀÅÒ´]yíZl€-Q}¬”Ÿ˜]æ#þLJÖ…åHK²X©D¨0æÃxwÈŸZ)ãá¾ÄúüJŸ(är”ÿì—ÿxeÉèjf¨pjyç1Õ¶B¤á¥õÝGö ¶­®gõ\&ÒÝŽ±ÞôJ‘sÕŠ˜¡Xµ#GVJLÞTê}mU¹>1ÞÔÒzûáþd³ÉèË´6ë ´ s MCj SSKÝûêt‘îjKt÷ïw¬´¡«ÍÒÐr*Ó½gWA¬ÍŽMÛJ3XU˜ 7ÈÑ=Aß³«ýÔ'£gÏŸG-sqv†$ì‰ë+¡0uìàg‰ÀÀÒb‘4±Ôüåäîm¾m!ÿÖF»óÁ/ã‰,Ï,£ C2Í++3q&.2%w½jl‰D¹/<ôg¹¢”컃­ËéÔì‰T­ _ý?_$Í`©˜«ëëfsaRÃæ¦3¹ŠªO²ÕJ{ÿVÅŠpŒË!Ú¶ÆÉ†x,¹ýƒ<1vþœF ÛÛ·9E°“nhÞµ¼\¿ÎÍøu¢9ÙƒhFÏáÁˆ;·Z(WÖ;¶µýÛO__8ñ&årÎ}Ð?ÿü÷ãŸJ¡¤[†\«눅˜¦ Iéš…“à –Ûç–eËÖ%o D 5-ŒfqÄF$±æñ°²b“4f!x­" –]×SU»”ËÚˆ© ¡6^*ä¯i:n$džE‘X%/ÐmÚN?tI 5ÔWY­‰|0(—«(ªb$Ãp›u»ÊùŠ©Ôõa]65K!,ÔÂpD×m…•ð–"xQ¬©²Dó¬ÐPu³!,ŽÅIŠ-¥ó&j@h†³ cÚ¶®k.¯K“5—ÛëˆE7tŒÀ’0u½&IårŽ?š‡‰ZbPû,UUIQ–£ºnÐi™¸mY$Ë (®ŠUÛTݰ{E)©&Òîõp”¨I%”ÄM@Q7ÔªÆðÅðUQ";˜ˆ™†Zˆm›¸(ŠÂ* Ý$I §(Ã@ PU1tEAM”âhÇ Ë¹n6,Ö¦(2Éà°ÑI¯kšD2f;£–e¸}^Šar¹L狆`ý ÏÚš.”ŠjU‚7²¬˜–y³ CÁåq”cË0IŒÀ\–!Rwƒ!ߨ\©p4GXºæ<†bvpàÇk2€©Û–-Wkp' †3 ’¥¼[Öš«÷Ïi7‹â,Ñü¿ ‡DÁZeY“*`TÇ_Ârá %lK7)†¢x—¥é ›Dv¿ §›¦nÈOUeM©HÏà ¡Ã $†ÀQ§– (ˆÇÔM]Õ1’²M]Q5 £©k…S´ œ°#HƒÁʲ1ÃÐù€[¯i››p@NBÂja@Ã0’$ ÅP Ö04k™¶aéga°óvˆ ã`™plWL(IÁαLÌ2´âÈ3åbÕCmssG@‘@E†Ê¶¦á¤s±*”^˜dh¹ª™–UÌåM­3kiÓRaIˆ 'Ig%8Ä C0ÜBP]ÖP…iAºðMÑëb ¨‚Pž@Y†J‚®ÉPeÙK% „‡(NÃÌI-aëF`ÿAXšaš0¦iÚŽ€°8¤®›'A¦f;D¢šp†àp$°ãÑÐÀã  wpè¸O¶¿ÿqÒíѰÀM5ú¶~~€”¥ZpB†’+º9È‘]™šnC)Ýñ¨Ëqºª6|´P.–@Õ˜e{~¾û®û;u»eqíߎìy§H°0’Âö?Çtþ…i<ËŸÀ)Â@tS5ü™Jó t¾ŸØ÷¬“rÜæ»¾ãïÿ^ýÞg jU±P„ÚL°Äè¬ €°1‚Æ”¸Qq0Ë -uø@Ð`pÕ$ºY„ágË#χv"NÔ‰’$µI„sq›@;ãkºQ~ʹÿê 8Yµ ÃÄüFI+jš J¼@w6FsPÐȦƒbÖfEpB#4Ò µªBÒNæÉM8€)‘3‘­–«i˜al“öæRÀà ›oŒÍë VÜ4yÀPÝ,=°FGY@8  ã@IÔ "¿Q)A±PœÇMgaPhLÝ®I¢ÃÍÁGoÜcmÚŸR“XÞ oTE³l¢é›p8Ù†9!"pk 3&£*ÐŒ _(¡) T‚¢ Ið‚ÀMÝœ{ ØòÜ&¬7–Œ,¡;¼°ŒÍ“z·T“ëPA0Ì8ˆOíÌØ ~Bšø±kË÷ʣσWùnU¸t'ªº9… þqc †›e†vÏ^:dJ“u5wééàŽÇ —Ÿ±MqÊ+ wJ“/ˆˆcd› ØˆXà ë⥢ê&ñmSSMp%—Ïe^©BÕñ¸ TCu(‹£4i&ªÕw€“Š:ï…Ú†˜x²¥4ó˜«\*•rCceã ÝQ™‰Æò™rM}^Úå‹”r%çP´¦›´‹öo{Tû‰¡Êðì•Ô´ Ó°Q%jÕEà¼×%–k°=2PÐ0N#iJS ÎÅšV)•¼Aø©À‰,ªBAQÔ„rÕç·6Ǥ8 %Ö64fÉM_G|¾ £U:ø;Šxý? äòx,hæ dB5§K‚šr©Šœ A®TuÃÒ4ª2ø8‡ m) †cEmf…~ >·Çët°¦AÝÃ(Š)ª…"†÷P p:6¯Ûû`±qæQp-šb1ÒÉ>à(8¥ŽÂÉÒ,ÌBr ضf¨PøÁ‰ªƒï’´[µj•&I€º&ÆÍÈпAßéæH‚€SIè`¡ØŽs4­ÈZMª‚¹ÖÊâö,ÿýõÿÿíÔ;¶IEND®B`‚rampartc-src-1.3.0/docs/images/logos/maven-built.png0000644000076500007650000000160711202454500022231 0ustar shankarshankar‰PNG  IHDRZ#ž/gAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<IDAThÞí–»kQ‡÷±³HÀNÁ2`aÄW!&…D|³’W%Kâ«t"l,´R I—* Ø¥·óK><\fÜ™ÙMÖÝÀ\ÃÝ;ç>Îwçì4ÆØØØñºí6h4:Îïºí¶®ÞYZ­ ÛÁqèÌlmZ£;ŽF÷VêP¥ äôûº]ÇxócÞRÿt¨bUÎ×kxçùO8§ŽÒÝGÇ€ÔëÛ>¶®ˆ£ú‘öG¯×U°iß‚Êã¨x¤~pÓí G• îsÈ8òªÎ±:Žn R¼àÈáèo㽜o˜8úøîèµ”öZkK*_…Õú,¥µÕ8j5ŽƒcüüãõoØ­öû<;ûÎÁ©Åµa☼ý´x‘sO6K=K× ;uïÍönÛØÜ @[?9ÈÛaâXyùªxÂõæ‹Ó7—Rϓמ½4—q+]'ìáÛõí¿íØ•#kŸ¾Çh ÒZû¬XBDx2s‘ø‰¿ˆ_øŠ3K!´àŽrSz¼š¸Ñ.ÇÁýŸ¸<ZÀè bö•ê0`úÛÊI×q®ãi_ãd„í“P1•ÂóËM ±àÀOáCØy‚xêï á¯ÄÜ"mÌ*Ç15ó#HŽŽæ•=Ý™_æ9÷lÅ ÅAÌŒàF Öi-¯ ñâý–â ‹ƒ‘{tDáÍ›A‘V $&:ÎD|¸y×Q&QDúÛw¼;F˜ÁAG(©gŒ¬`§Ü4äUÃzÁ“øí#l¢Ré­*r‘¿±YtÓD‹>7 5¥˜*áÄÞq¸‚""M(=©›©¡È$stcƾ7Osn$…¹–¦¯TÓÈA…Ö­NwÅAÓ DÂÅî\ãôB‡ú׳ŽxK'ï)‚Ì¿izôPx¨ "¬ $¿aM¢å©Z\"éÊÿYHuM Þª‘dp@ŠW’¢Ã”´FfÖñˆ ’ÙÞ»ÍTx¯ÝÄŽú Cá!–Tó~Ť™br®EGŽÖé¡}†A-Ðôd\fþ±ØK¤É(~•‚ªarÕéÆþE¡‡…™‹µåIEND®B`‚rampartc-src-1.3.0/docs/images/logos/maven-button-black.png0000644000076500007650000000366211202454500023502 0ustar shankarshankar‰PNG  IHDRZ#ž/sBITÛáOà pHYs  ÒÝ~ü tEXtSoftwareMacromedia Fireworks MX»‘*$tEXtCreation Time03/19/03öTÊ}IDAThÞíYKK•]örJ-MÓ& ´S£$TJˆ’"¤ÒDÐ"18k¤ƒ JûAhƒ 8°¨ ²è†Qˆ(©4ñ䥴«¥ÑM=ßsZÇÕrßΫßèƒo›µ×»ßýžý¬g¯µö6¼¦¦&ì ÷ûý>hoß¾]\\ô/Ø©Õ_ƒA]VHW„Œ‘‘‘l#Y¸Õ-|øJKKËÉ“'aJ¦[Æxlá„ >‡¥³³“ºÄ 2>xð–={ö ‚à•¯_¿ÂÎ߃¥µµ•Þš››CÄIII¡î·oß@•:vE”12F0¸+£F0KÀ{ÝÝÝ K‚A µœ_dùàH^hïýéª_wü°¦¦&ù!`dÒe•„jeÁ¿‰#Ƨ’:;ˆ¼A$;p$&&..¥Ók°7"¸Gþ@”U©ÄN)Xme‹2@v¼ Öíü4!!aûöí™™™ hŽïß¿0Â6..îÝ»wû÷ïONNFˆU 3‡¢¯$dò㇑Ú_¿~!ðõöö¢DÀBèÀ„cÓ¦Mw,8+**#8 ØŠw[9o;éè z!—ÛxR AŒŒ D}dÒ¬¬¬¿ìøùó§‘Æ3 *Žüü|Tb(FèK¼MtQ@q,†*ÖIáâ–A]ÖÉ¥ô)ä?9;Œ½K3uÃîÝ»¶mÛf`#Boá–(4øü"©¡Ðäøñã¶õ7‹’’¶ß»wì8% ûøñcèûöíƒþìÙ3èHðÊT}}}°ïرC‡††¼©ôôt|ÂçóQ¥€Éû\@¼@kÃi Pç¸}íÚ5è¨Í ·µµAGÁŠÿúõët,€ÇèGŽ9tèÐÝ»wù]bš éêêâµÉ1/_¾„žD`¹páÚºº:Z¤5Ò®‘« À‘””ä×ÄÇçÏŸ>”.ƒòäÉèEEEl§3ëà§Q§ªW×é”Ä:ñfÍeë×ãóñè°ˆÆ?ræÌcL/ˆlˆ¿ßËeÞ)”SeÆ-a±wï^®\Ø«Ä&òvH»¢³W¤}×®]¹¹¹;wî”\Ùã¬Ô××£={ö¬<Ëï´ ìàÑFvà„‚±7x"sÐâÈ£Ø!r¼‡æO8˜ÂžïïïWâ4³F2…¹Ó°$çÏŸ×ã:s*ðÇž'w‘Â]Ed©G qáÀ˜ G•™6ϳŽ+•G鯀‚‚(IrN[ú³e—/ƪ’KÇ`U*yá ?’#t tëÖ-ÐÑQÖ¿2vØâˆ-^Pyñâÿn9F:ÙÆ¢ºz­L‰y;¸$å=ï¼:Åo<¥”‰KÛ~vìs›P;ê\@²G±€Ä}ENX`èIà„ÍÇ®à‰–îò¼Èððp^^~ŠN™h”¼#+Wùˆ“B¸Säëz½ë±6ÖÄ===ÈÇ•••èÖÖÖFp­æ÷&›7oFÝ‚;Å«Ê$ ¬¶ÒÎA e˜íŸ#r§(‘U±ë5N¨SrrrøÆ4;p¶Ó®í`0Ê6TJÈsiii8¹È´¯SC¯Mt…»2„{/ôÿÉùüøš?þWSÈÙË.Ýë×·çÀ¡éÀˆ‚±B3*ÆãŸ2̸;BÂR‡_q% ,dÔÀ±aÃ=d¸Ñ‰ßºu«w"8ö°Çc¾~À_©ðeÿ¯GñÝʵ½C¼Á;Õ·ŠbìzY¿Þµ­.ÇÓ§OÃþûÒ^ö?ä$×þOƒ°IEND®B`‚rampartc-src-1.3.0/docs/images/logos/maven-button-pinky.png0000644000076500007650000000503111202454500023550 0ustar shankarshankar‰PNG  IHDRZ#ž/sBITÛáOà pHYs  ÒÝ~ü tEXtSoftwareMacromedia Fireworks MX»‘*$tEXtCreation Time03/19/03öTÊ} nIDAThÞíY]l×>»÷Ú÷;Ææ!•#¹‰©I@¡¤b§‘PÍRj©@ý+8•Tâ©$LƒÄ¿LÀ¨ BiìA!5j”JÈy yl«¸ÆæÏ6PÀ÷îöÛ3»³³WH}ªÔ#{=göìÙo¾3gæØØÐØ¨þß”2 öí4¤‘‘˲l¯)º*E×èch$™¦I]÷ÛÑ3 •Jñ-ÈJ_Yï\•bÙyWÝœ?B¦Ôg™Ÿâè)¼:E·h˜ž–ïÊùÑÚÛÛ8îÝ»GpGð€(‡Á½Ã³Ù5XÀáÚÆ¯_Ì6Ó‡ló>6Å#ÃwSž!,{ã¥ÆJ¥ò–•Êçót×ÖFj¦µI©uà(..¶inQ,Ç4¥peš˜þ×ZCl wy#L3èX†Ìd£$¦e¬“£(›Þ‹Læ3›@L×Í],÷=vüñÓO«ªªè^CCömÛ6mÚ4Ðߪ« ÂöíÛ7oÞ åï?úh`psuvvÒøuk×þóÖ-ú‚̘9“&Ù°aÃÆ¶6pøöí;vtìÝ‹…v~1~úÑÊë? ñ7-Ýô0°ƒqàÈf³9lPývݺ£ÇŽ2èg2$ø×ââ,”¦ÙÔÔtäðá?|üñÈè(&áuñ»ÖÖ ïܹ3£‡áÆCŸq¤l”ÑB„'áGBhrJÂÚkZ2Æ…ãÁƒ€pàzøÈhV®\yýúutAœ;££¹\‚Ó½WŒ¿{÷.½Ër||&'4;ÛÛ1IssóÐÐ<¼û‡ŽOL„¼²D,MŠ…‚ˆ)^¸ .X–©Y“òâ…8<‚8pL)-u˜£cÍê÷Þëïï?ñÙgmmm,£ôD’ááÒÒR h%ÔõÖ<®---ÃÃû?ùË«Œ¾rëÖ­xpÊ”)¾)Ž$àRø® 1#FÐŒÝà]fŠbÇÄøx^ÃËñÎN >‡æOŸN]ø](ÁŽ“'OBS__?80€G&àó±1^á`Ùž={è©G#âLŸ1ƒºÿ~üIWx«“<Ÿt‹7ÂSò&B1[d‹n Rø»Ò°«W¯:‹Åùuª#xkǦ ˜·Øàö.“‚è·†þóˆç¿û:‰iîÄ3+•êèèpØñèÑ#ÂÂÙ_,‹°àLDn·†ØPC©DÈ€ÀûžÛÉ!J‡¸C M꜇”Œ”b(âB)€ž»¬¿X***ÈzËCÄæcL_§VT yŽÎH¥¬\•Y©Ò) %&ÎC2_õˆÈßijœéÑúçaRã§94VLÎoäÉÝ<•þ€ò©SçÎûòK/±\8žâyP1Qœrät:´ƒ¸öè¼Ã•ÓièÄÞŽü ž ÅWÃKRé4Åç%ɤøAË'ÿ8;½þ±,/YÑÙ®„ÅÂ… ]½‡&åx$ÓVXO›½/s.ÆüòwêÞ~»¶®NqŠäéJʺµ¬_ë®]»d-{¦¥Ù¼#v™Ä±ãöÈŠöOôWÍÌ¥K—†Í”*))1âØHÆž_½z5¿Âa ˺Vb¦ðbééé œ]0ÛuÍí3Å‹­­­íºmÚ¸1´÷A`Niv ±#ÏSª®‡ q³ô…^âÂ/Þ|S]¼x‘·'Ÿ«vÐóÌ ®S§Nwu±ë$#V¬Xáܹst áû7.3JÚÚu‘×ج’SG/+õ8V8ŽR ;±Ãêjk»{z@“ºº:yÊ”l’²dJ€Âôtõ‡ SŒ`=J1…å”–Ñpò‚.jkåe(œÒV(còb±å¹1ºq«Kâ<¥H'£*â™Ú·Þêùúëîîn@ÃáPNEùETo'¬M´¿|ù%4Ä#Ë–-ã—/_.pDîb5J4*¨æM ®ººu*Ú™ºm(IpܼysÞ¼y555./"ÑÈç…èš^æc„Î\½MAFCT"¼¼ùq™Ëú9jp|è(7¤”ym__ß7pÜ…[[¶l1 ˆè¡qRûÉ‹/^éí}81Á^e6YA–©¸1Ë:a©GG%ýsDÆÑ`b¬Bñ>P@i,p|óã?Ì™3'%K¸òòr;š‰&|ÁÔòr¤m.\øÙ+¯Ìš5 • ½&6šÇBÉkˆ&L^ØrŒq{l)$õÄ®§˜>|@öôéSÐüß}‡£©×^}Õ”‡ƒ…=m³ªªÆÆÇ‘}þí›o予‡#b¼„É_‘eãÕ8h̸• VH¿þü7€…Qßã…²²hÈ(ŒÍ ååUÞBžWQ"D>ZÖµñgAMèzFÜÿ·üCñ„[)1 )I |8ŒˆÖÖµfáKD!)4Fkü¨©¡3ß¼ ÁpáJþ/‹áÃñ÷o¿UÿûÍ0Œÿrà?_N£cJ{/ÇIEND®B`‚rampartc-src-1.3.0/docs/images/logos/maven-feather.png0000644000076500007650000000553311202454500022532 0ustar shankarshankar‰PNG  IHDRZ¬a xgAMA± üatIMEÓ:–“¬bKGDÿÿÿ ½§“ pHYs."."ªâÝ’ ØIDAThÞíZPTYýÝM4¡¸Î8怎¡\§TŒ¨¥ŽŠ#IADPaÁ芨ëÎè:cÆÌvÌR–»ˆŠŠ™†$Ó€‚Š`fÌY1žýçUý®²[–;;cºU¯úýûo¿þÿ¼ûλ÷¾–ðI~‘”ÎÙ³g‘žžþVƒDEEáÙ³g8xð îܹ#t‡ÆÍ›7_³åoœ9sæã::: .|«Aúö틇ÂÛÛÛâ˜1cŸŸÿší¢E‹°sçÎO@Ó³W®\‰Õ«WãâÅ‹FÃÄÄD<}úÔx}ÿþ}¤¦¦Š~||<ž?.€>yò$öíÛ‡>}ú`É’%HKK«謬,,_¾ëׯÇ7ĽóçÏ#;;»œ}ff&®\¹òaMpŒ­[· ºwï.è€B½š áããóšGçååaݺuèÒ¥ ÂÂÂpèС׀0`<==±}ûv¬ZµJØ`;"¤£N:áöíÛbâ8ð__æñãÇïÐݺu/§µ³³/ð¦@¿ uä—/_–ËÞÞ¯^½‚»»;’’’„ž+cüøñ¢‡ÜÜ\ÑçJb£½"—¯þ‚Tyõœ+.AÙã2ܾPŠ;—~Áó§ÏÞŽ9r$N:õ«]‘£ ú Aƒ…Ðkýüü„ÎÅÅEPQE!……‡‡‹I9zô¨pŽ,C>–¯Ù†ÃÇõˆŽCæò„™{!ÍÆ‰ÿ‚³«w¡t¿·å QOòïô”)S^3à2/--…““JJJŒz.u//¯·š4PqÉ÷êÕ eee¢ÙÚÚâĉüÿ$=6ýúõô²lÙ2Ì_‘Q˜UgViü%yãˆÜâ¤È–†!U3éU]‘o‚s›öâöå ¿è倶²²Â®]»Ä’|ñâV¬X!ãà   ¡çÆ <êm€nذ¡Ø\)–\>kÖ,£Í¼yóдiSAŠìÙ³G[q%\»vMì)|†Ï>ûÎÎ.ð¬å‹qU'á[ó‰˜eò'DJ£±Cûä‡ã’R¤!ÈÕ9!ÕÚ9A(˜µWOdË4Söÿúøñ㈈ˆÀرcѹsgÑfΜ)€P ú=zš3gޏ7qâDᕳgÏ6F*sçÎEqqñk?)€1b„Øøºví*ƪÈÙ-Z´“ªÈ¶mÛÄ3V:Å±ã ø~á2¸zøÂ¹—3êjêâ m}t5ï o ?Lµœ‚?[†"Ô,Fa—Ü?K®²·;@oã}ëáH šŠ¼ˆm¸‹ónáÙ“¿Ðï’ø¥K—¾‘mIÉylŽÜ [v zÏ~ÄÚNÂVSÌ4óF ;Ô×|ŽzÚ°5ëGKwL2‹ øA;[e°wÈÔ+¹#^þÌ’#ÉÄ™’3rdð j:"ï2å|å…ܰy8s䟸VRˆçÏž¿ÿ@scsvv®4«¬LèõŒý ²÷Bÿ…‡ì¡ŽH”A;¤óÂ’ša± }{|iÚ Õ¥ÂÛ»è:ÁÞtæj}0Ílþ%ÓËÉW¦/™×ÇÈ^ï!O‚‡Ü÷ y"²µƒñSKoüh5‰¼‘6a6ŠÂ6¡ìÞý÷×£ßfr8?óé‘5ȧ8#ÏÔ «OÂꪰ J0þVe¦×œŠ€*ÞhÖGo­³†•Æ í5ÍÑݤÜL1^3 -Æ#Ä"kešùI‰ ZoW Ã.­6êFË|FnÈóö…Áã[6.Çͳ{qùR–¼Qßÿ0®èá%犻§ÂCap ƒä„dÉMŽ></ƒx@¦‰ÃºáXo>kLü.ƒ`êW]oؙ٢½É—h"{}#]C´Õ4E7Éu1LÛ º¯`>\öô¡ˆ–ù=Nöø\Sœ51ÈJAÒ±`œÌÝŽ'~¸@S¸A2ü+-½ C¦ÙÑ+qry²ë E±ƒ²þà†Â֮ȫí&(ægi¸Ü< —'c¯ì¹{L±Sã‹ðjX#{óT3_Œ6…Å2%9›ÙÃYÓ}uÝÐOk G©=FX…ïíþ×~Ø<߻׸áðžˆÛˆ«%Y.Ð=œÅ‹‹‘qä(römG¦¼Ì“ý&ðvÒë¹ Ëê¤k¿ÁÒ†VnÈÑ F¡ÎEææ!H•[’ p¤–ñøp¤iÜ#Çäqò†¹GöæDÙ«ÈñyÒ×rg÷8d'!=ƱÛ}ñ¤¥D@WärzúƒDzùòe²‘ÃÁxd®ÞÄuGâì%HóÒ"æ ¥ÍHd´pCÊøÑÈpðEr7Od‡ ÁÆ éþ~H5I¡K2ç$»„ !f>ôñHÕG!×*ò‹èÊ„ñ;0z>S{V%Ù¸ 8¬žÙqAAH®_¿.uŒŽ”ï°Ïï±ÿäÉ“r¹ÁÍXÔaNOؽ{·È"y­d’ "ÃÜ¿¥áíøð±±±ÂŽåU>“ŽÍ{EEE¢áÂ…rߥg(E¥÷QÞh–4%IBãÆQ§NÑg«Zµª¨]°ú¦ÑhŒúÚµk—+Ñk/^Œš5kmØzöì)êì¯]»¡¡¡¢ßºuër™!ËÔ7jÔHx%##íÛ·/7ž………ÈX•*$ÏX£F ‘ÕªmÛ¶m+²ÐwhåeYÌ騱£¸Öjµd‚C}³fÍ„¾Aƒb©QX£¦ m;¾¸©©)LLLŒ@ó  Zµj077/whÀ ¡ Ó}® ÖQ8éÔµjÕJŒÇ «^½ºø–Ô@ÓÎÒÒRÔØYw'ðÔ±d«.·¾3@ó“““…îÞ½{èСƒÐ7oÞ\p%''ÖÖÖDžÞºuK‰ˮʉ ë# ,€™™™hz>Aãõ´iÓ„3?z*KII:a3dÈãdò»ÇŽv\u,p©ž>}ºàaËâuuëÖß{瀦·ªIÞßß_è  âü´±±z‘øò³V­Z8wî\¹q ¶²24eË–-Âó[¶l)6z§B3¤ŽO¯Wt,ײrH YäJâ=Ž£Í¦>|晲BÕGtï Ðô\µ°\J=W «o ÐÜ4Ù¯_¿~¥õ_WW×r@3ü¢-'‡GaœN‡Í›7‹ûÜŒy­æÛÊ SjŽæJS„õôh½^/ø‘/Ëӵܽ{Wp¶hÊäÉ“…Ž¥Tò.—8)ˆÂM’µsÞ §,l,¿rcVý¨€fhÆž×4‚Í088XÐDE yÈKŽWÀࡃZÆ'ô}Úø—4E¸ù’¢ØÔ“Å>ÇVBÍwèOò¿É¿6úû·"¹UQIEND®B`‚rampartc-src-1.3.0/docs/images/logos/maven-propaganda.png0000644000076500007650000000415111202454500023223 0ustar shankarshankar‰PNG  IHDRZ#ž/tIMEÓ'5úWbKGDùC» pHYs  ÒÝ~üöIDAThÞÅY]LG>¨QMLL-Ø¢5ñôAZµlSL”£!5`Ü>`ãƒÖúИx›4øûÐÄX“zI|ЗÆúÔ¦wMjƒPµâ/pADk[.H,ký­üØ ˆà½Û³gî ³wvo±v2¹ÌΞ™9ç›ïœ9³€€µ  Ì_m¦!®õ9Ày·!Eò‘…)£"nbçi]/•"¾íB†‡ÅÚ*üŒ¼ëò'ù³1§Ø3«©àHM“%K–àØ1c`úô /DT—iÄ~M³xéÖ4ì¬â=¸l'fƒ½ÏºžhPAa±Ûö3kl´6n¼`% VÚƒAöØ ÆY?®î±-UnÔÈ˃M›ì†WQ]æÀS‚p‰›&³MPšéŠJ'0 l8¨ý ™×ošÂ¼x0hÿ1 KfY±;°qCÓžÊPúg‡L“[M–/_Ž+*àöm?>mÚ´×¼Q]¦CV²~#Í„ÒøË¶½MeJ kya’½øÖÙoq@½à¨ F\  ŒŽ$š`ÉÉx'…­[ñB䦎K;¬pøW…Lû“4Œ¸dŠ• c¸[¨] ™*ͺˆ Æ,Ö~18MòóóqT(dcÕ4a„´I“&y!‚.sÁ‰ˆ¼Ÿ­ÎØ‘1€É\EÓº8X¬„Y_qŠ%…†Ey ;>£0+"R0I5”6ºؤZPP0{öì±cDzÓdÞåxˆ¢ÀŒÐÔ±˜‚ÔuË‹ôô×½\¦MÒã¬[F/Þ¶Iý”¤+âMŠ¿}ñ”¬fj¸ãÚ€þFÐΚõÊlØCC~±Ø±#ER‘]¦RzU¯(P/…ªJo7‰ŒŽq²±ÁɾTy!îÆm€ùóç£Xa! Œ ×ÈÊ\æ®a`òX¡hÊ:YüK\5m@êL¸ ŽÂ£$X°±}±ñ—a á[¹Šˆ‹‘‚?‘]f0(&÷«?,Z´%W­‚¾¾TXìÜéÀBE„¹Œ8 Êé°|(õìÑõ¯DEí©œ …ËnBe3Ÿÿ.‰íÕõïXá,5¡P)Eo«C¡ÏÉ"qœ±G«¹¹¹(Œ¡Ô ‹'X\Ny÷í–ŒKéÕu½„ÇQÌYY§iš…²«‡ÃtF'Nå.þˆSRì×É~Ã0t “üñ}i”XqÄp°ìkíZO8Âa[ ¸¸8F‘©<Å×n$*WÊ÷Í$ãQ¹½‚Û–u§£ƒõ¿Ëó%ô‘vÊ PòZÅÎÙ0ù¸“¸ý«Îðd—ÁÑ(ÒQÂQRâ G4jßè.\È´ÁÀ~Ù ‹%“Z»ž'ˆq•û’QƒvésäàAÖ‡ÇNÆs”ÿ£B±¿x¤d8ðâÓI›1Z8Ž¶Ïšº:"sç¸qãä“<‰& D¨ …7ÈY¹Cd¸âdF8>äLäP~=/(VêÌPEQá8DÔØ³}û¡ ÒM¼†®›)°Ø€‡-fkµ¶Ùƒƒpøp"ÝZ¹Òv‡®ƒšõ?¡{Šã;+g©ø­ …„r_KA4¸Á!–ÎâG®XJVG]¿•ÊèôJèLžÔ€Vª•Й3gΔ)SÔoâmÒ­lö'üCÓZ ½àü— ù Ò¸:¸FÀ#Å:} ê<ÎÓvÜm”bì³ö΂:?¹1¡g É@ ­ø"pükþßGþ›è$Ý&®ÑÿDP…ÕÔó=¦ÿŸÒ†c¢ùÀ€ýôöc)â4ê#¢ÉfiÂâÎ'´b3­~#¨RK¥ñøø™¤v)õÔ¾t8Ttú9:u”ɸ\D^ÐÅ¡‡6eZhÇÊè·…P¸Do‡Hò¢søš“Ùß?’+¼/'°þûÊйO¦ tðäú!B¶ExÒÉàxBoOIö·Ð /ÝþÿŽè\!j¦ZM=ÍÔsåUÙŸ GË+¯·ÚJá¶Õãí+ÓíÇô·?jˆIEND®B`‚rampartc-src-1.3.0/docs/images/logos/maven-redgreen.png0000644000076500007650000000077011202454500022705 0ustar shankarshankar‰PNG  IHDRZ#ž/gAMA±Ž|ûQ“ cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF pHYs¯¯^‘nIDAThÞ핱JC1…‹Oà#t_ ›ƒÓÅŹ t/ÝE ŠƒX tswu)înnÝ.ú Îñ §¤Á´‡^D8å§œ›ü9ùóÝ$·Ó ·ŽMq‡q‡q‡q‡q‡qÇÿÆq±¸_vgσë·K飯GsAZB£hW—Ä.C?Oi}Ü ò4"èzœðÈ?A •,«d˜´ ØÿîÀ:„ UIÇ_Uýù²µTµ$F[  O/£r^Ö|¶z w=EU‰{r¦—XÎçJY>ûþq€™™Tñop¨â†‚rCÁØþz½0'¡®C¿d“C4¤üT9uÝ!x½:ßà ¬ápŽR46§iÁqŠéT'BÇâùžŠ†“IŒŒZ+8ÒÉ”;HórÊ»C]éŒè07êÝ–¥ë²P>‚í Ý5j)ïÁjkwøËâ0ã0ã0ã0ã0Ž¿‰oÏ0á˜ê™Å©IEND®B`‚rampartc-src-1.3.0/docs/images/logos/maven-button-1.png0000644000076500007650000000622111202454500022560 0ustar shankarshankar‰PNG  IHDRZ#ž/gAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe< #IDAThí˜KlU׆‘:ì°ƒª*£ªê¨ƒŽ*UŠªHUÓ¨ª*QÕÒ(© E’PšBx6@CHÀ€ †`ÀæeƒÍüÁ`Àæll_c__Û×o?†€¡$·ßYÿ9ËÇ&ª2l¯–¶ö=gŸ½×úö¿×ÞçLËþ¯þƳÙ1³ÛÙì€Ùp6;+¯W^?|¥¶ìjݱkõ§®'ÏÖݺPßRÙØz¥)}­¥«Ie’™ÞÖÞÁ¶¾Û¬{h´äóÁ;wo>6|÷ÞÈØý;÷¾¸ûŃûÇ>z<þèñ£Çÿ~òeøûÊ~ÿÝEµ¡1ÒɽGÇîŒÞe TÏÀÍönܸ‘î¬mëÂ%Ü»z«+ü¥ä Þ^lHUÔ·œ¾ÑD .Õœ¹ºãÔåí'+wž¾’²rý¡3ì/_YtlÉ®²w?;„½³£dáöâÛb!Ž} ž„8ŽTÝ,O4œ©mG…©nnÇ oZzp ”M}éÅ] €Ã{bÙxÄåY Äq<Yz†…p4tôv¦O)÷¨\N¦+Ìgá8žh .(À@ÙZ~ñ£’Ó«ö_Qt콂R@Çßóoz`àkqÐÝÅ¢IiîîOUºnàqïðA¡‚RÉØƒ‡÷b ñ@*O¦à˜‚ÆYÀ‘§è*38Œµ÷1™^ ADNbÒåù›Í'j‰…¸PD¶¸´åXÅÆ²sëJNK‹v† 0@È2±÷Â5p”\¾!ÈŒîýVDDWÀ(ð¬ÅÔ‚¯CÈDªá/“‰R˜[ 4¢#Éøòù*ös]<1’=нaŒBÏŒÎJqR„Xì8yyéž#Kv•æì<´0¿¸àìÕ=ç«a‘[v~Ï^úý ¿÷‡ßýý[/­Ês,(ÌÏÛG‰@RŽC!})4FelÔAÀÌ•œSébáo£ÁRN!åJV'"™¸}û Fcøzª’%#uÀB.1O° Žm[sàÄê'ÀÁJ!øÛ_ÅÜÜž;áÙ"¥ÆLd#.ò—x¤IbVêÂaË;^ÁÆNK!Z‰H’&~¥u®5xܺ"<Å©=Ë×ÔGÚÝi€Õ™¸4®•[¾§ºu8ÃYëÃâS¿Ìù˜õ2{ãnr*,È Hƒ=…ÄAÖ*ÚhçmÙ;ÇqèTŠùz!~Ä¢óP”e»ÈX\ÊÎi J¤Èìí ›iF #H cÛó$E H]k —X’yÒ 4Ð!PÛ* @ Ô®‰‘(J£L‡“x‹WD>)=û%œ»îéô¥<ª]Ö3ˆò(8j„CÑJ XÒÐÌÅ·*„Ć¡Sm×êšaP#S!Wä–<Ó`Ñ¡ó%âdÚ•”êìhC‰4ˆYÛ¼ÎJO¾åQj åðú’“+ çlÛÿöæÂ› çoÜ=oCåœvÌ^—Í\óé«äýi妿m)Ö.«C 0©#ÄáÉ¢Ô’(ŒŠXH>è‚ G€P_Ú¨èaP#3À<Ð:HfMdâ\ÈIÉHƒD¨!™ ½QWðÑ>ªíCÛœŽLŒtÇÜpzëŒå_]µù••¹\öÉK‹Öý.ç_Ó®þÕ[+_œ¿üó–½0wÉÏç¼÷ü_ýlÖ;ñl*i¼¾©h¥ ?¤ó Œ¤§8¶šP;ÀµêèKPX‡ £Cbyw€†Õ$:«#"<®¥Ä$ëpÍä_³ŒK]«Q6y àOY,ÁkªÐR#=“)HŸÐÑ‘â›^Ø`GrÍ„¯_,¾R$ò(Q4y*ÅŠm[ÑŽ…¯:êKº«fÓËð Ã.6WŠ’b—ÐÀe…åi_•Dèú˜Ž ž´Yˆ¾^ÃpƒöÌ&ƒ`•(Ä/9c4`y2ÖÚƒ'±• ùãyTÇ á@!¸™s€Ç›rK™Ä lm:ÊÔµ×à9EC’8¼;‡Â°W× à P ‚søM]!À|Ë&ÊJº¨ÈÉ5@×ùæÃ<ÃïYFÑWŸáȽ.óVex*MÛ‹Yçí‘ÌÀpXî°º®èoûÀÆI)mÆ¡»¹{@gÇ„«›;ô­H–°Cdmº+0ÛA8hðHSWP¦z9_Üêêãb²³ vÙÎ^]¡q}GO]{M·U‚(©7ZõÓhO©'ë­Õ´†Ÿˆ¸žìì£eCج[þÄÆGƒ@ *ZJQè ë1mýC'ÂH ¼VÙ©"þ¹È‰P20[$ýÄÜd1+E^Éë'@t¹=è€Gü±!Š»š’ªæö*{£ ö©Ö ]Ѧ1ÆBo=Â!5©É8ˆ*E(4Á+‰i!#"¡:¼6í¹YL‘’‘+ø!‡0T[).T|OUØ8ÊEEë^Êc *,Û&ê6á!M½Ô•ë±*ü±5Ey¥©-¡‰¦ˆ ~  ’† $1‡}¼Ôw}e `éeB)ƨ-Ò‘0ÕøGwˆÂ¾>„æu*‚".šá‰hÛºtQ^Šš,ÞFæÖ!f®¦>UÁ[ÛåàŸ ˆo7Áô¸Te5“‰øÅ‡(0ÕZ“PúM ‘RôꙎáÉ!*™*örÑjWº+ÓÀ>'Ow¢T#5¥' o,Ž˜ÞëÓ4˜­Òˆê>1q©z‰h½„8@à,d‘¶ï.Á2éŸE*Ò‘©£¯Î¹ëž\|ŸV¸Žíñ$BE#†ì¢9ŸB<žÈíbй·ñnÜ՚ùu8æ\YJ» Á‚Ï¢& É5ž*‚@Èü¯b£Ñ7 çâDeÄ‘[¾O+k&«‚7ýÖ8ú€Klò}kScíýSÆJLV‡Ê‰E;³ru½áp°4´pt’Aš<$`‹·.Þ¼X]“*†Cesà·.ãäSÖ‚P{áàz•½àÆwû, kvŽø0ž­|gñÓ‡wâÐi/~;&ö)Yˆ3ž#CP¨¨Mb™Ý ÑÄýŽö?Uâ&‚¡ÜìÔ@Hñ“•r¤6/gáæ_~ŒãHD'ÃøadÇÿþûô¬ÎëýÔIEND®B`‚rampartc-src-1.3.0/docs/images/logos/maven-button-2.png0000644000076500007650000000521111202454500022557 0ustar shankarshankar‰PNG  IHDRZ#ž/gAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe< IDAThÞÍYݯ]EŸ™½Ï)ýæÃrÁÀcÚ{s‹U ¡*ødhcâà›ø‰¶}ÐŒ†¨Aà'}óÙwŸT¬Qj¢(‘hkä"Rs…˽çÌžq­õ›µöìsÏ¥”DâÎι³gÏžYó›ßú­5s}ÎÙýϯ©sѹuçÞBr.87–{"õQšMäUÖL¤¤`•tµÒ Q?\uÝÄ5cyÕ–ÆÚ‡ÒÏúšKIú“ÞbâWLüMÜXó>äÔ¥nš¦.ĉ˙£ñÖ9­±ö¸ŸSûœì­¼Þ¤RÊÉ7 õ2Ó KçÞ ð¡n–ІþN;î-?‰i¹÷OéN†#´cÀ!¦ ÇÀÉxT“â4éHa4Î`§:|ùËDC hPƒá1mC½|B°Ú¬»¸ÌÍ }ç](¡¼Ô!xæ °FÏ Z%˜JÅŽ.é¹ >¦Ü¥Ì‚ãVàhZÐVLÌå~©ÇÐŒÀºÀ£qo2O¢·oZ/ŸÊ!V-“Qh^RI€êÌg±` €‚L¥Tò‡Z0,Ä5»µÉWLĉŒO97Œ­£ñ .YÏÕD%ʬ°† £Ð4¡ í§²>XLv¬^£6ÃzõÊÛ¦A¬dõ¾’"ñ$s?þÄ:©$cU (þÅ_<»òÜ9v©XþÌ]Û¯ÙņnÄ•³^>ýBÌE`~òÀû—¯'Á @Ke·‡¬Ëì Í¿÷p!Nh[b Õ)˜6Õs{¹é-?2½¬ÞN#2ÃÆ—fÀ^2gõg½»®÷ØIeï  ÂBÆz”`êþûï;xc\g8ˆ%göûÕóÿj®hÏýîo„EÊEN—-Y¥ ž~;|Àžs3RÅò3«AúÂÀwS˜"Ónu'²>âÏÝÀ‹åh(lv“š…´¢à {·‡AMËzÈÀyo:z+U®œ=‚üåçºvéÆ×ž% /è:plqaézXE@tB ȇ€!ΨHAŠ-ä¢v¬dÅh/{ÐÔæŒ[\âHסRˆÃÔ>G¶È&xµ_˜Z™æÏˆ»§«?pNñ!¯yå™óI‰[î;¸°xE:¯ÒC(PX¡_"ˆ«µ-xr ð(F` T )ÞD¾³­òùÎB¯é¼;4Mê4¸äTZ L³":dˆwaAì+/"6­ÈİÞtô!bóbñ:ê„¼š´Ÿ˜;$&nÔ†R#É>Zâb̘|’¦Ä«!,¨ »¤PVUþâÂ)q7ð:tÂü®Ž;Êó®¦F¯ÍY±¦"rÖÕ¹ êõÏ\ U§{ÿÑ¥…ÅVF±“ƒ˜Ò¥~ÚYç‡ìÑœuõRÌ•â\Ã8ÅêJø¤–“’¶±ìó(¥FŸ× rÍL¾ ¢*7u–¥¡kÓR?¡Iâ¶ôæcËÌ‘g/ÔXÙ9‡ê¢åæ5Y’³vsFÍ‚J†RÔ$ád9,Vk8.5}<ï˜SÄÄ,ReÉ•W«0°£SÁ‚ËøfG*4ÙH/ôUÏ€ú¿åS·.,ß°ç†Ýœ@q¬tÄeä`èa–ƒ%²$76”,‚t]„ 2F#  ü’ÉÉH˜ÔºH9«%#ÂIωA,#Î\ª4Q•5d€Õ°¨2Ú †@õ¥ÐG¢ÏÊK·„Aߎ^½zn ÅE8ŒïÝwí®ìQ$¸ÏD–­Iɾfèêüº2ÐF"¡NO{O”`Äk´d¯x³àª4¤[ºû° VŠ“šn%Á)/Þ·ÿƒí¥W9l`\Æh¦’ –S‰ÞËdF [³{¦Ãâ2ìÕYI:ÄB'6ØÝ–Ïè›$ŠPC”«.W†c-Ë5=DšÐ†wJs9xý¥kü“²Áçšlã ò±•a燢ÂÎ?„vÝöÒÄ+š9ï¾ýa5u6¨Í}ÌKªÄ]áî!L¾ÇÂõX„ WË]š]#‹wØøë2ÅÞh”מþ†wþÒ¼óæ7%(d3T²èœÝ`‘óqêÕ_rå»ÏJ5“#?äcÈÓù´¦äle&¹·²T"[«2W|‘¸®>u¼´·f¥+¥fÎUr¡‘dg†>jj@®ÙQÍþ¥a[ÇÝÌq—Fb_ŒŠìÎ|´äÐAN}ñ¾ø|öµqöƒŒI2‹¸žp–•mv‘xU“\布Œs£sÍ™¼Ù¯ßÛ=Ëÿûõ_;åËDáróPIEND®B`‚rampartc-src-1.3.0/docs/images/logos/maven-propaganda-2.png0000644000076500007650000000547311202454500023372 0ustar shankarshankar‰PNG  IHDRZ#ž/bKGDÿÿÿ ½§“ pHYs  ÒÝ~ütIMEÓž4D ÈIDATxœ½™klUUǧ…òh‘”½JK_6N+j8 qPœ!ÊŒœ~ÑcLø4™É½ÄL: œ™¨sÏ%1ã'™ŒÆžcP;F!Šw_pĉÐäÑs(m‘„Z°=vÏåÜG¡Ì¨ÿì4箽öë¿×^kí]M0 GàÓB ÔOQ5ÕyÔfJÎCêfpG¦¤ºrÔJ`=NÑIÞ&y± ÔW1˜Ð8u§a‡nùª ¡ ´yLdJæOc , èÉÑÑ éÿæ¢ÁLÓ¡ú­‚õ°`í» k F@UŽpú3%E0÷†CÌ…¢LI?Œä¨UM=áir±ÖCha:J`ÍôÌä‰;ï\©ÈËH”äÏäHnl ¹µ¹=TYVƒãdˆÇ!àâǹ'K!ekB³Í¦ƒi›ÉÑ£G}ÿl^)„æœ#s>ǧÜWà|Î<+óL¦ga£H# 76“?Þ{/PPÀ†%‹ó2R–ïÈLn¯e!%==5R6ÆãJVn–òÁžž2ÃXjY›¥,Ur²ï)—ZV™al–r³”ñx A,`H‰”ÆåL.ÒMÊ Ø,eIJ&BJ,+<ÃSÑA`&‹àsʬ:tèPK µµ¼öZßqêr6ªú3-ƒºô[·Ž ±$™ñ}EÇn]_`š¶}¨µ(5 LS-u ¡×uïqœ¦9âû=o|ëV| AZ[b,™¼œ³Õs‹»uýT,Ök®‹aÖœÒ:Ò(µpgÈLìûïÚÚØ¾¢"í™;n?žÏ³æ™QèMÿpÝ™¾ÿM*Ufše¦9”J]õý^×-3ͦÙïº3uh×Ŷ‡týpk+pÒ¶m{£ç6[Åšëvûþ@*;|§{~b𕉄æûX±¶=Ièôé4¨†õPÀþýû››Ù´‰ÊJž~Zž?ÿ5—‘2¨Î”œÎÔÉŠi Ú6Ñ(ºŽmcšEÑè e†Ñ"D¯ëÓòxŒû 5órµ=®K4ŠaHdëÉ[)°aà½}ò¨öô0k–V\\Üp &2›ŒÁ>è•+–%¥”ñ¸4 )å!Ë:dYRÊO ã«xü¬ãt¨¼&™”ñ¸„Ñdr0™ì¥vØ0&’I)eÆÜ¤ü*ÿÄ0¤”ªUÎ:Ž”Ò7 g4‘R&“¹ œñ%,ÏÃxäá‡;;;OŸ>=>>ÎGÕÖòÄ“UºÎ–-òå—‡(×ÔÔ¬X±bçÛo™!£€ê+»ÔÚªÌxÄ4«b±«ž÷e,† +®«v¿ë^ ×uçÄbwÅbšA4ª¶·Îèz£mWÅb'm{$dÿׄõ¼ ånuýú’T9Ð:¸*aQèð,\°`pp0­WXHM 44ðè£Üwßõ..\àÝw9y’S§&ÿö)×âÅ‹ÏõõÇàD _aY«M®Á‡ù6à!˜Àw°;”Ñ®„†LÍ©ÎHÔAuÞHl®‡Ç ¤éP˜ËA‡Ù,]²øÜ¹>]烨¯§`Z~`Ë^}•òòE}ýJ2Ÿ@Úç7ÀÊà{ON®9 ¾OÀ±à{¬Ë üSqQM0oz³½ œ‘,W:°Ã8{®¯²r¹çñüóLLLÕ[6ÚÚ&¹Øß?> YQæLèìä&ci‰ e¢4Oƒ‹h€µÓàBÂ8 {¡3Ø’+ÍZ’“áÃ0ˆÅÔÏ1ð¡0/ÔõÛžÇæŽ›•÷¡©© xè!†‡'JÞÒÖP^¾(Ü<kT”‘Þ³, ý!É,ë%%é8J¸·½ý¯0 R>“;¶[Ö*`eâÓöv[µ²,)åöögá}P1(=bz¶7÷cð§#GV¯^ýá‡<õÔ”jï¼Ã /P^¾È ü…B8QG&½‘ˆ ¥‘HZÒ_‡Eª¬jLswè˜\øWÐjN$üMˆ®ëj×ÑÚÚ œÕ4 ‚B¯¦%a m;X5P«`>‡ƒ´%Pbç[¸PÓÕÕ5{6ÍÍôô iÚã?ö«;éìÚwíúr×®ÉÌýŸþ´yß>–C1P ‹ás¸ —J¥®¦RŽã‰DâÉà o&\3ÍÙ „ð}ˆD"¦iš¦y"‘¨ ¦iª~fæ<ÇÜBˆT*Õ‹I$DÍtï²i´´´$ნô¤®®N)¬[·NIþ )è åãÊ}Hu·d"•R&“Ià‚ãH)-Ëú,M+Ü k¡%hò{ÃP·ê¾@_©ý.”€dÁqœ pƒ¬$‰˜¡¼Æ²,'|£6­444=vŒ‰#!Û¹/uu±•+¿øâ‹4Ñ0sƒ«Ð,¨…Q×}€!®º®+Ä*â#)=Ïû6ùÌuÿ!ðÌW©Šm»º>bšo¥Reð-,uÝÏ¥|O9 †„è”òB¦GB,T·>ÏóÇõ}ß÷EP—”Ò yq@Ëû~«Pì(^GßåèÀ¨„2h…+ðk¸oBl‡m0›à"| xV‚Cð[8 uðË ÃOá4ÂÓP óáïp8g\TÜI :ăªˆñýÒ‘ W3m'ùoƒJ¨þõ·4(†ÃÝ0 ôAÃY8 ß„šÏ‚ùA)…ÙS<¦ÿoøAèÈ‚b'l;×`&D`Yà\”»UÿÜÓ`1ô€£ÁúK ¾ßõgáÇ # av.ÁŒ õº·m,d?èú³ uþX#]r ¡–ÅÒøÑöì¿j;âØuÑAIEND®B`‚rampartc-src-1.3.0/docs/images/logos/maven-button-3.png0000644000076500007650000000732011202454500022563 0ustar shankarshankar‰PNG  IHDRZ#ž/gAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<bIDAThÞíX]¯eYUcιÖÞçœ{oUuU7 $U|ƒ!‚tbŒ>ø‘È1Rèƒ!&>ø¬ >«/’ˆ¼øü Ä:D„OhÚîÐ ÕÝEÕ½çì½Öšsúpî­.hMœÙÙgŸµ÷^ç̯±ÆXüÇüc@yõq†¸…ù' b`œÁ*– g¸<˜3 8žN Ѐ.m @ €¸ºÛ€s` À€Î篠݇ìÑ´=b˜‡÷Ï÷m©†,u‰±È}Äýûe´ýhçË"ûj3š´eŒ&Ë~Œ„HH[ZÛ7@Æc†`ha3ð¯Ÿú"Ev‚­É\0U‘b#‰Ä$˜T´öiÚijÝT«ÛZN6›JM]Y 2VUž0Íð†L†GïÃsÍèášPOïhˈ> Ë>230Æ}]Ö~Ñò"Êh-–¥uŒ!ž2ëh½w¨á9úð5@Z÷<¬mÙH¸“hmø€PÄ9Æð¤#Ò3"˜ú¶½Í¶ÀÆ„¢`Fɰh€¥ƒI¦³b›:×ÍFÊTË´™¶Û¹œn·³2Ëde²¨€Âô„¥£hx` ‘ᙉÑÝÃ{ÔðÆ,áÖ¼/ã‚:JU" DDoJQ ¾†eSjáÒ²¨Ì“ . :<]cH×K£«ØPKÝ#G€¢T ÌHB(” ˆD"*v rZDƒ´PšE§í´5Y€ÃTm*»í\ëöT­Šéf3ív¶™9ŸìšÊÖÄDíè4WQ“-Ã;`÷L ¹÷õ¼cgb£ópjuÊC ‰]óK_#ÃQšÊ¾q tʾÖÕ.B›!µ:[ë…y0¬Ý×hpQÑ©¡õ¡–#”:‰ö†ô fcfŒà`@¡¤$êv¶†–¥–›ìªC‚.ÙÍ&¶´™Ül¦i³9™7óbXªB a[RÂtg^D)Fˆ!§RçyC‹Ô]­s)g›y·Ûl§º©u#VM„¢,ÂI9 ”d&¡ƒI01œ#¹"»Š™ sI´¢Q†Žô5lx ªZ¥˜•:Â[LÒÌ´yx¤êwi„ôð‘·w>ýxïÕç."2#_üÚ+O¼÷´žèƒö‡® H8»sMO «cdd SAE*Óæ°[¨Túè¨楔ÉJQ‹N¦j²™ôdâfæéFw=ê¦Ì³l$…œ€"0b ™@R¸bM,É…(U‘i޵ËÚ-rÑGuIwßÖ>¢÷Þ˲ØÁ‡¯ÞeŒ¾ŽumbØ•ýAI©ÝF¢»„ÞþðMx¾òü˜©¸÷ß7·æþ`ˆ2yýö©\¯Ñ„Ã# &Z =Ò}ØbB}ËNª5ÒeÝN¥V+V‹–i®gÛùúÌ““ùìl³7Uç;Å”AÈ p"Çp¤1  A8q Ð9!’%pá,éȦ½ÉºÀ»cv‡dªÂÝÑuôr P(iÁ† ÉÕEµ=C»#ò½)Æ—¿wîö÷–Ë %®¿c;ŸÂ}0™$P$E3énUŒøµÛ·¬Æz<4hF ¯œŠÕ©–ív{vmó– NNO7Ó™pl'À E"o$6%*P’Šc]™ €`f Üe®‰Át²EP…«!^Ð+–y^–ÑVÉîô‰óÕ¥÷&+ýáMiÑ—e­Eˆ\}'ÓðqˆŽB¸‚ÅÞõ‘'¼üܹ#È Éï>™¯Yw°§{¤R@i£GÒi´ílÀ[oÝ:;5ñ"ÃÕ[½QQQÎÅϬ?qzsšNŒ»È­ày8gá(€(/‹âØåÈLBÀÌ2 0’ yì‰Ntɦì&kð¼”1ÉÚ²;Üs,c]Ûje-²\Øh®‡Þç«¶Z²`I‘¾6ô±D'rŽ@ô·`+á?|îÂn¾÷lóÄÃá#C’’H)&PJB bÀ{ôÚ“:ÛÙœÛzª¡ÊýÆ¢ HX±°:&Û( P4w[À͈rK @¤d pÙ% ½$ ÌctÀˆ:Q€Jt !aVQÔ ÆŠ>r¤vµQÚjrV;?¸ÊdÔ‹ÃÅÞ÷2•¥÷Zu»T¤Éˆ\!™$<ßõë×¼åË/ž|ßùÖÆÉlÀÒ‡Ë\Å%º¬$#36prrm[D¢È2U“²­»m­;Ì[â$Á–x+ðTòDpy°Ë®À\â1úèû£›Ç>"@(¨À ôÄž,‰0ÍIàÆfØÏèî𮵜k-kÀš´Vª³‰¶ì÷1$ÃÕ¢ÌzŽ} B)ƒŠàdïùÈÛ'Ïí´4â* ¥ÎJÂc¸#ÂŽô€ÌˆÍ€ëµiªU” Ê&9zÜ"v’[ÄSä  @9ú™p>’$W.?nüi÷ŽKa€ À˜%9Nà` °*z2 (’4˜®Tj‰ÒܤHTF§Õõ°xºJ¾ôÊÅË¥-îçc=ô¡X{:úrß×ÞвGxÚn#ðdjµLzdD&qR«o}þGÖ³ÚNvãìZ>KHJ¢#“¸œ `$IX¦<žû7h<2b `AX["€p`̉ƒ!G7@±Zi“ò\ÒÌ™§CñÃÚuÿp9_/.ÆXÆzˆCÏ6r]£9ÆX"O¿·¿vçTUh’Ál¤çjð¥W—åÅó‰¯nfܸ~ýüæõ~ý¯?u6[A ð0¤^RL@)©Õ_8"€\ö ( 3@Gž{àx4ETì&®³]L°BÄT‹”:ú¡²¨×墸½w.–¾o}YúþÐÏ[®Í—ŽC‹ó‡ëÒœ.ÙCÖ>úhH!I„jªª‚baîd½ÿãåZpqqÿâÁöüúõó›¯Þ¼vëÆöÚõ]T¹…lH BÀ¸ü&£q‰,@<žsU ÌÈ Ø€[ä*ƒ8U-¢µTÚÁJÙ_´™“ä`´ˆˆ =‚chЏsdÆB˜`x e­**%!2A…"s€‹¶ë¾–LKsÏýÅឣ¯þêý‡Oݸo‹'w!|;ÀSÌBÌ+oÞD8G•#Uº¼EP LÈ Òy~Œ\a’ f…4kÈØL>N–²ô…R;šd‹@"fBˆK†K€Ï¦SL·9˜™_ÆKÙâÞ-lo“ƒ[À-à:ðà) € ÿGí!ðX€ûÀ=ààþ÷ñâó¸wŽvŽñƒÞ–}´&û¥=8ßÇYÆÄyŒ¨µŠX,cˆ3ó[/~Kü& ašˆ¨©ˆ©™T­Tb>⎺ìÍvËc–ø+ÓcåQ¥"t`$<á­Çèéc¸{Œð1|Œ‘‰ˆtÏãEff‚`d&@f’¯ýôo½ÿ· €a(Ó 0Gå—WT;3‚ZyìòÌ«@ð—¼±yxµ€ (@HAO"à‰ðÌ$óÈI¡BÈdÆ•¨¤0ý?Ê+aõ?µDÕ¾•Ø)7…U³ ª\*Ê£€&à@gâOü¸c¯sâÎ'¿x #ÀÇßî¤A‚ M˜±ÌR+MÅ ” ’€ÂÀH "i ;‚hBI%€ªª: U…* ¼d&!%/a €Hý¹¹Íg?ýË @ \m¬¸ˆk††™ä颈„HFJf$/EÅq3ðq–×(6PŒ¥–2«µÔÍ<í¶ÛÝn·Ûnwu³Õ²N€&ôÄ ¬d?&üõÉÿiåð“•òEô3^¹j®|ô$ïü`¼óI¹óÈ)Q™Þý××Þÿ·D óöÓ¯€ |ðw?Wöð™ÿá?S ÊþÑgŸþØgŸþØg!—­È£ÂÊÌ—Ï¿ú£Ã7¶oíÇõx6ò…Ìd¾ù ryÈ\3×ÌCæ>sŸyÈl¸}732·ï>:¿þâõãÛÏ}ëç?{ÏWÖüþú³¸}÷…W¿ñüË_Çí»ßyñ+¸}÷?Ÿÿâ7ÿç?¾þÜpûîWŸ}æ+ß}·ï~ù»ÏàöÝ/}çó_üöçqûî—¾ýù/û™¯|ç™Ì4Këª1ÙL“^2¥œˆ j¾Öùòá/×^‡VTÀ¦;uYífá€Jâ¨ÎŽ|è÷>s|FE.·ì.7eÀ£=bÇ:Ü‚Kqu¯Õ²” Òø ¿¶ñ÷«s÷ÙOóÎ'ÞîäS½ó—í»ŸZúáì}ƒÌ¿÷¥OÞþÍ¿ûöþ4"—}ðõû8‘yŒ‚€) "’—¸kÚê] Ê&Þ4‹ZÖ©¬¦‹qGlŽÐuŨóQŠŽí}üëG7Þ„ŸOòÆHm>^)„ä³ÿÀ;~2d“}\W%ˆÌoþû'>ð;—?ñµÏý .]º\z>ôûÿôÏ}3óÏ~!”()*¦RŠ3S›ÊTl2NÀLHy¬EòWÔ,o¬:® 8²%‘‡6ÚÚFóèîáG;®$™Èt$—{ÜyI8RDÞÿö§ @dÂ’Id¦Gr ӇLjQ|)¢¦³r#R »Ü Ì×Ôýž<öÉ7BºòÇÎ_°Rp¥w,„(ëTÓ}kh}ôNt…%”L€¼¬^é%RŽ#™‰ÿ·+û_üí:jˆ`IEND®B`‚rampartc-src-1.3.0/docs/images/logos/maven-build-successfull.png0000644000076500007650000000205611202454500024541 0ustar shankarshankar‰PNG  IHDRZ#ž/gAMA± üatIMEÓ"•.ñÙbKGDÿÿÿ ½§“ pHYs  ÒÝ~ü«IDAThÞíX=kUAÝ_!Šú$QŸÅ³DD°QAAAÄJ±ÕB0ˆXˆ¢½‰6bca!ø„$ÄBÔø‚(þMO9Nff÷Þ››òÂdÙÙ³gÎÎîÞ¼ôâýÎh©“ “£“£“£•¯?þ|óeYlnq9ôÖ>¨Wú„3ƒ¥ò*bÓ K‡Í²=¯>ÄTý”¤—÷ý7-Œvþë/:À?\Cû ò0N:äˆjª¦éŒìT¸„Ÿ’•ÃC@ íÊðÊ bo¿ÙP kQ²5ˑۘrøÑÛž“á•Ax^dº„rG êÙ—­’I394“99¸í8¬”“(Ä ch)‡—¾– I³1©†A8ë€Ã ¢ W.wZÊáת%‡\¶:A˜àÇ!/%“ƒêïÂÊÛ!Äi/õ5´ëÊ¡÷Xš_N=ÅŸ¾ò…ªÃ.ÈT¾AýöèÕõws…á¥(©›“ƒþ:!Àˇ‚8>§ÚÈ ô½ÖXód2¤œúíĘޓr>ó’ªó„__•‡ÎV‰¥&AøÊ„røWÉ[øâš\`¾„,k¾;üý-'±™zƒ åð0B}S.Ñõ’Cg±~@kÉÁô1ör˜{—'EL§Xøâê¨æÉj#‡ÿ€j Gá{r„_!­ðÅõ-÷å¾.rè#Y!Çøã—)¥±Û{ö:zòÜéOÛvôQÁ(êÒsüôèö]»ŸÍ-;5‚Qôâ‰3ç‡vö/߸wöâØ†M[P!òÞ‡/\ºþ£ç óéìÓápýî}TD˜Ž!”xçÁˆaTìÉôçá^¢÷‰8<Ëð1M“›…<óU¿•Úì•îxË7ÍÆVbdCF×e›Ì ÝôধÀ¼ûé¸û%½“£“£“£µý’Ñ@kè™ësIEND®B`‚rampartc-src-1.3.0/docs/images/logos/maven-button-blue.png0000644000076500007650000000401711202454500023350 0ustar shankarshankar‰PNG  IHDRZ#ž/sBITÛáOà pHYs  ÒÝ~ü tEXtSoftwareMacromedia Fireworks MX»‘*$tEXtCreation Time03/19/03öTÊ}dIDAThÞíYKH–MÖ¯¯,•n‹]­E¡TD YA.„H[X´3L]¸“¨ »YÐR»"Q‰ Ò"ÜØÆn`t1ÍÒèâ¥çó|<gæ}}ÿ÷Ã?‹áÌùfæyÎsΜ™/¶  2æÿ;99†ôéÓ§‰‰‰É™z©ía("„B¡X«„¦ ö™3g›u %jÌIY÷MHçOÆlÔˆ é ûp,J]]]ŽÁÁAÂ@Ì áž5z•ü¼^±Þ³±D-°§³³=ÐÖ`Sããã"ËEà´d@ŽyóæI§I«ØXh k8ll#ë†ÞiCg'‚vNZt–&wu²ãÆ«V­’ßöîÝ{ìØ±ÊÊÊ7oÞܹsÂñãÇ«ªª ¬®®~÷îæjll”þû÷ïïïï—ï]¼xqåÊ•2IYYYEEHøñãÇ'Nœ;wŽi³ÀßÎ†Í hœ¬¡R°šP™~*%Çüùó… øÌÞ¾}{ýúuP͹sçÆÅʼnÀ?A‰‰aÂ(ñBY'e/D A"p$$$0ØÂ;nÞ¼ ’cÞ¸©½…FÆFiê#£´´ì8}ú4p—Éç=Šžñññ¶…¸øÿêuLøÇ{6}Dá€yÔ‚”Ð477KS$Ê[·nA³{÷n¸†ÀæÃÃÃõ³gÏʨ?~ â¬X±‚MtvšÔÉù€QC úa°À’#(kRLŸHÃ^¼x1>U$ Š,‚h8À')°×jü "ø¯^Ÿó_Œ³P×××GØ1::*;—"Xès—ªó\ôÊ‚Ù+(á5Œ²x4 v8ú”v–Å‹Ëæ‰ˆ‘Ùy† ¸Gé€X‹eéLL°#‚ÆOvþfd´ò!ѯ±ú‹†ÀZ°hÑ¢5kÖ¤¤¤ñ(?þ$ v>fј˜800°iÓ¦åË—#Ä213Òým{ó5^¸sçæ£´òÏŸ?Hzzza#¤IŽ¥K—jFgž,8÷ìÙƒ3‚[Õù»±8g:o_yþ¬YãC.¾p8 j$''·´´à$MKK›fÇïß¿ ‡ÂygAÆ‘‘‘| "_¢›°H_Õz™_šâóº§,]’CiŠÌ±RK“€™“ó³¿|Hô8ø333{{{SSS§ï,K–,¡kð(ñ‚™#Ñà¶5/ š>|ØëB}ùòevCŽO}SS“̃[ê»wŸŸ–„ŒÞ˜êÁƒÐçäähå“'O|øEyöì|8’‚Ï\@2†Ú‰jÛÖ¯_Ï!gΜ‘Ü ò… $aE‚éÒ%è!@síÚ5ÈEEE DVÇ-·¶¶l}GGäììì­[·hΟ?º¤¤DvDÉj,X wg²Cá„Ô0‚ÒÕÕyóæÍz8ÉåÊ È_– ˜2ç‡2NÁù S‹^Ž ö@ÔOÜ'4Á™-\ä˜ ^&T‘l…µ`±qãF#“¼Ž—öÑ2áÐúÜÜÜ;wîØ±C;¸áã:„úÔ©Sú.ï|ĉæN7q²'“¶6'fnÛ¶ÍУ€N`N»oß>ÊèCÙ` å‡ê  ¤™B"à’]7UŽ9â$È4;`"±¼˜K6b„²cË–-Ð?~üØxXó·<¿}û6^UlÓ¡Ï®]» ´µµ–wfF^'€\²q/uf•3Ò0°Ã>_“ŠIiUÍÔˆí0hk‹i6yÅmyma9Gîß¿¯ÓÆ#Áa¼Ð2 ^^ÐÄÝZg(|.†ÌQawi¼à€yŠ¬Æ¶ÌöíÛÛÛÛqò.˰6·dw~ñÞ½{v8ÈÊÊb‡ÎÎNŸ'rÁ>b‚X îè|ÄŒÞhyŸ5p ¼~ý:==©‡Ï“²}îÐ6K§µõë©bûƤçá§‘§¿zõ Ï]hÖÔÔ„lWô/Ë–-CÞ‚G-›5Ë¼ê ®nwsê8jgÆZ¯/P‚¨ñòåËÕ«Wψ .´3Q¯ 3Ò¶G­]»6))I^·Œàd$#^M{ÆMÇÉŸ{€žÄ¾éùýúš?þž±nݺƒþû· ^Ï+²Ï§OŸ:Q°34Û¡ '²7o[5`±=©‡]7lØ,4¿ÂrI5dØá¿³Á¹bŸÿ®üÿÍòúËùï_ÈU´¿û këý#¦x!Hh´ÉìõÌa¬ÞgÃ6.úoPû­Ø¹©ÝÝÝ1ÿýâµÃà$ø "™‰xxfÌIEND®B`‚rampartc-src-1.3.0/docs/images/logos/maven-bolt.png0000644000076500007650000000326511202454500022054 0ustar shankarshankar‰PNG  IHDRZ#ž/gAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<GIDAThÞí˜OH\WÆß¦fÓ uQAhÀ †ºH[© H3E$‚P¡0 ‘V„f%ØJ(‚0 ta;T*H ˜X¡P“U颸h6YMã7sæÌ½oLŒµ¤—Ëã¾ûîŸs¾óïÞ™¤ôq%¹.†tt”ÂÎb±\ß88NNJIR:=MÁhyù̓ck«”͆%£«€ƒ½×Ö*|¾Æ[¬¡_ŸRÝ €<­L‹'s©¬6>^yåSœÆPãNM ëh¬ºl°ªpLO—†‡ËOÜÓӼŬÞÞr›½å9Ö0Æp´Àb=#3™ZlFOæÒ` Ï:ùDSb ßm…]X§l{’> $¬Ö²Ùl[[Û³Òßߟ=+ÓÓÓËËË©Q©Á!›°•ÉJ]¹­è[9cxÉ% fx¥O4ègM‰TV°€ ^µÏдj¦ˆbLƒ„ö9UÄA>ŸO’$“Élllž|•HÖâˆò+€C[X1‘¶¶“‘úZ7©HÌAddd$:I2¨¯¯ottŒ∙Ԙ‰3òD€ÉyFõè‚Àr§Ú>ìLsÃ'ˆáye‘øXaÖQ`l¢ÁD™ä¯LÊ“ ;;;^¡@"§ŠN¶Ú^ÛH±¤>ÿ¥¸þtGj<—^*¼rRÆ–e¢è£Wq3>³¤Ä^ed 3)‚;;;yªáËáá!ÌÍ͵··C¯ .Y‚BÌ1šj\bš´6MÇ+é`Ú >`·Ý©d1ߘ6ûC‡´²e8¯tЉFÀÚ)¿L à*’ARÀ¼˜˜0àˆimm%›ÀŽ‘HÌ–;ž’𰼂¢“"8Yã“EV5:n š4)ÅIˈ•ú²»»k4ðJÓŽ«„£¹‚Ñ1-UC. ¢AÆÆÆÐKÒ!jÀ£žžžà’´|ôzúV‹×¶Þïúðî{Ÿ¨}ó^¡ðåÚ‚¤•îînyNŽLNN’& 344¤ÄN½‰Uàxðî­'™wî|úÍíÏ¿WeËØ¦¶¿³T^¯ Ž®[KO[Þ¾ýþg´y?йóÅ…ýg©p3,,,A€­]kð³#±ýn~0ÿÓ¯Ôüù‹Ø¦…#?D®’ X"¨²°°þoø-v Y‘íím¥†¤,„ÈËá z8(`ôôÏ¿ÿE8ΩO~ÿ+†ÿIýTñ—1^þf9xXœ{…`òõƒ´“…¤˜ŸŸçpѯ•ããcž:nšƒâÕ!æ¤à ƒ˜Ôûù4ûõ/zentê¿ûÕÏiܬ@?_ã•™ªkmSSSºw"ŸúEË;Š þdK‡Ãøc_QuZÊŽD#WWnÓ^iWD±¾ßle_Ê§ÉÆãô‹Ëó¶Z#8Hüç‘^ø@ƒƒ°¨ANê:bNÚ0ÁÁ`ì¶êå£m°øâd)ØgXðÊ.vlù‘K‹[$|œRá Y@D×0IwžÍH)ÖX[Ì´LÏ×C„†,žzì¿*;»FÛÈ¢bà6‚cssíèííå’νÃK)§ïÅØá Å7‹¡Nߘ©l·ö•WóGè4J‡ Y ¯÷tŸÐ.¬Ÿ5@ä$þMp>¦ÕØmÐHý°ø¸‰áðœ·[“DôõÁ#¸žß¨‰¨ ¬¹0;|‚øðÃÈáøTÜðÚÜñl:kúûn€cpð;D×ýý}h¢6ÚÑ Fì ùSs MMcq ®Ò挗R:/޳}'À‘­DDj’Oû‡õåp×P³ È©F‘*Á¡º¬di®$©·#»çØ=Šj>Ãè'­âû’_Gñ7´à¾{þ5ÌÖ¡áïo¯Žÿt½8þ“ö1´hÏúIEND®B`‚rampartc-src-1.3.0/docs/images/logos/maven-brewed.png0000644000076500007650000000441011202454500022355 0ustar shankarshankar‰PNG  IHDRZ›¿ùJgAMA±Ž|ûQ“ cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFPLTE™™™[rÌÌÌœÂ6<{{{02#ÅÅÅfff)2ZZZïïï­­­ JJJw”ÁñBBBÞÞÞ¥¥¥9C›¾ŒŒŒfffWd(‡“Tÿÿÿ)))AH)ºº¹¡¨Ò^nObÌÿ‡‹|RRR333Šª æææ!!!ÖÖÖµµµo…¶ãsss'*JS$™™™ff3l‚Ta!NX):::¥¾CšÇ÷i‚;B"48(|•¥Ë dx¿îIY ‚Ÿöõõ‘²¦Í­×CS¢Èk„ tŠˆ¥FI9Mau„„„y–#MZÂò(.[h(Vi _i;€™æÞÞFM-+/4:¸æj} ”½q†usŒ:F…¢­Ö°ENRJJ½½½­¥¥µ­­|“%­ÎÆö9;,Q[+¤Éh{„‡§ÿÿÿíáÇ €tRNSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ8Kg pHYs  šœæIDATHÇ¥–sÓdÇ^èò6 1I]ß¼Tà5¯M"Á[E™´Vd[Ýt'–Cåðz§›þvŸçMÒv›¨È÷®Iš&Ÿ<ý¾Ïht”R3t^/ï(“|ØÓFV×÷ã˜Ƥӱm»ÒKµë½R1Õ5¢hDëZÚù =™t’DÁõyµÿNÅ?}p¤¦ÑЬÀ5·ºýƒOÊçã9©oÞ›ß( ½Œkš h„&vK!Gênj‚Â[7æÌÎæ$ç5Ø›ßUâ€!hp¹S™ ÿ´¡À½µï<~\ƒå¹åòžRò‡s_à÷åe`â‰AáË…ê7<¡i,bEÖõb¦œÜv}ÿ÷7îE×òÅÏï^âBïÕ«Þñ}ïô£Þ·Bˆ¯zg/Àî~€: ‡îíw.À¡û l NGÚ°Èxø[ûW½ßă—;OwŒ/òwŸùsñì¦øìóÁ\˵Ey÷%¢hcqáÉå{Ûb;z8æeÔ€Ž ƒ`¶2¤Q²C`_Ý#ÄîËu)ÿëëë;{Ëâüx+¿>–‹ãÁ Ò½ŽNðÒÎûž¿àùaÆI’DÅ]4ÀjŠ^:Cô§€>'ö@ËÀçÅÚ úýþ&'Їâн9EwãØÇìëè*d°$„ôðowï®ÜHy 6ÁüþÂÝä¹{‘oáþ›| ¼|†<ãÜuŸóÚ‡¥$„Ø|Ô ËÂÇœØÿy÷)¢9ßù†{-z(ÎD×Ä“èŒër—÷E>vûhu´!6òüJý$~œ¢-Ëïú„ÄÛîaù ‡gï<º‹}û6f@seåë Xjj~´¥K+§¾Ó´K+Íæ’†j6WNáÑÊûZ%Dz¬®Õý®A’4t2'ÌB•|ü¨¢£zÝoWÜí¨ŽÚZµVWnÅ]’aÓ—C…>ÿOúõ£ê ŒâO Òaµ@NcÍd2ão#…Æ…$~œLZ ¬ꘪËVQ^—ê¼A&!7'$…¯a‹‚sª{XÖzÈ=›Øx\4d×ÕËØ-—ú^¡RRDµs)§ˆ0Û"Ì*±˜9¬kX¬ÍÛ ø¼Á<Çò få ò¦ÉG 1­¡ïa«5Ml páÔS2Xk´XÌÊŠ€ó Ì8ó!uHX°§, ÆÚšÖb^™!X2PÎ$™• æ58âÕ-”0pFg&ç&D‹)Áá|ÂBî°4e6ôJf`Ô$m¼®ì!PŠPŒ0¼°fŠöˆVMuÖ¥-¥Î¨””é°™XŒ)Ìæ- ž©ÏÂOBÕTazºu´=™õ@6aÙzÄ’”":³,iµàïq¦h:EÚaWd5‚ÌrÊ×ÐY6E[1üDË„M˜#S6©–ûºuÕ÷`~5fäýHÔœY!1äS勌áyÜ£UÔí íAv$ø’ †w¡Àˆ,Óº.cƒA²´Y8†¬ÝCocƒÅ:>£°Í|ô: 1 e æ¨)“á4Wïj’×# Fª~Ë¡òÜ¡˜ê™êiæé)|5iYWT×qíL¬–³QÂhµ‹òE@- Yùì›äò_t¢Ð9’G ZÃð÷ ˆsèHÅ<׬M8ó\¡{=0\ ŽK{{ý\ayœÉšIEND®B`‚rampartc-src-1.3.0/docs/images/logos/maven-frankenstein.png0000644000076500007650000000201611202454500023574 0ustar shankarshankar‰PNG  IHDRZ#ž/gAMA±Ž|ûQ“ cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF pHYs  šœ„IDAThÞí™=râ@…' qH@¾µU.g›p­S®ÀHöJ|’=‘‰u"ç\ÁW°ŸôÐSÓ3’¼¢Ê¬»¦¨QÏè§?uO÷ˆðþ-FBÏØóå6qȼpŽÜ”ñôðpÂmò”ÃáðÜÈf³I>†?µPS–¥£¡«âµa¿&“¸Y³»4ëú ¬‚æg-èÀÎø9€ŒÆ?ÖR=Y4SCׯ«’á@û×&ˆbÍ}8lÛn·èÀA¨¡ý’wÐfR,ÏçPÂMx5ü¾½½Q3Žé"¯#e:–µôãèòàÀY«Õ £p(\ }rÙï÷ããXœ¶X?«g§£Þ>Þ-‰\†ƒC:A"¸ìˆK©lþ»k[(ûUßêÛ¾I1_ã´>]8`-!Æ=½Á;&×£“h-ŽÊøìöúžp ,ðv  mdÔ…ƒ6»µ(qÊP\J,µ½ã,±8®V}Ír¹%³øÒ«Áñòô[º1~­Òá¸ø\†î6 ާhVÊjl÷R5ž#n”\M…ƒ¯Xžá(|òËãqq«8Š`3Ë1•öˬšù_àðDfõ„™gaq0ã&q”Ä:)‘,¨´õU¬Ñ´C-e$L:8ÅÝB',¥]uÇ`s™%‰C í^ŽIו˜ Ü,%’ˆÓh ¶¥½D[!j×£ô?\whI”aI)Zý9Å Ô¨”r8h¹L ǣν‰\'kêâH¡%R˜ò̈ÅÑœF˜ Y‰9Ü•I´=“^3íáˆïkq€#å|…/Éã&^ù8¸ÓÇ#"’uh”V/ܤ°Æ—³dz‹Cèù1eéòŽœµ#'Xð4"Bïu8d³3Ø’J+¹vXÚ Ø›/¥íjZä6íßú‰Ø·§-¿ wÈ}J2^ÜРwà§ó,¹dßáÓ‚‹ âU4ÆÚ¯÷f%Ž—x¡\;’×ïǪ¶»Ä®n8øXè°°zZ‹wÈÔÀ=k2^¦LÚgàˆA,º[³Ð¶•Ûñ!GŽ×Øèˆ5î›à`Ý¡ûÚoÙ;Ús*±Ìíì ½y»OåËLÆ‹­PóqØ+ g–ÏàÐEnäo§ Ĺƭýí$Û&ün¾Èeñzw÷¥ÿˆ ßS[ù5Û0s„þûIEND®B`‚rampartc-src-1.3.0/docs/images/logos/maven-button-green.png0000644000076500007650000000367211202454500023527 0ustar shankarshankar‰PNG  IHDRZ#ž/sBITÛáOà pHYs  ÒÝ~ü tEXtSoftwareMacromedia Fireworks MX»‘*$tEXtCreation Time03/19/03öTÊ}IDAThÞíYMH–K®ÔÒ²ld¢%„JH ‚uéZ(èˆA‚¿à/F©©¨X”©ý^Á" .jÙÖQÈ @m!.Ì•2ËR2õÞçûŽgfÞïó®;àpf¾™yßyÎs~æuovSöž?ò[Bñ÷éÓ§ÍÍÍý‚®TÌ{ýŠUöù…9ƒ¤„„„È{ªž,usÄ\…–ÆiOÒùé¤+Áà“'O|p,--1,Þp0(|`>¼ÂÂ<‰·Èó¸FÔ‘ÌŸ666Ю¯¯£ÅÑ0ˆ–7Á¹Ô|>©ް°0‚€@a‚˜p˜¼Àveye@‘ ±SKLŽ(óÐ Kûig;èðííí'Ož¤ ®_¿ÞÔÔôñãÇGA¡.Ú–––ÙÙYltÿþ}š_VV677GoÐÚÚzâÄ Ú¤®®û€„ðÇ7ntwwCqÉjgSWîÀƒÄf‡bÏ$j¨v@‹ÅhËËËqþ¶¶¶ýû÷c¯ÐÐPp‡´¤£Å¯Ø¨¢¢âÎ;÷îÝûüù36áW¯¯¯ŸŸŸ¿yó&1?<<œvC+§yÓÛþ.¹B†qL×&šøàøöíÛæoÁñ0råÊ•ééi` â,..x(è~ýú•Ú/_¾ÐÖX²¼¼Œøå0¤À&×®](˜PUUEد¬¬|ÿþ]šÔj|3^¸Î¦ZC†¢¶%RpLбãàÁƒ„&ÏÌÌ$Á­0øãÇŒóó0(iÕêê*bMtt4wA—m=˜â5ˆÔõˆL3¡lg ”accc„ö¥ü"…׸ÒÄ®Þ59˜ðdÒ5ƒ‘ÂÑÊ;ÈÓ§OCÉhÌžA1«³¾Øuÿw\Pƒ”8dW²C¦ "f° ³PöìðÁqäÈ&a-=¸Ü8|ø0‚+pä…œÏ9™Ë M•j®²E.WE-ï©ÌææSèñññ±±± ÷?þ´a­J!‡BfIII9~ü8’®d7"æIVh”n~Ö9 >ʯ_¿P:½ÿ%‡õÁqôèQ¢É `(›••…A#²Î3¡1 h •-¹ãMdCP#&&æå˗ȤqqqäA>8ÖÖÖ¸H—º•àERRHôN[S0Wõ;m%Ó½ç…ìóêÕ©L'¡¹M£è ÃY—ã­Uq‰ÿܹs“““€c;¬÷7+(ÆOŸ> jð!Í–!¨­­u]¥oß¾Í3Qãó8 Du.*èyyyÐQãS‚W[={ö s.]º$Ÿ?îòAIdtt”"ñ°sð|Ì5È8\½H ŒCêü+ê1è¨Í 777CGÁZYYyëÖ-èP0~÷î]襥¥EEE¼–D:%Ò‘Ù/ä{ö÷÷£½xñbvv6¡™hssså Óò}…‹ŠŠ²ò ‡ëšûæÍèNòÙò‘t‹1uªzMnI¬3¸C™‘›¿˜ðâ¿\½zÕ•Bü²E"b‡” O¡jMÖ)ÜçÏŸ—\#«r†§U<1Ç•ÎûÈñË—/ÿåY")²NþŶiéW8fÏó`nè°¶é&###hÓÒÒÔ8±C2ÂÊ”’’÷` ³£¯¯OV(’Š)$ˆ>û!ÉLa;Øá¢À¦M81)hfjj*¶f¿Û•µñIåñãÇl:9'''JOOÜÓ•û\@ ÍÏÏ·V•ŒìvUª¶sÕ`0)ÇÉ´¯^½M233Õk¼LqÅ â9r‡ 9G}©t±é ÝÂÂBëw0¾7lÁÌ'R)(é¨U3ÑMOO4*Œ[uë%½½½ü‚§]¸p'¼xñÂãm JÛ ;ÌÀþ²u£å xÀÀA —˜˜ˆºEDU%‰œ#ýßü.míšõ®Yï™å†ÊA¬OLL|øðE6ºHüû”+”cÇŽ¡nÁ7ÓW­,S­I¨€dô®²¿Wè ÆÔÔÔ™3gv”a‘‘‘Ö³YßA8ËÐÐÐÙ³gO:…8"ýP}˜Vof-ÛäOj«€L1E1ÎE"ÜZAówïÞÁ3¶ËW*ö|=®¨>_¿~mEÁå#.¯±ÕzæàÝ$ $'' ùòÛìP!Ã,áA¸B†iv«yµ7oôÖÿrytå—QN:ê\¡ÊžfÌ÷ö[«ëº,lú¶õÂî}réüÞ¨#X¿[àxûöíž?â—ÿ4“òÅü °IEND®B`‚rampartc-src-1.3.0/docs/images/logos/maven-bulldozer.png0000644000076500007650000001044311202454500023112 0ustar shankarshankar‰PNG  IHDRZ¬a xgAMA±Ž|ûQ“ cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF pHYs  šœ™IDAThÞåZ XTeÛž>ý2¿6+¥4Å2•4Â-·²$?´}‘}†e˜öUd—E6•UdDA”ÔP 3·HpDMe»ÿ÷tñ= *W}»×õxλŸ÷~î÷~žs€ˆñþUFþ‰D¶ÿÊçø‡ï󟵇‡Ç8oookSSÓ™êêêo‘2_(î"×M¤>ÆËË+ÀÍÍm¾¾þÔÿV Ÿ`ô‚I¼u &‘ÛQ=7ÝÍoŸs\68øÇéïïç C|||Ê ¸ñäZ,‹;“/‘û"b‡H}&±,z„¹¹ù fÜ¢Y³ÆÓ$fLLBSž2œgÍÃÞ«‹bæÆØ bE£õôVNHŒ·ÝøYÜôëM+ÔîÐFó÷¢Æk×<­W½ný,níl·v]]êiÕß»,̫۱r¢|€{yÞ.Öꄵ®Ønhn9sO¬1==½‘”kYÐH{¹Ï&€gǼKÝL ì=cNlÙx@k`ïu‰u è)ì3Tý©Ò$ñòÏJÛ„G÷üáj¦#ïà,n ?Z¼`ÔfÆbÕQÐPåaÕâ—àëã—Mó¹ó¤‡ w…Š\áááÍ'@Ö;PN´+..Žú,¹¿G€¹ÿÎ××7›a:ŸÏ7¦6Ú ‰ª«ú#g¥;ŒþÌzQ*Ðâ×ôLOôõøÂ|­ Â7ok.)­nvà‹0u† ¦¿? Ó¦Mƒ‘‘1ß…ŠÚÇô5rÙœ%º´%@˜Î” K—`O`ˆµ†††2åÉ}-¹ža,000›”¯àý8 dPe¶®h@1§c güª­ê㛇s‚ä=’ªÁ\½ýBcÒ3\ÑßNÆ8p ²¹½½í e•áææøødäåí¬Ùʘ;O Aþâû½½½ÿ?ù`?¯(ZtaK¨Ø†) ðˆö¾CØËmccðú>#Än1 vŒ´W‘rqLul!;æ,H ,ÃdÀÉ´{ k²²&% œ2(‹díòXÎötÙ« ¥ßtüP¡cÉPŒf@Wú†eeïFK`ÿÍ"ÔÔo¾}»½™ï%Æì¹AìŽÂ=%ùxb®º4—/E€Ÿ¸{½öz…ð0ÑYÿ@ŸrK¥×¥[|ÊÃü}ôè5™ dµ§§'LLLàèèFJÈ ðwct›8eµPàV±ehc¶N…ÃX ¥Ïà8¦ŠÛÌÎ'‘ÇZê¢Ø>ÍtŒ %›?Š+3¿£xn.FˆƒÂöíqE_·;ì6ÌCñꞣ'O5Ûò…˜2sLÌ-à%p†ŸÄJïMÁREØ‘.î(Êñpµ·Ò‡ÀÃÅñnëÆ‰ÎøxÏ—w”œœœV€K¹`¤‚ÑlVRö’pµI }ÌiFÊäD„ ¦Ü5”ÞÒ}‡ &ø6Ë‘ÚYOÌÿT¾vÚ|VÏ·Á R-\9± [–#M Œm>ò#rĘÿá|²H߬û V6æP˜¬åYÊðûCâëo¡ Üœ7 ;É9‰ÖHËñ±‰TÕíÔÇ<å¥å%ò¢E˜NRi7Ά2¸ RàTqÊaô˜!Úœäéõ@ÿ.µ£ƒ1Åø1,èÆC=ØËë»Ãïïmž€;ãÑÙ¨Œ”p»A Ïή«áá©Ùˆ°7&`ÎGïCoÝW˜¬¤Ó5ïâ‡<]ìû;²St‘é· [ ç"@O !ß.ÃÌi“ñÍ2-ŽñŽäI4_fvÐÀeµ1M H:XÓ ”ÉGo5iÙyŽŒC©ëâ¬)K?3ž’u ò:[|Š;›Ôpóü'¸Û2-¸~AÚÕ1Ð1½·ÕÐvx*.¥¾›¯'bâ˜W±DóSh/TÂ/ »§ãþ™÷qvÏL\©™ëÕóðà¢Ú«tà6ɯàè¶/ a4n˜™èÔŽe`3çèKdŒ£_•¼Œ+3\¶?%”p¤¤‹#gUlæ@ßj¶Pio^…öæ¸zþS´ý<­?-FÛù%¸wK‹€¬Iãgh«žŸb^Ç‘Èw »d*&SÄ⹊è¨yƒW§¡»Ng çãr1ÎHupéðJ<øqpòC v<.Y í/‹žd:è€ XUÜ£I½€t±ãXKe¯²`EÍYÄ ¤UòØÈf1]ì¸"ê9T8ý¢ž–nþößÖ-öÛ·Šï—íM¸Ÿ¿S< ­……é4$Jný2"¬_A„Ýëˆ2垣ñKêxœÍœ\ÿ©Øù6.ŒGûÑñ8µKõ»çâtö,œß;÷& ¿žøôKh,ц¡yÖ{ÿIß(ØS%Ë·Ÿ¥ãSž ôžPkõÊ;œˆ·ÄÉx;‡XÀòëÉØ 9–ËÇÀðÓ‘0Zȃߺ¨ x73^EG"ú*ÞA…"zkßDßOcÐQ;ßgMG]Ö¨M{ç÷(áÁÉ7Ñ{d2± ¨ËÓ……De˜›}á?À*Ció@çEò^,Ï÷°=Yîsädö*Â`òÖ·b„fªØ!YŽp‹`¬Œ8'eâŒÙ„Ñ (õ‹=‚‰¨ò}‡•€¦ãî1 ¢ãKÑQ­…óÒ/p©t-z*g£ÿðdàØH4VB}#Þz.p>Áæõe7£JL‡²7ž²q¥çíû',¡súç~ÏÝÊß¿M|-7ΛFH qÆVHƒ!tBE´ ¿D¾p>JƒçB¢‰ÚØe8¡²XmTÆ/&’¢Š}ñú8²m ~Ù®†öüÑ[ñ2ÎVÚ€gˆ¿=kµi›Œf¸^éééaÊ£ÙM1€ ˆ5±š2Äæß ÖÉöÉeÇ(ýƒ€6–§×Ïý­£2ÕKâb´ Vë?Cœ`="\×a¶6{Ù ,9u…i8†Y(޶Gºçr¤x¯AŒ½ âmÆ"vÓk¨ ‹óIcq*IgÒ´py‡*ª3  m.?ö©ýX`ªõSþRì‚Â×>Þ<ûe@S›“]7Äæ²úoýá_¢w”ÄúkدEq˜º¥n¸W拟Ϡ1[‹>˜s] ìŒvƒ4EijöDº"71 •Y¡(‰s¡=×Â÷±b_èlŠRÇÉÄO±×_{ÓøH \9±í{‡%çj6No/\9ñ’”ÿù‘­zØôZ9½U½¥iŽzñЬ$ÔQŒU’#OsÄ¿еé¢cž‹á¶q5 –Ï$l´D[±m¹N¸˜a³Õ³1Cá5|4a æ ÐN“èø„:~‰}‰|$ûY‰÷FõÎXœH¡!Û‹äζ8±ÍߥmÄ©äÕÈ©¢4É·ñqïŒø—îzÑçs6bðBìˆæãFñÛ¸W3%™v|òL¯r€¶d$ƒ•LKÐIT[îŒg$HõÈ…,V(ÉiÓgý†,>üî…¥8A˜íø¥¬õ4ád²¿ÿœVáçÝ4åð±ÛCŸ|0c_ü+NI²‘×l9qî "þgöùÂAw:V¨Œ‚£þtÛj#5Ðy[ƒQž€ò¬XÔçÇ£2Éù~KQŸ¥Óiëp©ÐgSס2Õ eä•ý^é$ܪY cc½é,Ð/Q aÁ¶dÁLâXGI‡@ޤ4±}k<ëY®.BŒ \Uö¾‚íÓI¯A­[Á¶=ÿè‚pûE+]¸›é¢<Ý ÕùÞð°\Ddâo´X€`«%²ûfkÁRãm„(Ât1_ò¼~"7©‚ÿõ˜,‹õ†ƒÖhØëŒÂ¦eoAKy ¬ W#PhoSlðB#Ñà8Á D ´+X‚PËYˆ°_…‰+ñkñûè8î\1K¯ˆÉN^!ö"µ™:vÃJì&:9m:,HL›>„N i8`«Ru²CXÚ±¹Ô§Vå,5¦IÖç76ïŽw}ûùB+ ûÈ·¸¸KÇÓ6 /ü+ì ×FÉfüTB^@üq1ÓŒ°Ü ak°ßoJEêhÜn‡“8W(À)p1N§ÒMpj_" šîÈßꉔͶȌv@°À©þ|$xápº;jR'^Ÿ5 ¨Ý¢†é´•8ç{89Í#ȤL£¨‡œ ¨Ên4‰œ €'²öÈÓ}‡5ÉqD‡ÕŽ£+8§¨N+xƼ‘0Zû9.ŠGg• nUKÐR†ò©´«È7 Ì Û¬q$ÎMÛ-I½;Z¤A8·Ã§3Äø!7ù‘D§}Éñ÷@ÃGŽ7Cm² ~,ŠÁ©½©h(K@YvÒC¬àïbŽì`ìOpEe¢ ŠIÆb«‰úô帻wn¹¶„ ]¢ ÍÍÇRy´Î, aA§ÙŠ!Ò>:=´ä´=ÖuHª½“ âßC’äÔý6'ÏR‘÷R”‹ Vé ²嶸\f…sûBq¶0W¥h*ðFc–'Ò]p,Ƨ¶yá8ÑÚŠXw|—;#q2?¥)¾8.MÆÏGÒQç€ÝnËPeƒìÔn·Áe©) ’\áçlŽÌQ½¥³÷Ü7N·°°P ósXÒ±_ÝyŸâ–T8ä]j¶Ékçø‡p#÷¸ªÊË8XÆvÊXÈöёþNvÞ\9€Õ=#@‚Ãð'êxxôˆ—*LÚâf '£¿£4ÙÝßãZM2ê ½±?Ö óÈ1?ìˆÂ-v¨!L.‹wÄÑüTî "i]2ƒmP”à}iB¤‡9#Ñס&¨ÙQ8™ç@œa†‘ R|$L¥öR®Æ¸îÂ5ÈÕÂÕÝ$7KÇ®qÍÑLyi’#¹œ I;£bÆË´½INÚØÉu»–g]9Ï¢óDz'mó°B‚Ëz$ß:*ÃÌQj4˜äþí`†÷ºAi¨)Êb6¡"Á¥Ñ&Øí¿%ñ|dK ‘-Äö3”Ä °'ÚåQ¶ð³úÕDê“ᡇõ+àkkˆd¡52ÂÅ×\—=ñc.ùMñÎAÑÙÁÜ…8ORAÒgÇ©·Þ°Á€Ñ¿RË‚% uTö`ÉMõ–HçàM×——­È v2=f×µ”9•3YÌ ë”Oö¨o€·ÕÏ^ƒ0-%>@˜•,Ì•f&_)ËͺR’™Ðº71ôaå®”fÆ#gk$ò’cㇼH vm£ ÌÅä󉃜°3ÐEán(‰òÄŽ/ìŽ?ÈŒßH fë[ØËýk¤²m†ïµåàD‚!¢}}~ûþK€^ÊùnA­Ji¬ŽS¢6nÉö“•uäúyС¤G‡SÏ]ówÏ;¤¸÷ ú‘NLŸ8Á´çþƒý¿>|t¥«»§ívçëwïö\¿ÓÕÝÚÞqûúí;mm7oµÞjïh½yófÛåË-×ɵõÚõë×ÛÚn´»ÚÒr¥ò`õ1õÞ¾þ!×$Ö˜ç)®ÛfŒ­ÁBçÿ•¿½c¾­Nf¿ ý…óˈ"±‰¬½Í–9õ´ÑíÌ\ãŸùçcƒ¼¹>yYÑÂMÿM@ÿpÏrÂ{gËIEND®B`‚rampartc-src-1.3.0/docs/images/logos/maven-button-5.png0000644000076500007650000001070111202454500022562 0ustar shankarshankar‰PNG  IHDRZ#ž/gAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<SIDAThÞíYYe×UþÖÚ{ŸsîPcWUWWUnwÛvºãlj«1JŠÈ "ˆxL J$„HDâÛ! „¶€ÄˆAbpl„‘رÅq<$ÁC·Çjèꪺuï=çìa-νÕÕþ 9/·jßsÎÞû[ßú¾µ×%UÅÏ®ñe›UTeê¢ÝºôÎúO^|®5Ñ.‡{H·Ýû@ÖéJðOëß~úô“~ïR‘ÅV›£„d—}|D XÇÄ®·6Ö ™œÉ&¦ÚIkˆˆòd4T!‘™˜[àöu—•»kW·ƒöä¡qü”RZßÜ~â?Ã{o¾‘‹yÁË‹“‹‹™¥PöSí©™iÕƒ¸×ó¶/j/ÛCuÇe]‹n‡o=9ÿ¶ÃOßzêw;ÆÖ­­ïÌßqÿ¹„¼70"HœH‘ÉbˆQú;{¯?ÿìí·Üü“×/0P÷ÿñÀ<³˜^yió…W7+À¸ó®ù®ÃÞØžjåÝ‚|”“ª³%:šò–éÚ`1ÏNž>|ë×ÎwfóÙ{]æï ±Çj$P…B ftÇ“ÿò÷éÚ­·úëïLK_9}òË.†_Ø0 \yk§¶€ àcZœÏ2Ûʧ&¹í¸]p^˜À ²Ás=†ºNJ&ÏxîŽxô—깟‹ùœ0QT Ê"³‰æ'ŠÕ_85;ˆ1"ÖÎåløG/¾öOÿø->,Ÿ8¾tòæ••“'}ó‰}b0¬3!2R@b“؈”}(…Ë=qÚeH¼YËzG/î]ØóEW‹šHL"†D¤$ÑÀqõÅÿ²Zr ÖXÖ”TâÇî;’4=õæÎAúÄÝË=³¼»½=ÙîÔ!ºœò‚CJ!Úä“÷ƒZÒ½ÅOÌߦGn÷íYI")%)1‘1¤ªJ„ÓnzÒˆ1­_Ý*œét3c°yuwj0mn—ý~•‚¤Dä\–=G¥'1B170œêáÀ#Yg•’©÷ÎpÎíö Õk›ÕTKf—üò=¹ !ˆ*‘Q@ALÄe'K!» GÆ&hŠÉ$a…¹íÄÌ«W«·{UƒÅoÜ»|ÿ]‹Yf®^ë¾ñÞΩ“]K†¦è‡õ@tâ9õq>qŸéÌxc%‘ÆDPË”$#&I‘¢èt'g&;½áÕk[‡çI”˜CTŠvNF}ÊGç˜Ùìnõ겟›dC6pY§Û±ž{õn¤J™£[),83»Êåå…ìÈ= Õ˜ˆÙ)CÔ¸ª@ :N–RP¨HTÑXE%-½Ùȧî\|æÍíóïí~ú¾c§·}˜[j•uYíÆNÛŠTž§ëÉ›ÒÍwæÇïŽ37‘2¥ Ш!@¡ (˜"IÁLÊìVàÚvŸ$²ŭ€íjo` W•á­7/èŽÓ{»½÷Þ¾´sm‡i@yc,Õ ˆ¨˜9ÏŠ˜$Fu`g„ÕSf9ŠöÀs+CR&@ ”‘0Ib"'ËpX» Ƹzˆþ^¨ËÊ:uÖ-MæœãWnŸ»r´{ûñQ©!–¾uˆÛ­Ví=yÙ ?s|þ#Ÿ±'4Eq©TᬩhTDQ@E‰ˆ˜’ªUÍ2bÚÝÞÎX6I"©õ>õözÆ»˜ä×_ßÞ9;s$®,ÏÎÍÍo]Keê“Qe§Pq6ÖUTËŠÂÆ¤¬š;½ªG:t½"ºè™¬ª,I…ˆª˜ÈBÓÁªT%šA¿êí /oVD0LÌeJR¸Œ¦:Ù[oo‹˜àCеþú^!¦=]@k;^.6/¶§ŽùÚçN¢‚•™¡ª"¢JDDf)ÃdSm ¬Âú•µ# íþ Ï]½Þ€ˆ³Â9M.#fíN0Ö}6š›<¤”CÖãD[ª*_ÖÛœH &Ê­u¶޾îÐp8@kg§5DQ2"%…*ÄDºÏŽÞNªë )-»¹ÓSELšbÈ2F¿OÎPø€f3Teruô9û¡‰.lÙ¿ôì¿ß<½l»'D*!&f£¢+¦Ô#R¨ „„Nff&Ú@ U_×qÎ0ÀÄ­<ϲ,%äy·U´ »K—¯À„¼“m¨9R’“ È(³‚$‰O¡.ŵڭÜÅäÊHTÕÝ+ç;ÇîL )ƒ hPK)B ‘UÕûÎDLîÜD‘g°)IÒA…~ J&†Ü>\IF,Ûmëò¼]»ð“/çȹã^¬h äÆˆ‚dECU%€U mg²œƒV§írd…³lènrÒ­Bȹ"7ÌeYn_ݘlg)!*SÀr™0†}5¬Ü:ô)¦("d ˜¢/ÁárÇ™A¹qÞo½mï õ¤)« ŠwGpì i&CEqPª-Ée”Û̱+DÓ íEìIw{·–¬Uj»Ž^R ‚<³1ˆ²°1SÓ­«ç_˜>»šÍœÎö|eR0dQÀ°’BD„Vîœ5€Q–ç­;—19°¥”à“ñý¡Ö>ìö›;ƒ2JŠ!©q0ÎQcèdÎeâj )øh4¥¨l³º )Ö Ê;_õ÷®¾;sä¶$ ¨’!€ˆ‰H “Øøáúî\ÎËÖô¤u{ÃPÕÕåÃízãmÛ“)5·”U)¨ŠuäÎTƒºe,3ç­…íkÏ?5wA{Ѥd’£ÑQ™Cj¬@8Šˆ‰È9«bÌ„œšŸÉÚ“I1³ †( ›·’’ ±±D&øhŒ«Ik_9 b0¹³ŽS‘9Ǩc4LJ\ÅP×e§p±Þ1Bª Ri\OUÆì˜î—~}0\.ÍòtfX·+ùžoUšÇÚrYôUÁâÁyf) RhµZ63U­^òÂêàÕï;Æäêoj‘$5STÁP…îDTT‰;ˆX! ™?<Ýîv·¶6ÛELjԃadŽeG)‘±Î×É%Ø¢DoR4:k ëZ«çÄ–bmX 2¤I4™F¸H9%4£ŸµÞßþY{ï&„ `+QmŽý£ä'J)É:U€€@ÍYh$’\t9kß2 "\Sd†ºmÛ”Æ)‰H2Æ4,ñµïõú)E&Ê2Ûn ÓÛëûÊ+„®OLL¤" m¤z¼®&G•F4‚*Ta[ÎÚ:^úþ9 ´0•Ûý/˜Ð¼O DhèÛùD¤DLPUeºžW‘*’ªª EÆ­ýù=¸Ô¯Ñ\Ð~"n¶Ç–¬³ ”‰12ÑШc15Ž9ióUSŽtj<£âú{èújy?~û‘$ŒâH„f Í^Duÿµ¬œ{”i´?UÅÈL!1hŠD˜?óóg¾@æÏŒŸ|_–ì'ü p¨è8\€’DÊŒQyÒÔlÍ0±a‹÷?¼tîÑfsK÷?Üpoyõa‰ASjØÑ\s3e|žÛƒN|Öúœ¨HŠæä璉D…™–?ú5fb&b >ˆÄ•Õ‡ž{䨹G˜ùع‡®þ±ebR†]}øè¹G`WÎ=2Rèòê#ÌÚèÀâÏyá̃ ¹Î>xøìƒ‡Ï>Ø8ýˆ;cv¨ª”›<ÑaÔ¡)9¢8´I§‹OõÒÓ_YZ}ô *PI)úëð+®¾ò8€Í—Ûçàxˆþ6^ø›âÖ/&‘òÕ¿là÷R3wþáÖó߀jJ1Ôuð5$X{ö¡µgZ¹ÿëÏ}móû__üÈ×-ÃY¬=ûÐ¥g:zî¨^|ú++«°tÿ£Ÿùª*ˆ°²úÈÚóºñòc gG9»þÒcë/=vxô/ÝðÃB“ Dj¢£óŒ6ÔXBQ%—ULhø'c±Ü—Jià q.H˜FêG¾þ f+ÇJb‚¨¯kU‘$ @б¹9ÅÐÌ%)hqõÍxnpÀüF1(€Å{¾ô>µ ­o‡áшê¸oUB4>¢ 4-¬¦Qah¼½Q cAe+b ïwÚqË~ßjö×­ûüä/:·ÿþö ’$¥cLl ˆ@TjzÞe&huLÇñÏ.~çˆqäÜ7 "‚µ§¿¼xîÑKßûjcVÍj7^øsØâ fé r:†cl&MÔ´é˜1ƒ™C)è(ð*‰xDŸ¥ÕG\~æ+"úÞwÿhåÜ7Þ'™Í} ö›/?>÷Á/l¾òøûææÏ¨_ý«k‰1F`Œ…>ϲV§[מb`³¬y³u™¤ ]øö—Vøf3mLºï¨F›c¤áʳ_[¸ëš{6^zì}Šzøì×›AUÝ|ï-4æ:ÖàÆ©âõg˜©!‰ìWM‹‹Hd4ÖP©!3»ö™Lmû&ZÆY#I|]ªDak™Mvúóáü_‹j‰‘¬Ëƒ¤¾öMö6TÕÆ]1v@`‚a2MyHPpR[Ûš„Épc¾Ï æ›2l?}• 4:@ˆ"Æ´/¼ ˆ€ ÄÄJÍwã#É~ñ§û®¬€ª$_›–Œ¡8ÀQI1†`¬e“6tÓï(_{|0:ÇVïƒ÷Þ’UhäJ*MnrÖ€DUD$i"±†YA$$*ªB£Ú›è†L¾^†ýìÌrÃõÿ¶oëEC05’IEND®B`‚rampartc-src-1.3.0/docs/images/logos/maven-petesucks.png0000644000076500007650000000052111202454500023112 0ustar shankarshankar‰PNG  IHDRZ¦Ñ} PLTEÖ×ÖÎ2¼I pHYs  ÒÝ~ütIMEÓ9 ’´GÛIDAT(Ï­ÍjB1…¿#9 ]e ÙßG‰`öðîûh>jWm[,ôËêü 3€÷6| ø´iU¨ @xiÇ ~àX*cs¶~4³?knÞi®%'ÔYêN.©r¿g-YNWa«^§°Ü–¶ÖöÊŒœQb§Œˆ QKÝ+#T¡5·EÙYŸžóý7”‘1¯B¡Ã-ŠP¯·Z~ÕþÎüÅ?ß[ÖPŸVÃ1´½ÖXûôzñÃëÕ‡i8ãî'cuð«·ùeßXCÉVkà©õ1FÿâÄgêÑ’C IEND®B`‚rampartc-src-1.3.0/docs/images/logos/maven-button-teal.png0000644000076500007650000000356711202454500023357 0ustar shankarshankar‰PNG  IHDRZ#ž/sBITÛáOà pHYs  ÒÝ~ü tEXtSoftwareMacromedia Fireworks MX»‘*$tEXtCreation Time03/19/03öTÊ}ÌIDAThÞíYIK]Kv¸Î‚¢¢‰(8]º|?AA0 ‚ƒ1†8àŒ!(8 à„[]DAE .â@ˆqˆ8æ»·®eÙÝçÜ£»¯‡ê:Õ}»¿úººú\ÿúúüþ??ÿ‡‡´£££ûû{4 ?<Š}OzZI@@€|Â9àQÈ"¥³Å"Y±qPF€3!»Ò…ô©©)7§§§ +Í‹°PPPVn\¡œÅJ wwwò-Y `QlÄb)ZÌ7AAAÔöÉ+,˜JÌ 8>z„åÊ V ±¡€qž O˜WçÝ,Ä(]]] ôîÓ§Oµµµ}}}ûûûP`éïï‡̓ƒ ÔÓÓCþMMM?þ¤ßnmm‹‹£A0`yy9Høû÷otŸ™™ò¢˜ën:^j¤À3SdÔÝp„„„:777cý  ‡··Ë˦àà`8·´´´··ŒŒ û`Eww÷¯_¿êëëá ^‘‚'t«ø[miç›!’L!;ß½¼?þÜ? –Kuuõ?ÐqޱëˆAä‰çÉÉ „æùùùÙÙOA@€‚æ‡ûËËK8;  ‘VôQtÊ”t^а2GžØFëçÏŸ÷öö°5z{{Ñ ö¼ÁjR´Ñ…75eÌA®ÃÃÆ†l ESùøñ#w”iõÖóÅKé#s–Ì&n8...€%à(H„ÂãÐÐ5‰0 „„m….sɤêuuu…”ËM8ÛÖgätd0#:HEIO§ʰÍÍM‚ƒN–{!ò|QN ^Åî3€úéà$}8̸¯™ÞEAcv0 òЕÚÔVÁáÑðê|¡°C92¤‘£KÎ:;ÜpDEEñú™ÆÒƒ÷º ¹G4 AN%Š¢ŸóVË+Ø®—Š2 ”ÈÈÈ´´´ääd× Çõõµ ½0¥ßF:ÄÉ’““ƒ¤@°¿3á©§hħ›Ž”}/jÞÞÞ"ñmmm¡DÈÍÍ}V•FGGë¤0 Gâ,.. •|‘,+·¢†Œ¹}lå86÷•ó¡r“ôááa^*1‚ì“““ÐËÊÊJKK,³³³x–””0¹$1iË?»³¼yóÆx‘5ÂzÔP.¸ü\]]Å3//-T¶²N—ÖyX©SìŸËźnWö#_—¥ þõ0²JäÄ7kˆþöQîlE¯M¨‰W„Evv6WqL(¼eíTø±]†Á¨KŸÊÊÊŠŠŠ÷ïß; !˜‚'n ò.¯Ÿ˜†Ü!½Cã†. Æ‘YZZ³  @±Û³ƒuºõé,°Ò'&&”ä­³Ép@)A=aSçeGžÂÈʽIôŒKöüü|4¥]g„Uä[è›Kf~c>v¾ÕuJZ½Ò+c ·tÓoL ÆÎÎNjj*proÜíŒS7þ<œ±Y¾}ûööí[|7¦òTI"ú\›êÞÉ+«‹Ný–DvÜK@ŠõõuÜBÓÓÓŸ}ôE€pEõ¹¼¼¬Aß)V(ðüŒ«•>6ˆØmnŒˆkVV°!tÃKªŠ=:”q¬ Ð#ì3¤ö×|ã½þEOݨï)OÖ¯”ô6b•8R]ßÏ~ÚW å†DÄ úß6@<Á±¶¶æ÷ߟñs’°ÿ i¼ûÂIEND®B`‚rampartc-src-1.3.0/docs/images/logos/maven-button-purple.png0000644000076500007650000000465111202454500023734 0ustar shankarshankar‰PNG  IHDRZ#ž/sBITÛáOà pHYs  ÒÝ~ü tEXtSoftwareMacromedia Fireworks MX»‘*$tEXtCreation Time03/19/03öTÊ}þIDAThÞíY]hGÞÝ7‰1jšæBP#Të…¢XDÁ 1 *¶Ò x!*øƒŠŠ&-­"(¢‚â/4~"­?XAZDD¥EQQ¾šñB,´Þ´&E­‰&Ƙ`~v·ÏÌÙ={vfß7ímù†°9;{vvæ9ÏœŸyÝK·9ÿoh®ë„a„ÖÖÖ B4ÇQ—D‡®Ö[ª‘ä¹Qó<%Ò3OßR r$ëû\.§úr¹HÖOe—nÔÃx±õðô(AëИ9A<¢·øs¸9zTÁÑÞÑa¨pa ²à`<$,ó‚=1ÝÔJÄ ]±òLÁX­¡“ºM£zäûA.ç)`9¬z´«®zq Ž!%%s„b³ƒxADð$¸:Ž—¶?þCÍ0£–¢€M ± É ƒ™F¶Çð„…hÚN¹nݺ'N¦¶¶6 –øìóÏÿ|þ|ÿPƒ>)}×ŵT¿XÀÚ†m¸Ìž¼¦]†¹¿ˆÔB`‡¨àxýú5í ˆå¡§®®î·ßÇmG{ûË—/}߇€[hÒ„¢9áÑ›7oÐÃßDÏýû1ÈÆŸ=ŽawíÚEØwwwwuueïð´ýåö1ús¯ ËeH^Àä %á Èqhç‘°cذa„TW¬XñäÉ“³gÏ~ñå—®¶§²°çGÈȰvYYmèСAnà-[¶¼xñâàÁƒØ&Øe4¿Ý»wÓ‹’óØî¦áðò…<1âˆ183Tø“˜°LêkG w@8Áæï_¸pn_wvšЂ+Aϧuu´´à•·oߢŸg…ÇÓ[===ØJ£GæÛ·ÝÝ9Ëžö¿y+B‰­&#G r’2 ÐÄð/ X4ìáǾ%‰/€“kÅK;0ݬ ol„L,ò¹|‚Á·àà˜uüøñ"ÚÒ Ÿ"m 2%‹¡Ä†ƒV6,…¢Æ Fþ‡ý*wÀ¼c%v þ-v(R‚ ÀZü4;Ñúƒ€³À‚3´÷ÊË;::º{zÄKç#*žë4Df®.»q=Ž‘°ØIÔOú…†Ó#WæùÈ[jååå&L¨®®fãEp¼{÷ŽáˆS‘ŒÙiç«W¯f̘1jÔ(¸XÎTÍ¥Ú=tå„- ‡œ.?õò@c,U*'±3ý!9r_?ߣŸFŠ€…„š5ïWVJ ‚‚e °€ã\²d b;%0( „ÈåmãpãÅ…OûËuÊøvPý(––‚ãÆ»téÒ“ææñ55 ;úz{“‚%NÎÉqØ% 2Ž)S¦ +ˆâ“ïK«¢‰nôX^Àw^ CÉa<æ@;œ¢[Z$æêêI"P”U C$‚;@'•ªÚ›Ö¥¼aêGýúË/5ÕÕ ;*++ˆ F!³fA{öìYÍøñÃÊÊ’ú%Uç¦8²uëÖ|õ4Ü8c±zõjî?sæ õ£JÀíùóç!/]ºòwßïêÑêêիЙ?¾ì¼yó&WØ™^‰p÷ÁM÷îÑ­fG?W´©Ò- 8r”|¸ÊŠŽÑÀaÂÔ©Sc|œC‡AFnùرc‘°"Áo"aˆ²ý( пjÕªåË—Ÿ:uŠßU¥C< „<Ú˜h/^dêE^\·~üÒ¼yófÏž Dðætž½~ýúÄùÅÆ¦B®NûŽŠŠ…0%ÚptvvÂ}˜nŒÊÿšš Â9‰O«šˆ Gªb9–²Þ ¹¸˜ßE­äÅp=¥ŸŠú©’¦ð©sѨۦM›2\”&iß¡ÞàÖ¯š|?ße(qÖ–\ñ°˜>}:%¸¸0¡ß,¬[;‘e?íÙ¸ß2ë,Z´háÂ… ,ã€è³³L† ˆ˜²–Ï<ÓŠòŽÌs°Lv´µ¶¢Hakð@wïÞÅuÖ¬Yæ¡™ãH}“±¼råJþ6£“Åøo/–¯]»f¯ˆ¨¹™ùEE¼‘7oÞ|T·ú†#PI¸¦GðÈz>¡8A¢´Ñí?ŽAœ¸;fΜ‰¡îܹÃ)ÅŽXÓ–çþsߪ–XUè,^¼"¢#ÞeãËöÿŽ pÅáKfVÉ©£bÇ{NÚuä£9X[úæÔÖÞ¸~4©­­uÅ)^I™Y Ø‘b>U!™âÈ•+WØMH$õàw5#¤ï@CaMgQŽ‘°èà Yñˆáa%Ù)y$žöõõa6™ÏæÌ™sã0¹h\ñJ¢:ÄKJ!ž~ǹ|ùrRFÆÂܹs“˜zëVr¢^caAó¦«Ër£Š–Îò¿á8Ðp2yòäššƒ l"×>X¥ú%&gò(¶UâkÒ‰,wzB'•ÚÙÆ™¶HR%)øÓ=ÂA×'Œg;wîôœxŸ‡¯9ò^SÎ8LO{ø0f– ®éæKöLÚåýmÄ•~Ôµì/Õ ®tPm<~üx‡RAmÔv¡•‰æ›%”‘¶Ý¾}{âĉ87V§[â{§‹`GƒÞ{kjjè^{{û‰ßè蟚š„Ð~¢}`pÊÁKƒ?ƃ.^¼HögÏžžž¦t¾ß¹«z=¤···µµ$œÅÇFÇfçf˜ìyZÌ]j¤A)ƒ„2Ô–¡VJR€ <3WFDÀQZR :Ìïܹsð¿§§§X,¿b¡È®…BAÈÅbII Œ;::º?èúÓÐÜÜ\ii)‡âÂ… 333§N‚ú¸E®ø®Øz‰S É…ÔEž¢±ÐLÍ6”6SÄ-Im¢‰€cáùBH-»»»¡9zôèÇ¡qž>}1haa®óóóä º‹‹‹ÏŸ?çPC ðÎÎΙïfÐ=vìa¿¼²¼¸´há„ÚR¦’"‹>FdÖð11d†4^Ðc!pÆÀ5çå ;ÊËËÁž Ûü“'O>zô¨¿¯¿¯¯•Ȇ¯G~¡.EC(GWêÚùäzòäÉéÓ§±L°Êh®Ç5ÊËÊÙmò_D8™/6'Tüá¾µu™lBp,--ø¤ 1G`?ºüu‰PÂl``@0è·G§OaÈòò2ô†QˆTB£VVVqªvU©î¿V@C›‰ ’N Ç P›#HIö>Bd MC¤ ôr:g`¹„r—@v÷î]‚ c«‰­Fo·ª¦°Ö|lƒ°gʤÆÜŒ¸YúÈRwå̇gd"cccŠ¡b‡ÆÂÙtíÖ®/ŸmçíŒÛA6ÈV ²R8…ɼeèJÊa‡'RE.ôÅfê1v8vìØA@ð•¥Çë*Ã0É8¢C ˆå-•S<4ª<±nÙÍ,I]àfP£ËB•MéõLxÙ¾}{ýîúÚÚZ†[Á±úïUÍE%©¡JR¤ÞŠòù§óo5¼UUU%¶a§0Ëx*©SÌ鎭çÔŒëÈ_Gì³¼ûâÂçÜQ¹Ó”(/’Û Žê‚`~¼ñ¼/¿ú×8zÁ޲R–v°L§>Åy>J2ÅfÇgW?³ó´aS¾À2BÎù¢¥¥eD¶¶¶6gÿü9ä2ÿDÐCy‘a”½ºÉfö PFB³cÿþýxÔÍ›7•^¾NRQ #ÜÈk¯TÐ8t6#ÞùÍ;†††ÄSy¬^ÕNÌ’jW¼|I!…άº*­Üax¡¥Ô‡ŠP£••Ú¹ƒÓGãÁÆñã Icc£ý– #˜M¶l³Ãe–i¹rå ‡Ôä”x¥—Åt‡‡‡ÑÅÒS„ât/ÙaàP%˜{cœôkkkâmk}uëàOÞøûññq@ÃnCÏÓ'}´×yF•#Ú§þTLÆ—Ó6 ?ŒŽŽnðŠœ°À1¯»uîxÿ¢ÞÉ2Lœh«wU§ð"cr“&_íuQ·$¢dßKÙw¬ÊÕŒ²ßV& 9·ÆÕ6Ézw‹E°k&ïß»woòádSSº—/_Αÿ2e[»,wíÅ^œ¸=±¼´l¯a ¯y oñ‹“³“6^êIJfü:ËÙnfõcfî‰É÷qÚxðàÁîÝ»é@­ Îv†Ñ&3€ñÚúÚ7¿xõG¯Öü o·ìmߤ ßK¥C¬ruHA ;õV¶lRœ2Ä9ÔˆC#²ºº:99ùõ?¾Æ«©={ö S†mD«©®®¨>oݺe;[;ÖJ‰ýRר«€ß(Qÿ¦“t8é|LÉÇè OŒˆë?~XØY_ÀQ±­"™A33›lÛ¶o«®®ŽAà§©)gÿÔnᘟ|'ðŸ~̯€ú@iÉUÒ[{AVK®‹ÌU”¹ÍÁ"ù’ÂAd+þYË…# Ç;w¼ÿý–åáÖHð=ÿ cQˆÜIEND®B`‚rampartc-src-1.3.0/docs/images/logos/maven-mavenfactured.png0000644000076500007650000000320011202454500023725 0ustar shankarshankar‰PNG  IHDRZ¬a xtIMEÓ1®U›¯bKGDùC» pHYs  ÒÝ~ü IDAThÞí˜}LUeÀï\ÿÔ\k˜D8Zj™fš%"”séÌY„ÝÈœósø‘‚9ü I$# RQàE—4D‹­`âÇ®ÓT~\1/ˆekå~÷Öã^ sζólïÎ=ïûœ÷<Ïïùxذ䮈ÍB`¶@[b¶@ßIÉÉÊÁín¹a®¸¸”ªªimmÅåráª*¤Õù•ú¿ˆ‚œ‘žÁÂù󩯯÷À]¶lEEEšÅ1ß ÏÆ@gxÞ÷ø`®¬œõå44œ±@wTœN'1³fag'&&»ÝÎÞèCäÛÎQð=çlìòýÈð2êoèý:C€®‘ƒ¨X•„û›mè+*› èÓ§¾¾¾žñ¤­œ1Ƙgx—kŒrÛAþè´š6³·×&jzÛaȃxt÷c_\(îœDزÔÝä²²=L˜0ÐÐP¾œ“ÎP°Ÿ-›ÍFgÛKèÃ:•3³çO$ªe{¿&Ž>×Ä©À4ª†~FÍý‹9Þwt{œÃ`ì`~ÎXNc±½, ÒîH»ùßgôÉ“ TW¥²²š+ K9ß%›’GjYããýö10 ’~=£ áíWóˆŽÚBüÄã¬6ºIÊ˰¿ÿ1ÊŸ¸@í3û¹´•†‘ðÚ2¢ÖÒ8n2ÕÆ÷Ãa`_NÅÍãÂîš›/ßh}5n\üg^{A‡Çuõ&-U{9oŸÆ¥°4xc3¾YFíX7ûÞrs 2—ì"aîf&OžL||<‹ç¯cº½ˆÙ£ádÃT8ün _Ì0ÚͤsÔÛÝÔ…Öq8ÊIÓ³Æ;Ρ~ÊO [Në{ËqÚÙ®½‘‘‘7ƒV£±±Ñ³PQQqÏVF·YäÒ‰ ÎæÓ”šÊé¤TˆË†…ßríÃZ®eÖ‘½‰ÐÀPŽdÁöMÉ_ZN|L‰‰‰$''“–ZDêǤ%î%1®ŒäÙ¥äÌ>ããÒÀžEðƒÑU\ŸÖИ²›Ëq%´ÌËãb|!—'ñë'W¯þÖ>h•Ñâˆd´ €zX†è˼"%%Å3§OžSkæ=Õœ<£†š×uTùÇÆÆ^ßOìTC×Uò‹ûÛ9ä.™IÖ ƒÐú\Cy7ѯGÜ«…sWs-ï ±ùœ^XÉåO\\ʸHuú>2±;ËIÞûÛHœµžÕ ¶ÁÆU[ÈÞXBrR&±SVxFþªJ¶¦¦¦0ÏèCKi¬LÀ±jy™ äd¦x-Jö¨¡ƒ–,WQkêªîå¼ú­`è­GÚ‘N­Ë¾¢«UÍ©a®0õµ—ZSv¨y±ClQAг_Öýýý3j¿øš ¾Oãßõa"_Áý¹‘q‚X7ÑÄgÎf”='ÈÀá\[_‹cêJ‚{ ä±þ¬½È3:8Œn>þ„UØc úøñ]z»vd3{ÚͯŒ¡ïî×™ÞZ9#΋áfÐz¦)}}3¤ HPÄyµŸ~ÈÞ’‘æ É^z…˜+H¯ ½Lu?”({d-??Ÿððpãžf.×'lÔHr>XDóž4í,eÃÌ©„s~ÃFr§&áÿÍk¶Ò²v'ó“éÖ¥«ñ%bøŸ]eŒRõ|ŠéÃ#p&möØ{¼ÒA««œ¦úb‚‚‚¼ƒ‡eNÏ4s;lÖA뇕A‚¢·!}è eÚh¶ž½·êåz@¼éêëf]u¯W‘R¡fÝv{´ü'Íkzë0õȽ2@Ï`ÉX+CeÛ퀧• ²×ÝíÍðƒ–Húš8/%+÷ÞémÃÜVt#ÄÈŽ‚nëàm«uÈ»oZ?§ÌºÊVó'°òQÎ Ý?ñ¹MÐfxúšùKÄh]GÿÃËü¼þLG@Ëᨆ’áæÃPo+R ’ê*ëR…m6ï+úúm®è@K HÔôÏ%}M€yûœ2—L{¥+-£½=Å]O2Ǭ£Ûêm³­fûÚÒ“CÝ,¢ïÍGñżfýãÿ.‰Úm¶Äm¶@[,ÐhK:.‚²z£Ký­IEND®B`‚rampartc-src-1.3.0/docs/images/icon_alertsml.gif0000644000076500007650000000023211202454500021470 0ustar shankarshankarGIF89a³ÿÿÿ®··’™™ËÓÓ¯´´äééüÿÿýÿÿz{{öaaj__ïïïÿÿÿ!ù ,G°ÉÙ¡Lþ€¢F„ãU6*’«J£°¢ôˆ|Þ¼H‘e®" q Ÿ°Æaá,Ž’‚ó r¾à0çb)›Ï–;rampartc-src-1.3.0/docs/images/icon_arrowfolder1_sml.gif0000644000076500007650000000207211202454500023133 0ustar shankarshankarGIF89a÷ÿÿÿÿþ—üø“þú•ýú•ýû•þü–ü÷’ü÷“ùðŽùîùï÷íŒöè‰õèˆæÙ€÷éŠ÷êŠîá…öæˆõå‡ôä‡áÑ{ëÖ~òðèÜÄrï×}íÕ|äÌwâÊvàÈußÇtÜÅsï×~îÖ}ìÔ|éÑzçÏyåÍxåÎxãËwðØÚÅtåÞÆÐ¸kζjÌ´iʲhȰgÁªcÚÂqÖ¾oÔ¼nÓ»mѹl͵j˳iÛÃrÕ½oÓ¼nËÁ åÞÈÁ©b¶ž\´œ[¿§a¾¦a½¥`¼¤`»£_º¢_¸¡^·Ÿ]· ]µ\³›[Æ®fÅ­eĬeëd¢—y©ž€ ˆO¡ŠP­•W«“V©‘U¨T§T¥S¤ŒR£‹R ‰Pœ…N°˜Y®–XŽwE—J•}Iœ„M˜K”|IŸ‡OŒ}\‡oAŒtDˆpB†oA„m@‘yGi=‚j>zb9ya9lY:nV2mU2kT1jZBdM.bM1bM2åããVUU’‘‘××׫««lllÿÿÿ!ù‚,ÿ H°`%H$y2pDN Jœø¥ ª ÄÈ b&ö™8ðÆ…(¨P@€ 4Ò|™b†`>$‘"¢g ?¾,¹B]lîÁIò̈ XŒìð Âƒ:h¨9°ÏŸ?L%^ñAˆ$p€ Zl~–à–-nذa‡3nÄøÁE. ?t%V9QdÅ¿(BØ€!ãÈ$†ÕHœ N„¨‘Š&UÂX± H3ÉIĘÀãÅ"Aªd¡BÇM×9©Œ±ñ  `°Œ©3§GÁ›9ªaÓdˆ’/WÚàACróD7rŽ0Ñ'”èè¾YCÆÎôðyÑ}@;rampartc-src-1.3.0/docs/images/product_logo.gif0000644000076500007650000000125011202454500021336 0ustar shankarshankarGIF89aгÿÿÿ±ÀÑßåì3f5]†¥¼¿ÌÙïòõu‘¬¦¸ÉÏÙâÿÿÿ!ù ,ŠÿÈI«½8ëÍ»ÿ`(Ždižhª®,™A°m}/Ï…ƒ˜0€HølŠ¡’v$é”1cS„*'œ¡‡J¥‰€tš ÆãÂâ{2DSO¦„Kî —½ÈMBcuTwM}‚%O k2 {B“10b/g[‘n1{f ˆ£–V&^¢ˆ¦Pr“•—fbOCh ÃBÅšxµÄCÈJ&ÂJ¤Îš1̼¾P à š±[g±›Íz F¦ê AåfÛY€š#äO®ß$„cC`—L=Ììé“ëD—<¢ƒí‹ÎÿôðÂŒI QÆ àî¡T,»Y8S„&O`{Ó‚]FM0cLnÁ%)˜Òƒ®é£G;0ÀmR-z”ÆøÃ‚›ÊY&])t‚G !­pÓY!m¥iE8ñ¬ÑgP eÇÎ*{4i6YCêúµÐG]Óo •9‹"ë_QN¶•ùr‚»˜ñ,W®Àø·Á‘nìµ²‚O,KS$‰»s+f?ZOX-\T š0MÀd툆ãôhºœ(i…‚€çLž¡./UeV×5¾sÈånÔ@bžUËдÝ1«¶ÐÑvçÏht Сk°žlO®%D³•Um¦Mó…˜Ö ¡ÀMö'A„ÓáwuLõ”Eªì€I:C aì}2G(°Ü@Õ|e;rZ4x`8t]6jS0nV2qY4iR0X@&ÿÿÿ!ù,Ø5J‚F7pèØ±B‹ÀF6.H( :À¢F` $Xx@aB… AftltÃA„ &ŒÈü@DH 7s4€!„‘"Œ¢À ÄÐàãÄ$?²hÉ#°"2fððÀ¥Ä*Wú”¡   F<¹r [h¤ÈÑ£I’%XÀˆñ"H ,¤TabD /kÚhfÊ+i¢”ù’ΞDçX‚&̘.lÞÈáSgÑÃ;uô¢ã'ÎCƒú>œÝˆD´s ,¤ˆÑì€;rampartc-src-1.3.0/docs/images/icon_info_sml.gif0000644000076500007650000000113611202454500021457 0ustar shankarshankarGIF89aæÿÿÿýýþùúüøùûÚàërƒžÑÙæÕÜè×ÞéÖÝè 'SG]}]y¢Vp–OgŠLc…J`EYxCWtI^~FZyeªh„¬gƒ«j…­l‡®mˆ¯pаXl‹t²v´dy˜w´|”·~•¸w­€—¹uŠ©nž„š»ƒ™º…›¼zŽ¬ŠŸ¿w‰¤‹ ¿¡À¤Â…—²™¬Ç˜«Æ‚’©’¢º†•«¡²Ë¦¶Î©¹Ð­¼Ò¬»ÑŸ¬À±¿Ô°¾ÓµÂ֏Ũ¼ÈÚÁÌÝÃÎÞÂÍݲ¼ËÉÓâÆÐßËÔâÍÖäÌÕãÓÛçÒÚæÈÏÙéíóãçíõ÷úôöùóõø@TpAUqyŽ«}ަ•©Åž°É§´Å¹ÆØÀÉÕàæîßåíáçïåêñäéððó÷ïòöÝäíÜãìÛâëçìòæëñìðõëïôêîóØßçâèïñô÷öøúûüýúûüþþþÿÿÿ!ùr,»€r‚ƒ„…‚`fg`l\d LGƒ^qqopnQmbj.‡™MObhNg r\oP6 [igŒ%‚d›mE4k_^eL‚ PRah YcHB‚ËjfV ‚FØ`\- 5Z=97‚D`] I' 1ì30‚@KICA@,¨"‹éøcÇ $X ñA‚ ?tàÀrå…Š!8h 2è† @ Pa†b ;rampartc-src-1.3.0/docs/images/icon_folder_lrg.gif0000644000076500007650000000301411202454500021765 0ustar shankarshankarGIF89a ÷ÿÿÿýý©ýýÄýýÎýýÒõõÏòòêõõîþþýõò™îë›õò¢õó¨ñï¯ôó´ôóÇòñÎïîÓ÷öÝíé“êæ‘åàŽëç’ëç˜èä¢âß­ìé¸êèºðîÄèæ¿÷õÌèæÄìêÉêèÈêéÒ÷öâåäÒÞ׈âÜ‘âÜ“ÞÙ“ãߪÝÚ´çä½äá»çä¾éæÁßÝÀîìÎÞÜÅêéÚóòãêéÛø÷ëñðäêáŠäÚ†õì‘ÝÖÛÔŒÓˉåá¼âßÀäáÃäâÎîìÛǽwÉÀyÊÁƒÏLjÐÊœðîÞøöæìêÛô䈾²p¾³uåÕÝÍzýå†ñÛ‚ÜÄrï×}íÕ|ëÓ{äÌwâÊvàÈußÇtÞÆtÝÅsÜÅsôÛ€óÛ€ñÙï×~îÖ}ìÔ|êÒ{éÑzèÐzçÏyæÎyåÍxåÎxãËwáÉvòÚ€ðØиkζjÌ´iʲhʳhɱgȰgǯfÁªcÚÂqØÀpÖ¾oÔ¼nÓ»mÒºmѹlÏ·k͵j˳iÛÃrÙÁq׿pÕ½oÓ¼n±™YÁ©b´œ[²šZÀ¨b¿§a¾¦a½¥`»£_º¢_¹¡^¸¡^·Ÿ]· ]µ\³›[Æ®fÅ­eĬeëdªd ˆO­•W«“V©‘U©’U§T¦ŽS¥S£‹R¢ŠQ°˜YèÈ|’zGŽwE—JxFœ„M–~J™L—€KàÀxuD‹sC‰qB‡oA…n@xFŽvEˆpB†oA„m@‘yGðÊïÉ€g<}f;{d:ƒk>i=~f<|e;„l?‚j>rZ4s\5r[5{c:ya9kT1fN.ÙªvÔ t節à¨|Þ¦{Û¢yߢ|ßž}àŸ~æ¡‚Ü›|ÿÿÿ!ùØ, ÿ± H° ÁƒñʳgŸ>nÞü„°"Á=m ظ‘„C¹HadHÔ¨MŒ N¤‘ãä\²£iQ©J’Œ‰¢Àƒ$«ÎyŠÑ£PtLh@BÁ‡.6>hyb‚›TyèLª5pÎ]Ší¢CB… N,\ɲE#JLš‘Q¢­oª [e ™2fÒêÃÈ‘£!+@ "‚…†A…f Ô‚Glß1wzIŸ+8:Ј°àÂ+Y1£F‹ B @¿r‹¢@l1Í5Ñì2Elxaod¤±ƒìÁ ÒÇ\@ƒX Q/ÐPó ðFÁ¥FHÄ$#w’È.¨Q5Ò˜òÞ Îw…}…¼Ñ‹A­ä¡%*¼ÔñhÝu¿™RäÑÀK~”2Ceˆqà“½ýVWlGqCä—H2ÂcP×F&†!Æg¦¹rÔ‘‹Aº&‰fT1EoaP±'§ù™Ð .‘‚(– A†aèÙWg¤¡\B¥s`r-Eé’Ê&€,)†UaF¤XlÈšnüÑê!Üb²¸Geü˜k°õ«|¼h&Š4â‰.-‹h¤‘jDËÅxPë pÚ±H'Ç(ƒ3³`Á_ZH!H…p œšâ 2ÂX„ 0\la ûöû»–hòH.Ǥb‘@¿ƒ‡ x BÈÁÊAÇ%™|2L2’\<*ªRˆC~À!ò%š°b ,*ÔJ,oô G#KŒ0Aå\Ð"ÀÄt˜„RL2“} ½XrÉ"®ø"™Ô’ˆ-¾°ÂõÅžÜÒÉØh§M@;rampartc-src-1.3.0/docs/images/none.png0000644000076500007650000000166211202454500017623 0ustar shankarshankar‰PNG  IHDRóŒ§ágAMA±Ž|ûQ“ cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFPLTEÿÿÿÿÿÿße¯ tRNSÿå·0J pHYs  šœIDATc`„i”2ag~IEND®B`‚rampartc-src-1.3.0/docs/images/nw_maj_hi.gif0000644000076500007650000000006311202454500020572 0ustar shankarshankarGIF89a€ÿÿÿÿÿÿ!ù, „¦Ê š“ ;rampartc-src-1.3.0/docs/images/nw_min.gif0000644000076500007650000000006311202454500020126 0ustar shankarshankarGIF89a‘ÿÿÿÿÿÿ!ù,Œ-!R;rampartc-src-1.3.0/docs/images/external-classic.png0000644000076500007650000000167411202454500022130 0ustar shankarshankar‰PNG  IHDR Óº&tIMEÔ 8è9‚ô pHYsÁÁÃiTSgAMA± üaPLTE0`€€€ÿÿÿeŠtRNSÿÿ×Ê A0IDATxÚ=ŒA0Â`ÿ´+¸q0u‰± È„ú®þGÁzZyý6ùSß±ÜÀèÕ^ȱIEND®B`‚rampartc-src-1.3.0/docs/images/pdf.gif0000644000076500007650000000166611202454500017422 0ustar shankarshankarGIF89a ‡”¦ ­·¹¿³º»½¾? &·#º"¥5*»++°A:º@1»G8±Z>ŸecºGJ»^O¶[b½ha½eq¹mw³~z»xrÊÀÅÅ5Á'È Ä,9Î42Þ&(ÇITÌBYÇWLÄ\OÌ^]ØHHÓMTÂWaÇ[jÑLaÝ_tÃ`MÓdYÊarÊfpÒffÒinÑayÖrz×~xÙwvàKOâMSäKPìKQáPKåPJí^ZéCgìrqîvxÎs‚Ëy…Ùzšàw†ésƒç}‘̉oσu¥µÌ›”ЀƒÓ‡‰Ý†ÜŠŽÚ‰Þˆ“Ù‹˜ÝŠÓœ•ݙٞ˜Ú— Û§’ß§–Ü®žÎ½¡Ø¦§Þ¡°Ø½´ç툎éŽàŸ›é’˜ð‡„õ›ƒò“—õ››þ””ÿžœäŸ¤ÿŽ§äªžë¦Ÿæ¢¡æ¥«ä®¢î¨ ê¯±à³ â³¡ç°©ê½¸ý¥®ö«²ñµ«ò¶¬ó·¹ò¼¼÷¾ÄÝÃ´êÆ¶ÿÁ®òÁºÛÍÄÖÊÔÛÇÐØÐÃÝçÎÞáØßçÚÓÿðÓÿùÛóõêÃÄèÆÅïÌÆèÊÈïÏÒëÝÐêÜÓìÛÔéÛÚèÜÞõÅÃÿÂÀûÆÎÿÒÅüÑÈÿÒÎÿÛÌ÷Ó×ðÐÛÿÑÐÿÛØÿÞÞðÃàÿÕàÿ×ãûÙçÿßëäíÎïãÍååÙíàÚõáÆðàÑôáÚÿàÙÿâÜÿçÞäæãíäåïêþàÿïâÿìîÿíçöóàÿöàÿÿäÿÿíôþêýöëÿýïúüíÿÿòîëÿãâÿæåÿáéÿíæÿìèÿåöÿïòõÿäÿðïÿôêÿ÷êÿôíÿøæùÿïþýéþÿïñõøñÿööþñòûúñúÿòÿÿõÿÿûóðÿðòÿöñÿôôÿöõÿòúÿñÿÿòÿÿôùÿõþùÿñøÿóùÿôùÿöûÿöÿûóýøõÿøöÿûôÿýñÿüòÿÿñüÿôÿüöÿÿôÿþöøÿúúþþýùÿÿùÿÿúÿþþúüÿüÿüýÿýÿþÿÿ!ùõ, “ë 8c Aƒ*ÉrE 5¤ÈA¢ Þ.^`É“w£Ž¼&¼`s”)yBhÈË´‚À‰5]Œ¡’LJ“0 ™cÈU·*a A¢c!;‡=i±Q R¨Â7„Â*S¡ä¥áAbÄ([‚¶m’4©Õ@s´lQ1Oüp‰¢Ä™#Dȱ%  ;rampartc-src-1.3.0/docs/images/icon_sortdown.gif0000644000076500007650000000016511202454500021531 0ustar shankarshankarGIF89a³ÿÿÿj´?S‡-˜ðZ}­ZÜ÷ÈJt)ÿÿÿ!ù,"ÉI«½8ë½…ÿàQ†AE1ˆÖq¦k檬\ÔÎí|ŸE;rampartc-src-1.3.0/docs/images/icon_arrowwaste1_sml.gif0000644000076500007650000000113611202454500023003 0ustar shankarshankarGIF89aæÿÿÿÚÞé4WžðòöùúüÒÙæÚà냗¹…™º±¾Ó°½ÒÑÙæÐØåÕÜè×Þé`}§\x Ph‹EYxb©Un“`{¤h„¬j…­l‡®k†­y‘µ˜ºŠŸ¿‰ž¾ˆ½˜«Æ—ªÅ¯É§·Î©¹Ð­¼Ò«ºÐ±¿Ô°¾Ó²ÀÔ³ÁÕµÂÖ¶ÃÖ¼ÈÚ¿ËÜÁÌÝÃÎÞÂÍÝÄÏßÈÒáÇÑàÆÐßËÔâÎ×äóõøc€©š­ÇŸ±Ê®½Ò¹ÆØàæîáçïðó÷îñõÜãìÛâëçìòæëñëïôêîóöøúåããVUU’‘‘«««lllÿÿÿ!ùO,»€O‚ƒ„…‚'!!;< F†‘† 3/6’ž‚)B—A‘KŸO+ 8—17*ªJŸ+?C77D6ªI¸’*5——C%9ªLLƆ* 11,(:ÐLMÓ„)7Ë2#"ÐMàâ å—8C-:ìNï‚'ñG,@¬3´¤I>I úù°aƒU%-ˆ± =n}BàbY=0FÒg(Œ"EÐ ‘‘Õ§0c ;rampartc-src-1.3.0/docs/images/nw_maj.gif0000644000076500007650000000006111202454500020110 0ustar shankarshankarGIF89a€ÿÿÿÿÿÿ!ù,„‘ áíB;rampartc-src-1.3.0/docs/images/add.gif0000644000076500007650000000031711202454500017371 0ustar shankarshankarGIF89a³*|¢~’Η0XpNŸÐ>tA9CGÐÒÏúüúOs‚µÀµ+³˜½š„ºØ¬®¬ž¨!ù,|ÉI«½8klÌð_Ø×@4DJ,l’ —Ñ *»¼¤e¸|ïæƒq8HŒH EˆT8(`ª"†BÁ`€êAñ`…iM0·[—!ÀKǸ|N¨ianVXp\ ‚KXDNNRmKc“EXcJn#š›žŸŸ;rampartc-src-1.3.0/docs/images/icon_sortleft.gif0000644000076500007650000000017111202454500021511 0ustar shankarshankarGIF89a³ÿÿÿj´?S‡-˜ðZ}­ZÜ÷ÈJt)ÿÿÿ!ù,&ÉI«½XŠLÅášñq‚AŒXIœ™Jèu  Îö=ÄÙÁ÷  0;rampartc-src-1.3.0/docs/images/icon_arrowmembers1_sml.gif0000644000076500007650000000206111202454500023310 0ustar shankarshankarGIF89a÷ÿÿÿŽ”ùúüÑÙæ×Þé4D[RjŽ4CY!*8˜º‰ž½‹ ¿t…Ÿds‰Ž¢Á¤Â^hw¦¶Îgp~¬»Ñ±¿Ô²ÀÔ½ÉÛ¿ËܾÊÛÃÎÞÄÏßÈÒáÆÐßÍÖäÌÕãÓÛç7H`=Pj•©Åš­ÇºÇÙàæîëïôßãè[jzñô÷YjnY[ZTlXC\A>l*6]#`•Gfs`ôöóTxAdÉ&cÆ&T˜+rÆ>rÇ?R.Ew(hŸF= cÃ&a¿&a»&fÁ-iÅ/hÂ0c¸.jÂ3j»4l¾6i·4sÌ;,JxÊEŸ­–›¤•a¹"`³&_«(rº?°º©àèÚ6X¢T—Y£ ]Ÿ(S’[”(P‰Lq(-O…JvN|!1Knjoc#Ed?P 9=þþüýùºþö°þö±ûð§þò§ùè”ûëšðá•þïžÿç‡ÿèŠÿéÿì—äÌwÞÆtéÑzíÖ~äÝÃиkÁªc͵jÕ½oηp§‡'³—D¼¤\À¨b«i¿©gº¤f  §TžŠX›r•M–€P•…`¡hˆrFmEnG†rJåããVUU’‘‘þþþÌÌÌ«««lllÿÿÿ!ùŸ,ÿ? H° Áƒ*”„HP¢> ‚(P€ Íaã†Î¡ˆ? ƒ@H|ìÜiƒ§H‚8à†í©ç !™‚ Ši` ’H-ýñ“'ŽœA1]ºÄ‰S§NžŠ¬0Rƒ¯ X02HO¥‚˜ª^ÍZR’k"MzD)…Á´XµtÀ+ƒ V´ÑDJ &w;é%(a¤&(Ð "„ÇŒ)Ip¼¸‹Ä€^¸¨±$G!EŒ ñRà2X˜ ÃŽ@ž@Á¢EIëO :@00" G¢\±²Œ˜0¿E„@ð A‚Nªdñò¥Œ4i~Ü4†K*]ÈœQ£hQ@;rampartc-src-1.3.0/docs/images/icon_arrowmembers2_sml.gif0000644000076500007650000000206011202454500023310 0ustar shankarshankarGIF89a÷ÿÿÿŽ”ùúüÑÙæ×Þé4D[RjŽ4CY!*8˜º‰ž½‹ ¿t…Ÿds‰Ž¢Á¤Â^hw¦¶Îgp~¬»Ñ±¿Ô²ÀÔ½ÉÛ¿ËܾÊÛÃÎÞÄÏßÈÒáÆÐßÍÖäÌÕãÓÛç7H`=Pj•©Åš­ÇºÇÙàæîëïôßãè[jzñô÷YjnY[ZTlXC\A>l*6]#`•Gfs`ôöóTxAdÉ&cÆ&T˜+rÆ>rÇ?R.Ew(hŸF= cÃ&a¿&a»&fÁ-iÅ/hÂ0c¸.jÂ3j»4l¾6i·4sÌ;,JxÊEŸ­–›¤•a¹"`³&_«(rº?°º©àèÚ6X¢T—Y£ ]Ÿ(S’[”(P‰Lq(-O…JvN|!1Knjoc#Ed?P 9=þþüýùºþö°þö±ûð§þò§ùè”ûëšðá•þïžÿç‡ÿèŠÿéÿì—äÌwÞÆtéÑzíÖ~äÝÃиkÁªc͵jÕ½oηp§‡'³—D¼¤\À¨b«i¿©gº¤f  §TžŠX›r•M–€P•…`¡hˆrFmEnG†rJåããVUU’‘‘þþþÌÌÌ«««lllÿÿÿ!ùŸ,ÿ? H° Áƒ*”„HP¢>3)Q :šÃÆ C1%ü d€ !ñ±s§ žB3]ypC€\ÀСQ =uà¼!“'šK˜\jéŸApache Rampart/C - Project Reports

Maven Generated Reports

This document provides an overview of the various reports that are automatically generated by Maven. Each report is briefly described below.

Overview

DocumentDescription

rampartc-src-1.3.0/docs/cvs-usage.html0000644000076500007650000000565611202454500017503 0ustar shankarshankarApache Rampart/C - CVS

Repository

No SCM repository is defined.


rampartc-src-1.3.0/docs/issue-tracking.html0000644000076500007650000000607411202454500020531 0ustar shankarshankarApache Rampart/C - Issue Tracking

rampartc-src-1.3.0/docs/dependencies.html0000644000076500007650000000603111202454500020220 0ustar shankarshankarApache Rampart/C - Dependencies

Dependencies

There are no dependencies for this project. It is a standalone application that does not depend on any other project.


rampartc-src-1.3.0/config.h.in0000644000076500007650000000413211202453545016007 0ustar shankarshankar/* config.h.in. Generated from configure.ac by autoheader. */ /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H /* Have GNU-style varargs macros */ #undef HAVE_GNUC_VARARGS /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Have ISO C99 varargs macros */ #undef HAVE_ISO_VARARGS /* Define to 1 if you have the `dl' library (-ldl). */ #undef HAVE_LIBDL /* Define to 1 if your system has a GNU libc compatible `malloc' function, and to 0 otherwise. */ #undef HAVE_MALLOC /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if your system has a GNU libc compatible `realloc' function, and to 0 otherwise. */ #undef HAVE_REALLOC /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDIO_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Version number of package */ #undef VERSION /* Define to rpl_malloc if the replacement function should be used. */ #undef malloc /* Define to rpl_realloc if the replacement function should be used. */ #undef realloc rampartc-src-1.3.0/depcomp0000755000076500007650000004271310751614361015353 0ustar shankarshankar#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2007-03-29.01 # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007 Free Software # Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301, USA. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try \`$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by `PROGRAMS ARGS'. object Object file output by `PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputing dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ## The second -e expression handles DOS-style file names with drive letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the `deleted header file' problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. tr ' ' ' ' < "$tmpdepfile" | ## Some versions of gcc put a space before the `:'. On the theory ## that the space means something, we add a space to the output as ## well. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like `#:fec' to the end of the # dependency line. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ tr ' ' ' ' >> $depfile echo >> $depfile # The second pass generates a dummy entry for each header file. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> $depfile else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts `$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then # Each line is of the form `foo.o: dependent.h'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" # That's a tab and a space in the []. sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; icc) # Intel's C compiler understands `-MD -MF file'. However on # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c # ICC 7.0 will fill foo.d with something like # foo.o: sub/foo.c # foo.o: sub/foo.h # which is wrong. We want: # sub/foo.o: sub/foo.c # sub/foo.o: sub/foo.h # sub/foo.c: # sub/foo.h: # ICC 7.1 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using \ : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" # Add `dependent.h:' lines. sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in `foo.d' instead, so we check for that too. # Subdirectories are respected. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then # With Tru64 cc, shared objects can also be used to make a # static library. This mechanism is used in libtool 1.4 series to # handle both shared and static libraries in a single compilation. # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. # # With libtool 1.5 this exception was removed, and libtool now # generates 2 separate objects for the 2 libraries. These two # compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 tmpdepfile2=$dir$base.o.d # libtool 1.5 tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.o.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d tmpdepfile4=$dir$base.d "$@" -MD fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" # That's a tab and a space in the []. sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test $1 != '--mode=compile'; do shift done shift fi # Remove `-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for `:' # in the target name. This is to cope with DOS-style filenames: # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. "$@" $dashmflag | sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" tr ' ' ' ' < "$tmpdepfile" | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test $1 != '--mode=compile'; do shift done shift fi # X makedepend shift cleared=no for arg in "$@"; do case $cleared in no) set ""; shift cleared=yes ;; esac case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix="`echo $object | sed 's/^.*\././'`" touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" sed '1,2d' "$tmpdepfile" | tr ' ' ' ' | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test $1 != '--mode=compile'; do shift done shift fi # Remove `-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o, # because we must use -o when running libtool. "$@" || exit $? IFS=" " for arg do case "$arg" in "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" echo " " >> "$depfile" . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-end: "$" # End: rampartc-src-1.3.0/install-sh0000755000076500007650000003246410751614361016004 0ustar shankarshankar#!/bin/sh # install - install a program, script, or datafile scriptversion=2006-12-25.00 # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. nl=' ' IFS=" "" $nl" # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit=${DOITPROG-} if test -z "$doit"; then doit_exec=exec else doit_exec=$doit fi # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_glob='?' initialize_posix_glob=' test "$posix_glob" != "?" || { if (set -f) 2>/dev/null; then posix_glob= else posix_glob=: fi } ' posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false no_target_directory= usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *' '* | *' '* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) dst_arg=$2 shift;; -T) no_target_directory=true;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call `install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then trap '(exit $?); exit' 1 2 13 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names starting with `-'. case $src in -*) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # Protect names starting with `-'. case $dst in -*) dst=./$dst;; esac # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test -n "$no_target_directory"; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else # Prefer dirname, but fall back on a substitute if dirname fails. dstdir=` (dirname "$dst") 2>/dev/null || expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$dst" : 'X\(//\)[^/]' \| \ X"$dst" : 'X\(//\)$' \| \ X"$dst" : 'X\(/\)' \| . 2>/dev/null || echo X"$dst" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q' ` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 if (umask $mkdir_umask && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writeable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. ls_ld_tmpdir=`ls -ld "$tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/d" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; -*) prefix='./';; *) prefix='';; esac eval "$initialize_posix_glob" oIFS=$IFS IFS=/ $posix_glob set -f set fnord $dstdir shift $posix_glob set +f IFS=$oIFS prefixes= for d do test -z "$d" && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && eval "$initialize_posix_glob" && $posix_glob set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && $posix_glob set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-end: "$" # End: rampartc-src-1.3.0/autogen.sh0000755000076500007650000000131611202453435015764 0ustar shankarshankar#!/bin/bash echo -n 'Running libtoolize...' if [ `uname -s` = Darwin ] then LIBTOOLIZE=glibtoolize else LIBTOOLIZE=libtoolize fi if $LIBTOOLIZE --force > /dev/null 2>&1; then echo 'done.' else echo 'failed.' exit 1 fi echo -n 'Running aclocal...' if aclocal > /dev/null 2>&1; then echo 'done.' else echo 'failed.' exit 1 fi echo -n 'Running autoheader...' if autoheader > /dev/null 2>&1; then echo 'done.' else echo 'failed.' exit 1 fi echo -n 'Running autoconf...' if autoconf > /dev/null 2>&1; then echo 'done.' else echo 'failed.' exit 1 fi echo -n 'Running automake...' if automake --add-missing > /dev/null 2>&1; then echo 'done.' else echo 'failed.' exit 1 fi echo 'done' rampartc-src-1.3.0/INSTALL0000644000076500007650000001277011202453435015022 0ustar shankarshankarTable of contents ================= |_ Prerequisites |_ Getting Rampart/C source working on Linux |_ Getting Rampart/C binary distribution working on Linux |_ Getting Rampart/C source working on Win32 |_ Getting Rampart/C binary working on Win32 |_ Engaging Rampart/C with axis2/C |_ Try samples on Linux |_ Try samples on Win32 Prerequisites ============= You have to have openssl installed in your system. All the binary packs were built with openssl 0.9.8k Getting Rampart/C source working on Linux ========================================= Build the source This can be done using the following command sequence: ./configure --prefix=${AXIS2C_HOME} --enable-static=no --with-axis2=${AXIS2C_HOME}/include/axis2-1.6.0 make make install If you need to try samples,first you need to build them. Go to samples and run the script build.sh. %sh build.sh Then go to samples/secpolicy and try a scenario %sh test_scen.sh scenarioX server-port Getting Rampart/C binary distribution working on Linux ====================================================== 1. Copy modules/* to $AXIS2C_HOME/modules/ 2. Copy lib/* to $AXIS2C_HOME/lib 3. Copy services/* to $AXIS2C_HOME/services/ 4. Engage rampart as described in section "Engaging Rampart/C with axis2/C" 5. Copy samples/* to $AXIS2C_HOME/samples/. This will copy callback modules etc. 6. Go to samples/src/rampartc/client/ and deploy the client repo %sh deploy_client_repo.sh 7. Go to samples/src/rampartc/secpolicy/ and try a scenario %sh test_scen.sh scenarioX server-port Getting Rampart/C source working on Win32 ========================================= 1. Set the AXIS2C_HOME envirionment variable to direct to your Axis2/C Installation. SET AXIS2C_HOME=[your-path-to-axis2c] 2. Extract the source package and build the source. Unzip the source package. Go to the "build\win32" directory of the distribution. Set the parameters of the configure.in AXIS2_BIN_DIR = OPENSSL_BIN_DIR = DEBUG = <1 if enabled, 0 otherwise> Run vcvars32.bat This is to access .Net tools (Note: You may need to set the PATH environment variable to vcvars32.bat if Windows complains that it cannot find this bat) Run "nmake install" 3. Engage Rampart/C with Axis2/C as described in the "Engaging Rampart/C with axis2/C" section. Getting Rampart/C binary distribution working on Win32 ====================================================== 1. Set the AXIS2C_HOME envirionment variable to direct to your Axis2/C Installation. SET AXIS2C_HOME=[your-path-to-axis2c] 2. Run the deploy_rampart.bat that could be found in the root of the rampart binary distribution. deploy_rampart.bat 3. Engage Rampart/C with Axis2/C as described in the "Engaging Rampart/C with axis2/C" section. Engaging Rampart/C with axis2/C =============================== Prerequisites: You must have openssl installed in you system. Configuring: You can engage Rampart/C in global level or in service level. Add following entry either to axis2.xml(gloabl level) or in services.xml(service level). If you want to provide Secure Token Service (STS) functionality to a service, add the following entry to services.xml. Then add following Security phase to the phase order in the inflow and outflow in the axis2.xml. To specify policies in the client side, please drop your policy.xml to the same directory where the axis2.xml is in. To specify policies in the server side, please add policy assertions to the services.xml. Please find such sample policy files under samples/secpolicy/scenarioX. Note that you must replace both the client and service policies for a particular scenario. Try samples on Linux =============================== There are several scenarios available under samples/secpolicy (or samples/src/rampartc/secpolicy if you are using binary distribution) Run a scenario that you'd like to try using the script test_scen.sh Syntax: test_scen.sh scenario server_port E.g. %sh test_scen.sh scenario3 9090 Note: You may use a TCP Monitor to see the wire content. In that case replace the server_port with the target port. Try samples on Win32 =============================== There are several scenarios that you can try out with the sec_echo sample of the Rampart/C distribution. You can find more about it from the README file inside samples\secpolicy folder. (or samples\src\rampartc\secpolicy if you are using binary distribution) 1. Set the AXIS2C_HOME envirionment variable to direct to your Axis2/C Installation. SET AXIS2C_HOME=[your-path-to-axis2c] Run a scenario that you'd like to try using the script test_scen.bat Syntax: test_scen.bat scenario server_port E.g. test_scen.bat scenario3 9090 Note: You may use a TCP Monitor to see the wire content. In that case replace the server_port with the target port. Thank you for using Rampart/C rampartc-src-1.3.0/build/0000755000076500007650000000000011202454512015056 5ustar shankarshankarrampartc-src-1.3.0/build/linux/0000755000076500007650000000000011202454512016215 5ustar shankarshankarrampartc-src-1.3.0/build/linux/install_rampart_bin_dist.sh0000755000076500007650000000126311202453426023630 0ustar shankarshankar#!/bin/bash echo "Rampart/C binary installer" R_HOME=$AXIS2C_HOME echo "Copy modules" cp -r modules/rampart $R_HOME/modules cp -r modules/rahas $R_HOME/modules echo "Copy libs" cp lib/* $R_HOME/lib echo "Copy sample service" cp -r services/sec_echo $R_HOME/services cp -r services/secconv_echo $R_HOME/services cp -r services/saml_sts $R_HOME/services echo "Copy samples" cp -r samples/* $R_HOME/samples/ echo "Copy axis2.xml" cp samples/src/rampartc/data/server_axis2.xml $R_HOME/axis2.xml cd samples/src/rampartc/client sh deploy_client_repo.sh echo "It's done... :)" echo "Go to samples/src/rampartc/secpolicy/ and try a scenario" echo " %sh test_scen.sh scenarioX server-port" rampartc-src-1.3.0/build/linux/clean_rampart_bin_dist.sh0000755000076500007650000000076011202453426023245 0ustar shankarshankar#!/bin/bash echo "Rampart/C binary dest cleaner" R_HOME=$AXIS2C_HOME echo "Remove module" rm -rf $R_HOME/modules/rampart rm -rf $R_HOME/modules/rahas echo "Remove sample service" rm -rf $R_HOME/services/sec_echo rm -rf $R_HOME/services/secconv_echo rm -rf $R_HOME/services/saml_sts echo "Remove libs" rm $R_HOME/lib/librampart.* echo "Remove sample binaries" rm -rf $R_HOME/samples/bin/rampartc rm -rf $R_HOME/samples/lib/rampartc rm -rf $R_HOME/samples/src/rampartc echo "Cleaned... :)" rampartc-src-1.3.0/build/win32/0000755000076500007650000000000011202454512016020 5ustar shankarshankarrampartc-src-1.3.0/build/win32/make_bin_dist.bat0000644000076500007650000000022211202453426021277 0ustar shankarshankarset BINDIST=..\rampartc-bin-1.3.0-win32 if exist %BINDIST% rd /s /q %BINDIST% mkdir %BINDIST% xcopy /E /I /Y ..\rampartc-1.3.0\* %BINDIST%\ rampartc-src-1.3.0/build/win32/makefile0000644000076500007650000004700411202453426017530 0ustar shankarshankar AUTOCONF = configure.in !include $(AUTOCONF) RAMPART = rampart RAMPART_SOURCE_DIR = ..\..\ RAMPART_INTDIR = .\int.msvc MAJOR_VER = 1 MINOR_VER = 3 PATCH_VER = 0 RAMPART_DIST_NAME = .\..\rampartc-$(MAJOR_VER).$(MINOR_VER).$(PATCH_VER) RAMPART_DISTDIR = $(RAMPART_DIST_NAME) RAMPART_SAMPLE_BIN_DIR = $(RAMPART_DISTDIR)\samples\bin\rampartc RAMPART_SAMPLE_LIB_DIR = $(RAMPART_DISTDIR)\samples\lib\rampartc RAMPART_SAMPLE_SERVICE_DIR = $(RAMPART_DISTDIR)\services RAMPART_SAMPLE_DATA_DIR = $(RAMPART_DISTDIR)\samples\src\rampartc\data RAMPART_SAMPLE_POLICY_DIR = $(RAMPART_DISTDIR)\samples\src\rampartc\secpolicy RAMPART_SAMPLE_SRC_DIR = $(RAMPART_DISTDIR)\samples\src\rampartc #rampart module OMXMLSEC_SRC = $(RAMPART_SOURCE_DIR)\src\omxmlsec\*.c \ $(RAMPART_SOURCE_DIR)\src\omxmlsec\tokens\*.c \ $(RAMPART_SOURCE_DIR)\src\omxmlsec\c14n\*.c \ $(RAMPART_SOURCE_DIR)\src\omxmlsec\openssl\*.c \ $(RAMPART_SOURCE_DIR)\src\omxmlsec\saml\*.c MOD_RAMPART_SRC = $(RAMPART_SOURCE_DIR)\src\core\*.c \ $(RAMPART_SOURCE_DIR)\src\handlers\*.c RAMPART_SRC = $(RAMPART_SOURCE_DIR)\src\util\*.c SECCONV_SRC = $(RAMPART_SOURCE_DIR)\src\secconv\*.c TRUST_SRC = $(RAMPART_SOURCE_DIR)\src\trust\*.c RAHAS_SRC = $(RAMPART_SOURCE_DIR)\src\rahas\*.c MOD_RAMPART_INCLUDE_PATH = /I$(RAMPART_SOURCE_DIR)\include \ /I$(OPENSSL_BIN_DIR)\include \ /I$(AXIS2_BIN_DIR)\include APPLINK_FILE = $(OPENSSL_BIN_DIR)\include\openssl\applink.c AXIS2_LIBS = $(AXIS2_BIN_DIR)\lib AXIS2_MODS = $(AXIS2_BIN_DIR)\modules ##################### compiler options CC = @cl.exe CFLAGS = /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "AXIS2_DECLARE_EXPORT" \ /D "AXIS2_SVR_MULTI_THREADED" /w /nologo $(AXIS2_INCLUDE_PATH) ################### linker options LD = @link.exe LDFLAGS = /nologo /LIBPATH:$(AXIS2_LIBS) /LIBPATH:$(OPENSSL_BIN_DIR)\lib\VC \ /LIBPATH:$(AXIS2_BIN_DIR)\lib SSL_LIB_FLAG = "MD" !if "$(CRUNTIME)" == "/MT" SSL_LIB_FLAG = "MT" !endif #debug symbols !if "$(DEBUG)" == "1" LIBS = $(LIBS) libeay32$(SSL_LIB_FLAG)d.lib ssleay32$(SSL_LIB_FLAG)d.lib !else LIBS = $(LIBS) libeay32$(SSL_LIB_FLAG).lib ssleay32$(SSL_LIB_FLAG).lib !endif #################### MT=mt.exe MT="$(MT)" !if "$(EMBED_MANIFEST)" == "0" _VC_MANIFEST_EMBED_EXE= _VC_MANIFEST_EMBED_DLL= !else _VC_MANIFEST_EMBED_EXE= if exist $@.manifest $(MT) -nologo -manifest $@.manifest -outputresource:$@;1 _VC_MANIFEST_EMBED_DLL= if exist $@.manifest $(MT) -nologo -manifest $@.manifest -outputresource:$@;2 !endif #################### debug symbol !if "$(DEBUG)" == "1" CFLAGS = $(CFLAGS) /D "_DEBUG" /Od /Z7 $(CRUNTIME)d LDFLAGS = $(LDFLAGS) /DEBUG !else CFLAGS = $(CFLAGS) /D "NDEBUG" /O2 $(CRUNTIME) LDFLAGS = $(LDFLAGS) !endif #################### hack! CFLAGS = $(CFLAGS) /D "_WINSOCKAPI_" distdir: if not exist $(RAMPART_DISTDIR) mkdir $(RAMPART_DISTDIR) if not exist $(RAMPART_SAMPLE_BIN_DIR) mkdir $(RAMPART_SAMPLE_BIN_DIR) if not exist $(RAMPART_SAMPLE_LIB_DIR) mkdir $(RAMPART_SAMPLE_LIB_DIR) if not exist $(RAMPART_SAMPLE_DATA_DIR) mkdir $(RAMPART_SAMPLE_DATA_DIR) if not exist $(RAMPART_SAMPLE_POLICY_DIR) mkdir $(RAMPART_SAMPLE_POLICY_DIR) if not exist $(RAMPART_SAMPLE_SRC_DIR) mkdir $(RAMPART_SAMPLE_SRC_DIR) if not exist $(RAMPART_SAMPLE_SERVICE_DIR) mkdir $(RAMPART_SAMPLE_SERVICE_DIR) if not exist $(RAMPART_SAMPLE_SERVICE_DIR)\sec_echo mkdir $(RAMPART_SAMPLE_SERVICE_DIR)\sec_echo if not exist $(RAMPART_SAMPLE_SERVICE_DIR)\secconv_echo mkdir $(RAMPART_SAMPLE_SERVICE_DIR)\secconv_echo if not exist $(RAMPART_SAMPLE_SERVICE_DIR)\saml_sts mkdir $(RAMPART_SAMPLE_SERVICE_DIR)\saml_sts if not exist $(RAMPART_DISTDIR)\modules\rampart mkdir $(RAMPART_DISTDIR)\modules\rampart if not exist $(RAMPART_DISTDIR)\modules\rahas mkdir $(RAMPART_DISTDIR)\modules\rahas if not exist $(RAMPART_DISTDIR)\include mkdir $(RAMPART_DISTDIR)\include if not exist $(RAMPART_DISTDIR)\lib mkdir $(RAMPART_DISTDIR)\lib clean: if exist $(RAMPART_DISTDIR) rmdir /S /Q $(RAMPART_DISTDIR) if exist $(RAMPART_INTDIR) rmdir /S /Q $(RAMPART_INTDIR) intdirs: if not exist $(RAMPART_INTDIR) mkdir $(RAMPART_INTDIR) if not exist $(RAMPART_INTDIR)\rahas mkdir $(RAMPART_INTDIR)\rahas if not exist $(RAMPART_INTDIR)\rampart mkdir $(RAMPART_INTDIR)\rampart if not exist $(RAMPART_INTDIR)\samples\callback\pwcb mkdir $(RAMPART_INTDIR)\samples\callback\pwcb if not exist $(RAMPART_INTDIR)\samples\authn_provider mkdir $(RAMPART_INTDIR)\samples\authn_provider if not exist $(RAMPART_INTDIR)\samples\replay_detector mkdir $(RAMPART_INTDIR)\samples\replay_detector if not exist $(RAMPART_INTDIR)\samples\sct_provider mkdir $(RAMPART_INTDIR)\samples\sct_provider if not exist $(RAMPART_INTDIR)\samples\services\sec_echo\ mkdir $(RAMPART_INTDIR)\samples\services\sec_echo if not exist $(RAMPART_INTDIR)\samples\services\secconv_echo\ mkdir $(RAMPART_INTDIR)\samples\services\secconv_echo if not exist $(RAMPART_INTDIR)\samples\services\saml_sts\ mkdir $(RAMPART_INTDIR)\samples\services\saml_sts if not exist $(RAMPART_INTDIR)\samples\client\sec_echo\ mkdir $(RAMPART_INTDIR)\samples\client\sec_echo if not exist $(RAMPART_INTDIR)\samples\client\saml_echo\ mkdir $(RAMPART_INTDIR)\samples\client\saml_echo if not exist $(RAMPART_INTDIR)\samples\client\issued_token\ mkdir $(RAMPART_INTDIR)\samples\client\issued_token if not exist $(RAMPART_INTDIR)\samples\client\saml_protect\ mkdir $(RAMPART_INTDIR)\samples\client\saml_protect if not exist $(RAMPART_INTDIR)\samples\credential_provider\ mkdir $(RAMPART_INTDIR)\samples\credential_provider mod_rampart_sample_data: copy $(RAMPART_SOURCE_DIR)\samples\data\passwords.txt $(RAMPART_SAMPLE_DATA_DIR) $(RAMPART_DISTDIR)\lib\rampart.dll : $(RAMPART_SRC) $(OMXMLSEC_SRC) $(SECCONV_SRC) $(TRUST_SRC) $(CC) $(CFLAGS) $(MOD_RAMPART_INCLUDE_PATH) $(RAMPART_SRC) $(OMXMLSEC_SRC) $(SECCONV_SRC) $(TRUST_SRC) \ $(APPLINK_FILE) /Fo$(RAMPART_INTDIR)\ /c $(LD) $(LDFLAGS) $(RAMPART_INTDIR)\*.obj $(LIBS) axutil.lib axiom.lib \ axis2_parser.lib axis2_engine.lib neethi.lib /DLL /OUT:$(RAMPART_DISTDIR)\lib\rampart.dll \ /IMPLIB:$(RAMPART_DISTDIR)\lib\rampart.lib -@$(_VC_MANIFEST_EMBED_DLL) rampart : $(RAMPART_DISTDIR)\lib\rampart.dll $(RAMPART_DISTDIR)\modules\rampart\mod_rampart.dll : $(MOD_RAMPART_SRC) $(CC) $(CFLAGS) $(MOD_RAMPART_INCLUDE_PATH) $(MOD_RAMPART_SRC) \ $(APPLINK_FILE) /Fo$(RAMPART_INTDIR)\rampart\ /c $(LD) /LIBPATH:$(RAMPART_DISTDIR)\lib $(LDFLAGS) $(RAMPART_INTDIR)\rampart\*.obj $(LIBS) axutil.lib axiom.lib rampart.lib\ axis2_parser.lib axis2_engine.lib neethi.lib /DLL /OUT:$(RAMPART_DISTDIR)\modules\rampart\mod_rampart.dll \ /IMPLIB:$(RAMPART_DISTDIR)\modules\rampart\mod_rampart.lib -@$(_VC_MANIFEST_EMBED_DLL) copy $(RAMPART_SOURCE_DIR)\src\data\module.xml $(RAMPART_DISTDIR)\modules\rampart mod_rampart : $(RAMPART_DISTDIR)\modules\rampart\mod_rampart.dll $(RAMPART_DISTDIR)\modules\rahas\mod_rahas.dll : $(RAHAS_SRC) $(CC) $(CFLAGS) $(MOD_RAMPART_INCLUDE_PATH) $(RAHAS_SRC) $(APPLINK_FILE) /Fo$(RAMPART_INTDIR)\rahas\ /c $(LD) /LIBPATH:$(RAMPART_DISTDIR)\lib $(LDFLAGS) $(RAMPART_INTDIR)\rahas\*.obj $(LIBS) axutil.lib axiom.lib \ axis2_parser.lib axis2_engine.lib neethi.lib rampart.lib \ /DLL /OUT:$(RAMPART_DISTDIR)\modules\rahas\mod_rahas.dll /IMPLIB:$(RAMPART_DISTDIR)\modules\rahas\mod_rahas.lib -@$(_VC_MANIFEST_EMBED_DLL) copy $(RAMPART_SOURCE_DIR)\src\data\rahas_module.xml $(RAMPART_DISTDIR)\modules\rahas\module.xml mod_rahas : $(RAMPART_DISTDIR)\modules\rahas\mod_rahas.dll $(RAMPART_SAMPLE_LIB_DIR)\pwcb.dll : $(RAMPART_SOURCE_DIR)\samples\callback\pwcb.c $(CC) $(CFLAGS) $(MOD_RAMPART_INCLUDE_PATH) $(RAMPART_SOURCE_DIR)\samples\callback\pwcb.c \ /Fo$(RAMPART_INTDIR)\samples\callback\ /c $(LD) $(LDFLAGS) $(LIBS) axutil.lib $(RAMPART_INTDIR)\samples\callback\*.obj \ /DLL /OUT:$(RAMPART_SAMPLE_LIB_DIR)\pwcb.dll /IMPLIB:$(RAMPART_SAMPLE_LIB_DIR)\pwcb.lib -@$(_VC_MANIFEST_EMBED_DLL) mod_rampart_pwcb: $(RAMPART_SAMPLE_LIB_DIR)\pwcb.dll $(RAMPART_SAMPLE_LIB_DIR)\authn.dll : $(RAMPART_SOURCE_DIR)\samples\authn_provider\authn_provider.c $(CC) $(CFLAGS) $(MOD_RAMPART_INCLUDE_PATH) $(RAMPART_SOURCE_DIR)\samples\authn_provider\authn_provider.c \ /Fo$(RAMPART_INTDIR)\samples\authn_provider\ /c $(LD) $(LDFLAGS) $(RAMPART_INTDIR)\samples\authn_provider\*.obj rampart.lib \ axutil.lib /LIBPATH:$(RAMPART_DISTDIR)\lib /DLL \ /OUT:$(RAMPART_SAMPLE_LIB_DIR)\authn.dll -@$(_VC_MANIFEST_EMBED_DLL) mod_rampart_authn : $(RAMPART_SAMPLE_LIB_DIR)\authn.dll $(RAMPART_SAMPLE_LIB_DIR)\rdflatfile.dll : $(RAMPART_SOURCE_DIR)\samples\replay_detector\*.c $(CC) $(CFLAGS) $(MOD_RAMPART_INCLUDE_PATH) $(RAMPART_SOURCE_DIR)\samples\replay_detector\*.c \ /Fo$(RAMPART_INTDIR)\samples\replay_detector\ /c $(LD) $(LDFLAGS) $(RAMPART_INTDIR)\samples\replay_detector\*.obj rampart.lib \ axutil.lib axis2_engine.lib /LIBPATH:$(RAMPART_DISTDIR)\lib /DLL \ /OUT:$(RAMPART_SAMPLE_LIB_DIR)\rdflatfile.dll -@$(_VC_MANIFEST_EMBED_DLL) mod_rampart_rd: $(RAMPART_SAMPLE_LIB_DIR)\rdflatfile.dll $(RAMPART_SAMPLE_LIB_DIR)\sctprovider.dll : $(RAMPART_SOURCE_DIR)\samples\sct_provider\sct_provider_stored_key.c $(CC) $(CFLAGS) $(MOD_RAMPART_INCLUDE_PATH) $(RAMPART_SOURCE_DIR)\samples\sct_provider\sct_provider_stored_key.c \ /Fo$(RAMPART_INTDIR)\samples\sct_provider\ /c $(LD) $(LDFLAGS) $(RAMPART_INTDIR)\samples\sct_provider\sct_provider_stored_key.obj rampart.lib \ axutil.lib axis2_engine.lib neethi.lib /LIBPATH:$(RAMPART_DISTDIR)\lib /DLL \ /OUT:$(RAMPART_SAMPLE_LIB_DIR)\sctprovider.dll -@$(_VC_MANIFEST_EMBED_DLL) mod_rampart_sct_provider: $(RAMPART_SAMPLE_LIB_DIR)\sctprovider.dll $(RAMPART_SAMPLE_LIB_DIR)\sctprovider_hashdb.dll : $(RAMPART_SOURCE_DIR)\samples\sct_provider\sct_provider_hash_map.c $(CC) $(CFLAGS) $(MOD_RAMPART_INCLUDE_PATH) $(RAMPART_SOURCE_DIR)\samples\sct_provider\sct_provider_hash_map.c \ /Fo$(RAMPART_INTDIR)\samples\sct_provider\ /c $(LD) $(LDFLAGS) $(RAMPART_INTDIR)\samples\sct_provider\sct_provider_hash_map.obj rampart.lib \ axutil.lib axis2_engine.lib neethi.lib /LIBPATH:$(RAMPART_DISTDIR)\lib /DLL \ /OUT:$(RAMPART_SAMPLE_LIB_DIR)\sctprovider_hashdb.dll -@$(_VC_MANIFEST_EMBED_DLL) mod_rampart_sct_provider_hashdb: $(RAMPART_SAMPLE_LIB_DIR)\sctprovider_hashdb.dll $(RAMPART_SAMPLE_SERVICE_DIR)\sec_echo\sec_echo.dll : $(RAMPART_SOURCE_DIR)\samples\server\sec_echo\*.c $(CC) $(CFLAGS) $(MOD_RAMPART_INCLUDE_PATH) /I$(RAMPART_SOURCE_DIR)\samples\server\sec_echo \ $(RAMPART_SOURCE_DIR)\samples\server\sec_echo\*.c $(APPLINK_FILE) /Fo$(RAMPART_INTDIR)\samples\services\sec_echo\ /c $(LD) $(LDFLAGS) $(RAMPART_INTDIR)\samples\services\sec_echo\*.obj \ axutil.lib axiom.lib axis2_parser.lib $(LIBS) axis2_engine.lib \ axis2_http_receiver.lib axis2_http_sender.lib \ rampart.lib /LIBPATH:$(RAMPART_DISTDIR)\lib \ /DLL /OUT:$(RAMPART_SAMPLE_SERVICE_DIR)\sec_echo\sec_echo.dll -@$(_VC_MANIFEST_EMBED_DLL) copy $(RAMPART_SOURCE_DIR)\samples\server\sec_echo\services.xml $(RAMPART_SAMPLE_SERVICE_DIR)\sec_echo\ mod_rampart_services_sec_echo: $(RAMPART_SAMPLE_SERVICE_DIR)\sec_echo\sec_echo.dll $(RAMPART_SAMPLE_SERVICE_DIR)\saml_sts\saml_sts.dll : $(RAMPART_SOURCE_DIR)\samples\server\saml_sts\*.c $(CC) $(CFLAGS) $(MOD_RAMPART_INCLUDE_PATH) /I$(RAMPART_SOURCE_DIR)\samples\server\saml_sts \ $(RAMPART_SOURCE_DIR)\samples\server\saml_sts\*.c /Fo$(RAMPART_INTDIR)\samples\services\saml_sts\ /c $(LD) $(LDFLAGS) $(RAMPART_INTDIR)\samples\services\saml_sts\*.obj \ axutil.lib axiom.lib axis2_parser.lib $(LIBS) axis2_engine.lib /LIBPATH:$(RAMPART_DISTDIR)\lib\ \ axis2_http_receiver.lib axis2_http_sender.lib rampart.lib \ /DLL /OUT:$(RAMPART_SAMPLE_SERVICE_DIR)\saml_sts\saml_sts.dll -@$(_VC_MANIFEST_EMBED_DLL) copy $(RAMPART_SOURCE_DIR)\samples\server\saml_sts\services.xml $(RAMPART_SAMPLE_SERVICE_DIR)\saml_sts\ mod_rampart_services_saml_sts: $(RAMPART_SAMPLE_SERVICE_DIR)\saml_sts\saml_sts.dll $(RAMPART_SAMPLE_SERVICE_DIR)\secconv_echo\secconv_echo.dll : $(RAMPART_SOURCE_DIR)\samples\server\secconv_echo\*.c $(CC) $(CFLAGS) $(MOD_RAMPART_INCLUDE_PATH) /I$(RAMPART_SOURCE_DIR)\samples\server\secconv_echo \ $(RAMPART_SOURCE_DIR)\samples\server\secconv_echo\*.c $(APPLINK_FILE) /Fo$(RAMPART_INTDIR)\samples\services\secconv_echo\ /c $(LD) $(LDFLAGS) $(RAMPART_INTDIR)\samples\services\secconv_echo\*.obj \ axutil.lib axiom.lib axis2_parser.lib $(LIBS) axis2_engine.lib rampart.lib /LIBPATH:$(RAMPART_DISTDIR)\lib\ axis2_http_receiver.lib axis2_http_sender.lib \ /DLL /OUT:$(RAMPART_SAMPLE_SERVICE_DIR)\secconv_echo\secconv_echo.dll -@$(_VC_MANIFEST_EMBED_DLL) copy $(RAMPART_SOURCE_DIR)\samples\server\secconv_echo\services.xml $(RAMPART_SAMPLE_SERVICE_DIR)\secconv_echo\ mod_rampart_services_secconv_echo: $(RAMPART_SAMPLE_SERVICE_DIR)\secconv_echo\secconv_echo.dll $(RAMPART_SAMPLE_BIN_DIR)\sec_echo.exe : $(RAMPART_SOURCE_DIR)\samples\client\sec_echo\echo.c $(CC) $(CFLAGS) $(MOD_RAMPART_INCLUDE_PATH) \ $(RAMPART_SOURCE_DIR)\samples\client\sec_echo\echo.c \ /Fo$(RAMPART_INTDIR)\samples\client\sec_echo\ /c $(LD) $(LDFLAGS) /FIXED:No $(RAMPART_INTDIR)\samples\client\sec_echo\echo.obj axutil.lib axiom.lib neethi.lib \ axis2_parser.lib axis2_engine.lib /LIBPATH:$(RAMPART_DISTDIR)\lib rampart.lib /OUT:$(RAMPART_SAMPLE_BIN_DIR)\sec_echo.exe -@$(_VC_MANIFEST_EMBED_EXE) mod_rampart_samples_sec_echo: $(RAMPART_SAMPLE_BIN_DIR)\sec_echo.exe ####### SAML Echo $(RAMPART_SAMPLE_BIN_DIR)\saml_echo.exe : $(RAMPART_SOURCE_DIR)\samples\client\saml_echo\echo.c $(CC) $(CFLAGS) $(MOD_RAMPART_INCLUDE_PATH) \ $(RAMPART_SOURCE_DIR)\samples\client\saml_echo\echo.c $(APPLINK_FILE) \ /Fo$(RAMPART_INTDIR)\samples\client\saml_echo\ /c $(LD) $(LDFLAGS) $(RAMPART_INTDIR)\samples\client\saml_echo\echo.obj axutil.lib axiom.lib neethi.lib \ axis2_parser.lib axis2_engine.lib /FIXED:NO /LIBPATH:$(RAMPART_DISTDIR)\lib rampart.lib /OUT:$(RAMPART_SAMPLE_BIN_DIR)\saml_echo.exe -@$(_VC_MANIFEST_EMBED_EXE) mod_rampart_samples_saml_echo: $(RAMPART_SAMPLE_BIN_DIR)\saml_echo.exe $(RAMPART_SAMPLE_BIN_DIR)\issued_token_echo.exe : $(RAMPART_SOURCE_DIR)\samples\client\issued_token\echo.c $(CC) $(CFLAGS) $(MOD_RAMPART_INCLUDE_PATH) \ $(RAMPART_SOURCE_DIR)\samples\client\issued_token\echo.c \ /Fo$(RAMPART_INTDIR)\samples\client\issued_token\ /c $(LD) $(LDFLAGS) $(RAMPART_INTDIR)\samples\client\issued_token\echo.obj axutil.lib axiom.lib neethi.lib \ axis2_parser.lib axis2_engine.lib /LIBPATH:$(RAMPART_DISTDIR)\lib rampart.lib /OUT:$(RAMPART_SAMPLE_BIN_DIR)\issued_token_echo.exe -@$(_VC_MANIFEST_EMBED_EXE) mod_rampart_samples_issued_token: $(RAMPART_SAMPLE_BIN_DIR)\issued_token_echo.exe $(RAMPART_SAMPLE_BIN_DIR)\saml_protect_echo.exe : $(RAMPART_SOURCE_DIR)\samples\client\saml_protect\echo.c $(CC) $(CFLAGS) $(MOD_RAMPART_INCLUDE_PATH) \ $(RAMPART_SOURCE_DIR)\samples\client\saml_protect\echo.c \ /Fo$(RAMPART_INTDIR)\samples\client\saml_protect\ /c $(LD) $(LDFLAGS) $(RAMPART_INTDIR)\samples\client\saml_protect\echo.obj axutil.lib axiom.lib neethi.lib \ axis2_parser.lib axis2_engine.lib /LIBPATH:$(RAMPART_DISTDIR)\lib rampart.lib /OUT:$(RAMPART_SAMPLE_BIN_DIR)\saml_protect_echo.exe -@$(_VC_MANIFEST_EMBED_EXE) mod_rampart_samples_saml_protect: $(RAMPART_SAMPLE_BIN_DIR)\saml_protect_echo.exe $(RAMPART_SAMPLE_LIB_DIR)\cred_provider.dll : $(RAMPART_SOURCE_DIR)\samples\credential_provider\*.c $(CC) $(CFLAGS) $(MOD_RAMPART_INCLUDE_PATH) \ $(RAMPART_SOURCE_DIR)\samples\credential_provider\*.c \ /Fo$(RAMPART_INTDIR)\samples\credential_provider\ /c $(LD) $(LDFLAGS) $(RAMPART_INTDIR)\samples\credential_provider\cred_provider.obj \ axutil.lib axiom.lib axis2_parser.lib $(LIBS) axis2_engine.lib \ axis2_http_receiver.lib axis2_http_sender.lib \ /DLL /OUT:$(RAMPART_SAMPLE_LIB_DIR)\cred_provider.dll -@$(_VC_MANIFEST_EMBED_DLL) mod_rampart_samples_credential_provider: $(RAMPART_SAMPLE_LIB_DIR)\cred_provider.dll mod_rampart_samples: mod_rampart_samples_sec_echo mod_rampart_services_sec_echo mod_rampart_services_secconv_echo mod_rampart_samples_saml_protect mod_rampart_copy_include: xcopy /E /I /Y $(RAMPART_SOURCE_DIR)\include $(RAMPART_DISTDIR)\include mod_rampart_copy_keys: if not exist $(RAMPART_SAMPLE_DATA_DIR)\keys mkdir $(RAMPART_SAMPLE_DATA_DIR)\keys xcopy /E /I /Y $(RAMPART_SOURCE_DIR)\samples\keys\* $(RAMPART_SAMPLE_DATA_DIR)\keys mod_rampart_copy_deploy: copy deploy_rampart.bat $(RAMPART_DISTDIR) copy $(RAMPART_SOURCE_DIR)\samples\client\sec_echo\update_n_run.bat $(RAMPART_SAMPLE_BIN_DIR) copy $(RAMPART_SOURCE_DIR)\samples\client\saml_echo\update_n_run.bat $(RAMPART_SAMPLE_BIN_DIR)\saml_update_n_run.bat copy $(RAMPART_SOURCE_DIR)\samples\data\client_axis2.xml $(RAMPART_SAMPLE_DATA_DIR)\ copy $(RAMPART_SOURCE_DIR)\samples\data\server_axis2.xml $(RAMPART_SAMPLE_DATA_DIR)\ copy_sec_policy: xcopy /E /I /Y $(RAMPART_SOURCE_DIR)\samples\secpolicy $(RAMPART_SAMPLE_POLICY_DIR)\ copy_dist_files: copy $(RAMPART_SOURCE_DIR)\README $(RAMPART_DISTDIR) copy $(RAMPART_SOURCE_DIR)\INSTALL $(RAMPART_DISTDIR) copy $(RAMPART_SOURCE_DIR)\AUTHORS $(RAMPART_DISTDIR) copy $(RAMPART_SOURCE_DIR)\COPYING $(RAMPART_DISTDIR) copy $(RAMPART_SOURCE_DIR)\LICENSE $(RAMPART_DISTDIR) copy $(RAMPART_SOURCE_DIR)\NEWS $(RAMPART_DISTDIR) copy $(RAMPART_SOURCE_DIR)\NOTICE $(RAMPART_DISTDIR) copy $(RAMPART_SOURCE_DIR)\ChangeLog $(RAMPART_DISTDIR) #copy make_bin_dist.bat $(RAMPART_DISTDIR) mod_rampart_all: rampart mod_rampart mod_rampart_authn mod_rampart_rd mod_rampart_sct_provider mod_rampart_sct_provider_hashdb mod_rampart_pwcb mod_rampart_htpwcb mod_rampart_samples mod_rampart_copy_include copy_dist_files mv_dist: move $(RAMPART_DISTDIR) $(RAMPART_DIST_NAME) del_am: chdir $(RAMPART_DISTDIR) del /s *.am chdir .\..\win32 copy_docs: if exist $(RAMPART_SOURCE_DIR)\docs xcopy /E /I /Y $(RAMPART_SOURCE_DIR)\docs $(RAMPART_DISTDIR)\docs install: distdir intdirs rampart mod_rampart mod_rahas mod_rampart_pwcb mod_rampart_authn mod_rampart_rd mod_rampart_sct_provider mod_rampart_sct_provider_hashdb mod_rampart_services_sec_echo mod_rampart_services_secconv_echo mod_rampart_services_saml_sts mod_rampart_samples_sec_echo mod_rampart_samples_saml_echo mod_rampart_samples_issued_token mod_rampart_samples_saml_protect mod_rampart_samples_credential_provider mod_rampart_copy_deploy mod_rampart_copy_include copy_dist_files copy_sec_policy mod_rampart_copy_keys del_am mod_rampart_sample_data copy_docs dist_no_samples: clean distdir intdirs rampart mod_rampart mod_rahas mod_rampart_copy_include copy_dist_files copy_samples: @xcopy /E /I /Y $(RAMPART_SOURCE_DIR)\samples\authn_provider $(RAMPART_SAMPLE_SRC_DIR)\authn_provider @xcopy /E /I /Y $(RAMPART_SOURCE_DIR)\samples\callback $(RAMPART_SAMPLE_SRC_DIR)\callback @xcopy /E /I /Y $(RAMPART_SOURCE_DIR)\samples\client $(RAMPART_SAMPLE_SRC_DIR)\client @xcopy /E /I /Y $(RAMPART_SOURCE_DIR)\samples\credential_provider $(RAMPART_SAMPLE_SRC_DIR)\credential_provider @xcopy /E /I /Y $(RAMPART_SOURCE_DIR)\samples\replay_detector $(RAMPART_SAMPLE_SRC_DIR)\replay_detector @xcopy /E /I /Y $(RAMPART_SOURCE_DIR)\samples\sct_provider $(RAMPART_SAMPLE_SRC_DIR)\sct_provider @xcopy /E /I /Y $(RAMPART_SOURCE_DIR)\samples\server $(RAMPART_SAMPLE_SRC_DIR)\server @cd $(RAMPART_SAMPLE_SRC_DIR) @del /s /q *.am @cd .\..\..\..\..\win32 dist: install copy_samples deploy: dist chdir $(RAMPART_DISTDIR) deploy_rampart.bat chdir ..\win32 rampartc-src-1.3.0/build/win32/deploy_rampart.bat0000644000076500007650000000143411202453426021537 0ustar shankarshankar@echo off echo ------------------------------------------------------------------------- echo deploying rampart... echo ------------------------------------------------------------------------- xcopy .\include %AXIS2C_HOME%\include /E /I /Y /S xcopy .\lib %AXIS2C_HOME%\lib /E /I /Y /S xcopy .\modules %AXIS2C_HOME%\modules /E /I /Y /S xcopy .\samples %AXIS2C_HOME%\samples /E /I /Y /S xcopy .\services %AXIS2C_HOME%\services /E /I /Y /S copy .\samples\src\rampartc\data\server_axis2.xml %AXIS2C_HOME%\axis2.xml cd .\samples\src\rampartc\client deploy_client_repo.bat cd ..\..\..\..\ echo ------------------------------------------------------------------------- echo Rampart deployed echo ------------------------------------------------------------------------- @echo on rampartc-src-1.3.0/build/win32/configure.in0000644000076500007650000000052111202453426020332 0ustar shankarshankar# Set the path to axis2 binary installation. AXIS2_BIN_DIR = E:\axis2c\build\deploy # Set the path to OpenSSL binary installation (ver 0.9.8a or above). OPENSSL_BIN_DIR = C:\OpenSSL # Set this to 1 if debug code should be generated, 0 otherwise. DEBUG = 0 #CRUNTIME Libaray ( Use /MT or /MD) CRUNTIME=/MT EMBED_MANIFEST=0 rampartc-src-1.3.0/LICENSE0000644000076500007650000002613711202453435015000 0ustar shankarshankar Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] 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. rampartc-src-1.3.0/NOTICE0000644000076500007650000000025211202453435014665 0ustar shankarshankarApache Rampart/C Copyright 2005-2009 The Apache Software Foundation This product includes software developed at The Apache Software Foundation (http://www.apache.org/). rampartc-src-1.3.0/xdocs/0000755000076500007650000000000011202454512015077 5ustar shankarshankarrampartc-src-1.3.0/xdocs/versioning.html0000644000076500007650000000053111202453400020142 0ustar shankarshankar Versioning

Versioning of Apache Rampart/C

Apache Rampart/C versioning guide lines as specified in Apache Axis2/C http://ws.apache.org/axis2/c/versioning.html

rampartc-src-1.3.0/xdocs/api/0000755000076500007650000000000011202454512015650 5ustar shankarshankarrampartc-src-1.3.0/xdocs/api/html/0000755000076500007650000000000011202454457016624 5ustar shankarshankarrampartc-src-1.3.0/xdocs/api/html/group__openssl__pem.html0000644000076500007650000000544511202454456023557 0ustar shankarshankar Rampart/C: OpenSSL PEM

OpenSSL PEM
[OpenSSL wrapper]


Enumerations

enum  openssl_pem_pkey_type_t { OPENSSL_PEM_PKEY_TYPE_PRIVATE_KEY = 0, OPENSSL_PEM_PKEY_TYPE_PUBLIC_KEY, OPENSSL_PEM_PKEY_TYPE_UNKNOWN }

Functions

AXIS2_EXTERN axis2_status_t openssl_pem_buf_read_pkey (const axutil_env_t *env, axis2_char_t *b64_encoded_buf, axis2_char_t *password, openssl_pem_pkey_type_t type, EVP_PKEY **pkey)
AXIS2_EXTERN axis2_status_t openssl_pem_read_pkey (const axutil_env_t *env, axis2_char_t *filename, axis2_char_t *password, openssl_pem_pkey_type_t type, EVP_PKEY **pkey)

Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/globals_0x73.html0000644000076500007650000001627611202454457021732 0ustar shankarshankar Rampart/C: Class Members
Here is a list of all documented file members with links to the documentation:

- s -


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/openssl__pkey_8h-source.html0000644000076500007650000002541611202454454024266 0ustar shankarshankar Rampart/C: openssl_pkey.h Source File

openssl_pkey.h

Go to the documentation of this file.
00001 /*
00002  *   Copyright 2003-2004 The Apache Software Foundation.
00003  *
00004  *   Licensed under the Apache License, Version 2.0 (the "License");
00005  *   you may not use this file except in compliance with the License.
00006  *   You may obtain a copy of the License at
00007  *
00008  *       http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  *   Unless required by applicable law or agreed to in writing, software
00011  *   distributed under the License is distributed on an "AS IS" BASIS,
00012  *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  *   See the License for the specific language governing permissions and
00014  *   limitations under the License.
00015  */
00016 
00017 #include <openssl/rand.h>
00018 #include <openssl/evp.h>
00019 #include <openssl/pem.h>
00020 #include <openssl/bio.h>
00021 #include <openssl/rand.h>
00022 #include <openssl_constants.h>
00023 #include <axis2_util.h>
00024 
00030 #ifndef OPENSSL_PKEY_H
00031 #define OPENSSL_PKEY_H
00032 
00033 #ifdef __cplusplus
00034 extern "C" {
00035 #endif
00036 
00042 #define OPENSSL_PKEY_TYPE_UNKNOWN        0
00043 #define OPENSSL_PKEY_TYPE_PUBLIC_KEY     1
00044 #define OPENSSL_PKEY_TYPE_PRIVATE_KEY    2
00045 
00046 
00048     typedef struct openssl_pkey_t openssl_pkey_t;
00049 
00050 
00051 
00052     EVP_PKEY *AXIS2_CALL
00053     openssl_pkey_get_key(
00054         const openssl_pkey_t *pkey,
00055         const axutil_env_t *env
00056     );
00057 
00058     axis2_char_t *AXIS2_CALL
00059     openssl_pkey_get_name(
00060         const openssl_pkey_t *pkey,
00061         const axutil_env_t *env
00062     );
00063 
00064     int AXIS2_CALL
00065     openssl_pkey_get_size(
00066         const openssl_pkey_t *pkey,
00067         const axutil_env_t *env
00068     );
00069 
00070     int AXIS2_CALL
00071     openssl_pkey_get_type(
00072         const openssl_pkey_t *pkey,
00073         const axutil_env_t *env
00074     );
00075 
00076 
00077     axis2_status_t AXIS2_CALL
00078     openssl_pkey_set_key(
00079         openssl_pkey_t *pkey,
00080         const axutil_env_t *env,
00081         EVP_PKEY *key
00082     );
00083 
00084     axis2_status_t AXIS2_CALL
00085     openssl_pkey_set_name(
00086         openssl_pkey_t *pkey,
00087         const axutil_env_t *env,
00088         axis2_char_t *name
00089     );
00090 
00091     axis2_status_t AXIS2_CALL
00092     openssl_pkey_set_type(
00093         openssl_pkey_t *pkey,
00094         const axutil_env_t *env,
00095         int type
00096     );
00097 
00098     axis2_status_t AXIS2_CALL
00099     openssl_pkey_load(
00100         openssl_pkey_t *pkey,
00101         const axutil_env_t *env,
00102         axis2_char_t *filename,
00103         axis2_char_t *password
00104     );
00105 
00106     axis2_status_t AXIS2_CALL
00107     openssl_pkey_populate(
00108         openssl_pkey_t *pkey,
00109         const axutil_env_t *env,
00110         EVP_PKEY *key,
00111         axis2_char_t *name,
00112         int type
00113     );
00114 
00115     axis2_status_t AXIS2_CALL
00116     openssl_pkey_free(
00117         openssl_pkey_t *pkey,
00118         const axutil_env_t *env
00119     );
00120 
00121     axis2_status_t AXIS2_CALL
00122     openssl_pkey_increment_ref(
00123         openssl_pkey_t *pkey,
00124         const axutil_env_t *env);
00125     /*Create function*/
00126     AXIS2_EXTERN openssl_pkey_t *AXIS2_CALL
00127     openssl_pkey_create(const axutil_env_t *env);
00128 
00130 #ifdef __cplusplus
00131 }
00132 #endif
00133 
00134 #endif    /* OPENSSL_PKEY_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__rahas.html0000644000076500007650000001011711202454456022162 0ustar shankarshankar Rampart/C: SecurityContextToken Issuer

SecurityContextToken Issuer


Functions

AXIS2_EXTERN axis2_status_t rahas_process_issue_request (const axutil_env_t *env, trust_rst_t *rst, trust_rstr_t *rstr, axis2_msg_ctx_t *msg_ctx, int trust_version)

Function Documentation

AXIS2_EXTERN axis2_status_t rahas_process_issue_request ( const axutil_env_t *  env,
trust_rst_t *  rst,
trust_rstr_t *  rstr,
axis2_msg_ctx_t *  msg_ctx,
int  trust_version 
)

Processes issue request

Parameters:
env pointer to environment struct
rst request security token struct
rstr request security token response struct
msg_ctx message context structure
trust_version Trust specification. Can be TRUST_VERSION_05_02 or TRUST_VERSION_05_12
Returns:
AXIS2_SUCCESS if processed successfully. AXIS2_FAILURE otherwise.


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/files.html0000644000076500007650000005035711202454457020626 0ustar shankarshankar Rampart/C: File Index

File List

Here is a list of all documented files with brief descriptions:
axis2_key_type.h [code]Defines the key type
openssl_cipher_ctx.h [code]The cipher context in which the information regarding a cipher cycle is stored
openssl_cipher_property.h [code]The class to store cipher properties such as name, key size, block size etc
openssl_constants.h [code]Constants for the openssl wrapper
openssl_crypt.h [code]The encryption/decryption methods for OMXMLSecurity
openssl_digest.h [code]Digest function implementations. Supports SHA1 and MD5
openssl_hmac.h [code]HMAC function implementations. Supports SHA1
openssl_pem.h [code]Funcitons related to keys that are in PEM format
openssl_pkcs12.h [code]Functions related to keys that are in pkcs12 format
openssl_pkcs12_keystore.h [code]Key Store manager for keys that are in pkcs12 format
openssl_pkey.h [code]Holds either a public key or a private key. The type is determined by the type attribute
openssl_rsa.h [code]For RSA encryption
openssl_sign.h [code]The signature functions in openssl wrapper
openssl_util.h [code]General utility routines for openssl related functions
openssl_x509.h [code]Extracts information from a X509 certificate
oxs_asym_ctx.h [code]Keeps information relavent for asymmetric encryption
oxs_axiom.h [code]Utility functions related to AXIOM. A place for common code
oxs_axis2_utils.h [code]Utility functions related to Axis2/C
oxs_buffer.h [code]The buffer representation in OMXMLSecurity
oxs_c14n.h [code]Cannonicalization implementation for OMXMLSecurity
oxs_cipher.h [code]Cipher related functions in OMXMLSecurity
oxs_constants.h [code]Constants for OMXMLSecurity
oxs_ctx.h [code]Keeps configurations for the OMXMLSecurity
oxs_derivation.h [code]The Key derivation module for OMXMLSecurity
oxs_encryption.h [code]Provides data encryption and decryption functionalities of the OMXMLSec
oxs_error.h [code]Represents an Error occured during the OMXMLSecurity execution
oxs_iv.h [code]Initial Vector related functionalities
oxs_key.h [code]Key in OMXMLSecurity
oxs_key_mgr.h [code]Key Manager responsible for loading keys for OMXMLSecurity
oxs_saml_token.h [code]
oxs_sign_ctx.h [code]Keeps information relavent for a single node of signing
oxs_sign_part.h [code]Keeps information relavent for a single node of signing
oxs_signature.h [code]Does the XML Signature for OMXMLSecurity
oxs_tokens.h [code]Includes all tokens of OMXMLSecurity
oxs_transform.h [code]The class representing a single step of transformation. For example a Cannonicalization
oxs_transforms_factory.h [code]Produces transforms for OMXMLSecurity
oxs_utility.h [code]The utility module for OMXMLSecurity
oxs_x509_cert.h [code]OMXMLSecurity representation of an X509 certificate
oxs_xml_encryption.h [code]Does the XML encryption for OMXMLSecurity
oxs_xml_key_info_builder.h [code]Process elements available under ds:KeyInfo
oxs_xml_key_processor.h [code]Process elements available under ds:KeyInfo
oxs_xml_signature.h [code]Does the XML Signature for OMXMLSecurity
rahas_mod.h [code]Axis2 rahas module interface
rahas_request_processor.h [code]Process requests related to secure conversation
rampart_authn_provider.h [code]The authentication interface of rampart. Validates a username and password pair
rampart_callback.h [code]The callback module for a password
rampart_config.h [code]The Rampart Config, in which user configurations are stored
rampart_constants.h [code]Holds constants for rampart
rampart_context.h [code]The Rampart Context, in which configurations are stored
rampart_credentials.h [code]The credentials interface for rampart. To retrieve a username and password pair
rampart_crypto_util.h [code]Crypto related utility module
rampart_encryption.h [code]Encrypts a SOAP message
rampart_engine.h [code]Loads configuratins for Rampart, which defines its behaviuor. Also loads modules and initialize Rampart
rampart_error.h [code]Rampart specific error codes
rampart_handler_util.h [code]Utilities related to handlers
rampart_issued.h [code]
rampart_issued_token.h [code]
rampart_mod.h [code]Axis2 rampart module interface
rampart_policy_validator.h [code]Verifies whether the message complies with the security policy reqmnt
rampart_replay_detector.h [code]The replay_detector module for rampart
rampart_saml.h [code]Build saml tokens and validate saml tokens
rampart_saml_token.h [code]
rampart_sct_provider.h [code]Security context token provider module for rampart
rampart_sct_provider_utility.h [code]Utility methods using Security context token provider module
rampart_sec_header_builder.h [code]Build the Security related SOAP headers
rampart_sec_header_processor.h [code]Processes a message depending on it's security related claims
rampart_sec_processed_result.h [code]The module to keep the results after processing the message
rampart_signature.h [code]Sign a SOAP message
rampart_timestamp_token.h [code]Timestamp token related functions
rampart_token_builder.h [code]Reference Token builfing/of rampart
rampart_token_processor.h [code]Token processing of rampart
rampart_username_token.h [code]The Usernametoken
rampart_util.h [code]Utilities of rampart
saml.h [code]
saml_req.h [code]
secconv_security_context_token.h [code]Security context token
trust_claims.h [code]
trust_constants.h [code]Holds constants for trust implementation
trust_context.h [code]Holds function declarations and data for data
trust_entropy.h [code]
trust_life_time.h [code]
trust_policy_util.h [code]
trust_rst.h [code]
trust_rstr.h [code]
trust_sts_client.h [code]Specific sts client interface
trust_token.h [code]Holds function declarations and data for token
trust_util.h [code]Generic operations related to trust module

Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__oxs__xml__encryption.html0000644000076500007650000004702411202454456025334 0ustar shankarshankar Rampart/C: XML Encryption

XML Encryption
[OMXMLSecurity]


Functions

AXIS2_EXTERN axis2_status_t oxs_xml_enc_encrypt_node (const axutil_env_t *env, oxs_ctx_t *enc_ctx, axiom_node_t *node, axiom_node_t **enc_type_node, axiom_node_t *key_reference_node)
AXIS2_EXTERN axis2_status_t oxs_xml_enc_decrypt_node (const axutil_env_t *env, oxs_ctx_t *enc_ctx, axiom_node_t *enc_type_node, axiom_node_t **decrypted_node)
AXIS2_EXTERN axis2_status_t oxs_xml_enc_encrypt_data (const axutil_env_t *env, oxs_ctx_t *enc_ctx, oxs_buffer_t *content_buf, axiom_node_t **enc_type_node, axiom_node_t *key_reference_node)
AXIS2_EXTERN axis2_status_t oxs_xml_enc_decrypt_data (const axutil_env_t *env, oxs_ctx_t *enc_ctx, axiom_node_t *enc_type_node, oxs_buffer_t *result_buf)
AXIS2_EXTERN axis2_status_t oxs_xml_enc_encrypt_key (const axutil_env_t *env, oxs_asym_ctx_t *asym_ctx, axiom_node_t *parent, oxs_key_t *sym_key, axutil_array_list_t *id_list)
AXIS2_EXTERN axis2_status_t oxs_xml_enc_decrypt_key (const axutil_env_t *env, oxs_asym_ctx_t *asym_ctx, axiom_node_t *parent, axiom_node_t *encrypted_key_node, oxs_key_t *key)

Function Documentation

AXIS2_EXTERN axis2_status_t oxs_xml_enc_decrypt_data ( const axutil_env_t *  env,
oxs_ctx_t enc_ctx,
axiom_node_t *  enc_type_node,
oxs_buffer_t result_buf 
)

Decrypts and places the data inside the The name of the method is bit tricky as it doesn't exactly decrypts a data buffer.

Parameters:
env pointer to environment struct
enc_ctx encryption context
enc_type_node the EncryptedData node which needs to be decrypted
result_buf the buffer to keep the decrypted content
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_xml_enc_decrypt_key ( const axutil_env_t *  env,
oxs_asym_ctx_t *  asym_ctx,
axiom_node_t *  parent,
axiom_node_t *  encrypted_key_node,
oxs_key_t key 
)

Decrypts a key/data in asymmetric way as specified in . This method is specifically written to support the key decryption in WS-Secruity

Parameters:
env pointer to environment struct
enc_ctx encryption context
parent parent of the EncryptedKey node
encrypted_key_node the EncryptedKey node
key,the key which holds the decrypted key data
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_xml_enc_decrypt_node ( const axutil_env_t *  env,
oxs_ctx_t enc_ctx,
axiom_node_t *  enc_type_node,
axiom_node_t **  decrypted_node 
)

Decrypts a node as specified in the . A reference is taken to assign the address of the decrypted node

Parameters:
env pointer to environment struct
enc_ctx encryption context
enc_type_node the EncryptedData node which needs to be decrypted
decrypted_node reference to the decrypted node
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_xml_enc_encrypt_data ( const axutil_env_t *  env,
oxs_ctx_t enc_ctx,
oxs_buffer_t content_buf,
axiom_node_t **  enc_type_node,
axiom_node_t *  key_reference_node 
)

Encrypts data or the content of the as specified in the . A reference is taken for the EncryptedData to place the encrypted data

Parameters:
env pointer to environment struct
enc_ctx encryption context
content_buf the content to be encrypted.
enc_type_node reference to the EncryptedData node
key_reference_node key reference provided by STS generated tokens.
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_xml_enc_encrypt_key ( const axutil_env_t *  env,
oxs_asym_ctx_t *  asym_ctx,
axiom_node_t *  parent,
oxs_key_t sym_key,
axutil_array_list_t *  id_list 
)

Encrypts a key/data in asymmetric way as specified in . This method is specifically written to support the key encryption in WS-Secruity

Parameters:
env pointer to environment struct
enc_ctx encryption context
parent parent of the EncryptedKey node
sym_key,the symmetric key that needs to be encrypted
id_list the list of nodes that are encrypted by this particular key
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_xml_enc_encrypt_node ( const axutil_env_t *  env,
oxs_ctx_t enc_ctx,
axiom_node_t *  node,
axiom_node_t **  enc_type_node,
axiom_node_t *  key_reference_node 
)

Encrypts a given node as specified in the . A reference is taken for the EncryptedData to place the encrypted data.

Parameters:
env pointer to environment struct
enc_ctx encryption context
node the node tobe encrypted
enc_type_node reference to the EncryptedData node
key_reference_node key reference provided by STS generated tokens.
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/dirs.html0000644000076500007650000000236511202454457020461 0ustar shankarshankar Rampart/C: Directory Hierarchy

Directories

This directory hierarchy is sorted roughly, but not completely, alphabetically:

Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/oxs__utility_8h-source.html0000644000076500007650000001426711202454455024152 0ustar shankarshankar Rampart/C: oxs_utility.h Source File

oxs_utility.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef OXS_UTILITY_H
00019 #define OXS_UTILITY_H
00020 
00021 
00032 #include <axis2_defines.h>
00033 #include <axutil_env.h>
00034 #include <oxs_asym_ctx.h>
00035 #include <oxs_key_mgr.h>
00036 
00037 #ifdef __cplusplus
00038 extern "C"
00039 {
00040 #endif
00041     
00048     AXIS2_EXTERN axis2_char_t* AXIS2_CALL
00049     oxs_util_generate_nonce(const axutil_env_t *env, int length);
00050 
00059     AXIS2_EXTERN axis2_char_t* AXIS2_CALL
00060     oxs_util_generate_id(const axutil_env_t *env,
00061                          axis2_char_t *prefix);
00062 
00069     AXIS2_EXTERN oxs_key_mgr_format_t AXIS2_CALL
00070     oxs_util_get_format_by_file_extension(const axutil_env_t *env,
00071                                           axis2_char_t *file_name);
00072 
00073 
00081     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00082     oxs_util_get_newline_removed_string(const axutil_env_t *env,
00083                                         axis2_char_t *input);
00084 
00085 
00087 #ifdef __cplusplus
00088 }
00089 #endif
00090 
00091 #endif                          /* OXS_UTILITY_H */

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/rampart__saml_8h.html0000644000076500007650000004762311202454456022745 0ustar shankarshankar Rampart/C: rampart_saml.h File Reference

rampart_saml.h File Reference

build saml tokens and validate saml tokens More...

#include <axutil_utils_defines.h>
#include <axis2_defines.h>
#include <axutil_env.h>
#include <axiom_soap.h>
#include <axis2_msg_ctx.h>
#include <oxs_asym_ctx.h>
#include <oxs_xml_encryption.h>
#include <rampart_context.h>
#include <axutil_utils.h>
#include <axiom.h>
#include <rampart_saml_token.h>
#include <oxs_key_mgr.h>
#include <rp_rampart_config.h>

Go to the source code of this file.

Defines

#define RAMPART_ST_FAULT_SECURITYTOKENUNAVAILABLE_STR   "A referenced SAML assertion could not be retrieved."
#define RAMPART_ST_FAULT_UNSUPPORTEDSECURITYTOKEN_STR   "An assertion contains a <saml:condition> element that the receive does not understand."
#define RAMPART_ST_FAULT_FAILEDCHECK_STR   "A signature withing an assertion or referencing an assertion is invalid."
#define RAMPART_ST_FAULT_INVALIDSECURITYTOKEN_STR   "The issuer of an assertion is not acceptable to the receiver."
#define RAMPART_ST_FAULT_SECURITYTOKENUNAVAILABLE_CODE   "wsse:SecurityTokenUnavailable"
#define RAMPART_ST_FAULT_UNSUPPORTEDSECURITYTOKEN_CODE   "wsse:UnsupportedSecurityToken"
#define RAMPART_ST_FAULT_FAILEDCHECK_CODE   "wsse:FailedCheck"
#define RAMPART_ST_FAULT_INVALIDSECURITYTOKEN_CODE   "wsse:InvalidSecurityToken"
#define RAMPART_SAML_FAULT_CODE   "env:Sender"

Functions

AXIS2_EXTERN axis2_status_t rampart_saml_supporting_token_build (const axutil_env_t *env, rampart_context_t *rampart_context, axiom_node_t *sec_node, axutil_array_list_t *sign_parts)
AXIS2_EXTERN axis2_status_t rampart_saml_token_validate (const axutil_env_t *env, rampart_context_t *rampart_context, axiom_node_t *assertion)
AXIS2_EXTERN char * rampart_saml_token_get_subject_confirmation (const axutil_env_t *env, axiom_node_t *assertion)
AXIS2_EXTERN int rampart_saml_token_fault_securitytokenunavailable (axutil_env_t *env, axis2_msg_ctx_t *ctx)
AXIS2_EXTERN int rampart_saml_token_fault_unsupportedsecuritytoken (axutil_env_t *env, axis2_msg_ctx_t *ctx)
AXIS2_EXTERN int rampart_saml_token_fault_failedcheck (axutil_env_t *env, axis2_msg_ctx_t *ctx)
AXIS2_EXTERN int rampart_saml_token_fault_invalidsecuritytoken (axutil_env_t *env, axis2_msg_ctx_t *ctx)
AXIS2_EXTERN rampart_saml_token_t * rampart_saml_add_token (rampart_context_t *rampart_context, const axutil_env_t *env, axiom_node_t *assertion, axiom_node_t *str, rampart_st_type_t type)


Detailed Description

build saml tokens and validate saml tokens


Function Documentation

AXIS2_EXTERN axis2_status_t rampart_saml_supporting_token_build ( const axutil_env_t *  env,
rampart_context_t *  rampart_context,
axiom_node_t *  sec_node,
axutil_array_list_t *  sign_parts 
)

Parameters:
env pointer to environment struct,Must not be NULL.
rampart_context 
sec_node 
sign_parts 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN int rampart_saml_token_fault_failedcheck ( axutil_env_t *  env,
axis2_msg_ctx_t *  ctx 
)

Parameters:
env pointer to environment struct,Must not be NULL.
ctx 
Returns:

AXIS2_EXTERN int rampart_saml_token_fault_invalidsecuritytoken ( axutil_env_t *  env,
axis2_msg_ctx_t *  ctx 
)

Parameters:
env pointer to environment struct,Must not be NULL.
ctx 
Returns:

AXIS2_EXTERN int rampart_saml_token_fault_securitytokenunavailable ( axutil_env_t *  env,
axis2_msg_ctx_t *  ctx 
)

SAML token proccessing faults

Parameters:
env pointer to environment struct,Must not be NULL.
ctx 
Returns:

AXIS2_EXTERN int rampart_saml_token_fault_unsupportedsecuritytoken ( axutil_env_t *  env,
axis2_msg_ctx_t *  ctx 
)

Parameters:
env pointer to environment struct,Must not be NULL.
ctx 
Returns:

AXIS2_EXTERN char* rampart_saml_token_get_subject_confirmation ( const axutil_env_t *  env,
axiom_node_t *  assertion 
)

Parameters:
env pointer to environment struct,Must not be NULL.
assertion 
Returns:

AXIS2_EXTERN axis2_status_t rampart_saml_token_validate ( const axutil_env_t *  env,
rampart_context_t *  rampart_context,
axiom_node_t *  assertion 
)

Parameters:
env pointer to environment struct,Must not be NULL.
rampart_context 
assertion 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/globals_defs.html0000644000076500007650000000345411202454457022144 0ustar shankarshankar Rampart/C: Class Members
 


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/rahas__mod_8h-source.html0000644000076500007650000001074611202454455023511 0ustar shankarshankar Rampart/C: rahas_mod.h Source File

rahas_mod.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef RAHAS_MOD_H
00019 #define RAHAS_MOD_H
00020 
00030 #include <axis2_handler.h>
00031 
00032 #ifdef __cplusplus
00033 extern "C"
00034 {
00035 #endif
00036 
00043     AXIS2_EXTERN axis2_handler_t* AXIS2_CALL
00044     rahas_in_handler_create(
00045         const axutil_env_t *env,
00046         axutil_string_t *name);
00047 
00050 #ifdef __cplusplus
00051 }
00052 #endif
00053 
00054 #endif    /* RAHAS_MOD_H */

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__oxs__axis2__utils.html0000644000076500007650000000232111202454456024517 0ustar shankarshankar Rampart/C: Axis2 Utils

Axis2 Utils
[OMXMLSecurity]


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__oxs__asym__ctx.html0000644000076500007650000005171211202454456024110 0ustar shankarshankar Rampart/C: Asymmetric Context

Asymmetric Context
[OMXMLSecurity]


Typedefs

typedef struct oxs_asym_ctx_t oxs_asym_ctx_t

Enumerations

enum  oxs_asym_ctx_format_t { OXS_ASYM_CTX_FORMAT_UNKNOWN = 0, OXS_ASYM_CTX_FORMAT_PEM, OXS_ASYM_CTX_FORMAT_PKCS12 }
enum  oxs_asym_ctx_operation_t { OXS_ASYM_CTX_OPERATION_PUB_ENCRYPT = 0, OXS_ASYM_CTX_OPERATION_PRV_DECRYPT, OXS_ASYM_CTX_OPERATION_PUB_DECRYPT, OXS_ASYM_CTX_OPERATION_PRV_ENCRYPT }

Functions

AXIS2_EXTERN oxs_asym_ctx_t * oxs_asym_ctx_create (const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_asym_ctx_free (oxs_asym_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_asym_ctx_get_algorithm (const oxs_asym_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_asym_ctx_get_st_ref_pattern (const oxs_asym_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN
oxs_asym_ctx_operation_t 
oxs_asym_ctx_get_operation (const oxs_asym_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN openssl_pkey_toxs_asym_ctx_get_private_key (const oxs_asym_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN oxs_x509_cert_t * oxs_asym_ctx_get_certificate (const oxs_asym_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_asym_ctx_set_algorithm (oxs_asym_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *algorithm)
AXIS2_EXTERN axis2_status_t oxs_asym_ctx_set_st_ref_pattern (oxs_asym_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *st_ref_pattern)
AXIS2_EXTERN axis2_status_t oxs_asym_ctx_set_operation (oxs_asym_ctx_t *ctx, const axutil_env_t *env, oxs_asym_ctx_operation_t operation)
AXIS2_EXTERN axis2_status_t oxs_asym_ctx_set_certificate (oxs_asym_ctx_t *ctx, const axutil_env_t *env, oxs_x509_cert_t *certificate)
AXIS2_EXTERN axis2_status_t oxs_asym_ctx_set_private_key (oxs_asym_ctx_t *asym_ctx, const axutil_env_t *env, openssl_pkey_t *private_key)

Function Documentation

AXIS2_EXTERN axis2_status_t oxs_asym_ctx_free ( oxs_asym_ctx_t *  ctx,
const axutil_env_t *  env 
)

Free function for the asymmetric context struct pointer to the OMXMLSec asymmetric context struct pointer to environment struct

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_char_t* oxs_asym_ctx_get_algorithm ( const oxs_asym_ctx_t *  ctx,
const axutil_env_t *  env 
)

Get the algorithm used to encrypt pointer to the OMXMLSec asymmetric context struct pointer to environment struct

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN oxs_x509_cert_t* oxs_asym_ctx_get_certificate ( const oxs_asym_ctx_t *  ctx,
const axutil_env_t *  env 
)

Get the x509 crtificate used. pointer to the OMXMLSec asymmetric context struct pointer to environment struct

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN oxs_asym_ctx_operation_t oxs_asym_ctx_get_operation ( const oxs_asym_ctx_t *  ctx,
const axutil_env_t *  env 
)

Get the operation. For ex: Public Key encrypt, Private Key Decrypt pointer to the OMXMLSec asymmetric context struct pointer to environment struct

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN openssl_pkey_t* oxs_asym_ctx_get_private_key ( const oxs_asym_ctx_t *  ctx,
const axutil_env_t *  env 
)

Get the private key used pointer to the OMXMLSec asymmetric context struct pointer to environment struct

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_char_t* oxs_asym_ctx_get_st_ref_pattern ( const oxs_asym_ctx_t *  ctx,
const axutil_env_t *  env 
)

Get the SecurityTokenReference pattern. For ex: IssuerSerial pointer to the OMXMLSec asymmetric context struct pointer to environment struct

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_asym_ctx_set_algorithm ( oxs_asym_ctx_t *  ctx,
const axutil_env_t *  env,
axis2_char_t *  algorithm 
)

Sets the algorithm used to encrypt pointer to the OMXMLSec asymmetric context struct pointer to environment struct used to encrypt

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_asym_ctx_set_certificate ( oxs_asym_ctx_t *  ctx,
const axutil_env_t *  env,
oxs_x509_cert_t *  certificate 
)

Sets the x509 crtificate used. pointer to the OMXMLSec asymmetric context struct pointer to environment struct the x509 crtificate used.

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_asym_ctx_set_operation ( oxs_asym_ctx_t *  ctx,
const axutil_env_t *  env,
oxs_asym_ctx_operation_t  operation 
)

Sets the operation. For ex: Public Key encrypt, Private Key Decrypt pointer to the OMXMLSec asymmetric context struct pointer to environment struct the operation. For ex: Public Key encrypt, Private Key Decrypt

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_asym_ctx_set_private_key ( oxs_asym_ctx_t *  asym_ctx,
const axutil_env_t *  env,
openssl_pkey_t private_key 
)

Sets private key used pointer to the OMXMLSec asymmetric context struct pointer to environment struct private key used

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_asym_ctx_set_st_ref_pattern ( oxs_asym_ctx_t *  ctx,
const axutil_env_t *  env,
axis2_char_t *  st_ref_pattern 
)

Set the SecurityTokenReference pattern. For ex: IssuerSerial pointer to the OMXMLSec asymmetric context struct pointer to environment struct SecurityTokenReference pattern. For ex: IssuerSerial

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__openssl__cipher__property.html0000644000076500007650000007755411202454456026365 0ustar shankarshankar Rampart/C: OpenSSL Cipher Property

OpenSSL Cipher Property
[OpenSSL wrapper]


Typedefs

typedef struct
openssl_cipher_property_t 
openssl_cipher_property_t

Functions

EVP_CIPHER * openssl_cipher_property_get_cipher (const openssl_cipher_property_t *cprop, const axutil_env_t *env)
axis2_char_t * openssl_cipher_property_get_name (const openssl_cipher_property_t *cprop, const axutil_env_t *env)
axis2_char_t * openssl_cipher_property_get_url (const openssl_cipher_property_t *cprop, const axutil_env_t *env)
int openssl_cipher_property_get_key_size (const openssl_cipher_property_t *cprop, const axutil_env_t *env)
int openssl_cipher_property_get_block_size (const openssl_cipher_property_t *cprop, const axutil_env_t *env)
int openssl_cipher_property_get_iv_size (const openssl_cipher_property_t *cprop, const axutil_env_t *env)
axis2_status_t openssl_cipher_property_set_cipher (openssl_cipher_property_t *cprop, const axutil_env_t *env, EVP_CIPHER *cipher)
axis2_status_t openssl_cipher_property_set_name (openssl_cipher_property_t *cprop, const axutil_env_t *env, axis2_char_t *name)
axis2_status_t openssl_cipher_property_set_url (openssl_cipher_property_t *cprop, const axutil_env_t *env, axis2_char_t *url)
axis2_status_t openssl_cipher_property_set_key_size (openssl_cipher_property_t *cprop, const axutil_env_t *env, int key_size)
axis2_status_t openssl_cipher_property_set_block_size (openssl_cipher_property_t *cprop, const axutil_env_t *env, int block_size)
axis2_status_t openssl_cipher_property_set_iv_size (openssl_cipher_property_t *cprop, const axutil_env_t *env, int iv_size)
axis2_status_t openssl_cipher_property_free (openssl_cipher_property_t *cprop, const axutil_env_t *env)
AXIS2_EXTERN
openssl_cipher_property_t
openssl_cipher_property_create (const axutil_env_t *env)

Typedef Documentation

Type name for struct openssl_cipher_property


Function Documentation

AXIS2_EXTERN openssl_cipher_property_t* openssl_cipher_property_create ( const axutil_env_t *  env  ) 

Create a fresh block cipher property

Parameters:
env pointer to environment struct
Returns:
cipher_prop_ptr

axis2_status_t openssl_cipher_property_free ( openssl_cipher_property_t cprop,
const axutil_env_t *  env 
)

Free the cipher property

Parameters:
cprop The OpenSSL cipher property
env pointer to environment struct
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

int openssl_cipher_property_get_block_size ( const openssl_cipher_property_t cprop,
const axutil_env_t *  env 
)

Given the OpenSSL cipher property returns the cipher block size

Parameters:
cprop The OpenSSL cipher property
env pointer to environment struct
Returns:
the block size of the cipher

EVP_CIPHER* openssl_cipher_property_get_cipher ( const openssl_cipher_property_t cprop,
const axutil_env_t *  env 
)

Given the OpenSSL cipher property returns the cipher

Parameters:
cprop The OpenSSL cipher property
env pointer to environment struct
Returns:
the cipher

int openssl_cipher_property_get_iv_size ( const openssl_cipher_property_t cprop,
const axutil_env_t *  env 
)

Given the OpenSSL cipher property returns the size of the initial vector

Parameters:
cprop The OpenSSL cipher property
env pointer to environment struct
Returns:
the size of the initial vector

int openssl_cipher_property_get_key_size ( const openssl_cipher_property_t cprop,
const axutil_env_t *  env 
)

Given the OpenSSL cipher property returns the size of the key

Parameters:
cprop The OpenSSL cipher property
env pointer to environment struct
Returns:
size of the key

axis2_char_t* openssl_cipher_property_get_name ( const openssl_cipher_property_t cprop,
const axutil_env_t *  env 
)

Given the OpenSSL cipher property returns the name of the property

Parameters:
cprop The OpenSSL cipher property
env pointer to environment struct
Returns:
the name of the cipher property

axis2_char_t* openssl_cipher_property_get_url ( const openssl_cipher_property_t cprop,
const axutil_env_t *  env 
)

Given the OpenSSL cipher property returns the URL Which usually is an algorithm URL

Parameters:
cprop The OpenSSL cipher property
env pointer to environment struct
Returns:
the URL

axis2_status_t openssl_cipher_property_set_block_size ( openssl_cipher_property_t cprop,
const axutil_env_t *  env,
int  block_size 
)

Set the size of the cipher block for the OpenSSL cipher property

Parameters:
cprop The OpenSSL cipher property
env pointer to environment struct
block_size the size of the cipher block
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

axis2_status_t openssl_cipher_property_set_cipher ( openssl_cipher_property_t cprop,
const axutil_env_t *  env,
EVP_CIPHER *  cipher 
)

Set the Cipher for the OpenSSL cipher property

Parameters:
cprop The OpenSSL cipher property
env pointer to environment struct
cipher The cipher to be set in the property
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

axis2_status_t openssl_cipher_property_set_iv_size ( openssl_cipher_property_t cprop,
const axutil_env_t *  env,
int  iv_size 
)

Set the size of the initial vector for the OpenSSL cipher property

Parameters:
cprop The OpenSSL cipher property
env pointer to environment struct
iv_size the size of the initial vector
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

axis2_status_t openssl_cipher_property_set_key_size ( openssl_cipher_property_t cprop,
const axutil_env_t *  env,
int  key_size 
)

Set the the size of the key for the OpenSSL cipher property

Parameters:
cprop The OpenSSL cipher property
env pointer to environment struct
key_size the size of the key
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

axis2_status_t openssl_cipher_property_set_name ( openssl_cipher_property_t cprop,
const axutil_env_t *  env,
axis2_char_t *  name 
)

Set the name for the OpenSSL cipher property

Parameters:
cprop The OpenSSL cipher property
env pointer to environment struct
name of the OpenSSL cipher property
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

axis2_status_t openssl_cipher_property_set_url ( openssl_cipher_property_t cprop,
const axutil_env_t *  env,
axis2_char_t *  url 
)

Set the url for the OpenSSL cipher property

Parameters:
cprop The OpenSSL cipher property
env pointer to environment struct
url The URL of the OpenSSL cipher property
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/oxs__derivation_8h-source.html0000644000076500007650000001655511202454454024614 0ustar shankarshankar Rampart/C: oxs_derivation.h Source File

oxs_derivation.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef OXS_DERIVATION_H
00019 #define OXS_DERIVATION_H
00020 
00021 
00032 #include <axis2_defines.h>
00033 #include <axutil_env.h>
00034 #include <oxs_key.h>
00035 #include <oxs_buffer.h>
00036 
00037 #ifdef __cplusplus
00038 extern "C"
00039 {
00040 #endif
00041 
00042 
00056     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00057     oxs_derivation_derive_key(
00058         const axutil_env_t *env,
00059         oxs_key_t *secret,
00060         oxs_key_t *derived_key,
00061         axis2_bool_t build_fresh);
00062 
00074     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00075     oxs_derivation_build_derived_key_token(
00076         const axutil_env_t *env,
00077         oxs_key_t *derived_key,
00078         axiom_node_t *parent,
00079         axis2_char_t *stref_uri,
00080         axis2_char_t *stref_val_type, 
00081         axis2_char_t *wsc_ns_uri);
00082 
00093     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00094     oxs_derivation_build_derived_key_token_with_stre(
00095         const axutil_env_t *env,
00096         oxs_key_t *derived_key,
00097         axiom_node_t *parent,    
00098         axiom_node_t *stre,
00099         axis2_char_t *wsc_ns_uri);
00100 
00111     AXIS2_EXTERN oxs_key_t * AXIS2_CALL
00112     oxs_derivation_extract_derived_key_from_token(
00113         const axutil_env_t *env,
00114         axiom_node_t *dk_token,
00115         axiom_node_t *root_node,
00116         oxs_key_t *session_key);
00117 
00119 #ifdef __cplusplus
00120 }
00121 #endif
00122 
00123 #endif                          /* OXS_DERIVATION_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/rampart__error_8h-source.html0000644000076500007650000001365211202454455024432 0ustar shankarshankar Rampart/C: rampart_error.h Source File

rampart_error.h

Go to the documentation of this file.
00001 /*
00002  * Copyright 2004,2005 The Apache Software Foundation.
00003  *
00004  * Licensed under the Apache License, Version 2.0 (the "License")
00005  * you may not use this file except in compliance with the License.
00006  * You may obtain a copy of the License at
00007  *
00008  *      http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  * Unless required by applicable law or agreed to in writing, software
00011  * distributed under the License is distributed on an "AS IS" BASIS,
00012  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  * See the License for the specific language governing permissions and
00014  * limitations under the License.
00015  */
00016  
00017 #ifndef RAMPART_ERROR_H
00018 #define RAMPART_ERROR_H
00019 
00020 #include <axutil_error.h>
00021 
00022 #ifdef __cplusplus
00023 extern "C"
00024 {
00025 #endif
00026 
00042     enum rampart_error_codes
00043     { 
00044         /* No error */
00045         RAMPART_ERROR_NONE = RAMPART_ERROR_CODES_START,
00046         RAMPART_ERROR_UNSUPPORTED_SECURITY_TOKEN,
00047         RAMPART_ERROR_INVALID_SECURITY,
00048         RAMPART_ERROR_INVALID_SECURITY_TOKEN,
00049         RAMPART_ERROR_FAILED_AUTHENTICATION,
00050         RAMPART_ERROR_FAILED_CHECK,
00051         RAMPART_ERROR_SECURITY_TOKEN_UNAVAILABLE,
00052         RAMPART_ERROR_RAMPART_ERROR_LAST,
00053         RAMPART_ERROR_IN_TIMESTAMP,
00054         RAMPART_ERROR_IN_USERNAMETOKEN ,
00055         RAMPART_ERROR_IN_ENCRYPTED_KEY  ,
00056         RAMPART_ERROR_IN_ENCRYPTED_DATA ,
00057         RAMPART_ERROR_IN_SIGNATURE ,
00058         RAMPART_ERROR_MSG_REPLAYED ,
00059         RAMPART_ERROR_IN_POLICY ,
00060         RAMPART_ERROR_LAST
00061     };
00062       
00063     typedef enum rampart_error_codes rampart_error_codes_t;
00064 
00071 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00072 rampart_error_init();
00073 
00075 #ifdef __cplusplus
00076 }
00077 #endif
00078  
00079 #endif /*RAMPART_ERROR_H*/

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__oxs__token.html0000644000076500007650000031124711202454456023244 0ustar shankarshankar Rampart/C: OMXMLSecurity Tokens

OMXMLSecurity Tokens
[OMXMLSecurity]


Functions

AXIS2_EXTERN axiom_node_t * oxs_token_build_binary_security_token_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *id, axis2_char_t *encoding_type, axis2_char_t *value_type, axis2_char_t *data)
AXIS2_EXTERN axiom_node_t * oxs_token_build_c14n_method_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *algorithm)
AXIS2_EXTERN axis2_char_t * oxs_token_get_c14n_method (const axutil_env_t *env, axiom_node_t *c14n_mtd_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_cipher_data_element (const axutil_env_t *env, axiom_node_t *parent)
AXIS2_EXTERN axis2_char_t * oxs_token_get_cipher_value_from_cipher_data (const axutil_env_t *env, axiom_node_t *cd_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_cipher_value_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *cipher_val)
AXIS2_EXTERN axis2_char_t * oxs_token_get_cipher_value (const axutil_env_t *env, axiom_node_t *cv_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_data_reference_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *data_ref)
AXIS2_EXTERN axis2_char_t * oxs_token_get_data_reference (const axutil_env_t *env, axiom_node_t *data_ref_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_digest_method_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *algorithm)
AXIS2_EXTERN axis2_char_t * oxs_token_get_digest_method (const axutil_env_t *env, axiom_node_t *enc_mtd_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_digest_value_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *digest_val)
AXIS2_EXTERN axis2_char_t * oxs_token_get_digest_value (const axutil_env_t *env, axiom_node_t *sv_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_ds_reference_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *id, axis2_char_t *uri, axis2_char_t *type)
AXIS2_EXTERN axis2_char_t * oxs_token_get_ds_reference (const axutil_env_t *env, axiom_node_t *ref_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_embedded_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *id)
AXIS2_EXTERN axis2_char_t * oxs_token_get_embedded_id (const axutil_env_t *env, axiom_node_t *embedded_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_encrypted_data_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *type_attribute, axis2_char_t *id)
AXIS2_EXTERN axiom_node_t * oxs_token_build_encrypted_key_element (const axutil_env_t *env, axiom_node_t *parent)
AXIS2_EXTERN axiom_node_t * oxs_token_get_encrypted_key_node (const axutil_env_t *env, axiom_node_t *parent)
AXIS2_EXTERN axiom_node_t * oxs_token_build_encryption_method_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *algorithm)
AXIS2_EXTERN axis2_char_t * oxs_token_get_encryption_method (const axutil_env_t *env, axiom_node_t *enc_mtd_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_key_identifier_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *encoding_type, axis2_char_t *value_type, axis2_char_t *value)
AXIS2_EXTERN axiom_node_t * oxs_token_build_key_info_element (const axutil_env_t *env, axiom_node_t *parent)
AXIS2_EXTERN axiom_node_t * oxs_token_build_key_name_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *key_name_val)
AXIS2_EXTERN axiom_node_t * oxs_token_build_reference_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *ref, axis2_char_t *value_type)
AXIS2_EXTERN axis2_char_t * oxs_token_get_reference (const axutil_env_t *env, axiom_node_t *ref_node)
AXIS2_EXTERN axis2_char_t * oxs_token_get_reference_value_type (const axutil_env_t *env, axiom_node_t *ref_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_reference_list_element (const axutil_env_t *env, axiom_node_t *parent)
AXIS2_EXTERN axiom_node_t * oxs_token_build_data_reference_list (const axutil_env_t *env, axiom_node_t *parent, axutil_array_list_t *id_list)
AXIS2_EXTERN axutil_array_list_t * oxs_token_get_reference_list_data (const axutil_env_t *env, axiom_node_t *ref_list_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_security_token_reference_element (const axutil_env_t *env, axiom_node_t *parent)
AXIS2_EXTERN axiom_node_t * oxs_token_build_signature_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *id)
AXIS2_EXTERN axiom_node_t * oxs_token_build_enc_header_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *id)
AXIS2_EXTERN axiom_node_t * oxs_token_build_signature_method_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *algorithm)
AXIS2_EXTERN axis2_char_t * oxs_token_get_signature_method (const axutil_env_t *env, axiom_node_t *enc_mtd_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_signature_value_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *signature_val)
AXIS2_EXTERN axis2_char_t * oxs_token_get_signature_value (const axutil_env_t *env, axiom_node_t *sv_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_signed_info_element (const axutil_env_t *env, axiom_node_t *parent)
AXIS2_EXTERN axiom_node_t * oxs_token_build_transform_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *algorithm)
AXIS2_EXTERN axis2_char_t * oxs_token_get_transform (const axutil_env_t *env, axiom_node_t *transform_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_transforms_element (const axutil_env_t *env, axiom_node_t *parent)
AXIS2_EXTERN axiom_node_t * oxs_token_build_x509_certificate_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *cert_data)
AXIS2_EXTERN axis2_char_t * oxs_token_get_x509_certificate (const axutil_env_t *env, axiom_node_t *sv_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_x509_data_element (const axutil_env_t *env, axiom_node_t *parent)
AXIS2_EXTERN axiom_node_t * oxs_token_build_issuer_name_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *value)
AXIS2_EXTERN axis2_char_t * oxs_token_get_issuer_name (const axutil_env_t *env, axiom_node_t *issuer_name_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_x509_issuer_serial_element (const axutil_env_t *env, axiom_node_t *parent)
AXIS2_EXTERN axiom_node_t * oxs_token_build_x509_issuer_serial_with_data (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *issuer_name, axis2_char_t *serial_number)
AXIS2_EXTERN axiom_node_t * oxs_token_build_serial_number_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *value)
AXIS2_EXTERN axis2_char_t * oxs_token_get_serial_number (const axutil_env_t *env, axiom_node_t *serial_number_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_signature_confirmation_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *id, axis2_char_t *val)
AXIS2_EXTERN axis2_char_t * oxs_token_get_signature_confirmation_value (const axutil_env_t *env, axiom_node_t *signature_confirmation_node)
AXIS2_EXTERN axis2_char_t * oxs_token_get_signature_confirmation_id (const axutil_env_t *env, axiom_node_t *signature_confirmation_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_derived_key_token_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *id, axis2_char_t *algo, axis2_char_t *wsc_ns_uri)
AXIS2_EXTERN axiom_node_t * oxs_token_build_length_element (const axutil_env_t *env, axiom_node_t *parent, int length, axis2_char_t *wsc_ns_uri)
AXIS2_EXTERN int oxs_token_get_length_value (const axutil_env_t *env, axiom_node_t *length_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_offset_element (const axutil_env_t *env, axiom_node_t *parent, int offset, axis2_char_t *wsc_ns_uri)
AXIS2_EXTERN int oxs_token_get_offset_value (const axutil_env_t *env, axiom_node_t *offset_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_nonce_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *nonce_val, axis2_char_t *wsc_ns_uri)
AXIS2_EXTERN axis2_char_t * oxs_token_get_nonce_value (const axutil_env_t *env, axiom_node_t *nonce_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_label_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *label, axis2_char_t *wsc_ns_uri)
AXIS2_EXTERN axis2_char_t * oxs_token_get_label_value (const axutil_env_t *env, axiom_node_t *label_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_properties_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *properties_val, axis2_char_t *wsc_ns_uri)
AXIS2_EXTERN axis2_char_t * oxs_token_get_properties_value (const axutil_env_t *env, axiom_node_t *properties_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_generation_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *generation_val, axis2_char_t *wsc_ns_uri)
AXIS2_EXTERN axis2_char_t * oxs_token_get_generation_value (const axutil_env_t *env, axiom_node_t *generation_node)

Function Documentation

AXIS2_EXTERN axiom_node_t* oxs_token_build_binary_security_token_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  id,
axis2_char_t *  encoding_type,
axis2_char_t *  value_type,
axis2_char_t *  data 
)

Creates <wsse:BinarySecurityToken> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_c14n_method_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  algorithm 
)

Creates <ds:CanonicalizationMethod> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_cipher_data_element ( const axutil_env_t *  env,
axiom_node_t *  parent 
)

Creates <xenc:CipherData> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_cipher_value_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  cipher_val 
)

Creates <xenc:CipherValue> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_data_reference_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  data_ref 
)

Creates <xenc:DataReference> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_data_reference_list ( const axutil_env_t *  env,
axiom_node_t *  parent,
axutil_array_list_t *  id_list 
)

Creates <xenc:DataReference> elements under <xenc:ReferenceList> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_derived_key_token_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  id,
axis2_char_t *  algo,
axis2_char_t *  wsc_ns_uri 
)

Creates <wsc:DerivedKeyToken> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_digest_method_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  algorithm 
)

Creates <ds:DigestMethod> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_digest_value_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  digest_val 
)

Creates <ds:DigestValue> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_ds_reference_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  id,
axis2_char_t *  uri,
axis2_char_t *  type 
)

Creates <ds:Reference> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_embedded_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  id 
)

Creates <wsse:Embedded> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_enc_header_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  id 
)

Creates <wss11:EncryptedHeader> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_encrypted_data_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  type_attribute,
axis2_char_t *  id 
)

Creates <xenc:EncryptedData> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_encrypted_key_element ( const axutil_env_t *  env,
axiom_node_t *  parent 
)

Creates <xenc:EncryptedKey> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_encryption_method_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  algorithm 
)

Creates <xenc:EncryptionMethod> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_generation_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  generation_val,
axis2_char_t *  wsc_ns_uri 
)

Creates <wsc:Generation> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_issuer_name_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  value 
)

Creates <ds:X509IssuerName> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_key_identifier_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  encoding_type,
axis2_char_t *  value_type,
axis2_char_t *  value 
)

Creates <wsse:KeyIdentifier> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_key_info_element ( const axutil_env_t *  env,
axiom_node_t *  parent 
)

Creates <ds:KeyInfo> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_key_name_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  key_name_val 
)

Creates <ds:KeyName> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_label_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  label,
axis2_char_t *  wsc_ns_uri 
)

Creates <wsc:Label> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_length_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
int  length,
axis2_char_t *  wsc_ns_uri 
)

Creates <wsc:Length> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_nonce_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  nonce_val,
axis2_char_t *  wsc_ns_uri 
)

Creates <wsc:Nonce> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_offset_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
int  offset,
axis2_char_t *  wsc_ns_uri 
)

Creates <wsc:Offset> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_properties_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  properties_val,
axis2_char_t *  wsc_ns_uri 
)

Creates <wsc:Properties> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_reference_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  ref,
axis2_char_t *  value_type 
)

Creates <wsse:Reference> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_reference_list_element ( const axutil_env_t *  env,
axiom_node_t *  parent 
)

Creates <xenc:ReferenceList> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_security_token_reference_element ( const axutil_env_t *  env,
axiom_node_t *  parent 
)

Creates <wsse:SecurityTokenReference> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_serial_number_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  value 
)

Creates <ds:X509SerialNumber> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_signature_confirmation_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  id,
axis2_char_t *  val 
)

Creates <wsse11:SignatureConfirmation> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_signature_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  id 
)

Creates <ds:Signature> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_signature_method_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  algorithm 
)

Creates <ds:SignatureMethod> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_signature_value_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  signature_val 
)

Creates <ds:SignatureValue> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_signed_info_element ( const axutil_env_t *  env,
axiom_node_t *  parent 
)

Creates <ds:SignedInfo> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_transform_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  algorithm 
)

Creates <ds:Transform> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_transforms_element ( const axutil_env_t *  env,
axiom_node_t *  parent 
)

Creates <ds:Transforms> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_x509_certificate_element ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  cert_data 
)

Creates <ds:X509Certificate> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_x509_data_element ( const axutil_env_t *  env,
axiom_node_t *  parent 
)

Creates <ds:X509Data> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_x509_issuer_serial_element ( const axutil_env_t *  env,
axiom_node_t *  parent 
)

Creates <ds:X509IssuerSerial> element

AXIS2_EXTERN axiom_node_t* oxs_token_build_x509_issuer_serial_with_data ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  issuer_name,
axis2_char_t *  serial_number 
)

Creates <ds:X509IssuerSerial> element with issuer name and serial number

AXIS2_EXTERN axis2_char_t* oxs_token_get_c14n_method ( const axutil_env_t *  env,
axiom_node_t *  c14n_mtd_node 
)

Gets algorithm from <ds:CanonicalizationMethod> element

AXIS2_EXTERN axis2_char_t* oxs_token_get_cipher_value ( const axutil_env_t *  env,
axiom_node_t *  cv_node 
)

Gets value from <xenc:CipherValue> element

AXIS2_EXTERN axis2_char_t* oxs_token_get_cipher_value_from_cipher_data ( const axutil_env_t *  env,
axiom_node_t *  cd_node 
)

Gets cipher value from <xenc:CipherData> element

AXIS2_EXTERN axis2_char_t* oxs_token_get_data_reference ( const axutil_env_t *  env,
axiom_node_t *  data_ref_node 
)

Gets URI reference from <xenc:DataReference> element

AXIS2_EXTERN axis2_char_t* oxs_token_get_digest_method ( const axutil_env_t *  env,
axiom_node_t *  enc_mtd_node 
)

Gets the algorithm from <ds:DigestMethod> element

AXIS2_EXTERN axis2_char_t* oxs_token_get_digest_value ( const axutil_env_t *  env,
axiom_node_t *  sv_node 
)

Gets the value from <ds:DigestValue> element

AXIS2_EXTERN axis2_char_t* oxs_token_get_ds_reference ( const axutil_env_t *  env,
axiom_node_t *  ref_node 
)

Gets URI reference from <ds:Reference> element

AXIS2_EXTERN axis2_char_t* oxs_token_get_embedded_id ( const axutil_env_t *  env,
axiom_node_t *  embedded_node 
)

Gets id from <wsse:Embedded> element

AXIS2_EXTERN axis2_char_t* oxs_token_get_encryption_method ( const axutil_env_t *  env,
axiom_node_t *  enc_mtd_node 
)

Gets algorithm from <xenc:EncryptionMethod> element

AXIS2_EXTERN axis2_char_t* oxs_token_get_generation_value ( const axutil_env_t *  env,
axiom_node_t *  generation_node 
)

Gets value from <wsc:Generation> element

AXIS2_EXTERN axis2_char_t* oxs_token_get_issuer_name ( const axutil_env_t *  env,
axiom_node_t *  issuer_name_node 
)

Gets issuer name from <ds:X509IssuerName> element

AXIS2_EXTERN axis2_char_t* oxs_token_get_label_value ( const axutil_env_t *  env,
axiom_node_t *  label_node 
)

Gets value from <wsc:Label> element

AXIS2_EXTERN int oxs_token_get_length_value ( const axutil_env_t *  env,
axiom_node_t *  length_node 
)

Gets value from <wsc:Length> element

AXIS2_EXTERN axis2_char_t* oxs_token_get_nonce_value ( const axutil_env_t *  env,
axiom_node_t *  nonce_node 
)

Gets value from <wsc:Nonce> element

AXIS2_EXTERN int oxs_token_get_offset_value ( const axutil_env_t *  env,
axiom_node_t *  offset_node 
)

Gets value from <wsc:Offset> element

AXIS2_EXTERN axis2_char_t* oxs_token_get_properties_value ( const axutil_env_t *  env,
axiom_node_t *  properties_node 
)

Gets value from <wsc:Properties> element

AXIS2_EXTERN axis2_char_t* oxs_token_get_reference ( const axutil_env_t *  env,
axiom_node_t *  ref_node 
)

Gets URI reference from <wsse:Reference> element

AXIS2_EXTERN axutil_array_list_t* oxs_token_get_reference_list_data ( const axutil_env_t *  env,
axiom_node_t *  ref_list_node 
)

Gets URI references from <xenc:DataReference> elements under <xenc:ReferenceList> element

AXIS2_EXTERN axis2_char_t* oxs_token_get_reference_value_type ( const axutil_env_t *  env,
axiom_node_t *  ref_node 
)

Gets value type from <wsse:Reference> element

AXIS2_EXTERN axis2_char_t* oxs_token_get_serial_number ( const axutil_env_t *  env,
axiom_node_t *  serial_number_node 
)

Gets serial number from <ds:X509SerialNumber> element

AXIS2_EXTERN axis2_char_t* oxs_token_get_signature_confirmation_id ( const axutil_env_t *  env,
axiom_node_t *  signature_confirmation_node 
)

Gets id from <wsse11:SignatureConfirmation> element

AXIS2_EXTERN axis2_char_t* oxs_token_get_signature_confirmation_value ( const axutil_env_t *  env,
axiom_node_t *  signature_confirmation_node 
)

Gets value from <wsse11:SignatureConfirmation> element

AXIS2_EXTERN axis2_char_t* oxs_token_get_signature_method ( const axutil_env_t *  env,
axiom_node_t *  enc_mtd_node 
)

Gets algorithm from <ds:SignatureMethod> element

AXIS2_EXTERN axis2_char_t* oxs_token_get_signature_value ( const axutil_env_t *  env,
axiom_node_t *  sv_node 
)

Gets signature value from <ds:SignatureValue> element

AXIS2_EXTERN axis2_char_t* oxs_token_get_transform ( const axutil_env_t *  env,
axiom_node_t *  transform_node 
)

Gets algorithm from <ds:Transform> element

AXIS2_EXTERN axis2_char_t* oxs_token_get_x509_certificate ( const axutil_env_t *  env,
axiom_node_t *  sv_node 
)

Gets data from <ds:X509Certificate> element


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/rampart__issued__token_8h-source.html0000644000076500007650000001577511202454455026144 0ustar shankarshankar Rampart/C: rampart_issued_token.h Source File

rampart_issued_token.h

00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  */
00016 
00017 #ifndef RAMPART_ISSUED_TOKEN_H
00018 #define RAMPART_ISSUED_TOKEN_H
00019 
00020 #include <rp_property.h>
00021 #include <rp_includes.h>
00022 #include <rp_secpolicy.h>
00023 #include <axutil_property.h>
00024 #include <axis2_key_type.h>
00025 #include <axis2_msg_ctx.h>
00026 #include <axutil_array_list.h>
00027 #include <axiom.h>
00028 
00029 #ifdef __cplusplus
00030 extern "C"
00031 {
00032 #endif
00033 
00034         typedef struct rampart_issued_token_t rampart_issued_token_t;
00035 
00036         typedef rampart_issued_token_t *(AXIS2_CALL * issued_token_callback_func)(
00037                 const axutil_env_t *env,
00038                 rp_property_t *issued_token,
00039         void *ctx);
00048         AXIS2_EXTERN rampart_issued_token_t * AXIS2_CALL
00049         rampart_issued_token_create(
00050                 const axutil_env_t *env);
00051 
00060         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00061         rampart_issued_token_free(
00062                 rampart_issued_token_t *token, 
00063                 const axutil_env_t *env);
00064 
00075         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00076         rampart_issued_token_set_token(
00077                 rampart_issued_token_t *issued_token, 
00078                 const axutil_env_t *env, void *token, 
00079                 rp_property_type_t token_type);
00088         AXIS2_EXTERN rp_property_type_t AXIS2_CALL
00089         rampart_issued_token_get_token_type(
00090                 rampart_issued_token_t *token, 
00091                 const axutil_env_t *env);
00092 
00101         AXIS2_EXTERN void * AXIS2_CALL
00102         rampart_issued_token_get_token(
00103                 rampart_issued_token_t *token, 
00104                 const axutil_env_t *env);
00105 
00106 #ifdef __cplusplus
00107 }
00108 #endif
00109 
00110 #endif
00111 

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__oxs__error.html0000644000076500007650000002342311202454456023251 0ustar shankarshankar Rampart/C: Error

Error
[OMXMLSecurity]


Classes

struct  _oxs_error_description

Defines

#define FUNCTION_NAME   __FUNCTION__
#define LINE_NUMBER   __LINE__
#define FILE_NAME   __FILE__
#define OXS_ERROR_LOCATION   FILE_NAME,LINE_NUMBER,FUNCTION_NAME
#define OXS_ERROR_DEFAULT   0
#define OXS_ERROR_ENCRYPT_FAILED   1
#define OXS_ERROR_DECRYPT_FAILED   2
#define OXS_ERROR_INVALID_DATA   3
#define OXS_ERROR_INVALID_SIZE   4
#define OXS_ERROR_INVALID_FORMAT   5
#define OXS_ERROR_ELEMENT_FAILED   6
#define OXS_ERROR_UNSUPPORTED_ALGO   7
#define OXS_ERROR_CREATION_FAILED   8
#define OXS_ERROR_INITIALIZATION_FAILED   9
#define OXS_ERROR_DATA_CONV_FAILED   10
#define OXS_ERROR_OPENSSL_FUNC_FAILED   11
#define OXS_ERROR_TRANSFORM_FAILED   12
#define OXS_ERROR_SIGN_FAILED   13
#define OXS_ERROR_SIG_VERIFICATION_FAILED   14
#define OXS_ERROR_KEY_DERIVATION_FAILED   15

Typedefs

typedef struct
_oxs_error_description 
oxs_error_description
typedef struct
_oxs_error_description
oxs_error_description_ptr

Variables

const char * _oxs_error_description::message

Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/globals_0x74.html0000644000076500007650000002036511202454457021725 0ustar shankarshankar Rampart/C: Class Members
Here is a list of all documented file members with links to the documentation:

- t -


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/oxs__xml__signature_8h-source.html0000644000076500007650000002006111202454455025454 0ustar shankarshankar Rampart/C: oxs_xml_signature.h Source File

oxs_xml_signature.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef OXS_XML_SIGNATURE_H
00019 #define OXS_XML_SIGNATURE_H
00020 
00021 
00031 #include <axis2_defines.h>
00032 #include <oxs_ctx.h>
00033 #include <axutil_env.h>
00034 #include <axiom_node.h>
00035 #include <axiom_element.h>
00036 #include <axutil_qname.h>
00037 #include <oxs_sign_ctx.h>
00038 #include <oxs_sign_part.h>
00039 
00040 #ifdef __cplusplus
00041 extern "C"
00042 {
00043 #endif
00044 
00052     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00053     oxs_xml_sig_sign(const axutil_env_t *env,
00054                      oxs_sign_ctx_t *sign_ctx,
00055                      axiom_node_t *parent,
00056                      axiom_node_t **sig_node);
00057 
00066     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00067     oxs_xml_sig_verify(const axutil_env_t *env,
00068                        oxs_sign_ctx_t *sign_ctx,
00069                        axiom_node_t *signature_node,
00070                        axiom_node_t *scope_node);
00071 
00079     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00080     oxs_xml_sig_verify_sign_part(const axutil_env_t *env,
00081                                  oxs_sign_part_t *sign_part);
00082 
00089     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00090     oxs_xml_sig_verify_digests(const axutil_env_t *env,
00091                                oxs_sign_ctx_t *sign_ctx);
00092 
00093 
00102     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00103     oxs_xml_sig_process_ref_node(const axutil_env_t *env,
00104                                  oxs_sign_part_t *sign_part,
00105                                  axiom_node_t *ref_node,
00106                                  axiom_node_t *scope_node);
00107 
00116     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00117     oxs_xml_sig_process_signature_node(const axutil_env_t *env,
00118                                        oxs_sign_ctx_t *sign_ctx,
00119                                        axiom_node_t *signature_node,
00120                                        axiom_node_t *scope_node);
00122 #ifdef __cplusplus
00123 }
00124 #endif
00125 
00126 #endif                          /* OXS_XML_SIGNATURE_H */

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/rampart__username__token_8h.html0000644000076500007650000000563111202454456025160 0ustar shankarshankar Rampart/C: rampart_username_token.h File Reference

rampart_username_token.h File Reference

The Usernametoken. More...

#include <axutil_env.h>
#include <rampart_context.h>

Go to the source code of this file.

Functions

axis2_status_t rampart_username_token_build (const axutil_env_t *env, rampart_context_t *rampart_context, axiom_node_t *sec_node, axiom_namespace_t *sec_ns_obj)
axis2_status_t rampart_username_token_validate (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axiom_node_t *ut_node, rampart_context_t *rampart_context)


Detailed Description

The Usernametoken.


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/rampart__signature_8h-source.html0000644000076500007650000001356411202454455025304 0ustar shankarshankar Rampart/C: rampart_signature.h Source File

rampart_signature.h

Go to the documentation of this file.
00001 /*
00002  *   Copyright 2003-2004 The Apache Software Foundation.
00003  *
00004  *   Licensed under the Apache License, Version 2.0 (the "License");
00005  *   you may not use this file except in compliance with the License.
00006  *   You may obtain a copy of the License at
00007  *
00008  *       http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  *   Unless required by applicable law or agreed to in writing, software
00011  *   distributed under the License is distributed on an "AS IS" BASIS,
00012  *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  *   See the License for the specific language governing permissions and
00014  *   limitations under the License.
00015  */
00016 
00017 #include <axutil_utils_defines.h>
00018 #include <axis2_defines.h>
00019 #include <axutil_env.h>
00020 #include <axiom_soap.h>
00021 #include <axis2_msg_ctx.h>
00022 #include <rampart_context.h>
00034 #ifndef RAMPART_SIGNATURE_H
00035 #define RAMPART_SIGNATURE_H
00036 
00037 #ifdef __cplusplus
00038 extern "C" {
00039 #endif
00040 
00048     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00049     rampart_sig_confirm_signature(const axutil_env_t *env,
00050                              axis2_msg_ctx_t *msg_ctx,
00051                              rampart_context_t *rampart_context,
00052                              axiom_node_t *sec_node);
00053                 
00063     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00064     rampart_sig_sign_message(const axutil_env_t *env,
00065                              axis2_msg_ctx_t *msg_ctx,
00066                              rampart_context_t *rampart_context,
00067                              axiom_soap_envelope_t *soap_envelope,
00068                              axiom_node_t *sec_node, 
00069                              axutil_array_list_t *sign_parts_list);
00070 
00071 
00072 
00073     /* @} */
00074 #ifdef __cplusplus
00075 }
00076 #endif
00077 
00078 #endif    /* !RAMPART_SIGNATURE_H */

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__sct__provider.html0000644000076500007650000010302311202454457023726 0ustar shankarshankar Rampart/C: Security Context Token provider

Security Context Token provider
[Rampart Utilities]


Classes

struct  rampart_sct_provider_ops
struct  rampart_sct_provider

Defines

#define RAMPART_SCT_PROVIDER_FREE(sct_provider, env)   ((sct_provider)->ops->free(sct_provider, env))

Typedefs

typedef struct
rampart_sct_provider_ops 
rampart_sct_provider_ops_t
typedef struct rampart_sct_provider rampart_sct_provider_t

Functions

AXIS2_EXTERN oxs_buffer_tsct_provider_get_secret (const axutil_env_t *env, rp_property_t *token, axis2_bool_t is_encryption, rampart_context_t *rampart_context, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN oxs_buffer_tsct_provider_get_secret_using_id (const axutil_env_t *env, axis2_char_t *sct_id, rampart_context_t *rampart_context, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN axiom_node_t * sct_provider_get_token (const axutil_env_t *env, rp_property_t *token, axis2_bool_t is_encryption, rampart_context_t *rampart_context, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN axiom_node_t * sct_provider_get_attached_reference (const axutil_env_t *env, rp_property_t *token, axis2_bool_t is_encryption, rampart_context_t *rampart_context, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN axiom_node_t * sct_provider_get_unattached_reference (const axutil_env_t *env, rp_property_t *token, axis2_bool_t is_encryption, rampart_context_t *rampart_context, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN axis2_status_t sct_provider_validate_security_context_token (const axutil_env_t *env, axiom_node_t *sct_node, rampart_context_t *rampart_context, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN void * sct_provider_obtain_sct_default (const axutil_env_t *env, axis2_bool_t is_encryption, axis2_msg_ctx_t *msg_ctx, axis2_char_t *sct_id, int sct_id_type, void *user_params)
AXIS2_EXTERN axis2_status_t sct_provider_store_sct_default (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axis2_char_t *sct_global_id, axis2_char_t *sct_local_id, void *sct, void *user_params)
AXIS2_EXTERN axis2_status_t sct_provider_delete_sct_default (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axis2_char_t *sct_id, int sct_id_type, void *user_params)
AXIS2_EXTERN axis2_status_t sct_provider_validate_sct_default (const axutil_env_t *env, axiom_node_t *sct_node, axis2_msg_ctx_t *msg_ctx, void *user_params)

Function Documentation

AXIS2_EXTERN axis2_status_t sct_provider_delete_sct_default ( const axutil_env_t *  env,
axis2_msg_ctx_t *  msg_ctx,
axis2_char_t *  sct_id,
int  sct_id_type,
void *  user_params 
)

Default implementation of delete sct function. If neither sct_provider nor user defined store function is given, this function will be used. (delete_security_context_token_fn)

Parameters:
env pointer to environment struct
msg_ctx pointer to message context structure
sct_id identifier of security context token. Should not be NULL.
sct_id_type type of sct id. can be global or local.
user_params parameter provided by user (not used in this method)
Returns:
AXIS2_SUCCESS if deleted. AXIS2_FAILURE otherwise.

AXIS2_EXTERN axiom_node_t* sct_provider_get_attached_reference ( const axutil_env_t *  env,
rp_property_t *  token,
axis2_bool_t  is_encryption,
rampart_context_t *  rampart_context,
axis2_msg_ctx_t *  msg_ctx 
)

Finds security context token and gets the xml representation of key reference. This reference is used when security context token is included in the message

Parameters:
env Pointer to environment struct
token rampart policy property of the token
is_encryption boolean showing whether the token is needed for encryption or signature
rampart_context pointer to rampart context structure
msg_ctx pointer to message context structure
Returns:
shared secret of the security context token. returned buffer should NOT be freed

AXIS2_EXTERN oxs_buffer_t* sct_provider_get_secret ( const axutil_env_t *  env,
rp_property_t *  token,
axis2_bool_t  is_encryption,
rampart_context_t *  rampart_context,
axis2_msg_ctx_t *  msg_ctx 
)

Finds security context token and gets shared secret. returned buffer should NOT be cleared by the caller

Parameters:
env Pointer to environment struct
token rampart policy property of the token
is_encryption boolean showing whether the token is needed for encryption or signature
rampart_context pointer to rampart context structure
msg_ctx pointer to message context structure
Returns:
shared secret of the security context token. returned buffer should NOT be freed

AXIS2_EXTERN oxs_buffer_t* sct_provider_get_secret_using_id ( const axutil_env_t *  env,
axis2_char_t *  sct_id,
rampart_context_t *  rampart_context,
axis2_msg_ctx_t *  msg_ctx 
)

Finds security context token and gets shared secret. returned buffer should NOT be cleared by the caller

Parameters:
env Pointer to environment struct
sct_id id of security context token
rampart_context pointer to rampart context structure
msg_ctx pointer to message context structure
Returns:
shared secret of the security context token. returned buffer should NOT be freed

AXIS2_EXTERN axiom_node_t* sct_provider_get_token ( const axutil_env_t *  env,
rp_property_t *  token,
axis2_bool_t  is_encryption,
rampart_context_t *  rampart_context,
axis2_msg_ctx_t *  msg_ctx 
)

Finds security context token and gets the xml representation of token

Parameters:
env Pointer to environment struct
token rampart policy property of the token
is_encryption boolean showing whether the token is needed for encryption or signature
rampart_context pointer to rampart context structure
msg_ctx pointer to message context structure
Returns:
shared secret of the security context token. returned buffer should NOT be freed

AXIS2_EXTERN axiom_node_t* sct_provider_get_unattached_reference ( const axutil_env_t *  env,
rp_property_t *  token,
axis2_bool_t  is_encryption,
rampart_context_t *  rampart_context,
axis2_msg_ctx_t *  msg_ctx 
)

Finds security context token and gets the xml representation of key reference. This reference is used when security context token is NOT included in the message

Parameters:
env Pointer to environment struct
token rampart policy property of the token
is_encryption boolean showing whether the token is needed for encryption or signature
rampart_context pointer to rampart context structure
msg_ctx pointer to message context structure
Returns:
shared secret of the security context token. returned buffer should NOT be freed

AXIS2_EXTERN void* sct_provider_obtain_sct_default ( const axutil_env_t *  env,
axis2_bool_t  is_encryption,
axis2_msg_ctx_t *  msg_ctx,
axis2_char_t *  sct_id,
int  sct_id_type,
void *  user_params 
)

Default implementation of obtain sct function. If neither sct_provider nor user defined obtain function is given, this function will be used. (obtain_security_context_token_fn)

Parameters:
env pointer to environment struct
is_encryption boolean denotes sct is needed for encryption or signature
msg_ctx pointer to message context structure
sct_id identifier of security context token. Can be NULL
sct_id_type type of sct id. can be global, local or unknown
user_params parameter provided by user (not used in this method) return security context token if found. NULL otherwise.

AXIS2_EXTERN axis2_status_t sct_provider_store_sct_default ( const axutil_env_t *  env,
axis2_msg_ctx_t *  msg_ctx,
axis2_char_t *  sct_global_id,
axis2_char_t *  sct_local_id,
void *  sct,
void *  user_params 
)

Default implementation of store sct function. If neither sct_provider nor user defined store function is given, this function will be used. (store_security_context_token_fn)

Parameters:
env pointer to environment struct
msg_ctx pointer to message context structure
sct_global_id global identifier of security context token. Can be NULL
sct_local_id local identifier of security context token. Can be NULL
sct security context token to be stored
user_params parameter provided by user (not used in this method) return AXIS2_SUCCESS if stored. AXIS2_FAILURE otherwise.

AXIS2_EXTERN axis2_status_t sct_provider_validate_sct_default ( const axutil_env_t *  env,
axiom_node_t *  sct_node,
axis2_msg_ctx_t *  msg_ctx,
void *  user_params 
)

Default implementation of validate sct function. If neither sct_provider nor user defined store function is given, this function will be used. (validate_security_context_token_fn)

Parameters:
env pointer to environment struct
sct_node axiom representation of security context token
user_params parameter provided by user (not used in this method)
Returns:
AXIS2_SUCCESS if valid. AXIS2_FAILURE otherwise.

AXIS2_EXTERN axis2_status_t sct_provider_validate_security_context_token ( const axutil_env_t *  env,
axiom_node_t *  sct_node,
rampart_context_t *  rampart_context,
axis2_msg_ctx_t *  msg_ctx 
)

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.

Parameters:
env Pointer to environment struct
sct_node axiom node representation of security context token.
rampart_context pointer to rampart context structure
msg_ctx pointer to message context structure
Returns:
AXIS2_TRUE is sct is valid. AXIS2_FALSE otherwise.


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/rampart__token__builder_8h-source.html0000644000076500007650000002243611202454455026266 0ustar shankarshankar Rampart/C: rampart_token_builder.h Source File

rampart_token_builder.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #include <axutil_utils_defines.h>
00019 #include <axis2_defines.h>
00020 #include <axutil_env.h>
00021 #include <oxs_x509_cert.h>
00033 #ifndef RAMPART_TOKEN_BUILDER_H
00034 #define RAMPART_TOKEN_BUILDER_H
00035 
00036 #ifdef __cplusplus
00037 extern "C" {
00038 #endif
00039 
00040     typedef enum {
00041         RTBP_UNKNOWN = 0,
00042         RTBP_EMBEDDED,
00043         RTBP_KEY_IDENTIFIER,
00044         RTBP_X509DATA_ISSUER_SERIAL,
00045         RTBP_X509DATA_X509CERTIFICATE,
00046         RTBP_THUMBPRINT
00047     } rampart_token_build_pattern_t;
00048 
00060     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00061     rampart_token_build_security_token_reference(
00062         const axutil_env_t *env,
00063         axiom_node_t *parent,
00064         oxs_x509_cert_t *cert,
00065         rampart_token_build_pattern_t pattern);
00066 
00079     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00080     rampart_token_build_embedded(
00081         const axutil_env_t *env,
00082         axiom_node_t *parent,
00083         oxs_x509_cert_t *cert);
00084 
00095     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00096     rampart_token_build_key_identifier(
00097         const axutil_env_t *env,
00098         axiom_node_t *parent,
00099         oxs_x509_cert_t *cert);
00100     
00101     /*
00102      * Build an X509Certificate token with data available in the certificate.
00103      *        <SecurityTokenReference>
00104      *          <ds:X509Data>
00105      *              <ds:X509Certificate>
00106      *                  MIICzjCCAjegAwIBAgIJANyD+jwekxGuMA......
00107      *              </ds:X509Certificate>
00108      *          <ds:X509Data>
00109      *        </SecurityTokenReference>
00110      * @param env pointer to environment struct
00111      * @param parent The parent node
00112      * @param cert The X509 certificate
00113      * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
00114      */
00115     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00116     rampart_token_build_x509_data_x509_certificate(
00117         const axutil_env_t *env,
00118         axiom_node_t *parent,
00119         oxs_x509_cert_t *cert);
00120 
00136     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00137     rampart_token_build_x509_data_issuer_serial(
00138         const axutil_env_t *env,
00139         axiom_node_t *parent,
00140         oxs_x509_cert_t *cert);
00141 
00154     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00155     rampart_token_build_thumbprint_reference(
00156         const axutil_env_t *env,
00157         axiom_node_t *parent,
00158         oxs_x509_cert_t *cert);
00159 
00160 
00161     /* @} */
00162 #ifdef __cplusplus
00163 }
00164 #endif
00165 
00166 #endif    /* !RAMPART_TOKEN_BUILDER_H */
00167 
00168 

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/openssl__sign_8h-source.html0000644000076500007650000001407011202454454024250 0ustar shankarshankar Rampart/C: openssl_sign.h Source File

openssl_sign.h

Go to the documentation of this file.
00001 /*
00002  *   Copyright 2003-2004 The Apache Software Foundation.
00003  *
00004  *   Licensed under the Apache License, Version 2.0 (the "License");
00005  *   you may not use this file except in compliance with the License.
00006  *   You may obtain a copy of the License at
00007  *
00008  *       http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  *   Unless required by applicable law or agreed to in writing, software
00011  *   distributed under the License is distributed on an "AS IS" BASIS,
00012  *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  *   See the License for the specific language governing permissions and
00014  *   limitations under the License.
00015  */
00016 
00017 #include <openssl/evp.h>
00018 #include <openssl_cipher_ctx.h>
00019 #include <openssl_constants.h>
00020 #include <oxs_sign_ctx.h>
00021 #include <axis2_util.h>
00022 
00027 #ifndef OPENSSL_SIGN_H
00028 #define OPENSSL_SIGN_H
00029 
00030 #ifdef __cplusplus
00031 extern "C" {
00032 #endif
00033 
00042     AXIS2_EXTERN int AXIS2_CALL
00043     openssl_sig_sign(const axutil_env_t *env,
00044                      openssl_pkey_t *prvkey,
00045                      oxs_buffer_t *input_buf,
00046                      oxs_buffer_t *output_buf);
00052     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00053     openssl_sig_verify(const axutil_env_t *env,
00054                        openssl_pkey_t *pubkey,
00055                        oxs_buffer_t *input_buf,
00056                        oxs_buffer_t *sig_buf);
00058 #ifdef __cplusplus
00059 }
00060 #endif
00061 
00062 #endif    /* OPENSSL_SIGN_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/globals_func_0x74.html0000644000076500007650000002030111202454457022726 0ustar shankarshankar Rampart/C: Class Members
 

- t -


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/modules.html0000644000076500007650000001342111202454457021163 0ustar shankarshankar Rampart/C: Module Index
Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/openssl__digest_8h-source.html0000644000076500007650000001176711202454454024601 0ustar shankarshankar Rampart/C: openssl_digest.h Source File

openssl_digest.h

Go to the documentation of this file.
00001 /*
00002  *   Copyright 2003-2004 The Apache Software Foundation.
00003  *
00004  *   Licensed under the Apache License, Version 2.0 (the "License");
00005  *   you may not use this file except in compliance with the License.
00006  *   You may obtain a copy of the License at
00007  *
00008  *       http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  *   Unless required by applicable law or agreed to in writing, software
00011  *   distributed under the License is distributed on an "AS IS" BASIS,
00012  *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  *   See the License for the specific language governing permissions and
00014  *   limitations under the License.
00015  */
00016 
00017 #include <openssl/sha.h>
00018 
00019 #include <axutil_utils_defines.h>
00020 #include <axis2_defines.h>
00021 #include <axutil_env.h>
00022 
00027 #ifndef OPENSSL_DIGEST
00028 #define OPENSSL_DIGEST
00029 
00030 #ifdef __cplusplus
00031 extern "C" {
00032 #endif
00033 
00046     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00047     openssl_sha1(const axutil_env_t *env,
00048                  axis2_char_t *input,
00049                  int length);
00050 
00051     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00052     openssl_md5(const axutil_env_t *env,
00053                 axis2_char_t *input,
00054                 int length);
00055     /* @} */
00056 #ifdef __cplusplus
00057 }
00058 #endif
00059 
00060 #endif    /* OPENSSL_DIGEST */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/struct__oxs__error__description.html0000644000076500007650000000553011202454457026203 0ustar shankarshankar Rampart/C: _oxs_error_description Struct Reference

_oxs_error_description Struct Reference
[Error]

#include <oxs_error.h>

List of all members.

Public Attributes

int code
const char * message


Detailed Description

Structure to hold error descriptions
Parameters:
code Error Code
message Error Message

The documentation for this struct was generated from the following file:

Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/rampart__credentials_8h-source.html0000644000076500007650000002017711202454455025576 0ustar shankarshankar Rampart/C: rampart_credentials.h Source File

rampart_credentials.h

Go to the documentation of this file.
00001 /*
00002 * Licensed to the Apache Software Foundation (ASF) under one or more
00003 * contributor license agreements.  See the NOTICE file distributed with
00004 * this work for additional information regarding copyright ownership.
00005 * The ASF licenses this file to You under the Apache License, Version 2.0
00006 * (the "License"); you may not use this file except in compliance with
00007 * the License.  You may obtain a copy of the License at
00008 *
00009 *      http://www.apache.org/licenses/LICENSE-2.0
00010 *
00011 * Unless required by applicable law or agreed to in writing, software
00012 * distributed under the License is distributed on an "AS IS" BASIS,
00013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014 * See the License for the specific language governing permissions and
00015 * limitations under the License.
00016 */
00017 
00018 #ifndef RAMPART_CREDENTIALS_H
00019 #define RAMPART_CREDENTIALS_H
00020 
00021 #include <axis2_defines.h>
00022 #include <axutil_error.h>
00023 #include <axutil_env.h>
00024 #include <axutil_utils.h>
00025 #include <axis2_msg_ctx.h>
00026 #include <axutil_param.h>
00037 #ifdef __cplusplus
00038 extern "C"
00039 {
00040 #endif
00041     enum rampart_credentials_status
00042     {
00043         RAMPART_CREDENTIALS_PW_FOUND = 0,
00044         RAMPART_CREDENTIALS_PW_NOT_FOUND,
00045         RAMPART_CREDENTIALS_USER_FOUND,
00046         RAMPART_CREDENTIALS_USER_NOT_FOUND,
00047         RAMPART_CREDENTIALS_GENERAL_ERROR
00048     };
00049 
00050     typedef enum rampart_credentials_status rampart_credentials_status_t;
00051 
00056     typedef struct rampart_credentials_ops rampart_credentials_ops_t;
00057     typedef struct rampart_credentials rampart_credentials_t;
00058 
00059     struct rampart_credentials_ops
00060     {
00061 
00071         rampart_credentials_status_t (AXIS2_CALL*
00072         rampart_credentials_username_get)(
00073             rampart_credentials_t *credentials,
00074             const axutil_env_t* env,
00075             axis2_msg_ctx_t *msg_ctx,
00076             axis2_char_t **username,
00077             axis2_char_t **password);
00078 
00085         axis2_status_t (AXIS2_CALL*
00086         free)(
00087             rampart_credentials_t *credentials,
00088             const axutil_env_t* env);
00089 
00090     };
00091 
00092     struct rampart_credentials
00093     {
00094         rampart_credentials_ops_t *ops;
00095         axutil_param_t *param;
00096     };
00097 
00098     /*************************** Function macros **********************************/
00099 #define RAMPART_CREDENTIALS_FREE(credentials, env) \
00100       ((credentials)->ops->free (credentials, env))
00101 
00102 #define RAMPART_CREDENTIALS_USERNAME_GET(credentials, env, msg_ctx, username, password) \
00103       ((credentials)->ops->rampart_credentials_username_get( \
00104             credentials, env, msg_ctx, username, password))
00105 
00106 
00107 
00109 #ifdef __cplusplus
00110 }
00111 #endif
00112 
00113 #endif /* RAMPART_CREDENTIALS_H */
00114 

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/rampart__constants_8h.html0000644000076500007650000011130711202454456024014 0ustar shankarshankar Rampart/C: rampart_constants.h File Reference

rampart_constants.h File Reference

Holds constants for rampart. More...

#include <oxs_constants.h>
#include <rampart_error.h>

Go to the source code of this file.

Defines

#define RAMPART_IN_HANDLER   "RampartInHandler"
#define RAMPART_OUT_HANDLER   "RampartOutHandler"
#define RAHAS_IN_HANDLER   "RahasInHandler"
#define RAHAS_OUT_HANDLER   "RahasOutHandler"
#define RAMPART_DEFAULT_KT_ALGO   OXS_DEFAULT_KT_ALGO_HREF
#define RAMPART_STR_DEFAULT   OXS_STR_DEFAULT
#define RAMPART_TIMESTAMP_TOKEN_DEFAULT_TIME_TO_LIVE   300
#define RAMPART_SECURITY   "Security"
#define RAMPART_SECURITY_USERNAMETOKEN   "UsernameToken"
#define RAMPART_SECURITY_USERNAMETOKEN_USERNAME   "Username"
#define RAMPART_SECURITY_USERNAMETOKEN_PASSWORD   "Password"
#define RAMPART_SECURITY_USERNAMETOKEN_CREATED   "Created"
#define RAMPART_SECURITY_USERNAMETOKEN_NONCE   "Nonce"
#define RAMPART_SECURITY_USERNAMETOKEN_PASSWORD_ATTR_TYPE   "Type"
#define RAMPART_SECURITY_TIMESTAMP   "Timestamp"
#define RAMPART_SECURITY_TIMESTAMP_CREATED   "Created"
#define RAMPART_SECURITY_TIMESTAMP_EXPIRES   "Expires"
#define RAMPART_RAMPART   "rampart"
#define RAMPART_WSSE   "wsse"
#define RAMPART_WSSE_XMLNS   "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
#define RAMPART_WSU   "wsu"
#define RAMPART_WSU_XMLNS   "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
#define RAMPART_PASSWORD_DIGEST_URI   "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest"
#define RAMPART_PASSWORD_TEXT_URI   "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText"
#define RAMPART_INFLOW_SECURITY_POLICY   "InflowSecurityPolicy"
#define RAMPART_OUTFLOW_SECURITY_POLICY   "OutflowSecurityPolicy"
#define INFLOW_RAMPART_CONTEXT   "InflowRampartContext"
#define OUTFLOW_RAMPART_CONTEXT   "OutflowRampartContext"
#define RAMPART_CONTEXT   "RampartContext"
#define IN_MESSAGE_SECURITY   "InMessageSecurity"
#define OUT_MESSAGE_SECURITY   "OutMessageSEcurity"
#define RAMPART_PASSWORD_TEXT   "plainText"
#define RAMPART_PASSWORD_DIGEST   "Digest"
#define RAMPART_CONFIGURATION   "RampartConfiguration"
#define RAMPART_CLIENT_CONFIGURATION   "RampartClientConfiguration"
#define RAMPART_FAULT_UNSUPPORTED_SECURITY_TOKEN   "wsse:UnsupportedSecurityToken"
#define RAMPART_FAULT_UNSUPPORTED_ALGORITHM   "wsse:UnsupportedAlgorithm"
#define RAMPART_FAULT_INVALID_SECURITY   "wsse:InvalidSecurity"
#define RAMPART_FAULT_INVALID_SECURITY_TOKEN   "wsse:InvalidSecurityToken"
#define RAMPART_FAULT_FAILED_AUTHENTICATION   "wsse:FailedAuthentication"
#define RAMPART_FAULT_FAILED_CHECK   "wsse:FailedCheck"
#define RAMPART_FAULT_SECURITY_TOKEN_UNAVAILABLE   "wsse:SecurityTokenUnavailable"
#define RAMPART_FAULT_TRUST_REQUEST_FAILED   "wst:RequestFailed"
#define RAMPART_FAULT_TRUST_REQUEST_INVALID   "wst:InvalidRequest"
#define RAMPART_FAULT_IN_TIMESTAMP   "wsse:Timestamp"
#define RAMPART_FAULT_IN_USERNAMETOKEN   "wsse:UsernameToken"
#define RAMPART_FAULT_IN_ENCRYPTED_KEY   "xenc:EncryptedKey"
#define RAMPART_FAULT_IN_ENCRYPTED_DATA   "xenc:EncryptedData"
#define RAMPART_FAULT_IN_SIGNATURE   "ds:Signature"
#define RAMPART_FAULT_MSG_REPLAYED   "rampc:Message-Replayed"
#define RAMPART_FAULT_IN_POLICY   "rampc:Policy"
#define RAMPART_FAULT_ELEMENT_LOCAL_NAME   "ProblemSecurityHeader"
#define RAMPART_ACTION_PASSWORD   "password"
#define RAMPART_ACTION_ENC_USER_PASSWORD   "encUserPassword"
#define RAMPART_CALLBACK_SPECIFIC_PROPERTY   "callbackSpecificProperty"
#define RAMPART_SECURITY_PROCESSED_RESULTS   "SecurityProcessedResults"
#define RAMPART_SPR_UT_USERNAME   "SPR_UT_username"
#define RAMPART_SPR_UT_CREATED   "SPR_UT_created"
#define RAMPART_SPR_UT_NONCE   "SPR_UT_nonce"
#define RAMPART_SPR_UT_PASSWORD_TYPE   "SPR_UT_passwordType"
#define RAMPART_SPR_TS_CREATED   "SPR_TS_created"
#define RAMPART_SPR_TS_EXPIRES   "SPR_TS_expires"
#define RAMPART_SPR_UT_CHECKED   "SPR_UT_Checked"
#define RAMPART_SPR_TS_CHECKED   "SPR_TS_Checked"
#define RAMPART_SPR_ENC_CHECKED   "SPR_ENC_Checked"
#define RAMPART_SPR_SIG_VALUE   "SPR_Sig_Val"
#define RAMPART_SPR_ENDORSED_VALUE   "SPR_Endorsed_Value"
#define RAMPART_SPR_SIG_VERIFIED   "SPR_Sig_Verified"
#define RAMPART_SPR_SIG_ENCRYPTED   "SPR_Sig_Encrypted"
#define RAMPART_SPR_SIG_CONFIRM_FOUND   "SPR_Sig_Confirmation_Found"
#define RAMPART_SPR_BODY_ENCRYPTED   "SPR_Body_Encrypted"
#define RAMPART_YES   "YES"
#define RAMPART_NO   "NO"
#define RAMPART_STR_DIRECT_REFERENCE   OXS_STR_DIRECT_REFERENCE
#define RAMPART_STR_KEY_IDENTIFIER   OXS_STR_KEY_IDENTIFIER
#define RAMPART_STR_EMBEDDED   OXS_STR_EMBEDDED
#define RAMPART_STR_ISSUER_SERIAL   OXS_STR_ISSUER_SERIAL
#define RAMPART_STR_THUMB_PRINT   OXS_STR_THUMB_PRINT
#define RAMPART_STR_EXTERNAL_URI   OXS_STR_EXTERNAL_URI
#define RAMPART_STR_ENCRYPTED_KEY   OXS_STR_ENCRYPTED_KEY
#define RAMPART_RD_DEF_VALID_DURATION   60
#define RAMPART_RD_DEF_MAX_RCDS   5
#define RAMPART_SCT_ID_TYPE_UNKNOWN   0
#define RAMPART_SCT_ID_TYPE_LOCAL   1
#define RAMPART_SCT_ID_TYPE_GLOBAL   2
#define RAMPART_USERNAME_TOKEN_NONCE_LENGTH   24
#define RAMPART_ENC_TOKEN_ID   "EncryptionTokenID"
#define RAMPART_SIG_TOKEN_ID   "SignatureTokenID"
#define RAMPART_BST_ID_PREFIX   "BST-"
#define RAMPART_EMBED_TOKEN_ID   "ID"


Detailed Description

Holds constants for rampart.


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__rampart__callback.html0000644000076500007650000000757611202454457024525 0ustar shankarshankar Rampart/C: Rampart Callback Module

Rampart Callback Module


Classes

struct  rampart_callback_ops
struct  rampart_callback

Defines

#define RAMPART_CALLBACK_FREE(callback, env)   ((callback)->ops->free (callback, env))
#define RAMPART_CALLBACK_CALLBACK_PASSWORD(callback, env, username, param)   ((callback)->ops->callback_password(callback, env, username, param))
#define RAMPART_CALLBACK_CALLBACK_PKCS12_PASSWORD(callback, env, username, param)   ((callback)->ops->callback_pkcs12_password(callback, env, username, param))

Typedefs

typedef struct rampart_callback_ops rampart_callback_ops_t
typedef struct rampart_callback rampart_callback_t

Detailed Description

Struct to get password using callbacks

Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/dir_2ab6243317ac98a7842daf660931c511.html0000644000076500007650000007734411202454457024516 0ustar shankarshankar Rampart/C: /home/shankar/src/release/rampart/include/ Directory Reference

include Directory Reference


Files

file  axis2_key_type.h [code]
 defines the key type
file  openssl_cipher_ctx.h [code]
 The cipher context in which the information regarding a cipher cycle is stored.
file  openssl_cipher_property.h [code]
 The class to store cipher properties such as name, key size, block size etc.
file  openssl_constants.h [code]
 Constants for the openssl wrapper.
file  openssl_crypt.h [code]
 The encryption/decryption methods for OMXMLSecurity.
file  openssl_digest.h [code]
 Digest function implementations. Supports SHA1 and MD5.
file  openssl_hmac.h [code]
 HMAC function implementations. Supports SHA1.
file  openssl_pem.h [code]
 Funcitons related to keys that are in PEM format.
file  openssl_pkcs12.h [code]
 Functions related to keys that are in pkcs12 format.
file  openssl_pkcs12_keystore.h [code]
 Key Store manager for keys that are in pkcs12 format.
file  openssl_pkey.h [code]
 holds either a public key or a private key. The type is determined by the type attribute
file  openssl_rsa.h [code]
 For RSA encryption.
file  openssl_sign.h [code]
 The signature functions in openssl wrapper.
file  openssl_util.h [code]
 General utility routines for openssl related functions.
file  openssl_x509.h [code]
 Extracts information from a X509 certificate.
file  oxs_asym_ctx.h [code]
 Keeps information relavent for asymmetric encryption.
file  oxs_axiom.h [code]
 Utility functions related to AXIOM. A place for common code.
file  oxs_axis2_utils.h [code]
 Utility functions related to Axis2/C.
file  oxs_buffer.h [code]
 The buffer representation in OMXMLSecurity.
file  oxs_c14n.h [code]
 Cannonicalization implementation for OMXMLSecurity.
file  oxs_cipher.h [code]
 Cipher related functions in OMXMLSecurity.
file  oxs_constants.h [code]
 Constants for OMXMLSecurity.
file  oxs_ctx.h [code]
 Keeps configurations for the OMXMLSecurity.
file  oxs_derivation.h [code]
 The Key derivation module for OMXMLSecurity.
file  oxs_encryption.h [code]
 Provides data encryption and decryption functionalities of the OMXMLSec.
file  oxs_error.h [code]
 Represents an Error occured during the OMXMLSecurity execution.
file  oxs_iv.h [code]
 Initial Vector related functionalities.
file  oxs_key.h [code]
 represents a Key in OMXMLSecurity
file  oxs_key_mgr.h [code]
 the Key Manager responsible for loading keys for OMXMLSecurity
file  oxs_saml_token.h [code]
file  oxs_sign_ctx.h [code]
 Keeps information relavent for a single node of signing.
file  oxs_sign_part.h [code]
 Keeps information relavent for a single node of signing.
file  oxs_signature.h [code]
 Does the XML Signature for OMXMLSecurity.
file  oxs_tokens.h [code]
 includes all tokens of OMXMLSecurity.
file  oxs_transform.h [code]
 The class representing a single step of transformation. For example a Cannonicalization.
file  oxs_transforms_factory.h [code]
 Produces transforms for OMXMLSecurity.
file  oxs_utility.h [code]
 The utility module for OMXMLSecurity.
file  oxs_x509_cert.h [code]
 the OMXMLSecurity representation of an X509 certificate
file  oxs_xml_encryption.h [code]
 Does the XML encryption for OMXMLSecurity.
file  oxs_xml_key_info_builder.h [code]
 Process elements available under ds:KeyInfo.
file  oxs_xml_key_processor.h [code]
 Process elements available under ds:KeyInfo.
file  oxs_xml_signature.h [code]
 Does the XML Signature for OMXMLSecurity.
file  rahas_mod.h [code]
 Axis2 rahas module interface.
file  rahas_request_processor.h [code]
 Process requests related to secure conversation.
file  rampart_authn_provider.h [code]
 The authentication interface of rampart. Validates a username and password pair.
file  rampart_callback.h [code]
 The callback module for a password.
file  rampart_config.h [code]
 The Rampart Config, in which user configurations are stored.
file  rampart_constants.h [code]
 Holds constants for rampart.
file  rampart_context.h [code]
 The Rampart Context, in which configurations are stored.
file  rampart_credentials.h [code]
 The credentials interface for rampart. To retrieve a username and password pair.
file  rampart_crypto_util.h [code]
 Crypto related utility module.
file  rampart_encryption.h [code]
 encrypts a SOAP message
file  rampart_engine.h [code]
 Loads configuratins for Rampart, which defines its behaviuor. Also loads modules and initialize Rampart.
file  rampart_error.h [code]
 Rampart specific error codes.
file  rampart_handler_util.h [code]
 Utilities related to handlers.
file  rampart_issued.h [code]
file  rampart_issued_token.h [code]
file  rampart_mod.h [code]
 Axis2 rampart module interface.
file  rampart_policy_validator.h [code]
 Verifies whether the message complies with the security policy reqmnt.
file  rampart_replay_detector.h [code]
 The replay_detector module for rampart.
file  rampart_saml.h [code]
 build saml tokens and validate saml tokens
file  rampart_saml_token.h [code]
file  rampart_sct_provider.h [code]
 Security context token provider module for rampart.
file  rampart_sct_provider_utility.h [code]
 Utility methods using Security context token provider module.
file  rampart_sec_header_builder.h [code]
 Build the Security related SOAP headers.
file  rampart_sec_header_processor.h [code]
 Processes a message depending on it's security related claims.
file  rampart_sec_processed_result.h [code]
 The module to keep the results after processing the message.
file  rampart_signature.h [code]
 sign a SOAP message
file  rampart_timestamp_token.h [code]
 Timestamp token related functions.
file  rampart_token_builder.h [code]
 Reference Token builfing/of rampart.
file  rampart_token_processor.h [code]
 Token processing of rampart.
file  rampart_username_token.h [code]
 The Usernametoken.
file  rampart_util.h [code]
 Utilities of rampart.
file  saml.h [code]
file  saml_req.h [code]
file  secconv_security_context_token.h [code]
 security context token
file  trust_claims.h [code]
file  trust_constants.h [code]
 Holds constants for trust implementation.
file  trust_context.h [code]
 Holds function declarations and data for data.
file  trust_entropy.h [code]
file  trust_life_time.h [code]
file  trust_policy_util.h [code]
file  trust_rst.h [code]
file  trust_rstr.h [code]
file  trust_sts_client.h [code]
 contains the specific sts client interface
file  trust_token.h [code]
 Holds function declarations and data for token.
file  trust_util.h [code]
 contains generic operations related to trust module

Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/openssl__rsa_8h-source.html0000644000076500007650000002066211202454454024101 0ustar shankarshankar Rampart/C: openssl_rsa.h Source File

openssl_rsa.h

Go to the documentation of this file.
00001 /*
00002  *   Copyright 2003-2004 The Apache Software Foundation.
00003  *
00004  *   Licensed under the Apache License, Version 2.0 (the "License");
00005  *   you may not use this file except in compliance with the License.
00006  *   You may obtain a copy of the License at
00007  *
00008  *       http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  *   Unless required by applicable law or agreed to in writing, software
00011  *   distributed under the License is distributed on an "AS IS" BASIS,
00012  *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  *   See the License for the specific language governing permissions and
00014  *   limitations under the License.
00015  */
00016 
00017 #include <openssl/rand.h>
00018 #include <openssl/evp.h>
00019 #include <openssl/pem.h>
00020 #include <openssl/bio.h>
00021 #include <openssl/rand.h>
00022 #include <openssl_constants.h>
00023 #include <openssl_pkey.h>
00024 #include <axis2_util.h>
00025 #include <oxs_buffer.h>
00026 
00031 #ifndef OPENSSL_RSA_H
00032 #define OPENSSL_RSA_H
00033 
00034 #ifdef __cplusplus
00035 extern "C" {
00036 #endif
00037 
00052     int AXIS2_CALL
00053     openssl_rsa_prv_decrypt(
00054         const axutil_env_t *env,
00055         const openssl_pkey_t *pkey,
00056         const axis2_char_t *padding,
00057         oxs_buffer_t *in,
00058         oxs_buffer_t *out);
00059 
00069     int AXIS2_CALL
00070     openssl_rsa_pub_encrypt(
00071         const axutil_env_t *env,
00072         const openssl_pkey_t *pkey,
00073         const axis2_char_t *padding,
00074         oxs_buffer_t *in,
00075         oxs_buffer_t *out);
00076 
00086     int AXIS2_CALL
00087     openssl_rsa_prv_encrypt(
00088         const axutil_env_t *env,
00089         const openssl_pkey_t *pkey,
00090         const axis2_char_t *padding,
00091         oxs_buffer_t *in,
00092         oxs_buffer_t *out);
00093 
00103     int AXIS2_CALL
00104     openssl_rsa_pub_decrypt(
00105         const axutil_env_t *env,
00106         const openssl_pkey_t *pkey,
00107         const axis2_char_t *padding,
00108         oxs_buffer_t *in,
00109         oxs_buffer_t *out);
00110 
00111 
00113 #ifdef __cplusplus
00114 }
00115 #endif
00116 
00117 #endif    /* OPENSSL_RSA_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/globals_0x72.html0000644000076500007650000010126711202454457021724 0ustar shankarshankar Rampart/C: Class Members
Here is a list of all documented file members with links to the documentation:

- r -


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/tab_r.gif0000644000076500007650000000503111202454454020376 0ustar shankarshankarGIF89a,Õö÷ùñô÷öøúüýþúûüùúûøùúêïóïóöÆÕßÒÞæØâéÞçíÝæìåìñèîòô÷ùóöø³ÈÕÁÒÝËÙâÏÜäÖá薴ŹɯÂÍ»ÎÙÃÔÞÂÓÝÈ×àÌÚâÕáèÙäê×âèåìðëðó„°ÇÑÞåÜæëãëïëñôîóõ÷úûûüüÿÿÿþþþ,,ÿ@’pH,ȤrÉl:ŸÐ¨tJ­Z¯Ø¬v •h<¬pkL.›Ïè´zÍn»ßð¸|N¯Ûïø¼~ÏwVa+‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ “*)^,*ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂö)'ÆÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæÚ¥(" ðñòóôõö÷øùúûüýþÿ H° ÁƒòK"ƒRHœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\éÅu&@€ Á²¦Í›8sêÜɳ§Oÿ–(±€DУH“*]Ê´©Ó§P£JJµªÕ«X³jÝʵ«×¯S84± ‰hÓª]˶­Û·pãÊK·®Ý»xóêÝË·¯ß¿€Ó} âDÌf(^̸±ãÇ#KžL¹²å˘3kÞ̹³çÏ C‹m¹ðCÄHœXͺµë×°cËžM»¶íÛ¸sëÞÍ»·ïßÀƒ N÷ÃJ” Á®¹óçУKŸN½ºõëØ³kßν»÷ïàËO¾úñ€ dÇ@€‚‚L¤"ÉÈF:ò‘Œ¤$9† (8…&ÉÉNzò“  ¥(G©FB^²!˨)WÉÊVºò•°l¤)1™ wÄò–¸Ì¥.wÊYºäƒà¥0‡IÌbó¾|ÉHpÌf:ó™Ðìe pJ±ˆ€}Ȧ6·ÉÍnzó›à §8û0Â%"¸æ8×ÉÎvºóðŒ§<ÉPÎQ`ò%×$€>÷ÉÏ~úóŸ ¨@JЂô M¨BÊІ:ô¡¨D'ZPKF Ö¼&16ÊÑŽzô£ ©HGJRb ÷Lç5ÏÁÒ–ºô¥ÿ0©LgJÓšš#(e>¯‰Óžúô§@ ªP‡JÔ¢õ¨HMªR—ÊÔ¦:õ©PªT§JÕª&5;%U·ÊÕ®zõ«` «XÇJV«ÂC§‹ÑjY×ÊÖ¶ºõ­p«\ŠU´À¦xÍ«^÷Ê×¾úõ¯ÐÀi)$‚”ô°ˆM¬bËØÆ:vˆ, ಘͬf7ËÙÎzö³  ­hGKÚÒšö´¨M­jWËÚÖºöµ°­*$ÛSPô¶¸Í­nwËÛÞúö·ÀÅm +„â¸ÈM®r—ËÜæ:÷¹ÐE®?±9ÏêZ÷ºØÍ®v¿9€î"‚ºÛ ¯xÇKÞòb—™ÑLÿ¯z×Ë^A¢·½ð¯|ç†÷Ò÷¾øÍ¯0í«ßþú÷¿¡ä/€Là»×ÀN°‚ï(à;øÁ n0„'LaýJ¸ÂÎ0{/¬á{ؘþ°ˆG|Ë“øÄ(¥‰SÌâCrÅ.ޱŒ ãÛøÆv¬1ŽwÌc6ê¸Ç@ÞñƒLd¹ÈHNñ‘“Ìd/¹ÉPÎð“£LeO¹ÊXŽp–·|â+sùËýõ2˜ÇL_1“ùÌí53š×M5³ùÍÇt3œç¼_:ÛÙÂwÎs™õÌgøÊ¹Ï€p ýÌ?úÐ/F´¢ë¼èFãÒÐŽŽt!-éJã‘Ò–Îô1­éN»‘ÓžuÿA-êP“ºÔ>5ª3­êUWºÕ®Ž4¬cÝèYÓZѶ¾õ¡s­ëAóº×€þ5°ù,ìaç¹ØÆ¶3²“=çe3ûÍÎ~öš£-í3S»Úc¾6¶¿¬ímo¹ÛÞÆ2¸ÃMåq“Êæ>7“Ó­n$³»ÝD~7¼,ïyó¸ÞöÆ1¾ómã}óÛÈÿvµ¿Þâ\É/µÁNâ…3ÜÉ÷´Ã#Þá‰S\ÊguÆ-mñO¸ã0ÈC¾à‘“\Ë'_´ÉS^à•³|À.ùc.ó0לÐ4¿9~s®ó=÷¼Ï<ÿy|ƒ.ô4]ÏD?ºz“®ô67]ÙO§3Ó£ÞÌ©SÄW‡vÖÙl>õ­3Úëdî:Øu)ö±?ÚìÙF;˜Ë®öW²½í­|;ÜW)÷¹²îvtÞ˽w¾÷Ý|à×=xÂÞÝA;rampartc-src-1.3.0/xdocs/api/html/oxs__sign__part_8h-source.html0000644000076500007650000002517511202454454024573 0ustar shankarshankar Rampart/C: oxs_sign_part.h Source File

oxs_sign_part.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef OXS_SIGN_PART_H
00019 #define OXS_SIGN_PART_H
00020 
00021 
00032 #include <axis2_defines.h>
00033 #include <axutil_env.h>
00034 #include <axiom_node.h>
00035 #include <axiom_namespace.h>
00036 
00037 #ifdef __cplusplus
00038 extern "C"
00039 {
00040 #endif
00041 
00042 
00043     typedef struct oxs_sign_part_t oxs_sign_part_t;
00044 
00045     /*Create function*/
00046     AXIS2_EXTERN oxs_sign_part_t *AXIS2_CALL
00047     oxs_sign_part_create(const axutil_env_t *env);
00048 
00049     /*Free*/
00050     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00051     oxs_sign_part_free(oxs_sign_part_t *ctx,
00052                        const axutil_env_t *env);
00053 
00054 
00055     /**********************Getter functions******************************************/
00056     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00057     oxs_sign_part_get_id(
00058         const oxs_sign_part_t *sign_part,
00059         const axutil_env_t *env);
00060 
00061     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00062     oxs_sign_part_get_digest_mtd(
00063         const oxs_sign_part_t *sign_part,
00064         const axutil_env_t *env);
00065 
00066     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00067     oxs_sign_part_get_digest_val(
00068         const oxs_sign_part_t *sign_part,
00069         const axutil_env_t *env);
00070 
00071     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00072     oxs_sign_part_get_node(
00073         const oxs_sign_part_t *sign_part,
00074         const axutil_env_t *env);
00075 
00076     AXIS2_EXTERN axutil_array_list_t *AXIS2_CALL
00077     oxs_sign_part_get_transforms(
00078         const oxs_sign_part_t *sign_part,
00079         const axutil_env_t *env);
00080 
00081         AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00082         oxs_sign_part_get_id_name(
00083                 const oxs_sign_part_t *sign_part,
00084                 const axutil_env_t *env);
00085 
00086         AXIS2_EXTERN axiom_namespace_t *AXIS2_CALL
00087         oxs_sign_part_get_sign_namespace(
00088                 const oxs_sign_part_t *sign_part,
00089                 const axutil_env_t *env);
00090 
00091 
00092     /**********************Setter functions******************************************/
00093     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00094     oxs_sign_part_set_id(
00095         oxs_sign_part_t *sign_part,
00096         const axutil_env_t *env,
00097         axis2_char_t *id);
00098 
00099     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00100     oxs_sign_part_set_digest_mtd(
00101         oxs_sign_part_t *sign_part,
00102         const axutil_env_t *env,
00103         axis2_char_t *digest_mtd);
00104 
00105     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00106     oxs_sign_part_set_digest_val(
00107         oxs_sign_part_t *sign_part,
00108         const axutil_env_t *env,
00109         axis2_char_t *digest_val);
00110 
00111     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00112     oxs_sign_part_set_node(
00113         oxs_sign_part_t *sign_part,
00114         const axutil_env_t *env,
00115         axiom_node_t *node);
00116 
00117     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00118     oxs_sign_part_set_transforms(
00119         oxs_sign_part_t *sign_part,
00120         const axutil_env_t *env,
00121         axutil_array_list_t *transforms);
00122 
00123         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00124         oxs_sign_part_set_id_name(
00125                 oxs_sign_part_t *sign_part,
00126                 const axutil_env_t *env,
00127                 axis2_char_t *id_name);         
00128 
00129         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00130         oxs_sign_part_set_sign_namespace(
00131                 oxs_sign_part_t *sign_part,
00132                 const axutil_env_t *env,
00133                 axiom_namespace_t *sig_ns);
00134 
00136 #ifdef __cplusplus
00137 }
00138 #endif
00139 
00140 #endif                          /* OXS_SIGN_PART_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__rampart__engine.html0000644000076500007650000000640111202454457024220 0ustar shankarshankar Rampart/C: Engine

Engine
[Rampart Utilities]


Functions

AXIS2_EXTERN rampart_context_t * rampart_engine_build_configuration (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axis2_bool_t is_inflow)

Function Documentation

AXIS2_EXTERN rampart_context_t* rampart_engine_build_configuration ( const axutil_env_t *  env,
axis2_msg_ctx_t *  msg_ctx,
axis2_bool_t  is_inflow 
)

Parameters:
env pointer to environment struct,Must not be
msg_ctx 
is_inflow returns


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__oxs__buffer.html0000644000076500007650000006661611202454456023404 0ustar shankarshankar Rampart/C: Buffer

Buffer
[OMXMLSecurity]


Defines

#define OXS_BUFFER_INITIAL_SIZE   1024

Typedefs

typedef struct oxs_buffer oxs_buffer_t

Enumerations

enum  oxs_AllocMode { oxs_alloc_mode_exact = 0, oxs_alloc_mode_double }

Functions

AXIS2_EXTERN axis2_status_t oxs_buffer_free (oxs_buffer_t *buffer, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_buffer_remove_head (oxs_buffer_t *buffer, const axutil_env_t *env, int size)
AXIS2_EXTERN axis2_status_t oxs_buffer_remove_tail (oxs_buffer_t *buffer, const axutil_env_t *env, int size)
AXIS2_EXTERN axis2_status_t oxs_buffer_populate (oxs_buffer_t *buffer, const axutil_env_t *env, unsigned char *data, int size)
AXIS2_EXTERN axis2_status_t oxs_buffer_append (oxs_buffer_t *buffer, const axutil_env_t *env, unsigned char *data, int size)
AXIS2_EXTERN axis2_status_t oxs_buffer_prepend (oxs_buffer_t *buffer, const axutil_env_t *env, unsigned char *data, int size)
AXIS2_EXTERN axis2_status_t oxs_buffer_read_file (oxs_buffer_t *buffer, const axutil_env_t *env, const axis2_char_t *filename)
AXIS2_EXTERN axis2_status_t oxs_buffer_set_size (oxs_buffer_t *buffer, const axutil_env_t *env, int size)
AXIS2_EXTERN axis2_status_t oxs_buffer_set_max_size (oxs_buffer_t *buffer, const axutil_env_t *env, int size)
AXIS2_EXTERN unsigned char * oxs_buffer_get_data (oxs_buffer_t *buffer, const axutil_env_t *env)
AXIS2_EXTERN int oxs_buffer_get_size (oxs_buffer_t *buffer, const axutil_env_t *env)
AXIS2_EXTERN int oxs_buffer_get_max_size (oxs_buffer_t *buffer, const axutil_env_t *env)
AXIS2_EXTERN oxs_buffer_toxs_buffer_dup (oxs_buffer_t *buffer, const axutil_env_t *env)
AXIS2_EXTERN oxs_buffer_toxs_buffer_create (const axutil_env_t *env)

Typedef Documentation

typedef struct oxs_buffer oxs_buffer_t

Type name for struct oxs_buffer


Enumeration Type Documentation

Allocate mode for the buffer oxs_alloc_mode_exact : Minimizes the allocated memory size oxs_alloc_mode_double : Minimizes number of Malloc calls


Function Documentation

AXIS2_EXTERN axis2_status_t oxs_buffer_append ( oxs_buffer_t buffer,
const axutil_env_t *  env,
unsigned char *  data,
int  size 
)

Append data (to the end) pointer to the OMXMLSec buffer struct pointer to environment struct the data for the buffer the effective length of data

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_buffer_free ( oxs_buffer_t buffer,
const axutil_env_t *  env 
)

Free function of the buffer

Parameters:
buffer pointer to the OMXMLSec buffer struct
env pointer to environment struct
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN unsigned char* oxs_buffer_get_data ( oxs_buffer_t buffer,
const axutil_env_t *  env 
)

Returns data pointer to the OMXMLSec buffer struct pointer to environment struct

Returns:
data in the buffer

AXIS2_EXTERN int oxs_buffer_get_max_size ( oxs_buffer_t buffer,
const axutil_env_t *  env 
)

Returns the maximum size of the buffer pointer to the OMXMLSec buffer struct pointer to environment struct

Returns:
the maximum size of the buffer

AXIS2_EXTERN int oxs_buffer_get_size ( oxs_buffer_t buffer,
const axutil_env_t *  env 
)

Returns the effective length of the buffer pointer to the OMXMLSec buffer struct pointer to environment struct

Returns:
the effective length of the buffer as int

AXIS2_EXTERN axis2_status_t oxs_buffer_populate ( oxs_buffer_t buffer,
const axutil_env_t *  env,
unsigned char *  data,
int  size 
)

populates the buffer using the set the as the useful length pointer to the OMXMLSec buffer struct pointer to environment struct the data for the buffer the effective length of data

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_buffer_prepend ( oxs_buffer_t buffer,
const axutil_env_t *  env,
unsigned char *  data,
int  size 
)

Prepends data (to the front of the buffer) pointer to the OMXMLSec buffer struct pointer to environment struct the data for the buffer the effective length of data

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_buffer_read_file ( oxs_buffer_t buffer,
const axutil_env_t *  env,
const axis2_char_t *  filename 
)

Reads a file specified by pointer to the OMXMLSec buffer struct pointer to environment struct The name of the file

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_buffer_remove_head ( oxs_buffer_t buffer,
const axutil_env_t *  env,
int  size 
)

Removes the first (size) charcters from the buffer

Parameters:
buffer pointer to the OMXMLSec buffer struct
env pointer to environment struct
size number of characters to be removed
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_buffer_remove_tail ( oxs_buffer_t buffer,
const axutil_env_t *  env,
int  size 
)

Removes the last (size) charcters from the buffer

Parameters:
buffer pointer to the OMXMLSec buffer struct
env pointer to environment struct
size number of characters to be removed
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_buffer_set_max_size ( oxs_buffer_t buffer,
const axutil_env_t *  env,
int  size 
)

Sets the maximum size of the buffer. Usually this will be allocated dynamically pointer to the OMXMLSec buffer struct pointer to environment struct the maximum size of the buffer

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_buffer_set_size ( oxs_buffer_t buffer,
const axutil_env_t *  env,
int  size 
)

Sets the size pointer to the OMXMLSec buffer struct pointer to environment struct the value of the size

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/openssl__cipher__property_8h.html0000644000076500007650000002033311202454455025367 0ustar shankarshankar Rampart/C: openssl_cipher_property.h File Reference

openssl_cipher_property.h File Reference

The class to store cipher properties such as name, key size, block size etc. More...

#include <openssl/evp.h>
#include <oxs_buffer.h>

Go to the source code of this file.

Typedefs

typedef struct
openssl_cipher_property_t 
openssl_cipher_property_t

Functions

EVP_CIPHER * openssl_cipher_property_get_cipher (const openssl_cipher_property_t *cprop, const axutil_env_t *env)
axis2_char_t * openssl_cipher_property_get_name (const openssl_cipher_property_t *cprop, const axutil_env_t *env)
axis2_char_t * openssl_cipher_property_get_url (const openssl_cipher_property_t *cprop, const axutil_env_t *env)
int openssl_cipher_property_get_key_size (const openssl_cipher_property_t *cprop, const axutil_env_t *env)
int openssl_cipher_property_get_block_size (const openssl_cipher_property_t *cprop, const axutil_env_t *env)
int openssl_cipher_property_get_iv_size (const openssl_cipher_property_t *cprop, const axutil_env_t *env)
axis2_status_t openssl_cipher_property_set_cipher (openssl_cipher_property_t *cprop, const axutil_env_t *env, EVP_CIPHER *cipher)
axis2_status_t openssl_cipher_property_set_name (openssl_cipher_property_t *cprop, const axutil_env_t *env, axis2_char_t *name)
axis2_status_t openssl_cipher_property_set_url (openssl_cipher_property_t *cprop, const axutil_env_t *env, axis2_char_t *url)
axis2_status_t openssl_cipher_property_set_key_size (openssl_cipher_property_t *cprop, const axutil_env_t *env, int key_size)
axis2_status_t openssl_cipher_property_set_block_size (openssl_cipher_property_t *cprop, const axutil_env_t *env, int block_size)
axis2_status_t openssl_cipher_property_set_iv_size (openssl_cipher_property_t *cprop, const axutil_env_t *env, int iv_size)
axis2_status_t openssl_cipher_property_free (openssl_cipher_property_t *cprop, const axutil_env_t *env)
AXIS2_EXTERN
openssl_cipher_property_t
openssl_cipher_property_create (const axutil_env_t *env)


Detailed Description

The class to store cipher properties such as name, key size, block size etc.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/oxs__saml__token_8h-source.html0000644000076500007650000001523611202454454024736 0ustar shankarshankar Rampart/C: oxs_saml_token.h Source File

oxs_saml_token.h

00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef OXS_SAML_TOKEN_H
00019 #define OXS_SAML_TOKEN_H
00020 
00021 #include <oxs_tokens.h>
00022 #include <oxs_axiom.h>
00023 
00024 #ifdef __cplusplus
00025 extern "C"
00026 {
00027 #endif
00028 
00029 #define OXS_ST_KEY_ID_VALUE_TYPE    "http://docs.oasis-open.org/wss/oass-wss-saml-token-profile-1.0#SAMLAssertionID"
00030 
00031 AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00032 oxs_saml_token_build_key_identifier_reference_local(const axutil_env_t *env, 
00033                                              axiom_node_t *parent, 
00034                                              axiom_node_t *assertion);
00035 AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00036 oxs_saml_token_build_key_identifier_reference_remote(const axutil_env_t *env, 
00037                                              axiom_node_t *parent, 
00038                                              axiom_node_t *assertion, 
00039                                              axiom_node_t *auth_bind);
00040 
00041 AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00042 oxs_saml_token_build_embeded_reference(const axutil_env_t *env, 
00043                                              axiom_node_t *parent, 
00044                                              axiom_node_t *assertion);
00045 
00046 AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00047 oxs_saml_token_get_from_key_identifer_reference(const axutil_env_t *env, 
00048                                                     axiom_node_t *key_id,
00049                                                     axiom_node_t *scope);
00050 
00051 AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00052 oxs_saml_token_get_from_embeded_reference(const axutil_env_t *env, 
00053                                                   axiom_node_t *embeded);
00054 
00055 
00056 #ifdef __cplusplus
00057 }
00058 #endif
00059 
00060 
00061 #endif 
00062 

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/doxygen.css0000644000076500007650000001775711202454454021031 0ustar shankarshankarBODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV { font-family: Geneva, Arial, Helvetica, sans-serif; } BODY,TD { font-size: 90%; } H1 { text-align: center; font-size: 160%; } H2 { font-size: 120%; } H3 { font-size: 100%; } CAPTION { font-weight: bold } DIV.qindex { width: 100%; background-color: #e8eef2; border: 1px solid #84b0c7; text-align: center; margin: 2px; padding: 2px; line-height: 140%; } DIV.navpath { width: 100%; background-color: #e8eef2; border: 1px solid #84b0c7; text-align: center; margin: 2px; padding: 2px; line-height: 140%; } DIV.navtab { background-color: #e8eef2; border: 1px solid #84b0c7; text-align: center; margin: 2px; margin-right: 15px; padding: 2px; } TD.navtab { font-size: 70%; } A.qindex { text-decoration: none; font-weight: bold; color: #1A419D; } A.qindex:visited { text-decoration: none; font-weight: bold; color: #1A419D } A.qindex:hover { text-decoration: none; background-color: #ddddff; } A.qindexHL { text-decoration: none; font-weight: bold; background-color: #6666cc; color: #ffffff; border: 1px double #9295C2; } A.qindexHL:hover { text-decoration: none; background-color: #6666cc; color: #ffffff; } A.qindexHL:visited { text-decoration: none; background-color: #6666cc; color: #ffffff } A.el { text-decoration: none; font-weight: bold } A.elRef { font-weight: bold } A.code:link { text-decoration: none; font-weight: normal; color: #0000FF } A.code:visited { text-decoration: none; font-weight: normal; color: #0000FF } A.codeRef:link { font-weight: normal; color: #0000FF } A.codeRef:visited { font-weight: normal; color: #0000FF } A:hover { text-decoration: none; background-color: #f2f2ff } DL.el { margin-left: -1cm } .fragment { font-family: monospace, fixed; font-size: 95%; } PRE.fragment { border: 1px solid #CCCCCC; background-color: #f5f5f5; margin-top: 4px; margin-bottom: 4px; margin-left: 2px; margin-right: 8px; padding-left: 6px; padding-right: 6px; padding-top: 4px; padding-bottom: 4px; } DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px } DIV.groupHeader { margin-left: 16px; margin-top: 12px; margin-bottom: 6px; font-weight: bold; } DIV.groupText { margin-left: 16px; font-style: italic; font-size: 90% } BODY { background: white; color: black; margin-right: 20px; margin-left: 20px; } TD.indexkey { background-color: #e8eef2; font-weight: bold; padding-right : 10px; padding-top : 2px; padding-left : 10px; padding-bottom : 2px; margin-left : 0px; margin-right : 0px; margin-top : 2px; margin-bottom : 2px; border: 1px solid #CCCCCC; } TD.indexvalue { background-color: #e8eef2; font-style: italic; padding-right : 10px; padding-top : 2px; padding-left : 10px; padding-bottom : 2px; margin-left : 0px; margin-right : 0px; margin-top : 2px; margin-bottom : 2px; border: 1px solid #CCCCCC; } TR.memlist { background-color: #f0f0f0; } P.formulaDsp { text-align: center; } IMG.formulaDsp { } IMG.formulaInl { vertical-align: middle; } SPAN.keyword { color: #008000 } SPAN.keywordtype { color: #604020 } SPAN.keywordflow { color: #e08000 } SPAN.comment { color: #800000 } SPAN.preprocessor { color: #806020 } SPAN.stringliteral { color: #002080 } SPAN.charliteral { color: #008080 } SPAN.vhdldigit { color: #ff00ff } SPAN.vhdlchar { color: #000000 } SPAN.vhdlkeyword { color: #700070 } SPAN.vhdllogic { color: #ff0000 } .mdescLeft { padding: 0px 8px 4px 8px; font-size: 80%; font-style: italic; background-color: #FAFAFA; border-top: 1px none #E0E0E0; border-right: 1px none #E0E0E0; border-bottom: 1px none #E0E0E0; border-left: 1px none #E0E0E0; margin: 0px; } .mdescRight { padding: 0px 8px 4px 8px; font-size: 80%; font-style: italic; background-color: #FAFAFA; border-top: 1px none #E0E0E0; border-right: 1px none #E0E0E0; border-bottom: 1px none #E0E0E0; border-left: 1px none #E0E0E0; margin: 0px; } .memItemLeft { padding: 1px 0px 0px 8px; margin: 4px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: #E0E0E0; border-right-color: #E0E0E0; border-bottom-color: #E0E0E0; border-left-color: #E0E0E0; border-top-style: solid; border-right-style: none; border-bottom-style: none; border-left-style: none; background-color: #FAFAFA; font-size: 80%; } .memItemRight { padding: 1px 8px 0px 8px; margin: 4px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: #E0E0E0; border-right-color: #E0E0E0; border-bottom-color: #E0E0E0; border-left-color: #E0E0E0; border-top-style: solid; border-right-style: none; border-bottom-style: none; border-left-style: none; background-color: #FAFAFA; font-size: 80%; } .memTemplItemLeft { padding: 1px 0px 0px 8px; margin: 4px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: #E0E0E0; border-right-color: #E0E0E0; border-bottom-color: #E0E0E0; border-left-color: #E0E0E0; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; background-color: #FAFAFA; font-size: 80%; } .memTemplItemRight { padding: 1px 8px 0px 8px; margin: 4px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: #E0E0E0; border-right-color: #E0E0E0; border-bottom-color: #E0E0E0; border-left-color: #E0E0E0; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; background-color: #FAFAFA; font-size: 80%; } .memTemplParams { padding: 1px 0px 0px 8px; margin: 4px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: #E0E0E0; border-right-color: #E0E0E0; border-bottom-color: #E0E0E0; border-left-color: #E0E0E0; border-top-style: solid; border-right-style: none; border-bottom-style: none; border-left-style: none; color: #606060; background-color: #FAFAFA; font-size: 80%; } .search { color: #003399; font-weight: bold; } FORM.search { margin-bottom: 0px; margin-top: 0px; } INPUT.search { font-size: 75%; color: #000080; font-weight: normal; background-color: #e8eef2; } TD.tiny { font-size: 75%; } a { color: #1A41A8; } a:visited { color: #2A3798; } .dirtab { padding: 4px; border-collapse: collapse; border: 1px solid #84b0c7; } TH.dirtab { background: #e8eef2; font-weight: bold; } HR { height: 1px; border: none; border-top: 1px solid black; } /* Style for detailed member documentation */ .memtemplate { font-size: 80%; color: #606060; font-weight: normal; margin-left: 3px; } .memnav { background-color: #e8eef2; border: 1px solid #84b0c7; text-align: center; margin: 2px; margin-right: 15px; padding: 2px; } .memitem { padding: 4px; background-color: #eef3f5; border-width: 1px; border-style: solid; border-color: #dedeee; -moz-border-radius: 8px 8px 8px 8px; } .memname { white-space: nowrap; font-weight: bold; } .memdoc{ padding-left: 10px; } .memproto { background-color: #d5e1e8; width: 100%; border-width: 1px; border-style: solid; border-color: #84b0c7; font-weight: bold; -moz-border-radius: 8px 8px 8px 8px; } .paramkey { text-align: right; } .paramtype { white-space: nowrap; } .paramname { color: #602020; font-style: italic; white-space: nowrap; } /* End Styling for detailed member documentation */ /* for the tree view */ .ftvtree { font-family: sans-serif; margin:0.5em; } .directory { font-size: 9pt; font-weight: bold; } .directory h3 { margin: 0px; margin-top: 1em; font-size: 11pt; } .directory > h3 { margin-top: 0; } .directory p { margin: 0px; white-space: nowrap; } .directory div { display: none; margin: 0px; } .directory img { vertical-align: -30%; } rampartc-src-1.3.0/xdocs/api/html/tabs.css0000644000076500007650000000334211202454454020266 0ustar shankarshankar/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */ DIV.tabs { float : left; width : 100%; background : url("tab_b.gif") repeat-x bottom; margin-bottom : 4px; } DIV.tabs UL { margin : 0px; padding-left : 10px; list-style : none; } DIV.tabs LI, DIV.tabs FORM { display : inline; margin : 0px; padding : 0px; } DIV.tabs FORM { float : right; } DIV.tabs A { float : left; background : url("tab_r.gif") no-repeat right top; border-bottom : 1px solid #84B0C7; font-size : x-small; font-weight : bold; text-decoration : none; } DIV.tabs A:hover { background-position: 100% -150px; } DIV.tabs A:link, DIV.tabs A:visited, DIV.tabs A:active, DIV.tabs A:hover { color: #1A419D; } DIV.tabs SPAN { float : left; display : block; background : url("tab_l.gif") no-repeat left top; padding : 5px 9px; white-space : nowrap; } DIV.tabs INPUT { float : right; display : inline; font-size : 1em; } DIV.tabs TD { font-size : x-small; font-weight : bold; text-decoration : none; } /* Commented Backslash Hack hides rule from IE5-Mac \*/ DIV.tabs SPAN {float : none;} /* End IE5-Mac hack */ DIV.tabs A:hover SPAN { background-position: 0% -150px; } DIV.tabs LI.current A { background-position: 100% -150px; border-width : 0px; } DIV.tabs LI.current SPAN { background-position: 0% -150px; padding-bottom : 6px; } DIV.navpath { background : none; border : none; border-bottom : 1px solid #84B0C7; } rampartc-src-1.3.0/xdocs/api/html/group__openssl__x509.html0000644000076500007650000001746311202454456023506 0ustar shankarshankar Rampart/C: OpenSSL X509

OpenSSL X509


Enumerations

enum  openssl_x509_format_t { OPENSSL_X509_FORMAT_PEM = 0, OPENSSL_X509_FORMAT_DER, OPENSSL_X509_FORMAT_PKCS12 }
enum  openssl_x509_info_type_t {
  OPENSSL_X509_INFO_SUBJECT = 0, OPENSSL_X509_INFO_ISSUER, OPENSSL_X509_INFO_VALID_FROM, OPENSSL_X509_INFO_VALID_TO,
  OPENSSL_X509_INFO_FINGER, OPENSSL_X509_INFO_SIGNATURE, OPENSSL_X509_INFO_VERSION, OPENSSL_X509_INFO_PUBKEY,
  OPENSSL_X509_INFO_PUBKEY_ALGO, OPENSSL_X509_INFO_DATA_CERT, OPENSSL_X509_INFO_COMMON_NAME
}

Functions

AXIS2_EXTERN axis2_status_t openssl_x509_load_from_buffer (const axutil_env_t *env, axis2_char_t *b64_encoded_buf, X509 **cert)
AXIS2_EXTERN axis2_status_t openssl_x509_load_from_pem (const axutil_env_t *env, axis2_char_t *filename, X509 **cert)
AXIS2_EXTERN axis2_status_t openssl_x509_load_from_pkcs12 (const axutil_env_t *env, axis2_char_t *filename, axis2_char_t *password, X509 **cert, EVP_PKEY **pkey, STACK_OF(X509)**ca)
AXIS2_EXTERN axis2_status_t openssl_x509_load_certificate (const axutil_env_t *env, openssl_x509_format_t format, axis2_char_t *filename, axis2_char_t *password, X509 **cert)
AXIS2_EXTERN axis2_char_t * openssl_x509_get_cert_data (const axutil_env_t *env, X509 *cert)
AXIS2_EXTERN int openssl_x509_get_serial (const axutil_env_t *env, X509 *cert)
AXIS2_EXTERN unsigned long openssl_x509_get_subject_name_hash (const axutil_env_t *env, X509 *cert)
AXIS2_EXTERN axis2_status_t openssl_x509_get_pubkey (const axutil_env_t *env, X509 *cert, EVP_PKEY **pubkey)
AXIS2_EXTERN axis2_char_t * openssl_x509_get_subject_key_identifier (const axutil_env_t *env, X509 *cert)
AXIS2_EXTERN axis2_char_t * openssl_x509_get_info (const axutil_env_t *env, openssl_x509_info_type_t type, X509 *cert)
AXIS2_EXTERN axis2_char_t * openssl_x509_get_common_name (const axutil_env_t *env, X509 *cert)
AXIS2_EXTERN void openssl_x509_print (const axutil_env_t *env, X509 *cert)

Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__oxs__sign__part.html0000644000076500007650000002261411202454456024246 0ustar shankarshankar Rampart/C: Signature Part

Signature Part
[OMXMLSecurity]


Typedefs

typedef struct oxs_sign_part_t oxs_sign_part_t

Functions

AXIS2_EXTERN oxs_sign_part_t * oxs_sign_part_create (const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_sign_part_free (oxs_sign_part_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_sign_part_get_id (const oxs_sign_part_t *sign_part, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_sign_part_get_digest_mtd (const oxs_sign_part_t *sign_part, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_sign_part_get_digest_val (const oxs_sign_part_t *sign_part, const axutil_env_t *env)
AXIS2_EXTERN axiom_node_t * oxs_sign_part_get_node (const oxs_sign_part_t *sign_part, const axutil_env_t *env)
AXIS2_EXTERN axutil_array_list_t * oxs_sign_part_get_transforms (const oxs_sign_part_t *sign_part, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_sign_part_get_id_name (const oxs_sign_part_t *sign_part, const axutil_env_t *env)
AXIS2_EXTERN axiom_namespace_t * oxs_sign_part_get_sign_namespace (const oxs_sign_part_t *sign_part, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_sign_part_set_id (oxs_sign_part_t *sign_part, const axutil_env_t *env, axis2_char_t *id)
AXIS2_EXTERN axis2_status_t oxs_sign_part_set_digest_mtd (oxs_sign_part_t *sign_part, const axutil_env_t *env, axis2_char_t *digest_mtd)
AXIS2_EXTERN axis2_status_t oxs_sign_part_set_digest_val (oxs_sign_part_t *sign_part, const axutil_env_t *env, axis2_char_t *digest_val)
AXIS2_EXTERN axis2_status_t oxs_sign_part_set_node (oxs_sign_part_t *sign_part, const axutil_env_t *env, axiom_node_t *node)
AXIS2_EXTERN axis2_status_t oxs_sign_part_set_transforms (oxs_sign_part_t *sign_part, const axutil_env_t *env, axutil_array_list_t *transforms)
AXIS2_EXTERN axis2_status_t oxs_sign_part_set_id_name (oxs_sign_part_t *sign_part, const axutil_env_t *env, axis2_char_t *id_name)
AXIS2_EXTERN axis2_status_t oxs_sign_part_set_sign_namespace (oxs_sign_part_t *sign_part, const axutil_env_t *env, axiom_namespace_t *sig_ns)

Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/oxs__xml__encryption_8h.html0000644000076500007650000001155111202454455024353 0ustar shankarshankar Rampart/C: oxs_xml_encryption.h File Reference

oxs_xml_encryption.h File Reference

Does the XML encryption for OMXMLSecurity. More...

#include <axis2_defines.h>
#include <oxs_ctx.h>
#include <axutil_env.h>
#include <axiom_node.h>
#include <axiom_element.h>
#include <axutil_qname.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN axis2_status_t oxs_xml_enc_encrypt_node (const axutil_env_t *env, oxs_ctx_t *enc_ctx, axiom_node_t *node, axiom_node_t **enc_type_node, axiom_node_t *key_reference_node)
AXIS2_EXTERN axis2_status_t oxs_xml_enc_decrypt_node (const axutil_env_t *env, oxs_ctx_t *enc_ctx, axiom_node_t *enc_type_node, axiom_node_t **decrypted_node)
AXIS2_EXTERN axis2_status_t oxs_xml_enc_encrypt_data (const axutil_env_t *env, oxs_ctx_t *enc_ctx, oxs_buffer_t *content_buf, axiom_node_t **enc_type_node, axiom_node_t *key_reference_node)
AXIS2_EXTERN axis2_status_t oxs_xml_enc_decrypt_data (const axutil_env_t *env, oxs_ctx_t *enc_ctx, axiom_node_t *enc_type_node, oxs_buffer_t *result_buf)
AXIS2_EXTERN axis2_status_t oxs_xml_enc_encrypt_key (const axutil_env_t *env, oxs_asym_ctx_t *asym_ctx, axiom_node_t *parent, oxs_key_t *sym_key, axutil_array_list_t *id_list)
AXIS2_EXTERN axis2_status_t oxs_xml_enc_decrypt_key (const axutil_env_t *env, oxs_asym_ctx_t *asym_ctx, axiom_node_t *parent, axiom_node_t *encrypted_key_node, oxs_key_t *key)


Detailed Description

Does the XML encryption for OMXMLSecurity.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/openssl__pkcs12__keystore_8h-source.html0000644000076500007650000002355211202454454026504 0ustar shankarshankar Rampart/C: openssl_pkcs12_keystore.h Source File

openssl_pkcs12_keystore.h

Go to the documentation of this file.
00001 /*
00002  *   Copyright 2003-2004 The Apache Software Foundation.
00003  *
00004  *   Licensed under the Apache License, Version 2.0 (the "License");
00005  *   you may not use this file except in compliance with the License.
00006  *   You may obtain a copy of the License at
00007  *
00008  *       http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  *   Unless required by applicable law or agreed to in writing, software
00011  *   distributed under the License is distributed on an "AS IS" BASIS,
00012  *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  *   See the License for the specific language governing permissions and
00014  *   limitations under the License.
00015  */
00016 
00017 #include <openssl/rand.h>
00018 #include <openssl/evp.h>
00019 #include <openssl/pem.h>
00020 #include <openssl/bio.h>
00021 #include <openssl/rand.h>
00022 #include <openssl_constants.h>
00023 #include <openssl_pkey.h>
00024 #include <axis2_util.h>
00025 #include <openssl/pkcs12.h>
00026 #include <openssl/rsa.h>
00027 #include <openssl/x509.h>
00028 #include <openssl_pkcs12.h>
00029 #include <oxs_error.h>
00030 #include <oxs_x509_cert.h>
00031 #include <openssl_pkey.h>
00032 #include <openssl_x509.h>
00033 
00034 
00039 #ifndef OPENSSL_PKCS12_KEYSTORE_H
00040 #define OPENSSL_PKCS12_KEYSTORE_H
00041 
00042 #ifdef __cplusplus
00043 extern "C" {
00044 #endif
00045     
00046     typedef struct pkcs12_keystore pkcs12_keystore_t;
00047     
00048     AXIS2_EXTERN pkcs12_keystore_t * AXIS2_CALL pkcs12_keystore_create(
00049         const axutil_env_t *env, 
00050         axis2_char_t *filename, 
00051         axis2_char_t *password);
00052     
00053     axutil_array_list_t * AXIS2_CALL pkcs12_keystore_populate_cert_array(
00054         const axutil_env_t *env,
00055         STACK_OF(X509) *other_certs);
00056     
00057     oxs_x509_cert_t * AXIS2_CALL pkcs12_keystore_populate_oxs_cert(
00058         const axutil_env_t *env, 
00059         X509 *cert_in);
00060     
00061     AXIS2_EXTERN openssl_pkey_t * AXIS2_CALL pkcs12_keystore_get_owner_private_key(
00062         pkcs12_keystore_t *keystore,
00063         const axutil_env_t *env);
00064     
00065     AXIS2_EXTERN oxs_x509_cert_t * AXIS2_CALL pkcs12_keystore_get_owner_certificate(
00066         pkcs12_keystore_t *keystore, 
00067         const axutil_env_t *env);
00068     
00069     AXIS2_EXTERN oxs_x509_cert_t * AXIS2_CALL pkcs12_keystore_get_certificate_for_issuer_serial(
00070         pkcs12_keystore_t *keystore,
00071         const axutil_env_t *env,
00072         axis2_char_t *issuer,
00073         int serial_number);
00074     
00075     AXIS2_EXTERN oxs_x509_cert_t * AXIS2_CALL pkcs12_keystore_get_certificate_for_thumbprint(
00076         pkcs12_keystore_t *keystore, 
00077         const axutil_env_t *env, 
00078         axis2_char_t *thumbprint);
00079     
00080     AXIS2_EXTERN oxs_x509_cert_t * AXIS2_CALL pkcs12_keystore_get_certificate_for_subject_key_id(
00081         pkcs12_keystore_t *keystore,
00082         const axutil_env_t *env,
00083         axis2_char_t *ski);
00084 
00085     AXIS2_EXTERN oxs_x509_cert_t * AXIS2_CALL 
00086     pkcs12_keystore_get_other_certificate(
00087         pkcs12_keystore_t *keystore,
00088         const axutil_env_t *env);
00089      
00090     AXIS2_EXTERN pkcs12_keystore_t * AXIS2_CALL
00091     pkcs12_keystore_create_from_buffer(
00092         const axutil_env_t *env,
00093         axis2_char_t *buffer,
00094         axis2_char_t *password,
00095         int len);
00096 
00097     
00098         
00099 #ifdef __cplusplus
00100 }
00101 #endif
00102 
00103 #endif    /* OPENSSL_PKCS12_KEYSTORE_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/oxs__utility_8h.html0000644000076500007650000000615111202454455022645 0ustar shankarshankar Rampart/C: oxs_utility.h File Reference

oxs_utility.h File Reference

The utility module for OMXMLSecurity. More...

#include <axis2_defines.h>
#include <axutil_env.h>
#include <oxs_asym_ctx.h>
#include <oxs_key_mgr.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN axis2_char_t * oxs_util_generate_nonce (const axutil_env_t *env, int length)
AXIS2_EXTERN axis2_char_t * oxs_util_generate_id (const axutil_env_t *env, axis2_char_t *prefix)
AXIS2_EXTERN oxs_key_mgr_format_t oxs_util_get_format_by_file_extension (const axutil_env_t *env, axis2_char_t *file_name)
AXIS2_EXTERN axis2_char_t * oxs_util_get_newline_removed_string (const axutil_env_t *env, axis2_char_t *input)


Detailed Description

The utility module for OMXMLSecurity.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/rampart__sct__provider_8h-source.html0000644000076500007650000002375611202454455026151 0ustar shankarshankar Rampart/C: rampart_sct_provider.h Source File

rampart_sct_provider.h

Go to the documentation of this file.
00001 /*
00002 * Licensed to the Apache Software Foundation (ASF) under one or more
00003 * contributor license agreements.  See the NOTICE file distributed with
00004 * this work for additional information regarding copyright ownership.
00005 * The ASF licenses this file to You under the Apache License, Version 2.0
00006 * (the "License"); you may not use this file except in compliance with
00007 * the License.  You may obtain a copy of the License at
00008 *
00009 *      http://www.apache.org/licenses/LICENSE-2.0
00010 *
00011 * Unless required by applicable law or agreed to in writing, software
00012 * distributed under the License is distributed on an "AS IS" BASIS,
00013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014 * See the License for the specific language governing permissions and
00015 * limitations under the License.
00016 */
00017 
00018 #ifndef RAMPART_SCT_PROVIDER_H
00019 #define RAMPART_SCT_PROVIDER_H
00020 
00032 #include <axis2_defines.h>
00033 #include <axutil_env.h>
00034 #include <rampart_context.h>
00035 
00036 #ifdef __cplusplus
00037 extern "C"
00038 {
00039 #endif
00040 
00041     typedef struct rampart_sct_provider_ops rampart_sct_provider_ops_t;
00042     typedef struct rampart_sct_provider rampart_sct_provider_t;
00043 
00044     struct rampart_sct_provider_ops
00045     {
00046         /* This function will be called to get previously stored sct. If secure conversation token 
00047          * is referred by this method, then sct_id will be not null. However, if security context 
00048          * token (pre-agreed and established offline) is refered then sct_id might be NULL. 
00049          * is_encryption is passed, so that if pre-agreed sct is different for encryption and 
00050          * signature, then it could be accessed. sct_id_type can be RAMPART_SCT_ID_TYPE_LOCAL 
00051          * or RAMPART_SCT_ID_TYPE_GLOBAL. user_param will be whatever stored using 
00052          * rampart_context_set_security_context_token_user_params. 
00053          */
00054         obtain_security_context_token_fn obtain_security_context_token;
00055 
00056         /* This function will be used to store sct. Global id, local id will be given so function 
00057          * writer can store them in anyway. Get or Delete method will use any of the Global id or 
00058          * local id, so Store function writer should be ready for that. 
00059          */
00060         store_security_context_token_fn store_security_context_token;
00061 
00062         /* This function will be called to delete previously stored sct. sct_id_type can be 
00063          * RAMPART_SCT_ID_TYPE_LOCAL or RAMPART_SCT_ID_TYPE_GLOBAL
00064          */
00065         delete_security_context_token_fn delete_security_context_token;
00066 
00067         /* Validates whether security context token is valid or not. Normally, we can directly send 
00068          * true as response. But if syntax of security context token is altered/added by using 
00069          * extensible mechanism (e.g having sessions, etc.) then user can implement this method. 
00070          * Axiom representation of the sct will be given as the parameter, because if sct is 
00071          * extended, we don't know the syntax. Method writer can implement whatever needed.
00072          */
00073         validate_security_context_token_fn validate_security_context_token;
00074 
00075         /* This function will be called to get the user paramters. It will be called only when 
00076          * loading sct_provider module. If user_params are not needed, this method can return NULL
00077          */
00078         void* (AXIS2_CALL*
00079         get_user_params)(
00080             const axutil_env_t *env);
00081 
00082         /* This function will be called to free security context token provider module */
00083         axis2_status_t (AXIS2_CALL*
00084         free)(
00085             rampart_sct_provider_t *sct_provider,
00086             const axutil_env_t* env);
00087     };
00088 
00089     struct rampart_sct_provider
00090     {
00091         rampart_sct_provider_ops_t *ops;
00092                 axutil_param_t *param;
00093     };
00094 
00095     /*************************** Function macros **********************************/
00096 #define RAMPART_SCT_PROVIDER_FREE(sct_provider, env) \
00097         ((sct_provider)->ops->free(sct_provider, env))
00098 
00100 #ifdef __cplusplus
00101 }
00102 #endif
00103 
00104 #endif  /* RAMPART_SCT_PROVIDER_H */
00105 
00106 

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__oxs__ctx.html0000644000076500007650000014107211202454456022717 0ustar shankarshankar Rampart/C: OXS Context

OXS Context
[OMXMLSecurity]


Typedefs

typedef struct oxs_ctx_t oxs_ctx_t

Enumerations

enum  oxs_ctx_operation_t { OXS_CTX_OPERATION_NONE = 0, OXS_CTX_OPERATION_ENCRYPT, OXS_CTX_OPERATION_DECRYPT }
enum  oxs_ctx_mode_t { OXS_CTX_MODE_ENCRYPTED_DATA = 0, OXS_CTX_MODE_ENCRYPTED_KEY }

Functions

AXIS2_EXTERN axis2_status_t oxs_ctx_free (oxs_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN oxs_ctx_mode_t oxs_ctx_get_mode (oxs_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN oxs_ctx_operation_t oxs_ctx_get_operation (oxs_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN oxs_key_toxs_ctx_get_key (oxs_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_ctx_get_id (oxs_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_ctx_get_type (oxs_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_ctx_get_mime_type (oxs_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_ctx_get_encoding (oxs_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_ctx_get_recipient (oxs_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_ctx_get_ref_key_name (oxs_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_ctx_get_enc_mtd_algorithm (oxs_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_ctx_get_input_data (oxs_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_ctx_set_mode (oxs_ctx_t *ctx, const axutil_env_t *env, oxs_ctx_mode_t mode)
AXIS2_EXTERN axis2_status_t oxs_ctx_set_operation (oxs_ctx_t *ctx, const axutil_env_t *env, oxs_ctx_operation_t operation)
AXIS2_EXTERN axis2_status_t oxs_ctx_set_key (oxs_ctx_t *ctx, const axutil_env_t *env, oxs_key_t *key)
AXIS2_EXTERN axis2_status_t oxs_ctx_set_id (oxs_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *id)
AXIS2_EXTERN axis2_status_t oxs_ctx_set_type (oxs_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *type)
AXIS2_EXTERN axis2_status_t oxs_ctx_set_mime_type (oxs_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *mime_type)
AXIS2_EXTERN axis2_status_t oxs_ctx_set_encoding (oxs_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *encoding)
AXIS2_EXTERN axis2_status_t oxs_ctx_set_recipient (oxs_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *recipient)
AXIS2_EXTERN axis2_status_t oxs_ctx_set_ref_key_name (oxs_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *ref_key_name)
AXIS2_EXTERN axis2_status_t oxs_ctx_set_enc_mtd_algorithm (oxs_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *enc_mtd_algorithm)
AXIS2_EXTERN axis2_status_t oxs_ctx_set_input_data (oxs_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *input_data)
AXIS2_EXTERN oxs_ctx_toxs_ctx_create (const axutil_env_t *env)

Typedef Documentation

typedef struct oxs_ctx_t oxs_ctx_t

Type name for struct oxs_ctx


Function Documentation

AXIS2_EXTERN axis2_status_t oxs_ctx_free ( oxs_ctx_t ctx,
const axutil_env_t *  env 
)

Free function of the context

Parameters:
ctx The OMXMLSecurity context
env pointer to environment struct
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_char_t* oxs_ctx_get_enc_mtd_algorithm ( oxs_ctx_t ctx,
const axutil_env_t *  env 
)

Parameters:
ctx The OMXMLSecurity context
env pointer to environment struct
Returns:
of the context

AXIS2_EXTERN axis2_char_t* oxs_ctx_get_encoding ( oxs_ctx_t ctx,
const axutil_env_t *  env 
)

Parameters:
ctx The OMXMLSecurity context
env pointer to environment struct
Returns:
of the context

AXIS2_EXTERN axis2_char_t* oxs_ctx_get_id ( oxs_ctx_t ctx,
const axutil_env_t *  env 
)

Parameters:
ctx The OMXMLSecurity context
env pointer to environment struct
Returns:
of the context

AXIS2_EXTERN axis2_char_t* oxs_ctx_get_input_data ( oxs_ctx_t ctx,
const axutil_env_t *  env 
)

Parameters:
ctx The OMXMLSecurity context
env pointer to environment struct
Returns:
of the context

AXIS2_EXTERN oxs_key_t* oxs_ctx_get_key ( oxs_ctx_t ctx,
const axutil_env_t *  env 
)

Parameters:
ctx The OMXMLSecurity context
env pointer to environment struct
Returns:
of the context

AXIS2_EXTERN axis2_char_t* oxs_ctx_get_mime_type ( oxs_ctx_t ctx,
const axutil_env_t *  env 
)

Parameters:
ctx The OMXMLSecurity context
env pointer to environment struct
Returns:
of the context

AXIS2_EXTERN oxs_ctx_mode_t oxs_ctx_get_mode ( oxs_ctx_t ctx,
const axutil_env_t *  env 
)

Returns the mode of the context

Parameters:
ctx The OMXMLSecurity context
env pointer to environment struct
Returns:
mode of the context

AXIS2_EXTERN oxs_ctx_operation_t oxs_ctx_get_operation ( oxs_ctx_t ctx,
const axutil_env_t *  env 
)

Parameters:
ctx The OMXMLSecurity context
env pointer to environment struct
Returns:
operation of the context

AXIS2_EXTERN axis2_char_t* oxs_ctx_get_recipient ( oxs_ctx_t ctx,
const axutil_env_t *  env 
)

Parameters:
ctx The OMXMLSecurity context
env pointer to environment struct
Returns:
of the context

AXIS2_EXTERN axis2_char_t* oxs_ctx_get_ref_key_name ( oxs_ctx_t ctx,
const axutil_env_t *  env 
)

Parameters:
ctx The OMXMLSecurity context
env pointer to environment struct
Returns:
of the context

AXIS2_EXTERN axis2_char_t* oxs_ctx_get_type ( oxs_ctx_t ctx,
const axutil_env_t *  env 
)

Parameters:
ctx The OMXMLSecurity context
env pointer to environment struct
Returns:
of the context

AXIS2_EXTERN axis2_status_t oxs_ctx_set_enc_mtd_algorithm ( oxs_ctx_t ctx,
const axutil_env_t *  env,
axis2_char_t *  enc_mtd_algorithm 
)

Parameters:
ctx The OMXMLSecurity context
env pointer to environment struct
enc_mtd_algorithm the encryption method algorithm
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_ctx_set_encoding ( oxs_ctx_t ctx,
const axutil_env_t *  env,
axis2_char_t *  encoding 
)

Parameters:
ctx The OMXMLSecurity context
env pointer to environment struct
encoding the encoding used
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_ctx_set_id ( oxs_ctx_t ctx,
const axutil_env_t *  env,
axis2_char_t *  id 
)

Parameters:
ctx The OMXMLSecurity context
env pointer to environment struct
id the id of the context
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_ctx_set_input_data ( oxs_ctx_t ctx,
const axutil_env_t *  env,
axis2_char_t *  input_data 
)

Parameters:
ctx The OMXMLSecurity context
env pointer to environment struct
input_data the input data
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_ctx_set_key ( oxs_ctx_t ctx,
const axutil_env_t *  env,
oxs_key_t key 
)

Parameters:
ctx The OMXMLSecurity context
env pointer to environment struct
key the key used
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_ctx_set_mime_type ( oxs_ctx_t ctx,
const axutil_env_t *  env,
axis2_char_t *  mime_type 
)

Parameters:
ctx The OMXMLSecurity context
env pointer to environment struct
mime_type the mime type used
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_ctx_set_mode ( oxs_ctx_t ctx,
const axutil_env_t *  env,
oxs_ctx_mode_t  mode 
)

Parameters:
ctx The OMXMLSecurity context
env pointer to environment struct
mode the mode of operation, EncryptedData/EncryptedKey
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_ctx_set_operation ( oxs_ctx_t ctx,
const axutil_env_t *  env,
oxs_ctx_operation_t  operation 
)

Parameters:
ctx The OMXMLSecurity context
env pointer to environment struct
operation the operation Encrypt/Decrypt/Sign/Verify
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_ctx_set_recipient ( oxs_ctx_t ctx,
const axutil_env_t *  env,
axis2_char_t *  recipient 
)

Parameters:
ctx The OMXMLSecurity context
env pointer to environment struct
recipient name of recipient
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_ctx_set_ref_key_name ( oxs_ctx_t ctx,
const axutil_env_t *  env,
axis2_char_t *  ref_key_name 
)

Parameters:
ctx The OMXMLSecurity context
env pointer to environment struct
ref_key_name the key name
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_ctx_set_type ( oxs_ctx_t ctx,
const axutil_env_t *  env,
axis2_char_t *  type 
)

Parameters:
ctx The OMXMLSecurity context
env pointer to environment struct
type ???Depricated?
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/rampart__authn__provider_8h-source.html0000644000076500007650000002324411202454455026467 0ustar shankarshankar Rampart/C: rampart_authn_provider.h Source File

rampart_authn_provider.h

Go to the documentation of this file.
00001 /*
00002 * Licensed to the Apache Software Foundation (ASF) under one or more
00003 * contributor license agreements.  See the NOTICE file distributed with
00004 * this work for additional information regarding copyright ownership.
00005 * The ASF licenses this file to You under the Apache License, Version 2.0
00006 * (the "License"); you may not use this file except in compliance with
00007 * the License.  You may obtain a copy of the License at
00008 *
00009 *      http://www.apache.org/licenses/LICENSE-2.0
00010 *
00011 * Unless required by applicable law or agreed to in writing, software
00012 * distributed under the License is distributed on an "AS IS" BASIS,
00013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014 * See the License for the specific language governing permissions and
00015 * limitations under the License.
00016 */
00017 
00018 #ifndef RAMPART_AUTHN_PROVIDER_H
00019 #define RAMPART_AUTHN_PROVIDER_H
00020 
00031 #include <axutil_param.h>
00032 #include <axis2_defines.h>
00033 #include <axutil_error.h>
00034 #include <axutil_env.h>
00035 #include <axutil_utils.h>
00036 #include <axis2_msg_ctx.h>
00037 
00038 #ifdef __cplusplus
00039 extern "C"
00040 {
00041 #endif
00042     enum rampart_authn_provider_status
00043     {
00044         RAMPART_AUTHN_PROVIDER_DENIED = 0,
00045         RAMPART_AUTHN_PROVIDER_GRANTED,
00046         RAMPART_AUTHN_PROVIDER_FOUND,
00047         RAMPART_AUTHN_PROVIDER_USER_FOUND,
00048         RAMPART_AUTHN_PROVIDER_USER_NOT_FOUND,
00049         RAMPART_AUTHN_PROVIDER_GENERAL_ERROR
00050     };
00051 
00052     typedef enum rampart_authn_provider_status rampart_authn_provider_status_t;
00053 
00059     typedef struct rampart_authn_provider_ops rampart_authn_provider_ops_t;
00060     typedef struct rampart_authn_provider rampart_authn_provider_t;
00061 
00062     struct rampart_authn_provider_ops
00063     {
00074         rampart_authn_provider_status_t (AXIS2_CALL*
00075         rampart_authn_provider_check_password)(
00076             rampart_authn_provider_t *authn_provider,
00077             const axutil_env_t* env,
00078             axis2_msg_ctx_t *msg_ctx,
00079             const axis2_char_t *username,
00080             const axis2_char_t *password);
00081 
00094         rampart_authn_provider_status_t (AXIS2_CALL*
00095         rampart_authn_provider_check_password_digest)(
00096             rampart_authn_provider_t *authn_provider,
00097             const axutil_env_t* env,
00098             axis2_msg_ctx_t *msg_ctx,
00099             const axis2_char_t *username,
00100             const axis2_char_t *nonce,
00101             const axis2_char_t *created,
00102             const char *digest);
00103 
00110         axis2_status_t (AXIS2_CALL*
00111         free)(
00112             rampart_authn_provider_t *authn_provider,
00113             const axutil_env_t* env);
00114 
00115     };
00116 
00117     struct rampart_authn_provider
00118     {
00119         rampart_authn_provider_ops_t *ops;
00120         axutil_param_t *param;
00121     };
00122 
00123     /*************************** Function macros **********************************/
00124 #define RAMPART_AUTHN_PROVIDER_FREE(authn_provider, env) \
00125       ((authn_provider)->ops->free (authn_provider, env))
00126 
00127 #define RAMPART_AUTHN_PROVIDER_CHECK_PASSWORD(authn_provider, env, msg_ctx, username, password) \
00128       ((authn_provider)->ops->rampart_authn_provider_check_password( \
00129             authn_provider, env, msg_ctx, username, password))
00130 
00131 #define RAMPART_AUTHN_PROVIDER_CHECK_PASSWORD_DIGEST(authn_provider, env, msg_ctx, username, nonce, nonce_length, digest) \
00132       ((authn_provider)->ops->rampart_authn_provider_check_password_digest( \
00133             authn_provider, env, msg_ctx, username, nonce, nonce_length, digest))
00134 
00136 #ifdef __cplusplus
00137 }
00138 #endif
00139 
00140 #endif /* RAMPART_AUTHN_PROVIDER_H */
00141 

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__openssl__pkey.html0000644000076500007650000002344511202454456023746 0ustar shankarshankar Rampart/C: OpenSSL PKEY

OpenSSL PKEY
[OpenSSL wrapper]


Defines

#define OPENSSL_PKEY_TYPE_UNKNOWN   0
#define OPENSSL_PKEY_TYPE_PUBLIC_KEY   1
#define OPENSSL_PKEY_TYPE_PRIVATE_KEY   2

Typedefs

typedef struct openssl_pkey_t openssl_pkey_t

Functions

EVP_PKEY * openssl_pkey_get_key (const openssl_pkey_t *pkey, const axutil_env_t *env)
axis2_char_t * openssl_pkey_get_name (const openssl_pkey_t *pkey, const axutil_env_t *env)
int openssl_pkey_get_size (const openssl_pkey_t *pkey, const axutil_env_t *env)
int openssl_pkey_get_type (const openssl_pkey_t *pkey, const axutil_env_t *env)
axis2_status_t openssl_pkey_set_key (openssl_pkey_t *pkey, const axutil_env_t *env, EVP_PKEY *key)
axis2_status_t openssl_pkey_set_name (openssl_pkey_t *pkey, const axutil_env_t *env, axis2_char_t *name)
axis2_status_t openssl_pkey_set_type (openssl_pkey_t *pkey, const axutil_env_t *env, int type)
axis2_status_t openssl_pkey_load (openssl_pkey_t *pkey, const axutil_env_t *env, axis2_char_t *filename, axis2_char_t *password)
axis2_status_t openssl_pkey_populate (openssl_pkey_t *pkey, const axutil_env_t *env, EVP_PKEY *key, axis2_char_t *name, int type)
axis2_status_t openssl_pkey_free (openssl_pkey_t *pkey, const axutil_env_t *env)
axis2_status_t openssl_pkey_increment_ref (openssl_pkey_t *pkey, const axutil_env_t *env)
AXIS2_EXTERN openssl_pkey_topenssl_pkey_create (const axutil_env_t *env)

Typedef Documentation

Type name for struct openssl_pkey


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/rampart__sct__provider__utility_8h-source.html0000644000076500007650000002620011202454455030056 0ustar shankarshankar Rampart/C: rampart_sct_provider_utility.h Source File

rampart_sct_provider_utility.h

Go to the documentation of this file.
00001 /*
00002 * Licensed to the Apache Software Foundation (ASF) under one or more
00003 * contributor license agreements.  See the NOTICE file distributed with
00004 * this work for additional information regarding copyright ownership.
00005 * The ASF licenses this file to You under the Apache License, Version 2.0
00006 * (the "License"); you may not use this file except in compliance with
00007 * the License.  You may obtain a copy of the License at
00008 *
00009 *      http://www.apache.org/licenses/LICENSE-2.0
00010 *
00011 * Unless required by applicable law or agreed to in writing, software
00012 * distributed under the License is distributed on an "AS IS" BASIS,
00013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014 * See the License for the specific language governing permissions and
00015 * limitations under the License.
00016 */
00017 
00018 #ifndef RAMPART_SCT_PROVIDER_UTILITY_H
00019 #define RAMPART_SCT_PROVIDER_UTILITY_H
00020 
00032 #include <axis2_defines.h>
00033 #include <axutil_env.h>
00034 #include <axis2_msg_ctx.h>
00035 #include <axis2_conf_ctx.h>
00036 #include <rampart_context.h>
00037 #include <secconv_security_context_token.h>
00038 #include <axutil_hash.h>
00039 
00040 #ifdef __cplusplus
00041 extern "C"
00042 {
00043 #endif
00044 
00055     AXIS2_EXTERN oxs_buffer_t *AXIS2_CALL
00056     sct_provider_get_secret(
00057         const axutil_env_t* env, 
00058         rp_property_t *token, 
00059         axis2_bool_t is_encryption, 
00060         rampart_context_t* rampart_context, 
00061         axis2_msg_ctx_t* msg_ctx);
00062 
00072     AXIS2_EXTERN oxs_buffer_t *AXIS2_CALL
00073         sct_provider_get_secret_using_id(
00074         const axutil_env_t* env, 
00075         axis2_char_t* sct_id, 
00076         rampart_context_t* rampart_context, 
00077         axis2_msg_ctx_t* msg_ctx);
00078 
00088     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00089     sct_provider_get_token(
00090         const axutil_env_t* env, 
00091         rp_property_t *token, 
00092         axis2_bool_t is_encryption, 
00093         rampart_context_t* rampart_context, 
00094         axis2_msg_ctx_t* msg_ctx);
00095 
00106     AXIS2_EXTERN axiom_node_t* AXIS2_CALL
00107     sct_provider_get_attached_reference(
00108         const axutil_env_t* env, 
00109         rp_property_t *token, 
00110         axis2_bool_t is_encryption, 
00111         rampart_context_t* rampart_context, 
00112         axis2_msg_ctx_t* msg_ctx);
00113 
00124     AXIS2_EXTERN axiom_node_t* AXIS2_CALL
00125     sct_provider_get_unattached_reference(
00126         const axutil_env_t* env, 
00127         rp_property_t *token, 
00128         axis2_bool_t is_encryption, 
00129         rampart_context_t* rampart_context, 
00130         axis2_msg_ctx_t* msg_ctx);
00131 
00144     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00145     sct_provider_validate_security_context_token(
00146         const axutil_env_t *env, 
00147         axiom_node_t *sct_node, 
00148         rampart_context_t *rampart_context, 
00149         axis2_msg_ctx_t *msg_ctx);
00150 
00162     AXIS2_EXTERN void* AXIS2_CALL
00163     sct_provider_obtain_sct_default(
00164         const axutil_env_t *env, 
00165         axis2_bool_t is_encryption, 
00166         axis2_msg_ctx_t* msg_ctx, 
00167         axis2_char_t *sct_id, 
00168         int sct_id_type,
00169         void* user_params);
00170 
00182     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00183     sct_provider_store_sct_default(
00184         const axutil_env_t *env, 
00185         axis2_msg_ctx_t* msg_ctx, 
00186         axis2_char_t *sct_global_id, 
00187         axis2_char_t *sct_local_id, 
00188         void *sct, 
00189         void *user_params);
00190 
00201     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00202     sct_provider_delete_sct_default(
00203         const axutil_env_t *env, 
00204         axis2_msg_ctx_t* msg_ctx, 
00205         axis2_char_t *sct_id, 
00206         int sct_id_type,
00207         void* user_params);
00208 
00217     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00218     sct_provider_validate_sct_default(
00219         const axutil_env_t *env, 
00220         axiom_node_t *sct_node, 
00221         axis2_msg_ctx_t *msg_ctx,
00222         void *user_params);
00223 
00224 
00226 #ifdef __cplusplus
00227 }
00228 #endif
00229 
00230 #endif  /* RAMPART_SCT_PROVIDER_UTILITY_H */
00231 
00232 

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__oxs__key__mgr.html0000644000076500007650000010132011202454456023705 0ustar shankarshankar Rampart/C: Key Manager

Key Manager
[OMXMLSecurity]


Typedefs

typedef struct oxs_key_mgr_t oxs_key_mgr_t

Enumerations

enum  oxs_key_mgr_format_t { OXS_KEY_MGR_FORMAT_UNKNOWN = 0, OXS_KEY_MGR_FORMAT_PEM, OXS_KEY_MGR_FORMAT_PKCS12 }

Functions

AXIS2_EXTERN openssl_pkey_toxs_key_mgr_load_private_key_from_string (const axutil_env_t *env, axis2_char_t *pem_buf, axis2_char_t *password)
AXIS2_EXTERN openssl_pkey_toxs_key_mgr_load_private_key_from_pem_file (const axutil_env_t *env, axis2_char_t *file_name, axis2_char_t *password)
AXIS2_EXTERN oxs_x509_cert_t * oxs_key_mgr_load_x509_cert_from_string (const axutil_env_t *env, axis2_char_t *pem_buf)
AXIS2_EXTERN oxs_x509_cert_t * oxs_key_mgr_load_x509_cert_from_pem_file (const axutil_env_t *env, axis2_char_t *filename)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_read_pkcs12_key_store (const axutil_env_t *env, axis2_char_t *pkcs12_file, axis2_char_t *password, oxs_x509_cert_t **cert, openssl_pkey_t **prv_key)
AXIS2_EXTERN oxs_key_mgr_t * oxs_key_mgr_create (const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_free (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_prv_key_password (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, axis2_char_t *password)
AXIS2_EXTERN axis2_char_t * oxs_key_mgr_get_prv_key_password (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_key_mgr_get_private_key_file (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_key_mgr_get_certificate_file (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_key_mgr_get_reciever_certificate_file (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_private_key_file (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, axis2_char_t *file_name)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_certificate_file (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, axis2_char_t *file_name)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_reciever_certificate_file (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, axis2_char_t *file_name)
AXIS2_EXTERN void * oxs_key_mgr_get_certificate (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN axis2_key_type_t oxs_key_mgr_get_certificate_type (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN void * oxs_key_mgr_get_prv_key (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN axis2_key_type_t oxs_key_mgr_get_prv_key_type (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN void * oxs_key_mgr_get_receiver_certificate (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN axis2_key_type_t oxs_key_mgr_get_receiver_certificate_type (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_certificate (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, void *certificate)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_certificate_type (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, axis2_key_type_t type)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_prv_key (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, void *key)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_prv_key_type (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, axis2_key_type_t type)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_receiver_certificate (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, void *certificate)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_receiver_certificate_type (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, axis2_key_type_t type)
AXIS2_EXTERN oxs_key_mgr_format_t oxs_key_mgr_get_format (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_format (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, oxs_key_mgr_format_t format)
AXIS2_EXTERN void * oxs_key_mgr_get_pem_buf (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_pem_buf (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, void *pem_buf)
AXIS2_EXTERN pkcs12_keystore_t * oxs_key_mgr_get_key_store (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_key_store (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, pkcs12_keystore_t *key_store)
AXIS2_EXTERN void * oxs_key_mgr_get_key_store_buff (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN oxs_x509_cert_t * oxs_key_mgr_get_receiver_certificate_from_ski (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, axis2_char_t *ski)
AXIS2_EXTERN oxs_x509_cert_t * oxs_key_mgr_get_receiver_certificate_from_issuer_serial (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, axis2_char_t *issuer, int serial)
AXIS2_EXTERN int oxs_key_mgr_get_key_store_buff_len (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_key_store_buff (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, void *key_store_buf, int len)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_increment_ref (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)

Function Documentation

AXIS2_EXTERN oxs_key_mgr_t* oxs_key_mgr_create ( const axutil_env_t *  env  ) 

Creates the key manager strucutre. pointer to environment struct

Returns:
pointer to the key manager (oxs_key_mgr_t *)

AXIS2_EXTERN axis2_status_t oxs_key_mgr_free ( oxs_key_mgr_t *  key_mgr,
const axutil_env_t *  env 
)

Free the key manager struct pointer to key manager struct which is going to free pointer to environment struct

Returns:
status of the free operation

AXIS2_EXTERN axis2_char_t* oxs_key_mgr_get_private_key_file ( oxs_key_mgr_t *  key_mgr,
const axutil_env_t *  env 
)

Returns the private key file location pointer to key manager struct pointer to environment struct

Returns:
location of the private key file

AXIS2_EXTERN axis2_char_t* oxs_key_mgr_get_prv_key_password ( oxs_key_mgr_t *  key_mgr,
const axutil_env_t *  env 
)

Return the private key file password pointer to key manager struct pointer to environment struct

Returns:
password of the private key file

AXIS2_EXTERN openssl_pkey_t* oxs_key_mgr_load_private_key_from_pem_file ( const axutil_env_t *  env,
axis2_char_t *  file_name,
axis2_char_t *  password 
)

Loads a private key from a file (in PEM format) pointer to environment struct the name of the file the passowrd for the file

Returns:
the generated key

AXIS2_EXTERN openssl_pkey_t* oxs_key_mgr_load_private_key_from_string ( const axutil_env_t *  env,
axis2_char_t *  pem_buf,
axis2_char_t *  password 
)

Loads a private key from a string buffer which of PEM format. -----BEGIN RSA PRIVATE KEY----- -----END RSA PRIVATE KEY----- pointer to environment struct the string buffer which of PEM format the password for the key file

Returns:
the generated key

AXIS2_EXTERN oxs_x509_cert_t* oxs_key_mgr_load_x509_cert_from_pem_file ( const axutil_env_t *  env,
axis2_char_t *  filename 
)

Loads an X509 certificate from a file pointer to environment struct the name of the file

Returns:
the generated X509 certificate

AXIS2_EXTERN oxs_x509_cert_t* oxs_key_mgr_load_x509_cert_from_string ( const axutil_env_t *  env,
axis2_char_t *  pem_buf 
)

Loads an X509 certificate from a string buffer -----BEGIN CERTIFICATE----- -----END CERTIFICATE----- pointer to environment struct PEM formatted string buffer

Returns:
the generated X509 certificate

AXIS2_EXTERN axis2_status_t oxs_key_mgr_read_pkcs12_key_store ( const axutil_env_t *  env,
axis2_char_t *  pkcs12_file,
axis2_char_t *  password,
oxs_x509_cert_t **  cert,
openssl_pkey_t **  prv_key 
)

Read a PKCS12 key store and populate a key and a certificate. pointer to environment struct name of the pkcs12 file password for the key/certificate pair in the key store the certificate the private key

Returns:
the generated X509 certificate

AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_prv_key_password ( oxs_key_mgr_t *  key_mgr,
const axutil_env_t *  env,
axis2_char_t *  password 
)

Set the password used to encrypt the private key (if any) Pointer to key manager struct pointer to environment struct password used to encrypt the private key

Returns:
status of the operation


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/openssl__hmac_8h-source.html0000644000076500007650000001573511202454454024231 0ustar shankarshankar Rampart/C: openssl_hmac.h Source File

openssl_hmac.h

Go to the documentation of this file.
00001 /*
00002  *   Copyright 2003-2004 The Apache Software Foundation.
00003  *
00004  *   Licensed under the Apache License, Version 2.0 (the "License");
00005  *   you may not use this file except in compliance with the License.
00006  *   You may obtain a copy of the License at
00007  *
00008  *       http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  *   Unless required by applicable law or agreed to in writing, software
00011  *   distributed under the License is distributed on an "AS IS" BASIS,
00012  *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  *   See the License for the specific language governing permissions and
00014  *   limitations under the License.
00015  */
00016 
00017 #include <openssl/sha.h>
00018 #include <openssl/hmac.h>
00019 #include <axutil_utils_defines.h>
00020 #include <axis2_defines.h>
00021 #include <axutil_env.h>
00022 #include <oxs_buffer.h>
00023 #include <oxs_key.h>
00024 
00029 #ifndef OPENSSL_HMAC
00030 #define OPENSSL_HMAC
00031 
00032 #ifdef __cplusplus
00033 extern "C" {
00034 #endif
00035 
00042         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00043         openssl_hmac_sha1(const axutil_env_t *env,
00044              oxs_key_t *secret,
00045              oxs_buffer_t *input,
00046              oxs_buffer_t *output); 
00047 
00048                 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00049                 openssl_p_sha1(const axutil_env_t *env,
00050                          oxs_key_t *secret,
00051                          axis2_char_t *label,
00052                          axis2_char_t *seed,
00053                          oxs_key_t *derived_key);
00054 
00055         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00056         openssl_p_hash(const axutil_env_t *env,
00057                         unsigned char *secret,
00058             unsigned int secret_len,
00059                         unsigned char *seed, 
00060                         unsigned int seed_len, 
00061                         unsigned char *output,
00062                         unsigned int output_len);
00063 
00064     /* @} */
00065 #ifdef __cplusplus
00066 }
00067 #endif
00068 
00069 #endif    /* OPENSSL_HMAC */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/rampart__callback_8h.html0000644000076500007650000001052411202454456023533 0ustar shankarshankar Rampart/C: rampart_callback.h File Reference

rampart_callback.h File Reference

The callback module for a password. More...

#include <axutil_utils_defines.h>
#include <axis2_defines.h>
#include <axutil_param.h>

Go to the source code of this file.

Classes

struct  rampart_callback_ops
struct  rampart_callback

Defines

#define RAMPART_CALLBACK_FREE(callback, env)   ((callback)->ops->free (callback, env))
#define RAMPART_CALLBACK_CALLBACK_PASSWORD(callback, env, username, param)   ((callback)->ops->callback_password(callback, env, username, param))
#define RAMPART_CALLBACK_CALLBACK_PKCS12_PASSWORD(callback, env, username, param)   ((callback)->ops->callback_pkcs12_password(callback, env, username, param))

Typedefs

typedef struct rampart_callback_ops rampart_callback_ops_t
typedef struct rampart_callback rampart_callback_t


Detailed Description

The callback module for a password.


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/oxs__c14n_8h.html0000644000076500007650000000741711202454455021715 0ustar shankarshankar Rampart/C: oxs_c14n.h File Reference

oxs_c14n.h File Reference

Cannonicalization implementation for OMXMLSecurity. More...

#include <axis2_const.h>
#include <axutil_error.h>
#include <axutil_utils_defines.h>
#include <axutil_utils.h>
#include <axutil_env.h>
#include <axutil_string.h>
#include <axiom_document.h>
#include <axutil_array_list.h>
#include <axutil_stream.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN axis2_status_t oxs_c14n_apply_stream_algo (const axutil_env_t *env, const axiom_document_t *doc, axutil_stream_t *stream, const axutil_array_list_t *ns_prefixes, const axiom_node_t *node, const axis2_char_t *algo)
AXIS2_EXTERN axis2_status_t oxs_c14n_apply_algo (const axutil_env_t *env, const axiom_document_t *doc, axis2_char_t **outbuf, const axutil_array_list_t *ns_prefixes, const axiom_node_t *node, const axis2_char_t *algo)
AXIS2_EXTERN axis2_status_t oxs_c14n_apply_stream (const axutil_env_t *env, const axiom_document_t *doc, axis2_bool_t comments, axutil_stream_t *stream, const axis2_bool_t exclusive, const axutil_array_list_t *ns_prefixes, const axiom_node_t *node)
AXIS2_EXTERN axis2_status_t oxs_c14n_apply (const axutil_env_t *env, const axiom_document_t *doc, const axis2_bool_t comments, axis2_char_t **outbuf, const axis2_bool_t exclusive, const axutil_array_list_t *ns_prefixes, const axiom_node_t *node)


Detailed Description

Cannonicalization implementation for OMXMLSecurity.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/rampart__engine_8h-source.html0000644000076500007650000001200311202454455024533 0ustar shankarshankar Rampart/C: rampart_engine.h Source File

rampart_engine.h

Go to the documentation of this file.
00001 /*
00002  * Copyright 2004,2005 The Apache Software Foundation.
00003  *
00004  * Licensed under the Apache License, Version 2.0 (the "License");
00005  * you may not use this file except in compliance with the License.
00006  * You may obtain a copy of the License at
00007  *
00008  *      http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  * Unless required by applicable law or agreed to in writing, software
00011  * distributed under the License is distributed on an "AS IS" BASIS,
00012  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  * See the License for the specific language governing permissions and
00014  * limitations under the License.
00015  */
00016 
00017 #ifndef RAMPART_ENGINE_H
00018 #define RAMPART_ENGINE_H
00019 
00032 #include <rp_includes.h>
00033 #include <rampart_context.h>
00034 #include <rampart_constants.h>
00035 #include <axis2_msg_ctx.h>
00036 
00037 
00038 #ifdef __cplusplus
00039 extern "C"
00040 {
00041 #endif
00042 
00050     AXIS2_EXTERN rampart_context_t *AXIS2_CALL
00051     rampart_engine_build_configuration(
00052         const axutil_env_t *env,
00053         axis2_msg_ctx_t *msg_ctx,
00054         axis2_bool_t is_inflow);
00055 
00056 #ifdef __cplusplus
00057 }
00058 #endif
00059 #endif
00060 
00061 
00062 
00063 
00064 
00065 
00066 

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__rampart__context.html0000644000076500007650000105256011202454457024447 0ustar shankarshankar Rampart/C: Rampart Context

Rampart Context
[Rampart Utilities]


Typedefs

typedef struct rampart_context_t rampart_context_t
typedef axis2_char_t *(* password_callback_fn )(const axutil_env_t *env, const axis2_char_t *username, void *user_params)
typedef axis2_status_t(* rampart_is_replayed_fn )(const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, void *user_params)
typedef
rampart_authn_provider_status_t(* 
auth_password_func )(const axutil_env_t *env, const axis2_char_t *username, const axis2_char_t *password, void *ctx)
typedef
rampart_authn_provider_status_t(* 
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, void *ctx)
typedef axis2_status_t(* store_security_context_token_fn )(const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axis2_char_t *sct_global_id, axis2_char_t *sct_local_id, void *sct, void *user_params)
typedef void *(* obtain_security_context_token_fn )(const axutil_env_t *env, axis2_bool_t is_encryption, axis2_msg_ctx_t *msg_ctx, axis2_char_t *sct_id, int sct_id_type, void *user_params)
typedef axis2_status_t(* delete_security_context_token_fn )(const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axis2_char_t *sct_id, int sct_id_type, void *user_params)
typedef axis2_status_t(* validate_security_context_token_fn )(const axutil_env_t *env, axiom_node_t *sct_node, axis2_msg_ctx_t *msg_ctx, void *user_params)

Functions

AXIS2_EXTERN rampart_context_t * rampart_context_create (const axutil_env_t *env)
AXIS2_EXTERN void rampart_context_free (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_policy_node (rampart_context_t *rampart_context, const axutil_env_t *env, axiom_node_t *policy_node)
AXIS2_EXTERN axis2_status_t rampart_context_set_prv_key (rampart_context_t *rampart_context, const axutil_env_t *env, void *prv_key)
AXIS2_EXTERN axis2_status_t 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 rampart_context_set_certificate (rampart_context_t *rampart_context, const axutil_env_t *env, void *certificate)
AXIS2_EXTERN axis2_status_t 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 rampart_context_set_receiver_certificate (rampart_context_t *rampart_context, const axutil_env_t *env, void *receiver_certificate)
AXIS2_EXTERN axis2_status_t 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 rampart_context_set_user (rampart_context_t *rampart_context, const axutil_env_t *env, axis2_char_t *user)
AXIS2_EXTERN axis2_status_t rampart_context_set_password (rampart_context_t *rampart_context, const axutil_env_t *env, axis2_char_t *password)
AXIS2_EXTERN axis2_status_t 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 rampart_context_set_pwcb_function (rampart_context_t *rampart_context, const axutil_env_t *env, password_callback_fn pwcb_function, void *user_params)
AXIS2_EXTERN axis2_status_t rampart_context_set_replay_detect_function (rampart_context_t *rampart_context, const axutil_env_t *env, rampart_is_replayed_fn is_replayed_function, void *user_params)
AXIS2_EXTERN void * rampart_context_get_rd_user_params (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t 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 rampart_context_set_ttl (rampart_context_t *rampart_context, const axutil_env_t *env, int ttl)
AXIS2_EXTERN axis2_status_t rampart_context_set_need_millisecond_precision (rampart_context_t *rampart_context, const axutil_env_t *env, axis2_bool_t need_millisecond_precision)
AXIS2_EXTERN axis2_status_t rampart_context_set_clock_skew_buffer (rampart_context_t *rampart_context, const axutil_env_t *env, int skew_buffer)
AXIS2_EXTERN axis2_status_t 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 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 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 rampart_context_add_key (rampart_context_t *rampart_context, const axutil_env_t *env, oxs_key_t *key)
AXIS2_EXTERN axiom_node_t * rampart_context_get_policy_node (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN void * rampart_context_get_prv_key (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_key_type_t rampart_context_get_prv_key_type (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN void * rampart_context_get_certificate (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_key_type_t rampart_context_get_certificate_type (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN void * rampart_context_get_receiver_certificate (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_key_type_t rampart_context_get_receiver_certificate_type (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_user (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_password (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_prv_key_password (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN password_callback_fn rampart_context_get_pwcb_function (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN rampart_is_replayed_fn rampart_context_get_replay_detect_function (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN void * rampart_context_get_pwcb_user_params (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN int rampart_context_get_ttl (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t rampart_context_get_need_millisecond_precision (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN int rampart_context_get_clock_skew_buffer (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_rd_val (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_password_type (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axutil_array_list_t * rampart_context_get_keys (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN oxs_key_trampart_context_get_key (rampart_context_t *rampart_context, const axutil_env_t *env, axis2_char_t *key_id)
AXIS2_EXTERN oxs_key_trampart_context_get_key_using_hash (rampart_context_t *rampart_context, const axutil_env_t *env, axis2_char_t *hash)
AXIS2_EXTERN rp_secpolicy_t * rampart_context_get_secpolicy (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_secpolicy (rampart_context_t *rampart_context, const axutil_env_t *env, rp_secpolicy_t *secpolicy)
AXIS2_EXTERN rampart_callback_t * rampart_context_get_password_callback (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t 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 rampart_context_get_auth_password_function (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t 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 rampart_context_get_auth_digest_function (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t 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 * 
rampart_context_get_authn_provider (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN void * rampart_context_get_replay_detector (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN void * rampart_context_get_sct_provider (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t 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 rampart_context_set_replay_detector (rampart_context_t *rampart_context, const axutil_env_t *env, void *replay_detector)
AXIS2_EXTERN axis2_status_t rampart_context_set_sct_provider (rampart_context_t *rampart_context, const axutil_env_t *env, void *sct_module)
AXIS2_EXTERN axis2_bool_t rampart_context_get_require_timestamp (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t rampart_context_get_require_ut (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN rp_property_type_t rampart_context_get_binding_type (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t rampart_context_is_include_timestamp (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t rampart_context_is_include_username_token (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t rampart_context_is_include_supporting_token (rampart_context_t *rampart_context, const axutil_env_t *env, axis2_bool_t server_side, axis2_bool_t is_inpath, rp_property_type_t token_type)
AXIS2_EXTERN axis2_bool_t rampart_context_is_include_protection_saml_token (rampart_context_t *rampart_context, axis2_bool_t server_side, axis2_bool_t is_inpath, const axutil_env_t *env)
AXIS2_EXTERN rp_property_t * rampart_context_get_supporting_token (rampart_context_t *rampart_context, const axutil_env_t *env, rp_property_type_t token_type)
AXIS2_EXTERN axis2_char_t * rampart_context_get_password_callback_class (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_authn_module_name (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_replay_detector_name (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_sct_provider_name (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t rampart_context_is_encrypt_before_sign (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t rampart_context_is_encrypt_signature (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t 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 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 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 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 * 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 rp_property_t * rampart_context_get_endorsing_token (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t rampart_context_check_is_derived_keys (const axutil_env_t *env, rp_property_t *token)
AXIS2_EXTERN axis2_char_t * rampart_context_get_derived_key_version (const axutil_env_t *env, rp_property_t *token)
AXIS2_EXTERN axis2_char_t * rampart_context_get_enc_sym_algo (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_enc_asym_algo (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_asym_sig_algo (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_digest_mtd (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_encryption_user (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t 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 * rampart_context_get_key_identifier (rampart_context_t *rampart_context, rp_property_t *token, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t rampart_context_is_token_type_supported (rp_property_type_t token_type, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t 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 * rampart_context_get_layout (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t rampart_context_check_whether_to_encrypt (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t rampart_context_check_whether_to_sign (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_user_from_file (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_password_type_from_file (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_certificate_file (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_receiver_certificate_file (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_private_key_file (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_ttl_from_file (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_clock_skew_buffer_from_file (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_need_millisecond_precision_from_file (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_rd_val_from_file (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN oxs_key_trampart_context_get_encryption_session_key (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_encryption_session_key (rampart_context_t *rampart_context, const axutil_env_t *env, oxs_key_t *session_key)
AXIS2_EXTERN oxs_key_trampart_context_get_signature_session_key (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_signature_session_key (rampart_context_t *rampart_context, const axutil_env_t *env, oxs_key_t *session_key)
AXIS2_EXTERN axis2_status_t rampart_context_increment_ref (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t rampart_context_is_sig_confirmation_reqd (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_encryption_token_id (rampart_context_t *rampart_context, const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN axis2_char_t * rampart_context_get_signature_token_id (rampart_context_t *rampart_context, const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN axis2_status_t rampart_context_set_encryption_token_id (rampart_context_t *rampart_context, const axutil_env_t *env, axis2_char_t *sct_id, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN axis2_status_t rampart_context_set_signature_token_id (rampart_context_t *rampart_context, const axutil_env_t *env, axis2_char_t *sct_id, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN rampart_saml_token_t * rampart_context_get_saml_token (rampart_context_t *rampart_context, const axutil_env_t *env, rampart_st_type_t token_type)
AXIS2_EXTERN axis2_status_t rampart_context_add_saml_token (rampart_context_t *rampart_context, const axutil_env_t *env, rampart_saml_token_t *token)
AXIS2_EXTERN axis2_status_t rampart_context_set_saml_tokens (rampart_context_t *rampart_context, const axutil_env_t *env, axutil_array_list_t *tokens)
AXIS2_EXTERN
issued_token_callback_func 
rampart_context_get_issued_token_aquire_function (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_issued_token_aquire_function (rampart_context_t *rampart_context, const axutil_env_t *env, issued_token_callback_func issued_token_aquire)
AXIS2_EXTERN int rampart_context_get_encryption_derived_key_len (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN int rampart_context_get_signature_derived_key_len (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN rp_algorithmsuite_t * rampart_context_get_algorithmsuite (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN oxs_key_mgr_t * rampart_context_get_key_mgr (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_key_mgr (rampart_context_t *rampart_context, const axutil_env_t *env, oxs_key_mgr_t *key_mgr)
AXIS2_EXTERN axis2_char_t * rampart_context_get_pkcs12_file_name (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_custom_tokens (rampart_context_t *rampart_context, const axutil_env_t *env, axutil_array_list_t *tokens)
AXIS2_EXTERN axutil_array_list_t * rampart_context_get_custom_tokens (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t rampart_context_get_found_cert_in_shp (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_found_cert_in_shp (rampart_context_t *rampart_context, const axutil_env_t *env, axis2_bool_t found_cert_in_shp)
AXIS2_EXTERN oxs_x509_cert_t * rampart_context_get_receiver_cert_found_in_shp (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_receiver_cert_found_in_shp (rampart_context_t *rampart_context, const axutil_env_t *env, oxs_x509_cert_t *cert)
AXIS2_EXTERN void * rampart_context_get_key_store_buff (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_key_store_buff (rampart_context_t *rampart_context, const axutil_env_t *env, void *key_store_buf, int length)
AXIS2_EXTERN axis2_status_t rampart_context_set_store_security_context_token_fn (rampart_context_t *rampart_context, const axutil_env_t *env, store_security_context_token_fn store_fn)
AXIS2_EXTERN axis2_status_t rampart_context_set_obtain_security_context_token_fn (rampart_context_t *rampart_context, const axutil_env_t *env, obtain_security_context_token_fn get_fn)
AXIS2_EXTERN axis2_status_t rampart_context_set_delete_security_context_token_fn (rampart_context_t *rampart_context, const axutil_env_t *env, delete_security_context_token_fn delete_fn)
AXIS2_EXTERN axis2_status_t rampart_context_set_security_context_token_user_params (rampart_context_t *rampart_context, const axutil_env_t *env, void *user_params)
AXIS2_EXTERN axis2_status_t rampart_context_set_validate_security_context_token_fn (rampart_context_t *rampart_context, const axutil_env_t *env, validate_security_context_token_fn validate_fn)
AXIS2_EXTERN
store_security_context_token_fn 
rampart_context_get_store_security_context_token_fn (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN
obtain_security_context_token_fn 
rampart_context_get_obtain_security_context_token_fn (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN
delete_security_context_token_fn 
rampart_context_get_delete_security_context_token_fn (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN void * rampart_context_get_security_context_token_user_params (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN
validate_security_context_token_fn 
rampart_context_get_validate_security_context_token_fn (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t rampart_context_is_different_session_key_for_enc_and_sign (const axutil_env_t *env, rampart_context_t *rampart_context)
AXIS2_EXTERN axis2_status_t rampart_context_set_receiver_certificate_file (rampart_context_t *rampart_context, const axutil_env_t *env, axis2_char_t *receiver_certificate_file)

Function Documentation

AXIS2_EXTERN axis2_status_t rampart_context_add_key ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
oxs_key_t key 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
key 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_add_saml_token ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
rampart_saml_token_t *  token 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
token 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_bool_t rampart_context_check_is_derived_keys ( const axutil_env_t *  env,
rp_property_t *  token 
)

Parameters:
env pointer to environment struct,Must not be NULL.
token 
Returns:
whether derived key needed or not

AXIS2_EXTERN axis2_bool_t rampart_context_check_whether_to_encrypt ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_bool_t rampart_context_check_whether_to_sign ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN rampart_context_t* rampart_context_create ( const axutil_env_t *  env  ) 

Create a rampart_context.rampart_context is the wrapper of secpolicy and the main configuration for rampart.

Parameters:
env pointer to environment struct,Must not be NULL.
Returns:
ramaprt_context_t* on successful creation.Else NULL;

AXIS2_EXTERN void rampart_context_free ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Frees a rampart_context.

Parameters:
rampart_context the rampart_context pointer to environment struct,Must not be NULL.

AXIS2_EXTERN rp_algorithmsuite_t* rampart_context_get_algorithmsuite ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_char_t* rampart_context_get_asym_sig_algo ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN auth_digest_func rampart_context_get_auth_digest_function ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN auth_password_func rampart_context_get_auth_password_function ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
password_callback_module 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_char_t* rampart_context_get_authn_module_name ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN rampart_authn_provider_t* rampart_context_get_authn_provider ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN rp_property_type_t rampart_context_get_binding_type ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN void* rampart_context_get_certificate ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_char_t* rampart_context_get_certificate_file ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_key_type_t rampart_context_get_certificate_type ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axutil_array_list_t* rampart_context_get_custom_tokens ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Get the node or the token list as an array. If the size is 0 that means there are no custom tokens specified by the client

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
the custom tokens list

AXIS2_EXTERN delete_security_context_token_fn rampart_context_get_delete_security_context_token_fn ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Get the function used to delete security context token

Parameters:
rampart_context Pointer to rampart context struct.
env Pointer to environment struct
Returns:
funtion pointer used to delete stored sct

AXIS2_EXTERN axis2_char_t* rampart_context_get_derived_key_version ( const axutil_env_t *  env,
rp_property_t *  token 
)

Parameters:
env pointer to environment struct,Must not be NULL.
token 
Returns:
derived key version. NULL on error.

AXIS2_EXTERN axis2_char_t* rampart_context_get_digest_mtd ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t 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 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
soap_envelope 
nodes_to_encrypt 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t 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 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
soap_envelope 
nodes_to_sign 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_char_t* rampart_context_get_enc_asym_algo ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_char_t* rampart_context_get_enc_sym_algo ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN int rampart_context_get_encryption_derived_key_len ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN oxs_key_t* rampart_context_get_encryption_session_key ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_char_t* rampart_context_get_encryption_token_id ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
axis2_msg_ctx_t *  msg_ctx 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_char_t* rampart_context_get_encryption_user ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN rp_property_t* rampart_context_get_endorsing_token ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_bool_t rampart_context_get_found_cert_in_shp ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Get the found_cert_in_shp from rampart context.

Parameters:
rampart_context Pointer to rampart context struct.
env Pointer to environment struct
Returns:
axis2_bool_t

AXIS2_EXTERN issued_token_callback_func rampart_context_get_issued_token_aquire_function ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN oxs_key_t* rampart_context_get_key ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
axis2_char_t *  key_id 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
key_id 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_char_t* rampart_context_get_key_identifier ( rampart_context_t *  rampart_context,
rp_property_t *  token,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
token 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN oxs_key_mgr_t* rampart_context_get_key_mgr ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Get the key manager from rampart context.

Parameters:
rampart_context Pointer to rampart context struct.
Pointer to environment struct
Returns:
pointer Key manager struct

AXIS2_EXTERN oxs_key_t* rampart_context_get_key_using_hash ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
axis2_char_t *  hash 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
hash 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axutil_array_list_t* rampart_context_get_keys ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_char_t* rampart_context_get_layout ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t 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 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
soap_envelope 
nodes_to_encrypt 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t 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 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
soap_envelope 
nodes_to_sign 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN obtain_security_context_token_fn rampart_context_get_obtain_security_context_token_fn ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Get the function used to get security context token

Parameters:
rampart_context Pointer to rampart context struct.
env Pointer to environment struct
Returns:
funtion pointer used to get stored sct

AXIS2_EXTERN axis2_char_t* rampart_context_get_password ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN rampart_callback_t* rampart_context_get_password_callback ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_char_t* rampart_context_get_password_callback_class ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_char_t* rampart_context_get_password_type ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_char_t* rampart_context_get_pkcs12_file_name ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Get the pkcs12 file name from rampart context.

Parameters:
rampart_context Pointer to rampart context struct.
Pointer to environment struct
Returns:
PKCS12 file name

AXIS2_EXTERN axiom_node_t* rampart_context_get_policy_node ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_char_t* rampart_context_get_private_key_file ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN void* rampart_context_get_prv_key ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_char_t* rampart_context_get_prv_key_password ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_key_type_t rampart_context_get_prv_key_type ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN password_callback_fn rampart_context_get_pwcb_function ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN void* rampart_context_get_pwcb_user_params ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN void* rampart_context_get_rd_user_params ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
user parameters for replay detector function or NULL

AXIS2_EXTERN axis2_char_t* rampart_context_get_rd_val ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN oxs_x509_cert_t* rampart_context_get_receiver_cert_found_in_shp ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Get the certificate found in shp from rampart context.

Parameters:
rampart_context Pointer to rampart context struct.
env Pointer to environment struct
Returns:
oxs_x509_cert_t Client certificate found when processing sec header, otherwise NULL

AXIS2_EXTERN void* rampart_context_get_receiver_certificate ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_char_t * rampart_context_get_receiver_certificate_file ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error
Get the receiver certificate file name from rampart context.
Parameters:
rampart_context Pointer to rampart context struct.
env Pointer to environment struct
Returns:
Receiver certificate file name

AXIS2_EXTERN axis2_key_type_t rampart_context_get_receiver_certificate_type ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN rampart_is_replayed_fn rampart_context_get_replay_detect_function ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN void* rampart_context_get_replay_detector ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_char_t* rampart_context_get_replay_detector_name ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_bool_t rampart_context_get_require_timestamp ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_bool_t rampart_context_get_require_ut ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN rampart_saml_token_t* rampart_context_get_saml_token ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
rampart_st_type_t  token_type 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
token_type 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN void* rampart_context_get_sct_provider ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_char_t* rampart_context_get_sct_provider_name ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN rp_secpolicy_t* rampart_context_get_secpolicy ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN void* rampart_context_get_security_context_token_user_params ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Get the user parameters used to invoke security context token related funtions

Parameters:
rampart_context Pointer to rampart context struct.
env Pointer to environment struct
user_params pointer to user params
Returns:
pointer to user parameter.

AXIS2_EXTERN int rampart_context_get_signature_derived_key_len ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN oxs_key_t* rampart_context_get_signature_session_key ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_char_t* rampart_context_get_signature_token_id ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
axis2_msg_ctx_t *  msg_ctx 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN store_security_context_token_fn rampart_context_get_store_security_context_token_fn ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Get the function used to store security context token

Parameters:
rampart_context Pointer to rampart context struct.
env Pointer to environment struct
Returns:
untion pointer used to store sct

AXIS2_EXTERN rp_property_t* rampart_context_get_supporting_token ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
rp_property_type_t  token_type 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
token_type 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN rp_property_t* 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 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op.
Parameters:
for_encryption 
sever_side 
is_inpath AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN int rampart_context_get_ttl ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_char_t* rampart_context_get_user ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN validate_security_context_token_fn rampart_context_get_validate_security_context_token_fn ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Get the function used to validate security context token

Parameters:
rampart_context Pointer to rampart context struct.
env Pointer to environment struct
Returns:
funtion pointer used to validate sct

AXIS2_EXTERN axis2_status_t rampart_context_increment_ref ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_bool_t rampart_context_is_different_session_key_for_enc_and_sign ( const axutil_env_t *  env,
rampart_context_t *  rampart_context 
)

check whether different keys are needed for encryption and signature

Parameters:
env pointer to environment struct
rampart_context rampart context
Returns:
AXIS2_TRUE if different keys are needed. AXIS2_FALSE otherwise.

AXIS2_EXTERN axis2_bool_t rampart_context_is_encrypt_before_sign ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_bool_t rampart_context_is_encrypt_signature ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_bool_t rampart_context_is_include_protection_saml_token ( rampart_context_t *  rampart_context,
axis2_bool_t  server_side,
axis2_bool_t  is_inpath,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
server_side 
is_inpath 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_bool_t rampart_context_is_include_supporting_token ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
axis2_bool_t  server_side,
axis2_bool_t  is_inpath,
rp_property_type_t  token_type 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
server_side 
is_inpath 
token_type 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_bool_t rampart_context_is_include_timestamp ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_bool_t rampart_context_is_include_username_token ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_bool_t 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 
)

Parameters:
rampart_context 
token 
identifier 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_bool_t rampart_context_is_sig_confirmation_reqd ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_bool_t 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 
)

Parameters:
rampart_context 
token 
token_type 
server_side 
is_inpath 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_bool_t rampart_context_is_token_type_supported ( rp_property_type_t  token_type,
const axutil_env_t *  env 
)

Parameters:
token_type 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_auth_digest_function ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
auth_digest_func  authenticate_with_digest 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
authentication_with_digest 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_auth_password_function ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
auth_password_func  authenticate_with_password 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
authentication_with_password 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_authn_provider ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
rampart_authn_provider_t *  authn_provider 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
authn_provider 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_certificate ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
void *  certificate 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
certificate 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_certificate_file ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
axis2_char_t *  certificate_file 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
cerficate_file 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_certificate_type ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
axis2_key_type_t  type 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
type 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_custom_tokens ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
axutil_array_list_t *  tokens 
)

Set the a node list to the context. These nodes will be append to the Security header

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
tokens the token list as an array
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_delete_security_context_token_fn ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
delete_security_context_token_fn  delete_fn 
)

Set the function used to delete security context token

Parameters:
rampart_context Pointer to rampart context struct.
env Pointer to environment struct
delete_fn funtion pointer used to delete stored sct
Returns:
status of the operation

AXIS2_EXTERN axis2_status_t rampart_context_set_encryption_session_key ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
oxs_key_t session_key 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
session_key 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_encryption_token_id ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
axis2_char_t *  sct_id,
axis2_msg_ctx_t *  msg_ctx 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
sct_id 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_found_cert_in_shp ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
axis2_bool_t  found_cert_in_shp 
)

Set the certificate found status to rampart context.

Parameters:
rampart_context Pointer to rampart context struct.
env Pointer to environment struct
found_cert_in_shp boolean value which specify the certificate found status
Returns:
status of the operation

AXIS2_EXTERN axis2_status_t rampart_context_set_issued_token_aquire_function ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
issued_token_callback_func  issued_token_aquire 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
issued_token_aquire 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_key_mgr ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
oxs_key_mgr_t *  key_mgr 
)

Set the key manager to rampart context.

Parameters:
rampart_context Pointer to rampart context struct.
Pointer to environment struct
key_mgr Pointer to key manager struct.
Returns:
status of the operation. AXIS2_SUCCESS on success AXIS2_FAILURE otherwise.

AXIS2_EXTERN axis2_status_t rampart_context_set_obtain_security_context_token_fn ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
obtain_security_context_token_fn  get_fn 
)

Set the function used to get security context token

Parameters:
rampart_context Pointer to rampart context struct.
env Pointer to environment struct
get_fn funtion pointer used to get stored sct
Returns:
status of the operation

AXIS2_EXTERN axis2_status_t rampart_context_set_password ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
axis2_char_t *  password 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
password 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_password_callback ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
rampart_callback_t *  password_callback_module 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_password_type ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
axis2_char_t *  password_type 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
password_type 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_password_type_from_file ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_policy_node ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
axiom_node_t *  policy_node 
)

Sets the policy node which is an om_node containing policy.This om_node can be build outside rampart.

Parameters:
rampart_context the rampart_context
env pointer to environment struct,Must not be NULL.
policy_node is an axiom_node.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_private_key_file ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
axis2_char_t *  private_key_file 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
private_key_file 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_prv_key ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
void *  prv_key 
)

Sets private key of sender as a buffer.This can be set from outside rampart.

Parameters:
rampart_context the rampart_context
env pointer to environment struct,Must not be NULL.
prv_key is a void buffer.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_prv_key_password ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
axis2_char_t *  prv_key_password 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
prv_key_password 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_prv_key_type ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
axis2_key_type_t  type 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_pwcb_function ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
password_callback_fn  pwcb_function,
void *  user_params 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
pwcb_function 
ctx 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_rd_val ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
axis2_char_t *  rd_val 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
rd_val 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_rd_val_from_file ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_receiver_cert_found_in_shp ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
oxs_x509_cert_t *  cert 
)

Set the found_cert_in_shp to rampart context.

Parameters:
rampart_context Pointer to rampart context struct.
env Pointer to environment struct
cert pointer to the certficate
Returns:
status of the operation

AXIS2_EXTERN axis2_status_t rampart_context_set_receiver_certificate ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
void *  receiver_certificate 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op.
Parameters:
receiver_certificate returns status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_receiver_certificate_type ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
axis2_key_type_t  type 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
type 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_replay_detect_function ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
rampart_is_replayed_fn  is_replayed_function,
void *  user_params 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
is_replayed_function 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_replay_detector ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
void *  replay_detector 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
replay_detector 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_saml_tokens ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
axutil_array_list_t *  tokens 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
tokens 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_sct_provider ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
void *  sct_module 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
sct_module 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_secpolicy ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
rp_secpolicy_t *  secpolicy 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
secpolicy 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_security_context_token_user_params ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
void *  user_params 
)

Set the user parameters used to invoke security context token related funtions

Parameters:
rampart_context Pointer to rampart context struct.
env Pointer to environment struct
user_params pointer to user params
Returns:
status of the operation

AXIS2_EXTERN axis2_status_t rampart_context_set_signature_session_key ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
oxs_key_t session_key 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
session_key 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_signature_token_id ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
axis2_char_t *  sct_id,
axis2_msg_ctx_t *  msg_ctx 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
sct_id 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_store_security_context_token_fn ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
store_security_context_token_fn  store_fn 
)

Set the function used to store security context token

Parameters:
rampart_context Pointer to rampart context struct.
env Pointer to environment struct
store_fn funtion pointer used to store sct
Returns:
status of the operation

AXIS2_EXTERN axis2_status_t rampart_context_set_ttl ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
int  ttl 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
ttl 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_ttl_from_file ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_user ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
axis2_char_t *  user 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
user 
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_user_from_file ( rampart_context_t *  rampart_context,
const axutil_env_t *  env 
)

Parameters:
rampart_context 
env pointer to environment struct,Must not be NULL.
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error

AXIS2_EXTERN axis2_status_t rampart_context_set_validate_security_context_token_fn ( rampart_context_t *  rampart_context,
const axutil_env_t *  env,
validate_security_context_token_fn  validate_fn 
)

Set the function used to validate security context token

Parameters:
rampart_context Pointer to rampart context struct.
env Pointer to environment struct
validate_fn funtion pointer used to validate sct
Returns:
status of the operation


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/rampart__config_8h.html0000644000076500007650000001563211202454456023251 0ustar shankarshankar Rampart/C: rampart_config.h File Reference

rampart_config.h File Reference

The Rampart Config, in which user configurations are stored. More...

#include <axis2_util.h>
#include <axis2_defines.h>
#include <axutil_env.h>
#include <rampart_saml_token.h>
#include <rampart_issued_token.h>

Go to the source code of this file.

Typedefs

typedef struct rampart_config_t rampart_config_t

Functions

AXIS2_EXTERN rampart_config_t * rampart_config_create (const axutil_env_t *env)
AXIS2_EXTERN void rampart_config_free (rampart_config_t *rampart_config, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_config_set_username (rampart_config_t *rampart_config, const axutil_env_t *env, axis2_char_t *user)
AXIS2_EXTERN axis2_status_t rampart_config_set_password (rampart_config_t *rampart_config, const axutil_env_t *env, axis2_char_t *password)
AXIS2_EXTERN axis2_status_t rampart_config_set_password_type (rampart_config_t *rampart_config, const axutil_env_t *env, axis2_char_t *password_type)
AXIS2_EXTERN axis2_status_t rampart_config_set_ttl (rampart_config_t *rampart_config, const axutil_env_t *env, int ttl)
AXIS2_EXTERN int rampart_config_add_saml_token (rampart_config_t *rampart_config, const axutil_env_t *env, rampart_saml_token_t *saml)
AXIS2_EXTERN axis2_status_t rampart_config_set_issued_token_aquire_function (rampart_config_t *rampart_config, const axutil_env_t *env, issued_token_callback_func issued_token_aquire)
AXIS2_EXTERN axis2_char_t * rampart_config_get_username (rampart_config_t *rampart_config, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_config_get_password (rampart_config_t *rampart_config, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_config_get_password_type (rampart_config_t *rampart_config, const axutil_env_t *env)
AXIS2_EXTERN int rampart_config_get_ttl (rampart_config_t *rampart_config, const axutil_env_t *env)
AXIS2_EXTERN axutil_array_list_t * rampart_config_get_saml_tokens (rampart_config_t *rampart_config, const axutil_env_t *env)
AXIS2_EXTERN
issued_token_callback_func 
rampart_config_get_issued_token_aquire_function (rampart_config_t *rampart_config, const axutil_env_t *env)


Detailed Description

The Rampart Config, in which user configurations are stored.


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__rampart__config.html0000644000076500007650000007040611202454457024226 0ustar shankarshankar Rampart/C: Rampart Config

Rampart Config
[Rampart Utilities]


Typedefs

typedef struct rampart_config_t rampart_config_t

Functions

AXIS2_EXTERN rampart_config_t * rampart_config_create (const axutil_env_t *env)
AXIS2_EXTERN void rampart_config_free (rampart_config_t *rampart_config, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_config_set_username (rampart_config_t *rampart_config, const axutil_env_t *env, axis2_char_t *user)
AXIS2_EXTERN axis2_status_t rampart_config_set_password (rampart_config_t *rampart_config, const axutil_env_t *env, axis2_char_t *password)
AXIS2_EXTERN axis2_status_t rampart_config_set_password_type (rampart_config_t *rampart_config, const axutil_env_t *env, axis2_char_t *password_type)
AXIS2_EXTERN axis2_status_t rampart_config_set_ttl (rampart_config_t *rampart_config, const axutil_env_t *env, int ttl)
AXIS2_EXTERN int rampart_config_add_saml_token (rampart_config_t *rampart_config, const axutil_env_t *env, rampart_saml_token_t *saml)
AXIS2_EXTERN axis2_status_t rampart_config_set_issued_token_aquire_function (rampart_config_t *rampart_config, const axutil_env_t *env, issued_token_callback_func issued_token_aquire)
AXIS2_EXTERN axis2_char_t * rampart_config_get_username (rampart_config_t *rampart_config, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_config_get_password (rampart_config_t *rampart_config, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_config_get_password_type (rampart_config_t *rampart_config, const axutil_env_t *env)
AXIS2_EXTERN int rampart_config_get_ttl (rampart_config_t *rampart_config, const axutil_env_t *env)
AXIS2_EXTERN axutil_array_list_t * rampart_config_get_saml_tokens (rampart_config_t *rampart_config, const axutil_env_t *env)
AXIS2_EXTERN
issued_token_callback_func 
rampart_config_get_issued_token_aquire_function (rampart_config_t *rampart_config, const axutil_env_t *env)

Function Documentation

AXIS2_EXTERN int rampart_config_add_saml_token ( rampart_config_t *  rampart_config,
const axutil_env_t *  env,
rampart_saml_token_t *  saml 
)

Sets saml token needed to build/process the message

Parameters:
rampart_config rampart configuration structure
evn pointer to environment struct,Must not b e NULL.
saml SAML token used to build/process the message
Returns:
status of the op.

AXIS2_EXTERN rampart_config_t* rampart_config_create ( const axutil_env_t *  env  ) 

Create a rampart_config which can be used to get rampart specific configurations from user

Parameters:
env pointer to environment struct,Must not be NULL.
Returns:
ramaprt_config_t* on successful creation. Else NULL;

AXIS2_EXTERN void rampart_config_free ( rampart_config_t *  rampart_config,
const axutil_env_t *  env 
)

Frees a rampart_config.

Parameters:
rampart_config the rampart_config
env pointer to environment struct,Must not be NULL.

AXIS2_EXTERN issued_token_callback_func rampart_config_get_issued_token_aquire_function ( rampart_config_t *  rampart_config,
const axutil_env_t *  env 
)

Gets stored issued token aquire function pointer

Parameters:
rampart_config rampart configuration structure
evn pointer to environment struct,Must not be NULL. returns issued token aquire function pointer stored in rampart config

AXIS2_EXTERN axis2_char_t* rampart_config_get_password ( rampart_config_t *  rampart_config,
const axutil_env_t *  env 
)

Gets stored password

Parameters:
rampart_config rampart configuration structure
evn pointer to environment struct,Must not be NULL. returns password stored in rampart config

AXIS2_EXTERN axis2_char_t* rampart_config_get_password_type ( rampart_config_t *  rampart_config,
const axutil_env_t *  env 
)

Gets stored password type

Parameters:
rampart_config rampart configuration structure
evn pointer to environment struct,Must not be NULL. returns password type stored in rampart config

AXIS2_EXTERN axutil_array_list_t* rampart_config_get_saml_tokens ( rampart_config_t *  rampart_config,
const axutil_env_t *  env 
)

Gets stored SAML token

Parameters:
rampart_config rampart configuration structure
evn pointer to environment struct,Must not be NULL. returns SAML token stored in rampart config

AXIS2_EXTERN int rampart_config_get_ttl ( rampart_config_t *  rampart_config,
const axutil_env_t *  env 
)

Gets stored time to live

Parameters:
rampart_config rampart configuration structure
evn pointer to environment struct,Must not be NULL. returns time to live parameter stored in rampart config

AXIS2_EXTERN axis2_char_t* rampart_config_get_username ( rampart_config_t *  rampart_config,
const axutil_env_t *  env 
)

Gets stored username

Parameters:
rampart_config rampart configuration structure
evn pointer to environment struct,Must not be NULL. returns username stored in rampart config

AXIS2_EXTERN axis2_status_t rampart_config_set_issued_token_aquire_function ( rampart_config_t *  rampart_config,
const axutil_env_t *  env,
issued_token_callback_func  issued_token_aquire 
)

sets function pointer used to aquire issued token

Parameters:
rampart_config rampart configuration structure
evn pointer to environment struct,Must not be NULL.
issued_token_aquire function pointer from which issued token will be obtained
Returns:
status of the op.

AXIS2_EXTERN axis2_status_t rampart_config_set_password ( rampart_config_t *  rampart_config,
const axutil_env_t *  env,
axis2_char_t *  password 
)

set password of the user. Will be used to build UsernameToken

Parameters:
rampart_config rampart configuration structure
evn pointer to environment struct,Must not be NULL.
password password of the user
Returns:
status of the op.

AXIS2_EXTERN axis2_status_t rampart_config_set_password_type ( rampart_config_t *  rampart_config,
const axutil_env_t *  env,
axis2_char_t *  password_type 
)

set password type needed. Will be used to build UsernameToken

Parameters:
rampart_config rampart configuration structure
evn pointer to environment struct,Must not be NULL.
password_type type of the password. (hash/plain)
Returns:
status of the op.

AXIS2_EXTERN axis2_status_t rampart_config_set_ttl ( rampart_config_t *  rampart_config,
const axutil_env_t *  env,
int  ttl 
)

sets time to live parameter needed by Timestamp element

Parameters:
rampart_config rampart configuration structure
evn pointer to environment struct,Must not be NULL.
ttl time to live value in seconds
Returns:
status of the op.

AXIS2_EXTERN axis2_status_t rampart_config_set_username ( rampart_config_t *  rampart_config,
const axutil_env_t *  env,
axis2_char_t *  user 
)

set username needed to build username token

Parameters:
rampart_config rampart configuration structure
evn pointer to environment struct,Must not be NULL.
user name of the user
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/openssl__x509_8h.html0000644000076500007650000002152511202454455022523 0ustar shankarshankar Rampart/C: openssl_x509.h File Reference

openssl_x509.h File Reference

Extracts information from a X509 certificate. More...

#include <openssl/rand.h>
#include <openssl/evp.h>
#include <openssl/pem.h>
#include <openssl/bio.h>
#include <openssl_constants.h>
#include <openssl_pkey.h>
#include <axis2_util.h>
#include <openssl/pkcs12.h>
#include <oxs_error.h>

Go to the source code of this file.

Enumerations

enum  openssl_x509_format_t { OPENSSL_X509_FORMAT_PEM = 0, OPENSSL_X509_FORMAT_DER, OPENSSL_X509_FORMAT_PKCS12 }
enum  openssl_x509_info_type_t {
  OPENSSL_X509_INFO_SUBJECT = 0, OPENSSL_X509_INFO_ISSUER, OPENSSL_X509_INFO_VALID_FROM, OPENSSL_X509_INFO_VALID_TO,
  OPENSSL_X509_INFO_FINGER, OPENSSL_X509_INFO_SIGNATURE, OPENSSL_X509_INFO_VERSION, OPENSSL_X509_INFO_PUBKEY,
  OPENSSL_X509_INFO_PUBKEY_ALGO, OPENSSL_X509_INFO_DATA_CERT, OPENSSL_X509_INFO_COMMON_NAME
}

Functions

AXIS2_EXTERN axis2_status_t openssl_x509_load_from_buffer (const axutil_env_t *env, axis2_char_t *b64_encoded_buf, X509 **cert)
AXIS2_EXTERN axis2_status_t openssl_x509_load_from_pem (const axutil_env_t *env, axis2_char_t *filename, X509 **cert)
AXIS2_EXTERN axis2_status_t openssl_x509_load_from_pkcs12 (const axutil_env_t *env, axis2_char_t *filename, axis2_char_t *password, X509 **cert, EVP_PKEY **pkey, STACK_OF(X509)**ca)
AXIS2_EXTERN axis2_status_t openssl_x509_load_certificate (const axutil_env_t *env, openssl_x509_format_t format, axis2_char_t *filename, axis2_char_t *password, X509 **cert)
AXIS2_EXTERN axis2_char_t * openssl_x509_get_cert_data (const axutil_env_t *env, X509 *cert)
AXIS2_EXTERN int openssl_x509_get_serial (const axutil_env_t *env, X509 *cert)
AXIS2_EXTERN unsigned long openssl_x509_get_subject_name_hash (const axutil_env_t *env, X509 *cert)
AXIS2_EXTERN axis2_status_t openssl_x509_get_pubkey (const axutil_env_t *env, X509 *cert, EVP_PKEY **pubkey)
AXIS2_EXTERN axis2_char_t * openssl_x509_get_subject_key_identifier (const axutil_env_t *env, X509 *cert)
AXIS2_EXTERN axis2_char_t * openssl_x509_get_info (const axutil_env_t *env, openssl_x509_info_type_t type, X509 *cert)
AXIS2_EXTERN axis2_char_t * openssl_x509_get_common_name (const axutil_env_t *env, X509 *cert)
AXIS2_EXTERN void openssl_x509_print (const axutil_env_t *env, X509 *cert)


Detailed Description

Extracts information from a X509 certificate.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/rampart__issued_8h-source.html0000644000076500007650000001146211202454455024572 0ustar shankarshankar Rampart/C: rampart_issued.h Source File

rampart_issued.h

00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef RAMPART_ISSUED_H
00019 #define RAMPART_ISSUED_H
00020 
00021 #include <rampart_context.h>
00022 #include <rampart_issued_token.h>
00023 
00024 #ifdef __cplusplus
00025 extern "C"
00026 {
00027 #endif
00028 
00039         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00040         rampart_issued_supporting_token_build(
00041                 rampart_context_t *rampart_context, 
00042         const axutil_env_t *env, 
00043                 axiom_node_t *sec_node,
00044         axutil_array_list_t *sign_parts);
00045 
00046 
00047 
00048 #ifdef __cplusplus
00049 }
00050 #endif
00051 
00052 #endif
00053 

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/rampart__context_8h-source.html0000644000076500007650000022677411202454455025000 0ustar shankarshankar Rampart/C: rampart_context.h Source File

rampart_context.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef RAMPART_CONTEXT_H
00019 #define RAMPART_CONTEXT_H
00020 
00032 #include <rp_includes.h>
00033 #include <rp_secpolicy.h>
00034 #include <rampart_authn_provider.h>
00035 #include <axutil_property.h>
00036 #include <rampart_constants.h>
00037 #include <rampart_callback.h>
00038 #include <rampart_authn_provider.h>
00039 #include <axis2_key_type.h>
00040 #include <axis2_msg_ctx.h>
00041 #include <oxs_key.h>
00042 #include <axutil_array_list.h>
00043 #include <rampart_saml_token.h>
00044 #include <rampart_issued_token.h>
00045 #include <oxs_key_mgr.h>
00046 
00047 #ifdef __cplusplus
00048 extern "C"
00049 {
00050 #endif
00051 
00052     typedef struct rampart_context_t rampart_context_t;
00053 
00054     typedef axis2_char_t *(AXIS2_CALL*
00055         password_callback_fn)(
00056         const axutil_env_t *env,
00057         const axis2_char_t *username,
00058         void *user_params);
00059 
00060     typedef axis2_status_t (AXIS2_CALL*
00061         rampart_is_replayed_fn)(
00062         const axutil_env_t *env,
00063         axis2_msg_ctx_t* msg_ctx,
00064         rampart_context_t *rampart_context,
00065         void *user_params);
00066 
00067     typedef rampart_authn_provider_status_t (AXIS2_CALL*
00068         auth_password_func)(
00069         const axutil_env_t* env,
00070         const axis2_char_t *username,
00071         const axis2_char_t *password,
00072         void *ctx);
00073 
00074     typedef rampart_authn_provider_status_t (AXIS2_CALL*
00075         auth_digest_func)(
00076         const axutil_env_t* env,
00077         const axis2_char_t *username,
00078         const axis2_char_t *nonce,
00079         const axis2_char_t *created,
00080         const char *digest,
00081         void *ctx);
00082 
00083     /* This function will be used to store sct. Global id, local id will be given so function 
00084      * writer can store them in anyway. Get or Delete method will use any of the Global id or local 
00085      * id, so Store function writer should be ready for that.
00086      */
00087     typedef axis2_status_t (AXIS2_CALL*
00088         store_security_context_token_fn)(
00089         const axutil_env_t *env, 
00090         axis2_msg_ctx_t* msg_ctx, 
00091         axis2_char_t *sct_global_id, 
00092         axis2_char_t *sct_local_id, 
00093         void *sct, 
00094         void *user_params);
00095 
00096     /* This function will be called to get previously stored sct. If secure conversation token is 
00097      * referred by this method, then sct_id will be not null. However, if security context token 
00098      * (pre-agreed and established offline) is refered then sct_id might be NULL. is_encryption is 
00099      * passed, so that if pre-agreed sct is different for encryption and signature, then it could be 
00100      * accessed. sct_id_type will be RAMPART_SCT_ID_TYPE_LOCAL or RAMPART_SCT_ID_TYPE_GLOBAL if 
00101      * sct_id is NOT NULL. If sct_id is NULL, then sct_id_type will be RAMPART_SCT_ID_TYPE_UNKNOWN
00102      */
00103     typedef void* (AXIS2_CALL*
00104         obtain_security_context_token_fn)(
00105         const axutil_env_t *env, 
00106         axis2_bool_t is_encryption, 
00107         axis2_msg_ctx_t* msg_ctx, 
00108         axis2_char_t *sct_id, 
00109         int sct_id_type,
00110         void* user_params);
00111 
00112     /* This function will be called to delete previously stored sct. sct_id_type can be 
00113      * RAMPART_SCT_ID_TYPE_LOCAL or RAMPART_SCT_ID_TYPE_GLOBAL
00114      */
00115     typedef axis2_status_t (AXIS2_CALL*
00116         delete_security_context_token_fn)(
00117         const axutil_env_t *env, 
00118         axis2_msg_ctx_t* msg_ctx, 
00119         axis2_char_t *sct_id, 
00120         int sct_id_type,
00121         void* user_params);
00122 
00123     /* Validates whether security context token is valid or not. Normally, we can directly send 
00124      * true as response. But if syntax of security context token is altered/added by using 
00125      * extensible mechanism (e.g having sessions, etc.) then user can implement this method. 
00126      * Axiom representation of the sct will be given as the parameter, because if sct is 
00127      * extended, we don't know the syntax. Method writer can implement whatever needed.
00128      */
00129     typedef axis2_status_t (AXIS2_CALL*
00130     validate_security_context_token_fn)(
00131         const axutil_env_t *env, 
00132         axiom_node_t *sct_node, 
00133         axis2_msg_ctx_t *msg_ctx, 
00134         void *user_params);
00135 
00136         
00144     AXIS2_EXTERN rampart_context_t *AXIS2_CALL
00145     rampart_context_create(
00146         const axutil_env_t *env);
00147 
00148 
00155     AXIS2_EXTERN void AXIS2_CALL
00156     rampart_context_free(
00157         rampart_context_t *rampart_context,
00158         const axutil_env_t *env);
00159 
00160 
00161     /****************************************************************/
00162 
00173     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00174     rampart_context_set_policy_node(rampart_context_t *rampart_context,
00175                                     const axutil_env_t *env,
00176                                     axiom_node_t *policy_node);
00177 
00188     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00189     rampart_context_set_prv_key(rampart_context_t *rampart_context,
00190                                 const axutil_env_t *env,
00191                                 void *prv_key);
00201     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00202     rampart_context_set_prv_key_type(rampart_context_t *rampart_context,
00203                                      const axutil_env_t *env,
00204                                      axis2_key_type_t type);
00214     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00215     rampart_context_set_certificate(rampart_context_t *rampart_context,
00216                                     const axutil_env_t *env,
00217                                     void *certificate);
00227     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00228     rampart_context_set_certificate_type(rampart_context_t *rampart_context,
00229                                          const axutil_env_t *env,
00230                                          axis2_key_type_t type);
00241     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00242     rampart_context_set_receiver_certificate(rampart_context_t *rampart_context,
00243             const axutil_env_t *env,
00244             void *receiver_certificate);
00254     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00255     rampart_context_set_receiver_certificate_type(rampart_context_t *rampart_context,
00256             const axutil_env_t *env,
00257             axis2_key_type_t type);
00267     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00268     rampart_context_set_user(rampart_context_t *rampart_context,
00269                              const axutil_env_t *env,
00270                              axis2_char_t *user);
00280     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00281     rampart_context_set_password(rampart_context_t *rampart_context,
00282                                  const axutil_env_t *env,
00283                                  axis2_char_t *password);
00293     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00294     rampart_context_set_prv_key_password(rampart_context_t *rampart_context,
00295                                          const axutil_env_t *env,
00296                                          axis2_char_t *prv_key_password);
00307     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00308     rampart_context_set_pwcb_function(rampart_context_t *rampart_context,
00309                                       const axutil_env_t *env,
00310                                       password_callback_fn pwcb_function,
00311                                       void *user_params);
00321     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00322     rampart_context_set_replay_detect_function(rampart_context_t *rampart_context,
00323         const axutil_env_t *env,
00324         rampart_is_replayed_fn is_replayed_function,
00325         void *user_params);
00326     
00332     AXIS2_EXTERN void * AXIS2_CALL
00333     rampart_context_get_rd_user_params(
00334         rampart_context_t *rampart_context,
00335         const axutil_env_t *env);
00346     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00347     rampart_context_set_password_type(rampart_context_t *rampart_context,
00348                                       const axutil_env_t *env,
00349                                       axis2_char_t *password_type);
00359     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00360     rampart_context_set_ttl(
00361         rampart_context_t *rampart_context,
00362         const axutil_env_t *env,
00363         int ttl);
00364 
00365     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00366     rampart_context_set_need_millisecond_precision(
00367         rampart_context_t *rampart_context,
00368         const axutil_env_t *env,
00369         axis2_bool_t need_millisecond_precision);
00370 
00371     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00372     rampart_context_set_clock_skew_buffer(
00373         rampart_context_t *rampart_context,
00374         const axutil_env_t *env,
00375         int skew_buffer);
00376 
00386     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00387     rampart_context_set_rd_val(rampart_context_t *rampart_context,
00388                                const axutil_env_t *env,
00389                                axis2_char_t *rd_val);
00399     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00400     rampart_context_set_private_key_file(rampart_context_t *rampart_context,
00401                                          const axutil_env_t *env,
00402                                          axis2_char_t *private_key_file);
00412     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00413     rampart_context_set_certificate_file(rampart_context_t *rampart_context,
00414                                          const axutil_env_t *env,
00415                                          axis2_char_t *certificate_file);
00416     
00426     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00427     rampart_context_add_key(rampart_context_t *rampart_context,
00428                                 const axutil_env_t *env,
00429                                 oxs_key_t *key);
00430 
00431     /**********************************************************8*/
00432 
00433     /*Getters of the above set functions*/
00441     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00442     rampart_context_get_policy_node(
00443         rampart_context_t *rampart_context,
00444         const axutil_env_t *env);
00453     AXIS2_EXTERN void *AXIS2_CALL
00454     rampart_context_get_prv_key(
00455         rampart_context_t *rampart_context,
00456         const axutil_env_t *env);
00465     AXIS2_EXTERN axis2_key_type_t AXIS2_CALL
00466     rampart_context_get_prv_key_type(
00467         rampart_context_t *rampart_context,
00468         const axutil_env_t *env);
00477     AXIS2_EXTERN void *AXIS2_CALL
00478     rampart_context_get_certificate(
00479         rampart_context_t *rampart_context,
00480         const axutil_env_t *env);
00489     AXIS2_EXTERN axis2_key_type_t AXIS2_CALL
00490     rampart_context_get_certificate_type(
00491         rampart_context_t *rampart_context,
00492         const axutil_env_t *env);
00501     AXIS2_EXTERN void *AXIS2_CALL
00502     rampart_context_get_receiver_certificate(
00503         rampart_context_t *rampart_context,
00504         const axutil_env_t *env);
00513     AXIS2_EXTERN axis2_key_type_t AXIS2_CALL
00514     rampart_context_get_receiver_certificate_type(
00515         rampart_context_t *rampart_context,
00516         const axutil_env_t *env);
00525     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00526     rampart_context_get_user(
00527         rampart_context_t *rampart_context,
00528         const axutil_env_t *env);
00537     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00538     rampart_context_get_password(
00539         rampart_context_t *rampart_context,
00540         const axutil_env_t *env);
00549     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00550     rampart_context_get_prv_key_password(
00551         rampart_context_t *rampart_context,
00552         const axutil_env_t *env);
00561     AXIS2_EXTERN password_callback_fn AXIS2_CALL
00562     rampart_context_get_pwcb_function(
00563         rampart_context_t *rampart_context,
00564         const axutil_env_t *env);
00573     AXIS2_EXTERN rampart_is_replayed_fn AXIS2_CALL
00574     rampart_context_get_replay_detect_function(
00575         rampart_context_t *rampart_context,
00576         const axutil_env_t *env);
00585     AXIS2_EXTERN void * AXIS2_CALL
00586     rampart_context_get_pwcb_user_params(
00587         rampart_context_t *rampart_context,
00588         const axutil_env_t *env);
00597     AXIS2_EXTERN int AXIS2_CALL
00598     rampart_context_get_ttl(
00599         rampart_context_t *rampart_context,
00600         const axutil_env_t *env);
00601 
00602     AXIS2_EXTERN axis2_bool_t AXIS2_CALL
00603     rampart_context_get_need_millisecond_precision(
00604         rampart_context_t *rampart_context,
00605         const axutil_env_t *env);
00606 
00607     AXIS2_EXTERN int AXIS2_CALL
00608     rampart_context_get_clock_skew_buffer(
00609         rampart_context_t *rampart_context,
00610         const axutil_env_t *env);
00611 
00620     AXIS2_EXTERN axis2_char_t* AXIS2_CALL
00621     rampart_context_get_rd_val(
00622         rampart_context_t *rampart_context,
00623         const axutil_env_t *env);
00633     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00634     rampart_context_get_password_type(
00635         rampart_context_t *rampart_context,
00636         const axutil_env_t *env);
00645     AXIS2_EXTERN axutil_array_list_t* AXIS2_CALL
00646     rampart_context_get_keys(rampart_context_t *rampart_context,
00647         const axutil_env_t *env);
00657     AXIS2_EXTERN oxs_key_t* AXIS2_CALL
00658     rampart_context_get_key(rampart_context_t *rampart_context,
00659         const axutil_env_t *env,
00660         axis2_char_t* key_id);
00670     AXIS2_EXTERN oxs_key_t* AXIS2_CALL
00671     rampart_context_get_key_using_hash(rampart_context_t *rampart_context,
00672         const axutil_env_t *env,
00673         axis2_char_t* hash);
00674 
00675     /*End of Getters */
00676 
00677     /*Rampart specific functions */
00686     AXIS2_EXTERN rp_secpolicy_t *AXIS2_CALL
00687     rampart_context_get_secpolicy(
00688         rampart_context_t *rampart_context,
00689         const axutil_env_t *env);
00699     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00700     rampart_context_set_secpolicy(rampart_context_t *rampart_context,
00701                                   const axutil_env_t *env,
00702                                   rp_secpolicy_t *secpolicy);
00711     AXIS2_EXTERN rampart_callback_t *AXIS2_CALL
00712     rampart_context_get_password_callback(
00713         rampart_context_t *rampart_context,
00714         const axutil_env_t *env);
00723     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00724     rampart_context_set_password_callback(rampart_context_t *rampart_context,
00725                                           const axutil_env_t *env,
00726                                           rampart_callback_t *password_callback_module);
00736     AXIS2_EXTERN auth_password_func AXIS2_CALL
00737     rampart_context_get_auth_password_function(
00738         rampart_context_t *rampart_context,
00739         const axutil_env_t *env);
00749     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00750     rampart_context_set_auth_password_function(rampart_context_t *rampart_context,
00751             const axutil_env_t *env,
00752             auth_password_func authenticate_with_password);
00761     AXIS2_EXTERN auth_digest_func AXIS2_CALL
00762     rampart_context_get_auth_digest_function(
00763         rampart_context_t *rampart_context,
00764         const axutil_env_t *env);
00774     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00775     rampart_context_set_auth_digest_function(rampart_context_t *rampart_context,
00776             const axutil_env_t *env,
00777             auth_digest_func authenticate_with_digest);
00786     AXIS2_EXTERN rampart_authn_provider_t *AXIS2_CALL
00787     rampart_context_get_authn_provider(
00788         rampart_context_t *rampart_context,
00789         const axutil_env_t *env);
00797     AXIS2_EXTERN void *AXIS2_CALL
00798     rampart_context_get_replay_detector(
00799         rampart_context_t *rampart_context,
00800         const axutil_env_t *env);
00809     AXIS2_EXTERN void *AXIS2_CALL
00810     rampart_context_get_sct_provider(
00811         rampart_context_t *rampart_context,
00812         const axutil_env_t *env);
00822     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00823     rampart_context_set_authn_provider(rampart_context_t *rampart_context,
00824        const axutil_env_t *env,
00825        rampart_authn_provider_t *authn_provider);
00835         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00836         rampart_context_set_replay_detector(rampart_context_t *rampart_context,
00837        const axutil_env_t *env,
00838        void *replay_detector);
00848     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00849         rampart_context_set_sct_provider(rampart_context_t *rampart_context,
00850        const axutil_env_t *env,
00851        void *sct_module);
00860     AXIS2_EXTERN axis2_bool_t AXIS2_CALL
00861     rampart_context_get_require_timestamp(
00862         rampart_context_t *rampart_context,
00863         const axutil_env_t *env);
00872     AXIS2_EXTERN axis2_bool_t AXIS2_CALL
00873     rampart_context_get_require_ut(
00874         rampart_context_t *rampart_context,
00875         const axutil_env_t *env);
00884     AXIS2_EXTERN rp_property_type_t AXIS2_CALL
00885     rampart_context_get_binding_type(
00886         rampart_context_t *rampart_context,
00887         const axutil_env_t *env);
00896     AXIS2_EXTERN axis2_bool_t AXIS2_CALL
00897     rampart_context_is_include_timestamp(
00898         rampart_context_t *rampart_context,
00899         const axutil_env_t *env);
00908     AXIS2_EXTERN axis2_bool_t AXIS2_CALL
00909     rampart_context_is_include_username_token(
00910         rampart_context_t *rampart_context,
00911         const axutil_env_t *env);
00923         AXIS2_EXTERN axis2_bool_t AXIS2_CALL
00924         rampart_context_is_include_supporting_token(
00925                 rampart_context_t *rampart_context, const axutil_env_t *env,
00926                 axis2_bool_t server_side, axis2_bool_t is_inpath, 
00927                 rp_property_type_t token_type);
00938     AXIS2_EXTERN axis2_bool_t AXIS2_CALL
00939     rampart_context_is_include_protection_saml_token(
00940         rampart_context_t *rampart_context, axis2_bool_t server_side, 
00941         axis2_bool_t is_inpath, const axutil_env_t *env);
00951         AXIS2_EXTERN rp_property_t * AXIS2_CALL
00952         rampart_context_get_supporting_token(
00953                 rampart_context_t *rampart_context,
00954                 const axutil_env_t *env, rp_property_type_t token_type);
00963     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00964     rampart_context_get_password_callback_class(
00965         rampart_context_t *rampart_context,
00966         const axutil_env_t *env);
00975     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00976     rampart_context_get_authn_module_name(
00977         rampart_context_t *rampart_context,
00978         const axutil_env_t *env);
00987     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00988     rampart_context_get_replay_detector_name(
00989         rampart_context_t *rampart_context,
00990         const axutil_env_t *env);
00999     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
01000     rampart_context_get_sct_provider_name(
01001         rampart_context_t *rampart_context,
01002         const axutil_env_t *env);
01011     AXIS2_EXTERN axis2_bool_t AXIS2_CALL
01012     rampart_context_is_encrypt_before_sign(
01013         rampart_context_t *rampart_context,
01014         const axutil_env_t *env);
01023     AXIS2_EXTERN axis2_bool_t AXIS2_CALL
01024     rampart_context_is_encrypt_signature(
01025         rampart_context_t *rampart_context,
01026         const axutil_env_t *env);
01037     AXIS2_EXTERN axis2_status_t AXIS2_CALL
01038     rampart_context_get_nodes_to_encrypt(
01039         rampart_context_t *rampart_context,
01040         const axutil_env_t *env,
01041         axiom_soap_envelope_t *soap_envelope,
01042         axutil_array_list_t *nodes_to_encrypt);
01053     AXIS2_EXTERN axis2_status_t AXIS2_CALL
01054     rampart_context_get_nodes_to_sign(
01055         rampart_context_t *rampart_context,
01056         const axutil_env_t *env,
01057         axiom_soap_envelope_t *soap_envelope,
01058         axutil_array_list_t *nodes_to_sign);
01069     AXIS2_EXTERN axis2_status_t AXIS2_CALL
01070     rampart_context_get_elements_to_encrypt(
01071         rampart_context_t *rampart_context,
01072         const axutil_env_t *env,
01073         axiom_soap_envelope_t *soap_envelope,
01074         axutil_array_list_t *nodes_to_encrypt);
01085     AXIS2_EXTERN axis2_status_t AXIS2_CALL
01086     rampart_context_get_elements_to_sign(
01087         rampart_context_t *rampart_context,
01088         const axutil_env_t *env,
01089         axiom_soap_envelope_t *soap_envelope,
01090         axutil_array_list_t *nodes_to_sign);
01102     AXIS2_EXTERN rp_property_t *AXIS2_CALL
01103     rampart_context_get_token(
01104         rampart_context_t *rampart_context,
01105         const axutil_env_t *env,
01106         axis2_bool_t for_encryption,
01107         axis2_bool_t server_side,
01108         axis2_bool_t is_inpath);
01117     AXIS2_EXTERN rp_property_t *AXIS2_CALL
01118     rampart_context_get_endorsing_token(
01119         rampart_context_t *rampart_context,
01120         const axutil_env_t *env);
01127     AXIS2_EXTERN axis2_bool_t AXIS2_CALL
01128     rampart_context_check_is_derived_keys(
01129         const axutil_env_t *env,
01130         rp_property_t *token);
01131 
01137     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
01138     rampart_context_get_derived_key_version(
01139         const axutil_env_t *env, 
01140         rp_property_t *token);
01141 
01150     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
01151     rampart_context_get_enc_sym_algo(
01152         rampart_context_t *rampart_context,
01153         const axutil_env_t *env);
01162     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
01163     rampart_context_get_enc_asym_algo(
01164         rampart_context_t *rampart_context,
01165         const axutil_env_t *env);
01174     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
01175     rampart_context_get_asym_sig_algo(
01176         rampart_context_t *rampart_context,
01177         const axutil_env_t *env);
01186     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
01187     rampart_context_get_digest_mtd(
01188         rampart_context_t *rampart_context,
01189         const axutil_env_t *env);
01198     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
01199     rampart_context_get_encryption_user(
01200         rampart_context_t *rampart_context,
01201         const axutil_env_t *env);
01214     AXIS2_EXTERN axis2_bool_t AXIS2_CALL
01215     rampart_context_is_token_include(
01216         rampart_context_t *rampart_context,
01217         rp_property_t *token,
01218         rp_property_type_t token_type,
01219         axis2_bool_t server_side,
01220         axis2_bool_t is_inpath,
01221         const axutil_env_t *env);
01231     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
01232     rampart_context_get_key_identifier(
01233         rampart_context_t *rampart_context,
01234         rp_property_t *token,
01235         const axutil_env_t *env);
01244     AXIS2_EXTERN axis2_bool_t AXIS2_CALL
01245     rampart_context_is_token_type_supported(
01246         rp_property_type_t token_type,
01247         const axutil_env_t *env);
01258     AXIS2_EXTERN axis2_bool_t AXIS2_CALL
01259     rampart_context_is_key_identifier_type_supported(
01260         rampart_context_t *rampart_context,
01261         rp_property_t *token,
01262         axis2_char_t *identifier,
01263         const axutil_env_t *env);
01272     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
01273     rampart_context_get_layout(
01274         rampart_context_t *rampart_context,
01275         const axutil_env_t *env);
01284     AXIS2_EXTERN axis2_bool_t AXIS2_CALL
01285     rampart_context_check_whether_to_encrypt(
01286         rampart_context_t *rampart_context,
01287         const axutil_env_t *env);
01296     AXIS2_EXTERN axis2_bool_t AXIS2_CALL
01297     rampart_context_check_whether_to_sign(
01298         rampart_context_t *rampart_context,
01299         const axutil_env_t *env);
01308     AXIS2_EXTERN axis2_status_t AXIS2_CALL
01309     rampart_context_set_user_from_file(
01310         rampart_context_t *rampart_context,
01311         const axutil_env_t *env);
01320     AXIS2_EXTERN axis2_status_t AXIS2_CALL
01321     rampart_context_set_password_type_from_file(
01322         rampart_context_t *rampart_context,
01323         const axutil_env_t *env);
01332     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
01333     rampart_context_get_certificate_file(
01334         rampart_context_t *rampart_context,
01335         const axutil_env_t *env);
01344     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
01345     rampart_context_get_receiver_certificate_file(
01346         rampart_context_t *rampart_context,
01347         const axutil_env_t *env);
01356     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
01357     rampart_context_get_private_key_file(
01358         rampart_context_t *rampart_context,
01359         const axutil_env_t *env);
01368     AXIS2_EXTERN axis2_status_t AXIS2_CALL
01369     rampart_context_set_ttl_from_file(
01370         rampart_context_t *rampart_context,
01371         const axutil_env_t *env);
01372 
01373     AXIS2_EXTERN axis2_status_t AXIS2_CALL
01374     rampart_context_set_clock_skew_buffer_from_file(
01375         rampart_context_t *rampart_context,
01376         const axutil_env_t *env);
01377 
01378     AXIS2_EXTERN axis2_status_t AXIS2_CALL
01379     rampart_context_set_need_millisecond_precision_from_file(
01380         rampart_context_t *rampart_context,
01381         const axutil_env_t *env);
01382 
01391     AXIS2_EXTERN axis2_status_t AXIS2_CALL
01392     rampart_context_set_rd_val_from_file(
01393         rampart_context_t *rampart_context,
01394         const axutil_env_t *env);
01403     AXIS2_EXTERN oxs_key_t *AXIS2_CALL
01404     rampart_context_get_encryption_session_key(
01405         rampart_context_t *rampart_context,
01406         const axutil_env_t *env);
01416     AXIS2_EXTERN axis2_status_t AXIS2_CALL
01417     rampart_context_set_encryption_session_key(
01418         rampart_context_t *rampart_context,
01419         const axutil_env_t *env,
01420         oxs_key_t *session_key);
01429     AXIS2_EXTERN oxs_key_t *AXIS2_CALL
01430     rampart_context_get_signature_session_key(
01431         rampart_context_t *rampart_context,
01432         const axutil_env_t *env);
01442     AXIS2_EXTERN axis2_status_t AXIS2_CALL
01443     rampart_context_set_signature_session_key(
01444         rampart_context_t *rampart_context,
01445         const axutil_env_t *env,
01446         oxs_key_t *session_key);
01455     AXIS2_EXTERN axis2_status_t AXIS2_CALL
01456     rampart_context_increment_ref(
01457         rampart_context_t *rampart_context,
01458         const axutil_env_t *env);
01467     AXIS2_EXTERN axis2_bool_t AXIS2_CALL
01468     rampart_context_is_sig_confirmation_reqd(
01469         rampart_context_t *rampart_context,
01470         const axutil_env_t *env);
01479     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
01480     rampart_context_get_encryption_token_id(
01481         rampart_context_t *rampart_context,
01482         const axutil_env_t *env, 
01483         axis2_msg_ctx_t* msg_ctx);
01492     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
01493     rampart_context_get_signature_token_id(
01494         rampart_context_t *rampart_context,
01495         const axutil_env_t *env, 
01496         axis2_msg_ctx_t* msg_ctx);
01506     AXIS2_EXTERN axis2_status_t AXIS2_CALL
01507     rampart_context_set_encryption_token_id(
01508         rampart_context_t *rampart_context,
01509         const axutil_env_t *env,
01510         axis2_char_t *sct_id, 
01511         axis2_msg_ctx_t* msg_ctx);
01521     AXIS2_EXTERN axis2_status_t AXIS2_CALL
01522     rampart_context_set_signature_token_id(
01523         rampart_context_t *rampart_context,
01524         const axutil_env_t *env,
01525         axis2_char_t *sct_id, 
01526         axis2_msg_ctx_t* msg_ctx);
01527 
01528 
01529     /* Return the saml token of token type set in the rampart context */
01539     AXIS2_EXTERN rampart_saml_token_t * AXIS2_CALL
01540     rampart_context_get_saml_token(rampart_context_t *rampart_context,
01541                                         const axutil_env_t *env,
01542                                                                                 rampart_st_type_t token_type);
01543 
01544     /* Add a saml token */
01554     AXIS2_EXTERN axis2_status_t AXIS2_CALL
01555     rampart_context_add_saml_token(rampart_context_t *rampart_context,
01556                                     const axutil_env_t *env,
01557                                     rampart_saml_token_t *token);
01567      AXIS2_EXTERN axis2_status_t AXIS2_CALL
01568     rampart_context_set_saml_tokens(
01569         rampart_context_t *rampart_context,
01570         const axutil_env_t *env,
01571         axutil_array_list_t *tokens);
01580     AXIS2_EXTERN issued_token_callback_func AXIS2_CALL
01581     rampart_context_get_issued_token_aquire_function(
01582         rampart_context_t *rampart_context, 
01583         const axutil_env_t *env);  
01593     AXIS2_EXTERN axis2_status_t AXIS2_CALL
01594     rampart_context_set_issued_token_aquire_function(
01595         rampart_context_t *rampart_context,
01596         const axutil_env_t *env,
01597         issued_token_callback_func issued_token_aquire);
01606     AXIS2_EXTERN int AXIS2_CALL
01607     rampart_context_get_encryption_derived_key_len(
01608         rampart_context_t *rampart_context,
01609         const axutil_env_t *env);
01618     AXIS2_EXTERN int AXIS2_CALL
01619     rampart_context_get_signature_derived_key_len(
01620         rampart_context_t *rampart_context,
01621         const axutil_env_t *env);
01630     AXIS2_EXTERN rp_algorithmsuite_t *AXIS2_CALL
01631     rampart_context_get_algorithmsuite(
01632         rampart_context_t *rampart_context,
01633         const axutil_env_t *env);
01634     
01641     AXIS2_EXTERN oxs_key_mgr_t * AXIS2_CALL
01642     rampart_context_get_key_mgr(
01643         rampart_context_t *rampart_context,
01644         const axutil_env_t *env);
01645 
01653     AXIS2_EXTERN axis2_status_t AXIS2_CALL
01654     rampart_context_set_key_mgr(
01655         rampart_context_t *rampart_context, 
01656         const axutil_env_t *env, 
01657         oxs_key_mgr_t *key_mgr); 
01658     
01665     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
01666     rampart_context_get_pkcs12_file_name(
01667         rampart_context_t *rampart_context,
01668         const axutil_env_t *env);
01669 
01679     AXIS2_EXTERN axis2_status_t AXIS2_CALL
01680     rampart_context_set_custom_tokens(rampart_context_t *rampart_context,
01681                                         const axutil_env_t *env,
01682                                         axutil_array_list_t *tokens); 
01683 
01691     AXIS2_EXTERN axutil_array_list_t* AXIS2_CALL
01692     rampart_context_get_custom_tokens(rampart_context_t *rampart_context,
01693                                         const axutil_env_t *env);
01694 
01701     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
01702     rampart_context_get_receiver_certificate_file(
01703         rampart_context_t *rampart_context,
01704         const axutil_env_t *env);
01705       
01712     AXIS2_EXTERN axis2_bool_t AXIS2_CALL
01713     rampart_context_get_found_cert_in_shp(
01714         rampart_context_t *rampart_context,
01715         const axutil_env_t *env);
01716     
01724     AXIS2_EXTERN axis2_status_t AXIS2_CALL
01725     rampart_context_set_found_cert_in_shp(
01726         rampart_context_t *rampart_context,
01727         const axutil_env_t *env,
01728         axis2_bool_t found_cert_in_shp);
01729     
01736     AXIS2_EXTERN oxs_x509_cert_t *AXIS2_CALL
01737     rampart_context_get_receiver_cert_found_in_shp(
01738         rampart_context_t *rampart_context,
01739         const axutil_env_t *env);
01740     
01748     AXIS2_EXTERN axis2_status_t AXIS2_CALL
01749     rampart_context_set_receiver_cert_found_in_shp(
01750         rampart_context_t *rampart_context,
01751         const axutil_env_t *env,
01752         oxs_x509_cert_t *cert);
01753 
01754     AXIS2_EXTERN void * AXIS2_CALL
01755     rampart_context_get_key_store_buff(
01756         rampart_context_t *rampart_context,
01757         const axutil_env_t *env);
01758 
01759     AXIS2_EXTERN axis2_status_t AXIS2_CALL
01760     rampart_context_set_key_store_buff(
01761         rampart_context_t *rampart_context,
01762         const axutil_env_t *env,
01763         void *key_store_buf,
01764         int length);
01765 
01773     AXIS2_EXTERN axis2_status_t AXIS2_CALL
01774     rampart_context_set_store_security_context_token_fn(
01775         rampart_context_t *rampart_context,
01776         const axutil_env_t *env,
01777         store_security_context_token_fn store_fn);
01778 
01786     AXIS2_EXTERN axis2_status_t AXIS2_CALL
01787     rampart_context_set_obtain_security_context_token_fn(
01788         rampart_context_t *rampart_context,
01789         const axutil_env_t *env,
01790         obtain_security_context_token_fn get_fn);
01791 
01799     AXIS2_EXTERN axis2_status_t AXIS2_CALL
01800     rampart_context_set_delete_security_context_token_fn(
01801         rampart_context_t *rampart_context,
01802         const axutil_env_t *env,
01803         delete_security_context_token_fn delete_fn);
01804 
01812     AXIS2_EXTERN axis2_status_t AXIS2_CALL
01813     rampart_context_set_security_context_token_user_params(
01814         rampart_context_t *rampart_context,
01815         const axutil_env_t *env,
01816         void* user_params);
01817 
01825     AXIS2_EXTERN axis2_status_t AXIS2_CALL
01826     rampart_context_set_validate_security_context_token_fn(
01827         rampart_context_t *rampart_context,
01828         const axutil_env_t *env,
01829         validate_security_context_token_fn validate_fn);
01830 
01837     AXIS2_EXTERN store_security_context_token_fn AXIS2_CALL
01838     rampart_context_get_store_security_context_token_fn(
01839         rampart_context_t *rampart_context,
01840         const axutil_env_t *env);
01841 
01848     AXIS2_EXTERN obtain_security_context_token_fn AXIS2_CALL
01849     rampart_context_get_obtain_security_context_token_fn(
01850         rampart_context_t *rampart_context,
01851         const axutil_env_t *env);
01852 
01859     AXIS2_EXTERN delete_security_context_token_fn AXIS2_CALL
01860     rampart_context_get_delete_security_context_token_fn(
01861         rampart_context_t *rampart_context,
01862         const axutil_env_t *env);
01863 
01871     AXIS2_EXTERN void* AXIS2_CALL
01872     rampart_context_get_security_context_token_user_params(
01873         rampart_context_t *rampart_context,
01874         const axutil_env_t *env);
01875 
01882     AXIS2_EXTERN validate_security_context_token_fn AXIS2_CALL
01883     rampart_context_get_validate_security_context_token_fn(
01884         rampart_context_t *rampart_context,
01885         const axutil_env_t *env);
01886 
01893     AXIS2_EXTERN axis2_bool_t AXIS2_CALL
01894     rampart_context_is_different_session_key_for_enc_and_sign(
01895         const axutil_env_t *env,
01896         rampart_context_t *rampart_context);
01897 
01898     AXIS2_EXTERN axis2_status_t AXIS2_CALL
01899 rampart_context_set_receiver_certificate_file(
01900         rampart_context_t *rampart_context,
01901         const axutil_env_t *env,
01902         axis2_char_t *receiver_certificate_file);
01903 
01904 
01905     
01906 #ifdef __cplusplus
01907 }
01908 #endif
01909 #endif

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/openssl__sign_8h.html0000644000076500007650000000630011202454455022750 0ustar shankarshankar Rampart/C: openssl_sign.h File Reference

openssl_sign.h File Reference

The signature functions in openssl wrapper. More...

#include <openssl/evp.h>
#include <openssl_cipher_ctx.h>
#include <openssl_constants.h>
#include <oxs_sign_ctx.h>
#include <axis2_util.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN int openssl_sig_sign (const axutil_env_t *env, openssl_pkey_t *prvkey, oxs_buffer_t *input_buf, oxs_buffer_t *output_buf)
AXIS2_EXTERN axis2_status_t openssl_sig_verify (const axutil_env_t *env, openssl_pkey_t *pubkey, oxs_buffer_t *input_buf, oxs_buffer_t *sig_buf)


Detailed Description

The signature functions in openssl wrapper.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__rampart__timestamp__token.html0000644000076500007650000001462611202454457026325 0ustar shankarshankar Rampart/C: Timestamp Token

Timestamp Token
[Rampart Utilities]


Functions

axis2_status_t rampart_timestamp_token_build (const axutil_env_t *env, axiom_node_t *sec_node, int ttl, axis2_bool_t with_millisecond)
axis2_status_t rampart_timestamp_token_validate (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axiom_node_t *ts_node, int clock_skew_buffer)

Function Documentation

axis2_status_t rampart_timestamp_token_build ( const axutil_env_t *  env,
axiom_node_t *  sec_node,
int  ttl,
axis2_bool_t  with_millisecond 
)

Builds timestamp token.

Parameters:
env pointer to environment struct
sec_node security node
ttl Time to live. The time difference btwn Created and Expired. If it is zero or less than zero, then Expired element will not be created.
with_millisecond shows whether millisecond precision is needed
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

axis2_status_t rampart_timestamp_token_validate ( const axutil_env_t *  env,
axis2_msg_ctx_t *  msg_ctx,
axiom_node_t *  ts_node,
int  clock_skew_buffer 
)

Validates time stamp token. Validation is based in expiration time of the Expired element.

Parameters:
env pointer to environment struct
msg_ctx pointer to message context structure
ts_node Timestamp node
clock_skew_buffer buffer of allowable skew of time between sender and receiver
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/rampart__encryption_8h-source.html0000644000076500007650000002047111202454455025470 0ustar shankarshankar Rampart/C: rampart_encryption.h Source File

rampart_encryption.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #include <axutil_utils_defines.h>
00019 #include <axis2_defines.h>
00020 #include <axutil_env.h>
00021 #include <axiom_soap.h>
00022 #include <axis2_msg_ctx.h>
00023 #include <oxs_asym_ctx.h>
00024 #include <oxs_xml_encryption.h>
00025 #include <rampart_context.h>
00026 
00037 #ifndef RAMPART_ENCRYPTION_H
00038 #define RAMPART_ENCRYPTION_H
00039 
00040 #ifdef __cplusplus
00041 extern "C" {
00042 #endif
00043 
00051     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00052     rampart_enc_encrypt_message(const axutil_env_t *env,
00053         axis2_msg_ctx_t *msg_ctx,
00054         rampart_context_t *rampart_context,
00055         axiom_soap_envelope_t *soap_envelope,
00056         axiom_node_t *sec_node);
00057 
00067     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00068     rampart_enc_dk_encrypt_message(
00069         const axutil_env_t *env,
00070         axis2_msg_ctx_t *msg_ctx,
00071         rampart_context_t *rampart_context,
00072         axiom_soap_envelope_t *soap_envelope,
00073         axiom_node_t *sec_node);
00074  
00075 
00083     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00084     rampart_enc_add_key_info(
00085         const axutil_env_t *env,
00086         axis2_msg_ctx_t *msg_ctx,
00087         rampart_context_t *rampart_context,
00088         axiom_soap_envelope_t *soap_envelope,
00089         axiom_node_t *sec_node);
00090 
00091 
00099     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00100     rampart_enc_encrypt_signature(
00101         const axutil_env_t *env,
00102         axis2_msg_ctx_t *msg_ctx,
00103         rampart_context_t *rampart_context,
00104         axiom_soap_envelope_t *soap_envelope,
00105         axiom_node_t *sec_node);
00106 
00116     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00117     rampart_enc_encrypt_session_key(
00118         const axutil_env_t *env,
00119         oxs_key_t *session_key,
00120         axis2_msg_ctx_t *msg_ctx,
00121         rampart_context_t *rampart_context,
00122         axiom_node_t *sec_node,
00123         axutil_array_list_t *id_list);
00124 
00125 
00126     /* @} */
00127 #ifdef __cplusplus
00128 }
00129 #endif
00130 
00131 #endif    /* !RAMPART_ENCRYPTION_H */

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/trust__sts__client_8h.html0000644000076500007650000002730411202454456024024 0ustar shankarshankar Rampart/C: trust_sts_client.h File Reference

trust_sts_client.h File Reference

contains the specific sts client interface More...

#include <stdio.h>
#include <stdlib.h>
#include <axiom.h>
#include <axutil_utils.h>
#include <axis2_client.h>
#include <rp_includes.h>
#include <rp_secpolicy.h>
#include <neethi_policy.h>
#include <neethi_util.h>
#include <rampart_util.h>
#include <trust_constants.h>
#include <trust_util.h>
#include <trust_policy_util.h>
#include <trust_token.h>
#include <rampart_config.h>
#include <trust_rst.h>
#include <trust_rstr.h>
#include <trust_context.h>

Go to the source code of this file.

Typedefs

typedef struct trust_sts_client trust_sts_client_t

Functions

AXIS2_EXTERN trust_sts_client_t * trust_sts_client_create (const axutil_env_t *env)
AXIS2_EXTERN void trust_sts_client_free (trust_sts_client_t *sts_client, const axutil_env_t *env)
AXIS2_EXTERN void trust_sts_client_request_security_token (trust_sts_client_t *sts_client, const axutil_env_t *env, trust_context_t *trust_context)
AXIS2_EXTERN axis2_status_t trust_sts_client_process_policies (trust_sts_client_t *sts_client, const axutil_env_t *env, neethi_policy_t *issuer_policy, neethi_policy_t *service_policy)
AXIS2_EXTERN axis2_svc_client_t * trust_sts_client_get_svc_client (trust_sts_client_t *sts_client, const axutil_env_t *env, axis2_char_t *action, axis2_char_t *address_version, axis2_bool_t is_soap11)
AXIS2_EXTERN axis2_status_t trust_sts_client_set_issuer_address (trust_sts_client_t *sts_client, const axutil_env_t *env, axis2_char_t *address)
AXIS2_EXTERN axis2_status_t trust_sts_client_set_home_dir (trust_sts_client_t *sts_client, const axutil_env_t *env, axis2_char_t *directory)
AXIS2_EXTERN oxs_buffer_ttrust_sts_client_request_security_token_using_policy (trust_sts_client_t *sts_client, const axutil_env_t *env, trust_context_t *trust_context, neethi_policy_t *issuer_policy, axis2_char_t *address_version, axis2_bool_t is_soap11, rampart_context_t *rampart_context)
AXIS2_EXTERN axis2_status_t trust_sts_client_set_issuer_policy_location (trust_sts_client_t *sts_client, const axutil_env_t *env, axis2_char_t *file_path)
AXIS2_EXTERN axis2_char_t * trust_sts_client_get_issuer_policy_location (trust_sts_client_t *sts_client, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * trust_sts_client_get_service_policy_location (trust_sts_client_t *sts_client, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t trust_sts_client_set_service_policy_location (trust_sts_client_t *sts_client, const axutil_env_t *env, axis2_char_t *file_path)
AXIS2_EXTERN axis2_status_t trust_sts_client_set_auth_info (trust_sts_client_t *sts_client, const axutil_env_t *env, axis2_char_t *username, axis2_char_t *password, axis2_char_t *auth_type)
AXIS2_EXTERN axis2_status_t trust_sts_client_set_issued_token (trust_sts_client_t *sts_client, const axutil_env_t *env, rampart_saml_token_t *saml_token)
AXIS2_EXTERN axis2_status_t trust_sts_client_set_issued_token_func (trust_sts_client_t *sts_client, const axutil_env_t *env, issued_token_callback_func issue_token_func)


Detailed Description

contains the specific sts client interface


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/oxs__ctx_8h-source.html0000644000076500007650000004366611202454454023251 0ustar shankarshankar Rampart/C: oxs_ctx.h Source File

oxs_ctx.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef OXS_CTX_H
00019 #define OXS_CTX_H
00020 
00021 
00027 #include <axis2_defines.h>
00028 #include <axutil_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 
00045     typedef enum  {
00046         OXS_CTX_OPERATION_NONE = 0,
00047         OXS_CTX_OPERATION_ENCRYPT,
00048         OXS_CTX_OPERATION_DECRYPT
00049     } oxs_ctx_operation_t;
00050 
00051     typedef enum {
00052         OXS_CTX_MODE_ENCRYPTED_DATA = 0,
00053         OXS_CTX_MODE_ENCRYPTED_KEY
00054     } oxs_ctx_mode_t;
00055 
00056 
00058     typedef struct oxs_ctx_t oxs_ctx_t;
00059 
00066     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00067     oxs_ctx_free(
00068         oxs_ctx_t *ctx,
00069         const axutil_env_t *env
00070     );
00071 
00078     AXIS2_EXTERN oxs_ctx_mode_t AXIS2_CALL
00079     oxs_ctx_get_mode(
00080         oxs_ctx_t *ctx,
00081         const axutil_env_t *env
00082     );
00083 
00090     AXIS2_EXTERN oxs_ctx_operation_t AXIS2_CALL
00091     oxs_ctx_get_operation(
00092         oxs_ctx_t *ctx,
00093         const axutil_env_t *env
00094     );
00095 
00096 
00103     AXIS2_EXTERN oxs_key_t *AXIS2_CALL
00104     oxs_ctx_get_key(
00105         oxs_ctx_t *ctx,
00106         const axutil_env_t *env
00107     );
00108 
00115     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00116     oxs_ctx_get_id(
00117         oxs_ctx_t *ctx,
00118         const axutil_env_t *env
00119     );
00120 
00127     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00128     oxs_ctx_get_type(
00129         oxs_ctx_t *ctx,
00130         const axutil_env_t *env
00131     );
00138     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00139     oxs_ctx_get_mime_type(
00140         oxs_ctx_t *ctx,
00141         const axutil_env_t *env
00142     );
00143 
00150     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00151     oxs_ctx_get_encoding(
00152         oxs_ctx_t *ctx,
00153         const axutil_env_t *env
00154     );
00155 
00162     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00163     oxs_ctx_get_recipient(
00164         oxs_ctx_t *ctx,
00165         const axutil_env_t *env
00166     );
00167 
00174     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00175     oxs_ctx_get_ref_key_name(
00176         oxs_ctx_t *ctx,
00177         const axutil_env_t *env
00178     );
00179 
00186     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00187     oxs_ctx_get_enc_mtd_algorithm(
00188         oxs_ctx_t *ctx,
00189         const axutil_env_t *env
00190     );
00191 
00198     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00199     oxs_ctx_get_input_data(
00200         oxs_ctx_t *ctx,
00201         const axutil_env_t *env
00202     );
00210     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00211     oxs_ctx_set_mode(
00212         oxs_ctx_t *ctx,
00213         const axutil_env_t *env,
00214         oxs_ctx_mode_t mode
00215     );
00216 
00224     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00225     oxs_ctx_set_operation(
00226         oxs_ctx_t *ctx,
00227         const axutil_env_t *env,
00228         oxs_ctx_operation_t operation
00229     );
00230 
00238     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00239     oxs_ctx_set_key(
00240         oxs_ctx_t *ctx,
00241         const axutil_env_t *env,
00242         oxs_key_t *key
00243     );
00251     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00252     oxs_ctx_set_id(
00253         oxs_ctx_t *ctx,
00254         const axutil_env_t *env,
00255         axis2_char_t *id
00256     );
00257 
00265     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00266     oxs_ctx_set_type(
00267         oxs_ctx_t *ctx,
00268         const axutil_env_t *env,
00269         axis2_char_t *type
00270     );
00271 
00279     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00280     oxs_ctx_set_mime_type(
00281         oxs_ctx_t *ctx,
00282         const axutil_env_t *env,
00283         axis2_char_t *mime_type
00284     );
00285 
00286 
00294     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00295     oxs_ctx_set_encoding(
00296         oxs_ctx_t *ctx,
00297         const axutil_env_t *env,
00298         axis2_char_t *encoding
00299     );
00300 
00308     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00309     oxs_ctx_set_recipient(
00310         oxs_ctx_t *ctx,
00311         const axutil_env_t *env,
00312         axis2_char_t *recipient
00313     );
00314 
00315 
00323     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00324     oxs_ctx_set_ref_key_name(
00325         oxs_ctx_t *ctx,
00326         const axutil_env_t *env,
00327         axis2_char_t *ref_key_name
00328     );
00329 
00337     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00338     oxs_ctx_set_enc_mtd_algorithm(
00339         oxs_ctx_t *ctx,
00340         const axutil_env_t *env,
00341         axis2_char_t *enc_mtd_algorithm
00342     );
00350     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00351     oxs_ctx_set_input_data(
00352         oxs_ctx_t *ctx,
00353         const axutil_env_t *env,
00354         axis2_char_t *input_data
00355     );
00356 
00357 
00358 
00359     /*Create function*/
00360     AXIS2_EXTERN oxs_ctx_t *AXIS2_CALL
00361     oxs_ctx_create(const axutil_env_t *env);
00362 
00363 
00365 #ifdef __cplusplus
00366 }
00367 #endif
00368 
00369 #endif                          /* OXS_CTX_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/rahas__mod_8h.html0000644000076500007650000000364711202454455022215 0ustar shankarshankar Rampart/C: rahas_mod.h File Reference

rahas_mod.h File Reference

Axis2 rahas module interface. More...

#include <axis2_handler.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN axis2_handler_t * rahas_in_handler_create (const axutil_env_t *env, axutil_string_t *name)


Detailed Description

Axis2 rahas module interface.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/oxs__xml__key__processor_8h-source.html0000644000076500007650000001703711202454455026512 0ustar shankarshankar Rampart/C: oxs_xml_key_processor.h Source File

oxs_xml_key_processor.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef OXS_XML_KEY_PROCESSOR_H
00019 #define OXS_XML_KEY_PROCESSOR_H
00020 
00021 
00033 #include <axis2_defines.h>
00034 #include <oxs_ctx.h>
00035 #include <axutil_env.h>
00036 #include <axiom_node.h>
00037 #include <axiom_element.h>
00038 #include <axutil_qname.h>
00039 #include <oxs_x509_cert.h>
00040 
00041 #ifdef __cplusplus
00042 extern "C"
00043 {
00044 #endif
00045     /*Process a ds:X509SKI element and populate a certificate */
00046     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00047     oxs_xml_key_process_X509SKI(const axutil_env_t *env,
00048                                 axiom_node_t *X509SKI_node,
00049                                 oxs_x509_cert_t *cert);
00050 
00051     /*Process a ds:X509SubjectName element and populate a  certificate*/
00052     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00053     oxs_xml_key_process_X509SubjectName(const axutil_env_t *env,
00054                                         axiom_node_t *X509_subj_name_node,
00055                                         oxs_x509_cert_t *cert);
00056 
00057     /*Process a ds:X509IssuerSerial element and populate a certificate*/
00058     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00059     oxs_xml_key_process_X509IssuerSerial(const axutil_env_t *env,
00060                                          axiom_node_t *X509_issuer_serial_node,
00061                                          oxs_x509_cert_t *cert);
00062 
00063     /*Process data in a ds:X509Certificate and returns a certificate*/
00064     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00065     oxs_xml_key_process_X509Certificate(const axutil_env_t *env,
00066                                         axiom_node_t *X509_cert_node,
00067                                         oxs_x509_cert_t *cert);
00068 
00069     /*Higher level function ot process an ds:X509Data element*/
00070     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00071     oxs_xml_key_process_X509Data(const axutil_env_t *env,
00072                                  axiom_node_t *X509_data_node,
00073                                  oxs_x509_cert_t *cert);
00074 
00075 
00077 #ifdef __cplusplus
00078 }
00079 #endif
00080 
00081 #endif                          /* OXS_XML_KEY_PROCESSOR_H */

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/trust__rstr_8h-source.html0000644000076500007650000003463511202454455024012 0ustar shankarshankar Rampart/C: trust_rstr.h Source File

trust_rstr.h

00001 
00002 /*
00003  * Licensed to the Apache Software Foundation (ASF) under one or more
00004  * contributor license agreements.  See the NOTICE file distributed with
00005  * this work for additional information regarding copyright ownership.
00006  * The ASF licenses this file to You under the Apache License, Version 2.0
00007  * (the "License"); you may not use this file except in compliance with
00008  * the License.  You may obtain a copy of the License at
00009  *
00010  *      http://www.apache.org/licenses/LICENSE-2.0
00011  *
00012  * Unless required by applicable law or agreed to in writing, software
00013  * distributed under the License is distributed on an "AS IS" BASIS,
00014  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00015  * See the License for the specific language governing permissions and
00016  * limitations under the License.
00017  */
00018 
00019 #ifndef TRUST_RSTR_H
00020 #define TRUST_RSTR_H
00021 
00022 #include <stdio.h>
00023 #include <stdlib.h>
00024 #include <axutil_utils.h>
00025 #include <axutil_string.h>
00026 #include <axutil_base64.h>
00027 #include <axiom_soap.h>
00028 #include <axiom.h>
00029 #include <trust_constants.h>
00030 #include <trust_entropy.h>
00031 #include <trust_life_time.h>
00032 
00033 #ifdef __cplusplus
00034 extern "C"
00035 {
00036 #endif
00037     
00038     typedef struct trust_rstr trust_rstr_t;
00039     
00040     AXIS2_EXTERN trust_rstr_t * AXIS2_CALL
00041     trust_rstr_create(
00042         const axutil_env_t *env);
00043     
00044     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00045     trust_rstr_free(
00046         trust_rstr_t *rstr,
00047         const axutil_env_t *env);
00048     
00049     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00050     trust_rstr_populate_rstr(
00051         trust_rstr_t *rstr,
00052         const axutil_env_t *env,
00053         axiom_node_t *rstr_node);
00054     
00055     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00056     trust_rstr_build_rstr(
00057         trust_rstr_t *rstr,
00058         const axutil_env_t *env,
00059         axiom_node_t *parent);
00060     
00061     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00062     trust_rstr_get_token_type(
00063         trust_rstr_t *rstr,
00064         const axutil_env_t *env);
00065     
00066     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00067     trust_rstr_set_token_type(
00068         trust_rstr_t *rstr,
00069         const axutil_env_t *env,
00070         axis2_char_t *token_type);
00071     
00072     
00073     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00074     trust_rstr_get_request_type(
00075         trust_rstr_t *rstr,
00076         const axutil_env_t *env);
00077     
00078     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00079     trust_rstr_set_request_type(
00080         trust_rstr_t *rstr,
00081         const axutil_env_t *env,
00082         axis2_char_t *request_type);
00083     
00084     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00085     trust_rstr_get_requested_security_token(
00086         trust_rstr_t *rstr,
00087         const axutil_env_t *env);
00088     
00089     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00090     trust_rstr_set_requested_security_token(
00091         trust_rstr_t *rstr,
00092         const axutil_env_t *env,
00093         axiom_node_t *security_token);
00094     
00095     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00096     trust_rstr_get_applies_to(
00097         trust_rstr_t *rstr,
00098         const axutil_env_t *env);
00099     
00100     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00101     trust_rstr_set_applies_to(
00102         trust_rstr_t *rstr,
00103         const axutil_env_t *env,
00104         axis2_char_t *applies_to);
00105     
00106     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00107     trust_rstr_get_requested_attached_reference(
00108         trust_rstr_t *rstr,
00109         const axutil_env_t *env);
00110     
00111     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00112     trust_rstr_set_requested_attached_reference(
00113         trust_rstr_t *rstr,
00114         const axutil_env_t *env,
00115         axiom_node_t *ref_node);
00116     
00117     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00118     trust_rstr_get_requested_unattached_reference(
00119         trust_rstr_t *rstr,
00120         const axutil_env_t *env);
00121     
00122     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00123     trust_rstr_set_requested_unattached_reference(
00124         trust_rstr_t *rstr,
00125         const axutil_env_t *env,
00126         axiom_node_t *ref_node);
00127     
00128     AXIS2_EXTERN  axiom_node_t * AXIS2_CALL
00129     trust_rstr_get_requested_proof_token(
00130         trust_rstr_t *rstr,
00131         const axutil_env_t *env);
00132     
00133     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00134     trust_rstr_set_requested_proof_token(
00135         trust_rstr_t *rstr,
00136         const axutil_env_t *env,
00137         axiom_node_t *proof_token);
00138     
00139     AXIS2_EXTERN trust_entropy_t * AXIS2_CALL
00140     trust_rstr_get_entropy(
00141         trust_rstr_t *rstr,
00142         const axutil_env_t *env);
00143     
00144     AXIS2_EXTERN  axis2_status_t AXIS2_CALL
00145     trust_rstr_set_entropy(
00146         trust_rstr_t *rstr,
00147         const axutil_env_t *env,
00148         trust_entropy_t *entropy);
00149     
00150     AXIS2_EXTERN trust_life_time_t* AXIS2_CALL
00151     trust_rstr_get_life_time(
00152         trust_rstr_t *rstr,
00153         const axutil_env_t *env);
00154     
00155     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00156     trust_rstr_set_life_time(
00157         trust_rstr_t *rstr,
00158         const axutil_env_t *env,
00159         trust_life_time_t *life_time);
00160     
00161     AXIS2_EXTERN axis2_bool_t AXIS2_CALL
00162     trust_rstr_get_in_header(
00163         trust_rstr_t *rstr,
00164         const axutil_env_t *env);
00165     
00166     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00167     trust_rstr_set_in_header(
00168         trust_rstr_t *rstr,
00169         const axutil_env_t *env,
00170         axis2_bool_t in_header); 
00171         
00172     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00173         trust_rstr_set_wst_ns_uri(
00174         trust_rstr_t *rstr,
00175         const axutil_env_t *env,
00176         axis2_char_t *wst_ns_uri);
00177 
00178     AXIS2_EXTERN int AXIS2_CALL
00179     trust_rstr_get_key_size(
00180         trust_rstr_t *rstr,
00181         const axutil_env_t *env);
00182 
00183     AXIS2_EXTERN  axis2_status_t AXIS2_CALL
00184     trust_rstr_set_key_size(
00185         trust_rstr_t *rstr,
00186         const axutil_env_t *env,
00187         int key_size);
00188 
00189     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00190     trust_rstr_get_wst_ns_uri(
00191             trust_rstr_t *rstr,
00192             const axutil_env_t *env);    
00193      
00194 
00195 #ifdef __cplusplus
00196 }
00197 #endif
00198 
00199 #endif

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__oxs__xml__signature.html0000644000076500007650000003102711202454456025137 0ustar shankarshankar Rampart/C: XML Signature

XML Signature
[OMXMLSecurity]


Functions

AXIS2_EXTERN axis2_status_t oxs_xml_sig_sign (const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, axiom_node_t *parent, axiom_node_t **sig_node)
AXIS2_EXTERN axis2_status_t oxs_xml_sig_verify (const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, axiom_node_t *signature_node, axiom_node_t *scope_node)
AXIS2_EXTERN axis2_status_t oxs_xml_sig_verify_sign_part (const axutil_env_t *env, oxs_sign_part_t *sign_part)
AXIS2_EXTERN axis2_status_t oxs_xml_sig_verify_digests (const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx)
AXIS2_EXTERN axis2_status_t oxs_xml_sig_process_ref_node (const axutil_env_t *env, oxs_sign_part_t *sign_part, axiom_node_t *ref_node, axiom_node_t *scope_node)
AXIS2_EXTERN axis2_status_t oxs_xml_sig_process_signature_node (const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, axiom_node_t *signature_node, axiom_node_t *scope_node)

Function Documentation

AXIS2_EXTERN axis2_status_t oxs_xml_sig_process_ref_node ( const axutil_env_t *  env,
oxs_sign_part_t *  sign_part,
axiom_node_t *  ref_node,
axiom_node_t *  scope_node 
)

Process the ds:Reference node. Populate a signature part pointer to environment struct the signature part the ds:Reference node the root node in which the referenced are found

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_xml_sig_process_signature_node ( const axutil_env_t *  env,
oxs_sign_ctx_t *  sign_ctx,
axiom_node_t *  signature_node,
axiom_node_t *  scope_node 
)

Process the ds:Signature node. Populate a signature context pointer to environment struct the signature context the ds:Signature node the root node in which the referenced are found

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_xml_sig_sign ( const axutil_env_t *  env,
oxs_sign_ctx_t *  sign_ctx,
axiom_node_t *  parent,
axiom_node_t **  sig_node 
)

Sign according to the information available in the . pointer to environment struct the signature context the node that the ds:Signature element should be attached. a reference to the ds:Signature node

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_xml_sig_verify ( const axutil_env_t *  env,
oxs_sign_ctx_t *  sign_ctx,
axiom_node_t *  signature_node,
axiom_node_t *  scope_node 
)

Verify a complete xml document pointer to environment struct the signature context the ds:Signature node the root node in which the referenced are found

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_xml_sig_verify_digests ( const axutil_env_t *  env,
oxs_sign_ctx_t *  sign_ctx 
)

Verify all digests in signature parts of a single signature context pointer to environment struct the signature context

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_xml_sig_verify_sign_part ( const axutil_env_t *  env,
oxs_sign_part_t *  sign_part 
)

Verify a single signature part . Do transforms, Generate digest and compare with the digest in hand pointer to environment struct the signature part

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/oxs__tokens_8h-source.html0000644000076500007650000011005511202454454023741 0ustar shankarshankar Rampart/C: oxs_tokens.h Source File

oxs_tokens.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef OXS_TOKENS_H
00019 #define OXS_TOKENS_H
00020 
00021 #include <axis2_util.h>
00022 #include <stdio.h>
00023 #include <axutil_qname.h>
00024 #include <axis2_defines.h>
00025 #include <axutil_env.h>
00026 #include <axiom_node.h>
00027 #include <axiom_element.h>
00028 #include <axiom_attribute.h>
00029 #include <oxs_constants.h>
00030 #include <rampart_constants.h>
00031 #include <oxs_utility.h>
00032 #include <oxs_axiom.h>
00033 #include <axutil_array_list.h>
00034 
00039 #ifdef __cplusplus
00040 extern "C"
00041 {
00042 #endif
00043 
00052     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00053     oxs_token_build_binary_security_token_element(
00054                 const axutil_env_t * env,
00055                 axiom_node_t * parent,
00056                 axis2_char_t * id,
00057                 axis2_char_t * encoding_type,
00058                 axis2_char_t * value_type,
00059                 axis2_char_t * data);
00060    
00064     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00065     oxs_token_build_c14n_method_element(
00066                 const axutil_env_t * env,
00067                 axiom_node_t * parent,
00068                 axis2_char_t * algorithm);
00069 
00073     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00074     oxs_token_get_c14n_method(
00075                 const axutil_env_t * env, 
00076                 axiom_node_t * c14n_mtd_node);
00077 
00081     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00082     oxs_token_build_cipher_data_element(
00083                 const axutil_env_t * env,
00084                 axiom_node_t * parent);
00085 
00089     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00090     oxs_token_get_cipher_value_from_cipher_data(
00091                 const axutil_env_t * env,
00092                 axiom_node_t * cd_node);
00093 
00097     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00098     oxs_token_build_cipher_value_element(
00099                 const axutil_env_t * env,
00100                 axiom_node_t * parent,
00101                 axis2_char_t * cipher_val);
00102 
00106     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00107     oxs_token_get_cipher_value(
00108                 const axutil_env_t * env,
00109                 axiom_node_t * cv_node);
00110 
00114     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00115     oxs_token_build_data_reference_element(
00116                 const axutil_env_t * env,
00117                 axiom_node_t * parent,
00118                 axis2_char_t * data_ref);
00119 
00123     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00124     oxs_token_get_data_reference(
00125                 const axutil_env_t * env, 
00126                 axiom_node_t * data_ref_node);
00127 
00131     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00132     oxs_token_build_digest_method_element(
00133                 const axutil_env_t * env,
00134                 axiom_node_t * parent,
00135                 axis2_char_t * algorithm);
00136 
00140     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00141     oxs_token_get_digest_method(
00142                 const axutil_env_t * env, 
00143                 axiom_node_t * enc_mtd_node);
00144 
00148     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00149     oxs_token_build_digest_value_element(
00150                 const axutil_env_t * env,
00151                 axiom_node_t * parent,
00152                 axis2_char_t * digest_val);
00153 
00157     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00158     oxs_token_get_digest_value(
00159                 const axutil_env_t * env,
00160                 axiom_node_t * sv_node);
00161 
00165     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00166     oxs_token_build_ds_reference_element(
00167                 const axutil_env_t *env,
00168                 axiom_node_t *parent,
00169                 axis2_char_t *id,
00170                 axis2_char_t *uri,
00171                 axis2_char_t *type);
00172 
00176     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00177     oxs_token_get_ds_reference(
00178                 const axutil_env_t * env, 
00179                 axiom_node_t * ref_node);
00180 
00184     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00185     oxs_token_build_embedded_element(
00186                 const axutil_env_t * env,
00187                 axiom_node_t * parent,
00188                 axis2_char_t * id);
00189 
00193     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00194     oxs_token_get_embedded_id(
00195                 const axutil_env_t * env, 
00196                 axiom_node_t * embedded_node);
00197 
00201     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00202     oxs_token_build_encrypted_data_element(
00203                 const axutil_env_t * env,
00204                 axiom_node_t * parent,
00205                 axis2_char_t * type_attribute,
00206                 axis2_char_t * id);
00207 
00211     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00212     oxs_token_build_encrypted_key_element(
00213                 const axutil_env_t * env,
00214                 axiom_node_t * parent );
00215 
00216     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00217     oxs_token_get_encrypted_key_node(
00218                 const axutil_env_t * env,
00219                 axiom_node_t * parent);
00220 
00224     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00225     oxs_token_build_encryption_method_element(
00226                 const axutil_env_t * env,
00227                 axiom_node_t * parent,
00228                 axis2_char_t * algorithm);
00229 
00233     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00234     oxs_token_get_encryption_method(
00235                 const axutil_env_t * env, 
00236                 axiom_node_t * enc_mtd_node);
00237 
00241     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00242     oxs_token_build_key_identifier_element(
00243                 const axutil_env_t * env,
00244                 axiom_node_t * parent,
00245                 axis2_char_t * encoding_type,
00246                 axis2_char_t * value_type,
00247                 axis2_char_t * value);
00248 
00252     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00253     oxs_token_build_key_info_element(
00254                 const axutil_env_t * env,
00255                 axiom_node_t * parent);
00256 
00260     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00261     oxs_token_build_key_name_element(
00262                 const axutil_env_t * env,
00263                 axiom_node_t * parent,
00264                 axis2_char_t * key_name_val);
00265 
00269     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00270     oxs_token_build_reference_element(
00271                 const axutil_env_t * env,
00272                 axiom_node_t * parent,
00273                 axis2_char_t * ref,
00274                 axis2_char_t * value_type);
00275 
00279     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00280     oxs_token_get_reference(
00281                 const axutil_env_t * env, 
00282                 axiom_node_t * ref_node);
00283 
00287     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00288     oxs_token_get_reference_value_type(
00289                 const axutil_env_t * env, 
00290         axiom_node_t * ref_node);
00291 
00295     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00296     oxs_token_build_reference_list_element(
00297                 const axutil_env_t * env,
00298                 axiom_node_t * parent);
00299 
00303     AXIS2_EXTERN axiom_node_t* AXIS2_CALL
00304     oxs_token_build_data_reference_list(
00305                 const axutil_env_t * env, 
00306                 axiom_node_t * parent, 
00307                 axutil_array_list_t * id_list);
00308 
00312     AXIS2_EXTERN axutil_array_list_t * AXIS2_CALL
00313     oxs_token_get_reference_list_data(
00314                 const axutil_env_t * env, 
00315                 axiom_node_t * ref_list_node);
00316 
00320     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00321     oxs_token_build_security_token_reference_element(
00322                 const axutil_env_t * env,
00323                 axiom_node_t * parent);
00324 
00328     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00329     oxs_token_build_signature_element(
00330                 const axutil_env_t * env,
00331                 axiom_node_t * parent,
00332                 axis2_char_t * id);
00333 
00337     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00338     oxs_token_build_enc_header_element(
00339                 const axutil_env_t * env,
00340                 axiom_node_t * parent,
00341                 axis2_char_t * id);
00342 
00346     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00347     oxs_token_build_signature_method_element(
00348                 const axutil_env_t * env,
00349                 axiom_node_t * parent,
00350                 axis2_char_t * algorithm);
00351 
00355     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00356     oxs_token_get_signature_method(
00357                 const axutil_env_t * env, 
00358                 axiom_node_t * enc_mtd_node);
00359 
00363     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00364     oxs_token_build_signature_value_element(
00365                 const axutil_env_t * env,
00366                 axiom_node_t * parent,
00367                 axis2_char_t * signature_val);
00368 
00372     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00373     oxs_token_get_signature_value(
00374                 const axutil_env_t * env,
00375                 axiom_node_t * sv_node);
00376 
00380     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00381     oxs_token_build_signed_info_element(
00382                 const axutil_env_t * env,
00383                 axiom_node_t * parent);
00384 
00388     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00389     oxs_token_build_transform_element(
00390                 const axutil_env_t * env,
00391                 axiom_node_t * parent,
00392                 axis2_char_t * algorithm);
00393 
00397     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00398     oxs_token_get_transform(
00399                 const axutil_env_t * env, 
00400                 axiom_node_t * transform_node);
00401 
00405     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00406     oxs_token_build_transforms_element(
00407                 const axutil_env_t * env,
00408                 axiom_node_t * parent);
00409 
00413     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00414     oxs_token_build_x509_certificate_element(
00415                 const axutil_env_t * env,
00416                 axiom_node_t * parent,
00417                 axis2_char_t * cert_data);
00418 
00422     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00423     oxs_token_get_x509_certificate(
00424                 const axutil_env_t * env,
00425                 axiom_node_t * sv_node);
00426 
00430     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00431     oxs_token_build_x509_data_element(
00432                 const axutil_env_t * env,
00433                 axiom_node_t * parent);
00434 
00438     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00439     oxs_token_build_issuer_name_element(
00440                 const axutil_env_t * env,
00441                 axiom_node_t * parent,
00442                 axis2_char_t * value );
00443 
00447     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00448     oxs_token_get_issuer_name(
00449                 const axutil_env_t * env,
00450                 axiom_node_t * issuer_name_node);
00451 
00455     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00456     oxs_token_build_x509_issuer_serial_element(
00457                 const axutil_env_t * env,
00458                 axiom_node_t * parent);
00459         
00463     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00464     oxs_token_build_x509_issuer_serial_with_data(
00465                 const axutil_env_t * env,
00466                 axiom_node_t * parent,
00467                 axis2_char_t * issuer_name,
00468                 axis2_char_t * serial_number);
00469 
00473     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00474     oxs_token_build_serial_number_element(
00475                 const axutil_env_t * env,
00476                 axiom_node_t * parent,
00477                 axis2_char_t * value );
00478 
00482     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00483     oxs_token_get_serial_number(
00484                 const axutil_env_t * env,
00485                 axiom_node_t * serial_number_node);
00486 
00490     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00491     oxs_token_build_signature_confirmation_element(
00492                 const axutil_env_t * env,
00493                 axiom_node_t * parent,
00494                 axis2_char_t * id,
00495                 axis2_char_t * val); 
00496 
00500     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00501     oxs_token_get_signature_confirmation_value(
00502                 const axutil_env_t * env, 
00503                 axiom_node_t * signature_confirmation_node);
00504 
00508     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00509     oxs_token_get_signature_confirmation_id(
00510                 const axutil_env_t * env, 
00511                 axiom_node_t * signature_confirmation_node);
00512 
00516     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00517     oxs_token_build_derived_key_token_element(
00518         const axutil_env_t * env,
00519         axiom_node_t * parent,
00520         axis2_char_t * id,
00521         axis2_char_t * algo, 
00522         axis2_char_t* wsc_ns_uri);
00523 
00527     AXIS2_EXTERN axiom_node_t* AXIS2_CALL
00528     oxs_token_build_length_element(
00529         const axutil_env_t *env,
00530         axiom_node_t *parent,
00531         int length, 
00532         axis2_char_t *wsc_ns_uri);
00533 
00537     AXIS2_EXTERN int AXIS2_CALL
00538     oxs_token_get_length_value(
00539         const axutil_env_t *env,
00540         axiom_node_t *length_node);
00541 
00545     AXIS2_EXTERN axiom_node_t* AXIS2_CALL
00546     oxs_token_build_offset_element(
00547         const axutil_env_t *env,
00548         axiom_node_t *parent,
00549         int offset, 
00550         axis2_char_t *wsc_ns_uri);
00551 
00555     AXIS2_EXTERN int AXIS2_CALL
00556     oxs_token_get_offset_value(
00557         const axutil_env_t *env,
00558         axiom_node_t *offset_node);
00559 
00563     AXIS2_EXTERN axiom_node_t* AXIS2_CALL
00564     oxs_token_build_nonce_element(
00565         const axutil_env_t *env,
00566         axiom_node_t *parent,
00567         axis2_char_t *nonce_val,
00568         axis2_char_t *wsc_ns_uri);
00569 
00573     AXIS2_EXTERN axis2_char_t* AXIS2_CALL
00574     oxs_token_get_nonce_value(
00575         const axutil_env_t *env,
00576         axiom_node_t *nonce_node);
00577 
00581         AXIS2_EXTERN axiom_node_t* AXIS2_CALL
00582         oxs_token_build_label_element(
00583         const axutil_env_t *env,
00584                 axiom_node_t *parent,
00585                 axis2_char_t *label, 
00586         axis2_char_t *wsc_ns_uri);
00587 
00591     AXIS2_EXTERN axis2_char_t* AXIS2_CALL
00592     oxs_token_get_label_value(
00593         const axutil_env_t *env,
00594         axiom_node_t *label_node);
00595 
00599     AXIS2_EXTERN axiom_node_t* AXIS2_CALL
00600     oxs_token_build_properties_element(
00601         const axutil_env_t *env,
00602         axiom_node_t *parent,
00603         axis2_char_t* properties_val, 
00604         axis2_char_t *wsc_ns_uri);
00605 
00609     AXIS2_EXTERN axis2_char_t* AXIS2_CALL
00610     oxs_token_get_properties_value(
00611         const axutil_env_t *env,
00612         axiom_node_t *properties_node);
00613     
00617     AXIS2_EXTERN axiom_node_t* AXIS2_CALL
00618     oxs_token_build_generation_element(
00619         const axutil_env_t *env,
00620         axiom_node_t *parent,
00621         axis2_char_t *generation_val, 
00622         axis2_char_t *wsc_ns_uri);
00623     
00627     AXIS2_EXTERN axis2_char_t* AXIS2_CALL
00628     oxs_token_get_generation_value(
00629         const axutil_env_t *env,
00630         axiom_node_t *generation_node);
00631 
00634 #ifdef __cplusplus
00635 }
00636 #endif
00637 
00638 #endif /*OXS_TOKENS_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/oxs__sign__part_8h.html0000644000076500007650000002375011202454455023273 0ustar shankarshankar Rampart/C: oxs_sign_part.h File Reference

oxs_sign_part.h File Reference

Keeps information relavent for a single node of signing. More...

#include <axis2_defines.h>
#include <axutil_env.h>
#include <axiom_node.h>
#include <axiom_namespace.h>

Go to the source code of this file.

Typedefs

typedef struct oxs_sign_part_t oxs_sign_part_t

Functions

AXIS2_EXTERN oxs_sign_part_t * oxs_sign_part_create (const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_sign_part_free (oxs_sign_part_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_sign_part_get_id (const oxs_sign_part_t *sign_part, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_sign_part_get_digest_mtd (const oxs_sign_part_t *sign_part, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_sign_part_get_digest_val (const oxs_sign_part_t *sign_part, const axutil_env_t *env)
AXIS2_EXTERN axiom_node_t * oxs_sign_part_get_node (const oxs_sign_part_t *sign_part, const axutil_env_t *env)
AXIS2_EXTERN axutil_array_list_t * oxs_sign_part_get_transforms (const oxs_sign_part_t *sign_part, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_sign_part_get_id_name (const oxs_sign_part_t *sign_part, const axutil_env_t *env)
AXIS2_EXTERN axiom_namespace_t * oxs_sign_part_get_sign_namespace (const oxs_sign_part_t *sign_part, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_sign_part_set_id (oxs_sign_part_t *sign_part, const axutil_env_t *env, axis2_char_t *id)
AXIS2_EXTERN axis2_status_t oxs_sign_part_set_digest_mtd (oxs_sign_part_t *sign_part, const axutil_env_t *env, axis2_char_t *digest_mtd)
AXIS2_EXTERN axis2_status_t oxs_sign_part_set_digest_val (oxs_sign_part_t *sign_part, const axutil_env_t *env, axis2_char_t *digest_val)
AXIS2_EXTERN axis2_status_t oxs_sign_part_set_node (oxs_sign_part_t *sign_part, const axutil_env_t *env, axiom_node_t *node)
AXIS2_EXTERN axis2_status_t oxs_sign_part_set_transforms (oxs_sign_part_t *sign_part, const axutil_env_t *env, axutil_array_list_t *transforms)
AXIS2_EXTERN axis2_status_t oxs_sign_part_set_id_name (oxs_sign_part_t *sign_part, const axutil_env_t *env, axis2_char_t *id_name)
AXIS2_EXTERN axis2_status_t oxs_sign_part_set_sign_namespace (oxs_sign_part_t *sign_part, const axutil_env_t *env, axiom_namespace_t *sig_ns)


Detailed Description

Keeps information relavent for a single node of signing.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/axis2__key__type_8h.html0000644000076500007650000000377511202454455023360 0ustar shankarshankar Rampart/C: axis2_key_type.h File Reference

axis2_key_type.h File Reference

defines the key type More...

#include <axis2_defines.h>
#include <axutil_env.h>

Go to the source code of this file.

Enumerations

enum  axis2_key_type_t {
  AXIS2_KEY_TYPE_UNKNOWN = 0, AXIS2_KEY_TYPE_PEM, AXIS2_KEY_TYPE_CERT, AXIS2_KEY_TYPE_DER,
  AXIS2_KEY_TYPE_OTHER
}


Detailed Description

defines the key type


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/saml_8h-source.html0000644000076500007650000055717411202454455022364 0ustar shankarshankar Rampart/C: saml.h Source File

saml.h

00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 #ifndef SAML_H
00018 #define SAML_H
00019 
00020 #include <axutil_utils.h>
00021 #include <axutil_array_list.h>
00022 #include <axutil_hash.h>
00023 #include <axutil_date_time.h>
00024 #include <axiom.h>
00025 #include <oxs_xml_signature.h>
00026 #include <oxs_sign_ctx.h>
00027 #include <oxs_xml_key_processor.h>
00028 #include <oxs_utility.h>
00029 #include <oxs_transforms_factory.h>
00030 #include <oxs_xml_key_info_builder.h>
00031 #include <oxs_key_mgr.h>
00032 #include <oxs_transform.h>
00033 #include <oxs_x509_cert.h>
00034 #include <openssl_pkey.h>
00035 
00036 #ifdef __cplusplus
00037 extern "C"
00038 {
00039 #endif
00040 
00041 
00042 #define SAML_VERSION_MAX    16
00043 #define SAML_URI_LEN_MAX    2048
00044 #define SAML_ARRAY_LIST_DEF    4
00045 
00046 #define SAML_PREFIX                                                     "saml"
00047 #define SAML_NMSP_URI                                           "urn:oasis:names:tc:SAML:1.0:assertion"
00048 #define SAML_XML_TYPE                                           "type"
00049 #define SAML_XSI_NS                                                     "http://www.w3.org/2001/XMLSchema-instance"
00050 #define SAML_XSI                                                        "xsi"
00051 
00052 #define SAML_MAJORVERSION                                       "MajorVersion"
00053 #define SAML_MINORVERSION                                       "MinorVersion"
00054 #define SAML_ASSERTION_ID                                       "AssertionID"
00055 #define SAML_ISSUER                                                     "Issuer"
00056 #define SAML_ISSUE_INSTANT                                      "IssueInstant"
00057 #define SAML_STATEMENT                                          "Statement"
00058 #define SAML_SUBJECT_STATEMENT                          "SubjectStatement"
00059 #define SAML_AUTHENTICATION_STATEMENT           "AuthenticationStatement"
00060 #define SAML_AUTHORIZATION_DECISION_STATEMENT "AuthorizationDecisionStatement"
00061 #define SAML_ATTRIBUTE_STATEMENT                        "AttributeStatement"
00062 #define SAML_CONDITIONS                                         "Conditions"
00063 #define SAML_ADVICE                                                     "Advice"
00064 #define SAML_NOT_BEFORE                                         "NotBefore"
00065 #define SAML_NOT_ON_OR_AFTER                "NotOnOrAfter"
00066 #define SAML_SIGNATURE                                          "Signature"
00067 
00068 #define SAML_EMAIL_ADDRESS                                      "#emailAddress"
00069 #define SAML_X509_SUBJECT_NAME                          "#X509SubjectName"
00070 #define SAML_WINDOWS_DOMAIN_QUALIFIED_NAME  "#WindowsDomainQualifiedName"
00071 
00072 #define SAML_NAME_QUALIFIER                                     "NameQualifier"
00073 #define SAML_FORMAT                                                     "Format"
00074 #define SAML_NAME_IDENTIFIER                "NameIdentifier"
00075 #define SAML_SUBJECT_CONFIRMATION                       "SubjectConfirmation"
00076 #define SAML_CONFIRMATION_METHOD            "ConfirmationMethod"
00077 #define SAML_SUBJECT_CONFIRMATION_DATA          "SubjectConfirmationData"
00078 #define SAML_KEY_INFO                                           "KeyInfo"
00079 #define SAML_SUBJECT                                            "Subject"
00080 
00081 #define SAML_AUDIENCE                                           "Audience"
00082 #define SAML_AUDIENCE_RESTRICTION_CONDITION_TYPE "AudienceRestrictionConditionType" 
00083 #define SAML_AUDIENCE_RESTRICTION_CONDITION "AudienceRestrictionCondition"
00084 
00085 #define SAML_AUTHENTICATION_METHOD                      "AuthenticationMethod"
00086 #define SAML_AUTHENTICATION_INSTANT                     "AuthenticationInstant"
00087 #define SAML_IP_ADDRESS                                         "IPAddress" 
00088 #define SAML_DNS_ADDRESS                    "DNSAddress"
00089 #define SAML_SUBJECT_LOCALITY                "SubjectLocality"
00090 #define SAML_AUTHORITY_BINDING                          "AuthorityBinding"
00091 #define SAML_AUTHORITY_KIND                                     "AuthorityKind"
00092 #define SAML_LOCATION                                           "Location"
00093 #define SAML_BINDING                                            "Binding"
00094 
00095 #define SAML_RESOURCE                                           "Resource"
00096 #define SAML_DECISION                                           "Decision"    
00097 #define SAML_ACTION                                                     "Action"
00098 #define SAML_NAMESPACE                                          "Namespace"
00099 #define SAML_ASSERTION_ID_REFERENCE                     "AssertionIDReference" 
00100 #define SAML_ASSERTION                                          "Assertion"    
00101 #define SAML_ACTION                                                     "Action"
00102 #define SAML_EVIDENCE                                           "Evidence"
00103 
00104 #define SAML_ATTRIBUTE_NAME                                     "AttributeName"
00105 #define SAML_ATTRIBUTE_NAMESPACE            "AttributeNamespace"
00106 #define SAML_ATTRIBUTE_VALUE                "AttributeValue"
00107 #define SAML_ATTRIBUTE                                          "Attribute"
00108 #define SAML_ATTRIBUTE_DESIGNATOR                       "AttributeDesignator"
00109 
00110 #define SAML_SUB_CONFIRMATION_HOLDER_OF_KEY     "urn:oasis:names:tc:SAML:1.0:cm:holder-of-key"
00111 #define SAML_SUB_CONFIRMATION_SENDER_VOUCHES    "urn:oasis:names:tc:SAML:1.0:cm:sender-vouches"
00112 #define SAML_SUB_CONFIRMATION_ARTIFACT          "urn:oasis:names:tc:SAML:1.0:cm:artifact-01"
00113 #define SAML_SUB_CONFIRMATION_BEARER            "urn:oasis:names:tc:SAML:1.0:cm:bearer"
00114 
00115 #define SAML_AUTH_METHOD_URI_PASSWORD           "urn:oasis:names:tc:SAML:1.0:am:password"
00116 #define SAML_AUTH_METHOD_URI_KERBEROS           "urn:ietf:rfc:1510"
00117 #define SAML_AUTH_METHOD_URI_SRP                        "urn:ietf:rfc:2945"
00118 #define SAML_AUTH_METHOD_URI_HARDWARE_TOKEN     "urn:oasis:names:tc:SAML:1.0:am:HardwareToken"
00119 #define SAML_AUTH_METHOD_URI_SSL_TLS            "urn:ietf:rfc:2246"
00120 #define SAML_AUTH_METHOD_URI_X509                       "urn:oasis:names:tc:SAML:1.0:am:X509-PKI"
00121 #define SAML_AUTH_METHOD_URI_PGP                        "urn:oasis:names:tc:SAML:1.0:am:PGP"
00122 #define SAML_AUTH_METHOD_URI_SPKI                       "urn:oasis:names:tc:SAML:1.0:am:SPKI"
00123 #define SAML_AUTH_METHOD_URI_XKMS                       "urn:oasis:names:tc:SAML:1.0:am:XKMS"
00124 #define SAML_AUTH_METHOD_URI_XML_DS                     "urn:ietf:rfc:3075"
00125 #define SAML_AUTH_METHOD_URI_UNSPECIFIED        "urn:oasis:names:tc:SAML:1.0:am:unspecified"
00126 
00127 #define SAML_ACTION_URI_RWEDC_N                         "urn:oasis:names:tc:SAML:1.0:action:rwedc-negation"
00128 #define SAML_ACTION_URI_RWEDC                           "urn:oasis:names:tc:SAML:1.0:action:rwedc"
00129 
00130 #define SAML_ACTION_READ                                        "Read"
00131 #define SAML_ACTION_WRITE                                       "Write"
00132 #define SAML_ACTION_EXECUTE                                     "Execute"
00133 #define SAML_ACTION_DELETE                                      "Delete"
00134 #define SAML_ACTION_CONTROL                                     "Control"
00135 #define SAML_ACTION_READ_N                                      "~Read"
00136 #define SAML_ACTION_WRITE_N                                     "~Write"
00137 #define SAML_ACTION_EXECUTE_N                           "~Execute"
00138 #define SAML_ACTION_DELETE_N                            "~Delete"
00139 #define SAML_ACTION_CONTROL_N                           "~Control"
00140 
00141 #define SAML_MAJOR_VERSION                                      "1"
00142 
00143 typedef struct saml_assertion_s saml_assertion_t;
00144 
00145 #ifndef SAML_DECLARE
00146 #define SAML_DECLARE(type)      AXIS2_EXTERN type AXIS2_CALL
00147 #endif
00148 
00149 /* Defines the possible values to be reported as the status of an
00150  * authorization decision statement.
00151  */
00152 typedef enum decision_type
00153 {
00154     PERMIT = 0,
00155     DENY,
00156     INDETERMINATE
00157 } decision_type_t;
00158 
00159 typedef enum
00160 {
00161     SAML_COND_UNSPECFIED = 0,
00162     SAML_COND_AUDI_RESTRICTION 
00163 } saml_cond_type_t; 
00164 
00165 typedef struct condition_s 
00166 {
00167     saml_cond_type_t type;
00168     void *cond;
00169 } saml_condition_t;
00170 
00171 typedef struct saml_audi_restriction_cond_s
00172 {
00173     axutil_array_list_t *audiences;     
00174 } saml_audi_restriction_cond_t;
00175 
00176 typedef struct saml_advise_s
00177 {
00178     int a;
00179 } saml_advise_t;
00180 
00181 typedef enum
00182 {
00183     SAML_STMT_UNSPECIFED = 0,
00184     SAML_STMT_SUBJECTSTATEMENT,
00185     SAML_STMT_AUTHENTICATIONSTATEMENT,
00186     SAML_STMT_AUTHORIZATIONDECISIONSTATEMENT,
00187     SAML_STMT_ATTRIBUTESTATEMENT
00188 } saml_stmt_type_t;
00189 
00190 typedef struct
00191 {
00192     saml_stmt_type_t type;
00193     void *stmt;
00194 } saml_stmt_t;
00195 
00196 typedef struct saml_named_id_s
00197 {
00198     /* The security or administrative domain that qualifies the name of 
00199      * the subject 
00200      */
00201     axis2_char_t *name_qualifier;
00202 
00203     /* The syntax used to describe the name of the subject */
00204     axis2_char_t *format;
00205 
00206     axis2_char_t *name;
00207 } saml_named_id_t;
00208 
00209 
00210 typedef struct saml_subject_s
00211 {
00212     saml_named_id_t *named_id;
00213     
00214     /* URI reference that identifies a protocol to be used to authenticate 
00215      * the subject 
00216      */
00217     axutil_array_list_t *confirmation_methods;
00218 
00219     /* An XML Signature element that specifies a cryptographic key held by 
00220      * the subject 
00221      */
00222     axiom_node_t *key_info;
00223 
00224     /* Additional authentication information to be used by a specific 
00225      * authentication protocol 
00226      */
00227     axiom_node_t *confirmation_data;    
00228 } saml_subject_t;
00229 
00230 typedef struct saml_subject_stmt_s
00231 {
00232     saml_subject_t *subject;
00233 } saml_subject_stmt_t;
00234 
00235 typedef struct saml_action
00236 {
00237     /* URI for the specified action to be performed */
00238     char *name_space;
00239 
00240     /* An action to be performed on the data */
00241     char *data;
00242 } saml_action_t;
00243 
00244 
00245 typedef struct saml_evidence_s
00246 {
00247     /* Specifies an assertion by reference to the value of the assertion’s 
00248      * AssertionID attribute 
00249      */
00250     axutil_array_list_t *assertion_ids;
00251 
00252     /* Specifies an assertion by value */
00253     axutil_array_list_t *assertions;
00254 } saml_evidence_t;
00255 
00256 
00257 typedef struct saml_subject_locality
00258 {
00259     /* The IP address of the system entity that was authenticated */
00260     axis2_char_t *ip;
00261 
00262     /* The DNS address of the system entity that was authenticated */
00263     axis2_char_t *dns;
00264 } saml_subject_locality_t;
00265 
00266 
00267 typedef struct saml_auth_binding
00268 {
00269     /* The type of SAML Protocol queries to which the authority described 
00270      * by this element will respond 
00271      */
00272     axis2_char_t *auth_kind;
00273 
00274     /* A URI reference describing how to locate and communicate with the 
00275      * authority 
00276      */
00277     axis2_char_t *location;
00278 
00279     /* A URI reference identifying the SAML protocol binding to use 
00280      * in communicating with the authority 
00281      */
00282     axis2_char_t *binding;
00283 } saml_auth_binding_t;
00284 
00285 typedef struct saml_auth_stmt
00286 {
00287         saml_subject_t *subject;
00288 
00289     /* A URI reference that specifies the type of authentication that took place */
00290     axis2_char_t *auth_method;
00291     
00292     /* Specifies the time at which the authentication took place */
00293     axutil_date_time_t *auth_instanse;
00294 
00295     /* 
00296      * Specifies the DNS domain name and IP address for the system entity from which the Subject was
00297      * apparently authenticated 
00298      */
00299     /*saml_subject_locality_t *sub_locality;*/
00300         axis2_char_t *ip;
00301         
00302         axis2_char_t *dns;
00303 
00304     /* Indicates that additional information about the subject of the statement may be available */
00305     axutil_array_list_t *auth_binding;
00306 
00307 } saml_auth_stmt_t;
00308 
00309 typedef struct saml_auth_desicion_stmt
00310 {
00311     saml_subject_t *subject;
00312     /* A URI reference identifying the resource to which access authorization */
00313     char *resource;
00314 
00315     /* The decision rendered by the issuer with respect to the specified resource */
00316     char *decision;
00317 
00318     /* The set of actions authorized to be performed on the specified resource */
00319     axutil_array_list_t *action;
00320 
00321     /* A set of assertions that the issuer relied on in making the decision */
00322     saml_evidence_t *evidence;
00323 } saml_auth_desicion_stmt_t;
00324 
00325 typedef struct saml_attr_s 
00326 {
00327     /* The name of the attribute */
00328     char *attr_name;
00329 
00330     /* The namespace in which the AttributeName elements are interpreted */
00331     char *attr_nmsp;
00332 
00333     axutil_array_list_t *attr_value;
00334 } saml_attr_t;
00335 
00336 
00337 typedef struct saml_attr_stmt_s 
00338 {
00339     saml_subject_t *subject;
00340     /* An attribute */
00341     axutil_array_list_t *attribute;
00342 } saml_attr_stmt_t;
00343 
00344 typedef struct saml_attr_desig_s
00345 {
00346     axis2_char_t *attr_name;
00347     axis2_char_t *attr_nmsp;
00348 } saml_attr_desig_t;
00349 
00350 struct saml_assertion_s
00351 {
00352     /* majod version */
00353     axis2_char_t *major_version;
00354 
00355     /* minor version */
00356     axis2_char_t *minor_version;
00357 
00358     /* id */
00359     axis2_char_t *assertion_id;
00360 
00361     /* uri representing the issuer */
00362     axis2_char_t *issuer;
00363 
00364     /* time instant of the issue */
00365     axutil_date_time_t *issue_instant;
00366         
00367         /* specifies the time instant at which the validity interval begins */
00368     axutil_date_time_t *not_before;    
00369 
00370         /* specifies the time instant at which the validity interval has ended */
00371     axutil_date_time_t *not_on_or_after;
00372 
00373     /* SAML condition */
00374     axutil_array_list_t *conditions;
00375 
00376     /* An XML Signature that authenticates the assertion */
00377     axiom_node_t *signature;
00378 
00379         /* array list containing the statements */
00380         axutil_array_list_t *statements;
00381 
00382         /* information about the signing */
00383         oxs_sign_ctx_t *sign_ctx;
00384 
00385         /* The xml node which is used to build the assertion */
00386         axiom_node_t *ori_xml;  
00387 };
00388 
00389 /* assertion */
00390 
00391 /* 
00392  * Creates a saml assertion.
00393  * @param env pointer to environment struct
00394  */
00395 AXIS2_EXTERN saml_assertion_t *AXIS2_CALL 
00396 saml_assertion_create(
00397         const axutil_env_t *env);
00398 
00399 /* 
00400  * Free a saml assertion
00401  * @param env pointer to environment struct
00402  */
00403 AXIS2_EXTERN void AXIS2_CALL 
00404 saml_assertion_free(
00405         saml_assertion_t *assertion, 
00406         const axutil_env_t *env);
00407 
00408 /* 
00409  * Build the saml assertion from a axiom node.
00410  * @param assertion assertion to be populated
00411  * @param env pointer to environment struct
00412  */
00413 AXIS2_EXTERN int AXIS2_CALL 
00414 saml_assertion_build(
00415         saml_assertion_t *a, 
00416         axiom_node_t *node, 
00417         const axutil_env_t *env);
00418 
00419 /* 
00420  * Serialize a saml assertion to a om node.
00421  * @param assertion assertion to be serialized
00422  * @param parent if specified created node will be a child of this  
00423  * @param env pointer to environment struct
00424  */
00425 AXIS2_EXTERN axiom_node_t * AXIS2_CALL 
00426 saml_assertion_to_om(
00427         saml_assertion_t *assertion, 
00428         axiom_node_t *parent, 
00429         const axutil_env_t *env);
00430 
00431 /* 
00432  * Returns all the condition in the assertion.
00433  * @param assertion assertion object
00434  * @param env pointer to environment struct
00435  */
00436 AXIS2_EXTERN axutil_array_list_t * AXIS2_CALL 
00437 saml_assetion_get_conditions(
00438         saml_assertion_t *assertion, 
00439         const axutil_env_t *env);
00440 
00441 /* 
00442  * Returns all the statements in the assertion.
00443  * @param assertion SAML assertion object
00444  * @param env pointer to environment struct
00445  */
00446 AXIS2_EXTERN axutil_array_list_t * AXIS2_CALL 
00447 saml_assertion_get_statements(
00448         saml_assertion_t *assertion, 
00449         const axutil_env_t *env);
00450 
00451 /* 
00452  * Set the conditions for the assertion. If there are conditions already 
00453  * specified, they will be freed. 
00454  * @param assertion SAML assertion object
00455  * @param env pointer to environment struct
00456  * @param list array list containing the conditions
00457  */
00458 AXIS2_EXTERN int AXIS2_CALL 
00459 saml_assertion_set_conditions(
00460         saml_assertion_t *assertion, 
00461         const axutil_env_t *env, axutil_array_list_t *list);
00462 
00463 /* 
00464  * Add a condition to the assertin.
00465  * @param assertion SAML assertion object
00466  * @param env pointer to environment struct
00467  * @param cond a pointer to a condition to be added
00468  */
00469 AXIS2_EXTERN int AXIS2_CALL 
00470 saml_assertion_add_condition(
00471         saml_assertion_t *assertion, 
00472         const axutil_env_t *env, 
00473         saml_condition_t *cond);
00474 
00475 /*
00476  * Remove a condition from the assertion.
00477  * @param assertion SAML assertion object
00478  * @param env pointer to environment struct
00479  */
00480 AXIS2_EXTERN int AXIS2_CALL 
00481 saml_assertion_remove_condition(
00482         saml_assertion_t *assertion, 
00483         const axutil_env_t *env, 
00484         int index);
00485 
00486 /* 
00487  * Set the statements for the assertion. If there are statements already 
00488  * specified, they will be freed. 
00489  * @param assertion SAML assertion object
00490  * @param env pointer to environment struct
00491  * @param list array list containing the statements
00492  */
00493 AXIS2_EXTERN int AXIS2_CALL 
00494 saml_assertion_set_statements(
00495         saml_assertion_t *assertion, 
00496         const axutil_env_t *env, 
00497         axutil_array_list_t *list);
00498 
00499 /* 
00500  * Add a statement to the assertin.
00501  * @param assertion SAML assertion object
00502  * @param env pointer to environment struct
00503  * @param cond a pointer to a statement to be added
00504  */
00505 AXIS2_EXTERN int AXIS2_CALL 
00506 saml_assertion_add_statement(
00507         saml_assertion_t *assertion, 
00508         const axutil_env_t *env, 
00509         saml_stmt_t *stmt);
00510 
00511 /*
00512  * Remove a statement from the assertion.
00513  * @param assertion SAML assertion object
00514  * @param env pointer to environment struct
00515  */
00516 AXIS2_EXTERN int AXIS2_CALL 
00517 saml_assertion_remove_statement(
00518         saml_assertion_t *assertion, 
00519         const axutil_env_t *env, 
00520         int index);
00521 
00522 /* 
00523  * Set the minor vertion of the assertion
00524  * @param assertion SAML assertion object
00525  * @param env pointer to environment struct
00526  * @param version minor version number
00527  */ 
00528 AXIS2_EXTERN int AXIS2_CALL 
00529 saml_assertion_set_minor_version(
00530         saml_assertion_t *assertion, 
00531         const axutil_env_t *env, 
00532         int version);
00533 
00534 /* 
00535  * Set the minor vertion of the assertion
00536  * @param assertion SAML assertion object
00537  * @param env pointer to environment struct
00538  */ 
00539 AXIS2_EXTERN int AXIS2_CALL 
00540 saml_assertion_set_issuer(
00541         saml_assertion_t *assertion, 
00542         const axutil_env_t *env, 
00543         axis2_char_t *issuer);
00544 
00545 /* 
00546  * Set the issuer of the assertion
00547  * @param assertion SAML assertion object
00548  * @param env pointer to environment struct
00549  * @instant time of the saml issue
00550  */
00551 AXIS2_EXTERN int AXIS2_CALL 
00552 saml_assertion_set_issue_instant(
00553         saml_assertion_t *assertion, 
00554         const axutil_env_t *env, 
00555         axutil_date_time_t *instant);
00556 
00557 /* 
00558  * Specifies the time instant at which the validity interval begins.
00559  * @param assertion SAML assertion object
00560  * @param env pointer to environment struct
00561  * @instant time at which validity interval begins 
00562  */ 
00563 AXIS2_EXTERN int AXIS2_CALL 
00564 saml_assertion_set_not_before(
00565         saml_assertion_t *assertion, 
00566         const axutil_env_t *env, 
00567         axutil_date_time_t *time);
00568 
00569 /* 
00570  * Specifies the time instant at which the validity interval has ended
00571  * @param assertion SAML assertion object
00572  * @param env pointer to environment struct
00573  * @instant time at which validity interval has ended 
00574  */ 
00575 AXIS2_EXTERN int AXIS2_CALL 
00576 saml_assertion_set_not_on_or_after(
00577         saml_assertion_t *assertion, 
00578         const axutil_env_t *env, 
00579         axutil_date_time_t *time);
00580 
00581 /* 
00582  * Return SAML authority that created the assertion. The name of the issuer 
00583  * is provided as a string and it is unambiguous to the relying party.
00584  * @param assertion SAML assertion object
00585  * @param env pointer to environment struct
00586  */
00587 AXIS2_EXTERN axis2_char_t * AXIS2_CALL 
00588 saml_assertion_get_issuer(
00589         saml_assertion_t *assertion, 
00590         const axutil_env_t *env);
00591 
00592 /*
00593  * Return the time instant of issue.
00594  * @param assertion SAML assertion object
00595  * @param env pointer to environment struct
00596  */
00597 AXIS2_EXTERN axutil_date_time_t * AXIS2_CALL 
00598 saml_assertion_get_issue_instant(
00599         saml_assertion_t *assertion, 
00600         const axutil_env_t *env);
00601 
00602 /* 
00603  * Get the time instant at which the validity interval begins.
00604  * @param assertion SAML assertion object
00605  * @param env pointer to environment struct
00606  */ 
00607 AXIS2_EXTERN axutil_date_time_t * AXIS2_CALL 
00608 saml_assertion_get_not_before(
00609         saml_assertion_t *assertion, 
00610         const axutil_env_t *env);
00611 
00612 /* 
00613  * Get the time instant at which the validity interval has ended
00614  * @param assertion SAML assertion object
00615  * @param env pointer to environment struct
00616  */ 
00617 AXIS2_EXTERN axutil_date_time_t * AXIS2_CALL 
00618 saml_assertion_get_not_on_or_after(
00619         saml_assertion_t *assertion, 
00620         const axutil_env_t *env);
00621 
00622 /* sign methods */
00623 
00624 /* 
00625  * Get weather a assertion is signed. This is set when the Assertion is built 
00626  * from a om node.
00627  * @param assertion SAML assertion object
00628  * @param env pointer to environment struct
00629  * @return AXIS2_TRUE if signed.
00630  */
00631 AXIS2_EXTERN int AXIS2_CALL
00632 saml_assertion_is_signed(
00633         saml_assertion_t *assertion, 
00634         const axutil_env_t *env);
00635 
00636 /*
00637  * Get weather a assertion is set to be signed. This applies when building 
00638  * the SAML object programmatically.
00639  * @param assertion SAML assertion object
00640  * @param env pointer to environment struct
00641  * @return AXIS2_TRUE if the object model is set to be signed.
00642  */
00643 AXIS2_EXTERN int AXIS2_CALL
00644 saml_assertion_is_sign_set(
00645         saml_assertion_t *assertion, 
00646         const axutil_env_t *env);
00647 
00648 /*
00649  * Verify the assertion according to the sign context set in the 
00650  * saml_assertion_set_default_signature or saml_assertion_set_signature method.
00651  * @param assertion SAML assertion object
00652  * @param env pointer to environment struct
00653  */
00654 AXIS2_EXTERN int AXIS2_CALL
00655 saml_assertion_signature_verify(
00656         saml_assertion_t *assertion, 
00657         const axutil_env_t *env);
00658 
00659 /* 
00660  * Sign the assertion using the information set in the 
00661  * saml_assertion_set_default_signature or saml_assertion_set_signature method.
00662  * @param assertion SAML assertion object
00663  * @param env pointer to environment struct
00664  */
00665 AXIS2_EXTERN int AXIS2_CALL
00666 saml_assertion_sign(
00667         saml_assertion_t *assertion, 
00668         axiom_node_t *node, 
00669         const axutil_env_t *env);
00670 
00671 /* 
00672  * Remove the information set for signing or verifying the assertion.
00673  * @param assertion SAML assertion object
00674  * @param env pointer to environment struct
00675  */
00676 AXIS2_EXTERN int AXIS2_CALL 
00677 saml_assertion_unsign(
00678         saml_assertion_t *assertion, 
00679         const axutil_env_t *env);
00680 
00681 /* 
00682  * Set the information required to sign the message. 
00683  * @param assertion SAML assertion object
00684  * @param env pointer to environment struct
00685  * @param sign_ctx oxs_sign_ctx_t object which contains the sign information
00686  */
00687 AXIS2_EXTERN int AXIS2_CALL 
00688 saml_assertion_set_default_signature(
00689         saml_assertion_t *assertion, 
00690         const axutil_env_t *env, 
00691         oxs_sign_ctx_t *sign_ctx);
00692 
00693 /* 
00694  * Set the information required to sign the message.
00695  * @param assertion SAML assertion object
00696  * @param env pointer to environment struct
00697  * @param sign_ctx oxs_sign_ctx_t object which contains the sign information
00698  */
00699 AXIS2_EXTERN int AXIS2_CALL 
00700 saml_assertion_set_signature(
00701         saml_assertion_t *assertion, 
00702         const axutil_env_t *env, 
00703         oxs_sign_ctx_t *sign_ctx);
00704 
00705 
00706 /* statement */
00707 
00708 /* 
00709  * Create a saml statement. Statement is a generic object which can hold 
00710  * tatement object can hold other statements like Autherization statements.
00711  * @param env pointer to environment struct 
00712  * @return saml_stmt object to hold other staments
00713  */
00714 AXIS2_EXTERN saml_stmt_t * AXIS2_CALL 
00715 saml_stmt_create(
00716         const axutil_env_t *env);
00717 
00718 /* 
00719  * Free a saml statment. 
00720  * @param stmt SAML stmt object
00721  * @param env pointer to environment struct
00722  */
00723 AXIS2_EXTERN void AXIS2_CALL 
00724 saml_stmt_free(
00725         saml_stmt_t *stmt, 
00726         const axutil_env_t *env);
00727 
00728 /* 
00729  * Build a saml statement from a XML node. The statement types that are 
00730  * supported are Authentication Statement, Attribute Statement, 
00731  * Authentication Dicision Statement.
00732  * @param stmt SAML stmt object
00733  * @param env pointer to environment struct
00734  */
00735 AXIS2_EXTERN int AXIS2_CALL 
00736 saml_stmt_build(
00737         saml_stmt_t *stmt, 
00738         axiom_node_t *node, 
00739         const axutil_env_t *env);
00740 
00741 /*
00742  * Serialize a statement to a axiom node.
00743  * @param stmt SAML stmt object
00744  * @param parent if specified created node will be a child of this  
00745  * @param env pointer to environment struct
00746  */
00747 AXIS2_EXTERN axiom_node_t * AXIS2_CALL 
00748 saml_stmt_to_om(saml_stmt_t *stmt, axiom_node_t *parent, const axutil_env_t *env);
00749 
00750 /*
00751  * Get the type of the statement. 
00752  * @param stmt SAML stmt object
00753  * @param env pointer to environment struct
00754  * @return statment type as saml_stmt_type_t
00755  */
00756 AXIS2_EXTERN saml_stmt_type_t AXIS2_CALL 
00757 saml_stmt_get_type(saml_stmt_t *stmt, const axutil_env_t *env);
00758 
00759 /*
00760  * Return the specific stament in this statement. 
00761  * @param stmt SAML stmt object
00762  * @param env pointer to environment struct
00763  */
00764 AXIS2_EXTERN saml_stmt_t * AXIS2_CALL 
00765 saml_stmt_get_stmt(saml_stmt_t *stmt, const axutil_env_t *env);
00766 
00767 /* 
00768  * Set the type of statement.
00769  * @param stmt SAML stmt object
00770  * @param env pointer to environment struct
00771  * @param type type of the statement as saml_stmt_type_t 
00772  */
00773 AXIS2_EXTERN int AXIS2_CALL 
00774 saml_stmt_set_type(saml_stmt_t *stmt, const axutil_env_t *env, saml_stmt_type_t type);
00775 
00776 /*
00777  * Set the statement. If a statment is already specified it will be freed.
00778  * @param stmt SAML stmt object
00779  * @param env pointer to environment struct
00780  * @param st pointer to the statement to be set
00781  * @param type type of the statement as saml_stmt_type_t 
00782  */
00783 AXIS2_EXTERN int AXIS2_CALL 
00784 saml_stmt_set_stmt(saml_stmt_t *stmt, const axutil_env_t *env, 
00785                                    void *st, saml_stmt_type_t type);
00786 
00787 
00788 /*AXIS2_EXTERN int AXIS2_CALL saml_id_init(saml_id_t *id, const axutil_env_t *env);*/
00789 AXIS2_EXTERN axis2_char_t * AXIS2_CALL saml_id_generate_random_bytes(const axutil_env_t *env);
00790 /*AXIS2_EXTERN void AXIS2_CALL saml_id_uninit(saml_id_t *id, const axutil_env_t *env);*/
00791 
00792 
00793 /* AuthorityBinding */
00794 
00795 /*
00796  * Creates a SAML AuthorityBinding.
00797  * @param env pointer to environment struct
00798  */
00799 AXIS2_EXTERN saml_auth_binding_t * AXIS2_CALL 
00800 saml_auth_binding_create(const axutil_env_t *env);
00801 
00802 /*
00803  * Free a SAML Autherity binding.
00804  * @param auth_bind SAML Autherity binding object
00805  * @param env pointer to environment struct
00806  */
00807 AXIS2_EXTERN void AXIS2_CALL 
00808 saml_auth_binding_free(saml_auth_binding_t *auth_bind, const axutil_env_t *env);
00809 
00810 /*
00811  * Create a SAML autherity binding from a XML node.
00812  * @param auth_bind SAML Autherity binding object
00813  * @param node XML node containing the autherity binding 
00814  * @param env pointer to environment struct 
00815  */
00816 AXIS2_EXTERN int AXIS2_CALL 
00817 saml_auth_binding_build(saml_auth_binding_t *auth_bind, 
00818                                                 axiom_node_t *node, const axutil_env_t *env);
00819 
00820 /*
00821  * Serialize an auth binding to axiom node
00822  * @param auth_bind SAML Autherity binding object
00823  * @param parent if specified created node will be a child of this node  
00824  * @param env pointer to environment struct 
00825  */
00826 AXIS2_EXTERN axiom_node_t * AXIS2_CALL 
00827 saml_auth_binding_to_om(saml_auth_binding_t *auth_binding, 
00828                                                 axiom_node_t *parent, const axutil_env_t *env);
00829 
00830 /*
00831  * Return the type of SAML protocol queries to which the authority described 
00832  * by this element will respond.
00833  * @param auth_bind SAML Autherity binding object
00834  * @param env pointer to environment struct 
00835  */
00836 AXIS2_EXTERN axis2_char_t * AXIS2_CALL 
00837 saml_auth_binding_get_authoity_kind(saml_auth_binding_t *auth_bind, 
00838                                                                         const axutil_env_t *env);
00839 
00840 /*
00841  * Return the URI identifying the SAML protocol binding to use in 
00842  * communicating with the authority.
00843  * @param auth_bind SAML Autherity binding object
00844  * @param env pointer to environment struct 
00845  */
00846 AXIS2_EXTERN axis2_char_t * AXIS2_CALL 
00847 saml_auth_binding_get_binding(saml_auth_binding_t *auth_binding, 
00848                                                           const axutil_env_t *env);
00849 
00850 /*
00851  * Return a URI describing how to locate and communicate with the authority
00852  * @param auth_bind SAML Autherity binding object
00853  * @param env pointer to environment struct 
00854  */
00855 AXIS2_EXTERN axis2_char_t * AXIS2_CALL 
00856 saml_auth_binding_get_location(saml_auth_binding_t *auth_bind, 
00857                                                            const axutil_env_t *env);
00858 
00859 /*
00860  * Set the type of SAML protocol queries to which the authority described 
00861  * by this element will respond.
00862  * @param auth_bind SAML Autherity binding object
00863  * @param env pointer to environment struct 
00864  * @param auth_kind A string representing the SAML protocol queries 
00865  */
00866 AXIS2_EXTERN int AXIS2_CALL 
00867 saml_auth_binding_set_authority_kind(saml_auth_binding_t *auth_bind, 
00868                                                                          const axutil_env_t *env, axis2_char_t *auth_kind);
00869 
00870 /*
00871  * Set the URI identifying the SAML protocol binding to use in 
00872  * communicating with the authority.
00873  * @param auth_bind SAML Autherity binding object
00874  * @param env pointer to environment struct 
00875  * @param binding URI identifying the SAML protocol binding 
00876  */
00877 AXIS2_EXTERN int AXIS2_CALL 
00878 saml_auth_binding_set_binding(saml_auth_binding_t *auth_bind, 
00879                                                           const axutil_env_t *env, axis2_char_t *binding);
00880 
00881 /*
00882  * Set a URI describing how to locate and communicate with the authority
00883  * @param auth_bind SAML Autherity binding object
00884  * @param env pointer to environment struct 
00885  * @param location URI describing location and communication protocol
00886  */
00887 AXIS2_EXTERN int AXIS2_CALL 
00888 saml_auth_binding_set_location(saml_auth_binding_t *auth_bind, 
00889                                                            const axutil_env_t *env, axis2_char_t *location);
00890 
00891 
00892 /* subject locality */
00893 
00894 /*
00895  * Create a SAML subject locality.
00896  * @param env pointer to environment struct 
00897  */
00898 AXIS2_EXTERN saml_subject_locality_t * AXIS2_CALL 
00899 saml_subject_locality_create(const axutil_env_t *env);
00900 
00901 /*
00902  * Free a SAML subject locality.
00903  * @param sub_locality SAML subject locality object
00904  * @param env pointer to environment struct 
00905  */
00906 AXIS2_EXTERN void AXIS2_CALL 
00907 saml_subject_locality_free(saml_subject_locality_t *sub_locality, 
00908                                                    const axutil_env_t *env);
00909 
00910 /*
00911  * Populate a SAML subject locality from a XML node containing a SAML 
00912  * subject locality.
00913  * @param sub_locality SAML subject locality object
00914  * @param node XML node containing the SAML subject locality
00915  * @param env pointer to environment struct 
00916  */
00917 AXIS2_EXTERN int AXIS2_CALL 
00918 saml_subject_locality_build(saml_subject_locality_t *sub_locality, 
00919                                                         axiom_node_t *node, const axutil_env_t *env);
00920 
00921 /*
00922  * Serialize a subject locality to an axiom node.
00923  * @param sub_locality SAML subject locality object
00924  * @param parent if specified created node will be a child of this node  
00925  * @param env pointer to environment struct 
00926  */
00927 AXIS2_EXTERN axiom_node_t *AXIS2_CALL 
00928 saml_subject_locality_to_om(saml_subject_locality_t *sub_locality, 
00929                                                         axiom_node_t *parent, const axutil_env_t *env);
00930 
00931 /*
00932  * Return the IP address of the system entity that was authenticated.
00933  * @param sub_locality SAML subject locality object
00934  * @param env pointer to environment struct 
00935  * @return IP address
00936  */
00937 AXIS2_EXTERN axis2_char_t * AXIS2_CALL 
00938 saml_subject_locality_get_ip(saml_subject_locality_t *sub_locality, 
00939                                                          const axutil_env_t *env);
00940 
00941 /*
00942  * Return the DNS address of the system entity that was authenticated.
00943  * @param sub_locality SAML subject locality object
00944  * @param env pointer to environment struct 
00945  * @return DNS address
00946  */
00947 AXIS2_EXTERN axis2_char_t * AXIS2_CALL 
00948 saml_subject_locality_get_dns(saml_subject_locality_t *sub_locality, 
00949                                                           const axutil_env_t *env);
00950 
00951 /*
00952  * Set the IP address of the system entity that was authenticated.
00953  * @param sub_locality SAML subject locality object
00954  * @param env pointer to environment struct 
00955  * @param ip IP address
00956  */
00957 AXIS2_EXTERN int AXIS2_CALL 
00958 saml_subject_locality_set_ip(saml_subject_locality_t *sub_locality, 
00959                                                          const axutil_env_t *env, axis2_char_t *ip);
00960 
00961 /*
00962  * Set the DNS address of the system entity that was authenticated.
00963  * @param sub_locality SAML subject locality object
00964  * @param env pointer to environment struct 
00965  * @param ip DNS address
00966  */
00967 AXIS2_EXTERN int AXIS2_CALL 
00968 saml_subject_locality_set_dns(saml_subject_locality_t *sub_locality, 
00969                                                           const axutil_env_t *env, axis2_char_t *dns);
00970 
00971 
00972 /* subject */
00973 
00974 /*
00975  * Create a SAML subject
00976  * @param env pointer to environment struct 
00977  */
00978 AXIS2_EXTERN saml_subject_t * AXIS2_CALL 
00979 saml_subject_create(const axutil_env_t *env);
00980 
00981 /*
00982  * Free a SAML subject
00983  * @param subject SAML subject object
00984  * @param env pointer to environment struct 
00985  */
00986 AXIS2_EXTERN void AXIS2_CALL 
00987 saml_subject_free(saml_subject_t *subject, const axutil_env_t *env);
00988 
00989 /*
00990  * Populates a SAML subject from a XML node containing a SAML subject.
00991  * @param subject SAML subject object
00992  * @param node XML node containing the SAML subject locality
00993  * @param env pointer to environment struct 
00994  */
00995 AXIS2_EXTERN int AXIS2_CALL 
00996 saml_subject_build(saml_subject_t *subject, 
00997                                    axiom_node_t *node, const axutil_env_t *env);
00998 
00999 /*
01000  * Serialize a SAML subject to a axiom node.
01001  * @param subject SAML subject object
01002  * @param parent if specified created node will be a child of this node  
01003  * @param env pointer to environment struct 
01004  */
01005 AXIS2_EXTERN axiom_node_t * AXIS2_CALL 
01006 saml_subject_to_om(saml_subject_t *subject, 
01007                                    axiom_node_t *parent, const axutil_env_t *env);
01008 
01009 /*
01010  * Return the named id of the subject.
01011  * @param subject SAML subject object
01012  * @param env pointer to environment struct 
01013  * @return named id object
01014  */
01015 AXIS2_EXTERN saml_named_id_t * AXIS2_CALL 
01016 saml_subject_get_named_id(saml_subject_t *subject, const axutil_env_t *env);
01017 
01018 /*
01019  * Return the list of confirmation methods. Array list contains string values.
01020  * @param subject SAML subject object
01021  * @param env pointer to environment struct 
01022  * @return list containing the subject confirmation methods
01023  */
01024 AXIS2_EXTERN axutil_array_list_t * AXIS2_CALL 
01025 saml_subject_get_confirmation_methods(saml_subject_t *subject, 
01026                                                                           const axutil_env_t *env);
01027 
01028 /*
01029  * Return the list of confirmation data. Array list contains string values.
01030  * @param subject SAML subject object
01031  * @param env pointer to environment struct 
01032  * @return list containing the subject confirmation data
01033  */
01034 AXIS2_EXTERN axiom_node_t * AXIS2_CALL 
01035 saml_subject_get_confirmation_data(saml_subject_t *subject, const axutil_env_t *env);
01036 
01037 /*
01038  * Return an axiom node containing the key info of this subject. The axiom node 
01039  * is a ds:keyinfo of XML signature. 
01040  * @param subject SAML subject object
01041  * @param env pointer to environment struct 
01042  */
01043 AXIS2_EXTERN axiom_node_t * AXIS2_CALL 
01044 saml_subject_get_key_info(saml_subject_t *subject, const axutil_env_t *env);
01045 
01046 /*
01047  * Set the named id of the subject.
01048  * @param subject SAML subject object
01049  * @param env pointer to environment struct  
01050  * @param named_id a named id to be set
01051  */
01052 AXIS2_EXTERN int AXIS2_CALL 
01053 saml_subject_set_named_id(saml_subject_t *subject, 
01054                                                   const axutil_env_t *env, saml_named_id_t *named_id);
01055 
01056 /*
01057  * Set the confirmation as a array list. The array list should contain 
01058  * string values. If confirmation methods are already present they will 
01059  * be freed.
01060  * @param subject SAML subject object
01061  * @param env pointer to environment struct  
01062  * @param list list of confirmation methods
01063  */
01064 AXIS2_EXTERN int AXIS2_CALL 
01065 saml_subject_set_confirmation_methods(saml_subject_t *subject, 
01066                                                                           const axutil_env_t *env, 
01067                                                                           axutil_array_list_t *list);
01068 /* 
01069  * Add a subject confirmation to this subject.
01070  * @param subject SAML subject object
01071  * @param env pointer to environment struct
01072  * @param sub_confirmation subject confirmation
01073  */
01074 AXIS2_EXTERN int AXIS2_CALL 
01075 saml_subject_add_confirmation(saml_subject_t *subject, 
01076                                                           const axutil_env_t *env, 
01077                                                           axis2_char_t *sub_confirmation);
01078 
01079 /* 
01080  * Remove a subject confirmatin at the specified index.
01081  * @param subject SAML subject object
01082  * @param env pointer to environment struct
01083  * @param index index of the subject confirmation
01084  */
01085 AXIS2_EXTERN int AXIS2_CALL 
01086 saml_subject_remove_subject_confiirmation(saml_subject_t *subject, 
01087                                                                                   const axutil_env_t *env, int index);
01088 
01089 /* 
01090  * Set an XML Signature keyinfo element that provides access to a cryptographic 
01091  * key held by the subject
01092  * @param subject SAML subject object
01093  * @param env pointer to environment struct
01094  * @param node XML signature keyinfo element
01095  */
01096 AXIS2_EXTERN int AXIS2_CALL 
01097 saml_subject_set_key_info(saml_subject_t *subject, 
01098                                                   const axutil_env_t *env, axiom_node_t *node);
01099 
01100 /* subject statement */
01101 
01102 /*
01103  * Builds a subject statement from a om node containing a subject statement.
01104  * @param subject_stmt a subject statement object
01105  * @param node om node containing a subject statement
01106  * @param env pointer to environment struct
01107  */ 
01108 AXIS2_EXTERN int AXIS2_CALL 
01109 saml_subject_stmt_build(saml_subject_stmt_t *subject_stmt, 
01110                                                 axiom_node_t *node, const axutil_env_t *env);
01111 
01112 /* 
01113  * Free a subject statement object
01114  * @param subject_stmt a subject statement object 
01115  * @param env pointer to environment struct
01116  */
01117 AXIS2_EXTERN void AXIS2_CALL 
01118 saml_subject_stmt_free(saml_subject_stmt_t *subject_stmt, 
01119                                            const axutil_env_t *env);
01120 
01121 /* 
01122  * Create a subject statment object
01123  * @param env pointer to environment struct
01124  * @return a subject statement object
01125  */
01126 AXIS2_EXTERN saml_subject_stmt_t * AXIS2_CALL 
01127 saml_subject_stmt_create(const axutil_env_t *env);
01128 
01129 /*
01130  * Serialize a subject statment to an axiom node
01131  * @param subject_stmt a subject statement object 
01132  * @param parent if specified created node will be a child of this node  
01133  * @param env pointer to environment struct 
01134  */
01135 AXIS2_EXTERN axiom_node_t * AXIS2_CALL 
01136 saml_subject_stmt_to_om(saml_subject_stmt_t *subject_stmt, 
01137                                                 axiom_node_t *parent, const axutil_env_t *env);
01138 
01139 /* 
01140  * Set the subject of the subject statement
01141  * @param subject_stmt a subject statement object 
01142  * @param env pointer to environment struct 
01143  * @param subject subject to be set
01144  */
01145 AXIS2_EXTERN int AXIS2_CALL 
01146 saml_subject_stmt_set_subject(saml_subject_stmt_t *subject_stmt, 
01147                                                           const axutil_env_t *env, saml_subject_t *subject);
01148 
01149 /*
01150  * Set the subject of the subject statement
01151  * @param subject_stmt a subject statement object 
01152  * @param env pointer to environment struct 
01153  * @param subject subject to be set
01154  */
01155 AXIS2_EXTERN saml_subject_t * AXIS2_CALL 
01156 saml_subject_stmt_get_subject(saml_subject_stmt_t *subject_stmt, 
01157                                                           const axutil_env_t *env);
01158 
01159 /* auth desicin statement */
01160 /*
01161  * Create an autherization decision statement object.
01162  * @param env pointer to environment struct 
01163  * @return an autherization decision statement object
01164  */
01165 AXIS2_EXTERN saml_auth_desicion_stmt_t * AXIS2_CALL 
01166 saml_auth_desicion_stmt_create(const axutil_env_t *env);
01167 
01168 /*
01169  * Free an autherization decision statement object.
01170  * @param auth_des_stmt a autherization decision statement object
01171  * @param env pointer to environment struct 
01172  */
01173 AXIS2_EXTERN void AXIS2_CALL 
01174 saml_auth_desicion_stmt_free(saml_auth_desicion_stmt_t *auth_des_stmt, 
01175                                                          const axutil_env_t *env);
01176 
01177 /*
01178  * Populates an saml_auth_desicion_stmt_t object from a XML node containing
01179  * autherization decision statement.
01180  * @param auth_des_stmt a autherization decision statement object
01181  * @param node xml node containing autherization decision object.
01182  * @param env pointer to environment struct 
01183  */
01184 AXIS2_EXTERN int AXIS2_CALL 
01185 saml_auth_desicion_stmt_build(saml_auth_desicion_stmt_t *auth_des_stmt, 
01186                                                           axiom_node_t *node, const axutil_env_t *env);
01187 
01188 /*
01189  * Serialize an saml_auth_desicion_stmt_t object to a axiom node.
01190  * @param auth_des_stmt a autherization decision statement object
01191  * @param parent if specified created node will be a child of this node  
01192  * @param env pointer to environment struct 
01193  */
01194 AXIS2_EXTERN axiom_node_t * AXIS2_CALL 
01195 saml_auth_desicion_stmt_to_om(saml_auth_desicion_stmt_t *auth_des_stmt, 
01196                                                           axiom_node_t *parent, const axutil_env_t *env);
01197 
01198 /*
01199  * Get the subject which is in this autheization decision statement.
01200  * @param auth_des_stmt a autherization decision statement object
01201  * @param env pointer to environment struct 
01202  */
01203 AXIS2_EXTERN saml_subject_t * AXIS2_CALL 
01204 saml_auth_desicion_stmt_get_subject(saml_auth_desicion_stmt_t *auth_des_stmt, 
01205                                                                         const axutil_env_t *env);
01206 /*
01207  * Return a URI reference identifying the resource to which access 
01208  * authorization is sought.
01209  * @param auth_des_stmt a autherization decision statement object
01210  * @param env pointer to environment struct 
01211  */
01212 AXIS2_EXTERN axis2_char_t * AXIS2_CALL 
01213 saml_auth_desicion_stmt_get_resource(saml_auth_desicion_stmt_t *auth_des_stmt, 
01214                                                                          const axutil_env_t *env);
01215 
01216 /*
01217  * Return the decision rendered by the SAML authority with respect to 
01218  * the specified resource. 
01219  * @param auth_des_stmt a autherization decision statement object
01220  * @param env pointer to environment struct 
01221  */
01222 AXIS2_EXTERN axis2_char_t * AXIS2_CALL 
01223 saml_auth_desicion_stmt_get_desicion(saml_auth_desicion_stmt_t *auth_des_stmt, 
01224                                                                          const axutil_env_t *env);
01225 
01226 /* 
01227  * Return the list of actions authorized to be performed on the specified 
01228  * resource.
01229  * @param auth_des_stmt a autherization decision statement object
01230  * @param env pointer to environment struct 
01231  */
01232 AXIS2_EXTERN axutil_array_list_t * AXIS2_CALL 
01233 saml_auth_desicion_stmt_get_actions(saml_auth_desicion_stmt_t *auth_des_stmt, 
01234                                                                         const axutil_env_t *env);
01235 
01236 /*
01237  * Return the list of assertions that the SAML authority relied on in making 
01238  * the decision.
01239  * @param auth_des_stmt a autherization decision statement object
01240  * @param env pointer to environment struct 
01241  */
01242 AXIS2_EXTERN saml_evidence_t * AXIS2_CALL 
01243 saml_auth_desicion_stmt_get_evidence(saml_auth_desicion_stmt_t *auth_des_stmt, 
01244                                                                          const axutil_env_t *env);
01245 
01246 /*
01247  * Set a URI reference identifying the resource to which access 
01248  * authorization is sought.
01249  * @param auth_des_stmt a autherization decision statement object
01250  * @param env pointer to environment struct 
01251  * @param resource a URI referencing the resource
01252  */
01253 AXIS2_EXTERN int AXIS2_CALL 
01254 saml_auth_desicion_stmt_set_resource(saml_auth_desicion_stmt_t *auth_des_stmt, 
01255                                                                          const axutil_env_t *env, axis2_char_t *resource);
01256 
01257 /*
01258  * Set the decision rendered by the SAML authority with respect to 
01259  * the specified resource as a string value. Valid decisions are Permit, 
01260  * Deny and Indeterminate.
01261  * @param auth_des_stmt a autherization decision statement object
01262  * @param env pointer to environment struct 
01263  * @param decision set the decision.
01264  */
01265 AXIS2_EXTERN int AXIS2_CALL 
01266 saml_auth_desicion_stmt_set_desicion(saml_auth_desicion_stmt_t *auth_des_stmt, 
01267                                                                          const axutil_env_t *env, axis2_char_t *desicion);
01268 
01269 /* 
01270  * Set the list of actions authorized to be performed on the specified 
01271  * resource.
01272  * @param auth_des_stmt a autherization decision statement object
01273  * @param env pointer to environment struct 
01274  * @param list list containing action objects
01275  */
01276 AXIS2_EXTERN int AXIS2_CALL 
01277 saml_auth_desicion_stmt_set_actions(saml_auth_desicion_stmt_t *auth_des_stmt, 
01278                                                                         const axutil_env_t *env, axutil_array_list_t *list);
01279 
01280 /*
01281  * Remove an action in the specified index.
01282  * @param auth_des_stmt a autherization decision statement object
01283  * @param env pointer to environment struct 
01284  */
01285 AXIS2_EXTERN int AXIS2_CALL 
01286 saml_auth_desicion_stmt_remove_action(saml_auth_desicion_stmt_t *auth_des_stmt, 
01287                                                                           const axutil_env_t *env, int index);
01288 
01289 /*
01290  * Add an action.
01291  * @param auth_des_stmt a autherization decision statement object
01292  * @param env pointer to environment struct 
01293  * @param action action object to be added
01294  */
01295 AXIS2_EXTERN int AXIS2_CALL 
01296 saml_auth_desicion_stmt_add_action(saml_auth_desicion_stmt_t *auth_des_stmt, 
01297                                                                    const axutil_env_t *env, saml_action_t *action);
01298 
01299 /*
01300  * Set the subject of the autherization decision object
01301  * @param auth_des_stmt a autherization decision statement object
01302  * @param env pointer to environment struct 
01303  * @param subject subject to be added
01304  */
01305 AXIS2_EXTERN int AXIS2_CALL 
01306 saml_auth_desicion_stmt_set_subject(saml_auth_desicion_stmt_t *auth_des_stmt, 
01307                                                                         const axutil_env_t *env, saml_subject_t *subject);
01308 
01309 /* auth statement */
01310 
01311 /*
01312  * Create an autherization statement.
01313  * @param env pointer to environment struct 
01314  * @return autherization statement object
01315  */ 
01316 AXIS2_EXTERN saml_auth_stmt_t * AXIS2_CALL 
01317 saml_auth_stmt_create(const axutil_env_t *env);
01318 
01319 /*
01320  * Free a autherization statement.
01321  * @param auth_stmt autherization statment object
01322  * @param env pointer to environment struct 
01323  */
01324 AXIS2_EXTERN void AXIS2_CALL 
01325 saml_auth_stmt_free(saml_auth_stmt_t *auth_stmt, const axutil_env_t *env);
01326 
01327 /*
01328  * Populates an auth_stmt from a om node containing a autherization statement
01329  * @param auth_stmt autherization statment object
01330  * @param node an om node containing an autherization statement
01331  * @param env pointer to environment struct 
01332  */
01333 AXIS2_EXTERN int AXIS2_CALL 
01334 saml_auth_stmt_build(saml_auth_stmt_t *auth_stmt, 
01335                                          axiom_node_t *node, const axutil_env_t *env);
01336 
01337 /*
01338  * Serialize an autherization statement to an om node
01339  * @param auth_stmt autherization statment object
01340  * @param parent if specified created node will be a child of this node  
01341  * @param env pointer to environment struct 
01342  */
01343 AXIS2_EXTERN axiom_node_t *AXIS2_CALL 
01344 saml_auth_stmt_to_om(saml_auth_stmt_t *auth_stmt, 
01345                                          axiom_node_t *parent, const axutil_env_t *env);
01346 
01347 /*
01348  * Return a URI reference that specifies the type of authentication that 
01349  * took place.
01350  * @param auth_stmt autherization statment object
01351  * @param env pointer to environment struct
01352  * @return URI reference 
01353  */
01354 AXIS2_EXTERN axis2_char_t * AXIS2_CALL 
01355 saml_auth_stmt_get_auth_method(saml_auth_stmt_t *auth_stmt, 
01356                                                            const axutil_env_t *env);
01357 
01358 /*
01359  * Return the time at which the authentication took place.
01360  * @param auth_stmt autherization statment object
01361  * @param env pointer to environment struct
01362  * @return time at which authentication took place 
01363  */
01364 AXIS2_EXTERN axutil_date_time_t * AXIS2_CALL 
01365 saml_auth_stmt_get_auth_instant(saml_auth_stmt_t *auth_stmt, 
01366                                                                 const axutil_env_t *env);
01367 
01368 /*
01369  * Return a list of additional information about the subject of 
01370  * the statement that may be available.
01371  * @param auth_stmt autherization statment object
01372  * @param env pointer to environment struct
01373  * @return a list of autherization binings
01374  */
01375 AXIS2_EXTERN axutil_array_list_t * AXIS2_CALL 
01376 saml_auth_stmt_get_auth_bindings(saml_auth_stmt_t *auth_stmt, 
01377                                                                  const axutil_env_t *env);
01378 
01379 /*
01380  * Return the IP address of the system entity that was authenticated.
01381  * @param auth_stmt autherization statment object
01382  * @param env pointer to environment struct
01383  * @return an IP address
01384  */
01385 AXIS2_EXTERN axis2_char_t * AXIS2_CALL 
01386 saml_auth_stmt_get_subject_ip(saml_auth_stmt_t *auth_stmt, 
01387                                                           const axutil_env_t *env);
01388 /*
01389  * Return the DNS address of the system entity that was authenticated.
01390  * @param auth_stmt autherization statment object
01391  * @param env pointer to environment struct
01392  * @return an DNS address
01393  */
01394 AXIS2_EXTERN axis2_char_t * AXIS2_CALL 
01395 saml_auth_stmt_get_subject_dns(saml_auth_stmt_t *auth_stmt, 
01396                                                            const axutil_env_t *env);
01397 
01398 /* 
01399  * Set the subject of the autherization statement
01400  * @param auth_stmt autherization statment object
01401  * @param env pointer to environment struct
01402  * @param subject a subject to be added
01403  */
01404 AXIS2_EXTERN int AXIS2_CALL 
01405 saml_auth_stmt_set_subject(saml_auth_stmt_t *auth_stmt, 
01406                                                    const axutil_env_t *env, saml_subject_t *subject);
01407 
01408 /*
01409  * Set a URI reference that specifies the type of authentication that 
01410  * took place.
01411  * @param auth_stmt autherization statment object
01412  * @param env pointer to environment struct
01413  * @param method URI reference 
01414  */
01415 AXIS2_EXTERN int AXIS2_CALL 
01416 saml_auth_stmt_set_auth_method(saml_auth_stmt_t *auth_stmt, 
01417                                                            const axutil_env_t *env, axis2_char_t *method);
01418 
01419 /*
01420  * Set the time at which the authentication took place.
01421  * @param auth_stmt autherization statment object
01422  * @param env pointer to environment struct
01423  * @param dt time at which authentication took place 
01424  */
01425 AXIS2_EXTERN int AXIS2_CALL 
01426 saml_auth_stmt_set_auth_instant(saml_auth_stmt_t *auth_stmt, 
01427                                                                 const axutil_env_t *env, axutil_date_time_t *dt);
01428 
01429 /*
01430  * Set a list of additional information about the subject of 
01431  * the statement that may be available as auth_bindings.
01432  * @param auth_stmt autherization statment object
01433  * @param env pointer to environment struct
01434  * @param list a list of autherization binings
01435  */
01436 AXIS2_EXTERN int AXIS2_CALL 
01437 saml_auth_stmt_set_auth_bindings(saml_auth_stmt_t *auth_stmt, 
01438                                                                  const axutil_env_t *env, axutil_array_list_t *list);
01439 
01440 /*
01441  * Add a additional information about the subject of 
01442  * the statement that may be available as an auth_binding.
01443  * @param auth_stmt autherization statment object
01444  * @param env pointer to environment struct
01445  * @param bind an authority binding
01446  */
01447 AXIS2_EXTERN int AXIS2_CALL 
01448 saml_auth_stmt_add_auth_binding(saml_auth_stmt_t *auth_stmt, 
01449                                                                 const axutil_env_t *env, saml_auth_binding_t *bind);
01450 
01451 /*
01452  * Remove an authority binding from a auth_statement.
01453  * @param auth_stmt autherization statment object
01454  * @param env pointer to environment struct
01455  * @param index index of the authority binding to be removed
01456  */
01457 AXIS2_EXTERN int AXIS2_CALL 
01458 saml_auth_stmt_remove_auth_binding(saml_auth_stmt_t *auth_stmt, 
01459                                                                    const axutil_env_t *env, int index);
01460 
01461 /*
01462  * Set the DNS address of the system entity that was authenticated.
01463  * @param auth_stmt autherization statment object
01464  * @param env pointer to environment struct
01465  * @param dns a DNS address
01466  */
01467 AXIS2_EXTERN int AXIS2_CALL 
01468 saml_auth_stmt_set_subject_dns(saml_auth_stmt_t *auth_stmt, 
01469                                                            const axutil_env_t *env, axis2_char_t *dns);
01470 
01471 /*
01472  * Set the IP address of the system entity that was authenticated.
01473  * @param auth_stmt autherization statment object
01474  * @param env pointer to environment struct
01475  * @param ip an IP address
01476  */
01477 AXIS2_EXTERN int AXIS2_CALL 
01478 saml_auth_stmt_set_subject_ip(saml_auth_stmt_t *auth_stmt, 
01479                                                           const axutil_env_t *env, axis2_char_t *ip);
01480 
01481 /* attribute statement */
01482 
01483 /*
01484  * Create a attribute statement.
01485  * @param env pointer to environment struct
01486  * @return saml attribute object
01487  */
01488 AXIS2_EXTERN saml_attr_stmt_t * AXIS2_CALL 
01489 saml_attr_stmt_create(const axutil_env_t *env);
01490 
01491 /*
01492  * Free an attribute statement.
01493  * @param attr_stmt pointer to an attribute statement object
01494  * @param env pointer to environment struct
01495  */
01496 AXIS2_EXTERN void AXIS2_CALL 
01497 saml_attr_stmt_free(saml_attr_stmt_t *attr_stmt, const axutil_env_t *env);
01498 
01499 /* 
01500  * Populates a attribute statement object from a axiom node containing a 
01501  * attribute statement.
01502  * @param attr_stmt pointer to an attribute statement object
01503  * @param node om node containing a attribute statement
01504  * @param env pointer to environment struct
01505  */
01506 AXIS2_EXTERN int AXIS2_CALL 
01507 saml_attr_stmt_build(saml_attr_stmt_t *attr_stmt, 
01508                                          axiom_node_t *node, const axutil_env_t *env);
01509 
01510 /*
01511  * Serialize an saml_attr_stmt to an om node
01512  * @param attr_stmt pointer to an attribute statement object
01513  * @param parent if specified created node will be a child of this node  
01514  * @param env pointer to environment struct
01515  */
01516 AXIS2_EXTERN axiom_node_t * AXIS2_CALL 
01517 saml_attr_stmt_to_om(saml_attr_stmt_t *attr_stmt, 
01518                                          axiom_node_t *parent, const axutil_env_t *env);
01519 
01520 /*
01521  * Get the saml subject in this attribute statement.
01522  * @param attr_stmt pointer to an attribute statement object
01523  * @param env pointer to environment struct
01524  * @return saml subject
01525  */
01526 AXIS2_EXTERN saml_subject_t * AXIS2_CALL 
01527 saml_attr_stmt_get_subject(saml_attr_stmt_t *attr_stmt, const axutil_env_t *env);
01528 
01529 /*
01530  * Get the list of attributes in this attribute statement.
01531  * @param attr_stmt pointer to an attribute statement object
01532  * @param env pointer to environment struct
01533  * @return array list containing the attribute objects
01534  */
01535 AXIS2_EXTERN axutil_array_list_t * AXIS2_CALL 
01536 saml_attr_stmt_get_attributes(saml_attr_stmt_t *attr_stmt, const axutil_env_t *env);
01537 
01538 /*
01539  * Set the subject of this attribute statement
01540  * @param attr_stmt pointer to an attribute statement object
01541  * @param env pointer to environment struct
01542  * @param subject 
01543  */
01544 AXIS2_EXTERN int AXIS2_CALL 
01545 saml_attr_stmt_set_subject(saml_attr_stmt_t *attr_stmt, 
01546                                                    const axutil_env_t *env, saml_subject_t *subject);
01547 
01548 /*
01549  * Set the attributes of the attribute statement as a list. If the attribute 
01550  * statement already contains attributes they will be replaced.
01551  * @param attr_stmt pointer to an attribute statement object
01552  * @param env pointer to environment struct
01553  * @param list attribute list
01554  */
01555 AXIS2_EXTERN int AXIS2_CALL 
01556 saml_attr_stmt_set_attributes(saml_attr_stmt_t *attr_stmt, 
01557                                                           const axutil_env_t *env, axutil_array_list_t *list);
01558 
01559 /*
01560  * Add an attribute to the attribute statement       
01561  * @param attr_stmt pointer to an attribute statement object
01562  * @param env pointer to environment struct
01563  * @param attribute an attribute to be added
01564  */
01565 AXIS2_EXTERN int AXIS2_CALL 
01566 saml_attr_stmt_add_attribute(saml_attr_stmt_t *attr_stmt, 
01567                                                          const axutil_env_t *env, saml_attr_t *attribute);
01568 
01569 /* 
01570  * Remove an attribute at the given index.
01571  * @param attr_stmt pointer to an attribute statement object
01572  * @param env pointer to environment struct
01573  * @param index index of the attribute
01574  */
01575 AXIS2_EXTERN int AXIS2_CALL 
01576 saml_attr_stmt_remove_attribute(saml_attr_stmt_t *attr_stmt, 
01577                                                                 const axutil_env_t *env, int index);
01578 
01579 /* condition */
01580 
01581 /*
01582  * Create a generic condition. Condition objects holds more specific 
01583  * conditions. The type attribute of a condition determines the specific 
01584  * condition.
01585  * @param env pointer to environment struct
01586  */
01587 AXIS2_EXTERN saml_condition_t * AXIS2_CALL 
01588 saml_condition_create(const axutil_env_t *env);
01589 
01590 /*
01591  * Free a condition object. The specific condition which is in this conditions 
01592  * will also be freed.
01593  * @param cond pointer to a condition object
01594  * @param env pointer to environment struct
01595  */
01596 AXIS2_EXTERN void AXIS2_CALL 
01597 saml_condition_free(saml_condition_t *cond, const axutil_env_t *env);
01598 
01599 /*
01600  * Populates a condition from a om node containing a condition. After this a 
01601  * specific condition will be built and set to this condition. 
01602  * @param cond pointer to a condition object
01603  * @param env pointer to environment struct
01604  * @param node om node containing a condition
01605  */
01606 AXIS2_EXTERN int AXIS2_CALL 
01607 saml_condition_build(saml_condition_t *cond, 
01608                                          axiom_node_t *node, const axutil_env_t *env);
01609 
01610 /* 
01611  * Serialize a condition to a om node. 
01612  * @param cond pointer to a condition object
01613  * @param parent if specified created node will be a child of this node  
01614  * @param env pointer to environment struct
01615  */
01616 AXIS2_EXTERN axiom_node_t * AXIS2_CALL 
01617 saml_condition_to_om(saml_condition_t *cond, 
01618                                          axiom_node_t *parent, const axutil_env_t *env);
01619 
01620 /*
01621  * Set the specific condition for this condition.
01622  * @param cond pointer to a condition object
01623  * @param env pointer to environment struct
01624  * @param condition the specific condition
01625  * @param type condition type
01626  */
01627 AXIS2_EXTERN int AXIS2_CALL 
01628 saml_condition_set_condition(saml_condition_t *cond, 
01629                                                          const axutil_env_t *env, void * condition, 
01630                                                          saml_cond_type_t type);
01631 
01632 /*
01633  * Set the type of the conition. 
01634  * @param cond pointer to a condition object
01635  * @param env pointer to environment struct
01636  * @param type specific type of the condition
01637  */
01638 AXIS2_EXTERN int AXIS2_CALL 
01639 saml_condition_set_type(saml_condition_t *cond, 
01640                                                 const axutil_env_t *env, saml_cond_type_t type);
01641 
01642 /*
01643  * Get the specific condtion in this generic condition.
01644  * @param cond pointer to a condition object
01645  * @param env pointer to environment struct
01646  */
01647 AXIS2_EXTERN void * AXIS2_CALL 
01648 saml_condition_get_condition(saml_condition_t *cond, const axutil_env_t *env);
01649 
01650 /*
01651  * Get the type of the specific condtion in this generic condition.
01652  * @param cond pointer to a condition object
01653  * @param env pointer to environment struct
01654  */
01655 AXIS2_EXTERN saml_cond_type_t AXIS2_CALL 
01656 saml_condition_get_type(saml_condition_t *cond, const axutil_env_t *env);
01657 
01658 /* audio restriction */
01659 
01660 /*
01661  * Populates an audi restriction condition from an om node.
01662  * @param arc a ponter to saml_aud_restriction_conf object
01663  * @param node om node containing an audience restriction condition
01664  * @param env pointer to environment struct
01665  */
01666 AXIS2_EXTERN int AXIS2_CALL 
01667 saml_audi_restriction_cond_build(saml_audi_restriction_cond_t *arc, 
01668                                                                  axiom_node_t *node, const axutil_env_t *env);
01669 
01670 /*
01671  * Serialize an saml_audi_restriction_cond_t object in to an om node.
01672  * @param arc a ponter to saml_aud_restriction_conf object
01673  * @param parent if specified created node will be a child of this node  
01674  * @param env pointer to environment struct
01675  */
01676 AXIS2_EXTERN axiom_node_t *AXIS2_CALL 
01677 saml_audi_restriction_cond_to_om(saml_audi_restriction_cond_t *arc, 
01678                                                                  axiom_node_t *parent, const axutil_env_t *env);
01679 
01680 /*
01681  * Free a saml_aud_restriction_conf object.
01682  * @param arc a ponter to saml_aud_restriction_conf object
01683  * @param env pointer to environment struct
01684  */
01685 AXIS2_EXTERN void AXIS2_CALL 
01686 saml_audi_restriction_cond_free(saml_audi_restriction_cond_t *arc, 
01687                                                                 const axutil_env_t *env);
01688 
01689 /*
01690  * Create a saml_aud_restriction_conf object.
01691  * @param env pointer to environment struct
01692  * @return a ponter to saml_aud_restriction_conf object
01693  */
01694 AXIS2_EXTERN saml_audi_restriction_cond_t * AXIS2_CALL 
01695 saml_audi_restriction_cond_create(const axutil_env_t *env);
01696 
01697 /*
01698  * Return a list of URI references that identifies a list of intended audiences.
01699  * @param arc a ponter to saml_aud_restriction_conf object
01700  * @param env pointer to environment struct
01701  */
01702 AXIS2_EXTERN axutil_array_list_t * AXIS2_CALL 
01703 saml_audi_restriction_cond_get_audiences(saml_audi_restriction_cond_t *arc, 
01704                                                                                  const axutil_env_t *env);
01705 
01706 /*
01707  * Set a list of URI references that identifies a list of intended audiences.
01708  * @param arc a ponter to saml_aud_restriction_conf object
01709  * @param env pointer to environment struct
01710  */
01711 AXIS2_EXTERN int AXIS2_CALL 
01712 saml_audi_restriction_cond_set_audiences(saml_audi_restriction_cond_t *cond, 
01713                                                                                  const axutil_env_t *env, axutil_array_list_t *list);
01714 
01715 /*
01716  * Remove a URI reference that identifies an intended audiences.
01717  * @param arc a ponter to saml_aud_restriction_conf object
01718  * @param env pointer to environment struct
01719  * @param index the number of the audience in the list, to be removed
01720  */
01721 AXIS2_EXTERN int AXIS2_CALL 
01722 saml_audi_restriction_cond_remove_audiences(saml_audi_restriction_cond_t *cond, 
01723                                                                                         const axutil_env_t *env, int index);
01724 
01725 /*
01726  * Ad a URI reference that identifies an intended audiences.
01727  * @param arc a ponter to saml_aud_restriction_conf object
01728  * @param env pointer to environment struct
01729  * @param audience a new audience to be added
01730  */
01731 AXIS2_EXTERN int AXIS2_CALL 
01732 saml_audi_restriction_cond_add_audience(saml_audi_restriction_cond_t *cond, 
01733                                                                                 const axutil_env_t *env, axis2_char_t *audience);
01734 
01735 
01736 /* action */
01737 
01738 /*
01739  * Create a saml_action_t.
01740  * @param env pointer to environment struct
01741  * @return pointer to saml_action_t 
01742  */
01743 AXIS2_EXTERN saml_action_t * AXIS2_CALL 
01744 saml_action_create(const axutil_env_t *env);
01745 
01746 /*
01747  * Free a saml_action_t.
01748  * @param action pointer to saml_action_t 
01749  * @param env pointer to environment struct
01750  */
01751 AXIS2_EXTERN void AXIS2_CALL 
01752 saml_action_free(saml_action_t *action, const axutil_env_t *env);
01753 
01754 /*
01755  * Populates a saml action from a om node containing a saml action.
01756  * @param action pointer to saml_action_t 
01757  * @param node om node conatining a saml action
01758  * @param env pointer to environment struct
01759  */
01760 AXIS2_EXTERN int AXIS2_CALL 
01761 saml_action_build(saml_action_t *action, axiom_node_t *node, const axutil_env_t *env);
01762 
01763 /*
01764  * Serialize a action_t object to an om node.
01765  * @param action pointer to saml_action_t 
01766  * @param parent if specified created node will be a child of this node  
01767  * @param env pointer to environment struct
01768  */
01769 AXIS2_EXTERN axiom_node_t * AXIS2_CALL 
01770 saml_action_to_om(saml_action_t *action, 
01771                                   axiom_node_t *parent, const axutil_env_t *env);
01772 
01773 /*
01774  * Get an action sought to be performed on the specified resource.
01775  * @param action pointer to saml_action_t 
01776  * @param env pointer to environment struct
01777  */
01778 AXIS2_EXTERN axis2_char_t * AXIS2_CALL 
01779 saml_action_get_data(saml_action_t *action, const axutil_env_t *env);
01780 
01781 /*
01782  * Get a URI reference representing the namespace in which the name of the 
01783  * specified action is to be interpreted.
01784  * @param action pointer to saml_action_t 
01785  * @param env pointer to environment struct
01786  */
01787 AXIS2_EXTERN axis2_char_t * AXIS2_CALL 
01788 saml_action_get_namespace(saml_action_t *action, const axutil_env_t *env);
01789 
01790 /*
01791  * Set an action sought to be performed on the specified resource.
01792  * @param action pointer to saml_action_t 
01793  * @param env pointer to environment struct
01794  * @param data an action to be performed
01795  */
01796 AXIS2_EXTERN int AXIS2_CALL 
01797 saml_action_set_data(saml_action_t *action, const axutil_env_t *env, 
01798                                          axis2_char_t *data);
01799 
01800 /*
01801  * Set a URI reference representing the namespace in which the name of the 
01802  * specified action is to be interpreted.
01803  * @param action pointer to saml_action_t 
01804  * @param env pointer to environment struct
01805  * @param name_space a URI reference
01806  */
01807 AXIS2_EXTERN int AXIS2_CALL 
01808 saml_action_set_namespace(saml_action_t *action, const axutil_env_t *env, 
01809                                                   axis2_char_t *name_space);
01810 
01811 /* evidence */
01812 AXIS2_EXTERN saml_evidence_t * AXIS2_CALL 
01813 saml_evidence_create(const axutil_env_t *env);
01814 
01815 AXIS2_EXTERN void AXIS2_CALL 
01816 saml_evidence_free(saml_evidence_t *evidence, const axutil_env_t *env);
01817 
01818 AXIS2_EXTERN int AXIS2_CALL 
01819 saml_evidence_build(saml_evidence_t *evidence, 
01820                                         axiom_node_t *node, const axutil_env_t *env);
01821 
01822 AXIS2_EXTERN axiom_node_t * AXIS2_CALL 
01823 saml_evidence_to_om(saml_evidence_t *evidence, axiom_node_t *parent, 
01824                                         const axutil_env_t *env);
01825 
01826 AXIS2_EXTERN axutil_array_list_t * AXIS2_CALL 
01827 saml_evidence_get_assertions(saml_evidence_t *evidence, const axutil_env_t *env);
01828 
01829 AXIS2_EXTERN axutil_array_list_t * AXIS2_CALL 
01830 saml_evidence_get_assertion_ids(saml_evidence_t *evidence, const axutil_env_t *env);
01831 
01832 AXIS2_EXTERN int AXIS2_CALL 
01833 saml_evidence_set_assertions(saml_evidence_t *evidence, 
01834                                                          const axutil_env_t *env, axutil_array_list_t *list);
01835 
01836 AXIS2_EXTERN int AXIS2_CALL 
01837 saml_evidence_remove_assertion(saml_evidence_t *evidence, 
01838                                                            const axutil_env_t *env, int index);
01839 
01840 AXIS2_EXTERN int AXIS2_CALL 
01841 saml_evidence_add_assertion(saml_evidence_t *evidence, 
01842                                                         const axutil_env_t *env, saml_assertion_t *assertion);
01843 
01844 AXIS2_EXTERN int AXIS2_CALL 
01845 saml_evidence_set_assertion_ids(saml_evidence_t *evidence, 
01846                                                                 const axutil_env_t *env, axutil_array_list_t *list);
01847 
01848 AXIS2_EXTERN int AXIS2_CALL 
01849 saml_evidence_remove_assertion_id(saml_evidence_t *evidence, 
01850                                                                   const axutil_env_t *env, int index);
01851 
01852 AXIS2_EXTERN int AXIS2_CALL 
01853 saml_evidence_add_assertion_id(saml_evidence_t *evidence, 
01854                                                            const axutil_env_t *env, axis2_char_t *assertion_id);
01855 
01856 /* atrribute designature */
01857 
01858 /* 
01859  * Create a saml_attr_desig_t. 
01860  * @param env pointer to environment struct
01861  * @return pointer to saml_attr_desig_t
01862  */
01863 AXIS2_EXTERN saml_attr_desig_t * AXIS2_CALL 
01864 saml_attr_desig_create(const axutil_env_t *env);
01865 
01866 /* 
01867  * Free a saml_attr_desig_t. 
01868  * @param attr_desig a pointer to saml_attr_desig_t
01869  * @param env pointer to environment struct 
01870  */
01871 AXIS2_EXTERN void AXIS2_CALL 
01872 saml_attr_desig_free(saml_attr_desig_t *attr_desig, const axutil_env_t *env);
01873 
01874 /*
01875  * Populates a saml_attr_desig_t from a om node contailing a saml attriibute desgnator
01876  * @param attr_desig a pointer to saml_attr_desig_t
01877  * @param node om node containing saml attriibute desgnator
01878  * @param env pointer to environment struct 
01879  */
01880 AXIS2_EXTERN int AXIS2_CALL 
01881 saml_attr_desig_build(saml_attr_desig_t *attr_desig, 
01882                                           axiom_node_t *node, const axutil_env_t *env);
01883 
01884 /*
01885  * Serialize a saml_attr_desig_t to an om node.
01886  * @param attr_desig a pointer to saml_attr_desig_t
01887  * @param parent if specified created node will be a child of this node  
01888  * @param env pointer to environment struct 
01889  */
01890 AXIS2_EXTERN axiom_node_t * AXIS2_CALL 
01891 saml_attr_desig_to_om(saml_attr_desig_t *attr_desig, 
01892                                           axiom_node_t *parent, const axutil_env_t *env);
01893 
01894 /* 
01895  * Get the name of the attribute.
01896  * @param attr_desig a pointer to saml_attr_desig_t
01897  * @param env pointer to environment struct 
01898  * @return a string name of the attribute
01899  */
01900 AXIS2_EXTERN axis2_char_t * AXIS2_CALL 
01901 saml_attr_desig_get_name(saml_attr_desig_t *attr_desig, const axutil_env_t *env);
01902 
01903 /*
01904  * Get the namespace in which the AttributeName elements are interpreted.
01905  * @param attr_desig a pointer to saml_attr_desig_t
01906  * @param env pointer to environment struct 
01907  * @return a string representing a namespace
01908  */
01909 AXIS2_EXTERN axis2_char_t * AXIS2_CALL 
01910 saml_attr_desig_get_namespace(saml_attr_desig_t *attr_desig, const axutil_env_t *env);
01911 
01912 /* 
01913  * Set the name of the attribute.
01914  * @param attr_desig a pointer to saml_attr_desig_t
01915  * @param env pointer to environment struct 
01916  * @param name a string name of the attribute
01917  */
01918 AXIS2_EXTERN int AXIS2_CALL 
01919 saml_attr_desig_set_name(saml_attr_desig_t *attr_desig, 
01920                                                  const axutil_env_t *env, axis2_char_t *name);
01921 
01922 /*
01923  * Set the namespace in which the AttributeName elements are interpreted.
01924  * @param attr_desig a pointer to saml_attr_desig_t
01925  * @param env pointer to environment struct 
01926  * @param name_space a string representing a namespace
01927  */
01928 AXIS2_EXTERN int AXIS2_CALL 
01929 saml_attr_desig_set_namespace(saml_attr_desig_t *attr_desig, 
01930                                                           const axutil_env_t *env, axis2_char_t *name_space);
01931 
01932 /* attribute */
01933 
01934 /*
01935  * Create a saml_attr_t.
01936  * @param env pointer to environment struct 
01937  * @return pointer to saml_attr_t
01938  */
01939 AXIS2_EXTERN saml_attr_t * AXIS2_CALL 
01940 saml_attr_create(const axutil_env_t *env);
01941 
01942 /*
01943  * Free a saml_attr_t.
01944  * @param attr pointer to saml_attr_t
01945  * @param env pointer to environment struct 
01946  */
01947 AXIS2_EXTERN void AXIS2_CALL 
01948 saml_attr_free(saml_attr_t *attr, const axutil_env_t *env);
01949 
01950 /*
01951  * Populates a saml_attr_t from an om node containing a saml attribute.
01952  * @param attr pointer to saml_attr_t
01953  * @node an om node containing a saml attribute
01954  * @param env pointer to environment struct 
01955  */
01956 AXIS2_EXTERN int AXIS2_CALL 
01957 saml_attr_build(saml_attr_t *attr, axiom_node_t *node, const axutil_env_t *env);
01958 
01959 /*
01960  * Serialize a saml_attr_t in to an om node.
01961  * @param attr pointer to saml_attr_t
01962  * @param parent if specified created node will be a child of this node  
01963  * @param env pointer to environment struct 
01964  */
01965 AXIS2_EXTERN axiom_node_t * AXIS2_CALL 
01966 saml_attr_to_om(saml_attr_t *attr, axiom_node_t *parent, const axutil_env_t *env);
01967 
01968 /* 
01969  * Get the name of the attribute.
01970  * @param attr a pointer to saml_attr_t
01971  * @param env pointer to environment struct 
01972  * @return a string name of the attribute
01973  */
01974 AXIS2_EXTERN axis2_char_t * AXIS2_CALL 
01975 saml_attr_get_name(saml_attr_t *attr, const axutil_env_t *env);
01976 
01977 /*
01978  * Get the namespace in which the AttributeName elements are interpreted.
01979  * @param attr a pointer to saml_attr_t
01980  * @param env pointer to environment struct 
01981  * @return a string representing a namespace
01982  */
01983 AXIS2_EXTERN axis2_char_t * AXIS2_CALL 
01984 saml_attr_get_namespace(saml_attr_t *attr_stmt, const axutil_env_t *env);
01985 
01986 /* 
01987  * Set the name of the attribute.
01988  * @param attr a pointer to saml_attr_t
01989  * @param env pointer to environment struct 
01990  * @param name a string name of the attribute
01991  */
01992 AXIS2_EXTERN int AXIS2_CALL 
01993 saml_attr_set_name(saml_attr_t *attr, const axutil_env_t *env, axis2_char_t *name);
01994 
01995 /*
01996  * Set the namespace in which the AttributeName elements are interpreted.
01997  * @param attr a pointer to saml_attr_t
01998  * @param env pointer to environment struct 
01999  * @param name_space a string representing a namespace
02000  */
02001 AXIS2_EXTERN int AXIS2_CALL 
02002 saml_attr_set_namespace(saml_attr_t *attr, const axutil_env_t *env, 
02003                                                 axis2_char_t *name_space);
02004 
02005 /*
02006  * Set the values of the attribute as a list of om nodes.
02007  * @param attr a pointer to saml_attr_t
02008  * @param env pointer to environment struct 
02009  * @param list a om node list
02010  */
02011 AXIS2_EXTERN int AXIS2_CALL 
02012 saml_attr_set_values(saml_attr_t *attr, const axutil_env_t *env, 
02013                                          axutil_array_list_t *list);
02014 
02015 /*
02016  * Remove om node at the specified index.
02017  * @param attr a pointer to saml_attr_t
02018  * @param env pointer to environment struct 
02019  * @param index index number of the om node to be removed
02020  */
02021 AXIS2_EXTERN int AXIS2_CALL 
02022 saml_attr_remove_value(saml_attr_t *attr, const axutil_env_t *env, int index);
02023 
02024 /*
02025  * Add a om node to the attribute value list.
02026  * @param attr a pointer to saml_attr_t
02027  * @param env pointer to environment struct 
02028  * @param value an om node
02029  */
02030 AXIS2_EXTERN int AXIS2_CALL 
02031 saml_attr_add_value(saml_attr_t *attr, const axutil_env_t *env, axiom_node_t *value);
02032 
02033 
02034 /*named id*/
02035 
02036 /*
02037  * Create a SAML named id object
02038  * @param env pointer to environment struct
02039  * @return saml named id object
02040  */
02041 AXIS2_EXTERN saml_named_id_t * AXIS2_CALL 
02042 saml_named_id_create(const axutil_env_t *env);
02043 
02044 /*
02045  * Free a saml named id object
02046  * @param named_id named_id to be freed
02047  * @param env pointer to environment struct
02048  */
02049 AXIS2_EXTERN void AXIS2_CALL 
02050 saml_named_id_free(saml_named_id_t *named_id, const axutil_env_t *env);
02051 
02052 /*
02053  * Build a saml named id from an om node containing a saml named identifier
02054  * @param named_id named id object
02055  * @param node om node containing the saml named identifier
02056  * @param env pointer to environment struct
02057  */
02058 AXIS2_EXTERN int AXIS2_CALL 
02059 saml_named_id_build(saml_named_id_t *named_id, axiom_node_t *node, 
02060                                         const axutil_env_t *env);
02061 
02062 /*
02063  * Serialize a named id object in to an om node.
02064  * @param named_id named id object
02065  * @param parent if specified this will be the parent of the newely created node
02066  * @param env pointer to environment struct
02067  */
02068 AXIS2_EXTERN axiom_node_t * AXIS2_CALL 
02069 saml_named_id_to_om(saml_named_id_t *id, axiom_node_t *parent, 
02070                                         const axutil_env_t *env);
02071 
02072 /* 
02073  * Get the name of the named identifier.
02074  * @param named_id named id object
02075  * @param env pointer to environment struct
02076  * @return name as a string
02077  */
02078 AXIS2_EXTERN axis2_char_t * AXIS2_CALL 
02079 saml_named_id_get_name(saml_named_id_t *id, const axutil_env_t *env);
02080 
02081 /*
02082  * Get a URI reference representing the format in which the <NameIdentifier> 
02083  * information is provided.
02084  * @param named_id named id object
02085  * @param env pointer to environment struct
02086  * @return format as a URI string
02087  */
02088 AXIS2_EXTERN axis2_char_t * AXIS2_CALL 
02089 saml_named_id_get_format(saml_named_id_t *id, const axutil_env_t *env);
02090 
02091 /*
02092  * Get the security or administrative domain that qualifies the name of the 
02093  * subject.
02094  * @param named_id named id object
02095  * @param env pointer to environment struct
02096  * @return string representing the domain
02097  */
02098 AXIS2_EXTERN axis2_char_t * AXIS2_CALL 
02099 saml_named_id_get_name_qualifier(saml_named_id_t *id, const axutil_env_t *env);
02100 
02101 /* 
02102  * Set the name of the named identifier.
02103  * @param named_id named id object
02104  * @param env pointer to environment struct
02105  * @param name name as a string
02106  */
02107 AXIS2_EXTERN int AXIS2_CALL 
02108 saml_named_id_set_name(saml_named_id_t *id, 
02109                                            const axutil_env_t *env, axis2_char_t *name);
02110 
02111 /*
02112  * Set a URI reference representing the format in which the <NameIdentifier> 
02113  * information is provided.
02114  * @param named_id named id object
02115  * @param env pointer to environment struct
02116  * @param format format of the nameidentifier
02117  */
02118 AXIS2_EXTERN int AXIS2_CALL 
02119 saml_named_id_set_format(saml_named_id_t *id, 
02120                                                  const axutil_env_t *env, axis2_char_t *format);
02121 
02122 /*
02123  * Set the security or administrative domain that qualifies the name of the 
02124  * subject.
02125  * @param named_id named id object
02126  * @param env pointer to environment struct
02127  * @param qualifier string representing the domain 
02128  */
02129 AXIS2_EXTERN int AXIS2_CALL 
02130 saml_named_id_set_name_qualifier(saml_named_id_t *id, 
02131                                                                  const axutil_env_t *env, axis2_char_t *qualifier);
02132 
02133 
02134 /* private method */
02135 AXIS2_EXTERN int AXIS2_CALL saml_util_set_sig_ctx_defaults(oxs_sign_ctx_t *sig_ctx, const axutil_env_t *env, axis2_char_t *id);
02136 
02137 /* Get the session key from a assertion. Session key is inside the SAML 
02138  * token as an EncryptedKey 
02139  * @param env pointer to environment struct
02140  * @param assertion an saml assertion node
02141  * @param pvt_key private key used to encrypt the session key
02142  */
02143 AXIS2_EXTERN oxs_key_t * AXIS2_CALL
02144 saml_assertion_get_session_key(const axutil_env_t *env, axiom_node_t *assertion, 
02145                                openssl_pkey_t *pvt_key);
02146 
02147 #ifdef __cplusplus
02148 }
02149 #endif
02150 
02151 
02152 #endif 

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/oxs__transform_8h-source.html0000644000076500007650000002317511202454454024457 0ustar shankarshankar Rampart/C: oxs_transform.h Source File

oxs_transform.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef OXS_TRANSFORM_H
00019 #define OXS_TRANSFORM_H
00020 
00021 
00028 #include <axis2_defines.h>
00029 #include <axutil_env.h>
00030 #include <axiom_node.h>
00031 
00032 #ifdef __cplusplus
00033 extern "C"
00034 {
00035 #endif
00036 
00037 
00038     /*The input or output data type*/
00039     typedef enum  {
00040         OXS_TRANSFORM_TYPE_UNKNOWN = 0,
00041         OXS_TRANSFORM_TYPE_CHAR,
00042         OXS_TRANSFORM_TYPE_NODE,
00043         OXS_TRANSFORM_TYPE_NODE_ARRAY_LIST        
00044     } oxs_tr_dtype_t;
00045 
00046 
00047     /*Function interface for any transform*/
00048     typedef oxs_tr_dtype_t (AXIS2_CALL*
00049                             oxs_transform_tr_func)(const axutil_env_t *env,
00050                                                    void *input,
00051                                                    oxs_tr_dtype_t input_dtype,
00052                                                    void **output);
00053 
00054     typedef struct oxs_transform_t oxs_transform_t;
00055 
00056 
00057     /*Create function*/
00058     AXIS2_EXTERN oxs_transform_t *AXIS2_CALL
00059     oxs_transform_create(const axutil_env_t *env);
00060 
00061     /*Free*/
00062     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00063     oxs_transform_free(oxs_transform_t *ctx,
00064                        const axutil_env_t *env);
00065 
00066 
00067     /**********************Getter functions******************************************/
00068     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00069     oxs_transform_get_id(
00070         const oxs_transform_t *transform,
00071         const axutil_env_t *env);
00072 
00073     AXIS2_EXTERN oxs_tr_dtype_t AXIS2_CALL
00074     oxs_transform_get_input_data_type(
00075         const oxs_transform_t *transform,
00076         const axutil_env_t *env);
00077 
00078     AXIS2_EXTERN oxs_tr_dtype_t AXIS2_CALL
00079     oxs_transform_get_output_data_type(
00080         const oxs_transform_t *transform,
00081         const axutil_env_t *env);
00082 
00083     AXIS2_EXTERN oxs_transform_tr_func AXIS2_CALL
00084     oxs_transform_get_transform_function(
00085         const oxs_transform_t *transform,
00086         const axutil_env_t *env);
00087 
00088     /**********************Setter functions******************************************/
00089     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00090     oxs_transform_set_id(
00091         oxs_transform_t *transform,
00092         const axutil_env_t *env,
00093         axis2_char_t *id);
00094 
00095     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00096     oxs_transform_set_input_data_type(
00097         oxs_transform_t *transform,
00098         const axutil_env_t *env,
00099         oxs_tr_dtype_t input_data_type);
00100 
00101     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00102     oxs_transform_set_output_data_type(
00103         oxs_transform_t *transform,
00104         const axutil_env_t *env,
00105         oxs_tr_dtype_t output_data_type);
00106 
00107     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00108     oxs_transform_set_transform_func(
00109         oxs_transform_t *transform,
00110         const axutil_env_t *env,
00111         oxs_transform_tr_func transform_func);
00112 
00114 #ifdef __cplusplus
00115 }
00116 #endif
00117 
00118 #endif                          /* OXS_TRANSFORM_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__oxs__x509__cert.html0000644000076500007650000012547711202454456024015 0ustar shankarshankar Rampart/C: X509 Certificate

X509 Certificate
[OMXMLSecurity]


Typedefs

typedef struct oxs_x509_cert_t oxs_x509_cert_t

Functions

AXIS2_EXTERN oxs_x509_cert_t * oxs_x509_cert_create (const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_x509_cert_free (oxs_x509_cert_t *x509_cert, const axutil_env_t *env)
AXIS2_EXTERN int oxs_x509_cert_get_serial_number (oxs_x509_cert_t *x509_cert, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_x509_cert_get_subject (oxs_x509_cert_t *x509_cert, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_x509_cert_get_issuer (oxs_x509_cert_t *x509_cert, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_x509_cert_get_key_identifier (oxs_x509_cert_t *x509_cert, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_x509_cert_get_fingerprint (oxs_x509_cert_t *x509_cert, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_x509_cert_get_date (oxs_x509_cert_t *x509_cert, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_x509_cert_get_hash (oxs_x509_cert_t *x509_cert, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_x509_cert_get_data (oxs_x509_cert_t *x509_cert, const axutil_env_t *env)
AXIS2_EXTERN openssl_pkey_toxs_x509_cert_get_public_key (oxs_x509_cert_t *x509_cert, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_serial_number (oxs_x509_cert_t *x509_cert, const axutil_env_t *env, int value)
AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_issuer (oxs_x509_cert_t *x509_cert, const axutil_env_t *env, axis2_char_t *value)
AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_key_identifier (oxs_x509_cert_t *x509_cert, const axutil_env_t *env, axis2_char_t *value)
AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_subject (oxs_x509_cert_t *x509_cert, const axutil_env_t *env, axis2_char_t *value)
AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_fingerprint (oxs_x509_cert_t *x509_cert, const axutil_env_t *env, axis2_char_t *value)
AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_date (oxs_x509_cert_t *x509_cert, const axutil_env_t *env, axis2_char_t *value)
AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_hash (oxs_x509_cert_t *x509_cert, const axutil_env_t *env, axis2_char_t *value)
AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_data (oxs_x509_cert_t *x509_cert, const axutil_env_t *env, axis2_char_t *value)
AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_public_key (oxs_x509_cert_t *x509_cert, const axutil_env_t *env, openssl_pkey_t *public_key)
AXIS2_EXTERN axis2_status_t oxs_x509_cert_copy_to (oxs_x509_cert_t *x509_cert, const axutil_env_t *env, oxs_x509_cert_t *to)
AXIS2_EXTERN axis2_char_t * oxs_x509_cert_get_common_name (oxs_x509_cert_t *x509_cert, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_common_name (oxs_x509_cert_t *x509_cert, const axutil_env_t *env, axis2_char_t *common_name)

Function Documentation

AXIS2_EXTERN axis2_status_t oxs_x509_cert_copy_to ( oxs_x509_cert_t *  x509_cert,
const axutil_env_t *  env,
oxs_x509_cert_t *  to 
)

Copy contents of a certificate to another

Parameters:
x509_cert the X509 certificate, the source
env pointer to environment struct
to,another x509 certificate, the target
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN oxs_x509_cert_t* oxs_x509_cert_create ( const axutil_env_t *  env  ) 

Create function of the X509 certificate

Parameters:
env pointer to environment struct
Returns:
created X509 certificate

AXIS2_EXTERN axis2_status_t oxs_x509_cert_free ( oxs_x509_cert_t *  x509_cert,
const axutil_env_t *  env 
)

Free function of the X509 certificate

Parameters:
x509_cert the X509 certificate to be freed
env pointer to environment struct
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_char_t* oxs_x509_cert_get_data ( oxs_x509_cert_t *  x509_cert,
const axutil_env_t *  env 
)

Get the data of X509 Certificate This is the base64 encoded string in between the --BEGIN CERTIFICATE- --END CERTIFICATE-- lines

Parameters:
x509_cert the X509 certificate
env pointer to environment struct
Returns:
the data of X509 certificate

AXIS2_EXTERN axis2_char_t* oxs_x509_cert_get_date ( oxs_x509_cert_t *  x509_cert,
const axutil_env_t *  env 
)

Get the expiration date of X509 Certificate

Parameters:
x509_cert the X509 certificate
env pointer to environment struct
Returns:
the expiration date of X509 certificate

AXIS2_EXTERN axis2_char_t* oxs_x509_cert_get_fingerprint ( oxs_x509_cert_t *  x509_cert,
const axutil_env_t *  env 
)

Get the finger print of X509 Certificate

Parameters:
x509_cert the X509 certificate
env pointer to environment struct
Returns:
the finger print of X509 certificate

AXIS2_EXTERN axis2_char_t* oxs_x509_cert_get_hash ( oxs_x509_cert_t *  x509_cert,
const axutil_env_t *  env 
)

Get the hash of X509 Certificate

Parameters:
x509_cert the X509 certificate
env pointer to environment struct
Returns:
the hash of X509 certificate

AXIS2_EXTERN axis2_char_t* oxs_x509_cert_get_issuer ( oxs_x509_cert_t *  x509_cert,
const axutil_env_t *  env 
)

Get the issuer of X509 Certificate

Parameters:
x509_cert the X509 certificate
env pointer to environment struct
Returns:
the issuer of X509 certificate

AXIS2_EXTERN axis2_char_t* oxs_x509_cert_get_key_identifier ( oxs_x509_cert_t *  x509_cert,
const axutil_env_t *  env 
)

Get the key identifier of X509 Certificate

Parameters:
x509_cert the X509 certificate
env pointer to environment struct
Returns:
the key identifier of X509 certificate

AXIS2_EXTERN openssl_pkey_t* oxs_x509_cert_get_public_key ( oxs_x509_cert_t *  x509_cert,
const axutil_env_t *  env 
)

Get the public key of X509 Certificate

Parameters:
x509_cert the X509 certificate
env pointer to environment struct
Returns:
the public key of X509 certificate

AXIS2_EXTERN int oxs_x509_cert_get_serial_number ( oxs_x509_cert_t *  x509_cert,
const axutil_env_t *  env 
)

Get the serial number of X509 Certificate

Parameters:
x509_cert the X509 certificate
env pointer to environment struct
Returns:
the serial number of X509 certificate

AXIS2_EXTERN axis2_char_t* oxs_x509_cert_get_subject ( oxs_x509_cert_t *  x509_cert,
const axutil_env_t *  env 
)

Get the subject of X509 Certificate

Parameters:
x509_cert the X509 certificate
env pointer to environment struct
Returns:
the subject of X509 certificate

AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_data ( oxs_x509_cert_t *  x509_cert,
const axutil_env_t *  env,
axis2_char_t *  value 
)

Set the data of X509 Certificate. This is the base64 encoded string in between the --BEGIN CERTIFICATE- --END CERTIFICATE-- lines

Parameters:
x509_cert the X509 certificate
env pointer to environment struct
value the data of X509 Certificate
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_date ( oxs_x509_cert_t *  x509_cert,
const axutil_env_t *  env,
axis2_char_t *  value 
)

Set the expiration date of X509 Certificate

Parameters:
x509_cert the X509 certificate
env pointer to environment struct
value the expiration date of X509 Certificate
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_fingerprint ( oxs_x509_cert_t *  x509_cert,
const axutil_env_t *  env,
axis2_char_t *  value 
)

Set the finger print of X509 Certificate

Parameters:
x509_cert the X509 certificate
env pointer to environment struct
value the fingerprint of X509 Certificate
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_hash ( oxs_x509_cert_t *  x509_cert,
const axutil_env_t *  env,
axis2_char_t *  value 
)

Set the hash of X509 Certificate

Parameters:
x509_cert the X509 certificate
env pointer to environment struct
value the hash of X509 Certificate
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_issuer ( oxs_x509_cert_t *  x509_cert,
const axutil_env_t *  env,
axis2_char_t *  value 
)

Set the issuer of X509 Certificate

Parameters:
x509_cert the X509 certificate
env pointer to environment struct
value the issuer of X509 Certificate
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_key_identifier ( oxs_x509_cert_t *  x509_cert,
const axutil_env_t *  env,
axis2_char_t *  value 
)

Set the key identifier of X509 Certificate

Parameters:
x509_cert the X509 certificate
env pointer to environment struct
value the key identifier of X509 Certificate
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_public_key ( oxs_x509_cert_t *  x509_cert,
const axutil_env_t *  env,
openssl_pkey_t public_key 
)

Set the public key of X509 Certificate

Parameters:
x509_cert the X509 certificate
env pointer to environment struct
public_key public key of X509 Certificate
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_serial_number ( oxs_x509_cert_t *  x509_cert,
const axutil_env_t *  env,
int  value 
)

Set the serial number of X509 Certificate

Parameters:
x509_cert the X509 certificate
env pointer to environment struct
value the serial number of X509 Certificate
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_subject ( oxs_x509_cert_t *  x509_cert,
const axutil_env_t *  env,
axis2_char_t *  value 
)

Set the subject of X509 Certificate

Parameters:
x509_cert the X509 certificate
env pointer to environment struct
value the subject of X509 Certificate
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/trust__util_8h.html0000644000076500007650000021103111202454456022463 0ustar shankarshankar Rampart/C: trust_util.h File Reference

trust_util.h File Reference

contains generic operations related to trust module More...

#include <stdio.h>
#include <stdlib.h>
#include <axiom.h>
#include <axutil_utils.h>
#include <axutil_string.h>
#include <trust_constants.h>

Go to the source code of this file.

Enumerations

enum  trust_allow_t { TRUST_ALLOW = 0, TRUST_NOT_ALLOW }
enum  trust_ok_t { TRUST_OK = 0, TRUST_NOT_OK }

Functions

AXIS2_EXTERN axiom_node_t * trust_util_create_rst_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axis2_char_t *context)
AXIS2_EXTERN axiom_node_t * trust_util_create_rstr_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axis2_char_t *context)
AXIS2_EXTERN axiom_node_t * trust_util_create_rstr_collection_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri)
AXIS2_EXTERN axiom_node_t * trust_util_create_request_type_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axiom_node_t *parent_node, axis2_char_t *request_type)
AXIS2_EXTERN axiom_node_t * trust_util_create_token_type_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axiom_node_t *parent_node, axis2_char_t *token_type)
AXIS2_EXTERN axiom_node_t * 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)
AXIS2_EXTERN axiom_node_t * trust_util_create_claims_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axiom_node_t *parent_node, axis2_char_t *dialect_uri)
AXIS2_EXTERN axiom_node_t * trust_util_create_requested_security_token_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axiom_node_t *parent_node, axiom_node_t *sec_token_node)
AXIS2_EXTERN axiom_node_t * trust_util_create_requsted_proof_token_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axiom_node_t *parent_node, axiom_node_t *req_proof_token)
AXIS2_EXTERN axiom_node_t * trust_util_create_entropy_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axiom_node_t *parent_node)
AXIS2_EXTERN axiom_node_t * trust_util_computed_key_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axiom_node_t *parent_node)
AXIS2_EXTERN axiom_node_t * trust_util_create_binary_secret_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axiom_node_t *parent_node, axis2_char_t *enc_secret, axis2_char_t *bin_sec_type)
AXIS2_EXTERN axiom_node_t * trust_util_create_computed_key_algo_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axiom_node_t *parent_node, axis2_char_t *algo_id)
AXIS2_EXTERN axiom_node_t * trust_util_create_key_size_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axiom_node_t *parent_node, axis2_char_t *key_size)
AXIS2_EXTERN axiom_node_t * trust_util_create_key_type_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axiom_node_t *parent_node, axis2_char_t *key_type)
AXIS2_EXTERN axiom_node_t * trust_util_create_authentication_type_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axiom_node_t *parent_node, axis2_char_t *authentication_type)
AXIS2_EXTERN axiom_node_t * trust_util_create_signature_algo_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axiom_node_t *parent_node, axis2_char_t *signature_algo)
AXIS2_EXTERN axiom_node_t * trust_util_create_encryption_algo_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axiom_node_t *parent_node, axis2_char_t *encryption_algo)
AXIS2_EXTERN axiom_node_t * trust_util_create_canonicalization_algo_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axiom_node_t *parent_node, axis2_char_t *canonicalization_algo)
AXIS2_EXTERN axiom_node_t * trust_util_create_computedkey_algo_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axiom_node_t *parent_node, axis2_char_t *computedkey_algo)
AXIS2_EXTERN axiom_node_t * trust_util_create_desired_encryption_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axiom_node_t *parent_node, axiom_node_t *encryption_key)
AXIS2_EXTERN axiom_node_t * trust_util_create_proof_encryption_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axiom_node_t *parent_node, axiom_node_t *proof_encryption_key)
AXIS2_EXTERN axiom_node_t * trust_util_create_usekey_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axiom_node_t *parent_node, axiom_node_t *usekey_key)
AXIS2_EXTERN axiom_node_t * trust_util_create_signwith_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axiom_node_t *parent_node, axis2_char_t *signwith)
AXIS2_EXTERN axiom_node_t * trust_util_create_encryptwith_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axiom_node_t *parent_node, axis2_char_t *encryptwith)
AXIS2_EXTERN axiom_node_t * trust_util_create_life_time_element (const axutil_env_t *env, axiom_node_t *parent_node, axis2_char_t *wst_ns_uri, int ttl)
AXIS2_EXTERN axiom_node_t * trust_util_create_req_attached_reference_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axiom_node_t *parent_node)
AXIS2_EXTERN axiom_node_t * trust_util_create_req_unattached_reference_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axiom_node_t *parent_node)
AXIS2_EXTERN axiom_node_t * trust_util_create_encrypted_data_element (const axutil_env_t *env, axiom_node_t *parent_node, axis2_char_t *enc_data)
AXIS2_EXTERN axiom_node_t * trust_util_create_renew_traget_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axiom_node_t *parent_node, axiom_node_t *token_renew_pending_node)
AXIS2_EXTERN axiom_node_t * trust_util_create_allow_postdating_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axiom_node_t *parent_node)
AXIS2_EXTERN axiom_node_t * trust_util_create_renewing_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axiom_node_t *parent_node, trust_allow_t allow_flag, trust_ok_t ok_flag)
AXIS2_EXTERN axiom_node_t * trust_util_create_cancel_target_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri, axiom_node_t *parent_node, axiom_node_t *token_cancel_pending_node)
AXIS2_EXTERN axiom_node_t * trust_util_create_validation_response_element (const axutil_env_t *env, axiom_node_t *parent_node, axis2_char_t *wst_ns_uri, axis2_char_t *code, axis2_char_t *reason)
AXIS2_EXTERN axiom_node_t * trust_util_create_random_session_key_proof_token_element (const axutil_env_t *env, axis2_char_t *wst_ns_uri)
AXIS2_EXTERN axis2_char_t * trust_util_get_wst_ns (const axutil_env_t *env, int wst_version)


Detailed Description

contains generic operations related to trust module


Function Documentation

AXIS2_EXTERN axiom_node_t* trust_util_computed_key_element ( const axutil_env_t *  env,
axis2_char_t *  wst_ns_uri,
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.

Parameters:
env pointer to environment struct
wst_verson integer representing wst version
parent_node parent axiom node
Returns:
RequestedSecurityToken axiom node, NULL if error ocurred.

AXIS2_EXTERN axiom_node_t* trust_util_create_allow_postdating_element ( const axutil_env_t *  env,
axis2_char_t *  wst_ns_uri,
axiom_node_t *  parent_node 
)

Create AllowPostdating element.

Parameters:
env pointer to environment struct
wst_version integer representing wst version
parent_node pointer to parent axiom node
Returns:
AllowPostdating element or NULL if error occurred.

AXIS2_EXTERN axiom_node_t* 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 
)

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>

Parameters:
env pointer to environment struct
wst_verson integer representing wst version
parent_node parent axiom node
token_type string representing token type
Returns:
TokenType axiom node, NULL if error ocurred.

AXIS2_EXTERN axiom_node_t* trust_util_create_binary_secret_element ( const axutil_env_t *  env,
axis2_char_t *  wst_ns_uri,
axiom_node_t *  parent_node,
axis2_char_t *  enc_secret,
axis2_char_t *  bin_sec_type 
)

Create BinarySecret element. This contains base64 encoded binary secret or key. And also contain attribute.

Parameters:
env pointer to environment struct
wst_version integer representing wst version
parent_node pointer to parent axiom node
enc_secret string representing encoded secret
bin_sec_type Type of the binary secret
Returns:
BinarySecret element or NULL if error occurred.

AXIS2_EXTERN axiom_node_t* trust_util_create_cancel_target_element ( const axutil_env_t *  env,
axis2_char_t *  wst_ns_uri,
axiom_node_t *  parent_node,
axiom_node_t *  token_cancel_pending_node 
)

Create CancelTarget element.

Parameters:
env pointer to environment struct
wst_version integer representing wst version
parent_node pointer to parent axiom node
token_cancel_pending_node 
Returns:
CancelTarget element or NULL if error occurred.

AXIS2_EXTERN axiom_node_t* trust_util_create_claims_element ( const axutil_env_t *  env,
axis2_char_t *  wst_ns_uri,
axiom_node_t *  parent_node,
axis2_char_t *  dialect_uri 
)

Claims :Requests a set of specific claims. These claims are identified by using the service's policy :URI to indicate the syntax of the claims

AXIS2_EXTERN axiom_node_t* trust_util_create_computed_key_algo_element ( const axutil_env_t *  env,
axis2_char_t *  wst_ns_uri,
axiom_node_t *  parent_node,
axis2_char_t *  algo_id 
)

Create ComputedKeyAlgorithm element.

Parameters:
env pointer to environment struct
wst_version integer representing wst version
parent_node pointer to parent axiom node
algo_id Algorithm identifier
Returns:
ComputedKeyAlgorithm element or NULL if error occurred.

AXIS2_EXTERN axiom_node_t* trust_util_create_encrypted_data_element ( const axutil_env_t *  env,
axiom_node_t *  parent_node,
axis2_char_t *  enc_data 
)

Create EncryptedData element.

Parameters:
env pointer to environment struct
wst_version integer representing wst version
parent_node pointer to parent axiom node
enc_data encrypted data string
Returns:
EncryptedData element or NULL if error occurred.

AXIS2_EXTERN axiom_node_t* trust_util_create_entropy_element ( const axutil_env_t *  env,
axis2_char_t *  wst_ns_uri,
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.

Parameters:
env pointer to environment struct
wst_verson integer representing wst version
parent_node parent axiom node
Returns:
Entropy axiom node, NULL if error ocurred.

AXIS2_EXTERN axiom_node_t* trust_util_create_key_size_element ( const axutil_env_t *  env,
axis2_char_t *  wst_ns_uri,
axiom_node_t *  parent_node,
axis2_char_t *  key_size 
)

Create KeySize element.

Parameters:
env pointer to environment struct
wst_version integer representing wst version
parent_node pointer to parent axiom node
key_size Key size string
Returns:
KeySize element or NULL if error occurred.

AXIS2_EXTERN axiom_node_t* trust_util_create_key_type_element ( const axutil_env_t *  env,
axis2_char_t *  wst_ns_uri,
axiom_node_t *  parent_node,
axis2_char_t *  key_type 
)

Create KeyType element.

Parameters:
env pointer to environment struct
wst_version integer representing wst version
parent_node pointer to parent axiom node
key_type Key type string
Returns:
KeySize element or NULL if error occurred.

AXIS2_EXTERN axiom_node_t* trust_util_create_life_time_element ( const axutil_env_t *  env,
axiom_node_t *  parent_node,
axis2_char_t *  wst_ns_uri,
int  ttl 
)

Create LifeTime element.

Parameters:
env pointer to environment struct
wst_version integer representing wst version
parent_node pointer to parent axiom node
Returns:
LifeTime element or NULL if error occurred.

AXIS2_EXTERN axiom_node_t* trust_util_create_renew_traget_element ( const axutil_env_t *  env,
axis2_char_t *  wst_ns_uri,
axiom_node_t *  parent_node,
axiom_node_t *  token_renew_pending_node 
)

Create RenewTarget element.

Parameters:
env pointer to environment struct
wst_version integer representing wst version
parent_node pointer to parent axiom node
token_renew_pending_node 
Returns:
RenewTarget element or NULL if error occurred.

AXIS2_EXTERN axiom_node_t* trust_util_create_renewing_element ( const axutil_env_t *  env,
axis2_char_t *  wst_ns_uri,
axiom_node_t *  parent_node,
trust_allow_t  allow_flag,
trust_ok_t  ok_flag 
)

Create Renewing element.

Parameters:
env pointer to environment struct
wst_version integer representing wst version
parent_node pointer to parent axiom node
allow_flag 
ok_flag 
Returns:
Renewing element or NULL if error occurred.

AXIS2_EXTERN axiom_node_t* trust_util_create_req_attached_reference_element ( const axutil_env_t *  env,
axis2_char_t *  wst_ns_uri,
axiom_node_t *  parent_node 
)

Create RequestedAttachedReference element.

Parameters:
env pointer to environment struct
wst_version integer representing wst version
parent_node pointer to parent axiom node
Returns:
RequestedAttachedReference element or NULL if error occurred.

AXIS2_EXTERN axiom_node_t* trust_util_create_req_unattached_reference_element ( const axutil_env_t *  env,
axis2_char_t *  wst_ns_uri,
axiom_node_t *  parent_node 
)

Create RequestedUnAttachedReference element.

Parameters:
env pointer to environment struct
wst_version integer representing wst version
parent_node pointer to parent axiom node
Returns:
RequestedUnAttachedReference element or NULL if error occurred.

AXIS2_EXTERN axiom_node_t* trust_util_create_request_type_element ( const axutil_env_t *  env,
axis2_char_t *  wst_ns_uri,
axiom_node_t *  parent_node,
axis2_char_t *  request_type 
)

Create the RequestType Element for Issuance binding. <wst:RequestType> .... </wst:RequestType>

Parameters:
env pointer to environment struct
wst_verson integer representing wst version
parent_node parent axiom node
request_type string representing request type
Returns:
RequestType axiom node, NULL if error ocurred.

AXIS2_EXTERN axiom_node_t* trust_util_create_requested_security_token_element ( const axutil_env_t *  env,
axis2_char_t *  wst_ns_uri,
axiom_node_t *  parent_node,
axiom_node_t *  sec_token_node 
)

Create the RequestedSecurityToken Element for Issuance binding. <wst:RequestedSecurityToken> .... </wst:RequestedSecurityToken>

Parameters:
env pointer to environment struct
wst_verson integer representing wst version
parent_node parent axiom node
Returns:
RequestedSecurityToken axiom node, NULL if error ocurred.

AXIS2_EXTERN axiom_node_t* trust_util_create_requsted_proof_token_element ( const axutil_env_t *  env,
axis2_char_t *  wst_ns_uri,
axiom_node_t *  parent_node,
axiom_node_t *  req_proof_token 
)

Create the RequestedProofToken Element for Issuance binding. <wst:RequestedProofToken> .... </wst:RequestedProofToken>

Parameters:
env pointer to environment struct
wst_verson integer representing wst version
parent_node parent axiom node
Returns:
RequestedSecurityToken axiom node, NULL if error ocurred.

AXIS2_EXTERN axiom_node_t* trust_util_create_rst_element ( const axutil_env_t *  env,
axis2_char_t *  wst_ns_uri,
axis2_char_t *  context 
)

Create the RST Element for Issuance binding. <wst:RequestSecurityToken> ... ... </wst:RequestSecurityToken>

Parameters:
env pointer to environment struct
wst_verson integer representing wst version
context string representing contest of the request, can be NULL
Returns:
RST axiom node, NULL if error occurred.

AXIS2_EXTERN axiom_node_t* trust_util_create_rstr_collection_element ( const axutil_env_t *  env,
axis2_char_t *  wst_ns_uri 
)

Create the RSTRC Element for Issuance binding. <wst:RequestSecurityTokenResponseCollection> ... ... </wst:RequestSecurityTokenResponseCollection>

Parameters:
env pointer to environment struct
wst_verson integer representing wst version
Returns:
RSTRC axiom node, NULL if error ocurred.

AXIS2_EXTERN axiom_node_t* trust_util_create_rstr_element ( const axutil_env_t *  env,
axis2_char_t *  wst_ns_uri,
axis2_char_t *  context 
)

Create the RSTR Element for Issuance binding. <wst:RequestSecurityTokenResponse> ... ... </wst:RequestSecurityTokenResponse>

Parameters:
env pointer to environment struct
wst_verson integer representing wst version
context string representing contest of the request, can be NULL
Returns:
RSTR axiom node, NULL if error ocurred.

AXIS2_EXTERN axiom_node_t* trust_util_create_token_type_element ( const axutil_env_t *  env,
axis2_char_t *  wst_ns_uri,
axiom_node_t *  parent_node,
axis2_char_t *  token_type 
)

Create the TokenType Element for Issuance binding. <wst:TokenType> .... </wst:TokenType>

Parameters:
env pointer to environment struct
wst_verson integer representing wst version
parent_node parent axiom node
token_type string representing token type
Returns:
TokenType axiom node, NULL if error ocurred.

AXIS2_EXTERN axiom_node_t* trust_util_create_validation_response_element ( const axutil_env_t *  env,
axiom_node_t *  parent_node,
axis2_char_t *  wst_ns_uri,
axis2_char_t *  code,
axis2_char_t *  reason 
)

Create Status element for validation response.

Parameters:
env pointer to environment struct
wst_version integer representing wst version
parent_node pointer to parent axiom node
token_cancel_pending_node 
Returns:
Status element or NULL if error occurred.

AXIS2_EXTERN axis2_char_t* trust_util_get_wst_ns ( const axutil_env_t *  env,
int  wst_version 
)

Returns the namespace uri of WST according to the version.

Parameters:
env pointer to environment struct
wst_version integer representing wst version
Returns:
namespace uri according to version.


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__oxs__xml__key__processor.html0000644000076500007650000000770711202454456026174 0ustar shankarshankar Rampart/C: XML Key Processor

XML Key Processor
[OMXMLSecurity]


Functions

AXIS2_EXTERN axis2_status_t oxs_xml_key_process_X509SKI (const axutil_env_t *env, axiom_node_t *X509SKI_node, oxs_x509_cert_t *cert)
AXIS2_EXTERN axis2_status_t oxs_xml_key_process_X509SubjectName (const axutil_env_t *env, axiom_node_t *X509_subj_name_node, oxs_x509_cert_t *cert)
AXIS2_EXTERN axis2_status_t oxs_xml_key_process_X509IssuerSerial (const axutil_env_t *env, axiom_node_t *X509_issuer_serial_node, oxs_x509_cert_t *cert)
AXIS2_EXTERN axis2_status_t oxs_xml_key_process_X509Certificate (const axutil_env_t *env, axiom_node_t *X509_cert_node, oxs_x509_cert_t *cert)
AXIS2_EXTERN axis2_status_t oxs_xml_key_process_X509Data (const axutil_env_t *env, axiom_node_t *X509_data_node, oxs_x509_cert_t *cert)

Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/openssl__pkey_8h.html0000644000076500007650000002367211202454455022773 0ustar shankarshankar Rampart/C: openssl_pkey.h File Reference

openssl_pkey.h File Reference

holds either a public key or a private key. The type is determined by the type attribute More...

#include <openssl/rand.h>
#include <openssl/evp.h>
#include <openssl/pem.h>
#include <openssl/bio.h>
#include <openssl_constants.h>
#include <axis2_util.h>

Go to the source code of this file.

Defines

#define OPENSSL_PKEY_TYPE_UNKNOWN   0
#define OPENSSL_PKEY_TYPE_PUBLIC_KEY   1
#define OPENSSL_PKEY_TYPE_PRIVATE_KEY   2

Typedefs

typedef struct openssl_pkey_t openssl_pkey_t

Functions

EVP_PKEY * openssl_pkey_get_key (const openssl_pkey_t *pkey, const axutil_env_t *env)
axis2_char_t * openssl_pkey_get_name (const openssl_pkey_t *pkey, const axutil_env_t *env)
int openssl_pkey_get_size (const openssl_pkey_t *pkey, const axutil_env_t *env)
int openssl_pkey_get_type (const openssl_pkey_t *pkey, const axutil_env_t *env)
axis2_status_t openssl_pkey_set_key (openssl_pkey_t *pkey, const axutil_env_t *env, EVP_PKEY *key)
axis2_status_t openssl_pkey_set_name (openssl_pkey_t *pkey, const axutil_env_t *env, axis2_char_t *name)
axis2_status_t openssl_pkey_set_type (openssl_pkey_t *pkey, const axutil_env_t *env, int type)
axis2_status_t openssl_pkey_load (openssl_pkey_t *pkey, const axutil_env_t *env, axis2_char_t *filename, axis2_char_t *password)
axis2_status_t openssl_pkey_populate (openssl_pkey_t *pkey, const axutil_env_t *env, EVP_PKEY *key, axis2_char_t *name, int type)
axis2_status_t openssl_pkey_free (openssl_pkey_t *pkey, const axutil_env_t *env)
axis2_status_t openssl_pkey_increment_ref (openssl_pkey_t *pkey, const axutil_env_t *env)
AXIS2_EXTERN openssl_pkey_topenssl_pkey_create (const axutil_env_t *env)


Detailed Description

holds either a public key or a private key. The type is determined by the type attribute


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/trust__util_8h-source.html0000644000076500007650000005723111202454455023772 0ustar shankarshankar Rampart/C: trust_util.h Source File

trust_util.h

Go to the documentation of this file.
00001 
00002 /*
00003 * Licensed to the Apache Software Foundation (ASF) under one or more
00004 * contributor license agreements.  See the NOTICE file distributed with
00005 * this work for additional information regarding copyright ownership.
00006 * The ASF licenses this file to You under the Apache License, Version 2.0
00007 * (the "License"); you may not use this file except in compliance with
00008 * the License.  You may obtain a copy of the License at
00009 *
00010 *      http://www.apache.org/licenses/LICENSE-2.0
00011 *
00012 * Unless required by applicable law or agreed to in writing, software
00013 * distributed under the License is distributed on an "AS IS" BASIS,
00014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00015 * See the License for the specific language governing permissions and
00016 * limitations under the License.
00017 */
00018 
00019 #ifndef TRUST_UTIL
00020 #define TRUST_UTIL
00021 
00027 #include <stdio.h>
00028 #include <stdlib.h>
00029 #include <axiom.h>
00030 #include <axutil_utils.h>
00031 #include <axutil_string.h>
00032 
00033 #include <trust_constants.h>
00034 
00035 #ifdef __cplusplus
00036 extern "C"
00037 {
00038 #endif
00039 
00040     typedef enum
00041     {
00042         TRUST_ALLOW = 0,
00043         TRUST_NOT_ALLOW
00044     } trust_allow_t;
00045 
00046     typedef enum
00047     {
00048         TRUST_OK = 0,
00049         TRUST_NOT_OK
00050     } trust_ok_t;
00051 
00063     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00064     trust_util_create_rst_element(
00065         const axutil_env_t * env,
00066         axis2_char_t *wst_ns_uri,
00067         axis2_char_t * context);
00068 
00080     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00081     trust_util_create_rstr_element(
00082         const axutil_env_t * env,
00083         axis2_char_t *wst_ns_uri,
00084         axis2_char_t * context);
00085 
00096     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00097     trust_util_create_rstr_collection_element(
00098         const axutil_env_t * env,
00099         axis2_char_t *wst_ns_uri);
00100 
00110     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00111     trust_util_create_request_type_element(
00112         const axutil_env_t * env,
00113         axis2_char_t *wst_ns_uri,
00114         axiom_node_t * parent_node,
00115         axis2_char_t * request_type);
00116 
00126     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00127     trust_util_create_token_type_element(
00128         const axutil_env_t * env,
00129         axis2_char_t *wst_ns_uri,
00130         axiom_node_t * parent_node,
00131         axis2_char_t * token_type);
00132 
00148     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00149     trust_util_create_applies_to_element(
00150         const axutil_env_t * env,
00151         axiom_node_t * parent_node,
00152         const axis2_char_t * address,
00153         const axis2_char_t * addressing_ns);
00154 
00161     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00162     trust_util_create_claims_element(
00163         const axutil_env_t * env,
00164         axis2_char_t *wst_ns_uri,
00165         axiom_node_t * parent_node,
00166         axis2_char_t * dialect_uri);
00167 
00176     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00177     trust_util_create_requested_security_token_element(
00178         const axutil_env_t * env,
00179         axis2_char_t *wst_ns_uri,
00180         axiom_node_t * parent_node,
00181         axiom_node_t * sec_token_node);
00182 
00183 
00192     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00193     trust_util_create_requsted_proof_token_element(
00194         const axutil_env_t * env,
00195         axis2_char_t *wst_ns_uri,
00196         axiom_node_t * parent_node,
00197         axiom_node_t *req_proof_token);
00198 
00209     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00210     trust_util_create_entropy_element(
00211         const axutil_env_t * env,
00212         axis2_char_t *wst_ns_uri,
00213         axiom_node_t * parent_node);
00214 
00224     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00225     trust_util_computed_key_element(
00226         const axutil_env_t * env,
00227         axis2_char_t *wst_ns_uri,
00228         axiom_node_t * parent_node);
00229 
00240     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00241     trust_util_create_binary_secret_element(
00242         const axutil_env_t * env,
00243         axis2_char_t *wst_ns_uri,
00244         axiom_node_t * parent_node,
00245         axis2_char_t * enc_secret,
00246         axis2_char_t * bin_sec_type);
00247 
00256     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00257     trust_util_create_computed_key_algo_element(
00258         const axutil_env_t * env,
00259         axis2_char_t *wst_ns_uri,
00260         axiom_node_t * parent_node,
00261         axis2_char_t * algo_id);
00262 
00271     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00272     trust_util_create_key_size_element(
00273         const axutil_env_t * env,
00274         axis2_char_t *wst_ns_uri,
00275         axiom_node_t * parent_node,
00276         axis2_char_t * key_size);
00277 
00286     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00287     trust_util_create_key_type_element(
00288         const axutil_env_t * env,
00289         axis2_char_t *wst_ns_uri,
00290         axiom_node_t * parent_node,
00291         axis2_char_t * key_type);
00292 
00293     
00294     /*AuthenticationType*/
00295     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00296     trust_util_create_authentication_type_element(
00297         const axutil_env_t * env,
00298         axis2_char_t *wst_ns_uri,
00299         axiom_node_t * parent_node,
00300         axis2_char_t * authentication_type);
00301 
00302    /*SignatureAlgorithm*/
00303     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00304     trust_util_create_signature_algo_element(
00305         const axutil_env_t * env,
00306         axis2_char_t *wst_ns_uri,
00307         axiom_node_t * parent_node,
00308         axis2_char_t * signature_algo);
00309     
00310     /*EncryptionAlgorithm*/
00311     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00312     trust_util_create_encryption_algo_element(
00313         const axutil_env_t * env,
00314         axis2_char_t *wst_ns_uri,
00315         axiom_node_t * parent_node,
00316         axis2_char_t * encryption_algo);
00317         
00318     /*CanonicalizationAlgorithm*/
00319     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00320     trust_util_create_canonicalization_algo_element(
00321         const axutil_env_t * env,
00322         axis2_char_t *wst_ns_uri,
00323         axiom_node_t * parent_node,
00324         axis2_char_t * canonicalization_algo);
00325 
00326     /*ComputedKeyAlgorithm*/
00327     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00328     trust_util_create_computedkey_algo_element(
00329         const axutil_env_t * env,
00330         axis2_char_t *wst_ns_uri,
00331         axiom_node_t * parent_node,
00332         axis2_char_t * computedkey_algo);
00333     
00334    /*(Desired)Encryption*/
00335     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00336     trust_util_create_desired_encryption_element(
00337         const axutil_env_t * env,
00338         axis2_char_t * wst_ns_uri,
00339         axiom_node_t * parent_node,
00340         axiom_node_t * encryption_key); /*@param encryption_key - This can be either a key or a STR*/
00341    
00342    /*ProofEncryption*/
00343     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00344     trust_util_create_proof_encryption_element(
00345         const axutil_env_t * env,
00346         axis2_char_t * wst_ns_uri,
00347         axiom_node_t * parent_node,
00348         axiom_node_t * proof_encryption_key); /*@param encryption_key - This can be either a key or a STR*/
00349 
00350     /*UseKey*/
00351     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00352     trust_util_create_usekey_element(
00353         const axutil_env_t * env,
00354         axis2_char_t * wst_ns_uri,
00355         axiom_node_t * parent_node,
00356         axiom_node_t * usekey_key); /*@param encryption_key - This can be either a key or a STR*/
00357 
00358    /*SignWith*/
00359     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00360     trust_util_create_signwith_element(
00361         const axutil_env_t * env,
00362         axis2_char_t *wst_ns_uri,
00363         axiom_node_t * parent_node,
00364         axis2_char_t * signwith);
00365        
00366    /*EncryptWith*/
00367     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00368     trust_util_create_encryptwith_element(
00369         const axutil_env_t * env,
00370         axis2_char_t *wst_ns_uri,
00371         axiom_node_t * parent_node,
00372         axis2_char_t * encryptwith);
00373  
00382     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00383     trust_util_create_life_time_element(
00384         const axutil_env_t * env,
00385         axiom_node_t * parent_node,
00386         axis2_char_t *wst_ns_uri,
00387         int ttl);
00388 
00396     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00397     trust_util_create_req_attached_reference_element(
00398         const axutil_env_t * env,
00399         axis2_char_t *wst_ns_uri,
00400         axiom_node_t * parent_node);
00401 
00409     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00410     trust_util_create_req_unattached_reference_element(
00411         const axutil_env_t * env,
00412         axis2_char_t *wst_ns_uri,
00413         axiom_node_t * parent_node);
00414 
00423     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00424     trust_util_create_encrypted_data_element(
00425         const axutil_env_t * env,
00426         axiom_node_t * parent_node,
00427         axis2_char_t * enc_data);
00428 
00437     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00438     trust_util_create_renew_traget_element(
00439         const axutil_env_t * env,
00440         axis2_char_t *wst_ns_uri,
00441         axiom_node_t * parent_node,
00442         axiom_node_t * token_renew_pending_node);
00443 
00451     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00452     trust_util_create_allow_postdating_element(
00453         const axutil_env_t * env,
00454         axis2_char_t *wst_ns_uri,
00455         axiom_node_t * parent_node);
00456 
00466     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00467     trust_util_create_renewing_element(
00468         const axutil_env_t * env,
00469         axis2_char_t *wst_ns_uri,
00470         axiom_node_t * parent_node,
00471         trust_allow_t allow_flag,
00472         trust_ok_t ok_flag);
00473 
00482     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00483     trust_util_create_cancel_target_element(
00484         const axutil_env_t * env,
00485         axis2_char_t *wst_ns_uri,
00486         axiom_node_t * parent_node,
00487         axiom_node_t * token_cancel_pending_node);
00488 
00497     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00498     trust_util_create_validation_response_element(
00499         const axutil_env_t * env,
00500         axiom_node_t * parent_node,
00501         axis2_char_t *wst_ns_uri,
00502         axis2_char_t * code,
00503         axis2_char_t * reason);
00504 
00505         /* Generate random se*/
00506         AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00507         trust_util_create_random_session_key_proof_token_element(
00508                 const axutil_env_t * env,
00509                 axis2_char_t *wst_ns_uri);
00510 
00517     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00518     trust_util_get_wst_ns(
00519         const axutil_env_t * env,
00520         int wst_version);
00521 
00522 #ifdef __cplusplus
00523 }
00524 #endif
00525 #endif                          /*TRUST_UTIL_H */

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/tab_b.gif0000644000076500007650000000004311202454454020354 0ustar shankarshankarGIF89a€„°Ç,D;rampartc-src-1.3.0/xdocs/api/html/rampart__constants_8h-source.html0000644000076500007650000004672511202454455025324 0ustar shankarshankar Rampart/C: rampart_constants.h Source File

rampart_constants.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 
00019 #ifndef RAMPART_CONSTANTS_H
00020 #define RAMPART_CONSTANTS_H
00021 
00031 #include <oxs_constants.h>
00032 #include <rampart_error.h>
00033 
00034 #ifdef __cplusplus
00035 extern "C"
00036 {
00037 #endif
00038 
00054     /*Rampart module*/
00055 #define RAMPART_IN_HANDLER  "RampartInHandler"
00056 #define RAMPART_OUT_HANDLER  "RampartOutHandler"
00057 
00058     /* Rahas module */
00059 #define RAHAS_IN_HANDLER "RahasInHandler"
00060 #define RAHAS_OUT_HANDLER "RahasOutHandler"
00061 
00062     /*Default values*/
00063 #define RAMPART_DEFAULT_KT_ALGO OXS_DEFAULT_KT_ALGO_HREF
00064 #define RAMPART_STR_DEFAULT OXS_STR_DEFAULT
00065 #define RAMPART_TIMESTAMP_TOKEN_DEFAULT_TIME_TO_LIVE 300
00066 
00067     /* rampart element names*/
00068 #define RAMPART_SECURITY "Security"
00069 #define RAMPART_SECURITY_USERNAMETOKEN "UsernameToken"
00070 #define RAMPART_SECURITY_USERNAMETOKEN_USERNAME "Username"
00071 #define RAMPART_SECURITY_USERNAMETOKEN_PASSWORD "Password"
00072 #define RAMPART_SECURITY_USERNAMETOKEN_CREATED "Created"
00073 #define RAMPART_SECURITY_USERNAMETOKEN_NONCE "Nonce"
00074 #define RAMPART_SECURITY_USERNAMETOKEN_PASSWORD_ATTR_TYPE "Type"
00075 #define RAMPART_SECURITY_TIMESTAMP "Timestamp"
00076 #define RAMPART_SECURITY_TIMESTAMP_CREATED "Created"
00077 #define RAMPART_SECURITY_TIMESTAMP_EXPIRES "Expires"
00078 #define RAMPART_RAMPART "rampart"
00079 
00080     /*Rampart URIs*/
00081 #define RAMPART_WSSE "wsse"
00082 #define RAMPART_WSSE_XMLNS "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
00083 #define RAMPART_WSU "wsu"
00084 #define RAMPART_WSU_XMLNS "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
00085 #define RAMPART_PASSWORD_DIGEST_URI "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest"
00086 
00087 #define RAMPART_PASSWORD_TEXT_URI "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText"
00088 
00089 
00090 #define RAMPART_INFLOW_SECURITY_POLICY              "InflowSecurityPolicy"
00091 #define RAMPART_OUTFLOW_SECURITY_POLICY             "OutflowSecurityPolicy"
00092 
00093 #define INFLOW_RAMPART_CONTEXT                      "InflowRampartContext"
00094 #define OUTFLOW_RAMPART_CONTEXT                     "OutflowRampartContext"
00095 
00096 #define RAMPART_CONTEXT                             "RampartContext"
00097 
00098 #define IN_MESSAGE_SECURITY                          "InMessageSecurity"
00099 #define OUT_MESSAGE_SECURITY                         "OutMessageSEcurity"
00100 #define RAMPART_PASSWORD_TEXT                       "plainText"
00101 #define RAMPART_PASSWORD_DIGEST                     "Digest"
00102 #define RAMPART_CONFIGURATION                       "RampartConfiguration"
00103 #define RAMPART_CLIENT_CONFIGURATION                "RampartClientConfiguration"
00104 
00105     /************fault codes***************/
00106 #define RAMPART_FAULT_UNSUPPORTED_SECURITY_TOKEN    "wsse:UnsupportedSecurityToken"
00107 #define RAMPART_FAULT_UNSUPPORTED_ALGORITHM         "wsse:UnsupportedAlgorithm"
00108 #define RAMPART_FAULT_INVALID_SECURITY              "wsse:InvalidSecurity"
00109 #define RAMPART_FAULT_INVALID_SECURITY_TOKEN        "wsse:InvalidSecurityToken"
00110 #define RAMPART_FAULT_FAILED_AUTHENTICATION         "wsse:FailedAuthentication"
00111 #define RAMPART_FAULT_FAILED_CHECK                  "wsse:FailedCheck"
00112 #define RAMPART_FAULT_SECURITY_TOKEN_UNAVAILABLE    "wsse:SecurityTokenUnavailable"
00113 #define RAMPART_FAULT_TRUST_REQUEST_FAILED          "wst:RequestFailed"
00114 #define RAMPART_FAULT_TRUST_REQUEST_INVALID         "wst:InvalidRequest"
00115 
00116     /***********fault related strings*********/
00117 #define RAMPART_FAULT_IN_TIMESTAMP             "wsse:Timestamp"
00118 #define RAMPART_FAULT_IN_USERNAMETOKEN         "wsse:UsernameToken"
00119 #define RAMPART_FAULT_IN_ENCRYPTED_KEY         "xenc:EncryptedKey"
00120 #define RAMPART_FAULT_IN_ENCRYPTED_DATA        "xenc:EncryptedData"
00121 #define RAMPART_FAULT_IN_SIGNATURE             "ds:Signature"
00122 #define RAMPART_FAULT_MSG_REPLAYED             "rampc:Message-Replayed"
00123 #define RAMPART_FAULT_IN_POLICY                "rampc:Policy"
00124 
00125 #define RAMPART_FAULT_ELEMENT_LOCAL_NAME       "ProblemSecurityHeader"
00126 
00127 
00128     /*Dynamically set values*/
00129 #define RAMPART_ACTION_PASSWORD "password"
00130 #define RAMPART_ACTION_ENC_USER_PASSWORD "encUserPassword"
00131 #define RAMPART_CALLBACK_SPECIFIC_PROPERTY "callbackSpecificProperty"
00132 
00133     /*Security processed results*/
00134 #define RAMPART_SECURITY_PROCESSED_RESULTS "SecurityProcessedResults"
00135 #define RAMPART_SPR_UT_USERNAME "SPR_UT_username"
00136 #define RAMPART_SPR_UT_CREATED "SPR_UT_created"
00137 #define RAMPART_SPR_UT_NONCE "SPR_UT_nonce"
00138 #define RAMPART_SPR_UT_PASSWORD_TYPE "SPR_UT_passwordType"
00139 #define RAMPART_SPR_TS_CREATED "SPR_TS_created"
00140 #define RAMPART_SPR_TS_EXPIRES "SPR_TS_expires"
00141 #define RAMPART_SPR_UT_CHECKED "SPR_UT_Checked"
00142 #define RAMPART_SPR_TS_CHECKED "SPR_TS_Checked"
00143 #define RAMPART_SPR_ENC_CHECKED "SPR_ENC_Checked"
00144 #define RAMPART_SPR_SIG_VALUE "SPR_Sig_Val"
00145 #define RAMPART_SPR_ENDORSED_VALUE "SPR_Endorsed_Value"
00146 #define RAMPART_SPR_SIG_VERIFIED "SPR_Sig_Verified"
00147 #define RAMPART_SPR_SIG_ENCRYPTED "SPR_Sig_Encrypted"
00148 #define RAMPART_SPR_SIG_CONFIRM_FOUND "SPR_Sig_Confirmation_Found"
00149 #define RAMPART_SPR_BODY_ENCRYPTED "SPR_Body_Encrypted"
00150 
00151 #define RAMPART_YES "YES"
00152 #define RAMPART_NO "NO"
00153 
00154 #define RAMPART_STR_DIRECT_REFERENCE    OXS_STR_DIRECT_REFERENCE
00155 #define RAMPART_STR_KEY_IDENTIFIER      OXS_STR_KEY_IDENTIFIER
00156 #define RAMPART_STR_EMBEDDED            OXS_STR_EMBEDDED
00157 #define RAMPART_STR_ISSUER_SERIAL       OXS_STR_ISSUER_SERIAL
00158 #define RAMPART_STR_THUMB_PRINT         OXS_STR_THUMB_PRINT
00159 #define RAMPART_STR_EXTERNAL_URI        OXS_STR_EXTERNAL_URI
00160 #define RAMPART_STR_ENCRYPTED_KEY       OXS_STR_ENCRYPTED_KEY
00161 
00162 #define RAMPART_RD_DEF_VALID_DURATION 60
00163 #define RAMPART_RD_DEF_MAX_RCDS 5
00164 
00165 #define RAMPART_SCT_ID_TYPE_UNKNOWN 0
00166 #define RAMPART_SCT_ID_TYPE_LOCAL 1
00167 #define RAMPART_SCT_ID_TYPE_GLOBAL 2
00168 
00169 #define RAMPART_USERNAME_TOKEN_NONCE_LENGTH 24
00170 
00171 #define RAMPART_ENC_TOKEN_ID "EncryptionTokenID"
00172 #define RAMPART_SIG_TOKEN_ID "SignatureTokenID"
00173 
00174 #define RAMPART_BST_ID_PREFIX "BST-"
00175 #define RAMPART_EMBED_TOKEN_ID "ID"
00176 
00177 #ifdef __cplusplus
00178 }
00179 #endif
00180 
00182 #endif /* RAMPART_CONSTANTS_H*/

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/rampart__callback_8h-source.html0000644000076500007650000001730611202454455025035 0ustar shankarshankar Rampart/C: rampart_callback.h Source File

rampart_callback.h

Go to the documentation of this file.
00001 /*
00002 * Licensed to the Apache Software Foundation (ASF) under one or more
00003 * contributor license agreements.  See the NOTICE file distributed with
00004 * this work for additional information regarding copyright ownership.
00005 * The ASF licenses this file to You under the Apache License, Version 2.0
00006 * (the "License"); you may not use this file except in compliance with
00007 * the License.  You may obtain a copy of the License at
00008 *
00009 *      http://www.apache.org/licenses/LICENSE-2.0
00010 *
00011 * Unless required by applicable law or agreed to in writing, software
00012 * distributed under the License is distributed on an "AS IS" BASIS,
00013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014 * See the License for the specific language governing permissions and
00015 * limitations under the License.
00016 */
00017 
00018 #include <axutil_utils_defines.h>
00019 #include <axis2_defines.h>
00020 #include <axutil_param.h>
00021 #ifndef RAMPART_CALLBACK_H
00022 #define RAMPART_CALLBACK_H
00023 
00030 #ifdef __cplusplus
00031 extern "C"
00032 {
00033 #endif
00034 
00041     typedef struct rampart_callback_ops rampart_callback_ops_t;
00042     typedef struct rampart_callback rampart_callback_t;
00043 
00044     struct rampart_callback_ops
00045     {
00056         axis2_char_t *(AXIS2_CALL*
00057                        callback_password)(rampart_callback_t *callback,
00058                                           const axutil_env_t *env,
00059                                           const axis2_char_t *username,
00060                                           void *param);
00072                 axis2_char_t *(AXIS2_CALL*
00073                                            callback_pkcs12_password)(rampart_callback_t *callback,
00074                                                                                                 const axutil_env_t *env,
00075                                                                                                 const axis2_char_t *username,
00076                                                                                                 void *param);
00083         axis2_status_t (AXIS2_CALL*
00084                         free)(rampart_callback_t *rcb,
00085                               const axutil_env_t* env);
00086 
00087     };
00088 
00089     struct rampart_callback
00090     {
00091         rampart_callback_ops_t *ops;
00092         axutil_param_t *param;
00093     };
00094 
00095     /*************************** Function macros **********************************/
00096 #define RAMPART_CALLBACK_FREE(callback, env) \
00097       ((callback)->ops->free (callback, env))
00098 
00099 #define RAMPART_CALLBACK_CALLBACK_PASSWORD(callback, env, username, param) \
00100       ((callback)->ops->callback_password(callback, env, username, param))
00101 
00102 #define RAMPART_CALLBACK_CALLBACK_PKCS12_PASSWORD(callback, env, username, param) \
00103           ((callback)->ops->callback_pkcs12_password(callback, env, username, param))
00104 
00106 #ifdef __cplusplus
00107 }
00108 #endif
00109 
00110 #endif /* RAMPART_CALLBACK_H */
00111 

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/oxs__axis2__utils_8h.html0000644000076500007650000000327711202454455023555 0ustar shankarshankar Rampart/C: oxs_axis2_utils.h File Reference

oxs_axis2_utils.h File Reference

Utility functions related to Axis2/C. More...

#include <axis2_util.h>
#include <oxs_buffer.h>

Go to the source code of this file.


Detailed Description

Utility functions related to Axis2/C.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/rampart__sec__header__processor_8h-source.html0000644000076500007650000001360211202454455027753 0ustar shankarshankar Rampart/C: rampart_sec_header_processor.h Source File

rampart_sec_header_processor.h

Go to the documentation of this file.
00001 /*
00002  *   Copyright 2003-2004 The Apache Software Foundation.
00003  *
00004  *   Licensed under the Apache License, Version 2.0 (the "License");
00005  *   you may not use this file except in compliance with the License.
00006  *   You may obtain a copy of the License at
00007  *
00008  *       http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  *   Unless required by applicable law or agreed to in writing, software
00011  *   distributed under the License is distributed on an "AS IS" BASIS,
00012  *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  *   See the License for the specific language governing permissions and
00014  *   limitations under the License.
00015  */
00016 
00017 #include <axutil_utils_defines.h>
00018 #include <axis2_defines.h>
00019 #include <axutil_env.h>
00020 #include <axiom_soap.h>
00021 #include <axis2_msg_ctx.h>
00022 #include <oxs_asym_ctx.h>
00023 #include <oxs_xml_encryption.h>
00024 #include <rampart_context.h>
00025 #include <oxs_key_mgr.h>
00037 #ifndef RAMPART_SEC_HEADER_PROCESSOR_H
00038 #define RAMPART_SEC_HEADER_PROCESSOR_H
00039 
00040 #ifdef __cplusplus
00041 extern "C" {
00042 #endif
00043 
00055     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00056     rampart_shp_process_sec_header(const axutil_env_t *env,
00057                                 axis2_msg_ctx_t *msg_ctx,
00058                                 rampart_context_t *rampart_context,
00059                                 axiom_soap_envelope_t *soap_envelope,
00060                                 axiom_node_t *sec_node);
00061 
00062 
00063     /* @} */
00064 #ifdef __cplusplus
00065 }
00066 #endif
00067 
00068 #endif    /* !RAMPART_SEC_HEADER_PROCESSOR_H */

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/rampart__mod_8h.html0000644000076500007650000000436011202454456022557 0ustar shankarshankar Rampart/C: rampart_mod.h File Reference

rampart_mod.h File Reference

Axis2 rampart module interface. More...

#include <axis2_handler.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN axis2_handler_t * rampart_in_handler_create (const axutil_env_t *env, axutil_string_t *name)
AXIS2_EXTERN axis2_handler_t * rampart_out_handler_create (const axutil_env_t *env, axutil_string_t *name)


Detailed Description

Axis2 rampart module interface.


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/rampart__crypto__util_8h-source.html0000644000076500007650000001203311202454455026005 0ustar shankarshankar Rampart/C: rampart_crypto_util.h Source File

rampart_crypto_util.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 
00019 #include <axutil_utils_defines.h>
00020 #include <axis2_defines.h>
00021 #include <axutil_env.h>
00022 
00027 #ifndef RAMPART_CRYPTO_UTIL
00028 #define RAMPART_CRYPTO_UTIL
00029 
00030 #ifdef __cplusplus
00031 extern "C" {
00032 #endif
00033 
00048     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00049     rampart_crypto_sha1(
00050         const axutil_env_t *env,
00051         const axis2_char_t *nonce,
00052         const axis2_char_t *created,
00053         const axis2_char_t *password);
00054 
00055 
00056     /* @} */
00057 #ifdef __cplusplus
00058 }
00059 #endif
00060 
00061 #endif    /* !RAMPART_CRYPTO_UTIL */

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__oxs.html0000644000076500007650000001320411202454456021675 0ustar shankarshankar Rampart/C: OMXMLSecurity
Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/rampart__sec__processed__result_8h-source.html0000644000076500007650000001554611202454455030022 0ustar shankarshankar Rampart/C: rampart_sec_processed_result.h Source File

rampart_sec_processed_result.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #include <axutil_utils_defines.h>
00019 #include <axis2_defines.h>
00020 #include <axutil_env.h>
00021 #include <axis2_msg_ctx.h>
00022 
00027 #ifndef RAMPART_SEC_PROCESSED_RESULT
00028 #define RAMPART_SEC_PROCESSED_RESULT
00029 
00030 #ifdef __cplusplus
00031 extern "C" {
00032 #endif
00033 
00047     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00048     rampart_set_security_processed_result(
00049         const axutil_env_t *env,
00050         axis2_msg_ctx_t *msg_ctx,
00051         axis2_char_t *key,
00052         void *value);
00053 
00062     AXIS2_EXTERN void *AXIS2_CALL
00063     rampart_get_security_processed_result(
00064         const axutil_env_t *env,
00065         axis2_msg_ctx_t *msg_ctx,
00066         axis2_char_t *key);
00067 
00074     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00075     rampart_set_security_processed_results_property(
00076         const axutil_env_t *env,
00077         axis2_msg_ctx_t *msg_ctx);
00078 
00085     AXIS2_EXTERN axutil_hash_t* AXIS2_CALL
00086     rampart_get_all_security_processed_results(
00087         const axutil_env_t *env,
00088         axis2_msg_ctx_t *msg_ctx);
00089 
00096     AXIS2_EXTERN void AXIS2_CALL
00097     rampart_print_security_processed_results_set(
00098         const axutil_env_t *env,
00099         axis2_msg_ctx_t *msg_ctx);
00100 
00101 
00102     /* @} */
00103 #ifdef __cplusplus
00104 }
00105 #endif
00106 
00107 #endif    /* !RAMPART_SEC_PROCESSED_RESULT */

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/secconv__security__context__token_8h-source.html0000644000076500007650000003361211202454455030402 0ustar shankarshankar Rampart/C: secconv_security_context_token.h Source File

secconv_security_context_token.h

Go to the documentation of this file.
00001 
00002 /*
00003  * Licensed to the Apache Software Foundation (ASF) under one or more
00004  * contributor license agreements.  See the NOTICE file distributed with
00005  * this work for additional information regarding copyright ownership.
00006  * The ASF licenses this file to You under the Apache License, Version 2.0
00007  * (the "License"); you may not use this file except in compliance with
00008  * the License.  You may obtain a copy of the License at
00009  *
00010  *      http://www.apache.org/licenses/LICENSE-2.0
00011  *
00012  * Unless required by applicable law or agreed to in writing, software
00013  * distributed under the License is distributed on an "AS IS" BASIS,
00014  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00015  * See the License for the specific language governing permissions and
00016  * limitations under the License.
00017  */
00018 
00019 #ifndef SECCONV_SECURITY_CONTEXT_TOKEN_H
00020 #define SECCONV_SECURITY_CONTEXT_TOKEN_H
00021 
00027 #include <stdio.h>
00028 #include <stdlib.h>
00029 #include <axutil_utils.h>
00030 #include <axutil_string.h>
00031 #include <oxs_buffer.h>
00032 
00033 #ifdef __cplusplus
00034 extern "C"
00035 {
00036 #endif
00037 
00038     typedef struct security_context_token_t security_context_token_t;
00039 
00045     AXIS2_EXTERN security_context_token_t *AXIS2_CALL
00046     security_context_token_create(
00047         const axutil_env_t * env);
00048 
00055     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00056     security_context_token_free(
00057         security_context_token_t *sct, 
00058         const axutil_env_t *env);
00059 
00066     AXIS2_EXTERN oxs_buffer_t *AXIS2_CALL
00067     security_context_token_get_secret(
00068         security_context_token_t * sct, 
00069         const axutil_env_t * env);
00070 
00078     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00079     security_context_token_get_global_identifier(
00080         security_context_token_t * sct, 
00081         const axutil_env_t * env);
00082     
00090     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00091     security_context_token_get_local_identifier(
00092         security_context_token_t * sct, 
00093         const axutil_env_t * env);
00094 
00103     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00104     security_context_token_set_secret(
00105         security_context_token_t * sct, 
00106         const axutil_env_t * env,
00107         oxs_buffer_t *buffer);
00108 
00117     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00118     security_context_token_set_global_identifier(
00119         security_context_token_t * sct, 
00120         const axutil_env_t * env,
00121         axis2_char_t *global_id);
00122     
00131     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00132     security_context_token_set_local_identifier(
00133         security_context_token_t * sct, 
00134         const axutil_env_t * env,
00135         axis2_char_t *local_id);
00136 
00144     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00145     security_context_token_set_is_sc10(
00146         security_context_token_t *sct, 
00147         const axutil_env_t * env,
00148         axis2_bool_t is_sc10);
00149 
00157     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00158     security_context_token_get_requested_proof_token(
00159         security_context_token_t *sct, 
00160         const axutil_env_t * env);
00161 
00169     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00170     security_context_token_get_attached_reference(
00171         security_context_token_t *sct, 
00172         const axutil_env_t * env);
00173 
00181     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00182     security_context_token_get_unattached_reference(
00183         security_context_token_t *sct, 
00184         const axutil_env_t * env);
00185 
00193     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00194     security_context_token_get_token(
00195         security_context_token_t *sct, 
00196         const axutil_env_t * env);
00197 
00206     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00207     security_context_token_set_requested_proof_token(
00208         security_context_token_t *sct, 
00209         const axutil_env_t * env,
00210         axiom_node_t *node);
00211 
00219     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00220     security_context_token_set_attached_reference(
00221         security_context_token_t *sct, 
00222         const axutil_env_t * env,
00223         axiom_node_t *node);
00224 
00232     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00233     security_context_token_set_unattached_reference(
00234         security_context_token_t *sct, 
00235         const axutil_env_t * env,
00236         axiom_node_t *node);
00237 
00245     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00246     security_context_token_set_token(
00247         security_context_token_t *sct, 
00248         const axutil_env_t * env,
00249         axiom_node_t *node);
00250 
00257     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00258     security_context_token_increment_ref(
00259         security_context_token_t *sct,
00260         const axutil_env_t * env);
00261 
00268     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00269     security_context_token_serialize(
00270         security_context_token_t *sct, 
00271         const axutil_env_t *env);
00272 
00280     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00281     security_context_token_deserialize(
00282         security_context_token_t *sct, 
00283         const axutil_env_t *env, 
00284         axis2_char_t *serialised_node);
00285    
00286 #ifdef __cplusplus
00287 }
00288 #endif
00289 #endif                          /*SECCONV_SECURITY_CONTEXT_TOKEN_H */

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/oxs__x509__cert_8h.html0000644000076500007650000002420611202454455023024 0ustar shankarshankar Rampart/C: oxs_x509_cert.h File Reference

oxs_x509_cert.h File Reference

the OMXMLSecurity representation of an X509 certificate More...

#include <axis2_defines.h>
#include <axutil_env.h>
#include <axiom_node.h>
#include <openssl_pkey.h>

Go to the source code of this file.

Typedefs

typedef struct oxs_x509_cert_t oxs_x509_cert_t

Functions

AXIS2_EXTERN oxs_x509_cert_t * oxs_x509_cert_create (const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_x509_cert_free (oxs_x509_cert_t *x509_cert, const axutil_env_t *env)
AXIS2_EXTERN int oxs_x509_cert_get_serial_number (oxs_x509_cert_t *x509_cert, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_x509_cert_get_subject (oxs_x509_cert_t *x509_cert, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_x509_cert_get_issuer (oxs_x509_cert_t *x509_cert, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_x509_cert_get_key_identifier (oxs_x509_cert_t *x509_cert, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_x509_cert_get_fingerprint (oxs_x509_cert_t *x509_cert, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_x509_cert_get_date (oxs_x509_cert_t *x509_cert, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_x509_cert_get_hash (oxs_x509_cert_t *x509_cert, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_x509_cert_get_data (oxs_x509_cert_t *x509_cert, const axutil_env_t *env)
AXIS2_EXTERN openssl_pkey_toxs_x509_cert_get_public_key (oxs_x509_cert_t *x509_cert, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_serial_number (oxs_x509_cert_t *x509_cert, const axutil_env_t *env, int value)
AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_issuer (oxs_x509_cert_t *x509_cert, const axutil_env_t *env, axis2_char_t *value)
AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_key_identifier (oxs_x509_cert_t *x509_cert, const axutil_env_t *env, axis2_char_t *value)
AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_subject (oxs_x509_cert_t *x509_cert, const axutil_env_t *env, axis2_char_t *value)
AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_fingerprint (oxs_x509_cert_t *x509_cert, const axutil_env_t *env, axis2_char_t *value)
AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_date (oxs_x509_cert_t *x509_cert, const axutil_env_t *env, axis2_char_t *value)
AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_hash (oxs_x509_cert_t *x509_cert, const axutil_env_t *env, axis2_char_t *value)
AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_data (oxs_x509_cert_t *x509_cert, const axutil_env_t *env, axis2_char_t *value)
AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_public_key (oxs_x509_cert_t *x509_cert, const axutil_env_t *env, openssl_pkey_t *public_key)
AXIS2_EXTERN axis2_status_t oxs_x509_cert_copy_to (oxs_x509_cert_t *x509_cert, const axutil_env_t *env, oxs_x509_cert_t *to)
AXIS2_EXTERN axis2_char_t * oxs_x509_cert_get_common_name (oxs_x509_cert_t *x509_cert, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_x509_cert_set_common_name (oxs_x509_cert_t *x509_cert, const axutil_env_t *env, axis2_char_t *common_name)


Detailed Description

the OMXMLSecurity representation of an X509 certificate


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__rampart__mod.html0000644000076500007650000001110711202454457023531 0ustar shankarshankar Rampart/C: Rampart Module

Rampart Module


Functions

AXIS2_EXTERN axis2_handler_t * rampart_in_handler_create (const axutil_env_t *env, axutil_string_t *name)
AXIS2_EXTERN axis2_handler_t * rampart_out_handler_create (const axutil_env_t *env, axutil_string_t *name)

Function Documentation

AXIS2_EXTERN axis2_handler_t* rampart_in_handler_create ( const axutil_env_t *  env,
axutil_string_t *  name 
)

Creates In handler

Parameters:
env pointer to environment struct
name handler name
Returns:
Created In handler

AXIS2_EXTERN axis2_handler_t* rampart_out_handler_create ( const axutil_env_t *  env,
axutil_string_t *  name 
)

Creates Out handler

Parameters:
env pointer to environment struct
name handler name
Returns:
Created Out handler


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/trust__sts__client_8h-source.html0000644000076500007650000003175511202454455025326 0ustar shankarshankar Rampart/C: trust_sts_client.h Source File

trust_sts_client.h

Go to the documentation of this file.
00001 
00002 /*
00003 * Licensed to the Apache Software Foundation (ASF) under one or more
00004 * contributor license agreements.  See the NOTICE file distributed with
00005 * this work for additional information regarding copyright ownership.
00006 * The ASF licenses this file to You under the Apache License, Version 2.0
00007 * (the "License"); you may not use this file except in compliance with
00008 * the License.  You may obtain a copy of the License at
00009 *
00010 *      http://www.apache.org/licenses/LICENSE-2.0
00011 *
00012 * Unless required by applicable law or agreed to in writing, software
00013 * distributed under the License is distributed on an "AS IS" BASIS,
00014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00015 * See the License for the specific language governing permissions and
00016 * limitations under the License.
00017 */
00018 
00019 #ifndef TRUST_STS_CLIENT
00020 #define TRUST_STS_CLIENT
00021 
00027 #include <stdio.h>
00028 #include <stdlib.h>
00029 #include <axiom.h>
00030 #include <axutil_utils.h>
00031 #include <axis2_client.h>
00032 #include <rp_includes.h>
00033 #include <rp_secpolicy.h>
00034 #include <neethi_policy.h>
00035 #include <neethi_util.h>
00036 #include <rampart_util.h>
00037 #include <trust_constants.h>
00038 #include <trust_util.h>
00039 #include <trust_policy_util.h>
00040 #include <trust_token.h>
00041 #include <rampart_config.h>
00042 #include <trust_rst.h>
00043 #include <trust_rstr.h>
00044 #include <trust_context.h>
00045 
00046 #ifdef __cplusplus
00047 extern "C"
00048 {
00049 #endif
00050 
00051     typedef struct trust_sts_client trust_sts_client_t;
00052 
00053     AXIS2_EXTERN trust_sts_client_t *AXIS2_CALL
00054     trust_sts_client_create(
00055         const axutil_env_t * env);
00056 
00057     AXIS2_EXTERN void AXIS2_CALL
00058     trust_sts_client_free(
00059         trust_sts_client_t * sts_client,
00060         const axutil_env_t * env);
00061 
00062     
00063     /*Send RST to the specified STS/IP. RST Node that is built from RST_Context should be passed*/
00064     AXIS2_EXTERN void AXIS2_CALL
00065     trust_sts_client_request_security_token(
00066         trust_sts_client_t * sts_client,
00067         const axutil_env_t * env,
00068         trust_context_t *trust_context);
00069 
00070 
00071     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00072     trust_sts_client_process_policies(
00073         trust_sts_client_t * sts_client,
00074         const axutil_env_t * env,
00075         neethi_policy_t * issuer_policy,
00076         neethi_policy_t * service_policy);
00077 
00078 
00079     AXIS2_EXTERN axis2_svc_client_t *AXIS2_CALL
00080     trust_sts_client_get_svc_client(
00081         trust_sts_client_t * sts_client,
00082         const axutil_env_t * env,
00083         axis2_char_t * action,
00084         axis2_char_t * address_version, 
00085         axis2_bool_t is_soap11);
00086 
00087     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00088     trust_sts_client_set_issuer_address(
00089         trust_sts_client_t * sts_client,
00090         const axutil_env_t * env,
00091         axis2_char_t * address);
00092 
00093     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00094     trust_sts_client_set_home_dir(
00095         trust_sts_client_t * sts_client,
00096         const axutil_env_t * env,
00097         axis2_char_t * directory);
00098 
00099     AXIS2_EXTERN oxs_buffer_t* AXIS2_CALL
00100     trust_sts_client_request_security_token_using_policy(
00101         trust_sts_client_t * sts_client,
00102         const axutil_env_t * env,
00103         trust_context_t *trust_context,
00104         neethi_policy_t *issuer_policy,
00105         axis2_char_t *address_version,
00106         axis2_bool_t is_soap11,
00107         rampart_context_t *rampart_context);
00108 
00109         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00110         trust_sts_client_set_issuer_policy_location(
00111         trust_sts_client_t * sts_client,
00112         const axutil_env_t * env,
00113         axis2_char_t * file_path);
00114 
00115         AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00116         trust_sts_client_get_issuer_policy_location(
00117         trust_sts_client_t * sts_client,
00118             const axutil_env_t * env);
00119 
00120         AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00121         trust_sts_client_get_service_policy_location(
00122             trust_sts_client_t * sts_client,
00123             const axutil_env_t * env);
00124 
00125         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00126         trust_sts_client_set_service_policy_location(
00127         trust_sts_client_t * sts_client,
00128         const axutil_env_t * env,
00129             axis2_char_t * file_path);
00130 
00131                 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00132         trust_sts_client_set_auth_info(
00133                 trust_sts_client_t * sts_client,
00134                 const axutil_env_t * env,
00135                 axis2_char_t *username,
00136                 axis2_char_t *password,
00137                 axis2_char_t * auth_type);
00138 
00139 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00140         trust_sts_client_set_issued_token(
00141                 trust_sts_client_t * sts_client,
00142                 const axutil_env_t * env,
00143                 rampart_saml_token_t *saml_token);
00144 
00145 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00146         trust_sts_client_set_issued_token_func(
00147                 trust_sts_client_t * sts_client,
00148                 const axutil_env_t * env,
00149                         issued_token_callback_func issue_token_func);
00150 
00151 
00152 
00153 #ifdef __cplusplus
00154 }
00155 #endif
00156 #endif                          /*TRUST_STS_CLIENT_H */

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/oxs__transforms__factory_8h.html0000644000076500007650000000503711202454455025230 0ustar shankarshankar Rampart/C: oxs_transforms_factory.h File Reference

oxs_transforms_factory.h File Reference

Produces transforms for OMXMLSecurity. More...

#include <axis2_defines.h>
#include <oxs_ctx.h>
#include <axutil_env.h>
#include <axiom_node.h>
#include <axiom_element.h>
#include <axutil_qname.h>
#include <oxs_transform.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN oxs_transform_t * oxs_transforms_factory_produce_transform (const axutil_env_t *env, axis2_char_t *id)


Detailed Description

Produces transforms for OMXMLSecurity.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/oxs__axis2__utils_8h-source.html0000644000076500007650000001155011202454454025043 0ustar shankarshankar Rampart/C: oxs_axis2_utils.h Source File

oxs_axis2_utils.h

Go to the documentation of this file.
00001 /*
00002  *   Copyright 2003-2004 The Apache Software Foundation.
00003  *
00004  *   Licensed under the Apache License, Version 2.0 (the "License");
00005  *   you may not use this file except in compliance with the License.
00006  *   You may obtain a copy of the License at
00007  *
00008  *       http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  *   Unless required by applicable law or agreed to in writing, software
00011  *   distributed under the License is distributed on an "AS IS" BASIS,
00012  *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  *   See the License for the specific language governing permissions and
00014  *   limitations under the License.
00015  */
00016 
00017 #include <axis2_util.h>
00018 #include <oxs_buffer.h>
00019 
00024 #ifndef OXS_AXIS_UTILS
00025 #define OXS_AXIS_UTILS
00026 
00027 #ifdef __cplusplus
00028 extern "C" {
00029 #endif
00030 
00035 #if 0
00036     /*Decoded buffer will be returned*/
00037     AXIS2_EXTERN oxs_buffer_ptr AXIS2_CALL  oxs_base64_decode(axutil_env_t *env,
00038             oxs_buffer_ptr coded_buf);
00039 
00040     /*Encoded input buffer will be returned*/
00041     AXIS2_EXTERN oxs_buffer_ptr AXIS2_CALL  oxs_base64_encode(axutil_env_t *env,
00042             oxs_buffer_ptr plain_buf);
00043 #endif
00044 
00046 #ifdef __cplusplus
00047 }
00048 #endif
00049 
00050 #endif    /* OXS_AXIS_UTILS */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/globals_func_0x72.html0000644000076500007650000010032511202454457022731 0ustar shankarshankar Rampart/C: Class Members
 

- r -


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/rampart__token__processor_8h-source.html0000644000076500007650000001627511202454455026663 0ustar shankarshankar Rampart/C: rampart_token_processor.h Source File

rampart_token_processor.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #include <axis2_util.h>
00019 #include <axis2_defines.h>
00020 #include <axutil_utils_defines.h>
00021 #include <axutil_env.h>
00022 #include <axiom_node.h>
00023 #include <oxs_x509_cert.h>
00024 
00036 #ifndef RAMPART_TOKEN_PROCESSOR_H
00037 #define RAMPART_TOKEN_PROCESSOR_H
00038 
00039 #ifdef __cplusplus
00040 extern "C" {
00041 #endif
00042     
00052     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00053     rampart_token_process_security_token_reference(
00054         const axutil_env_t *env,
00055         axiom_node_t *st_ref_node,
00056         axiom_node_t *scope_node,
00057         oxs_x509_cert_t *cert);
00058 
00067     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00068     rampart_token_process_direct_ref(
00069         const axutil_env_t *env,
00070         axiom_node_t *ref_node,
00071         axiom_node_t *scope_node,
00072         oxs_x509_cert_t *cert);
00073 
00081     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00082     rampart_token_process_embedded(
00083         const axutil_env_t *env,
00084         axiom_node_t *embed_node,
00085         oxs_x509_cert_t *cert);
00086 
00094     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00095     rampart_token_process_key_identifier(
00096         const axutil_env_t *env,
00097         axiom_node_t *ki_node,
00098         oxs_x509_cert_t *cert);
00099 
00107     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00108     rampart_token_process_x509_data(
00109         const axutil_env_t *env,
00110         axiom_node_t *x509_data_node,
00111         oxs_x509_cert_t *cert);
00112 
00113     /* @} */
00114 #ifdef __cplusplus
00115 }
00116 #endif
00117 
00118 #endif    /* !RAMPART_TOKEN_PROCESSOR_H */
00119 
00120 

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/openssl__pkcs12_8h-source.html0000644000076500007650000001525011202454454024414 0ustar shankarshankar Rampart/C: openssl_pkcs12.h Source File

openssl_pkcs12.h

Go to the documentation of this file.
00001 /*
00002  *   Copyright 2003-2004 The Apache Software Foundation.
00003  *
00004  *   Licensed under the Apache License, Version 2.0 (the "License");
00005  *   you may not use this file except in compliance with the License.
00006  *   You may obtain a copy of the License at
00007  *
00008  *       http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  *   Unless required by applicable law or agreed to in writing, software
00011  *   distributed under the License is distributed on an "AS IS" BASIS,
00012  *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  *   See the License for the specific language governing permissions and
00014  *   limitations under the License.
00015  */
00016 
00017 #include <openssl/rand.h>
00018 #include <openssl/evp.h>
00019 #include <openssl/pem.h>
00020 #include <openssl/bio.h>
00021 #include <openssl/rand.h>
00022 #include <openssl_constants.h>
00023 #include <openssl_pkey.h>
00024 #include <axis2_util.h>
00025 #include <openssl/pkcs12.h>
00026 
00031 #ifndef OPENSSL_PKCS12_H
00032 #define OPENSSL_PKCS12_H
00033 
00034 #ifdef __cplusplus
00035 extern "C" {
00036 #endif
00037 
00043     /*Load*/
00044     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00045     openssl_pkcs12_load(const axutil_env_t *env,
00046                         axis2_char_t *filename,
00047                         PKCS12 **p12);
00048     
00049     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00050     openssl_pkcs12_load_from_buffer(const axutil_env_t *env,
00051                         axis2_char_t *buffer,
00052                         PKCS12 **p12,
00053                         int len);
00054 
00055     /*Parse*/
00056     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00057     openssl_pkcs12_parse(const axutil_env_t *env,
00058                          axis2_char_t *password ,
00059                          PKCS12 *p12,
00060                          EVP_PKEY **prvkey,
00061                          X509 **cert,
00062                          STACK_OF(X509) **ca);
00063 
00064     /*Free*/
00065     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00066     openssl_pkcs12_free(const axutil_env_t *env,
00067                         PKCS12 *p12);
00068 
00069 
00071 #ifdef __cplusplus
00072 }
00073 #endif
00074 
00075 #endif    /* OPENSSL_PKCS12_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/oxs__key_8h-source.html0000644000076500007650000004347611202454454023242 0ustar shankarshankar Rampart/C: oxs_key.h Source File

oxs_key.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef OXS_KEY_H
00019 #define OXS_KEY_H
00020 
00021 
00032 #include <axis2_defines.h>
00033 #include <oxs_constants.h>
00034 #include <oxs_buffer.h>
00035 #include <axutil_env.h>
00036 #include <rp_algorithmsuite.h>
00037 
00038 #ifdef __cplusplus
00039 extern "C"
00040 {
00041 #endif
00042 
00043     /*Key usage is not specified yet*/
00044 #define OXS_KEY_USAGE_NONE              0
00045     /*Key is a session key */
00046 #define OXS_KEY_USAGE_SESSION           1
00047     /*Key is a signature session key*/
00048 #define OXS_KEY_USAGE_SIGNATURE_SESSION 2
00049     /*Key is a derived key */
00050 #define OXS_KEY_USAGE_DERIVED           3 
00051 
00052 #define OXS_KEY_DEFAULT_SIZE            64
00053 
00055     typedef struct oxs_key_t oxs_key_t;
00056 
00064     AXIS2_EXTERN unsigned char *AXIS2_CALL
00065     oxs_key_get_data(
00066         const oxs_key_t *key,
00067         const axutil_env_t *env);
00074     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00075     oxs_key_get_name(
00076         const oxs_key_t *key,
00077         const axutil_env_t *env);
00084     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00085     oxs_key_get_nonce(
00086         const oxs_key_t *key,
00087         const axutil_env_t *env);
00088 
00095     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00096     oxs_key_get_label(
00097         const oxs_key_t *key,
00098         const axutil_env_t *env);
00099 
00106     AXIS2_EXTERN int AXIS2_CALL
00107     oxs_key_get_size(
00108         const oxs_key_t *key,
00109         const axutil_env_t *env);
00116     AXIS2_EXTERN int AXIS2_CALL
00117     oxs_key_get_usage(
00118         const oxs_key_t *key,
00119         const axutil_env_t *env);
00120 
00127     AXIS2_EXTERN int AXIS2_CALL
00128     oxs_key_get_offset(
00129         const oxs_key_t *key,
00130         const axutil_env_t *env);
00131 
00138     AXIS2_EXTERN int AXIS2_CALL
00139     oxs_key_get_length(
00140         const oxs_key_t *key,
00141         const axutil_env_t *env);
00142 
00150     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00151     oxs_key_set_name(
00152         oxs_key_t *key,
00153         const axutil_env_t *env,
00154         axis2_char_t *name);
00155 
00156 
00164     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00165     oxs_key_set_usage(
00166         oxs_key_t *key,
00167         const axutil_env_t *env,
00168         int usage);
00169 
00170     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00171     oxs_key_set_nonce(
00172         oxs_key_t *key,
00173         const axutil_env_t *env,
00174         axis2_char_t *nonce); 
00175 
00176     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00177     oxs_key_set_label(
00178         oxs_key_t *key,
00179         const axutil_env_t *env,
00180         axis2_char_t *label); 
00181 
00182     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00183     oxs_key_set_offset(
00184         oxs_key_t *key,
00185         const axutil_env_t *env,
00186         int offset);
00187 
00188     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00189     oxs_key_set_length(
00190         oxs_key_t *key,
00191         const axutil_env_t *env,
00192         int length);
00199     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00200     oxs_key_free(
00201         oxs_key_t *key,
00202         const axutil_env_t *env
00203     );
00204 
00205     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00206     oxs_key_populate_with_buf(oxs_key_t *key,
00207                               const axutil_env_t *env,
00208                               oxs_buffer_t *buffer,
00209                               axis2_char_t *name,
00210                               int usage);
00211 
00222     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00223     oxs_key_populate(
00224         oxs_key_t *key,
00225         const axutil_env_t *env,
00226         unsigned char *data,
00227         axis2_char_t *name,
00228         int size,
00229         int usage);
00230 
00237     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00238     oxs_key_read_from_file(
00239         oxs_key_t *key,
00240         const axutil_env_t *env,
00241         axis2_char_t *file_name);
00242 
00249     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00250     oxs_key_for_algo(oxs_key_t *key,
00251                      const axutil_env_t *env,
00252                      rp_algorithmsuite_t *key_algo);
00253 
00254 
00255     AXIS2_EXTERN oxs_buffer_t *AXIS2_CALL
00256     oxs_key_get_buffer(const oxs_key_t *key,
00257                        const axutil_env_t *env);
00258 
00259     AXIS2_EXTERN oxs_key_t *AXIS2_CALL
00260     oxs_key_dup(oxs_key_t *key,
00261                 const axutil_env_t *env);
00262 
00263     AXIS2_EXTERN oxs_key_t *AXIS2_CALL
00264     oxs_key_create(const axutil_env_t *env);
00265 
00266     /* once the key_sha is given, ownership is assumed */
00267     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00268     oxs_key_set_key_sha(
00269         oxs_key_t *key,
00270         const axutil_env_t *env,
00271         axis2_char_t *key_sha);
00272     
00273     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00274     oxs_key_get_key_sha(
00275         const oxs_key_t *key,
00276         const axutil_env_t *env);
00277 
00278 
00279 #ifdef __cplusplus
00280 }
00281 #endif
00282 
00283 #endif                          /* OXS_KEY_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/rampart__replay__detector_8h-source.html0000644000076500007650000001701411202454455026621 0ustar shankarshankar Rampart/C: rampart_replay_detector.h Source File

rampart_replay_detector.h

Go to the documentation of this file.
00001 /*
00002 * Licensed to the Apache Software Foundation (ASF) under one or more
00003 * contributor license agreements.  See the NOTICE file distributed with
00004 * this work for additional information regarding copyright ownership.
00005 * The ASF licenses this file to You under the Apache License, Version 2.0
00006 * (the "License"); you may not use this file except in compliance with
00007 * the License.  You may obtain a copy of the License at
00008 *
00009 *      http://www.apache.org/licenses/LICENSE-2.0
00010 *
00011 * Unless required by applicable law or agreed to in writing, software
00012 * distributed under the License is distributed on an "AS IS" BASIS,
00013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014 * See the License for the specific language governing permissions and
00015 * limitations under the License.
00016 */
00017 
00018 #ifndef RAMPART_REPLAY_DETECTOR_H
00019 #define RAMPART_REPLAY_DETECTOR_H
00020 
00032 #include <axis2_defines.h>
00033 #include <axutil_env.h>
00034 #include <axis2_msg_ctx.h>
00035 #include <rampart_context.h>
00036 
00037 #ifdef __cplusplus
00038 extern "C"
00039 {
00040 #endif
00041 
00042     typedef struct rampart_replay_detector_ops rampart_replay_detector_ops_t;
00043     typedef struct rampart_replay_detector rampart_replay_detector_t;
00044 
00045     struct rampart_replay_detector_ops
00046     {
00056         axis2_status_t (AXIS2_CALL*
00057         is_replayed)(
00058             rampart_replay_detector_t *rrd,
00059             const axutil_env_t* env,
00060             axis2_msg_ctx_t *msg_ctx,
00061             rampart_context_t *rampart_context);
00062 
00069         axis2_status_t (AXIS2_CALL*
00070         free)(
00071             rampart_replay_detector_t *rrd,
00072             const axutil_env_t* env);
00073     };
00074 
00075     struct rampart_replay_detector
00076     {
00077         rampart_replay_detector_ops_t *ops;
00078                 axutil_param_t *param;
00079     };
00080 
00081     
00092     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00093     rampart_replay_detector_default(
00094         const axutil_env_t *env,
00095         axis2_msg_ctx_t* msg_ctx,
00096         rampart_context_t *rampart_context,
00097         void *user_params);
00098 
00099     /*************************** Function macros **********************************/
00100 #define RAMPART_REPLAY_DETECTOR_IS_REPLAYED(replay_detector, env, msg_ctx, rampart_context) \
00101       ((replay_detector)->ops->is_replayed(replay_detector, env, msg_ctx, rampart_context))
00102 
00103 #define RAMPART_REPLAY_DETECTOR_FREE(replay_detector, env) \
00104         ((replay_detector)->ops->free(replay_detector, env))
00105 
00107 #ifdef __cplusplus
00108 }
00109 #endif
00110 
00111 #endif /* RAMPART_REPLAY_DETECTOR_H */
00112 

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/rampart__sec__processed__result_8h.html0000644000076500007650000002566011202454456026523 0ustar shankarshankar Rampart/C: rampart_sec_processed_result.h File Reference

rampart_sec_processed_result.h File Reference

The module to keep the results after processing the message. More...

#include <axutil_utils_defines.h>
#include <axis2_defines.h>
#include <axutil_env.h>
#include <axis2_msg_ctx.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN axis2_status_t rampart_set_security_processed_result (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axis2_char_t *key, void *value)
AXIS2_EXTERN void * rampart_get_security_processed_result (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axis2_char_t *key)
AXIS2_EXTERN axis2_status_t rampart_set_security_processed_results_property (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN axutil_hash_t * rampart_get_all_security_processed_results (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN void rampart_print_security_processed_results_set (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx)


Detailed Description

The module to keep the results after processing the message.


Function Documentation

AXIS2_EXTERN axutil_hash_t* rampart_get_all_security_processed_results ( const axutil_env_t *  env,
axis2_msg_ctx_t *  msg_ctx 
)

Get the complete set of security processed results the environment the message context in which data are extracted

Returns:
complete set of security processed results.

AXIS2_EXTERN void* rampart_get_security_processed_result ( const axutil_env_t *  env,
axis2_msg_ctx_t *  msg_ctx,
axis2_char_t *  key 
)

Get a security processed result from a message context. A service may use this method to retirieve a particular result by the key the environment the message context in which data are extracted as specified in rampart_constants section SPR

Returns:
value of the security processed result corresponding to

AXIS2_EXTERN void rampart_print_security_processed_results_set ( const axutil_env_t *  env,
axis2_msg_ctx_t *  msg_ctx 
)

Prints all ke/val pairs in the security processed results. For debugging purposes the environment the message context in which data are extracted

Returns:
void

AXIS2_EXTERN axis2_status_t rampart_set_security_processed_result ( const axutil_env_t *  env,
axis2_msg_ctx_t *  msg_ctx,
axis2_char_t *  key,
void *  value 
)

Set a security processed result to the message context

Parameters:
env Environment structure
msg_ctx message context sttucture
key key of the security processed result
value value of the security processed result
Returns:
status of the operation

AXIS2_EXTERN axis2_status_t rampart_set_security_processed_results_property ( const axutil_env_t *  env,
axis2_msg_ctx_t *  msg_ctx 
)

Set a security processed result property to the message context the environment the message context in which data are stored/extracted

Returns:
status of the operation


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__oxs__utility.html0000644000076500007650000002026511202454456023624 0ustar shankarshankar Rampart/C: Utility

Utility
[OMXMLSecurity]


Functions

AXIS2_EXTERN axis2_char_t * oxs_util_generate_nonce (const axutil_env_t *env, int length)
AXIS2_EXTERN axis2_char_t * oxs_util_generate_id (const axutil_env_t *env, axis2_char_t *prefix)
AXIS2_EXTERN oxs_key_mgr_format_t oxs_util_get_format_by_file_extension (const axutil_env_t *env, axis2_char_t *file_name)
AXIS2_EXTERN axis2_char_t * oxs_util_get_newline_removed_string (const axutil_env_t *env, axis2_char_t *input)

Function Documentation

AXIS2_EXTERN axis2_char_t* oxs_util_generate_id ( const axutil_env_t *  env,
axis2_char_t *  prefix 
)

Generates an id for an element. Specially used in xml encryption and signature references. Caller must free memory

Parameters:
env pointer to environment struct
prefix the prefix of the id. For ex: EncDataID-1u343yrcarwqe
Returns:
the generated id

AXIS2_EXTERN axis2_char_t* oxs_util_generate_nonce ( const axutil_env_t *  env,
int  length 
)

Generate a nonce or a random text for a given length

Parameters:
env pointer to environment struct
length the length of the nonce
Returns:
the generated nonce

AXIS2_EXTERN oxs_key_mgr_format_t oxs_util_get_format_by_file_extension ( const axutil_env_t *  env,
axis2_char_t *  file_name 
)

Given the filename returns the format of the file. These formats are defined in asym_ctx.h

Parameters:
env pointer to environment struct
file_name the file name

AXIS2_EXTERN axis2_char_t* oxs_util_get_newline_removed_string ( const axutil_env_t *  env,
axis2_char_t *  input 
)

Given string and returns new lined removed string Caller MUST free memory

Parameters:
env pointer to environment struct
input a pointer to the string which has
s. return the newline removed buffer.


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/rampart__context_8h.html0000644000076500007650000016642211202454456023474 0ustar shankarshankar Rampart/C: rampart_context.h File Reference

rampart_context.h File Reference

The Rampart Context, in which configurations are stored. More...

#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 <axis2_key_type.h>
#include <axis2_msg_ctx.h>
#include <oxs_key.h>
#include <axutil_array_list.h>
#include <rampart_saml_token.h>
#include <rampart_issued_token.h>
#include <oxs_key_mgr.h>

Go to the source code of this file.

Typedefs

typedef struct rampart_context_t rampart_context_t
typedef axis2_char_t *(* password_callback_fn )(const axutil_env_t *env, const axis2_char_t *username, void *user_params)
typedef axis2_status_t(* rampart_is_replayed_fn )(const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, void *user_params)
typedef
rampart_authn_provider_status_t(* 
auth_password_func )(const axutil_env_t *env, const axis2_char_t *username, const axis2_char_t *password, void *ctx)
typedef
rampart_authn_provider_status_t(* 
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, void *ctx)
typedef axis2_status_t(* store_security_context_token_fn )(const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axis2_char_t *sct_global_id, axis2_char_t *sct_local_id, void *sct, void *user_params)
typedef void *(* obtain_security_context_token_fn )(const axutil_env_t *env, axis2_bool_t is_encryption, axis2_msg_ctx_t *msg_ctx, axis2_char_t *sct_id, int sct_id_type, void *user_params)
typedef axis2_status_t(* delete_security_context_token_fn )(const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axis2_char_t *sct_id, int sct_id_type, void *user_params)
typedef axis2_status_t(* validate_security_context_token_fn )(const axutil_env_t *env, axiom_node_t *sct_node, axis2_msg_ctx_t *msg_ctx, void *user_params)

Functions

AXIS2_EXTERN rampart_context_t * rampart_context_create (const axutil_env_t *env)
AXIS2_EXTERN void rampart_context_free (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_policy_node (rampart_context_t *rampart_context, const axutil_env_t *env, axiom_node_t *policy_node)
AXIS2_EXTERN axis2_status_t rampart_context_set_prv_key (rampart_context_t *rampart_context, const axutil_env_t *env, void *prv_key)
AXIS2_EXTERN axis2_status_t 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 rampart_context_set_certificate (rampart_context_t *rampart_context, const axutil_env_t *env, void *certificate)
AXIS2_EXTERN axis2_status_t 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 rampart_context_set_receiver_certificate (rampart_context_t *rampart_context, const axutil_env_t *env, void *receiver_certificate)
AXIS2_EXTERN axis2_status_t 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 rampart_context_set_user (rampart_context_t *rampart_context, const axutil_env_t *env, axis2_char_t *user)
AXIS2_EXTERN axis2_status_t rampart_context_set_password (rampart_context_t *rampart_context, const axutil_env_t *env, axis2_char_t *password)
AXIS2_EXTERN axis2_status_t 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 rampart_context_set_pwcb_function (rampart_context_t *rampart_context, const axutil_env_t *env, password_callback_fn pwcb_function, void *user_params)
AXIS2_EXTERN axis2_status_t rampart_context_set_replay_detect_function (rampart_context_t *rampart_context, const axutil_env_t *env, rampart_is_replayed_fn is_replayed_function, void *user_params)
AXIS2_EXTERN void * rampart_context_get_rd_user_params (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t 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 rampart_context_set_ttl (rampart_context_t *rampart_context, const axutil_env_t *env, int ttl)
AXIS2_EXTERN axis2_status_t rampart_context_set_need_millisecond_precision (rampart_context_t *rampart_context, const axutil_env_t *env, axis2_bool_t need_millisecond_precision)
AXIS2_EXTERN axis2_status_t rampart_context_set_clock_skew_buffer (rampart_context_t *rampart_context, const axutil_env_t *env, int skew_buffer)
AXIS2_EXTERN axis2_status_t 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 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 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 rampart_context_add_key (rampart_context_t *rampart_context, const axutil_env_t *env, oxs_key_t *key)
AXIS2_EXTERN axiom_node_t * rampart_context_get_policy_node (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN void * rampart_context_get_prv_key (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_key_type_t rampart_context_get_prv_key_type (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN void * rampart_context_get_certificate (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_key_type_t rampart_context_get_certificate_type (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN void * rampart_context_get_receiver_certificate (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_key_type_t rampart_context_get_receiver_certificate_type (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_user (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_password (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_prv_key_password (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN password_callback_fn rampart_context_get_pwcb_function (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN rampart_is_replayed_fn rampart_context_get_replay_detect_function (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN void * rampart_context_get_pwcb_user_params (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN int rampart_context_get_ttl (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t rampart_context_get_need_millisecond_precision (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN int rampart_context_get_clock_skew_buffer (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_rd_val (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_password_type (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axutil_array_list_t * rampart_context_get_keys (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN oxs_key_trampart_context_get_key (rampart_context_t *rampart_context, const axutil_env_t *env, axis2_char_t *key_id)
AXIS2_EXTERN oxs_key_trampart_context_get_key_using_hash (rampart_context_t *rampart_context, const axutil_env_t *env, axis2_char_t *hash)
AXIS2_EXTERN rp_secpolicy_t * rampart_context_get_secpolicy (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_secpolicy (rampart_context_t *rampart_context, const axutil_env_t *env, rp_secpolicy_t *secpolicy)
AXIS2_EXTERN rampart_callback_t * rampart_context_get_password_callback (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t 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 rampart_context_get_auth_password_function (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t 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 rampart_context_get_auth_digest_function (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t 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 * 
rampart_context_get_authn_provider (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN void * rampart_context_get_replay_detector (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN void * rampart_context_get_sct_provider (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t 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 rampart_context_set_replay_detector (rampart_context_t *rampart_context, const axutil_env_t *env, void *replay_detector)
AXIS2_EXTERN axis2_status_t rampart_context_set_sct_provider (rampart_context_t *rampart_context, const axutil_env_t *env, void *sct_module)
AXIS2_EXTERN axis2_bool_t rampart_context_get_require_timestamp (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t rampart_context_get_require_ut (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN rp_property_type_t rampart_context_get_binding_type (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t rampart_context_is_include_timestamp (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t rampart_context_is_include_username_token (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t rampart_context_is_include_supporting_token (rampart_context_t *rampart_context, const axutil_env_t *env, axis2_bool_t server_side, axis2_bool_t is_inpath, rp_property_type_t token_type)
AXIS2_EXTERN axis2_bool_t rampart_context_is_include_protection_saml_token (rampart_context_t *rampart_context, axis2_bool_t server_side, axis2_bool_t is_inpath, const axutil_env_t *env)
AXIS2_EXTERN rp_property_t * rampart_context_get_supporting_token (rampart_context_t *rampart_context, const axutil_env_t *env, rp_property_type_t token_type)
AXIS2_EXTERN axis2_char_t * rampart_context_get_password_callback_class (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_authn_module_name (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_replay_detector_name (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_sct_provider_name (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t rampart_context_is_encrypt_before_sign (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t rampart_context_is_encrypt_signature (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t 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 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 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 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 * 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 rp_property_t * rampart_context_get_endorsing_token (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t rampart_context_check_is_derived_keys (const axutil_env_t *env, rp_property_t *token)
AXIS2_EXTERN axis2_char_t * rampart_context_get_derived_key_version (const axutil_env_t *env, rp_property_t *token)
AXIS2_EXTERN axis2_char_t * rampart_context_get_enc_sym_algo (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_enc_asym_algo (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_asym_sig_algo (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_digest_mtd (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_encryption_user (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t 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 * rampart_context_get_key_identifier (rampart_context_t *rampart_context, rp_property_t *token, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t rampart_context_is_token_type_supported (rp_property_type_t token_type, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t 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 * rampart_context_get_layout (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t rampart_context_check_whether_to_encrypt (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t rampart_context_check_whether_to_sign (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_user_from_file (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_password_type_from_file (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_certificate_file (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_receiver_certificate_file (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_private_key_file (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_ttl_from_file (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_clock_skew_buffer_from_file (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_need_millisecond_precision_from_file (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_rd_val_from_file (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN oxs_key_trampart_context_get_encryption_session_key (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_encryption_session_key (rampart_context_t *rampart_context, const axutil_env_t *env, oxs_key_t *session_key)
AXIS2_EXTERN oxs_key_trampart_context_get_signature_session_key (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_signature_session_key (rampart_context_t *rampart_context, const axutil_env_t *env, oxs_key_t *session_key)
AXIS2_EXTERN axis2_status_t rampart_context_increment_ref (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t rampart_context_is_sig_confirmation_reqd (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * rampart_context_get_encryption_token_id (rampart_context_t *rampart_context, const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN axis2_char_t * rampart_context_get_signature_token_id (rampart_context_t *rampart_context, const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN axis2_status_t rampart_context_set_encryption_token_id (rampart_context_t *rampart_context, const axutil_env_t *env, axis2_char_t *sct_id, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN axis2_status_t rampart_context_set_signature_token_id (rampart_context_t *rampart_context, const axutil_env_t *env, axis2_char_t *sct_id, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN rampart_saml_token_t * rampart_context_get_saml_token (rampart_context_t *rampart_context, const axutil_env_t *env, rampart_st_type_t token_type)
AXIS2_EXTERN axis2_status_t rampart_context_add_saml_token (rampart_context_t *rampart_context, const axutil_env_t *env, rampart_saml_token_t *token)
AXIS2_EXTERN axis2_status_t rampart_context_set_saml_tokens (rampart_context_t *rampart_context, const axutil_env_t *env, axutil_array_list_t *tokens)
AXIS2_EXTERN
issued_token_callback_func 
rampart_context_get_issued_token_aquire_function (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_issued_token_aquire_function (rampart_context_t *rampart_context, const axutil_env_t *env, issued_token_callback_func issued_token_aquire)
AXIS2_EXTERN int rampart_context_get_encryption_derived_key_len (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN int rampart_context_get_signature_derived_key_len (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN rp_algorithmsuite_t * rampart_context_get_algorithmsuite (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN oxs_key_mgr_t * rampart_context_get_key_mgr (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_key_mgr (rampart_context_t *rampart_context, const axutil_env_t *env, oxs_key_mgr_t *key_mgr)
AXIS2_EXTERN axis2_char_t * rampart_context_get_pkcs12_file_name (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_custom_tokens (rampart_context_t *rampart_context, const axutil_env_t *env, axutil_array_list_t *tokens)
AXIS2_EXTERN axutil_array_list_t * rampart_context_get_custom_tokens (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t rampart_context_get_found_cert_in_shp (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_found_cert_in_shp (rampart_context_t *rampart_context, const axutil_env_t *env, axis2_bool_t found_cert_in_shp)
AXIS2_EXTERN oxs_x509_cert_t * rampart_context_get_receiver_cert_found_in_shp (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_receiver_cert_found_in_shp (rampart_context_t *rampart_context, const axutil_env_t *env, oxs_x509_cert_t *cert)
AXIS2_EXTERN void * rampart_context_get_key_store_buff (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t rampart_context_set_key_store_buff (rampart_context_t *rampart_context, const axutil_env_t *env, void *key_store_buf, int length)
AXIS2_EXTERN axis2_status_t rampart_context_set_store_security_context_token_fn (rampart_context_t *rampart_context, const axutil_env_t *env, store_security_context_token_fn store_fn)
AXIS2_EXTERN axis2_status_t rampart_context_set_obtain_security_context_token_fn (rampart_context_t *rampart_context, const axutil_env_t *env, obtain_security_context_token_fn get_fn)
AXIS2_EXTERN axis2_status_t rampart_context_set_delete_security_context_token_fn (rampart_context_t *rampart_context, const axutil_env_t *env, delete_security_context_token_fn delete_fn)
AXIS2_EXTERN axis2_status_t rampart_context_set_security_context_token_user_params (rampart_context_t *rampart_context, const axutil_env_t *env, void *user_params)
AXIS2_EXTERN axis2_status_t rampart_context_set_validate_security_context_token_fn (rampart_context_t *rampart_context, const axutil_env_t *env, validate_security_context_token_fn validate_fn)
AXIS2_EXTERN
store_security_context_token_fn 
rampart_context_get_store_security_context_token_fn (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN
obtain_security_context_token_fn 
rampart_context_get_obtain_security_context_token_fn (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN
delete_security_context_token_fn 
rampart_context_get_delete_security_context_token_fn (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN void * rampart_context_get_security_context_token_user_params (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN
validate_security_context_token_fn 
rampart_context_get_validate_security_context_token_fn (rampart_context_t *rampart_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_bool_t rampart_context_is_different_session_key_for_enc_and_sign (const axutil_env_t *env, rampart_context_t *rampart_context)
AXIS2_EXTERN axis2_status_t rampart_context_set_receiver_certificate_file (rampart_context_t *rampart_context, const axutil_env_t *env, axis2_char_t *receiver_certificate_file)


Detailed Description

The Rampart Context, in which configurations are stored.


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/oxs__tokens_8h.html0000644000076500007650000006107711202454455022455 0ustar shankarshankar Rampart/C: oxs_tokens.h File Reference

oxs_tokens.h File Reference

includes all tokens of OMXMLSecurity. More...

#include <axis2_util.h>
#include <stdio.h>
#include <axutil_qname.h>
#include <axis2_defines.h>
#include <axutil_env.h>
#include <axiom_node.h>
#include <axiom_element.h>
#include <axiom_attribute.h>
#include <oxs_constants.h>
#include <rampart_constants.h>
#include <oxs_utility.h>
#include <oxs_axiom.h>
#include <axutil_array_list.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN axiom_node_t * oxs_token_build_binary_security_token_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *id, axis2_char_t *encoding_type, axis2_char_t *value_type, axis2_char_t *data)
AXIS2_EXTERN axiom_node_t * oxs_token_build_c14n_method_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *algorithm)
AXIS2_EXTERN axis2_char_t * oxs_token_get_c14n_method (const axutil_env_t *env, axiom_node_t *c14n_mtd_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_cipher_data_element (const axutil_env_t *env, axiom_node_t *parent)
AXIS2_EXTERN axis2_char_t * oxs_token_get_cipher_value_from_cipher_data (const axutil_env_t *env, axiom_node_t *cd_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_cipher_value_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *cipher_val)
AXIS2_EXTERN axis2_char_t * oxs_token_get_cipher_value (const axutil_env_t *env, axiom_node_t *cv_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_data_reference_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *data_ref)
AXIS2_EXTERN axis2_char_t * oxs_token_get_data_reference (const axutil_env_t *env, axiom_node_t *data_ref_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_digest_method_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *algorithm)
AXIS2_EXTERN axis2_char_t * oxs_token_get_digest_method (const axutil_env_t *env, axiom_node_t *enc_mtd_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_digest_value_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *digest_val)
AXIS2_EXTERN axis2_char_t * oxs_token_get_digest_value (const axutil_env_t *env, axiom_node_t *sv_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_ds_reference_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *id, axis2_char_t *uri, axis2_char_t *type)
AXIS2_EXTERN axis2_char_t * oxs_token_get_ds_reference (const axutil_env_t *env, axiom_node_t *ref_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_embedded_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *id)
AXIS2_EXTERN axis2_char_t * oxs_token_get_embedded_id (const axutil_env_t *env, axiom_node_t *embedded_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_encrypted_data_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *type_attribute, axis2_char_t *id)
AXIS2_EXTERN axiom_node_t * oxs_token_build_encrypted_key_element (const axutil_env_t *env, axiom_node_t *parent)
AXIS2_EXTERN axiom_node_t * oxs_token_get_encrypted_key_node (const axutil_env_t *env, axiom_node_t *parent)
AXIS2_EXTERN axiom_node_t * oxs_token_build_encryption_method_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *algorithm)
AXIS2_EXTERN axis2_char_t * oxs_token_get_encryption_method (const axutil_env_t *env, axiom_node_t *enc_mtd_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_key_identifier_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *encoding_type, axis2_char_t *value_type, axis2_char_t *value)
AXIS2_EXTERN axiom_node_t * oxs_token_build_key_info_element (const axutil_env_t *env, axiom_node_t *parent)
AXIS2_EXTERN axiom_node_t * oxs_token_build_key_name_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *key_name_val)
AXIS2_EXTERN axiom_node_t * oxs_token_build_reference_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *ref, axis2_char_t *value_type)
AXIS2_EXTERN axis2_char_t * oxs_token_get_reference (const axutil_env_t *env, axiom_node_t *ref_node)
AXIS2_EXTERN axis2_char_t * oxs_token_get_reference_value_type (const axutil_env_t *env, axiom_node_t *ref_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_reference_list_element (const axutil_env_t *env, axiom_node_t *parent)
AXIS2_EXTERN axiom_node_t * oxs_token_build_data_reference_list (const axutil_env_t *env, axiom_node_t *parent, axutil_array_list_t *id_list)
AXIS2_EXTERN axutil_array_list_t * oxs_token_get_reference_list_data (const axutil_env_t *env, axiom_node_t *ref_list_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_security_token_reference_element (const axutil_env_t *env, axiom_node_t *parent)
AXIS2_EXTERN axiom_node_t * oxs_token_build_signature_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *id)
AXIS2_EXTERN axiom_node_t * oxs_token_build_enc_header_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *id)
AXIS2_EXTERN axiom_node_t * oxs_token_build_signature_method_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *algorithm)
AXIS2_EXTERN axis2_char_t * oxs_token_get_signature_method (const axutil_env_t *env, axiom_node_t *enc_mtd_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_signature_value_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *signature_val)
AXIS2_EXTERN axis2_char_t * oxs_token_get_signature_value (const axutil_env_t *env, axiom_node_t *sv_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_signed_info_element (const axutil_env_t *env, axiom_node_t *parent)
AXIS2_EXTERN axiom_node_t * oxs_token_build_transform_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *algorithm)
AXIS2_EXTERN axis2_char_t * oxs_token_get_transform (const axutil_env_t *env, axiom_node_t *transform_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_transforms_element (const axutil_env_t *env, axiom_node_t *parent)
AXIS2_EXTERN axiom_node_t * oxs_token_build_x509_certificate_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *cert_data)
AXIS2_EXTERN axis2_char_t * oxs_token_get_x509_certificate (const axutil_env_t *env, axiom_node_t *sv_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_x509_data_element (const axutil_env_t *env, axiom_node_t *parent)
AXIS2_EXTERN axiom_node_t * oxs_token_build_issuer_name_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *value)
AXIS2_EXTERN axis2_char_t * oxs_token_get_issuer_name (const axutil_env_t *env, axiom_node_t *issuer_name_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_x509_issuer_serial_element (const axutil_env_t *env, axiom_node_t *parent)
AXIS2_EXTERN axiom_node_t * oxs_token_build_x509_issuer_serial_with_data (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *issuer_name, axis2_char_t *serial_number)
AXIS2_EXTERN axiom_node_t * oxs_token_build_serial_number_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *value)
AXIS2_EXTERN axis2_char_t * oxs_token_get_serial_number (const axutil_env_t *env, axiom_node_t *serial_number_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_signature_confirmation_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *id, axis2_char_t *val)
AXIS2_EXTERN axis2_char_t * oxs_token_get_signature_confirmation_value (const axutil_env_t *env, axiom_node_t *signature_confirmation_node)
AXIS2_EXTERN axis2_char_t * oxs_token_get_signature_confirmation_id (const axutil_env_t *env, axiom_node_t *signature_confirmation_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_derived_key_token_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *id, axis2_char_t *algo, axis2_char_t *wsc_ns_uri)
AXIS2_EXTERN axiom_node_t * oxs_token_build_length_element (const axutil_env_t *env, axiom_node_t *parent, int length, axis2_char_t *wsc_ns_uri)
AXIS2_EXTERN int oxs_token_get_length_value (const axutil_env_t *env, axiom_node_t *length_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_offset_element (const axutil_env_t *env, axiom_node_t *parent, int offset, axis2_char_t *wsc_ns_uri)
AXIS2_EXTERN int oxs_token_get_offset_value (const axutil_env_t *env, axiom_node_t *offset_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_nonce_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *nonce_val, axis2_char_t *wsc_ns_uri)
AXIS2_EXTERN axis2_char_t * oxs_token_get_nonce_value (const axutil_env_t *env, axiom_node_t *nonce_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_label_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *label, axis2_char_t *wsc_ns_uri)
AXIS2_EXTERN axis2_char_t * oxs_token_get_label_value (const axutil_env_t *env, axiom_node_t *label_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_properties_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *properties_val, axis2_char_t *wsc_ns_uri)
AXIS2_EXTERN axis2_char_t * oxs_token_get_properties_value (const axutil_env_t *env, axiom_node_t *properties_node)
AXIS2_EXTERN axiom_node_t * oxs_token_build_generation_element (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *generation_val, axis2_char_t *wsc_ns_uri)
AXIS2_EXTERN axis2_char_t * oxs_token_get_generation_value (const axutil_env_t *env, axiom_node_t *generation_node)


Detailed Description

includes all tokens of OMXMLSecurity.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/oxs__transforms__factory_8h-source.html0000644000076500007650000001253011202454455026522 0ustar shankarshankar Rampart/C: oxs_transforms_factory.h Source File

oxs_transforms_factory.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef OXS_TRANSFORMS_FACTORY_H
00019 #define OXS_TRANSFORMS_FACTORY_H
00020 
00021 
00027 #include <axis2_defines.h>
00028 #include <oxs_ctx.h>
00029 #include <axutil_env.h>
00030 #include <axiom_node.h>
00031 #include <axiom_element.h>
00032 #include <axutil_qname.h>
00033 #include <oxs_transform.h>
00034 
00035 #ifdef __cplusplus
00036 extern "C"
00037 {
00038 #endif
00039 
00040     AXIS2_EXTERN oxs_transform_t *AXIS2_CALL
00041     oxs_transforms_factory_produce_transform(const axutil_env_t *env,
00042             axis2_char_t *id);
00043 
00044 
00046 #ifdef __cplusplus
00047 }
00048 #endif
00049 
00050 #endif                          /* OXS_TRANSFORMS_FACTORY_H */

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__openssl__sign.html0000644000076500007650000001355411202454456023736 0ustar shankarshankar Rampart/C: OpenSSL Signatue

OpenSSL Signatue
[OpenSSL wrapper]


Functions

AXIS2_EXTERN int openssl_sig_sign (const axutil_env_t *env, openssl_pkey_t *prvkey, oxs_buffer_t *input_buf, oxs_buffer_t *output_buf)
AXIS2_EXTERN axis2_status_t openssl_sig_verify (const axutil_env_t *env, openssl_pkey_t *pubkey, oxs_buffer_t *input_buf, oxs_buffer_t *sig_buf)

Function Documentation

AXIS2_EXTERN int openssl_sig_sign ( const axutil_env_t *  env,
openssl_pkey_t prvkey,
oxs_buffer_t input_buf,
oxs_buffer_t output_buf 
)

Signs a content a using the private key The result would be placed in the

AXIS2_EXTERN axis2_status_t openssl_sig_verify ( const axutil_env_t *  env,
openssl_pkey_t pubkey,
oxs_buffer_t input_buf,
oxs_buffer_t sig_buf 
)

Verifies a signature placed in with the content placed in the using the public key


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/oxs__encryption_8h-source.html0000644000076500007650000001465611202454454024642 0ustar shankarshankar Rampart/C: oxs_encryption.h Source File

oxs_encryption.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef OXS_ENCRYPTION_H
00019 #define OXS_ENCRYPTION_H
00020 
00021 
00032 #include <axis2_defines.h>
00033 #include <oxs_ctx.h>
00034 #include <oxs_asym_ctx.h>
00035 #include <axutil_env.h>
00036 #include <axiom_node.h>
00037 #include <axiom_element.h>
00038 #include <axutil_qname.h>
00039 
00040 #ifdef __cplusplus
00041 extern "C"
00042 {
00043 #endif
00044 
00055     AXIS2_EXTERN  axis2_status_t AXIS2_CALL
00056     oxs_encryption_symmetric_crypt(const axutil_env_t *env,
00057                                    oxs_ctx_t * enc_ctx,
00058                                    oxs_buffer_t *input,
00059                                    oxs_buffer_t *result);
00060 
00072     AXIS2_EXTERN  axis2_status_t AXIS2_CALL
00073     oxs_encryption_asymmetric_crypt(const axutil_env_t *env,
00074                                     oxs_asym_ctx_t * asym_ctx,
00075                                     oxs_buffer_t *input,
00076                                     oxs_buffer_t *result);
00077 
00079 #ifdef __cplusplus
00080 }
00081 #endif
00082 
00083 #endif                          /* OXS_ENCRYPTION_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/trust__constants_8h-source.html0000644000076500007650000005631411202454455025032 0ustar shankarshankar Rampart/C: trust_constants.h Source File

trust_constants.h

Go to the documentation of this file.
00001 /*
00002 * Licensed to the Apache Software Foundation (ASF) under one or more
00003 * contributor license agreements.  See the NOTICE file distributed with
00004 * this work for additional information regarding copyright ownership.
00005 * The ASF licenses this file to You under the Apache License, Version 2.0
00006 * (the "License"); you may not use this file except in compliance with
00007 * the License.  You may obtain a copy of the License at
00008 *
00009 *      http://www.apache.org/licenses/LICENSE-2.0
00010 *
00011 * Unless required by applicable law or agreed to in writing, software
00012 * distributed under the License is distributed on an "AS IS" BASIS,
00013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014 * See the License for the specific language governing permissions and
00015 * limitations under the License.
00016 */
00017 
00018 
00019 #ifndef TRUST_CONSTANTS_H
00020 #define TRUST_CONSTANTS_H
00021 
00022 
00023 #include <axutil_utils.h>
00029 #ifdef __cplusplus
00030 extern "C"
00031 {
00032 #endif
00033 
00034 
00035 
00036         /*Trust XML Element names */
00037 #define TRUST_RST_CONTEXT               "Context"
00038 #define TRUST_TOKEN_TYPE                "TokenType"
00039 #define TRUST_REQUEST_TYPE              "RequestType"
00040 #define TRUST_APPLIES_TO                "AppliesTo"
00041 
00042 #define TRUST_CLAIMS                    "Claims"
00043 #define TRUST_CLAIMS_DIALECT    "Dialect"
00044 
00045 #define TRUST_ENTROPY                   "Entropy"
00046 #define TRUST_BINARY_SECRET             "BinarySecret"
00047 
00048 #define TRUST_LIFE_TIME                 "LifeTime"
00049 #define TRUST_LIFE_TIME_CREATED         "Created"
00050 #define TRUST_LIFE_TIME_EXPIRES         "Expires"
00051 
00052 #define TRUST_REQUEST_SECURITY_TOKEN            "RequestSecurityToken"
00053 #define TRUST_REQUESTED_SECURITY_TOKEN          "RequestedSecurityToken"
00054 #define TRUST_REQUEST_SECURITY_TOKEN_RESPONSE   "RequestSecurityTokenResponse"
00055 #define TRUST_REQUESTED_PROOF_TOKEN             "RequestedProofToken"
00056 #define TRUST_REQUEST_SECURITY_TOKEN_RESPONSE_COLLECTION "RequestSecurityTokenResponseCollection"
00057 #define TRUST_REQUESTED_TOKEN_CANCELED          "RequestedTokenCancelled"
00058 #define TRUST_COMPUTED_KEY                      "ComputedKey"
00059 #define TRUST_REQUESTED_ATTACHED_REFERENCE      "RequestedAttachedReference"
00060 #define TRUST_REQUESTED_UNATTACHED_REFERENCE    "RequestedUnattachedReference"
00061 #define TRUST_SECURITY_TOKEN_REFERENCE          "SecurityTokenReference"
00062 #define TRUST_ENCRYPTED_DATA                    "EncryptedData"
00063 #define TRUST_REQUESTED_TOKEN_CANCELED          "RequestedTokenCancelled"
00064 #define TRUST_CANCEL_TARGET                     "CancelTarget"
00065 #define TRUST_URI                               "URI"
00066 #define TRUST_EPR                   "EndpointReference"
00067 #define TRUST_EPR_ADDRESS                       "Address"
00068 #define TRUST_STR_REFERENCE                     "Reference"
00069 
00070         /* Renewal Bindings */
00071 #define TRUST_RENEW_TARGET          "RenewTarget"
00072 #define TRUST_ALLOW_POSTDATING      "AllowPostdating"
00073 #define TRUST_RENEWING              "Renewing"
00074 
00075 #define TRUST_RENEW_ALLOW_ATTR      "Allow"
00076 #define TRUST_RENEW_OK_ATTR         "OK"
00077 
00078 #define TRUST_VALIDATION_STATUS         "Status"
00079 #define TRUST_VALIDATION_CODE           "Code"
00080 #define TRUST_VALIDATION_REASON         "Reason"
00081     
00082 #define TRUST_CANCEL_TARGET                     "CancelTarget"
00083 
00084     
00085 #define ATTR_TYPE                   "Type"
00086 #define TRUST_BIN_SEC_TYPE_NONCE        "/Nonce"
00087 
00088         /* Request Types */
00089 #define TRUST_REQ_TYPE_ISSUE            "/Issue"
00090 #define TRUST_REQ_TYPE_VALIDATE         "/Validate"
00091 #define TRUST_REQ_TYPE_RENEW            "/Renew"
00092 #define TRUST_REQ_TYPE_CANCEL           "/Cancel"
00093     
00094 #define TRUST_RST_ACTION_ISSUE          "/RST/Issue" 
00095 #define TRUST_RST_ACTION_VALIDATE       "/RST/Validate"
00096 #define TRUST_RST_ACTION_RENEW          "/RST/Renew"
00097 #define TRUST_RST_ACTION_CANCEL         "/RST/Cancel"
00098 #define TRUST_RST_ACTION_SCT            "/RST/SCT"
00099 #define TRUST_RST_ACTION_CANCEL_SCT     "/RST/SCT/Cancel"
00100     
00101 #define TRUST_KEY_TYPE_SYMM_KEY         "/SymmetricKey"
00102 #define TRUST_KEY_TYPE_PUBLIC_KEY       "/PublicKey"
00103 #define TRUST_KEY_TYPE_BEARER           "/Bearer"
00104 
00105 
00106     /*Key and Token Parameter Extensions*/
00107 #define TRUST_AUTHENTICATION_TYPE       "AuthenticationType"
00108 #define TRUST_KEY_TYPE                  "KeyType"
00109 #define TRUST_KEY_SIZE                  "KeySize"
00110 #define TRUST_SIGNATURE_ALGO            "SignatureAlgorithm"
00111 #define TRUST_ENCRYPTION_ALGO           "EncryptionAlgorithm"
00112 #define TRUST_CANONICAL_ALGO            "CanonicalizationAlgorithm"
00113 #define TRUST_COMPUTED_KEY_ALGO         "ComputedKeyAlgorithm"
00114 #define TRUST_DESIRED_ENCRYPTION         "Encryption"
00115 #define TRUST_PROOF_ENCRYPTION           "ProofEncryption"
00116 #define TRUST_USE_KEY                    "UseKey"
00117 #define TRUST_SIGN_WITH                  "SignWith"
00118 #define TRUST_ENCRYPT_WITH               "EncryptWith"
00119 
00120 #define TRUST_ATTR_USE_KEY_SIG          "Sig"
00121 
00122 
00123 #define TRUST_DEFAULT_KEY_SIZE 256
00124 
00125         /* Trust Namespace URIs and Namespace prefix */
00126 #define TRUST_S11        "S11"
00127 #define TRUST_S11_XMLNS  "http://schemas.xmlsoap.org/soap/envelope/"
00128 #define TRUST_S12        "S12"
00129 #define TRUST_S12_XMLNS  "http://www.w3.org/2003/05/soap-envelope"
00130 #define TRUST_WSU        "wsu"
00131 #define TRUST_WSU_XMLNS  "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
00132 #define TRUST_WSSE       "wsse"
00133 #define TRUST_WSSE_XMLNS "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
00134 #define TRUST_WST        "wst"
00135 #define TRUST_DS         "ds"
00136 #define TRUST_DS_XMLNS   "http://www.w3.org/2000/09/xmldsig#"
00137 #define TRUST_XENC       "xenc"
00138 #define TRUST_XENC_XMLNS "http://www.w3.org/2001/04/xmlenc#"
00139 #define TRUST_WSP        "wsp"
00140 #define TRUST_WSP_XMLNS  "http://schemas.xmlsoap.org/ws/2004/09/policy"
00141 #define TRUST_WSA        "wsa"
00142 #define TRUST_WSA_XMLNS  "http://schemas.xmlsoap.org/ws/2004/08/addressing"
00143 #define TRUST_XS         "xs"
00144 #define TRUST_XS_XMLNS   "http://www.w3.org/2001/XMLSchema"
00145 
00146 #define SECCONV_200502_REQUEST_ISSUE_ACTION "http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT"
00147 #define SECCONV_200502_REPLY_ISSUE_ACTION "http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/SCT"
00148 #define SECCONV_200502_REQUEST_AMEND_ACTION "http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT/Amend"
00149 #define SECCONV_200502_REPLY_AMEND_ACTION "http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/SCT/Amend"
00150 #define SECCONV_200502_REQUEST_RENEW_ACTION "http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT/Renew"
00151 #define SECCONV_200502_REPLY_RENEW_ACTION "http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/SCT/Renew"
00152 #define SECCONV_200502_REQUEST_CANCEL_ACTION "http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT/Cancel"
00153 #define SECCONV_200502_REPLY_CANCEL_ACTION "http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/SCT/Cancel"
00154 #define SECCONV_200512_REQUEST_ISSUE_ACTION "http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/SCT"
00155 #define SECCONV_200512_REPLY_ISSUE_ACTION "http://docs.oasis-open.org/ws-sx/ws-trust/200512/RSTR/SCT"
00156 #define SECCONV_200512_REQUEST_AMEND_ACTION "http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/SCT/Amend"
00157 #define SECCONV_200512_REPLY_AMEND_ACTION "http://docs.oasis-open.org/ws-sx/ws-trust/200512/RSTR/SCT/Amend"
00158 #define SECCONV_200512_REQUEST_RENEW_ACTION "http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/SCT/Renew"
00159 #define SECCONV_200512_REPLY_RENEW_ACTION "http://docs.oasis-open.org/ws-sx/ws-trust/200512/RSTR/SCT/Renew"
00160 #define SECCONV_200512_REQUEST_CANCEL_ACTION "http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/SCT/Cancel"
00161 #define SECCONV_200512_REPLY_CANCEL_ACTION "http://docs.oasis-open.org/ws-sx/ws-trust/200512/RSTR/SCT/Cancel"
00162 
00163 #define SECCONV_GLOBAL_ID_PREFIX "urn:uuid:"
00164 #define SECCONV_LOCAL_ID_PREFIX "sctId"
00165 
00166 
00167 #define TRUST_COMPUTED_KEY_PSHA1 "http://schemas.xmlsoap.org/ws/2005/02/trust/CK/PSHA1"
00168 #define TRUST_COMPUTED_KEY_PSHA1_05_12 "http://docs.oasis-open.org/ws-sx/ws-trust/200512/CK/PSHA1"
00169 /* NS Versions */
00170 
00171 #define TRUST_VERSION_INVALID 0
00172 #define TRUST_VERSION_05_02 1
00173 #define TRUST_VERSION_05_12 2
00174 
00175 #define SECCONV_ACTION_INVALID 0
00176 #define SECCONV_ACTION_ISSUE 1
00177 #define SECCONV_ACTION_AMEND 2
00178 #define SECCONV_ACTION_RENEW 3
00179 #define SECCONV_ACTION_CANCEL 4
00180 
00181 
00182 /* WS-SX Namespaces*/
00183 
00184 #define TRUST_WST_XMLNS_05_12 "http://docs.oasis-open.org/ws-sx/ws-trust/200512"
00185 #define TRUST_WST_XMLNS_05_02 "http://schemas.xmlsoap.org/ws/2005/02/trust"
00186 
00187 #ifdef __cplusplus
00188 }
00189 #endif
00190 
00191 #endif /* TRUST_CONSTANTS_H*/

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/trust__life__time_8h-source.html0000644000076500007650000002273311202454455025110 0ustar shankarshankar Rampart/C: trust_life_time.h Source File

trust_life_time.h

00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef TRUST_LIFETIME_H
00019 #define TRUST_LIFETIME_H
00020 
00021 #include <stdio.h>
00022 #include <stdlib.h>
00023 #include <axutil_utils.h>
00024 #include <axutil_string.h>
00025 #include <axutil_base64.h>
00026 #include <axiom_soap.h>
00027 #include <axiom.h>
00028 #include <axis2_msg_ctx.h>
00029 #include <axis2_addr.h>
00030 
00031 #include <trust_constants.h>
00032 #include <trust_util.h>
00033 
00034 #ifdef __cplusplus
00035 extern "C"
00036 {
00037 #endif
00038     
00039     typedef struct trust_life_time trust_life_time_t;
00040     
00041     AXIS2_EXTERN trust_life_time_t * AXIS2_CALL
00042     trust_life_time_create(
00043         const axutil_env_t *env);
00044     
00045     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00046     trust_life_time_free(
00047         trust_life_time_t *life_time,
00048         const axutil_env_t *env);
00049     
00050     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00051     trust_life_time_deserialize(
00052         trust_life_time_t *life_time,
00053         const axutil_env_t *env,
00054         axiom_node_t *life_time_node);
00055     
00056     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00057     trust_life_time_serialize(
00058         trust_life_time_t *life_time,
00059         const axutil_env_t *env,
00060         axiom_node_t *parent);
00061     
00062     AXIS2_EXTERN int AXIS2_CALL
00063     trust_life_time_get_ttl(
00064         trust_life_time_t *life_time,
00065         const axutil_env_t *env);
00066 
00067     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00068     trust_life_time_set_ttl(
00069             trust_life_time_t *life_time,
00070             const axutil_env_t *env,
00071             int ttl);        
00072 
00073     AXIS2_EXTERN axutil_date_time_t * AXIS2_CALL
00074     trust_life_time_get_created(
00075             trust_life_time_t *life_time,
00076             const axutil_env_t *env);
00077 
00078     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00079     trust_life_time_set_created(
00080             trust_life_time_t *life_time,
00081             const axutil_env_t *env,
00082             axutil_date_time_t *created);
00083 
00084     AXIS2_EXTERN axutil_date_time_t * AXIS2_CALL
00085     trust_life_time_get_expires(
00086             trust_life_time_t *life_time,
00087             const axutil_env_t *env);
00088 
00089 
00090     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00091     trust_life_time_set_expires(
00092             trust_life_time_t *life_time,
00093             const axutil_env_t *env,
00094             axutil_date_time_t *expires);
00095 
00096 
00097     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00098     trust_life_time_get_ns_uri(
00099             trust_life_time_t *life_time,
00100             const axutil_env_t *env);
00101 
00102 
00103     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00104     trust_life_time_set_ns_uri(
00105             trust_life_time_t *life_time,
00106             const axutil_env_t *env,
00107             axis2_char_t *ns_uri);
00108 
00109     
00110 #ifdef __cplusplus
00111 }
00112 #endif
00113 #endif 

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__Token.html0000644000076500007650000003160111202454457022146 0ustar shankarshankar Rampart/C: Processor

Processor
[Rampart Utilities]


Functions

AXIS2_EXTERN axis2_status_t rampart_token_process_security_token_reference (const axutil_env_t *env, axiom_node_t *st_ref_node, axiom_node_t *scope_node, oxs_x509_cert_t *cert)
AXIS2_EXTERN axis2_status_t rampart_token_process_direct_ref (const axutil_env_t *env, axiom_node_t *ref_node, axiom_node_t *scope_node, oxs_x509_cert_t *cert)
AXIS2_EXTERN axis2_status_t rampart_token_process_embedded (const axutil_env_t *env, axiom_node_t *embed_node, oxs_x509_cert_t *cert)
AXIS2_EXTERN axis2_status_t rampart_token_process_key_identifier (const axutil_env_t *env, axiom_node_t *ki_node, oxs_x509_cert_t *cert)
AXIS2_EXTERN axis2_status_t rampart_token_process_x509_data (const axutil_env_t *env, axiom_node_t *x509_data_node, oxs_x509_cert_t *cert)

Function Documentation

AXIS2_EXTERN axis2_status_t rampart_token_process_direct_ref ( const axutil_env_t *  env,
axiom_node_t *  ref_node,
axiom_node_t *  scope_node,
oxs_x509_cert_t *  cert 
)

extract certificate using reference id given in reference node

Parameters:
env Environment structure
ref_node security token reference node.
scope_node node where certificate details should be found using reference id
cert certificate where values extracted shuold be populated
Returns:
status of the operation

AXIS2_EXTERN axis2_status_t rampart_token_process_embedded ( const axutil_env_t *  env,
axiom_node_t *  embed_node,
oxs_x509_cert_t *  cert 
)

extract embedded certificate from given embed_node

Parameters:
env Environment structure
embed_node node where certificate is embedded.
cert certificate where values extracted shuold be populated
Returns:
status of the operation

AXIS2_EXTERN axis2_status_t rampart_token_process_key_identifier ( const axutil_env_t *  env,
axiom_node_t *  ki_node,
oxs_x509_cert_t *  cert 
)

extract key identifier and populate the certificate

Parameters:
env Environment structure
ki_node node where key identifier is available.
cert certificate where values extracted shuold be populated
Returns:
status of the operation

AXIS2_EXTERN axis2_status_t rampart_token_process_security_token_reference ( const axutil_env_t *  env,
axiom_node_t *  st_ref_node,
axiom_node_t *  scope_node,
oxs_x509_cert_t *  cert 
)

extract certificate related information using given token_reference node and scope node

Parameters:
env Environment structure
st_ref_node security token reference node.
scope_node node where additional details should be found. Can be NULL for all other scenarios but the Direct Reference
cert certificate where values extracted shuold be populated
Returns:
status of the operation

AXIS2_EXTERN axis2_status_t rampart_token_process_x509_data ( const axutil_env_t *  env,
axiom_node_t *  x509_data_node,
oxs_x509_cert_t *  cert 
)

extract key details from x509data node

Parameters:
env Environment structure
x509_data_node x509data node.
cert certificate where values extracted shuold be populated
Returns:
status of the operation


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/openssl__pem_8h-source.html0000644000076500007650000001466611202454454024104 0ustar shankarshankar Rampart/C: openssl_pem.h Source File

openssl_pem.h

Go to the documentation of this file.
00001 /*
00002  *   Copyright 2003-2004 The Apache Software Foundation.
00003  *
00004  *   Licensed under the Apache License, Version 2.0 (the "License");
00005  *   you may not use this file except in compliance with the License.
00006  *   You may obtain a copy of the License at
00007  *
00008  *       http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  *   Unless required by applicable law or agreed to in writing, software
00011  *   distributed under the License is distributed on an "AS IS" BASIS,
00012  *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  *   See the License for the specific language governing permissions and
00014  *   limitations under the License.
00015  */
00016 
00017 #include <openssl/rand.h>
00018 #include <openssl/evp.h>
00019 #include <openssl/pem.h>
00020 #include <openssl/bio.h>
00021 #include <openssl/rand.h>
00022 #include <openssl_constants.h>
00023 #include <openssl_pkey.h>
00024 #include <axis2_util.h>
00025 #include <openssl/pkcs12.h>
00026 #include <oxs_error.h>
00031 #ifndef OPENSSL_PEM_H
00032 #define OPENSSL_PEM_H
00033 
00034 #ifdef __cplusplus
00035 extern "C" {
00036 #endif
00037 
00043     typedef enum {
00044         OPENSSL_PEM_PKEY_TYPE_PRIVATE_KEY = 0,
00045         OPENSSL_PEM_PKEY_TYPE_PUBLIC_KEY,
00046         OPENSSL_PEM_PKEY_TYPE_UNKNOWN
00047     } openssl_pem_pkey_type_t;
00048 
00049     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00050     openssl_pem_buf_read_pkey(const axutil_env_t *env,
00051                               axis2_char_t *b64_encoded_buf,
00052                               axis2_char_t *password,
00053                               openssl_pem_pkey_type_t type,
00054                               EVP_PKEY **pkey);
00055 
00056     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00057     openssl_pem_read_pkey(const axutil_env_t *env,
00058                           axis2_char_t *filename,
00059                           axis2_char_t *password,
00060                           openssl_pem_pkey_type_t type,
00061                           EVP_PKEY **pkey);
00062 
00064 #ifdef __cplusplus
00065 }
00066 #endif
00067 
00068 #endif    /* OPENSSL_PEM_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/oxs__sign__ctx_8h-source.html0000644000076500007650000003546311202454454024424 0ustar shankarshankar Rampart/C: oxs_sign_ctx.h Source File

oxs_sign_ctx.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef OXS_SIGN_CTX_H
00019 #define OXS_SIGN_CTX_H
00020 
00021 
00032 #include <axis2_defines.h>
00033 #include <axutil_env.h>
00034 #include <axiom_node.h>
00035 #include <oxs_x509_cert.h>
00036 #include <oxs_key.h>
00037 #include <openssl_pkey.h>
00038 
00039 #ifdef __cplusplus
00040 extern "C"
00041 {
00042 #endif
00043 
00044     /*The type of operation*/
00045     typedef enum  {
00046         OXS_SIGN_OPERATION_NONE = 0,
00047         OXS_SIGN_OPERATION_SIGN,
00048         OXS_SIGN_OPERATION_VERIFY
00049     } oxs_sign_operation_t;
00050 
00051 
00052     typedef struct oxs_sign_ctx_t oxs_sign_ctx_t;
00053 
00059     AXIS2_EXTERN oxs_sign_ctx_t *AXIS2_CALL
00060     oxs_sign_ctx_create(const axutil_env_t *env);
00061 
00069     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00070     oxs_sign_ctx_free(oxs_sign_ctx_t *ctx,
00071                       const axutil_env_t *env);
00072 
00073 
00074     /**********************Getter functions******************************************/
00081     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00082     oxs_sign_ctx_get_sign_mtd_algo(
00083         const oxs_sign_ctx_t *sign_ctx,
00084         const axutil_env_t *env);
00085 
00092     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00093     oxs_sign_ctx_get_c14n_mtd(
00094         const oxs_sign_ctx_t *sign_ctx,
00095         const axutil_env_t *env);
00096 
00103     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00104     oxs_sign_ctx_get_sig_val(
00105         const oxs_sign_ctx_t *sign_ctx,
00106         const axutil_env_t *env);
00107 
00114     AXIS2_EXTERN axutil_array_list_t *AXIS2_CALL
00115     oxs_sign_ctx_get_sign_parts(
00116         const oxs_sign_ctx_t *sign_ctx,
00117         const axutil_env_t *env);
00118 
00125     AXIS2_EXTERN oxs_x509_cert_t *AXIS2_CALL
00126     oxs_sign_ctx_get_certificate(
00127         const oxs_sign_ctx_t *sign_ctx,
00128         const axutil_env_t *env);
00136     AXIS2_EXTERN openssl_pkey_t *AXIS2_CALL
00137     oxs_sign_ctx_get_private_key(
00138         const oxs_sign_ctx_t *sign_ctx,
00139         const axutil_env_t *env);
00140 
00147     AXIS2_EXTERN openssl_pkey_t *AXIS2_CALL
00148     oxs_sign_ctx_get_public_key(
00149         const oxs_sign_ctx_t *sign_ctx,
00150         const axutil_env_t *env);
00151 
00158     AXIS2_EXTERN oxs_key_t *AXIS2_CALL
00159     oxs_sign_ctx_get_secret(
00160     const oxs_sign_ctx_t *sign_ctx,
00161     const axutil_env_t *env);
00162  
00169     AXIS2_EXTERN oxs_sign_operation_t AXIS2_CALL
00170     oxs_sign_ctx_get_operation(
00171         const oxs_sign_ctx_t *sign_ctx,
00172         const axutil_env_t *env);
00173 
00174     /**********************Setter functions******************************************/
00182     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00183     oxs_sign_ctx_set_sign_mtd_algo(
00184         oxs_sign_ctx_t *sign_ctx,
00185         const axutil_env_t *env,
00186         axis2_char_t *sign_mtd_algo);
00187 
00195     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00196     oxs_sign_ctx_set_c14n_mtd(
00197         oxs_sign_ctx_t *sign_ctx,
00198         const axutil_env_t *env,
00199         axis2_char_t *c14n_mtd);
00200 
00208     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00209     oxs_sign_ctx_set_sig_val(
00210         oxs_sign_ctx_t *sign_ctx,
00211         const axutil_env_t *env,
00212         axis2_char_t *sig_val);
00213 
00221     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00222     oxs_sign_ctx_set_sign_parts(
00223         oxs_sign_ctx_t *sign_ctx,
00224         const axutil_env_t *env,
00225         axutil_array_list_t *sign_parts);
00226 
00234     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00235     oxs_sign_ctx_set_certificate(
00236         oxs_sign_ctx_t *sign_ctx,
00237         const axutil_env_t *env,
00238         oxs_x509_cert_t *certificate);
00239 
00247     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00248     oxs_sign_ctx_set_private_key(
00249         oxs_sign_ctx_t *sign_ctx,
00250         const axutil_env_t *env,
00251         openssl_pkey_t *prv_key);
00252 
00260     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00261     oxs_sign_ctx_set_public_key(
00262         oxs_sign_ctx_t *sign_ctx,
00263         const axutil_env_t *env,
00264         openssl_pkey_t *pub_key);
00265 
00273     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00274     oxs_sign_ctx_set_secret(
00275         oxs_sign_ctx_t *sign_ctx,
00276         const axutil_env_t *env,
00277         oxs_key_t *secret);
00278     
00286     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00287     oxs_sign_ctx_set_operation(
00288         oxs_sign_ctx_t *sign_ctx,
00289         const axutil_env_t *env,
00290         oxs_sign_operation_t operation);
00292 #ifdef __cplusplus
00293 }
00294 #endif
00295 
00296 #endif                          /* OXS_SIGN_CTX_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__rampart__util.html0000644000076500007650000006157411202454457023744 0ustar shankarshankar Rampart/C: Utils

Utils
[Rampart Utilities]


Functions

AXIS2_EXTERN
rampart_credentials_t * 
rampart_load_credentials_module (const axutil_env_t *env, axis2_char_t *cred_module_name)
AXIS2_EXTERN
rampart_credentials_status_t 
rampart_call_credentials (const axutil_env_t *env, rampart_credentials_t *cred_module, axis2_msg_ctx_t *ctx, axis2_char_t **username, axis2_char_t **password)
AXIS2_EXTERN
rampart_authn_provider_t * 
rampart_load_auth_module (const axutil_env_t *env, axis2_char_t *auth_module_name)
AXIS2_EXTERN
rampart_replay_detector_t * 
rampart_load_replay_detector (const axutil_env_t *env, axis2_char_t *replay_detector_name)
AXIS2_EXTERN
rampart_sct_provider_t * 
rampart_load_sct_provider (const axutil_env_t *env, axis2_char_t *sct_provider_name)
AXIS2_EXTERN rampart_callback_t * rampart_load_pwcb_module (const axutil_env_t *env, axis2_char_t *callback_module_name)
AXIS2_EXTERN
rampart_authn_provider_status_t 
rampart_authenticate_un_pw (const axutil_env_t *env, rampart_authn_provider_t *authp, const axis2_char_t *username, const axis2_char_t *password, const axis2_char_t *nonce, const axis2_char_t *created, const axis2_char_t *password_type, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN axis2_char_t * rampart_callback_password (const axutil_env_t *env, rampart_callback_t *callback_module, const axis2_char_t *username)
AXIS2_EXTERN axis2_char_t * rampart_callback_pkcs12_password (const axutil_env_t *env, rampart_callback_t *callback_module, const axis2_char_t *username)
AXIS2_EXTERN axis2_char_t * rampart_generate_time (const axutil_env_t *env, int ttl, axis2_bool_t with_millisecond)
AXIS2_EXTERN axis2_status_t rampart_compare_date_time (const axutil_env_t *env, axis2_char_t *dt1, axis2_char_t *dt2)

Function Documentation

AXIS2_EXTERN rampart_authn_provider_status_t rampart_authenticate_un_pw ( const axutil_env_t *  env,
rampart_authn_provider_t *  authp,
const axis2_char_t *  username,
const axis2_char_t *  password,
const axis2_char_t *  nonce,
const axis2_char_t *  created,
const axis2_char_t *  password_type,
axis2_msg_ctx_t *  msg_ctx 
)

Call auth module

Parameters:
env pointer to environment struct
authp the authentication module
username the username in the UsernameToken
password the password in the UsernameToken
nonce the nonce in the UsernameToken. Can be NULL if plain text password is used.
created created time in UsernameToken. Can be NULL if plain text password is used.
password_type the type of the password. either plain text of digest
msg_ctx the message context
Returns:
status of the operation

AXIS2_EXTERN rampart_credentials_status_t rampart_call_credentials ( const axutil_env_t *  env,
rampart_credentials_t *  cred_module,
axis2_msg_ctx_t *  ctx,
axis2_char_t **  username,
axis2_char_t **  password 
)

Call credentials module User MUST free memory of username and password

Parameters:
env pointer to environment struct
cred_module the credentails module
ctx the message context
username reference to the returned username
password reference to the returned password
Returns:
the status of the operation

AXIS2_EXTERN axis2_char_t* rampart_callback_password ( const axutil_env_t *  env,
rampart_callback_t *  callback_module,
const axis2_char_t *  username 
)

Gets the password of given user. the environment callback module structure the name of the user to get the password

Returns:
the password for the user or NULL if failed

AXIS2_EXTERN axis2_char_t* rampart_callback_pkcs12_password ( const axutil_env_t *  env,
rampart_callback_t *  callback_module,
const axis2_char_t *  username 
)

Get the password for pkcs12 key store. pointer to environment struct pointer to rampart callback module name of the pkcs12 owner

Returns:
the password for the user or NULL if username is incorrect

AXIS2_EXTERN axis2_status_t rampart_compare_date_time ( const axutil_env_t *  env,
axis2_char_t *  dt1,
axis2_char_t *  dt2 
)

Check if < . if not returns a false

Parameters:
env pointer to environment struct
dt1 date time 1.
dt2 date time 2.
Returns:
AXIS2_SUCCESS if dt1 < dt2. AXIS2_FALSE otherwise

AXIS2_EXTERN axis2_char_t* rampart_generate_time ( const axutil_env_t *  env,
int  ttl,
axis2_bool_t  with_millisecond 
)

Generates time. User MUST free memory

Parameters:
ttl Time to live. The time difference between created and expired in mili seconds.
with_millisecond shows whether millisecond precision is needed or not
Returns:
generated time

AXIS2_EXTERN rampart_authn_provider_t* rampart_load_auth_module ( const axutil_env_t *  env,
axis2_char_t *  auth_module_name 
)

Load authentication module User MUST free memory

Parameters:
env pointer to environment struct
auth_module_name name of the authentication module
Returns:
created athenticaiton module

AXIS2_EXTERN rampart_credentials_t* rampart_load_credentials_module ( const axutil_env_t *  env,
axis2_char_t *  cred_module_name 
)

Load the credentials module User MUST free memory

Parameters:
env pointer to environment struct
cred_module_name name of the credentails module to be loaded
Returns:
the loaded credentails module

AXIS2_EXTERN rampart_callback_t* rampart_load_pwcb_module ( const axutil_env_t *  env,
axis2_char_t *  callback_module_name 
)

Load the password callback module User MUST free memory

Parameters:
env pointer to environment struct the name of the callback module
Returns:
the loaded callback module

AXIS2_EXTERN rampart_replay_detector_t* rampart_load_replay_detector ( const axutil_env_t *  env,
axis2_char_t *  replay_detector_name 
)

Load replay detection module User MUST free memory

Parameters:
env pointer to environment struct
replay_detector_name name of the replay detection module
Returns:
created replay detection module

AXIS2_EXTERN rampart_sct_provider_t* rampart_load_sct_provider ( const axutil_env_t *  env,
axis2_char_t *  sct_provider_name 
)

Load security context token provider User MUST free memory

Parameters:
env pointer to environment struct
sct_provider_name name of the security context token provider
Returns:
created security context token provider module


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__oxs__encryption.html0000644000076500007650000001516111202454456024312 0ustar shankarshankar Rampart/C: Encryption

Encryption
[OMXMLSecurity]


Functions

AXIS2_EXTERN axis2_status_t oxs_encryption_symmetric_crypt (const axutil_env_t *env, oxs_ctx_t *enc_ctx, oxs_buffer_t *input, oxs_buffer_t *result)
AXIS2_EXTERN axis2_status_t oxs_encryption_asymmetric_crypt (const axutil_env_t *env, oxs_asym_ctx_t *asym_ctx, oxs_buffer_t *input, oxs_buffer_t *result)

Function Documentation

AXIS2_EXTERN axis2_status_t oxs_encryption_asymmetric_crypt ( const axutil_env_t *  env,
oxs_asym_ctx_t *  asym_ctx,
oxs_buffer_t input,
oxs_buffer_t result 
)

En/Decrypts given data buffer deoending on the information avalable in the encryption context using an asymmetric key, which can be a publik key extracted from a certificate or a private key. The resulted data will be placed on the result buffer. Data are not valid only if the method returns AXIS2_SUCCESS pointer to the OMXMLSec asymmetric encryption context struct pointer to environment struct the input buffer

Returns:
the ouput or the ressulted data buffer

AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_encryption_symmetric_crypt ( const axutil_env_t *  env,
oxs_ctx_t enc_ctx,
oxs_buffer_t input,
oxs_buffer_t result 
)

En/Decrypts given data buffer depending on the information avalable in the encryption context using a symmetric key. The resulted data will be placed on the result buffer. Data are not valid only if the method returns AXIS2_SUCCESS pointer to the OMXMLSec symmetric encryption context struct pointer to environment struct the input buffer

Returns:
the ouput or the ressulted data buffer

AXIS2_SUCCESS on success, else AXIS2_FAILURE


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/annotated.html0000644000076500007650000000270011202454457021466 0ustar shankarshankar Rampart/C: Class List

Class List

Here are the classes, structs, unions and interfaces with brief descriptions:
_oxs_error_description

Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__oxs__derivation.html0000644000076500007650000003410511202454456024263 0ustar shankarshankar Rampart/C: Derivation

Derivation
[OMXMLSecurity]


Functions

AXIS2_EXTERN axis2_status_t oxs_derivation_derive_key (const axutil_env_t *env, oxs_key_t *secret, oxs_key_t *derived_key, axis2_bool_t build_fresh)
AXIS2_EXTERN axiom_node_t * oxs_derivation_build_derived_key_token (const axutil_env_t *env, oxs_key_t *derived_key, axiom_node_t *parent, axis2_char_t *stref_uri, axis2_char_t *stref_val_type, axis2_char_t *wsc_ns_uri)
AXIS2_EXTERN axiom_node_t * oxs_derivation_build_derived_key_token_with_stre (const axutil_env_t *env, oxs_key_t *derived_key, axiom_node_t *parent, axiom_node_t *stre, axis2_char_t *wsc_ns_uri)
AXIS2_EXTERN oxs_key_toxs_derivation_extract_derived_key_from_token (const axutil_env_t *env, axiom_node_t *dk_token, axiom_node_t *root_node, oxs_key_t *session_key)

Function Documentation

AXIS2_EXTERN axiom_node_t* oxs_derivation_build_derived_key_token ( const axutil_env_t *  env,
oxs_key_t derived_key,
axiom_node_t *  parent,
axis2_char_t *  stref_uri,
axis2_char_t *  stref_val_type,
axis2_char_t *  wsc_ns_uri 
)

Build the <wsc:DerivedKeyToken> depending a given derived key The token will be attached to the parent

Parameters:
env pointer to environment struct
derived_key The derived key to be used to get information
parent The parent node to be attached to
stref_uri Security Token Reference URI
stref_val_type Security Token Reference Valut Type
wsc_ns_uri namespace uri of ws-secconv version
Returns:
the built axiom node

AXIS2_EXTERN axiom_node_t* oxs_derivation_build_derived_key_token_with_stre ( const axutil_env_t *  env,
oxs_key_t derived_key,
axiom_node_t *  parent,
axiom_node_t *  stre,
axis2_char_t *  wsc_ns_uri 
)

Build the <wsc:DerivedKeyToken> depending a given derived key The token will be attached to the parent

Parameters:
env pointer to environment struct
derived_key The derived key to be used to get information
parent The parent node to be attached to
stre Security Toekn Reference element
wsc_ns_uri namespace uri of ws-secconv version
Returns:
the built axiom node

AXIS2_EXTERN axis2_status_t oxs_derivation_derive_key ( const axutil_env_t *  env,
oxs_key_t secret,
oxs_key_t derived_key,
axis2_bool_t  build_fresh 
)

Derive Key depending on the secret key Caller must free memory for derived key

Parameters:
env pointer to environment struct
secret The secret is the shared secret that is exchanged (note that if two secrets were securely exchanged, possible as part of an initial exchange, they are concatenated in the order they were sent/received)
derived_key The derived key. Caller must create and free
build_fresh Whether to build fresh or build using details in derived key (in case of recovering the derive key from xml)
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN oxs_key_t* oxs_derivation_extract_derived_key_from_token ( const axutil_env_t *  env,
axiom_node_t *  dk_token,
axiom_node_t *  root_node,
oxs_key_t session_key 
)

Extract information from an AXIOM node of typ <wsse:DerivedKeyToken> and build a key If the (optional) session_key is NULL then extract it form the refered EncryptedKey. Otherwise use it to Derive a new key using information available in the dk_token.

Parameters:
env pointer to environment struct
dk_token The <wsse:DerivedKeyToken> axiom node
root_node The root node, which the search scope limited to
session_key The session key, which is the base for the key derivation.
return the derived key on SUCCESS or NULL on failure


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/oxs__key__mgr_8h-source.html0000644000076500007650000005572511202454454024246 0ustar shankarshankar Rampart/C: oxs_key_mgr.h Source File

oxs_key_mgr.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef OXS_KEY_MGR_H
00019 #define OXS_KEY_MGR_H
00020 
00021 
00032 #include <axis2_defines.h>
00033 #include <oxs_ctx.h>
00034 #include <oxs_asym_ctx.h>
00035 #include <axutil_env.h>
00036 #include <axutil_qname.h>
00037 #include <oxs_x509_cert.h>
00038 #include <openssl_pkey.h>
00039 #include <openssl_x509.h>
00040 #include <openssl_pkcs12.h>
00041 #include <axis2_key_type.h>
00042 #include <openssl_pkcs12.h>
00043 #include <openssl_pkcs12_keystore.h>
00044 
00045 #ifdef __cplusplus
00046 extern "C"
00047 {
00048 #endif
00049 
00050         typedef struct oxs_key_mgr_t oxs_key_mgr_t;
00051         /* Enum which is used to specify the key format. */
00052         typedef enum  {
00053                 OXS_KEY_MGR_FORMAT_UNKNOWN=0,
00054                 OXS_KEY_MGR_FORMAT_PEM,
00055                 OXS_KEY_MGR_FORMAT_PKCS12
00056         }oxs_key_mgr_format_t;
00057         
00058 #if 0
00059 
00066     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00067         oxs_key_mgr_load_key(
00068                 oxs_key_mgr_t *key_mgr,
00069                 const axutil_env_t *env,
00070             oxs_asym_ctx_t *ctx);
00071 
00072 #endif
00073 
00084     AXIS2_EXTERN openssl_pkey_t* AXIS2_CALL
00085     oxs_key_mgr_load_private_key_from_string(const axutil_env_t *env,
00086             axis2_char_t *pem_buf, /*in PEM format*/
00087             axis2_char_t *password);
00095     AXIS2_EXTERN openssl_pkey_t* AXIS2_CALL
00096     oxs_key_mgr_load_private_key_from_pem_file(const axutil_env_t *env,
00097             axis2_char_t *file_name,
00098             axis2_char_t *password);
00099 
00109     AXIS2_EXTERN oxs_x509_cert_t* AXIS2_CALL
00110     oxs_key_mgr_load_x509_cert_from_string(const axutil_env_t *env,
00111                                            axis2_char_t *pem_buf);
00112 
00119     AXIS2_EXTERN oxs_x509_cert_t* AXIS2_CALL
00120     oxs_key_mgr_load_x509_cert_from_pem_file(const axutil_env_t *env,
00121             axis2_char_t *filename);
00122 
00132     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00133     oxs_key_mgr_read_pkcs12_key_store(const axutil_env_t *env,
00134                                       axis2_char_t *pkcs12_file,
00135                                       axis2_char_t *password,
00136                                       oxs_x509_cert_t **cert,
00137                                       openssl_pkey_t **prv_key);
00138         
00144         AXIS2_EXTERN oxs_key_mgr_t * AXIS2_CALL
00145         oxs_key_mgr_create(const axutil_env_t *env);
00146 
00153         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00154         oxs_key_mgr_free(oxs_key_mgr_t *key_mgr, 
00155                                         const axutil_env_t *env);
00156         
00164         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00165         oxs_key_mgr_set_prv_key_password(
00166                 oxs_key_mgr_t *key_mgr,
00167                 const axutil_env_t *env,
00168                 axis2_char_t *password);
00169 
00176         AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00177         oxs_key_mgr_get_prv_key_password(
00178                 oxs_key_mgr_t *key_mgr,
00179                 const axutil_env_t *env);
00180 
00187         AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00188         oxs_key_mgr_get_private_key_file(
00189                 oxs_key_mgr_t *key_mgr,
00190                 const axutil_env_t *env);
00191 
00192         AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00193         oxs_key_mgr_get_certificate_file(
00194                 oxs_key_mgr_t *key_mgr,
00195                 const axutil_env_t *env);
00196 
00197         AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00198         oxs_key_mgr_get_reciever_certificate_file(
00199                 oxs_key_mgr_t *key_mgr,
00200                 const axutil_env_t *env);
00201 
00202         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00203         oxs_key_mgr_set_private_key_file(
00204                 oxs_key_mgr_t *key_mgr,
00205                 const axutil_env_t *env,
00206                 axis2_char_t *file_name);
00207 
00208         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00209         oxs_key_mgr_set_certificate_file(
00210                 oxs_key_mgr_t *key_mgr,
00211                 const axutil_env_t *env,
00212                 axis2_char_t *file_name);
00213 
00214         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00215         oxs_key_mgr_set_reciever_certificate_file(
00216                 oxs_key_mgr_t *key_mgr,
00217                 const axutil_env_t *env,
00218                 axis2_char_t *file_name);
00219 
00220 
00221         AXIS2_EXTERN void *AXIS2_CALL
00222         oxs_key_mgr_get_certificate(
00223                 oxs_key_mgr_t *key_mgr,
00224                 const axutil_env_t *env);
00225 
00226         AXIS2_EXTERN axis2_key_type_t AXIS2_CALL
00227         oxs_key_mgr_get_certificate_type(
00228                 oxs_key_mgr_t *key_mgr,
00229                 const axutil_env_t *env);
00230 
00231         AXIS2_EXTERN void *AXIS2_CALL
00232         oxs_key_mgr_get_prv_key(
00233                 oxs_key_mgr_t *key_mgr,
00234                 const axutil_env_t *env);
00235 
00236         AXIS2_EXTERN axis2_key_type_t AXIS2_CALL
00237         oxs_key_mgr_get_prv_key_type(
00238                 oxs_key_mgr_t *key_mgr,
00239                 const axutil_env_t *env);
00240 
00241         AXIS2_EXTERN void *AXIS2_CALL
00242         oxs_key_mgr_get_receiver_certificate(
00243                 oxs_key_mgr_t *key_mgr,
00244                 const axutil_env_t *env);
00245 
00246         AXIS2_EXTERN axis2_key_type_t AXIS2_CALL
00247         oxs_key_mgr_get_receiver_certificate_type(
00248                 oxs_key_mgr_t *key_mgr,
00249                 const axutil_env_t *env);
00250 
00251         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00252         oxs_key_mgr_set_certificate(
00253                 oxs_key_mgr_t *key_mgr,
00254                 const axutil_env_t *env, 
00255                 void *certificate);
00256 
00257         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00258         oxs_key_mgr_set_certificate_type(
00259                 oxs_key_mgr_t *key_mgr,
00260                 const axutil_env_t *env,
00261                 axis2_key_type_t type);
00262 
00263         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00264         oxs_key_mgr_set_prv_key(
00265                 oxs_key_mgr_t *key_mgr,
00266                 const axutil_env_t *env, 
00267                 void *key);
00268 
00269         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00270         oxs_key_mgr_set_prv_key_type(
00271                 oxs_key_mgr_t *key_mgr,
00272                 const axutil_env_t *env,
00273                 axis2_key_type_t type);
00274 
00275         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00276         oxs_key_mgr_set_receiver_certificate(
00277                 oxs_key_mgr_t *key_mgr,
00278                 const axutil_env_t *env,
00279                 void *certificate);
00280 
00281         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00282         oxs_key_mgr_set_receiver_certificate_type(
00283                 oxs_key_mgr_t *key_mgr,
00284                 const axutil_env_t *env,
00285                 axis2_key_type_t type);
00286         
00287         AXIS2_EXTERN oxs_key_mgr_format_t AXIS2_CALL
00288         oxs_key_mgr_get_format(
00289                 oxs_key_mgr_t *key_mgr,
00290                 const axutil_env_t *env);
00291 
00292         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00293         oxs_key_mgr_set_format(
00294                 oxs_key_mgr_t *key_mgr,
00295                 const axutil_env_t *env,
00296                 oxs_key_mgr_format_t format);
00297 
00298         AXIS2_EXTERN void * AXIS2_CALL
00299         oxs_key_mgr_get_pem_buf(
00300                 oxs_key_mgr_t *key_mgr,
00301                 const axutil_env_t *env);
00302 
00303         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00304         oxs_key_mgr_set_pem_buf(
00305                 oxs_key_mgr_t *key_mgr,
00306                 const axutil_env_t *env,
00307                 void *pem_buf);
00308         
00309         AXIS2_EXTERN pkcs12_keystore_t* AXIS2_CALL
00310         oxs_key_mgr_get_key_store(
00311                 oxs_key_mgr_t *key_mgr,
00312                 const axutil_env_t *env);
00313         
00314         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00315         oxs_key_mgr_set_key_store(
00316                 oxs_key_mgr_t *key_mgr,
00317                 const axutil_env_t *env,
00318                 pkcs12_keystore_t *key_store);
00319         
00320         AXIS2_EXTERN void * AXIS2_CALL
00321         oxs_key_mgr_get_key_store_buff(
00322             oxs_key_mgr_t *key_mgr,
00323             const axutil_env_t *env);
00324         
00325         AXIS2_EXTERN oxs_x509_cert_t * AXIS2_CALL
00326         oxs_key_mgr_get_receiver_certificate_from_ski(
00327             oxs_key_mgr_t *key_mgr,
00328             const axutil_env_t *env,
00329             axis2_char_t *ski);
00330         
00331         AXIS2_EXTERN oxs_x509_cert_t * AXIS2_CALL
00332         oxs_key_mgr_get_receiver_certificate_from_issuer_serial(
00333             oxs_key_mgr_t *key_mgr,
00334             const axutil_env_t *env,
00335             axis2_char_t *issuer,
00336             int serial);
00337         
00338         AXIS2_EXTERN int AXIS2_CALL
00339         oxs_key_mgr_get_key_store_buff_len(
00340             oxs_key_mgr_t *key_mgr,
00341             const axutil_env_t *env);
00342         
00343         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00344         oxs_key_mgr_set_key_store_buff(
00345             oxs_key_mgr_t *key_mgr,
00346             const axutil_env_t *env,
00347             void *key_store_buf,
00348             int len);
00349 
00350         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00351         oxs_key_mgr_increment_ref(
00352             oxs_key_mgr_t *key_mgr, 
00353             const axutil_env_t *env);
00354 
00355         
00357 #ifdef __cplusplus
00358 }
00359 #endif
00360 
00361 #endif                          /* OXS_KEY_MGR_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/index.html0000644000076500007650000000336111202454454020621 0ustar shankarshankar Rampart/C: Rampart/C API Documentation

Rampart/C API Documentation

1.3.0

Introduction

This is the API documetation of Apache Rampart/C, which is the security module for Apache Axis2/C. It features in many ways to protect SOAP messages exchanged. This includes SOAP message encryption and signature as specified in WS-Security Specification. In addition Apache Rampart/C configurations are based on security policy assertions as per WS-Security Policy specification

We welcome your feedback on this implementation and documentation. Please send your feedback to rampart-c-dev@ws.apache.org


Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__oxs__iv.html0000644000076500007650000000661411202454456022541 0ustar shankarshankar Rampart/C: Initial Vector

Initial Vector
[OMXMLSecurity]


Defines

#define OXS_IV_DEFAULT   OPENSSL_DEFAULT_IV16

Functions

AXIS2_EXTERN axis2_char_t * oxs_iv_generate_for_algo (const axutil_env_t *env, axis2_char_t *key_algo)

Function Documentation

AXIS2_EXTERN axis2_char_t* oxs_iv_generate_for_algo ( const axutil_env_t *  env,
axis2_char_t *  key_algo 
)

Generates an Initial Vector(IV) for the given algorithm

Parameters:
env pointer to environment struct
key_algo the algorithm
Returns:
the generated IV


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/rahas__request__processor_8h.html0000644000076500007650000000377611202454455025367 0ustar shankarshankar Rampart/C: rahas_request_processor.h File Reference

rahas_request_processor.h File Reference

Process requests related to secure conversation. More...

Go to the source code of this file.

Functions

AXIS2_EXTERN axis2_status_t rahas_process_issue_request (const axutil_env_t *env, trust_rst_t *rst, trust_rstr_t *rstr, axis2_msg_ctx_t *msg_ctx, int trust_version)


Detailed Description

Process requests related to secure conversation.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__openssl__cipher__ctx.html0000644000076500007650000005533211202454456025265 0ustar shankarshankar Rampart/C: OpenSSL Cipher Context

OpenSSL Cipher Context
[OpenSSL wrapper]


Typedefs

typedef struct openssl_cipher_ctx_t openssl_cipher_ctx_t

Functions

axis2_status_t openssl_cipher_ctx_free (openssl_cipher_ctx_t *ctx, const axutil_env_t *env)
const EVP_CIPHER * openssl_cipher_ctx_get_cipher (openssl_cipher_ctx_t *ctx, const axutil_env_t *env)
oxs_key_topenssl_cipher_ctx_get_key (openssl_cipher_ctx_t *ctx, const axutil_env_t *env)
axis2_char_t * openssl_cipher_ctx_get_iv (openssl_cipher_ctx_t *ctx, const axutil_env_t *env)
axis2_char_t * openssl_cipher_ctx_get_pad (openssl_cipher_ctx_t *ctx, const axutil_env_t *env)
axis2_status_t openssl_cipher_ctx_set_cipher (openssl_cipher_ctx_t *ctx, const axutil_env_t *env, const EVP_CIPHER *)
axis2_status_t openssl_cipher_ctx_set_key (openssl_cipher_ctx_t *ctx, const axutil_env_t *env, oxs_key_t *key)
axis2_status_t openssl_cipher_ctx_set_iv (openssl_cipher_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *iv)
axis2_status_t openssl_cipher_ctx_set_pad (openssl_cipher_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *pad)
AXIS2_EXTERN openssl_cipher_ctx_topenssl_cipher_ctx_create (const axutil_env_t *env)

Typedef Documentation

Type name for struct openssl_cipher_ctx


Function Documentation

AXIS2_EXTERN openssl_cipher_ctx_t* openssl_cipher_ctx_create ( const axutil_env_t *  env  ) 

Create a new cipher context. All the fields carry NULL values at the begining.

Parameters:
env pointer to environment struct
Returns:
Fresh Cipher Context

axis2_status_t openssl_cipher_ctx_free ( openssl_cipher_ctx_t ctx,
const axutil_env_t *  env 
)

Free function

Parameters:
ctx to the openssl cipher ctx struct
env pointer to environment struct
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

const EVP_CIPHER* openssl_cipher_ctx_get_cipher ( openssl_cipher_ctx_t ctx,
const axutil_env_t *  env 
)

Given the ctx return the CIPHER

Parameters:
ctx to the openssl cipher ctx struct
env pointer to environment struct
Returns:
RVP_CIPHER the cipher

axis2_char_t* openssl_cipher_ctx_get_iv ( openssl_cipher_ctx_t ctx,
const axutil_env_t *  env 
)

Given the ctx return iv

Parameters:
ctx to the openssl cipher ctx struct
env pointer to environment struct
Returns:
iv

oxs_key_t* openssl_cipher_ctx_get_key ( openssl_cipher_ctx_t ctx,
const axutil_env_t *  env 
)

Given the ctx return key

Parameters:
ctx to the openssl cipher ctx struct
env pointer to environment struct
Returns:
key

axis2_char_t* openssl_cipher_ctx_get_pad ( openssl_cipher_ctx_t ctx,
const axutil_env_t *  env 
)

Given the ctx return the padding

Parameters:
ctx to the openssl cipher ctx struct
env pointer to environment struct
Returns:
padding

axis2_status_t openssl_cipher_ctx_set_cipher ( openssl_cipher_ctx_t ctx,
const axutil_env_t *  env,
const EVP_CIPHER *   
)

Set the Cipher for the cipher context.

Parameters:
ctx to the openssl cipher ctx struct
env pointer to environment struct
EVP_CIPHER The pointer for the Cipher to be set in the cipher context
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

axis2_status_t openssl_cipher_ctx_set_iv ( openssl_cipher_ctx_t ctx,
const axutil_env_t *  env,
axis2_char_t *  iv 
)

Set the Initial Value for the cipher context.

Parameters:
ctx to the openssl cipher ctx struct
env pointer to environment struct
iv The Initial Value to be set in the cipher context
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

axis2_status_t openssl_cipher_ctx_set_key ( openssl_cipher_ctx_t ctx,
const axutil_env_t *  env,
oxs_key_t key 
)

Set the Key for the cipher context.

Parameters:
ctx to the openssl cipher ctx struct
env pointer to environment struct
key The key to be set in the cipher context
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

axis2_status_t openssl_cipher_ctx_set_pad ( openssl_cipher_ctx_t ctx,
const axutil_env_t *  env,
axis2_char_t *  pad 
)

Set the pad for the cipher context.

Parameters:
ctx to the openssl cipher ctx struct
env pointer to environment struct
pad the pad to be set in the cipher context
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/oxs__ctx_8h.html0000644000076500007650000003015211202454455021736 0ustar shankarshankar Rampart/C: oxs_ctx.h File Reference

oxs_ctx.h File Reference

Keeps configurations for the OMXMLSecurity. More...

#include <axis2_defines.h>
#include <axutil_env.h>
#include <axiom_node.h>
#include <oxs_buffer.h>
#include <oxs_key.h>

Go to the source code of this file.

Typedefs

typedef struct oxs_ctx_t oxs_ctx_t

Enumerations

enum  oxs_ctx_operation_t { OXS_CTX_OPERATION_NONE = 0, OXS_CTX_OPERATION_ENCRYPT, OXS_CTX_OPERATION_DECRYPT }
enum  oxs_ctx_mode_t { OXS_CTX_MODE_ENCRYPTED_DATA = 0, OXS_CTX_MODE_ENCRYPTED_KEY }

Functions

AXIS2_EXTERN axis2_status_t oxs_ctx_free (oxs_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN oxs_ctx_mode_t oxs_ctx_get_mode (oxs_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN oxs_ctx_operation_t oxs_ctx_get_operation (oxs_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN oxs_key_toxs_ctx_get_key (oxs_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_ctx_get_id (oxs_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_ctx_get_type (oxs_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_ctx_get_mime_type (oxs_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_ctx_get_encoding (oxs_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_ctx_get_recipient (oxs_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_ctx_get_ref_key_name (oxs_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_ctx_get_enc_mtd_algorithm (oxs_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_ctx_get_input_data (oxs_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_ctx_set_mode (oxs_ctx_t *ctx, const axutil_env_t *env, oxs_ctx_mode_t mode)
AXIS2_EXTERN axis2_status_t oxs_ctx_set_operation (oxs_ctx_t *ctx, const axutil_env_t *env, oxs_ctx_operation_t operation)
AXIS2_EXTERN axis2_status_t oxs_ctx_set_key (oxs_ctx_t *ctx, const axutil_env_t *env, oxs_key_t *key)
AXIS2_EXTERN axis2_status_t oxs_ctx_set_id (oxs_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *id)
AXIS2_EXTERN axis2_status_t oxs_ctx_set_type (oxs_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *type)
AXIS2_EXTERN axis2_status_t oxs_ctx_set_mime_type (oxs_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *mime_type)
AXIS2_EXTERN axis2_status_t oxs_ctx_set_encoding (oxs_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *encoding)
AXIS2_EXTERN axis2_status_t oxs_ctx_set_recipient (oxs_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *recipient)
AXIS2_EXTERN axis2_status_t oxs_ctx_set_ref_key_name (oxs_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *ref_key_name)
AXIS2_EXTERN axis2_status_t oxs_ctx_set_enc_mtd_algorithm (oxs_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *enc_mtd_algorithm)
AXIS2_EXTERN axis2_status_t oxs_ctx_set_input_data (oxs_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *input_data)
AXIS2_EXTERN oxs_ctx_toxs_ctx_create (const axutil_env_t *env)


Detailed Description

Keeps configurations for the OMXMLSecurity.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/rampart__timestamp__token_8h.html0000644000076500007650000000456611202454456025352 0ustar shankarshankar Rampart/C: rampart_timestamp_token.h File Reference

rampart_timestamp_token.h File Reference

Timestamp token related functions. More...

#include <axutil_env.h>

Go to the source code of this file.

Functions

axis2_status_t rampart_timestamp_token_build (const axutil_env_t *env, axiom_node_t *sec_node, int ttl, axis2_bool_t with_millisecond)
axis2_status_t rampart_timestamp_token_validate (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axiom_node_t *ts_node, int clock_skew_buffer)


Detailed Description

Timestamp token related functions.


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/oxs__asym__ctx_8h.html0000644000076500007650000001620611202454455023132 0ustar shankarshankar Rampart/C: oxs_asym_ctx.h File Reference

oxs_asym_ctx.h File Reference

Keeps information relavent for asymmetric encryption. More...

#include <axis2_defines.h>
#include <axutil_env.h>
#include <axiom_node.h>
#include <oxs_x509_cert.h>
#include <openssl_pkey.h>

Go to the source code of this file.

Typedefs

typedef struct oxs_asym_ctx_t oxs_asym_ctx_t

Enumerations

enum  oxs_asym_ctx_format_t { OXS_ASYM_CTX_FORMAT_UNKNOWN = 0, OXS_ASYM_CTX_FORMAT_PEM, OXS_ASYM_CTX_FORMAT_PKCS12 }
enum  oxs_asym_ctx_operation_t { OXS_ASYM_CTX_OPERATION_PUB_ENCRYPT = 0, OXS_ASYM_CTX_OPERATION_PRV_DECRYPT, OXS_ASYM_CTX_OPERATION_PUB_DECRYPT, OXS_ASYM_CTX_OPERATION_PRV_ENCRYPT }

Functions

AXIS2_EXTERN oxs_asym_ctx_t * oxs_asym_ctx_create (const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_asym_ctx_free (oxs_asym_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_asym_ctx_get_algorithm (const oxs_asym_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_asym_ctx_get_st_ref_pattern (const oxs_asym_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN
oxs_asym_ctx_operation_t 
oxs_asym_ctx_get_operation (const oxs_asym_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN openssl_pkey_toxs_asym_ctx_get_private_key (const oxs_asym_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN oxs_x509_cert_t * oxs_asym_ctx_get_certificate (const oxs_asym_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_asym_ctx_set_algorithm (oxs_asym_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *algorithm)
AXIS2_EXTERN axis2_status_t oxs_asym_ctx_set_st_ref_pattern (oxs_asym_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *st_ref_pattern)
AXIS2_EXTERN axis2_status_t oxs_asym_ctx_set_operation (oxs_asym_ctx_t *ctx, const axutil_env_t *env, oxs_asym_ctx_operation_t operation)
AXIS2_EXTERN axis2_status_t oxs_asym_ctx_set_certificate (oxs_asym_ctx_t *ctx, const axutil_env_t *env, oxs_x509_cert_t *certificate)
AXIS2_EXTERN axis2_status_t oxs_asym_ctx_set_private_key (oxs_asym_ctx_t *asym_ctx, const axutil_env_t *env, openssl_pkey_t *private_key)


Detailed Description

Keeps information relavent for asymmetric encryption.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/rampart__sct__provider__utility_8h.html0000644000076500007650000001427211202454456026567 0ustar shankarshankar Rampart/C: rampart_sct_provider_utility.h File Reference

rampart_sct_provider_utility.h File Reference

Utility methods using Security context token provider module. More...

#include <axis2_defines.h>
#include <axutil_env.h>
#include <axis2_msg_ctx.h>
#include <axis2_conf_ctx.h>
#include <rampart_context.h>
#include <secconv_security_context_token.h>
#include <axutil_hash.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN oxs_buffer_tsct_provider_get_secret (const axutil_env_t *env, rp_property_t *token, axis2_bool_t is_encryption, rampart_context_t *rampart_context, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN oxs_buffer_tsct_provider_get_secret_using_id (const axutil_env_t *env, axis2_char_t *sct_id, rampart_context_t *rampart_context, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN axiom_node_t * sct_provider_get_token (const axutil_env_t *env, rp_property_t *token, axis2_bool_t is_encryption, rampart_context_t *rampart_context, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN axiom_node_t * sct_provider_get_attached_reference (const axutil_env_t *env, rp_property_t *token, axis2_bool_t is_encryption, rampart_context_t *rampart_context, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN axiom_node_t * sct_provider_get_unattached_reference (const axutil_env_t *env, rp_property_t *token, axis2_bool_t is_encryption, rampart_context_t *rampart_context, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN axis2_status_t sct_provider_validate_security_context_token (const axutil_env_t *env, axiom_node_t *sct_node, rampart_context_t *rampart_context, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN void * sct_provider_obtain_sct_default (const axutil_env_t *env, axis2_bool_t is_encryption, axis2_msg_ctx_t *msg_ctx, axis2_char_t *sct_id, int sct_id_type, void *user_params)
AXIS2_EXTERN axis2_status_t sct_provider_store_sct_default (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axis2_char_t *sct_global_id, axis2_char_t *sct_local_id, void *sct, void *user_params)
AXIS2_EXTERN axis2_status_t sct_provider_delete_sct_default (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axis2_char_t *sct_id, int sct_id_type, void *user_params)
AXIS2_EXTERN axis2_status_t sct_provider_validate_sct_default (const axutil_env_t *env, axiom_node_t *sct_node, axis2_msg_ctx_t *msg_ctx, void *user_params)


Detailed Description

Utility methods using Security context token provider module.


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/openssl__x509_8h-source.html0000644000076500007650000002534511202454454024024 0ustar shankarshankar Rampart/C: openssl_x509.h Source File

openssl_x509.h

Go to the documentation of this file.
00001 /*
00002  *   Copyright 2003-2004 The Apache Software Foundation.
00003  *
00004  *   Licensed under the Apache License, Version 2.0 (the "License");
00005  *   you may not use this file except in compliance with the License.
00006  *   You may obtain a copy of the License at
00007  *
00008  *       http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  *   Unless required by applicable law or agreed to in writing, software
00011  *   distributed under the License is distributed on an "AS IS" BASIS,
00012  *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  *   See the License for the specific language governing permissions and
00014  *   limitations under the License.
00015  */
00016 
00017 #include <openssl/rand.h>
00018 #include <openssl/evp.h>
00019 #include <openssl/pem.h>
00020 #include <openssl/bio.h>
00021 #include <openssl/rand.h>
00022 #include <openssl_constants.h>
00023 #include <openssl_pkey.h>
00024 #include <axis2_util.h>
00025 #include <openssl/pkcs12.h>
00026 #include <oxs_error.h>
00031 #ifndef OPENSSL_X509_H
00032 #define OPENSSL_X509_H
00033 
00034 #ifdef __cplusplus
00035 extern "C" {
00036 #endif
00037 
00043     typedef enum {
00044         OPENSSL_X509_FORMAT_PEM = 0,
00045         OPENSSL_X509_FORMAT_DER,
00046         OPENSSL_X509_FORMAT_PKCS12
00047     } openssl_x509_format_t;
00048 
00049     typedef enum {
00050         OPENSSL_X509_INFO_SUBJECT = 0,
00051         OPENSSL_X509_INFO_ISSUER ,
00052         OPENSSL_X509_INFO_VALID_FROM ,
00053         OPENSSL_X509_INFO_VALID_TO ,
00054         OPENSSL_X509_INFO_FINGER ,
00055         OPENSSL_X509_INFO_SIGNATURE ,
00056         OPENSSL_X509_INFO_VERSION ,
00057         OPENSSL_X509_INFO_PUBKEY ,
00058         OPENSSL_X509_INFO_PUBKEY_ALGO ,
00059         OPENSSL_X509_INFO_DATA_CERT,
00060                 OPENSSL_X509_INFO_COMMON_NAME
00061     } openssl_x509_info_type_t;
00062 
00063     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00064     openssl_x509_load_from_buffer(const axutil_env_t *env,
00065                                   axis2_char_t *b64_encoded_buf,
00066                                   X509 **cert);
00067 
00068     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00069     openssl_x509_load_from_pem(const axutil_env_t *env,
00070                                axis2_char_t *filename,
00071                                X509 **cert);
00072 
00073     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00074     openssl_x509_load_from_pkcs12(const axutil_env_t *env,
00075                                   axis2_char_t *filename,
00076                                   axis2_char_t *password,
00077                                   X509 **cert,
00078                                   EVP_PKEY **pkey,
00079                                   STACK_OF(X509) **ca);
00080 
00081     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00082     openssl_x509_load_certificate(const axutil_env_t *env,
00083                                   openssl_x509_format_t format,
00084                                   axis2_char_t *filename,
00085                                   axis2_char_t *password,
00086                                   X509 **cert);
00087 
00088     /*Caller MUST free */
00089     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00090     openssl_x509_get_cert_data(const axutil_env_t *env,
00091                                X509 *cert);
00092 
00093 
00094     AXIS2_EXTERN int AXIS2_CALL
00095     openssl_x509_get_serial(const axutil_env_t *env,
00096                             X509 *cert);
00097 
00098     AXIS2_EXTERN unsigned long AXIS2_CALL
00099     openssl_x509_get_subject_name_hash(const axutil_env_t *env,
00100                                        X509 *cert);
00101 
00102     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00103     openssl_x509_get_pubkey(const axutil_env_t *env,
00104                             X509 *cert,
00105                             EVP_PKEY **pubkey);
00106 
00107     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00108     openssl_x509_get_subject_key_identifier(const axutil_env_t *env,
00109                                             X509 *cert);
00110 
00111     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00112     openssl_x509_get_info(const axutil_env_t *env,
00113                           openssl_x509_info_type_t type,
00114                           X509 *cert);
00115         
00116         AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00117     openssl_x509_get_common_name(
00118         const axutil_env_t *env,
00119         X509 *cert);
00120 
00121     AXIS2_EXTERN void AXIS2_CALL
00122     openssl_x509_print(const axutil_env_t *env,
00123                        X509 *cert);
00124 
00126 #ifdef __cplusplus
00127 }
00128 #endif
00129 
00130 #endif    /* OPENSSL_X509_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/trust__context_8h.html0000644000076500007650000001656211202454456023206 0ustar shankarshankar Rampart/C: trust_context.h File Reference

trust_context.h File Reference

Holds function declarations and data for data. More...

#include <stdio.h>
#include <stdlib.h>
#include <axutil_utils.h>
#include <axutil_string.h>
#include <axutil_base64.h>
#include <axiom_soap.h>
#include <axiom.h>
#include <axis2_msg_ctx.h>
#include <axis2_addr.h>
#include <trust_constants.h>
#include <trust_rst.h>
#include <trust_rstr.h>

Go to the source code of this file.

Typedefs

typedef struct trust_context trust_context_t

Functions

AXIS2_EXTERN trust_context_t * trust_context_create (const axutil_env_t *env)
AXIS2_EXTERN void trust_context_free (trust_context_t *trust_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t trust_context_process_rst (trust_context_t *trust_context, const axutil_env_t *env, axis2_msg_ctx_t *in_msg_ctx)
AXIS2_EXTERN axis2_status_t trust_context_process_rstr (trust_context_t *trust_context, const axutil_env_t *env, axis2_msg_ctx_t *in_msg_ctx)
AXIS2_EXTERN axiom_node_t * trust_context_build_rst_node (trust_context_t *trust_context, const axutil_env_t *env)
AXIS2_EXTERN axiom_node_t * trust_context_build_rstr_node (trust_context_t *trust_context, const axutil_env_t *env)
AXIS2_EXTERN trust_rst_t * trust_context_get_rst (trust_context_t *trust_context, const axutil_env_t *env)
AXIS2_EXTERN trust_rstr_t * trust_context_get_rstr (trust_context_t *trust_context, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t trust_context_set_rst (trust_context_t *trust_context, const axutil_env_t *env, trust_rst_t *rst)
AXIS2_EXTERN axis2_status_t trust_context_set_rstr (trust_context_t *trust_context, const axutil_env_t *env, trust_rstr_t *rstr)


Detailed Description

Holds function declarations and data for data.


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/rampart__crypto__util_8h.html0000644000076500007650000001041111202454456024506 0ustar shankarshankar Rampart/C: rampart_crypto_util.h File Reference

rampart_crypto_util.h File Reference

Crypto related utility module. More...

#include <axutil_utils_defines.h>
#include <axis2_defines.h>
#include <axutil_env.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN axis2_char_t * rampart_crypto_sha1 (const axutil_env_t *env, const axis2_char_t *nonce, const axis2_char_t *created, const axis2_char_t *password)


Detailed Description

Crypto related utility module.


Function Documentation

AXIS2_EXTERN axis2_char_t* rampart_crypto_sha1 ( const axutil_env_t *  env,
const axis2_char_t *  nonce,
const axis2_char_t *  created,
const axis2_char_t *  password 
)

Calculate the hash of concatenated string of nonce+created+password

Parameters:
env pointer to environment variable
nonce randomly created bytes
created created time
password password to be hashed
Returns:
calculated hash on success. NULL otherwise


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__rampart__credentials.html0000644000076500007650000001330111202454457025245 0ustar shankarshankar Rampart/C: Credentials Provider

Credentials Provider


Classes

struct  rampart_credentials_ops
struct  rampart_credentials

Defines

#define RAMPART_CREDENTIALS_FREE(credentials, env)   ((credentials)->ops->free (credentials, env))
#define RAMPART_CREDENTIALS_USERNAME_GET(credentials, env, msg_ctx, username, password)

Typedefs

typedef enum
rampart_credentials_status 
rampart_credentials_status_t
typedef struct
rampart_credentials_ops 
rampart_credentials_ops_t
typedef struct rampart_credentials rampart_credentials_t

Enumerations

enum  rampart_credentials_status {
  RAMPART_CREDENTIALS_PW_FOUND = 0, RAMPART_CREDENTIALS_PW_NOT_FOUND, RAMPART_CREDENTIALS_USER_FOUND, RAMPART_CREDENTIALS_USER_NOT_FOUND,
  RAMPART_CREDENTIALS_GENERAL_ERROR
}

Define Documentation

#define RAMPART_CREDENTIALS_USERNAME_GET ( credentials,
env,
msg_ctx,
username,
password   ) 

Value:

((credentials)->ops->rampart_credentials_username_get( \
            credentials, env, msg_ctx, username, password))


Typedef Documentation

typedef struct rampart_credentials_ops rampart_credentials_ops_t

Struct to get username/password pair


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__oxs__axiom.html0000644000076500007650000011621711202454456023241 0ustar shankarshankar Rampart/C: OXS Axiom

OXS Axiom
[OMXMLSecurity]


Functions

AXIS2_EXTERN axis2_status_t oxs_axiom_add_attribute (const axutil_env_t *env, axiom_node_t *node, axis2_char_t *attribute_ns, axis2_char_t *attribute_ns_uri, axis2_char_t *attribute, axis2_char_t *value)
AXIS2_EXTERN int oxs_axiom_get_number_of_children_with_qname (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *local_name, axis2_char_t *ns_uri, axis2_char_t *prefix)
AXIS2_EXTERN axiom_node_t * oxs_axiom_get_node_by_local_name (const axutil_env_t *env, axiom_node_t *node, axis2_char_t *local_name)
AXIS2_EXTERN axiom_node_t * oxs_axiom_get_node_by_id (const axutil_env_t *env, axiom_node_t *node, axis2_char_t *attr, axis2_char_t *val, axis2_char_t *ns)
AXIS2_EXTERN axis2_char_t * oxs_axiom_get_attribute_value_of_node_by_name (const axutil_env_t *env, axiom_node_t *node, axis2_char_t *attribute_name, axis2_char_t *ns)
AXIS2_EXTERN axis2_char_t * oxs_axiom_get_attribute_val_of_node_by_qname (const axutil_env_t *env, axiom_node_t *node, axutil_qname_t *qname)
AXIS2_EXTERN axiom_node_t * oxs_axiom_get_first_child_node_by_name (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *local_name, axis2_char_t *ns_uri, axis2_char_t *prefix)
AXIS2_EXTERN axis2_char_t * oxs_axiom_get_node_content (const axutil_env_t *env, axiom_node_t *node)
AXIS2_EXTERN axiom_node_t * oxs_axiom_deserialize_node (const axutil_env_t *env, axis2_char_t *buffer)
AXIS2_EXTERN axis2_bool_t oxs_axiom_check_node_name (const axutil_env_t *env, axiom_node_t *node, axis2_char_t *name, axis2_char_t *ns)
AXIS2_EXTERN axis2_status_t oxs_axiom_interchange_nodes (const axutil_env_t *env, axiom_node_t *node_to_move, axiom_node_t *node_before)
AXIS2_EXTERN axis2_status_t oxs_axiom_add_as_the_first_child (const axutil_env_t *env, axiom_node_t *parent, axiom_node_t *child)
AXIS2_EXTERN axiom_node_t * oxs_axiom_get_first_node_by_name_and_attr_val (const axutil_env_t *env, axiom_node_t *node, axis2_char_t *e_name, axis2_char_t *e_ns, axis2_char_t *attr_name, axis2_char_t *attr_val, axis2_char_t *attr_ns)
AXIS2_EXTERN axiom_node_t * oxs_axiom_get_first_node_by_name_and_attr_val_from_xml_doc (const axutil_env_t *env, axiom_node_t *node, axis2_char_t *e_name, axis2_char_t *e_ns, axis2_char_t *attr_name, axis2_char_t *attr_val, axis2_char_t *attr_ns)
AXIS2_EXTERN axiom_node_t * oxs_axiom_clone_node (const axutil_env_t *env, axiom_node_t *node)

Function Documentation

AXIS2_EXTERN axis2_status_t oxs_axiom_add_as_the_first_child ( const axutil_env_t *  env,
axiom_node_t *  parent,
axiom_node_t *  child 
)

Adds as the first child of

Parameters:
env Environment. Must not be null
parent parent node
child child node which has to be the first child of parent
Returns:
status of the operation

AXIS2_EXTERN axis2_status_t oxs_axiom_add_attribute ( const axutil_env_t *  env,
axiom_node_t *  node,
axis2_char_t *  attribute_ns,
axis2_char_t *  attribute_ns_uri,
axis2_char_t *  attribute,
axis2_char_t *  value 
)

Adds an attribute to a particular node

Parameters:
env Environment. MUST NOT be NULL
node the node where the attibute will be added
attribute_ns the the ns_prefix of the attribute
attribute_ns_uri the uri of the attribute
attribute the localname of the attribute
value the value of the attribute
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_bool_t oxs_axiom_check_node_name ( const axutil_env_t *  env,
axiom_node_t *  node,
axis2_char_t *  name,
axis2_char_t *  ns 
)

Checks whether given node is having same name and namespace as given

Parameters:
env Environment. Must not be null
node node to be checked for name and namespace
name local name to be checked against given node
ns namespace to be checked against given node. Can be null. If null, will be omitted
Returns:
AXIS2_TRUE if given name/ns is same as in the node. AXIS2_FALSE otherwise.

AXIS2_EXTERN axiom_node_t* oxs_axiom_clone_node ( const axutil_env_t *  env,
axiom_node_t *  node 
)

Clones the given node.

Parameters:
env Environment. Must not be null
node node to be cloned
Returns:
cloned node if success. NULL otherwise

AXIS2_EXTERN axiom_node_t* oxs_axiom_deserialize_node ( const axutil_env_t *  env,
axis2_char_t *  buffer 
)

Deserialises given buffer and creates the axiom node

Parameters:
env Environment. Must not be NULL
buffer representation of serialised node
Returns:
deserialised node if success. NULL otherwise.

AXIS2_EXTERN axis2_char_t* oxs_axiom_get_attribute_val_of_node_by_qname ( const axutil_env_t *  env,
axiom_node_t *  node,
axutil_qname_t *  qname 
)

Traverse thru the node and its descendents. Check if the node has a particular attribute with qname as in . Returns the attribute value.

Parameters:
env Environment. MUST NOT be NULL,
node the node to be searched
qname the qname of the attribute
Returns:
the attribute value if found, else NULL

AXIS2_EXTERN axis2_char_t* oxs_axiom_get_attribute_value_of_node_by_name ( const axutil_env_t *  env,
axiom_node_t *  node,
axis2_char_t *  attribute_name,
axis2_char_t *  ns 
)

Traverse thru the node and its descendents. Check if the node has a particular attribute with name as in and namespace as in . Returns the attribute value.

Parameters:
env Environment. MUST NOT be NULL,
node the node to be searched
attribute_name the attribute name of the node
ns namespace of the attribute
Returns:
the attribute value if found, else NULL

AXIS2_EXTERN axiom_node_t* oxs_axiom_get_first_child_node_by_name ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  local_name,
axis2_char_t *  ns_uri,
axis2_char_t *  prefix 
)

Check the node and its children. Check if the localname is equal to the given name Note: You may pass the prefix=NULL as the prefix may be different depending on the impl

Parameters:
env Environment. MUST NOT be NULL,
parent the node to be searched
local_name the local name of the node to be searched namespace uri of the node to be searched prefix of the node to be searched. If NULL, node with any prefix will be considered
Returns:
the node if found, else NULL

AXIS2_EXTERN axiom_node_t* oxs_axiom_get_first_node_by_name_and_attr_val ( const axutil_env_t *  env,
axiom_node_t *  node,
axis2_char_t *  e_name,
axis2_char_t *  e_ns,
axis2_char_t *  attr_name,
axis2_char_t *  attr_val,
axis2_char_t *  attr_ns 
)

Traverse thru the node and its children. Check if the element has the given qname and has a id attribute equal to the given value.

Parameters:
env Environment. MUST NOT be NULL,
node the node to be searched
e_name element name
e_ns element namespace. If NULL doesn't consider the namespaces
attr_name the attribute name of the node
attr_val the attribute value of the node
attr_ns the attribute namespace. If NULL doesn't consider namespaces.
Returns:
the node if found, else NULL

AXIS2_EXTERN axiom_node_t* oxs_axiom_get_first_node_by_name_and_attr_val_from_xml_doc ( const axutil_env_t *  env,
axiom_node_t *  node,
axis2_char_t *  e_name,
axis2_char_t *  e_ns,
axis2_char_t *  attr_name,
axis2_char_t *  attr_val,
axis2_char_t *  attr_ns 
)

First find the root of the scope node. Traverse thru the root node and its children. Check if the element has the given qname and has a attribute equal to the given values.

Parameters:
env Environment. MUST NOT be NULL,
node the node to be searched
e_name element name
e_ns element namespace. If NULL doesn't consider the namespaces
attr_name the attribute name of the node
attr_val the attribute value of the node
attr_ns the attribute namespace. If NULL doesn't consider namespaces.
Returns:
the node if found, else NULL

AXIS2_EXTERN axiom_node_t* oxs_axiom_get_node_by_id ( const axutil_env_t *  env,
axiom_node_t *  node,
axis2_char_t *  attr,
axis2_char_t *  val,
axis2_char_t *  ns 
)

Traverse thru the node and its descendents. Check if the node has a particular attibure value, whose attribute name as in and value as in

Parameters:
env Environment. MUST NOT be NULL,
node the node to be searched
attr the attribute name of the node
val the attribute value of the node
ns namespace of the attribute
Returns:
the node if found, else NULL

AXIS2_EXTERN axiom_node_t* oxs_axiom_get_node_by_local_name ( const axutil_env_t *  env,
axiom_node_t *  node,
axis2_char_t *  local_name 
)

Traverse thru the node and its descendents. Check if the localname is equal to the given name

Parameters:
env Environment. MUST NOT be NULL,
node the node to be searched
localname the local name of the node to be searched
Returns:
the node if found, else NULL

AXIS2_EXTERN axis2_char_t* oxs_axiom_get_node_content ( const axutil_env_t *  env,
axiom_node_t *  node 
)

Returns content of a node

Parameters:
env Environment. MUST NOT be NULL,
node the node whose content should be retrieved
Returns:
the content of the node if found, else NULL

AXIS2_EXTERN int oxs_axiom_get_number_of_children_with_qname ( const axutil_env_t *  env,
axiom_node_t *  parent,
axis2_char_t *  local_name,
axis2_char_t *  ns_uri,
axis2_char_t *  prefix 
)

Finds the number of childern with given qname

Parameters:
env Environment. MUST NOT be NULL,
parent the root element defining start of the search
localname the local part of the qname
ns_uri uri part of the qname
prefix the prefix part of the qname
Returns:
the number of children found

AXIS2_EXTERN axis2_status_t oxs_axiom_interchange_nodes ( const axutil_env_t *  env,
axiom_node_t *  node_to_move,
axiom_node_t *  node_before 
)

moves the given node before second node.

Parameters:
env Environment. Must not be null
node_to_move node to be moved
node_before node_to_move will be moved before this node
Returns:
status of the operation


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/rampart__util_8h-source.html0000644000076500007650000002624011202454455024253 0ustar shankarshankar Rampart/C: rampart_util.h Source File

rampart_util.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #include <axutil_utils_defines.h>
00019 #include <axis2_defines.h>
00020 #include <axutil_date_time.h>
00021 #include <axutil_env.h>
00022 #include <axis2_msg_ctx.h>
00023 #include <rampart_authn_provider.h>
00024 #include <rampart_credentials.h>
00025 #include <rampart_callback.h>
00026 #include <rampart_replay_detector.h>
00027 #include <rampart_sct_provider.h>
00028 
00040 #ifndef RAMPART_UTIL_H
00041 #define RAMPART_UTIL_H
00042 
00043 #ifdef __cplusplus
00044 extern "C" {
00045 #endif
00046 
00054     AXIS2_EXTERN rampart_credentials_t* AXIS2_CALL
00055     rampart_load_credentials_module(
00056         const axutil_env_t *env,
00057         axis2_char_t *cred_module_name);
00058 
00069     AXIS2_EXTERN rampart_credentials_status_t AXIS2_CALL
00070     rampart_call_credentials(
00071         const axutil_env_t *env,
00072         rampart_credentials_t *cred_module,
00073         axis2_msg_ctx_t *ctx,
00074         axis2_char_t **username,
00075         axis2_char_t **password);
00076 
00084     AXIS2_EXTERN rampart_authn_provider_t* AXIS2_CALL
00085     rampart_load_auth_module(
00086         const axutil_env_t *env,
00087         axis2_char_t *auth_module_name);
00088 
00096     AXIS2_EXTERN rampart_replay_detector_t* AXIS2_CALL
00097     rampart_load_replay_detector(
00098         const axutil_env_t *env,
00099         axis2_char_t *replay_detector_name);
00100 
00108     AXIS2_EXTERN rampart_sct_provider_t* AXIS2_CALL
00109     rampart_load_sct_provider(
00110         const axutil_env_t *env,
00111         axis2_char_t *sct_provider_name);
00112 
00120     AXIS2_EXTERN rampart_callback_t* AXIS2_CALL
00121     rampart_load_pwcb_module(
00122         const axutil_env_t *env,
00123         axis2_char_t *callback_module_name);
00124 
00125 
00138     AXIS2_EXTERN rampart_authn_provider_status_t AXIS2_CALL
00139     rampart_authenticate_un_pw(
00140         const axutil_env_t *env,
00141         rampart_authn_provider_t *authp,
00142         const axis2_char_t *username,
00143         const axis2_char_t *password,
00144         const axis2_char_t *nonce,
00145         const axis2_char_t *created,
00146         const axis2_char_t *password_type,
00147         axis2_msg_ctx_t *msg_ctx);
00148 
00149 
00157     AXIS2_EXTERN axis2_char_t* AXIS2_CALL
00158     rampart_callback_password(
00159         const axutil_env_t *env,
00160         rampart_callback_t *callback_module,
00161         const axis2_char_t *username);
00162 
00170         AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00171         rampart_callback_pkcs12_password(
00172             const axutil_env_t *env,
00173             rampart_callback_t *callback_module,
00174             const axis2_char_t *username);      
00175 
00183     AXIS2_EXTERN axis2_char_t* AXIS2_CALL
00184     rampart_generate_time(
00185         const axutil_env_t *env, 
00186         int ttl, 
00187         axis2_bool_t with_millisecond);
00188 
00196     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00197     rampart_compare_date_time(
00198         const axutil_env_t *env, 
00199         axis2_char_t *dt1, 
00200         axis2_char_t *dt2);
00201 
00202     /* @} */
00203 #ifdef __cplusplus
00204 }
00205 #endif
00206 
00207 #endif    /* RAMPART_UTIL_H */
00208 
00209 

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/openssl__cipher__ctx_8h-source.html0000644000076500007650000002332311202454454025600 0ustar shankarshankar Rampart/C: openssl_cipher_ctx.h Source File

openssl_cipher_ctx.h

Go to the documentation of this file.
00001 /*
00002  *   Copyright 2003-2004 The Apache Software Foundation.
00003  *
00004  *   Licensed under the Apache License, Version 2.0 (the "License");
00005  *   you may not use this file except in compliance with the License.
00006  *   You may obtain a copy of the License at
00007  *
00008  *       http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  *   Unless required by applicable law or agreed to in writing, software
00011  *   distributed under the License is distributed on an "AS IS" BASIS,
00012  *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  *   See the License for the specific language governing permissions and
00014  *   limitations under the License.
00015  */
00016 #include <axis2_defines.h>
00017 #include <axutil_env.h>
00018 #include <openssl/evp.h>
00019 #include <oxs_key.h>
00024 #ifndef OPENSSL_CIPHER_CTX_H
00025 #define OPENSSL_CIPHER_CTX_H
00026 
00035 #ifdef __cplusplus
00036 extern "C" {
00037 #endif
00038 
00040     typedef struct openssl_cipher_ctx_t openssl_cipher_ctx_t;
00041 
00048     axis2_status_t AXIS2_CALL
00049     openssl_cipher_ctx_free(
00050         openssl_cipher_ctx_t *ctx,
00051         const axutil_env_t *env);
00058     const EVP_CIPHER* AXIS2_CALL
00059     openssl_cipher_ctx_get_cipher(
00060         openssl_cipher_ctx_t *ctx,
00061         const axutil_env_t *env);
00068     oxs_key_t *AXIS2_CALL
00069     openssl_cipher_ctx_get_key(
00070         openssl_cipher_ctx_t *ctx,
00071         const axutil_env_t *env);
00078     axis2_char_t *AXIS2_CALL
00079     openssl_cipher_ctx_get_iv(
00080         openssl_cipher_ctx_t *ctx,
00081         const axutil_env_t *env);
00088     axis2_char_t *AXIS2_CALL
00089     openssl_cipher_ctx_get_pad(
00090         openssl_cipher_ctx_t *ctx,
00091         const axutil_env_t *env);
00092 
00100     axis2_status_t AXIS2_CALL
00101     openssl_cipher_ctx_set_cipher(
00102         openssl_cipher_ctx_t *ctx,
00103         const axutil_env_t *env,
00104         const EVP_CIPHER*);
00105 
00113     axis2_status_t AXIS2_CALL
00114     openssl_cipher_ctx_set_key(
00115         openssl_cipher_ctx_t *ctx,
00116         const axutil_env_t *env,
00117         oxs_key_t *key);
00118 
00126     axis2_status_t AXIS2_CALL
00127     openssl_cipher_ctx_set_iv(
00128         openssl_cipher_ctx_t *ctx,
00129         const axutil_env_t *env,
00130         axis2_char_t *iv);
00131 
00139     axis2_status_t AXIS2_CALL
00140     openssl_cipher_ctx_set_pad(
00141         openssl_cipher_ctx_t *ctx,
00142         const axutil_env_t *env,
00143         axis2_char_t *pad);
00144 
00145 
00151     AXIS2_EXTERN openssl_cipher_ctx_t *AXIS2_CALL
00152     openssl_cipher_ctx_create(const axutil_env_t *env);
00153 
00154     /* @} */
00155 #ifdef __cplusplus
00156 }
00157 #endif
00158 
00159 #endif    /* OPENSSL_CIPHER_CTX_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/openssl__util_8h.html0000644000076500007650000000676711202454455023006 0ustar shankarshankar Rampart/C: openssl_util.h File Reference

openssl_util.h File Reference

General utility routines for openssl related functions. More...

#include <openssl/evp.h>
#include <oxs_buffer.h>
#include <openssl_cipher_property.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN axis2_status_t openssl_generate_random_data (const axutil_env_t *env, oxs_buffer_t *buffer, int size)
AXIS2_EXTERN axis2_status_t openssl_populate_cipher_property (const axutil_env_t *env, openssl_cipher_property_t *cprop)
AXIS2_EXTERN EVP_CIPHER * openssl_get_evp_cipher_by_name (const axutil_env_t *env, axis2_char_t *cipher_name)


Detailed Description

General utility routines for openssl related functions.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/oxs__buffer_8h.html0000644000076500007650000002152211202454455022412 0ustar shankarshankar Rampart/C: oxs_buffer.h File Reference

oxs_buffer.h File Reference

The buffer representation in OMXMLSecurity. More...

#include <axis2_defines.h>
#include <axutil_env.h>
#include <axis2_util.h>
#include <oxs_axiom.h>
#include <oxs_error.h>
#include <oxs_constants.h>
#include <stdio.h>

Go to the source code of this file.

Defines

#define OXS_BUFFER_INITIAL_SIZE   1024

Typedefs

typedef struct oxs_buffer oxs_buffer_t

Enumerations

enum  oxs_AllocMode { oxs_alloc_mode_exact = 0, oxs_alloc_mode_double }

Functions

AXIS2_EXTERN axis2_status_t oxs_buffer_free (oxs_buffer_t *buffer, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_buffer_remove_head (oxs_buffer_t *buffer, const axutil_env_t *env, int size)
AXIS2_EXTERN axis2_status_t oxs_buffer_remove_tail (oxs_buffer_t *buffer, const axutil_env_t *env, int size)
AXIS2_EXTERN axis2_status_t oxs_buffer_populate (oxs_buffer_t *buffer, const axutil_env_t *env, unsigned char *data, int size)
AXIS2_EXTERN axis2_status_t oxs_buffer_append (oxs_buffer_t *buffer, const axutil_env_t *env, unsigned char *data, int size)
AXIS2_EXTERN axis2_status_t oxs_buffer_prepend (oxs_buffer_t *buffer, const axutil_env_t *env, unsigned char *data, int size)
AXIS2_EXTERN axis2_status_t oxs_buffer_read_file (oxs_buffer_t *buffer, const axutil_env_t *env, const axis2_char_t *filename)
AXIS2_EXTERN axis2_status_t oxs_buffer_set_size (oxs_buffer_t *buffer, const axutil_env_t *env, int size)
AXIS2_EXTERN axis2_status_t oxs_buffer_set_max_size (oxs_buffer_t *buffer, const axutil_env_t *env, int size)
AXIS2_EXTERN unsigned char * oxs_buffer_get_data (oxs_buffer_t *buffer, const axutil_env_t *env)
AXIS2_EXTERN int oxs_buffer_get_size (oxs_buffer_t *buffer, const axutil_env_t *env)
AXIS2_EXTERN int oxs_buffer_get_max_size (oxs_buffer_t *buffer, const axutil_env_t *env)
AXIS2_EXTERN oxs_buffer_toxs_buffer_dup (oxs_buffer_t *buffer, const axutil_env_t *env)
AXIS2_EXTERN oxs_buffer_toxs_buffer_create (const axutil_env_t *env)


Detailed Description

The buffer representation in OMXMLSecurity.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/oxs__axiom_8h.html0000644000076500007650000001617411202454455022265 0ustar shankarshankar Rampart/C: oxs_axiom.h File Reference

oxs_axiom.h File Reference

Utility functions related to AXIOM. A place for common code. More...

#include <axis2_defines.h>
#include <axutil_env.h>
#include <axis2_util.h>
#include <axiom_node.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN axis2_status_t oxs_axiom_add_attribute (const axutil_env_t *env, axiom_node_t *node, axis2_char_t *attribute_ns, axis2_char_t *attribute_ns_uri, axis2_char_t *attribute, axis2_char_t *value)
AXIS2_EXTERN int oxs_axiom_get_number_of_children_with_qname (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *local_name, axis2_char_t *ns_uri, axis2_char_t *prefix)
AXIS2_EXTERN axiom_node_t * oxs_axiom_get_node_by_local_name (const axutil_env_t *env, axiom_node_t *node, axis2_char_t *local_name)
AXIS2_EXTERN axiom_node_t * oxs_axiom_get_node_by_id (const axutil_env_t *env, axiom_node_t *node, axis2_char_t *attr, axis2_char_t *val, axis2_char_t *ns)
AXIS2_EXTERN axis2_char_t * oxs_axiom_get_attribute_value_of_node_by_name (const axutil_env_t *env, axiom_node_t *node, axis2_char_t *attribute_name, axis2_char_t *ns)
AXIS2_EXTERN axis2_char_t * oxs_axiom_get_attribute_val_of_node_by_qname (const axutil_env_t *env, axiom_node_t *node, axutil_qname_t *qname)
AXIS2_EXTERN axiom_node_t * oxs_axiom_get_first_child_node_by_name (const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *local_name, axis2_char_t *ns_uri, axis2_char_t *prefix)
AXIS2_EXTERN axis2_char_t * oxs_axiom_get_node_content (const axutil_env_t *env, axiom_node_t *node)
AXIS2_EXTERN axiom_node_t * oxs_axiom_deserialize_node (const axutil_env_t *env, axis2_char_t *buffer)
AXIS2_EXTERN axis2_bool_t oxs_axiom_check_node_name (const axutil_env_t *env, axiom_node_t *node, axis2_char_t *name, axis2_char_t *ns)
AXIS2_EXTERN axis2_status_t oxs_axiom_interchange_nodes (const axutil_env_t *env, axiom_node_t *node_to_move, axiom_node_t *node_before)
AXIS2_EXTERN axis2_status_t oxs_axiom_add_as_the_first_child (const axutil_env_t *env, axiom_node_t *parent, axiom_node_t *child)
AXIS2_EXTERN axiom_node_t * oxs_axiom_get_first_node_by_name_and_attr_val (const axutil_env_t *env, axiom_node_t *node, axis2_char_t *e_name, axis2_char_t *e_ns, axis2_char_t *attr_name, axis2_char_t *attr_val, axis2_char_t *attr_ns)
AXIS2_EXTERN axiom_node_t * oxs_axiom_get_first_node_by_name_and_attr_val_from_xml_doc (const axutil_env_t *env, axiom_node_t *node, axis2_char_t *e_name, axis2_char_t *e_ns, axis2_char_t *attr_name, axis2_char_t *attr_val, axis2_char_t *attr_ns)
AXIS2_EXTERN axiom_node_t * oxs_axiom_clone_node (const axutil_env_t *env, axiom_node_t *node)


Detailed Description

Utility functions related to AXIOM. A place for common code.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/oxs__asym__ctx_8h-source.html0000644000076500007650000002663211202454454024433 0ustar shankarshankar Rampart/C: oxs_asym_ctx.h Source File

oxs_asym_ctx.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef OXS_ASYM_CTX_H
00019 #define OXS_ASYM_CTX_H
00020 
00021 
00027 #include <axis2_defines.h>
00028 #include <axutil_env.h>
00029 #include <axiom_node.h>
00030 #include <oxs_x509_cert.h>
00031 #include <openssl_pkey.h>
00032 
00033 #ifdef __cplusplus
00034 extern "C"
00035 {
00036 #endif
00037 
00043     typedef enum  {
00044         OXS_ASYM_CTX_FORMAT_UNKNOWN=0,
00045         OXS_ASYM_CTX_FORMAT_PEM,
00046         OXS_ASYM_CTX_FORMAT_PKCS12
00047     }oxs_asym_ctx_format_t;
00048 
00049     typedef enum  {
00050         OXS_ASYM_CTX_OPERATION_PUB_ENCRYPT=0,
00051         OXS_ASYM_CTX_OPERATION_PRV_DECRYPT,
00052         OXS_ASYM_CTX_OPERATION_PUB_DECRYPT,
00053         OXS_ASYM_CTX_OPERATION_PRV_ENCRYPT
00054     }oxs_asym_ctx_operation_t;
00055 
00056     typedef struct oxs_asym_ctx_t oxs_asym_ctx_t;
00057 
00058     /*Create function*/
00059     AXIS2_EXTERN oxs_asym_ctx_t *AXIS2_CALL
00060     oxs_asym_ctx_create(const axutil_env_t *env);
00061 
00062     /*Free*/
00063     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00064     oxs_asym_ctx_free(oxs_asym_ctx_t *ctx,
00065                       const axutil_env_t *env);
00066 
00067 
00068     /**********************Getter functions******************************************/
00069 
00076     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00077     oxs_asym_ctx_free(oxs_asym_ctx_t *ctx,
00078                       const axutil_env_t *env);
00079 
00086     AXIS2_EXTERN axis2_char_t* AXIS2_CALL
00087     oxs_asym_ctx_get_algorithm(const oxs_asym_ctx_t *ctx,
00088                                const axutil_env_t *env);
00089 
00096     AXIS2_EXTERN axis2_char_t* AXIS2_CALL
00097     oxs_asym_ctx_get_st_ref_pattern(const oxs_asym_ctx_t *ctx,
00098                                     const axutil_env_t *env);
00099 
00106     AXIS2_EXTERN oxs_asym_ctx_operation_t AXIS2_CALL
00107     oxs_asym_ctx_get_operation(const oxs_asym_ctx_t *ctx,
00108                                const axutil_env_t *env);
00109 
00116     AXIS2_EXTERN openssl_pkey_t* AXIS2_CALL
00117     oxs_asym_ctx_get_private_key(const oxs_asym_ctx_t *ctx,
00118                                  const axutil_env_t *env);
00119 
00126     AXIS2_EXTERN oxs_x509_cert_t* AXIS2_CALL
00127     oxs_asym_ctx_get_certificate(const oxs_asym_ctx_t *ctx,
00128                                  const axutil_env_t *env);
00129 
00137     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00138     oxs_asym_ctx_set_algorithm(oxs_asym_ctx_t *ctx,
00139                                const axutil_env_t *env,
00140                                axis2_char_t *algorithm);
00148     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00149     oxs_asym_ctx_set_st_ref_pattern(oxs_asym_ctx_t *ctx,
00150                                     const axutil_env_t *env,
00151                                     axis2_char_t *st_ref_pattern);
00159     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00160     oxs_asym_ctx_set_operation(oxs_asym_ctx_t *ctx,
00161                                const axutil_env_t *env,
00162                                oxs_asym_ctx_operation_t operation);
00170     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00171     oxs_asym_ctx_set_certificate(oxs_asym_ctx_t *ctx,
00172                                  const axutil_env_t *env,
00173                                  oxs_x509_cert_t *certificate);
00181     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00182     oxs_asym_ctx_set_private_key(oxs_asym_ctx_t *asym_ctx,
00183                                  const axutil_env_t *env,
00184                                  openssl_pkey_t *private_key);
00186 #ifdef __cplusplus
00187 }
00188 #endif
00189 
00190 #endif                          /* OXS_ASYM_CTX_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/oxs__xml__signature_8h.html0000644000076500007650000001035511202454455024163 0ustar shankarshankar Rampart/C: oxs_xml_signature.h File Reference

oxs_xml_signature.h File Reference

Does the XML Signature for OMXMLSecurity. More...

#include <axis2_defines.h>
#include <oxs_ctx.h>
#include <axutil_env.h>
#include <axiom_node.h>
#include <axiom_element.h>
#include <axutil_qname.h>
#include <oxs_sign_ctx.h>
#include <oxs_sign_part.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN axis2_status_t oxs_xml_sig_sign (const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, axiom_node_t *parent, axiom_node_t **sig_node)
AXIS2_EXTERN axis2_status_t oxs_xml_sig_verify (const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, axiom_node_t *signature_node, axiom_node_t *scope_node)
AXIS2_EXTERN axis2_status_t oxs_xml_sig_verify_sign_part (const axutil_env_t *env, oxs_sign_part_t *sign_part)
AXIS2_EXTERN axis2_status_t oxs_xml_sig_verify_digests (const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx)
AXIS2_EXTERN axis2_status_t oxs_xml_sig_process_ref_node (const axutil_env_t *env, oxs_sign_part_t *sign_part, axiom_node_t *ref_node, axiom_node_t *scope_node)
AXIS2_EXTERN axis2_status_t oxs_xml_sig_process_signature_node (const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, axiom_node_t *signature_node, axiom_node_t *scope_node)


Detailed Description

Does the XML Signature for OMXMLSecurity.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/rampart__sct__provider_8h.html0000644000076500007650000000672011202454456024644 0ustar shankarshankar Rampart/C: rampart_sct_provider.h File Reference

rampart_sct_provider.h File Reference

Security context token provider module for rampart. More...

#include <axis2_defines.h>
#include <axutil_env.h>
#include <rampart_context.h>

Go to the source code of this file.

Classes

struct  rampart_sct_provider_ops
struct  rampart_sct_provider

Defines

#define RAMPART_SCT_PROVIDER_FREE(sct_provider, env)   ((sct_provider)->ops->free(sct_provider, env))

Typedefs

typedef struct
rampart_sct_provider_ops 
rampart_sct_provider_ops_t
typedef struct rampart_sct_provider rampart_sct_provider_t


Detailed Description

Security context token provider module for rampart.


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__sec__header__processor.html0000644000076500007650000001052311202454457025545 0ustar shankarshankar Rampart/C: Security Header Processor

Security Header Processor
[Rampart Utilities]


Functions

AXIS2_EXTERN axis2_status_t rampart_shp_process_sec_header (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_soap_envelope_t *soap_envelope, axiom_node_t *sec_node)

Function Documentation

AXIS2_EXTERN axis2_status_t rampart_shp_process_sec_header ( const axutil_env_t *  env,
axis2_msg_ctx_t *  msg_ctx,
rampart_context_t *  rampart_context,
axiom_soap_envelope_t *  soap_envelope,
axiom_node_t *  sec_node 
)

Processes a message depending on it's security related claims. This is the main module in the infow of a message if rampart is enabled. Processing is depending on the order of tokens apear in the Also the module will check for security policy settings

Parameters:
env pointer to environment struct
msg_ctx message context
soap_envelope the SOAP envelope
sec_node The security element
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/rampart__credentials_8h.html0000644000076500007650000001105011202454456024267 0ustar shankarshankar Rampart/C: rampart_credentials.h File Reference

rampart_credentials.h File Reference

The credentials interface for rampart. To retrieve a username and password pair. More...

#include <axis2_defines.h>
#include <axutil_error.h>
#include <axutil_env.h>
#include <axutil_utils.h>
#include <axis2_msg_ctx.h>
#include <axutil_param.h>

Go to the source code of this file.

Classes

struct  rampart_credentials_ops
struct  rampart_credentials

Defines

#define RAMPART_CREDENTIALS_FREE(credentials, env)   ((credentials)->ops->free (credentials, env))
#define RAMPART_CREDENTIALS_USERNAME_GET(credentials, env, msg_ctx, username, password)

Typedefs

typedef enum
rampart_credentials_status 
rampart_credentials_status_t
typedef struct
rampart_credentials_ops 
rampart_credentials_ops_t
typedef struct rampart_credentials rampart_credentials_t

Enumerations

enum  rampart_credentials_status {
  RAMPART_CREDENTIALS_PW_FOUND = 0, RAMPART_CREDENTIALS_PW_NOT_FOUND, RAMPART_CREDENTIALS_USER_FOUND, RAMPART_CREDENTIALS_USER_NOT_FOUND,
  RAMPART_CREDENTIALS_GENERAL_ERROR
}


Detailed Description

The credentials interface for rampart. To retrieve a username and password pair.


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/oxs__constants_8h.html0000644000076500007650000024312311202454455023160 0ustar shankarshankar Rampart/C: oxs_constants.h File Reference

oxs_constants.h File Reference

Constants for OMXMLSecurity. More...

Go to the source code of this file.

Defines

#define OXS_DEFAULT_KT_ALGO_HREF   OXS_HREF_RSA_PKCS1
#define OXS_DEFAULT_SYM_ALGO   OXS_HREF_AES_256_CBC
#define OXS_STR_DEFAULT   OXS_STR_EMBEDDED
#define OXS_XENC   "xenc"
#define OXS_DS   "ds"
#define OXS_WSSE   "wsse"
#define OXS_WSSE_11   "wsse11"
#define OXS_WSU   "wsu"
#define OXS_WSC   "wsc"
#define OXS_WSSE_XMLNS   "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
#define OXS_WSSE_11_XMLNS   "http://docs.oasis-open.org/wss/oasis-wss-wssecurity-secext-1.1.xsd"
#define OXS_WSU_XMLNS   "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
#define OXS_ENCDATA_ID   "EncDataID"
#define OXS_ENCKEY_ID   "EncKeyID"
#define OXS_SIG_ID   "SigID"
#define OXS_CERT_ID   "CertID"
#define OXS_EMBEDDED_ID   "EmbeddedID"
#define OXS_DERIVED_ID   "DKID"
#define OXS_SIG_CONF_ID   "SigConfID"
#define OXS_LOCAL_REFERENCE_PREFIX   "#"
#define OXS_DSIG_NS   "http://www.w3.org/2000/09/xmldsig#"
#define OXS_ENC_NS   "http://www.w3.org/2001/04/xmlenc#"
#define OXS_WSSE_NS   "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
#define OXS_WSC_NS_05_02   "http://schemas.xmlsoap.org/ws/2005/02/sc"
#define OXS_WSC_NS_05_12   "http://docs.oasis-open.org/ws-sx/ws-secureconversation/200512"
#define OXS_NODE_SIGNATURE   "Signature"
#define OXS_NODE_SIGNEDINFO   "SignedInfo"
#define OXS_NODE_CANONICALIZATION_METHOD   "CanonicalizationMethod"
#define OXS_NODE_SIGNATURE_METHOD   "SignatureMethod"
#define OXS_NODE_SIGNATURE_VALUE   "SignatureValue"
#define OXS_NODE_DIGEST_METHOD   "DigestMethod"
#define OXS_NODE_DIGEST_VALUE   "DigestValue"
#define OXS_NODE_OBJECT   "Object"
#define OXS_NODE_MANIFEST   "Manifest"
#define OXS_NODE_SIGNATUREPROPERTIES   "SignatureProperties"
#define OXS_NODE_SIGNATURE_CONFIRMATION   "SignatureConfirmation"
#define OXS_NODE_ENCRYPTED_DATA   "EncryptedData"
#define OXS_NODE_ENCRYPTION_METHOD   "EncryptionMethod"
#define OXS_NODE_ENCRYPTION_PROPERTIES   "EncryptionProperties"
#define OXS_NODE_ENCRYPTION_PROPERTY   "EncryptionProperty"
#define OXS_NODE_CIPHER_DATA   "CipherData"
#define OXS_NODE_CIPHER_VALUE   "CipherValue"
#define OXS_NODE_CIPHER_REFERENCE   "CipherReference"
#define OXS_NODE_REFERENCE_LIST   "ReferenceList"
#define OXS_NODE_DATA_REFERENCE   "DataReference"
#define OXS_NODE_KEY_REFERENCE   "KeyReference"
#define OXS_NODE_CARRIED_KEYNAME   "CarriedKeyName"
#define OXS_TYPE_ENC_CONTENT   "http://www.w3.org/2001/04/xmlenc#Content"
#define OXS_TYPE_ENC_ELEMENT   "http://www.w3.org/2001/04/xmlenc#Element"
#define OXS_NODE_KEY_INFO   "KeyInfo"
#define OXS_NODE_REFERENCE   "Reference"
#define OXS_NODE_TRANSFORMS   "Transforms"
#define OXS_NODE_TRANSFORM   "Transform"
#define OXS_NODE_TRANSFORMATIONPARAMETERS   "TransformationParameters"
#define OXS_NODE_BINARY_SECURITY_TOKEN   "BinarySecurityToken"
#define OXS_NODE_KEY_IDENTIFIER   "KeyIdentifier"
#define OXS_NODE_SECURITY_TOKEN_REFRENCE   "SecurityTokenReference"
#define OXS_NODE_EMBEDDED   "Embedded"
#define OXS_NODE_DERIVED_KEY_TOKEN   "DerivedKeyToken"
#define OXS_NODE_PROPERTIES   "Properties"
#define OXS_NODE_GENERATION   "Generation"
#define OXS_NODE_OFFSET   "Offset"
#define OXS_NODE_LENGTH   "Length"
#define OXS_NODE_LABEL   "Label"
#define OXS_NODE_NONCE   "Nonce"
#define OXS_NODE_SECURITY_CONTEXT_TOKEN   "SecurityContextToken"
#define OXS_NODE_IDENTIFIER   "Identifier"
#define OXS_VALUE_TYPE_SECURITY_CONTEXT_TOKEN_05_02   "http://schemas.xmlsoap.org/ws/2005/02/sc/sct"
#define OXS_VALUE_TYPE_SECURITY_CONTEXT_TOKEN_05_12   "http://docs.oasis-open.org/ws-sx/ws-secureconversation/200512/sct"
#define OXS_NODE_SAML_ASSERTION   "Assertion"
#define OXS_NODE_SAML_PREFIX   "saml"
#define OXS_NODE_SAML_SUBJECT_CONFIRMATION_METHOD   "ConfirmationMethod"
#define OXS_ATTR_ID   "Id"
#define OXS_ATTR_URI   "URI"
#define OXS_ATTR_TYPE   "Type"
#define OXS_ATTR_MIMETYPE   "MimeType"
#define OXS_ATTR_ENCODING   "Encoding"
#define OXS_ATTR_ALGORITHM   "Algorithm"
#define OXS_ATTR_FILTER   "Filter"
#define OXS_ATTR_RECIPIENT   "Recipient"
#define OXS_ATTR_TARGET   "Target"
#define OXS_ATTR_ENCODING_TYPE   "EncodingType"
#define OXS_ATTR_VALUE_TYPE   "ValueType"
#define OXS_ATTR_VALUE   "Value"
#define OXS_NAME_AES_128_CBC   "aes128-cbc"
#define OXS_HREF_AES_128_CBC   "http://www.w3.org/2001/04/xmlenc#aes128-cbc"
#define OXS_NAME_AES_192_CBC   "aes192-cbc"
#define OXS_HREF_AES_192_CBC   "http://www.w3.org/2001/04/xmlenc#aes192-cbc"
#define OXS_NAME_AES_256_CBC   "aes256-cbc"
#define OXS_HREF_AES_256_CBC   "http://www.w3.org/2001/04/xmlenc#aes256-cbc"
#define OXS_NAME_KW_AES_128   "kw-aes128"
#define OXS_HREF_KW_AES_128   "http://www.w3.org/2001/04/xmlenc#kw-aes128"
#define OXS_NAME_KW_AES_192   "kw-aes192"
#define OXS_HREF_KW_AES_192   "http://www.w3.org/2001/04/xmlenc#kw-aes192"
#define OXS_NAME_KW_AES_256   "kw-aes256"
#define OXS_HREF_KW_AES_256   "http://www.w3.org/2001/04/xmlenc#kw-aes256"
#define OXS_NAME_BASE64   "base64"
#define OXS_HREF_BASE64   "http://www.w3.org/2000/09/xmldsig#base64"
#define OXS_NAME_DES_KEY_VALUE   "des"
#define OXS_NAME_DES3_CBC   "tripledes-cbc"
#define OXS_HREF_DES3_CBC   "http://www.w3.org/2001/04/xmlenc#tripledes-cbc"
#define OXS_NAME_KW_DES3   "kw-tripledes"
#define OXS_HREF_KW_DES3   "http://www.w3.org/2001/04/xmlenc#kw-tripledes"
#define OXS_NAME_DSA_KEY_VALUE   "dsa"
#define OXS_NODE_DSA_KEY_VALUE   "DSAKeyValue"
#define OXS_HREF_DSA_KEY_VALUE   "http://www.w3.org/2000/09/xmldsig#DSAKeyValue"
#define OXS_NAME_DSA_SHA1   "dsa-sha1"
#define OXS_HREF_DSA_SHA1   "http://www.w3.org/2000/09/xmldsig#dsa-sha1"
#define OXS_NAME_HMAC_SHA1   "HmacSha1"
#define OXS_HREF_HMAC_SHA1   "http://www.w3.org/2000/09/xmldsig#hmac-sha1"
#define OXS_NAME_ENCRYPTED_KEY   "enc-key"
#define OXS_NODE_ENCRYPTED_KEY   "EncryptedKey"
#define OXS_HREF_ENCRYPTED_KEY   "http://www.w3.org/2001/04/xmlenc#EncryptedKey"
#define OXS_HREF_XML_C14N   "http://www.w3.org/TR/2001/REC-xml-c14n-20010315"
#define OXS_HREF_XML_EXC_C14N   "http://www.w3.org/2001/10/xml-exc-c14n#"
#define OXS_HREF_XML_C14N_WITH_COMMENTS   "http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"
#define OXS_HREF_XML_EXC_C14N_WITH_COMMENTS   "http://www.w3.org/2001/10/xml-exc-c14n#WithComments"
#define OXS_HREF_TRANSFORM_XML_EXC_C14N   OXS_HREF_XML_EXC_C14N
#define OXS_HREF_TRANSFORM_STR_TRANSFORM   "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#STR-Transform"
#define OXS_HREF_TRANSFORM_ENVELOPED_SIGNATURE   "http://www.w3.org/2000/09/xmldsig#enveloped-signature"
#define OXS_NAME_KEY_NAME   "key-name"
#define OXS_NODE_KEY_NAME   "KeyName"
#define OXS_NAME_KEY_VALUE   "key-value"
#define OXS_NODE_KEY_VALUE   "KeyValue"
#define OXS_NAME_MD5   "md5"
#define OXS_HREF_MD5   "http://www.w3.org/2001/04/xmldsig-more#md5"
#define OXS_NAME_RETRIEVAL_METHOD   "retrieval-method"
#define OXS_NODE_RETRIEVAL_METHOD   "RetrievalMethod"
#define OXS_NAME_RSAKEY_VALUE   "rsa"
#define OXS_NODE_RSAKEY_VALUE   "RSAKeyValue"
#define OXS_HREF_RSAKEY_VALUE   "http://www.w3.org/2000/09/xmldsig#RSAKeyValue"
#define OXS_NAME_RSA_MD5   "rsa-md5"
#define OXS_HREF_RSA_MD5   "http://www.w3.org/2001/04/xmldsig-more#rsa-md5"
#define OXS_NAME_RSA_RIPEMD160   "rsa-ripemd160"
#define OXS_HREF_RSA_RIPEMD160   "http://www.w3.org/2001/04/xmldsig-more#rsa-ripemd160"
#define OXS_NAME_RSA_SHA1   "rsa-sha1"
#define OXS_HREF_RSA_SHA1   "http://www.w3.org/2000/09/xmldsig#rsa-sha1"
#define OXS_NAME_RSA_SHA224   "rsa-sha224"
#define OXS_HREF_RSA_SHA224   "http://www.w3.org/2001/04/xmldsig-more#rsa-sha224"
#define OXS_NAME_RSA_SHA256   "rsa-sha256"
#define OXS_HREF_RSA_SHA256   "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"
#define OXS_NAME_RSA_SHA384   "rsa-sha384"
#define OXS_HREF_RSA_SHA384   "http://www.w3.org/2001/04/xmldsig-more#rsa-sha384"
#define OXS_NAME_RSA_SHA512   "rsa-sha512"
#define OXS_HREF_RSA_SHA512   "http://www.w3.org/2001/04/xmldsig-more#rsa-sha512"
#define OXS_NAME_RSA_PKCS1   "rsa-1_5"
#define OXS_HREF_RSA_PKCS1   "http://www.w3.org/2001/04/xmlenc#rsa-1_5"
#define OXS_NAME_RSA_OAEP   "rsa-oaep-mgf1p"
#define OXS_HREF_RSA_OAEP   "http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p"
#define OXS_NODE_RSA_OAEP_PARAMS   "OAEPparams"
#define OXS_NAME_SHA1   "sha1"
#define OXS_HREF_SHA1   "http://www.w3.org/2000/09/xmldsig#sha1"
#define OXS_NAME_SHA224   "sha224"
#define OXS_HREF_SHA224   "http://www.w3.org/2001/04/xmldsig-more#sha224"
#define OXS_NAME_SHA256   "sha256"
#define OXS_HREF_SHA256   "http://www.w3.org/2001/04/xmlenc#sha256"
#define OXS_NAME_SHA384   "sha384"
#define OXS_HREF_SHA384   "http://www.w3.org/2001/04/xmldsig-more#sha384"
#define OXS_NAME_SHA512   "sha512"
#define OXS_HREF_SHA512   "http://www.w3.org/2001/04/xmlenc#sha512"
#define OXS_SC_DK_NAME_P_SHA1   "P_SHA-1"
#define OXS_SC_DK_HREF_P_SHA1   "http://schemas.xmlsoap.org/ws/2005/02/sc/dk/p_sha1"
#define OXS_NAME_X509_DATA   "x509"
#define OXS_NODE_X509_DATA   "X509Data"
#define OXS_HREF_X509_DATA   "http://www.w3.org/2000/09/xmldsig#X509Data"
#define OXS_NODE_X509_CERTIFICATE   "X509Certificate"
#define OXS_NODE_X509_CRL   "X509CRL"
#define OXS_NODE_X509_SUBJECT_NAME   "X509SubjectName"
#define OXS_NODE_X509_ISSUER_SERIAL   "X509IssuerSerial"
#define OXS_NODE_X509_ISSUER_NAME   "X509IssuerName"
#define OXS_NODE_X509_SERIAL_NUMBER   "X509SerialNumber"
#define OXS_NODE_X509_SKI   "X509SKI"
#define OXS_NAME_RAW_X509_CERT   "raw-x509-cert"
#define OXS_HREF_RAW_X509_CERT   "http://www.w3.org/2000/09/xmldsig#rawX509Certificate"
#define OXS_NAME_X509_STORE   "x509-store"
#define OXS_NODE_ENVELOPE   "Envelope"
#define OXS_NODE_HEADER   "Header"
#define OXS_NODE_BODY   "Body"
#define OXS_NODE_FAULT   "Fault"
#define OXS_NODE_FAULT_CODE   "faultcode"
#define OXS_NODE_FAULT_STRING   "faultstring"
#define OXS_NODE_FAULT_ACTOR   "faultactor"
#define OXS_NODE_FAULT_DETAIL   "detail"
#define OXS_NODE_CODE   "Code"
#define OXS_NODE_REASON   "Reason"
#define OXS_NODE_NODE   "Node"
#define OXS_NODE_ROLE   "Role"
#define OXS_NODE_DETAIL   "Detail"
#define OXS_NODE_VALUE   "Value"
#define OXS_NODE_SUBCODE   "Subcode"
#define OXS_NODE_TEXT   "Text"
#define OXS_SOAP_FAULT_CODE_VERSION_MISMATCH   "VersionMismatch"
#define OXS_SOAP_FAULT_CODE_MUST_UNDERSTAND   "MustUnderstand"
#define OXS_SOAP_FAULT_CODE_CLIENT   "Client"
#define OXS_SOAP_FAULT_CODE_SERVER   "Server"
#define OXS_SOAP_FAULT_CODE_RECEIVER   "Receiver"
#define OXS_SOAP_FAULT_CODE_SENDER   "Sender"
#define OXS_SOAP_FAULT_DATA_ENCODNING_UNKNOWN   "DataEncodingUnknown"
#define OXS_ENCODING_BASE64BINARY   "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary"
#define OXS_VALUE_X509V3   "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3"
#define OXS_X509_SUBJ_KI   "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509SubjectKeyIdentifier"
#define OXS_X509_TUMBP_PRINT_SHA1   "http://docs.oasis-open.org/wss/oasis-wss-soap-message-security-1.1#ThumbprintSHA1"
#define OXS_X509_ENCRYPTED_KEY_SHA1   "http://docs.oasis-open.org/wss/oasis-wss-soap-message-security-1.1#EncryptedKeySHA1"
#define OXS_STR_DIRECT_REFERENCE   "DirectReference"
#define OXS_STR_KEY_IDENTIFIER   OXS_NODE_KEY_IDENTIFIER
#define OXS_STR_EMBEDDED   OXS_NODE_EMBEDDED
#define OXS_STR_ISSUER_SERIAL   "IssuerSerial"
#define OXS_STR_THUMB_PRINT   "ThumbPrint"
#define OXS_STR_EXTERNAL_URI   "ExternalUri"
#define OXS_STR_ENCRYPTED_KEY   "Encryptedkey"
#define OXS_WSS_11_VALUE_TYPE_ENCRYPTED_KEY   "http://docs.oasis-open.org/wss/oasis-wss-soap-message-security-1.1#EncryptedKey"
#define OXS_NODE_ENCRYPTED_HEADER   "EncryptedHeader"


Detailed Description

Constants for OMXMLSecurity.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__oxs__key.html0000644000076500007650000011200411202454456022702 0ustar shankarshankar Rampart/C: Key

Key
[OMXMLSecurity]


Defines

#define OXS_KEY_USAGE_NONE   0
#define OXS_KEY_USAGE_SESSION   1
#define OXS_KEY_USAGE_SIGNATURE_SESSION   2
#define OXS_KEY_USAGE_DERIVED   3
#define OXS_KEY_DEFAULT_SIZE   64

Typedefs

typedef struct oxs_key_t oxs_key_t

Functions

AXIS2_EXTERN unsigned char * oxs_key_get_data (const oxs_key_t *key, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_key_get_name (const oxs_key_t *key, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_key_get_nonce (const oxs_key_t *key, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_key_get_label (const oxs_key_t *key, const axutil_env_t *env)
AXIS2_EXTERN int oxs_key_get_size (const oxs_key_t *key, const axutil_env_t *env)
AXIS2_EXTERN int oxs_key_get_usage (const oxs_key_t *key, const axutil_env_t *env)
AXIS2_EXTERN int oxs_key_get_offset (const oxs_key_t *key, const axutil_env_t *env)
AXIS2_EXTERN int oxs_key_get_length (const oxs_key_t *key, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_key_set_name (oxs_key_t *key, const axutil_env_t *env, axis2_char_t *name)
AXIS2_EXTERN axis2_status_t oxs_key_set_usage (oxs_key_t *key, const axutil_env_t *env, int usage)
AXIS2_EXTERN axis2_status_t oxs_key_set_nonce (oxs_key_t *key, const axutil_env_t *env, axis2_char_t *nonce)
AXIS2_EXTERN axis2_status_t oxs_key_set_label (oxs_key_t *key, const axutil_env_t *env, axis2_char_t *label)
AXIS2_EXTERN axis2_status_t oxs_key_set_offset (oxs_key_t *key, const axutil_env_t *env, int offset)
AXIS2_EXTERN axis2_status_t oxs_key_set_length (oxs_key_t *key, const axutil_env_t *env, int length)
AXIS2_EXTERN axis2_status_t oxs_key_free (oxs_key_t *key, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_key_populate_with_buf (oxs_key_t *key, const axutil_env_t *env, oxs_buffer_t *buffer, axis2_char_t *name, int usage)
AXIS2_EXTERN axis2_status_t oxs_key_populate (oxs_key_t *key, const axutil_env_t *env, unsigned char *data, axis2_char_t *name, int size, int usage)
AXIS2_EXTERN axis2_status_t oxs_key_read_from_file (oxs_key_t *key, const axutil_env_t *env, axis2_char_t *file_name)
AXIS2_EXTERN axis2_status_t oxs_key_for_algo (oxs_key_t *key, const axutil_env_t *env, rp_algorithmsuite_t *key_algo)
AXIS2_EXTERN oxs_buffer_toxs_key_get_buffer (const oxs_key_t *key, const axutil_env_t *env)
AXIS2_EXTERN oxs_key_toxs_key_dup (oxs_key_t *key, const axutil_env_t *env)
AXIS2_EXTERN oxs_key_toxs_key_create (const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_key_set_key_sha (oxs_key_t *key, const axutil_env_t *env, axis2_char_t *key_sha)
AXIS2_EXTERN axis2_char_t * oxs_key_get_key_sha (const oxs_key_t *key, const axutil_env_t *env)

Typedef Documentation

typedef struct oxs_key_t oxs_key_t

Type name for struct oxs_key


Function Documentation

AXIS2_EXTERN axis2_status_t oxs_key_for_algo ( oxs_key_t key,
const axutil_env_t *  env,
rp_algorithmsuite_t *  key_algo 
)

Fill the key for the given algo.

Parameters:
key oxs_key ptr to key
env pointer to environment struct
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_key_free ( oxs_key_t key,
const axutil_env_t *  env 
)

Free function for key.

Parameters:
key oxs_key ptr to key
env pointer to environment struct
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN unsigned char* oxs_key_get_data ( const oxs_key_t key,
const axutil_env_t *  env 
)

Gets data of the key.

Parameters:
key oxs_key ptr to key
env pointer to environment struct
Returns:
data

AXIS2_EXTERN axis2_char_t* oxs_key_get_label ( const oxs_key_t key,
const axutil_env_t *  env 
)

Gets the label of the key.

Parameters:
key oxs_key ptr to key
env pointer to environment struct
Returns:
label of the key

AXIS2_EXTERN int oxs_key_get_length ( const oxs_key_t key,
const axutil_env_t *  env 
)

Gets the length of the key.

Parameters:
key oxs_key ptr to key
env pointer to environment struct
Returns:
length of the key

AXIS2_EXTERN axis2_char_t* oxs_key_get_name ( const oxs_key_t key,
const axutil_env_t *  env 
)

Gets the name of the key.

Parameters:
key oxs_key ptr to key
env pointer to environment struct
Returns:
name of the key

AXIS2_EXTERN axis2_char_t* oxs_key_get_nonce ( const oxs_key_t key,
const axutil_env_t *  env 
)

Gets the nonce of the key.

Parameters:
key oxs_key ptr to key
env pointer to environment struct
Returns:
nonce of the key

AXIS2_EXTERN int oxs_key_get_offset ( const oxs_key_t key,
const axutil_env_t *  env 
)

Gets the offset of the key.

Parameters:
key oxs_key ptr to key
env pointer to environment struct
Returns:
offset of the key

AXIS2_EXTERN int oxs_key_get_size ( const oxs_key_t key,
const axutil_env_t *  env 
)

Gets the size of the key.

Parameters:
key oxs_key ptr to key
env pointer to environment struct
Returns:
size of the key

AXIS2_EXTERN int oxs_key_get_usage ( const oxs_key_t key,
const axutil_env_t *  env 
)

Gets the usage of the key.

Parameters:
key oxs_key ptr to key
env pointer to environment struct
Returns:
usage of the key

AXIS2_EXTERN axis2_status_t oxs_key_populate ( oxs_key_t key,
const axutil_env_t *  env,
unsigned char *  data,
axis2_char_t *  name,
int  size,
int  usage 
)

Populate a key.

Parameters:
key oxs_key ptr to key
env pointer to environment struct
data data of the key
name name of the key
size size of the key
usage usage of the key
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_key_read_from_file ( oxs_key_t key,
const axutil_env_t *  env,
axis2_char_t *  file_name 
)

Read a key from a file.

Parameters:
key oxs_key ptr to key
env pointer to environment struct
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_key_set_name ( oxs_key_t key,
const axutil_env_t *  env,
axis2_char_t *  name 
)

Sets the name of the key.

Parameters:
key oxs_key ptr to key
env pointer to environment struct
name name of the key
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_key_set_usage ( oxs_key_t key,
const axutil_env_t *  env,
int  usage 
)

Set the usage of the key.

Parameters:
key oxs_key ptr to key
env pointer to environment struct
usage usage of the key
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/rampart__sec__header__builder_8h.html0000644000076500007650000000575411202454456026076 0ustar shankarshankar Rampart/C: rampart_sec_header_builder.h File Reference

rampart_sec_header_builder.h File Reference

Build the Security related SOAP headers. More...

#include <axutil_utils_defines.h>
#include <axis2_defines.h>
#include <axutil_env.h>
#include <axiom_soap.h>
#include <axis2_msg_ctx.h>
#include <rampart_context.h>
#include <oxs_asym_ctx.h>
#include <oxs_xml_encryption.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN axis2_status_t rampart_shb_build_message (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *context, axiom_soap_envelope_t *soap_envelope)
AXIS2_EXTERN axis2_status_t rampart_shb_ensure_sec_header_order (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_node_t *sec_node)


Detailed Description

Build the Security related SOAP headers.


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__oxs__constants.html0000644000076500007650000024155411202454456024143 0ustar shankarshankar Rampart/C: OXS Constants

OXS Constants
[OMXMLSecurity]


Defines

#define OXS_DEFAULT_KT_ALGO_HREF   OXS_HREF_RSA_PKCS1
#define OXS_DEFAULT_SYM_ALGO   OXS_HREF_AES_256_CBC
#define OXS_STR_DEFAULT   OXS_STR_EMBEDDED
#define OXS_XENC   "xenc"
#define OXS_DS   "ds"
#define OXS_WSSE   "wsse"
#define OXS_WSSE_11   "wsse11"
#define OXS_WSU   "wsu"
#define OXS_WSC   "wsc"
#define OXS_WSSE_XMLNS   "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
#define OXS_WSSE_11_XMLNS   "http://docs.oasis-open.org/wss/oasis-wss-wssecurity-secext-1.1.xsd"
#define OXS_WSU_XMLNS   "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
#define OXS_ENCDATA_ID   "EncDataID"
#define OXS_ENCKEY_ID   "EncKeyID"
#define OXS_SIG_ID   "SigID"
#define OXS_CERT_ID   "CertID"
#define OXS_EMBEDDED_ID   "EmbeddedID"
#define OXS_DERIVED_ID   "DKID"
#define OXS_SIG_CONF_ID   "SigConfID"
#define OXS_LOCAL_REFERENCE_PREFIX   "#"
#define OXS_DSIG_NS   "http://www.w3.org/2000/09/xmldsig#"
#define OXS_ENC_NS   "http://www.w3.org/2001/04/xmlenc#"
#define OXS_WSSE_NS   "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
#define OXS_WSC_NS_05_02   "http://schemas.xmlsoap.org/ws/2005/02/sc"
#define OXS_WSC_NS_05_12   "http://docs.oasis-open.org/ws-sx/ws-secureconversation/200512"
#define OXS_NODE_SIGNATURE   "Signature"
#define OXS_NODE_SIGNEDINFO   "SignedInfo"
#define OXS_NODE_CANONICALIZATION_METHOD   "CanonicalizationMethod"
#define OXS_NODE_SIGNATURE_METHOD   "SignatureMethod"
#define OXS_NODE_SIGNATURE_VALUE   "SignatureValue"
#define OXS_NODE_DIGEST_METHOD   "DigestMethod"
#define OXS_NODE_DIGEST_VALUE   "DigestValue"
#define OXS_NODE_OBJECT   "Object"
#define OXS_NODE_MANIFEST   "Manifest"
#define OXS_NODE_SIGNATUREPROPERTIES   "SignatureProperties"
#define OXS_NODE_SIGNATURE_CONFIRMATION   "SignatureConfirmation"
#define OXS_NODE_ENCRYPTED_DATA   "EncryptedData"
#define OXS_NODE_ENCRYPTION_METHOD   "EncryptionMethod"
#define OXS_NODE_ENCRYPTION_PROPERTIES   "EncryptionProperties"
#define OXS_NODE_ENCRYPTION_PROPERTY   "EncryptionProperty"
#define OXS_NODE_CIPHER_DATA   "CipherData"
#define OXS_NODE_CIPHER_VALUE   "CipherValue"
#define OXS_NODE_CIPHER_REFERENCE   "CipherReference"
#define OXS_NODE_REFERENCE_LIST   "ReferenceList"
#define OXS_NODE_DATA_REFERENCE   "DataReference"
#define OXS_NODE_KEY_REFERENCE   "KeyReference"
#define OXS_NODE_CARRIED_KEYNAME   "CarriedKeyName"
#define OXS_TYPE_ENC_CONTENT   "http://www.w3.org/2001/04/xmlenc#Content"
#define OXS_TYPE_ENC_ELEMENT   "http://www.w3.org/2001/04/xmlenc#Element"
#define OXS_NODE_KEY_INFO   "KeyInfo"
#define OXS_NODE_REFERENCE   "Reference"
#define OXS_NODE_TRANSFORMS   "Transforms"
#define OXS_NODE_TRANSFORM   "Transform"
#define OXS_NODE_TRANSFORMATIONPARAMETERS   "TransformationParameters"
#define OXS_NODE_BINARY_SECURITY_TOKEN   "BinarySecurityToken"
#define OXS_NODE_KEY_IDENTIFIER   "KeyIdentifier"
#define OXS_NODE_SECURITY_TOKEN_REFRENCE   "SecurityTokenReference"
#define OXS_NODE_EMBEDDED   "Embedded"
#define OXS_NODE_DERIVED_KEY_TOKEN   "DerivedKeyToken"
#define OXS_NODE_PROPERTIES   "Properties"
#define OXS_NODE_GENERATION   "Generation"
#define OXS_NODE_OFFSET   "Offset"
#define OXS_NODE_LENGTH   "Length"
#define OXS_NODE_LABEL   "Label"
#define OXS_NODE_NONCE   "Nonce"
#define OXS_NODE_SECURITY_CONTEXT_TOKEN   "SecurityContextToken"
#define OXS_NODE_IDENTIFIER   "Identifier"
#define OXS_VALUE_TYPE_SECURITY_CONTEXT_TOKEN_05_02   "http://schemas.xmlsoap.org/ws/2005/02/sc/sct"
#define OXS_VALUE_TYPE_SECURITY_CONTEXT_TOKEN_05_12   "http://docs.oasis-open.org/ws-sx/ws-secureconversation/200512/sct"
#define OXS_NODE_SAML_ASSERTION   "Assertion"
#define OXS_NODE_SAML_PREFIX   "saml"
#define OXS_NODE_SAML_SUBJECT_CONFIRMATION_METHOD   "ConfirmationMethod"
#define OXS_ATTR_ID   "Id"
#define OXS_ATTR_URI   "URI"
#define OXS_ATTR_TYPE   "Type"
#define OXS_ATTR_MIMETYPE   "MimeType"
#define OXS_ATTR_ENCODING   "Encoding"
#define OXS_ATTR_ALGORITHM   "Algorithm"
#define OXS_ATTR_FILTER   "Filter"
#define OXS_ATTR_RECIPIENT   "Recipient"
#define OXS_ATTR_TARGET   "Target"
#define OXS_ATTR_ENCODING_TYPE   "EncodingType"
#define OXS_ATTR_VALUE_TYPE   "ValueType"
#define OXS_ATTR_VALUE   "Value"
#define OXS_NAME_AES_128_CBC   "aes128-cbc"
#define OXS_HREF_AES_128_CBC   "http://www.w3.org/2001/04/xmlenc#aes128-cbc"
#define OXS_NAME_AES_192_CBC   "aes192-cbc"
#define OXS_HREF_AES_192_CBC   "http://www.w3.org/2001/04/xmlenc#aes192-cbc"
#define OXS_NAME_AES_256_CBC   "aes256-cbc"
#define OXS_HREF_AES_256_CBC   "http://www.w3.org/2001/04/xmlenc#aes256-cbc"
#define OXS_NAME_KW_AES_128   "kw-aes128"
#define OXS_HREF_KW_AES_128   "http://www.w3.org/2001/04/xmlenc#kw-aes128"
#define OXS_NAME_KW_AES_192   "kw-aes192"
#define OXS_HREF_KW_AES_192   "http://www.w3.org/2001/04/xmlenc#kw-aes192"
#define OXS_NAME_KW_AES_256   "kw-aes256"
#define OXS_HREF_KW_AES_256   "http://www.w3.org/2001/04/xmlenc#kw-aes256"
#define OXS_NAME_BASE64   "base64"
#define OXS_HREF_BASE64   "http://www.w3.org/2000/09/xmldsig#base64"
#define OXS_NAME_DES_KEY_VALUE   "des"
#define OXS_NAME_DES3_CBC   "tripledes-cbc"
#define OXS_HREF_DES3_CBC   "http://www.w3.org/2001/04/xmlenc#tripledes-cbc"
#define OXS_NAME_KW_DES3   "kw-tripledes"
#define OXS_HREF_KW_DES3   "http://www.w3.org/2001/04/xmlenc#kw-tripledes"
#define OXS_NAME_DSA_KEY_VALUE   "dsa"
#define OXS_NODE_DSA_KEY_VALUE   "DSAKeyValue"
#define OXS_HREF_DSA_KEY_VALUE   "http://www.w3.org/2000/09/xmldsig#DSAKeyValue"
#define OXS_NAME_DSA_SHA1   "dsa-sha1"
#define OXS_HREF_DSA_SHA1   "http://www.w3.org/2000/09/xmldsig#dsa-sha1"
#define OXS_NAME_HMAC_SHA1   "HmacSha1"
#define OXS_HREF_HMAC_SHA1   "http://www.w3.org/2000/09/xmldsig#hmac-sha1"
#define OXS_NAME_ENCRYPTED_KEY   "enc-key"
#define OXS_NODE_ENCRYPTED_KEY   "EncryptedKey"
#define OXS_HREF_ENCRYPTED_KEY   "http://www.w3.org/2001/04/xmlenc#EncryptedKey"
#define OXS_HREF_XML_C14N   "http://www.w3.org/TR/2001/REC-xml-c14n-20010315"
#define OXS_HREF_XML_EXC_C14N   "http://www.w3.org/2001/10/xml-exc-c14n#"
#define OXS_HREF_XML_C14N_WITH_COMMENTS   "http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"
#define OXS_HREF_XML_EXC_C14N_WITH_COMMENTS   "http://www.w3.org/2001/10/xml-exc-c14n#WithComments"
#define OXS_HREF_TRANSFORM_XML_EXC_C14N   OXS_HREF_XML_EXC_C14N
#define OXS_HREF_TRANSFORM_STR_TRANSFORM   "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#STR-Transform"
#define OXS_HREF_TRANSFORM_ENVELOPED_SIGNATURE   "http://www.w3.org/2000/09/xmldsig#enveloped-signature"
#define OXS_NAME_KEY_NAME   "key-name"
#define OXS_NODE_KEY_NAME   "KeyName"
#define OXS_NAME_KEY_VALUE   "key-value"
#define OXS_NODE_KEY_VALUE   "KeyValue"
#define OXS_NAME_MD5   "md5"
#define OXS_HREF_MD5   "http://www.w3.org/2001/04/xmldsig-more#md5"
#define OXS_NAME_RETRIEVAL_METHOD   "retrieval-method"
#define OXS_NODE_RETRIEVAL_METHOD   "RetrievalMethod"
#define OXS_NAME_RSAKEY_VALUE   "rsa"
#define OXS_NODE_RSAKEY_VALUE   "RSAKeyValue"
#define OXS_HREF_RSAKEY_VALUE   "http://www.w3.org/2000/09/xmldsig#RSAKeyValue"
#define OXS_NAME_RSA_MD5   "rsa-md5"
#define OXS_HREF_RSA_MD5   "http://www.w3.org/2001/04/xmldsig-more#rsa-md5"
#define OXS_NAME_RSA_RIPEMD160   "rsa-ripemd160"
#define OXS_HREF_RSA_RIPEMD160   "http://www.w3.org/2001/04/xmldsig-more#rsa-ripemd160"
#define OXS_NAME_RSA_SHA1   "rsa-sha1"
#define OXS_HREF_RSA_SHA1   "http://www.w3.org/2000/09/xmldsig#rsa-sha1"
#define OXS_NAME_RSA_SHA224   "rsa-sha224"
#define OXS_HREF_RSA_SHA224   "http://www.w3.org/2001/04/xmldsig-more#rsa-sha224"
#define OXS_NAME_RSA_SHA256   "rsa-sha256"
#define OXS_HREF_RSA_SHA256   "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"
#define OXS_NAME_RSA_SHA384   "rsa-sha384"
#define OXS_HREF_RSA_SHA384   "http://www.w3.org/2001/04/xmldsig-more#rsa-sha384"
#define OXS_NAME_RSA_SHA512   "rsa-sha512"
#define OXS_HREF_RSA_SHA512   "http://www.w3.org/2001/04/xmldsig-more#rsa-sha512"
#define OXS_NAME_RSA_PKCS1   "rsa-1_5"
#define OXS_HREF_RSA_PKCS1   "http://www.w3.org/2001/04/xmlenc#rsa-1_5"
#define OXS_NAME_RSA_OAEP   "rsa-oaep-mgf1p"
#define OXS_HREF_RSA_OAEP   "http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p"
#define OXS_NODE_RSA_OAEP_PARAMS   "OAEPparams"
#define OXS_NAME_SHA1   "sha1"
#define OXS_HREF_SHA1   "http://www.w3.org/2000/09/xmldsig#sha1"
#define OXS_NAME_SHA224   "sha224"
#define OXS_HREF_SHA224   "http://www.w3.org/2001/04/xmldsig-more#sha224"
#define OXS_NAME_SHA256   "sha256"
#define OXS_HREF_SHA256   "http://www.w3.org/2001/04/xmlenc#sha256"
#define OXS_NAME_SHA384   "sha384"
#define OXS_HREF_SHA384   "http://www.w3.org/2001/04/xmldsig-more#sha384"
#define OXS_NAME_SHA512   "sha512"
#define OXS_HREF_SHA512   "http://www.w3.org/2001/04/xmlenc#sha512"
#define OXS_SC_DK_NAME_P_SHA1   "P_SHA-1"
#define OXS_SC_DK_HREF_P_SHA1   "http://schemas.xmlsoap.org/ws/2005/02/sc/dk/p_sha1"
#define OXS_NAME_X509_DATA   "x509"
#define OXS_NODE_X509_DATA   "X509Data"
#define OXS_HREF_X509_DATA   "http://www.w3.org/2000/09/xmldsig#X509Data"
#define OXS_NODE_X509_CERTIFICATE   "X509Certificate"
#define OXS_NODE_X509_CRL   "X509CRL"
#define OXS_NODE_X509_SUBJECT_NAME   "X509SubjectName"
#define OXS_NODE_X509_ISSUER_SERIAL   "X509IssuerSerial"
#define OXS_NODE_X509_ISSUER_NAME   "X509IssuerName"
#define OXS_NODE_X509_SERIAL_NUMBER   "X509SerialNumber"
#define OXS_NODE_X509_SKI   "X509SKI"
#define OXS_NAME_RAW_X509_CERT   "raw-x509-cert"
#define OXS_HREF_RAW_X509_CERT   "http://www.w3.org/2000/09/xmldsig#rawX509Certificate"
#define OXS_NAME_X509_STORE   "x509-store"
#define OXS_NODE_ENVELOPE   "Envelope"
#define OXS_NODE_HEADER   "Header"
#define OXS_NODE_BODY   "Body"
#define OXS_NODE_FAULT   "Fault"
#define OXS_NODE_FAULT_CODE   "faultcode"
#define OXS_NODE_FAULT_STRING   "faultstring"
#define OXS_NODE_FAULT_ACTOR   "faultactor"
#define OXS_NODE_FAULT_DETAIL   "detail"
#define OXS_NODE_CODE   "Code"
#define OXS_NODE_REASON   "Reason"
#define OXS_NODE_NODE   "Node"
#define OXS_NODE_ROLE   "Role"
#define OXS_NODE_DETAIL   "Detail"
#define OXS_NODE_VALUE   "Value"
#define OXS_NODE_SUBCODE   "Subcode"
#define OXS_NODE_TEXT   "Text"
#define OXS_SOAP_FAULT_CODE_VERSION_MISMATCH   "VersionMismatch"
#define OXS_SOAP_FAULT_CODE_MUST_UNDERSTAND   "MustUnderstand"
#define OXS_SOAP_FAULT_CODE_CLIENT   "Client"
#define OXS_SOAP_FAULT_CODE_SERVER   "Server"
#define OXS_SOAP_FAULT_CODE_RECEIVER   "Receiver"
#define OXS_SOAP_FAULT_CODE_SENDER   "Sender"
#define OXS_SOAP_FAULT_DATA_ENCODNING_UNKNOWN   "DataEncodingUnknown"
#define OXS_ENCODING_BASE64BINARY   "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary"
#define OXS_VALUE_X509V3   "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3"
#define OXS_X509_SUBJ_KI   "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509SubjectKeyIdentifier"
#define OXS_X509_TUMBP_PRINT_SHA1   "http://docs.oasis-open.org/wss/oasis-wss-soap-message-security-1.1#ThumbprintSHA1"
#define OXS_X509_ENCRYPTED_KEY_SHA1   "http://docs.oasis-open.org/wss/oasis-wss-soap-message-security-1.1#EncryptedKeySHA1"
#define OXS_STR_DIRECT_REFERENCE   "DirectReference"
#define OXS_STR_KEY_IDENTIFIER   OXS_NODE_KEY_IDENTIFIER
#define OXS_STR_EMBEDDED   OXS_NODE_EMBEDDED
#define OXS_STR_ISSUER_SERIAL   "IssuerSerial"
#define OXS_STR_THUMB_PRINT   "ThumbPrint"
#define OXS_STR_EXTERNAL_URI   "ExternalUri"
#define OXS_STR_ENCRYPTED_KEY   "Encryptedkey"
#define OXS_WSS_11_VALUE_TYPE_ENCRYPTED_KEY   "http://docs.oasis-open.org/wss/oasis-wss-soap-message-security-1.1#EncryptedKey"
#define OXS_NODE_ENCRYPTED_HEADER   "EncryptedHeader"

Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/rampart__mod_8h-source.html0000644000076500007650000001160211202454455024051 0ustar shankarshankar Rampart/C: rampart_mod.h Source File

rampart_mod.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef RAMPART_MOD_H
00019 #define RAMPART_MOD_H
00020 
00030 #include <axis2_handler.h>
00031 
00032 #ifdef __cplusplus
00033 extern "C"
00034 {
00035 #endif
00036 
00043     AXIS2_EXTERN axis2_handler_t* AXIS2_CALL
00044     rampart_in_handler_create(
00045         const axutil_env_t *env,
00046         axutil_string_t *name);
00047 
00054     AXIS2_EXTERN axis2_handler_t* AXIS2_CALL
00055     rampart_out_handler_create(
00056         const axutil_env_t *env,
00057         axutil_string_t *name);
00058 
00061 #ifdef __cplusplus
00062 }
00063 #endif
00064 
00065 #endif    /* AXIS2_ADDR_MOD_H */

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/globals_enum.html0000644000076500007650000000363611202454457022171 0ustar shankarshankar Rampart/C: Class Members
 


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/oxs__encryption_8h.html0000644000076500007650000000631511202454455023336 0ustar shankarshankar Rampart/C: oxs_encryption.h File Reference

oxs_encryption.h File Reference

Provides data encryption and decryption functionalities of the OMXMLSec. More...

#include <axis2_defines.h>
#include <oxs_ctx.h>
#include <oxs_asym_ctx.h>
#include <axutil_env.h>
#include <axiom_node.h>
#include <axiom_element.h>
#include <axutil_qname.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN axis2_status_t oxs_encryption_symmetric_crypt (const axutil_env_t *env, oxs_ctx_t *enc_ctx, oxs_buffer_t *input, oxs_buffer_t *result)
AXIS2_EXTERN axis2_status_t oxs_encryption_asymmetric_crypt (const axutil_env_t *env, oxs_asym_ctx_t *asym_ctx, oxs_buffer_t *input, oxs_buffer_t *result)


Detailed Description

Provides data encryption and decryption functionalities of the OMXMLSec.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__openssl__pkcs12.html0000644000076500007650000000635611202454456024103 0ustar shankarshankar Rampart/C: OpenSSL PKCS12

OpenSSL PKCS12
[OpenSSL wrapper]


Functions

AXIS2_EXTERN axis2_status_t openssl_pkcs12_load (const axutil_env_t *env, axis2_char_t *filename, PKCS12 **p12)
AXIS2_EXTERN axis2_status_t openssl_pkcs12_load_from_buffer (const axutil_env_t *env, axis2_char_t *buffer, PKCS12 **p12, int len)
AXIS2_EXTERN axis2_status_t openssl_pkcs12_parse (const axutil_env_t *env, axis2_char_t *password, PKCS12 *p12, EVP_PKEY **prvkey, X509 **cert, STACK_OF(X509)**ca)
AXIS2_EXTERN axis2_status_t openssl_pkcs12_free (const axutil_env_t *env, PKCS12 *p12)

Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__rampart__error.html0000644000076500007650000001103711202454457024105 0ustar shankarshankar Rampart/C: Rampart_error

Rampart_error
[Rampart Utilities]


Typedefs

typedef enum rampart_error_codes rampart_error_codes_t

Enumerations

enum  rampart_error_codes {
  RAMPART_ERROR_NONE = RAMPART_ERROR_CODES_START, RAMPART_ERROR_UNSUPPORTED_SECURITY_TOKEN, RAMPART_ERROR_INVALID_SECURITY, RAMPART_ERROR_INVALID_SECURITY_TOKEN,
  RAMPART_ERROR_FAILED_AUTHENTICATION, RAMPART_ERROR_FAILED_CHECK, RAMPART_ERROR_SECURITY_TOKEN_UNAVAILABLE, RAMPART_ERROR_RAMPART_ERROR_LAST,
  RAMPART_ERROR_IN_TIMESTAMP, RAMPART_ERROR_IN_USERNAMETOKEN, RAMPART_ERROR_IN_ENCRYPTED_KEY, RAMPART_ERROR_IN_ENCRYPTED_DATA,
  RAMPART_ERROR_IN_SIGNATURE, RAMPART_ERROR_MSG_REPLAYED, RAMPART_ERROR_IN_POLICY, RAMPART_ERROR_LAST
}
 rampart error codes More...

Functions

AXIS2_EXTERN axis2_status_t rampart_error_init ()

Enumeration Type Documentation

rampart error codes

Set of error codes for rampart


Function Documentation

AXIS2_EXTERN axis2_status_t rampart_error_init (  ) 

initialising method for error

Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__rahas__mod.html0000644000076500007650000000556711202454456023175 0ustar shankarshankar Rampart/C: Rahas Module

Rahas Module


Functions

AXIS2_EXTERN axis2_handler_t * rahas_in_handler_create (const axutil_env_t *env, axutil_string_t *name)

Function Documentation

AXIS2_EXTERN axis2_handler_t* rahas_in_handler_create ( const axutil_env_t *  env,
axutil_string_t *  name 
)

Creates In handler

Parameters:
env pointer to environment struct
name 
Returns:
Created In handler


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/rampart__timestamp__token_8h-source.html0000644000076500007650000001246411202454455026643 0ustar shankarshankar Rampart/C: rampart_timestamp_token.h Source File

rampart_timestamp_token.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef RAMPART_TIMESTAMP_TOKEN_H
00019 #define RAMPART_TIMESTAMP_TOKEN_H
00020 
00032 #ifdef __cplusplus
00033 extern "C"
00034 {
00035 #endif
00036 
00037 #include <axutil_env.h>
00047     axis2_status_t AXIS2_CALL
00048     rampart_timestamp_token_build(
00049         const axutil_env_t *env,
00050         axiom_node_t *sec_node,
00051         int ttl, 
00052         axis2_bool_t with_millisecond);
00053 
00062     axis2_status_t AXIS2_CALL
00063     rampart_timestamp_token_validate(
00064         const axutil_env_t *env,
00065         axis2_msg_ctx_t *msg_ctx,
00066         axiom_node_t *ts_node,
00067         int clock_skew_buffer);
00068 
00069     /* @} */
00070 #ifdef __cplusplus
00071 }
00072 #endif
00073 
00074 
00075 #endif /*RAMPART_TIMESTAMP_TOKEN_H*/

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/rampart__config_8h-source.html0000644000076500007650000002777311202454455024557 0ustar shankarshankar Rampart/C: rampart_config.h Source File

rampart_config.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef RAMPART_CONFIG_H
00019 #define RAMPART_CONFIG_H
00020 
00032 #include <axis2_util.h>
00033 #include <axis2_defines.h>
00034 /*#include <axutil_utils_defines.h>*/
00035 #include <axutil_env.h>
00036 #include <rampart_saml_token.h>
00037 #include <rampart_issued_token.h>
00038 
00039 /*#include <rp_includes.h>
00040 #include <rp_secpolicy.h>
00041 #include <rampart_authn_provider.h>
00042 #include <axutil_property.h>
00043 #include <rampart_constants.h>
00044 #include <rampart_callback.h>
00045 #include <rampart_authn_provider.h>
00046 #include <axis2_key_type.h>
00047 #include <axis2_msg_ctx.h>
00048 #include <oxs_key.h>
00049 #include <axutil_array_list.h>
00050 */
00051 
00052 #ifdef __cplusplus
00053 extern "C"
00054 {
00055 #endif
00056 
00057     typedef struct rampart_config_t rampart_config_t;
00058 
00064     AXIS2_EXTERN rampart_config_t *AXIS2_CALL
00065     rampart_config_create(
00066         const axutil_env_t *env);
00067 
00073     AXIS2_EXTERN void AXIS2_CALL
00074     rampart_config_free(
00075         rampart_config_t *rampart_config,
00076         const axutil_env_t *env);
00077 
00085     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00086     rampart_config_set_username(
00087         rampart_config_t *rampart_config,
00088         const axutil_env_t *env,
00089         axis2_char_t *user);
00090 
00098     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00099     rampart_config_set_password(
00100         rampart_config_t *rampart_config,
00101         const axutil_env_t *env,
00102         axis2_char_t *password);
00103 
00111     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00112     rampart_config_set_password_type(
00113         rampart_config_t *rampart_config,
00114         const axutil_env_t *env,
00115         axis2_char_t *password_type);
00116 
00124     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00125     rampart_config_set_ttl(
00126         rampart_config_t *rampart_config,
00127         const axutil_env_t *env,
00128         int ttl);
00129 
00137         AXIS2_EXTERN int AXIS2_CALL
00138         rampart_config_add_saml_token(
00139         rampart_config_t *rampart_config, 
00140                 const axutil_env_t *env, 
00141                 rampart_saml_token_t *saml);
00142 
00150         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00151         rampart_config_set_issued_token_aquire_function(
00152         rampart_config_t *rampart_config,
00153                 const axutil_env_t *env,
00154                 issued_token_callback_func issued_token_aquire);
00155 
00162     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00163     rampart_config_get_username(
00164         rampart_config_t *rampart_config,
00165         const axutil_env_t *env);
00166 
00173     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00174     rampart_config_get_password(
00175         rampart_config_t *rampart_config,
00176         const axutil_env_t *env);
00177 
00184     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00185     rampart_config_get_password_type(
00186         rampart_config_t *rampart_config,
00187         const axutil_env_t *env);
00188 
00195     AXIS2_EXTERN int AXIS2_CALL
00196     rampart_config_get_ttl(
00197         rampart_config_t *rampart_config,
00198         const axutil_env_t *env);
00199 
00206         AXIS2_EXTERN axutil_array_list_t * AXIS2_CALL
00207         rampart_config_get_saml_tokens(
00208         rampart_config_t *rampart_config, 
00209                 const axutil_env_t *env);    
00210 
00217         AXIS2_EXTERN issued_token_callback_func AXIS2_CALL
00218         rampart_config_get_issued_token_aquire_function(
00219         rampart_config_t *rampart_config, 
00220                 const axutil_env_t *env);    
00221 
00222     /* @} */
00223 #ifdef __cplusplus
00224 }
00225 #endif
00226 
00227 #endif /* RAMPART_CONFIG_H */
00228 

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__rampart__encryption.html0000644000076500007650000003731211202454457025152 0ustar shankarshankar Rampart/C: Encryption

Encryption
[Rampart Utilities]


Functions

AXIS2_EXTERN axis2_status_t rampart_enc_encrypt_message (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_soap_envelope_t *soap_envelope, axiom_node_t *sec_node)
AXIS2_EXTERN axis2_status_t rampart_enc_dk_encrypt_message (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_soap_envelope_t *soap_envelope, axiom_node_t *sec_node)
AXIS2_EXTERN axis2_status_t rampart_enc_add_key_info (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_soap_envelope_t *soap_envelope, axiom_node_t *sec_node)
AXIS2_EXTERN axis2_status_t rampart_enc_encrypt_signature (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_soap_envelope_t *soap_envelope, axiom_node_t *sec_node)
AXIS2_EXTERN axis2_status_t rampart_enc_encrypt_session_key (const axutil_env_t *env, oxs_key_t *session_key, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_node_t *sec_node, axutil_array_list_t *id_list)

Function Documentation

AXIS2_EXTERN axis2_status_t rampart_enc_add_key_info ( const axutil_env_t *  env,
axis2_msg_ctx_t *  msg_ctx,
rampart_context_t *  rampart_context,
axiom_soap_envelope_t *  soap_envelope,
axiom_node_t *  sec_node 
)

Parameters:
env pointer to environment struct
msg_ctx message context
soap_envelope the SOAP envelope
sec_node The security element
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t rampart_enc_dk_encrypt_message ( const axutil_env_t *  env,
axis2_msg_ctx_t *  msg_ctx,
rampart_context_t *  rampart_context,
axiom_soap_envelope_t *  soap_envelope,
axiom_node_t *  sec_node 
)

Encrypt the message using derived keys. Uses symmetric encryption

Parameters:
env pointer to environment struct
msg_ctx message context
rampart_context rampart context
soap_envelope the SOAP envelope
sec_node The security element
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t rampart_enc_encrypt_message ( const axutil_env_t *  env,
axis2_msg_ctx_t *  msg_ctx,
rampart_context_t *  rampart_context,
axiom_soap_envelope_t *  soap_envelope,
axiom_node_t *  sec_node 
)

Parameters:
env pointer to environment struct
msg_ctx message context
soap_envelope the SOAP envelope
sec_node The security element
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t rampart_enc_encrypt_session_key ( const axutil_env_t *  env,
oxs_key_t session_key,
axis2_msg_ctx_t *  msg_ctx,
rampart_context_t *  rampart_context,
axiom_node_t *  sec_node,
axutil_array_list_t *  id_list 
)

Encrypts the session key using assymmetric encription

Parameters:
env pointer to environment struct
session_key the session key to be encrypted
msg_ctx message context
rampart_context the rampart context
sec_node The security element
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t rampart_enc_encrypt_signature ( const axutil_env_t *  env,
axis2_msg_ctx_t *  msg_ctx,
rampart_context_t *  rampart_context,
axiom_soap_envelope_t *  soap_envelope,
axiom_node_t *  sec_node 
)

Parameters:
env pointer to environment struct
msg_ctx message context
soap_envelope the SOAP envelope
sec_node The security element
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__rampart__token__builder.html0000644000076500007650000003455611202454457025754 0ustar shankarshankar Rampart/C: Token Builder

Token Builder
[Rampart Utilities]


Enumerations

enum  rampart_token_build_pattern_t {
  RTBP_UNKNOWN = 0, RTBP_EMBEDDED, RTBP_KEY_IDENTIFIER, RTBP_X509DATA_ISSUER_SERIAL,
  RTBP_X509DATA_X509CERTIFICATE, RTBP_THUMBPRINT
}

Functions

AXIS2_EXTERN axis2_status_t rampart_token_build_security_token_reference (const axutil_env_t *env, axiom_node_t *parent, oxs_x509_cert_t *cert, rampart_token_build_pattern_t pattern)
AXIS2_EXTERN axis2_status_t rampart_token_build_embedded (const axutil_env_t *env, axiom_node_t *parent, oxs_x509_cert_t *cert)
AXIS2_EXTERN axis2_status_t rampart_token_build_key_identifier (const axutil_env_t *env, axiom_node_t *parent, oxs_x509_cert_t *cert)
AXIS2_EXTERN axis2_status_t rampart_token_build_x509_data_x509_certificate (const axutil_env_t *env, axiom_node_t *parent, oxs_x509_cert_t *cert)
AXIS2_EXTERN axis2_status_t rampart_token_build_x509_data_issuer_serial (const axutil_env_t *env, axiom_node_t *parent, oxs_x509_cert_t *cert)
AXIS2_EXTERN axis2_status_t rampart_token_build_thumbprint_reference (const axutil_env_t *env, axiom_node_t *parent, oxs_x509_cert_t *cert)

Function Documentation

AXIS2_EXTERN axis2_status_t rampart_token_build_embedded ( const axutil_env_t *  env,
axiom_node_t *  parent,
oxs_x509_cert_t *  cert 
)

Build an Embedded token with data available in the certificate. <SecurityTokenReference> <Embedded> <BinarySecurityToken>UYISDjsdaousdWEqswOIUsd</BinarySecurityToken> </Embedded> </SecurityTokenReference>

Parameters:
env pointer to environment struct
parent The parent node
cert The X509 certificate
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t rampart_token_build_key_identifier ( const axutil_env_t *  env,
axiom_node_t *  parent,
oxs_x509_cert_t *  cert 
)

Build a KeyIndentifer token with data available in the certificate. <SecurityTokenReference> <KeyIdentifier>WEqswOIUsd</KeyIdentifier> </SecurityTokenReference>

Parameters:
env pointer to environment struct
parent The parent node
cert The X509 certificate
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t rampart_token_build_security_token_reference ( const axutil_env_t *  env,
axiom_node_t *  parent,
oxs_x509_cert_t *  cert,
rampart_token_build_pattern_t  pattern 
)

Build a SecurityTokenReference element according to the pattern specified in . The token will be attached to the node and relavent data will be extracted from certificate . Note that this method will internally call other token building methods specified in this header depending on the .

Parameters:
env pointer to environment struct
parent The parent node
cert The X509 certificate
pattern The build pattern
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t rampart_token_build_thumbprint_reference ( const axutil_env_t *  env,
axiom_node_t *  parent,
oxs_x509_cert_t *  cert 
)

Build a Thumbprint Reference of the certificate. <wsse:SecurityTokenReference> <wsse:KeyIdentifier EncodingType="..." ValueType="...# ThumbprintSHA1">bg6I8267h0TUcPYvYE0D6k6+UJQ=</wsse:KeyIdentifier> </wsse:SecurityTokenReference>

Parameters:
env pointer to environment struct
parent The parent node
cert The X509 certificate
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t rampart_token_build_x509_data_issuer_serial ( const axutil_env_t *  env,
axiom_node_t *  parent,
oxs_x509_cert_t *  cert 
)

Build an X509IssuerSerial token with data available in the certificate. <SecurityTokenReference> <x509Data> <X509IssuerSerial> <X509IssuerName>C=US, O=VeriSign, Inc.,</X509IssuerName> <X509SerialNumber>93243297328</X509SerialNumber> </X509IssuerSerial> </x509Data> </SecurityTokenReference>

Parameters:
env pointer to environment struct
parent The parent node
cert The X509 certificate
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/openssl__rsa_8h.html0000644000076500007650000001073011202454455022577 0ustar shankarshankar Rampart/C: openssl_rsa.h File Reference

openssl_rsa.h File Reference

For RSA encryption. More...

#include <openssl/rand.h>
#include <openssl/evp.h>
#include <openssl/pem.h>
#include <openssl/bio.h>
#include <openssl_constants.h>
#include <openssl_pkey.h>
#include <axis2_util.h>
#include <oxs_buffer.h>

Go to the source code of this file.

Functions

int openssl_rsa_prv_decrypt (const axutil_env_t *env, const openssl_pkey_t *pkey, const axis2_char_t *padding, oxs_buffer_t *in, oxs_buffer_t *out)
int openssl_rsa_pub_encrypt (const axutil_env_t *env, const openssl_pkey_t *pkey, const axis2_char_t *padding, oxs_buffer_t *in, oxs_buffer_t *out)
int openssl_rsa_prv_encrypt (const axutil_env_t *env, const openssl_pkey_t *pkey, const axis2_char_t *padding, oxs_buffer_t *in, oxs_buffer_t *out)
int openssl_rsa_pub_decrypt (const axutil_env_t *env, const openssl_pkey_t *pkey, const axis2_char_t *padding, oxs_buffer_t *in, oxs_buffer_t *out)


Detailed Description

For RSA encryption.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/rampart__username__token_8h-source.html0000644000076500007650000001541411202454455026455 0ustar shankarshankar Rampart/C: rampart_username_token.h Source File

rampart_username_token.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef RAMPART_USERNAME_TOKEN_H
00019 #define RAMPART_USERNAME_TOKEN_H
00020 
00031 #ifdef __cplusplus
00032 extern "C"
00033 {
00034 #endif
00035 
00036 
00037 #include <axutil_env.h>
00038 #include <rampart_context.h>
00039 
00040     /*
00041      * builds username token
00042      * @param env pointer to environment struct
00043      * @param rampart_context pointer to rampart context structure
00044      * @param sec_node Security header node
00045      * @param sec_ns_obj security namespace object
00046      * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
00047      */
00048     axis2_status_t AXIS2_CALL
00049     rampart_username_token_build(
00050         const axutil_env_t *env,
00051         rampart_context_t *rampart_context,
00052         axiom_node_t *sec_node,
00053         axiom_namespace_t *sec_ns_obj);
00054 
00055     /*
00056      * Validates the given username token
00057      * @param env pointer to environment struct
00058      * @param msg_ctx axis2 message context
00059      * @param ut_node User name token node
00060      * @param rampart_context pointer to rampart context structure
00061      * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
00062      */
00063     axis2_status_t AXIS2_CALL
00064     rampart_username_token_validate(
00065         const axutil_env_t *env,
00066         axis2_msg_ctx_t *msg_ctx,
00067         axiom_node_t *ut_node,
00068         rampart_context_t *rampart_context);
00069 
00070 #ifdef __cplusplus
00071 }
00072 #endif
00073 
00074 
00075 #endif /*RAMPART_USERNAME_TOKEN_H*/

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__rampart__username__token.html0000644000076500007650000000470311202454457026134 0ustar shankarshankar Rampart/C: Username Token

Username Token
[Rampart Utilities]


Functions

axis2_status_t rampart_username_token_build (const axutil_env_t *env, rampart_context_t *rampart_context, axiom_node_t *sec_node, axiom_namespace_t *sec_ns_obj)
axis2_status_t rampart_username_token_validate (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axiom_node_t *ut_node, rampart_context_t *rampart_context)

Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/rampart__policy__validator_8h-source.html0000644000076500007650000001237111202454455027001 0ustar shankarshankar Rampart/C: rampart_policy_validator.h Source File

rampart_policy_validator.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #include <axutil_utils_defines.h>
00019 #include <axis2_defines.h>
00020 #include <axutil_env.h>
00021 #include <axis2_msg_ctx.h>
00022 #include <rampart_context.h>
00034 #ifndef RAMPART_POLICY_VALIDATOR_H
00035 #define RAMPART_POLICY_VALIDATOR_H
00036 
00037 #ifdef __cplusplus
00038 extern "C" {
00039 #endif
00040 
00049     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00050     rampart_pv_validate_sec_header(
00051         const axutil_env_t *env,
00052         rampart_context_t *rampart_context,
00053         axiom_node_t *sec_node,
00054         axis2_msg_ctx_t *msg_ctx);
00055 
00056 
00057     /* @} */
00058 #ifdef __cplusplus
00059 }
00060 #endif
00061 
00062 #endif    /* !RAMPART_POLICY_VALIDATOR_H */

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/doxygen.png0000644000076500007650000000240111202454454021001 0ustar shankarshankar‰PNG  IHDRd-ok>ÂgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<]PLTEǾÏ"&©ÈÎï¶»ÖÓÚú“¢Þ ¬à¶Âõ‡§ÕÙêÉÊÎáâæ{ŽÔ¡ëˆ™× ²ø§¬¹ÀÀ±ÝÝÎùùéõõçëëåED9×ÖËhg]_X<@:#mhUÿÿÿÝÀ1tRNSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÍvÿIDATxÚbC£: d#„„………h` @¡X",***LKˆ.–], ºX@t± €èb @ÑÅ€BµD„6–š%""´° € ˜% ˆ™B:H¢ˆ²Áf@• ˆRPy"K`\PbC(!II!h©…ëƒ(ñ„Ä!ꈬC„Ä…àl!0[X\J\$TMˆ(’>a$S„ Ù@ Ш@R.$‚¬LJBR¢‰AÌG1 ¬ Â(FȃÔPhhÁTÀ¢„%!`€&q°%u P ¹¢ ¬ € ¹CT$B¢à|‚ºW„¤Àl £!B`R$( …Ĉ‘’ž@AÅ%ĤÄ%@,(—ʂڱ%$ÁââRPmB U`1IˆYB  99€\1 yCCCÿf"[N 'Ü=TGÈ’øl8˜^Kû5<êSæRɤ”%î@@ à›Ê b1 qÅAXHˆ¸&ØB’R y n˜P„Ìã–4A €€j¹€€>Ü ˜ t!˜+(.ÈÅWQ±A2ÜÜMUÜ‚’’‚‚â `1 %`19€F< 3cZÄ`óe!\ˆ DÈ+. 83‹³Àä¸!lYYA -6‚EJŠ¢V €@©žXXX 4„å Ê@86Ð`RdB´€4I "Ý "–@xrÊŒ‚H€AÊ`—f ÉȰCŒ"XV0ɲ³C b@2…¬H ¬È“ p)!(ì‚ 0Ž4ˆ)(%RÁÎ ¶$€TÊ€¥Àþb‡b,säÐ@7À üѰ‚Òî?f¥Ö—\PIx!I´¦"”Ȉ’3¨ QY˜ÿt^^ÛØgv- }>WJOAV`$&#”¦8ùøø8€\FF ›SFJ$ÂÆ€ÐƊС䈉ÀÀ 4ª…Èäå -Á§‡ €H²…—ŸŸŸf ?ðâ5„ €k1Âd‰,ŒÃ ³ƒ“€.€"­F™ËË€àñ‚½ÁIÈ€"±Ù4ÉH gx|‚f©m)))9´. aMDƒ& ºX@t± €èb @ÑÅ€¢‹%DKˆ.–], ºX@t± €èb @€d`‚ɽSµOIEND®B`‚rampartc-src-1.3.0/xdocs/api/html/rampart__replay__detector_8h.html0000644000076500007650000001105111202454456025317 0ustar shankarshankar Rampart/C: rampart_replay_detector.h File Reference

rampart_replay_detector.h File Reference

The replay_detector module for rampart. More...

#include <axis2_defines.h>
#include <axutil_env.h>
#include <axis2_msg_ctx.h>
#include <rampart_context.h>

Go to the source code of this file.

Classes

struct  rampart_replay_detector_ops
struct  rampart_replay_detector

Defines

#define RAMPART_REPLAY_DETECTOR_IS_REPLAYED(replay_detector, env, msg_ctx, rampart_context)   ((replay_detector)->ops->is_replayed(replay_detector, env, msg_ctx, rampart_context))
#define RAMPART_REPLAY_DETECTOR_FREE(replay_detector, env)   ((replay_detector)->ops->free(replay_detector, env))

Typedefs

typedef struct
rampart_replay_detector_ops 
rampart_replay_detector_ops_t
typedef struct
rampart_replay_detector 
rampart_replay_detector_t

Functions

AXIS2_EXTERN axis2_status_t rampart_replay_detector_default (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, void *user_params)


Detailed Description

The replay_detector module for rampart.


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/oxs__xml__encryption_8h-source.html0000644000076500007650000002161411202454455025652 0ustar shankarshankar Rampart/C: oxs_xml_encryption.h Source File

oxs_xml_encryption.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef OXS_XML_ENCRYPTION_H
00019 #define OXS_XML_ENCRYPTION_H
00020 
00021 
00032 #include <axis2_defines.h>
00033 #include <oxs_ctx.h>
00034 #include <axutil_env.h>
00035 #include <axiom_node.h>
00036 #include <axiom_element.h>
00037 #include <axutil_qname.h>
00038 
00039 #ifdef __cplusplus
00040 extern "C"
00041 {
00042 #endif
00043 
00054     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00055     oxs_xml_enc_encrypt_node(const axutil_env_t *env,
00056                              oxs_ctx_t * enc_ctx,
00057                              axiom_node_t *node,
00058                              axiom_node_t **enc_type_node, 
00059                              axiom_node_t *key_reference_node);
00060 
00070     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00071     oxs_xml_enc_decrypt_node(const axutil_env_t *env,
00072                              oxs_ctx_t * enc_ctx,
00073                              axiom_node_t *enc_type_node,
00074                              axiom_node_t **decrypted_node);
00075 
00086     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00087     oxs_xml_enc_encrypt_data(const axutil_env_t *env,
00088                              oxs_ctx_t * enc_ctx,
00089                              oxs_buffer_t *content_buf,
00090                              axiom_node_t **enc_type_node, 
00091                              axiom_node_t *key_reference_node);
00092 
00102     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00103     oxs_xml_enc_decrypt_data(const axutil_env_t *env,
00104                              oxs_ctx_t * enc_ctx,
00105                              axiom_node_t *enc_type_node,
00106                              oxs_buffer_t *result_buf);
00107 
00118     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00119     oxs_xml_enc_encrypt_key(const axutil_env_t *env,
00120                             oxs_asym_ctx_t * asym_ctx,
00121                             axiom_node_t *parent,
00122                             oxs_key_t *sym_key,
00123                             axutil_array_list_t *id_list);
00124 
00135     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00136     oxs_xml_enc_decrypt_key(const axutil_env_t *env,
00137                             oxs_asym_ctx_t * asym_ctx,
00138                             axiom_node_t *parent,
00139                             axiom_node_t *encrypted_key_node,
00140                             oxs_key_t *key);
00142 #ifdef __cplusplus
00143 }
00144 #endif
00145 
00146 #endif                          /* OXS_XML_ENCRYPTION_H */

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/oxs__sign__ctx_8h.html0000644000076500007650000002332711202454455023123 0ustar shankarshankar Rampart/C: oxs_sign_ctx.h File Reference

oxs_sign_ctx.h File Reference

Keeps information relavent for a single node of signing. More...

#include <axis2_defines.h>
#include <axutil_env.h>
#include <axiom_node.h>
#include <oxs_x509_cert.h>
#include <oxs_key.h>
#include <openssl_pkey.h>

Go to the source code of this file.

Typedefs

typedef struct oxs_sign_ctx_t oxs_sign_ctx_t

Enumerations

enum  oxs_sign_operation_t { OXS_SIGN_OPERATION_NONE = 0, OXS_SIGN_OPERATION_SIGN, OXS_SIGN_OPERATION_VERIFY }

Functions

AXIS2_EXTERN oxs_sign_ctx_t * oxs_sign_ctx_create (const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_sign_ctx_free (oxs_sign_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_sign_ctx_get_sign_mtd_algo (const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_sign_ctx_get_c14n_mtd (const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_sign_ctx_get_sig_val (const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env)
AXIS2_EXTERN axutil_array_list_t * oxs_sign_ctx_get_sign_parts (const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env)
AXIS2_EXTERN oxs_x509_cert_t * oxs_sign_ctx_get_certificate (const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env)
AXIS2_EXTERN openssl_pkey_toxs_sign_ctx_get_private_key (const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env)
AXIS2_EXTERN openssl_pkey_toxs_sign_ctx_get_public_key (const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env)
AXIS2_EXTERN oxs_key_toxs_sign_ctx_get_secret (const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env)
AXIS2_EXTERN oxs_sign_operation_t oxs_sign_ctx_get_operation (const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_sign_ctx_set_sign_mtd_algo (oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, axis2_char_t *sign_mtd_algo)
AXIS2_EXTERN axis2_status_t oxs_sign_ctx_set_c14n_mtd (oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, axis2_char_t *c14n_mtd)
AXIS2_EXTERN axis2_status_t oxs_sign_ctx_set_sig_val (oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, axis2_char_t *sig_val)
AXIS2_EXTERN axis2_status_t oxs_sign_ctx_set_sign_parts (oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, axutil_array_list_t *sign_parts)
AXIS2_EXTERN axis2_status_t oxs_sign_ctx_set_certificate (oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, oxs_x509_cert_t *certificate)
AXIS2_EXTERN axis2_status_t oxs_sign_ctx_set_private_key (oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, openssl_pkey_t *prv_key)
AXIS2_EXTERN axis2_status_t oxs_sign_ctx_set_public_key (oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, openssl_pkey_t *pub_key)
AXIS2_EXTERN axis2_status_t oxs_sign_ctx_set_secret (oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, oxs_key_t *secret)
AXIS2_EXTERN axis2_status_t oxs_sign_ctx_set_operation (oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, oxs_sign_operation_t operation)


Detailed Description

Keeps information relavent for a single node of signing.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/rampart__saml_8h-source.html0000644000076500007650000002510411202454455024230 0ustar shankarshankar Rampart/C: rampart_saml.h Source File

rampart_saml.h

Go to the documentation of this file.
00001 /*
00002  *   Copyright 2003-2004 The Apache Software Foundation.
00003  *
00004  *   Licensed under the Apache License, Version 2.0 (the "License");
00005  *   you may not use this file except in compliance with the License.
00006  *   You may obtain a copy of the License at
00007  *
00008  *       http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  *   Unless required by applicable law or agreed to in writing, software
00011  *   distributed under the License is distributed on an "AS IS" BASIS,
00012  *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  *   See the License for the specific language governing permissions and
00014  *   limitations under the License.
00015  */
00016 
00017 #include <axutil_utils_defines.h>
00018 #include <axis2_defines.h>
00019 #include <axutil_env.h>
00020 #include <axiom_soap.h>
00021 #include <axis2_msg_ctx.h>
00022 #include <oxs_asym_ctx.h>
00023 #include <oxs_xml_encryption.h>
00024 #include <rampart_context.h>
00025 #include <axutil_utils.h>
00026 #include <axiom.h>
00027 #include <rampart_saml_token.h>
00028 #include <oxs_key_mgr.h>
00029 #include <rp_rampart_config.h>
00030 
00037 #ifndef RAMPART_SAML_H
00038 #define RAMPART_SAML_H
00039 
00040 #ifdef __cplusplus
00041 extern "C" {
00042 #endif
00043 
00044 #define RAMPART_ST_FAULT_SECURITYTOKENUNAVAILABLE_STR   "A referenced SAML assertion could not be retrieved."
00045 #define RAMPART_ST_FAULT_UNSUPPORTEDSECURITYTOKEN_STR   "An assertion contains a <saml:condition> element that the receive does not understand."
00046 #define RAMPART_ST_FAULT_FAILEDCHECK_STR                "A signature withing an assertion or referencing an assertion is invalid."
00047 #define RAMPART_ST_FAULT_INVALIDSECURITYTOKEN_STR       "The issuer of an assertion is not acceptable to the receiver."                
00048 
00049 #define RAMPART_ST_FAULT_SECURITYTOKENUNAVAILABLE_CODE  "wsse:SecurityTokenUnavailable"
00050 #define RAMPART_ST_FAULT_UNSUPPORTEDSECURITYTOKEN_CODE  "wsse:UnsupportedSecurityToken"
00051 #define RAMPART_ST_FAULT_FAILEDCHECK_CODE               "wsse:FailedCheck"
00052 #define RAMPART_ST_FAULT_INVALIDSECURITYTOKEN_CODE      "wsse:InvalidSecurityToken"                
00053 
00054 #define RAMPART_SAML_FAULT_CODE                         "env:Sender"
00055 
00065 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00066 rampart_saml_supporting_token_build(const axutil_env_t *env, 
00067                          rampart_context_t *rampart_context,                         
00068                          axiom_node_t *sec_node,
00069                          axutil_array_list_t *sign_parts);
00079 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00080 rampart_saml_token_validate(const axutil_env_t *env, 
00081                             rampart_context_t *rampart_context, 
00082                             axiom_node_t *assertion);
00090 AXIS2_EXTERN char * AXIS2_CALL
00091 rampart_saml_token_get_subject_confirmation(const axutil_env_t *env, 
00092                                             axiom_node_t *assertion);
00093 
00094 
00102 AXIS2_EXTERN int AXIS2_CALL
00103 rampart_saml_token_fault_securitytokenunavailable(axutil_env_t *env, 
00104                                                   axis2_msg_ctx_t *ctx);
00112 AXIS2_EXTERN int AXIS2_CALL
00113 rampart_saml_token_fault_unsupportedsecuritytoken(axutil_env_t *env, 
00114                                                   axis2_msg_ctx_t *ctx);
00122 AXIS2_EXTERN int AXIS2_CALL
00123 rampart_saml_token_fault_failedcheck(axutil_env_t *env, 
00124                                                   axis2_msg_ctx_t *ctx);
00132 AXIS2_EXTERN int AXIS2_CALL
00133 rampart_saml_token_fault_invalidsecuritytoken(axutil_env_t *env, 
00134                                                   axis2_msg_ctx_t *ctx);
00135 
00136 
00137 AXIS2_EXTERN rampart_saml_token_t * AXIS2_CALL
00138 rampart_saml_add_token(rampart_context_t *rampart_context, 
00139                                            const axutil_env_t *env, axiom_node_t *assertion, 
00140                                            axiom_node_t *str,
00141                                            rampart_st_type_t type);
00142 #ifdef __cplusplus
00143 }
00144 #endif
00145 
00146 #endif    

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/oxs__error_8h.html0000644000076500007650000002364711202454455022304 0ustar shankarshankar Rampart/C: oxs_error.h File Reference

oxs_error.h File Reference

Represents an Error occured during the OMXMLSecurity execution. More...

#include <axis2_defines.h>
#include <axutil_env.h>

Go to the source code of this file.

Classes

struct  _oxs_error_description

Defines

#define FUNCTION_NAME   __FUNCTION__
#define LINE_NUMBER   __LINE__
#define FILE_NAME   __FILE__
#define OXS_ERROR_LOCATION   FILE_NAME,LINE_NUMBER,FUNCTION_NAME
#define OXS_ERROR_DEFAULT   0
#define OXS_ERROR_ENCRYPT_FAILED   1
#define OXS_ERROR_DECRYPT_FAILED   2
#define OXS_ERROR_INVALID_DATA   3
#define OXS_ERROR_INVALID_SIZE   4
#define OXS_ERROR_INVALID_FORMAT   5
#define OXS_ERROR_ELEMENT_FAILED   6
#define OXS_ERROR_UNSUPPORTED_ALGO   7
#define OXS_ERROR_CREATION_FAILED   8
#define OXS_ERROR_INITIALIZATION_FAILED   9
#define OXS_ERROR_DATA_CONV_FAILED   10
#define OXS_ERROR_OPENSSL_FUNC_FAILED   11
#define OXS_ERROR_TRANSFORM_FAILED   12
#define OXS_ERROR_SIGN_FAILED   13
#define OXS_ERROR_SIG_VERIFICATION_FAILED   14
#define OXS_ERROR_KEY_DERIVATION_FAILED   15

Typedefs

typedef struct
_oxs_error_description 
oxs_error_description
typedef struct
_oxs_error_description
oxs_error_description_ptr


Detailed Description

Represents an Error occured during the OMXMLSecurity execution.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/globals.html0000644000076500007650000011302711202454457021141 0ustar shankarshankar Rampart/C: Class Members
Here is a list of all documented file members with links to the documentation:

- o -


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__oxs__cipher.html0000644000076500007650000001520611202454456023372 0ustar shankarshankar Rampart/C: Cipher

Cipher
[OMXMLSecurity]


Functions

AXIS2_EXTERN
openssl_cipher_property_t
oxs_get_cipher_property_for_url (const axutil_env_t *env, axis2_char_t *url)
AXIS2_EXTERN axis2_char_t * oxs_get_cipher_name_for_url (const axutil_env_t *env, axis2_char_t *url)
AXIS2_EXTERN axis2_char_t * oxs_get_cipher_url_for_name (const axutil_env_t *env, axis2_char_t *name)

Function Documentation

AXIS2_EXTERN axis2_char_t* oxs_get_cipher_name_for_url ( const axutil_env_t *  env,
axis2_char_t *  url 
)

Get the cipher name for the given url

Parameters:
env pointer to environment struct
url the url as a string
return the name as a string

AXIS2_EXTERN openssl_cipher_property_t* oxs_get_cipher_property_for_url ( const axutil_env_t *  env,
axis2_char_t *  url 
)

Get the cipher property for the given url

Parameters:
env pointer to environment struct
url the url as a string
return the property

AXIS2_EXTERN axis2_char_t* oxs_get_cipher_url_for_name ( const axutil_env_t *  env,
axis2_char_t *  name 
)

Get the cipher url for the given name

Parameters:
env pointer to environment struct
name the name as a string
return the url as a string


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__rampart__utils.html0000644000076500007650000011645011202454457024121 0ustar shankarshankar Rampart/C: Rampart Utilities

Rampart Utilities


Modules

 Key File Type
 Rampart Config
 Rampart Context
 Rampart Crypto Util
 Encryption
 Engine
 Rampart_error
 Handler Utilities
 PolicyValidator
 Replay Detector
 Security Context Token provider
 Security Header Builder
 Security Header Processor
 Signature
 Timestamp Token
 Token Builder
 Processor
 Username Token
 Utils

Defines

#define RAMPART_IN_HANDLER   "RampartInHandler"
#define RAMPART_OUT_HANDLER   "RampartOutHandler"
#define RAHAS_IN_HANDLER   "RahasInHandler"
#define RAHAS_OUT_HANDLER   "RahasOutHandler"
#define RAMPART_DEFAULT_KT_ALGO   OXS_DEFAULT_KT_ALGO_HREF
#define RAMPART_STR_DEFAULT   OXS_STR_DEFAULT
#define RAMPART_TIMESTAMP_TOKEN_DEFAULT_TIME_TO_LIVE   300
#define RAMPART_SECURITY   "Security"
#define RAMPART_SECURITY_USERNAMETOKEN   "UsernameToken"
#define RAMPART_SECURITY_USERNAMETOKEN_USERNAME   "Username"
#define RAMPART_SECURITY_USERNAMETOKEN_PASSWORD   "Password"
#define RAMPART_SECURITY_USERNAMETOKEN_CREATED   "Created"
#define RAMPART_SECURITY_USERNAMETOKEN_NONCE   "Nonce"
#define RAMPART_SECURITY_USERNAMETOKEN_PASSWORD_ATTR_TYPE   "Type"
#define RAMPART_SECURITY_TIMESTAMP   "Timestamp"
#define RAMPART_SECURITY_TIMESTAMP_CREATED   "Created"
#define RAMPART_SECURITY_TIMESTAMP_EXPIRES   "Expires"
#define RAMPART_RAMPART   "rampart"
#define RAMPART_WSSE   "wsse"
#define RAMPART_WSSE_XMLNS   "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
#define RAMPART_WSU   "wsu"
#define RAMPART_WSU_XMLNS   "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
#define RAMPART_PASSWORD_DIGEST_URI   "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest"
#define RAMPART_PASSWORD_TEXT_URI   "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText"
#define RAMPART_INFLOW_SECURITY_POLICY   "InflowSecurityPolicy"
#define RAMPART_OUTFLOW_SECURITY_POLICY   "OutflowSecurityPolicy"
#define INFLOW_RAMPART_CONTEXT   "InflowRampartContext"
#define OUTFLOW_RAMPART_CONTEXT   "OutflowRampartContext"
#define RAMPART_CONTEXT   "RampartContext"
#define IN_MESSAGE_SECURITY   "InMessageSecurity"
#define OUT_MESSAGE_SECURITY   "OutMessageSEcurity"
#define RAMPART_PASSWORD_TEXT   "plainText"
#define RAMPART_PASSWORD_DIGEST   "Digest"
#define RAMPART_CONFIGURATION   "RampartConfiguration"
#define RAMPART_CLIENT_CONFIGURATION   "RampartClientConfiguration"
#define RAMPART_FAULT_UNSUPPORTED_SECURITY_TOKEN   "wsse:UnsupportedSecurityToken"
#define RAMPART_FAULT_UNSUPPORTED_ALGORITHM   "wsse:UnsupportedAlgorithm"
#define RAMPART_FAULT_INVALID_SECURITY   "wsse:InvalidSecurity"
#define RAMPART_FAULT_INVALID_SECURITY_TOKEN   "wsse:InvalidSecurityToken"
#define RAMPART_FAULT_FAILED_AUTHENTICATION   "wsse:FailedAuthentication"
#define RAMPART_FAULT_FAILED_CHECK   "wsse:FailedCheck"
#define RAMPART_FAULT_SECURITY_TOKEN_UNAVAILABLE   "wsse:SecurityTokenUnavailable"
#define RAMPART_FAULT_TRUST_REQUEST_FAILED   "wst:RequestFailed"
#define RAMPART_FAULT_TRUST_REQUEST_INVALID   "wst:InvalidRequest"
#define RAMPART_FAULT_IN_TIMESTAMP   "wsse:Timestamp"
#define RAMPART_FAULT_IN_USERNAMETOKEN   "wsse:UsernameToken"
#define RAMPART_FAULT_IN_ENCRYPTED_KEY   "xenc:EncryptedKey"
#define RAMPART_FAULT_IN_ENCRYPTED_DATA   "xenc:EncryptedData"
#define RAMPART_FAULT_IN_SIGNATURE   "ds:Signature"
#define RAMPART_FAULT_MSG_REPLAYED   "rampc:Message-Replayed"
#define RAMPART_FAULT_IN_POLICY   "rampc:Policy"
#define RAMPART_FAULT_ELEMENT_LOCAL_NAME   "ProblemSecurityHeader"
#define RAMPART_ACTION_PASSWORD   "password"
#define RAMPART_ACTION_ENC_USER_PASSWORD   "encUserPassword"
#define RAMPART_CALLBACK_SPECIFIC_PROPERTY   "callbackSpecificProperty"
#define RAMPART_SECURITY_PROCESSED_RESULTS   "SecurityProcessedResults"
#define RAMPART_SPR_UT_USERNAME   "SPR_UT_username"
#define RAMPART_SPR_UT_CREATED   "SPR_UT_created"
#define RAMPART_SPR_UT_NONCE   "SPR_UT_nonce"
#define RAMPART_SPR_UT_PASSWORD_TYPE   "SPR_UT_passwordType"
#define RAMPART_SPR_TS_CREATED   "SPR_TS_created"
#define RAMPART_SPR_TS_EXPIRES   "SPR_TS_expires"
#define RAMPART_SPR_UT_CHECKED   "SPR_UT_Checked"
#define RAMPART_SPR_TS_CHECKED   "SPR_TS_Checked"
#define RAMPART_SPR_ENC_CHECKED   "SPR_ENC_Checked"
#define RAMPART_SPR_SIG_VALUE   "SPR_Sig_Val"
#define RAMPART_SPR_ENDORSED_VALUE   "SPR_Endorsed_Value"
#define RAMPART_SPR_SIG_VERIFIED   "SPR_Sig_Verified"
#define RAMPART_SPR_SIG_ENCRYPTED   "SPR_Sig_Encrypted"
#define RAMPART_SPR_SIG_CONFIRM_FOUND   "SPR_Sig_Confirmation_Found"
#define RAMPART_SPR_BODY_ENCRYPTED   "SPR_Body_Encrypted"
#define RAMPART_YES   "YES"
#define RAMPART_NO   "NO"
#define RAMPART_STR_DIRECT_REFERENCE   OXS_STR_DIRECT_REFERENCE
#define RAMPART_STR_KEY_IDENTIFIER   OXS_STR_KEY_IDENTIFIER
#define RAMPART_STR_EMBEDDED   OXS_STR_EMBEDDED
#define RAMPART_STR_ISSUER_SERIAL   OXS_STR_ISSUER_SERIAL
#define RAMPART_STR_THUMB_PRINT   OXS_STR_THUMB_PRINT
#define RAMPART_STR_EXTERNAL_URI   OXS_STR_EXTERNAL_URI
#define RAMPART_STR_ENCRYPTED_KEY   OXS_STR_ENCRYPTED_KEY
#define RAMPART_RD_DEF_VALID_DURATION   60
#define RAMPART_RD_DEF_MAX_RCDS   5
#define RAMPART_SCT_ID_TYPE_UNKNOWN   0
#define RAMPART_SCT_ID_TYPE_LOCAL   1
#define RAMPART_SCT_ID_TYPE_GLOBAL   2
#define RAMPART_USERNAME_TOKEN_NONCE_LENGTH   24
#define RAMPART_ENC_TOKEN_ID   "EncryptionTokenID"
#define RAMPART_SIG_TOKEN_ID   "SignatureTokenID"
#define RAMPART_BST_ID_PREFIX   "BST-"
#define RAMPART_EMBED_TOKEN_ID   "ID"

Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/oxs__derivation_8h.html0000644000076500007650000000762711202454455023317 0ustar shankarshankar Rampart/C: oxs_derivation.h File Reference

oxs_derivation.h File Reference

The Key derivation module for OMXMLSecurity. More...

#include <axis2_defines.h>
#include <axutil_env.h>
#include <oxs_key.h>
#include <oxs_buffer.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN axis2_status_t oxs_derivation_derive_key (const axutil_env_t *env, oxs_key_t *secret, oxs_key_t *derived_key, axis2_bool_t build_fresh)
AXIS2_EXTERN axiom_node_t * oxs_derivation_build_derived_key_token (const axutil_env_t *env, oxs_key_t *derived_key, axiom_node_t *parent, axis2_char_t *stref_uri, axis2_char_t *stref_val_type, axis2_char_t *wsc_ns_uri)
AXIS2_EXTERN axiom_node_t * oxs_derivation_build_derived_key_token_with_stre (const axutil_env_t *env, oxs_key_t *derived_key, axiom_node_t *parent, axiom_node_t *stre, axis2_char_t *wsc_ns_uri)
AXIS2_EXTERN oxs_key_toxs_derivation_extract_derived_key_from_token (const axutil_env_t *env, axiom_node_t *dk_token, axiom_node_t *root_node, oxs_key_t *session_key)


Detailed Description

The Key derivation module for OMXMLSecurity.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/rampart__error_8h.html0000644000076500007650000000704711202454456023136 0ustar shankarshankar Rampart/C: rampart_error.h File Reference

rampart_error.h File Reference

Rampart specific error codes. More...

#include <axutil_error.h>

Go to the source code of this file.

Typedefs

typedef enum rampart_error_codes rampart_error_codes_t

Enumerations

enum  rampart_error_codes {
  RAMPART_ERROR_NONE = RAMPART_ERROR_CODES_START, RAMPART_ERROR_UNSUPPORTED_SECURITY_TOKEN, RAMPART_ERROR_INVALID_SECURITY, RAMPART_ERROR_INVALID_SECURITY_TOKEN,
  RAMPART_ERROR_FAILED_AUTHENTICATION, RAMPART_ERROR_FAILED_CHECK, RAMPART_ERROR_SECURITY_TOKEN_UNAVAILABLE, RAMPART_ERROR_RAMPART_ERROR_LAST,
  RAMPART_ERROR_IN_TIMESTAMP, RAMPART_ERROR_IN_USERNAMETOKEN, RAMPART_ERROR_IN_ENCRYPTED_KEY, RAMPART_ERROR_IN_ENCRYPTED_DATA,
  RAMPART_ERROR_IN_SIGNATURE, RAMPART_ERROR_MSG_REPLAYED, RAMPART_ERROR_IN_POLICY, RAMPART_ERROR_LAST
}
 rampart error codes More...

Functions

AXIS2_EXTERN axis2_status_t rampart_error_init ()


Detailed Description

Rampart specific error codes.


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/trust__rst_8h-source.html0000644000076500007650000005510411202454455023622 0ustar shankarshankar Rampart/C: trust_rst.h Source File

trust_rst.h

00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef TRUST_RST_H
00019 #define TRUST_RST_H
00020 
00021 #include <stdio.h>
00022 #include <stdlib.h>
00023 #include <axutil_utils.h>
00024 #include <axutil_base64.h>
00025 #include <axiom_soap.h>
00026 #include <axiom.h>
00027 #include <trust_constants.h>
00028 #include <trust_entropy.h>
00029 #include <trust_claims.h>
00030 #include <trust_life_time.h>
00031 #include <rp_issued_token.h>
00032 
00033 #ifdef __cplusplus
00034 extern "C"
00035 {
00036 #endif
00037     
00038    typedef struct trust_rst trust_rst_t;
00039     
00040    /* Create RST Context*/
00041    AXIS2_EXTERN trust_rst_t * AXIS2_CALL
00042    trust_rst_create(
00043            const axutil_env_t *env);
00044     
00045     /* Populate RST Context from axiom_node*/
00046     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00047     trust_rst_populate_rst(
00048         trust_rst_t *rst,
00049         const axutil_env_t *env,
00050         axiom_node_t *rst_node);
00051     
00052     /*Build RST message from the created RST Context */
00053     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00054     trust_rst_build_rst(
00055         trust_rst_t *rst,
00056         const axutil_env_t *env,
00057         axiom_node_t *parent);
00058 
00059         /*Automated RST building with RelyingParty's policy*/
00060         AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00061         trust_rst_build_rst_with_issued_token_assertion(
00062                 trust_rst_t *rst,
00063                 const axutil_env_t *env,
00064                 rp_issued_token_t *issued_token);
00065 
00066     
00067     /* Getters & Setters */
00068     
00069     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00070     trust_rst_get_attr_context(
00071         trust_rst_t *rst,
00072         const axutil_env_t *env);
00073     
00074     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00075     trust_rst_set_attr_context(
00076         trust_rst_t *rst,
00077         const axutil_env_t *env,
00078         axis2_char_t *attr_context);
00079     
00080     
00081     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00082     trust_rst_get_token_type(
00083         trust_rst_t *rst,
00084         const axutil_env_t *env);
00085     
00086     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00087     trust_rst_set_token_type(
00088         trust_rst_t *rst,
00089         const axutil_env_t *env,
00090         axis2_char_t *token_type);
00091     
00092     
00093     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00094     trust_rst_get_request_type(
00095         trust_rst_t *rst,
00096         const axutil_env_t *env);
00097  
00098     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00099     trust_rst_set_request_type(
00100         trust_rst_t *rst,
00101         const axutil_env_t *env,
00102         axis2_char_t *request_type);
00103     
00104         AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00105         trust_rst_get_wsa_action(
00106                         trust_rst_t *rst,
00107                         const axutil_env_t *env);
00108 
00109         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00110         trust_rst_set_wsa_action(
00111                         trust_rst_t *rst,
00112                         const axutil_env_t *env,
00113                         axis2_char_t *wsa_action);
00114     
00115     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00116     trust_rst_get_applies_to_addr(
00117         trust_rst_t *rst,
00118         const axutil_env_t *env);
00119     
00120     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00121     trust_rst_set_appliesto(
00122         trust_rst_t *rst,
00123         const axutil_env_t *env,
00124         axis2_char_t *applies_to_addr);
00125     
00126     
00127     AXIS2_EXTERN trust_claims_t * AXIS2_CALL
00128     trust_rst_get_claims(
00129         trust_rst_t *rst,
00130         const axutil_env_t *env);
00131     
00132     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00133     trust_rst_set_claims(
00134         trust_rst_t *rst,
00135         const axutil_env_t *env,
00136         trust_claims_t *claims);
00137     
00138     AXIS2_EXTERN trust_entropy_t * AXIS2_CALL
00139     trust_rst_get_entropy(
00140         trust_rst_t *rst,
00141         const axutil_env_t *env);
00142     
00143     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00144     trust_rst_set_entropy(
00145         trust_rst_t *rst,
00146         const axutil_env_t *env,
00147         trust_entropy_t *entropy);
00148     
00149     
00150     AXIS2_EXTERN  trust_life_time_t * AXIS2_CALL
00151     trust_rst_get_life_time(
00152         trust_rst_t *rst,
00153         const axutil_env_t *env);
00154     
00155     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00156     trust_rst_set_life_time(
00157         trust_rst_t *rst,
00158         const axutil_env_t *env,
00159         trust_life_time_t *life_time);
00160     
00161     
00162     /*Key and Token Parameter Extensions*/
00163     
00164     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00165     trust_rst_set_key_type(
00166         trust_rst_t *rst,
00167         const axutil_env_t *env,
00168         axis2_char_t *key_type);
00169     
00170     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00171     trust_rst_get_key_type(
00172         trust_rst_t *rst,
00173         const axutil_env_t *env);
00174         
00175       
00176     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00177     trust_rst_set_key_size(
00178         trust_rst_t *rst,
00179         const axutil_env_t *env,
00180         int key_size);
00181     
00182     AXIS2_EXTERN int AXIS2_CALL
00183     trust_rst_get_key_size(
00184         trust_rst_t *rst,
00185         const axutil_env_t *env);
00186     
00187     
00188 
00189     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00190     trust_rst_set_authentication_type(
00191         trust_rst_t *rst,
00192         const axutil_env_t *env,
00193         axis2_char_t *authentication_type);
00194     
00195     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00196     trust_rst_get_authentication_type(
00197         trust_rst_t *rst,
00198         const axutil_env_t *env);
00199 
00200     
00201     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00202     trust_rst_set_signature_algorithm(
00203         trust_rst_t *rst,
00204         const axutil_env_t *env,
00205         axis2_char_t *signature_algorithm);
00206     
00207     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00208     trust_rst_get_signature_algorithm(
00209         trust_rst_t *rst,
00210         const axutil_env_t *env);
00211     
00212     
00213     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00214     trust_rst_set_encryption_algorithm(
00215         trust_rst_t *rst,
00216         const axutil_env_t *env,
00217         axis2_char_t *encryption_algorithm);
00218     
00219     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00220     trust_rst_get_encryption_algorithm(
00221         trust_rst_t *rst,
00222         const axutil_env_t *env);
00223     
00224     
00225     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00226     trust_rst_set_canonicalization_algorithm(
00227         trust_rst_t *rst,
00228         const axutil_env_t *env,
00229         axis2_char_t *canonicalization_algorithm);
00230     
00231     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00232     trust_rst_get_canonicalization_algorithm(
00233         trust_rst_t *rst,
00234         const axutil_env_t *env);
00235 
00236     
00237     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00238     trust_rst_set_computedkey_algorithm(
00239         trust_rst_t *rst,
00240         const axutil_env_t *env,
00241         axis2_char_t *computedkey_algorithm);
00242     
00243     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00244     trust_rst_get_computedkey_algorithm(
00245         trust_rst_t *rst,
00246         const axutil_env_t *env);
00247 
00248 
00249    
00250     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00251     trust_rst_set_desired_encryption(
00252         trust_rst_t *rst,
00253         const axutil_env_t *env,
00254         axiom_node_t *desired_encryption_key);
00255     
00256     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00257     trust_rst_get_desired_encryption(
00258         trust_rst_t *rst,
00259         const axutil_env_t *env);
00260 
00261 
00262     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00263     trust_rst_set_proof_encryption(
00264         trust_rst_t *rst,
00265         const axutil_env_t *env,
00266         axiom_node_t *proof_encryption_key);
00267     
00268     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00269     trust_rst_get_proof_encryption(
00270         trust_rst_t *rst,
00271         const axutil_env_t *env);
00272     
00273     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00274     trust_rst_set_usekey(
00275         trust_rst_t *rst,
00276         const axutil_env_t *env,
00277         axiom_node_t *usekey_key);
00278     
00279     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00280     trust_rst_get_usekey(
00281         trust_rst_t *rst,
00282         const axutil_env_t *env);
00283     /*FIX Usekey attr @Sig*/
00284 
00285 
00286     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00287     trust_rst_set_signwith(
00288         trust_rst_t *rst,
00289         const axutil_env_t *env,
00290         axis2_char_t *signwith);
00291     
00292     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00293     trust_rst_get_signwith(
00294         trust_rst_t *rst,
00295         const axutil_env_t *env);
00296     
00297     
00298     
00299     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00300     trust_rst_set_encryptwith(
00301         trust_rst_t *rst,
00302         const axutil_env_t *env,
00303         axis2_char_t *encryptwith);
00304     
00305     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00306     trust_rst_get_encryptwith(
00307         trust_rst_t *rst,
00308         const axutil_env_t *env);
00309      
00310     
00311     /*Trust Version 1 -2005/02 - http://schemas.xmlsoap.org/ws/2005/02/trust */
00312     /*Trust Version 2 -2005/12 - http://docs.oasis-open.org/ws-sx/ws-trust/200512 */
00313     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00314     trust_rst_get_wst_ns_uri(
00315         trust_rst_t *rst,
00316         const axutil_env_t *env);
00317     
00318     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00319     trust_rst_set_wst_ns_uri(
00320         trust_rst_t *rst,
00321         const axutil_env_t *env,
00322         axis2_char_t *wst_ns_uri);
00323     
00324     
00325     
00326     
00327     AXIS2_EXTERN void AXIS2_CALL
00328     trust_rst_free(
00329         trust_rst_t *rst,
00330         const axutil_env_t *env);
00331     
00332     
00333 #ifdef __cplusplus
00334 }
00335 #endif
00336 
00337 #endif 
00338 
00339 

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/rahas__request__processor_8h-source.html0000644000076500007650000001120611202454455026650 0ustar shankarshankar Rampart/C: rahas_request_processor.h Source File

rahas_request_processor.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef RAHAS_REQUEST_PROCESSOR_H
00019 #define RAHAS_REQUEST_PROCESSOR_H
00020 
00031 #ifdef __cplusplus
00032 extern "C"
00033 {
00034 #endif
00035 
00045     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00046     rahas_process_issue_request(
00047         const axutil_env_t *env, 
00048         trust_rst_t *rst, 
00049         trust_rstr_t *rstr,
00050         axis2_msg_ctx_t *msg_ctx,
00051         int trust_version);
00052 
00055 #ifdef __cplusplus
00056 }
00057 #endif
00058 
00059 #endif    /* RAHAS_REQUEST_PROCESSOR_H */

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/rampart__handler__util_8h.html0000644000076500007650000000764111202454456024616 0ustar shankarshankar Rampart/C: rampart_handler_util.h File Reference

rampart_handler_util.h File Reference

Utilities related to handlers. More...

#include <axiom_soap_header.h>
#include <axis2_msg_ctx.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN axiom_node_t * rampart_get_security_header (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axiom_soap_header_t *soap_header)
AXIS2_EXTERN void rampart_create_fault_envelope (const axutil_env_t *env, const axis2_char_t *sub_code, const axis2_char_t *reason_text, const axis2_char_t *detail_node_text, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN void * rampart_get_rampart_configuration (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axis2_char_t *param_name)
AXIS2_EXTERN axis2_bool_t rampart_is_rampart_engaged (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx)


Detailed Description

Utilities related to handlers.

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.


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/trust__claims_8h-source.html0000644000076500007650000002017511202454455024262 0ustar shankarshankar Rampart/C: trust_claims.h Source File

trust_claims.h

00001 /*
00002 * Licensed to the Apache Software Foundation (ASF) under one or more
00003 * contributor license agreements.  See the NOTICE file distributed with
00004 * this work for additional information regarding copyright ownership.
00005 * The ASF licenses this file to You under the Apache License, Version 2.0
00006 * (the "License"); you may not use this file except in compliance with
00007 * the License.  You may obtain a copy of the License at
00008 *
00009 *      http://www.apache.org/licenses/LICENSE-2.0
00010 *
00011 * Unless required by applicable law or agreed to in writing, software
00012 * distributed under the License is distributed on an "AS IS" BASIS,
00013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014 * See the License for the specific language governing permissions and
00015 * limitations under the License.
00016 */
00017 
00018 #ifndef TRUST_CLAIMS_H
00019 #define TRUST_CLAIMS_H
00020 
00021 #include <axutil_utils.h>
00022 #include <axutil_array_list.h>
00023 #include <axiom.h>
00024 
00025 #include <trust_constants.h>
00026 #include <trust_util.h>
00027 
00028 #ifdef __cplusplus
00029 extern "C"
00030 {
00031 #endif
00032     
00033     typedef struct trust_claims trust_claims_t;
00034     
00035     AXIS2_EXTERN trust_claims_t * AXIS2_CALL
00036     trust_claims_create(
00037         const axutil_env_t *env);
00038     
00039     AXIS2_EXTERN  axis2_status_t AXIS2_CALL
00040     trust_claims_free(
00041         trust_claims_t *claims,
00042         const axutil_env_t *env);
00043     
00044     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00045     trust_claims_deserialize(
00046         trust_claims_t *claims,
00047         const axutil_env_t *env,
00048         axiom_node_t *claims_node);
00049     
00050     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00051     trust_claims_serialize(
00052         trust_claims_t *claims,
00053         const axutil_env_t *env,
00054         axiom_node_t *parent);
00055         
00056     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00057     trust_claims_set_attr_dialect(
00058         trust_claims_t *claims,
00059         const axutil_env_t *env,
00060         axis2_char_t *dialect_attr);
00061 
00062     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00063     trust_claims_get_attr_dialect(
00064         trust_claims_t *claims,
00065         const axutil_env_t *env);
00066 
00067     AXIS2_EXTERN axutil_array_list_t * AXIS2_CALL
00068     trust_claims_get_claim_list(
00069         trust_claims_t *claims,
00070         const axutil_env_t *env);
00071 
00072         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00073     trust_claims_set_claim_list(
00074         trust_claims_t *claims,
00075                 axutil_array_list_t *claims_list,
00076         const axutil_env_t *env);
00077 
00078     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00079     trust_claims_set_wst_ns_uri(
00080         trust_claims_t *claims,
00081         const axutil_env_t *env,
00082         axis2_char_t *wst_ns_uri);
00083 
00084     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00085     trust_claims_get_wst_ns_uri(
00086         trust_claims_t *claims,
00087         const axutil_env_t *env);
00088         
00089             
00090     
00091 #ifdef __cplusplus
00092 }
00093 #endif
00094 
00095 #endif /*TRUST_CLAIMS_H*/

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/saml__req_8h-source.html0000644000076500007650000031345611202454455023363 0ustar shankarshankar Rampart/C: saml_req.h Source File

saml_req.h

00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef SAML_REQ_H
00019 #define SAML_REQ_H
00020 
00021 #include <saml.h>
00022 #include <oxs_xml_signature.h>
00023 #include <oxs_sign_ctx.h>
00024 #include <oxs_xml_key_processor.h>
00025 #include <oxs_utility.h>
00026 #include <oxs_transforms_factory.h>
00027 #include <oxs_xml_key_info_builder.h>
00028 #include <oxs_key_mgr.h>
00029 #include <oxs_transform.h>
00030 #include <oxs_x509_cert.h>
00031 
00032 #ifdef __cplusplus
00033 extern "C"
00034 {
00035 #endif
00036 
00037 #define SAML_REQUEST_ID        "RequestID"
00038 #define SAML_SIGNATURE        "Signature"
00039 #define SAML_SUBJECT_QUERY    "SubjectQuery"
00040 #define SAML_ATTRIBUTE_QUERY  "AttributeQuery"
00041 #define SAML_AUTHENTICATION_QUERY    "AuthenticationQuery"
00042 #define SAML_AUTHORIZATION_DECISION_QUERY    "AuthorizationDecisionQuery"
00043 #define SAML_ASSERTION_ID_REF        "AssertionIDReference"
00044 #define SAML_ASSERTION_ARTIFACT    "AssertionArtifact"
00045 #define SAML_RESPOND_WITH            "RespondWith"
00046 #define SAML_ATTRIBUTE_DESIGNATOR        "AttributeDesignator"
00047 #define SAML_RESPONSE_ID            "ResponceID"
00048 #define SAML_IN_RESPONSE_TO        "InResponseTo"
00049 #define SAML_RECEPIENT            "Recipient"
00050 #define SAML_STATUS_CODE            "StatusCode"
00051 #define SAML_STATUS_MESSAGE            "StatusMessage"
00052 #define SAML_STATUS_DETAIL        "StatusDetail"
00053 #define SAML_STATUS_VALUE        "Value"
00054 #define SAML_STATUS                "Status"
00055 #define SAML_PROTOCOL_NMSP                      "urn:oasis:names:tc:SAML:1.0:protocol"
00056 #define SAML_PROTOCOL_PREFIX            "samlp"
00057 #define SAML_REQUEST                            "Request"
00058 #define SAML_RESPONSE                           "Response"
00059 
00060 /*A code representing the status of the corresponding request*/
00061 
00062 /*
00063  * saml artifact for saml passive client assertion identifiers 
00064  */
00065 typedef struct saml_artifact
00066 {
00067         axis2_char_t *artifact; 
00068 }saml_artifact_t;
00069 
00070 /*
00071  * saml status : defines the status returned in saml response
00072  */
00073 typedef struct saml_status
00074 {
00075     axutil_qname_t *status_value;
00076     axis2_char_t *status_code;
00077     axis2_char_t *status_msg;
00078     axiom_node_t *status_detail;
00079 
00080 }saml_status_t;
00081 
00082 /*
00083  * the saml query for requesting required saml assertion
00084  */
00085 typedef struct saml_query
00086 {
00087         axis2_char_t *type;
00088         void *query;
00089 }saml_query_t;
00090 
00091 typedef struct saml_subject_query
00092 {
00093     saml_subject_t *subject;
00094 }saml_subject_query_t;
00095 
00096 /*
00097  * saml authentication query : for requesting authentication details
00098  */
00099 typedef struct saml_authentication_query
00100 {
00101     saml_subject_t *subject;
00102     /* A URI reference that specifies the type of authentication that took place */
00103     axis2_char_t *auth_method;
00104 
00105 }saml_authentication_query_t;
00106 
00107 /*
00108  * saml qttribute query : for requesting the attributes 
00109  */
00110 typedef struct saml_attr_query
00111 {
00112     saml_subject_t *subject;
00113     axis2_char_t *resource;
00114     axutil_array_list_t *attr_desigs;
00115 }saml_attr_query_t;
00116 
00117 /*
00118  * saml authorization decision query : for requesting information for asserting authorization decisions  
00119  */
00120 typedef struct saml_autho_decision_query
00121 {
00122     saml_subject_t *subject;
00123     axis2_char_t *resource;
00124     /* One or more saml actions*/
00125     axutil_array_list_t *saml_actions;
00126     saml_evidence_t *evidence;
00127 
00128 }saml_autho_decision_query_t;
00129 
00130 typedef struct saml_request
00131 {
00132         /* unique request id*/
00133     axis2_char_t *request_id;
00134 
00135     /* major version */
00136     axis2_char_t *major_version;
00137 
00138     /* minor version */
00139     axis2_char_t *minor_version;
00140 
00141     /* time instant of the issue */
00142     axutil_date_time_t *issue_instant;
00143 
00144     /*optional*/
00145     oxs_sign_ctx_t *sig_ctx;
00146 
00147     /* An array for QNames      
00148          * specifies the type of statement the SAML relying party wants from the
00149          * SAML authority*
00150          */
00151     axutil_array_list_t *saml_responds;
00152 
00153     /*To request assrtions by means of ID one or more*/
00154     axutil_array_list_t *saml_asserion_id_ref;
00155 
00156         /* saml artifacts for saml passive client*/    
00157     axutil_array_list_t *saml_artifacts;
00158 
00159         saml_query_t *query;
00160 
00161         /*reference to the saml request node*/
00162         axiom_node_t *original_xml;
00163 
00164         /*reference to the saml response node*/
00165         axiom_node_t *signature;
00166 }saml_request_t;
00167 
00168 typedef struct saml_response
00169 {
00170         /*sunique saml response id*/
00171     axis2_char_t *response_id;
00172 
00173         /*major version*/
00174     axis2_char_t *major_version;
00175 
00176         /*minor version*/
00177     axis2_char_t *minor_version;
00178 
00179     /*saml request party*/
00180     axis2_char_t *recepient;
00181 
00182         /*saml request identifier for the specific saml response*/
00183     axis2_char_t  *request_response_id;
00184 
00185         /*time instant for the respone*/
00186     axutil_date_time_t *issue_instant;
00187 
00188         /* information about the signing */
00189     oxs_sign_ctx_t *sig_ctx;
00190 
00191     saml_status_t *status;
00192 
00193     axutil_array_list_t *saml_assertions;
00194 
00195         /* reference to the saml response node*/
00196         axiom_node_t *original_xml;
00197 
00198         /*reference to the saml signature node*/
00199         axiom_node_t *signature;
00200 }saml_response_t;
00201 
00202 /* request */
00203 
00204 /* 
00205  *  Creates a saml request.
00206  *  @param env pointer to environment struct
00207  */
00208 AXIS2_EXTERN saml_request_t *AXIS2_CALL 
00209 saml_request_create(const axutil_env_t *env);
00210 
00211 /* 
00212  * Free a saml request
00213  * @param env pointer to environment struct
00214  */
00215 AXIS2_EXTERN void AXIS2_CALL 
00216 saml_request_free(saml_request_t *request, const axutil_env_t *env);
00217 
00218 /* 
00219 * Build the saml request from a axiom node.
00220 * @param request request to be populated
00221 * @param env pointer to environment struct
00222 */
00223 AXIS2_EXTERN int AXIS2_CALL 
00224 saml_request_build(saml_request_t *request, axiom_node_t *node, 
00225                                    const axutil_env_t *env);
00226 
00227 /* 
00228 * Serialize a saml request to a om node.
00229 * @param request request to be serialized
00230 * @param parent if specified created node will be a child of this  
00231 * @param env pointer to environment struct
00232 */
00233 AXIS2_EXTERN axiom_node_t* AXIS2_CALL 
00234 saml_request_to_om(saml_request_t *request, axiom_node_t *parent, 
00235                                    const axutil_env_t *env); 
00236 /*
00237 * Return the unique ID of the request. 
00238 * @param request SAML Request object
00239 * @param env pointer to environment struct
00240 */
00241 AXIS2_EXTERN axis2_char_t* AXIS2_CALL 
00242 saml_request_get_id(saml_request_t *request, const axutil_env_t *env);
00243 
00244 /* 
00245  * Set the information required to sign the message.
00246  * @param assertion SAML Request object
00247  * @param env pointer to environment struct
00248  * @param sign_ctx oxs_sign_ctx_t object which contains the sign information
00249  */
00250 AXIS2_EXTERN int AXIS2_CALL 
00251 saml_request_set_signature(saml_request_t *request, const axutil_env_t *env, 
00252                                                    oxs_sign_ctx_t *sig_ctx);
00253 /* 
00254  * Set the default information required to sign the message. 
00255  * @param response SAML response object
00256  * @param env pointer to environment struct
00257  * @param sign_ctx oxs_sign_ctx_t object which contains the sign information
00258  * oxs_sign_ctx should contain the key info and the certification info.
00259  * all other information are set to default settings.
00260  */
00261 AXIS2_EXTERN void AXIS2_CALL 
00262 saml_request_set_default_signature(saml_request_t *request, const axutil_env_t *env, 
00263                                                                    oxs_sign_ctx_t *sig_ctx);
00264 /* 
00265  * Remove the information set for signing or verifying the Request.
00266  * @param assertion SAML Request object
00267  * @param env pointer to environment struct
00268  */
00269 AXIS2_EXTERN int AXIS2_CALL 
00270 saml_request_unsign(saml_request_t *request, const axutil_env_t *env);
00271 
00272 /* 
00273  * Sign the Request using the information set in the 
00274  * saml_request_set_default_signature or saml_request_set_signature method.
00275  * @param assertion SAML Request object
00276  * @param env pointer to environment struct
00277  */
00278 AXIS2_EXTERN int AXIS2_CALL 
00279 saml_request_sign(saml_request_t *request, axiom_node_t *node, const axutil_env_t *env);
00280 
00281 /* 
00282  * Set the minor version of the Request
00283  * @param request SAML Request object
00284  * @param env pointer to environment struct
00285  * @param version minor version number
00286  */ 
00287 AXIS2_EXTERN int AXIS2_CALL 
00288 saml_request_set_minor_version(saml_request_t *request, const axutil_env_t *env,
00289                                                            int version);
00290 /* 
00291  * Set the major version of the assertion
00292  * @param assertion SAML Request object
00293  * @param env pointer to environment struct
00294  * @param version major version number
00295  */ 
00296 AXIS2_EXTERN int AXIS2_CALL 
00297 saml_request_set_major_version(saml_request_t *request, 
00298                                                            const axutil_env_t *env, int version);
00299 /* 
00300  * Set the issue instant of the Request
00301  * @param request SAML Request object
00302  * @param env pointer to environment struct
00303  * @param time time instant of the saml issue
00304  */
00305 AXIS2_EXTERN int AXIS2_CALL 
00306 saml_request_set_issue_instant(saml_request_t *request, 
00307                                                            const axutil_env_t *env, axutil_date_time_t *date_time);
00308 
00309 /*
00310  * Return the time instant of the Request
00311  * @param request SAML Request object
00312  * @param env pointer to the environment struct
00313  */
00314 AXIS2_EXTERN axutil_date_time_t* AXIS2_CALL 
00315 saml_request_get_issue_instant(saml_request_t *request, const  axutil_env_t *env);
00316 
00317 /*
00318  * Set the set of qname respond with references in Request
00319  * @param request SAML Request object
00320  * @param responds list of qname objects
00321  * @param env pointer to the environment struct
00322  */
00323 AXIS2_EXTERN int AXIS2_CALL 
00324 saml_request_set_respond_withs(saml_request_t *request, 
00325                                                            const axutil_env_t *env, axutil_array_list_t *responds);
00326 
00327 /*
00328  * Return the set of qname respond with references in Request
00329  * @param request SAML Request object
00330  * @param env pointer to the environment struct
00331  */
00332 AXIS2_EXTERN axutil_array_list_t* AXIS2_CALL 
00333 saml_request_get_respond_withs(saml_request_t *request, const axutil_env_t *env);
00334 
00335 /*
00336  * Add a qname object respond with to the Request
00337  * @param request SAML Request object
00338  * @param env pointer to the environment struct
00339  */
00340 AXIS2_EXTERN int AXIS2_CALL 
00341 saml_request_add_respond_with(saml_request_t *request, const axutil_env_t *env,
00342                                                           axutil_qname_t *respond);
00343 /*
00344  * Remove a qname object at the specified index
00345  * @param request SAML Request object
00346  * @index the specific index to remove
00347  * @param env pointer to the environment struct
00348  */
00349 AXIS2_EXTERN int AXIS2_CALL 
00350 saml_request_remove_respond_with(saml_request_t *request, const axutil_env_t *env, int index);
00351 
00352 /*
00353  * Set the SAML Query of SAML Request.
00354  * @param request SAML Request object
00355  * @param query SAML Query object
00356  * @param env pointer to the environment struct
00357  */
00358 AXIS2_EXTERN int AXIS2_CALL 
00359 saml_request_set_query(saml_request_t *request, const axutil_env_t *env, saml_query_t *query);
00360 
00361 /*
00362  * Returns the SAML Query of SAML Request.
00363  * @param request SAML Request
00364  * @param env pointer to the environemt struct
00365  */
00366 AXIS2_EXTERN saml_query_t* AXIS2_CALL 
00367 saml_request_get_query(saml_request_t *request, const axutil_env_t *env);
00368 
00369 /*
00370  * Set the set of Identifer References of the Request.
00371  * @param request SAML Request
00372  * @param id_refs list of Identifier references
00373  * @param env pointer to the environment struct
00374  */
00375 AXIS2_EXTERN int AXIS2_CALL 
00376 saml_request_set_id_refs(saml_request_t *request, const axutil_env_t *env,
00377                                                  axutil_array_list_t *id_refs);
00378 /*
00379  * Returne the list of Identifier references of the Request
00380  * @param request SAML Request
00381  * @param env pointer to the environment struct
00382  */
00383 AXIS2_EXTERN axutil_array_list_t* AXIS2_CALL 
00384 saml_request_get_id_refs(saml_request_t *request, const axutil_env_t *env);
00385 
00386 /*
00387  * Add an Id Reference to the SAML Request.
00388  * @param request SAML Request
00389  * @param id_references list of Id references
00390  * @param env pointer to the environment struct
00391  */
00392 AXIS2_EXTERN int AXIS2_CALL 
00393 saml_request_add_id_refs(saml_request_t *request, const axutil_env_t *env, 
00394                                                  axis2_char_t *id_reference);
00395 /*
00396  * Remove an Id Reference at the specified index.
00397  * @param request SAML Request
00398  * @param index the specific to remove
00399  * @param env pointer to the environment struct
00400  */
00401 AXIS2_EXTERN int AXIS2_CALL 
00402 saml_request_remove_id_refs(saml_request_t *request, 
00403                                                         const axutil_env_t *env, int index);
00404 /*
00405  * Set the set of SAML Assertion Artifact objects of the Request.
00406  * @param request SAML Request
00407  * @param artifacts list of SAML Artifact objects
00408  * @param env pointer to the environment struct
00409  */
00410 AXIS2_EXTERN int AXIS2_CALL 
00411 saml_request_set_artifacts(saml_request_t *request, 
00412                                                    const axutil_env_t *env, axutil_array_list_t *artifacts);
00413 /*
00414  * Returns the list of SAML Assertion Artifacts of the Request
00415  * @param request SAML Request
00416  * @param env pointer to the environment struct
00417  */
00418 AXIS2_EXTERN axutil_array_list_t*  AXIS2_CALL 
00419 saml_request_get_artifacts(saml_request_t *request, const axutil_env_t *env);
00420 
00421 /*
00422  * Add a SAML Assertion Artifact to the Request
00423  * @param request SAML Request
00424  * @param artifact SAML Assertion Artifact
00425  * @param env pointer to the environment struct
00426  */
00427 AXIS2_EXTERN int AXIS2_CALL 
00428 saml_request_add_artifact(saml_request_t *request, const axutil_env_t *env,
00429                                                   saml_artifact_t *artifact);
00430 /* 
00431  * Remove a SAML Assertion Artifact at the specified index
00432  * @param request SAML Request
00433  * @param index specific index to remove
00434  * @param env pointer to the environment struct
00435  */
00436 AXIS2_EXTERN int AXIS2_CALL 
00437 saml_request_remove_artifact(saml_request_t *request, const axutil_env_t *env,
00438                                                          int index);
00439 /*
00440  * Check the validity of the recieved Request
00441  * @param request SAML Request
00442  * @param env pointer to the environment struct
00443  */
00444 AXIS2_EXTERN axis2_bool_t AXIS2_CALL 
00445 saml_request_check_validity(saml_request_t *request, const axutil_env_t *env);
00446 
00447 /* 
00448  *  Creates a saml Response.
00449  *  @param env pointer to environment struct
00450  */
00451 AXIS2_EXTERN saml_response_t* saml_response_create(const axutil_env_t *env);
00452 
00453 /* 
00454  * Free a saml Response
00455  * @param env pointer to environment struct
00456  */
00457 AXIS2_EXTERN void saml_response_free(saml_response_t *response, 
00458                                                                          const axutil_env_t *env);
00459 /* 
00460 * Build the saml response from a axiom node.
00461 * @param request response to be populated
00462 * @param env pointer to environment struct
00463 */
00464 AXIS2_EXTERN int AXIS2_CALL 
00465 saml_response_build(saml_response_t *response, axiom_node_t *node, 
00466                                         const axutil_env_t *env);
00467 /* 
00468 * Serialize a saml response to a om node.
00469 * @param request response to be serialized
00470 * @param parent if specified created node will be a child of this  
00471 * @param env pointer to environment struct
00472 */
00473 AXIS2_EXTERN axiom_node_t* AXIS2_CALL 
00474 saml_response_to_om(saml_response_t *response, axiom_node_t *parent, 
00475                                         const axutil_env_t *env);
00476 /*
00477 * Returns the unique ID of the response. 
00478 * @param request SAML response object
00479 * @param env pointer to environment struct
00480 */
00481 AXIS2_EXTERN axis2_char_t* AXIS2_CALL 
00482 saml_response_get_id(saml_response_t *response, const axutil_env_t *env);
00483 
00484 /* 
00485  * Set the information required to sign the message.
00486  * @param assertion SAML response object
00487  * @param env pointer to environment struct
00488  * @param sign_ctx oxs_sign_ctx_t object which contains the sign information
00489  */
00490 AXIS2_EXTERN int AXIS2_CALL 
00491 saml_response_set_signature(saml_response_t *response, 
00492                                                         const axutil_env_t *env, oxs_sign_ctx_t *sig_ctx);
00493 
00494 AXIS2_EXTERN int AXIS2_CALL 
00495 saml_response_unset_signature(saml_response_t *response, const axutil_env_t *env);
00496 
00497 /* 
00498  * Sign the response using the information set in the 
00499  * saml_response_set_default_signature or saml_response_set_signature method.
00500  * @param response SAML response object
00501  * @param node axiom node to of the response
00502  * @param env pointer to environment struct
00503  */
00504 AXIS2_EXTERN int AXIS2_CALL 
00505 saml_response_sign(saml_response_t *response, axiom_node_t *node, 
00506                                    const axutil_env_t *env);
00507 
00508 /* 
00509  * Set the default information required to sign the message. 
00510  * @param response SAML response object
00511  * @param env pointer to environment struct
00512  * @param sign_ctx oxs_sign_ctx_t object which contains the sign information
00513  * oxs_sign_ctx should contain the key info and the certification info.
00514  * all other information are set to default settings.
00515  */
00516 AXIS2_EXTERN void AXIS2_CALL 
00517 saml_response_set_default_signature(saml_response_t *response, 
00518                                                                         const axutil_env_t *env, oxs_sign_ctx_t *sig_ctx);
00519 
00520 /* 
00521  * Set the minor version of the response
00522  * @param response SAML response object
00523  * @param env pointer to environment struct
00524  * @param version minor version number
00525  */
00526 AXIS2_EXTERN int AXIS2_CALL 
00527 saml_response_set_minor_version(saml_response_t *response, 
00528                                                                 const axutil_env_t *env, int version);
00529 /* 
00530  * Set the major version of the response
00531  * @param response SAML response object
00532  * @param env pointer to environment struct
00533  * @param version major version number
00534  */ 
00535 AXIS2_EXTERN int AXIS2_CALL 
00536 saml_response_set_major_version(saml_response_t *response, 
00537                                                                 const axutil_env_t *env, int version);
00538 /* 
00539  * Set the issue instant of the response
00540  * @param response SAML response object
00541  * @param env pointer to environment struct
00542  * @param time time instant of the saml issue
00543  */
00544 AXIS2_EXTERN int AXIS2_CALL 
00545 saml_response_set_issue_instant(saml_response_t *response, 
00546                                                                 const axutil_env_t *env, axutil_date_time_t *date_time);
00547 /*
00548  * Returns the time instant of the response
00549  * @param response SAML response object
00550  * @param env pointer to the environment struct
00551  */
00552 AXIS2_EXTERN  axutil_date_time_t* AXIS2_CALL 
00553 saml_response_get_issue_instant(saml_response_t *response, const axutil_env_t *env);
00554 
00555 /*
00556  * Set the SAML recepient of the response
00557  * @param response SAML response
00558  * @param recepient SAML recepient identifier
00559  * @param env pointer to the environment struct
00560  */
00561 AXIS2_EXTERN int AXIS2_CALL 
00562 saml_response_set_recepient(saml_response_t *response, const axutil_env_t *env,
00563                                                         axis2_char_t *recepient);
00564 /*
00565  * Returns the SAML response recepient.
00566  * @param response SAML response
00567  * @param env pointer to the environment struct
00568  */
00569 AXIS2_EXTERN axis2_char_t* AXIS2_CALL 
00570 saml_response_get_recepient(saml_response_t *response, const axutil_env_t *env);
00571 
00572 /*
00573  * Set the status of the SAML response.
00574  * @param response SAML response
00575  * @param status SAML status
00576  * @param env pointer to the environment struct
00577  */
00578 AXIS2_EXTERN int AXIS2_CALL 
00579 saml_response_set_status(saml_response_t *response, const axutil_env_t *env,
00580                                                  saml_status_t *status);
00581 /*
00582  * Returns the status of the recieved SAML response
00583  * @param response SAML response
00584  * @param env pointer to the environment struct
00585  */
00586 AXIS2_EXTERN saml_status_t* AXIS2_CALL 
00587 saml_response_get_status(saml_response_t *response, const axutil_env_t *env);
00588 
00589 /*
00590  * Set the set of SAML Assertion of the SAML response
00591  * @param response SAML response
00592  * @param assertions list of SAML Assertions
00593  * @param env pointer to the environment struct
00594  */
00595 AXIS2_EXTERN int AXIS2_CALL 
00596 saml_response_set_assertions(saml_response_t *response, 
00597                                                          const axutil_env_t *env, axutil_array_list_t *assertions);
00598 
00599 /*
00600  * Returns the set of SAML Assertions of response
00601  * @param response SAML response
00602  * @param env pointer to the environment struct
00603  */
00604 AXIS2_EXTERN axutil_array_list_t* AXIS2_CALL 
00605 saml_response_get_assertions(saml_response_t *response, const axutil_env_t *env);
00606 
00607 /*
00608  * Add a SAML assertion to the response
00609  * @param response SAML response
00610  * @param assertion SAML Assertion
00611  * @param env pointer to the environment struct
00612  */
00613 AXIS2_EXTERN int AXIS2_CALL 
00614 saml_response_add_assertion(saml_response_t *response, const axutil_env_t *env,
00615                                                         saml_assertion_t *assertion);
00616 
00617 /* 
00618  * Remove a SAML assertion at the specified index
00619  * @param response SAML response
00620  * @param index the specific index to remove
00621  * @param env pointer to the environment struct
00622  */
00623 AXIS2_EXTERN int AXIS2_CALL 
00624 saml_response_remove_assertion(saml_response_t *response, const axutil_env_t *env, int index);
00625 
00626 /*
00627  * Set the request reference of the SAML response
00628  * @param response SAML response
00629  * @param request_response request reference
00630  * @param env pointer to the environment struct
00631  */
00632 AXIS2_EXTERN int AXIS2_CALL 
00633 saml_response_set_in_reponses_to(saml_response_t *response, 
00634                                                                  const axutil_env_t *env, axis2_char_t *request_response);
00635 
00636 /* 
00637  *  Creates a saml query.
00638  *  @param env pointer to environment struct
00639  */
00640 AXIS2_EXTERN saml_query_t* AXIS2_CALL 
00641 saml_query_create(const axutil_env_t *env);
00642 
00643 /* 
00644  * Build the saml query from an axiom node.
00645  * @param query SAML query to be populated
00646  * @param node axiom node of SAML query
00647  * @param env pointer to environment struct
00648  */
00649 AXIS2_EXTERN int AXIS2_CALL 
00650 saml_query_build(saml_query_t *query, axiom_node_t *node, const axutil_env_t *env);
00651 
00652 
00653 /* 
00654 * Serialize a saml query to a om node.
00655 * @param query SAML response to be serialized
00656 * @param parent if specified created node will be a child of this  
00657 * @param env pointer to environment struct
00658 */
00659 AXIS2_EXTERN axiom_node_t* AXIS2_CALL 
00660 saml_query_to_om(saml_query_t *query, axiom_node_t *parent, const axutil_env_t *env);
00661 
00662 /* 
00663  * Free a saml query
00664  * @param env pointer to environment struct
00665  */
00666 AXIS2_EXTERN void AXIS2_CALL 
00667 saml_query_free(saml_query_t *query, const axutil_env_t *env);
00668 
00669 /* 
00670  *  Creates a saml subject query.
00671  *  @param env pointer to environment struct
00672  */
00673 
00674 AXIS2_EXTERN saml_subject_query_t* AXIS2_CALL 
00675 saml_subject_query_create(const axutil_env_t *env);
00676 
00677 /* 
00678  * Free a saml subject query
00679  * @param env pointer to environment struct
00680  */
00681 AXIS2_EXTERN void AXIS2_CALL 
00682 saml_subject_query_free(saml_subject_query_t* subject_query, const axutil_env_t *env);
00683 
00684 /* 
00685  * Build the saml subject query from an axiom node.
00686  * @param query SAML subject query to be populated
00687  * @param node axiom node of SAML subject query
00688  * @param env pointer to environment struct
00689  */
00690 AXIS2_EXTERN int AXIS2_CALL 
00691 saml_subject_query_build(saml_subject_query_t* subject_query, 
00692                                                  axiom_node_t *node, const axutil_env_t *env);
00693 
00694 /* 
00695 * Serialize a saml subject query to a om node.
00696 * @param query saml subject query to be serialized
00697 * @param parent if specified created node will be a child of this  
00698 * @param env pointer to environment struct
00699 */
00700 AXIS2_EXTERN axiom_node_t* AXIS2_CALL 
00701 saml_subject_query_to_om(saml_subject_query_t *subject_query, 
00702                                                  axiom_node_t *parent, const axutil_env_t *env);
00703 /* 
00704  *  Creates a saml authentication query.
00705  *  @param env pointer to environment struct
00706  */
00707 AXIS2_EXTERN saml_authentication_query_t* AXIS2_CALL 
00708 saml_authentication_query_create(const axutil_env_t *env);
00709 
00710 /* 
00711  * Free a saml authentication query
00712  * @param env pointer to environment struct
00713  */
00714 AXIS2_EXTERN void AXIS2_CALL 
00715 saml_authentication_query_free(saml_authentication_query_t *authentication_query, 
00716                                                            const axutil_env_t *env);
00717 /* 
00718  * Build the saml authentication query from an axiom node.
00719  * @param query SAML authentication query to be populated
00720  * @param node axiom node of SAML query
00721  * @param env pointer to environment struct
00722  */
00723 AXIS2_EXTERN int AXIS2_CALL 
00724 saml_authentication_query_build(saml_authentication_query_t* authentication_query, 
00725                                                                 axiom_node_t *node, const axutil_env_t *env);
00726 
00727 /* 
00728 * Serialize a saml authentication query to a om node.
00729 * @param authentication_query saml authentication query to be serialized
00730 * @param parent if specified created node will be a child of this  
00731 * @param env pointer to environment struct
00732 */
00733 AXIS2_EXTERN axiom_node_t* AXIS2_CALL 
00734 saml_authentication_query_to_om(saml_authentication_query_t *authentication_query, 
00735                                                                 axiom_node_t *parent, const axutil_env_t *env);
00736 
00737 /*
00738  * Set authetication method of saml authentication query.
00739  * @param authentication_query saml authentication query
00740  * @param env pointer to environment struct
00741  * @param authentication_mtd required authentication method in the secifying query
00742  */
00743 AXIS2_EXTERN int AXIS2_CALL 
00744 saml_auth_query_set_authentication_method(
00745         saml_authentication_query_t *authentication_query,
00746         const axutil_env_t *env, 
00747         axis2_char_t *authentication_mtd);
00748 
00749 /*
00750  * Returns the authentication method of the saml authentication query.
00751  * @param authentication_query saml authentication query
00752  * @param env pointer to the environment struct
00753  */
00754 AXIS2_EXTERN axis2_char_t * AXIS2_CALL 
00755 saml_auth_query_get_authentication_method(
00756         saml_authentication_query_t *authentication_query,
00757         const axutil_env_t *env);
00758 
00759 /* 
00760  *  Creates a saml attribute query.
00761  *  @param env pointer to environment struct
00762  */
00763 AXIS2_EXTERN saml_attr_query_t* AXIS2_CALL 
00764 saml_attr_query_create(const axutil_env_t *env);
00765 
00766 /* 
00767  * Free a saml attribute query
00768  * @param env pointer to environment struct
00769  */
00770 AXIS2_EXTERN void AXIS2_CALL
00771 saml_attr_query_free(saml_attr_query_t* attribute_query, const axutil_env_t *env);
00772 
00773 /* 
00774  * Build the saml attribute query from an axiom node.
00775  * @param attribute_query SAML attribute query to be populated
00776  * @param node axiom node of SAML query
00777  * @param env pointer to environment struct
00778  */
00779 AXIS2_EXTERN int AXIS2_CALL 
00780 saml_attr_query_build(saml_attr_query_t* attribute_query, 
00781                                           axiom_node_t *node, const axutil_env_t *env);
00782 
00783 /* 
00784 * Serialize a saml attribute to a om node.
00785 * @param attribute_query saml attribute query to be serialized
00786 * @param parent if specified created node will be a child of this  
00787 * @param env pointer to environment struct
00788 */
00789 AXIS2_EXTERN axiom_node_t* AXIS2_CALL 
00790 saml_attr_query_to_om(saml_attr_query_t *attribute_query, 
00791                                           axiom_node_t *parent, const axutil_env_t *env);
00792 
00793 /*
00794  * Returns the saml subject of the saml query.
00795  * @param query saml query
00796  * @param env pointer to the environment struct
00797  */
00798 AXIS2_EXTERN saml_subject_t* AXIS2_CALL 
00799 saml_query_get_subject(saml_query_t* query,
00800                                                 const axutil_env_t *env);
00801 /*
00802  * Set the subject of a saml query.
00803  * @param query saml query
00804  * @param env pointer to the environment struct
00805  * @param subject saml subject
00806  */
00807 AXIS2_EXTERN int AXIS2_CALL 
00808 saml_query_set_subject(saml_query_t *query, const axutil_env_t *env,
00809                                            saml_subject_t *subject);
00810 /*
00811  * Set the type of the saml query.
00812  * @param query saml query
00813  * @param env pointer to the environment struct
00814  * @param type type of the saml query
00815  */
00816 AXIS2_EXTERN int AXIS2_CALL 
00817 saml_query_set_type(saml_query_t *query, const axutil_env_t *env, axis2_char_t *type);
00818 
00819 /*
00820  * Set the saml specific query object of saml query
00821  * @param query saml query
00822  * @param spec_query specific query object to be set as the saml query
00823  * @param type the type of the specifying query
00824  * spec_query can be any type of query defined in saml queries.
00825  * the specified saml queries, saml subject query, attribute query, 
00826  * authentication query, athorization decision query
00827  */
00828 AXIS2_EXTERN int AXIS2_CALL 
00829 saml_query_set_query(saml_query_t *query, const axutil_env_t *env,
00830                                          void *spec_query, 
00831                                          axis2_char_t *type);
00832 
00833 /*
00834  * Set the resource required of saml attribute query.
00835  * @param attr_query saml attribute query
00836  * @param env pointer to environment struct
00837  * @param resource specific saml resource
00838  */
00839 AXIS2_EXTERN int AXIS2_CALL 
00840 saml_attr_query_set_resource(saml_attr_query_t *attr_query, 
00841                                                          const axutil_env_t *env, axis2_char_t *resource);
00842 
00843 /*
00844  * Returns the saml resource required of saml attribute query.
00845  * @param attr_query saml attribute query
00846  * @param env pointer to environment struct
00847  */
00848 AXIS2_EXTERN axis2_char_t* AXIS2_CALL 
00849 saml_attr_query_get_resource(saml_attr_query_t *attr_query, const axutil_env_t *env);
00850 
00851 /*
00852  * Set a set of attribute designators of the saml attribute query.
00853  * @param env pointer to environment struct
00854  * @param saml_designators list of saml attribute designators
00855  */
00856 AXIS2_EXTERN int AXIS2_CALL 
00857 saml_attr_query_set_designators(saml_attr_query_t *attr_query,  
00858                                                                 const axutil_env_t *env,
00859                                                                 axutil_array_list_t *saml_designators);
00860 /*
00861  * Returns the set of attribute designators of saml attribute query.
00862  * @param attr_query saml attribute query
00863  * @param env pointer to environment struct
00864  */
00865 AXIS2_EXTERN axutil_array_list_t* AXIS2_CALL 
00866 saml_attr_query_get_designators(saml_attr_query_t *attr_query, const axutil_env_t *env);
00867 
00868 /*
00869  * Add a saml attribute designator to the saml attribute query.
00870  * @param attr_query saml attribute query
00871  * @param env pointer to environment struct
00872  * @param desig saml attribute designator object
00873  */
00874 AXIS2_EXTERN int AXIS2_CALL 
00875 saml_attr_query_add_designators(saml_attr_query_t *attr_query, const axutil_env_t *env,
00876                                                                 saml_attr_desig_t *desig);
00877 /*
00878  * Remove saml attribute designator at the specified index.
00879  * @param attr_query saml attribute query
00880  * @param env pointer to environment struct
00881  * @param index the specified index to remove
00882  */
00883 AXIS2_EXTERN int AXIS2_CALL 
00884 saml_attr_query_remove_designator(saml_attr_query_t *attr_query, const axutil_env_t *env,
00885                                                                   int index);
00886 
00887 /* 
00888  *  Creates a saml authorization decision query.
00889  *  @param env pointer to environment struct
00890  */
00891 AXIS2_EXTERN saml_autho_decision_query_t* AXIS2_CALL 
00892 saml_autho_decision_query_create(const axutil_env_t *env);
00893 
00894 /* 
00895  * Free a saml authorizaion decision query
00896  * @param env pointer to environment struct
00897  */
00898 AXIS2_EXTERN void AXIS2_CALL 
00899 saml_autho_decision_query_free(saml_autho_decision_query_t* autho_decision_query, 
00900                                                            const axutil_env_t *env);
00901 
00902 /* 
00903  * Build the saml authorization decision query from an axiom node.
00904  * @param query SAML authorization decision query to be populated
00905  * @param node axiom node of SAML authorization decision query
00906  * @param env pointer to environment struct
00907  */
00908 AXIS2_EXTERN int AXIS2_CALL 
00909 saml_autho_decision_query_build(saml_autho_decision_query_t* autho_decision_query, 
00910                                                                 axiom_node_t *node, const axutil_env_t *env);
00911 
00912 /* 
00913 * Serialize a saml authorization decision query to a om node.
00914 * @param autho_decision_query authorization decision query to be serialized
00915 * @param parent if specified created node will be a child of this  
00916 * @param env pointer to environment struct
00917 */
00918 AXIS2_EXTERN axiom_node_t* AXIS2_CALL 
00919 saml_autho_decision_query_to_om(saml_autho_decision_query_t *autho_decision_query, 
00920                                                                 axiom_node_t *parent, const axutil_env_t *env);
00921 /*
00922  * Set the resource required of saml authorization decision query.
00923  * @param autho_dec_query saml authorization decision query
00924  * @param env pointer to environment struct
00925  * @param resource saml resource required
00926  */
00927 AXIS2_EXTERN int AXIS2_CALL 
00928 saml_autho_decision_query_set_resource(
00929                         saml_autho_decision_query_t *autho_dec_query,
00930                         const axutil_env_t *env,
00931                         axis2_char_t *resource);
00932 /*
00933  * Returns the saml resource of saml authorization decision query.
00934  * @param autho_dec_query saml authorization decision query
00935  * @param env pointer to environment struct
00936  */
00937 AXIS2_EXTERN axis2_char_t* AXIS2_CALL 
00938 saml_autho_decision_query_get_resource(saml_autho_decision_query_t *autho_dec_query,
00939                                                                                                                  const axutil_env_t *env);
00940 /*
00941  * Set a set of action of saml authorization decision query.
00942  * @param autho_dec_query saml authorization decision query
00943  * @param env pointer to the environment struct
00944  * @param actions list of saml action objects
00945  */
00946 AXIS2_EXTERN int AXIS2_CALL 
00947 saml_autho_decision_query_set_actions(
00948                         saml_autho_decision_query_t *autho_dec_query,
00949                         const axutil_env_t *env,
00950                         axutil_array_list_t *actions);
00951 /*
00952  * Returns the set of actions of saml authorization decision query.
00953  * @param autho_dec_query saml authorization decision query
00954  * @param env envionment struct
00955  */
00956 AXIS2_EXTERN axutil_array_list_t* AXIS2_CALL 
00957 saml_autho_decision_query_get_actions(
00958                         saml_autho_decision_query_t *autho_dec_query,
00959                         const axutil_env_t *env);
00960                                                                                                                 
00961 /*
00962  * Add a saml action to saml authorization decision query.
00963  * @param autho_dec_query saml authorization decision query
00964  * @param env pointer to environment struct
00965  * @param action saml action object
00966  */
00967 AXIS2_EXTERN int AXIS2_CALL 
00968 saml_autho_decision_query_add_action(
00969                         saml_autho_decision_query_t *autho_dec_query,
00970                         const axutil_env_t *env,
00971                         saml_action_t *action);
00972 /*
00973  * Remove a saml action at the the specified index.
00974  * @param autho_dec_query saml authorization decision query
00975  * @param env pointer to environment struct
00976  * @param index specified index to remove
00977  */
00978 AXIS2_EXTERN int AXIS2_CALL 
00979 saml_autho_decision_remove_action(saml_autho_decision_query_t *autho_dec_query,
00980                                                                   const axutil_env_t *env,
00981                                                                   int index);
00982 /*
00983  * Set a saml evidence of the saml authorization decision query.
00984  * @param autho_dec_query saml authorization decision query
00985  * @param env pointer to environment struct
00986  * @param evidence saml evidence object
00987  */
00988 AXIS2_EXTERN int AXIS2_CALL 
00989 saml_autho_decision_query_set_evidence(
00990                         saml_autho_decision_query_t *autho_dec_query,
00991                         const axutil_env_t *env,
00992                         saml_evidence_t *evidence);
00993 /*
00994  * Returns the saml evidence of saml authorization decision query.
00995  * @param autho_dec_query saml authorization decision query
00996  * @param env pointer to environment struct
00997  */
00998 AXIS2_EXTERN saml_evidence_t* AXIS2_CALL 
00999 saml_autho_decision_query_get_evidence(
01000                         saml_autho_decision_query_t *autho_dec_query,
01001                         const axutil_env_t *env);
01002         
01003 /* 
01004  * Build the saml status from an axiom node.
01005  * @param query SAML status to be populated
01006  * @param node axiom node of SAML status
01007  * @param env pointer to environment struct
01008  */
01009 AXIS2_EXTERN int AXIS2_CALL 
01010 saml_status_build(saml_status_t *status, axiom_node_t *node, const axutil_env_t *env);
01011 
01012 /* 
01013 * Serialize a saml status to a om node.
01014 * @param status saml status to be serialized
01015 * @param parent if specified created node will be a child of this  
01016 * @param env pointer to environment struct
01017 */
01018 AXIS2_EXTERN axiom_node_t* AXIS2_CALL saml_status_to_om(saml_status_t *status, 
01019                                                                                                                 axiom_node_t *parent, 
01020                                                                                                                 const axutil_env_t *env);
01021 
01022 /* 
01023  *  Creates a saml status.
01024  *  @param env pointer to environment struct
01025  */
01026 AXIS2_EXTERN saml_status_t* AXIS2_CALL 
01027 saml_status_create(const axutil_env_t *env);
01028 
01029 /* 
01030  * Free a saml status
01031  * @param env pointer to environment struct
01032  */
01033 AXIS2_EXTERN void 
01034 saml_status_free(saml_status_t *status, const axutil_env_t *env);
01035 
01036 /*
01037  * Set the saml status value to be returned in saml status.
01038  * @param status saml status object
01039  * @param qname axutil qname object which specify saml status value
01040  * @param env pointer to environment struct
01041 */
01042 AXIS2_EXTERN int AXIS2_CALL 
01043 saml_status_set_status_value(saml_status_t *status, 
01044                                                          const axutil_env_t *env, axutil_qname_t *qname);
01045 
01046 /*
01047  * Returns the saml status value of saml status.
01048  * @param status saml status
01049  * @param env pointer to environment struct
01050  */
01051 AXIS2_EXTERN axutil_qname_t* AXIS2_CALL 
01052 saml_status_get_status_value(saml_status_t *status, const axutil_env_t *env);
01053 
01054 /*
01055  * Set the status message of saml status
01056  * @param status saml status object
01057  * @param env pointer to environment struct
01058  * @param msg status message to be set in saml status
01059  */
01060 AXIS2_EXTERN int AXIS2_CALL 
01061 saml_status_set_status_msg(saml_status_t *status, const axutil_env_t *env,
01062                                                    axis2_char_t *msg);
01063 /*
01064  * Set the status code of saml status object.
01065  * @param status saml status object
01066  * @param env pointer to environment struct
01067  * @param code status code to be set in saml status
01068  */
01069 AXIS2_EXTERN int AXIS2_CALL 
01070 saml_status_set_status_code(saml_status_t *status, const axutil_env_t *env,
01071                                                         axis2_char_t *code);
01072 /*
01073  * Returns the status message of saml status.
01074  * @param status saml status struct
01075  * @env pointer to environment struct
01076  */
01077 AXIS2_EXTERN axis2_char_t* AXIS2_CALL 
01078 saml_status_get_status_msg(saml_status_t *status, const axutil_env_t *env);
01079 /* 
01080  * Set the saml status detail of saml status.
01081  * @param status saml status struct
01082  * @param det axiom node struct to be set as saml status detail
01083  * @param env pointer to environment struct
01084  */
01085 AXIS2_EXTERN int AXIS2_CALL 
01086 saml_status_set_status_detail(saml_status_t *status, axiom_node_t *det, 
01087                                                           const axutil_env_t *env);
01088 /*
01089  * Returns the saml status detail node of saml status
01090  * @param status saml status struct
01091  * @param env pointer to environment struct
01092  */
01093 AXIS2_EXTERN axiom_node_t* AXIS2_CALL 
01094 saml_status_get_status_detail(saml_status_t *status, const axutil_env_t *env);
01095 
01096 /* 
01097  *  Creates a saml artifact.
01098  *  @param env pointer to environment struct
01099  */
01100 AXIS2_EXTERN saml_artifact_t* AXIS2_CALL 
01101 saml_artifact_create(const axutil_env_t *env);
01102 
01103 /* 
01104  * Free a saml artifact
01105  * @param env pointer to environment struct
01106  */
01107 AXIS2_EXTERN void AXIS2_CALL 
01108 saml_artifact_free(saml_artifact_t *artifact, const axutil_env_t *env);
01109 
01110 /*
01111  * Returns the data value of saml artifact.
01112  * @param artifact saml artifact srtuct
01113  * @param env pointer to environment struct
01114  */
01115 AXIS2_EXTERN axis2_char_t* AXIS2_CALL 
01116 saml_artifact_get_data(saml_artifact_t *artifact, const axutil_env_t *env);
01117 
01118 /*
01119  * Set data value of saml artifact.
01120  * @param artifact saml artifact
01121  * @param env pointer to environment struct
01122  * @data data value to be set in smal artifact
01123  */
01124 AXIS2_EXTERN int AXIS2_CALL 
01125 saml_artifact_set_data(saml_artifact_t *artifact, const axutil_env_t *env, 
01126                                            axis2_char_t *data);
01127 /*
01128  * Verify a signed saml response.
01129  * @param response saml response struct
01130  * @param env pointer to environement struct
01131  */
01132 AXIS2_EXTERN int AXIS2_CALL
01133 saml_response_signature_verify(saml_response_t *response, const axutil_env_t *env);
01134 
01135 /*
01136  * Check whether the saml response has to sign.
01137  * @param response saml response struct
01138  * @param env pointer to environment struct
01139  */
01140 AXIS2_EXTERN int AXIS2_CALL
01141 saml_response_is_sign_set(saml_response_t *response, const axutil_env_t *env);
01142 
01143 /*
01144  * Check whether the recieved response is signed.
01145  * @param response saml response struct
01146  * @param env pointer to environment struct
01147  */
01148 AXIS2_EXTERN int AXIS2_CALL
01149 saml_response_is_signed(saml_response_t *response, const axutil_env_t *env);
01150 
01151 /*
01152  * Verify a signed saml request.
01153  * @param response saml request struct
01154  * @param env pointer to environement struct
01155  */
01156 AXIS2_EXTERN int AXIS2_CALL
01157 saml_request_signature_verify(saml_request_t *request, const axutil_env_t *env);
01158 
01159 /*
01160  * Check whether the saml request has to sign.
01161  * @param request saml request struct
01162  * @param env pointer to environment struct
01163  */
01164 AXIS2_EXTERN int AXIS2_CALL
01165 saml_request_is_sign_set(saml_request_t *request, const axutil_env_t *env);
01166 
01167 /*
01168  * Check whether the recieved request is signed.
01169  * @param request saml request struct
01170  * @param env pointer to environment struct
01171  */
01172 AXIS2_EXTERN int AXIS2_CALL
01173 saml_request_is_signed(saml_request_t *request, const axutil_env_t *env);
01174 
01175 #ifdef __cplusplus
01176 }
01177 #endif
01178 
01179 #endif 
01180 

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/openssl__constants_8h-source.html0000644000076500007650000001533611202454454025332 0ustar shankarshankar Rampart/C: openssl_constants.h Source File

openssl_constants.h

Go to the documentation of this file.
00001 /*
00002  *   Copyright 2003-2004 The Apache Software Foundation.
00003  *
00004  *   Licensed under the Apache License, Version 2.0 (the "License");
00005  *   you may not use this file except in compliance with the License.
00006  *   You may obtain a copy of the License at
00007  *
00008  *       http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  *   Unless required by applicable law or agreed to in writing, software
00011  *   distributed under the License is distributed on an "AS IS" BASIS,
00012  *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  *   See the License for the specific language governing permissions and
00014  *   limitations under the License.
00015  */
00016 
00017 #include <axis2_util.h>
00018 
00023 #ifndef OPENSSL_CONSTANTS_H
00024 #define OPENSSL_CONSTANTS_H
00025 
00033 #ifdef __cplusplus
00034 extern "C" {
00035 #endif
00036 
00037 #define OPENSSL_ENCRYPT             1
00038 #define OPENSSL_DECRYPT             0
00039 #define OPENSSL_LEAVE_UNCHANGED     -1
00040 
00043 #define OPENSSL_EVP_des_ede3_cbc     "EVP_des_ede3_cbc"
00044 #define OPENSSL_EVP_aes_128_cbc      "EVP_aes_128_cbc"
00045 #define OPENSSL_EVP_aes_192_cbc      "EVP_aes_192_cbc"
00046 #define OPENSSL_EVP_aes_256_cbc      "EVP_aes_256_cbc"
00047 
00048 #define OPENSSL_HMAC_SHA1            "HmacSha1"
00049 #define OPENSSL_HMAC_SHA1_KEY_LEN     32
00050 
00051 #define OPENSSL_RSA_ENCRYPTION      "rsaEncryption"
00052 #define OPENSSL_RSA_PKCS1_PADDING    "RSA_PKCS1_PADDING"
00053 #define OPENSSL_RSA_PKCS1_OAEP_PADDING     "RSA_PKCS1_OAEP_PADDING"
00054 
00055 #define OPENSSL_DEFAULT_IV8          "01234567"
00056 #define OPENSSL_DEFAULT_IV16         "0123456701234567"
00057 #define OPENSSL_DEFAULT_IV24         "012345670123456701234567"
00058 
00059 #define OPENSSL_DEFAULT_LABEL_FOR_PSHA1 "WS-SecureConversation"
00060 #define OPENSSL_DEFAULT_KEY_LEN_FOR_PSHA1 32
00061 #define OPENSSL_DEFAULT_KEY_OFFSET_FOR_PSHA1 0
00062 
00064 #ifdef __cplusplus
00065 }
00066 #endif
00067 
00068 #endif    /* OPENSSL_CONSTANTS_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/trust__token_8h-source.html0000644000076500007650000003625111202454455024134 0ustar shankarshankar Rampart/C: trust_token.h Source File

trust_token.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 #ifndef TRUST_TOKEN_H
00018 #define TRUST_TOKEN_H
00019 
00025 #include <axiom.h>
00026 #include <axutil_utils.h>
00027 #include <trust_constants.h>
00028 
00029 #ifdef __cplusplus
00030 extern "C" {
00031 #endif
00032 
00033     /* Security token states. */
00034     typedef enum {
00035         ISSUED = 1,
00036         EXPIRED,
00037         CANCELED,
00038         RENEWED
00039     }trust_token_state_t;
00040 
00041     typedef struct trust_token trust_token_t;
00042 
00051     AXIS2_EXTERN trust_token_t* AXIS2_CALL
00052     trust_token_create(
00053         const axutil_env_t *env,
00054         axis2_char_t *id,
00055         axiom_node_t *token_node,
00056         axiom_node_t *life_node);
00057 
00067     AXIS2_EXTERN trust_token_t* AXIS2_CALL 
00068     trust_token_create_with_dates(
00069         const axutil_env_t *env,
00070         axis2_char_t *id,
00071         axiom_node_t *token_node,
00072         axutil_date_time_t *created,
00073         axutil_date_time_t *expire);
00074 
00087     AXIS2_EXTERN axis2_status_t AXIS2_CALL 
00088     trust_token_process_life_elem(
00089         const axutil_env_t *env,
00090         axiom_node_t *life_node,
00091         trust_token_t *token);
00092 
00099     AXIS2_EXTERN axis2_bool_t AXIS2_CALL 
00100     trust_token_is_changed(
00101         const axutil_env_t *env,
00102         trust_token_t *token);
00103 
00111     AXIS2_EXTERN axis2_status_t AXIS2_CALL 
00112     trust_token_set_changed(
00113         const axutil_env_t *env,
00114         trust_token_t *token,
00115         axis2_bool_t changed);
00116 
00123     AXIS2_EXTERN trust_token_state_t AXIS2_CALL 
00124     trust_token_get_state(
00125         const axutil_env_t *env,
00126         trust_token_t *token);
00127 
00135     AXIS2_EXTERN axis2_status_t AXIS2_CALL 
00136     trust_token_set_state(
00137         const axutil_env_t *env,
00138         trust_token_t *token,
00139         trust_token_state_t state);
00140 
00147     AXIS2_EXTERN axiom_node_t* AXIS2_CALL 
00148     trust_token_get_token(
00149         const axutil_env_t *env,
00150         trust_token_t *token);
00151 
00159     AXIS2_EXTERN axis2_status_t AXIS2_CALL 
00160     trust_token_set_token(
00161         const axutil_env_t *env,
00162         trust_token_t *token,
00163         axiom_node_t *token_node);
00164 
00171     AXIS2_EXTERN axis2_char_t* AXIS2_CALL 
00172     trust_token_get_id(
00173         const axutil_env_t *env,
00174         trust_token_t *token);
00175 
00182     AXIS2_EXTERN axiom_node_t* AXIS2_CALL
00183     trust_token_get_previous_token(
00184         const axutil_env_t *env,
00185         trust_token_t *token);
00186 
00194     AXIS2_EXTERN axis2_status_t AXIS2_CALL 
00195     trust_token_set_previous_token(
00196         const axutil_env_t *env,
00197         trust_token_t *token,
00198         axiom_node_t *prev_token);
00199 
00200     /* **
00201      * @return Returns the secret.
00202 
00203      public byte[] getSecret() {
00204      return secret;
00205      } */
00206 
00220     AXIS2_EXTERN axiom_node_t* AXIS2_CALL 
00221     trust_token_get_attached_reference(
00222         const axutil_env_t *env, 
00223         trust_token_t *token);
00224 
00232     AXIS2_EXTERN axis2_status_t AXIS2_CALL 
00233     trust_token_set_attached_reference(
00234         const axutil_env_t *env,
00235         trust_token_t *token,
00236         axiom_node_t *attached_reference);
00237 
00244     AXIS2_EXTERN axiom_node_t* AXIS2_CALL 
00245     trust_token_get_unattached_reference(
00246         const axutil_env_t *env,
00247         trust_token_t *token);
00248 
00256     AXIS2_EXTERN axis2_status_t AXIS2_CALL 
00257     trust_token_set_unattached_reference(
00258         const axutil_env_t *env,
00259         trust_token_t *token,
00260         axiom_node_t *unattached_reference);
00261 
00268     AXIS2_EXTERN axutil_date_time_t* AXIS2_CALL 
00269     trust_token_get_created(
00270         const axutil_env_t *env,
00271         trust_token_t *token);
00272 
00280     AXIS2_EXTERN axis2_status_t AXIS2_CALL 
00281     trust_token_set_created(
00282         const axutil_env_t *env,
00283         trust_token_t *token,
00284         axutil_date_time_t *created);
00285 
00292     AXIS2_EXTERN axutil_date_time_t* AXIS2_CALL 
00293     trust_token_get_expires(
00294         const axutil_env_t *env,
00295         trust_token_t *token);
00296 
00304     AXIS2_EXTERN axis2_status_t AXIS2_CALL 
00305     trust_token_set_expires(
00306         const axutil_env_t *env,
00307         trust_token_t *token,
00308         axutil_date_time_t *expire);
00309 
00316     AXIS2_EXTERN axis2_char_t* AXIS2_CALL 
00317     trust_token_get_issuer_address(
00318         const axutil_env_t *env,
00319         trust_token_t *token);
00320 
00328     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00329     trust_token_set_issuer_address(
00330         const axutil_env_t *env,
00331         trust_token_t *token,
00332         axis2_char_t *issuer_address);
00333 
00334     AXIS2_EXTERN axis2_status_t AXIS2_CALL 
00335     trust_token_process_life_elem(
00336         const axutil_env_t *env,
00337         axiom_node_t *life_node,
00338         trust_token_t *token);
00339         
00340 
00341 #ifdef __cplusplus
00342 }
00343 #endif
00344 
00345 #endif   /*TRUST_TOKEN_H*/
00346 

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__openssl__rsa.html0000644000076500007650000002776011202454456023567 0ustar shankarshankar Rampart/C: OpenSSL RSA

OpenSSL RSA
[OpenSSL wrapper]


Functions

int openssl_rsa_prv_decrypt (const axutil_env_t *env, const openssl_pkey_t *pkey, const axis2_char_t *padding, oxs_buffer_t *in, oxs_buffer_t *out)
int openssl_rsa_pub_encrypt (const axutil_env_t *env, const openssl_pkey_t *pkey, const axis2_char_t *padding, oxs_buffer_t *in, oxs_buffer_t *out)
int openssl_rsa_prv_encrypt (const axutil_env_t *env, const openssl_pkey_t *pkey, const axis2_char_t *padding, oxs_buffer_t *in, oxs_buffer_t *out)
int openssl_rsa_pub_decrypt (const axutil_env_t *env, const openssl_pkey_t *pkey, const axis2_char_t *padding, oxs_buffer_t *in, oxs_buffer_t *out)

Function Documentation

int openssl_rsa_prv_decrypt ( const axutil_env_t *  env,
const openssl_pkey_t pkey,
const axis2_char_t *  padding,
oxs_buffer_t in,
oxs_buffer_t out 
)

Decrypts data using a private key specified in pointer to openssl_rsa struct pointer to environment struct private key for decryption input data output data

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

int openssl_rsa_prv_encrypt ( const axutil_env_t *  env,
const openssl_pkey_t pkey,
const axis2_char_t *  padding,
oxs_buffer_t in,
oxs_buffer_t out 
)

Sign data using a private key specified in pointer to openssl_rsa struct pointer to environment struct private key for decryption input data output data

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

int openssl_rsa_pub_decrypt ( const axutil_env_t *  env,
const openssl_pkey_t pkey,
const axis2_char_t *  padding,
oxs_buffer_t in,
oxs_buffer_t out 
)

Verifies data using a public key specified in pointer to openssl_rsa struct pointer to environment struct public key for encryption input data output data

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

int openssl_rsa_pub_encrypt ( const axutil_env_t *  env,
const openssl_pkey_t pkey,
const axis2_char_t *  padding,
oxs_buffer_t in,
oxs_buffer_t out 
)

Encrypts data using a public key specified in pointer to openssl_rsa struct pointer to environment struct public key for encryption input data output data

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/oxs__xml__key__info__builder_8h-source.html0000644000076500007650000001445111202454455027270 0ustar shankarshankar Rampart/C: oxs_xml_key_info_builder.h Source File

oxs_xml_key_info_builder.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef OXS_XML_KEY_INFO_BUILDER_H
00019 #define OXS_XML_KEY_INFO_BUILDER_H
00020 
00021 
00031 #include <axis2_defines.h>
00032 #include <oxs_ctx.h>
00033 #include <axutil_env.h>
00034 #include <axiom_node.h>
00035 #include <axiom_element.h>
00036 #include <axutil_qname.h>
00037 
00038 #ifdef __cplusplus
00039 extern "C"
00040 {
00041 #endif
00042 
00043     typedef enum{
00044         OXS_KIBP_UNKNOWN = 0,
00045         OXS_KIBP_X509DATA_X509CERTIFICATE,
00046         OXS_KIBP_X509DATA_ISSUER_SERIAL,
00047     }oxs_key_info_build_pattern_t;
00048 
00049     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00050     oxs_xml_key_info_build(const axutil_env_t *env,
00051                            axiom_node_t *parent,
00052                            oxs_x509_cert_t *cert,
00053                            oxs_key_info_build_pattern_t pattern);
00054 
00055     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00056     oxs_xml_key_info_build_x509_data_x509_certificate(const axutil_env_t *env,
00057             axiom_node_t *parent,
00058             oxs_x509_cert_t *cert);
00059 
00060     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00061     oxs_xml_key_info_build_x509_data_issuer_serial(const axutil_env_t *env,
00062             axiom_node_t *parent,
00063             oxs_x509_cert_t *cert);
00064 
00066 #ifdef __cplusplus
00067 }
00068 #endif
00069 
00070 #endif                          /* OXS_XML_KEY_INFO_BUILDER_H */

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/trust__policy__util_8h-source.html0000644000076500007650000001307011202454455025501 0ustar shankarshankar Rampart/C: trust_policy_util.h Source File

trust_policy_util.h

00001 
00002 /*
00003 * Licensed to the Apache Software Foundation (ASF) under one or more
00004 * contributor license agreements.  See the NOTICE file distributed with
00005 * this work for additional information regarding copyright ownership.
00006 * The ASF licenses this file to You under the Apache License, Version 2.0
00007 * (the "License"); you may not use this file except in compliance with
00008 * the License.  You may obtain a copy of the License at
00009 *
00010 *      http://www.apache.org/licenses/LICENSE-2.0
00011 *
00012 * Unless required by applicable law or agreed to in writing, software
00013 * distributed under the License is distributed on an "AS IS" BASIS,
00014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00015 * See the License for the specific language governing permissions and
00016 * limitations under the License.
00017 */
00018 
00019 #ifndef TRUST_POLICY_UTIL_H
00020 #define TRUST_POLICY_UTIL_H
00021 
00022 #include <axutil_utils.h>
00023 #include <rp_includes.h>
00024 #include <rp_secpolicy.h>
00025 #include <neethi_policy.h>
00026 #include <rp_secpolicy_builder.h>
00027 
00028 #ifdef  __cplusplus
00029 extern "C"
00030 {
00031 #endif
00032 
00033     AXIS2_EXTERN rp_algorithmsuite_t *AXIS2_CALL
00034     trust_policy_util_get_algorithmsuite(
00035         const axutil_env_t * env,
00036         neethi_policy_t * policy,
00037                 rp_secpolicy_t **secpolicy);
00038 
00039     AXIS2_EXTERN rp_binding_commons_t *AXIS2_CALL
00040     trust_policy_util_get_binding_commons(
00041         const axutil_env_t * env,
00042         rp_secpolicy_t * secpolicy);
00043 
00044     AXIS2_EXTERN rp_trust10_t *AXIS2_CALL
00045     trust_policy_util_get_trust10(
00046         const axutil_env_t * env,
00047         neethi_policy_t * policy,
00048                 rp_secpolicy_t **secpolicy);
00049 
00050 #ifdef  __cplusplus
00051 }
00052 #endif
00053 
00054 #endif                          /* _TRUST_POLICY_UTIL_H */

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__openssl__hmac.html0000644000076500007650000000657611202454456023714 0ustar shankarshankar Rampart/C: OpenSSL Hmac

OpenSSL Hmac
[OpenSSL wrapper]


Functions

AXIS2_EXTERN axis2_status_t openssl_hmac_sha1 (const axutil_env_t *env, oxs_key_t *secret, oxs_buffer_t *input, oxs_buffer_t *output)
AXIS2_EXTERN axis2_status_t openssl_p_sha1 (const axutil_env_t *env, oxs_key_t *secret, axis2_char_t *label, axis2_char_t *seed, oxs_key_t *derived_key)
AXIS2_EXTERN axis2_status_t openssl_p_hash (const axutil_env_t *env, unsigned char *secret, unsigned int secret_len, unsigned char *seed, unsigned int seed_len, unsigned char *output, unsigned int output_len)

Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/oxs__axiom_8h-source.html0000644000076500007650000002776411202454454023571 0ustar shankarshankar Rampart/C: oxs_axiom.h Source File

oxs_axiom.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef OXS_AXIOM_H
00019 #define OXS_AXIOM_H
00020 
00026 #include <axis2_defines.h>
00027 #include <axutil_env.h>
00028 #include <axis2_util.h>
00029 #include <axiom_node.h>
00030 
00031 #ifdef __cplusplus
00032 extern "C"
00033 {
00034 #endif
00035 
00050     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00051     oxs_axiom_add_attribute(
00052         const axutil_env_t *env,
00053         axiom_node_t* node,
00054         axis2_char_t* attribute_ns,
00055         axis2_char_t* attribute_ns_uri,
00056         axis2_char_t* attribute,
00057         axis2_char_t* value);
00058 
00068     AXIS2_EXTERN int AXIS2_CALL
00069     oxs_axiom_get_number_of_children_with_qname(
00070         const axutil_env_t *env,
00071         axiom_node_t* parent,
00072         axis2_char_t* local_name,
00073         axis2_char_t* ns_uri,
00074         axis2_char_t* prefix);
00075 
00083     AXIS2_EXTERN axiom_node_t* AXIS2_CALL
00084     oxs_axiom_get_node_by_local_name(
00085         const axutil_env_t *env,
00086         axiom_node_t *node,
00087         axis2_char_t *local_name);
00088 
00099     AXIS2_EXTERN axiom_node_t* AXIS2_CALL
00100     oxs_axiom_get_node_by_id(
00101         const axutil_env_t *env,
00102         axiom_node_t *node,
00103         axis2_char_t *attr,
00104         axis2_char_t *val,
00105         axis2_char_t *ns);
00106 
00116     AXIS2_EXTERN axis2_char_t* AXIS2_CALL
00117     oxs_axiom_get_attribute_value_of_node_by_name(
00118         const axutil_env_t *env,
00119         axiom_node_t *node,
00120         axis2_char_t *attribute_name,
00121         axis2_char_t *ns);
00122 
00131     AXIS2_EXTERN axis2_char_t* AXIS2_CALL
00132     oxs_axiom_get_attribute_val_of_node_by_qname(
00133         const axutil_env_t *env,
00134         axiom_node_t *node,
00135         axutil_qname_t *qname);
00136 
00147     AXIS2_EXTERN axiom_node_t* AXIS2_CALL
00148     oxs_axiom_get_first_child_node_by_name(
00149         const axutil_env_t *env,
00150         axiom_node_t* parent,
00151         axis2_char_t* local_name,
00152         axis2_char_t* ns_uri,
00153         axis2_char_t* prefix);
00154 
00161     AXIS2_EXTERN axis2_char_t* AXIS2_CALL
00162     oxs_axiom_get_node_content(
00163         const axutil_env_t *env, 
00164         axiom_node_t* node);
00165 
00172     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00173     oxs_axiom_deserialize_node(
00174         const axutil_env_t *env,  
00175         axis2_char_t* buffer);
00176 
00185     AXIS2_EXTERN axis2_bool_t AXIS2_CALL
00186     oxs_axiom_check_node_name(
00187         const axutil_env_t *env, 
00188         axiom_node_t* node, 
00189         axis2_char_t* name, 
00190         axis2_char_t* ns);
00191 
00199     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00200     oxs_axiom_interchange_nodes(
00201         const axutil_env_t *env,
00202         axiom_node_t *node_to_move,
00203         axiom_node_t *node_before); 
00204     
00212     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00213     oxs_axiom_add_as_the_first_child(
00214         const axutil_env_t *env,
00215         axiom_node_t *parent,
00216         axiom_node_t *child);
00217 
00230         AXIS2_EXTERN axiom_node_t* AXIS2_CALL
00231         oxs_axiom_get_first_node_by_name_and_attr_val(
00232         const axutil_env_t *env,
00233         axiom_node_t *node,
00234         axis2_char_t *e_name,
00235         axis2_char_t *e_ns,
00236         axis2_char_t *attr_name,
00237         axis2_char_t *attr_val,
00238         axis2_char_t *attr_ns);
00239 
00253         AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00254         oxs_axiom_get_first_node_by_name_and_attr_val_from_xml_doc(
00255         const axutil_env_t *env,
00256         axiom_node_t *node,
00257         axis2_char_t *e_name,
00258         axis2_char_t *e_ns,
00259         axis2_char_t *attr_name,
00260         axis2_char_t *attr_val,
00261         axis2_char_t *attr_ns);
00262 
00269     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00270     oxs_axiom_clone_node(
00271         const axutil_env_t *env,
00272         axiom_node_t *node);
00273                           
00275 #ifdef __cplusplus
00276 }
00277 #endif
00278 
00279 #endif                          /* OXS_AXIOM_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__key__file__type.html0000644000076500007650000000317011202454456024213 0ustar shankarshankar Rampart/C: Key File Type

Key File Type
[Rampart Utilities]


Enumerations

enum  axis2_key_type_t {
  AXIS2_KEY_TYPE_UNKNOWN = 0, AXIS2_KEY_TYPE_PEM, AXIS2_KEY_TYPE_CERT, AXIS2_KEY_TYPE_DER,
  AXIS2_KEY_TYPE_OTHER
}

Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/struct__oxs__error__description-members.html0000644000076500007650000000357611202454457027643 0ustar shankarshankar Rampart/C: Member List

_oxs_error_description Member List

This is the complete list of members for _oxs_error_description, including all inherited members.

code (defined in _oxs_error_description)_oxs_error_description
message (defined in _oxs_error_description)_oxs_error_description


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__openssl__digest.html0000644000076500007650000000646111202454456024254 0ustar shankarshankar Rampart/C: OpenSSL Digest

OpenSSL Digest
[OpenSSL wrapper]


Functions

AXIS2_EXTERN axis2_char_t * openssl_sha1 (const axutil_env_t *env, axis2_char_t *input, int length)
AXIS2_EXTERN axis2_char_t * openssl_md5 (const axutil_env_t *env, axis2_char_t *input, int length)

Function Documentation

AXIS2_EXTERN axis2_char_t* openssl_sha1 ( const axutil_env_t *  env,
axis2_char_t *  input,
int  length 
)

Calculate the digest of the input. Caller MUST free memory

Returns:
calculated digest


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__oxs__c14n.html0000644000076500007650000004005511202454456022665 0ustar shankarshankar Rampart/C: C14N

C14N
[OMXMLSecurity]


Files

file  oxs_c14n.h
 Cannonicalization implementation for OMXMLSecurity.

Functions

AXIS2_EXTERN axis2_status_t oxs_c14n_apply_stream_algo (const axutil_env_t *env, const axiom_document_t *doc, axutil_stream_t *stream, const axutil_array_list_t *ns_prefixes, const axiom_node_t *node, const axis2_char_t *algo)
AXIS2_EXTERN axis2_status_t oxs_c14n_apply_algo (const axutil_env_t *env, const axiom_document_t *doc, axis2_char_t **outbuf, const axutil_array_list_t *ns_prefixes, const axiom_node_t *node, const axis2_char_t *algo)
AXIS2_EXTERN axis2_status_t oxs_c14n_apply_stream (const axutil_env_t *env, const axiom_document_t *doc, axis2_bool_t comments, axutil_stream_t *stream, const axis2_bool_t exclusive, const axutil_array_list_t *ns_prefixes, const axiom_node_t *node)
AXIS2_EXTERN axis2_status_t oxs_c14n_apply (const axutil_env_t *env, const axiom_document_t *doc, const axis2_bool_t comments, axis2_char_t **outbuf, const axis2_bool_t exclusive, const axutil_array_list_t *ns_prefixes, const axiom_node_t *node)

Detailed Description

XML Canonicalization (XML-C14N).

Function Documentation

AXIS2_EXTERN axis2_status_t oxs_c14n_apply ( const axutil_env_t *  env,
const axiom_document_t *  doc,
const axis2_bool_t  comments,
axis2_char_t **  outbuf,
const axis2_bool_t  exclusive,
const axutil_array_list_t *  ns_prefixes,
const axiom_node_t *  node 
)

Perform given XML-Canonicalization (XML-C14N) method and returns the result as an

axis2_char_t
buffer.

Parameters:
env Pointer to the Axis2/C environment.
doc Document on which the canonicalization is performed.
comments 
TRUE
if comments should be included in the output;
FALSE
otherwise.
outbuf Output buffer. A new buffer is allocated by the function, should be free'd by the caller.
ns_prefixes List of inclusive namespace prefixes.
exclusive 
TRUE
if exclusive cannonicalization should be used;
FALSE
otherwise.
node Node that defines the subdocument to be canonicalized. When it is
NULL
the whole document will be canonicalized.

AXIS2_EXTERN axis2_status_t oxs_c14n_apply_algo ( const axutil_env_t *  env,
const axiom_document_t *  doc,
axis2_char_t **  outbuf,
const axutil_array_list_t *  ns_prefixes,
const axiom_node_t *  node,
const axis2_char_t *  algo 
)

Perform given XML-Canonicalization (XML-C14N) method and returns the result as an

axis2_char_t
buffer.

Parameters:
env Pointer to the Axis2/C environment.
doc Document on which the canonicalization is performed.
outbuf Output buffer. A new buffer is allocated by the function, should be free'd by the caller.
ns_prefixes List of inclusive namespace prefixes.
node Node that defines the subdocument to be canonicalized. When it is
NULL
the whole document will be canonicalized.
algo Canonicalization method to be used.

AXIS2_EXTERN axis2_status_t oxs_c14n_apply_stream ( const axutil_env_t *  env,
const axiom_document_t *  doc,
axis2_bool_t  comments,
axutil_stream_t *  stream,
const axis2_bool_t  exclusive,
const axutil_array_list_t *  ns_prefixes,
const axiom_node_t *  node 
)

Perform given XML-Canonicalization (XML-C14N) method and returns the result as an

axutil_stream
.

Parameters:
env Pointer to the Axis2/C environment.
doc Document on which the canonicalization is performed.
comments 
TRUE
if comments should be included in the output;
FALSE
otherwise.
stream Output stream.
ns_prefixes List of inclusive namespace prefixes.
exclusive 
TRUE
if exclusive cannonicalization should be used;
FALSE
otherwise.
node Node that defines the subdocument to be canonicalized. When it is
NULL
the whole document will be canonicalized.

AXIS2_EXTERN axis2_status_t oxs_c14n_apply_stream_algo ( const axutil_env_t *  env,
const axiom_document_t *  doc,
axutil_stream_t *  stream,
const axutil_array_list_t *  ns_prefixes,
const axiom_node_t *  node,
const axis2_char_t *  algo 
)

Perform given XML-Canonicalization (XML-C14N) method and returns the result as an

axutil_stream
.

Parameters:
env Pointer to the Axis2/C environment.
doc Document on which the canonicalization is performed.
stream Output stream.
ns_prefixes List of inclusive namespace prefixes.
node Node that defines the subdocument to be canonicalized. When it is
NULL
the whole document will be canonicalized.
algo Canonicalization method to be used.


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/tab_l.gif0000644000076500007650000000130211202454454020365 0ustar shankarshankarGIF89a ,Õö÷ùñô÷öøúüýþúûüùúûøùúêïóïóöÆÕßÒÞæØâéÞçíÝæìåìñèîòô÷ùóöø³ÈÕÁÒÝËÙâÏÜäÖá薴ŹɯÂÍ»ÎÙÃÔÞÂÓÝÈ×àÌÚâÕáèÙäê×âèåìðëðó„°ÇÑÞåÜæëãëïëñôîóõ÷úûûüüÿÿÿþþþ, ,ÿ@–P±É`H$!%CqVe2X­ŠÌJ(“Ä +€˜3 2$ÀÆ ¼kvŠä-Ëçõu*…"}ã|}|~q(" $f„ 'Žl(Œ&&$r‘™ › & ! )¢¤›{¨£¥r­ª°©¯„±¯¬´¦·»º³®«§¾¶ÃÂÀ¿²¹ÇÄËÆ²ÌÉεҽͼ„ÔÈÓ×иÙÝÕÏÙÊâÜßãçæê¾äÛÅëÇíáîÖìéïøñ÷õüÑðåùü¤Pß?‚ƒœÇÛBm åAœÎáÀ†%V܈î!Çk÷Ø/áÄ;^¤¨²$Æ–#Mf)f͇(WÎL‰“æKçÒ„° ’I)L:eD ¡Cµ´x*4 U¨h  %A«£^ÁNKb¬Ùe§X±‚´k»x!ÁÖí—2tÝÖ !¯š5tÛæé—À]$¬´%ƒXíâ.i[¬]Y­•ÊfžEëõkg`µ††:zëçÒž;£}ºµj×aa‹–Mš¶é׸cçž½»vïÛºƒóî›8ðáÈ‹'?®¼9óç©G_>Ýyuè¬_ßž]zwêß­‡Ç¾º¼mîæµG~½ûôÞთ/ž>ùööÙ«Ïÿ¿ÿýÿÅà|ÖWà}v;rampartc-src-1.3.0/xdocs/api/html/rampart__token__builder_8h.html0000644000076500007650000001117711202454456024771 0ustar shankarshankar Rampart/C: rampart_token_builder.h File Reference

rampart_token_builder.h File Reference

Reference Token builfing/of rampart. More...

#include <axutil_utils_defines.h>
#include <axis2_defines.h>
#include <axutil_env.h>
#include <oxs_x509_cert.h>

Go to the source code of this file.

Enumerations

enum  rampart_token_build_pattern_t {
  RTBP_UNKNOWN = 0, RTBP_EMBEDDED, RTBP_KEY_IDENTIFIER, RTBP_X509DATA_ISSUER_SERIAL,
  RTBP_X509DATA_X509CERTIFICATE, RTBP_THUMBPRINT
}

Functions

AXIS2_EXTERN axis2_status_t rampart_token_build_security_token_reference (const axutil_env_t *env, axiom_node_t *parent, oxs_x509_cert_t *cert, rampart_token_build_pattern_t pattern)
AXIS2_EXTERN axis2_status_t rampart_token_build_embedded (const axutil_env_t *env, axiom_node_t *parent, oxs_x509_cert_t *cert)
AXIS2_EXTERN axis2_status_t rampart_token_build_key_identifier (const axutil_env_t *env, axiom_node_t *parent, oxs_x509_cert_t *cert)
AXIS2_EXTERN axis2_status_t rampart_token_build_x509_data_x509_certificate (const axutil_env_t *env, axiom_node_t *parent, oxs_x509_cert_t *cert)
AXIS2_EXTERN axis2_status_t rampart_token_build_x509_data_issuer_serial (const axutil_env_t *env, axiom_node_t *parent, oxs_x509_cert_t *cert)
AXIS2_EXTERN axis2_status_t rampart_token_build_thumbprint_reference (const axutil_env_t *env, axiom_node_t *parent, oxs_x509_cert_t *cert)


Detailed Description

Reference Token builfing/of rampart.


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/trust__entropy_8h-source.html0000644000076500007650000002443211202454455024512 0ustar shankarshankar Rampart/C: trust_entropy.h Source File

trust_entropy.h

00001 /*
00002 * Licensed to the Apache Software Foundation (ASF) under one or more
00003 * contributor license agreements.  See the NOTICE file distributed with
00004 * this work for additional information regarding copyright ownership.
00005 * The ASF licenses this file to You under the Apache License, Version 2.0
00006 * (the "License"); you may not use this file except in compliance with
00007 * the License.  You may obtain a copy of the License at
00008 *
00009 *      http://www.apache.org/licenses/LICENSE-2.0
00010 *
00011 * Unless required by applicable law or agreed to in writing, software
00012 * distributed under the License is distributed on an "AS IS" BASIS,
00013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014 * See the License for the specific language governing permissions and
00015 * limitations under the License.
00016 */
00017 
00018 #ifndef TRUST_ENTROPY_H
00019 #define TRUST_ENTROPY_H
00020 
00021 #include <axutil_utils.h>
00022 #include <axutil_string.h>
00023 #include <axutil_base64.h>
00024 #include <axiom_soap.h>
00025 #include <axiom.h>
00026 #include <trust_constants.h>
00027 #include <trust_util.h>
00028 
00029 
00030 #ifdef  __cplusplus
00031 extern "C"
00032 {
00033 #endif
00034     
00035     #define BIN_SEC_ASSYM   "/AsymmetricKey"
00036     #define BIN_SEC_SYM     "/SymmetricKey"
00037     #define BIN_SEC_NONCE   "/Nonce"    
00038 
00039     typedef enum
00040     {
00041         BIN_SEC_TYPE_ERROR = -1,
00042         ASYMMETRIC ,
00043         SYMMETRIC,
00044         NONCE
00045     }trust_bin_sec_type_t;
00046 
00047     typedef struct trust_entropy trust_entropy_t;
00048 
00049     #define TRUST_BIN_SEC_TYPE_ATTR "Type"
00050             
00051     AXIS2_EXTERN trust_entropy_t * AXIS2_CALL
00052     trust_entropy_create(
00053         const axutil_env_t *env);
00054     
00055     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00056     trust_entropy_free(
00057         trust_entropy_t *entropy,
00058         const axutil_env_t *env);
00059     
00060     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00061     trust_entropy_deserialize(
00062         trust_entropy_t *entropy,
00063         const axutil_env_t *env,
00064         axiom_node_t *entropy_node);
00065     
00066     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00067     trust_entropy_serialize(
00068         trust_entropy_t *entropy,
00069         const axutil_env_t *env,
00070         axiom_node_t *parent);
00071     
00072     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00073     trust_entropy_get_binary_secret(
00074         trust_entropy_t *entropy,
00075         const axutil_env_t *env);
00076 
00077         AXIS2_EXTERN trust_bin_sec_type_t AXIS2_CALL
00078         trust_entropy_get_bin_sec_type_from_str(
00079         axis2_char_t *str,
00080         const axutil_env_t *env);
00081     
00082     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00083         trust_entropy_get_str_for_bin_sec_type(
00084         trust_bin_sec_type_t type,
00085         const axutil_env_t *env);
00086     
00087     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00088     trust_entropy_set_binary_secret(
00089         trust_entropy_t *entropy,
00090         const axutil_env_t *env,
00091         axis2_char_t *bin_sec);
00092     
00093     AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00094     trust_entropy_get_other(
00095         trust_entropy_t *entropy,
00096         const axutil_env_t *env);
00097     
00098     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00099     trust_entropy_set_other(
00100         trust_entropy_t *entropy,
00101         const axutil_env_t *env,
00102         axiom_node_t *other_node);
00103     
00104     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00105     trust_entropy_get_ns_uri(
00106         trust_entropy_t *entropy,
00107         const axutil_env_t *env);
00108     
00109     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00110     trust_entropy_set_ns_uri(
00111         trust_entropy_t *entropy,
00112         const axutil_env_t *env,
00113         axis2_char_t *ns_uri);
00114 
00115     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00116     trust_entropy_set_binary_secret_type(
00117         trust_entropy_t *entropy,
00118         const axutil_env_t *env,
00119         trust_bin_sec_type_t binsec_type);
00120 
00121 #ifdef  __cplusplus
00122 }
00123 #endif
00124 
00125 #endif                          /* _TRUST_ENTROPY_H */

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__openssl.html0000644000076500007650000002443411202454456022556 0ustar shankarshankar Rampart/C: OpenSSL wrapper

OpenSSL wrapper


Modules

 OpenSSL Cipher Context
 OpenSSL Cipher Property
 OpenSSL Crypt
 OpenSSL Digest
 OpenSSL Hmac
 OpenSSL PEM
 OpenSSL PKCS12
 OpenSSL PKEY
 OpenSSL RSA
 OpenSSL Signatue
 OpenSSL Utility

Defines

#define OPENSSL_ENCRYPT   1
#define OPENSSL_DECRYPT   0
#define OPENSSL_LEAVE_UNCHANGED   -1
#define OPENSSL_EVP_des_ede3_cbc   "EVP_des_ede3_cbc"
#define OPENSSL_EVP_aes_128_cbc   "EVP_aes_128_cbc"
#define OPENSSL_EVP_aes_192_cbc   "EVP_aes_192_cbc"
#define OPENSSL_EVP_aes_256_cbc   "EVP_aes_256_cbc"
#define OPENSSL_HMAC_SHA1   "HmacSha1"
#define OPENSSL_HMAC_SHA1_KEY_LEN   32
#define OPENSSL_RSA_ENCRYPTION   "rsaEncryption"
#define OPENSSL_RSA_PKCS1_PADDING   "RSA_PKCS1_PADDING"
#define OPENSSL_RSA_PKCS1_OAEP_PADDING   "RSA_PKCS1_OAEP_PADDING"
#define OPENSSL_DEFAULT_IV8   "01234567"
#define OPENSSL_DEFAULT_IV16   "0123456701234567"
#define OPENSSL_DEFAULT_IV24   "012345670123456701234567"
#define OPENSSL_DEFAULT_LABEL_FOR_PSHA1   "WS-SecureConversation"
#define OPENSSL_DEFAULT_KEY_LEN_FOR_PSHA1   32
#define OPENSSL_DEFAULT_KEY_OFFSET_FOR_PSHA1   0

Define Documentation

#define OPENSSL_EVP_des_ede3_cbc   "EVP_des_ede3_cbc"

Supported Ciphers


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/openssl__crypt_8h-source.html0000644000076500007650000001251111202454454024447 0ustar shankarshankar Rampart/C: openssl_crypt.h Source File

openssl_crypt.h

Go to the documentation of this file.
00001 /*
00002  *   Copyright 2003-2004 The Apache Software Foundation.
00003  *
00004  *   Licensed under the Apache License, Version 2.0 (the "License");
00005  *   you may not use this file except in compliance with the License.
00006  *   You may obtain a copy of the License at
00007  *
00008  *       http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  *   Unless required by applicable law or agreed to in writing, software
00011  *   distributed under the License is distributed on an "AS IS" BASIS,
00012  *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  *   See the License for the specific language governing permissions and
00014  *   limitations under the License.
00015  */
00016 
00017 #include <openssl/evp.h>
00018 #include <openssl_cipher_ctx.h>
00019 #include <openssl_constants.h>
00020 #include <axis2_util.h>
00021 
00026 #ifndef OPENSSL_CRYPT_H
00027 #define OPENSSL_CRYPT_H
00028 
00029 #ifdef __cplusplus
00030 extern "C" {
00031 #endif
00032 
00051     AXIS2_EXTERN int AXIS2_CALL
00052     openssl_bc_crypt(const axutil_env_t *env,
00053                      openssl_cipher_ctx_t *oc_ctx,
00054                      oxs_buffer_t *input_buf,
00055                      oxs_buffer_t *output_buf,
00056                      int encrypt);
00057 
00058 
00059 
00061 #ifdef __cplusplus
00062 }
00063 #endif
00064 
00065 #endif    /* OPENSSL_CRYPT_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/oxs__key_8h.html0000644000076500007650000003537611202454455021745 0ustar shankarshankar Rampart/C: oxs_key.h File Reference

oxs_key.h File Reference

represents a Key in OMXMLSecurity More...

#include <axis2_defines.h>
#include <oxs_constants.h>
#include <oxs_buffer.h>
#include <axutil_env.h>
#include <rp_algorithmsuite.h>

Go to the source code of this file.

Defines

#define OXS_KEY_USAGE_NONE   0
#define OXS_KEY_USAGE_SESSION   1
#define OXS_KEY_USAGE_SIGNATURE_SESSION   2
#define OXS_KEY_USAGE_DERIVED   3
#define OXS_KEY_DEFAULT_SIZE   64

Typedefs

typedef struct oxs_key_t oxs_key_t

Functions

AXIS2_EXTERN unsigned char * oxs_key_get_data (const oxs_key_t *key, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_key_get_name (const oxs_key_t *key, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_key_get_nonce (const oxs_key_t *key, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_key_get_label (const oxs_key_t *key, const axutil_env_t *env)
AXIS2_EXTERN int oxs_key_get_size (const oxs_key_t *key, const axutil_env_t *env)
AXIS2_EXTERN int oxs_key_get_usage (const oxs_key_t *key, const axutil_env_t *env)
AXIS2_EXTERN int oxs_key_get_offset (const oxs_key_t *key, const axutil_env_t *env)
AXIS2_EXTERN int oxs_key_get_length (const oxs_key_t *key, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_key_set_name (oxs_key_t *key, const axutil_env_t *env, axis2_char_t *name)
AXIS2_EXTERN axis2_status_t oxs_key_set_usage (oxs_key_t *key, const axutil_env_t *env, int usage)
AXIS2_EXTERN axis2_status_t oxs_key_set_nonce (oxs_key_t *key, const axutil_env_t *env, axis2_char_t *nonce)
AXIS2_EXTERN axis2_status_t oxs_key_set_label (oxs_key_t *key, const axutil_env_t *env, axis2_char_t *label)
AXIS2_EXTERN axis2_status_t oxs_key_set_offset (oxs_key_t *key, const axutil_env_t *env, int offset)
AXIS2_EXTERN axis2_status_t oxs_key_set_length (oxs_key_t *key, const axutil_env_t *env, int length)
AXIS2_EXTERN axis2_status_t oxs_key_free (oxs_key_t *key, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_key_populate_with_buf (oxs_key_t *key, const axutil_env_t *env, oxs_buffer_t *buffer, axis2_char_t *name, int usage)
AXIS2_EXTERN axis2_status_t oxs_key_populate (oxs_key_t *key, const axutil_env_t *env, unsigned char *data, axis2_char_t *name, int size, int usage)
AXIS2_EXTERN axis2_status_t oxs_key_read_from_file (oxs_key_t *key, const axutil_env_t *env, axis2_char_t *file_name)
AXIS2_EXTERN axis2_status_t oxs_key_for_algo (oxs_key_t *key, const axutil_env_t *env, rp_algorithmsuite_t *key_algo)
AXIS2_EXTERN oxs_buffer_toxs_key_get_buffer (const oxs_key_t *key, const axutil_env_t *env)
AXIS2_EXTERN oxs_key_toxs_key_dup (oxs_key_t *key, const axutil_env_t *env)
AXIS2_EXTERN oxs_key_toxs_key_create (const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_key_set_key_sha (oxs_key_t *key, const axutil_env_t *env, axis2_char_t *key_sha)
AXIS2_EXTERN axis2_char_t * oxs_key_get_key_sha (const oxs_key_t *key, const axutil_env_t *env)


Detailed Description

represents a Key in OMXMLSecurity


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/rampart__engine_8h.html0000644000076500007650000000460711202454456023251 0ustar shankarshankar Rampart/C: rampart_engine.h File Reference

rampart_engine.h File Reference

Loads configuratins for Rampart, which defines its behaviuor. Also loads modules and initialize Rampart. More...

#include <rp_includes.h>
#include <rampart_context.h>
#include <rampart_constants.h>
#include <axis2_msg_ctx.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN rampart_context_t * rampart_engine_build_configuration (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axis2_bool_t is_inflow)


Detailed Description

Loads configuratins for Rampart, which defines its behaviuor. Also loads modules and initialize Rampart.


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/openssl__cipher__ctx_8h.html0000644000076500007650000001476011202454455024310 0ustar shankarshankar Rampart/C: openssl_cipher_ctx.h File Reference

openssl_cipher_ctx.h File Reference

The cipher context in which the information regarding a cipher cycle is stored. More...

#include <axis2_defines.h>
#include <axutil_env.h>
#include <openssl/evp.h>
#include <oxs_key.h>

Go to the source code of this file.

Typedefs

typedef struct openssl_cipher_ctx_t openssl_cipher_ctx_t

Functions

axis2_status_t openssl_cipher_ctx_free (openssl_cipher_ctx_t *ctx, const axutil_env_t *env)
const EVP_CIPHER * openssl_cipher_ctx_get_cipher (openssl_cipher_ctx_t *ctx, const axutil_env_t *env)
oxs_key_topenssl_cipher_ctx_get_key (openssl_cipher_ctx_t *ctx, const axutil_env_t *env)
axis2_char_t * openssl_cipher_ctx_get_iv (openssl_cipher_ctx_t *ctx, const axutil_env_t *env)
axis2_char_t * openssl_cipher_ctx_get_pad (openssl_cipher_ctx_t *ctx, const axutil_env_t *env)
axis2_status_t openssl_cipher_ctx_set_cipher (openssl_cipher_ctx_t *ctx, const axutil_env_t *env, const EVP_CIPHER *)
axis2_status_t openssl_cipher_ctx_set_key (openssl_cipher_ctx_t *ctx, const axutil_env_t *env, oxs_key_t *key)
axis2_status_t openssl_cipher_ctx_set_iv (openssl_cipher_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *iv)
axis2_status_t openssl_cipher_ctx_set_pad (openssl_cipher_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *pad)
AXIS2_EXTERN openssl_cipher_ctx_topenssl_cipher_ctx_create (const axutil_env_t *env)


Detailed Description

The cipher context in which the information regarding a cipher cycle is stored.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/openssl__crypt_8h.html0000644000076500007650000000505311202454455023155 0ustar shankarshankar Rampart/C: openssl_crypt.h File Reference

openssl_crypt.h File Reference

The encryption/decryption methods for OMXMLSecurity. More...

#include <openssl/evp.h>
#include <openssl_cipher_ctx.h>
#include <openssl_constants.h>
#include <axis2_util.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN int openssl_bc_crypt (const axutil_env_t *env, openssl_cipher_ctx_t *oc_ctx, oxs_buffer_t *input_buf, oxs_buffer_t *output_buf, int encrypt)


Detailed Description

The encryption/decryption methods for OMXMLSecurity.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/trust__token_8h.html0000644000076500007650000013523211202454456022636 0ustar shankarshankar Rampart/C: trust_token.h File Reference

trust_token.h File Reference

Holds function declarations and data for token. More...

#include <axiom.h>
#include <axutil_utils.h>
#include <trust_constants.h>

Go to the source code of this file.

Typedefs

typedef struct trust_token trust_token_t

Enumerations

enum  trust_token_state_t { ISSUED = 1, EXPIRED, CANCELED, RENEWED }

Functions

AXIS2_EXTERN trust_token_t * trust_token_create (const axutil_env_t *env, axis2_char_t *id, axiom_node_t *token_node, axiom_node_t *life_node)
AXIS2_EXTERN trust_token_t * trust_token_create_with_dates (const axutil_env_t *env, axis2_char_t *id, axiom_node_t *token_node, axutil_date_time_t *created, axutil_date_time_t *expire)
AXIS2_EXTERN axis2_status_t trust_token_process_life_elem (const axutil_env_t *env, axiom_node_t *life_node, trust_token_t *token)
AXIS2_EXTERN axis2_bool_t trust_token_is_changed (const axutil_env_t *env, trust_token_t *token)
AXIS2_EXTERN axis2_status_t trust_token_set_changed (const axutil_env_t *env, trust_token_t *token, axis2_bool_t changed)
AXIS2_EXTERN trust_token_state_t trust_token_get_state (const axutil_env_t *env, trust_token_t *token)
AXIS2_EXTERN axis2_status_t trust_token_set_state (const axutil_env_t *env, trust_token_t *token, trust_token_state_t state)
AXIS2_EXTERN axiom_node_t * trust_token_get_token (const axutil_env_t *env, trust_token_t *token)
AXIS2_EXTERN axis2_status_t trust_token_set_token (const axutil_env_t *env, trust_token_t *token, axiom_node_t *token_node)
AXIS2_EXTERN axis2_char_t * trust_token_get_id (const axutil_env_t *env, trust_token_t *token)
AXIS2_EXTERN axiom_node_t * trust_token_get_previous_token (const axutil_env_t *env, trust_token_t *token)
AXIS2_EXTERN axis2_status_t trust_token_set_previous_token (const axutil_env_t *env, trust_token_t *token, axiom_node_t *prev_token)
AXIS2_EXTERN axiom_node_t * trust_token_get_attached_reference (const axutil_env_t *env, trust_token_t *token)
AXIS2_EXTERN axis2_status_t trust_token_set_attached_reference (const axutil_env_t *env, trust_token_t *token, axiom_node_t *attached_reference)
AXIS2_EXTERN axiom_node_t * trust_token_get_unattached_reference (const axutil_env_t *env, trust_token_t *token)
AXIS2_EXTERN axis2_status_t trust_token_set_unattached_reference (const axutil_env_t *env, trust_token_t *token, axiom_node_t *unattached_reference)
AXIS2_EXTERN axutil_date_time_t * trust_token_get_created (const axutil_env_t *env, trust_token_t *token)
AXIS2_EXTERN axis2_status_t trust_token_set_created (const axutil_env_t *env, trust_token_t *token, axutil_date_time_t *created)
AXIS2_EXTERN axutil_date_time_t * trust_token_get_expires (const axutil_env_t *env, trust_token_t *token)
AXIS2_EXTERN axis2_status_t trust_token_set_expires (const axutil_env_t *env, trust_token_t *token, axutil_date_time_t *expire)
AXIS2_EXTERN axis2_char_t * trust_token_get_issuer_address (const axutil_env_t *env, trust_token_t *token)
AXIS2_EXTERN axis2_status_t trust_token_set_issuer_address (const axutil_env_t *env, trust_token_t *token, axis2_char_t *issuer_address)


Detailed Description

Holds function declarations and data for token.


Function Documentation

AXIS2_EXTERN trust_token_t* trust_token_create ( const axutil_env_t *  env,
axis2_char_t *  id,
axiom_node_t *  token_node,
axiom_node_t *  life_node 
)

Create trust token with given id, token node and life element data

Parameters:
env const pointer to axutil environment
id Token identifier
toke_node Actual token axiom node
life_node Life axiom node containing created and expire dates
Returns:
pointer to trust_token_t

AXIS2_EXTERN trust_token_t* trust_token_create_with_dates ( const axutil_env_t *  env,
axis2_char_t *  id,
axiom_node_t *  token_node,
axutil_date_time_t *  created,
axutil_date_time_t *  expire 
)

Create trust token with given id, token node, created date and expire date

Parameters:
env const pointer to axutil environment
id Token identifier
toke_node Actual token axiom node
created Date which token is created
expire Date which token will expire
Returns:
pointer to trust_token_t

AXIS2_EXTERN axiom_node_t* trust_token_get_attached_reference ( const axutil_env_t *  env,
trust_token_t *  token 
)

Parameters:
secret The secret to set.
public void setSecret(byte[] secret) { this.secret = secret; } Get the attached reference of trust token
Parameters:
env const pointer to axutil environment
token Trust token structure
Returns:
axiom_node_t axiom node pointer for attached reference

AXIS2_EXTERN axutil_date_time_t* trust_token_get_created ( const axutil_env_t *  env,
trust_token_t *  token 
)

Get the created date of trust token

Parameters:
env const pointer to axutil environment
token Trust token structure
Returns:
axutil_date_time_t ceated date

AXIS2_EXTERN axutil_date_time_t* trust_token_get_expires ( const axutil_env_t *  env,
trust_token_t *  token 
)

Get the expire date of trust token

Parameters:
env const pointer to axutil environment
token Trust token structure
Returns:
axutil_date_time_t expire date

AXIS2_EXTERN axis2_char_t* trust_token_get_id ( const axutil_env_t *  env,
trust_token_t *  token 
)

Get the identifier of trust token

Parameters:
env const pointer to axutil environment
token Trust token structure
Returns:
axis2_char_t identifier string of token

AXIS2_EXTERN axis2_char_t* trust_token_get_issuer_address ( const axutil_env_t *  env,
trust_token_t *  token 
)

Get the issuer's address of token

Parameters:
env const pointer to axutil environment
token Trust token structure
Returns:
axis2_char_t* issuer's address

AXIS2_EXTERN axiom_node_t* trust_token_get_previous_token ( const axutil_env_t *  env,
trust_token_t *  token 
)

Get the actual previous token om node of trust token

Parameters:
env const pointer to axutil environment
token Trust token structure
Returns:
axiom_node_t axiom node pointer for previous token

AXIS2_EXTERN trust_token_state_t trust_token_get_state ( const axutil_env_t *  env,
trust_token_t *  token 
)

Get the state of trust token

Parameters:
env const pointer to axutil environment
token Trust token structure
Returns:
trust_token_state_t token's state can be ISSUED, EXPIRED, CANCELLED, RENEWED

AXIS2_EXTERN axiom_node_t* trust_token_get_token ( const axutil_env_t *  env,
trust_token_t *  token 
)

Get the actual token om node of trust token

Parameters:
env const pointer to axutil environment
token Trust token structure
Returns:
axiom_node_t axiom node pointer for token

AXIS2_EXTERN axiom_node_t* trust_token_get_unattached_reference ( const axutil_env_t *  env,
trust_token_t *  token 
)

Get the unattached reference of trust token

Parameters:
env const pointer to axutil environment
token Trust token structure
Returns:
axiom_node_t axiom node pointer for unattached reference

AXIS2_EXTERN axis2_bool_t trust_token_is_changed ( const axutil_env_t *  env,
trust_token_t *  token 
)

Get the change status of trust token

Parameters:
env const pointer to axutil environment
token Trust token structure
Returns:
axis2_bool_t whether the token is changed or not

AXIS2_EXTERN axis2_status_t trust_token_process_life_elem ( const axutil_env_t *  env,
axiom_node_t *  life_node,
trust_token_t *  token 
)

Process the life element of the token which represent by the following xml format assign values to related fields. <wst:LifeTime> <wsu:Created>...</wsu:Created> <wsu:Expires>...</wsu:Expires> </wst:LifeTime>

Parameters:
env const pointer to axutil environment
life_node Axiom node containing created and expire dates
token Trust token containing token data
Returns:
status of the life element processing

AXIS2_EXTERN axis2_status_t trust_token_set_attached_reference ( const axutil_env_t *  env,
trust_token_t *  token,
axiom_node_t *  attached_reference 
)

Set the attached reference of trust token

Parameters:
env const pointer to axutil environment
token Trust token structure
attached_reference axiom node pointer for attached reference
Returns:
axis2_status_t whether the set operation is successful or not

AXIS2_EXTERN axis2_status_t trust_token_set_changed ( const axutil_env_t *  env,
trust_token_t *  token,
axis2_bool_t  changed 
)

Set the change status of trust token

Parameters:
env const pointer to axutil environment
token Trust token structure
changed Bollean value representing the if token is changed
Returns:
axis2_status_t whether the operation is successful or not

AXIS2_EXTERN axis2_status_t trust_token_set_created ( const axutil_env_t *  env,
trust_token_t *  token,
axutil_date_time_t *  created 
)

Set the created date of trust token

Parameters:
env const pointer to axutil environment
token Trust token structure
created date which token is created
Returns:
axis2_status_t whether the set operation is successful or not

AXIS2_EXTERN axis2_status_t trust_token_set_expires ( const axutil_env_t *  env,
trust_token_t *  token,
axutil_date_time_t *  expire 
)

Set the expire date of trust token

Parameters:
env const pointer to axutil environment
token Trust token structure
expire Expire date of token
Returns:
axis2_status_t whether the set operation is successful or not

AXIS2_EXTERN axis2_status_t trust_token_set_issuer_address ( const axutil_env_t *  env,
trust_token_t *  token,
axis2_char_t *  issuer_address 
)

Set the issuer's address of token

Parameters:
env const pointer to axutil environment
token Trust token structure
issuer_address issure's address string
Returns:
axis2_status_t whether the set operation is successful or not

AXIS2_EXTERN axis2_status_t trust_token_set_previous_token ( const axutil_env_t *  env,
trust_token_t *  token,
axiom_node_t *  prev_token 
)

Set the actual token om node of trust token's previous token

Parameters:
env const pointer to axutil environment
token Trust token structure
prev_token axiom node pointer for previous token
Returns:
axis2_status_t whether the set operation is successful or not

AXIS2_EXTERN axis2_status_t trust_token_set_state ( const axutil_env_t *  env,
trust_token_t *  token,
trust_token_state_t  state 
)

Set the state of trust token

Parameters:
env const pointer to axutil environment
token Trust token structure
state State of the trust token
Returns:
axis2_status_t whether the set operation is successful or not

AXIS2_EXTERN axis2_status_t trust_token_set_token ( const axutil_env_t *  env,
trust_token_t *  token,
axiom_node_t *  token_node 
)

Set the actual token om node of trust token

Parameters:
env const pointer to axutil environment
token Trust token structure
token_node axiom node pointer for token
Returns:
axis2_status_t whether the set operation is successful or not

AXIS2_EXTERN axis2_status_t trust_token_set_unattached_reference ( const axutil_env_t *  env,
trust_token_t *  token,
axiom_node_t *  unattached_reference 
)

Set the unattached reference of trust token

Parameters:
env const pointer to axutil environment
token Trust token structure
attached_reference axiom node pointer for unattached reference
Returns:
axis2_status_t whether the set operation is successful or not


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/openssl__digest_8h.html0000644000076500007650000000511311202454455023270 0ustar shankarshankar Rampart/C: openssl_digest.h File Reference

openssl_digest.h File Reference

Digest function implementations. Supports SHA1 and MD5. More...

#include <openssl/sha.h>
#include <axutil_utils_defines.h>
#include <axis2_defines.h>
#include <axutil_env.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN axis2_char_t * openssl_sha1 (const axutil_env_t *env, axis2_char_t *input, int length)
AXIS2_EXTERN axis2_char_t * openssl_md5 (const axutil_env_t *env, axis2_char_t *input, int length)


Detailed Description

Digest function implementations. Supports SHA1 and MD5.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/oxs__key__mgr_8h.html0000644000076500007650000005171111202454455022740 0ustar shankarshankar Rampart/C: oxs_key_mgr.h File Reference

oxs_key_mgr.h File Reference

the Key Manager responsible for loading keys for OMXMLSecurity More...

#include <axis2_defines.h>
#include <oxs_ctx.h>
#include <oxs_asym_ctx.h>
#include <axutil_env.h>
#include <axutil_qname.h>
#include <oxs_x509_cert.h>
#include <openssl_pkey.h>
#include <openssl_x509.h>
#include <openssl_pkcs12.h>
#include <axis2_key_type.h>
#include <openssl_pkcs12_keystore.h>

Go to the source code of this file.

Typedefs

typedef struct oxs_key_mgr_t oxs_key_mgr_t

Enumerations

enum  oxs_key_mgr_format_t { OXS_KEY_MGR_FORMAT_UNKNOWN = 0, OXS_KEY_MGR_FORMAT_PEM, OXS_KEY_MGR_FORMAT_PKCS12 }

Functions

AXIS2_EXTERN openssl_pkey_toxs_key_mgr_load_private_key_from_string (const axutil_env_t *env, axis2_char_t *pem_buf, axis2_char_t *password)
AXIS2_EXTERN openssl_pkey_toxs_key_mgr_load_private_key_from_pem_file (const axutil_env_t *env, axis2_char_t *file_name, axis2_char_t *password)
AXIS2_EXTERN oxs_x509_cert_t * oxs_key_mgr_load_x509_cert_from_string (const axutil_env_t *env, axis2_char_t *pem_buf)
AXIS2_EXTERN oxs_x509_cert_t * oxs_key_mgr_load_x509_cert_from_pem_file (const axutil_env_t *env, axis2_char_t *filename)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_read_pkcs12_key_store (const axutil_env_t *env, axis2_char_t *pkcs12_file, axis2_char_t *password, oxs_x509_cert_t **cert, openssl_pkey_t **prv_key)
AXIS2_EXTERN oxs_key_mgr_t * oxs_key_mgr_create (const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_free (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_prv_key_password (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, axis2_char_t *password)
AXIS2_EXTERN axis2_char_t * oxs_key_mgr_get_prv_key_password (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_key_mgr_get_private_key_file (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_key_mgr_get_certificate_file (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_key_mgr_get_reciever_certificate_file (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_private_key_file (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, axis2_char_t *file_name)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_certificate_file (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, axis2_char_t *file_name)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_reciever_certificate_file (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, axis2_char_t *file_name)
AXIS2_EXTERN void * oxs_key_mgr_get_certificate (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN axis2_key_type_t oxs_key_mgr_get_certificate_type (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN void * oxs_key_mgr_get_prv_key (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN axis2_key_type_t oxs_key_mgr_get_prv_key_type (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN void * oxs_key_mgr_get_receiver_certificate (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN axis2_key_type_t oxs_key_mgr_get_receiver_certificate_type (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_certificate (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, void *certificate)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_certificate_type (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, axis2_key_type_t type)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_prv_key (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, void *key)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_prv_key_type (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, axis2_key_type_t type)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_receiver_certificate (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, void *certificate)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_receiver_certificate_type (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, axis2_key_type_t type)
AXIS2_EXTERN oxs_key_mgr_format_t oxs_key_mgr_get_format (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_format (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, oxs_key_mgr_format_t format)
AXIS2_EXTERN void * oxs_key_mgr_get_pem_buf (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_pem_buf (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, void *pem_buf)
AXIS2_EXTERN pkcs12_keystore_t * oxs_key_mgr_get_key_store (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_key_store (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, pkcs12_keystore_t *key_store)
AXIS2_EXTERN void * oxs_key_mgr_get_key_store_buff (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN oxs_x509_cert_t * oxs_key_mgr_get_receiver_certificate_from_ski (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, axis2_char_t *ski)
AXIS2_EXTERN oxs_x509_cert_t * oxs_key_mgr_get_receiver_certificate_from_issuer_serial (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, axis2_char_t *issuer, int serial)
AXIS2_EXTERN int oxs_key_mgr_get_key_store_buff_len (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_set_key_store_buff (oxs_key_mgr_t *key_mgr, const axutil_env_t *env, void *key_store_buf, int len)
AXIS2_EXTERN axis2_status_t oxs_key_mgr_increment_ref (oxs_key_mgr_t *key_mgr, const axutil_env_t *env)


Detailed Description

the Key Manager responsible for loading keys for OMXMLSecurity


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__oxs__sign__ctx.html0000644000076500007650000010417611202454456024102 0ustar shankarshankar Rampart/C: Signature Context

Signature Context
[OMXMLSecurity]


Typedefs

typedef struct oxs_sign_ctx_t oxs_sign_ctx_t

Enumerations

enum  oxs_sign_operation_t { OXS_SIGN_OPERATION_NONE = 0, OXS_SIGN_OPERATION_SIGN, OXS_SIGN_OPERATION_VERIFY }

Functions

AXIS2_EXTERN oxs_sign_ctx_t * oxs_sign_ctx_create (const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_sign_ctx_free (oxs_sign_ctx_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_sign_ctx_get_sign_mtd_algo (const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_sign_ctx_get_c14n_mtd (const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_sign_ctx_get_sig_val (const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env)
AXIS2_EXTERN axutil_array_list_t * oxs_sign_ctx_get_sign_parts (const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env)
AXIS2_EXTERN oxs_x509_cert_t * oxs_sign_ctx_get_certificate (const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env)
AXIS2_EXTERN openssl_pkey_toxs_sign_ctx_get_private_key (const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env)
AXIS2_EXTERN openssl_pkey_toxs_sign_ctx_get_public_key (const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env)
AXIS2_EXTERN oxs_key_toxs_sign_ctx_get_secret (const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env)
AXIS2_EXTERN oxs_sign_operation_t oxs_sign_ctx_get_operation (const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_sign_ctx_set_sign_mtd_algo (oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, axis2_char_t *sign_mtd_algo)
AXIS2_EXTERN axis2_status_t oxs_sign_ctx_set_c14n_mtd (oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, axis2_char_t *c14n_mtd)
AXIS2_EXTERN axis2_status_t oxs_sign_ctx_set_sig_val (oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, axis2_char_t *sig_val)
AXIS2_EXTERN axis2_status_t oxs_sign_ctx_set_sign_parts (oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, axutil_array_list_t *sign_parts)
AXIS2_EXTERN axis2_status_t oxs_sign_ctx_set_certificate (oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, oxs_x509_cert_t *certificate)
AXIS2_EXTERN axis2_status_t oxs_sign_ctx_set_private_key (oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, openssl_pkey_t *prv_key)
AXIS2_EXTERN axis2_status_t oxs_sign_ctx_set_public_key (oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, openssl_pkey_t *pub_key)
AXIS2_EXTERN axis2_status_t oxs_sign_ctx_set_secret (oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, oxs_key_t *secret)
AXIS2_EXTERN axis2_status_t oxs_sign_ctx_set_operation (oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, oxs_sign_operation_t operation)

Function Documentation

AXIS2_EXTERN oxs_sign_ctx_t* oxs_sign_ctx_create ( const axutil_env_t *  env  ) 

Create a signature context the environemnt struct

Returns:
created signature context

AXIS2_EXTERN axis2_status_t oxs_sign_ctx_free ( oxs_sign_ctx_t *  ctx,
const axutil_env_t *  env 
)

Free a signature context. signature context the environemnt struct

Returns:
AXIS2_SUCCESS on success or AXIS2_FAILURE on failure

AXIS2_EXTERN axis2_char_t* oxs_sign_ctx_get_c14n_mtd ( const oxs_sign_ctx_t *  sign_ctx,
const axutil_env_t *  env 
)

Get cannocanicalization method of the signature context the signature context the environemnt struct

Returns:
cannocanicalization method

AXIS2_EXTERN oxs_x509_cert_t* oxs_sign_ctx_get_certificate ( const oxs_sign_ctx_t *  sign_ctx,
const axutil_env_t *  env 
)

Get x509 certificate of the signature context the signature context the environemnt struct

Returns:
x509 certificate

AXIS2_EXTERN oxs_sign_operation_t oxs_sign_ctx_get_operation ( const oxs_sign_ctx_t *  sign_ctx,
const axutil_env_t *  env 
)

Get the operation of the signature context the signature context the environemnt struct

Returns:
operation SIGN/VERIFY/NONE

AXIS2_EXTERN openssl_pkey_t* oxs_sign_ctx_get_private_key ( const oxs_sign_ctx_t *  sign_ctx,
const axutil_env_t *  env 
)

Get private key of the signature context the signature context the environemnt struct

Returns:
private key

AXIS2_EXTERN openssl_pkey_t* oxs_sign_ctx_get_public_key ( const oxs_sign_ctx_t *  sign_ctx,
const axutil_env_t *  env 
)

Get public key of the signature context the signature context the environemnt struct

Returns:
public key

AXIS2_EXTERN oxs_key_t* oxs_sign_ctx_get_secret ( const oxs_sign_ctx_t *  sign_ctx,
const axutil_env_t *  env 
)

Get shared secret of the signature context the signature context the environemnt struct

Returns:
the shared secret

AXIS2_EXTERN axis2_char_t* oxs_sign_ctx_get_sig_val ( const oxs_sign_ctx_t *  sign_ctx,
const axutil_env_t *  env 
)

Get sginature valueof the signature context the signature context the environemnt struct

Returns:
signature value

AXIS2_EXTERN axis2_char_t* oxs_sign_ctx_get_sign_mtd_algo ( const oxs_sign_ctx_t *  sign_ctx,
const axutil_env_t *  env 
)

Get signature algorithm of the signature context the signature context the environemnt struct

Returns:
signature algorithm

AXIS2_EXTERN axutil_array_list_t* oxs_sign_ctx_get_sign_parts ( const oxs_sign_ctx_t *  sign_ctx,
const axutil_env_t *  env 
)

Get signature parts of the signature context the signature context the environemnt struct

Returns:
sgnature parts as a list

AXIS2_EXTERN axis2_status_t oxs_sign_ctx_set_c14n_mtd ( oxs_sign_ctx_t *  sign_ctx,
const axutil_env_t *  env,
axis2_char_t *  c14n_mtd 
)

Set Cannocanicalization method of the signature context the signature context the environemnt struct Cannocanicalization method

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_sign_ctx_set_certificate ( oxs_sign_ctx_t *  sign_ctx,
const axutil_env_t *  env,
oxs_x509_cert_t *  certificate 
)

Set the x509 certificate of the signature context the signature context the environemnt struct the x509 certificate

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_sign_ctx_set_operation ( oxs_sign_ctx_t *  sign_ctx,
const axutil_env_t *  env,
oxs_sign_operation_t  operation 
)

Set the operation of the signature context the signature context the environemnt struct the operation

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_sign_ctx_set_private_key ( oxs_sign_ctx_t *  sign_ctx,
const axutil_env_t *  env,
openssl_pkey_t prv_key 
)

Set private key of the signature context the signature context the environemnt struct private key

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_sign_ctx_set_public_key ( oxs_sign_ctx_t *  sign_ctx,
const axutil_env_t *  env,
openssl_pkey_t pub_key 
)

Set the public key of the signature context the signature context the environemnt struct the public key

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_sign_ctx_set_secret ( oxs_sign_ctx_t *  sign_ctx,
const axutil_env_t *  env,
oxs_key_t secret 
)

Set the shared secret of the signature context the signature context the environemnt struct the shared secret

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_sign_ctx_set_sig_val ( oxs_sign_ctx_t *  sign_ctx,
const axutil_env_t *  env,
axis2_char_t *  sig_val 
)

Set signature value of the signature context the signature context the environemnt struct signature value

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_sign_ctx_set_sign_mtd_algo ( oxs_sign_ctx_t *  sign_ctx,
const axutil_env_t *  env,
axis2_char_t *  sign_mtd_algo 
)

Set Signature algorithm of the signature context the signature context the environemnt struct Signature algorithm

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_sign_ctx_set_sign_parts ( oxs_sign_ctx_t *  sign_ctx,
const axutil_env_t *  env,
axutil_array_list_t *  sign_parts 
)

Set signature parts of the signature context the signature context the environemnt struct signature parts

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/oxs__signature_8h-source.html0000644000076500007650000002051211202454454024435 0ustar shankarshankar Rampart/C: oxs_signature.h Source File

oxs_signature.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef OXS_SIGNATURE_H
00019 #define OXS_SIGNATURE_H
00020 
00021 
00032 #include <axis2_defines.h>
00033 #include <oxs_ctx.h>
00034 #include <axutil_env.h>
00035 #include <axiom_node.h>
00036 #include <axiom_element.h>
00037 #include <axutil_qname.h>
00038 #include <oxs_sign_ctx.h>
00039 
00040 #ifdef __cplusplus
00041 extern "C"
00042 {
00043 #endif
00044 
00054     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00055     oxs_sig_sign_hmac_sha1(const axutil_env_t *env,
00056                       oxs_sign_ctx_t *sign_ctx,
00057                       oxs_buffer_t *input,
00058                       oxs_buffer_t *output);
00059 
00069     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00070     oxs_sig_sign_rsa_sha1(const axutil_env_t *env,
00071                           oxs_sign_ctx_t *sign_ctx,
00072                           oxs_buffer_t *input,
00073                           oxs_buffer_t *output);
00074 
00086     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00087     oxs_sig_sign(const axutil_env_t *env,
00088                  oxs_sign_ctx_t *sign_ctx,
00089                  oxs_buffer_t *input,
00090                  oxs_buffer_t *output);
00091 
00102     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00103     oxs_sig_verify(const axutil_env_t *env,
00104                    oxs_sign_ctx_t *sign_ctx,
00105                    axis2_char_t *content,
00106                    axis2_char_t *signature);
00116     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00117     oxs_sig_verify_hmac_sha1(const axutil_env_t *env,
00118                oxs_sign_ctx_t *sign_ctx,
00119                axis2_char_t *content,
00120                axis2_char_t *signature);
00121 
00131     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00132     oxs_sig_verify_rsa_sha1(const axutil_env_t *env,
00133                oxs_sign_ctx_t *sign_ctx,
00134                axis2_char_t *content,
00135                axis2_char_t *signature);
00136 
00138 #ifdef __cplusplus
00139 }
00140 #endif
00141 
00142 #endif                          /* OXS_SIGNATURE_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/rampart__util_8h.html0000644000076500007650000001445611202454456022764 0ustar shankarshankar Rampart/C: rampart_util.h File Reference

rampart_util.h File Reference

Utilities of rampart. More...

#include <axutil_utils_defines.h>
#include <axis2_defines.h>
#include <axutil_date_time.h>
#include <axutil_env.h>
#include <axis2_msg_ctx.h>
#include <rampart_authn_provider.h>
#include <rampart_credentials.h>
#include <rampart_callback.h>
#include <rampart_replay_detector.h>
#include <rampart_sct_provider.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN
rampart_credentials_t * 
rampart_load_credentials_module (const axutil_env_t *env, axis2_char_t *cred_module_name)
AXIS2_EXTERN
rampart_credentials_status_t 
rampart_call_credentials (const axutil_env_t *env, rampart_credentials_t *cred_module, axis2_msg_ctx_t *ctx, axis2_char_t **username, axis2_char_t **password)
AXIS2_EXTERN
rampart_authn_provider_t * 
rampart_load_auth_module (const axutil_env_t *env, axis2_char_t *auth_module_name)
AXIS2_EXTERN
rampart_replay_detector_t * 
rampart_load_replay_detector (const axutil_env_t *env, axis2_char_t *replay_detector_name)
AXIS2_EXTERN
rampart_sct_provider_t * 
rampart_load_sct_provider (const axutil_env_t *env, axis2_char_t *sct_provider_name)
AXIS2_EXTERN rampart_callback_t * rampart_load_pwcb_module (const axutil_env_t *env, axis2_char_t *callback_module_name)
AXIS2_EXTERN
rampart_authn_provider_status_t 
rampart_authenticate_un_pw (const axutil_env_t *env, rampart_authn_provider_t *authp, const axis2_char_t *username, const axis2_char_t *password, const axis2_char_t *nonce, const axis2_char_t *created, const axis2_char_t *password_type, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN axis2_char_t * rampart_callback_password (const axutil_env_t *env, rampart_callback_t *callback_module, const axis2_char_t *username)
AXIS2_EXTERN axis2_char_t * rampart_callback_pkcs12_password (const axutil_env_t *env, rampart_callback_t *callback_module, const axis2_char_t *username)
AXIS2_EXTERN axis2_char_t * rampart_generate_time (const axutil_env_t *env, int ttl, axis2_bool_t with_millisecond)
AXIS2_EXTERN axis2_status_t rampart_compare_date_time (const axutil_env_t *env, axis2_char_t *dt1, axis2_char_t *dt2)


Detailed Description

Utilities of rampart.


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/rampart__encryption_8h.html0000644000076500007650000001046111202454456024171 0ustar shankarshankar Rampart/C: rampart_encryption.h File Reference

rampart_encryption.h File Reference

encrypts a SOAP message More...

#include <axutil_utils_defines.h>
#include <axis2_defines.h>
#include <axutil_env.h>
#include <axiom_soap.h>
#include <axis2_msg_ctx.h>
#include <oxs_asym_ctx.h>
#include <oxs_xml_encryption.h>
#include <rampart_context.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN axis2_status_t rampart_enc_encrypt_message (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_soap_envelope_t *soap_envelope, axiom_node_t *sec_node)
AXIS2_EXTERN axis2_status_t rampart_enc_dk_encrypt_message (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_soap_envelope_t *soap_envelope, axiom_node_t *sec_node)
AXIS2_EXTERN axis2_status_t rampart_enc_add_key_info (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_soap_envelope_t *soap_envelope, axiom_node_t *sec_node)
AXIS2_EXTERN axis2_status_t rampart_enc_encrypt_signature (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_soap_envelope_t *soap_envelope, axiom_node_t *sec_node)
AXIS2_EXTERN axis2_status_t rampart_enc_encrypt_session_key (const axutil_env_t *env, oxs_key_t *session_key, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_node_t *sec_node, axutil_array_list_t *id_list)


Detailed Description

encrypts a SOAP message


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/oxs__signature_8h.html0000644000076500007650000001114411202454455023141 0ustar shankarshankar Rampart/C: oxs_signature.h File Reference

oxs_signature.h File Reference

Does the XML Signature for OMXMLSecurity. More...

#include <axis2_defines.h>
#include <oxs_ctx.h>
#include <axutil_env.h>
#include <axiom_node.h>
#include <axiom_element.h>
#include <axutil_qname.h>
#include <oxs_sign_ctx.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN axis2_status_t oxs_sig_sign_hmac_sha1 (const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, oxs_buffer_t *input, oxs_buffer_t *output)
AXIS2_EXTERN axis2_status_t oxs_sig_sign_rsa_sha1 (const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, oxs_buffer_t *input, oxs_buffer_t *output)
AXIS2_EXTERN axis2_status_t oxs_sig_sign (const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, oxs_buffer_t *input, oxs_buffer_t *output)
AXIS2_EXTERN axis2_status_t oxs_sig_verify (const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, axis2_char_t *content, axis2_char_t *signature)
AXIS2_EXTERN axis2_status_t oxs_sig_verify_hmac_sha1 (const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, axis2_char_t *content, axis2_char_t *signature)
AXIS2_EXTERN axis2_status_t oxs_sig_verify_rsa_sha1 (const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, axis2_char_t *content, axis2_char_t *signature)


Detailed Description

Does the XML Signature for OMXMLSecurity.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/rampart__policy__validator_8h.html0000644000076500007650000000460111202454456025501 0ustar shankarshankar Rampart/C: rampart_policy_validator.h File Reference

rampart_policy_validator.h File Reference

Verifies whether the message complies with the security policy reqmnt. More...

#include <axutil_utils_defines.h>
#include <axis2_defines.h>
#include <axutil_env.h>
#include <axis2_msg_ctx.h>
#include <rampart_context.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN axis2_status_t rampart_pv_validate_sec_header (const axutil_env_t *env, rampart_context_t *rampart_context, axiom_node_t *sec_node, axis2_msg_ctx_t *msg_ctx)


Detailed Description

Verifies whether the message complies with the security policy reqmnt.


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/oxs__error_8h-source.html0000644000076500007650000002345211202454454023573 0ustar shankarshankar Rampart/C: oxs_error.h Source File

oxs_error.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef OXS_ERROR_H
00019 #define OXS_ERROR_H
00020 
00021 
00031 #include <axis2_defines.h>
00032 #include <axutil_env.h>
00033 
00034 #ifdef __cplusplus
00035 extern "C"
00036 {
00037 #endif
00038 
00039 #if defined( WIN32 ) && (_MSC_VER < 1300)
00040 #define __FUNCTION__ NULL
00041 #endif
00042 
00043     /*Macros for locating thr error*/
00044 #define FUNCTION_NAME __FUNCTION__
00045 #define LINE_NUMBER __LINE__
00046 #define FILE_NAME __FILE__
00047 
00048 #define OXS_ERROR_LOCATION FILE_NAME,LINE_NUMBER,FUNCTION_NAME
00049 
00050     /*Error codes*/
00051 #define OXS_ERROR_DEFAULT               0
00052 #define OXS_ERROR_ENCRYPT_FAILED        1
00053 #define OXS_ERROR_DECRYPT_FAILED        2
00054 #define OXS_ERROR_INVALID_DATA          3
00055 #define OXS_ERROR_INVALID_SIZE          4
00056 #define OXS_ERROR_INVALID_FORMAT        5
00057 #define OXS_ERROR_ELEMENT_FAILED        6
00058 #define OXS_ERROR_UNSUPPORTED_ALGO      7
00059 #define OXS_ERROR_CREATION_FAILED       8
00060 #define OXS_ERROR_INITIALIZATION_FAILED 9
00061 #define OXS_ERROR_DATA_CONV_FAILED     10
00062 #define OXS_ERROR_OPENSSL_FUNC_FAILED  11
00063 #define OXS_ERROR_TRANSFORM_FAILED     12
00064 #define OXS_ERROR_SIGN_FAILED          13
00065 #define OXS_ERROR_SIG_VERIFICATION_FAILED        14
00066 #define OXS_ERROR_KEY_DERIVATION_FAILED 15
00067 
00068     typedef struct _oxs_error_description oxs_error_description, *oxs_error_description_ptr;
00069 
00075     struct _oxs_error_description
00076     {
00077         int code;
00078         const char* message;
00079     };
00080 
00086     AXIS2_EXTERN const char* AXIS2_CALL
00087     oxs_errors_get_msg_by_code(int code);
00088 
00094     AXIS2_EXTERN const char* AXIS2_CALL
00095     oxs_errors_get_msg(unsigned int pos);
00096 
00102     AXIS2_EXTERN int AXIS2_CALL
00103     oxs_errors_get_code(unsigned int pos);
00104 
00114     AXIS2_EXTERN void AXIS2_CALL
00115     oxs_error(const axutil_env_t *env, const char* file, int line, const char* func,
00116               int code, const char* msg,...);
00117 
00119 #ifdef __cplusplus
00120 }
00121 #endif
00122 
00123 #endif                          /* OXS_ERROR_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/openssl__pkcs12__keystore_8h.html0000644000076500007650000002053211202454455025202 0ustar shankarshankar Rampart/C: openssl_pkcs12_keystore.h File Reference

openssl_pkcs12_keystore.h File Reference

Key Store manager for keys that are in pkcs12 format. More...

#include <openssl/rand.h>
#include <openssl/evp.h>
#include <openssl/pem.h>
#include <openssl/bio.h>
#include <openssl_constants.h>
#include <openssl_pkey.h>
#include <axis2_util.h>
#include <openssl/pkcs12.h>
#include <openssl/rsa.h>
#include <openssl/x509.h>
#include <openssl_pkcs12.h>
#include <oxs_error.h>
#include <oxs_x509_cert.h>
#include <openssl_x509.h>

Go to the source code of this file.

Typedefs

typedef struct pkcs12_keystore pkcs12_keystore_t

Functions

AXIS2_EXTERN pkcs12_keystore_t * pkcs12_keystore_create (const axutil_env_t *env, axis2_char_t *filename, axis2_char_t *password)
axutil_array_list_t * pkcs12_keystore_populate_cert_array (const axutil_env_t *env, STACK_OF(X509)*other_certs)
oxs_x509_cert_t * pkcs12_keystore_populate_oxs_cert (const axutil_env_t *env, X509 *cert_in)
AXIS2_EXTERN openssl_pkey_tpkcs12_keystore_get_owner_private_key (pkcs12_keystore_t *keystore, const axutil_env_t *env)
AXIS2_EXTERN oxs_x509_cert_t * pkcs12_keystore_get_owner_certificate (pkcs12_keystore_t *keystore, const axutil_env_t *env)
AXIS2_EXTERN oxs_x509_cert_t * pkcs12_keystore_get_certificate_for_issuer_serial (pkcs12_keystore_t *keystore, const axutil_env_t *env, axis2_char_t *issuer, int serial_number)
AXIS2_EXTERN oxs_x509_cert_t * pkcs12_keystore_get_certificate_for_thumbprint (pkcs12_keystore_t *keystore, const axutil_env_t *env, axis2_char_t *thumbprint)
AXIS2_EXTERN oxs_x509_cert_t * pkcs12_keystore_get_certificate_for_subject_key_id (pkcs12_keystore_t *keystore, const axutil_env_t *env, axis2_char_t *ski)
AXIS2_EXTERN oxs_x509_cert_t * pkcs12_keystore_get_other_certificate (pkcs12_keystore_t *keystore, const axutil_env_t *env)
AXIS2_EXTERN pkcs12_keystore_t * pkcs12_keystore_create_from_buffer (const axutil_env_t *env, axis2_char_t *buffer, axis2_char_t *password, int len)


Detailed Description

Key Store manager for keys that are in pkcs12 format.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__rampart__authn__provider.html0000644000076500007650000003015611202454457026147 0ustar shankarshankar Rampart/C: Authentication Provider

Authentication Provider


Classes

struct  rampart_authn_provider_ops
struct  rampart_authn_provider
typedef struct
rampart_authn_provider_ops 
rampart_authn_provider_ops_t
typedef struct
rampart_authn_provider 
rampart_authn_provider_t
#define RAMPART_AUTHN_PROVIDER_FREE(authn_provider, env)   ((authn_provider)->ops->free (authn_provider, env))
#define RAMPART_AUTHN_PROVIDER_CHECK_PASSWORD(authn_provider, env, msg_ctx, username, password)
#define RAMPART_AUTHN_PROVIDER_CHECK_PASSWORD_DIGEST(authn_provider, env, msg_ctx, username, nonce, nonce_length, digest)

Typedefs

typedef enum
rampart_authn_provider_status 
rampart_authn_provider_status_t

Enumerations

enum  rampart_authn_provider_status {
  RAMPART_AUTHN_PROVIDER_DENIED = 0, RAMPART_AUTHN_PROVIDER_GRANTED, RAMPART_AUTHN_PROVIDER_FOUND, RAMPART_AUTHN_PROVIDER_USER_FOUND,
  RAMPART_AUTHN_PROVIDER_USER_NOT_FOUND, RAMPART_AUTHN_PROVIDER_GENERAL_ERROR
}

Variables

rampart_authn_provider_status_t(* rampart_authn_provider_ops::rampart_authn_provider_check_password_digest )(rampart_authn_provider_t *authn_provider, const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, const axis2_char_t *username, const axis2_char_t *nonce, const axis2_char_t *created, const char *digest)
axis2_status_t(* rampart_authn_provider_ops::free )(rampart_authn_provider_t *authn_provider, const axutil_env_t *env)
axutil_param_t * rampart_authn_provider::param

Define Documentation

#define RAMPART_AUTHN_PROVIDER_CHECK_PASSWORD ( authn_provider,
env,
msg_ctx,
username,
password   ) 

Value:

((authn_provider)->ops->rampart_authn_provider_check_password( \
            authn_provider, env, msg_ctx, username, password))

#define RAMPART_AUTHN_PROVIDER_CHECK_PASSWORD_DIGEST ( authn_provider,
env,
msg_ctx,
username,
nonce,
nonce_length,
digest   ) 

Value:

((authn_provider)->ops->rampart_authn_provider_check_password_digest( \
            authn_provider, env, msg_ctx, username, nonce, nonce_length, digest))


Typedef Documentation

typedef struct rampart_authn_provider_ops rampart_authn_provider_ops_t

Struct to authenticate username/password pair


Variable Documentation

axis2_status_t( * rampart_authn_provider_ops::free)(rampart_authn_provider_t *authn_provider, const axutil_env_t *env) [inherited]

The free function to free all resources allocated

Parameters:
authn_provider the authentication provider struct
env pointer to environment struct
Returns:
AXIS2_SUCCESS on success. AXIS2_FAILURE otherwise.

rampart_authn_provider_status_t( * rampart_authn_provider_ops::rampart_authn_provider_check_password_digest)(rampart_authn_provider_t *authn_provider, const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, const axis2_char_t *username, const axis2_char_t *nonce, const axis2_char_t *created, const char *digest) [inherited]

Check digested passwords. If the UseranmeToken is in password digest form this function will be called.

Parameters:
authn_provider the authentication provider struct
env pointer to environment struct
msg_ctx message context
username the username
nonce the nonce or the random value of the username token
created the created value of the username token
digest the digest value of the SHA-1(password+created+nonce)
Returns:
the status of the check


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/secconv__security__context__token_8h.html0000644000076500007650000012665511202454456027117 0ustar shankarshankar Rampart/C: secconv_security_context_token.h File Reference

secconv_security_context_token.h File Reference

security context token More...

#include <stdio.h>
#include <stdlib.h>
#include <axutil_utils.h>
#include <axutil_string.h>
#include <oxs_buffer.h>

Go to the source code of this file.

Typedefs

typedef struct
security_context_token_t 
security_context_token_t

Functions

AXIS2_EXTERN
security_context_token_t * 
security_context_token_create (const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t security_context_token_free (security_context_token_t *sct, const axutil_env_t *env)
AXIS2_EXTERN oxs_buffer_tsecurity_context_token_get_secret (security_context_token_t *sct, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * security_context_token_get_global_identifier (security_context_token_t *sct, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * security_context_token_get_local_identifier (security_context_token_t *sct, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t security_context_token_set_secret (security_context_token_t *sct, const axutil_env_t *env, oxs_buffer_t *buffer)
AXIS2_EXTERN axis2_status_t security_context_token_set_global_identifier (security_context_token_t *sct, const axutil_env_t *env, axis2_char_t *global_id)
AXIS2_EXTERN axis2_status_t security_context_token_set_local_identifier (security_context_token_t *sct, const axutil_env_t *env, axis2_char_t *local_id)
AXIS2_EXTERN axis2_status_t security_context_token_set_is_sc10 (security_context_token_t *sct, const axutil_env_t *env, axis2_bool_t is_sc10)
AXIS2_EXTERN axiom_node_t * security_context_token_get_requested_proof_token (security_context_token_t *sct, const axutil_env_t *env)
AXIS2_EXTERN axiom_node_t * security_context_token_get_attached_reference (security_context_token_t *sct, const axutil_env_t *env)
AXIS2_EXTERN axiom_node_t * security_context_token_get_unattached_reference (security_context_token_t *sct, const axutil_env_t *env)
AXIS2_EXTERN axiom_node_t * security_context_token_get_token (security_context_token_t *sct, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t security_context_token_set_requested_proof_token (security_context_token_t *sct, const axutil_env_t *env, axiom_node_t *node)
AXIS2_EXTERN axis2_status_t security_context_token_set_attached_reference (security_context_token_t *sct, const axutil_env_t *env, axiom_node_t *node)
AXIS2_EXTERN axis2_status_t security_context_token_set_unattached_reference (security_context_token_t *sct, const axutil_env_t *env, axiom_node_t *node)
AXIS2_EXTERN axis2_status_t security_context_token_set_token (security_context_token_t *sct, const axutil_env_t *env, axiom_node_t *node)
AXIS2_EXTERN axis2_status_t security_context_token_increment_ref (security_context_token_t *sct, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * security_context_token_serialize (security_context_token_t *sct, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t security_context_token_deserialize (security_context_token_t *sct, const axutil_env_t *env, axis2_char_t *serialised_node)


Detailed Description

security context token


Function Documentation

AXIS2_EXTERN security_context_token_t* security_context_token_create ( const axutil_env_t *  env  ) 

Creates security context token

Parameters:
env Pointer to environment struct
Returns:
Security context token if success. NULL otherwise.

AXIS2_EXTERN axis2_status_t security_context_token_deserialize ( security_context_token_t *  sct,
const axutil_env_t *  env,
axis2_char_t *  serialised_node 
)

Deserializes the security context token.

Parameters:
sct Pointer to secuirty context token struct
env Pointer to environment struct
serialised_node serialised string representation of security context token
Returns:
serialized security context token if success. NULL otherwise

AXIS2_EXTERN axis2_status_t security_context_token_free ( security_context_token_t *  sct,
const axutil_env_t *  env 
)

Free security context token

Parameters:
sct Pointer to secuirty context token struct
env Pointer to environment struct
Returns:
AXIS2_SUCCESS if success. AXIS2_FAILURE otherwise.

AXIS2_EXTERN axiom_node_t* security_context_token_get_attached_reference ( security_context_token_t *  sct,
const axutil_env_t *  env 
)

Get local id of security context token as axiom node. This id will be used when token is included in the message

Parameters:
sct Pointer to secuirty context token struct
env Pointer to environment struct
Returns:
valid axiom node if success. NULL otherwise.

AXIS2_EXTERN axis2_char_t* security_context_token_get_global_identifier ( security_context_token_t *  sct,
const axutil_env_t *  env 
)

Get global id of security context token. This id will be used when token is not included in the message

Parameters:
sct Pointer to secuirty context token struct
env Pointer to environment struct
Returns:
global id if success. NULL otherwise.

AXIS2_EXTERN axis2_char_t* security_context_token_get_local_identifier ( security_context_token_t *  sct,
const axutil_env_t *  env 
)

Get local id of security context token. This id will be used when token is included in the message

Parameters:
sct Pointer to secuirty context token struct
env Pointer to environment struct
Returns:
local id if success. NULL otherwise.

AXIS2_EXTERN axiom_node_t* security_context_token_get_requested_proof_token ( security_context_token_t *  sct,
const axutil_env_t *  env 
)

Get shared secret as axiom_node. Shared secret will be included inside 'RequestedProofToken' node. This is acording to WS-Trust specification

Parameters:
sct Pointer to secuirty context token struct
env Pointer to environment struct
Returns:
valid axiom_node if success. NULL otherwise.

AXIS2_EXTERN oxs_buffer_t* security_context_token_get_secret ( security_context_token_t *  sct,
const axutil_env_t *  env 
)

Get shared secret from security context token. Callers should not free returned buffer

Parameters:
sct Pointer to secuirty context token struct
env Pointer to environment struct
Returns:
shared secret if success. NULL otherwise.

AXIS2_EXTERN axiom_node_t* security_context_token_get_token ( security_context_token_t *  sct,
const axutil_env_t *  env 
)

Get axiom node representation of security context token. This will be included in the message if the token needs to be sent in the message

Parameters:
sct Pointer to secuirty context token struct
env Pointer to environment struct
Returns:
valid axiom node if success. NULL otherwise.

AXIS2_EXTERN axiom_node_t* security_context_token_get_unattached_reference ( security_context_token_t *  sct,
const axutil_env_t *  env 
)

Get global id of security context token as axiom node. This id will be used when token is not included in the message

Parameters:
sct Pointer to secuirty context token struct
env Pointer to environment struct
Returns:
valid axiom node if success. NULL otherwise.

AXIS2_EXTERN axis2_status_t security_context_token_increment_ref ( security_context_token_t *  sct,
const axutil_env_t *  env 
)

Increment the reference of security context token

Parameters:
sct Pointer to secuirty context token struct
env Pointer to environment struct
Returns:
AXIS2_SUCCESS if success. AXIS2_FAILURE otherwise.

AXIS2_EXTERN axis2_char_t* security_context_token_serialize ( security_context_token_t *  sct,
const axutil_env_t *  env 
)

Serializes the security context token. Caller should take the ownership of returned value

Parameters:
sct Pointer to secuirty context token struct
env Pointer to environment struct
Returns:
serialized security context token if success. NULL otherwise

AXIS2_EXTERN axis2_status_t security_context_token_set_attached_reference ( security_context_token_t *  sct,
const axutil_env_t *  env,
axiom_node_t *  node 
)

Set local identifier of security context token from attached reference node.

Parameters:
sct Pointer to secuirty context token struct
env Pointer to environment struct
node Pointer to attached reference axiom node
Returns:
AXIS2_SUCCESS if success. AXIS2_FAILURE otherwise.

AXIS2_EXTERN axis2_status_t security_context_token_set_global_identifier ( security_context_token_t *  sct,
const axutil_env_t *  env,
axis2_char_t *  global_id 
)

Set global identifier of security context token. After this method is called, ownership of global_id will be with security context token. Users should not free it.

Parameters:
sct Pointer to secuirty context token struct
env Pointer to environment struct
global_id Global identifier of security context token
Returns:
AXIS2_SUCCESS if success. AXIS2_FAILURE otherwise.

AXIS2_EXTERN axis2_status_t security_context_token_set_is_sc10 ( security_context_token_t *  sct,
const axutil_env_t *  env,
axis2_bool_t  is_sc10 
)

Set WS-SecureConversation version

Parameters:
sct Pointer to secuirty context token struct
env Pointer to environment struct
is_sc10 Boolean denoting whether we need security context token as in WS-SecConv 1.0
Returns:
AXIS2_SUCCESS if success. AXIS2_FAILURE otherwise.

AXIS2_EXTERN axis2_status_t security_context_token_set_local_identifier ( security_context_token_t *  sct,
const axutil_env_t *  env,
axis2_char_t *  local_id 
)

Set local identifier of security context token. After this method is called, ownership of local_id will be with security context token. Users should not free it.

Parameters:
sct Pointer to secuirty context token struct
env Pointer to environment struct
local_id Local identifier of security context token
Returns:
AXIS2_SUCCESS if success. AXIS2_FAILURE otherwise.

AXIS2_EXTERN axis2_status_t security_context_token_set_requested_proof_token ( security_context_token_t *  sct,
const axutil_env_t *  env,
axiom_node_t *  node 
)

Set shared secret of security context token from proof token. This proof token will be given by STS.

Parameters:
sct Pointer to secuirty context token struct
env Pointer to environment struct
node Pointer to proof token axiom node
Returns:
AXIS2_SUCCESS if success. AXIS2_FAILURE otherwise.

AXIS2_EXTERN axis2_status_t security_context_token_set_secret ( security_context_token_t *  sct,
const axutil_env_t *  env,
oxs_buffer_t buffer 
)

Set shared secret of security context token. After this method is called, ownership of the buffer will be with security context token. Users should not free it.

Parameters:
sct Pointer to secuirty context token struct
env Pointer to environment struct
buffer Pointer to shared secret
Returns:
AXIS2_SUCCESS if success. AXIS2_FAILURE otherwise.

AXIS2_EXTERN axis2_status_t security_context_token_set_token ( security_context_token_t *  sct,
const axutil_env_t *  env,
axiom_node_t *  node 
)

Set axiom representation of security context token

Parameters:
sct Pointer to secuirty context token struct
env Pointer to environment struct
node Pointer to security context token axiom node
Returns:
AXIS2_SUCCESS if success. AXIS2_FAILURE otherwise.

AXIS2_EXTERN axis2_status_t security_context_token_set_unattached_reference ( security_context_token_t *  sct,
const axutil_env_t *  env,
axiom_node_t *  node 
)

Set global identifier of security context token from unattached reference node.

Parameters:
sct Pointer to secuirty context token struct
env Pointer to environment struct
node Pointer to unattached reference axiom node
Returns:
AXIS2_SUCCESS if success. AXIS2_FAILURE otherwise.


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/axis2__key__type_8h-source.html0000644000076500007650000001136311202454454024645 0ustar shankarshankar Rampart/C: axis2_key_type.h Source File

axis2_key_type.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef AXIS2_KEY_TYPE_H
00019 #define AXIS2_KEY_TYPE_H
00020 
00021 
00027 #include <axis2_defines.h>
00028 #include <axutil_env.h>
00029 
00030 #ifdef __cplusplus
00031 extern "C"
00032 {
00033 #endif
00034 
00040     typedef enum
00041     {
00042         AXIS2_KEY_TYPE_UNKNOWN = 0,
00043         AXIS2_KEY_TYPE_PEM,
00044         AXIS2_KEY_TYPE_CERT,
00045         AXIS2_KEY_TYPE_DER,
00046                 AXIS2_KEY_TYPE_OTHER
00047     }axis2_key_type_t;
00048 
00049 
00050 
00052 #ifdef __cplusplus
00053 }
00054 #endif
00055 
00056 #endif

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__oxs__xml__key__info__builder.html0000644000076500007650000000644611202454456026754 0ustar shankarshankar Rampart/C: XML Eky Information Builder

XML Eky Information Builder
[OMXMLSecurity]


Enumerations

enum  oxs_key_info_build_pattern_t { OXS_KIBP_UNKNOWN = 0, OXS_KIBP_X509DATA_X509CERTIFICATE, OXS_KIBP_X509DATA_ISSUER_SERIAL }

Functions

AXIS2_EXTERN axis2_status_t oxs_xml_key_info_build (const axutil_env_t *env, axiom_node_t *parent, oxs_x509_cert_t *cert, oxs_key_info_build_pattern_t pattern)
AXIS2_EXTERN axis2_status_t oxs_xml_key_info_build_x509_data_x509_certificate (const axutil_env_t *env, axiom_node_t *parent, oxs_x509_cert_t *cert)
AXIS2_EXTERN axis2_status_t oxs_xml_key_info_build_x509_data_issuer_serial (const axutil_env_t *env, axiom_node_t *parent, oxs_x509_cert_t *cert)

Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/openssl__pkcs12_8h.html0000644000076500007650000001013311202454455023112 0ustar shankarshankar Rampart/C: openssl_pkcs12.h File Reference

openssl_pkcs12.h File Reference

Functions related to keys that are in pkcs12 format. More...

#include <openssl/rand.h>
#include <openssl/evp.h>
#include <openssl/pem.h>
#include <openssl/bio.h>
#include <openssl_constants.h>
#include <openssl_pkey.h>
#include <axis2_util.h>
#include <openssl/pkcs12.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN axis2_status_t openssl_pkcs12_load (const axutil_env_t *env, axis2_char_t *filename, PKCS12 **p12)
AXIS2_EXTERN axis2_status_t openssl_pkcs12_load_from_buffer (const axutil_env_t *env, axis2_char_t *buffer, PKCS12 **p12, int len)
AXIS2_EXTERN axis2_status_t openssl_pkcs12_parse (const axutil_env_t *env, axis2_char_t *password, PKCS12 *p12, EVP_PKEY **prvkey, X509 **cert, STACK_OF(X509)**ca)
AXIS2_EXTERN axis2_status_t openssl_pkcs12_free (const axutil_env_t *env, PKCS12 *p12)


Detailed Description

Functions related to keys that are in pkcs12 format.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/oxs__c14n_8h-source.html0000644000076500007650000001763511202454454023215 0ustar shankarshankar Rampart/C: oxs_c14n.h Source File

oxs_c14n.h

Go to the documentation of this file.
00001 /*
00002  * Copyright 2004,2005 The Apache Software Foundation.
00003  *
00004  * Licensed under the Apache License, Version 2.0 (the "License");
00005  * you may not use this file except in compliance with the License.
00006  * You may obtain a copy of the License at
00007  *
00008  *      http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  * Unless required by applicable law or agreed to in writing, software
00011  * distributed under the License is distributed on an "AS IS" BASIS,
00012  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  * See the License for the specific language governing permissions and
00014  * limitations under the License.
00015  */
00016 
00017 #ifndef OXS_C14N_H
00018 #define OXS_C14N_H
00019 
00031 #include <axis2_const.h>
00032 #include <axutil_error.h>
00033 #include <axutil_utils_defines.h>
00034 #include <axutil_utils.h>
00035 #include <axutil_env.h>
00036 #include <axutil_string.h>
00037 #include <axiom_document.h>
00038 #include <axutil_array_list.h>
00039 #include <axutil_stream.h>
00040 
00041 
00042 #ifdef __cplusplus
00043 extern "C"
00044 {
00045 #endif
00046     
00060     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00061     oxs_c14n_apply_stream_algo(
00062         const axutil_env_t *env,
00063         const axiom_document_t *doc,
00064         axutil_stream_t *stream,
00065         const axutil_array_list_t *ns_prefixes,
00066         const axiom_node_t *node,
00067         const axis2_char_t* algo
00068     );
00069 
00070 
00085     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00086     oxs_c14n_apply_algo(
00087         const axutil_env_t *env,
00088         const axiom_document_t *doc,
00089         axis2_char_t **outbuf,
00090         const axutil_array_list_t *ns_prefixes,
00091         const axiom_node_t *node,
00092         const axis2_char_t *algo
00093     );
00094 
00095 
00112     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00113     oxs_c14n_apply_stream(
00114         const axutil_env_t *env,
00115         const axiom_document_t *doc,
00116         axis2_bool_t comments,
00117         axutil_stream_t *stream,
00118         const axis2_bool_t exclusive,
00119         const axutil_array_list_t *ns_prefixes,
00120         const axiom_node_t *node
00121     );
00122 
00123 
00141     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00142     oxs_c14n_apply (
00143         const axutil_env_t *env,
00144         const axiom_document_t *doc,
00145         const axis2_bool_t comments,
00146         axis2_char_t **outbuf,
00147         const axis2_bool_t exclusive,
00148         const axutil_array_list_t *ns_prefixes,
00149         const axiom_node_t *node
00150     );
00151 #ifdef __cplusplus
00152 }
00154 #endif
00155 #endif  /* OXS_C14N_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__openssl__util.html0000644000076500007650000000557011202454456023752 0ustar shankarshankar Rampart/C: OpenSSL Utility

OpenSSL Utility
[OpenSSL wrapper]


Functions

AXIS2_EXTERN axis2_status_t openssl_generate_random_data (const axutil_env_t *env, oxs_buffer_t *buffer, int size)
AXIS2_EXTERN axis2_status_t openssl_populate_cipher_property (const axutil_env_t *env, openssl_cipher_property_t *cprop)
AXIS2_EXTERN EVP_CIPHER * openssl_get_evp_cipher_by_name (const axutil_env_t *env, axis2_char_t *cipher_name)

Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/oxs__buffer_8h-source.html0000644000076500007650000003244311202454454023713 0ustar shankarshankar Rampart/C: oxs_buffer.h Source File

oxs_buffer.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef OXS_BUFFER_H
00019 #define OXS_BUFFER_H
00020 
00021 
00027 #include <axis2_defines.h>
00028 #include <axutil_env.h>
00029 #include <axis2_util.h>
00030 #include <oxs_axiom.h>
00031 #include <oxs_error.h>
00032 #include <oxs_constants.h>
00033 #include <stdio.h>
00034 
00035 #ifdef __cplusplus
00036 extern "C"
00037 {
00038 #endif
00039 
00045 #define OXS_BUFFER_INITIAL_SIZE 1024
00046 
00052     typedef enum {
00053         oxs_alloc_mode_exact = 0,
00054         oxs_alloc_mode_double
00055     } oxs_AllocMode;
00056 
00057 
00059     typedef struct oxs_buffer oxs_buffer_t;
00060 
00067     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00068     oxs_buffer_free(
00069         oxs_buffer_t *buffer,
00070         const axutil_env_t *env
00071     );
00079     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00080     oxs_buffer_remove_head(
00081         oxs_buffer_t *buffer,
00082         const axutil_env_t *env,
00083         int size
00084     );
00092     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00093     oxs_buffer_remove_tail(
00094         oxs_buffer_t *buffer,
00095         const axutil_env_t *env,
00096         int size
00097     );
00106     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00107     oxs_buffer_populate(
00108         oxs_buffer_t *buffer,
00109         const axutil_env_t *env,
00110         unsigned char *data,
00111         int size
00112     );
00121     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00122     oxs_buffer_append(
00123         oxs_buffer_t *buffer,
00124         const axutil_env_t *env,
00125         unsigned char *data,
00126         int size
00127     );
00136     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00137     oxs_buffer_prepend(
00138         oxs_buffer_t *buffer,
00139         const axutil_env_t *env,
00140         unsigned char *data,
00141         int size
00142     );
00150     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00151     oxs_buffer_read_file(
00152         oxs_buffer_t *buffer,
00153         const axutil_env_t *env,
00154         const axis2_char_t *filename
00155     );
00163     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00164     oxs_buffer_set_size(
00165         oxs_buffer_t *buffer,
00166         const axutil_env_t *env,
00167         int size
00168     );
00176     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00177     oxs_buffer_set_max_size(
00178         oxs_buffer_t *buffer,
00179         const axutil_env_t *env,
00180         int size
00181     );
00188     AXIS2_EXTERN unsigned char* AXIS2_CALL
00189     oxs_buffer_get_data(
00190         oxs_buffer_t *buffer,
00191         const axutil_env_t *env
00192     );
00199     AXIS2_EXTERN int AXIS2_CALL
00200     oxs_buffer_get_size(
00201         oxs_buffer_t *buffer,
00202         const axutil_env_t *env
00203     );
00210     AXIS2_EXTERN int AXIS2_CALL
00211     oxs_buffer_get_max_size(
00212         oxs_buffer_t *buffer,
00213         const axutil_env_t *env
00214     );
00215 
00216     AXIS2_EXTERN oxs_buffer_t *AXIS2_CALL
00217     oxs_buffer_dup(oxs_buffer_t *buffer, const axutil_env_t *env);
00218 
00219     AXIS2_EXTERN oxs_buffer_t *AXIS2_CALL
00220     oxs_buffer_create(const axutil_env_t *env);
00221 
00222 
00224 #ifdef __cplusplus
00225 }
00226 #endif
00227 
00228 #endif                          /* OXS_BUFFER_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/trust__constants_8h.html0000644000076500007650000013257511202454456023541 0ustar shankarshankar Rampart/C: trust_constants.h File Reference

trust_constants.h File Reference

Holds constants for trust implementation. More...

#include <axutil_utils.h>

Go to the source code of this file.

Defines

#define TRUST_RST_CONTEXT   "Context"
#define TRUST_TOKEN_TYPE   "TokenType"
#define TRUST_REQUEST_TYPE   "RequestType"
#define TRUST_APPLIES_TO   "AppliesTo"
#define TRUST_CLAIMS   "Claims"
#define TRUST_CLAIMS_DIALECT   "Dialect"
#define TRUST_ENTROPY   "Entropy"
#define TRUST_BINARY_SECRET   "BinarySecret"
#define TRUST_LIFE_TIME   "LifeTime"
#define TRUST_LIFE_TIME_CREATED   "Created"
#define TRUST_LIFE_TIME_EXPIRES   "Expires"
#define TRUST_REQUEST_SECURITY_TOKEN   "RequestSecurityToken"
#define TRUST_REQUESTED_SECURITY_TOKEN   "RequestedSecurityToken"
#define TRUST_REQUEST_SECURITY_TOKEN_RESPONSE   "RequestSecurityTokenResponse"
#define TRUST_REQUESTED_PROOF_TOKEN   "RequestedProofToken"
#define TRUST_REQUEST_SECURITY_TOKEN_RESPONSE_COLLECTION   "RequestSecurityTokenResponseCollection"
#define TRUST_REQUESTED_TOKEN_CANCELED   "RequestedTokenCancelled"
#define TRUST_COMPUTED_KEY   "ComputedKey"
#define TRUST_REQUESTED_ATTACHED_REFERENCE   "RequestedAttachedReference"
#define TRUST_REQUESTED_UNATTACHED_REFERENCE   "RequestedUnattachedReference"
#define TRUST_SECURITY_TOKEN_REFERENCE   "SecurityTokenReference"
#define TRUST_ENCRYPTED_DATA   "EncryptedData"
#define TRUST_REQUESTED_TOKEN_CANCELED   "RequestedTokenCancelled"
#define TRUST_CANCEL_TARGET   "CancelTarget"
#define TRUST_URI   "URI"
#define TRUST_EPR   "EndpointReference"
#define TRUST_EPR_ADDRESS   "Address"
#define TRUST_STR_REFERENCE   "Reference"
#define TRUST_RENEW_TARGET   "RenewTarget"
#define TRUST_ALLOW_POSTDATING   "AllowPostdating"
#define TRUST_RENEWING   "Renewing"
#define TRUST_RENEW_ALLOW_ATTR   "Allow"
#define TRUST_RENEW_OK_ATTR   "OK"
#define TRUST_VALIDATION_STATUS   "Status"
#define TRUST_VALIDATION_CODE   "Code"
#define TRUST_VALIDATION_REASON   "Reason"
#define TRUST_CANCEL_TARGET   "CancelTarget"
#define ATTR_TYPE   "Type"
#define TRUST_BIN_SEC_TYPE_NONCE   "/Nonce"
#define TRUST_REQ_TYPE_ISSUE   "/Issue"
#define TRUST_REQ_TYPE_VALIDATE   "/Validate"
#define TRUST_REQ_TYPE_RENEW   "/Renew"
#define TRUST_REQ_TYPE_CANCEL   "/Cancel"
#define TRUST_RST_ACTION_ISSUE   "/RST/Issue"
#define TRUST_RST_ACTION_VALIDATE   "/RST/Validate"
#define TRUST_RST_ACTION_RENEW   "/RST/Renew"
#define TRUST_RST_ACTION_CANCEL   "/RST/Cancel"
#define TRUST_RST_ACTION_SCT   "/RST/SCT"
#define TRUST_RST_ACTION_CANCEL_SCT   "/RST/SCT/Cancel"
#define TRUST_KEY_TYPE_SYMM_KEY   "/SymmetricKey"
#define TRUST_KEY_TYPE_PUBLIC_KEY   "/PublicKey"
#define TRUST_KEY_TYPE_BEARER   "/Bearer"
#define TRUST_AUTHENTICATION_TYPE   "AuthenticationType"
#define TRUST_KEY_TYPE   "KeyType"
#define TRUST_KEY_SIZE   "KeySize"
#define TRUST_SIGNATURE_ALGO   "SignatureAlgorithm"
#define TRUST_ENCRYPTION_ALGO   "EncryptionAlgorithm"
#define TRUST_CANONICAL_ALGO   "CanonicalizationAlgorithm"
#define TRUST_COMPUTED_KEY_ALGO   "ComputedKeyAlgorithm"
#define TRUST_DESIRED_ENCRYPTION   "Encryption"
#define TRUST_PROOF_ENCRYPTION   "ProofEncryption"
#define TRUST_USE_KEY   "UseKey"
#define TRUST_SIGN_WITH   "SignWith"
#define TRUST_ENCRYPT_WITH   "EncryptWith"
#define TRUST_ATTR_USE_KEY_SIG   "Sig"
#define TRUST_DEFAULT_KEY_SIZE   256
#define TRUST_S11   "S11"
#define TRUST_S11_XMLNS   "http://schemas.xmlsoap.org/soap/envelope/"
#define TRUST_S12   "S12"
#define TRUST_S12_XMLNS   "http://www.w3.org/2003/05/soap-envelope"
#define TRUST_WSU   "wsu"
#define TRUST_WSU_XMLNS   "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
#define TRUST_WSSE   "wsse"
#define TRUST_WSSE_XMLNS   "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
#define TRUST_WST   "wst"
#define TRUST_DS   "ds"
#define TRUST_DS_XMLNS   "http://www.w3.org/2000/09/xmldsig#"
#define TRUST_XENC   "xenc"
#define TRUST_XENC_XMLNS   "http://www.w3.org/2001/04/xmlenc#"
#define TRUST_WSP   "wsp"
#define TRUST_WSP_XMLNS   "http://schemas.xmlsoap.org/ws/2004/09/policy"
#define TRUST_WSA   "wsa"
#define TRUST_WSA_XMLNS   "http://schemas.xmlsoap.org/ws/2004/08/addressing"
#define TRUST_XS   "xs"
#define TRUST_XS_XMLNS   "http://www.w3.org/2001/XMLSchema"
#define SECCONV_200502_REQUEST_ISSUE_ACTION   "http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT"
#define SECCONV_200502_REPLY_ISSUE_ACTION   "http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/SCT"
#define SECCONV_200502_REQUEST_AMEND_ACTION   "http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT/Amend"
#define SECCONV_200502_REPLY_AMEND_ACTION   "http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/SCT/Amend"
#define SECCONV_200502_REQUEST_RENEW_ACTION   "http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT/Renew"
#define SECCONV_200502_REPLY_RENEW_ACTION   "http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/SCT/Renew"
#define SECCONV_200502_REQUEST_CANCEL_ACTION   "http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT/Cancel"
#define SECCONV_200502_REPLY_CANCEL_ACTION   "http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/SCT/Cancel"
#define SECCONV_200512_REQUEST_ISSUE_ACTION   "http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/SCT"
#define SECCONV_200512_REPLY_ISSUE_ACTION   "http://docs.oasis-open.org/ws-sx/ws-trust/200512/RSTR/SCT"
#define SECCONV_200512_REQUEST_AMEND_ACTION   "http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/SCT/Amend"
#define SECCONV_200512_REPLY_AMEND_ACTION   "http://docs.oasis-open.org/ws-sx/ws-trust/200512/RSTR/SCT/Amend"
#define SECCONV_200512_REQUEST_RENEW_ACTION   "http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/SCT/Renew"
#define SECCONV_200512_REPLY_RENEW_ACTION   "http://docs.oasis-open.org/ws-sx/ws-trust/200512/RSTR/SCT/Renew"
#define SECCONV_200512_REQUEST_CANCEL_ACTION   "http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/SCT/Cancel"
#define SECCONV_200512_REPLY_CANCEL_ACTION   "http://docs.oasis-open.org/ws-sx/ws-trust/200512/RSTR/SCT/Cancel"
#define SECCONV_GLOBAL_ID_PREFIX   "urn:uuid:"
#define SECCONV_LOCAL_ID_PREFIX   "sctId"
#define TRUST_COMPUTED_KEY_PSHA1   "http://schemas.xmlsoap.org/ws/2005/02/trust/CK/PSHA1"
#define TRUST_COMPUTED_KEY_PSHA1_05_12   "http://docs.oasis-open.org/ws-sx/ws-trust/200512/CK/PSHA1"
#define TRUST_VERSION_INVALID   0
#define TRUST_VERSION_05_02   1
#define TRUST_VERSION_05_12   2
#define SECCONV_ACTION_INVALID   0
#define SECCONV_ACTION_ISSUE   1
#define SECCONV_ACTION_AMEND   2
#define SECCONV_ACTION_RENEW   3
#define SECCONV_ACTION_CANCEL   4
#define TRUST_WST_XMLNS_05_12   "http://docs.oasis-open.org/ws-sx/ws-trust/200512"
#define TRUST_WST_XMLNS_05_02   "http://schemas.xmlsoap.org/ws/2005/02/trust"


Detailed Description

Holds constants for trust implementation.


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__rampart__replay__detector.html0000644000076500007650000001452111202454457026301 0ustar shankarshankar Rampart/C: Replay Detector

Replay Detector
[Rampart Utilities]


Classes

struct  rampart_replay_detector_ops
struct  rampart_replay_detector

Defines

#define RAMPART_REPLAY_DETECTOR_IS_REPLAYED(replay_detector, env, msg_ctx, rampart_context)   ((replay_detector)->ops->is_replayed(replay_detector, env, msg_ctx, rampart_context))
#define RAMPART_REPLAY_DETECTOR_FREE(replay_detector, env)   ((replay_detector)->ops->free(replay_detector, env))

Typedefs

typedef struct
rampart_replay_detector_ops 
rampart_replay_detector_ops_t
typedef struct
rampart_replay_detector 
rampart_replay_detector_t

Functions

AXIS2_EXTERN axis2_status_t rampart_replay_detector_default (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, void *user_params)

Function Documentation

AXIS2_EXTERN axis2_status_t rampart_replay_detector_default ( const axutil_env_t *  env,
axis2_msg_ctx_t *  msg_ctx,
rampart_context_t *  rampart_context,
void *  user_params 
)

A linked list based implementation for replay detection. This doesnt require addressing headers to be present. If the user doesn't give any replay detection function, then this will be used.

Parameters:
env pointer to environment struct,Must not be NULL.
msg_ctx message context structure
rampart_context rampart context structure
user_params parameters given by user. (Not used in this method)
Returns:
status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/openssl__util_8h-source.html0000644000076500007650000001332111202454454024263 0ustar shankarshankar Rampart/C: openssl_util.h Source File

openssl_util.h

Go to the documentation of this file.
00001 /*
00002  *   Copyright 2003-2004 The Apache Software Foundation.
00003  *
00004  *   Licensed under the Apache License, Version 2.0 (the "License");
00005  *   you may not use this file except in compliance with the License.
00006  *   You may obtain a copy of the License at
00007  *
00008  *       http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  *   Unless required by applicable law or agreed to in writing, software
00011  *   distributed under the License is distributed on an "AS IS" BASIS,
00012  *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  *   See the License for the specific language governing permissions and
00014  *   limitations under the License.
00015  */
00016 
00017 #include<openssl/evp.h>
00018 #include<oxs_buffer.h>
00019 #include<openssl_cipher_property.h>
00020 
00025 #ifndef OPENSSL_UTIL_H
00026 #define OPENSSL_UTIL_H
00027 
00028 #ifdef __cplusplus
00029 extern "C" {
00030 #endif
00031 
00037     /*Generate a random sgtring.*/
00038     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00039     openssl_generate_random_data(const axutil_env_t *env, oxs_buffer_t *buffer, int size);
00040 
00041     /*Get the cipher property for a given cipher name
00042       @see openssl_cipher_property.h*/
00043     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00044     openssl_populate_cipher_property(const axutil_env_t *env, openssl_cipher_property_t *cprop);
00045 
00046     /*Get a cipher for a given name*/
00047     AXIS2_EXTERN EVP_CIPHER*  AXIS2_CALL
00048     openssl_get_evp_cipher_by_name(const axutil_env_t *env, axis2_char_t *cipher_name);
00049 
00050 
00051     /* @} */
00052 #ifdef __cplusplus
00053 }
00054 #endif
00055 
00056 #endif    /* OPENSSL_UTIL_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__rampart__handler__util.html0000644000076500007650000002441111202454457025565 0ustar shankarshankar Rampart/C: Handler Utilities

Handler Utilities
[Rampart Utilities]


Functions

AXIS2_EXTERN axiom_node_t * rampart_get_security_header (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axiom_soap_header_t *soap_header)
AXIS2_EXTERN void rampart_create_fault_envelope (const axutil_env_t *env, const axis2_char_t *sub_code, const axis2_char_t *reason_text, const axis2_char_t *detail_node_text, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN void * rampart_get_rampart_configuration (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axis2_char_t *param_name)
AXIS2_EXTERN axis2_bool_t rampart_is_rampart_engaged (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx)

Function Documentation

AXIS2_EXTERN void rampart_create_fault_envelope ( const axutil_env_t *  env,
const axis2_char_t *  sub_code,
const axis2_char_t *  reason_text,
const axis2_char_t *  detail_node_text,
axis2_msg_ctx_t *  msg_ctx 
)

Creates a SOAP fault based on params described below and store in msg_ctx

Parameters:
env pointer to environment struct
sub_code the text of the Subcode element of a SOAP fault message
reason_text the text in soapenv:Reason element
detail_node_text the text in the soapenv:Detail element
msg_ctx the msg_ctx
Returns:
void

AXIS2_EXTERN void* rampart_get_rampart_configuration ( const axutil_env_t *  env,
axis2_msg_ctx_t *  msg_ctx,
axis2_char_t *  param_name 
)

Get rampart configurations from the message context

Parameters:
env pointer to environment struct
msg_ctx message context
param_name name of the parameter of the configuration
Returns:
the loaded configuration params

AXIS2_EXTERN axiom_node_t* rampart_get_security_header ( const axutil_env_t *  env,
axis2_msg_ctx_t *  msg_ctx,
axiom_soap_header_t *  soap_header 
)

Get the security header from the header block

Parameters:
env pointer to environment struct
msg_ctx message context
soap_header header block
Returns:
security soap header node

AXIS2_EXTERN axis2_bool_t rampart_is_rampart_engaged ( const axutil_env_t *  env,
axis2_msg_ctx_t *  msg_ctx 
)

Check wether rampart is engaged or not

Parameters:
env pointer to environment struct
msg_ctx message context
Returns:
if engaged returns AXIS2_TRUE, else returns AXIS2_FALSE


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/globals_type.html0000644000076500007650000000527711202454457022211 0ustar shankarshankar Rampart/C: Class Members
 


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/rampart__saml__token_8h-source.html0000644000076500007650000002563611202454455025601 0ustar shankarshankar Rampart/C: rampart_saml_token.h Source File

rampart_saml_token.h

00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef RAMPART_SAML_TOKEN_H
00019 #define RAMPART_SAML_TOKEN_H
00020 
00021 #include <rampart_saml_token.h>
00022 #include <oxs_saml_token.h>
00023 #include <axutil_utils.h>
00024 #include <axiom.h>
00025 #include <axis2_msg_ctx.h>
00026 #include <oxs_key.h>
00027 #include <rp_property.h>
00028 
00029 #ifdef __cplusplus
00030 extern "C"
00031 {
00032 #endif
00033     
00034 /*
00035  * Rampart saml token subject confirmation types. Rampart support both holder 
00036  * of key and sender vouches methods of subject confiramtions.
00037  */
00038 typedef enum 
00039 {
00040     RAMPART_ST_CONFIR_TYPE_UNSPECIFIED = 0,
00041     RAMPART_ST_CONFIR_TYPE_SENDER_VOUCHES,
00042     RAMPART_ST_CONFIR_TYPE_HOLDER_OF_KEY
00043 } rampart_st_confir_type_t;
00044 
00045 typedef enum
00046 {
00047     RAMPART_ST_TYPE_UNSPECIFIED = 0,
00048     RAMPART_ST_TYPE_SIGNED_SUPPORTING_TOKEN,
00049     RAMPART_ST_TYPE_SIGNATURE_TOKEN,
00050     RAMPART_ST_TYPE_ENCRYPTION_TOKEN,
00051     RAMPART_ST_TYPE_PROTECTION_TOKEN
00052 } rampart_st_type_t;
00053 
00054 typedef struct rampart_saml_token_t rampart_saml_token_t;
00055 
00064 AXIS2_EXTERN rampart_saml_token_t *AXIS2_CALL
00065 rampart_saml_token_create(const axutil_env_t *env, axiom_node_t *assertion, 
00066                           rampart_st_confir_type_t type);
00074 AXIS2_EXTERN int AXIS2_CALL
00075 rampart_saml_token_free(rampart_saml_token_t *tok, const axutil_env_t *env);
00084 AXIS2_EXTERN int AXIS2_CALL
00085 rampart_saml_token_set_assertion(rampart_saml_token_t *tok, const axutil_env_t *env, 
00086                                  axiom_node_t *assertion);
00094 AXIS2_EXTERN axiom_node_t* AXIS2_CALL
00095 rampart_saml_token_get_assertion(rampart_saml_token_t *tok, const axutil_env_t *env);
00104 AXIS2_EXTERN int AXIS2_CALL
00105 rampart_saml_token_set_type(rampart_saml_token_t *tok, const axutil_env_t *env, 
00106                             rampart_st_confir_type_t type);
00114 AXIS2_EXTERN rampart_st_confir_type_t AXIS2_CALL
00115 rampart_saml_token_get_type(rampart_saml_token_t *tok, const axutil_env_t *env);
00124 AXIS2_EXTERN int AXIS2_CALL
00125 rampart_saml_token_set_key_value(rampart_saml_token_t *tok, const axutil_env_t *env, 
00126                                  oxs_key_t *key);
00134 AXIS2_EXTERN axiom_node_t * AXIS2_CALL
00135 rampart_saml_token_get_str(rampart_saml_token_t *tok, const axutil_env_t *env);
00144 AXIS2_EXTERN int AXIS2_CALL
00145 rampart_saml_token_set_str(rampart_saml_token_t *tok, const axutil_env_t *env, 
00146                            axiom_node_t *str);
00156 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00157 rampart_saml_token_set_is_added_to_header(rampart_saml_token_t *tok, 
00158                                       const axutil_env_t *env,
00159                                       axis2_bool_t is_token_added);
00167 AXIS2_EXTERN axis2_bool_t AXIS2_CALL
00168 rampart_saml_token_is_added_to_header(rampart_saml_token_t *tok, 
00169                                       const axutil_env_t *env);
00179 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00180 rampart_saml_token_set_token_type(rampart_saml_token_t *tok,
00181                                                                   const axutil_env_t *env,
00182                                                                   rampart_st_type_t token_type);
00190 AXIS2_EXTERN rampart_st_type_t AXIS2_CALL
00191 rampart_saml_token_get_token_type(rampart_saml_token_t *tok,
00192                                                                   const axutil_env_t *env);
00193 
00194 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00195 rampart_saml_token_set_session_key(rampart_saml_token_t *tok, 
00196                                                                    const axutil_env_t *env,
00197                                                                    oxs_key_t *key);
00198 
00199 
00200 AXIS2_EXTERN oxs_key_t * AXIS2_CALL
00201 rampart_saml_token_get_session_key(rampart_saml_token_t *tok, 
00202                                                                    const axutil_env_t *env);
00203 #ifdef __cplusplus
00204 }
00205 #endif
00206 
00207 
00208 #endif 
00209 
00210 

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__oxs__signature.html0000644000076500007650000003503011202454456024116 0ustar shankarshankar Rampart/C: Signature

Signature
[OMXMLSecurity]


Functions

AXIS2_EXTERN axis2_status_t oxs_sig_sign_hmac_sha1 (const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, oxs_buffer_t *input, oxs_buffer_t *output)
AXIS2_EXTERN axis2_status_t oxs_sig_sign_rsa_sha1 (const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, oxs_buffer_t *input, oxs_buffer_t *output)
AXIS2_EXTERN axis2_status_t oxs_sig_sign (const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, oxs_buffer_t *input, oxs_buffer_t *output)
AXIS2_EXTERN axis2_status_t oxs_sig_verify (const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, axis2_char_t *content, axis2_char_t *signature)
AXIS2_EXTERN axis2_status_t oxs_sig_verify_hmac_sha1 (const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, axis2_char_t *content, axis2_char_t *signature)
AXIS2_EXTERN axis2_status_t oxs_sig_verify_rsa_sha1 (const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, axis2_char_t *content, axis2_char_t *signature)

Function Documentation

AXIS2_EXTERN axis2_status_t oxs_sig_sign ( const axutil_env_t *  env,
oxs_sign_ctx_t *  sign_ctx,
oxs_buffer_t input,
oxs_buffer_t output 
)

Signs a content placed in buf using the information available in the signature context . The result will be placed in the buffer . Note that the result is base64 encoded. pointer to environment struct the signature context input buffer output buffer

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_sig_sign_hmac_sha1 ( const axutil_env_t *  env,
oxs_sign_ctx_t *  sign_ctx,
oxs_buffer_t input,
oxs_buffer_t output 
)

Signs an input buffer using the HMAC-SHA1 algorithm. The secret will be taken form the signature context Result will be placed in output buffer pointer to environment struct the signature context input buffer output buffer

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_sig_sign_rsa_sha1 ( const axutil_env_t *  env,
oxs_sign_ctx_t *  sign_ctx,
oxs_buffer_t input,
oxs_buffer_t output 
)

Signs an input buffer using the RSA-SHA1 algorithm. Result will be placed in output buffer pointer to environment struct the signature context input buffer output buffer

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_sig_verify ( const axutil_env_t *  env,
oxs_sign_ctx_t *  sign_ctx,
axis2_char_t *  content,
axis2_char_t *  signature 
)

Verifies a with using the information available in the signature content . Note that the signature should be the base64 encoded value of a digital signature. pointer to environment struct the signature context the content that's signed the signature value

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_sig_verify_hmac_sha1 ( const axutil_env_t *  env,
oxs_sign_ctx_t *  sign_ctx,
axis2_char_t *  content,
axis2_char_t *  signature 
)

Verifies with using the information available in the signature content as per the HMA-SHA1 algorithm pointer to environment struct the signature context the content that's signed the signature value

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t oxs_sig_verify_rsa_sha1 ( const axutil_env_t *  env,
oxs_sign_ctx_t *  sign_ctx,
axis2_char_t *  content,
axis2_char_t *  signature 
)

Verifies with using the information available in the signature content as per the RSA-SHA1 algorithm pointer to environment struct the signature context the content that's signed the signature value

Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/oxs__cipher_8h.html0000644000076500007650000000567011202454455022421 0ustar shankarshankar Rampart/C: oxs_cipher.h File Reference

oxs_cipher.h File Reference

Cipher related functions in OMXMLSecurity. More...

#include <axis2_defines.h>
#include <oxs_constants.h>
#include <openssl_cipher_property.h>
#include <axutil_env.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN
openssl_cipher_property_t
oxs_get_cipher_property_for_url (const axutil_env_t *env, axis2_char_t *url)
AXIS2_EXTERN axis2_char_t * oxs_get_cipher_name_for_url (const axutil_env_t *env, axis2_char_t *url)
AXIS2_EXTERN axis2_char_t * oxs_get_cipher_url_for_name (const axutil_env_t *env, axis2_char_t *name)


Detailed Description

Cipher related functions in OMXMLSecurity.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__rampart__sec__processed__result.html0000644000076500007650000000224511202454457027472 0ustar shankarshankar Rampart/C: Rampart_sec_processed_result

Rampart_sec_processed_result


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/globals_func.html0000644000076500007650000011100611202454457022147 0ustar shankarshankar Rampart/C: Class Members
 

- o -


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/rampart__signature_8h.html0000644000076500007650000000536211202454456024004 0ustar shankarshankar Rampart/C: rampart_signature.h File Reference

rampart_signature.h File Reference

sign a SOAP message More...

#include <axutil_utils_defines.h>
#include <axis2_defines.h>
#include <axutil_env.h>
#include <axiom_soap.h>
#include <axis2_msg_ctx.h>
#include <rampart_context.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN axis2_status_t rampart_sig_confirm_signature (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_node_t *sec_node)
AXIS2_EXTERN axis2_status_t rampart_sig_sign_message (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_soap_envelope_t *soap_envelope, axiom_node_t *sec_node, axutil_array_list_t *sign_parts_list)


Detailed Description

sign a SOAP message


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__openssl__crypt.html0000644000076500007650000001042011202454456024124 0ustar shankarshankar Rampart/C: OpenSSL Crypt

OpenSSL Crypt
[OpenSSL wrapper]


Functions

AXIS2_EXTERN int openssl_bc_crypt (const axutil_env_t *env, openssl_cipher_ctx_t *oc_ctx, oxs_buffer_t *input_buf, oxs_buffer_t *output_buf, int encrypt)

Function Documentation

AXIS2_EXTERN int openssl_bc_crypt ( const axutil_env_t *  env,
openssl_cipher_ctx_t oc_ctx,
oxs_buffer_t input_buf,
oxs_buffer_t output_buf,
int  encrypt 
)

Encrypt or decrypts data in the and place the result in the . This function works for block ciphers AES-128, AES-192, AES-256 and 3-DES The key and the cipher name must be specified in the cipher context. pointer to environment struct openssl block cipher context the input buffer to en/decrypt the output buffer to place en/decrypted result For encryption encrypt=OPENSSL_ENCRYPT and for decryption encrypt=OPENSSL_DECRYPT

Returns:
the length of the en/decrypted result OR -1 if failed


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/oxs__cipher_8h-source.html0000644000076500007650000001354311202454454023714 0ustar shankarshankar Rampart/C: oxs_cipher.h Source File

oxs_cipher.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef OXS_CIPHER_H
00019 #define OXS_CIPHER_H
00020 
00021 
00027 #include <axis2_defines.h>
00028 #include <oxs_constants.h>
00029 #include <openssl_cipher_property.h>
00030 #include <axutil_env.h>
00031 #ifdef __cplusplus
00032 extern "C"
00033 {
00034 #endif
00035 
00049     AXIS2_EXTERN openssl_cipher_property_t *AXIS2_CALL
00050     oxs_get_cipher_property_for_url(const axutil_env_t *env,
00051                                     axis2_char_t *url);
00052 
00059     AXIS2_EXTERN axis2_char_t* AXIS2_CALL
00060     oxs_get_cipher_name_for_url(const axutil_env_t *env,
00061                                 axis2_char_t *url);
00062 
00069     AXIS2_EXTERN axis2_char_t* AXIS2_CALL
00070     oxs_get_cipher_url_for_name(const axutil_env_t *env,
00071                                 axis2_char_t *name);
00072 
00074 #ifdef __cplusplus
00075 }
00076 #endif
00077 
00078 #endif                          /* OXS_CIPHER_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/rampart__authn__provider_8h.html0000644000076500007650000001156711202454456025177 0ustar shankarshankar Rampart/C: rampart_authn_provider.h File Reference

rampart_authn_provider.h File Reference

The authentication interface of rampart. Validates a username and password pair. More...

#include <axutil_param.h>
#include <axis2_defines.h>
#include <axutil_error.h>
#include <axutil_env.h>
#include <axutil_utils.h>
#include <axis2_msg_ctx.h>

Go to the source code of this file.

Classes

struct  rampart_authn_provider_ops
struct  rampart_authn_provider
#define RAMPART_AUTHN_PROVIDER_FREE(authn_provider, env)   ((authn_provider)->ops->free (authn_provider, env))
#define RAMPART_AUTHN_PROVIDER_CHECK_PASSWORD(authn_provider, env, msg_ctx, username, password)
#define RAMPART_AUTHN_PROVIDER_CHECK_PASSWORD_DIGEST(authn_provider, env, msg_ctx, username, nonce, nonce_length, digest)
typedef struct
rampart_authn_provider_ops 
rampart_authn_provider_ops_t
typedef struct
rampart_authn_provider 
rampart_authn_provider_t

Typedefs

typedef enum
rampart_authn_provider_status 
rampart_authn_provider_status_t

Enumerations

enum  rampart_authn_provider_status {
  RAMPART_AUTHN_PROVIDER_DENIED = 0, RAMPART_AUTHN_PROVIDER_GRANTED, RAMPART_AUTHN_PROVIDER_FOUND, RAMPART_AUTHN_PROVIDER_USER_FOUND,
  RAMPART_AUTHN_PROVIDER_USER_NOT_FOUND, RAMPART_AUTHN_PROVIDER_GENERAL_ERROR
}


Detailed Description

The authentication interface of rampart. Validates a username and password pair.


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/globals_func_0x73.html0000644000076500007650000001621211202454457022733 0ustar shankarshankar Rampart/C: Class Members
 

- s -


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/oxs__xml__key__info__builder_8h.html0000644000076500007650000000774311202454455026000 0ustar shankarshankar Rampart/C: oxs_xml_key_info_builder.h File Reference

oxs_xml_key_info_builder.h File Reference

Process elements available under ds:KeyInfo. More...

#include <axis2_defines.h>
#include <oxs_ctx.h>
#include <axutil_env.h>
#include <axiom_node.h>
#include <axiom_element.h>
#include <axutil_qname.h>

Go to the source code of this file.

Enumerations

enum  oxs_key_info_build_pattern_t { OXS_KIBP_UNKNOWN = 0, OXS_KIBP_X509DATA_X509CERTIFICATE, OXS_KIBP_X509DATA_ISSUER_SERIAL }

Functions

AXIS2_EXTERN axis2_status_t oxs_xml_key_info_build (const axutil_env_t *env, axiom_node_t *parent, oxs_x509_cert_t *cert, oxs_key_info_build_pattern_t pattern)
AXIS2_EXTERN axis2_status_t oxs_xml_key_info_build_x509_data_x509_certificate (const axutil_env_t *env, axiom_node_t *parent, oxs_x509_cert_t *cert)
AXIS2_EXTERN axis2_status_t oxs_xml_key_info_build_x509_data_issuer_serial (const axutil_env_t *env, axiom_node_t *parent, oxs_x509_cert_t *cert)


Detailed Description

Process elements available under ds:KeyInfo.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/oxs__constants_8h-source.html0000644000076500007650000013614311202454454024460 0ustar shankarshankar Rampart/C: oxs_constants.h Source File

oxs_constants.h

Go to the documentation of this file.
00001 /*
00002  * Copyright 2004,2005 The Apache Software Foundation.
00003  *
00004  * Licensed under the Apache License, Version 2.0 (the "License")" "
00005  * you may not use this file except in compliance with the License.
00006  * You may obtain a copy of the License at
00007  *
00008  *      http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  * Unless required by applicable law or agreed to in writing, software
00011  * distributed under the License is distributed on an "AS IS" BASIS,
00012  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  * See the License for the specific language governing permissions and
00014  * limitations under the License.
00015  */
00016 
00022 #ifndef OXS_CONSTANTS_H
00023 #define OXS_CONSTANTS_H
00024 
00025 #ifdef __cplusplus
00026 extern "C"
00027 {
00028 #endif
00029 
00040     /*Default values*/
00041     /*Key transfer algo*/
00042 #define OXS_DEFAULT_KT_ALGO_HREF    OXS_HREF_RSA_PKCS1
00043 #define OXS_DEFAULT_SYM_ALGO        OXS_HREF_AES_256_CBC
00044 #define OXS_STR_DEFAULT             OXS_STR_EMBEDDED
00045 
00046 
00047     /****************************************************************
00048        Global prefixes 
00049     ****************************************************************/
00050 #define OXS_XENC "xenc"
00051 #define OXS_DS "ds"
00052 #define OXS_WSSE "wsse"
00053 #define OXS_WSSE_11 "wsse11"
00054 #define OXS_WSU "wsu"
00055 #define OXS_WSC "wsc"
00056 #define OXS_WSSE_XMLNS      "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
00057 #define OXS_WSSE_11_XMLNS   "http://docs.oasis-open.org/wss/oasis-wss-wssecurity-secext-1.1.xsd"
00058 #define OXS_WSU_XMLNS "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
00059     /****************************************************************
00060         ID Prefixes
00061     ****************************************************************/
00062 #define OXS_ENCDATA_ID "EncDataID"
00063 #define OXS_ENCKEY_ID "EncKeyID"
00064 #define OXS_SIG_ID "SigID"
00065 #define OXS_CERT_ID "CertID"
00066 #define OXS_EMBEDDED_ID "EmbeddedID"
00067 #define OXS_DERIVED_ID "DKID"
00068 #define OXS_SIG_CONF_ID "SigConfID"
00069 #define OXS_LOCAL_REFERENCE_PREFIX "#"
00070 
00071     /****************************************************************
00072        Global namespaces 
00073     ****************************************************************/
00074 #define OXS_DSIG_NS                "http://www.w3.org/2000/09/xmldsig#"
00075 #define OXS_ENC_NS                 "http://www.w3.org/2001/04/xmlenc#"
00076 /*#define OXS_WSSE_NS                "http://schemas.xmlsoap.org/ws/2002/04/secext"*/
00077 #define OXS_WSSE_NS                "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
00078 #define OXS_WSC_NS_05_02 "http://schemas.xmlsoap.org/ws/2005/02/sc"
00079 #define OXS_WSC_NS_05_12 "http://docs.oasis-open.org/ws-sx/ws-secureconversation/200512"
00080 
00081     /****************************************************************
00082         DSig Nodes  
00083     ****************************************************************/
00084 #define OXS_NODE_SIGNATURE         "Signature"
00085 #define OXS_NODE_SIGNEDINFO        "SignedInfo"
00086 #define OXS_NODE_CANONICALIZATION_METHOD "CanonicalizationMethod"
00087 #define OXS_NODE_SIGNATURE_METHOD    "SignatureMethod"
00088 #define OXS_NODE_SIGNATURE_VALUE     "SignatureValue"
00089 #define OXS_NODE_DIGEST_METHOD       "DigestMethod"
00090 #define OXS_NODE_DIGEST_VALUE        "DigestValue"
00091 #define OXS_NODE_OBJECT             "Object"
00092 #define OXS_NODE_MANIFEST           "Manifest"
00093 #define OXS_NODE_SIGNATUREPROPERTIES "SignatureProperties"
00094 #define OXS_NODE_SIGNATURE_CONFIRMATION "SignatureConfirmation" /*SOAP 11*/
00095 
00096     /****************************************************************
00097        Encryption Nodes 
00098     ****************************************************************/
00099 #define OXS_NODE_ENCRYPTED_DATA             "EncryptedData"
00100 #define OXS_NODE_ENCRYPTION_METHOD          "EncryptionMethod"
00101 #define OXS_NODE_ENCRYPTION_PROPERTIES      "EncryptionProperties"
00102 #define OXS_NODE_ENCRYPTION_PROPERTY        "EncryptionProperty"
00103 #define OXS_NODE_CIPHER_DATA                "CipherData"
00104 #define OXS_NODE_CIPHER_VALUE               "CipherValue"
00105 #define OXS_NODE_CIPHER_REFERENCE           "CipherReference"
00106 #define OXS_NODE_REFERENCE_LIST             "ReferenceList"
00107 #define OXS_NODE_DATA_REFERENCE             "DataReference"
00108 #define OXS_NODE_KEY_REFERENCE              "KeyReference"
00109 #define OXS_NODE_CARRIED_KEYNAME            "CarriedKeyName"
00110 #define OXS_TYPE_ENC_CONTENT                "http://www.w3.org/2001/04/xmlenc#Content"
00111 #define OXS_TYPE_ENC_ELEMENT                "http://www.w3.org/2001/04/xmlenc#Element"
00112 
00113     /****************************************************************
00114        KeyInfo Nodes
00115     ****************************************************************/
00116 #define OXS_NODE_KEY_INFO               "KeyInfo"
00117 #define OXS_NODE_REFERENCE             "Reference"
00118 #define OXS_NODE_TRANSFORMS            "Transforms"
00119 #define OXS_NODE_TRANSFORM             "Transform"
00120 #define OXS_NODE_TRANSFORMATIONPARAMETERS   "TransformationParameters"
00121     /****************************************************************
00122         KeyInfo Nodes
00123     ****************************************************************/
00124 #define OXS_NODE_BINARY_SECURITY_TOKEN     "BinarySecurityToken"
00125 #define OXS_NODE_KEY_IDENTIFIER     "KeyIdentifier"
00126 #define OXS_NODE_SECURITY_TOKEN_REFRENCE    "SecurityTokenReference"
00127 #define OXS_NODE_EMBEDDED    "Embedded"
00128 
00129     /****************************************************************
00130         Secure Conversation Nodes
00131     ****************************************************************/
00132 #define OXS_NODE_DERIVED_KEY_TOKEN     "DerivedKeyToken"
00133 #define OXS_NODE_PROPERTIES "Properties"
00134 #define OXS_NODE_GENERATION "Generation"
00135 #define OXS_NODE_OFFSET "Offset"
00136 #define OXS_NODE_LENGTH "Length"
00137 #define OXS_NODE_LABEL "Label"
00138 #define OXS_NODE_NONCE "Nonce"
00139 #define OXS_NODE_SECURITY_CONTEXT_TOKEN "SecurityContextToken"
00140 #define OXS_NODE_IDENTIFIER "Identifier"
00141 #define OXS_VALUE_TYPE_SECURITY_CONTEXT_TOKEN_05_02 "http://schemas.xmlsoap.org/ws/2005/02/sc/sct"
00142 #define OXS_VALUE_TYPE_SECURITY_CONTEXT_TOKEN_05_12 "http://docs.oasis-open.org/ws-sx/ws-secureconversation/200512/sct"
00143 
00144 /************************
00145     SAML nodes
00146 *************************/
00147 #define OXS_NODE_SAML_ASSERTION  "Assertion"
00148 #define OXS_NODE_SAML_PREFIX    "saml"
00149 #define OXS_NODE_SAML_SUBJECT_CONFIRMATION_METHOD "ConfirmationMethod"
00150     /****************************************************************
00151         Attributes
00152     ****************************************************************/
00153 #define OXS_ATTR_ID            "Id"
00154 #define OXS_ATTR_URI           "URI"
00155 #define OXS_ATTR_TYPE          "Type"
00156 #define OXS_ATTR_MIMETYPE      "MimeType"
00157 #define OXS_ATTR_ENCODING      "Encoding"
00158 #define OXS_ATTR_ALGORITHM     "Algorithm"
00159 #define OXS_ATTR_FILTER        "Filter"
00160 #define OXS_ATTR_RECIPIENT     "Recipient"
00161 #define OXS_ATTR_TARGET        "Target"
00162 #define OXS_ATTR_ENCODING_TYPE  "EncodingType"
00163 #define OXS_ATTR_VALUE_TYPE     "ValueType"
00164 #define OXS_ATTR_VALUE     "Value"
00165 
00166 
00167     /****************************************************************
00168        AES 
00169     ****************************************************************/
00170 
00171 #define OXS_NAME_AES_128_CBC        "aes128-cbc"
00172 #define OXS_HREF_AES_128_CBC        "http://www.w3.org/2001/04/xmlenc#aes128-cbc"
00173 
00174 #define OXS_NAME_AES_192_CBC        "aes192-cbc"
00175 #define OXS_HREF_AES_192_CBC        "http://www.w3.org/2001/04/xmlenc#aes192-cbc"
00176 
00177 #define OXS_NAME_AES_256_CBC        "aes256-cbc"
00178 #define OXS_HREF_AES_256_CBC        "http://www.w3.org/2001/04/xmlenc#aes256-cbc"
00179 
00180 #define OXS_NAME_KW_AES_128         "kw-aes128"
00181 #define OXS_HREF_KW_AES_128         "http://www.w3.org/2001/04/xmlenc#kw-aes128"
00182 
00183 #define OXS_NAME_KW_AES_192         "kw-aes192"
00184 #define OXS_HREF_KW_AES_192         "http://www.w3.org/2001/04/xmlenc#kw-aes192"
00185 
00186 #define OXS_NAME_KW_AES_256         "kw-aes256"
00187 #define OXS_HREF_KW_AES_256         "http://www.w3.org/2001/04/xmlenc#kw-aes256"
00188 
00189     /****************************************************************
00190       BASE64 
00191     ****************************************************************/
00192 #define OXS_NAME_BASE64           "base64"
00193 #define OXS_HREF_BASE64           "http://www.w3.org/2000/09/xmldsig#base64"
00194 
00195 
00196     /****************************************************************
00197      DES 
00198     ****************************************************************/
00199 #define OXS_NAME_DES_KEY_VALUE       "des"
00200 
00201 #define OXS_NAME_DES3_CBC           "tripledes-cbc"
00202 #define OXS_HREF_DES3_CBC           "http://www.w3.org/2001/04/xmlenc#tripledes-cbc"
00203 
00204 #define OXS_NAME_KW_DES3            "kw-tripledes"
00205 #define OXS_HREF_KW_DES3            "http://www.w3.org/2001/04/xmlenc#kw-tripledes"
00206 
00207 
00208 
00209     /****************************************************************
00210         DSA 
00211     ****************************************************************/
00212 #define OXS_NAME_DSA_KEY_VALUE          "dsa"
00213 #define OXS_NODE_DSA_KEY_VALUE          "DSAKeyValue"
00214 #define OXS_HREF_DSA_KEY_VALUE          "http://www.w3.org/2000/09/xmldsig#DSAKeyValue"
00215 
00216 #define OXS_NAME_DSA_SHA1          "dsa-sha1"
00217 #define OXS_HREF_DSA_SHA1          "http://www.w3.org/2000/09/xmldsig#dsa-sha1"
00218 
00219     /****************************************************************
00220        HMAC
00221      ****************************************************************/
00222 #define OXS_NAME_HMAC_SHA1      "HmacSha1"
00223 #define OXS_HREF_HMAC_SHA1    "http://www.w3.org/2000/09/xmldsig#hmac-sha1"
00224 
00225     /****************************************************************
00226        EncryptedKey
00227     ****************************************************************/
00228 #define OXS_NAME_ENCRYPTED_KEY         "enc-key"
00229 #define OXS_NODE_ENCRYPTED_KEY         "EncryptedKey"
00230 #define OXS_HREF_ENCRYPTED_KEY         "http://www.w3.org/2001/04/xmlenc#EncryptedKey"
00231 
00232     /****************************************************************
00233        C14N
00234     ****************************************************************/
00235 
00236 #define OXS_HREF_XML_C14N                   "http://www.w3.org/TR/2001/REC-xml-c14n-20010315"
00237 #define OXS_HREF_XML_EXC_C14N     "http://www.w3.org/2001/10/xml-exc-c14n#"
00238 
00239 #define OXS_HREF_XML_C14N_WITH_COMMENTS         "http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"
00240 #define OXS_HREF_XML_EXC_C14N_WITH_COMMENTS "http://www.w3.org/2001/10/xml-exc-c14n#WithComments"
00241     /****************************************************************
00242        Transforms
00243     ****************************************************************/
00244 #define OXS_HREF_TRANSFORM_XML_EXC_C14N     OXS_HREF_XML_EXC_C14N
00245 #define OXS_HREF_TRANSFORM_STR_TRANSFORM     "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#STR-Transform"
00246 #define OXS_HREF_TRANSFORM_ENVELOPED_SIGNATURE "http://www.w3.org/2000/09/xmldsig#enveloped-signature"
00247 
00248     /****************************************************************
00249         KeyNAME
00250     ****************************************************************/
00251 #define OXS_NAME_KEY_NAME          "key-name"
00252 #define OXS_NODE_KEY_NAME          "KeyName"
00253 
00254 
00255     /****************************************************************
00256         KeyValue 
00257     ****************************************************************/
00258 #define OXS_NAME_KEY_VALUE         "key-value"
00259 #define OXS_NODE_KEY_VALUE         "KeyValue"
00260 
00261 
00262     /****************************************************************
00263         MD5 
00264     ****************************************************************/
00265 #define OXS_NAME_MD5              "md5"
00266 #define OXS_HREF_MD5              "http://www.w3.org/2001/04/xmldsig-more#md5"
00267 
00268     /****************************************************************
00269         RetrievalMethod
00270     ****************************************************************/
00271 #define OXS_NAME_RETRIEVAL_METHOD      "retrieval-method"
00272 #define OXS_NODE_RETRIEVAL_METHOD      "RetrievalMethod"
00273 
00274     /****************************************************************
00275         RSA 
00276     ****************************************************************/
00277 #define OXS_NAME_RSAKEY_VALUE          "rsa"
00278 #define OXS_NODE_RSAKEY_VALUE          "RSAKeyValue"
00279 #define OXS_HREF_RSAKEY_VALUE          "http://www.w3.org/2000/09/xmldsig#RSAKeyValue"
00280 
00281 #define OXS_NAME_RSA_MD5           "rsa-md5"
00282 #define OXS_HREF_RSA_MD5           "http://www.w3.org/2001/04/xmldsig-more#rsa-md5"
00283 
00284 #define OXS_NAME_RSA_RIPEMD160         "rsa-ripemd160"
00285 #define OXS_HREF_RSA_RIPEMD160         "http://www.w3.org/2001/04/xmldsig-more#rsa-ripemd160"
00286 
00287 #define OXS_NAME_RSA_SHA1          "rsa-sha1"
00288 #define OXS_HREF_RSA_SHA1          "http://www.w3.org/2000/09/xmldsig#rsa-sha1"
00289 
00290 #define OXS_NAME_RSA_SHA224        "rsa-sha224"
00291 #define OXS_HREF_RSA_SHA224        "http://www.w3.org/2001/04/xmldsig-more#rsa-sha224"
00292 
00293 #define OXS_NAME_RSA_SHA256        "rsa-sha256"
00294 #define OXS_HREF_RSA_SHA256        "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"
00295 
00296 #define OXS_NAME_RSA_SHA384        "rsa-sha384"
00297 #define OXS_HREF_RSA_SHA384        "http://www.w3.org/2001/04/xmldsig-more#rsa-sha384"
00298 
00299 #define OXS_NAME_RSA_SHA512        "rsa-sha512"
00300 #define OXS_HREF_RSA_SHA512        "http://www.w3.org/2001/04/xmldsig-more#rsa-sha512"
00301 
00302 #define OXS_NAME_RSA_PKCS1         "rsa-1_5"
00303 #define OXS_HREF_RSA_PKCS1         "http://www.w3.org/2001/04/xmlenc#rsa-1_5"
00304 
00305 #define OXS_NAME_RSA_OAEP          "rsa-oaep-mgf1p"
00306 #define OXS_HREF_RSA_OAEP          "http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p"
00307 #define OXS_NODE_RSA_OAEP_PARAMS        "OAEPparams"
00308 
00309 
00310     /****************************************************************
00311         SHA1 
00312     ****************************************************************/
00313 #define OXS_NAME_SHA1             "sha1"
00314 #define OXS_HREF_SHA1             "http://www.w3.org/2000/09/xmldsig#sha1"
00315 
00316 #define OXS_NAME_SHA224           "sha224"
00317 #define OXS_HREF_SHA224           "http://www.w3.org/2001/04/xmldsig-more#sha224"
00318 
00319 #define OXS_NAME_SHA256           "sha256"
00320 #define OXS_HREF_SHA256           "http://www.w3.org/2001/04/xmlenc#sha256"
00321 
00322 #define OXS_NAME_SHA384           "sha384"
00323 #define OXS_HREF_SHA384           "http://www.w3.org/2001/04/xmldsig-more#sha384"
00324 
00325 #define OXS_NAME_SHA512           "sha512"
00326 #define OXS_HREF_SHA512           "http://www.w3.org/2001/04/xmlenc#sha512"
00327 
00328 #define OXS_SC_DK_NAME_P_SHA1     "P_SHA-1"
00329 #define OXS_SC_DK_HREF_P_SHA1     "http://schemas.xmlsoap.org/ws/2005/02/sc/dk/p_sha1"
00330     /****************************************************************
00331         X509 
00332     ****************************************************************/
00333 #define OXS_NAME_X509_DATA         "x509"
00334 #define OXS_NODE_X509_DATA         "X509Data"
00335 #define OXS_HREF_X509_DATA         "http://www.w3.org/2000/09/xmldsig#X509Data"
00336 
00337 #define OXS_NODE_X509_CERTIFICATE      "X509Certificate"
00338 #define OXS_NODE_X509_CRL          "X509CRL"
00339 #define OXS_NODE_X509_SUBJECT_NAME      "X509SubjectName"
00340 #define OXS_NODE_X509_ISSUER_SERIAL     "X509IssuerSerial"
00341 #define OXS_NODE_X509_ISSUER_NAME       "X509IssuerName"
00342 #define OXS_NODE_X509_SERIAL_NUMBER     "X509SerialNumber"
00343 #define OXS_NODE_X509_SKI          "X509SKI"
00344 
00345 #define OXS_NAME_RAW_X509_CERT          "raw-x509-cert"
00346 #define OXS_HREF_RAW_X509_CERT          "http://www.w3.org/2000/09/xmldsig#rawX509Certificate"
00347 
00348 #define OXS_NAME_X509_STORE        "x509-store"
00349 
00350     /****************************************************************
00351         SOAP 1.1/1.2
00352     ****************************************************************/
00353 #define OXS_NODE_ENVELOPE         "Envelope"
00354 #define OXS_NODE_HEADER           "Header"
00355 #define OXS_NODE_BODY                 "Body"
00356 #define OXS_NODE_FAULT                "Fault"
00357 #define OXS_NODE_FAULT_CODE        "faultcode"
00358 #define OXS_NODE_FAULT_STRING              "faultstring"
00359 #define OXS_NODE_FAULT_ACTOR               "faultactor"
00360 #define OXS_NODE_FAULT_DETAIL              "detail"
00361 #define OXS_NODE_CODE             "Code"
00362 #define OXS_NODE_REASON           "Reason"
00363 #define OXS_NODE_NODE             "Node"
00364 #define OXS_NODE_ROLE             "Role"
00365 #define OXS_NODE_DETAIL           "Detail"
00366 #define OXS_NODE_VALUE            "Value"
00367 #define OXS_NODE_SUBCODE          "Subcode"
00368 #define OXS_NODE_TEXT             "Text"
00369 
00370 
00371 #define OXS_SOAP_FAULT_CODE_VERSION_MISMATCH     "VersionMismatch"
00372 #define OXS_SOAP_FAULT_CODE_MUST_UNDERSTAND      "MustUnderstand"
00373 #define OXS_SOAP_FAULT_CODE_CLIENT          "Client"
00374 #define OXS_SOAP_FAULT_CODE_SERVER          "Server"
00375 #define OXS_SOAP_FAULT_CODE_RECEIVER        "Receiver"
00376 #define OXS_SOAP_FAULT_CODE_SENDER          "Sender"
00377 #define OXS_SOAP_FAULT_DATA_ENCODNING_UNKNOWN    "DataEncodingUnknown"
00378 
00379     /****************************************************************
00380         Ext
00381     ****************************************************************/
00382 #define OXS_ENCODING_BASE64BINARY "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary"
00383 #define OXS_VALUE_X509V3 "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3"
00384 #define OXS_X509_SUBJ_KI "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509SubjectKeyIdentifier"
00385 #define OXS_X509_TUMBP_PRINT_SHA1 "http://docs.oasis-open.org/wss/oasis-wss-soap-message-security-1.1#ThumbprintSHA1"
00386 #define OXS_X509_ENCRYPTED_KEY_SHA1 "http://docs.oasis-open.org/wss/oasis-wss-soap-message-security-1.1#EncryptedKeySHA1"
00387     /****************************************************************
00388         ST References
00389     ****************************************************************/
00390 #define OXS_STR_DIRECT_REFERENCE "DirectReference"
00391 #define OXS_STR_KEY_IDENTIFIER  OXS_NODE_KEY_IDENTIFIER
00392 #define OXS_STR_EMBEDDED        OXS_NODE_EMBEDDED
00393 #define OXS_STR_ISSUER_SERIAL "IssuerSerial"
00394 #define OXS_STR_THUMB_PRINT "ThumbPrint"
00395 #define OXS_STR_EXTERNAL_URI "ExternalUri"
00396 #define OXS_STR_ENCRYPTED_KEY "Encryptedkey"
00397 
00398     
00399     /****************************************************************
00400         WS Security 1.1
00401     ****************************************************************/
00402 #define OXS_WSS_11_VALUE_TYPE_ENCRYPTED_KEY "http://docs.oasis-open.org/wss/oasis-wss-soap-message-security-1.1#EncryptedKey"
00403 #define OXS_NODE_ENCRYPTED_HEADER "EncryptedHeader"
00404     /*************************************************************************/
00405 
00406 
00408 #ifdef __cplusplus
00409 }
00410 #endif
00411 
00412 #endif /* OXS_CONSTANTS_H*/

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/trust__context_8h-source.html0000644000076500007650000002336111202454455024476 0ustar shankarshankar Rampart/C: trust_context.h Source File

trust_context.h

Go to the documentation of this file.
00001 
00002 /*
00003  * Licensed to the Apache Software Foundation (ASF) under one or more
00004  * contributor license agreements.  See the NOTICE file distributed with
00005  * this work for additional information regarding copyright ownership.
00006  * The ASF licenses this file to You under the Apache License, Version 2.0
00007  * (the "License"); you may not use this file except in compliance with
00008  * the License.  You may obtain a copy of the License at
00009  *
00010  *      http://www.apache.org/licenses/LICENSE-2.0
00011  *
00012  * Unless required by applicable law or agreed to in writing, software
00013  * distributed under the License is distributed on an "AS IS" BASIS,
00014  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00015  * See the License for the specific language governing permissions and
00016  * limitations under the License.
00017  */
00018 
00019 #ifndef TRUST_CONTEXT_H
00020 #define TRUST_CONTEXT_H
00021 
00027 #include <stdio.h>
00028 #include <stdlib.h>
00029 #include <axutil_utils.h>
00030 #include <axutil_string.h>
00031 #include <axutil_base64.h>
00032 #include <axiom_soap.h>
00033 #include <axiom.h>
00034 #include <axis2_msg_ctx.h>
00035 #include <axis2_addr.h>
00036 #include <trust_constants.h>
00037 #include <trust_rst.h>
00038 #include <trust_rstr.h>
00039 
00040 #ifdef __cplusplus
00041 extern "C"
00042 {
00043 #endif
00044 
00045     typedef struct trust_context trust_context_t;
00046 
00047     AXIS2_EXTERN trust_context_t *AXIS2_CALL
00048                 trust_context_create(
00049             const axutil_env_t * env);
00050     
00051     AXIS2_EXTERN  void AXIS2_CALL
00052             trust_context_free( 
00053                         trust_context_t *trust_context,           
00054             const axutil_env_t * env);
00055     
00056     
00057     /*Populate RST_CONTEXT : Often used in STS/IP side */
00058         AXIS2_EXTERN axis2_status_t AXIS2_CALL
00059         trust_context_process_rst(
00060                 trust_context_t *trust_context,
00061         const axutil_env_t * env,    
00062         axis2_msg_ctx_t * in_msg_ctx);
00063     
00064     /*Populate RSTR_CONTEXT : Often used in Token Requestor side*/
00065     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00066         trust_context_process_rstr(
00067                 trust_context_t *trust_context,
00068         const axutil_env_t * env,
00069         axis2_msg_ctx_t * in_msg_ctx);
00070     
00071     /*Build RST Node from created RST_CONTEXT */
00072     AXIS2_EXTERN axiom_node_t* AXIS2_CALL
00073         trust_context_build_rst_node(
00074                 trust_context_t *trust_context,
00075         const axutil_env_t * env);
00076     
00077     /*Build RSTR Node from created RSTR_CONTEXT */
00078     AXIS2_EXTERN axiom_node_t* AXIS2_CALL
00079         trust_context_build_rstr_node(
00080                 trust_context_t *trust_context,
00081         const axutil_env_t * env);
00082     
00083     
00084     /*Get Populated RST_CONTEXT */
00085     AXIS2_EXTERN trust_rst_t* AXIS2_CALL
00086         trust_context_get_rst(
00087                 trust_context_t *trust_context,
00088         const axutil_env_t * env);
00089     
00090     /*Get Populated RSTR_CONTEXT */
00091     AXIS2_EXTERN trust_rstr_t* AXIS2_CALL
00092         trust_context_get_rstr(
00093                 trust_context_t *trust_context,
00094         const axutil_env_t * env);
00095     
00096     /*Set RST_CONTEXT */
00097     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00098     trust_context_set_rst(
00099                 trust_context_t *trust_context,
00100         const axutil_env_t * env,    
00101         trust_rst_t *rst);
00102     
00103     /*Set RSTR_CONTEXT */
00104     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00105         trust_context_set_rstr(
00106                 trust_context_t *trust_context,
00107         const axutil_env_t * env,
00108         trust_rstr_t *rstr);
00109     
00110     
00111  
00112     
00113 #ifdef __cplusplus
00114 }
00115 #endif
00116 #endif                          /*TRUST_CONTEXT_H */

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/rampart__sec__header__builder_8h-source.html0000644000076500007650000001401511202454455027361 0ustar shankarshankar Rampart/C: rampart_sec_header_builder.h Source File

rampart_sec_header_builder.h

Go to the documentation of this file.
00001 /*
00002  *   Copyright 2003-2004 The Apache Software Foundation.
00003  *
00004  *   Licensed under the Apache License, Version 2.0 (the "License");
00005  *   you may not use this file except in compliance with the License.
00006  *   You may obtain a copy of the License at
00007  *
00008  *       http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  *   Unless required by applicable law or agreed to in writing, software
00011  *   distributed under the License is distributed on an "AS IS" BASIS,
00012  *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  *   See the License for the specific language governing permissions and
00014  *   limitations under the License.
00015  */
00016 
00017 #include <axutil_utils_defines.h>
00018 #include <axis2_defines.h>
00019 #include <axutil_env.h>
00020 #include <axiom_soap.h>
00021 #include <axis2_msg_ctx.h>
00022 #include <rampart_context.h>
00023 #include <oxs_asym_ctx.h>
00024 #include <oxs_xml_encryption.h>
00036 #ifndef RAMPART_SEC_HEADER_BUILDER_H
00037 #define RAMPART_SEC_HEADER_BUILDER_H
00038 
00039 #ifdef __cplusplus
00040 extern "C" {
00041 #endif
00042 
00050     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00051     rampart_shb_build_message(const axutil_env_t *env,
00052                               axis2_msg_ctx_t *msg_ctx,
00053                               rampart_context_t *context,
00054                               axiom_soap_envelope_t *soap_envelope);
00064     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00065     rampart_shb_ensure_sec_header_order(const axutil_env_t *env,
00066         axis2_msg_ctx_t *msg_ctx,
00067         rampart_context_t *rampart_context,
00068         axiom_node_t* sec_node);
00069 
00070     /* @} */
00071 #ifdef __cplusplus
00072 }
00073 #endif
00074 
00075 #endif    /* !RAMPART_SEC_HEADER_BUILDER_H */

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/oxs__iv_8h.html0000644000076500007650000000511511202454455021557 0ustar shankarshankar Rampart/C: oxs_iv.h File Reference

oxs_iv.h File Reference

Initial Vector related functionalities. More...

#include <axis2_defines.h>
#include <oxs_constants.h>
#include <openssl_constants.h>
#include <axutil_env.h>

Go to the source code of this file.

Defines

#define OXS_IV_DEFAULT   OPENSSL_DEFAULT_IV16

Functions

AXIS2_EXTERN axis2_char_t * oxs_iv_generate_for_algo (const axutil_env_t *env, axis2_char_t *key_algo)


Detailed Description

Initial Vector related functionalities.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/openssl__pem_8h.html0000644000076500007650000000734611202454455022604 0ustar shankarshankar Rampart/C: openssl_pem.h File Reference

openssl_pem.h File Reference

Funcitons related to keys that are in PEM format. More...

#include <openssl/rand.h>
#include <openssl/evp.h>
#include <openssl/pem.h>
#include <openssl/bio.h>
#include <openssl_constants.h>
#include <openssl_pkey.h>
#include <axis2_util.h>
#include <openssl/pkcs12.h>
#include <oxs_error.h>

Go to the source code of this file.

Enumerations

enum  openssl_pem_pkey_type_t { OPENSSL_PEM_PKEY_TYPE_PRIVATE_KEY = 0, OPENSSL_PEM_PKEY_TYPE_PUBLIC_KEY, OPENSSL_PEM_PKEY_TYPE_UNKNOWN }

Functions

AXIS2_EXTERN axis2_status_t openssl_pem_buf_read_pkey (const axutil_env_t *env, axis2_char_t *b64_encoded_buf, axis2_char_t *password, openssl_pem_pkey_type_t type, EVP_PKEY **pkey)
AXIS2_EXTERN axis2_status_t openssl_pem_read_pkey (const axutil_env_t *env, axis2_char_t *filename, axis2_char_t *password, openssl_pem_pkey_type_t type, EVP_PKEY **pkey)


Detailed Description

Funcitons related to keys that are in PEM format.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/rampart__token__processor_8h.html0000644000076500007650000000724211202454456025360 0ustar shankarshankar Rampart/C: rampart_token_processor.h File Reference

rampart_token_processor.h File Reference

Token processing of rampart. More...

#include <axis2_util.h>
#include <axis2_defines.h>
#include <axutil_utils_defines.h>
#include <axutil_env.h>
#include <axiom_node.h>
#include <oxs_x509_cert.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN axis2_status_t rampart_token_process_security_token_reference (const axutil_env_t *env, axiom_node_t *st_ref_node, axiom_node_t *scope_node, oxs_x509_cert_t *cert)
AXIS2_EXTERN axis2_status_t rampart_token_process_direct_ref (const axutil_env_t *env, axiom_node_t *ref_node, axiom_node_t *scope_node, oxs_x509_cert_t *cert)
AXIS2_EXTERN axis2_status_t rampart_token_process_embedded (const axutil_env_t *env, axiom_node_t *embed_node, oxs_x509_cert_t *cert)
AXIS2_EXTERN axis2_status_t rampart_token_process_key_identifier (const axutil_env_t *env, axiom_node_t *ki_node, oxs_x509_cert_t *cert)
AXIS2_EXTERN axis2_status_t rampart_token_process_x509_data (const axutil_env_t *env, axiom_node_t *x509_data_node, oxs_x509_cert_t *cert)


Detailed Description

Token processing of rampart.


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/rampart__sec__header__processor_8h.html0000644000076500007650000000542111202454456026456 0ustar shankarshankar Rampart/C: rampart_sec_header_processor.h File Reference

rampart_sec_header_processor.h File Reference

Processes a message depending on it's security related claims. More...

#include <axutil_utils_defines.h>
#include <axis2_defines.h>
#include <axutil_env.h>
#include <axiom_soap.h>
#include <axis2_msg_ctx.h>
#include <oxs_asym_ctx.h>
#include <oxs_xml_encryption.h>
#include <rampart_context.h>
#include <oxs_key_mgr.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN axis2_status_t rampart_shp_process_sec_header (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_soap_envelope_t *soap_envelope, axiom_node_t *sec_node)


Detailed Description

Processes a message depending on it's security related claims.


Generated on Wed May 13 10:52:54 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/oxs__transform_8h.html0000644000076500007650000001773211202454455023164 0ustar shankarshankar Rampart/C: oxs_transform.h File Reference

oxs_transform.h File Reference

The class representing a single step of transformation. For example a Cannonicalization. More...

#include <axis2_defines.h>
#include <axutil_env.h>
#include <axiom_node.h>

Go to the source code of this file.

Typedefs

typedef oxs_tr_dtype_t(* oxs_transform_tr_func )(const axutil_env_t *env, void *input, oxs_tr_dtype_t input_dtype, void **output)
typedef struct oxs_transform_t oxs_transform_t

Enumerations

enum  oxs_tr_dtype_t { OXS_TRANSFORM_TYPE_UNKNOWN = 0, OXS_TRANSFORM_TYPE_CHAR, OXS_TRANSFORM_TYPE_NODE, OXS_TRANSFORM_TYPE_NODE_ARRAY_LIST }

Functions

AXIS2_EXTERN oxs_transform_t * oxs_transform_create (const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_transform_free (oxs_transform_t *ctx, const axutil_env_t *env)
AXIS2_EXTERN axis2_char_t * oxs_transform_get_id (const oxs_transform_t *transform, const axutil_env_t *env)
AXIS2_EXTERN oxs_tr_dtype_t oxs_transform_get_input_data_type (const oxs_transform_t *transform, const axutil_env_t *env)
AXIS2_EXTERN oxs_tr_dtype_t oxs_transform_get_output_data_type (const oxs_transform_t *transform, const axutil_env_t *env)
AXIS2_EXTERN oxs_transform_tr_func oxs_transform_get_transform_function (const oxs_transform_t *transform, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t oxs_transform_set_id (oxs_transform_t *transform, const axutil_env_t *env, axis2_char_t *id)
AXIS2_EXTERN axis2_status_t oxs_transform_set_input_data_type (oxs_transform_t *transform, const axutil_env_t *env, oxs_tr_dtype_t input_data_type)
AXIS2_EXTERN axis2_status_t oxs_transform_set_output_data_type (oxs_transform_t *transform, const axutil_env_t *env, oxs_tr_dtype_t output_data_type)
AXIS2_EXTERN axis2_status_t oxs_transform_set_transform_func (oxs_transform_t *transform, const axutil_env_t *env, oxs_transform_tr_func transform_func)


Detailed Description

The class representing a single step of transformation. For example a Cannonicalization.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/oxs__xml__key__processor_8h.html0000644000076500007650000001137411202454455025212 0ustar shankarshankar Rampart/C: oxs_xml_key_processor.h File Reference

oxs_xml_key_processor.h File Reference

Process elements available under ds:KeyInfo. More...

#include <axis2_defines.h>
#include <oxs_ctx.h>
#include <axutil_env.h>
#include <axiom_node.h>
#include <axiom_element.h>
#include <axutil_qname.h>
#include <oxs_x509_cert.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN axis2_status_t oxs_xml_key_process_X509SKI (const axutil_env_t *env, axiom_node_t *X509SKI_node, oxs_x509_cert_t *cert)
AXIS2_EXTERN axis2_status_t oxs_xml_key_process_X509SubjectName (const axutil_env_t *env, axiom_node_t *X509_subj_name_node, oxs_x509_cert_t *cert)
AXIS2_EXTERN axis2_status_t oxs_xml_key_process_X509IssuerSerial (const axutil_env_t *env, axiom_node_t *X509_issuer_serial_node, oxs_x509_cert_t *cert)
AXIS2_EXTERN axis2_status_t oxs_xml_key_process_X509Certificate (const axutil_env_t *env, axiom_node_t *X509_cert_node, oxs_x509_cert_t *cert)
AXIS2_EXTERN axis2_status_t oxs_xml_key_process_X509Data (const axutil_env_t *env, axiom_node_t *X509_data_node, oxs_x509_cert_t *cert)


Detailed Description

Process elements available under ds:KeyInfo.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__rampart__signature.html0000644000076500007650000001575711202454457024772 0ustar shankarshankar Rampart/C: Signature

Signature
[Rampart Utilities]


Functions

AXIS2_EXTERN axis2_status_t rampart_sig_confirm_signature (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_node_t *sec_node)
AXIS2_EXTERN axis2_status_t rampart_sig_sign_message (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_soap_envelope_t *soap_envelope, axiom_node_t *sec_node, axutil_array_list_t *sign_parts_list)

Function Documentation

AXIS2_EXTERN axis2_status_t rampart_sig_confirm_signature ( const axutil_env_t *  env,
axis2_msg_ctx_t *  msg_ctx,
rampart_context_t *  rampart_context,
axiom_node_t *  sec_node 
)

Build the signature confirmation element in the security header

Parameters:
env pointer to environment struct
msg_ctx message context
rampart_context The rampart context
sec_node The security element
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t rampart_sig_sign_message ( const axutil_env_t *  env,
axis2_msg_ctx_t *  msg_ctx,
rampart_context_t *  rampart_context,
axiom_soap_envelope_t *  soap_envelope,
axiom_node_t *  sec_node,
axutil_array_list_t *  sign_parts_list 
)

Sign a message depending on the security policies

Parameters:
env pointer to environment struct
msg_ctx message context
rampart_context The rampart context
soap_envelope The SOAP envelope
sec_node The security element
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/openssl__cipher__property_8h-source.html0000644000076500007650000003033511202454454026667 0ustar shankarshankar Rampart/C: openssl_cipher_property.h Source File

openssl_cipher_property.h

Go to the documentation of this file.
00001 /*
00002  *   Copyright 2003-2004 The Apache Software Foundation.
00003  *
00004  *   Licensed under the Apache License, Version 2.0 (the "License");
00005  *   you may not use this file except in compliance with the License.
00006  *   You may obtain a copy of the License at
00007  *
00008  *       http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  *   Unless required by applicable law or agreed to in writing, software
00011  *   distributed under the License is distributed on an "AS IS" BASIS,
00012  *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  *   See the License for the specific language governing permissions and
00014  *   limitations under the License.
00015  */
00016 
00017 #include<openssl/evp.h>
00018 #include<oxs_buffer.h>
00019 
00024 #ifndef OPENSSL_CIPHER_PROPERTY_H
00025 #define OPENSSL_CIPHER_PROPERTY_H
00026 
00033 #ifdef __cplusplus
00034 extern "C" {
00035 #endif
00036 
00037 
00039     typedef struct openssl_cipher_property_t openssl_cipher_property_t;
00040 
00041 
00048     EVP_CIPHER * AXIS2_CALL
00049     openssl_cipher_property_get_cipher(
00050         const openssl_cipher_property_t *cprop,
00051         const axutil_env_t *env);
00052 
00059     axis2_char_t * AXIS2_CALL
00060     openssl_cipher_property_get_name(
00061         const openssl_cipher_property_t *cprop,
00062         const axutil_env_t *env);
00063 
00071     axis2_char_t * AXIS2_CALL
00072     openssl_cipher_property_get_url(
00073         const openssl_cipher_property_t *cprop,
00074         const axutil_env_t *env);
00075 
00082     int AXIS2_CALL
00083     openssl_cipher_property_get_key_size(
00084         const openssl_cipher_property_t *cprop,
00085         const axutil_env_t *env);
00086 
00093     int AXIS2_CALL
00094     openssl_cipher_property_get_block_size(
00095         const openssl_cipher_property_t *cprop,
00096         const axutil_env_t *env);
00097 
00104     int AXIS2_CALL
00105     openssl_cipher_property_get_iv_size(
00106         const openssl_cipher_property_t *cprop,
00107         const axutil_env_t *env);
00108 
00116     axis2_status_t AXIS2_CALL
00117     openssl_cipher_property_set_cipher(
00118         openssl_cipher_property_t *cprop,
00119         const axutil_env_t *env,
00120         EVP_CIPHER *cipher);
00121 
00129     axis2_status_t AXIS2_CALL
00130     openssl_cipher_property_set_name(
00131         openssl_cipher_property_t *cprop,
00132         const axutil_env_t *env,
00133         axis2_char_t *name);
00134 
00142     axis2_status_t AXIS2_CALL
00143     openssl_cipher_property_set_url(
00144         openssl_cipher_property_t *cprop,
00145         const axutil_env_t *env,
00146         axis2_char_t *url);
00147 
00155     axis2_status_t AXIS2_CALL
00156     openssl_cipher_property_set_key_size(
00157         openssl_cipher_property_t *cprop,
00158         const axutil_env_t *env,
00159         int   key_size);
00160 
00161 
00169     axis2_status_t AXIS2_CALL
00170     openssl_cipher_property_set_block_size(
00171         openssl_cipher_property_t *cprop,
00172         const axutil_env_t *env,
00173         int  block_size);
00174 
00182     axis2_status_t AXIS2_CALL
00183     openssl_cipher_property_set_iv_size(
00184         openssl_cipher_property_t *cprop,
00185         const axutil_env_t *env,
00186         int   iv_size);
00187 
00194     axis2_status_t AXIS2_CALL
00195     openssl_cipher_property_free(openssl_cipher_property_t * cprop, 
00196         const axutil_env_t *env);
00197 
00198 
00204     AXIS2_EXTERN openssl_cipher_property_t *AXIS2_CALL
00205     openssl_cipher_property_create(const axutil_env_t *env);
00206 
00209 #ifdef __cplusplus
00210 }
00211 #endif
00212 
00213 #endif    /* OPENSSL_CIPHER_PROPERTY_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/openssl__hmac_8h.html0000644000076500007650000001023111202454455022716 0ustar shankarshankar Rampart/C: openssl_hmac.h File Reference

openssl_hmac.h File Reference

HMAC function implementations. Supports SHA1. More...

#include <openssl/sha.h>
#include <openssl/hmac.h>
#include <axutil_utils_defines.h>
#include <axis2_defines.h>
#include <axutil_env.h>
#include <oxs_buffer.h>
#include <oxs_key.h>

Go to the source code of this file.

Functions

AXIS2_EXTERN axis2_status_t openssl_hmac_sha1 (const axutil_env_t *env, oxs_key_t *secret, oxs_buffer_t *input, oxs_buffer_t *output)
AXIS2_EXTERN axis2_status_t openssl_p_sha1 (const axutil_env_t *env, oxs_key_t *secret, axis2_char_t *label, axis2_char_t *seed, oxs_key_t *derived_key)
AXIS2_EXTERN axis2_status_t openssl_p_hash (const axutil_env_t *env, unsigned char *secret, unsigned int secret_len, unsigned char *seed, unsigned int seed_len, unsigned char *output, unsigned int output_len)


Detailed Description

HMAC function implementations. Supports SHA1.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__rampart__crypto__util.html0000644000076500007650000000236011202454457025467 0ustar shankarshankar Rampart/C: Rampart Crypto Util

Rampart Crypto Util
[Rampart Utilities]


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__rampart__sec__header__builder.html0000644000076500007650000001444311202454457027046 0ustar shankarshankar Rampart/C: Security Header Builder

Security Header Builder
[Rampart Utilities]


Functions

AXIS2_EXTERN axis2_status_t rampart_shb_build_message (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *context, axiom_soap_envelope_t *soap_envelope)
AXIS2_EXTERN axis2_status_t rampart_shb_ensure_sec_header_order (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_node_t *sec_node)

Function Documentation

AXIS2_EXTERN axis2_status_t rampart_shb_build_message ( const axutil_env_t *  env,
axis2_msg_ctx_t *  msg_ctx,
rampart_context_t *  context,
axiom_soap_envelope_t *  soap_envelope 
)

Build a message depending on configurations.

Parameters:
env pointer to environment struct
msg_ctx message context
soap_envelope the SOAP envelope
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t rampart_shb_ensure_sec_header_order ( const axutil_env_t *  env,
axis2_msg_ctx_t *  msg_ctx,
rampart_context_t *  rampart_context,
axiom_node_t *  sec_node 
)

After building the SOPA message as per the policy, this function will re-order the header elements of the SOAP message to make sure that the processing doesnt fail.

Parameters:
env pointer to environment struct
msg_ctx message context
rampart_context The Rampart Context
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/group__rampart__policy__validator.html0000644000076500007650000000754311202454457026466 0ustar shankarshankar Rampart/C: PolicyValidator

PolicyValidator
[Rampart Utilities]


Functions

AXIS2_EXTERN axis2_status_t rampart_pv_validate_sec_header (const axutil_env_t *env, rampart_context_t *rampart_context, axiom_node_t *sec_node, axis2_msg_ctx_t *msg_ctx)

Function Documentation

AXIS2_EXTERN axis2_status_t rampart_pv_validate_sec_header ( const axutil_env_t *  env,
rampart_context_t *  rampart_context,
axiom_node_t *  sec_node,
axis2_msg_ctx_t *  msg_ctx 
)

Validate security policies, those cannot be checked on the fly

Parameters:
env pointer to environment struct
rampart_context the Rampart Context
sec_node The security element
msg_ctx message context
Returns:
AXIS2_SUCCESS on success, else AXIS2_FAILURE


Generated on Wed May 13 10:52:55 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/rampart__handler__util_8h-source.html0000644000076500007650000001125111202454455026103 0ustar shankarshankar Rampart/C: rampart_handler_util.h Source File

rampart_handler_util.h

Go to the documentation of this file.
00001 
00019 #include <axiom_soap_header.h>
00020 #include <axis2_msg_ctx.h>
00021 
00022 #ifndef RAMPART_HANDLER_UTIL_H
00023 #define RAMPART_HANDLER_UTIL_H
00024 
00035 #ifdef __cplusplus
00036 extern "C"
00037 {
00038 #endif
00039 
00047     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
00048     rampart_get_security_header(
00049         const axutil_env_t *env,
00050         axis2_msg_ctx_t *msg_ctx,
00051         axiom_soap_header_t *soap_header);
00052 
00062     AXIS2_EXTERN void AXIS2_CALL
00063     rampart_create_fault_envelope(
00064         const axutil_env_t *env,
00065         const axis2_char_t *sub_code,
00066         const axis2_char_t *reason_text,
00067         const axis2_char_t *detail_node_text,
00068         axis2_msg_ctx_t *msg_ctx);
00069 
00077     AXIS2_EXTERN void *AXIS2_CALL
00078     rampart_get_rampart_configuration(
00079         const axutil_env_t *env,
00080         axis2_msg_ctx_t *msg_ctx,
00081         axis2_char_t *param_name);
00082 
00089     AXIS2_EXTERN axis2_bool_t AXIS2_CALL
00090     rampart_is_rampart_engaged(
00091         const axutil_env_t *env,
00092         axis2_msg_ctx_t *msg_ctx);
00093 
00095 #ifdef __cplusplus
00096 }
00097 #endif
00098 
00099 
00100 #endif /*RAMPART_HANDLER_UTIL_H*/

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/oxs__x509__cert_8h-source.html0000644000076500007650000003442711202454455024330 0ustar shankarshankar Rampart/C: oxs_x509_cert.h Source File

oxs_x509_cert.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef OXS_X509_CERT
00019 #define OXS_X509_CERT
00020 
00021 
00027 #include <axis2_defines.h>
00028 #include <axutil_env.h>
00029 #include <axiom_node.h>
00030 #include <openssl_pkey.h>
00031 
00032 #ifdef __cplusplus
00033 extern "C"
00034 {
00035 #endif
00036 
00044     typedef struct oxs_x509_cert_t oxs_x509_cert_t;
00045 
00051     AXIS2_EXTERN oxs_x509_cert_t *AXIS2_CALL
00052     oxs_x509_cert_create( const axutil_env_t *env);
00053 
00060     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00061     oxs_x509_cert_free(oxs_x509_cert_t *x509_cert,
00062                        const axutil_env_t *env);
00063 
00064     /*Getters*/
00071     AXIS2_EXTERN int AXIS2_CALL
00072     oxs_x509_cert_get_serial_number(oxs_x509_cert_t *x509_cert,
00073                                     const axutil_env_t *env);
00074 
00081     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00082     oxs_x509_cert_get_subject(oxs_x509_cert_t *x509_cert,
00083                               const axutil_env_t *env);
00084 
00091     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00092     oxs_x509_cert_get_issuer(oxs_x509_cert_t *x509_cert,
00093                              const axutil_env_t *env);
00094 
00101     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00102     oxs_x509_cert_get_key_identifier(oxs_x509_cert_t *x509_cert,
00103                                      const axutil_env_t *env);
00104 
00111     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00112     oxs_x509_cert_get_fingerprint(oxs_x509_cert_t *x509_cert,
00113                                   const axutil_env_t *env);
00114 
00121     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00122     oxs_x509_cert_get_date(oxs_x509_cert_t *x509_cert,
00123                            const axutil_env_t *env);
00124 
00131     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00132     oxs_x509_cert_get_hash(oxs_x509_cert_t *x509_cert,
00133                            const axutil_env_t *env);
00134 
00142     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00143     oxs_x509_cert_get_data(oxs_x509_cert_t *x509_cert,
00144                            const axutil_env_t *env);
00145 
00152     AXIS2_EXTERN openssl_pkey_t *AXIS2_CALL
00153     oxs_x509_cert_get_public_key(oxs_x509_cert_t *x509_cert,
00154                                  const axutil_env_t *env);
00155 
00156     /*Setters*/
00164     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00165     oxs_x509_cert_set_serial_number(oxs_x509_cert_t *x509_cert,
00166                                     const axutil_env_t *env,
00167                                     int value);
00168 
00176     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00177     oxs_x509_cert_set_issuer(oxs_x509_cert_t *x509_cert,
00178                              const axutil_env_t *env,
00179                              axis2_char_t *value);
00180 
00188     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00189     oxs_x509_cert_set_key_identifier(oxs_x509_cert_t *x509_cert,
00190                                      const axutil_env_t *env,
00191                                      axis2_char_t *value);
00192 
00200     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00201     oxs_x509_cert_set_subject(oxs_x509_cert_t *x509_cert,
00202                               const axutil_env_t *env,
00203                               axis2_char_t *value);
00204 
00212     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00213     oxs_x509_cert_set_fingerprint(oxs_x509_cert_t *x509_cert,
00214                                   const axutil_env_t *env,
00215                                   axis2_char_t *value);
00216 
00224     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00225     oxs_x509_cert_set_date(oxs_x509_cert_t *x509_cert,
00226                            const axutil_env_t *env,
00227                            axis2_char_t *value);
00228 
00236     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00237     oxs_x509_cert_set_hash(oxs_x509_cert_t *x509_cert,
00238                            const axutil_env_t *env,
00239                            axis2_char_t *value);
00240 
00249     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00250     oxs_x509_cert_set_data(oxs_x509_cert_t *x509_cert,
00251                            const axutil_env_t *env,
00252                            axis2_char_t *value);
00253 
00261     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00262     oxs_x509_cert_set_public_key(oxs_x509_cert_t *x509_cert,
00263                                  const axutil_env_t *env,
00264                                  openssl_pkey_t *public_key);
00272     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00273     oxs_x509_cert_copy_to(oxs_x509_cert_t *x509_cert,
00274                           const axutil_env_t *env,
00275                           oxs_x509_cert_t *to);
00276 
00277         AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00278     oxs_x509_cert_get_common_name(oxs_x509_cert_t *x509_cert,
00279                                           const axutil_env_t *env);
00280     
00281     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00282     oxs_x509_cert_set_common_name(oxs_x509_cert_t *x509_cert,
00283                 const axutil_env_t *env,
00284                 axis2_char_t *common_name);
00286 #ifdef __cplusplus
00287 }
00288 #endif
00289 
00290 #endif                          /* OXS_X509_CERT */

Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/openssl__constants_8h.html0000644000076500007650000002044111202454455024026 0ustar shankarshankar Rampart/C: openssl_constants.h File Reference

openssl_constants.h File Reference

Constants for the openssl wrapper. More...

#include <axis2_util.h>

Go to the source code of this file.

Defines

#define OPENSSL_ENCRYPT   1
#define OPENSSL_DECRYPT   0
#define OPENSSL_LEAVE_UNCHANGED   -1
#define OPENSSL_EVP_des_ede3_cbc   "EVP_des_ede3_cbc"
#define OPENSSL_EVP_aes_128_cbc   "EVP_aes_128_cbc"
#define OPENSSL_EVP_aes_192_cbc   "EVP_aes_192_cbc"
#define OPENSSL_EVP_aes_256_cbc   "EVP_aes_256_cbc"
#define OPENSSL_HMAC_SHA1   "HmacSha1"
#define OPENSSL_HMAC_SHA1_KEY_LEN   32
#define OPENSSL_RSA_ENCRYPTION   "rsaEncryption"
#define OPENSSL_RSA_PKCS1_PADDING   "RSA_PKCS1_PADDING"
#define OPENSSL_RSA_PKCS1_OAEP_PADDING   "RSA_PKCS1_OAEP_PADDING"
#define OPENSSL_DEFAULT_IV8   "01234567"
#define OPENSSL_DEFAULT_IV16   "0123456701234567"
#define OPENSSL_DEFAULT_IV24   "012345670123456701234567"
#define OPENSSL_DEFAULT_LABEL_FOR_PSHA1   "WS-SecureConversation"
#define OPENSSL_DEFAULT_KEY_LEN_FOR_PSHA1   32
#define OPENSSL_DEFAULT_KEY_OFFSET_FOR_PSHA1   0


Detailed Description

Constants for the openssl wrapper.


Generated on Wed May 13 10:52:53 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/html/oxs__iv_8h-source.html0000644000076500007650000001230411202454454023052 0ustar shankarshankar Rampart/C: oxs_iv.h Source File

oxs_iv.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef OXS_IV_H
00019 #define OXS_IV_H
00020 
00021 
00032 #include <axis2_defines.h>
00033 #include <oxs_constants.h>
00034 #include <openssl_constants.h>
00035 #include <axutil_env.h>
00036 
00037 #ifdef __cplusplus
00038 extern "C"
00039 {
00040 #endif
00041 
00042 
00043 #define OXS_IV_DEFAULT    OPENSSL_DEFAULT_IV16
00044 
00051     AXIS2_EXTERN axis2_char_t* AXIS2_CALL
00052     oxs_iv_generate_for_algo(const axutil_env_t *env,
00053                              axis2_char_t *key_algo);
00054 
00055 
00056 
00058 #ifdef __cplusplus
00059 }
00060 #endif
00061 
00062 #endif                          /* OXS_IV_H */

Generated on Wed May 13 10:52:52 2009 for Rampart/C by  doxygen 1.5.5
rampartc-src-1.3.0/xdocs/api/doxygenconf0000644000076500007650000014223111202453377020131 0ustar shankarshankar# Doxyfile 1.4.2 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project # # All text after a hash (#) is considered a comment and will be ignored # The format is: # TAG = value [value, ...] # For lists items can also be appended using: # TAG += value [value, ...] # Values that contain spaces should be placed between quotes (" ") #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- # The PROJECT_NAME tag is a single word (or a sequence of words surrounded # by quotes) that should identify the project. PROJECT_NAME = Rampart/C # The PROJECT_NUMBER tag can be used to enter a project or revision number. # This could be handy for archiving the generated documentation or # if some version control system is used. PROJECT_NUMBER = 1.3.0 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. # If a relative path is entered, it will be relative to the location # where doxygen was started. If left blank the current directory will be used. OUTPUT_DIRECTORY = ./ # If the CREATE_SUBDIRS tag is set to YES, then doxygen will create # 4096 sub-directories (in 2 levels) under the output directory of each output # format and will distribute the generated files over these directories. # Enabling this option can be useful when feeding doxygen a huge amount of # source files, where putting all generated files in the same directory would # otherwise cause performance problems for the file system. CREATE_SUBDIRS = NO # The OUTPUT_LANGUAGE tag is used to specify the language in which all # documentation generated by doxygen is written. Doxygen will use this # information to generate all constant output in the proper language. # The default language is English, other supported languages are: # Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, # Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese, # Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian, # Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, # Swedish, and Ukrainian. OUTPUT_LANGUAGE = English # This tag can be used to specify the encoding used in the generated output. # The encoding is not always determined by the language that is chosen, # but also whether or not the output is meant for Windows or non-Windows users. # In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES # forces the Windows encoding (this is the default for the Windows binary), # whereas setting the tag to NO uses a Unix-style encoding (the default for # all platforms other than Windows). USE_WINDOWS_ENCODING = NO # If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will # include brief member descriptions after the members that are listed in # the file and class documentation (similar to JavaDoc). # Set to NO to disable this. BRIEF_MEMBER_DESC = YES # If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend # the brief description of a member or function before the detailed description. # Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the # brief descriptions will be completely suppressed. REPEAT_BRIEF = YES # This tag implements a quasi-intelligent brief description abbreviator # that is used to form the text in various listings. Each string # in this list, if found as the leading text of the brief description, will be # stripped from the text and the result after processing the whole list, is # used as the annotated text. Otherwise, the brief description is used as-is. # If left blank, the following values are used ("$name" is automatically # replaced with the name of the entity): "The $name class" "The $name widget" # "The $name file" "is" "provides" "specifies" "contains" # "represents" "a" "an" "the" ABBREVIATE_BRIEF = # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then # Doxygen will generate a detailed section even if there is only a brief # description. ALWAYS_DETAILED_SEC = NO # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all # inherited members of a class in the documentation of that class as if those # members were ordinary class members. Constructors, destructors and assignment # operators of the base classes will not be shown. INLINE_INHERITED_MEMB = NO # If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full # path before files name in the file list and in the header files. If set # to NO the shortest path that makes the file name unique will be used. FULL_PATH_NAMES = NO # If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag # can be used to strip a user-defined part of the path. Stripping is # only done if one of the specified strings matches the left-hand part of # the path. The tag can be used to show relative paths in the file list. # If left blank the directory from which doxygen is run is used as the # path to strip. STRIP_FROM_PATH = # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of # the path mentioned in the documentation of a class, which tells # the reader which header file to include in order to use a class. # If left blank only the name of the header file containing the class # definition is used. Otherwise one should specify the include paths that # are normally passed to the compiler using the -I flag. STRIP_FROM_INC_PATH = # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter # (but less readable) file names. This can be useful is your file systems # doesn't support long names like on DOS, Mac, or CD-ROM. SHORT_NAMES = NO # If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen # will interpret the first line (until the first dot) of a JavaDoc-style # comment as the brief description. If set to NO, the JavaDoc # comments will behave just like the Qt-style comments (thus requiring an # explicit @brief command for a brief description. JAVADOC_AUTOBRIEF = NO # The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen # treat a multi-line C++ special comment block (i.e. a block of //! or /// # comments) as a brief description. This used to be the default behaviour. # The new default is to treat a multi-line C++ comment block as a detailed # description. Set this tag to YES if you prefer the old behaviour instead. MULTILINE_CPP_IS_BRIEF = NO # If the DETAILS_AT_TOP tag is set to YES then Doxygen # will output the detailed description near the top, like JavaDoc. # If set to NO, the detailed description appears after the member # documentation. DETAILS_AT_TOP = NO # If the INHERIT_DOCS tag is set to YES (the default) then an undocumented # member inherits the documentation from any documented member that it # re-implements. INHERIT_DOCS = YES # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC # tag is set to YES, then doxygen will reuse the documentation of the first # member in the group (if any) for the other members of the group. By default # all members of a group must be documented explicitly. DISTRIBUTE_GROUP_DOC = NO # If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce # a new page for each member. If set to NO, the documentation of a member will # be part of the file/class/namespace that contains it. SEPARATE_MEMBER_PAGES = NO # The TAB_SIZE tag can be used to set the number of spaces in a tab. # Doxygen uses this value to replace tabs by spaces in code fragments. TAB_SIZE = 8 # This tag can be used to specify a number of aliases that acts # as commands in the documentation. An alias has the form "name=value". # For example adding "sideeffect=\par Side Effects:\n" will allow you to # put the command \sideeffect (or @sideeffect) in the documentation, which # will result in a user-defined paragraph with heading "Side Effects:". # You can put \n's in the value part of an alias to insert newlines. ALIASES = # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C # sources only. Doxygen will then generate output that is more tailored for C. # For instance, some of the names that are used will be different. The list # of all members will be omitted, etc. OPTIMIZE_OUTPUT_FOR_C = NO # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources # only. Doxygen will then generate output that is more tailored for Java. # For instance, namespaces will be presented as packages, qualified scopes # will look different, etc. OPTIMIZE_OUTPUT_JAVA = NO # Set the SUBGROUPING tag to YES (the default) to allow class member groups of # the same type (for instance a group of public functions) to be put as a # subgroup of that type (e.g. under the Public Functions section). Set it to # NO to prevent subgrouping. Alternatively, this can be done per class using # the \nosubgrouping command. SUBGROUPING = YES #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- # If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in # documentation are documented, even if no documentation was available. # Private class members and static file members will be hidden unless # the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES EXTRACT_ALL = NO # If the EXTRACT_PRIVATE tag is set to YES all private members of a class # will be included in the documentation. EXTRACT_PRIVATE = NO # If the EXTRACT_STATIC tag is set to YES all static members of a file # will be included in the documentation. EXTRACT_STATIC = NO # If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) # defined locally in source files will be included in the documentation. # If set to NO only classes defined in header files are included. EXTRACT_LOCAL_CLASSES = YES # This flag is only useful for Objective-C code. When set to YES local # methods, which are defined in the implementation section but not in # the interface are included in the documentation. # If set to NO (the default) only methods in the interface are included. EXTRACT_LOCAL_METHODS = NO # If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all # undocumented members of documented classes, files or namespaces. # If set to NO (the default) these members will be included in the # various overviews, but no documentation section is generated. # This option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_MEMBERS = NO # If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all # undocumented classes that are normally visible in the class hierarchy. # If set to NO (the default) these classes will be included in the various # overviews. This option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_CLASSES = NO # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all # friend (class|struct|union) declarations. # If set to NO (the default) these declarations will be included in the # documentation. HIDE_FRIEND_COMPOUNDS = NO # If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any # documentation blocks found inside the body of a function. # If set to NO (the default) these blocks will be appended to the # function's detailed documentation block. HIDE_IN_BODY_DOCS = NO # The INTERNAL_DOCS tag determines if documentation # that is typed after a \internal command is included. If the tag is set # to NO (the default) then the documentation will be excluded. # Set it to YES to include the internal documentation. INTERNAL_DOCS = NO # If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate # file names in lower-case letters. If set to YES upper-case letters are also # allowed. This is useful if you have classes or files whose names only differ # in case and if your file system supports case sensitive file names. Windows # and Mac users are advised to set this option to NO. CASE_SENSE_NAMES = YES # If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen # will show members with their full class and namespace scopes in the # documentation. If set to YES the scope will be hidden. HIDE_SCOPE_NAMES = NO # If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen # will put a list of the files that are included by a file in the documentation # of that file. SHOW_INCLUDE_FILES = YES # If the INLINE_INFO tag is set to YES (the default) then a tag [inline] # is inserted in the documentation for inline members. INLINE_INFO = YES # If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen # will sort the (detailed) documentation of file and class members # alphabetically by member name. If set to NO the members will appear in # declaration order. SORT_MEMBER_DOCS = YES # If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the # brief documentation of file, namespace and class members alphabetically # by member name. If set to NO (the default) the members will appear in # declaration order. SORT_BRIEF_DOCS = NO # If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be # sorted by fully-qualified names, including namespaces. If set to # NO (the default), the class list will be sorted only by class name, # not including the namespace part. # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. # Note: This option applies only to the class list, not to the # alphabetical list. SORT_BY_SCOPE_NAME = NO # The GENERATE_TODOLIST tag can be used to enable (YES) or # disable (NO) the todo list. This list is created by putting \todo # commands in the documentation. GENERATE_TODOLIST = YES # The GENERATE_TESTLIST tag can be used to enable (YES) or # disable (NO) the test list. This list is created by putting \test # commands in the documentation. GENERATE_TESTLIST = YES # The GENERATE_BUGLIST tag can be used to enable (YES) or # disable (NO) the bug list. This list is created by putting \bug # commands in the documentation. GENERATE_BUGLIST = YES # The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or # disable (NO) the deprecated list. This list is created by putting # \deprecated commands in the documentation. GENERATE_DEPRECATEDLIST= YES # The ENABLED_SECTIONS tag can be used to enable conditional # documentation sections, marked by \if sectionname ... \endif. ENABLED_SECTIONS = # The MAX_INITIALIZER_LINES tag determines the maximum number of lines # the initial value of a variable or define consists of for it to appear in # the documentation. If the initializer consists of more lines than specified # here it will be hidden. Use a value of 0 to hide initializers completely. # The appearance of the initializer of individual variables and defines in the # documentation can be controlled using \showinitializer or \hideinitializer # command in the documentation regardless of this setting. MAX_INITIALIZER_LINES = 30 # Set the SHOW_USED_FILES tag to NO to disable the list of files generated # at the bottom of the documentation of classes and structs. If set to YES the # list will mention the files that were used to generate the documentation. SHOW_USED_FILES = YES # If the sources in your project are distributed over multiple directories # then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy # in the documentation. SHOW_DIRECTORIES = YES # The FILE_VERSION_FILTER tag can be used to specify a program or script that # doxygen should invoke to get the current version for each file (typically from the # version control system). Doxygen will invoke the program by executing (via # popen()) the command , where is the value of # the FILE_VERSION_FILTER tag, and is the name of an input file # provided by doxygen. Whatever the progam writes to standard output # is used as the file version. See the manual for examples. FILE_VERSION_FILTER = #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- # The QUIET tag can be used to turn on/off the messages that are generated # by doxygen. Possible values are YES and NO. If left blank NO is used. QUIET = NO # The WARNINGS tag can be used to turn on/off the warning messages that are # generated by doxygen. Possible values are YES and NO. If left blank # NO is used. WARNINGS = YES # If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings # for undocumented members. If EXTRACT_ALL is set to YES then this flag will # automatically be disabled. WARN_IF_UNDOCUMENTED = YES # If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for # potential errors in the documentation, such as not documenting some # parameters in a documented function, or documenting parameters that # don't exist or using markup commands wrongly. WARN_IF_DOC_ERROR = YES # This WARN_NO_PARAMDOC option can be abled to get warnings for # functions that are documented, but have no documentation for their parameters # or return value. If set to NO (the default) doxygen will only warn about # wrong or incomplete parameter documentation, but not about the absence of # documentation. WARN_NO_PARAMDOC = NO # The WARN_FORMAT tag determines the format of the warning messages that # doxygen can produce. The string should contain the $file, $line, and $text # tags, which will be replaced by the file and line number from which the # warning originated and the warning text. Optionally the format may contain # $version, which will be replaced by the version of the file (if it could # be obtained via FILE_VERSION_FILTER) WARN_FORMAT = "$file:$line: $text" # The WARN_LOGFILE tag can be used to specify a file to which warning # and error messages should be written. If left blank the output is written # to stderr. WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- # The INPUT tag can be used to specify the files and/or directories that contain # documented source files. You may enter file names like "myfile.cpp" or # directories like "/usr/src/myproject". Separate the files or directories # with spaces. INPUT = ../../include/ # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank the following patterns are tested: # *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx # *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm FILE_PATTERNS = # The RECURSIVE tag can be used to turn specify whether or not subdirectories # should be searched for input files as well. Possible values are YES and NO. # If left blank NO is used. RECURSIVE = NO # The EXCLUDE tag can be used to specify files and/or directories that should # excluded from the INPUT source files. This way you can easily exclude a # subdirectory from a directory tree whose root is specified with the INPUT tag. EXCLUDE = # The EXCLUDE_SYMLINKS tag can be used select whether or not files or # directories that are symbolic links (a Unix filesystem feature) are excluded # from the input. EXCLUDE_SYMLINKS = NO # If the value of the INPUT tag contains directories, you can use the # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude # certain files from those directories. EXCLUDE_PATTERNS = # The EXAMPLE_PATH tag can be used to specify one or more files or # directories that contain example code fragments that are included (see # the \include command). EXAMPLE_PATH = # If the value of the EXAMPLE_PATH tag contains directories, you can use the # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank all files are included. EXAMPLE_PATTERNS = # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be # searched for input files to be used with the \include or \dontinclude # commands irrespective of the value of the RECURSIVE tag. # Possible values are YES and NO. If left blank NO is used. EXAMPLE_RECURSIVE = NO # The IMAGE_PATH tag can be used to specify one or more files or # directories that contain image that are included in the documentation (see # the \image command). IMAGE_PATH = # The INPUT_FILTER tag can be used to specify a program that doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program # by executing (via popen()) the command , where # is the value of the INPUT_FILTER tag, and is the name of an # input file. Doxygen will then use the output that the filter program writes # to standard output. If FILTER_PATTERNS is specified, this tag will be # ignored. INPUT_FILTER = # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern # basis. Doxygen will compare the file name with each pattern and apply the # filter if there is a match. The filters are a list of the form: # pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further # info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER # is applied to all files. FILTER_PATTERNS = # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using # INPUT_FILTER) will be used to filter the input files when producing source # files to browse (i.e. when SOURCE_BROWSER is set to YES). FILTER_SOURCE_FILES = NO #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- # If the SOURCE_BROWSER tag is set to YES then a list of source files will # be generated. Documented entities will be cross-referenced with these sources. # Note: To get rid of all source code in the generated output, make sure also # VERBATIM_HEADERS is set to NO. SOURCE_BROWSER = NO # Setting the INLINE_SOURCES tag to YES will include the body # of functions and classes directly in the documentation. INLINE_SOURCES = NO # Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct # doxygen to hide any special comment blocks from generated source code # fragments. Normal C and C++ comments will always remain visible. STRIP_CODE_COMMENTS = YES # If the REFERENCED_BY_RELATION tag is set to YES (the default) # then for each documented function all documented # functions referencing it will be listed. REFERENCED_BY_RELATION = YES # If the REFERENCES_RELATION tag is set to YES (the default) # then for each documented function all documented entities # called/used by that function will be listed. REFERENCES_RELATION = YES # If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen # will generate a verbatim copy of the header file for each class for # which an include is specified. Set to NO to disable this. VERBATIM_HEADERS = YES #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- # If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index # of all compounds will be generated. Enable this if the project # contains a lot of classes, structs, unions or interfaces. ALPHABETICAL_INDEX = NO # If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then # the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns # in which this list will be split (can be a number in the range [1..20]) COLS_IN_ALPHA_INDEX = 5 # In case all classes in a project start with a common prefix, all # classes will be put under the same header in the alphabetical index. # The IGNORE_PREFIX tag can be used to specify one or more prefixes that # should be ignored while generating the index headers. IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- # If the GENERATE_HTML tag is set to YES (the default) Doxygen will # generate HTML output. GENERATE_HTML = YES # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `html' will be used as the default path. HTML_OUTPUT = html # The HTML_FILE_EXTENSION tag can be used to specify the file extension for # each generated HTML page (for example: .htm,.php,.asp). If it is left blank # doxygen will generate files with .html extension. HTML_FILE_EXTENSION = .html # The HTML_HEADER tag can be used to specify a personal HTML header for # each generated HTML page. If it is left blank doxygen will generate a # standard header. HTML_HEADER = # The HTML_FOOTER tag can be used to specify a personal HTML footer for # each generated HTML page. If it is left blank doxygen will generate a # standard footer. HTML_FOOTER = # The HTML_STYLESHEET tag can be used to specify a user-defined cascading # style sheet that is used by each HTML page. It can be used to # fine-tune the look of the HTML output. If the tag is left blank doxygen # will generate a default style sheet. Note that doxygen will try to copy # the style sheet file to the HTML output directory, so don't put your own # stylesheet in the HTML output directory as well, or it will be erased! HTML_STYLESHEET = # If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, # files or namespaces will be aligned in HTML using tables. If set to # NO a bullet list will be used. HTML_ALIGN_MEMBERS = YES # If the GENERATE_HTMLHELP tag is set to YES, additional index files # will be generated that can be used as input for tools like the # Microsoft HTML help workshop to generate a compressed HTML help file (.chm) # of the generated HTML documentation. GENERATE_HTMLHELP = NO # If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can # be used to specify the file name of the resulting .chm file. You # can add a path in front of the file if the result should not be # written to the html output directory. CHM_FILE = # If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can # be used to specify the location (absolute path including file name) of # the HTML help compiler (hhc.exe). If non-empty doxygen will try to run # the HTML help compiler on the generated index.hhp. HHC_LOCATION = # If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag # controls if a separate .chi index file is generated (YES) or that # it should be included in the master .chm file (NO). GENERATE_CHI = NO # If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag # controls whether a binary table of contents is generated (YES) or a # normal table of contents (NO) in the .chm file. BINARY_TOC = NO # The TOC_EXPAND flag can be set to YES to add extra items for group members # to the contents of the HTML help documentation and to the tree view. TOC_EXPAND = NO # The DISABLE_INDEX tag can be used to turn on/off the condensed index at # top of each HTML page. The value NO (the default) enables the index and # the value YES disables it. DISABLE_INDEX = NO # This tag can be used to set the number of enum values (range [1..20]) # that doxygen will group on one line in the generated HTML documentation. ENUM_VALUES_PER_LINE = 4 # If the GENERATE_TREEVIEW tag is set to YES, a side panel will be # generated containing a tree-like index structure (just like the one that # is generated for HTML Help). For this to work a browser that supports # JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, # Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are # probably better off using the HTML help feature. GENERATE_TREEVIEW = NO # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be # used to set the initial width (in pixels) of the frame in which the tree # is shown. TREEVIEW_WIDTH = 250 #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- # If the GENERATE_LATEX tag is set to YES (the default) Doxygen will # generate Latex output. GENERATE_LATEX = NO # The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `latex' will be used as the default path. LATEX_OUTPUT = latex # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be # invoked. If left blank `latex' will be used as the default command name. LATEX_CMD_NAME = latex # The MAKEINDEX_CMD_NAME tag can be used to specify the command name to # generate index for LaTeX. If left blank `makeindex' will be used as the # default command name. MAKEINDEX_CMD_NAME = makeindex # If the COMPACT_LATEX tag is set to YES Doxygen generates more compact # LaTeX documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_LATEX = NO # The PAPER_TYPE tag can be used to set the paper type that is used # by the printer. Possible values are: a4, a4wide, letter, legal and # executive. If left blank a4wide will be used. PAPER_TYPE = a4wide # The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX # packages that should be included in the LaTeX output. EXTRA_PACKAGES = # The LATEX_HEADER tag can be used to specify a personal LaTeX header for # the generated latex document. The header should contain everything until # the first chapter. If it is left blank doxygen will generate a # standard header. Notice: only use this tag if you know what you are doing! LATEX_HEADER = # If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated # is prepared for conversion to pdf (using ps2pdf). The pdf file will # contain links (just like the HTML output) instead of page references # This makes the output suitable for online browsing using a pdf viewer. PDF_HYPERLINKS = NO # If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of # plain latex in the generated Makefile. Set this option to YES to get a # higher quality PDF documentation. USE_PDFLATEX = NO # If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. # command to the generated LaTeX files. This will instruct LaTeX to keep # running if errors occur, instead of asking the user for help. # This option is also used when generating formulas in HTML. LATEX_BATCHMODE = NO # If LATEX_HIDE_INDICES is set to YES then doxygen will not # include the index chapters (such as File Index, Compound Index, etc.) # in the output. LATEX_HIDE_INDICES = NO #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- # If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output # The RTF output is optimized for Word 97 and may not look very pretty with # other RTF readers or editors. GENERATE_RTF = NO # The RTF_OUTPUT tag is used to specify where the RTF docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `rtf' will be used as the default path. RTF_OUTPUT = rtf # If the COMPACT_RTF tag is set to YES Doxygen generates more compact # RTF documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_RTF = NO # If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated # will contain hyperlink fields. The RTF file will # contain links (just like the HTML output) instead of page references. # This makes the output suitable for online browsing using WORD or other # programs which support those fields. # Note: wordpad (write) and others do not support links. RTF_HYPERLINKS = NO # Load stylesheet definitions from file. Syntax is similar to doxygen's # config file, i.e. a series of assignments. You only have to provide # replacements, missing definitions are set to their default value. RTF_STYLESHEET_FILE = # Set optional variables used in the generation of an rtf document. # Syntax is similar to doxygen's config file. RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- # If the GENERATE_MAN tag is set to YES (the default) Doxygen will # generate man pages GENERATE_MAN = NO # The MAN_OUTPUT tag is used to specify where the man pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `man' will be used as the default path. MAN_OUTPUT = man # The MAN_EXTENSION tag determines the extension that is added to # the generated man pages (default is the subroutine's section .3) MAN_EXTENSION = .3 # If the MAN_LINKS tag is set to YES and Doxygen generates man output, # then it will generate one additional man file for each entity # documented in the real man page(s). These additional files # only source the real man page, but without them the man command # would be unable to find the correct page. The default is NO. MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- # If the GENERATE_XML tag is set to YES Doxygen will # generate an XML file that captures the structure of # the code including all documentation. GENERATE_XML = NO # The XML_OUTPUT tag is used to specify where the XML pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `xml' will be used as the default path. XML_OUTPUT = xml # The XML_SCHEMA tag can be used to specify an XML schema, # which can be used by a validating XML parser to check the # syntax of the XML files. XML_SCHEMA = # The XML_DTD tag can be used to specify an XML DTD, # which can be used by a validating XML parser to check the # syntax of the XML files. XML_DTD = # If the XML_PROGRAMLISTING tag is set to YES Doxygen will # dump the program listings (including syntax highlighting # and cross-referencing information) to the XML output. Note that # enabling this will significantly increase the size of the XML output. XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- # If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will # generate an AutoGen Definitions (see autogen.sf.net) file # that captures the structure of the code including all # documentation. Note that this feature is still experimental # and incomplete at the moment. GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # configuration options related to the Perl module output #--------------------------------------------------------------------------- # If the GENERATE_PERLMOD tag is set to YES Doxygen will # generate a Perl module file that captures the structure of # the code including all documentation. Note that this # feature is still experimental and incomplete at the # moment. GENERATE_PERLMOD = NO # If the PERLMOD_LATEX tag is set to YES Doxygen will generate # the necessary Makefile rules, Perl scripts and LaTeX code to be able # to generate PDF and DVI output from the Perl module output. PERLMOD_LATEX = NO # If the PERLMOD_PRETTY tag is set to YES the Perl module output will be # nicely formatted so it can be parsed by a human reader. This is useful # if you want to understand what is going on. On the other hand, if this # tag is set to NO the size of the Perl module output will be much smaller # and Perl will parse it just the same. PERLMOD_PRETTY = YES # The names of the make variables in the generated doxyrules.make file # are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. # This is useful so different doxyrules.make files included by the same # Makefile don't overwrite each other's variables. PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- # If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will # evaluate all C-preprocessor directives found in the sources and include # files. ENABLE_PREPROCESSING = YES # If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro # names in the source code. If set to NO (the default) only conditional # compilation will be performed. Macro expansion can be done in a controlled # way by setting EXPAND_ONLY_PREDEF to YES. MACRO_EXPANSION = YES # If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES # then the macro expansion is limited to the macros specified with the # PREDEFINED and EXPAND_AS_PREDEFINED tags. EXPAND_ONLY_PREDEF = YES # If the SEARCH_INCLUDES tag is set to YES (the default) the includes files # in the INCLUDE_PATH (see below) will be search if a #include is found. SEARCH_INCLUDES = YES # The INCLUDE_PATH tag can be used to specify one or more directories that # contain include files that are not input files but should be processed by # the preprocessor. INCLUDE_PATH = # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard # patterns (like *.h and *.hpp) to filter out the header-files in the # directories. If left blank, the patterns specified with FILE_PATTERNS will # be used. INCLUDE_FILE_PATTERNS = # The PREDEFINED tag can be used to specify one or more macro names that # are defined before the preprocessor is started (similar to the -D option of # gcc). The argument of the tag is a list of macros of the form: name # or name=definition (no spaces). If the definition and the = are # omitted =1 is assumed. To prevent a macro definition from being # undefined via #undef or recursively expanded use the := operator # instead of the = operator. PREDEFINED = AXIS2_DECLARE(x)=x \ AXIS2_DECLARE_NONSTD(x)=x \ AXIS2_DECLARE_DATA= \ AXIS2_CALL= # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then # this tag can be used to specify a list of macro names that should be expanded. # The macro definition that is found in the sources will be used. # Use the PREDEFINED tag if you want to use a different macro definition. EXPAND_AS_DEFINED = AXIS2_DECLARAE AXIS2_DECLARE_NONSTD AXIS2_DECLARE_DATA AXIS2_CALL # If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then # doxygen's preprocessor will remove all function-like macros that are alone # on a line, have an all uppercase name, and do not end with a semicolon. Such # function macros are typically used for boiler-plate code, and will confuse # the parser if not removed. SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::additions related to external references #--------------------------------------------------------------------------- # The TAGFILES option can be used to specify one or more tagfiles. # Optionally an initial location of the external documentation # can be added for each tagfile. The format of a tag file without # this location is as follows: # TAGFILES = file1 file2 ... # Adding location for the tag files is done as follows: # TAGFILES = file1=loc1 "file2 = loc2" ... # where "loc1" and "loc2" can be relative or absolute paths or # URLs. If a location is present for each tag, the installdox tool # does not have to be run to correct the links. # Note that each tag file must have a unique name # (where the name does NOT include the path) # If a tag file is not located in the directory in which doxygen # is run, you must also specify the path to the tagfile here. TAGFILES = # When a file name is specified after GENERATE_TAGFILE, doxygen will create # a tag file that is based on the input files it reads. GENERATE_TAGFILE = # If the ALLEXTERNALS tag is set to YES all external classes will be listed # in the class index. If set to NO only the inherited external classes # will be listed. ALLEXTERNALS = NO # If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed # in the modules index. If set to NO, only the current project's groups will # be listed. EXTERNAL_GROUPS = YES # The PERL_PATH should be the absolute path and name of the perl script # interpreter (i.e. the result of `which perl'). PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- # If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will # generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base # or super classes. Setting the tag to NO turns the diagrams off. Note that # this option is superseded by the HAVE_DOT option below. This is only a # fallback. It is recommended to install and use dot, since it yields more # powerful graphs. CLASS_DIAGRAMS = YES # If set to YES, the inheritance and collaboration graphs will hide # inheritance and usage relations if the target is undocumented # or is not a class. HIDE_UNDOC_RELATIONS = YES # If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is # available from the path. This tool is part of Graphviz, a graph visualization # toolkit from AT&T and Lucent Bell Labs. The other options in this section # have no effect if this option is set to NO (the default) HAVE_DOT = NO # If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect inheritance relations. Setting this tag to YES will force the # the CLASS_DIAGRAMS tag to NO. CLASS_GRAPH = YES # If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect implementation dependencies (inheritance, containment, and # class references variables) of the class with other documented classes. COLLABORATION_GRAPH = YES # If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen # will generate a graph for groups, showing the direct groups dependencies GROUP_GRAPHS = YES # If the UML_LOOK tag is set to YES doxygen will generate inheritance and # collaboration diagrams in a style similar to the OMG's Unified Modeling # Language. UML_LOOK = NO # If set to YES, the inheritance and collaboration graphs will show the # relations between templates and their instances. TEMPLATE_RELATIONS = YES # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT # tags are set to YES then doxygen will generate a graph for each documented # file showing the direct and indirect include dependencies of the file with # other documented files. INCLUDE_GRAPH = YES # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and # HAVE_DOT tags are set to YES then doxygen will generate a graph for each # documented header file showing the documented files that directly or # indirectly include this file. INCLUDED_BY_GRAPH = YES # If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will # generate a call dependency graph for every global function or class method. # Note that enabling this option will significantly increase the time of a run. # So in most cases it will be better to enable call graphs for selected # functions only using the \callgraph command. CALL_GRAPH = NO # If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen # will graphical hierarchy of all classes instead of a textual one. GRAPHICAL_HIERARCHY = YES # If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES # then doxygen will show the dependencies a directory has on other directories # in a graphical way. The dependency relations are determined by the #include # relations between the files in the directories. DIRECTORY_GRAPH = YES # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images # generated by dot. Possible values are png, jpg, or gif # If left blank png will be used. DOT_IMAGE_FORMAT = gif # The tag DOT_PATH can be used to specify the path where the dot tool can be # found. If left blank, it is assumed the dot tool can be found in the path. DOT_PATH = # The DOTFILE_DIRS tag can be used to specify one or more directories that # contain dot files that are included in the documentation (see the # \dotfile command). DOTFILE_DIRS = # The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width # (in pixels) of the graphs generated by dot. If a graph becomes larger than # this value, doxygen will try to truncate the graph, so that it fits within # the specified constraint. Beware that most browsers cannot cope with very # large images. MAX_DOT_GRAPH_WIDTH = 1024 # The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height # (in pixels) of the graphs generated by dot. If a graph becomes larger than # this value, doxygen will try to truncate the graph, so that it fits within # the specified constraint. Beware that most browsers cannot cope with very # large images. MAX_DOT_GRAPH_HEIGHT = 1024 # The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the # graphs generated by dot. A depth value of 3 means that only nodes reachable # from the root by following a path via at most 3 edges will be shown. Nodes # that lay further from the root node will be omitted. Note that setting this # option to 1 or 2 may greatly reduce the computation time needed for large # code bases. Also note that a graph may be further truncated if the graph's # image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH # and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default), # the graph is not depth-constrained. MAX_DOT_GRAPH_DEPTH = 0 # Set the DOT_TRANSPARENT tag to YES to generate images with a transparent # background. This is disabled by default, which results in a white background. # Warning: Depending on the platform used, enabling this option may lead to # badly anti-aliased labels on the edges of a graph (i.e. they become hard to # read). DOT_TRANSPARENT = NO # Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output # files in one run (i.e. multiple -o and -T options on the command line). This # makes dot run faster, but since only newer versions of dot (>1.8.10) # support this, this feature is disabled by default. DOT_MULTI_TARGETS = NO # If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will # generate a legend page explaining the meaning of the various boxes and # arrows in the dot generated graphs. GENERATE_LEGEND = YES # If the DOT_CLEANUP tag is set to YES (the default) Doxygen will # remove the intermediate dot files that are used to generate # the various graphs. DOT_CLEANUP = YES #--------------------------------------------------------------------------- # Configuration::additions related to the search engine #--------------------------------------------------------------------------- # The SEARCHENGINE tag specifies whether or not a search engine should be # used. If set to NO the values of all tags below this one will be ignored. SEARCHENGINE = NO rampartc-src-1.3.0/xdocs/docs/0000755000076500007650000000000011202454512016027 5ustar shankarshankarrampartc-src-1.3.0/xdocs/docs/rampartc_manual.html0000644000076500007650000001440311202453377022075 0ustar shankarshankar Manual

Preamble

This document is intended to be a reference manual for Apache Rampart/C.

For further details on Axis2/C please refer the Apache Axis2/C manual

Simplified Architecture

In a very simple view, Rampart/C consists of a core module and packages related to WS-Security and WS-Security Policy. For XML-Encryption and Signature Rampart/C uses OMXMLSecurity. Both Rampart/C and OMXMLSecurity uses Apache AXIOM and Axis2-Util libraries. OpenSSL is used as the crypto library in OMXMLSecurity.

Interface with Axis2/C

The interface between Rampart/C and Apache Axis2/C engine is the Rampart module called mod_rampart. The module has two handlers, one for the inflow and another for the outflow of the Axis2/C engine. Rampart/C directs messages to it's other components for further security related processing using these handlers.

Handlers are a way of extending capabilities of the core engine. Once the Axis2/C engine calls the invoke() method of the handler, the module can do the necessary processing over the SOAP message. Rampart/C use this mechanism to build/process security related SOAP headers.

Inside Rampart/C

Following is a detailed architecture diagram of Rampart/C

Rampart Engine

Rampart engine is the heart of Rampart/C. It sets security policies that defines the behavior of Rampart/C message processing. These policies are usually read from a selected policy.xml file depending on the message flow, which contains a set of policy assertions.

Processors and Builders

Rampart/C processes incoming SOAP message using it's processors. There are two processors in Rampart/C.

  1. Security Header Processor : Processes security header of the incoming message and make decisions upon security claims and the security policies.
  2. Token Processor : Processes token claims such as binary security token.
Similar to processes, Rampart/C uses two builders that builds outgoing messages.
  1. Security Header Builder : Builds Security headers of an outgoing message depending on security policies.
  2. Token Builder : Builds token claims such as binary security token.
These builders and processes assemble other components such as encryption, signature, UsernameToken together. Decisions are taken in these processes would result in further processing of the message or throwing of a SOAP fault.

Policy

The policy module of Rampart/C acts as the configuration module in Rampart/C. The policy module has a set of models that represents assertions. Also there are set of builders that builds these models.

Rampart/C is configured using policy assertions defined in WS-Security Policy specification (1.1 or 1.2). These policies are defined in policy.xml files. The client side policies are defined in a seperate policy.xml file located in the client's repository. The service's policies are defined in the services.xml file.

Rampart utilities

Rampart utilities groups different entities that cater for different purposes. Following is a brief description of major components inside utilities

  • Rampart context: Keeps configurations for Rampart/C. This includes certificates, keys, passwords, policies etc.
  • UsernameToken: Provides functionalities to build/process a UsernameToken.
  • TimestampToken: Provides functionalities to build/process a TimestampToken.
  • Authentication provider: The interface for authentication modules that can be plugged into Rampart/C. This allows users to define their own rules for processing user name / passwords.
  • Credentials provider: An interface for a credentials module to be plugged in. Users can provide custom user name/password pairs to build user name tokens.
  • Password callbacks: An interface for users to provide password for a given user name.

OMXMLSecurity

For XML cryptographic purposes Rampart/C uses OMXMLSecurity, which is a library written on top of Apache AXIOM. If a particular SOAP message needs to be encrypted or signed, Rampart/C get the work done through the OMXMLSecurity. Following are the functionalities of OMXMLSecurity.

  1. XML-Encryption / Decryption: This includes symmetric and asymmetric encryptions. Usually data is encrypted using a symmetric key (or a session key) which is again encrypted using an asymmetric algorithm using a public key.
  2. XML-Signature / Verification: Allows one or more part of an XML document to be signed using a private key. Also allows these signed parts to be verified.
  3. Key management: To load X509 certificates, Private keys etc, the Key management interface provide a series of functions. Keys might be stored in PEM files, PKCS12 key stores or can be in string buffers.
  4. Canonicalization: Provide Canonicalization (C14N) transform support.
  5. Creating/Processing tokens: There are number of XML elements that are introduced by security specifications. The token base in OMXMLSecurity provides functionalities to create/process such elements.

Following diagram shows the architecture of OMXMLSecurity

Please send your feedback to the Apache Axis2/C developer mailing list (rampart-c-dev@ws.apache.org). Subscription details are available on the Rampart site.

rampartc-src-1.3.0/xdocs/docs/installationguide.html0000644000076500007650000002222611202453377022450 0ustar shankarshankar Installation Guide

Apache Rampart/C Installation Guide

This document guides you on how to install Rampart/C.

You must have OpenSSL 0.9.8 (or above) installed in you system.

This release comes in two forms, source and binary. This document covers both forms.

Please send your feedback to the developer mailing list: rampart-c-dev@ws.apache.org (Subscription details are available on the Rampart/C site).

Contents

1. Installing and Running on Linux

This can be done using binary or source distributions. (Download the two distributions)

1.1. Installing the Binary Distribution

The following steps have to be followed to install and run the Rampart/C binary distribution on Linux :

  1. Extract the binary tar package to a folder.
  2. Set the AXIS2C_HOME environment variable pointing to the location where you have extracted Axis2/C
    • AXIS2C_HOME='/your_path_to_axis2c'
    • export AXIS2C_HOME
  3. Copy modules/* to $AXIS2C_HOME/modules/
  4. Copy lib/* to $AXIS2C_HOME/lib
  5. Copy services/* to $AXIS2C_HOME/services/
  6. Copy samples/* to $AXIS2C_HOME/samples/. This will copy callback modules etc.
  7. Engage Rampart/C as specified in the section Engage Rampart/C with Axis2/C
  8. Go to samples/src/rampartc/client/ and deploy the client repo
    %sh deploy_client_repo.sh
  9. Go to samples/src/rampartc/secpolicy/ and try a scenario
     %sh test_scen.sh scenarioX server-port

1.2. Installing the Source Distribution

The following steps have to be followed to install and run Rampart/C using the source distribution on Linux :

  1. Extract the source tar package to a folder.
  2. Set the AXIS2C_HOME environment variable pointing to the location where you want to install Axis2/C
    • AXIS2C_HOME='/your_desired_path_to_axis2c_installation'
    • export AXIS2C_HOME
  3. Then go to the folder where you extracted the source.
  4. Build the source
    • This can be done using the following command sequence, in the directory where you have extracted the source:
      • ./configure --prefix=${AXIS2C_HOME} --enable-static=no --with-axis2=${AXIS2C_HOME}/include/axis2-1.6.0
      • make
      • make install
    • Please run "./configure --help" in the samples folder for more information on the configure options.
  5. Engage Rampart/C as specified in the section Engage Rampart/C with Axis2/C
  6. If you need to try samples,first you need to build them. Go to samples and run the script build.sh
    	%sh build.sh
    	
  7. Then go to samples/secpolicy and try a scenario
    	%sh test_scen.sh scenarioX server-port
    	

2. Installing and Running on Microsoft Windows

This too can be done using binary or source distributions. (Download the two distributions.)

2. 1. Installing the Binary Distribution

  1. Extract the binary distribution to a folder of your choice. (example: C:\rampartc).
  2. Set the AXIS2C_HOME envirionment variable to direct to your Axis2/C Installation.
  3. SET AXIS2C_HOME=[your-path-to-axis2c]
  4. Run the deploy_rampart.bat that could be found in the root of the rampart binary distribution.
  5. Engage Rampart/C as specified in the section Engage Rampart/C with Axis2/C.
  6. Go to samples/src/rampartc/secpolicy/ and try a scenario
     test_scen.bat scenarioX server-port

2. 2. Installing Source Distribution

2.2.1. Requirements

  • The makefile shipped with this version needs Microsoft Visual Studio Compiler (cl) and the nmake build tool.
  • (Note: You can download the Microsoft VSExpress edition and Platform SDK from the Microsoft Web site. You will need to add the path to the Platform SDK Include and Lib folders to the makefile)

2.2.2. Compiling the Source

The following steps will take you through the source compilation.

  • Extract the source distribution to a folder of your choice. (Example: C:\rampartc)
  • Edit the configure.in file to specify the Axis2/C repository path and the OpenSSL installation path
    • AXIS2_BIN_DIR = path/to/where/you/have/installed/axis2
    • OPENSSL_BIN_DIR = path/to/where/you/have/installed/openssl
    • DEBUG = 1 if enabled, 0 otherwise
  • Open a DOS shell
  • cd C:\rampartc\build\win32
  • to access .Net tools, run
    • C:\rampartc\build\win32\> vcvars32.bat

    (Note: You may have to set the PATH environment variable to vcvars32.bat if MS Windows gives an error indicating that it cannot find this batch file. This file is located in <your MS Visual Studio install Directory>\VC\bin directory.)

  • To build the system and create the binary files in a directory named deploy under the build directory,
    • C:\rampartc\build\win32>nmake install
  • Engage Rampart/C as specified in the section Engage Rampart/C with Axis2/C
  • Then go to samples/secpolicy and try a scenario
    	test_scen.bat scenarioX server-port
    	

Engage Rampart/C with axis2/C

You can engage Rampart/C in global level or in service level.

Just add the following entry either to axis2.xml(gloabl level) or in services.xml(service level) corresponding to the service you want to secure.

   
   <module ref="rampart"/>

If you want to provide Secure Token Service (STS) functionality to a service, add the following entry to services.xml.

<module ref="rahas"/>

Then add following "Security" phase to the phase order in the inflow and outflow in the axis2.xml. Also add "Rahas" phase to inflow.

    <phaseOrder type="inflow">
        <phase name="Transport"/>
        <phase name="PreDispatch"/>
        <phase name="Dispatch"/>
        <phase name="PostDispatch"/>
        <phase name="Security" />
        <phase name="Rahas"/>
    </phaseOrder>
    <phaseOrder type="outflow">
        <phase name="MessageOut"/>
        <phase name="Security"/>
    </phaseOrder>

Apart from that you must define security policies for the client and the server.


CLIENT SIDE:

In the client side just drop a policy.xml file to the same location(client-repo) where you have the axis2.xml.


SERVER SIDE:

Add WS-Security Policy assertions to the services.xml.

NOTE: Please find sample security policy files that are located under samples/secpolicy

You may go through each and every scenario and see how Rampart/C is configured using the policy assertions available in respective policy files.
For each scenario there are two files

  1. client-policy.xml : Defines what the security configurations are for the client using security policies
  2. services.xml : Defines what the security configurations are for a particular service using security policies

NOTE: If you have changed a client's policy file, make sure that you change the corresponding policy assertions in the services.xml file as well, and vise versa.

rampartc-src-1.3.0/xdocs/docs/files/0000755000076500007650000000000011202454512017131 5ustar shankarshankarrampartc-src-1.3.0/xdocs/docs/files/oxs_archi.png0000644000076500007650000013153511202453376021635 0ustar shankarshankar‰PNG  IHDR;p)¦Šÿ pHYs  šœgAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<²ÚIDATxÚìZoLE(­Å PlªØZ…¦`E Å ûÁPÿÄH›ZIÁ¤ib±g$ƒÒôZZbüÓ‹ ˆ´©Pƒl )H1T@1ƒE,X”F’*p·»Þ›»··»·{»3"/™ìÌîþffï½ù½Ç‘E.©y±mu»-få\™’ü#˜üäåÜr±ç9^õij¬%OnÞ‡{ÛRãå>¼‡c”% 2‘ Ôç%²$†"‰íäïKak .çæ,®êpa³­c‹«;PA.Í 'Š7vÖ!2cBDÎ  '8ôô£ë˜°‡+ÏÒ«AA¸^0ŽM¿[”k0ƒ>î×˃dh ÇÇÊú¸®s-&;váŒ,è›ÎNÚª«ª ±`AVbäd$û Ê LPwûÚÓÕÇMþ>N• xø£h×Eœ`  -Éɪ«vÖ.0¸˜`-Ù2S›-#ѱ›Lc ZN×¹3Γ1ié9¦1Þ ½1ŒÎñ‚íMØ ªÿbˆ+ÙŽd¦ ÒÚ6ËÁ¢U¦• ˜ˆÈÕäË“U*¥ª$H$ó©&•V6{Å ÜŒjí½Jºú®ê)Hà šó‰Ó*G‰Ã}ç:R×P¯ëRFX¥‚Þ>ÞkÕÅ\C‡ë¹>˜Ç«XŒAC?3cíLǼ[A„óØý×Eƒ*?û‘ ˃ˆÌƒ$·ìaZó`ÑG~á˜õãÞ§(Idï®XË¸ŠÆË¤, ÆlòÂ)ùMññäá”2vï–cÜCe"\ÌjCLˆ$qÛá”D±§×;ÐêÅ&I¶ ‰y=gª!òŸ´ôlÊKôÈ¢ΜÂû‡ *«íç²¥¢þ1,VÉ&'Æ(?ñu\ƒB•H’zlÎéX-ë^먦ÏsбXˆ1ÈÙQnzhà¢*ƒ?ZC^Û»Ýk%.:ö~™MÑ;U[®›Çiq,†&0fóIñ·r­‰§‹ ºÌÝʈIkqø>0bhzdOgÝä}çbƱDâZSÔŅĤÍ\lzF +oXf ×öí¸Œ={º‘yÝ  ÉûÿS%×ÌìfLmµ«RR”g“WPâû[¨.V¸/ Só¡ëgœ§Xº…bÛÉÖaïS¬¸(Ÿ¬¹-Œ$nŒ$““öîq²<$˜<±m-­£4=BßÃjÞ©Öa®1¯ä«xÇ Q-+-u¶w|æfò)fw}ôèè(‰ŠŠ¢ýWóòHxx8y½°’ÍØ¸8“˜¡HV%,&‰T9 ‘¡tŒ·bù2:~æñ»åE##V’”Íž£_[…qÿ¥IÕøÓæŸø“U÷>IRÆ^²Ùh3’7Þë–±˜‹¡r@Ž””Èýº†zýøóAQÜšš±«]Íl|}Z°ä¾æ`s-O.(¿À…UV§¦¦HBü}ÔòN45‘¯Z[ɱРù=ÁsЉºåH³±Ã+4ÄŒ¥äéí&"×1¯Ä*“Up+tË;wÒ†ï!FæAÚL×lì°ÜÑŒæàá%¢$qc!Õ(¯ëgÂÈAZ[+1[¡íÚ¿6S=Ƥ`ƃ…8úÊÏÿÞ¯üö—ܯ?3D6ǹbp÷ÊŠ"¯‹YˆA‹™ ãa%’A²ª´Fx†!–;´.ÆjA ‚£àé––9µ 9ÕðÃÅp}¤JeÃ3Ü/ôEO²êÒr,<áx†r¬ Ò°˜R`aàÚÚ ÎÁÛpŸ0'kCì¬Û¢‘"@ž† ž‚ Í žõä’+‚‘Sh'›ÕmQÍGP€´mIÂË‚ü ÒrÉ•«u1¥1Ú¢ü¥}äA’{Óh~²B ÆÓÿX%£»Á‘êwüÇz+ÈG 4©ÜÛüââp±Õëw,h»t" .öìœ]hEÇG¹6¶áöïj?--X¯ òÒO­õ ”bi}j‘XšçJi}Šm-ˆ>´´"¦ (†P_C‚¥¥¦K(#RF°r“Ìf³îvÏfv3³wçL«mz {'¹sÏܳ3gÎÌžßÑ(†×:æ!~ä´­“>5ä– |TéC¢R>·Ü´r9uº'oIÇ~]ó2±>,6ÒÆ–Ρv\}.ÙcCõÈ6í߯ ãgÓæ@ç8èãR=¶‡rh#‰ž€ÑY2ÇEßSë‹ÆÙwn÷…L6˜°J±#}Í£é,2ÇNwuÈ«¾53Ú olt¸v»°¨†¡¸"{Uÿ%k’‡héstw’²ÆîUðã'9éôÍn,˾w>ø:W߯U±bIt:H‰tÕ‰/ŸXøÖÏÛdjÎPþ ir]'ÛSÓùB” Ÿ?$)ä1"vÅ£è#òzL†QõõôÉbë?lgÑÈ™îÐQ5WŒ¤£²_Ûߨ—«TÕ—Gûèô=²jxtõÝ…¿ä'HOÑøœ—Ÿ^!ÆÇ}1kV”ž·dacêY|rÿù5«ƒ>Õ0ôÄ3ß±FÓ*kœŽ®_ŠL+_|sæ’,¶Â¥vÖRç$…w»!¾ÛE°&ß`œB>ç¡vÆ¡~"‹‹ÓÖúᣌs_<±¡IlÚØdÕä-­CíN#±cëѦ$ÉÎ0g>sÕ§†Òà å¹eyÍ*rZùŒiE¤çNº7×JŸš—ëåÈ ¬õÉüf]g±"0Ó±‘R>mÚV±>[B‡ÚÚo&i)×G¬ãä±ç¼¥œ¿ZÙ:}ýWÅ©sÑje;rÂ6£¹“DÖ ÚE¤›ÝûèŒóî¾É‘/öeYBǤ¯Ð¶#,dúE„l•*•0`¤¥œ£O¦Ëéâ)ˆvu¯ŽvÙs¨=uÕQ=&}µ‡yZߎ; Å:þ$ŸÌ¹é"äÃöн¯ ;¾ûáÏ$B®9¦ýUûGV4DÎMGãìoyÌêýmÇ.Ê•$à™—ž\žûþ¿«ÿˆîžAeµ‰S‹¢yqÓ2 |Ù}Y.ë›ï—PÊ÷áðýmpD¬^9_<¼rç{‡Äœ;KâÙKÅè˜'Np2 ‘8jx"tÊ jTXĸñô¦0¥]--â™Í›ÅÉÎNy„,[8v¼ž?·!ÎxUpm•¢Áëîž?Ru40 èê0 ôNÿåª4 dÑ}1ųTÖqz7î¹Pê'¨š·[›e˜Gß$9ˆ‚@uoE0 qÙÏÁ{eè«7‘OϸÖmÅ•ÀÉž‚ºªT CcôÐ$ǘ—¥klÑZuûÕʾÉn"qT"ÇDÖÝ»V^ïš×3­"ªf{¸tAóÀ=sR$úw"k®;URÄ +»Ÿ3¾„1õ“>ﯘ¬Q?'Ûöã¯ú§é2õaÒ÷ÿ¢ÆÔÎjÅÑÃ%jê4M]xR§hr¤NÐ1Ž =ù©çHòºõÍãâÂÅŸÅðÈØÌ0Nõê§ZôЖ7rþ€½+­¢ÃÓŠ H "T¢Eñµ‘Ö+ ^xPL$F¬A("Þ1*X4ÕxàE5F A ÔV«å¶}»öÛ×ÿõŸÙó½ÇΖ°2yÝÎÎ~ovÿ÷Ï?³ÿÿMNüã98¥xØ;æœ)%‘ápÑøXyRQó^ví¬mò’QÈÖ6@åsDŸ>…¢ûɧYÿ»uähÇsÝdÑÇï‹’ÁWÅ–çPP²ÈúœÕ7P{:—>¡P6¬“Ú£âvÍœâ[ÊãIV,™9„ÙpÙÄrÈ+OS@{QaWQÔ· TÀ§f|úûÑç‡ÞAާ»Ò‘EZäÔ²&f¬ #††3mÖ2gË“IÜgº¢ÛÒEÝ?z}XtNGѾ]ËŽWñùï6ܺzCKÿäTš4âb)ì‚Ýv3³I©;3ŸP´j'ú7(pF›#ž©!(Ré”çÚK›Bé°å Þ›ãU¬—I0ƒ ¹¤@¼ûé& ÷¿•‡ã¤öÈ4‚Èw×ìbÍMwˆÊÍ$Å Šeà Ð?ÊyÆšK’y¬Ve„gZ#²µƒÒÌxí5+Ð Âñ(RÅA°(ÿŸëól ¥‚¥° Ç‘|¯ˆ|¤9àáÑ'å”ÅñÜ4Rº¹õi(M2™¤8°tjFOZö ’q@ÉC„Ñ«°8M³n·<ó?úMtë”'ú÷ÎOEëpÊyˆSÐ,¢hÔ°F.[·íKWn³áÖÕ‡çpykD›ë¶í!m”n‚tÁ^’*¦Óð赡gþAñaa ¤°6WßϲŸäws/¼½ÆvþÕ{|}&Ž“kX{ ×gLï’¶¿ÅðtH”ý3\öiÆpD{B‘²Ç4%Ìtö5L·pÉò,^²Ê*ºäÑ)sõ®jiP»å1ÄÌ…¿ˆáWžœb£àÌ7ÙZ \;²©:?(èzœ(èÒ1ԛ˕ó‚âÞ¡?LŽÅ:YžÙ¿jÃÕ·ÎÃÂÝ ºä‹ Ï ÷.þæÇÔßac©x RƒuS,OƒÂÞyý¡B¾º`­„›m®WÐþ嚉_ ± aºžŽ‘*Âþ¡¨>ÏÚµk­ÏÚÚZi‡öi&Æ;Ú*Ç~k=Ö:ÃDÊjX…ã´àQö U¾7‡ïÒ ¶»½{vYÇ^ÌwRG3ô;°¾CëLnSv?¼ ýËÚyUú‡Ù2.ÇëiS¾í`Ck<ê:{1B(›“ã†iy8NÚSu>]åÊDqÒªs üú#ƒ©z¸³i›‡îó$"p˜f#œ‘ˆÞgXçü’¡eåßÕÛD¿âAÖëƒéOŒž(3Ÿ(µn’®òe£½ÊiEB”—´þüQãŸô\ö럇 r-8,¼7þ,jw×I¸¡º<²òž¿Lþ‹§WD<¤n*OVÉMq’àF ËF „|ÑN%Hr[åuÃÓcyìÖª8”CK/?ñ çeOÓ î‘oÚ.tmÔÄq$ž77¡9$#êþ9mÿN9ÆôÖŸ~¾›9•®ûšp¶Ì̺N<3’EBS<7{µVܯ>X åÞæœ:à®8†9D6"9´N¼ãìP®?íÍUbß 1wVYêS¿/´þ”Nl"+²å§?ódiüijûšj¶}Ž´¦ß~Z@* r·÷¾ëKfë$në-›±RÊß§æëJN<`ýZ¸hc²? ‡‚7ª]Oh#úöÊ÷¼ˆÛ˶~ùšbså.QØ«ƒÅ‘ Fbs˜?‹Öo:)α3 ¯bš®I…¾1ï@¡ás‘#Ï‘àY¡kJ³aªdT†«âP}þ±­<ë½”‡;þrköúßk]‡0zÒ.ã令÷Ól°<§/׊ëÖ8æ°r$ ¥„³îdùˆ ‡®Éql©7~7õõ/ÞüÚ£m ¿z/¹(•Çm‘P'®W$!,ϬFrj¢ýYõÓ&Ù¢¹Ð5Ý ­aË{6„z¯L¿öhï>adþ´*©—ž"óŽ:\œÖ­mªnè­÷ÛÚŽ;YTÕˆ†bߨºfŸØT¹ÓÇÆêéyzâPã‹\n|j6Ë“0aøÕ{Zžú‡-— ¸ûYÿÇ\)oü;ó½_¬éË‹»H[íùÃ%I™ÂÓ›H<Û´>B´Í;Rl¯Ùkñ9Ìu>œ¨ç|´×—~íÑ6†_}Âã']W¥å1"¶Ø‹ÑÆa{àYI†WzFsçÏ£® ž.[%Zµl!Ñëâ˜Ú©÷öøG‰­;vÛæ„a¤ý«'–ê$ï÷<)¿È¯=ÚòsTåK×ò \³b{Úò¨÷S—åá¸4U§{„{ G9ųjÑ;=RýÎ0Ü}5jdñĉNõÜçQӜڃO•jåѵs‡”=‘•@ÍÖ@½#¼ÚΩNq˜ G k² #¥—vuÌaæJãÖ£óêö­ˆó›¬¯‡Òò!‰ê©ƒ4Õä°.R‡YÆ6#ÀU-)NðaËÝòpœ\8@¼à¤{Ÿý>µxD¿vHeƒÓ„úu›ÿõðiìÊÁ mQ_Ù耑ÒÐÃ6ê½)•+Î×+«¬úO–m±-d©ß!Š¢ÞOŽ:†(/Ýb;oü´ï¬º¹Ÿ¬oLÙIS»¥«·Iä÷_¬¨tì_Nû.ƒ$5»~Lófïnî²à•ÉÒñÐÑzîgùŒÉZ09N.ÌTLqP•é¥çZŸÃw'u>Ú:.Ñ[Œ»±‡U¨ž>©ŽÚ£]¿ž¬z~-ª§sQG×4°³èÙ½]ê|©(÷3ˆ€™¤ã$—uãoê‘bl:l©˜tM\¬ï¸®ŠË…êñàã¸S~ké<Ž“sÌñK–ç†±Åæ# ™ÿò#"ŠûÉqÃÄä89m;^ÇóÄ’‘´0bNÂXb‰E·Øx˜û y)Ʋ*Æ2ÜÖ-Ôì­©Œìˬ^ü”zû‹bÝg·ûï¾\ ¿®È:§ü{Ä™<kksRž5U‘}™ï—ÿ,V,ÿQlZõ–¸aÔQùGµ¸çÎ!bkÃ'dãÆÍ¢lÎnqL!>ûr¥õ]Qÿâ«ñ“lÃÖ±Kâa+ ùkË¢CfØú_ö®ȊꊾÇŒl£PB@ EeS!€"8®„H¬¸àԸъT(QpK„R ‚¨HÑQ ÑhD˜X 0²©ÙjŠ è 0Ì8¿;ÿôÿ·ÿí÷{ýÿ÷kfèK=~w¿ž>ýúݾ}ß}÷ÝçžhÀT~ü‡#€Ý^õʵ/ÅÌÓ€É.q‰*ZöÁNñ‹+»wCƒ”8úÐA]"Ã?ñ„2ñÁžÞÛ‹ã®hxÔ­sö²£I?2PŒúµ5øR!áê(òqá|7¢s]è–˜y û˜xûÝTRb a×\b$e›üô,ñè„)æ¹HܶøÝ·ÄEåg…3‹Ì|ÏL+̉†?ðž>nøY9ÿýî];EÛvíÍýO¶m13Êä”ðÆû-‰%ÏHœq@NŒrK'gú‹)g*zÌ;1åÈ<*ÅtHž1#ÂOi8iúrexo},v|Y]ûn;GYGNšõ¾ñ;°WqnïŽááÌ~ŸKÅaÞâAªFÙ>•á"Nr˜KœyûÔëÛ‡¶ðµÈHÊ2°(-~!}}Ç.}SPɳ¨ês%&Còèj†ê%no$¥K²K”¶tÑü¬O=X×O‹Gg‚Á8`¢Óû”›×uê4O,ÌCíÃh óÆÜ§“x½’L³;É4m=Ø©}üëÑ?9¬nÞôè‚vä{+vfáê6vžömšŠË/î,^~k«(kv´Ø¹ç ¥Îmß­}9 ýföËUçq©–Ç/‘ô"%ÝØKòÜxù)¡H.ë"æþe›UòhÙÓ;v§i}ómQÚ·i&.=¿“˜1³èÓ³8øÁ.#Þ2ŽƒÉ(õ¤GWkÆW‰—ÃhËŽ(I]¾£-;O¾4h`{ËhKs°ó M%mïØýxîõMÆö‚ÊÏÄ÷Ö˜Çùyv…·¯q[˜-ÖÞÚgôˆÞŠ‹`$ØqÈΓ‡xµØyÂV˜yûùÜ–~ØÌmZ”•ùcÙdrI‘dG)À‡êÊæ Ðï&V(}Ъñ”}–ì<<°§„3WªZ»+…ÃfÕµÆ:«ÞØÉ*yRú…[ÄíWw-8ÖÖíÕF ëP]W'yŠbæ)(YF[™ã3çoQ‚«ká~¶xûJx$ð ÊÏ ýá.©ú§2<ޥдˆœÁ7lÞ¾’䮹sáy*˜ç#exK!ûXB ›¯8U”þ ðajëâ¥7·ZpÏV¨Lë 0«V(– &½¥a0]×”¤0ëêæbÕ¡îUâEÊß‚)™y͘¶²óÀ‡Ü0¨ÉF@8ÃzÊîc×—©ùßfèþ<¬}%BµÂ¬/ŠÁ€‹Kåñ€/l=` žê n÷ŽmæÚCÁÆ}Èžyt nj¨®¦}%ºP+ÚUâ©n›Œ)5ÉG‡|y쌄Ì))ã€î¹ét#ÓF]YûŠ3+u¥u뤱¦c;u,ý‚aàçëæÄNœë„·zÙ»&°, 2%µësÇ|(ïä®ê†¥J Y1­#. ½y&çB8‡e|³2˜ªÚçjavûtÈþÍäKL«<Ç–6äô·\÷‘Ïqu‡=L,Ìœ$L×ÖÐb¿U+Wöñ‘-ÌáK¦0kŠ•J•xZ ³æ0«Îí6ò/Ïk_jLaVÕ¾ÕJ¥J¼è‡êº2<•Ÿå¼†ê…ê5*,LzΓ“£¢QIå¶Ð4qæº,ÜíÿÚ`Kž1I©©­þøQ£kkQ×þ#ãp¨!Ñ·Þ¦ kîìTð‡Á ƒ/ÎèqO2É#bÞ O¹L=ÛïüQh>ÿazŒ•¤h½¦jbT‹™GÁ¨6t êGÅ$:¸sA0þ\ùo¦Z9¬žxr˜¸Çóëc'9ê!°ïPynÆ ±yÓ&ѾC[ÛOðÑ–fþ‚NhÓ´`m.Xô™'=ÚÊ4ÏÆ^)qí•VãÕ…ýOÇ••šûUkR뉎oyŒ(ï×ÎÜÿf­øÇÊ/-×ðÂðª\ÞA4k’ °xÙçâà¡úÃFÜØI0>:Ø&‹s.ŒcÁàs[ ]”5ÿ±$9œÍž5ˈ„_ø á>ÀÀ¸ìÃI­[÷î3ƒî>Ü´A¤FY¦'ÈÕðJq‡c¼ž3ŒrLéQF=~9ã€p¾| / ¯zÎ8 Ÿœ×1TLa×2EK…—²0 7 RGå¬W¥1LLó>¬«U§'¥¶Á@`^¸Å‚±À8p…“Ú·û÷‹“ÌÆAä2.XäöYVO˜Üå@ÅÅEâûïm'ý{ÿPTV}!úôlíxŽF¾õgœÖJ|´io”jr–TŸ¦ûeï‚#=5g=c’Œ…Lʺl½æn¯äîʃg=wó«ä°nËˉèP­{4õº:-‹ëo"œúÚºp½ùaqî9T[/œ¶F n"ýÙ²ëøGs7× D/­fýle¢Ô'O¨wy³½ê1ŒC½Ûð?_ ¯z4ŽÎ‰¢ðçI!VT” f*&¡Ý¤¬úô8ØË‘X³_ÚÔu£¡jþ¯^õà™TÜ:‘ó5ò­×ujˆï˜}™¢+,<ª¦9» ~i¤‡Ë~\Ÿ»5ªÎÞj÷¹ ¯z\ ç¸}¶òÅðªGëÑ­¿·NO¨Ç¥£k6|%úôh5Ò“•w7=ˆhmòZ › Ø’ >·^õø\á·ÏV¾~ï!:îÉ^n¬—ì< g+6Š~.ƒ?&tj_ …Ù«^OŸ£‡¨{Õ£úpQ˜# t e½Y¹~Ohí³Hž\:Ëbß^¸Ðäž„‡Î6óè!/= $ytõ¸›ÛºûºîYëä'¿œrš¿nðÉ–ã¯W~jn÷íf•Vk7e/yô<%É8±ä±ÑyÔ»ŸŠmÂ9Àêzvi•u¼{ç–bÃ'ûDßî­³$ZÂ^šZ¦'4/eTª§ÄäwkX8š«¸Š´ÞmD¨0{MO„k—¬÷eƦłv÷l¹žÓŠQ¯©|¹^vÖ6F[F Aëµ]‚H=¢Ñ–,9^y­ÂY9 ãuS ?¦[àuÛ“œ†Áž UÀkÈÒ+—{€¡‹æˆÈÎ+ÌöCôD:І|k8–p`,~=ÍiÑÞX··Ö«^O¿õò ÌfF(ù`še-|cÈõ˜ æ“‹$y¢*–EB(+™…†™ø<|Pca¶¦ŒŠfΉe[¯­A¼ý™9•!ÿ“ lSŸ5TOdf VÄSÉ×@à"VÖ C®—Mîxaæ›ò*ºqѲ??|P£9¨$±í®i â)®Ó˜ïÏ¢YÙ}¹T‘§'¸åÒéä&àTy¾ÊÒî8ƒËvzB(+<}@}ºØJî´ZfDúoì$O=¿¦S²6PžÎ—ë1K g"’,zú1:±ˆ‘ìÅ¿Ér=üJø½Øý=ŽMNaŽÆÎã•ݘ¢‹™ÒÃAa¶Óy¬ ³Cd0”$×Ô9e2¬7@Î%ƒæ¢ÌÙßê@ yè½:‘G‹×)>Ïß*+þ"…Y8*ÌîCuÞ¾b]K}'u®±Ž•5u¹žrd#!tÔsÉðH/×?7ãy‹IÀîïñ`d#adž„¬¨5lgpí>íô¢sÉc)>?÷Çчٯu×¢×HÓv:OP éö÷üœè§'ôHq5/gõº¬ûÄ1ÔíÛ_+Z¶(õe$,¶ÓªÝl,(5NæÏÌÛdÔã׎ðwaûó,ZñE¤ ³ê.ü¥‘ûñþ©VïÅ{Ç7~úu–RlKn|¸õ¦LåÔ¾¢Ö'þÔlå°_= bÊ*žyÌܾzÄ8e¸ ¦7~{ô;OôìWÎëÏŽ·ŸžHÄ :=®Ò°r)×-=íD%\sË™bÚ˜ÆöÉ˲~±ä‡ÎÅ,óât½TH~áx=¹.Ë—˜ý BÏÞ7À(­Ž-§t*Ëi´•Qƒ…¸ôÜŽÆõˆœ®Éϱ£ÒâAÞ¾¿ÜxÊ«ÄWu÷\ß#¹½Ñø½³üs±mÇ~˃Û[]klÓqÐ…}Ûzô”ÕÆþS£Î6ë&'¯‡{÷ÄÆïÖÕÆßâÚ£®ïi·õäCçœÞÆÀÁ=áÞè¾üŒ¶¸>‹{Ä5ˆîÚU4=¦ÄÜß[}ÈxÄ@t>µ ÏéÔNÇÇ~;y•¨I¯œáí+jÙþÇæÞÏG>Ò`™ˆ˜§PęƎIœèµi™gè÷yCCêìKw(¨IéQf§ùÅíyÖF ‹xûJ„Þ8ôœB2ˆ&ãä:T'IÈÇúd ®®0&¡®ÇJrcR˜u…í+:®íE1÷Ä”•h±ä‰)Wæq‚Ú˜bŠ)¦˜ ñÃæ<œüy$~,¹ÓŠŠ›ŠŽ‡Q}Í7qïÇ”#óÚ?‘˜rcžïk¾ìF–ÿõaQÖ¼‰8ã‚ûÏY¿d¢X³î3ѯ×Iæ1·ócRÈ ÍoʤÆé­(µž·LW¯X@Y=îò]ÃïX—_0¥»iºhÛD³K%‹¥Ë–QJJ Û¦xùÕW}¿çÏgÄ‚#vËÆ–îÓÔ{ϪÏáÛÃoÙ¶qM»e|8ÉeÉëQÛÚxŒÊÏxŸ’(ªêhŒ¬>x$;Nÿh ;&•«@{Ó/.&_Ì‚7F4F4X}\L´—ŸÐLµeÍä;qúBŸÌoM5â¡l9qÞ ?òw¹§¾·Œ¥A@—ö!®Zm”J”4t{‘äåÅdR5Ò`àkÌÈ5çÓ/öÛߤe4œ®8k8½Áê, Ið®ˆÛ=h ’S¿SVc‡Æ’éhµžfãwËý4 œoün™¯ñ£1 qXïdÈgh|m;õô#X¯=c!#Ÿ K% ä 2€œ£W+ÜËòw„x¤½ª-xeÁóq¿?ë²)iùù´×ܽ,/ÐbÙQ=ç68äŸw³¸A] |Dp¿²ð{¸ ]²ðŒàÕxœDrZÕx’“©FÕ$_(]:!àžÞëÆWã1(»„¶}^ÖÐN7§S–ìŽ^],ŒŸðt_ÛË6ç“5ôÛÁ“ò㚦ö¤ÏˆWÕÄ`,çÚ)×Þ@¾Ó[ÒÆ5ËiPöX•drqAkÃG1´C®éE«ü€Ç‡õô;ï¥6ªÊËØª ?ÿ6—þ•òÎåSåJe½ý¦£TåÚ²”xM)_ú´åX|´Ê/Q‰ó¨HIéc:C6…Ü\~JÆÈ‡¹1߆}ã7F»0¬Î‡ÚõÃçñF*I>Yƒ™Ë¡ §OŸ³]ø[{Î3æï^_ôÅÿ ÓG«üŒ‡Ó4ͱÌc6Bçüò³*!ˆ†“' =#ƒM,NÒ E ¯ÇÃérÉ„Ý5—_0-€Ï¯vhIÀ„Âñ'»Œ—¯\]*^2¡8nÉ„¡Æ³zÍ6œŠÿú19Š 4ˆ³ýJÃû_Ò£ûM.,VÒÉ/¤•ß6•WñØwuº±ÆCÒå²D ®·!øãyá/Ž”7ãrI/¿DE‘Äã¶k·î¤™”Nì>;Šx ÊÏÐOçÌ©s§–¶/ÈI“g‹ãÇ u¬l€;üñÆÕ®–LmVµÄËõóîStàÈ9Kò:ÓûÕé%÷‹é\ÙÜP~ÚKÛÖ¢ëT²\ðÃÀØÒU¹Á5ÅYñ"QÅáþ\œ,›ÊëÔ4F¤ƒ!t¸½à>uŒÀ]cÀ'O÷Õ—_²9>fvÝ iå/†õ—íŒýñ8Üg¯ÇÁóx<¦s\œ_~ÁfJ€ø:\_äÌšÅüé˜\¸aýŸ+ =222˜žÕ4ggÓ»3gú‘Òk]kèŸÊÜ ­"yí<œî1v‹a¶bͺºûds‹Œ¤ @ãÇìdŽÃ†§ ))>§^#G=á»÷СCŒPx\ߢ¡vA:ðHÈ=rÒIMK£ê5<_ÿì…¼r*ŠbcGb>ª………XHˆUÚz§Y_phG_q Gg¢µHá.Œ”ö+k2j•¬5J)ÿ—€{0WG;_Àµ ½³/ž†µ×õÚ ?×>Û*0G+‡[lù$¢Áˆ%éh5§–©ñpºÇÙ®3ÉÁŽÀLesAùèÑn´Ç ÞEðñ¸vEç %£YÍѶ€øÉ!’×ÎeiäÌx \‡L¹w°Öt{_7”Ÿ¦ANû`+~À^ÞŽÿq‘ÖévnÉ»÷œ„Dr¸³pÇû\vºÆ‚[Œ©ïo•õÕ&HhÚáqé L–ÿJ!-ý&7 >”¯Í§_Vâ×Wf…d¢¯ˆ»ˆ':óx­î‹GK2¸?“C±àP{?dâ„ÊÝ·j5>¾ òr PO¶«×®eNÎøûÂò‘ÑO?ãw®q²ÆÿÃùýÇSJJŠ)g(áx ÔzCc³J:·6}•Je,“rÉl]Óï8·J:þþ¯öVI€¼[ÿB>}Ó†•,“ÿŠ ]=ÐÅʃ)ŠŸ¯â)ïo±%±þcî6ÏeQ;ô¨â Š…ž´lÏ,BjZªÏ+#4ø™)YÑšà}qDv6›îG<š|"˜x 4þ¢Ffx֦ǟˆ¢{F8?üßhÊiúpÜ M¤ypºÆsár!{“#åå®Oz˜\“ÓzT„c¤Š®Ú-žõš öùüÿ‰ÊcUã1[ëÇ\á4zMzO8ÏPìj£-Œ®‘¦WÂ!`ð%qK0«ŸäÀ ’“wµx°úñâÝ,óŠÖ¢iãµö!\çëÓ"A¡.¯Fegj\ŽÔ뙿T ‡wüžΔ£hxo‹î{ÏPèRC¨(¯¾‡ÒÐÚµs'[ ÐZ;·ÝÀ^ÃɈ߃óÛn¿Ý²/é@O¨>—£ÜàÂíjù½ð¸¤+®%r™B²àðð‰ó–vKE©‘¡]ÔEÓ“®¥kÜ…XùÐ[)?SÇáÊnmú°*I‘a-•GÑ?#B9Šã=DC©ñØW^¯òjüÁcçéí¤GfÄkPïÆìøÚlï0yrÒ5tGV=Ãx½ÚXXºú7ºpñŠ&>…ªV*kX¤z'nÞyºÆ×C†]„»šôúá N‹ñ' 3­}F8ÚB¡î‘Êiúðçñ¸uùŠ»4‘¼Š@ãIoX)ä_½Úå-9ˆÃ}?ï¹:[¾JÅ2–ÚžøãÆ<¿¤av1Ìž¡YYA7õZôŒXä!ÔgDš>L»kg.›Ïã!Ça;T”€ù1FUQ?#™B¡¦þ ó†,†BA0œÇCqëj üŒùÁÅ´kL`ÒϨŒÊ<ž Ãéø¿)¤‹÷ úr`‹•¯¿ü’Ù¸´C›Ú4îNwר- 2?†¯ÓB:|è3eð^OëQ¬uOõ]{«ïYXGºZž¸M ¼ƒ2§pô,5OûH¤Äƒ|cê8 ú+•*&i­þk­M/Òx0#Rô…ײ¥_Bð•´Xø&Zƒ¢w) ºaÁ Idg ö>Tµ^À íÊ_Qzý’ h} ßÅ‹>U»›Øb=aߥkµ(‚ÕéN‘Wñxk üÏyÃBOíš+mÛÃ@‹Á}ž04¡)"Ú£ZØ£+`1Ó1Ã`f£W+0£ÕÇG²`ïÑ/:³ÒÕB߈ì‡XÖ7\3ïmÿÿÐ|0¼¯i³òä·X Q‘[³¥#˜ÊޝÏ7ºú½œ<.îj™mWÈËÊ_¯m¿Q¹æÌÓz,ÿ–5ƒ9H¡É5t À¬h8¼Û¤ï"hÓ‹eDþQºZŠqW‹¯1i`ÇGO  ærhó."`ïk8œ4EkaÌd€m2pòÒ.æ3z’xœ«ñO0G_çDšˆUÑϳ:i^¤ñ˜¬ÕRBSŠ0YÕP ,?Š<·›8M ]ñ"4ý Wú±Ð”`'1ZêlòˆC¤²Z}úûE Ø{àyÀ³D>TÜ_{ÿ8s‰ÆoÉž÷ú3¨E“Êì"?8¾0â&ß½ŸgÏLL,¥v][°´·¶©­Þ[ê×®@7eTe äö©j¥.Ëòóþ]0y2VRå8ôýìøñ[ŠGýäïy|Q•Ç!½›PoFÞ…T§F9öþ«s=&ϵ±viSKýXj}É[=µžêûîÁÇDñ¤úNç~¾×—äyýö“¬ÜZ«ïÿ¡¾MéËõ‡Ù5÷óòÛ{†t­O5«$«rÔ¦9ês 7ʦˆM»~gu å‰ÿ…z~¸_S_9¢nuoŸÊžaDÈFåWÊmÕ% ï~ú «¨äü«ÓD% œÃÐ-\dCÜ¢•Øoî • i8p~ãuUTKf縆ÿ3jP3ß=O½¶Å=òÒ÷¬¡¡âqÛÀÔœŸXEFÅÔ>@£Cž~*rŸ€¼uPÃêý 7üF¾@~*gÁwôÒÿöý/ÄáÙ’xüˆÇ}Ï_o¤!we1ÙÚ_%’ ¾÷иõƒ´wÓ?Ù9HçZh¯¿1s)-ÿêê–Õ’Æ=u7íüõ =ÿò\vîái[5«ÍŽ6ÿ*k£„k`:b–qÕ*ÂÁÿ¢:ÍÊgÚ9_Žj¹Oã9/ßPj4ú›| q!ž‹ä’ˆ:þ_ö®ÌŠâZ†a_dŸaADŒ (n,Ï$²øŒ æá|cÀÈËC…xqÄ-êsH↬IŒ€Š F@ÔAfYu†M¦_ÿu§ît÷­êî»ßúîÜuººþ:çTÕ)¥Æ*(¤yãæß¬´ˆ¸ù…¯\ÿƒ+mGAA!ádsoÓFuòóNHáUŸ”üŽh>éÄSMi: )&œ‰£zäì“Hùoœ²œOuõ*((¤}Þ´æ¶Ñ=+ÿˆ+;Ñ'û{·ÏR¯‚‚BJ´œ›ƒdRÙàE: ©A{õˆºvhBŠt2ÿ1~4íÛ[B« ߣåKÿÎŽ];ôRö¹pþËtßÝØÿüó†ÑCL×}½ç]ÀþçŸüüѲRv~ã†c*Ïg¼oÔ¤sŽ"…ŒB¯Þ}©e«7˜þ0ó!vlÔèm/ªÚÇkäõ7ÒCSî¥×,gß;uêBÍø-=4u’ð¾ÇŽ–Ñ¾}{¨Sçóô߸ˆžžó#6'% ˆÍJZ ¶¿´Ä h80Ãø}ñ;ÐR`Îñó ~¦˜Ý½p-̲7–}èº ‹W©É ™»Æ8¡È~ÇxÞ© ¸ژ̜³ƒ"…˜)mL‘Ž‚BŠP¡ö£#Mÿ«–wÓõ$R5z¥  Rd“RùRI:°±”¦£  àOÒ©¦HGAA!µæ•Ü>ÀóÂ=ö§ÕÂã—ömKôäWùü^À€Þ¹tiï6¾jŒnØM«7GÖåøK¼Ys?’ŽVá[F•ÊæíÎÏuç$Ÿ†:Ôü&¯&”Ù«ó{dõ—M¾v$kQ÷‹|ä{ù4J¯Idön©ÉHGAÁ“ÝhHÛñ™L"øm&³¿G¯üî$WòBfÏ>IÁ}=OG&›_döû+;ùBþ¿ñ&”Ù«&5¯‚¨éh>—/šŽÈ§Ó´qmз¥'Dû¡ì½¿fOäkM§š{K™l~‘¹šÏ5[ù,> ÏoJírxF¶³Ô¤Ÿ_Õž–¼½Ã$“Hf¯útdõ—íçåö2Ù4ŸËGϪº{‰pŒ~y[zóý]a™*|¤éTH5¿¸RÙ|"³ßg“ÛʧUUc׎<+cÍÕ«^GM,³g5I¹³ª¬ckJ –¼4'üÿ‹OaŸ¯>7ƒ}mÝ@ëV-eÿ—ìü:FeJdƒ 'Ž•ÑSÞ>Çÿ7K|~š‡$ONÒþzòdZ´p!Ksòómiíš5®JÔ©}‡¤I)•³’`½–dò$Ý‘|Ý/î¡é“FS>ytë}3Ù±:uë‡m¾yìÿÇ&áMîäÀ:õBr¬+\FýÓIt##Öën¼'| Ž%¯MxÈ\Óå/--¥‘£F™H(77—ÞyûmzcéRê}Á4~Âjа!-Ö‰©¡þùà´i4nÌv¼¸¸˜.îߟºvëÆÎß3)´§ÎÐï[¢ŸŸ[P@6mJŒœ™**4_Õ_Vh.ò/‘¸õ¾Ô¤YÕ¨ˆ„sÿŒ¹Iî'“+ÛhÒyt׃OVõ„]{ëÄ35Ez€–t¹6ǵÔÔê9ñIØM' #@ Ž«®¾š}±àû „~«“Í+óæ±< &h>‹.b¤õ€NVÈRpîRy%VãËêÍ$þËJ…rþÔ£÷ÐæO ÍjªÞ8Ó©œ'›×ÒÌç–šLÈAC®×IhNÚD¡d××L>®½Á”ä&ãòÅa3™O¤9iûBÕx‰Àsò«öc‚v³vÍÚðÿv€fbùtÓgì;Èæö‰M×Ü¢ÖfϦËä%D!'‘¬º¦ãÉ$©»,8{D)Q@9óùeL€™eÔv¬Ä­¿È‰rd%S>”µN½ÌÌ‚O§Êì2¤@.¤d8ê’]%;‹Øg“f­˜Œè,P—S&¥Ãö…ëÀw£Ö—\ùœ}:Eßî`æ4|‡o„Œ¨4½`RÁŒÂ9˜dÐzøÿÐxpýÊÕ«™fóÁê°Ÿœ˜åÓÉ ëÊ‹IZýG='¬³ïæy—À£OˆUß¼‹;ÓÀþ}+_"ëšK¿¼¡”Ó®3ó»å´íd"Õ•Ëç³s\s…V4hÈhFRÉ”¯¯tIïsØÿísP¿žÍ=[ó—ngŸmø†ÖlÜq~â˜Až”ëùy+Å>׳?‘BÙ|._‚ëNrhu œYN`DÄG —¼üd˜p ýÀŒNáD#ß·%ež­Âý‡N8Ê\áÑ$«»¸B[p[£Qèí¨ñV%vÅ5>Ÿ |ƒ®ÍÊ“¸r%Òë‘\ps‰|`¯É±ü™ªéØS"Ò¡ÉY“GJOѼ7·ÓŽÝ¥ßüð#­ýl?+oÄ€HV&©¦ÏðêºUËXƒÉiÛ™9SÑë¡‚„à4F¯ˆFˆy, §ÐpòÖkB=ï7p(Ó’pÜJfü<ÿ5ÞM¯l˜W„߃#R¼\(7ÊBáCæù/†?aZ ¡ÌF2æ×Ã4ö€ûŒ½mj8?]?’8ráÏÜúzûI§Uæ‘ç×èɛֲd•¹gõœ$h: 4ÞÛAàöüს‘ þ¿ÄpF‚`ÐàÞ0­CêÆ{ðFÏçú¸žH‡Oå¹à·#O¼L2€¨ÐhʈgÇ~§iKFH15òj:B¹ÑIðÑ(˜“v𦓳çJ>?NŒÔáÓ‰Û¼BƒáK¬¶>|"Üáhô¬\¾ÀdÆàc'Ne Ðø¢ò{Ä<ÙN*¸sV” eÃïwêÚËT¦Ð¹Â| 4\N(ÈϵBÑsbþ0]SÞúËNuT2£‘l¿–„мáY 2]>€DÂ:2MÍNË;p*½¸|j¥f³ÀT¯ÜgÅÉ9Ñòi–óõ^|øeÞØV¨Õ¡ŽmÒ©ò34é7R™Œ Ÿ+ëæÔºy= ŽÑÇúÿƒû·ÖI#D8CòÚлkJØuwÞp>-Y±ƒjÕ¬NõhF›¶¦[G¶¥¥«vѰmiÛ7ßÓÏ®è@¯/ÝNC†òõíÞŒÝ3õ§vƒð¥|Ñè=òÿ¹Æ¿óNZ ×¹C´N>œ”ãëX|àÂ1ÈU—æÐ;–dŠ/´·j§ë9éÉW>i¢=š³ã9-ê±ïźtÝ•X†.ç4¢GN²óø\õÉ^êyÞÙ´ÿÈ FL¸ní¦ý1„ØP»A($ܿןÉ"±ÁÅý/fä‚è0©íæÕˆQ#Y®{&ÝkÒ‚ÒïÓËìUMG>dHóJó¹|A0¯ªÖ^É^nn6A»ŠÔH2c#Ùw›íÉ®ÿŸß¿æÛwyåêÏYRð6n=D½»5:_ÜÕ•FtM§B½µ ÚÚ*lü æe‡¾?ɦø{ /ÿýë*óŠ ùTøHÓ×_¶¦^m…L}gzãÔ€¿­ø–i;Æ ñ¤ /ýý+:U^a‘)žõéH5R´£àEÚ‰Ô>ýâ K~“Ùo‘³ý¾5­‚wQMs¿öÊ«b[álåÑQÈTT8ö¡þ"M"³WùµBj^I$º,¯§ç+ñƒBñžDíÛµ öm[úV>?õüvç|§ìH‡Ìý5#9»š¤·¸| ÷Ige¡xñm[Ðe>–Ï7æ•“OGpì’^-èìFµ2Z®£ÇÊéƒ÷º–Ù«[™W“ñò±#Y&›æsù(òYÏhF^}Žgd;·C#zkõnÚ¹ç¨I&q`vÍWõ—È¥;äsù‚°´Ì²ÎÇK„ÃqÍ€6‚É‘É«Û ËäQ‘})ù^>£VÐ¥ýYž•°û¹ióW‡ šæÚ7âÕúSA¼ü(K¾õj #¬•Óµ[7?a‚ðºqcÆ„×iñëKKKië–-Žk³#žõ[ˆaì$s…ßÖ^q•¹o‚xz•¹fX> ÆŸ Xh # -ÖÇAsòŸ`çx”Á ÝÀ>± xdútF@ 6¤o¿ÃV¯#$F®žD5bÔ(Ó½£² 5£Lþ½ÒTä@¿IìÈnöÝ»êê«#´¬8çaKyl'N6Æï4¡?=ÿ<}°º‘Ïâ…‹˜†ƒkqÎzïhXǼWäŸW}:ÒÈ~ž‘,“Í/2û}6¹|ÕLþMbú<6}OZH,¦´Ž&Of$ÍȈXïmôüC&¡Ìš¿ê/KÅÕSòyQ>72B[¹}âD–KgåêÕÌs àQŸÕ5çÇxüþùà´iì<̨+uí ‘¹éU\\Ì´ë½)¯W·–ÉÐÑ+%ŸçåsáÓ`qÀô1ÆCέ$ãñÜJ_‘t@XÖ€`ˆ@h4Áb"­J&á‚OŸÕ_V·Â{Y#a‹YdÇãÈJžlس{tó}¾­À¹ä;ê’+cú‘öÛÑó´.Ê'3 ·2kY=«éHê.éšö#Ç.›×†k§®½¨IÓVl/lì‰-j‹¶n çû'¯§LŒÌ|ou6™¹>¸ýy +vÇ4WšNb䳎ôlÝ~„ºvlì)é>ÞÈŽË$ž§ã3M'U]%v€¹L{|>Õ©[ŸÖ.«Üžv*öŒh(ë¼eÛ]ÉìÝÉâºKYä@˜ þ -ÀˆWŸŸ!<ž¹zN%á+£~yC™™È÷÷6’‹ì¸Òsâ“OÄ=[·Ï’§9V¢Õù©þ’>#9d:m›"=úäÑ«ÏÍ`pøÀ>Ö0­ÇV‹Ij®('/77A¨ ˜&M[Ò­“f˜ˆ–Oø[êkÖ±¥’®ŒÉÉî/y/Ï1hÈõ¦ï‰óߤV°ÊeôñX¿[+]'ñ>p¬l2€ÏÖ^r„¦–A(ù¼#s…æ¯úËŽç¦|X8§mg6J/¸ÿ£dç×”Ó®sÚFJvÑ kF3ù¢-Wȡܛ’Ô‰ZÞé«’KÝ:ycëÙ×¾ Ë+\)4~ãÞ¸ö2Gƒ‚选¶nÕRzññ)&R‘àÜá{Ù°9>9Áàœãä…ásÇ(–ñ|¸÷Çw4þèÞÌèeC9îŸ1—@qBååBV.Ÿ¾2ó2Â/U%OAxw"C²ãÑFckyj/ó±ÿÖÉ3„ÜqÃùT³FV„TþªK±*äÅslÖ‘+>% dg;Yp¿˜F¶=;P ûujfW£æMêxN¼;uâÑ rø®.%òĵöªßÀ¡aMÇ-ø(ʈÇˤy0a0±ý¤;`2›ôç–ä*µ7&UzõMÚS,æ©Z{Â…ÝšÅt,Òĺ)€f¢¼~«¿¸†ÌCæÐ\6ÎÚÐî´ <wÐÑáãh\\«¦OÍ´4nhL|xÙxFV}c˜¿G/˜;˜;ć¿rAÛéÑg€0ßÊå X^ æï ü0Óðœøq#ðl¸ïˆO&Œ[>ßøm4Û7Úií‘3hÀ¶ ÓŠ /èÉÎcé¤UDÍgušŒ!sQ#áä‡+›H0“OË_`"$#¬÷àCÏîgìót@r3û.‹ ¾ÌѹËÂ?­Kxù­eæÏ ŸUë‹®/ñ5ëØœq7O _ÀÉÉÅH2[*ÃV`9V£oØ´)|þÚaÃè·Ó¦E,òL–„š/ƒx‹H'Å2ç·$}d' ²qŸ•hžNµI¿sN¥¦S¹åžv€70£¶bâäÀ…ðê$›p"Ê Î æ4J>ïËçVvh0s L!.d().afš¦K^?Õ©¦&:÷‹|~¯?î.pŸ›P\[áß>GŽeÊ—*·‡¦ù«N¥“®ÔçòQ äÓ‚•zÑÑ|U§Òp¥˜)J~€L6ÍçòUA>Cè„?ÝçeuÀrÅOu)«;µÙž/å#ßËgõ|wèµ8Û[ó_Ú,)Ræþ¹ÀWµª6Ûó£|ù,>¹K¾¤¶dÉ xü¯›MQɨ½ùJÓQšŽg5ëÙBÝÌ*ô°©å¿y:ÒQŠŽRt<©èhäÃx:Pt¨Úy—ܼ % žÇ½zQÏÞþ òÙ† ´iãÆ˜WšâoZ^¾{u%>ÙNö¤8“œ-!¯¶O˱~Ý›±@^^ÀªOöêiŸ+³¿Âgäš­‘Òt¼H:æÉ7]Û™Úµnà™òìÓŠÎmw½°h›Y&…+Õ<[GʼRðë˜ß[/G˦u©VÍêUCçO²¬‰ÖÈ΢Žm¦U†ÊNÑÞÇ]ÕQ•¦£8GÁ£œÃßÝA}[yVŽ‹{4§•ë÷ÚqŽPÓÜ¿55jX+cäxã½T~ºÂYJçéüïŒÔ›­Vü×ÔÇÔwó§é ÎåÞ‰\å¤0tíØ(£¸vp;ZôÖI ™‘eŒÑjL*©”æ¤Ù$·q„Ä‹‡"í}Á,Ôbæ |âì P>qŒò’ÅÞIªÊf‰ûl—25}ÛÖõ\•_:zU¡Ì.… ×ÜA¼8ÆO˜WÁÃW P‚w­]³–}ww'Õ2UHã#Ó§ÓVA¾2o^Ô¿ ’-ÓI7–¼VÔ­--«Ù¼Š2æÌ€¾-©™MäýO>?@»ö•ž?OW »v”3õžýÇhíÆýövp¯æÔºy=éù­ÛÐ6›=­Û¶®O}ºËƒy8|‚V¯—O§‡ÏA¦âž*?Ãd8xä¤ôžß”ÚåÈŸ;KÊèÓ/*ÇÍ97þHh/ì‘ÄÆAÃEƒãÑÓ*f”Žd&׿@®ÐÞJŠ‹)'7—ëÿߢ“ìUW_ÍŽãûƒúõˆ”øëÉ“™v‚]ñö;ôØìYL»{TÏêÇ@ÂÅú}W3Ãÿ<ä+þÿÃìÙôÎÛoÓŸ Â× ‹/u$KøÕJX`±¡ƒÚ8>@4æ]šÐïíŠ87òšŽùA&×]ÝA`º¿H Itk·¥š5ªÛæ©¢ ËVî¦ã'O[ÊW—.éÝÂ6?îŸwQ+ú¾ôGz÷£=1ÉBB’=‡`h3š+_ˆì*«?‡k=Æ^ý¥KcÖíÓÑ$2»2 py@²wèZ Häù¸ 縦ǵ>h<¸&(âDCƒÂóây`~â¼q÷ þ[FYŒe•Õ_–lŸ«æ†pŒÎjßõéÞ4ªÊ@ô–ÁMc5`SS~”ɉpŒ€ÌÖ28ŽЄêÖ®nÊ?d`t“×p½æÒÖ÷[²ÛF3ü}ôÙwž%Ö Ûšd·EwÛ`qDÍ„·D’1‚k2üS–×HÖk í*Ú^N¤£Wñ¥_Ô£9}[\efµÏ‰~E¼eÀo~¼é€©Lñ”¡Y“ÚQç‡æ·rÝÞð÷zujD•×wZƒ;ÁOž:CGt­²q†è8áħéû²SŽ2WDé`…©Í¦Üynw¦Ã$s[×n]M"€ªÐëOJ: ð$Ç{L(CõêÕ¨¼rÏéXf†Ö¨‘•ÏÁw¤cñéüñ¥Í4vhGêzŽ7¶ÞQRFûRÐÃiQS¯Õl´šŠü;77{€ñcðÓ˜‰ËWšßƒÿ–h*‚›áÿOG“ùtÐàã¼G&”Áh)–[Ò +žƒ')GsçÓ 7®eÛ=O±"™5¯t:𹬲ú“n+œˆí”™ß³eÐ_†À$²ÙjW 1÷SbÚ›@V´ccr˜V0—RMšÆrÊê.KVãPé)V³ Qù3¡ ±õ8ZŸCP’#9ísîÕ$”Õê`wËä1“¾>m€ûnøäGãþíÆkâÑLm'pV¦,ı°k¤Y¸üQ†°"žCP’f÷WéÓñW’µEsŠðÏ`(Ú†Âù®¦F§0®ÁžïÜÑ `>`é²× 3Ê%®‡Ìãe¾„0gšË“}¤%þ9¨!s³_Ç7ZQ\Cæ"€H0‘¯¬´ŒÍ×M’ä#ùÜ ©sç2´¡2ËH—kW‚$eÉÎ(ŸNæ–!(É~¢Ž_…µÅØ;_>ï†k˜7®-ãç¸fƒ™ÈœœŒ> ·(;Vn.«|„Üywƒ÷Á< Ó`lo’š§G#tÐþüƱš‹Nçýµ%tùÅ9))'"7ضã{Wõg9PKòk“Šü‰.CŒ¬“ÏÁ_šŽýÊ,Ó¬&š‘lþ¾õ›¨U³ztÞ92¦ä/.ÚQN©¦C.|Æf¤7¢ËP›9#žƒÿt Éyì=]ÛAêÓ€š6®¶Ò~S\F‡¾?UýIÕ*ŸNdþXGŸ”O'ñŠŽæC§Ž<\©<Ïv½Ñ#y©þ¤¡-ñžÇ{L+CÌÆU<oöùNÛ k¾“W†+ Èn‰Ôîk[ŒL5²«I ‡R“:tûõ]My²«W£Ÿ_Þ^:Eçpõ·š5ªMçè„#ªħºð¼¦Â2JçéÈR²µ N4˜õ([˜–yšN¬æ•Òt’áÓ ˆ¢#ì­îs¾ãý°§Vú5¨ôh(fÏuƒƒàáš×—™Žå¶¨ïøî·kÙ€vî)uçÓI×è•qü_6ã1ãF¯2  AóêØú?4ÿùt„A¼âa{?Úø]\ï››ç|öYµhG‰»ú˘ ^"ŸNæMŒaF²¦©ÉI ßÎÓI´#Ù°tÂí‹g ;ÒÑbÐm c!ZIq5 £ñgÜð•–þ2(αkŸ~äGM'´·×¦c|Ùƒqž˜Û×(RÓ‰Q#—äK[h „LüÇÒ7ÙÃAêjYnoͯÂk¨Ðæ?r¬<Œ‡|Ñ'ÖJ¡ ½2ï5ÊÉÍ1…Õ Q¢ÑX’$RM'óŒq=ø>©.C4ùc3¯ÔäÀdi:Z@4'9±BÚÜÆøÇ±*ÊZŒšŽKë*y»A8݃ï¯_b|4hØíÀ˜Ê2l±4BåYã$ÛºÂ(¦ fÉc³g›Bݺrt$ûNZ™#ÙYR¼·ÆH€|¥¸füåöyY/Ö|RŸNEš†ÌycÇv®|#°HÒIn09‘o'kµ…Eùc'yF>_‰Gm_0Y§Âq„ÏF¯$&¸“˜x_ø;ƒø7ÆôL)fE‹)Ÿ¬þÒ69¡@èžI÷²ïØC'Õþ”zåpŸ/‹,¿&ÁèÌí3ä®”ÏWÂ'´cotŸŽS¬=ÿE”µEû¥xgÐi#=0ù~öi5ï£1Ñ­¿å¶ün'ʳǗÕZx‘#Áƒ¸hÝ¢”„BȿŰ™¼›2{˜8¢Èi¦‡o¹GI%É /äàÙ¬ôoWÈ—†Ï[ÍY½tAH¶Ù5fmÃ"‰mu$5’>X]ÈF#µõtA”f—ö"æ$òÉ„†êò…½3Ö!¿¢àÏNeàùp/h Ý#`vù¡Š¢WÀ'´ QÀ"S4±ok%Ù—ìŽhW%/‡,¶õ9%9j: Ϫ¹Ø3ûKDšv aN#G¡Ü’¦»p¥Y²àdÚ b˜ÎÞЭic%ˆo¿µy…† m!E„ãT”¿AöÛo˜Ë  mi®¥‰4'ó ›ÞCëCï9DÄØ!óxb({0EGPbß4eÓþâ}”E·‹L”lF¯ìKÉ}vA›íîÑ*䇆"®{£.W#aÞ ±¢ñZ7~wrfsí†kvŽdYÍá·ñ»Ö­Y«†våe౑ÿ‹¢õv•¹ãì@?Ê+½rïîbÑ@{æ®Íßí{TA1Ž^Qœ3’ÝÌ øbMùØÝ½:È ]‘¶ä¶­ »‹{à÷ùö ?L®²Ë/ºö⚟Mp=߈ÈŽõ9s45#9ì›\lصÁ¸€Z‹a&Ù3’¥A¼œØõÙʨòVÍÂí=xcåf‘pí•C á€pÐØ1¹Z‚už‹Ý=ì~[”_´àÓè7FÚ7™W6eé‚p±##f“â~ÖgZÐÉöA¼üº "†1sK§o~—µ¸gºÎ1¿GOG:zeï‹@ϼU0ZäÖŸ‚ÆÅÀ ñ¨ý=¸ ‰FËÙ>š2¸eo»x: ,ž™>=êç`4aÞ¡|:UÏ*žÍν:|å¢-Zß#«Ç8H£¹Ø[Üyïtw9ÝÖ_vLvIŒŒ)2-D~·ùáK¶Â÷l¾RdžØÜDÁ'ò¹ eÑìwƒpވ̾§ÁB=$ wBK­A ð”äÀi:±øW[&GQc‰ç”¸UæÑšW.—ûvDP»{ð|ð£à8–­#PNe0úOdfžÝ=Üì\è´„q"–ˆ´4Žâ5hA%MÉì¢þoÑIƸ¤XÕ2Cþ¯2·1¯ÄÚ’ÓÄ<˜ãÆÜÀzfá„ !Ï’A~>bÓM¸Êܾ 0Ëx£Ç§Ó=Dš÷« ‰‡«å“C¾­ç²d›]  óIÆ-_ížCp&’ŠVêbÈá&¾tr`|V^"vHíe._šn?/=2„»C2¡È>ÿO‡ —›U‚ü¢{àaãX·$»—]~>7ˆ÷ ¢âÝ”AdW›Õ[y~®­4áˆ`u/s§Ð ¾ã›(ÂFXÁçèX5å„LLpÊrûÃbMg ë¥íbÛ Œ|èÙeNX§2 ¡#oi%Ë‹–AØåÇÔñÐË‹+M¾µöeÈÀj.®,K´Ï!äWZ&O'‚”ä Ñ(NÑæ‰Œk«ZâÓ‘lN…­•ŠæNZŽ›2ˆb‡Ds>¿‡ûvDeªÐìeŽeÐÜû•p/ÑÎÁVª)™)¾É¡‡ø±*¿ëÕâš;·GÊ~䓸t’Õëí.»×JDÏgÌ2¥:QqtÏA䪦cû>ú‘\º:–ÿ«ØÕ-×}~ œç‹G§)àëo•/wˆâ¨Ñ†¯¹6³ÜúSJö‹êù=3‹)ÿÃ/lˆ*ÿÊOöF”Ç¢~Ó˜eŠÙZ†'OGu·ô—Ø¿ào_F•×Õ§£ ït–¸Û±MÎúË&SžkK¨ôØ)éõ8‡k¬¿õñÖýú¹ri=ýkówQ)*®· ™õ×ÍtÿM=(§y=LJ4ýù ùéjÞS¯o¡»þ½›+v^òþΈã8V§V6õëÞÌñø-ü¦¨lÓ&övE8ÙŠ)O­§™wõ¥:µ³ï1åÉ#žÃ¦¢#l'EÙ.‹&yõëp}€››’™ä[=¦“JZÕé²>­"ÚÚº/óÌýçWl/¬®›ŽoÕ5h4Ò6¹í@Âê¯Z³vÄgnøÕoU£V¼öô#ÒsÝúæéi ¯äݲ~•ž #ŽÿûzRž×ŸyT¬éh1:qÒ©çg¹wMMMj^i±…¶PPH3#€¬“Ø>3±þ\;’UJ^ziæ§ŠçÈû4nX‹}oݼ.ûÞ©MCö*Grôèܶ¡é3ÊÃS®^Ïñ>¡IcÏOiù³ì63S)ùééßü„vwŒzvnB³&õ ¯­¿ ϪþÞIÁp̘7Gáø=à<|ïã=4qÄytãðN4\'œ7Wï¦ ôûâšIc»Ç\Fü6ÿ-ëo󄲎êŠö4uB/ö"?y𽄠–üW?gÂzž{6ÍÖIì3ýÞ2€xƒ366¼DøÄ9þ¢ášÛFtaç¾ãB6zgÌs¶þ£|¢†k¼?†{¹RÏÓø~òga%.ˆ˜b’8Ȋ΄®Ù|€•u‚wâz‡c}ö8v›Þ]Þ·{'0ŒNŽcðE­©fìýA=Zëÿß¿Gsö‰ë­u=e|O×õ—¥8'}8ôÃI½!Ч |½«”ïE8A]ÙC-|÷[örþ:ºó÷ÿÒóüÀ^¼Œø¾ðݶ½3Ƚ%îýÙW‡ØKù×7¿fçpïüW¿Ð{ÄÚt“þÒÿñLxš´*”ÏZ^¡rà^Åû3™Q&7SÒm~…ž©xB(žoüÉä·r>ôì§ì™ îkBéÍ"zý^Ö©ýUÿÿö‘çÑè+;˜H „‚÷$fê÷7’Oî«$+·òd)†IPÁ£®èî-Œ•‰/vþ®/˜&Ã+UÔXŸ©4ÑpÍG›÷Wjõ97Lf促ÆdòâeaáœQ]îyn“pÏX\9 ÷FÏf¼·Õ/€<¢Çñ{ñ$Ö“¼Ff7 ïq$,ÒaÆâ8[b‰'~³ÄbGè Þ-#PÿЬÑ)¸¯Ÿùâ~âÎS2O§qÎUÂ3cîúb…4ä`%†LrªB‹1ö€É*ï¼§äï`÷~—±”(Àl…IkÔl «HÓ?„*Ó‚bÅçë>`É/mQVÙª‰g2•p¸e$œL/¯[œÐÍG'“‘>³Ã‚Ùî î­8  M‹íœ—åõ“\šl åÓQÈÜ·VÉìCY²•¢£àIEǧtEGùt2¯Í™æ+yª5j9Xé: )C¶ZØ©  ZÒQÏ@AA!•¤£†ÌRK:jÈ\AA!¥æ•⯡šÝɼ_ÌW…´¢ð¥ë«©§à/Ø.ƒ8sú¤zB ©#­\‘Ž‚‚‚ÒtüJ:JÓQPPH)éœ9¥ž‚‚B Í«rVAA!•šÎéài:—èFO#-à¼þ¿¢Åÿ\Cï,|ˆ}¿âºiaÒ ê3VP¤£4n=¿ñ/êwá¹tû>­Épö,~6t mùr»æ‹­ßÒ;+7Ðîâïhĵ?¡3gB»]"㮡qgQéÑãT´þ–wÑ«é׿{‘þñÊ4êÓ3´¥ë¹[±|%{QñÞƒêmTP¤s¦-¡yŸ•⣒ž‘Lv ƒ‘ª$šœíLr˜ô¨èM“ƒÁ`¤ѹ@ýwdÔðn4°wHã«o˨`ÎülZ—‹ƒÁ`0)„ѰÉa¢ÃÀ7PcŸ5šÉƒÁ`0Qp´²‚^œø Ý6äZºa@wú—‘wÒ²¥Ÿ‡ùùÏ)/Òãä ¿Úp¸‡g@ÉæïÅ5þkýüaìc´pþÿŠkü‡Ÿµ…«ÂâGú¸/!ãÒž!Näîž;oá÷î)sµÜð.òÝ‘öߦ¾‘ùå],ÈÎuþ” ƒÁÐï°ÿ6í zöBz*â>HîWŒM”“{)Ýs×úhÁ?ĽÉ¿‹ú¸^<rr»Ð³' ?¿}äIêÙëJá÷zöºJøÙ·ww yz‰žzúYD¥I“ Z·võ9’t´2ìZ$é_}€>_º>æ{-ZPM°®p ¿ë¾°8æÎš.ÒÀ;ýdÈÏDú‹|H¿Î8ääå'C~JmÚf‰øÚ´m'î¯+\]s¿Ý9¿j"¼Dg5Þ-j¹hãCº(+m^œkv ƒÁÐÁ-jg‰[†þL­¦I“LzeÊÛBóÍ ~ãžM22úÇÒÏÑÁoIt´øë´Ùô¸JZ@(zô¼J3@\@¨T"&5;ÐIM4I¸¢õÊkS…)ÖJ45ï +ϾðªxöÛGŸ„k¯ú® ,Zàzo 9C9á> â‘„ê'5eˆgpýÕ÷Ù»·L9©ùI9LX³Ã`0 †@2Ðak5ÈCã&µˆ ˆ42:|=€P ³¿ã®ûÉøëÔYº~ߟµ€Ö®]-üFNkþûG#hRz¨$§š˜e„û_PíKɦZïj‘Ä.žzú9QsfM§¹³§Ó¨ä0Z™1Ùa0 #AÀ” ´ ДÓ¦˜>ºãΡéªH€ðè¶4£òïšIF@h0­õë‘ך¾¨ ´4Z<9öYA@Zzô¬&6È/â—$¦@%WÐ*É÷)QýB£òñáüeB£„i4ù SnÐd!>”îkÉ’€vιT„GØß>ú¤¸ ÞùÖÓp9 ^zÎ`0Œ”Á€³þ˜×©ùŸÆêÃ…áq@ã» L—% 5ûí|ÉšƒÁ`0®vAnɃÁ`0R Jc0äwPgÀ¯fó7Á`0 #eÁKÏ ƒÁ`¤4¬ëc0 ƒ‘Úd‡‚\ ƒÁ`0R—ì°b‡Á`0 FJ“R˜î0 ƒÁHa²SÇ"Ù¹öÊöÂ1’—Þ\Ʋó)ÞÿpíÚý£åp,CÿÖ¿ {eSÿ^qzË wÑ? KY¦Å‹S¿±Fv‚-”¶hö Xvþd´!–¡ëß9ò0þ¨£æeTªûõÏú4 ÔCµ‘eçkÙÙ™Bfú·þ…‚)l=à ñZ¨£B¦,T/׿€õÖ“ê­±Ëο²S\9Ã;õ‘ª2šZþ<]ÿØ@9 G– –#‰òc-€äkRNgeêéúPØîÃǼ–eçßzªØ’ËпõOŽ¥èùš•”ÝYi†{õmvÒidɲó娑e˜"õϦè5P£†|f³8~â ?yƼx-hvX[çíú¨c±õ¬Ã­­gÀ²ó³ììɃeèßúg%Ü—µ¤öíšp!';w¥ ›Ê©êL0ªœÌ˘ν^ÿøl,_3[._ å—–õ¯Z³£¸m«Fԯׅ\¶.dný÷‡hËÎ }ÅùÅXl³ãñúgcŸ†WÀ²ó³ìÈæ>; ¿Ö?@7äõ™è$Ý»´ c'ÎОÇkÉ)HV¦±¸,½\ÿ,ï ÌõXvþ–][6;,CßÖ? cÕ ­ŽU|²x1Í3‡*+*(#3“nq¬’ÆŽBKÎ ùÁsÜ“~€·_+î-œ75ÌŸÖ·á_Ù¥¯ÌìÊŽ÷ÝMÆ/ÇË—SNÇN”•MoÐŒ™3Åÿ;†§ÒÒÒ024eòdAˆ@<$ŠTˆG>—Àïwß#žÁÉpø?mêTáñjó‚ø´÷´¸dºpÚ°¾•¯rÎðœ;Îj X· ÷^ƒ›Õ!—&O_J/?=RüÞðíRzâù©Ô¼UÛ0<>‘Þ{k"ýnܵSMÝz Çú·©õ±ìÒUfZÙÙ[½Á„Ç¿õO.N H£££®]»Öz†{  kÖ¯šà¶¡CÅïGG¦ç'L <Õß3ãÇ ­Ësêõˆ»ï¤IÆ©ÕÆ<4j”¸°ˆ ÈÖ—Ë– OŽ#48ˆ~O¶JÄôâB:¸–qiIX’j»Žò>;Þ¯uSid‰N³üàjب‰pz@‡úò¸|jظ õ84ÍF–,3ÿk¼hØ^þ‘Ð5ˆ),4u¬Ù‰.Ãx% ¢¢Õ®èi~úöë6¢ƒûÚg±¦½>]ü‰˜&“š2•ì̘ù~(ÜK“&Õ™{Äo=&"t“š6°Aýû{‚ðèËÜL•šÕXìRH³ãŽаNxü.ºý¾GÔÎði*?°‡Æ>8Thròz…ùmØ8ƒ^(X–ÌÖK²KW™iG‘väáÕ½˜þš¬ÄïNSŒ· Ë‘#ÈwÐ-w ùkå Ò”Õ>—nÿ壡pø}âØQZ²h–ê÷µ”Ñìèµ4(˜"‚veØð;„Ú <ƒÖÚ LmÉ)$ 3D*#3Chhï05ü‡ó?hedZ…ë׋|@3ôÑüùÂ?~ƒÈ -½¸ UqB\˜†3C¶ÜPêD–¿UÍï³ãíúWçêáoY 1 o. è—Ë%íL|u>±ìü‰és–ÓβrËá¼&C—…ó¦ Ò ²s僧!íÈÊëÏ?ªS˜òù oÍq@Ã÷Àã/ˆçV/¥÷ & m_V‡ê3`(u»r€¯ëŸD¿^ÓÕª‹DלftYn3®IÀw›SQÉá°{ßn¥åª3ƒÞ—w¤ÞÝ:rAºˆ‚÷¿´ä߯Òsf¯^ËÎÇ£²»ôÜ{2ÌÉëIƒn¹K8hd`@>þ•YBcÓ¼eag „4&Çs#hôàoüäÙ!?˜²”Ú;z|Gˆì²""¹:Ïs2tXôÇŽŸ¡y‹·S³ÌúÔ§{kjvÁùÜ«%ÇŽWÑŠuûiùIcñ*¼©`ªÔ¿@2Wxô8¤ÖÈPvb+¿ZP½B§quTXB} !Œß~åéÐó’âµ¢ÁÄòetºè`—,šMƒ~r§øÿÀè‰a2l fGçŒNjxAbä‰8ÑI¿=ùéRöhÍvd­ŽùÀsŒ<µaÑpÇz§´ÉÊï«vГ£^9­Ã$EHÈ@µï‰AE¢µuiAuâŽÑ'гRÇ¿°H=]ÿ¬Oc9ØDƒ Xm8å^,è\Í„y‚¤ÔÐ@Ëc¤GÇé´˜y×j)j:q¬&‘÷]«I(#µ\a*!HA´Szåd’pÊ>zD).í‚ú=AKò–xMN­ϳÄ{怼â?®AvôHQõõÚ°•X›Ô˜JùËM#£iëäwƒô0p‘š6ùõ]«Õ•ñʰ dÍ[¶õÐb¦Ø? ”¹Ž_ØŽÍ/q_> %;É'*í¶ÿèÑXÊUÚûÅW¤¶Bs‚¹ ‹Õˆ/2\(-5N4®Ðòè-_•(JŒøe£‹Æ¹ziíTµ3¼K4¾zù€¦/–ÇÊ©£wHZcëìð.˜úA‡$w3† ´¶LxWø“å$ýGI½r‘aháP¾Ò@xù ²’›Ú¡ü±ldSRr:+RÚ¸å·xW.] ò'rû\AÚj/¢M›wÚ” ê'6D½Áõ{/„iÇ@&Poà²ÚçˆçÚM!í:(cÜ3ÒÖɽv´û*ÉiJ©ÕÕ~/ C¸§Õ¦Fj½FvØ@™á–xMÛìƒÎ¥}Õå­èªn­¢>ÿûgÛkŸåv­ÑÏoìHeûŽÑÿ~¾ƒÉŽ’¤åËF;áŠ2bÅFäܾ\êjNB4 šˆðÎ5?ªVHîûͯ^>̾Cüýerd äg$Cí»J›i×b*§HôÊE{ç‘20’òV«³ÓÈAOMމã:öF‚nŽ%1ÑC¤m”Ñž:V´uR3M 'ë–Vcã¹qL±ÃÕ Ô¥Þ—·¤Îí“»Ù^ªbßÁôMá>±.V-5ÿ-8W7WmÜ/ð³:RÖ…iÕÜ;òS¿^]2 ½x&Qqô4-Xº‹9‘¥†@µ¦S§Ï ²?òžž-[³—6m;RC–:‰8OW¥–Í ?[K+h¡šÆ9RÖ:,ï˾ÝCë(÷\ý ¤Ã#šíL/.iMôÈÒmÄ"Fi:nô¤üŒ4Z­4h0—šhLµájiÐT‚+5eFÚ:,9Ç3<×_©%|{ᬚ¥ìm…æ uY›†·5;ÑYArnîŸMÍyVBqaˆôó›;ŠNüã/vê’+g˜UŸ•ð#,_þô:¿þyT0»X}jµÒ/†\¬ºÎ4sþ–PÖ3×£îè"ü.U‰ÈºMÕDd耋èâ‹2©xëaªCó>Ù&Ò¡Ê»¸Ý~S'*U ÏŸnó\ýKšÍ# #K–ǸŽwmv’ ¹í@ÊÕ¿BìÒ¹)$¡{—´dåžÚr²b³“ ºY´å° pÚ4Þ›¿ELau½¸©Ø“ ¤eÉê=T¼õH á9MËUòrsòtÞœUL=Õ÷l¡’ ijdõ^Z¾n?åu®&)’ø ýå'Ôw:^¦+ó‚¸á·ËÅEÚ2ìG_îDÊ“š…µ>î/Yv~–BÞ]ÅHDýÓŽÐãK{â„ñ’íÕ#húY\T$ßLö¡šþÔðÔÕ9”,Ùì$J³‚ ¥{ §AvÖí »WX|0ìú¤JPp/ò¾|>2/‘Ͻ\ÿêZ<%á9íË.-dÇ2LJ¶SËYÏNïÕ½;ÝŸŸ/N—D§Žß6t¨8\^ßüÓÐ#ã`YF‘‰ §°sÝY­wêíxdéO°ìüݺm†cø³þi´I6;;[¸§ÆŒdGbÊäW)¯kž¸/ѵkW***¢GG$Ú ü~jÌôå²¥\#u5&e¬ù P×?¶ÙñuídÙùºie›ôª @ß~ýɉväed~¾úÿ1¡±yfüxáäfžz ¼4i¸ûnº®ÿš1ó}A˜öeÌ{'y¿þ¬Î3ò.‘^’5ËÎϲ³3ÇÏ2ôoý —}ü$GÚë 1…ëׇ®Azà$@f´×Ћ“^q1HÇfÇ| Š¥ç\7½\ÿVؾs?}¹l—´Á²óŽüxŒ !m[iý†úÐá“®eš 7 BšžtÇŽÝGkËÄªâœ¹Ž§ayŸ;÷ Çða…fÙ1β[¡ôõs;ö¥Â¢ƒÔ«kË„çœIŽ–èTÒw%‡uådVÆ Ÿzîùú`1~ªß\_½# »Fo§ ‹Ñw›ÓAQ‹¦ ¸ì ³`É.*ÿñTT9)vPVøØsO׿ƒÁ`¸95ÞcéTÕYúû§ÛÅoìÿÒ¦U#&>áè±*¡É‘Ç+Ä’“•1so#À#EƒÁ°5´´ËvLÅùC;ÊŽ Çp•Z1Ocy½þêðêÃg-0à ¨“ÀSÏÞ¨kuÈ;2â« W<ƒ©Ã2‚q(³$ýP×Ó2feï׿@‹ºn@ºn`O.iàOÏÿe—&² f¸AõÎÈÒ…i,FrG¦eÌ2õ|ý ðQ’é3ÊgÙùWv,ÃÔ’a¬°-šžOW÷¼ÚµnÌí0>IKVí¦CGNÅ-§s~ÞðÓãõ ”}-m–ËŽá;ì ŒÕW÷þS_ÿ<.ß¡e³tÇà‹ÅÒ󹋷Q屪èòµp\Ûìx»þX?NÜ–e—z†ÿe¨è‘Ã.åbu ” –3>ÚLGW™–“¾DÙfÇëõ÷Ùa0 —›h½fºÛ%-,Ç…ó­>Y¼˜*+*(#3“n<ØÑC=W,_Ny]»R¦7€ÃEq (ðâ¤IT¡¦ë÷ݘ/íÔ”Vw ¾®”mv<>õÜ×­&Ë.mdÇ2L)êµHN,ÇAž8å<’ü€ô #ÅEE‚Å"%8‡‚j Õ:eòdA~fÌœi˜¯2Õe©„KKºˆ¼¯—¦Õ|;B>+ô>Öìx½þÕ•B2븵õ’¬Yvé";–aêȰzʃj9+¢}jÌ• ÝZsÁºŒ•öÓª µ ”×n¤5k¿3ÇŹ¹ª»„ ÓE|:ÿcKþ~'£%Å…¡ß 5¡¬¹LlYf,;†gemr¤lß1¢n\®n£âhÅiŸ\cG•ÚËõ¯î¹ªgÅy¯?ÿ¨øŸ“×KtšèHÇŽB çM­ÕÁ•Øþ‘Z~ü{Lܾ”]zË,Ù±rJÈPÑw ;Ÿ~SÊÅê"V®ßOßo=U&VdªD-»8«õ®®õT¼ýñ¢}¡`ÚN iÐùá>0ú¾T¶csÔ8¬úO*µMÙ¥•ÌlËNa+È‘¡Q“\¼õ½6c#o9Ìå›@”ªÄò­YE´bÃ~ãa…™2q—ìX ’gcÉN.«}Žø MB·ÞÔŽ°'5oÕV<;qühÔ°Vü'{\™*²K™Å+ æ:) CÐ}òM™pŽ7Èl\Z5oÈ…nGOÓÃ'ŹX–ädÚ¯ÂÓX¯6ÎÆòž@W~µ@hN;J¾]ªvvmè…·æSÃÆT¦^è6nBKÎ Û¼e[Ú°z©Ð ü‰ã•†þ=7²ô©ìÒVf¶eÇt'•dh%$:i¸-¥•\ænw§ /=O•úçûã"&O_v}û/ »î3p¨pršCâÞŸ®§‘ËŒÁˆ{HÊZ€SðÒs¯ƒ7LŸÚÈ`Ù1< CÅ¢f‡‘,éZÜT…êéúPxc:ÿŠše—>²c¦Œ ­tŒ™MêQç‹2Õÿõ©U³\è6Pq¬Š”Ÿ -»*Ä2skr26V«¦§ë_Ò¦±°|¶} ÝóÚž+XÑó»qSBÓ"Xñ³réºeX~Zd°µAð£'R·+ˆ{°¡Y²h–Z^¯‰k, ï3`HÈX8@È‹L“ÁHÀù§×w`ƒd'ѹ]wU;ñóÔé³4{ÑVaÅH¼8RD'†eÈ· )ˆ NËì¥'&NÏ?xwŠèä@:` cW&Ü[²p¶X‘Ò„°ï½5Q<“q£cF\²ÓîÖ»¿Ú1†®ï¼ ŽÜ«EÒJÂS¯üZù@ئ¿F÷ŽzZ€XïàµMŠ|dÙàñ„ï,‰,'¼7žiË )@R´2tË]âa¥±òʯæ‹UU'Œ‘?˜>EÈDªzO½¡=w?H4ÒÕÊ[Kˆ@`±â ~ðíÀßËOÒHc‡%Üúøhi?\”°ýz\HW÷¼Ë68¿þytßm¹ô]I9-þG©-91üWÿÉ\ÀŒ&š1)‹Vƒ"7¢„fÑì0#WžeuÈ¡!ôì‰ç§Ò„ÇïR;¸jÈötÑBë¿ü`uç‰ÎÄ«6~­v#2èØ‘Oy/Ú;8(í¤ÈNk@ rò¸ré|µLÖÒøWf ’bTNe;7‡•¥V(k²%¡Mß~åi!”§ŒåŠç%ThYÓƒèsäuªH n÷ËB~@ÈJvxñy*´¶¶Ãé…Ät÷pYNsÚ_~’ ‹ÈWáz™"õϲÍN²‰®Ð´l#:)ÙÉ혋ŽWq4œ8V)49ÐÆœ»wÔ0ÐØ@#PM¤f ƒ{Ä69²Ã{bÊ„ONUìÄ’dItŒðò¸ü°é²·_¶N¤|/h{BÄ*ÆÆ‚È•6 | W^’+„¼8°tÖfÇÊ´Êq÷=a÷† ¿C jö$óAýûS^×®ÔUu7 LïLJÅEEâÐNÜ·r¨Ÿµ<ÑÄhÍf‡ëƒ×ë_ËޱâÆúÒM7öóÄËÊN3ÖRct^ ;<>1̯œBÁ” Föè”#mLÐYŠi”ö9a‹È|$ÃÞhì¸W)™²“ecFZ`jÐ[Bn”Ž^-d§-*#™}OVù!;/Ö¿t‡]öèÙzöêQëþ5=/Î Ù)Ù¾-t§Ž>œFæçS‘JZžŸ0fÌœz>âî»iœJ†@nà·¸¨˜úöë+ˆ ðÎÔiêï°¦Ùñ³öÍl £âH¢€Ü@‹ƒŽ-Z\fLÒöuI²ìÌ’;1ÕõíRAX@JPæV —ÒÑ“VÛ”ˆï)dÇH² õF¥6ÔS&Oý®¨¨š Rý½bùŠ‚´BÜ YÒ’ÜïÛ¯=9fŒˆï¥I“BÏ«‰O© 92nísŸªŒËëiÊÔ¿@:ìø §™"ÑÏ+«ü";”s4¤o=åV4]e¨(JÔS¶­ÄCâþü|º¢{ö%€è@Ãâ#ñÑüù)Ù_*†râzš*õφÍ ß;ƒ–]ºÈŽe˜:2” …x!ˆH_1$b²fýºÍΣ££œŽT¿‚ÁFÍ3^ íó7 Ä4–œîn|³Ðüdgg‡ùõ¿ã—1×Kï׿ƒÁ`¸Û¹Æ«ÙÝM,;­æ¶þjglMš…”·oúN8†wÁ§žû»µå"`Ù1RL†8»iÚ›Äolz×¾m&>qâÇÊÓôÃŽEÙr=e²ÃÂOùÆ–eçÿŽ’eèwŠÍ&5'O¡¶Žá¶t®o)„:]®~„¥É`0.¡{ÏžÔ£W/.c]a!­_»– "EÀKÏ Ãe°éƒá6ÙáZÇ`0.2kÞa³Ó¡].·8±c÷QÚ¹ç¨59™ìo¾á¬:†{xâkG•x;lƒÁp“ëÛìœþyt×à‹U‚“Á…å$zŸû¹÷àqz÷ÿ6Ó©SgåDæwP²âÀõzd‰ì°f‡Á`0\l¤•èÍôÀÞmiЕm¹Œ6-Ñ÷÷ %«÷ÐWßî‰*'³ýc5åru¹"Y$; ƒÁHz;©*&:îå}¤ò­ÛT·<­hvºtnJ9í/ zõê²TTUiÇîJú~˪:LH;˜ýû O±t FZã߯¾è耴£…i«Ë—Óˆ»ï©uÆÌ÷ÃN*gÄFÓŒó£ÊÉÊA A^o¼º5Í<Ÿ = }9.îHÅ)újÕÞ˜¤Ç•ƒ@Y]Ç`0¶õº µgÉömº÷Ÿ›0òºv¥²ÒRAŒÆOóæÌ©u‚Âï\õYeE¥8Ùü¥I“ÄÉéEEEô¼ú þ¦Lž,N;Ç©ç)' %š •bE¤1;ÆÛnì@õëÇŸ,ò©’ÁŸªeõá§ÛÕòØÒì°!ƒÁH{Êb³t²ù ÑbØðá‚”«D„E{êùó:÷zuï.LáúõâºT%BWtïAÎÿX%?*)Z!Ñ›i(_ó2ÆÐìtÍiæi¢b yƒ ãñ:w¸€ŠJ;Vÿl 2Ùa0iOwl‡sŠðh‰ #>b£/_Å‚LKߊ$€ÔÄÝ¡’U K%¬ ­nœŸ½•Ö¬_ç’O™’;•ÎL˜F Ô¯gkÇæ'1·|í~:~âŒé0-›7ypŠQï(«¤õß—[R­Õ Ô¥î]šS‡,g–‘ž®:+Êá`ùIÓaXr¤I=º´p¬*®ûþmÙQÁ=w®„Ó"Cí˜úöëK#î¾;쾜šBÇ™ÑYê݃F-4ü|xYnåá´G¾†›Š»šc žø_kCÄ'¯S3ê”ÅGGÄ‹me•T¼í°!Á‰”“•}vÜhkâÙCÉ AÊN t¦°7ëg²\«;òñÂj¬hyp«s«V±)¶„äf>Ò]é$†Ëd'ŽpfÃîQ;f8ZÅå ù*Vü*ÉïRk0AŽÚAùvSÁhyp³¿ñB9•äçÃ˲p+ qƒÆ°ÔŠs9øAN)ìm°r †¿v§´´+^ߺÀÉ2­’’4pîuòúé+.åÆkFåàÖiò ËÂP®å!F½`—zŽì:Ö€w]‹‰ábÕ§Ú! cV[ÁK¿q¿±œ[¿±­žÁ¿a€Œ8°:K†•~å5üaÅ”6]\Ë4`ä,ÿKà7ÂUTT¸Ò¦Z­w;²âu½’äi a¨o¸ €‹ƒÄ$ËÃÓ²ðÊ÷ÀH½?ÙÝAYqï»dÄÕÙš•±p%º;ÀV Ú3Ðð†ËpØß«¶ õÁ98"DoÕ•\².5; @ +ÚãG°ÌäFn?ž—4«²°Ë66$ürÙRqýuðÛ)ƒf…(F™º°ô\ñDCãlädÜnp–…AÜKŸû¯´ë }Ýv0”q¬y¬ü"§£´Ä‚t`U4-±HVÍF…Zà:ËÀHÓg/Nz9¤z£à-gš.S[6;ž6Pº5uÃ@ÙE­Šg ”= W§±X³Ã0«1`›_ÈÉJ¿ì–¢»$KòFAÐÊ€p`™86ÄsÚêÍ'‡–zã÷Njn$YÂ3܃_Ä{ÒHž¹ Ä…Ý—‡Õ¤åx»î`Áùö ÐhyP<·µ*É·—e¡¤‘Þí “Y7‰—q,»z㺤ã”Ѹ¾dçœQ146‘»_k—uë=—÷_ŠØ(0š_Ijô I–Þ¦€ñàÔé³bãnnLcyx5–«v"ÎídW9xu5–'dá•=¡ý”¿ d'–búG%t}ßvÔ¥SÓ”)£D'rððIš½h«ãõ/!gc%“q»¹HqÐx*žrH¶<¼, ×ä@<5‘†ÝaB2¼(c³õÿóåeÂa“Èk¯hC™Mês«¨8zZh¿¾ßv$aµ(`§Ö=²¿L²/”ƒâ|xY®n*È=÷ƒfÃñ·âùZØUÐJ[³µ´R8†{õ/´£Ù!/ت$W›à™rP’¿‹eá<0\$ØÏA  ï÷¥Ši»½·Ãzý³w깇WcÓ츈 ‡‹zâ¸^ÅHà‡gó[aÕŽÄkíÔs»MMÖ…)ïâ¦1§´0Õ³uW…mP£q8sã†õ¢ú9v¢Š”Ÿ¤ã'ÏÄ]~MÕ£ŒFõ ýT¯¢£ªs£þ¥Üqf27¨aAŽeuØ5Vè0´ÂìS€¥zf ¯•uíÜLüÄj¥Å_—Ò–]Æ»7ͨOý{µ1$8FÄgYá^:RyÚt˜‹Ô<¶nÞÈ´ÿ6šßûËÓ®}Ç&#[Ê^^zkp 2ƒýÞ,(×r¶ÂÆæKf—ÐÅÞÝÑ­rðîÒs×4;yp×f‡{°tëâlc.<ŸHWq\¨ƒ¯É¦®9ÍâÊHÒm×u Ò½GiÎâmº~®º¼uÊÊ´Ý6jP_}m+« Uú­_¯.uËiWç׺Y#á6”¢ÓUAÇë_ÀN!xzéyŒp؃&Éí²%°çÈö 0»ÝµâeÏ.=O³‘2s4ë ûáø[ñ‡|Ío lN³sYçfq-²Û4¡ž]ZКâƒa÷±ÚKxxö—ŸPIOôé³ÜöMkïÓõ/å4;fl4"7S’Éùhþ|Ó5!˜„íÁíV2¯Ê©V)ÙyPØ@1mÇþ6‡(\|¾¯bÞ§ ¯ Xj^¿þyµÒ†VÆI >£÷ƒfÇ©¶¶:.çë_Zn*­N4ѧ‹Ç´Ù‰õq+.–Cºo*h$ ¶Ùa¸þá›ÇŸŠOäkiSAÅ”?7ZN¯‹ŸÓ¯e*ïV ”›…›üïÐþHÆÉ0R†ÝŽv*KâSͱõ~(‡tßTÐ0-WwPæ.,ÝÆý¶Ãñ§â ùšÞfÇä>[F^pðfYÄaœrpŽ…4á‘gTéíµ¦$ , Ïþr¸í‹·,uÉŽ½i¬äˆñld‡é*½cï³[`ó¦‚ñË"Uò o*ÈtÇ oÊØ¤ÈÀ H ˆÍ¼rƒ6±ˆF{–>+SâÒz˜bsnæL¥•æûì˜a˜r¹¹<¥†É8í¬W´CÏj1yì³ã…ý]’¿Ç ï³ÃHF?…2Ÿ/äëàÙX±ºgly2mêÔÐIãÀ< ñÆö<Ú@Ëi«°Øšw¯ñ$js5–w§±blrðQ-Y¶,Dt®èÞƒ>œÿ±øˆ 2Ä—|îõrÆ1}‚•g1èMå9;QÉöm “…ßC¬¢‘+ðð$ÿ?Y¼XLu~ºøµ|3U…µ‹Üƒ1×a®“†\Ç|ý7ðSƒcgdÚ‰Q츷ՊbÊþÉZœ…RË@Ùêë¼£2é¾ýú†Ø2:¹²Ò2ß”C¼§mƒüyEÉèx hø´L±Z&Øo 6]Ðb¦h+ø<÷=0\¬zqÁ‹/ä«X:.œ†$ôlvÐ>C³óÌøñ¡þ)rk]͎êX6IɱÙqcËÇKÏAjÞP;1ho@j@tÞ¨Ù`£úÛ†¥qãÿ`Šy[§{És,Û¤7 ÞJ¨,"w«Fņ–Eà¡òG3"7[±ò’ƒ4ñ= ]ääG¦‰†Å̾K¼ôœU;V( _°¬ÆŠþ íÌÃ&ˆ}à0¸’íΧê£6PoCSÅáõcöw.õïñÔ?׋€mLq mB`^×<º???dÓ”HYhñ¼úmD’óSiö+¡Ñ÷†20S¼ôœa©åbð…œœî¼h÷yƒF}¥©)t´±Ëðý0mæ4\ßTƒ «§ú‰ëXºÓÚtêz›âc£† O¬6Þã"äÇ ÀV†Ñ(äÁLçî„F¢š)?8hZdž-‹jy¬„FÚœ¾5¿«mgòLUD»ÇE =hó$©Ñjq>ä„o"ááã"¸;´Ž?•Ô¢¥B“tNq‡f¡LÌ#ŒôÒNÛQ‚îÍd(Á¬Æ²“Çx OÑ™@xpèH5JÜÓ³2·“‡XYƒæ4)zÓÐ:A«’èrÀ‡Œ¼€ô¡àðþÈ—Õêh7Z:vé$ @cM!Å# ÄmDìÌjUâÉ4ZxO=-ò'íz%†O»B%žpü±øA¾– ”MÈ4©G[PRMÉ”H:íè7Ë~Éyn•erùp,©M@£]þ©%¹™Ÿ)‹t›Ú¤‰•V YÐ*@s€{ÕÆaetþHS+±œØBä&ÒðdgnÍ”¡{'†‰zÄÂ4ñŠC³£] %5+Å'5Sf ƒ·PŽm³ƒò–6\ZddfˆïÔÔ¾K|ೄk„®kvœ^znàíú%¹2Tïy´8õ ”W ”-ù„,=OXFLhQfßß( c±´L1÷ˆ‘>Ò€ Œ£¥† ÓZïL&4KÐ4˜Ñª˜Ý¹3ñá3‚™)µxdÔ\܃ƒ¡ i»%Öì0œïCI–“5BßÔ Ú!ôK 5zýÏMj[¤oò¡·ôÜái%—wêODZu²þ'ÏÉÐsæ:Øå¡N×Zhí7Œ;XýôÍÒ„Fä²kt¬½ºw§J“xÊDFÀ’è m0z t¼Ðl ³7×ÉÚË*Òƒ›1ó}±2M^K—hYÀ;©ë*¶(/Jl²£=+ 46Ðø`t¹H۪ؤSa—FÎþ±ó3ùWÓÖ˜qFZîw¢´ùè`b¡gza%xµ;Ñâ°3Q–ÿlêï³±¤q2ŒqA|äòbtþ¦¦M¢°i+Ãh ¤Zù¼9sáРéòûÙXØ´OEëa˜)Ci£2ˆÈALeiUȘJ4ÊŸùï‘z#Åv}áOÅâMÀA Ï0°‚&YO«ƒûr@i°¬·@#èðÆ•A—`xè Ðø^dÄÝ÷ØÒæ˜Éƒ™¼E¦WYQIeêVaÐpÄ<õEîíTv'5 HS»ß”ÊdDÏc‘Áxd¡5 Æ»ËM'Íl¨h*­y©ÃŔɯŠÝ³‘.<ƒñ´)#eÖì¤a?¨¸Žá¾| ÓXæ¬ý _Œ4¥ˆ­ýVt—ž;«Ø‰£ÃѦ–ž[K³®]ÖeÕøJBž;$ídЙÈ%çŽäÌä¡8ôà ?Vó P,ã)c”Õìc#ËA– HŽ™©#3ù°h/P.’t"/èôÍÇ# ¹ì[’== KD'Î<à]Ax° ®ºŠBDÈl>b~ìRÎ1ÚúTb»D|7Š é(&ÞËIg¦,­Âõi,h"WÀ SÑš±ã&À(VÞÃÔVÌ„cl™Ð(ȳ¡¢•ƒÜU9»µ+í~Cèèa7¤Õú Ìm*h_’ôIÂi3¯,ÌžÏõ¢:šÒj™ð B»MÈP¬o’ÏÆJË¡?—Ë8äOQ»© ñ@Kq¡(ת‚╳±âÝ9Ø DËCÐDXGŒb)¾}väî¼q—Cò+ÐôðfÍá¨~—…9D+©ytâ{`0©Í‰Ìô½‹¾.¥½ÚPÃÇÒþêÛ=µÒ.Úz˜®ÌkåXˆÏèýŠw¦.š9’Ö÷;'dQ×éõñï/Ü’ð iDK¿dg­üî@Âó0sÑÃrÀóDï‰÷eYDÏ—òO%4}Ätœßk‚]*:Öù‡ÁX‘kÐäôËØ×WSÙþcqgqŒ}m;y¶V?«¢‚Š©âØé¸Ò@xăøŒÞi÷¡ôõÆ}Tuæ¬íz°ˆq™›´ÿy›æþÉjt»j ŽÓ*µƒësY+ª¨ëè·wâäúó´uT²Ëxÿ™%‡Å‡pE—–Žÿˆ÷o¬Qór6F^ÏŠ°[N3Êl\ßñ|¼ý÷MôùÊÝ1òʲ#Ÿ5{©áùçQÇvŽça‰:ª*˜û=w iˆ «¾²®U»Â1¼»wÒ=;LùmÕžZ[é?ÖímGÕ™ eµnl©}þrõzsN±~¯ gÎ*´ö‡CTøÃAjÔ @­š54¯ÉÙv˜æ~±¾ýþ ˆÇ Μ ÒŽ}GiÛžJ:qê Ϋ«¶»Æ¬Ã•§„ÿ [‹°ˆÃ,6Z¬uZu¸Õò0ãžßŽ3í·Ïå­Dg›Ûþ[Üæ? íÀÊö4(ìA½ÛP·Üæ”­~TVq\íÔÑ¡ãÌձ!ç¢L5mÅÿF6T˜¥jǾas¹øÀñ!ÙË‚¨ùçÓ-×d 9´¸ åð‡~<)Ò^è‚Æˆám¼ÿŸÏÛ ×õÊÂ1¼¢ÕK…3ƒË®@—(Îãþb­þì,P³b…Ú1®Øx ir\% ÔŽ .™Ø¬v›ã KN€e²rŠf,ØÂ-#nØ]Ü«ðv„¾‘¯bm[A.4׿€ñ> ƒÁí ËXö‰¼@Áëõ/`§¾²P ·µÌ‘R^¾æWž³Ý¹Ç럽i,*#EݺýòÖ\ºèÂp"Øý÷Ç%´~s¹kyé×­ ¿±“®M×oþüµ0²~ðŽ.t‰ŽÍÕÇËv 7úÞËÄsyÍHd[›Zlgø)[­Ë7ìWÝPý~SõY‚“ßûNü¿µÿE¡oN÷àäw—Û>“¿÷rúaç¡pþ”°âˆLÿòûk¢>KvÉ6c×¾cjÛsýá5)YÿÌ\éŠî¹Íé!•<ϼñm˜Áñ³_!ž}¾j7Íùl{¨AX÷Ã!êqI‹¿ÿþxs¨c ¾–0Íùl›x.8?y6D®ß[ó6‰ç¿RI—ŒsÝåtâTø*3ItÐ8Îùt•î?×ûÿòÖºº[ëPãíçî-žýÛ++Dúò½‘'Ø;áÐ(ÂX½Ÿö‹Õ{D~p?’,N~o£Èc´wG<ðƒtdg -_m z¿Ró«-{Ä÷ÖÜïÅsYöߨu#Õ/ü½¢†…Q<Âi ¤,óø[ÛÔj;At ëÍ;ÏÙb?-¹!×~ãÊß-«î¸êÛÕjxĉ՜?¨éàûñvꌌ1Xd]ÐÞ‹$D³Õº}ÃUmE} Ò#JÚvG¯î nLœºNÔ-”{´: õRXß®j§Û–™É«6/ø&ðMÉïqMœ¶N´·zƒM<3y¥ã² 0×a¤+dCeŒ\Y…JÊ™¡ñù\mœeG9vdAPPÑo¸²­¨Ühøe\èäósô©Ð(DaТ1˜8u­HSž[Ï¥ Rð‚Ú8 ž#Þ§ó{†åëMµÓ·ª…z÷ãê¡6„rDþ¸š”:74ŽxWIð$a°NyÇ» ñj~AQ¶ÐhG¬Úw—DNëG–-ÈÍ¿?ÞW¼':…gU†Æ:R› ŸK ìßÕø™4º' V5Ê;Yý ŸÛ\”$åZY€4‹Îl…‘¥HíÂÈ:‚oÀë<ÇÂÊŽPK1C=E[ÔBT×ÏÜZß±¬;’øƒ¬ ¼%ÑÑ«¨;’ Èzôà°KE]Ö¶) ?HƒmÞ"ó™—0MóŸw…ò&Yø¶ä ä·tß1¡YLD™x™‘®€Öæz•¤ 2BËm FB¸§§ª«º$K¨ ’Ð`Ä*ÃHu>ž¡‘2ü0ÍV Dd‡t u¹SmpÖ©VÍ,G`=.iFvà_’™/=MFkhÄdƒ÷ŠJ<.©Ñ2É- 0gÙ A“¢Â0Fø²ìô­‘$z’(É[¾'Òê×Íx—X9EYâ}@°ðn‘£j›Ý¡ËáÜAsÍ·ë»5 Z|’HKmHr¼ÊÒ ²JŒLµÓƒïÖÔC£)1'ê€lËÐîȺ&}‡Þnã5_h_ÐîVk·sèNu„¶D4ÇSæb0Ò¨`P—¢qÑx°fJ :Ze“šjpN• -GuçÛZtþ’`ÈÑÊ¡šÎ#˜s£äý" ¤¿ 2ˆ[v0‘ù@xŒ¸dü¦»ä”“6N@;ý€tõ:™ì9$5\‘÷dÜÈOä;ˆQœ:áBÞåÈLÏF… •x?Ä9u(w4z(í»C³%åµ¹ÌÏæši“hÓ(H#U¹=?Ô:I@H$y¾º†lʲ}K³q& ðsŽ oŒ·ÔhoÄ»D'1uHz÷e=B»‚ºó…Zö‘þ"¯#ëB¬:m´º¨k²­A;ƒo@¶fßAÛÆE«§ÐË6é ŽÈ)|'P§YÖÍ–)éÝ¿û· Œ´‚V{{ÄÁˆÔZÅ2VT¥û3_·×^Þç:áÞÆÆ•_ Ç2MúÇšÃ䨗a ‡±HŒŸHƒÁðx5ƒÁ`ØA:Z(§›|“a¡ÌHH™xërƒÁ°ÑÖÚ>.‚áùš—1ËÔûõ/ÀRb0 f- –q*˦Îmn`q2 ƒÁHY°ÍƒÁ`0ŒÔ&;Lu ƒÁ`¤4ÙáIIƒÁ`0©Mv˜ë0 ƒÁHe²ÃKÏ ƒÁ`¤4Ùa®Ã`0 ƒÁ`0 ƒÁ`0 ƒÁ`0 ƒÁ`¸Š:vöñþÕâ"d0éŠe3î©Ã¥À`x»ƒU'¸ô ƒÁ`¤.Ù9{æ$—ƒÁ`0ŒÔ%;A&; ƒÁ`0RšìTâÒc0 ƒ‘Âdç “ƒÁ`0)LvΞ9Í¥—FÈhÒ€®¿¶+µkÓL\o*ÙC_ü£()yA®¿6OÍSCq½zÝV‘ŸÊ£ç¦V‘×KsÚŠß»÷¦M[ö?À•=;…ÞA†Á`0Lv˜ì¤!²Tb1ûíÇ)3£!}¶t#MŸ½TŒßŒ¼™&?;‚¾ß¼›†?ðŠn¸vm›Ó¦ÍeTA(ä3`Uá–¨éF†ÿù+é¹±¿ ²=å”ÿØ›T¦’ø»¡ÿetïíýè±q£Eÿ3–²Ôp™¶˜þóí"ž?øËëDÞW­ÝJoÿÇ?‹û#}C\3 ƒÉN²ÃÓXé€g§ :¯«ÄA’à“/×Ðß^„ú\‘Kýúñ¬øë)âÙØç¦Ón•ütp/ºýՇ賯ÖÓï~ÿ_4ö±aô«_\G|¼‚þ>Ý8°;MSŸ¯\³™~ý»×Bñázea Ý8 å]’ ¿«t_5RÉÌ¢YO‹ß+×”ˆ¸~÷T¸.ÛsH<ÿÍÈÁ­,ÜL/Lž+ži<{†¿cƒÁ`²cDvX³“(Ý}P«zv“yF“FÔ%7KüÞUº?ìÙÜ—‰ÿ߬*¢Ûoí+H žƒè˜†úMþ-â÷Šo}OŠR}*픂Tó-_ULÓßüWjÒ¸xŽø.éóP(}äkØ?]MŸ!žÝ÷п‡òÑ%7›úö¾„ù—¢Û‡ö¥×þúÂ…¾á³Uü3 “è8ÃDZ`Ìø¿ Êcýœ~XùfسŠÊãô࿾FŸ|Yvÿ¿ÿò¸øßïÊKÅøÁ÷‚ÿoýÇ#‚€mÚ©†?A]/½ˆ23‰çŠ ‘\ã?€û¸~ìÁŸ ,_½),'þø¶ð³uÍÔI+Ý}ˆ²Ûµñ#½·ß]öÝ‚Hiñê[ÿ+ƒÁ`0R ¶·:où>.‚†¦‹ÿºÝÇ…ÁH ìÜ8ƒ‹`0|€8¦±ª¸ôaÈÎûƒÁ`0R‰ìð4ƒÁ`0Œ&;gªX³Ã`0 #…Ékv ƒÁ`¤6Ùa̓Á`0 àÿÉQþ Å74ÂIEND®B`‚rampartc-src-1.3.0/xdocs/docs/files/rampart_archi.png0000644000076500007650000015634211202453376022475 0ustar shankarshankar‰PNG  IHDRMpÒñ pHYs  šœgAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<Ü_IDATxÚìZ PUþQò…àLÍ"æÕ’ÄG©¡#šÊ¨9S>1tÌ×$b2êhZ™f:>Q|ƒø6YŠd¥©døÊ”T %@tFM¾`w;ÿÙ{–»÷îîݽ\|Œü3{ÏÞÝ=ßžý÷ÿ¿ÿ;gÖ^` ¶ó =×ßþ•Ë‹ê¤ëyÅ‚‘ë]¡Æ`ÈG¡àåå í;t‚‰ àIö·}—*»¦&¢tšKpÄN¡&¦t¤žÀstgÜ€€gz «~È í´Q]ª„³`Æ1°qT…tàýP?§<Ô©yNÅBcãäùª%âÅÀ>®¼…£ž”­NH€±ãÇÃ'£FIÇð¿··7x7mªØ‡³nÚЧ›¯C÷Ý{(—âpÄQônn¨O-Àh8«_h¨ôpÌΜ>mh€…²ÿè´µ6H[ÇNT$zJ§¥“LÍšÃÉôtº <Øî8h$YET\l,ìÞµ‹b)a°>G©ÙÔTÙááC1tF»»;,Y¶ŒÃÿgÏœ¡¸øÖ¬_¿> 1Ó¦©„¿8ÎSçoAçvé~öµ\éü–íÛíŽ# q8 GEEGÓ6là@Í>2ŽªNèQûÏ^‚Ö `ãÌù·˜nUá(ÎG‰Žª;Ч3IØYÆÆÙ'Ø^nT×!ŒÍû²DGqÅ‰Žª…ae/ýž–¹5xI–z¸1'M‰D«(¥2gÌMŽB #U¯L=ÑI±É)Ï•,ÈÏWä•UkÖâ(½¼æÊ*^ï wuu<”ö;DGpÊÃ&î= mÛ¶‹ mò#‰Ý7ϲ°=}쨬/’7«vzˆœ=48ÀQ´êñ‚QÍ|@hHmuœœìzfG~Þ Í^ /ïæP¿~Cٹܜ z¼¨0š·°Uþwÿ»CÛ)ÚšfþæëÒ}×ì¼ cÂ[Óýwu;©¤ì1Á(¶ºSÏÜÇUàÄØså |ëœÜQ!½†ª^Ïœ£ä$ŠG°>‹Ð'üØ}9•¹»[18Rô©%o ‚>2§i!8‡ø­Ýo¶©t`’1—–”XÝ[çøÁþŠÄÂ-Ÿp H5ñˆ†É#ŠçyÙ‰þD‰Ï?Ÿüü¹sЮCÈÎÊ‚ýDx"wôéÑ 2rîh‚üå'}¯ŒcØÐXÒ£7X×d2Á_ä~©))0}æLÈÎΆ¢7 ´o_ó€yMâfÂÑÇÇ|É+=Fâ(ìc£Ì÷›•xìòå¶¥[óº nÝhÛž¼©5ï[bÆ&gTQ‰•_T >^ Ë]7!Ñ1ѧä=€”TsbÄkNœ•5%²­C‹“.Hò`GêUC÷&©gÄQzóÚxDEOœH£8$(ÜŠoº!i·¾±ÄdNBÚc>·`Ñ"šrÒrI×Ë—.›eÄ6Z+ÓHtÔÔQítká†ó´bD!?!g OxyyIªU–jLYJ)D,–óÔƒ!(8†‡Ó°«ŽI6ÃÄTHúþŠáþ× KeUÏxê©H,Ï6)åbRÈ_ŒÃ€ÍÙ¬0Q›¡_ò߬3d|„O;~œr"¦)îã†šŽ N´/'¼MÛ¹sæÀç³grÖ¬g(g` ƒ×RÁÉUCÕãT´™¥N²&mk‡[ÿ·ÆD>¹téUà%Å%”›˜:ÇsJs@ŒΈâD2s?nGD ò³3A´¼íP8*;¯ L~n:ROŽY\\ þþþpîÂu®Mæ¼Ë,|¥ŽzPÎÂÍ×´{‘ÌÓs Ã\¾éªêÆæ˜Æ2‹’6;ª"#ì®ð¬Xʵ®“†¶¬¼{Ð/Ènß{¯4ªG§gÜ„M² OaêÕ­ #ÃüÁôj#(¸Y r¿5:4†“·`tذvO¦*æ”%éU. -ܱT>CˆÝz‘¶Òò•ÃGGšXÚÃG$ÇV/çqÚºÝ™Š° ›¥19iò¢tŠcD½àµ²ÔÛ—´Ô©å|óƸjYfNÂ5ó…dê‚Þ”ÎË„Ø?$Bq©†j‹yœ9ŒV=Þ2¢ÒMrÚÃöŒt*ÔÍÁˆ“”\kÅ“73]=¸Y>žn:"Š‘¹à|qø¤0Ùz9ÊŒ¤“é'It5U%zºüM—‚¾I®<§Qó ÁTJefÃGN–öñºV­;¨¦¿%¦–aÚè‰6%Ôƒjšõ‘ª^ç¼/óq…s—ZìM‹¬£ÀQµ>.ž!5ßpÖ˜óLš,t’üLGÖ‰m#žê§ÞÒùïæÕ„G•Ý-4Ü93}į;@¶ºO׉JîCfVä߸ 3¾ÞÉ+'Ñó=»µƒù±»žÿÔkÒ*ì™N½ÿì~ª©÷¿ìœmlEǧ|Ñ(×LÀTÅQ +bŠÖ74~1$¦¶*JcDŠåE›4A ”` Ð@ƒ4 –¢¡©áƒ/4F*[ß ± ¡Dy'FÍíyÿÙ}æf÷vngö¶ Ê=ɦ{/3wûtžgž™ýÿ.ïR'Mºê³½Û*>¿d¡!¦šµ•Ë¥iÛæÏ}š}sðk~àü¾).}CyCs¬y}JŸ5q}ºŒ;GWé–ØB¸ØÉªc¿Ÿg_DBVÁLú¡6B% uÃõ16þæ‘õ—`‰PTTúâ֜Т6CBW©œDà‘ÌÕÈLŒü¼ûÛ&Œ©(¯}upPZºýYƺª´¤„_)Uå58¢²ªÊõ˜˜ž¾>þšºÿt*jg{ªÊ×!«&ß6ZZÔ„± ªÐnÃ{È*#º*ƒ£áˆŽ]»ØÒÆFö̬Yla}=§©ÈY0%4”H¿q)‹ÈtöËŽžuÉaÐUéè©\9*Jó =Ž>€B‹WUWgì‡öÓ)Gá‹¿Óy8ë¥{§˜È*—£¢¦¡ÂöWUQ̶µ}Ÿ–£ˆŠª~tlèï´6¹€çÐÜÍ%²Šç¨‹¬ŸˆëåÆÙÓ®M:ÊTœƈ’2¡«ä6]¥ã ›ŠŠÂL(-ÜWó£¢ ýA± dçk(>ãAh%s§ ×™ËúqH¦¡ÊÅ_S'ÊàŽ1]•§”"Þ{ÿTñ¢Ïܰnÿ<€ À-m?}8It´ê&#ŠÚðYOnF„i0Tt}Vm]xÎEMàŸéLëÙÐU²Vݤ<¥·u^«AK­oàë¼wMë€f˜Zb –¬Ú°ý;WyÒÊĹ\š(ûäåðX,ü…£«`3’µBïøñã.€+y¥µ²ÏÏ«ãj;œÇòc.5䊱ü|ö”µ•ãYKKÊQ:tÕG_×’z ªðeá0Pí;vøBްš™3EˆPø$|Bù¤Â“É÷€ZðÂHdïª*î„媨公ߢV¥77 ½GîÃ^P9Š’7F.HuQ°Í[¶øŽ(¯£Ðǧ!tá~¡G³9F9 £(Hï­ÌåöDj½ß¾Óå|j3Ì;ëe=í]eYîYf;ù‚‚œ*ËÛÜU>úõŽPjc¨;¬ÍE nð£DWáu¹¼PBØotú…Þ˯`E…ÃC8;az®dÎ ª¼pC Nèôlì%$ºŠ…úSÿÊå˹CñXvŒ|Ž×'—­X!&zÕ8gç`<”Ã'ȶ½õ†z#ƒ®…ÓUQÞ¯J° å­€é«r›˜¤ZJþ2…jŽºÆáˆ½?;¦Ø—‡QñT2·´¨©U­¿²úÇ‹4’áäÁÉ<•[œ:Uä$äì}Ë£LÅ' +s¹]GiRSïqÞ‡>7´þ’q C5îjÛ,vBMQQÞÄ-ê™ó”ÙîÜ&­<ðèªqc ÄcV‹[„ZŸ[°’õôþ$f+oŽÒÝnI(=G½¸vŸ4¢þtßr¨(f¹ò²)bôÐ’F÷{¡]žFÚ ¶8Záwìßß­|-ÓAt•êxsókâ¼iÙ¢ŒïÅañíXË5ËÉ!¦ã¤…Íûxr?%cGrv†h-UtžÚ²¶Rt•Šƒú ¸XÓê¬yÕ6¿~)»pþ?F]]ÈJn¤œ)2QSŽèõ¹ –VVܳO”dUß¡“®þ>ìú³KÙK-=žý¨ä°VQR¸ °Mow¦½†®jÛ¾1ylbÅJYE²ïâ ·kUÇ™èªy•Å|v8”‰‰ñ루ŸÃå×±« .cÍÉ~ÈIrNWEIVÙ#@MWM«¨áÙ?pQ<ùý2ÑUTÂÀIøÎ“gþR~/¯a©Ë T>ëEIVÑì%]e‡ž^*'eªïtfÊ]•³h/rdU°qyެÒt”)YbêÎÒqö@Ï¡ä¹-îºiòÖ½çU–»‚Ÿ×ÖØÛà«þ¡—#«‚í_Ø»à¨Ê+|ÁPQ« Rž %š0$ˆ’Â$ R"©V(C¤‚h*e¬< B T#ñ‘*"Œ#•"í# *¢-È£È+¬R^»Ûýþݳûß»ÿ½wwïÝû×éâ%Ÿ‘Pɺ«MSºãömñÙþieð²%>‰d3õ”—Ÿr 'Òj…vI%‡LrA¿›ý©ä}öäõhÊ^â!̆Âd Ô:wj`440Ã7÷ií߄ȒåÑj…;uqhv;Ä'PW/Z_êTE…X8‹©úxã¹f([Δ|?õ>‹\_ Äίœ’ÂûdÇ8ªr.nsYœ nSæ£ ,RÌ8t’ÒztªUå8|¬’¾­ª®1~.Å\5X&8ðVø-bDO9>òs¹Ýº°;f×§ È9ο6nÛNSFç× kÓ§§O¡–ùB™þÄßÀ»ëÏTôhŽo ÛôÀÛûöì¡êsg5oðGŸWRŸ^-4#«€µòï‹‚ÇŒ9«IÝŒµ…ÒÆ¡¤´ÿ¨3£€e~”²H[@Mñ´ô<ÚøÞ+Ô3e€!âpn¥czýþ™Bý²G©KqK2ývX+jvS#Û׋ºå^BÓ6’l¾8ð½Xj…t²8n¡o›l¡\×$…rnz·%·¯"~àÃF>ixŽJq¬P„f½ð¾É}Êä„2I¯¬¦m¼ÁùYíèçÉMjT._qÑ«k÷‡È3 %ñI”³T,‘XŽ2œ(%¬ÊÆçºË¡ å£;’[PñŠUTרÿƒBö¡T;ÊŒ × Ä\—Q˜‹ œ<êKË%–}I_nÍ((eâ(5F‚\k® ´'¤I[u‘I74ôédqÞ‡ò®[éC©ð3dRA;¡´p[Ýîé&۾؇øü¼ì\Ia>Áo­¯¤. åƒ9p§C†êßÔì¹æGØC%o~I“ ¢šs9MSŽ3zžzß&– eè”; ñû0£¬èåU߈ü5YÎ5 qílµ{æûËT¾¡ÂÙ;ìq+á…¯ï¥Ö5Ôí?ýƒ$ŽZÇ]5­B¹cêCÙ¥Áý’éݵuŽí*èg·&ÅàÆjSãð6ïÒC£˜FÃ9¿¸ì‹Y˜†zýºŽm›ÙºV`Q|u¨*pÝL \"Šê[T >|'ö!Ø×¨džH‚ͬÚµcÃ!–7bù6ú¡\°Ý?=]\³•ìð%äû©r„¡ð• HÇ6~s´œ×|naÁâ¤)ðx5S¹ÎI/‹Û¯àv• ”›ÑF´¥çcÙåÉ>#7±#Ê€Fï+`àÍÚbä(VÒéÓ¦QNn®hWå§©€ßôÔN~ˆ4£‡ˆ‡gºÇAO¼²ë0›ÉŠåÅËÈrÌß¡P(>}Æ 1#Kü¶â“(çü×”BEÓ–ÛU÷?^ ˆ&—Öže©KÒË¢'¶~²’Õ ‹L2諪k•ùèœrcŸ„»ü~Í?ÑãS‘à,¿³zuÀ‚ -øaÜÕ=f0,öÃr ©Þîm©·›Cl¨´¬Œ.\¸ Ú„ïóŠwÝ øpwh„‘Џ_äoˆîœ¯ûЇôq9†ÜÓG’gOH©QEšSú9]ºâRÊâxè@LÙqËM9¥™écQV¾„Y[rw„¶VYÕÝx›wQ!OÉ ø§¹sC|=YqØß3ëõ²°o(ó‘ÏÑû{Œf´Xznbè”b8ؘ½‰.d¼·;Ù÷ï}^kñ¶pÊfÀ1_¶bEXÝá´±½èÙ¥»Bd‰Uöhøhry:Õ–@ôPý˜¯¥lªHVÔlšJ¸¡…Hœr§‚›†Mw¸À£áÃmÉrðt¢Í éÆßú}o±ýx^ùQ©Ë“?ÈjÏ“ñöà# ðàCÃÅ>q1p½Ýd—î%tÅ(WÏ'ÑmóÍ_:µ/Í]¹‡NžñEhöÚ±M3š8o‡8†µ3/¿VÎ?{•ÊêÓKófIöð±sÚcºO/¥ëNº×öœ¾Â2ºuÑé¢ESñ“¾‰*2.!FQ*ÈuÕç—H <õ÷Ì# å‹o9) ܉3…"Eî€ÉMo#Ž5NJ¤GwçüÍ»=iÔ=´Ø1Îj)Ý×=9¬+¬ÑÕó½=GKßúR”¨xkÃAzÜ»ží¡LÅ»›ÐÁãaLÌÓ9¨ÜÍLyq'ÕEÊïò‚|ZvþUÛ F4bÌd*)êcH4£H>ÍÈ4¹ø#Z³²D# H–Ç ÒóÑøP;7—ÕÙ‡“6`t—qÂSwþÚr¨ÎŠ…O((w°Ü;zç”Í›6‰)*ý!ˆã=n8Û v*>õ,£>Èé ™v«=^æ/êÆVJáuíÚU,²3* æ€S)Ëã~èc Û!IXç”»%¦î:û°•ï¢D-~jòXš0±ˆ^ZZL/–”ÆHF—æêm‚YÄÙqåÖ=O½,ŽU;þlBœò«Œ-b:]Y!Àˇ>THÙƒò(¹EKÓÿ•¿¾œ’“[RvN^Tæ•«Ñ)T·î½©uÛŽô@ö*{uuïÑ[€­?7sŠ8þ쬅öÍ¿Ùy‚C!:Ëa}¯Ì¾fó7tcã†ôݹËâÿ?IjH­üó·€M.|/ï@ ˆ÷*°xÛ`Ææµ`³ç¯Pî·j£ p\ļd³ ´÷°ÜZ÷Ánújï§”’šIo¼¶œÚßÙ‰~™W@óf?M_øµm߉ ~=ŽNœôù*gNŸç4¹éæ¨,”Q×|ðXÍ¥oEâ&ÀžAñ™~7¼³¨óå‘÷U0ìò®¹êî€å¼…ZýÞ'âü»»ô¢¢I…ÔΫ<ÃGú,ëŒç—‰cØÆºù­¾T'^_ ~nƒþÁÊ50¸ÔC´]‘1Oð›³rO`ÿ‚É÷ ž#´7-cávÂBÕÖÛvåjtÎùó Þ°õÿp Áƒ¾¢ƒZ$Ñ d˜Ÿ^Ž­»O…Í'á–Yñ8Tœ#ÛŸ^â§8Å)f¤ùxwÿÐ%ñîÏ}²þ‰ë¾2E¢¼ñ¿ª“1g¸÷óhÄØÅ´¦tÝÛo*l¥ô¼“îë雎‚}8GõÛˆòrzSEeíÞóŸ¸V×%…:_u*æ wîÚG»w}F%ËÖ ~ÿܶ‹–—®¥Ñ…2àhÌÈTqþÃcçÑð¼tjÕò6ª>‘vîÞO3ŠFQÉòõbß¡ƒ‡ècï¾—=A³zSû¿‰?ÙºÐåý´uN¼Ë³AßßxÝwyÿ€½«¯¢¸ö'iÐ…’ R –Bø¨¼‚Úâ < ôYË¿„*P¡Z•giÅ€RäiŒ„_¾bä"¤ T!|‰ ¨(èKîvÏÜ{öÎÝ;w÷îÞÝÍFöä7Ù½{÷ΜýÏ™sΜ™ñv£º ià½ù?“?·*¿VŽšçé*¤m%îe5Ý7·ð˜®2‰ôvvƇvåïmivu‘°k{îOÀŒ‡ôÀäQìtúÔIÈyùu¶ÞÞÏ>Þƒ`‹ô&B !½øÒÿ@Ÿ¾¡“P @x} T˜.I,á¦ÍmZ7u,ayT¶]ü¤ÞÒZXN|œü/Î&0™ÚÌ9š÷‡?°#íTŽGˤ‡bŸñ|ca¡ ºÎÓ§¥¥ÂëÑÕe[Þ0T Ñúá<᪹jZ«·Ô£QÙZüˆxá‰v5RNÌ’‰ƒ»…ánâD¸Á3¶vì:ìÜÑÜ xP(k1ˆ6óá?#áÒËúŒ«¨Tš\1%D‡QI&5?L ¬¥®2ñ¢8u9ñ¢BŒI,P®aË&­—Á”,ë'Øí:xÊj® w5GðÒ9êPô™ºAѽt ò×1¿²˜§& pµ9~/`ÒÉ,»ƒKâËÃÕ‚­’LZüà‚¯´2 ¿/1ñÒ@Ýe€ÔåXæ´$P!aEñŸù.ĺØêcÐw*×ð··ïׯ_ÈùÛC 9Ê"käH¥!•LZÖ“h`\zG}-v )éòÃ/>OeÓb¯Ñò¢.'¾Ê7Œå¾û¢Îƒ€Æ7QƒÐ®ÝpëéG`ô°ÎŽÕ–§Å•¤äI`RK¦õ…'\åÏÙ±«J9Ç'®¹Æ=XWÑH¦Õ7˜g§Ÿ)*ɤ®$·PáÿV€«‰—S4£{ÉÉ)BÿOÉÞ3ù±T2ùBŸû;åg²ƒîÕƒ%³~&'„Ô¹c M?“Õ’‰/Ç AÑ¡ŠÁ™³598Z·jÆ®­Ì?©=ÚBÙ³áÖ\: ZO›6Â:ÙjëPÀÑß„Êø]²5…®ô!C˜ÛaÕÚA[—‰ŽŸØu&É“LÑPâõ×2à,?Ç€UzÀß…´k{½!?O$܃-*&\©·{lÖ£ìžù2¸ðÜ(Œø™,M!åxñL:tôø·!ŸQJ!mùð¸¦Â«% PH¬Z‘W$1$‡¬9N÷_Y”·ÉCŽ –Ž¢{¼Éf—7]¶ÍQêr“L}»w‚&×^Ó /¸dß!ÇÊò©^‚‡)p¸»8Ü>Œ–¨ñ[Ü[Uv¨d’l{FE2Ñ ï´;,/¬h»#Ÿéã²\!-nëÓ å°ó´ƒ-ŒNp¯<>-Å©îƒÐÍ|èü“mÿ'ÒÅÃ$vq¸k~`{T«UÆYˆŸÉ ZN‚ÏFkÎçBK±ïn°sïAÛŸWÔ­ hø…èQ2ÙÑíQÙ>‡º9*'A> ¹aò±»þ—æ‘K?ú.ô›sUЪu;v¼|ù$·OÚÚj¸\{‰]Gzjöp˜·`ƒðwj:v¤ :uŵK!|µmu-Ü?üƘž7;°oŸ/½ºåùŸÃÄQÝk,Xo$µLªrÜ–M¤£h › –CŸ~é 4Î_7˸9%•gܤlùZ|¿U;?9;ì·o,Ëî?~$È÷!ަP¾bÒ=ƒÛÁªªT~àùÒwÿÖPV€#:SP'Ÿxœ… ¢ÐF‚Qøð3³&*ç:‡Á0cnp°U-•`ÇRÊ wÙ\å{ü]$ Iª=嬠´kö¼TÏ·tj wö¿Ñ1ü|²ÿ,ìÞ6"?v`•ʉgã*Ìédý½”·RG‹8ÑÞøxØ)AÏË _8 $¤íÙ68t"àÇj‰/'^þÈþl©ÛÀߎ=û]£€Ÿùú›ˆÏ»}Û6¨¾x1æçe‚Ɖ®Lè ø ¨ˆñ3z¾ÑÊý€1 Ïéˆ ï™âö3~Še“?gdfBuu5téÚUìÄÓÐQü`Z°îú³±9t'¼C‡ŠOŠ,=· ñ›OëûœÑ™¤ Ó’œ¡7¦Ë•ˆ•¹÷³Ï`ÑË/ 3Å{B¾ãòÊø·!13ýõ7ç`×hmFúP¡GdµÏã"ëwÅž…üP(©ðÙ—,^¬Ü“””Ä‚M L¢üÉ1)Ú–UíkŠä{ÒRˆ.£Ãe:“âè‘ÊŠ =DnÉ‘^¨uòÔ~O=‚ “šVäæG ?CŒ6yœî ´²œñ€s‘–±²¡°Ð^ \2C6J'ߢ啹Š«èì¹Z%Ϩ%“Ù—ÿÔD|Ç 1çõò[GÃZÙÃ÷§Äœï‹o³áí‰%AÛVM¡éµßs@_U]ÒäçÅ7Km{nN2Y¹ðnœ%@âõ"«%ÓÐÛÛÀû;þn›$ Ó™ãz9.‘æ–:¢3©ŸÛ^¸UyIÖ×F‹ëìÓH#è(hæ“…†¦?Zn"Bë ·¶Ç9l±é2b~ß;æG}þ}aÏïcS‡ÅÊ-Zp‘¨p“sñOèÃÐâÓjB‹nxFó9‘uGG¼>(--ÂKô)Iä×áuùY»Sl$tà÷}{õR€'r1èùDüX$¤ºœx%(\ Qз‚•øìüù XX¹X™h½>í_mCää‹$C&Œ§¼”Ü(ç¤Iœî¤þΚ5ؼ9³fÑφG¬-c#`/…ñ˯)€Ó²Ñô'@ Ÿ‰ŸŠ=îÁñ~_ß“O²Y¶ÍšÅ>£ã’~¯×íDJVwo|Ò„‰•ˆþ¬Pô·\ª®fR +1ÎÀâèTK;ÌãM9ëÅ:G!•/4Ù쉉‰P¸y3Ë©Ø@,µÚBÛ9?®—Fü?ƒ–Âsy_R¤P¾«#Ç¥^x¯$éóci¯®VÀEeQ¥¥ýô§‘}+t&tø!ø°…c^R¼–£áË2"•xþ´X‚©w߾ޛâz~”J<˜°«Ã†…³R(3Vÿ?´ž»W£>­0¸“ÓÃÕ-ܬ٭Gè™&ït±™Ù¸DX¢ÈJ”B$Z4‚æ÷o)*bÝ^$åÜŒÄñ³Ž­vòWvD^PO{dú´˜Ê‰Zg…YmÍI`瀴•†ýù$)Lˆ"+D$” ˜bI Ÿ$éòÓ¼Es6O_u…t;^Ç#©¥WN‚ä“ìp3YœÆ 5¸Ï¿N´C‹Ô"¯ãEêúÔå(³S¬|x«óò'÷Ïï-1ïÕ=®âÇ1lÞœˆÐŸÒ¹K—NRn)’ O”Ê-æ543Þ—-,$TŠÑj¢ˆ<¢ÂŒJ¨ppYÀ§‘òõh´Ü:1RB `¶©Ù½¹}¢íà9~²:j~¬µæ$}k DNº±òËÆN/_&YMÑèL¨x˜Ôf8Ea.о$¨ äƒá]„¼£µhtè;!•wŒëB€‘û-Ðßÿîw°^~ºGhÍjá¿§ôs\"=ùÊîˆüXI”§6;ENÉ"Šèc2‘C˜ËO»›£Ø#ú—0 Á‰Ú´\t’Jø{J+ìÔGaß½·f ûî½ü|Ö¸ÔÕ«% øá=·§"Ž °“=X¶C~&PÍ›sóØœ$°DÔ’Mñ…%'‡€&šx,5)¦‰ù<è\÷£Š_õ©Hêñ9F^æ¾þ†|ïjöºŒšì ˜7g'š|i ‚+Œ¸]§$Z •7±8ºFGô1a8/ïƒÒ2ÏÅ&»?iñcI7§*'5àbkÎŽ¨[mòÖßU‘”¢k¢nÌ좩 µp…æ@o,’dÙº ë¤X?PYQuÙ²¼JT+•KIO¨Gýq8¥O4³O¢—ÑócE9ÁHË€ÎüÜÛÇ-q4~[SgY^þ˜¦`wåõÐ$ÆÈÅ¥þu—0âò·÷w2Ïùê:ظókòÞiêŽ §('Mwbá +™æù\þî— ÒÌÎNái!…ðš\E¤€‹¤h¤áQ7hE÷ãôÂñ±Ìº]2ç–“ >;wlé0êù´ §æ…ͨ¶‰u9ºNK=ª¹\™i7Á¦í_)×n¼áz¨<ãlÿwù»òçåtþ$oVN Ô^©7,™Ì´¬!i¡Ëü€úmöv®#_gÇž]ý«àþ$µ~tþcp TVU³²:´ó{«×m9 _{JŸ3¦r­uæ‹% h8; “Û;%ÎpÚ(¨x÷)H @t½òL Ü?¬+;ï*¿¸Šªv^RvÆT9Àïbff¤CÓ:*ÇÃ_ž—yN„fMZ·lÊ€TQåW¨›5I€{‡w5ÞT%‰?m°$âÇɤìb^2mä¤QÅ™šïò6úWå_´ê@Ø5³ŽK£ôꪲ@½‚ŸãüGÌnù9•>®3mÆgŒ3. è4gÖÇ%ÒŒJ"òc‡'DN!Qõ—7Cc ·ó–4 >Eà7:,Òxp/YšÐTP› wâ†ÐÀû™p Mù  ë2T¶?1ëLªr”n®dË®måŸîû¦Ì|Îõ|H¯) h¬ im \A„Èƒ‡ ‰I’I‚p{ã™T“0]ïhjtÃ)â[ÔC$4ã„(šǨÙp>ž©D0‚Ô#-µïÅ® wœÄˆ5hbÕ­$)2?SŸÝ![Ø-bzΚ+uPYUöÜ nÒçÕ˜xTs‹C)êE䉰ëëþ£îaóáp²¥™-0$~¸`Ës+ |>÷¶|6"Àg}½q>ór—º÷VŸ7|ô?MŸÀŽ ­P>Ó¹éJÕIåç‘Ôág¥ðDŸcÝKÅ©IÊ„’FßѾ½»¡wŸ~–ß+S}ÐãVg¢‚Œïlc¿=c,ÈY¡(ç/\€±c†AJ—n¦òޤ3¹M‡SÓ+sn‡)r—׬É÷`áŒþ03ç¯ìè—\çÙ±[Ç–³j?̸§§ò;üM¤rD>‰hè­ÜW!5'´%ß=b Ü–6.U_„7´K†ÁY°òÍe0qÊ,8zä Lšú($&67.™ˆÏzã/¬gê­P´ù/>$ ž}á58u²R>U§OAù¡/dÞfšÎ[Ï·„•ߺeø9ÙMµ—ëBœÇZ:œ{um ÃÒnb<Îß›dèù¯•õ¢)ýjéÚ/Øo"=CØŒ^ŸÁV™Ú»_ÈoJ÷í–[÷-0ãÑyìó°ô3PíØ^Ì>ð~ÜûÀ$¸îºDÃeIÜ2„õ&¤GL˜è·mÚ&àô!ß›Í[%Ͽ’ó’ɧ &öÞ£Ù%rÔ’§< _ HmË†Î´Ê J&ƒ9澉!¿ÁÖÿÇç—+×Ö‰ç‹ùÌtS¾ d2ûÂ?{<³`™r|iáÓP¼e,Ë-%h{Ø_êç÷Ý·—³ï­’L ÛËéó3ýžL¢-[çßO%Q¹@A/);«[Ž2=õo÷¦àäúzcé‰ÙÙñéì¥Ê±`Ý*˜:ý)V§Od×ËdÉڽǕûÌ$þÏ a—ƒÝ &Ë\*:ü ^„ƒñØÍ¡þDÔ+UñÂôŸèò6=ÜÍArgÍ•lOÍ_Ê~³fõkð«1¿f×2GŒf×ò v)yÞ=úצ¤¦Ö)Ëvñ3kÑ.EG…›º?*·µŽ¾6=Üçâ¹üþnμ΄t×Nˆ]'2à´4C[?9‰AD/Ø~¤c¦,}ÖÓ÷¦‡»L\0Ž?“Lñ¨¬±AƒåfŒNõ6á®w¿#Ew5ŸÒUÉ•÷ý¤;ÇxŠG®§F1;Å£F&h£ñyä‘GydŽ”y·Éó”§iÇêâ®æçW6©«ýÖCƒGéò¯6<²Lÿ_{Ñö¶ox Z$6ƒ^?Ÿí“ZAá;Á…êZHî[yfί`PڔϷtI†5+¦±ûµ(+ãV)§ÿš¾Ü{£nÓ?.Û¦¼w¶Â’þPÔüמ„]Ÿ‚¦,†/Jþ?0|~ Ö|¤ðrüx;ŽÙZ4¿.\¬¼w‹ÙýKVl”_ÎRR›ë@òÕÁÌÉCaìèA,/LWj«í—L;Kaöo²à™çWAï´‡à—Yi0yl:tê=–åµÜõС}ÆË´É¿€¿<E[÷°ë«WÌ1žeÇ™3áFù¾Ê“g÷b¾ÝR’àéì\È_·Õ‘gñHÚKîöKÏš‹‘NZëYs¬›«½ä¡Á£˜èŸ°wpRÔjü;<DªÒ‹ Mº4A'Hñè@z)¤© `AºHS©>@zõ*¢€¨€òDš ø€ƒå88Ù{óÏî7—ÝÝÛ»›ÝËùM&“™M¾Iþó%ù’D)((D6êuZÙº\‰˜>®ÄÓÀ{ÒÆ ëÄ5Ä9̹KÔ£õ*ëáÀê•‹Å}ˆ³oï.ý>Äãç[…"'7œ‹;#ˆ¤n½G鱦­éøqç21ÍZSŒvÞ­g?zª]g=>ÂK•*+ü ÷˜€)ïÍ×ÜTŸ“‚B7ë‹y3µµ­@IÇ :Ûøf´z… ‘‹Ôž)Û¥GßTû¨z]W)ã&Û!,›WPPÈ€äåP䤠 `Crr˜hNýZWQ’QHWÄþ‘@ëwüjzmhÏ:^>ãçíˆ(Ù˜å'Úêö½ÑÑQÔ´QQUk ØõãŠ;Ÿhz­@¾¬T³Z^%¤å– 󲩖CŒDÙx¦;úœŒÎˆ–1Å1yÈò1“Y(ˆéLl,Íž9SÅ•øxý>qî “&L0 ?zäHšÊM.¬feÓéH¹ˆ“g^¢£T‡¸mñlÏž4wÞ<êÓÏiG²~Ý:jР9s†²gÏNoŒIo½ý6*\˜–,^L:w¦ömÛÒòU«œÄrô(Õ¨YSLÙûï§Ý»v‰{åg´hÚ”~üé'WþÏj•+‹ð+W®Ð#FÐ[£G‹ûË–-KÙsäHýÌkÖ[Ù4jÕ*ÜC÷αåà¯ø´uç·0«²žhRÂVùùÏ—'<ÂÌò“)É¡±”Á)Ø ‰Õ©#H¤Q£F Zºd‰Ð¤@H—jäÄäaˆ‰a|Æ]Aá¾=»w‹ë8nýê+·ûë?ú¨S{¡¥1±ædR6…“¾¸Mê‰hbråÈ,ÆMÓ° 8»“¥‡æd’—Lbz£KC Ð¨ˆÜœ@EÁ97IðG®°û¹ƒ#´ ã½áˆowìÚˆ d-jò´i:y1>Û¸Qă†£‘v.çÆgðó¡%86ÐȈÏq 縧UëÖiÜ á0uI®=yá²e½ÝôÖ5«W»5Jl鯕lûŽíÞqTÕ´ÄNíÛ ?Ž8g?ðÊ!âyÔ­+ž“n½2R¾­ÈÆÛF;œGÈrà‡<8,/–‘,9Œý)É‹·üdr`×LƒKO€TPé:´k'ÎÑš84`€ T>næè}+ZÓqðUç¯;**¾ú[·n 2ùtZ~LŒþÔМ^œüÅõ†ØÓ§ÝÎË•/OÇ?¡5W«ˆU­<áü¿;wRyíÚ’åËi¾V†pÜë"føûöîMݵr÷T›6Âxýõt$§dgE6¾äÃyԛƚ\ È ¨U»¶8Œra læœÙ‚ìS’oùIw͉‰†Ðø .‡ƒ|dMµ $äM[@?LšñSPñYó©æúJ±vÈDÀ$„ë|MîÔæ0¾~ôEùz.ŸË÷Ã/k¨i[½kNèWaç  ?*ÐÃ$Ÿ³æÌäeöÌ´†[¾-ÈÆ›|8¿9´8牉ˆåÔ¸I=Ü(ŽËñX>ÁæÅ[~ÔÆb©€¬Yƒ[& D ²À‘É™ ˜Iä Âàëð#Œƒ¯C‹œóïë×¼=—ŸÅáò=òs[¶j%šÎh3‚;y)›r[ñÙ¯ôD“âtÇ푽4òéÑäõ#;Ã#&ù±4}åæMÝ~»Z]Å*oѵÄèάÑA”?ÈdaÔýÅ÷Y+õuwÀrÿV0€Œ|*NG¤Ö|q"Õ±¤Fëìc:ÍòMFç6nq¶ß>R(¨ ÉØüM¬ ##¶|“<ô{wžÌJP.^ºaíÓêL;¨T&å»;kÄÈéüÅD:ðË%/µ;Â4'Gš“Y…SqeT°®8’KöšFß®YɈÌþ{²R¥²y„ÓŽÓtîÄ€dckÍÉá_sÊäR  NAÁÕ/Nµkr kݼ4ujWA\àÿW¢”/ïâˆsı@O¦N>óFL…x¨<ÜѸNC õ/;×dÏtzæÅÒôo8wá*-ì4̼¯x.Ñ7‰Îé%+Rþ|Ùôxßî8Eç/\qqmÝgÇü_¯S4Iº³ Ø(É~ì—dã#€at¶åáëlÿ„p<ñáR›å|[‘M’µ(c:M§¯¨Ñ:…”àÀÁ ¿ýþ—8®Zë4  ÉG£ßB öúÕõ‡M_~©‘Hš0éqŽasÂVgæœ9ÔªYs*W¾œ¸V¸H·#[ÁÃÆéð¡CT«v-·ëɶ@µhâ¤IÔ²Y3-Þaúzû¶T×6B!»hNþÞuTæ=â èÚLÕ:…tÅ鸋´úËÿš^{®G+Ýß㩲F&ó×Õý3æ¯÷+;ËG΋·ü˜jNS?úTÕû~u-ªhjÁÈM3øaPÉaЬp<ìšÊm þÓ§O‹kˆkë|g;'E0OŽœa‘ÁKñ—ÝÎkW)K=PFÕ^ S>úÄí¢%Ë—‰~"šz˜SÆÓˆ ‹é"®æ›Ý ç;)Ì×sò°s2ÉO´ÙäÀš•*„E7nO^=oP÷VЉL0°[KZ´þkºpÉ9ùùúõDz°f ÿ¤埜ŒE')Ê? %Y$ÁÃû÷QüåË)¢8yš ÀÓ.äpž¦ðTã}6Ò7$Ù'¥H6vÊ‹·üXZÏ©R¹œT§æ=é–yËNÐß7M:ÌBЙâ×âX¢d¥4É ÿ_®Üù(wžü>ãž=ó,t_Šÿ³TÑôÇſ®íæ}Í¢dÿœ•‡©w»rÿ‘A>­”ý01sòHg”ùô•$ŸœÖ¯kú¸õìP‚Nœ¼J¿Žó˶â÷ßPíº­è?+¦ÐOa^:§iÚÿ­ŸK=úŽ×bZ=KG5ѯ´ ·&~êv°ì£ÑÚ³ZSœF*Õk­ÇsÓöÖÏ¡,Yï¢j4¤µ+§êÏÇs8þüYÃD8þ¿~ãŽZülZS,›HÓrí?›G[7-¥Ú5«_)o²Ê|{&z¾ý½¶(°ãÿÏMÍ÷–fcðì‡3œFlU6áÒçdª9™v¬EÙo#àŲy¦+DfY5²¡ìݽYÀ¾=[É0riâäÊßMY —âšæu=ñª81éÍ“Ÿ¿§rÒÏ hšž'?+—Kƒ*P°„ ¤EkOøÏû+ÔÖÓPIð"+»0¬ó½Éå#ÍÞú[ÊÏIÙ³Ý1tãæ-ïÓW”ýuI~óõ@ã7úUüuúʦyãi%0%ÀˆAbˆ‹%xA^‡Õ7ßk 'ž¢‚Q=Ñ3þøá™¯yÙma¶”BÎw°²± Á÷9ù~ðöo¿u+¼ ªºõêéväk¯ÑÖíÛ…sê{ïé´AݺâÚñãÇEÁðâ‹â:žÓ¬™Ûsý¥+Ož<Ó°1]úóý°'y™Ú=ŽB2²dÉJ×{Ä÷×ù ÔÞQ7‰\Ž;FÆŽïQ&&+~Ç\d´ˆ‰ÇO]+žzg'‡CÃÐÖÀ5"+\¤°˜¢ÒÂSS0GLeQåð³ÁâÇžŽ¤„u¸ñ¬á¯¿Ôj‘>óF²I=ÅØŸSPšÓêU«ô‹‚Ó´)½?}º (hC%K•Ò‰ …~ŽÙ׳@â:ˆiü˜1>¿°ÞÒ•;wz¬Ñcé.ðK—@’?¸…Å4Žñ’~kFŽÁ(ïI~lü‰Æ-_Í’§8ñ;c-JŽ0Y»‚Ö…‘•ÂkE;Ø{øªZÎÜÌ…µãR´|d ‰føÆ•ãúÙÞþC^Ê×Û=Áà×SñOs f³Â5tøpÝÿá‚ñøKÉ— ¬|ŸìË.0×Lz…ÀÊŽWiZоÙ}V¸~O—§ÌwDÞR½7þ¾E3W2‘AdiNæ+aRp}NéÝ…öDã‚T¤@ú®z¸iÇy:ò[B@Ò«rŽ€*QR å$kN‡~M Ë ÿ„ Ó{_‘ȬþÍX~ˆ2¬ÉfÊÂÔ¦I *Zà.[¤úü¥DZòéqKù‰N ÃѺ»ØÃ¼¡q|‚ 7wA¯7y¾`ƒ4?TÙ9R÷áǧ(þê?6¯z¾Œ0ÝÃóæÎB]ZEîœÊÛOi–?-iHf᫾ø-ì4)§æd¢N%Q”M ¬ýÒ•=[´{ºÂ Y÷ØÃ÷ЪMqöל,LÑhýè½TºXxLT1u‹Rý ÑûKú-gŽpµ ²Ú!®‚úaòäÑT£?û‚ý’ZѼ–IÁ(ixÈCüðcä öO¯ºVÃäµ5®‘;61€9ìð˜ôð’xV4è×»75jÒDŒâá> ÀÓ<÷£“˰,pmN‰ç!q|uÆËÈrÇmnù¶ª9e¾#õïTÉVeêú[ôÞÒŸýjN™Ä®gu âÒÒ§ÿdÃ=®Ñ<Áx¼ƒ®qÇáUsá,ÉÆîZ¼Ÿü¤h q£=‹ÑÆh>À€êk´gJIÀo‡¢Vˆ8 ¨ü HT~T4#Ld[˜B,0l2i™žR O¶ ófÈ]®}ÍA û]a¨ðiiEÜ”6¥LÉI²gb?äÆvnFƒY£9È /½äöÞCÝçäKs ´òsÓÁ–ãvÃÂJ˜áÔçä/?™¸mïælÚ„ 4ML8rCåéîúÊ㢒‰‰+w÷€¾òLÞcFÒûؘ¤õ2¨‘1úÔX~Øi÷źHȹ;Mm¨x€!ù1µ#L;jsÊB<”ruX²‚Þô"U){·Gy‰<"ÆSJ¸H¾ÆýC#^ÝíYòR¾¡œÈâþ¸f­ ÞB\γì7ë[3.],÷³›ÍF¹YÑœ|åÇÜ” ʦ%6ʦiŠ ¬p(XUœüÏ[»õ½ѷZÄÊbü¼ýb‹ ×>§$ËK¦XÌ wÔzk^ ³9!!Á­yòþ´in¤X+@gr-Mè³1›ýŽŽcôÕÈéº3Yj½E¢Sz²“WYš„¿5sOORÊ*‰]¾@¾É)øf–Ò¨âªà¨Ø<ÂÄÇŸ®€¼TŠP‡ CÍïæ"ŠPö¡ð ÈmÛº¥KÌx¢²øJ¹Fó0†çÀÒd½YÇËŒðœ‘ôù‘~iòµž’ì)û꯲š6&y–'ÞÌ>œ?ß)»=ÄÇy)Èé«ThñQp„é|žŸM 7û€8;E­HÁ@qX¯"–ˆ0ñ7îb¢A>‘5Zg>ñ7)eQ!6ºÚ¡Ù\ö/fàk<Ά}\ø­€Õtus–cA¥~{ìXQ±ØÎ68¸`ôZÂĵfÍDå|U«HÇjº’ørt@"lÀZ›lJÙp¸lÚ€û/À ýû;í‹4÷­YµÊͳ%O¬@6O@zqĵw ¯3©"2Á°9ß ™"? &܃ô3éz_×Éû€‚¼þt‡˜’Tî¾ÜÉÀŠ Æß )‹øÕ’(|ØÉ-­&ù‰*YíÐm{èþÁ‹Û&3ï.þÝvi:uî:­tÍS»xþ,}ÿ{e{ªM7q|¡‹}Öb?—¨Ï­³ë⻾Þ@^0Ÿÿ×¾g_Ý?úyó•=a2 ïÚ‹áò+ññúÀ}BG7F˜@ü°äFG0FåØ2œïA¯”‰M91º‡‘;ŒüÁÉSVpŽ˜ÒŠædŒø`·î_>o–_Ùø’à/?mç”ÖéJ¢”Û9)ÈÍ:/¶;~L5@8FãI —ƒ˜@0å]äÂÄÄ#R žZ?ß+ÙîðæL€˜?W­r4×1YËY’MYˆ›åEMü 5I)y†L˜ÁŽHxäá@ž¦"Ã8|nv1Ÿ³Y‚qZ‹<Ÿz}4‘?Z—I_«Yrv$ÞûÿÒÓd§ÓNÆ]O–O¹B ØÉAæåÓš…x “jùk vÒ&­ÈÆîJù1oÖE‘î&.þ¦­8™n! ;ü¥§iöÚÓ´ÌëA.rº|5ëânÚ¦PÈk9M^tÂ6érÛñפ¢±³º*A¤M_‘ómE6v×¢üåÇÒ×o:h‚«3Ú6˹ë¶K“¯fÝÂÿœ²ÅfÉAyÞã?}hD“›ut<¢irò5}e¸dÙŒ&!ú¡6»¦ªðôìÆÐ ©UÀü4ë(œzüaª¦Gèd­¦¯„î«êðaË“\w¼@5*äõˆiÓW.]¾á–o+²±ÿ;ö¿£u©éÞZGŸlX‚:7/EMëN¾f<¾Õ¯ºðó9âÃ?q@-=ž‡ð¡=ª¸]K—FmþÇê£áýjPëF%èÝaæk=•4¬)ŸçΙÙí¼”æÏ£…%Ÿ'OrÍšù6·s¸ÇÛµS½·Q)IÞË¿üFÌØÑD=yñ;oŸÏræ­îÚ]qò•Ÿh,FVUíTAýtì èX‘>Û~ŠŠä»S+ðY éˆrU„,ZE‰¦çÇG }X„7×*)ÎùºèCØâlîmÝu–ŠäÏ&žvyJ;Í)k–h*”ï.=ù¡(Hjð¸í‚t@^3– ÉZØ ñÛiòP瘢…ÿßeý9ß슥gÚ8mrh÷¿Ð±•º7'%^ÿ‡bÏ_¥Ï·Ÿ¤ã'ãišFô/ß¡AZo>ç´£™¾ä;â¢kM;¸¦¥sÐä”±Yš“Y~¢Š”Ú#7-»ôWíŠ ðGÜiú~ÓÇna;?ï¥;À>}Næ÷¤}Ÿ“|í»/?¦‹çÌ×jÛÓ}˜˾Ž}¡fÄ–«×Þß%ÖÝ–±jÞTK²™<¸¶mó5èÝ>ó­Öo µ®ªä9:¼ÊR…êS’¬˜7¢Eâ…ûÎBÿÓWÂw%L“q35pÝGSUå/|O !äüŸ\f½O%©Z¹²˜Æ"O3ḛ́ˆÛC!.Ì0ª‡kâÊÓYŽ0˜ÀÊÿ{­î ’ΗÍ-ߎö­ ‡÷è°j„©œrvvØñ`tÎ8̈́̀욦¼Š#ìŸF¥Çå­`ßÄÓV@L0AH +pšFòÊ‘þeNvNfy‰*XæI,ìܼ@}žƒÀûÐsƒÇ+Y†#äi†§ž¬ûß{åá #“'~§û×üû]¿²±³|NŸ»J>Úï3?™Y4^Á¿šªd™z² ÄB`«nŠá²çu­Ns t:LjjV-ÄŸŸð]¼|ÝVïvÜü}4nÁ~ÿâª7äµJÉ TrôÚ¯âŸD°¬‰lÑ~"ô'¡ÉËpø±L šfÃÚØhÒ¡ÿˆãÁ}Vh2‘á™Xäñ±ô 4åM7Ó¬h ›‘3 Ëz“)˜íf”S.=?€@¸ÏýI²k²uˆ ט”3˨y˜øùvÑ,#IS6[wË¡¾þA©ÝÏòÏ­´“墳¨Kwçbcýz=M3?\A/èEïLýžl%s³Óà¡£h±¯³DÜÊUœ†” WÜîIß&ŒµÊ¶ÿ—‹T¥Œçî+Æv{¸VA5›®2qÒ$kÆÓ]äÎo™õd£ÐÀØ4K µiXœ­YHø9y™¦.=˜¢gí¦·šouvØéó×è¹ñße´N¹ ï¼[#hL ¦Õ[~ˆfágÇ4Mèui^JăVr!ACºxù†~Ø?{ÍêóÔýôÕ®³â]€˜{'&sî¹·™Gè¶M‹m÷*ž~ü_´bí·Âߢq5út“ý:ùöî?Lý‡Œq ûzã¢Tù/4Ázwk!üÃÞx—Ο;K · èËϦûزê xe íûÉÜ” mßá¾ aÕ¬1%³ü˜nGžêÍŸ ܲ¿Ñýë¿ØcË4:ž²¼%šv¡wqgOÓÕ« ”7!*_±‹‹ácÞ$Ž­cª‹ãÒE³Äñµ—ŸÕïÝ¿o—pËÏÑÏåk|ܦ/Ö¹=/­\’Ãûväv7kJK§-ÊC(n~A{b?4§>O–ÕóÍ @ÓhP£ ÃD}«])¯8U~L×sr¨ñ ›užkÝJ¥ñå‹çRñ¥5é Å_ŽMVü×=ù Rç¶ ôÿæp¼ï³gbé1/ÓÙ²S»ŽÏR³VíiÄ+}è­q³¨O÷VÚóÊPóÖíõ{€¯6}*\^í¹·Ò°sß×zNi¢¹i»èäå& W\4sv¬(Âøˆkh*•)–3Mš˜¡– è«ÝgE}N#gî¡Ä·D¾_ˆ«@p“ñv?çŽËÁš-XÞŽÜ¡lu‚¬Pž#L©Õw3øµ‰nçOµï%þ«ë3…ãÿæð×ÇÌaã§&7Ùï¯PM÷Þܵnáœn¾/­ûÏÒ{h})]›{nLºjó ½¿EÆW»ÎÐþc—¨LÇœiØ'ÉtÈÔ<®1™/úüîΙ%E¤ly;r‡ZÌ1Hr¢4#§ˆ—¥#½Éé‚p´'cÅd?W»ÖK«Žy»Ù4¥4ߦäDªYÂf]’ÇŽ+Ž[J–Á÷A¨¯¤Âñù‰6#`Õ¬KI³Î=ì–’eÈd©àÎÝ‘žŸ¨œù¨"   `;¨9)(((((((„5L÷Kª×e¥R§ÒÛµ‹RRÈàÍ:³ÀÿR’QPP°9ÝT䤠 `Krº~EIFAAÁ~äô÷õ„°ÏØÐþ­©a½JÔ¸íh*\ 7mZ=’Ê×D‡¶O¦ø+‰4~úZ;¼}0ï á8|øØe´eÛÏâà{d?Žü W~+žÅØùùÊ‘=«Îçã§­¥¡/=.î}¾çc"ǵt>N… ä¡E«œËÁð5â#/ÀøéëT‰UÈèäþšÓ› ®íyéÛ­F<×ô|Õo9”jU/CÿÝs”nýsƒòå¾C„>z’^}±}¾é{q^ªÆ³ÔÿÙ–Ô©Ï$Z2{ˆ~Õ Î%N=E£&:×k:¾{.õüþ夈_¤à=ôH­’úy­êÎå'JËEòf§Ø³ÐÍ¿ér|µèð&õïí\‹ q‡zšZu¥?i¯Öà%UZ2LGDŠ”o¯Fël‚S—QÑ 2\¾OZ®Fë”æd¦9]U’± ò—l¥„  ÈI'§ÄkJ2 éŠÿ ÀÞuÀIQ,ïºó|’•##'IÄ*I‚äùWõ™Á¨H2 ð@’ Š€" ( I‚D•#ª„»Aàö?_ßÖÒ3;»;»·af®¿ûõMží®éþ¦º¦«Z©Î ùºLƒá²˜ ³vtéä#1)(ä/B:òlÏzŪ^Y¶yܲë0½:þGTqEL .Ç-÷ÏòŒØÌ1ùíõâBšÿ~›¤óÔ£SPp­¦4pâË-š8)Ï­š\Ik]MÉêñ)(¸+ø‚Só­ˆIAÁ¥¸ñÚ²ŽÍ·"&ê÷pZ·võìÞ>ê÷Æ}Ã…"&«®®KmÛß+Ö_ôœ ”V·Þ ¶±Äv§ö-u†å²¥‹èà £iÞÜÏ}ç75ª%öÏÿês±<°¯å¼¤¨Ç¡  €<²³3µµ;©H‘Tœž§ãÙ¹þ¢í4Âq•*UF,wîøEìè‘ÿŠíÏô¥q¦Q¯(­Tß=ïëÑGÎQ“‚‚B؉ÔÖD²níjš2}žåko¹µµ ¥EK7Pzze¿ãÙY™aåEcRPp)†OøÉÓ¦YzDׂH²5m©Téàt´«ôŠU|ÛfÚQ8ZÓ¬…;TWNAAÁER‹Š èÚÉäˆ|TWNAA!n¥QE ¥1)(¸í/ÇsL"ßIºNWâlÕ•SPP°RHM'®  `7bBNAAAAiL Áˆ)I“‚‚‚ýºrzÔ©\RKiJ2 ŘÙ{²ÇuùZ6¯MXá*¹,_»‡–­Í0“'G·Ã£4(ÀX/õ•lÜ$pޱL)¤Œß ö¬®Š—”€ÇÑ¥ñ‰É®ªY‚.-[Dµ 'þ>Cß,ÙðøÍËP¡‚jp}¸r³ò†Up‘\Lò,vÊÉ„wÑÀ)ù¤Óªåe¦Ç°_‘RørÓUÖ@I1ûäb(K²‡ôF,xžj`´É`ÛyÁäI“DŠ«W­2]7ÃìÏ?÷Û׳G¸ÊM¯ÞùóPþN®“‹YüÇ1¶•¦Ѻ‡£.³kjÕ¢Ÿ6lë‹-¢¦7Ý$¦Nݺ¦$dÜßëþûiÜûïS™2eÄ:ßK>7+3“²²²hÿ>ÿ®ÕšÕ«ƒÞ?Úr ¥Þ³¥T¸¬(•¾¤«êÕŸGNÒÖ]G-Ë&ÄÎOI¦úµK&¼ÂêØ¾=M>Ý·ìèѺk€Ï?O©©©¾mù_|õ• ¥ÊUrƒ|ñõFêÿè£4läHQÆÁê¥Ñ–rw‹ò®|þ—(@U*£/ýF§Ïä„”™éšêÓåeSmQžÊчÿ¦e«ø­±LÉ‹ 'å¢bü²u«n»õwŠåµuêøÈ €¶R1ÃÔiÓh¼¦5™ÝcÎìÙ>R ›éÅÆz)§ü@J2î¸érK²ñ³åH± )1.)Q..^À¯Ûn,K2F~ë“"»„Ûˆ¶&h3ÐrdtîÒ…Jkݵ"©þ•0µhQ‘d›ß× }í5©¬Ðeúúëº{,^¼X e§ŠªÆäW/Ï¥üh—ËlE.H ë–²eYê_UÒï{›_y®ïð¾îñÖ­Z–êV+çÛ®”~!UÖR,€Fñø“Oú­[µ½Äû- sæýî[ùÅIÁTn2ÞùCÀkú÷hê[o{‹¹Æ”~Eyªß ¾ å1ãÆÍÃÌ3¨m»vAÏy套è¹&§%?î6'`Ø„Å!åJ6;~ÝMôäãÓä©SMÏûaåJM† ,ï3çïö­¯X»[K¿ê»r‰üäøË/¿ø­ãKÐÀçžë¬)ð6º6f_Š`±±„¿bá\Þ¯à`!Ì¡Wk/.4<48&%ì{°W/±Þ¥cG± ²)1B¬oÞ¼Y4Z^GdRÂy¸. ÿsW<Ò÷QÊÌÌÔ•²LdB.€,®Ç>–i´Ÿ¯_Ø“xÛ˜ŒD3~ÂÑe@𣶹«%¶¯‘È`|]qáÖ¦†i‚•»1N@$_¿bñÅ,öíÝKeÊ–a3Œ¼fefùÕZ­N@CÈ%œq±æ°WÛÿHß¾Ô¸aC̦ªV­šhtÿÕ4Š%Ë–Ñíº@šEü)*ïm´Õm·Ñœ¹s©VFÈÚ`¹r儬ŠjmòbbÆ9,äòí²¥âš(P®_™’=¾‰Ò¢Abû*| Fff¨ÝæÕ´@@òqtñöíÛG7ÞpƒcH d Á`(@¼_"ŒíQÔ§JAÙreuoö°ìZåõ¡C#¾>. “¹„êü€”Šxi›•Ù(h¢ %{T&CYüŒß‰ü(×´iS꯽¹ ìƒaÖx o3>ƒË@7F\Œáq P>YÄ6–ЈÐ%Å6Ê…}ÊmfÆ>ÈIÈ@»Ž·Ý$ƒ%4OtqŒI²Å9û¤¯/¾òJLáAß!^¤¨ÐÐh¾^°@¼ý¹ëM¶§ÜÆVßgc‚v4Zkl¸×B‹è®É ×âºg5"ÒFm¢¶"—`͸¬F(LJU5y@&(#k–ÊÊ“,V&jÊö½6ô<—ÿýÊÓ ÝX]êU»”êU?g¼¥ñÛ­FÜHß²1Ÿ»g¼Ä‚ò Ilã `òÁ>Ö¼°_à Yâ³ûb›ûANø‡aòGœËÚ­1¿Ñ›Œ·§/xM¿î7ûÖ;ÜV!_Ô¯/ÿ&| á¿ )»ËfÚܾõkwÑÊu»õ]9å‡d/ûRP»@ëÖ¾./ÈÄèF"w‹}ÝßÊ•… Î `£Ão¬Öƒ0C¡RåÊ1T”¯œ &¥ ²q2Œ¾ræ½U…D@îv²ÆÃ Ý'G—{ïû@Ø6ŽÆ–íTµs¡ñ9f÷„1[û}´1 Û||.“'´%ào+“\‡ç/ÝãúzñÃúCþ -»ó”~“Y’M­P y±Ì"ºÄÊa×ø ÔÈmM¨/“<)Ÿ‡e /nLlÑЖ‚Ê)ˆÆ$Wá#Ú=ä11®3,úvgdéÕ r±{3öËk¸Ãvýš©lL¡º@;Žé¶¿ÿñ ÝÚìÒˆîÅÚP<É—ÀhhKSàŠkÝWîŸÓgiÊ;òM}ó„á+g_É£[÷.Jÿ;sÆC>©Ø'¶ˆ 2[²|¿L@>“²1åÝã|¹˜ ° öXñã!*W¶0]]ó"U)$ìÙ›0lGfÖiñÅ©hêùtþùjÂcÆéÓ9B6–_‡Ê•*L•Ës•¬víÉÝ8«²q7éòêñϼå˜ß{‹¤,5B…VkÄÔ¥uº+%vqAºîê4š<{‡%Ù8•˜<&‘s“sg(8—”õ[Á.6+©ý­î{âµ*}[vÈó5yÞj–…<¡fõK¨Võ’Þ®m&}·ÝBU*]$öW(_\lw¸»ª86wÁN:rôdLš%;ç m£cGÛ8ßæ%/*HÿúÛ5t*¯É꫇B´püÄiAJ *Ð]·WòíÇ>loØtH$&¯ oÑ@ãu"¨ª²¯‡=à#†ððƒÇ<Îc/z¬#⟇ë°óøzøâÉ×IJ!ë$†‹“Xz¬…=QPW^QLt㮫—;(_!¡9e× Äö‘#')c_?~:DC 1” Àáa;à!Aˆ&(€5*„?áp(‡kàÈŠÄaO@b¸ž\q?œâ l.*ÌL6þ,ga“¢&ë€&T®l*5¾á2Z³ö€ØA¬¾úzñŽ·lÕS\óé'Ãéî{úù® „‰cžK"ߟïsòäqA@‹¿þŸ8§ióξûñ’{ôð‡©O¿·"{=Ùˆ”€´ÿ¢·•Ö“SÁþô×QÅ>ðÉ‹ù|=AR( B'8çrô€pÁì€2% …”ó)÷\Jvj«¤WÒåyèøO ðýšŸiÏþC?Û&L eß}ñï¯[»6&ÔnØ„ÅÍÈÈ$²Âº³I}2âc£FŒÛ¹¡y;ú"`®A(̘Âf ›‚sp<Ú]+rqRWŽL´½OqLÊ–•E3¦O§«®¾Z¤H+m8×ó’ššê'ü7Æ}B—\TŒ*^Q6_Ò©S§iÍÏÛüɼjuË÷èØ®M5LId|f¡ž!ëûðÃ4⭷®¸VëB( œ ¢ ð žñä"‡>iÉ“ðd£Ç“Èk¤o6,™È8l &=x}èPªWŽj Í"˜lœóÛ¿LMFðö¨QôԳϬ´ ®PzÅŠ!+-ÞÊü ZÞÔœæ-Òûã¯#")èQ¤H*•.c°³³³iÈ«¯R»Äslª5¶ÅË–ùH†ŸÛýûiÈ AbŸƒëP?x›ÁÛÆýá6³h†5†>¡€€ä:Éñ›¬’ Ïœ’ã˜OÑÑ0‚« N ­ë1™É|ú&  2„iþW_ÑÛ#GŠJÉoWÍ-[Š};vìð‘Ò^õä5cÚ4_%•kù^¦H2O-on‘?*Øt?ù¬Šóży¾—ÏŽíÛ)­T)ñ,ñœñ¹á–*í?Ü ¥7̈Ã5òÂKk¸í)Ó7…}Â[bZH¨jµª‚X0³ŠYL#¸«Ù`½Ö•9Å´ä–‰jý'¼ _ä·HoTTNTZ¬ÏÓH+˜„síGxoâİËÔ¸ac[Èö«…óõ ´Ù-Aä:æQxqìpŒ,^ &*Î]¯í f‹Âs§i ,kÚ’õ8PS ]bœ?ŽgFánšúD^¤éð½yÉ÷‡Æ%ÿV4çš“»;ž<ÈÅN<¤ã$2våLŒL¡ÊíäÃĄЇmT>Tæçž~šZÞz+5¼ñF±¯T©ÀaIP¡Qáq}°Jëqš´¶/±mè½>KïÕœ®˜îü=“F|´QÉÅ —9ßþN}»Ö´]6g,ØR96íÊ…Ç”h™ÿëüdêÝñŠ„çé-ƒcq(‰¥N¡ªRcÚ1 dü>õOý´%ÓÝb¥‹Z·1½;eý§SuÛäüý™[0N¨°'xêv % ×=—Ó¸O~“õÑ€çv¼½,]R"±Ób5©s½3õ7:u:Ç }9Kö —¦výì‘ Þdc&—“ÿœ¥an°ÿ³öø…ÖUo£Hat õÑ”MJŒ‡:^NÃ>¶ÿd˜áÔCh\êÌ bÖãæ6jæ,•l>H+ÄË„ Éþù 0à-œî›‚á-j’äÍ{[Ut-)(ˆ×Ï·,„\œ”ȤLAmLN}ƒ&._JߌÇ—”,QÐõ’9Y©gÇ>iS“ê˹ž=]&K+C1àï'Z3Ày£¾yip/«J°{ˆ2ÐÖëZ×”hL?^.­í9p<¨lÉ¥FzqºµQâg×Þ³?›¦ÎÛi©/gÁR!/Ìï6I²¯#/ù&š² W®ðkCØ& Qr‰i¤.T ŸÈáMpl#òÎã(U½DÃáO,yûùþpèåãfaS¢)3Ü׺’-H ¸´tz¢{m*j˜Ã¬,Éþƒ´¬=xŒÔf„wοî5‹¸€%\Œà’_9KvÀ†k¶ÙQÏç"Ú–ÑyÛª,õ)¸ß*‡.Ùâ‹4Ë@LkJÐlº{G£#Œ ®ã(¸ÛpÆÅyHð³Ãý@*Å>fÜ8q.–¸H×óý÷jyƒ0ŽsÄ#¶ûôê¡É-´\Ê¥¦’Ù¯«Û»}5[“¾,¦¡u­„CF?­ò™‘Ö&_¡Ù5Œœ/ÿP§Î¢Eà9q$ Ž0€‘ú|çIçôìÞ]¸±£6ž5G#°nÅ—(xhÝPuZÈ£y‹y÷ãºPi±6„îHƒØ›‘ú„µ7ÂhÁê™™\î¾¹¼­{êçž¡Ih]Œh‘S8Í oþ)Áy•oEÖ—-]*ŽaŸìr"Ÿ‹Êž·h‡ÒÔÞÜÈî-çOÎw,`”e4!|<ÈxNÞqš )È1™‚ÃqcÀ¹Hd©“k•‰5Ø í`dŇ31böÜ/…vƒÐ'f@÷‹»h¸'4,Ü6$Dªä{vó†Ia ´ ¼Bõ¹r[’‹– \`㯕ú™üÊ‘/ƒ+$«çÊ r‚+tmƒœ|.¿M£¼Á9p–è~  ¢È1†8:ºlgdtE  ´kßÞçI‹­Íy@÷áDŒò`í#ÞàßäåÔéÓ±#"òÉ‘& Û9šŒ± ÙO=óŒØnبQnxœ Q&¢)K³Ð#Á‘0Y€`–HwÇøZ9$Šx&Rh•%Mµ.¾·|Ü6%|i¸oŠp â"ȈUw${ÂD€}뽚‘|n¬â˜B¬}`H Ý䇻&8¡ƒóöO–¬™°33ì6 #Û䨖ƒ%äÆÛ Sœ›—øÜV‰ ùƒ|8ÖY£âcLèØ‡mîÚ™•³,ËãuòÂÇ䄲„5Ž)œ ãîȪ=‡5ácÁΙDÓDä%£Ü݈^Ï9:@èÈøyMë  ëË2;®u§d»kXÐ@Ã×òìl…ˆLʰùdef†Õm—7¶ ù‡(›L0 87æ·iسÉçìmd¶ î&r÷ƒ op4r4d%=9bÂE »póÍ7ÙJóv@TÜe.¬i~È÷”H´:‡iæ)ø—ÏW5R)™M¿Ä3˜!“lQ[¤óä¯y‰H ¯o¾l‚<œÁ ÆYd„yäŠòQ.Nðò$»gv*sëÜýà8ä-%#%7z¶=ùˆ)@Üê0h*¢<³‰<¡»Æ†cù‹HǸkÄyŽžæg·WQdrå/rl”†v$OÄq¾±dòA”5-¼±ý8gbÆhå]ÌûÌrl¼—åĤ-“tîð†:’f`¯Å8¯Èeã_óÉ¢óš’}'ÜcnW™¬ˆ3žlˆž5c¦Xb¼ŽópÙ^¿A}?M*w„ø£¾ko“É› ã¨@J\&çõªwz*Y[D¯‚?€¸0¸2ÉwéØÉ7æ ËpdÊÆ”¬ØDÁɺT ˜Ù—F+ÞìРp6¤& é4“„ 3 ¤Ä¹vèÎ…*³Uý „dõ‹ <¦k¡&‹-^ùµsØè[7²¶ÒaÜ@™ÈxHïçíXN4ŽM&˜l¬z€œe¢E,Ð@Ô½£ÞYŽãe¦Àe‚·RùY{BŠS+Oú¶‚’e ðÛþì¨ÉÆ8æÊ8>‹g,–ñJù\Ùš»Íyê§JH6û"gËÐGΠǤ]“.­ÜpÈõ²øu_VdqŽü|S”±;?t8Ý%KùÈ|ï " j•t¥¶î>JŸÌ·[Þãè§k ­k VW`·’Úõ  ŸQTS4m*V+Ãüå{DÊ÷²qðT¼Æ2EüUnìzb¸ F‡ÙyQœ69à¢ÁnFp¬ cø4>EAAéÆþH‰”ee§Rö2—ÁƒÙ7DÏtv ¾¥JùÂgDì¢?3y"M3AUHO®ÈãÝ»ÓA-̈ce-Oq µe‡,ì8‰_$È£årÇYEt¨ÔEííQ&~Ý—–œª0˜%%òè¨ÄðŠoâDÑèeYñ(fœƒ†Èd÷Œ´ÆyðRïØ¾}Tkkˆ(Ìw n<šùE>Øá”I,œ|Y.ðö¨Qº°!Ƽ³œ8²\yçÁ)£¿ò•ϋȗÏj¾&ÇñÚ3f·ø?2Áù¿GoèØ®ÈdGcä#Ø9¸ÎÁq”>‹fþ’ž0|åìP•J_\È•ÚÄ‘ÌS4bÒÏ–dã\_9ÿ2%G:y<Ö¹£B¡Âµ áW‚*:Ç`’T¨‚X—Žû O}o4@0Ç6ˆÉjÃÖå+L¾Æ  yg?94jŽÀÀñ¬@ÂÚ¦7ÿ2™qœ+Îã{…«51 ø@ÞÎço¨‘8G¡LXŸêõãã4®Å=p/qíÚ€NÜA¦Î/¯†²äÉWä‚îÒ-1AóÁ6†¨Ä8í8/”[鵯V( ‹` ¤É™»ŽL8pð…?ò »—hLÚùh\†ûÂv?°.Kä‘ýóX«asƒÅqÖÞ78órôHÑMÕ´.~!0qñµÀAo—™·ÃÕ˜wóuÅ¥H¤L:¸Ïåâg{±+Gw_–ær-_ÖýScœ¬ÉÆé–¦sɸ€“ã,”xÐ7cå”+7À]%ŽßûX–BŸ$YÀdìÉ÷g"”xe0Y˜Ý't¾¬W3 „ ’„–Í‚µìƒvò÷źҺPÜà¡•Üâ%)\ƒmm½ÁÚÂ…1ªçÏQ‡¼`¿%„ÃõÏiÛß ùÁ ÏKœ‡{±¶žIÔº-aKà>ñ쀖f) —Á¡QÌfW7~,G‡_^:UŒg &GÛ˜B P#ó"lk²31 “5G6`û–Lb2¡Ë築4.“1ª‚üÛr¾Ep½/y]&~ùšPšr0Y†’²Lð}ãi—°±ÈŽ©pÏ`GT¤Ó¬E Af8®8—}èàÖ†sËj×Ê..¹~v+Ú*\»L Ù8ÚÆä7òÛ!Š¡òåÞ2ö’k¨ ØÁ€\ í€€˜”à]1žù€ޱw=Ÿ ¢Ã}pxÕ8¢’ýÎbEJrÀ~+r±ûdú PüË”¬ü(¢¬Ÿ*YÆF–rxÈŸLSµ%ÈcòÔ)Â[^FVf–8ÆT0§T8­BÛ2žm Ñ @„±"k+r±{íóË«1ìI¤ *˜ [É1V²Ôý…à~ž•]-c(ž´^ó¯ ª›Ý䵡o x»Ož B‚feœm…»wáxÚ‡ÍÓäâ,_9ÿ²¨)ÂcÕqVˆ™,C‰¤ÀôÆn{Çó~Ù+!âd{‘q–(ÇçÈÆr>‡'ÀŒ™¶DŽö•3ì0uâe¶õ(_¹0ó¥˜)>Ì”å¬SƒÜç+zú&邟wf«ö¡lL޳1ñ´p`´ ½â 3kG›L>±1þúqìø:–}&á…˜ûýŸº|ü'ÇÂýýÀIG•Ë8xÒ17Ðl4fpç,)þ³“‹ãâ1‘•¯rR𳱟eÐÆjNS¾>@?ïÊÖåiÔ´ßN˜Û÷œ © èØ¨?n8b› q,û´nû§-Çl‘¯…«GMcò¯ËfIq«Æ¤gÝ^š}Oš»âO‘ì„1Ÿe8Ê.²pù!jvC⃙½ÿ©^nßj„pèð?Ôò†K–§™ß¢m[·1Y@ YR°Ïl–Öì:KJ4ec_ª:‡e ‰®z[4­é’BV3OUÓoRèümÖòµIÎ[R’µ<ÈöˤHó¶,­´Ë`³¤`à$Ȉ5!yƳYRð¥ äÎ̾±l»Oär±#™u=MgIQˆTÖJzñe(9»r–©/8ì‰Ç‘ÏWÍ’’H•I!j²ÌbÞ¹'+¤Ü(.aS„ßÖðRzû©Dz½o}Ósí\÷¬xÙ¹¯&XçcöÓOã#Ë —](Rñ /p­Îdå{çÏ;»ž”ö:nQ6îyÞÉ¡>ÛÅ2mûý=4d9*;$%/+j O>¿LÉÂâXÏ6U}û˜ÜêÕ,Iéa=Õ½¶ :>—ï—ÇϵÿéRSÓc=®¦Ž·ûÚCùeÒÂ:Η‰MFº´]V»éܱÀîÁŽåõ0I2ÿ`ÎvM›Èt5) ŸüsÐz¨í:††¬Mß¿"•Ó*8šÏ3=®D鶆—Q¯6UhåÆƒô×±SÔUkœ#þ·‘Nœ:KƒGü Žýuì$-^µ/ÎâŽ,ûjT*!Öût®IeÓ Óރǩ„FB«6¢2Úöß§ÎøÈf‰&‹Úúð§ÒÛ“7Še¿ÁË|Û÷·­êk ‡5™b9R#ö÷fn¡ÁÙ¿1q ìSGÈuã¶ÃÔ¤n¥]÷@Û*4~ÖÖ¸ÉÒ"ãÝé›óΊ\ìÝ•óìMF“i!ã1«de âÿo½óÔõÒ:)è²à)¾u0wYmÿ=SwîÊІY¿ÐK}®Ñ~ç„÷¸»ˆ d´SÓ:?_¸[¬OÔd‡¶=L#šùiXúY¦ÓâZjľã·Ü1L‡ž¤ÿÓ40lºp=qn ¦ÛþÊ]n?LKVïZ)ðÒè5Þgq=¢]oY*KžÛæ•3#¦)LÛ?æ³5 š°N{;Ÿ ¾Ü®i:•éËe¹s„ñr¥öö =>\Ó„´·ó ­!bßù4­SZÓºªÓí ¾^k@ØÎFUÖkûãCJñ¯£5 Ñ KVí¥Wû5 ‚ZyÂÌ\mbØS 5m*›†j²¤Rà)„9Òmw¾÷¡ uÆ>ã˜ü®KÀ8&OYÊhßC1àÎ&—SãkK»²NíØ“IïNÓwU§OaI.Ãk`Ûrõóœ›Ï¦µ+ióZ½ÛO² »å·€’eldiœÉÇ›:ÞRÁµ¤¤_Z”ûwMýG rq’¯œYYjüÎ?:¶B4e)©Wã×KöW+àۓ3±1åJ³uÝ")ä“>z[ !V¯Û €ÛÉÞŒ ߤ±„ÙŒ)1ќʥŠnã‰L.v}†X5–)9¾#—TR)ï)To™g6aÇ\ÇLižâ‘Ížû¥.Ââ(¬áZ n¡P¤¸Ø È™æoÓ°'Jcа'K9D ˆC&™`d¢amJ>Ý6y9nS¼Ã DœhÃö¿¨VÅ‹ò¬ý&# 5þ&&g%ލÊ2Àxü$pÇ1›õ‹-‹_ËPã˜Ô„—Q­;Jޱ’¥Q²¡¸v¥@“ð$ø2Ηµx~… ÎÓ¡åÂiðÄu¶z®'Nž¡c~2ý¦h˜ðR5 èÚb.Ëbñ` ºp˜LÀ8 å¨#E÷ _Û0´Àê×µpÎiÎc}ÆËŒƒ'è¡!ßSÙ´BTH8À'}VMÔßÕœØË NL#}v#4' Öf¶!|þŸåýC7¾Âaæ|¡Ãƒn=zø¦w‚÷ÀqØ¢ðE/X±;‚rÒóL6WTWξ]¹p.E3ŒÜ %¾Âá«ÜÞŒ½‚”xÌ€ Úh¶aÇpy>ºDËÆMÏ;ÙÜ€æQ)‚ä/K%“hÉ2œ ˜ …烆¢–cœmW¶Gø k[ДÐ-äë0µS–¶ ã ð•ÎlRÍ8œÜY㘠"¹b(D`ÑË-''¾r¼ëŽFT!½²$2tÄ{ôÑc¨k·ýÎÃ~ Ð1³ý‰–e8àÙPtÇŒëòÌ(ܵãalâsä”r7}ð–,[æ(ÙØµÝxBÙ˜Ìê"C¼åX¡Bezcø{b}æôɾg9tÈ:x`mX¿šæ/^'öOúp }¬‘¶»vÌ©öÝ÷>QÏߦˆf°ÃwŸºÞ·þŸ!ßçé^};W§ÿÛ$î™×{élL¦>71tuZ·vµH;¶ÿÕûfee%Ü˸#'Î ¼¾|Ù"ßvá"Eèµáã½d™{^—ûzÓW‹ÖŠí»Úu¦´RehÖŒIº{$2ô9ì9xÜõ¤„Oì~Úƒ'²L·7¼TŒ#‰0‘ônSYËË}®Ñmí[OÄ×ùÈ„†åÓÝk‹õJ—](î)ï¯U±„», µI—’ýú÷[ÛÁ†u«¨VíkéÊ •|ûvìØê[_¿nµ¥ûðyOô½_, .ðVïýgbô>ßï—-¦þÿ}Ég3„¶$—í‰ëµ—ÄmºÐaãÔKL b’0xâzW“Héñ?šv}‚É%®úÄɳ‚4˜8jWºHì¿ÈjÛ -ãïå.ß“µ¯ÿû™l[E#³4\[·JJƲ˜våb©É/˜7[l!…‹¤Ò]m»ÐNM{ºRë†Ü×é6úpÊ\: 5¤¯çÏÖ¬Õºª½ô|?ðòpzóµÔü–Ö⺚¹Íš1Ùg/Û Ýçò=^ô^ÃÛm[5¢s–Æ·ïç>QÍZuh’Ö=»³mg*R8•jÔºVä¡gŸÇéSMâ>™ú?ñ’°“\yee±ÅòÅÞ†ä%TéаDËãdzcZ®sŸ$Sœ+r§®½u¿]C#,_ØŸvïÜF#GOÑí¤‘/™o+²LTC¶©¹8â+Wlÿη_^ÆðóBB5¦@ùîÛå)\Y*DG6˜/p¬Á‡û@(2ÁËÛ|þ†í‡ÓŒo~õí»®fÉ0 áþ6²¤‹/¿M·§û¿ÛP®mlõ6jdV^ëêѺpX¯©½ñíˆFÍïÕm;ïãØ‘Í›iÑ×_PýëšÐ3ߤ÷Æ ¥|<¬{<¸O{A”±¥,›´üwÀcí|6_óÒô1¯ºJ.›VG›W/ ®1‘ Ç1ùlž\ûˆmÇqÇ1Å0ŸM›µ¢‡û¿àû+®¬$–£Þ|Atoj~ý¼aèÚÒè‘Ç^ ©“ÆÑ&m_ÞZ×n×6qü¦æ­Ä²ã½½Äq,}=G\‡õÁ/=&îwïÇ”ÆäBm²\ÉBÔ®Yn@<ÌɈ‰bà¡Ñ ëÅyŒaOœ£Rd_Åôõ'v_ü¦NKwßZG,± 2)=Ü ÝÓ¥§ø‡}X/‰n³vÖ»÷êGýÿ¯‹FlwˆT½æ5ôÉäqâ8/ç|6EœÛï¡ÎôÔóCéžÎ=i—ôå4.#¿m LÁ^ÂkFÃv2`kÂ'tݺÞ^Qìã! jêg ‘»p8þïÛÓ…œ?:ð°hÀ?ìI>s»&þrr(féÅÁciÆ«rDz­ÕÐŒø8·m^Dzw·ÖtyùÊ~ûy›—z寚V…eÁB©âºX–ǘ¢é+ ø‹<~G§m¤öiñ5}G_.2©ôë\CU»›Ëë¾ÆÉã•ÆÎÜ*fÄÆŒÚ8$9I{,„=Q.)Ñ3~ÇPŽí[Õ£j5®ÑH$Õ÷2yqðjwG]º­uGª× ±4è\^<ÕÛ—·×^yœnoÝIÜGÞÏç0åêzOSñï¾ÿy¾îÊɃ YsØææ –µ‹çGÿäHÙ ,_ÑÀW: 0 `@ÛÊS7Ï"æ·Š/½ú˶5möºßyaб¼­UGZµr u{ ¿¶ïZ±¯}§žbùÎ{Ÿë®ù`Ê¢\’ÓŽ›Ý«FH|N¼yÂnïFÙí¬˂Á‰~#´$y¨H eÅñŒCþáR>úr»O{„<¦kšSûòrÙH~SÝÒ‚¬òhý6jLžì¥`•ù=¶~ë;Y–ñ!ìK‹Vïã| DD×F6s#ƹƒ&¬÷ëâ¸Q6FD£ûê±ÁR5¨è G ÒÑ0Ž$A1I…:W!oH!)fŠb/CŠ’}Ëã¯1™}•SÏ>}%ÇèÉRÁí²Q_åâö"ËQ"QJ’%J2ù*g¦U©Z ¤ä¨  ’Š•ºIµ[!E½ÕìGLJ v#&eeTPP°1©op ¶ëÊ)^RPPPPPPPPPPPPPPPPÈ’Œ;ý{Ú@mñ‚B¢°ôãIJ ù~.)gÏœTRQPP°1yN+bRPPP“‚‚‚BpbÊQ“‚‚‚íˆéì?J* 6ëÊ>¥¤¢  `3éŒ;4¦¦ «ÑÈWºŠõ­;öQ‡Fцo‡ˆíZMž¢>Ýš‰tÃ/Ðò/^ûÞÑ‹à;¸zÝnq ûR‹ðÇõ=úŽÓŽï÷ùjê“T¶Tq±.ïïèI÷÷/~¿¥  ˆI—H©ZÃþb}ó²aÔøºJ¾c… $ âŽͤo¾ÛHËæ ¤¢©Å5õ¸Eëݵ)Ýuk]\rΞö­ƒ”š·{™ö8"¶onTƒÞÜC¬ã>ÆmäøühÚw”•ý7Õ½ª‚ï¾ §‡Ÿž òѦû›¾óò±Æäž®—åÇŸ¶Qå ib½ëFÐÊyƒhÐðôL¿v✇þ;†¶®|‡>œºXl{rΈk@ ™Y't÷1ñú¬/VÒ×3žÏ%¥»zû½¹TôŸn7Óÿ=p;Uiðižx9hØ'b‰ßâ}| î×ôú*ôÚm®z. ¡l¦1¹!÷¶¿QÓŽR4¢¨D&-ûΞ=C£ÆÎ¦ “çûÊûã×oP—^oÐ}›ŠósrΊxÝ}{‡š´zZ§1UªPš®­]žJ]R”fÎYFéuzÒæ_öˆ}À„Ió©s¯×iŪ-¾ëpO¾Þlhßæ_~§w^ïE]z¿ášçbõÙ)äoœgÜqá%5šxrÎ"‘“ÓÈ1ŸQç¶©SÛ©ÓCèЇEùVþ¸™,Z#ÎŽËZьϿDЬqmA*{ÿ 9_­ “'s‡O¬ø1wÆÕžÖ…+AGµëš7¾Šzß×’&O_$®ÇoŽÜ‹:µ¹‘f|–»=ñ­¾T»Æ4ÿ›UT®ÌÅT¥bYZ¹z«ï~Xr^°Ž<¼üô½4ý³%ôÝòÔãÞ[hø;3ÉéÏ#œtôàúUÓÌßðóI*W­£ò•³ ¾_0І¿;ST~BÆæ©ÊWNÙ˜ô8{æ´’ŠMPÿ¦>J Š˜r‰IõñìFL§•Ƥ   ºr :ü¿í]|Eû~£QZš„@JèM‘"¨¥ù)¨ ê¨(DÅŠò) ß‡¢þAšÒ«‚ŠR•Þ«”@@$  Èýç™Ü“ÍîÝÞeïrwyŸûíïvwÊÎμ;óì;³ïËJFƒÁ`0"M»O.,þ`»ªH"5*£E pŨıgiëž4úãäÙ“âp¶Ÿ&Ü{ŠIƒÁ`0ÑC–(˜?v|ïNu¨A­’\!aÍæT3u#ýy<}Τ‰Á`0ŒÈ%KÐ,íУ~&KÁ%O#¾\ íShž.ã*a0 #â°ïÅG®gÂd ~QϨo_ÎUÂ`0 Fä i÷Éý›^›tw«&¸2B¬ ;vâl~*Ñêd,WƒÁ`0…"ÁZäýßQÃh×Îížãkê7¤Ž»S\|BXWȑÇhÁ¼™ô@¯àéq×w&M ƒÁ`0$@˜@”ùX·v5µoÓ„¾ÿiƒ<þ|ìhy(UºŒ T=(¹Juy<î ynýÚ52öÿ÷³´ì§%‚ÐÌ ¸¸x™¯Š¼êÕo ÃŽNÉv]u¸©é­ÔéÞYÈÜ|ñ|ׯ[-Ï)ÜѺ½¸~’ãõà Á ƒÁˆ 4í>ùå·%¿Ò¡E²ãy?ùïL?„ 0§O§KÂóx¿g©‰ -YÉÕ6žAOõ{ˆÞõ™Œ´:ñQëýÆzˆâ+vkÓºž´Št}>n4Mœ2ßsÓé´k×vB^*Ÿ™s—y4`ƼÆôÅ»húw»^á…à ƒÁ`0)g F(äu –›¼ÝF6‚Ûkì„ø+¨áµ%˜(1l °goϾtÚ¼í¤í”µª¡J¸ !‘·l}a@š&0y;ÖCÔz?ôý¶aC¶rd¤§Ë²#=îËxp•·@$@õJE¨rùºâ v IØý{:mÛs’þ¾p1Wä†eÇÛvŸ”mc÷¹Ž±·¦‰+–>dº$7°}ûvj~ë­^56 ):©êÒ¹3¤¢Oß¾ò¸LR’$;2¿mÛ¨ë½÷zÂ$i:tHž3#) %Èyƒ0á$ÈN9â9›%H“ž¿Qsem[·¦æÍ›{þQ(u.j@Ÿém}JõÊE¨Få¢üðG(*_ ·”£gh庣ŽÉ5M,;¾ëÛ®ßOÑÆíi>êÛ^Ù´ÓÄÌŠÁÐr­K3AŒš  ¥EÒãÒâ¼”v d(Rå«,:ÙÒá«Ð.9”$P/‡U™"19i§©nµb”|ua~ ¢e Q“¥è§5GLöÓIJc¨§+b/£_7ÿá•çØ²ÓdÇ"x s&G€é ¼õÇ'$ÈU 4ŒÈˆ 44˜ÞÂ4ÈÚ³Ù­·JmÈÚSc )h÷9óæÉ¶ *£(ÈÊï©þýe~G<3M ¬H Ϋ¼}•Çêz¸–^.•¿šJìÖ£G6R¤âΙ?_Ê·ºŽ^цí42襧§ÓÖ-[ä~š5)!¿$ ”(V€®*’ŸŽ8—c¹ñ=· ÓÁƒiúÔ©ÔoÀŸqGA:u¢²eËæZy¯NЧ5›þðÊRmñ¡ïýÌg¬†5’¨aMë›­š\˜ª%GãÅ`€IŒë8œÎbí ®ivmѬùû-ÃÚµ*ÏÄ™¼™áбtšñãV¿¯óT¯æ¦ç;ÞQÑvxƉ~i¤ITS%E ž8>3&GõнKjÔ¸±­0”yE"~Xu˜þ0!Mï]âˆÌ";h´Ë;ÇËs¯J‹.”D2å/V®X!òíJ»öùv+”\¡¢¸ÆDyýÜÄ´Öe]¾v¯ØöùÌã2—\¥ïc‹bǺ$µáX‡\Dûý÷2 ‹ñu½*Ò…chÞ¶U+Gå‹0EÂÇ È_ÏoþXw¢´Sê+)ä…8*¾*ÊÉ_11‘[}¦a ä«dã5jÄHúaÙ2a eR„ ¤ª]›6rpTd ƒ¥JkœûeP#®Šœß²e‹<®/úa·4iâ9ƵŽx8§öÍòʃbñ5œC2ã ÌVXG·¦m7mêT);8g$WÕ†'Ä7Ê—’ _ò¢ãÑÞ½å¦Ò©üCôðzùZÑÞfÓ"xôÒ&L‹èÓøêG_‚i†§ÅÖ€`*âtF†\¬ÒtïÑÃ3E^^~é%¦k’ôº:žv¿‘Ãu"¤k¾@ÈP.\Ó+˜‰ºÅ¶aã.îÅÙ¡˜fÒ5‘Ñ|ãBp59iòdÏaÄ ˆ¹`§IÕ«é8*¼Í«)h@Œ@^zºú«7þCníòD:u^ d‹.”€ðCîZ$L·\[·žøïHkÝ c^y’X; ÁuÑn E 5°@NV®XI»öMò´åà!C¤6 éŒò¥OµwOVòb,® ÙŒOˆÏFÜBß.þňµeu4®i’Z"A¢Ô×Eê ';‘ùêË/=¤ i­Ð®}{IÔÞ‚¤:G& 6f$¬?Ñ¥•Ic8|†zÖ×A&°øm«>ÏïÖ½;}5a‚l+„Ï>ëihñ…Ú 2¡·dBÏÇŽVtÖÌ™òz3Å?ˆsƒ d òH4dN]ߟòJM«û…eFþÈK-tWZSù²á^ã¤ÂAR/xÉ@|e~ÇíÝ_÷¡Ì¨[£¹†ÈQ"„Þ÷´K£Ç|LÍš4¥‡¼ä!?˜^Á4kî\1õ—S.£ÇŒ‘ö5n$É‹Nœ¬H™Ò a@}Pä-ÖLaC~‹Üƒ¡"UÐVü¶a½ü‡–Z0Ä3æ•›ëXrGiÞÞ®0ñ=§¦çŒ€œ@^@ª@–@Ð!C+äí>Ú­ÙD»+ø’£Öq !…œ´oÓV¦…œx«S†Ïbnèô±ï5M5ËÑõµ¬×“Dêš&»Ú HèüY´Aƒ7[;ú ¨ÑúНÊe7ïHA¸¬i’‹»E4È«6ȸ6M_‡éZ E”éž=ož‡Ä¼7r¤iÞˆ«Ù¦4¾ØÃàd¦¥A8dâ?ï¼ã!úþ”×l=îÁ¨iSeCYô5z lz}y[·‡ilÜCn¯éó{MÓÑSôí›ü¾Î“½Z˜žïܺ¿D–®L¡ciÙ×4½?v±#2ò8¦ÌÛc¶|íZ±voMÓEGVÑ tì9™.ñ'-H™]b–Ór1ìÕqNpØmèÑÓ¾î}%}Š× Þˆ°^.¬^}íµ ÈH9¬œƒèy3¶éO}ÅGè_è 29`ñ{ôøYJ,^€¶(Á_ÿ#ÛÔ ~›`ßsAÐ4¹¼†9gr€í41ò0………Œøt€‡F葇¢áï¼#ÉÈÒÄÉ“%é€Vaú´V Á_zIZãVfr9h—ŒV½¡iÒ-–û¬Ã=äz=¥mUZ5hð ÕBýD¤Õ`—skš–¬L¡;›•§B¯à‡. Ó‚e-ÛÚo“\¥Ayéñj‹5îð?Ÿ±®¯u5]_ûjËðhžžc„ádrD Á}¹2‰Ó܆‡”mÛ&‰ê4l”ù?=w’¾Y²ÁïëôïÕÒkxÑ„+©yã2tå—s'X¹þ(í=èÝPìȱ •™.m+sÅû‰Isv[†­X»›V®Ýí3G¾žKOÿ‹[ƒ‘cœò!G›¶ž Ú5Bç2ƒzD.VÞ,‹;O @ž‚ñ¾NÙŸ¾pŸç8±X~*’O(ö%ŽÀÚÌ—¿¹`Ë ÃIØû26Ö ƒGŽž¥í»N±¶‰0þþû"ý²*Õkœ½¿gÐñ´sÒ;=;¦däTÖÒ3þR·j’ÎÏ©™T1(§Z¬aDîL™aä¬NåW6òˆuê»Æ‚4íÙ—N×Ô)N¥KäÖaØÀÖm<.‰·` ›ÿÝAŠ¡J¨ÒÕñL ¶äl Ýè£.\ÈaŸ— &Q1b³Ì„sØ4j4Ùl=tFkÖ^òíR ÀåT°@,·#ާÏQzȈ:6#¤½nHS¹Ò…èÚZWQ/ `ñ÷Æíi´mÏ)g„€IS®‘&æ²5=¼–9{ö¹1 FÔt¼÷™•ÊÅÓ õKrÅF °pÿºÚ%ä¶m÷Iúuó!“F0žl§4MÜØ #ˆÀ'÷e“âéÊ+3¿K=z†Žû3ò^W-“˜§©[­Õ­^œ P½r!DZÒa¯rÃkš‚ñèz·ÓdozŽ ƒÁÈ%”-O·4É4%±{ï Ú³ï¤|{¯T¡Õ­•H‹—îóÄ-Z$¿\¿væÌßtæOû‹¸AÈ Êœòr†ˆ9g§‰ St¡\é8*’p¥ü².§rÃ#sH“1]ÓÄ`0þ@¦EKöf!4S.Ù¼¹«mŠ+t%mØ|Tj ®«_ŠÊ%%H’µbu Õ©UB,áÀ¯ëŽHâU½jqCšÛ›W”qt2æw·›Ký!œÂaªî¾ÀàËk¤I,LaK[[<ކ?¥²ÑF—¹ÈÎÁ`0œÇé3™oä% ™†'–(( ˆÎÆÍÇ$±úñç2¬rŬ6»@ª@†°8yN&éAª ©R¤*g]k?™nNSaÅŽV8T…CTáî8·ÑR8ÑE®«öõ<Œy!„„ù¯Ð¨q#y¸~DÌ9•fFÁi¯íæ;‹X¸ N/Á`0Þ"3o‘wÏâ˜jÃfh °)¾ “7¡ÔýNáDú`¯žôúС4zÌIH •¶èáÃ=ZƒØ@Û-Ѓ‚!^ ABú  IÊ¢… .‡Ò2Íš;Wæ5.nwPžî]ºÊ6䋲ՈTÂDÞ  ^ ¹Ì0ìשËíŽÛbÞù®Ï¶iT7™׫Â5Î`0ò49NÓ­ò;Ýã½Ú›žàžª\©Q†ù? Ô?²ëýïØ™ŽÈ ËNàøü›–a«Ön§Õbó…Xþ¬‘Á`0üx[e‹à ¯m1;ÇÆ-ÃàÙõþ\»ì™°÷vµ‚ë›Á`äq¤ŸÌdAn½œbº ëƒô/îÁ'ÕN´7+4BüÂc³ºmÙi:˜z\n ƒÁ ³Îazõu€5@/yɳPë°¶È Lˆ¿kß^n„¶µË)`ÊÚçÐeÓ÷eŠóÆo¼ñœÍÓ7›€¦Hm€ú²-óK´žEßX¤OøÍz# Ÿóã@ÝÔÀ£½{Ë|䉸Ê”Æðƒ9i›c2ãbFåd»øÛFìM7ŒQ¶dqj|MU*WŠ­3.á¦Ë×í`íoDõÕÁå@hÆ—E“„/ëŒÚ%#|Y§ŸëÛ»ü4ðS­>ýÇWmº†‹aw\v…­Ìðs˜³ú¶e<¹|9¹1œÁª›(íTºe8ˆÒ ×TãŠb˜$º\«äþòuÛ%²BR™2T©r%GÔ×ã«ëx[ZCÎ]ÇgŒ¿Òl[¿žÒOrô~shš’Ê&ÉÏþak À~‡N³Ä[»aƒ<òëáÐT!l+Á„šÞaBžút á3mo^žûMãòÅvm,!{{¹ýœÃ ÑéZŒ Ô©ÕT¶ÔU\I [¹‰š:ÿÓð3gNs%9<"Æäroh\ŸôòeÂ/ÈÏG‚é¤JÅ©RÄ Pö`¹kŸVMÿé&c>ŒÀãhT<Û±qaÇðVu^¿f%&L ¿™©W³"­Ý²Ç„ Ÿä rôÙµ~~éEŸ¼¡%FÖ!.[mã ÃÞøB±Ô ^Q*SªÅÇ]õÕ¿wÿÚwà mßá߇E}æ¿â –iF@€ìİ>?øÚQÇ1Úiš½äwêÒ6™òåÔµ #,0{éï–mÃÓs¹O™|LÏÙi£X'ÚåÆÅ©nÍ"y®*–/$·æ7%Òiçiæ‚úëoßfØÃåY÷ÑótòD*)Z’Î=-öR«öPý-›¬îÞHã?~ž^}g¶×x/?{'•*]‘òˆóœ»¦Ám9¾¿%‹¾¢}¢ =}+BÞ¡ì£V¥8º¶F%Ë—gžãý©çhãîÓ´qÏ™ Õ³Ušó¢¿øüÛTµBajv}Õ"Û÷ž¤VvTn˜3…¶´ûQ¢­…àÞ2ëÞ¡<%ı†ä*1ÈôêZ‘f,8D)¢Œî†þ1¹Fˆæ·wËBF©ÐIÇ‘”=T½Vcºç¾'=„ ÙBø¾=©U»GhݚŞø (­Û÷öäU¡RIÒòç/$ Úƒ‚t”.SI’?Í Rb_‘7¦Ê„¼—Šxˆƒk©<û¼E+×1½¿Vâúfa(?®%µ4îòwù׋T£væëµâ>¾<ÂSæsgÏPã¦wyêÊHàP÷×÷ÉäñaQ“>]žË ¿toŽw¾š–(z%unYŠòçQmGù’ùåÖöÆ«èÜ_iìœ:uæGëÙW’í{OÉ (^$•I,HW^ÁÚ§pƾCtüäù ©ŽXÓjM“½g;–l.7¦â˜0鿥hì¤}ó"‚M¨ën£ç^ä ðÜg´î×ï$YÁ>H–"!Ä¿" >Û6¯ðE&iš‰¸*-Â?ÑOj‹G‘¢‰ò:GRöRþsghþÌO²hrn„›?š&yêÀuŠ+)÷« ‚¤—Ų™’4É{Ù´ã1Ò{q½‹ØÁg¨n—ä ë—î¾­×m7éÖL’»ì·#´a{šßý>“¦ð›arÀì5MŒœ qÙqìxôÚÔ ÎžàäÎŒà…+Οÿ‹ŸÓ=»þ׳•Ѽ:U‹Q“ëJsµFš\[Š®*’–¬Lqdec˜ÎÃkºl:ìõ¨‘¼n\ÙN¢há"¦õüÛ¦t å(WÃ/@f ;f2U¸p® §_Uج|„2aŠ.T¯T”ŠÉoî_×!™a½9屬Oír™‹|ÿ¸‰œE|\œe]=g ýòë&®$†-@V 3VòÏ•äx§ÀÏ¢¶ ¸HQ[r…ŠÒœ:NOO—ÿÓ¦N Y=¨r0²ãÊ+,tÉ /— Ö;½v¹Ì®¢‰Ù®3l[õ*Õ(¾ü–õýó¯›éÝ1_Ó¤YßÓ~Ö<1 €L@6 #+9Ê'd,¹ª³ŽŸOgdÐÃ>(·ñbàÆ†ýæMš„¼pÍuk×Ê}”cÀ¿ÿšg;eSûO¸HQ‡»êÎvAb¦»I“"4öî-÷G!õvïÒ…-\(7„ãÀ?ÂAºéÚµi#Ã^:Tîã<â!@4ä þëpN‘9ĽE´Â)ÂqŒë#>þ×¾ºâb?ìLJd†ÇÞàÍvÚ%6TÕ¿kçNÙ©]S¿>%W©";ße?ýD¥J—¦|²JC'û¤(Ç·“KU¦5G–¡À-76¥­;¶Ñï÷[Æ9pø(}=û{–t†ß(R´Õ¿¶¡ãùN2…NŸ>M“4­†ñÙ™?w.}8j”|Î>Lqqqò‹—ýÀà矗çp¼^<ŸŒ'û<›ª/0>§ Hˆë ïÔ#G<çUÜÏ݃¦"o;w–ç??Þä®ÉÍ7çðYpÈÊÕ€rÜ b5jÄHé„W‘®FI'½··lI}{÷‘ç |&›6 ñA†ž8j¢¦ê®c§N‚¤MËâØ7]„÷¤èÐÁC2•G eRǃ‡ ñÄGÈ1Ò€4¾1ô5G/WøŒÌ.‹€ð–™<¡jòfg!¸ƒ¾ç¼h“¦Mé¹_ôœ{¢ÿ¬qFޤùóæÉΫ_ïˆA¸ŽˆŽsöüùÙH*ÕùªŽ÷ñ~ýäy¤Õ.œC§½ÞÝéÖù oä§Ê†ãv­[Óû"?œw5ªV—ÛÖ‚<íÿš‘cd©v½útÅW¥ÏÅóÓI’©“'ËgÛî]»èñŒàYÅylî½73xfð~ázB<‡ôìI³Ä3¤¤É¬^np„J']ÈÙÛo¼!Ë…ãóïì€è;Y¸¢C§Ž‚è¤Ñ‚Ð@k¥&ü¯Ý°!“¥§ÓµuëÑ̹s.%qN¥iߦ­ÈãcéV)C„;-‚0­\±’† .5MøWN†¡…©S„,\´9G™2§m¼†9å{Î[9´×ˆÎ o *ª³Åã Ñ™¶jÓFvpxƒU-:B%ÄÇ[)öA’òTù*u¾plìŒïlÕJv°(×â“Gý"L~Ö•"O²ÊH§C))”~:³³É¤íï XÚÙÈòý‰%Cr]<·x6<¤H{±À9<«ò9ÄÊHŒðüË<ÉrúÄ ¯¿õuéÔI¾X¡ŒºÖ)'Ýn@öÀwíۛ휮ñÙ1Æ1O˜tÉòÿ;‚€ #ÐæÄ tIûÓXž©J$EÏûJ“¤®™In2 —Nbü-“‚º6´IÆøêÚJîŠ&W.Ê Ãž¢É1ßsäÀtª³ÕÉɲ¤·ß|S’ÕÙêáj„ š%t|ÆŽ8øtÜ8ê*:}h½ íjåžßÅB||U¯–ç…;--VýºÊkœV··  þck³°IBô¥J•’Ï#4Cx^<#jº Ï8Žñì(íQrr²$T˜ŠG&Ð.ÓN×AMÓ±´³T¢X°xæ ¹QÚ;çÒi3'€|“Ü×µ{ípÁÁÔ3ް æL¡Õ4Ùõ+S·ù >c%WJ¦äÊÉÙÎ__·(]oÓ Þ2щªŽ:K¬1ÐãHµ¿xÕ;T%&©¥aH«È ÎcÚ¤ o¯ØÂðÎ['bÆsÆôê<¦ qNu¾þàÃ/ö°t2iÊuÒäëù/[2?ÝÛ2z?yWÓó§L‘„Í_¼õeö)ó«—Sú‰4¿óêÕ³‹ùKR¡+¨W‡êüÀG ¦.ÜC‡,HÓØq“‘…þ÷×á ÷#¿°vϵví&Z»Î÷—ë!3n‰NKŸ&³Šc\ç¤âd†óú:) ·êù×0Ï™¥9¹›ÂOxf2ÇïZŒÀ— }Áx¨ÞWýI‘~æo!:ò–7–¥š•Ù`¤b÷þS4ë‡ýŽÊ¯Øçÿú'Ó×)Ñ:µk^Éž•øKkÀ¼#to£v%¹vrQjÕ¤Wkà®[+Я[ŽÑ’U‡éÏxÔ õ“mÛŠ½Öãdai}±ÅFôp&KµAn&XÛ†§ R2ˆ®«Y‚~Ýü¥Ÿþ+竚Ârð޵ã€›Ž‘;cK^¸–þalV7 ²°ëàN–Èq=+[n¡zuQîùžSþßââ¥ûåçÍàr¤{—®Y\‘LŸ:Už7s_’S$W¨(òè±Ú뀤ÁÑo èÞ¥‹ÌOw3jÄê ò´²ž€©ˆS&¤É$MÖ…Þ}kE*_:Ž;$=~–¾ù~¯4á£Ú{¶/s¹íŽxÛ˜61rexò)—ŒÜ¬éÃÂ~r#Žq^,ïÃB7H8Mù¦3 G:XèWÞt‚æ-mP$ÓFŸ™}#Ó-âðâ—$ÑéÛ»$QzH„N(p˜æ6Ô‹sØ@`2ÉÌJy R»í4—Qp„‹ãE Ê û8§®U¿n]™/ÒÞÒ¤‰'L] ÿ*olÓ5cÁÈ ×Ãyä­Ê‰ø*Oüƒ|©ô(3þUœÌø#¥o:ù¨2Ë‹tÈK]yà8Ý!‡ÂF‘ùæŒÌèÛ}­*S¿îu˜0yAbñÔ§sMz }U¯ui÷ÙÎ;MʽÑZosñà½ÿÁŽ;ó„?*+é #ç Ý6ŒÒÈ™ÂÖ-[=r{ŠþTiŽð¯èbÐÀgä¿®iÒï#!!!‹C_¥1ƒ¿9Et0mÒ¢ŒÐ&5M:PN]»…îÇþ”;Xä:Æa;MU®æ/…ý…$™Võ*ÎÛi£X;fï‚5téo§Fto§ª3U-ˆ:JìC#¥Ôú•Å[+ÂÐIÂá/‚®ÅBÇl'_@ù¸ Gr²©r[ië±Â ”e‰ÉÔ†U{˜‘/«|ƒI¤rË$#äÇ8夠4$V–¶4R2…ÈV'ñìA†q|:.Î3U‡ççñìê/xéÁ³‹<”3oµN ¥‡{ö”ò¨wKRäzÏ-¹„ÖE_¤ðƒöüC‹¢¦°jˆøº&Äéy0ÓØ¨8ƼA¾ ÝJrkz£v˘òA:U=¤á @ÙSùª2âîY¿?\SÝÊ¢òQÀ/½¼ ’=ÝdÞxoêZ!âKlb6¼a÷Ù¶g´HzZã.P§_B¦ùp…g§1K"hðI=´” Gêk/¥‰UäõmŽõpÞi{FŒ`v¸ºQqèúø"M‘›ömÚJr"ƒu>‡äšŸ•ò+2¬%Âyµø['YX` â£y+ûO£Ç|œm¡8>áÇm|i§ÈššBÃ1¾àSd×6ü]Ï×t _0‘€/æpÝ`Ø„ŠZí·ˤL:¨vC›¢½ì¶G¦©‹!² ½‘f_„;œuIvMÙÄr7È`XÃH¡åô¦!Òɨ¾6ÊŒœZ¥3#«ŒÈ'[N@Ù0R_ÉÍœ;džAP-†ð¹=Húä^#* –øòƒÂA|@n°¯i†/Ð`_IÕ ¤Qƒ1þA°ôuGú‚ì<ÑÖµ·ÓïŒ:Ñ,m|éáʾ–"U Ã&_.bÑ=ÒB2IsÖ¯Ÿ8Pž‰†ÌÂ~–"îÏ-o—DDçf ârýpzsu!8ƒÒ^ƒÁpFÕ”k—×5M¾€Ïíuj) R³æÎ¥fMšŠüúËsfÄF}úo„c°ÔˤkÂò¦Œ„†—Ae£œL³BÓi´ü®l}!o$$% —7†õ!Èœ¾ð$I¹÷Q„>ÜØ®m7*¡¶ÓÏ Ã?Ùb7*Œð“×ݨ80`zsb†Ïõ1hÁ 6´-ĤkŒ2§g&Jm®¡J’$¨¿‡¤ašOåëè×Â50 BC€¦0Ð!žOÞãÖ.SÙ µÌX¡¬›8ë¤Z'Çv-¥ÃÀªnoKO§ ˆ²¥Ë¦·¼Gã™F¾ÐŒ:=ÕçmM“ËžÃ^;kšxðbäb¹c„çˆèØ‹ÔÉŒóT$>Ÿ­<¼ùm³ ñö¶ŽÍø‰¿QsTÓ`óÉNfùäìKÉpDnœìý°)Ãm ˆwO‡)`_¹½A[B¥“µFN奈 ´•Ê- H2d q•\({]ʽòPò¨ç©*”e­aa›,XJ —}“ ƒÁæPfÕÿßÌÔ¯{m®Ö(ÁŒ%û{×sòÑΖÞH¹NŠyI³‘@#¾Ùõ­ˆv°×¿åxM“ ŒcÉ)¸^ü««/ÌŸÁ'ÊäðW'3þ¢¡ýFí›_M×T+Ρ8òÇŸô¹ ÀçÿúÇ‹ìp Ïv¬?:ôÒ•'*ŸaÿÅݬ¾¸ ÑÕ'x—èßêÕ-A¥Š¤RW üùx2 ±ïP9þ'­ßž& SnÈ ÃézµWßö4MÜx¹£nJ´ëŒî;`ö€`´6†¬>i‡-!Äkep”™;dŠåŽ~oDÁ”K¬qZðóA®ç½Ð9+ßfF"d×{<¬0{óÍ,V—U~áIÒpåJD9©EÜiS¦H_váF´@”@ZÔ}))¾êËÌé¬"«º“_#ŒÎyÕu`ä û÷ëgé°6xÂ@ UÛ³En?änÔ¨,/'í¬¬6ç6P.½óWZ´@£“_#ˆp8÷Õù‚LêZ‡`¦`9FAVƒ?ä=¥¼ .1cð™áÄ€Žó¸_å2E'Y ±¨CcàV>!ƒ ê<Ò"ä D×U>þPÔ¡1Ê äΪ ŠÄ‚¸¢p.–ÄñT2ˆ2¢¬êœrj¬dþQv8#V޲U9¥–Óíë÷ð©›Àãü­ZÑsâ¥õ¦Èºzi@|Ü/^^ϰê7P'Ho$üè°)‡Ýþ5M^Âò_y9=zo *š‘ÛVM°•£³ç/ÐøowБãgÓ4q炾Ï!;M’¡QõÁ´9q‹ŽYÐÍÂ΂õ4480°ªrB+&I‹¨3 ¸7 :¨S v€´ˆ‹Áƒò^ït Fo‹  Îa°I@aà f}¹‚ôj¦êPM ¢94†l``×µuú€ŒÁº ‘ T¨7Èììùó³wlžÁXÔ® '€"¢ oº–E‘´ þÁõ¬Ê ×à‘×KDIiŽô:P6U^ÄSc½<ØIA:Ü¿^vܲØ@‘ÇÔ)S²¤C8diGå:A=MñQߨ¿Ý»vIçÓˆo¼òú¯;}Ž @všÌÓT(O½î®Æ#Y„£@¾Xê{_MZ²:EnNÈ ÷ iòâ°×¹5MÎ6h,t †Ñ-:E¼Å¢“Æ øÊ£|+1h¨NZ奴èHñf ò„xz\õ–©Þv‘74OH‡ëëÞëà Æ5[Æ©C}ð6jžô¸z=c@2¦3:ö­kþD¸Z næ08Ôï9Õ4ùBI·æÉCÜûȦ(­ˆ;ÈÙú/½ÎôuiúT1^ ×[œ$®>ŸYñ ÙÑh"ˆËÃ>(ëu²ƒçY=×x>Ÿè×Ï3/‰˜ ”÷ì)ï mr¸ì§Ÿ<¤dW=«ªÞ Ÿ õxƱ8ªMôëĹ_(¡ÊÙ ’³kšº¶®Ì£X¡yÃ2ôËúT:wþŸœkš˜3gTñêæÆw¥ÇT¾ö!Ÿ±ªÖ¼†ªÖÊÞaÞP·Ý(6FVüçË}ÙÎ=Ý£WŒ ¤ž£É‹²þǦå?Ì÷š¶c§²__·(]_¯¨W-“Õàoí ÚºvZQh9ÔE¾1à#ô)óKG©5ƒ·~^Ï×ÇyµÎ„C‘.«2èš?Ÿõ|ä,M1ÔsÙ’ùéÞ–¥Y-ðÖ—¿g;·zé\:q̲ڵף¦ç_{¼í<”sTTá&eüØqŽYN†UÝ—˜Sù ìºÏ1o0:4|öÍvS«àÇ~äˆÌ";ŒKxé¿kLÏo\»†6­]ã[ÓÄîzaù6¹ófFÁ*  «uvÐj§ª¤¶I«)3«ó¸¾¿e0N53B'›¡H£>ÂàuæÜ9Y¬+ƒ\ 2DîÃU\P(?_Ü~ãt/ôGøšƒË „Á%Îé~ÈÄ}]e)ǸŽ‘n‹Û=ò7v¬$9 sHày+_u+W¬ôä}K“&2-Âá†eK#TzºÝzàxí† )#®Ë ÿzµ;æÄr†G§ÊõÅ`D±¬æp®å›Ðør‡‘é„÷’68UEzlŸ>uš$> Y .ºFaˆÌ Ï2Õˆ¶ r¤òÆ9E¢@dô´‹.”ç@¬ ý¿Ò4)Ÿg ™qÆJâ•‘žá‰cÔp¡Ì¡4#Va)%NÌ­ñü\šÇ•£úŽå†aDœp3¹)“.g¿ž³‰:R»6m$)RSh_¬ü†ôÀ‘*4K ÐØ =HˆNft­‹Oˆ—Z"=ooêíd ×Uäy›½43§¦ƒM¬]ôgÜûå‹…àvVèó*~Fît<,wŒp”MW`C(âƒuLJûr£H N ·y5­­ ¼Û«i1h{ Á‰Áyä£<Ï#Ó`ÇÔ¼Î+/ö€îéÞìÚ¿mX/¯ r„óÈy AÐ0áº*OÝã½1oUvÄE¾zX$±&¿å†»¿²&Xw9er€‘koõ F¸Éd.hšt€dÜn G€ZËdD‚›™itMŽQƒcåuÞ8Mh¼6®iL§çôƵYfy{+{„q&Ö4…7g²ÝF9rØ{2ã·€GÓþâ±Þ‰1ˆëUrΗÚÚ‰öf™ í³h·¾/S ìk3Ãæ=§iÓîÓÜ nœûë"MZhþ9òš­é\A&ø~MšÅÛ@`2ɰƒ©ç¸,pòô…€åÒtÓ4. ìëP|±†¯ÎðµMõëÖ•Ó\NSjX;ä­˜Zcx×fdÛ’™àøJÈãmc ¼Þ¶Ë<¯úÞ6dc¾Í]þŸ“B§Nçm­ÓÜ_þ Q“÷Ó¹ Mëéû_ÓhúÒ£,±n¤¦ýE#¿ÞOGOþeZ_n ö)—:Ž8Ïkß¶™“öÉ så˜à«EG¬^SÜœù2×M’_‘}4fŒ4C ˆÌ³Êõ?Ȉ–‘dáX™é°^ʬ)B˜"k:QSf ™C¼inC­Š|aM®ð<=*;%3Ìš‚Ò>.›íâˆEð£'þ¢¿Íü$6¡P,•/™Ÿ ÇÅF}Ýï<ð§¼w»ØuðOzÇmø2¹lA*YìÊ<'¯þÕ™=Ã^‘÷7 Sèž–e¸cÐ0ci*íuc¥mztÇWQ­Êñy¾®VoM§Å¿žpT.Kaµ¸ZÙT‚Ý&…²†¯ä@XFùسþI}¥†E× ^ :XK„ð¾½{Ó‹C^’ûúu <ÓÅ5uã™:ùQö–Ôš$üÃ,¾Æ k›zæ!{bÖœ†×4…Kûä¤ÖcÉ•!ÈŽSg.ÐÆ=˜Aƒÿ·†úvª!ŸgFdâì¹ 4zêVJ9ö§cýs¦ÐŽ*.›µ›— ‚+œŸÚˆA¬ $-q’D™¶U†µiRN«9ËöÓÜeä¹ÿ>w“üüíŸMÚ÷:*.®±bcªØŽJ¤£n•bÔ§c yCyt«#HÐ2z$R8Î$S§éO1 "Ÿz"]½ªÅeÙv ’‡xÿj›Lo[]CS÷ I£¿Ú(÷ïjQ‘nn˜D=;Ö”çúŠ6O¾º0-øi?Õ®ZLñ8zê­eTF ª½„¼+’ÿR>¢ýǺÉV~!Ç]ÛV¥:B6ôÎü…÷WȰnwf K;yŽ>òž"wm!S/ÿ’òyãŽã2ƒy·;«Èrèù>?"Óký=â…£YÃK_,B~¿ò¼jc¦‰‘îçdúâ=t‹ˆ—vê<}*˜î"ϺZy€aŸ­£ƒÇÂû ¹ô–š‰÷¾Ì|«\.žn®_Š*—MÈÒŒ0|†¤Óš-Çhõæ?‚"7¬i íókר¿#&"Å`¡´JXW0üÉFbkœMƒä?b$Aa‚æê‹9»<çu4÷ 41’¼ˆ¯ŠoÔ~A…µm“òY*ÜÖH°¦)üRôŸç›d!!“æìȪ…í¾PcÔÓÀ‡êÓ!AžA ¡7Ÿº^êÛ^±BþC.^½šNb¢wCË ›/ˆ˜B«¦åé‘ç“"?E˜?ˆØ!!cŠô SÚ©sÙÂêP]±O¹Ú¸3ÍC¢º·­"5¨?¬¹d ûêø–¥%a‚ܪF»ÚÓ N;ÒQ™yïéÆÜà©ÿ˜ÛÛ¼vmY»Ò†¦‰í41Âöm ú$Sn»÷ŸòÇŠL 8«á1æù_š@À¾]lþÕ&ˆ6³‡Ij‘,ì4aùÆË× :YR9š¾xo„J¦³š&Lc>~oM^A¡-V¸5¬]BczýµO×úøˆ‡5Má3¶^ëö¦ç¸ù¹"Ý,wŒ0”É€V‚›Ÿ†Fé‰ûØä@¤ëß|¢!}5o7­Þ|Ì™þŒ»¿Ð²&»všì´ãöu+åÆ`„&ü߇\ Œˆî§»µªÌ•EèÖº2mÜ•fªqbΜI&nƒÁnGmÑû³nI9Ê…õmøƒƒóÞÁC†xµîÀ=á~¢Ér8Ö¥í2ùÒß±ÖÅšö>‹.÷Ï'iâ)ƒÁˆ èîQºwé*IÓ-MšÈc8Ð…/8*8äànë–-2N{á#n¤I’t½>t¨tÔ«HØÚ ä9ă뜿¶n=6ü]yqcÇÒtyÃgHº®NâP”­EËÛ¥Ï:ø¯CÊ‚0ÄAÞÈÃÌK”ŽÖ,ÀaÝ>ÄnT #\úc'0jÄH¹Å'ÄK²òÛ†Lƒ¶ $ã¡ ÉHÏç@N@H@’@‚@Rp¬|Ñá<â" ¤F‘,ä•\¡¢<5sî9Z¼p¡‡´µoÓV:üU¤G¥Óë>ëF!¯ '¿ sQ9ö†‘Ì0ìÕ«Ýú¶õõÜC÷ßEÿën®mFÈðÛúmôøÀa^ã,_4Ž+ŠR<öôÛ´vÃö\S2ôÐ?ÛTÈ´G€Ò)ŒÄš E¤¶kß^z°W¯,yð(„ëôíÝ[îÃaï;ÇS»6m$!R¤«QãF´H(Eš°2fF†pš*”O•ûQ7([®qåŠÌ0ìÖ«Mã–Ü0ŒÈn#Òä2çÂüâ!²‘•H &§$7©ùIQÄSgjš „Iç¡ýA:h­TþÈdH"ä‰8º $ Ú(!äÝBÄÁôž"H(ƒä-“*K‡Nh˜ cf÷ùº —rÃ`ðÚDzk M”—Ï1¼ßaÁc°\*Ô¬YÓk˜®¯ÑÁº%#@V¼-"7®52»¾·¼ÍÖ*á¼Y|fÛþã˹;©G›*üLúißíõþpóš&ƒÁˆºñ’æÄÚ‰öö•ÇŠÇè@êêßµ¶‰Û-†ø¸9q:ú§÷"¸ÌEö~ Fhû–IFdÊ¥•´šmþSpX{„…ÙØ°ÿhïÞ>Óa-â*`çäƒ|òS&ò g²Øœ‘};(HÀ3#WÑÀ+iβ’0.%Ô êu„ºò]§¾lr€Á¯ç †?2ˆÃ^D¹~ݺò 5}M’¬ÊüB-Ó7>÷Çæš!e>`劕”T6I.ÇtÎ’& ¶Êx5jÖëÔTÂß:T¦Ã"pLÉé_ÌXSS˜ÊCù‘‹ÌQN¤éiX¤É•s!ð'úŸçþ‘aβüŒühÛµÎuÅã·ÁG-B¨­Ìx[ƒ„0|¹† i@NÔWuÞ¤ˆ‹úú¦jÊÝ“<ùaá7L €¸)’¦›0BÙˆBмœ¡¬¸^ô-çþ,ÚÛè2Ï›“—ÍÅo!Þ²¼Õ[É%o¼…t³Ó_šn9È4@fÓhê³}L¹)#–êë·@ ò¡QSwʨ¦NÚ|™ PöŸ ¥RS¾°ƒÆ @ÞРå)-eˆd†œ6еcªÝåâ$ŒÐ«J}Éf4»8rø¥IñWN®Fqñ Ùâœ>AÉUªûÌo×ÎmO¥J'ù]–ófÐîÛé±~ϲ\æ¢ÜA£[H°—¤O—ÁÞÈÌè1KÍ4R˜šÃt˜2;/¿fk¤‘°Fò\f™Óp /H‹0e~f0=B†k©|0­2¥Ê£ nbJP™>@l0’ ͰûÀµ§MX´ôiŒÈs€X{™]¼È ÎìÈ[4Ëä‚y3iýº54|ħòähØ›/Ñ/˖ГæJ”X²ŒØ²ÖÃA´@¶$Éq*U®æ©³/Æ”%o…Ý»¶Ëë Ò_"g)´K„qàüÀ‡Åªþ|ù"¢ŒKš…);IF¨i6}_i}¬Ò)Káþ„§õk€8E3ŽŸ:–傟ÃzUŠyämÇþSt0õŒ©sáP¡Óm¨lÉB4uñ^¹P;p™=5¡+`­4o¼´)¶îeí›û±ó,OOJ÷tìN¯¼ø¤<÷ã>¢ý–û Y÷ß×FÆ«S¯üoÙìZ·v G<Ä7ËÛaAŒ* b…´øG^Ó¦L°ŒŸW7§§ç¦zµÈ4`!všiÊ¥é¹ÆuJÐÿž»‘žìV‹ÖïL“e\¾ñ(•M,Dÿj›œXU)Ÿ 7+âå-Ü_Lýnøj³‡0 eDYÊ?€·"ßÓs¶ó‰P!~vÀÃòÍ»d©2—ÞºÅ[ô£O<Ve¬{Mêñà£òxú5ôì“Óü%ëòð}ÞVw{>p5Üãî]Û„üVuO™_гpþ jѪ*—%g˜ט7´K¯@…ââ醛šK-S¡¸8q>Ý4>Ã9ÀÖÎŽýéôBÏzlk'ÂñþW›hçþðs £4_Å ç§×û^çÑ2­ÄéãéÛ=Ÿ[–‘d ç¡‘z²[m¤æ~A®n¨“(íBèä©“Ù·Æ­—G«ÈOÕò…=u¢Ž¡Y=xôŒŒƒ¸z¼Ì2æs½Dyy‚ÜunQ‘Öï8.Ë ø¯¶UdY¿˜³+äõiMS„v˜èì1˜ôxàÑl÷ôåçÑ¢ù3åtŒ=»¶Óí­ÚSŸÇŸqPÛéµ—ž”aØ6®ÿ•>3‰–ÿ¼„–/["‰Î·Ó¾¢»;v“ÿC†¾G74i.Ó"ü?Ã†Ðø‰se¾ƒžzD¼Å_GgÄ¥¦@†½ÿ©H76¬_#7”qTYU£ƒ‰ñÓÓâß×=Dò4ˆ/™‹æé"Ü:Èþ—ã?òÈÀF!#½{†ZÜÑNÞ»ªì?õÌ«ôDŸ.”z8ó2ªòQõ¤öËH9ùå§%Ržê ™Û³{õî;PNã´ã¸± PÆëäudÖ‡³õÍÄÀ«ä~Û&åä €ŽÞX²æ0}¿:ÅÖWn¡ -½ý‹Ü/ïrAr ”I<°! „I‘È "V LH’ÌÓMøýÅÇÓ·YKœÁƒìƒ¸©xøÇÊ€²a;~êœó„Éþš&—Ýü"HÖ¯]ã9.¤Ölˆ{Â3ì½O=žçž~DLT0Mžñc–µ!Š!ÄôhÙ^Æ7aŽ<:ä)¹_¨P¼§îÔu€ ‚ì „ çpݺõP÷.išT«2éåÀõ;·¿™æ~·Öë=Dƒ¾%ZeÒºÝßGnÞî[†‹ Ç%J–¡'qÂôdS‘®Úu¯“ûo ÿÄ“ö¶–íä¦cö¢ß<ûHÓÕ}mÄׯîѶµí²z(¢¡!hq€ÿ›³Sþ4m=Ú±º<@®sº 5ŒÀe‡8|³P=Û6§ç"·¹oäÈŠPÖ¥v½K52Óõ_}²ÜkûÝå¦Ã˜Náù§‘Ú#Äw™WäÝ•úd;"4à™W³äå«.‹²˜ÝCäv0Ñg§ið³}ä"ë‡ú<- ñÑÔú~Ñly®ÝÝÝhÓ†_å¹[ooÔrÜݺ½>ìc9Çð‡Ì³ª‰D5F„k¥°îè¬\èù%œú.Çç¤lNωúÄ›ïfú\2ÖUí:×ÑÌ¿rú#º}ËïÅ$M©‚%RùUbi¹ÝÛýÏýlܰF§f-î”Ò§žè&ÈTW)C{÷ì ±cÞ£×Þþˆj ²óÒ >òÜC½Ÿ–ÚÓQï½JnhF½ú<%óû@ß"×Õ­\¾”¾_<›>?“Výòƒ ÿnÑ,y=ä ¼ôÜ£4}îjOY;´iè¹Ö×ÆÐ¬o'ʸ˜ŠÆÿ™3§Å5_ñ\áG¦÷>œÝã?ÆŒ(âLêë73`‘;Ìø“ñ ºh}¶mNϹx(#Ô¯ô>õ›‘(“›éÙÇטûéùú«1tç]]é¾î½I÷ ó $8o·L/ö5Qiº¨M—# h.þ7oüÕ†uyo¿ö •Ä ¤æOAröìÚ!ãðþ«Ôì¶;=š&5³:½¨™(©X©* zé’aÂŽmf’³÷³jIq_ѪÁÊëÓsÊá ùizæ×Se R§å¾0Õ‚]}-Z¬Öؘ}ªÝœ)üåF­[ª[¥˜\ø¯ê@šÔ1 Ì`‘¸7R¥ˆ˜Êóùžõäâq|ù†ßX89À1¾âÓå`ø€ëeþƒGÿ¼õKO· M“ͯçxg„ú¥, ݨ {ýêùÈS’ÄÔªs-U¨X•V­Xší~°R3ù«Oä?â/Y<ÛôÞõ€c¤Û¼á7š:;s4RÏôë‘%>Ì_¨}õáƒúÈñ}] å:v4…ž}q¸œ^6oüMÞWÔ.@wQžö „ÁNŸr) 7õ5“ Š4)À¦ŽürkYÖOÙÀàŒÏá‘'¦z`à ŸõGË‹`¸Cÿú íôñ´mr_&}18l,TÁ`¦/@@˜¬¥gšAH¤æ J˯ä@˜‚ºà;mëÊ_Ï1"±ñ­ÝŒÄÙÎg^|W’•nÍñ¿üæGžûéÔõ¹aÿAJ°©°šµ¯•ûW•(%õtR  ¥Åëv]äup«9›ö¡åB8ˆ› ‡¦ ¶›*TÊ_ÏÛóV: Ó5ƱÔÚ³g»œ¬!ÊͳЬu÷ h  90jš”'³u.ÊС²X$*zd'üËhõ…Úí×§C5ú^X´6h‰Ð–¾,x#=Ú¤H×4)Q&:»5–Ð`m°AÆœn;mdk!8“&Fn NÑj§ .NjÖ¾ÎÖ}¬^±”öíÍ´¥R¡búzæ*Û÷®_Ç,>ˆ’± Þâ[áªÄ2r‹ä6ñGÑÄz÷Lw ŵýœS3|1˜Â½‡Tß».bü’Ù‘žpƒnüÒ ÊÚí ëÜ:!6ËC?VÇŠ`)b¬“m+h¸ì¬£ Nû8ä°7/t†ŒÈë^.桼®Ñ-rËK÷Ì_øÄF¹ÜPV¢}*Gi GM÷(7Þ-F½ªÅ³œÃÀ„):’“Ó)33-£"á‘`ÜÕ¦&MŒM.ßk–X&á(—Ñh|iÌâ(ëÎVÚ å-ze‡;,od,È’M7*ö2âg„›ð²L2xàc0¡=Çï×z/`²Œ\‘I&NŒ ôgŒÈx¶ÙN#|å—xzŽfrI샨ì°ÜDómß"8PŒ’&WTZgD¿\2–£2#âÛ(¦p©[¹) ƒÁ`0| –ç8 ƒÁ`0l&¦L ƒÁ`06HO´2 ƒÁ`Ø!MÌ™ ƒÁ`0|“&þ ’Á`0 ÃibÎÄ`0 ƒÁ`0 ƒÁ`0 ƒÁ`0 ƒÁ`0Â1v"5é>ñeñ÷ WƒÁÈ«X6¡k ׃‘·k'ÒÅ¿ÏrM1 ƒÁ`Òä ÿ\8Ç5Å`0 ƒI“/\dÒÄ`0 ƒI“ Òô÷y®)ƒÁ`0Lš|’¦ Lš ƒÁ`0iò‰.üÅ5fˆËOÍoªIeJ•ÇÛw¦%?oɧÁ5åÆés2\O[-¹´ÜO9rRþ—)UÄ“âãá||\Óxâ!>°fÝÞ,×7ÆÕ{¸T–´}÷á,e 5Úßq-Ý%¶ ~£™bc0 CÁÖ'´µšd“a‚$A’¦|ö$%Ä ï~ÚD_NùI’™ÇzÞNÕ«$Ѷ)Ôé¡÷eÜM?¾ëI÷í¼Õ4ø­Érÿ—9CezàãŠmÝÚ¤zóAynð[_K4èßwQzÆYºã¾7%éÁ5ëÙÒ“ç÷¾I‡ѹ¿sW¡öÍÏd¹~Ï~£iõº=YîcÁ×ÏSRébžë(Ã]­È{Òã7¬_9“TN“×3ÂWxNÐðšJ4nT_Z½v7õìÿ `ÆæŸ†³É#榉§ç¯=×Yž?›Gÿ›Â¢¥¿Ñçþ›®¿¶ =úÀ­Y¾™³’îiÛˆ¦üA÷´¹^ ?¹:(ã^¼øl_¤¿¾åVZ<íezýùûdºÿûz)½5rº'ÄVý¶S·ÿŽ' “º†™¼\üçB¶s‡—y€„a;$Ϫµ;é­ÓÜaÅiúøgEL½ðÆ™fìÈ>òü ÈQš,+ðÖˆéò~ºu¼QÜÛYyï[%ÃjÜØOþ?þPkzBlªÞ®¯_…>ÿï¿eØÖeºoæ®’eÒãAó@Æzp~å‚·E;¤{xG^eAÙZt|EÞ ƒÁ`0ò,iâé¹pˆÈNÃk*gi—ø¸‚RÓ8x4KØ´Y?ÓCǨ_ï;)=ãOj~×`úß»Ê0—$M™qïjÕT…Ý׌.ùM¤ž¸òßå¢öÝß %3^§çûw QcfË8—HSVyù矿³ëñè<ûÕ«”¥F×U¥?r§ uèƒOfËó ‡SŽÓýoqßûq¹•JLðLý!Êýå«·XÊ®§ìîûE™€•¿î ûû¾ç‰2èñPw™„ó8úx†'Þ]=pÿoÐo=$ï„iЫŸÓþGXH #/“¦ LšÂ‡|"HQ*õônÚ±*ëtQŸ§> EK×f#-#>š.7—ë¢G{„ö=ñªY­<›°^ûÏ$*[ú*úqÎ;ôåGO R²ˆ^>Ñ£iBÚ'OÒ5·<áɯÑuÕ,åyè)ÈGÿ>wyH IÙ2Å%aÛ²}?}öÅ|J?ý'Ývs]Y&§-ÛȯX³•Þ=]†K¢Õ¶±Ì£fµr²¬ÈÅšmÔ¸Aõlu¤îW‘&Ü‹^^u*ž"A uß~ñ‚,ãÍw>K¿8Lϼü½ûêC¢ì7ÐÔ™ËhÊŒX@ #Šak޾|í‰Á0 WVôò ´yÛïÔ¦ó‹\!QŽý›&ðš&#ÃæôÜß\S †ŸŒŸ%7ƒÁ`0iÒHOÏ1 ƒÁ`ÒäþfMƒÁ`0 &M>Áš&ƒÁ`0Lšì&Ö41 ƒÁÈãøN:JEWÁ•IEND®B`‚rampartc-src-1.3.0/xdocs/docs/files/rampart_simple_archi.png0000644000076500007650000013017311202453376024040 0ustar shankarshankar‰PNG  IHDR{fûq Ø pHYs  šœgAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<¯øIDATxÚÜY lEþ÷®íQh¥´ ×Þc÷n™½½îîíÝí⇓ü7³;ßÌþß|ÿ™UÕ ’¶ÈpÐX k7ìPÜGæ¨ATm­E¹Œ;t DÇëaWi ‹7!&6¬ÝÝ0uZ®êg¨R º¾Ã_ïµíí=ÙüŬ)ÉTlÈÒ úxê|e«rh?£c·Ú³»î9¡¦ê$ŒË™ _gi7ûPV³` ˆLÎHÝØÎ\4³QQZ8|`;äL-ˆ 9ZŠš[²ÃE± ‹Ôp»§'÷‡ eÊ7”bÔ(àpºdA11 C ¼óþN’ûÃΘ˜ða§.XTᔄF´Ð.‘=F%ÇBd„¼åZ’cKÖß,aÇÕâ°LBÀíµY“’àf[/ܳ:9Q8öÃ^’cë¶Ò§µQ’ÔâhÆÐ"¤ x—ÔºÛÀ¢(gÑOâàhÐé´ ÑP$Ç©³ËxÄEkáZ¡”&% q÷5’âûAwí%0:-YØþÙ>n“ê§…7­„Æ$£pºv£[‘cþæ™?ãR5¸P°ö2`µa£Iþkµ.7´Ãå«íð²ÊÚ6®¾—&˜ä¼\hìß·/hÍÊ Bþb¿¸0ƒäâŒáXc§ðÈs |½ë]>2 ¦Ì,†Îv ˜®]†»m0yÆB¢þadœX¼d‰ÌÆÄ=£¾¾æÌ&å‘)©ðí¡ƒ¤<1'G„óB_kûBhÄð”M×M-[ÖÖ>À…Ðü¥“r"#2óÉý¤¡"´^g®µ4û”½¡áy†^¯÷©“Ãáz&=®6vˆêcc¢ÐBâô*P!œ8nšsŠñrãFrßlúÛÛÁ’G#pýóC ¶‘¼«ˆœ’sP8‰¢‘?äÍýMâý£|”Èxvœ­¼Á@£†Û¶¹Fë—eÖ=5^ù¯oö–(ÂÕN,¾ÿGýGƒ>¼ÓRç…8¬ÀÄ Ip¾ºUTŸ5 NŸ3I–QËä¼ÝΈT £í!lŸB#’Ÿ€;hIU¼Œ2nU8†aÁø]É¥ ßÓHYó¦ÕRÐãpA/2ZÒìN7ZÚÜ$6¨süE#3ßîõ¶Q«€VÀP”Ir¡}úE5É5RÖB‹F›Vñ쑲˜:v©⃥“•­ê@N~°ãwE ô$‰Wm;ÿpù Ó®õ/R%ŸœUþBãr‡•ÿŠvbÝ&SaG@ÉYmdÍh)M5k + sÓ)&ȧ^y÷EKç„ç+~ÀÅ+Üú¯´mÔâý =ÛÜ¡8®‘KöH,w,Þ?—røÃœPb<м]¨ªò–ñ9^(³°ÍŠåË fZn.Ì)( í>ܺ•Ü“âñ=¬>‰b NBÕúBÈÐDû€]ðº'= Ëí’×Ã=ee>ü‚ò^I‰ßþ…j­Y·Î§ï`ßRù9@þ\³9ÕMJŒWÓF žÇ)R…Ð]¹ §Ïcƒ}ƒåwâýˆÄb;:ÂÎ[wBõŽ©¶<írÃÿ:‰oå?·„Õ?ˆs¦§äÈV!KGoÞ㦀„€í¾;*ž“&³~»h~tÚîÚﻣßÔ=þ€[ói«Šø¡•1Ú"lÌYWt2*ÝDaÆ`Ð?,ÎD?i–ÿEÙý0cXb¶D£!Q™û@¢LÌ¶Äø'ÙЄ96müƒ“µLþˆSÚÑM5–Òâ°Ðç;·½¯÷ݾ÷ú^[jç ·´ï÷Þ¹çžwßyçü âO„Ö©÷ÚìYÝÀùhÚ„Š#áò €ÏªÌð‘·¾*Ýšô€öƒ-»wWüç}îé'Ä ÄN0š7îÝóÄKwí~s>*üzóvaòùÂÑûŸé,8W¶°Œ6¯Û5ql×®îeY÷sÙ††<‚Ó¹¹Hcp4&ðŠýa±“ôò…©™ÌØ \îÁ>ñÓ [·xcí 6²yˆ-·7ÃÁ®£Òo y°ß¥ì'ÕÞZ)=dÊÏñvÇ^xñeuwFÈC©!ì!壸WM‡cuÑððŒ ¸ÖGs…Ãsä|ûÈ÷]0-ΚÄ,ÿz\9@ctXRÈ•²ùS™åÏŽå–o°˜‚²ß³ VcI«°üÁÙt红Ï\2fù¦M§¾tùI ÔÒX £¾°®‹þ¶f5øE…X¬@ÄñaïïDñ ‚¡Xo·B>šRº­Èë8>íó’Q•›-€ G¾à'½‚nË«áPÜ÷êokÔ”Ëu»kΆ.pañ‘A°Ù7ÂʲrU¹\ƒQ#n×ón±’šÖähØÜó‘9lTW•Âõ|?œ,Òmo¹1­%ñüzåÔ|~Q]ùäŽZ[95Py4âënÖˆDɾjq“ý/2Fa¥E…užÙ¦hùš5+Eÿ‘X‡Ue×ÄÝÇ_eþš]ö5;*ÁåžÖ©”1PC0byêËsóQ @«*Jå7ð|DÂ~ú9`¾à¦)ÀÊ+¤CØ\É{M?M‹ãt=ûÈFè>á“ÕvÐH†Åð»š;`^³§·WÓmh¾“M9R¹Ë£'„E×M4Žôœ—)&$*Ò§¿8L  üÙÐôÜ´ÁIv *pI­0Šóþª4:INEùàì‚ä6VÑúvÑú>,:×Õ[H9F`ªçøqGëcÉ*;3’ü3h …BÐè$%Blª¯³Ù,lc-î÷ûÁf³IrE ip¬†sÃ3’ÛÜwú¿‰c5¨8½Q\žiqU‰IŠ_œ8Ç>Ø/»àZ»¶í|M̵&¹B¨h:(M}:øŽl TŽºÍYÏe™åëj+¡¯‚(ïfÃMìK‰ƒp–ê:ØÑþ‰ìÀ©ˆ\a˜b}Ñд7›þfåè͹wO3tv ȶ‘ 2½YɈJo»ÛÝ'½©@†ò}®Üd¸Ä¯WΔ€0.øCÿß:ôC|5âGŒýóÓ>Ø÷”3ƈÆ;žAŒ²ëJ– ÄÀNsôëmf™ÅiW1:Þ÷ÐB­ñF×Ç#9µ½@ØõX>È[R÷jc@ž·¼žó*åNÙm¨¼ô& P‘o˜âX\Õ ÅU Qd PØ×­‚ÇŠÇ÷ŒƒïRö·ÅS᯿;˜?å3'ð˜Ñ÷¶ôm^,ÿ¯ì PUô<Dà!µŸ5""a¥i™–#ù!M²I²Ìèãdf:Ù¿Éþfåø×T$4'«±¬„$µ„Šú˜IJüD ÇøäS>ïÃkÏÝw÷Ý]v—}]BåÌœÙÝ»gϽ{î¹gïž=÷¬ . ¨Ù8牪jX P B7@ÏÄë9ÖÎo#4g}}¡ØÏɽ£›Iþˆ+’"¹é|%ä—ùÃKkLÝ—+.ªæ”È@alFm¶¾îô¶Zá³ÚCpÌòÌ4n¯v/.jŠÿÐ@ðÍå£%ƒü þ÷”bz*ì L‚ˆ¡¤Î^Ìœ›ŠeÕ%Å$@†bEâtgõ¢Yά),î– À|§KнÏÕ{é¡t¢òxØ®ØàÜœ±9 BCÃC¿Ï/%m}CT·?–nÙ2×þŠ´Œ/G¹Š¼ ¤§­û~ÚêÜù µºXmfBsËËêTe9(\•FÑ®•–×w¹…dãn 9 }Ó6Øš¾¾É+!e¸ei¤åe¥EPÎám“’ùÊñRƒ¨È0ÓEÿ¨ÊhHLUEá-ízÂG˜—:Ò¶nƒf{L=²¿/ù_Ú14*ÌTX¨R×O•FÑìØZ»¤ìayZ&X¬ šLFÁ÷MU›¿ÎïÛýL›z+dgeÂãï5´-Z¾]©Ñ¨¿k?¬ÞÞ˜ [¶me›¾ m h€Ýû~†1·%Ãwù0|ܽ†ßƒM÷75eá{˜ì†Øðœm™eŠïöEôsH/]o~´YB;Oží ÃFŽ#ÇÑqÃ=n¿wšßÚ!Eáô0¾oÁ_N ð¢÷͸vä &ǘ½*qTÿóêÅÅ0ÍÿîÐ)TÇÇáVø™Ÿ¬__3þ.¯yve¸ùš¾&»Í·{£ù6»g3ØÏü]ÁV¾9¢b &v˜Pæ Ï VóµöŽïuÿZ¡¶¡YÈföôËkaí»Ï@dÔí•—Aíé8Y§žW%<ÄFÄFtH0¥Õ(û“ú8ò]„½ûÀß#|«Šð“F_åU>ZídÙú÷ð·Ù™45¶F 2 enŽèg2AÿˆSUQÓ(Ë¿£‚'/A—›áè±uÕt©Lì„o÷Jóeæ§× ƒ3*â>9]‘?¸émö’°ÚaÃÛ\OrŸ¹öIX-wMH°UY 1 -6‡¡üìv‡á{3Ï—<(fN¹?Õù¥¨ÐɖþáœÙá ÒÖ½åÅðÐܧ``d´ÀãŸúf&¢ß9Íuˆ™1ugmº ߦóD_ÊOË—L5µ¼¼òøB¥^F“òUnµHØ@£{]p¸¸F%ô#ÑŽ‹ž}ATI?®cví¯b®Ñ@ˆKê;]ó1Ƈ`,«\:8uÍ×ÁìHOìÓË#†FÀ‘²·™Qà×y'h‰˜Fn´“N~ç×¢Z°jPTLø±oÏ^"$Læ!J¡!ZÖWÐ<ħ"x9~ž ?6† ;âúlI5×>ßÁuÂJwEî^.8|Š©h´4žA¢Na;ä£÷žÎÝ=gi›dGR«O›Æ£€Ùd#l²¥”1r÷ ÜK~>‰¥GÀ "ËéÓ0sFŠpcí‘f6ÇãïÅ«”5NjÙnHÿU‘¦¨¸"Â{ eôn1„=Tꢘš<˜,À,Ž<Ú´;{Bö§ëa颉BžMÄwžžDro&ÝÿT+„¤Y¯ó×4ÛÝ|šyZ,?ÕËd¿ñêkdK£­p‹¦BaEÉ݃h&Å43x-Ž<ž¿à øò«,"hþxl¨+jÏ)®Ùô A¶LJƒš?eR”p¬øºÿææßÄo£ÎV±¦‚{øØ]®¤ámL®xŠ» Ëx›ÿ\êÕºØü%釽â§dû)?„çŒ7-_÷£ £™wÅBß>°býO͹ÃE4JÜ1.Û/üåÁ*3Eâç¹n^j`ÙÑ0Â89>ÞS¡ûlÇj÷nª©dû¥üØàâ-Éçí%/š7Þ]S zàæj±—8N^|0ž[ó³xžòQQ'HÒÂÌþðAV™!ó|«Îóü66_ƒçTJóÖJw°Úk±.ÞpøkŸ1”¸mí.ÄL ~¡èd?ù¦Ë!¸W‚ruèé{1‚ŸÍ®žç™¢”&%9‚ýäs¡‹‡X«*®þø(éг“¢à–ëÚúPpкgG‰h÷œPå½`Y~‡…<ŒâÇf‡UC)M}C3ÔÖ7ɇUwÄ«¹%‹Ïúa’<Â1P÷±¥ž‡ßysMgòóÆììÈ,Ñæ^àÌÄXèUphp/8^8ÖnŠ¿8§[¼Ê°žäv ·kðíìg—Û"àR¬nÐ×ìhÖüf—ðKjHÃ×nw¯ÌÕ»Ž'ÏÂçßVêΟm³nŽ5—ö“|Û‚æ·«ùFòÇ•;Fð—òÔÅì É¡In;ËìÉŸ¬ù2€¿”§–?±©Ñ°óü ‘Ù‘änVÌwB—&ÊeÖ–5k.þíÕá ºÔ±=þ˜‡=˜”']^‰åZÚìé<_Š‚ð9íŸÆVÔbµd®¨eÀæk‘&×PÊŸ­ƒõR*ñGÄúåVëº}€NYþÒzrøAðbRŸîc¹–6£V«a{4>Êšé]¼~ãHž>øÂ©æ ~ºcÙšCBH'Ñrª±JüÙ:¤Ç ™fW§éލO~ïž=¢º¨Í—ãÏÖƒ¼q1Eú[)¶Íxjmî¨æ iriÿ+‚}“ÑôqOLŽY ¡]éâ_6”܈ãÏ^#½ÏÉyÙöˆl¾Ê:_ä%­‹~ £åZÚìÐ0Õt´7Õd…κŒ#ùãˆ7‚¿”§­UÃôV /YtÖ#Tdã{ùÎ'³ Y1º£øwt¶ÃN5ïgO4ÚÎó ú:€–HèΈ–î/@ñîöÌÒî.S”¤¨‡»+úvjj›:õfÌŠƒ[ 5Ñh¡=@Yøõ+ü½ù'HóUa1}à $'¥Ù•[I¶Wö7ñ?-ç¬ð‡Î£KòºÍŽ è‘4ï?Ø»ð(Š,üB&„ƒp!É ÑÕ¸B ®â&²¢\"ë±*ŸA.E$ŸÀ ñÀCx@]ðs% ( $!1†#¸IÈELÉLo¿š©žêšîIÏLÏÄ)-zºRýªúÕëW¯ª_ÿÏ÷?Ý’°D-!.4®D/ÑUò[[B†VÖeLu †ºF¨0vƒâ}§!î¢\m½o¨†d¿p( ‡¤Ù1PÒöäaÄuÉQ÷,Øíc¾éË”'²ã—$˜~» {Må9æj8×>ŠjKá§²ãзM(ü9vÜXVýëm뛆 L»‚ûÂ#¦¬­òI¾BB¸Ë•P§”©ÔRS(Sxt„"…(SMÕ1(ß  ºy¥r»þ½¼l!¤± ÃøM,-)Æ¿‘÷Nˆ¿1t½x~ûðþ™¿×\„ˆˆ(Hßb!·ã«Ïaْ瀿FMhM&!³)ÁvTG™ùÍèèéi)ðÚ[«eýë&2ïªnQ¤ìŸ“§“cÍÅj8{Ö(AvaìDú›^»m§ÅäD°¢¢ÿ‘Œï¬_eWÏQ2»YGMò›eZ± ¾+HÿÒ–Î…9ó—Ã3ó—Iý}Hd~vÖ˜3ýaç‘–§Ìx^úÇ»nO„-;ËbD¦­Ú ç‹‹Î[Ö§ß u¨ùŽê(êü抯†Ý¥£ fMMeo¤«Ö óìïꎄoŽðÓ_­©:mÔ$¿9fT˜PõL4†”!È]Ž(í˜ñwPHüšçÑ~H|2™U³–:ŠjÇ,4O½s}Â@n‡Ò½qó&ø,}5|ôåO’¤oßÞ›$N °eëç0|äxöÇ#:ßÜÌ—.íCÙ•"ÓC {g30a ¡¿¾|èíã=~îêü5áÊŒÎúp‚ X^oA¤eSžYIʼ‘šäŒïäWp¦J8ñ›Ü¿1¤½÷÷S^E†§˜ànøb—%_wA=ìüÍÛ „ý¹öKËD¡,<{"ã¡Qqáû•W¶¦­ÏH¾ 10ˆ! ¦ƒˆèX˜öüÛl•ÊÖæçïJÌìOvœ’Zyiíwp*?üýmdJÊ뼋»EK¾+ 14iZóò,ÂüëmÛ~~­ïu±Gt¾+à£jeËæ•wÛ-¥[ ¨)šâQÐ ù‚Ó:ß… —U1Ï\ ³''Áë›ö0’ïÝ?œÎwÅÚaƒËnXµ€ ʲe~â¦VÆ|èüF'A/ ¢¾7l:¿®ö" yŸ¬ %ߺ#E¸Ì”oëF ‚€ì:\¢»ä·Q»@Kî ×ö…¸¨`"å4/ZñäeËÊPéM쪉®»ÌÂë)-ËÙÕ Û?VªÕ²–:ÊÌw°GsB\8´%ž€‰ÿé·æÇï»n:JV†ÖÎ)c ôî ±Q!švݳD,´nˆÕ'˜P¬(`|ÿÜe¾Á꺘0 4/ƒ±f`&Ü%+7C­¨zØ2üEÁ±±þßoê_ï;ëq3P¯ Zü®ç‹gÞd9¸àšèPtÇš²Ö΂ÙÇÛÊMM? ((­xÌ#oŽ„/÷yÔtâ>ÒáùbÒð5¢Éì$ÞŽXC\dˆñJ,;¹~òõ!»kQíH’oeÈÁŸKÉÆ[%nÒëœè=èe_á;ž/^³óÇéYÇÊT¡|CÚ8ì„EòMvpþàû_¢©iA°ï§gì|¿?§DbÊ @xX TwþÓ‘ãÒWÖKe!íDÉ7ËŒÒ’Ø ¾=Xì!/è6˜v:_mGu4©Ñ·FÃáce² Œ‡b70{;Ë_ÛhGsç^#@·CŸµl£Î]Q;ˆµ€ZÕŽ»®Ä1+˜µ¢øhaÜeQrɱÁLð„QàÏóOWB÷®Alå°Ð¨¨®'ØÉ—¬°ˆóNŽäZù­dG»;ábv$œ—ô·#µ£·/IþÉ3…gÔÔ2Ž×ñJª¥Tæµ¹‚2gpß®°;ë¼C†R ê‰“'”“‹ÕU¡wµ¨ù/,$HäQÑÑ0»ÈhtNí8!ùÝ‚aäm±ðÎû¹Î™šÄ“g˜†²`å²£•`CE«§)©ŠŽ"ø;ZG wv2¤ðxl žJ¾«Ì?{®6¼wÄ^ç#¾XðóX.ë6b¥(˜—‹gZàVF?0êëj–>+hÝ"cáàž-ðà“+ ²ü<¬^òÌ}e‡l(ݳ%µvíò‰BÌPiwl€ÒbûCÑÁŸ3‡œ#VÏééÜ A:°ÿ€t mˆïŸ^‹¬BÊxËdÅI>ÁTÁ¨·˜¦ÚÀØGÂÉüÛ&UƒmÆB»ãbD ‘^À'd2Ð~€±ÍHtÓ è×§QWÚ„Ì·0Û „tª5Äña1y,®ºä«/ÐÂüL<¢¸;üãÕÐhRÔÙ³—}¥Šÿéºy0á±—dõ§/ÙnQa *©ûUíÅvå_œ#¾ZÞñ<)€±¤Ò^†»'L˜†RŠ £ÒJ%նµÑã);7׎!´Ž‘Óÿf%µÃÍ'«7d©ššúYp¦eŸ³·vXÀ#³hR±Ö`µP¬JƒÕryõ¹;ÉñtÁÉrA+fÌÄ¥ŠõmG“¬¼ê÷©=iITÃGÜF¢: ¾?ánb R: bÔ Âxd:«†$Z‚òÄÍÎJ^Ñâ$̯Tùþ±FP²ØlV— mQÐL™Ÿ){d9 6²:mäÌKë€`ú÷ÂÑd¯ËϜȕþ~ÙÊàß}kRÇJf)a|£%t¯DK‰†Ã´"-ÄHAŒúÏQ°ðb(©JºŸÒT,ý̽ߦÓAÈ;~\²õ•&r¢v¸þá€`îܱ9N{銋ûS˜][ºn/è&ùöÛ $€’5c šCÙÅÒ9_çèñRR‡½Æ J½ŸÒ+8Åw™âcSK·T"ÿ¨G²7<^yj ,YŸã¡7Yfßd v|11Ä1M‡Ð@¨ºxI±N¡±Z¬Æ©ý|šÚú“`’îÞ2þÅ·³ÁSɶŸ¯ß›,ž/¬UsCüUðóñR§^¦¸ä½d€è®í]¾‘»’c`Ñš,Uú-Eí°}Î9ZCÿã°Î¼§þªhç;Å|̪.ÁؤNÝÀâ”þ$zÐŽiëÉüô'u¡ÇöYÉÚÁüͮӪÖæ7Þ>$;wËoç??‰ùÔ!$€0V)aL¬ûnëEê-õ»ºî†VÂë)­ÒÊKn3qó­^ =_8ç˜1e€¬ŽK®#|ª©m„ÔµÙ2÷@Ib~0ºtÃÓWü¨›þד¯Š´ÖY´|¯¶×ˆÍõkÄæ–<òÝÇ{í;uÔ>ŽHö±Ö sÖÍ—)ò}éy·ìö±ö 1ÿƒ¯Oúƒôà±~ZçFM~;lœ,=ضnÉw¯+ùéFóµ1ß]ÉW ÁÍ2Àõ]tïô¡ce^£¯WèŸ_X¥¯ÎW ÁÍ2?1^æì?Râ5úzµñ¨Ð•ùôM–l?ß!±¯}½Ú@íÁÓã÷vø7[MÕqÊ?_¯Ôéãþ(OW—â¬Ñ‚’XµÃQ×9^¤ß¨£äóô°L-k©CÝ“XÝïiS³%ÒG«…§kÒ`í8ªC·”Se˜LRv”ÐõŽu@ÒµÓ›ôÕÚ@šHŸOª/ñ:GÏ]/Ðq OKŽ eG šØ›Ñ.™Þ£ï¨ t;Dï7ÖyêÁûÿ¡"ù`GÏ™ý|¥Œj'“]`Y$GÛc«,²iɼòô)Ý/¼`}ª^—•+̸vtÙÏWT;WÌU¼µÀ†¥‰ÞëŽ5ÂÓGgW¥x¸ªû+ê*…F¥×ð>™ü`¨3Q°£‡ú\-k©ÓÆk¤ÈX$ë<«Õ˜Æ« %úÔ˘êxüò„ÕýJmb_h[-Ö¶‘2e ùÐl]Ú.›Ù{R´v¿K>k©£bç+?+3fÍ$Žªè=ŒŽbÍ»PÓs>80_O>XδtmÚ:(ZYlüW‡ôoTýðý!’¯³Î7X£@Ë”xƒ‡W -‘>±óõþÔúQÄ8-®žËoÑ׫ *ù,=µ¬¥Jþ#âôÓ¢3õcNË£/(Ðu{…+2~Ú'ùÚLM‚5¤’µÔAɬ ­MRç™w_-5>¹7ÚÐãn&xÞj¡µ$=œ¦zò…—Í>æk“|}êø’/ý±’"Àñöo wùX£žFï©K¸VŽšú†d‹=Ÿ”™_ÛàãÌc~]£W;Û# âc;Âö]gÔõ!–o´ÛúCuÍe i Ÿí<Õ™ï]ÉïsM' û1‘!P\VÓ¸ê/› <Ôš·dmt„vm-–Ñ¥½×ûéæ×{WòWšG _êD†'\×R×dÁ°AQpº¨ZêÏ÷YŰ/ç<)ÿï"è ¡¡má\imë²v¦-ßç[8HoνÅÏc’oò9){%ý_ö®,Šc[EdGQ@DÅ Ä &hÜ5ƼxcŒ&&úLr—¬nI^Ìv5&Æ«‰ÛÕ$Þ\ãã¯QÜ…ˆ,FP@@Q@e•e†éW§fzè™éž™ž`†ôù¾óU×ÒÕ§ºÿ:}ªºú”t þ:T¸y^_§=£OíMËe|:Åvp¾]QiaÝ(¼KÔû¹JpuP€7Å… x´oLµœœHCÞÁÝ\¡E;'¸r¬ºÖAMQÜïÙGgph× |{tN~XÙr]ÄÐ;$àKÔhtç?®(ÍÎ[éæJ^'ä—P >‰†m§K­} rÑspã“êã 5uµ]‘å²JÊe²Gÿ¨ÚÙ9A_{hãì­ú¶€ÉÏÍ_YØW(WägeÛAH0³ßo$àKÔœ©þo È.UB–»;´’ËÁ³¶\ëêh<ÞUiMåVàÞƒk¥Ê!ì‡Ö0Ä#+ZÁ#žðÔý[éä²ÖΜªGFBË“‰¥¨¤@÷’ÉÀ9ÆjÎ㿆))rvNö­©YWæèè™±o‡­Ý; øMDü|;ß*,Ò˜LÙûó˜ð~‘PQ^FÇx‘|õÎO¢_Õ¦5³ò~±îì™üäí;³àÔ3~í@Á‰‚¸_S O†îN ê^´©®™½=”y´ÿ‡•àùâ$(Ýö ­Ó±‹ÜÌ/…öŠj3Ø»»Bc´ ñ—”\usÝ~°ºu첸oJ%_"³è…¯3¯Ç¾¡%¯ûŒ7BBCuÊÛ tü{(÷‘®`ÈáFI%t®¬T—kÑÉ ênÕ8ÛAfŸ¶ÆTûÜB]@^é÷Ão¦4G@›5³ QƒiyϬŒz–gO†=ÿþ÷l¢Ùw8ýý4pß¼ö¾·‰Øá2˜w—˜²‡ p•Cg½È@Ô:+'eU ˜ì²2äM«àštï%jdšûÒlæØoG™çþçi&;'›9þ,C€¼ê„1m–±u’z:KwV"kÖð#дAÀ#‡…1œ¾Vß¹I¤C“Æ>IAŸ5w¸€Ô&£ Ã1o¸eÖ u¶3qÏã–Åt}çŠìг,U—MØø¹¹%Ò']#iÁ«3 ùr¬ûf#w íKîßfxTW8}‘Úù+Ù²˜†¤Jß®:ß .'0ª45ef¤Áœ&ÓçÞo ¸¹yÀÙÓÇiÞÛﯱãŸö•«p¬—ûÌÞY:ËÒø˜ñSIÙ©ÑoÁ¶”——‘±Èv8rh/ÜáÊ* ^ê{V擱ÒÕÇìzDÍêdeKÀ7–R“þ 85ÉRFFy`=áñ!]áÄùz0¿2kÜÈLW§qóñ‰[þý·æÃ9ô.]{À·;”Ó’Ÿ|¸ ~;¼\ÝÜáà±ú}Š´¯ÅG;¶¬'ü•ιY™i0wÖdhç?î³È= ®þõk÷MÆR·îmÌ®GÔ–ìú~§“X“{…Ç€\á gO)Ýç,zm&M=ö)rú^ú»:~ü\†úxמ÷ý•&RÐc™MÛ¨Ó—¼»†¦±`çþÉçççñÊ9“\Ï­¬(§õ³éúýG/Á÷?Ÿ´Ø=ÑÀ’ž]: ±%ê¥ñÓ³J_$}þÑ2xwù[ôø×ƒ'aÔ¸©°äïÏÊÿûÜÜ= ?í:´ë&xþýëÙЦ[°ê-O4³Õö|TAL’ì¬tè1ˆ7¯ÇRé­UUgG(ÍSîTWj_£®¯kˆð\ÇV.Fß‹!Þj¼ýùç=“±Ô«W[³ëü«™ðÅÐØa¡w!^#mü¨Øs$‘O o¼³† %XǾŸ¶Ãñ#{aƒêk«-SÏ®õÀOM½k2–úôigv=¢€Ÿš!_,M ±o¯ÁCcàÝØ¿ÁwÿÚEÓ£‚_Og蔿B´zoýö¯ S€”N€£‡~…öAý!X@ó[+õ ­~RR¡ÉXŠˆð3»QÀO¾ö@¾™ôNìLøzãWi…ù°ý»ïàìéSPQQAÓÂ#ú§@çv˜_â®ÛdÛû×ÏÆ$&˜Œ¥ÈH³ë5)¹`0Ÿžõ:¼üÂóðÖ{Ë!%í6„õk>†«) fÜ»mgè5hx–AÎÕ8¢éÁß—}Ü,žƒ%÷?kpÿGz£iü’=|¼ÅžDäóÄsm OTr{…€Ukw5»NOž©oã¥¨Af×#Rã7<î£ÂZÛÕÔÊ™2E_,+ç!L¼=!ýa,ŒÍu€ŸN\kÔ{ݤßB¯-Së|E#üšžýÙs,—þR.D9)Ú—G>~8tcös㻄_¸ú@²«¬˜“©õˆ>£éS¿!¨ ¨j¥C þïjŸ¾«t¥¾ô£á÷_wÀø4Þ{PÞ²Jô±ñƒâ ˜¢‡Õ¼yÇn‡˜‰³ Ö1¢¿´mí"ýdcÅt".×dä?hgn=¢4þéä¢7<íärA3gÌ”«Ã®qd•H ÷µ³ßÞÚnN {{p°·ãåÅs¢áø/ÛAV] çŽÿ,XNRõÖOú¶Î0Ä–¨G”Æ—7‚·#'¢í[ðØø™éI°àíõÊqÀí5|,o9VåË%ÏL’o)S§®¾œØ;"ðuuö‘ýÛ4âÓf.ÐØ7FÛÔiHYýÛ´„ÐŽîàèÐ8/ÌŒ[åpëî#£eëäÙ¨ ÆÝ S³Jàa¹ñN¾¢Q€ß@^Ç»¸A _+¸û îÞÄ üÅ+¾†Ø—ž„gg-„¼ÜL¸rù ‡ ¿µ§Ü{XcQ9Ÿä×$Ú1´“;e¤ßâ ­J6$T‘Ý}èqUMޝ𗯷Ô²®Ž0¸WkÈ/ªR§±ÇÔÆ0a–®Ü»·+·Žš>;V°Zùž.”í‰ÍH:Ö1söcîk&üй|4tÖ@.Î- c[Èɯ4hã[j¬ÐàÀ7÷õ4qXdç•Óã›Ê£ý’à^pVç÷#?m®Ì÷‚P9,R#S¨êg íF t &v_8TdRgµÒ~ú>ö5Í…A¬Ø–Æ7qÀ8vp{ȹSéÙ¥j0jôZFsVGhÐ: j¬ýx)=®©ª,G_«Ú”™áäBÙÄ^îк%D„µ†}qy690ÔÙ†¬kæV¡Ú6¬ùØø"Œ“†w `/븛1Ãù3Y ŒÜdWbži°][ÖÂüذqÝ*È»™ ½Ãû ßjUÀ×~£°×¼˜|ü½œ¡#1ƒ.¤Þ·­‘:¾FY1 ÃX±)à‹¹Èc}Ú@ʵb~𠀑5)øl÷KçBѽ z: é¦ÇÆG¯½9-Ë•¬œ2å‡ÏçÛ ðµŸƒµ­gÃ{m+ mj=7uPc´v\bÚ0ZÚH·è‚ѾÿtæœWCeelÙøÌ™¿‚º„ò–c‘_+«ãU†|fÖy¢ý#»yC|Z±dê4’©cS«3 $œì¡­§3”UÊtLGŒ^îN:Ú©k7åov_}û“Q±V¦{ý[¦>ŽãÁ½ÚÀÙÔ"«~•k|ÏV mj=öb{—>Ú×JËk©}ÀÙq-Ë2%Ë0Ä2*–±i„/$݃Ð@jç‹eìx®.-àdB!ÕøÈ5Êj®QÉEeÁ8MS–MJ/†™ã‚yÛfm6¾†l&ˆWVV}úÐãÀ bÓ1ñ",]¼ØDŸ1x±c˜Ê–¨‡jü.ÑãlÂɨt G߸™[*ÆÔ‰êí —ÓŠ…mxN†®Æ×Œ8qK'QÌ[ƒïDƒ&*Ü}8<Ý¡¸´Æj5¾%L(/+§ ÏÊÍQƒÓ1Ž4cúßàÓÏ?·ÙY72^¬¨” ›:䋸KH¸ÊÔ‹´ón ×n”45Æ Z=F'ÒÊg„:fêô‘Á°yo†ÙÁwö ÌŸ;z„…ÁÞ=?«A3z,ˆ…0’ÞTƒ[àÚÇúÒŒ3? »!€èÛŽ„Nàïç[w¦êµñ½øUG°ã×4¦ffm|ä¸Ãÿ¢àß·ó3Wæ'ž; «Œ¢ù«Œ¦å1ÄNõÁÂÑÔ.Çëü0VÞ¸žëWÍ$a2ìX¿ÒRÎÒò»6,UÛöXŽÊ!¯SÅ•ÌÚú2—VÔêu[g,=Z ¸SgÏÂÁÃ‡Õ ü~÷n“Áh¬lƒ¢¢ÀÝÃ]mÓã›fÆôé4D0¸zµÆÛ‰/déÎíÛ”Ù¼ÛäëÒ§ñõÉÙP6>foÚ–lðZ\­2uìˆæAŽOéÎ&Ûm­½ZñîøË£¼ÕÑ!£fÀc„3¯^€ '÷‚‡w;ÈÉLÁ13(1”©Beü9ÚA¾ÿf)ÌY¶•zò=stD=1\Ü}¡G¿ðnDËO|þ=ø‘”›öÊÇ¢Æ8%[gÄ¿œ¬)ƒ B Ž@cµc‡(8öîÙ³_z ÒÓÒh>jPnÈjÕ4’e7nÞL¦]Fßs2)ñÜ’úØ:°£ahvy¨V¶²×¸œšBÛÁvF6Ä<ì¤lY6Ùø†îŸÌ³Œv ;ÎPÉ#“kÎé×jÉ„á;/‡Cañ#ö5&¡ÆåvCÏAìD>‚¯Ó™øvAðkšgñã)#Ø—-^BÓŒy(—,(ôÞC>»ÛÕÕnç—×ÿ¼Dù©‰ÝÌžÇÇzøÒí82 bU³:#ùôáwÉzïpK'{pv°‡b[ *WFwÞ™0êߘæÔ;­©ŒÚ âùôxwN_«™ÇÿhKŠFüùq] ³¿›ÕÈwúr!œIº«“þÞËáj¼­ý&KîNPV®ÄO‡öî´#hÓ¢W¬Çq·züËc¥©SPªëÀÑ­¸¶t€"¼%Àhè•®÷ãß¼½@'þ([ ë_¤&¯ÇïÚ.ü¡ÜnhÚäîðņQõtl¯œÅÊ#æÍ×*ǦÝþùó5QÛØX°4d³ÆeÉ&nDÁ›W—’ ¡%䚺ÐS¤ãà%gÿ­7o¾E©ióß&ƒ³S Xô|oQ`D ×ju xN'`YÎeA h0Þ3–¿^6<\`ç¡,£ÚbM¤-›µyÎBÀº‡B æãu`ì¨`ÕA°œ¾z† P—éæ+X‡8à›ø¥í«ÝiЊØý_-¬Œ,3\¶àÁ¡ß›î­aÙú?LþZØäÀ×’±Â7’¡{(¤©û÷õƒ>amUsðù¢5þéóy4¬®–ÃÁ£™‚×jÔŸÍ—¬K ßö¾­à… !ðþÆË þì_,D®•HlÆ:XûýŸ&Õs§¨|]­XZÏ]zX=ª6Â6Ⱦx¹€²ñŒ?ý·¸H%æö¨è Þ2"5¾Â"œw·>Ú’L§?‘'èÌï>žÎfßô>]}àóØ0,¼­µáÿ¸•U2³dþbç«¶E[¶­¬g`þ ´N%ðÞCc4¾%¶û|fR7˜<¦+¼ÿæ8p$Óüí>|v¡Ñß©½C¼! ­+„tÔüp’E@,76 ìé OìLÍ·Æ ½'ráÔåB£e›1¶K£kø-2 >‹õK«ñ¶bÍ“±´ê­aë ïÕ–Î !­üä¬Þy|#^±ï2%£˜²5ÑÅ+w)[#Y³lÖƒ…Æ%Bõ$’{¨ç>ˆüç$’È23?¶äIM"‰lEã[øß~Lr=/‘…4uÓÖ#i|‰šFã[‹ïL•§¯7s÷ÛÙùk–´½ŽD&ÓÌ !j‹¡©ýêh¯ÎÔûÏ­L.n%² Y…ïL•¶ÇŸÍבcÁõør ø5'à«üêìçûÁ\ø<ó™óÿ§‡ÍÜì?¥ó¦ÛBîÜ«„_ân æ[S ÉJkENc£ ø£U×±”\fÛß–åÇçk+ò#«¥¾…*ÌÕá‚t€Î$~SÇÆ·ñ/X¶,?âlE~cdµOÀ¾€ýKzò¾9Øø¶,?Õ¢rE³‘ÕšL@ú t$ßú´¨íŸ±)àO!œ«ú÷–דš\^gãÀ¯³aàÛŽüÆÈj5_nYÀ«Žygwb·ptn´ v!ub„ÇS§=­ÎCß/, 9W|–Ÿ1ân12#±Ž¬Ð/¾ÒwÎbê;}í ÿ”™uz»mëVx‘äYJÖ¦^«c¯²ïOªâѪø~à0:lî`ý9þïܹ4 ý±#sAƒ®ùØÍ Ì>cÑ64¦üŒùMiëQ Ý "ÈÑs3ºD·…éª4¶ XNŒKAƬ`ç0•-Q¨EgK>?¯s‡?}s°Í˜ K¿¸À›n m¸‘W ›~JÌ·¦6ÉúÙâ!j¼Í\xÈd³óËñf×#ê×C¹œÑa}Ú"¡¦ûyÏʨa05$£«iÜrýÇ#¡?G®k<ÆuIÍ Y/ÃX÷zbäçkƒ¶‹l¼š(?WF6åGFYÑ,ÀtlžÇ¶ÓðÛÃnŃu±õ°å…ífÆè6°íÀ:ñÞr·ûa5=2ÊÍÆ±}xÌÊ„&+7û<Øs¹ÏÅYµË˜Ê–¨ÇAËÔaíý‘æÚÈì&|u²¯MôÁøÉçŸÑ‚®µÑ7cVînõƒIOK×ð&¼}ë6ꔕ½áX^ٙ⩠ë2ZÇEZVȤ)ò³f‰Ò]w¼Z&lKi ëëž•_ÛvþhõÔnF3‡m;ƱÞtU‡GÞxPnÖG%»‘/˜L°ñ§ª<.³¦:ºÅøG´¢KrôÔŒqn;‘æÏG7·À ŸæãsÀg‡í`ÝŠ•µ©guìTÀÇQ޾Jô nç¯:¥s•o–uAÖg‚^µV8þ"4/“4¾D¢¦¶ñ%’H"‰$ú«¨Õ™{ŽfKï‰L¦ic‚­Æ¥(‚•dÒÓ“¨Y(àWTKÀ—è¯üªæ ü¥/…ç[“!2Ì:ù»Á¹¤Bˆìé ½»úÀöý×áÞƒ*X0£7ÔÔÖÁ¦ÿ¤Áô±!PVQ ýÜh ;\‡¶>.е³'ÝùñDüéä Y·JÕבÈf€/oö7?µ‡…xõìÀ¯n­áÈÙ[ðäÐŽ4ÿ‡#Y{§¼<œhçX¾á¬~­¿úÞT‘NqøÌ-_:¥œLȇ”Œ´Þ©1A´<’/é¸i[áýG ­}p»è‹ ©Á­‡3téà¤IH±­}s°mn«kÿZ_nóïWQ–¨ùÑÿ ÀÞ•ÀUQíÿȾƒ ¦€¨‰â¾–%Z.•©ÿÒô•ZYÖs{¯,3×ê¥i/µÒÜ1×|æRîK¢Y‚¹ *¦ ‹‚" ;ÈvïüÏïÜ;—ËefîÊeçç3Ë=sæœ3ßó;ßßïœ9#ÿËRK*2oôg††ÃSÞmÅžÏZóŽ' ý9š#‹´%{Û'ó”% ;¼<ÝaøL›`{suspÏQõlÊûUPRJ¨@™œüšh®w|Ê*Š” È®Û'(ñ%6M‹@hÒ¬%:¹A³½£]Ž-ž0iua£1je‘† F~Pê:Ý‘)Ž`f¥òÚ]` ìÀù`”ØØ€?Ã@“f ,*æA”k¥áÀ6”{¨²U-Â}:†yw€'G2Éœª(tpWÇr¸’Ueåã«~ãÅ®LeÐ7 ·Êˇ4oÕ±óÞ4`ʸSÞŒ ´gyêÍÔð± è––å>žéi×½´!FêÇ ÎGÎBŠ|ÁÇËš tƒ²Œ#àüš/(«œ îÆÅû´¶‹.t-Hó%÷yâïŸU.ÇëóÈšÞÊ€'Ú|8{½n-Œ¯ nªìCCBOñ¤±i»½ ¼Þz(<Ö¹ ôüåçý¼Þ÷Qÿz“–Ô›“ë䈖ȀI«O=ªÏA½•eåw+˜ç‡Ó'ß¼ ‹>_ÉIIi¨ÍŸ24þðÁ‘¤ v´4ƒÑˆüãÇÅ]¶ýçüðî¹bXŽ~×ÙÚy 7Ç(OP¤W€Ó0ot%€½MÌæ}Ã?ŠYY(?ôÖÖô—ö=ÞÅÍÝâ/^€éï¿—FÀ¢çšijú3ŸÄ]p|ÍöüÃ~õZ»Í&ùÝ…ŒÍ¥K`ëo6Ž6à4Ћ^£,¨eNU´]çùD£§Ë5/sz«{eX7!à µ¡ë½õú8ÔìÁä|ºV<œ×‚~Ö¹|²™®mÔ¶ ­*È}²KÄnƒ¢À̽œü#íí >î¼íxز6—¥¡¿1%5…ù×´2 —Ü a´~÷D`c<Z’&IÓ„yríÊ"J™;{:^{e¤6à§¡a+×’Ì雦Ï'”†í’âb6(j8¡*ûÔ<½iN|O5ÅÙÇ‘VçnÁ¾ñ{c¯ó>³'ƒS3òJq`k‰O{¤KZnQ]‰fó ¦RH¹ µ¼DiêëOrÝOר–9½, ïÃöSoÍèÃA xöpï 3^½?^·A /¦å Þ½;êÃùê-ÚØð"9.‰ÑÚ÷R{‡Ø%ÞÇ«ÓZÀs­,²p±,µéÛ£ë4-Ê—QóûKêýV7íãÝ4’ö°ð‹ÑžlL#*hìE{‘[Éyæ`© u˜›ŽIØ`NŸ–V0O«Ë”E@¾]ò $¥¦CòÍDØì|·ì¿0uÆçtSµlH›¶5ß‚BÀN{oü´ç$Ö|ÈùiÒ燎€Oæ,®•ö¨n@ÝŸðÖ8t`7dÝˤǧc“j]¯}®¸¸†ìN÷ƒ`0I{Â[S *Ïï§ŽÑûœ9}œsåˉ ö¢”.9)Ï,Å„µñaÓ1ëcmzE^DÖpIJI‡e+¿Õ'ßL¢õ—tó:ÌÈZu‰€GñhAíææ;öÄ@—®½à0ÚÇŸÖ×þc!²¯ Ð×ÕÜcÇψ=çJÒ9›_~ö9¸›^Ë^¿ìû-Ð¥[ïº=ÕÀš¦Êc,_¹…4šfáAi!0™šŽ­1 —ƒaá©?<ݸ(3g/¢ûþL øpá¢Uô·»w3jÅg¿pÑJøíÏ$X­rôŒ1n’žD;]®çöiDx†_Ž\ Á¦¿?Ž~ÛW÷>xÌûîhÐÂäza?ëcN07ƒAonF¥ Ò’ϧ}H÷»tëFÏ·{.]ˆÕÄÃ}”熌 Ç`î#©OqÝ Müu£çNüqž|*J•f›öôeÒ/ ¼ üŸë®9ÿû©£ôÚ}‡Ïkòf©zQåÉ2_ 7õzÃA/ƒÃ×ßm½G.­zu¯ßÓýéyÔä+—¡‰‡4C¨nQŽÚ£9.%š÷Clq÷V­¢–”t½VOÃþOl¾û,üre­¸óf½¯¢Dî­±hz™Ó×£¼;u6݆µm ËÿûLž6›R¶.³²2ë9ô}¿•¤šÜ>pðÎøHPþ ÆfhXûZÏmó†oi8zFÕ#|0e$\:W' lºÖpû¨'Û –MÏh.ÞÀß§2Ø{s=9_öÞ˜ k¿ÿœþ/:Éìûè¹×G €w„û÷2ÀÝÞ\|½9¯-ËÍÇe5À³e ”AJòõZ Ô•„KqÔ`EÊ£+x/-ïPî”:q|Û…òþÆ%l|C½.íü©×åêÕl³¼7;6cÓ©_ï #kz£å½ /Š•ßÑýu?neDÛ£öŸûŸ•°ô‹àߟ,¬[ç¦Þ$#ÓPˆ.½ŸþΗ Úç›¶ å}Æ\¿Y–Â’©éÈœ¾žÂe¢uð8wž•ÇÛµ„dBSB‰&~éÿÆÃÈÁÝõ¦ƒqJJŠEÈœ¾‘KG¢u_ÒN>°Ÿ³8gÑg áÕ7þ !„wïølö{0gî,5z´Ú—ß ÞüçlˆŸåeïì “^½d Ù.B€¿{vÿøÝÿ|%÷òÔw³Ë };g¯Òr…Œ.±rúžOoŒ!‹Æáüz®H[[~Ð_" G iÛ„âù:{ݸS2_†—¨$Mrš¾_DS\Ä¿^ò'…ˆPôУïsðúäÏà?ƒP<_O‡4?¯¦›dœÉ†,—ØŠ­BlšùÂ…³GÀÙÕ¢^/OñszI̧·–Ñ–”›—áãIª% ¿Z#£Gªœ^Ù°é úÓñ9õþŽlAI`–®7 è É…1$¿2ºÄ%1Owñ )No5M/@Oþ5±?´n×òr³`Î’ŸdI–ß4l:¶â=xsÊtùôÕ Å“Eæô–yGÖ/É’ Ù öð¾y;ƾ5K0γVÊ/õŠ—ÓKÅO¯´Â (†‡Þ”•S°;Õ „­Y)¿ê%jM/ No- qa9ÿAÚ»±Ö¹¶á]ó*c^Ì oØtDFo¸]–\TFȵÉÔ3½éæ ~ÞNVH~q%\N*€j#º¼±r7÷!$¦5>Mo ÐÛ5±á³_³@xaÔD8{ê ôí?V}=Kôôõ´zÈos?gèêiU@y»;@d·fp7ç!\M)UÞ4÷öu¦áì•P\V%zNßà+œ5!@ª‹ô÷{;[Jot.%Ý®C7ˆ?ÿ;=~XV ­ƒÜ,žO7» ê–.¢Ì+}#šÒçÙxV8³°æD­>°Wdf—ANžjIëf>M Ô‰ï} ûwm€¹‹£ãUU) G;opqn1-3HõD„oƒƒêñVz·T”yÓ¿cS8u)Gæôº‚šýay5ܾWjWÿ“ДŸ6-‡™ V æµ°¬ ‹ö …¥Õ„s6ޝÇ7!õSU­mþ\œìôc¥QoÕξ<Ûßh÷‡µh“v„4xnÎ=xm ½ñÐèc ¿Üü šôÐ'›Ãþ3™’½;¡2 xo¸a½3Œ¨9½Õ\–-š¹@ᥨÝmÀ×ú>#øšàƒì{°oç:ºþ™°¦W¨?þĨox«t÷‡ó×ó ¨´J² WñR±çQöÞ@W¯r}AQ%oŰ @HƒOÿä«$gß)ªë¾Ê~ëN1„6w…Û÷Ë · B¢ Ñ6ëËŸt8½‰wèþ¸”—+TšW lFŽLÍO‚Ó –}9ÊJKèþ–}çxã)ꫵr‰ÑÜÂ×*ˆ±[X"=¯”Àh³¾ü5êYt±UV*¡²J©ID7F+qú¹C c#ǼMA>6F0¥7 †÷ž¸dHXs7HL/‚2‰½K+…Ñf}ùkèµ,ëÞ »°™—#ä#¥atVî–Ê0ÂÞ|+êçíkõzyð …R€F1ôò¾¾p,.Krœ^êô¦¡§×½‰ìæã"Ñ?.Ïèý°—_£ÁJGà3zºÃ+7óaÔ³-açñtiqz™ÞX‡ÞÓª†ö ‚kIùüF+ÃGq^uÔàwº úÚsU^ÃùÔ¹,èâ ×R %zFü«éŠ[Ñ[^Ó»:ÙAzfI]MËpgT÷KÒ6<.ËŸ\€¹N‚…KÖè̓‚º,•Z†3¿âãá ™©ÈAÓKg-KoðÂÓ-à‹÷ëøàëjx†³àÓôW.@ii1$^Q}­£c§î¼y¨b”CV·áqyŽæ èá'ÎeIôŒì²43‹zo\í îrN µÐlêr .í‹ñø8ýO›77wºEéôõ:Þ|””USm¯·‘i屨¸Jsð•À{ÃXˆà˜šŽEéÍ'›Ã™‹ÙµJ­—âhißb\ ô_~³Þ |âŒÃÛwKÁÎõ`n¤BŸ_ø3!G䀒¾Ÿ^:ÞºÔ¤ô"«¯Å i_œ*У£<0c´4À×.ÿWëf `Hñtµ=u°ÆˆlQQ\OL„Þ}úÔ ½‘ŒŸ^_úá!žpGkÖ$#Øùµoæýðòp‚Ê*ãðã Ogö4BFíÙøljˆ—<¬µ¦·f‚C 9-ú÷ëGO9CÏ5’‚~ä¨Q0vôhغc‡åéØ8}ëVÁo¥§M0¶Uõêè OݩÕëOXû¦ß-¥ZOõ€Üürƒ^“C[gpPߟ¯áéóÛ+*Ы“œøK¼­ÒBÞ›ñ'ÀÏ»vAf†jæéÆ è9X±l9Õô¿;—jyÔì(Ñô¨í322`êôépìèQèÖ©3í ¤ê½ññv‚¼ürnÐÍ>ÀÜ$ß.¬£•¹Àh¬ö5 ¼zz!Ž+£Ø"¥k§ND¨M¿XøÒ‡˜3¿Cd¿§_î q±qFƒÊ’soP˵t©†î°àÞ Zyâ—ƒêÇ{SÏš~¸Nt+€Þ»U3÷K-¶Z´fš~.ÉpbÙà ¥zPHª•ªù/Úç0 P*Íœw¥VÀøµŽÕÓ h`ÓÔœW’F¦sOEíøªÙ–Jº¥yQ(uÒ`ÔiÔ„kÉù‚ïe*¨-@xÖ8t÷p§·Qƒ™¤E-‘7¢Òº?»=îc7Ãîz·µ~¿#‹Ò¦µì;Þø¼ß‘%Ú~¹>.É'Ánp¹0¯Þ´o,Ãg0Â^†ßçÅþ¦P(  ©3]Ö™0q¢F{"WžùÁPh ¢WdŲešÀhïÈýôÊÖô›·_V-=!,Ô‹hü|~C–hzF«ØÃÓÜ\ìÕo*1z݃,€Ó’.Ó€Òðë:€6¼ìïåK 0ï>øµ6ºú:CFv™EÌâ¥K(бü°f ;-Z´ §>9=Ûè‚ZQªeŽ—ÇONCrú·Þè\ëøfr>¯!ÛN¶­Ö ’j jæB©ƒ1Ú7å† ðí"ž€S§ˎÂÿÖϧ`ý¿7çÃýÌ[t¡Ös§÷À¨‰ó`׆0îý%pùÜQðòñ‡Ó‡·ã¯àØÞHÜxê¹qвu'øýèðôö‡Û·àvr óoxŒœç«%FÀ­j®pѤ=L~Ðæ WÔ ´¡¡qªÝ0/hk|ôÁ‡ê<Õe¶‰‰‰P\¤ZÀ).6–Úx}ûðöšüãy콌­»úÔôk£õc5dÙÏêİ—»õ 'T×µ¨O[3ðû‘-¼›áͯ$é+¡ß qä;×ͧFñ …¸˜=tsh33Æóðn±§öÀÇÁùß÷ÀÖ•3aæÒCp†¤9sÉ!p÷j² ($‚ØJ££FÎÐü†iô0F3ÿçå7ÿ£¹‡1ž£;¤ë낱ûG?7‚½3x "ôÔìÞõ31Êuu€@d·}äcGÑ ÅÒ‡ÙsçPà›ã½Ñ1 n®ßõͳѾyR¶û?q"= .Ú òÞôá Ÿ;“Ò¾zðY²½ W1ƒ¡Fñþ[Ý4û“ßì߯»ht:înŽð×Å{ªÁ7x®8¶jJÓ 9=jx ÆN]½•öMlTƒNüª;xÅPz²|ö0z|öøVXAö9žH¸C¨Íîu³jt‘°gý,ú›’‹£+Í—IjÒSj– ѽG×ö¾á¨+KKÐ/¯âècà8ÑøHðwêW)Žª=é!r´Wü°nKì-´ýúèyásÓ™28…i£ý€[Ö›SÛ¶c9cÛÄ…W¿[{¡V0w×ÁQ¡`oo˽€+ÑòéìóɶÐÔ.«SÛ¦›m´öE@¢§%îÄ68³]CS~˜ÿ=ß®Ë3ÑçظHe¬¶êç~ÛV·Ë'×ü¶g9dìTxý£­^ý½QG Ï^ÉÕû`QSëz/~Ðá¹Ú¿ëjípµ«õ}#e`Ý8 €oÐÊœÁ)¼Ò*¤aH³^MžôN­{±t ëÊd==؈ù<6Fygx~ tƒ—_hG÷+*ªaí¦ËF§sîÂ=Í~Nnøù8_Âé§o¥æò:.ÌZ”ôéÜ þˆ¿/H¸Æ”¬nžÍ(à‡½ñ9ìßô)d¤\¡àÆãµ ‡CfêUúúçô’ §v¨+•©ãѸyù·:$œc´*;ÿaƒ¿¤!4JkÎK$¨é±‡Á^ éÚüT§w-ƒ‹ÁƒS&βDÀ»ú<ÝïÕ½94õq‚ÜJgÊ;=j³éq²¨é½Èö²©Ãh'ÎÝU¯bÆpûå9O]Š´q0ðæœ=šHþ-;À½ô«pöðñ†–m{Á©}ËÁh~Œcïèñ§wP7fX§gT‡¤ƒç{ œ•¥Z3> ó(©ø|RŽ{¢~ªó§ Z¤O/ Býí\œŒBm×½8d¨fršIC¥öìo¾M!ñF®Aqµeùç œR_°/Ñ7àpîj.D„yÁ•¤<~C¶V¨Îú?ÖûL³ìßøOvÓý7ÈåñžÃhÔv=†ÖvM±Çä·ˆ'_¡»£glÖÜOû .>°ëzq^}® ì8’ bC§ôõºTŒý]wËúóÙ)Èiz¥iÞ› [.ôw{h¨IaQ…É^ ƒ@¯=§žkª±!]jTï ˆ¿ñ€ƒKsÞíkôôdi×ì~ütŒØß?e©œ5…õë zóçáîËVý¥Þw¨·òhN [ü†KŒ©­jížàîbÅ•&×h3¼ÍGÿXÖŒºÁþrê6ˆ] 8kø<šÆéG½ôx­ãoVž3:‰ã:ƒ§‡#dç–­Ôˆý+“—Ó³†kš:KÓ¨ Øç¼Ýæ­¼`1ík,x º†ã|ØcžpVä+!Ô€^üy4•Óý½ è}{éõqýŽ€Ç4:<î ‘ýZŸç2y5}gäô$x“ýTsº¬åÛ®ÁcnšYl9ó¾"È_ëÆ4²Ñυ¦ýI añR݇ŽßÒüöç¹ “z”¤”<ÕØÑõhâŇåôêA©HünãİŠÎ#ÆÇë/„ÁW/›­}M¥8Æ5 «ˆ}émíÖXW8ëð¸<Ñ«\ˆÏ‚gžnK¾3:½’ {ç z>G—­šÞà[Ø1BïÊóùÉo¶^ƒ)c:€Bíi AýŸÑ£¦ä¼B;èŽö25ת®×º§R5óRÉs_ ß|ÐNž¿§·L"sZŠ4oÂXÑá§Ý×é ~ºõ~›“;àõǶ%ÀÏ¿¦.u~·ÕòØœÒו¶Iní›Ö¼«ªÞj½ÎF£ào©ÃêF£=µUwú”WÃaΪ F}»T ÔA¬yÓ‡í2p…§ö†ÛE°xy,L}·‡Þ)Ê|¿—“†Ó²…ÜÏ)圊]oeÈ+¬ ïÎâŠc™:¯ÞñNM0Ð+#hðغÒ'Âöº-Z£]vÉÓžó߬ú **U‹|-ZkPÂ%Ëô PÕëçw.\#Ÿ †ŸŽ¦Àà … F­páL|E¥’6L©IcðÞðõN¨¡Û´ö†aƒÂÀÉѾ\vÖètfMï[ë˜+zÿŽì®ã©ðê P8›wî—5øAÀã[ï)E E+¥1 +1œšÀ¬ áË—­þ V~üÌ\~¤.AÓóýü°\ë6«°áïçbòB°ß®½SÞîéw 9ãXí‹á´P¤¯Ø~ f¿Ù™jÿ¤ÛõO1†ö{ <\íáÃeÒðêËíé~ÚíBˆ½pÏM_škáºKt¿_x9²Ä'åAì•lƒèO§6>ðLÏ@ú1…m‡oQ÷h}HFv)Mÿµç[7˜Î]ÍCfˆ2o¬¬ß{àž¨>W8CÀ—“<ì=xüÝçÞX…Óë“8ò`1°Ò>Ä ÂóGðñt¬áµä!c7z%9®§Ð` aó÷æKmic³†$Ý)¢`zX¡]ÞXI Jjý¾›F ÕRÆCÝSóŸ!ì¡ ŒÁ-=!æÌm34}øÆn¦Ò 6Á÷Ä*bΛ0¯q˜lÜ~…÷:;ëgU–G]$ó¡5¥ŒyY,¥¡ÓÇ“e‘E ¨·“Ÿ€,ÓË —Eæôf€>xVJE¤@,ªÞ`Яšõ$¾R˜.?;YCVY,z|1\Y¬Ëé6ƒA¿õà-\"d¾üÈd1QbÆi=@ ¤^{-Küàæp¾U”òè”,Ó«W7{ƒ„hr­ûÍ)… zYèñCkêïNm’5½,„!Ë~h —ìæ\ª[½, ÊÄ-—»€ëI­sѲ¦—¥^Ao!,™š»T7®Mß_("è›û¹@óf.’¨èâÒ*¸Áñ9©”áü5þ¿‰­ By¦W_p-K®y~ÎÐ=ÜW Ç·­¸Þ°’JÎ]å_;_leÊ«¨8=~aP½z17èKò)A:ÂH» \yk„òª«¥ b35=‘ñø¬Ö_`½a$4Éž‘x„l*±•ÁÔõéô‘Zûu@¯P2õ–yk¡^ÊeP‚^:y«×æôÔ4ç’¡œž)izFÒeš;.¶2(pÝc9ýIc»,©½B(å2(%¤éõÓñ̲Äy7…üÓ Œ„4=#szÑ€¾AÉz©nõwdY'öp¾‚è)jz©–+ïb-_>k¡Õœ`f:šïȪ?¥MB|ãÔôŒ¬éE¢é•ÒõJ0ŸÞ ÷Go‚ µÈ¥43‘x„<"J‰yoDá²Ä)5ເêE‘:Î¥Rü”ÔK¹ œyió*RÏ~~G{|¾ ·6©ûsºÕ¢¢" ÄÄDè߯=‡ÇðùÂ…tŸ=g©²d¬¾OÍ[í|aPâbc5ûº‚åÃ`‰¼Ö< óþÌM‡åô…jO_&1œÓ›þ=<<`üÄ ð⡜–Zñú=eeï4òoI—åØÑ£aöÜ9´ ];u‚SgÎ@·Ni9°1°Û¨Aaà AÐ><ܲœ¾ýô¬÷¦ žè¹Á—I¸yZÝ`næ£7lww8vô¨æVô/Ô§·l¬™®¼›Z†ÅK— ?£ûÅEŤ`êt•§zĨ‘´Q,^º¾"ñvïÚE¶%òªmx›ÌMÇNí®DïÍ7d;ƒoŠ» 51ïNšD+zêôéí‚òÚ5¼]²¶F5Õƒc©2X;ÿÂƸ2´hÑ‚jzÔòØ@YPcYè˜ß­;vÐ2ÆÅÆÑ†m¹¼6¼Ø©¿GÍågðrz Ómp°`Ð×9sU½%Ë`íü[ŠÞ°ù™0q" ºyD~ß»OoÞl z# ï þËì ^NÏH}–%#é2ν±`z÷éCµ|}åÕß-u}ÞƒZ¯1#¬ù¡©^ŒË–Y”ÔR†Ÿ ‡Å¦ãáæ£…BQI%lØ}F= »Ž¤ÈÈ“éMÃËÔ±°ãP2dç=„™»ÀWâaôà0 ÖÇÜ`õÿá™ÞAУƒDï½A¯éNö#ÚøÐc¼eâˆz­ª¨Ï£´ðw•©¢¬éÅ!NŽM ã~i­ò¶ tƒÏW_„OßéFð§/܃ñÃÛÁæ_o‚‡«=ÝèÕœl“èu;Ü¢åÛmWáÔù{šcLëQé5eN/IÍ,†¡ý[ÂÉ¿îÖ*¯îöxl&\MΧ'žV)ºeGÍ?÷ûó0fpk"Z_tÀãÿˆUuãyöž²X_ ‘ýhYœ9Ë+KBÂC½ ÐÏNÄ©¾Ì±hZ/Øy4…€³ò‹*)Пì@ïæ”·‡#9_A·÷È1Š·‡tkï‰)ùô\ Ÿ I×.^Ï¡i„¶¨ùžÒ¼ÚAþÙV”•C……"À.98@@]–UÂpG‰4KÉw± E’EDImºVy ‚¬QƒÁÂÅ Bƒe€ OƒäË+ì†ãÊÂÞÝ1Û¡<9Úç¾ÈûIdO ôO$¾tÿô¬K’Ø)e±‚¥Œä8l(3ϵÁPÏ6hµ³8#Ÿj9[²ªŽ^•!CÁ5£}©ÄÆ\XAõVVàÀÎMçä]îí>uP)eù--ogUŒyó›«ÀÃÖ•_+“—Ýhçà`- Màä ¥Y<ß~°3Ô—UCf|š·IÚ6ƒ ´©æÝs+¸ó„ôÔ4¨­­Ð°pØ¿ï'ðu´„±£G‚£“|úvPÆQp¶pee[CøÕ¡Ð4Ƚ2䆻ݨ7ÙýÁârÕdi\mÄ8:@Œ— ¬¤Ð°«Œ[­iH\°žÛª!ÔÂZ­í`T mòc0?ÚÒê,-y^ 4¸øÈÉÞÖòêKض78::Á š:hsq·iÁðãßðcjZê º¥J+¡YÚÒ©¾Cì=ùß ÆVa×÷‘Ø€7K΃ìù_¡â‘×~¢ Lp„Špg…ûà\N%ضºÞs›WØûxÔÖ91éŸÚ¸ù«–‘;‡Èž@èÓ®— ÛÐ ›ªe`²d¶ààКÚ¹g*ÀÇBî ùGV $rg¸à>)”6ñý•ƒA‹…¤¸ºðýh}cJ©ÊæÄ‹¤Ž„–uMK½òúÖÌÚ°r'7õõ‡qŠÁM&aŠÃAc}¹Ò¸g!Àæ]|ûh[9Œ´r‰• ¿Þ†ÝÁÈ¿eŽG"„©twU|Àä¹[©wÙ}™Y™ÁAÁ—$ÿvKjC\Û¥&H/k„€¬6NØè6ùÍV¥ÞpuaØ·¶rë].¥¶¶|Ó!O7°±´†FàùõÅœÌ1 Ö7’8Zúîî0¾uØÚ8±äÓŠŠ!]ZÇÉÝ3X^I¼ÀÞBkj utÏoNÉâ×õ¸rHŸ„,+pKðljâÊ&ÇÑ‘ÏïG¡t4¡qˆ-$¸xnu©,~ÆùoÎPO ²'Ì Ã|<¿_|ë­ §N›®ÌC?ó{8SX2V¤[_Êy2áƒì7ÎdFGTV¹FTU%® uç² uˆ¸\.‚ò»n„„#íoXW·ÔAVMdÖæ3b/áyNÌZö €Á2GNÀC]†Â°ÚZ`eCcôpÂÈ7él oµ€;K° µÖ³õê&ê’Ë…P5!¬N]Tº\2-Z!XjÅ÷7›ßOx»Cë¸ph:ðwY…Û­§%H‹Z¸k錛+صµ%¶I,v»Ù1¡±IR9ùåMDìDö‚É™{È¿9ÃHûL7ÇÊv|÷=øøé÷àxúÔBvîÝüÅu‹+b¼lÝ0¤Ü\ePQ) ¼¢´4A’@t½`tËàÁAÌ2/†Ìš|ȪÍã®o‰5;úq¿øÄAƒ¹ådzC.dB[„Ø]ª¨kw··‚Iõ­ÊíZY+w±8ÙÛ‚û£·CÅÖo ír5ØÎs…Öœf°ñ:°Èn„6FÜ.– ±µie«|~ Q –Þƒ ËPyÊÝ=¶vUå=ǶÈž@0;‚ç‹Ì™;Ž[¥ŒöXÿÒZØ¿o/šÐ˜úøøºF˜0B$4<¼«"cƒƒ‚{ô)ãdëÌ–møý­].. –0jNLŒd°¬\WÙ\ßàŠ¤Ž.—.°ìž0*é2üY\Á¹…|õвòNåZ89€ýô(¨ýé/°? °ZóTÞí–H ÉÏœrYÙS8K«Ú˜5n 2eäAnÔÙY'ÖÔBbÛ©ºÄ1ñaY?QH#‘=з­yFä ;¾ß­Õyé©©<4PTÁšµë^}Qäµ1ö} ¨|½6røHX½æùì=O}Ç,þݾõõÜý‚î×9“ eïŸzõsÏwÚ¿ïO°óëž–VÉ6w+RBNaI•Ž×ŠÇ‘‚"K(sÍë³»úúÛ$¤äµ¹º ‡ŸÅ ï^rÝDýò7?ýø6Î`UÑf‘cx¢¤Í…ÿm>ŸÏ#t,lø6¢à’ š$•˜›'Ù=s†4ž^:"ÙˆäxoÃ[Œà¿F"^ÃHý^^'@Að1 Í-ùݪÊbÿ#ÿžÞÜ )-*í<*\£ƒ]*§½¾É-{ãý‡-sb²[m!xp 48XóH˜Ú: 7Yñ˜ó³É’J'h‹O/±J¬ª’$,¿£ G ‰Dê"{Â@#u$ÛÄа0W뉚æ#×X¨j½â{P4®Š6@TR·%Ëž@ÐÆú};öž{ãbïýßFý ³gBÌ5×FþåŽ3j²kO>yvì£ ÷ß+ ¾i«Aô¸l‚bÔ‘­’%jd ¸V¶Êˆ¢[ë[ÝBVqSé<ª0@;á=%Bû;q½„"˜ ÙggWöûÏ3Li“Ã@u‚Ý7µµ°rÕ Žyê¹õpý¼›»-ëé'€£¿â¿§N› ¯¼þa§c~?ržyòAþ—ÞòÅìÚþ]–Y[S wßu#´/ñ»âÞG`É­±àèäÜáØÄSÇá•—žìpìº×>€«§ÏÒxß~;–Öí½p5n"<ýÜkÝÖÕÀ{Úøö:HOKQæ-¹u9<²êYC_:!0е“’KO+7/%„†¹kª¬Ï“}V‘=AÿxôÁ;O…Ðð0N¶êËàÚ5±÷®„±ã®âÛ§ÙÄ=´ Žü•Öm¹¯2’Ý¿ï;þ{1’QœœŒ r9ù††E(ÉY(SÀÞ';·:°Tª¤×ð¾V?ûšF’0}J;Ùwwoïnxv~Ýý`¦ž”aWÊìg&·ý{¿ëöÞðžbïY Kn‹5¹u&û4’}˜²O32ÙÄgO&'2f› ÑGßå1Þ¾C•ý‰yñ­·vÛwîˆWýUŒôbD/UX¥«THý°‚TÇŒ›O>»^{y5ß^ÉŽùäó»%ÄÖi$Co?(*Ìëx|m ¼úò“ì>üؽFöêYÃ{y(îÙ–6¦ÚÚjHOM3§ÿæ#Lë÷óÒú`j7бï.åý«bÌØ‰¬ÎàããÏGêõ75/ȤæÅLÆ®•anBFÌD0 NŸüæÌª ŸI🇗Áƒ+_ÒLÄŒXßg];9>úŒ²ïމžÿû#UcŸ¾îúEÜšE²Ì`$þ-S‹oYÞ©ü­Ÿ¾ [·¼Û~ÞÜ›àÉg^ëÚíÁÊ{nõPÇêõ¯å „(>ŽÿAoÏÞ¦N#¦pðºiØßY=±z®×XÆ¿bð{F„„€·ßÛÎ-÷¾ÀfÆõF¯…¡,{J”ôþûÞ6=.^,„“'R!fÊ$(,ÈWö»9óæq+U8>ŠYšŒˆv~¯±<ÌpåÕ3Á‹YÚbër×Ý(Ïý…YºšÊˆ-øÝûOÀãŒè»+ëûÃ/'•e#©Þ~óŒNÇéûYÃûþ(þGX¤PX¿°‘Î{L ª÷,SÑ?ΔžcÏäkŽ}E£ò‘ÉL–Ì¡>†±ìɰ'Á¡üïŒã?ù„õoæÌ»ÞÛð6wQ UÌIééõ°æé‡` #sõ ÊÄÓÇ•¿g_“Vý6Šd¤_€ššjfá¶ûî?ØøŠò÷¦Ï~`JÇYtùx_èç?ðó÷Üͳ‹)ŽE·Äöø¬a÷óØ#wòß‹–,‡ØHEÿ÷È2H:ý·¨:|÷ÍVx`å3Êþó÷öIß7Ö­æIW¼ùî|äeT·‰™ñ’±ëcË^F‰’’âï¿ýÆ×¾ðòk¯sR޹rÚ,xŒþK®áä®z~†ŠÝÝe°Ö×GK\úä…|U%ÂGNÎZ—=kî"e0’UÝ×Õ³† ÅAáRÑT¦¶P•בJÂ\8‚,ûÎÉ Ñ8)éC08pòóÍWVƒ¥¤Tߠť^}ù%øüÛÃÊH´”\±€[äk^ý€„׿‘êÖ)úåìÙb“EãŒí¥©>ý ‡Ü8¢ˆ÷Ú§„ððxæ¹ÕÊ/P ˜:}:|Ë—ÄÀs¯|È ÞËÇvþ|îûÍ!¡ðü+p«»·ÈdVý_y¼Ù5ž'Eb¶™™ÇØõ!Ÿ=¡Ï‰]>¾¾ˆ^¾hõÓÁ_ùúõm\ë7nã>õ™×/â ÃqTpìè!=.YS®ž%nDÁÎ=öû!ØöÙ»P\˜KW<ïmù±SßÇã6¿»þóÔkÔhfA®»>qãœM%7Áðx‹YÓƒ,šù·cq¢V Ügm)iƒ ïØAàwgÑ¿¿þm¬˜¼U-üňI<3=…‡?vV2~|r'{'OÙåËTI§ÃËÏ<×Ï› ÇýZ¤ÖìÁ¶€/¶|¿ìÛŸ}s˜ÏÐn“ðÎnœÄÄB“¹q¢£}4Õ§ï¿A›t±œÈž` 1 Ñ9íu <õè2¤“¹ë_^ Õ5õ°ê©õܪ×íÿ¾d–¾³“=àÂlªo÷ââlïnد¾óE§º C®QÃ;¿±zêTÉÈ~Ü8_Mõ!Ÿ= !ú›½ƒ¼ó‰üe¤—ž}Yÿ-Ê \$aá+V¸pÚуۄïФ©×r2F€n¢ 5bÎâ5œMü›§s,EÇãûÞxKŸgä_Ùð|õÓ z6˜ÛÄÜêcŸ=õ+‚à\âq8ÏÒŽï4¯Œ?ÆæcÒŒŽ+ñŽéËþ÷…+' gïìñúXîÑߎp÷P Yôf@®4AKdOè—øuÿ÷ {/,¾í6e¾š‰–;ZçsæÎã~ÿаðN‹«iBâ©“,âD.Œp¢vüø1ÜG¯jÙ§§¦AjjÌ_¼œdÙ÷/˞؞`xäÉõOÊ×xùpÓ»°gçVpvr„+®šÛöœÐxΩs)ðüªe<’GÙcië ·Å>‘ׂewØœY𸄺‘Ü1}xí2z.ÌR3ki°ìûùª—•ùz² xhÖ Òã©?ÜÂSO}4€YûÞþÜzV×Ä߈_ ›¾úµËs'L »_HÏYödÙ÷»~’(‘@Ì„÷*ùýÉð+DHÆ1ÐþE!} ¥Ý‰Dùe¢¿“Ëñ›Ÿ»õ|B7xócùäniƒ|Û?âZ9Ùÿï"Yè}šìÉg¯ÿ›è_}$zR¤ûÖ0ËYŠ?s± ¾Ú—Í-±ÙPy¬9zª&ŒòëA–ñŒøW°<·ãÉÎJ eov–}¿¡û…Œèñ~d?ÉŠêfå Ã}¾73·–'ëA±5uͱŽöƒâÐÚ?v¾,Ú¿/J Ȳ7-Ù÷—Xâ)#ݳ›[Ú¿ý%[Nðã~Ÿ½µU?ü/¦ŒñÜÀ:†ë_çËã‰ì yÉì>¦Bns†ãI%:Yñ_nzjaéýká¿ÏÝ uàã=½Y벎Ÿ-…à¡Îkdr7@ÐÉ’Øõ¡ ÚÐÒ*]<6)IÀ=«þ ‡÷måDÿðÓÁÞo?€Ã{·Âµ7,׺¼â²ð÷´‹¹\Ü@O- /‘Gï˜:z0F“¼Ø:ÇatÝHtpß ¡úöÿñßã¦\v®ºöfÊÃUŒ†yÙ%xÛKè±%Ȳ7 ²ïW@²×Á´ol¨åÄ~í+ó^ÝܛՉ㠄ހ^ª"t äy]Ü8î>pðÇx°³wìÅ•sÀí#ª'Ȳïódÿ[bI¿ˆ ¯¬mAÃ^§({{'¸zÖ ‰nQ=씤ôª&[zj „î‘0-ÚsFgrØ>{ ê=p,'gÐ:7 .§së>ób"ø å¿›ku*,{¡÷–´©’9Ô‡Ü8bÜ8:øqž}äXxûÜäÓ/$˜ñWCÈðh8ú( #ÁÆ&{3‹³—õ‹8û~{)ã–½.Ñ3hÙïþê=î»o¨¯…§šÇÿ.ý×S:•‡§Èð-ÌB èlÙäúдÝs½Âg¯ý©ÿzôþ7/'“ o¿üH·Ç¬zö]«[}¤²>'[7§A02Øìl,û=™àÒ™yuSTOrëÊ«›!5§jê[õþ<›¿ô}²ïÃÖ§—› øyØ—»-ßÎÒ".~ÄÈqðÑWðß÷ß~\sý-pë]*÷c^yi¡Nqö|ö}C¶(ÃQ!.ФYYÀð'žòJà\fÉM¸;[ÃäQƒ¹ò<‘RÕz"}òÙ÷ƒ›Ðh5…ú;q‚ok“AM] 44µA#K9uœð-t\.aþâ{`ÏÎOá?Ó~={G®t)Ù>"Ð l­-¡…Õ5=·†Š9bb¤;{`m4aùyÚñ~uät ´¶IIn:*Ï)£=x_OÏ­í=/™›çÀÈ×pnœ@_{êÄÉ?F‚ÖCA7¤©k4΂[îáI_À*Ô2 §´¢‰o;ÙZÁøánàîb•5Í’] Õu­&—oT¨ – Y]9z0$œ*Õ/InšYaYc¯û7ÅÙ‚ìÍ̲gä>Ì ª)V3ë½;r—©ýÐuyƒÇ¼ ÊJ ;å?±æ}nÝëB÷m¬s´¶µË¶²¦…'¬ë0/{ðp““ʼn å&#~VB;ì™RFÿ{™ÊWÎ4Á[á6$h†—›-TÖÖôÒã`f–}¿XõÒ ¤:ØÅ®ˆ MÍmP^Õ Ùyµˆ¼#ÉË:å£;J×7h#FŽ{G¸ãîUú±ìYp4‚I¦AÞõ RÈiüP{ðiåÕM˜ZÑAAL4`§(*“ËPffŽc×§ßÅÙ q…_È+®‡Kùu­uu;¾Ëµ+dÑëBö¥%p!áØûu‡ü§^ú"F×Y®ý¿²Ž·×ÊH?5»šÿž4Òí­à3%|TC0>ЭÙÓ3Aº gû±·¼B–½!:· „:n¸ê].¬ƒôK5]p»LGvkH E­Ë"•ϬûP¿7ˆ–½-{iW\¯13'_>¢ âÃ|áÔ…r½„´$*"s“Ëâì Ò0Æ»‰q#ÜÁw°dæÖ@f]M÷S&†äÛWr7Žn>û§ã–Â¥¬´NùÏ2% ‹e5*Ü8= T4n–”7ñ4ØÕF…ºÂÑÄb¨ª%KßXÃõžž 6è­ {.ÃÜî©?XöFÐXžŒ´¦ó†´KÕp1«ª£ðºè²25íç´:¸qèŸ{eœ8–ÉgOÁúÛaõÊ¥ÃòGF]¡“ißhÝw¼=™VÃCü–mQiŒv…Aƒ,à·ÓÅ<"‰`X ®Çg‚¸¾g˾×nг×ç6ð=ÌšèíÜÄ”rQBÓÆVï`'hXõ÷ÛÇÞÿ¼¸ú~¸}þˆ=bfÍשHZ[À2­ß }öÿî…s ’°hvû³/¿ù1Œ£ý­ß •ɺ]g¥g·T÷RjkøíŸB˜6ÁŽœ*‚¢r"|=9 D<D÷½—!YöF'{}¹q¦Dy‚½µ%¤dVvé‚èññ鬜 _çWÞþÄ å`o¥]¯LG¾ÐÔÙÚã'/€˜I¾pàXTT7ÓÃA\ߣ|dôR•9Zö½/#Äß‘/uz*¹¬GDgEл·…ýé9Õ=b0dèaŽÞÀ×ÃÒ²«:…žÉzˆ¬‡›ïêÔ¶æ68òOÌ›ê;~Ɇf ÍìÝ󀡗Äõ½&ÆÞ»q¶eoaÎ-“õ*ÙÛZÂÄ‘pš=Ÿ”T,Öª˜ ìœ¤<µ*R[Çu_F{â¢q…ÉãI%0"Èìl,”‘9ÆJV–Lé u„ÂÒ¸U¥xƒVí>¤S«" oÜvHêûÕ“¢ÜšºV8y¾fOöÕªí]» ÌAn»vî„ÐÀ ø÷}÷)ó^^»–ç=ñØcÊ<Üyx|uuµr[5©o2ìIž2™é’9ÔÇ,Ý83®ð”ŒJhj–êE+öÆ®¬n‚=‡s`¨DG 晸z¦!×sv°7[È+¬ƒ½G.‹v]éôR™ºëJ%;+¯|<í!ÄÏ Ò/WkÐc,¾¿yñbˆß²8¹¹¹œÈã·|Æ÷}·sÄÞ}7ÿû#"#øñKo» Ž;+ã…ElÛßߟƒç›•+Œ,{íÜ8!‡3.eÏPË;Íþıü#†vãàZ󨲸ñ]\||bɱ‹§M5';¿–'„‹ã N‚.ŽÖü-Tñ§{”T4rE’t±^¼ëJ—N#_µói0}¢¤æÙëîÆ1¯µqž}þyFà·ÃÆ  %9œœàtRŒŠ‚'™µî§ s<±}ÇnáÇÒÆ ï(Ë™4yß×WÜ8æ¶>‘ÔT>{FècØWLì÷tÕƒÉÕ®at¿ Œ§¿À¬ú6©¬Gîj§¡-`\2¹¬ªÙd,Ô];e¦¥þQÔ¿´²JÊù÷PÏeTšüAkIÇÉÙV(¬P!I -QD2#±C(óäìf¡ãû1ÒäÉÊã î„0£h¼ï™³gqKñáæøß×ß|¸ï~¦Rø~<–=Ê ­ú•qq\¶ëÖ¾d|gØÆYzËH8¡ ‹jáúY!rc,¥þ>™¯Ù3B?£ ý@±¼¾‡¤¾vü³{Ee ½vAôg–é,ÿnÎïFŽÉ™•0*Ì Î¦›žìÑ… 'òƒÉ éûîãÅ]`L Ìš=›[¨˜÷㾽܂E‹4öîJKÉ󿂿™Ñ›6orKÏÎê”2Cyá(@8NP´Fuã à8{_o°fÜxúL,˜ƿӱýëóp÷Qs¹ Šê´wã(,ûNÕ` @t°¹® ù ¶ƒKy5— ã¶ÒO’:ò‹ëaö•~|-æÓGæ {ÉÉz&#$õ×Þ|ƒoãd#ó-¾™+ThÑ£oZðO#p¿q†ë2³[^W[ ,}S£t¿UUPXË’;â·?r`˜¿|Ù•²òQeYõ†Ô»ëÜ:Yöžvp‘Y‘R©ŒXtõº/õô²î.(©wkÈ7ƒœûs—ÂÍÜ ‡èr@wL#öçÎ㮺à¿UÉjþÜ¹Ê IT†®Kµ]¬O$TÝRÂÄ©)Üjª.49qzµÔ}öNŽƒÀÑÑšÿ>u¦àLÇý{I‡Æ¦6íÜ8 Nû“ÈR K•HüмxõI[C(P'ûAН1É JÀ ?G~þ¢Ó®I17Áu‹0{¾”~¶ð ‰‚¥½Þååuòwqá|FöC<ì!¯¸Á,´îr"H´ÑÂÏc¡°èy»2’GÂÜ6èïÇsŒã¯é‚Ðâ™ÁÉÒ'{œGË C«ç#0'ZU‰e÷«I¡ Še…eèªx¥Š\f¹£š¯¶×ƒ§ïùì}¼!,Ô½Ûcò Òµ'{OÐf3b¯b$¿›¥G‘è‘üqWðëJ¨Îƒ8©Úê7mÎ2–îdä™_¼÷8\8ó'Ì\ _ÇæÛO×€­#¸¸{CêÙ?¡(?¢&Ì‚n ~ÿå –¶ñãp‹ò2 ©±llÀÛ/D¹}Ãmÿ£'΂íï?9IÊýøñÀ3[¡ª¢íÞa£®„¦†Z8ñûn¾ïßl^ûKFê—çb™WÍ^ içþâÇàu¶½ÿ8Œ¾bŒfuû&­._ð’qw˜Äl$'Md¢‰À‘ÐÇll?sG²×ŸÜ%†®*Å`4 *4a>â3Fü8*.ÆÈ£Û 'bÑÇÑž#(LŒ—GÙ ù«µ:q Û¨dÐo/Œ&0²#s>ܼYމ±Vñû&•]AÆpãðs¥2½» º>e§%AAîNžHÚw<øºr¾ ±¡RY>’,’.¢¢¼ˆ¯O#œÄ;uö28z`üq`;\1ma‡íŠòBÅÂeòÅ>CÙuþÀý·CÒßÀË/ªX¹˜ç9$XIê•e…àä⩼Á…ËŸãçò‡=h4|ýÑjðbÇßzÿkó¼|4„ÊB}?F-ah%Ž ÐzÇ¿ºÌ¨–IhO ëÄz#ÑcT”..4cGã ¿ÜÉÉššZ!;§ .¦•½>y̪DŽ?Ö—µSäÊ·m¬-aŲ(¾_Èë dŸ Nìø¢È_ªåÆy{ûùØŸ5ÚÞüâk 1¥¬KWŽ®.ˆN¾?ZÀšðíæÕ›uÿëUðŽÒ÷Ö¦Í¼Ï ‚ãçK ·‡•ÇÝ)ЬPÑ•€î$u‚†úHºÉŠ?$1´PŸµ*ÐÕ€e¨µ:q ÛHŒüAÊÍã2¾úPý­Z.ú¼Ñ-‚“ÂHZh1ÇL½Zé–è ;ÍîQnØ÷ý½úí覷JôØÙžD"aÕÒ‘æ?øä¤N¼„˜quŒÌøé)mOOxðÞñšê#J]Ü87 ü|5ðѶoÎCssÏ“´ênÁWÿ‚zeÑ“Àò‚|²öRoH¦+\.ªo;þ×Ðl( X£µsï«ÊßmmR½pW¦‚ø—ÊÄ· .±ç·½øž‘”‘X‘´‘v1bGâE¬Â ?h XǬQ´L‘è5‘†X7Z¬]Z¢šHIpC`ÝÑ5‚ C ÑËGx2ío?ƒÐæ½q…ÛgÏQ`ccÅ 5ëRìÞ›Êó}}ùßü‚Z£Ô燽rwÑ_G(-kEì=’½ñ,Ūg2‚Ql¡º†8!ÉÏ™â3 nhVEcC-”È;¢‡ow±p­ÙXÇò3yž¾Á`­ÈKÀxîÑ}³2ƒáªëïíñaÿƒ[Z˜Åõð ï$èMôÊŽ®<‚CYçÆ¶ihÖOŒ½ª•‡$à¯ú£[B°ðq!L"¢uçá~œ D%€îÜFKÁ˜{AA ›Bx H«¡»"*E˜`ˆ ‰}úÔ©ÊN.jãÆ1fØŸà–jwñÈÃ"ŸÇÔ'e»)Ükú–¡¶Ê¢TååN'Gk˜0Ö·ÃþÝù©F©ÏCÿßå¾3çŠàè_âÖ(R÷Ùã2 k´ ³ìʒѸN#ÓZ>̺Ïíá0}ZÀÕòÃgÏðßHèwþçNø_½·j*‹yþ‚ë`Hàhy'(Ì„¬ r‹3hĤÄŒ5ÿ§ŒÎÉË>'ï¨L&X&'W/žäÛEÜïäê %Œè Øñ¨|„‰ê¬‹Ç ¬P®ˆÂÇ\ÃëY¤åÈ¥G’ï|ôøHHË©ÖÛw 4Yyê‘5ª!„Â9B4Íž}ûº,»;ë±+ëR5ÝD]•ç£u¾qí&»ž½0î*WÀQ‰É•a w¥á„+*UMá—ŠMA â›´x.FØ rÆ–‰±ö‚« !¬¥£þ~CoØÞØëÙÿS*8;YCÔ(/ðlÏóJÊê!é\1’éõ-‰¬Ï{›OjÌt¹³C!3«Ré×ׯs„~KØK²Õö‰V½™5?‘\G{Â¥.*/ÓùáèÚª;$pß÷Å[÷r¢FÆ„Œ÷ÔÐPñë—‚µÜ'¹á>hnªƒØ'·Ã‰„pîø> b¬T’´0q›rúW8udŒ›~OêÛBÅ0ò%#åúæUc?íÆGàÒÅãðÕ;÷±íl{¥öî©nI¾ë5‚\™E3Œ w'äÀ@úë1i ùzöú‹ÆÑÆÂ—/s 'u|·@ËÄIRTš¸\ÔNÞê ‘ÂGTDZWóÑFü Á«Çó#pÔƒaž¨8ð7Îqèk4 —h-Ï_~ÇhFö6˜TÇOä+Öîº}4#û&ØúåY£Ôgâø!ó£GË5JJëE•¥nÙãbh1ŒØƒzwºŸ{6½‚Y’ƒ!Øß‰<¤·.1ujS ÷œ·üe8øµÜÇ>ëÖ§`ïÖg•\U.·òQXZÛ+—eAey·øaQ3ÀŠí—*Gò×åÛ£x4l·µoã¾êŠ"åH!/ë,/oβµ\Ñh\NB‹¼ôäÙWÝ3s²üïï| ˆKãXqú„¦y‰öýäÅŒT„cp~Ep© /n©†W Ë#ë¢»ë“ÆŒÆñâĉ~×!/¿=ê)—ýÎÈ®„›oC|:ì3vŸøé— ­®ß)Ξ~LoׯéíDÊw¿fÊÃaS~24vå'é‚c0 bDê0ܽ9Ñ^»dµœt»±<¼$[WÏXòð&8~` |ú’ü5„aáášÅOrÒŸ³ì%ø›í;ôízptñ„ШkÀ{ØHpó â qÅ ÏF §ûšÿu÷âûí=ù~~-V&*’W̯¡‘pæ÷o`ÿ6ùR³¬ÌÑ3ÀÅ+P«‘LdÏR_¢¿ÒåælIdÕ÷Ú‚“ÉŒçÆAÿzW;Þ(F÷ŒêËM‹¾}a™ãg˜•ŽV½ð–-ž‹ç#¹ãq³s%HîHö8ŠÐûÒÇzx1M›ÑSn~5OHêh9gdWÈ â@7ðô°Wî7F}ŽÈÓ‹%†èÜë>MÔ9ÄIÀ„Hpí{ÓuvAô´CŸ°¶¬®¬Õ%µÎQ«“5|ûô}¢Ÿ­|Õœè ¿Ÿ.d©Hìá ÏÜÝÉíüöëÄK!®œà— ZöZ"aÕƒ5ÕǨã=M/Uá`ˆ%¾·òurbµóÙ÷¾bÇÏ—‚—»Ì»z(üx$‡XK·UOUts´­%âr^5K5<íÿ5 ¦Lôƒ+'úéFöŒÔ—ƒ|M\âØUáÂÁ´FáÖÑ¢së·¡wΘñ>ðà-‘ðîŽóŠ€õ¡ÌĬë:ÔîY›v]„J=ÄTä+…áÆ1´QßûoÐjWÀ­Ì¢NË,‡ý‡2•kÆ»0¢Ÿsm0 õw†7Þ=nðúT2²×t?Žçò¤ T-ûx!âFaÍ käl5”/J>QYù5ðÜ}caó® ]/…ÜX=*8\WÂþ9WúCôðÁðêgIÄ*† * åz/C=ðŠ–§¿±ñ8_Vø‘û®èŸ–Q?:ÑûFÓâ|ggk¸?v,ÑË…*®™ ´ü7Ç'jïÆQ¹TÝ6fèeWÈbC˜W·œ–Dðü\ê·¬SÿÐÒuegckî ' àÃoSˆQ h•3ô²¿ Qfä%ޝšäÏ¢¨¤š˜u?ŒYô^ž|Ò]+ƪÆü õ¸~V0ÿ»õ«³ðÄÊÉàïç$ª.Vº¹±Ý8êxÿ›ˆrµŒ‡÷¿M†¼âú~CÀ=)­êÐÍwÍ å¡~om;Ç—¨ ’§däÆÑƒlìOÐŽŠð„/w&w"R/Fô‹æ‡MŸ6Z}rr«aï ˆ½c4W:ßíIå+q66µò}Z[öúì܆Frf%K‰pó5à=ØÞÝ‘ ìÆû2“G{Â’™AðÉî‹<Ú‰`–=é=ŒŽz4Bµ;ÿƒ-—2Ɔðwc ])R#Ôgt¤'D±´)Ñ‘P\"_3lÞlùz\¸-¶!{cZ1ß*"t–Ì ow;ظãÔ7¶õ)6Éß5/ ¾=”k?N$ö0"¤@´æ`Ùkû`ÏœÈÉÖÖ¶#M&/–Ƕ¡>9—«¡ªª‰û{W«[êz©·†1AÏþö |ѱ[g…@D°+løòä×ø‡äÎy¡îÎ'µWoü‡XÃ$l/±ê%iƒžäÓûU/µ;¸ö%+«!5£&ŽÂ'E[âÁëb”Ïž_Ò˜5/ç5/O{˜]|ºM\T¼,{ÓuܯÊ# ñw‚UKGAbj9ìdÖì@zÔßËî¿y¡üü§4øþÙD&µJŬzIèIöþ´ÚaÝ[*£Û&j¤'Þ«§ åIu¿1êóÛ_—aÙ’QÊ‘F#S8{~I]Ža,{3èé¹5ðü&¹Ïíº)þ0{²ì=z™§þw>éêáj [÷¤Áúx £4#ÞÈ\œ"ÓC;芊ª&8òçežôÙ/´ÁüëB9ÑŸ9'_}wÌ(/ž÷Æûº-— Ÿ†13å¿ryâÄÏH‰ÿrq|¾7Ê«šúì€~øyS‡Beu3üpäwÕ˜ÿœ/ #=‰Àþ•q¹çh‰sél4êLëR>å½çss•iYŸÏ¿>ÇC.ü¸? ¼=D—Óç'hµÅ‘S…9’õC’[g`_×Çü[çz6ºh„¨H/nÑsQæ¯}ãZö}dÐZVÝÄÈ)TWÿ1&2Ëtt¨;ÿîê±³ÅLTu²7*ÌÆ„»Cø0gNìg3Ê9ü™TÄ“¹ß}˜é wÌ °õ7á`ß"¹õNY¾ÇdÒÕÛòÚ“«yñ’Øú¼ðÄTþ}ôÒÊøúöHö äÀ‘?ćOÈÓw;ØÙ´ žÔ4Ä‘[]¡l¨íçåÀ}äeLÓ–±a:~/'€ëYcä×ua™[ÁPoùËqÕÎÖŠýu{ö7 óóØyørXzn5\Ȫä©O“ݹžPfH^(¯@Nû™zäda¯å6:Ô nš8 ä¦|¾?œÝáeISXÒæbÙïø.¢GyÈðÁ=Ú›'DàP(dFé…4q£û~c( • ×èÑÉ™îÁMe£¢5›OuÊ÷c ÏÞÆªOß[ÚeùüΰøŒ†‡8¬Ÿ¹yê›ZõNê]{ÌŒìE—ÂúAŠZ_pu¶áä?ýªaöײ§ÐBÈ-¢w tSžÕ$»MúB}ÐVÁ$VA¨Ð×'h{‹C ˆíb}¬¨„鯑=@ †½l@ׇȞ@ ²Øõ1ÙøÔU/²?/R÷"æÃ®»>dÙ„s{ÿGJn@ ÞȞ@ tbW ½ì€€ÀØŸøŒKÙ—t-tÛÞ ,c õ.`$,›2ƒ¸¾²g$ÿ"#|––+WäÚÀò·Š-TJoU3ƒ¹Ñ’ÔÔdDÏþıËR¶ÂÊßÊòäÛGº+´Èž@ ˜(ξ3¢Ñº•ÐIFôÓ¿BÔMÙ‚YÁJ…Ðǰ?®,m`¿ãTŽÁ¼x–Ã_ÔgÌɲ'dÙ›©e/9#õ Ü4nÚJ>{`n Ÿ}»e˜‘<Î`Dz߱ê*öé•ì¯éÁA¿È/®‡Ä®ŒÚÁt²§v0¼\ -{ÌÑ]#镯’Š[ÏÖ½7ÐðýÛÔ¦•=µƒáåj®ò5‡ ÚÝ̲?Õ,{Ñk݈µì©sìÉÐÊ•Fí`:ÙS;^®íò5³[2ƒ8û›z[¨x²§>l çBK²'™™JöÔ†—+‘}da–jYÑ,-ÔÆgß&ò.¤Ô» 6QeWÈC0Åià6™¨$“šFÈÿ¾ï> ‚¥·Ý¦ÌÛ¸aÏ{â±Çø6þÆ„Ç ÈÍÍUæãñªç ÛæòdˆmS´C¿–¿–²7F;2ðÙ–-|{þܹP]]ÝgØ^YvE®¦JæPu7†YÆ+&d…0Ùß8±a—Ú¹qL£j7mÞ €î»ÆFE³³3äåæÁûöBddd‡c;Æ èÙçŸç‡“³ÔTטùs!ÓÒ##ù›HöÆl$öéS§òߪ²NNNæŠW+ÊxûŽ|?Ê<%9>ÜüÌš=[Ùn±w¯€E‹³ß÷ñ¶0sö,Þ¾æ$Wrã¨Yö ?}~¨DaÙ£%¿[Aô[µ)‡[b’)‡UØqWÆ=Ê;8vVì¤êDƒØ³o|·sŒ‹ÃÏYq÷Ý}à Ù¦j‡~+-eoÌv@¢¼ýýý•²FezãÜyü÷¤É“xÂc„<$}<ެPñâ1¨|ãÙA zÌC€ùæ W²ì»°ìkÙïB.Ÿ$ŒÞšÕ6ôR´eo"¶G -ÁšÄ¿níKÜÊ´zð\“ù7eæë³ïÏò×VöÆl”#ZñHäèÆyíÍ7àf&'a´´2.Ž‘ödNêHäl‹í;¾b–ÿí3õj¥Õ/´0BÀ6Ee²kçN8”dVr5™“ÜÌê#Q9Æ×'¨=.„¶†mÿ Bö±b]9«ßúKÔǯì3§øA¿È¼\ ïL}<µƒédoN퀊 †‘¶#xõQ–àÎI8ú{%ŠŠ!%¹u?Ù\äš°þ?S:-ï²|Õ>Q¼d$l}{®¦ú•í¹e¯°Øƒ©? íQ8—D¿@Aüâ}ö"'š(øÀ€Ö¥“}Ô¦“½9µƒ&7š@èèžñc$¯>Zò×gnr%Ã^…ì0BGýÁº×¦œ , ?#uBs¥sž 5&нÂ,VMÖª9Ⱦ/´ƒ¿YZœ0B_¯)BïÔCÚÌÉbÐçÄ Þˆ‘(w!á°ßœ`a˜2#LÐ ýû½:)„Sš]°‰äJБì/UieÙ‹Iºh¶\…ðø±ã< '0Ô '—ßíÜÉ'“ð/ Jˆ×Ƈ@ØÆ =LÂCóòÚµÜ/©Ûd†ùx^ Ãý˜¿KQ¾@2¶ºèj¯%¦p]¼†ðЪƗë¤pE¶®í :ìî ¯C²Bà=©Ê“°OPÜ‚AªÇÛãñB{©_K؇åa¿Ž&k1/…‡ÞëØ±ªåáùB› ç÷t/†}oÚ}ä(;ì38ÁMêÊe*„¯ªö«žú>ž‡åâqBŸä ú¾ž+´™ÐÏc¾ªŒU¯+lªïZèS®šÏ7]2‡úXIJo3ÜÇK0ZCžcÇÙ¥ w ý¢à~ŒøÀ}B쯧NZè“Ä}XVÂZ:Ä:jü–Ïx‡Å°?T,µ€û1ŠáÉÇçÇ ŠF`H¡PœøÂ(!Bþ¦ûË.2™ø6Цðž»»××ß|SI˜B̶pO(aO=<ÏSÜC™`¸¥\yï‚gž®ÓäŸp-$sTüèºÃcð7þê)L ÀöT=C97nx‡ª÷¦é^ !ûÞ<(S$i$zŒƒGY:pPù| IcÝQ Nêýª«¾ÿWÇ!"2‚÷}ù¹5Ê}ò~ÿ¨Rf(Cu •j<»¢êü¼J®äÆQóÙkZÚX1ÚZ6†ºYMn??xMñpª[>Hø0ç!©êì´êob‡Å8œ#š<¯'æZXG CÅ>òy‡<ãùìE‹´êC!y=E`|Èd"·ànï¯N©$´‘è-¾Ycl½j?Àøîöz¼ÃI´¦˜o¬3Z¯X>ú¡QÑ"ꢰõî³×á<ÁhŸ&Ô(æ-tÊR(+ì«BPïçމm.W¼“ó&)½2`ôâ³77×”‘¯'Q!ûÃݨ͗ª\{DTˆÓÜi0oz€Áý¸ª…@y]ƒrè/HÍ®„w¾ëlŒvÐÖU‡1ݨą‘œ:Éw§,ú’ì͹ºƒ@æªâöÍ@® KHò2•ì© /Wò⨑½&2Wøðo2T£%c¸á.}ƒ¶oÈžÚÁðr5Wùšò Z|Ç9´\ÎX#Ù‹Ž³'Ì Ò*Ξ`*ÙS;^®íç›Ûý˜Î²_¡BüøåªÐä&CÝ2†jÓ‘¨L'{jÃËÕ\•©ÉÜ8yÃþÄ‚üíÙ ŒäÝ ­¿>ÎÁ´ v v ƒÜ8J$@ûËTŒüUÔîKUd¢‚9A•ìÑ¢gi¡â7"Zaékµ¸ M4sùìAùÁñD…ëf…úAŠ—­¢Å.ŒÖF\O Ì äÆ‘?2^ÙÍq•ŠcÄ‘=¹q‚¹‘ý¯'{f±Ÿa–ûB–pýØlh÷ÝÇ€<s!#¶Ð6rã³³ìv}$†(tÖC&ûH@ $|þ @ @ @ s„A&hwÈ¢ Z`*$,œD´j°2D¡Í­m$Y@èïdßÔ,%ÉBÿ·ì‰ì ¡ß“} ¹q,{@ ô²o!²ïËé3&Ææ68Ÿ^6Ö–0*ÔïûâÇT(.o4Z]l¬-àÞÅ`ËêpŽÕ¥º¶<Ým!l˜ |³?ƒsËœe]q¾(t˜3x¹ÛÁã“øþÿ‹â…mÈ^o–=¹qú*†ù:r¢/*«‡-ß_Tæø3þsWÜyc8¼úÉi~ÜÒyaÐØÔ Iiåàêh ᮚ] »eÁÌÉ~0a”ü~²ŠÊà†iÃ#}ßþ"©Ó¹lÛ{°½ò\UØÙZr¢G ÂÉ)¨åé «OUm3Œ“+! Documentation

Apache Rampart/C Documentation

Getting Started

Manual

Configurations

Additional References

rampartc-src-1.3.0/xdocs/docs/configurations.html0000644000076500007650000004670511202453377021773 0ustar shankarshankar Rampart configurations

Rampart configurations

Engaging Rampart/C

Rampart/C is deployed in Axis2/C engine as an axis2 module. Just as any other module you have to "engage" the Rampart/C with Axis2/C. All you have to do is to add following line to your descriptor file.

 <module ref="rampart"/>

This allows Rampart/C to intercept messages exchanged via the engine and add/verify security claims. You may find several examples comes with Rampart/C under samples/secpolicy/. There are several identified scenarios that demonstrates Rampart/C features. This includes

  1. Inclusion of Timestamps and verification
  2. Inclusion of Username Tokens and authentication
  3. SOAP message encryption/decryption
  4. SOAP message signature/verification
  5. Detecting replays of messages

In addition to that, if you want to provide Secure Token Service (STS) functionality to a service, add the following entry to your descriptor file.

 <module ref="rahas"/>

Security policy based configurations

Rampart/C configurations are based on WS Security Policy Language. Thus, we need to specify these policies in the descriptor file. For the client side we place them in a separate policy file, whilst in the server side we place them within either the services.xml or the axis2.xml.

Client configurations

For client side configurations, you need to create a client repository. This is the place where you keep axis2.xml, libraries and modules. When you create your service client, to invoke web services, you can give the client repository as follows.

svc_client = axis2_svc_client_create(env, "/my/path/to/client/repository");

In the axis2.xml, you need to engage Rampart/C as follows.

 
 <module ref="rampart"/>

Then you may place your client's policy file in the client repository. Following is an example of a policy file.

<wsp:Policy xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
    <wsp:ExactlyOne>
        <wsp:All>
            <sp:AsymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
                <wsp:Policy>
                    <sp:InitiatorToken>
                        <wsp:Policy>
                            <sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
                                <wsp:Policy>
                                    <sp:WssX509V3Token10/>
                                </wsp:Policy>
                            </sp:X509Token>
                        </wsp:Policy>
                    </sp:InitiatorToken>
                    <sp:RecipientToken>
                        <wsp:Policy>
                            <sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
                                <wsp:Policy>
                                    <sp:WssX509V3Token10/>
                                </wsp:Policy>
                            </sp:X509Token>
                        </wsp:Policy>
                    </sp:RecipientToken>
                    <sp:AlgorithmSuite>
                        <wsp:Policy>
                            <sp:Basic256Rsa15/>
                        </wsp:Policy>
                    </sp:AlgorithmSuite>
                    <sp:Layout>
                        <wsp:Policy>
                            <sp:Strict/>
                        </wsp:Policy>
                    </sp:Layout>
                </wsp:Policy>
            </sp:AsymmetricBinding>
            <sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
                <wsp:Policy>
                    <sp:MustSupportRefKeyIdentifier/>
                    <sp:MustSupportRefEmbeddedToken/>
                    <sp:MustSupportRefIssuerSerial/>
                </wsp:Policy>
            </sp:Wss10>
            <sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
                <sp:Body/>
            </sp:SignedParts>
            <rampc:RampartConfig xmlns:rampc="http://ws.apache.org/rampart/c/policy">
                <rampc:User>Bob</rampc:User>
                <rampc:EncryptionUser>b</rampc:EncryptionUser>
                <rampc:PasswordType>Digest</rampc:PasswordType>
                <rampc:PasswordCallbackClass>AXIS2C_HOME/samples/lib/rampartc/libpwcb.so</rampc:PasswordCallbackClass>
                <rampc:ReceiverCertificate>AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/bob_cert.cert</rampc:ReceiverCertificate>
                <rampc:Certificate>AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/alice_cert.cert</rampc:Certificate>
                <rampc:PrivateKey>AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/alice_key.pem</rampc:PrivateKey>
            </rampc:RampartConfig>
        </wsp:All>
    </wsp:ExactlyOne>
</wsp:Policy>

Server configurations

In order to engage Rampart/C in the server side you need to add following line to your descriptor file. This can be either services.xml (service level) or axis2.xml (global level).

 
<module ref="rampart"/>

Then we place our policies within the descriptor file as follows.

<service name="sec_echo">
    <parameter name="ServiceClass" locked="xsd:false">sec_echo</parameter>

   <description>
        This is a testing service , to test the system is working or not
   </description>
   <module ref="rampart"/>
   <operation name="echoString">
            <parameter name="wsamapping">http://example.com/ws/2004/09/policy/Test/EchoRequest</parameter>
   </operation>

    <wsp:Policy xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
		<!--Your policies are here-->
	</wsp:Policy>
</service>

Explaining policies

Here we will explain how to explore the various security features available in Rampart/C. We thoroughly recommend you to go through the samples available in Rampart/C in order see how these configurations are combined together.

Using Timestamps

To add a Timestamp to the SOAP message, user has to specify it in the policy by adding assertion

<sp:IncludeTimestamp/>

Beyond that user has to specify the duration of the validity of the message. This can be done by adding following Rampart/C specific assertion.

<rampc:TimeToLive>360</rampc:TimeToLive>

Here the time duration is specified using seconds. This would add a timestamp as follows to the security header. Note that the time difference is 360 seconds. If the message is not arrived within these limits, an error will be thrown back.

<wsu:Timestamp xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
            <wsu:Created>2007-06-18T05:10:01.448Z</wsu:Created>
            <wsu:Expires>2007-06-18T05:16:01.448Z</wsu:Expires>
 </wsu:Timestamp>

Using Username tokens

To add a username token to the SOAP message, user has to specify three things.

  1. The user
  2. The password type
  3. The password callback module

This can be done using following assertions in the policy file.

 <rampc:RampartConfig xmlns:rampc="http://ws.apache.org/rampart/c/policy">
                <rampc:User>Alice</rampc:User>
                <rampc:PasswordType>Digest</rampc:PasswordType>
                <rampc:PasswordCallbackClass>AXIS2C_HOME/samples/lib/rampartc/libpwcb.so</rampc:PasswordCallbackClass>
</rampc:RampartConfig>

Also it's necessary to specify inclusion of username token in the policy as follows.

<sp:UsernameToken sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Always"/>

Password callback modules: User passwords can be stored in different ways for different users. Passwords can be in databases, flat files... etc. Considering this Rampart/C provides an interface for users to write their own password callback modules. User has to assign the password callback function as follows.

rampart_callback_t* rcb = NULL;
rcb = AXIS2_MALLOC(env->allocator,  sizeof(rampart_callback_t));
rcb->ops = AXIS2_MALLOC(env->allocator, sizeof(rampart_callback_ops_t));
rcb->ops->callback_password = get_sample_password;/*Your password callback function*/

The signature of the password callback function is

axis2_char_t* AXIS2_CALL
get_sample_password(rampart_callback_t *rcb,
        const axutil_env_t *env,
        const axis2_char_t *username,
        void param) 

Please see the password callback sample available under samples/callback/pwcb.c for more details.

SOAP message Encryption

Specifying encryption options are a bit complex procedure. Thus here we wouldn't try to explain all WS Security Policy assertions. Following is a sample policy file that is used to encrypt SOAP messages.

<wsp:Policy xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
    <wsp:ExactlyOne>
        <wsp:All>
            <sp:AsymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
                <wsp:Policy>
                    <sp:InitiatorToken>
                        <wsp:Policy>
                            <sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
                                <wsp:Policy>
                                    <sp:WssX509V3Token10/>
                                </wsp:Policy>
                            </sp:X509Token>
                        </wsp:Policy>
                    </sp:InitiatorToken>
                    <sp:RecipientToken>
                        <wsp:Policy>
                            <sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
                                <wsp:Policy>
                                    <sp:WssX509V3Token10/>
                                </wsp:Policy>
                            </sp:X509Token>
                        </wsp:Policy>
                    </sp:RecipientToken>
                    <sp:AlgorithmSuite>
                        <wsp:Policy>
                            <sp:Basic256Rsa15/>
                        </wsp:Policy>
                    </sp:AlgorithmSuite>
                    <sp:Layout>
                        <wsp:Policy>
                            <sp:Strict/>
                        </wsp:Policy>
                    </sp:Layout>
                </wsp:Policy>
            </sp:AsymmetricBinding>
            <sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
                <wsp:Policy>
                          <sp:MustSupportRefEmbeddedToken/>
                </wsp:Policy>
            </sp:Wss10>
            <sp:EncryptedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
                <sp:Body/>
            </sp:EncryptedParts>
            <rampc:RampartConfig xmlns:rampc="http://ws.apache.org/rampart/c/policy">
                <rampc:User>Bob</rampc:User>
                <rampc:EncryptionUser>b</rampc:EncryptionUser>
                <rampc:PasswordCallbackClass>AXIS2C_HOME/samples/lib/rampartc/libpwcb.so</rampc:PasswordCallbackClass>
                <rampc:ReceiverCertificate>AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/bob_cert.cert</rampc:ReceiverCertificate>
                <rampc:Certificate>AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/alice_cert.cert</rampc:Certificate>
                <rampc:PrivateKey>AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/alice_key.pem</rampc:PrivateKey>
            </rampc:RampartConfig>
        </wsp:All>
    </wsp:ExactlyOne>
</wsp:Policy>

In the above sample file we have specified the algorithm suite to be used for encryption. Here the algorithm suite is Basic256Rsa15.

                    <sp:AlgorithmSuite>
                        <wsp:Policy>
                            <sp:Basic256Rsa15/>
                        </wsp:Policy>
                    </sp:AlgorithmSuite>

The parts to be encrypted are specified using following assertion. Here we have specified to encrypt the whole body.

            <sp:EncryptedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
                <sp:Body/>
            </sp:EncryptedParts>

The receiver's certificate is specified as follows. Here you have to specify the full path to the certificate. The public key of this certificate is used to encrypt the content.

<rampc:ReceiverCertificate>AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/bob_cert.cert</rampc:ReceiverCertificate>

To decrypt an incoming message you have to specify your own private as follows. Here you have to specify the full path to the key.

<rampc:PrivateKey>AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/alice_key.pem</rampc:PrivateKey>

SOAP message Signature

Similar to the Encryption, to apply the signature we have to specify the signing parts, certificates and keys. Following is a sample policy file that is being used to sign a SOAP message.

<wsp:Policy xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
    <wsp:ExactlyOne>
        <wsp:All>
            <sp:AsymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
                <wsp:Policy>
                    <sp:InitiatorToken>
                        <wsp:Policy>
                            <sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
                                <wsp:Policy>
                                    <sp:WssX509V3Token10/>
                                </wsp:Policy>
                            </sp:X509Token>
                        </wsp:Policy>
                    </sp:InitiatorToken>
                    <sp:RecipientToken>
                        <wsp:Policy>
                            <sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
                                <wsp:Policy>
                                    <sp:WssX509V3Token10/>
                                </wsp:Policy>
                            </sp:X509Token>
                        </wsp:Policy>
                    </sp:RecipientToken>
                    <sp:AlgorithmSuite>
                        <wsp:Policy>
                            <sp:Basic256Rsa15/>
                        </wsp:Policy>
                    </sp:AlgorithmSuite>
                    <sp:Layout>
                        <wsp:Policy>
                            <sp:Strict/>
                        </wsp:Policy>
                    </sp:Layout>
                </wsp:Policy>
            </sp:AsymmetricBinding>
            <sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
                <wsp:Policy>
                    <sp:MustSupportRefKeyIdentifier/>
                    <sp:MustSupportRefEmbeddedToken/>
                    <sp:MustSupportRefIssuerSerial/>
                </wsp:Policy>
            </sp:Wss10>
            <sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
                <sp:Body/>
            </sp:SignedParts>
            <rampc:RampartConfig xmlns:rampc="http://ws.apache.org/rampart/c/policy">
                <rampc:User>Bob</rampc:User>
                <rampc:EncryptionUser>b</rampc:EncryptionUser>
                <rampc:PasswordType>Digest</rampc:PasswordType>
                <rampc:PasswordCallbackClass>AXIS2C_HOME/samples/lib/rampartc/libpwcb.so</rampc:PasswordCallbackClass>
                <rampc:ReceiverCertificate>AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/bob_cert.cert</rampc:ReceiverCertificate>
                <rampc:Certificate>AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/alice_cert.cert</rampc:Certificate>
                <rampc:PrivateKey>AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/alice_key.pem</rampc:PrivateKey>
            </rampc:RampartConfig>
        </wsp:All>
    </wsp:ExactlyOne>
</wsp:Policy>

To specify which parts of the message to be signed use following assertion. Here we have asked to sign the whole body.

      <sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
                <sp:Body/>
      </sp:SignedParts>

Optionally if you need to sign a header you may use.

<sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">	
	<sp:Header Namespace="http://www.w3.org/2005/08/addressing"/>
</sp:SignedParts>

The algorithm suite to be used for signature is specified as follows. Same as encryption.

                    <sp:AlgorithmSuite>
                        <wsp:Policy>
                            <sp:Basic192Rsa15/>
                        </wsp:Policy>
                    </sp:AlgorithmSuite>

Replay detection

To detect replay attacks, Rampart/C has it's own Replay Detection module. This module detects if the message is a replay of a previous. By default the RD(Replay Detection) module is turned OFF. All you have to do turn it ON is to add

<rampc:ReplayDetection>N</rampc:ReplayDetection>

policy assertion to your descriptor file. Here N is the number of records that must be kept in memory. Greater the value of N is, greater the chance of detecting a replays. Rampart/C keeps records of messages in a list and process them on arrival of a new message. A record is the concatenation of message id(wsa:msg-id) and the value of the timestamp.

RECORD-ID = MSG-ID + TIMESTAMP

The message ID is considered to be unique to a particular message. But for this, user needs to have the addressing module engaged(which comes with axis2/c). This is NOT a MUST but is the RECOMONDED approach. One can just survive with only the timestamp. But shouldn't forget the chance of generating two message at the same time, which definitely make them suspicious as a replay.

rampartc-src-1.3.0/xdocs/archived_news.html0000644000076500007650000002020111202453400020574 0ustar shankarshankar Archived News

Apache Ramaprt/C Archived News

This page contains information on previous releases running up to the latest.

13th May 2008 - Apache Rampart/C Version 1.2.0 Released

Download 1.2

Key Features

  1. Ability to send and verify UsernameTokens with
    • Username and PlainText password
    • Username and Digested password
  2. Ability to send Timestamp tokens
  3. SOAP message encryption
    • With derived key support for improved security
    • Symmetric and Asymmetric modes of operations
    • Support for AES and Tripple DES encryption
    • Signature encryption
    • Keys encryption
  4. SOAP message signature
    • XML signature with RSA-SHA1
    • Message authentication with HMAC-SHA1
    • Signature confirmation support
    • SOAP Header signing
  5. WS-Security Policy (spec 1.1) based configurations
    • Support for both Symmetric as well as Asymmetric policy bindings
    • Support for different modes of key identifiers
    • Support for different algorithm suites
      [Basic128, Basic 192, Basic256, TrippleDES, Basic128Rsa15, Basic192Rsa15,Basic256Rsa15, TripleDesRsa15]
  6. Replay detection support
    • Easy to use built-in replay detection module
    • Ability to deploy a customized replay detection module
  7. Different protection orders
    • Encrypt before signing
    • Sign before encrypting
  8. Extensible modules
    • Password callback module
    • Authentication module
    • Credentials module
  9. Keys management
    • Support for X509 token profile
    • Support for Key identifiers, Thumb prints, Issuer/Serial pairs, Embedded and Direct references
  10. WS-Secure Conversation Language support (Experimental)
    • Establishing Security Context and thereby maintaining a session
    • Per message key derivation
    • Support for stored securtiy context token
  11. WS-Trust Language support (Experimental)
    • Security Token Services (STS)
    • STS Client
    • Server and Client entrophy support
  12. Other
    • Easy to use deployment scripts
    • A comprehensive set of samples

Major Changes Since Last Release

  1. WS-Secure Conversation Language support (Experimental)
  2. WS-Trust Language support (Experimental)
  3. SAML Support
  4. Memory leak fixes
  5. Many bug fixes

16th Jan 2008 - Apache Rampart/C Version 1.1 Released

Download 1.1

Key Features

  1. Ability to send and verify UsernameTokens with
    • Username and PlainText password
    • Username and Digested password
  2. Ability to send Timestamp tokens
  3. SOAP message encryption
    • With derived key support for improved security
    • Symmetric and Asymmetric modes of operations
    • Support for AES and Tripple DES encryption
    • Signature encryption
    • Keys encryption
  4. SOAP message signature
    • XML signature with RSA-SHA1
    • Message authentication with HMAC-SHA1
    • Signature confirmation support
    • SOAP Header signing
  5. WS-Security Policy (spec 1.1) based configurations
    • Support for both Symmetric as well as Asymmetric policy bindings
    • Support for different modes of key identifiers
    • Support for different algorithm suites

      [Basic128, Basic 192, Basic256, TrippleDES, Basic128Rsa15, Basic192Rsa15,Basic256Rsa15, TripleDesRsa15]
  6. Replay detection support
    • Easy to use built-in replay detection module
    • Ability to deploy a customized replay detection module
  7. Different protection orders
    • Encrypt before signing
    • Sign before encrypting
  8. Extensible modules
    • Password callback module
    • Authentication module
    • Credentials module
  9. Keys management
    • Support for X509 token profile
    • Support for Key identifiers, Thumb prints, Issuer/Serial pairs, Embedded and Direct references
  10. Other
    • Easy to use deployment scripts
    • A comprehensive set of samples

Major Changes Since Last Release

  1. MAC support with HMAC-SHA1
  2. Derrived key encryption
  3. Derived key signing
  4. Symmetric policy bindings
  5. New security header processor based on SOAP header layout
  6. Security policy validator
  7. Extensible Replay detection module
  8. Signature confirmation support
  9. Support for X509 thumb prints
  10. Easy to use deployment scripts
  11. Memory leak fixes
  12. Many bug fixes

05th Oct 2007 - Apache Rampart/C Version 1.0 Released

Download 1.0

Key Features

  1. SOAP message encryption : Allows different parts of a SOAP message to be encrypted to keep the confidentiality of the message
  2. SOAP message signature : Allows different parts of a SOAP message to be signed to keep the integrity of the message
  3. Ability to send and verify UsernameTokens with
    1. PlainText password
    2. Digested password

    3. Allows users to send Username tokens for authentication purposes as per Web services security username token profile
  4. Ability to send Timestamp tokens : Allows users to add timestamps to their SOAP messages in order to ensure the freshness
  5. WS-Security Policy (spec 1.1) Policy based configurations as per WS-Security Policy : Allows users to express their security related requirements and constraints
  6. Replay detection support
  7. Improvements to the context model
  8. Authentication module implementation
  9. Credentials module implementation
  10. Improvements to Key/Certificate loading mechanisms
  11. Easy to use deployment scripts

11th May 2007 - Apache Rampart/C Version 0.90 Released

Download 0.90

Key Features

  1. SOAP message encryption : Allows different parts of the body of SOAP message to be encrypted to keep the confidentiality of the message
  2. SOAP message signature : Allows different parts of a SOAP message to be signed to keep the integrity of the message
  3. Ability to send and verify UsernameTokens with
    1. PlainText password
    2. Digested password

    3. Allows users to send Username tokens for authentication purposes as per Web services security username token profile
  4. Ability to send Timestamp tokens : Allows users to add timestamps to their SOAP messages in order to ensure the freshness
  5. Policy based configurations: Allows clients and services to express their security related requirements and constraints
rampartc-src-1.3.0/xdocs/svn.html0000644000076500007650000000544111202453400016572 0ustar shankarshankar Developing Apache Rampart/C

Developing Apache Rampart/C

This document provides information on how to use SVN to get an SVN checkout/update and make commits to the source repository.

Contents

Working with Subversion (SVN)

The Apache Rampart/C development team uses Subversion (SVN) for source control. Subversion is a compelling replacement for CVS, developed under the auspices of the Tigris community and is licensed under an Apache compatible license. To learn more about Subversion or to download the latest distribution, visit the Subversion project site. If you are looking for guidelines on setting up/installing Subversion, please read the ASF Source Code Repositories page.

Checking-out Apache Rampart/C from Subversion

When checking out the latest version of Apache Rampart/C from the Apache Foundation's Subversion repository, you must use one of the following URLs, depending on your level of access to the Apache Rampart/C source code:

If you are a committer, make sure that you have set your svnpasswd. To do this you must log into svn.apache.org. For more information, please read the ASF Source Code Repositories page.

Once you have successfully installed Subversion, you can checkout the Rampart/C trunk by running the following command:

svn co <repository URL> <folder name>

where 'repository URL' is one of the URLs from the previous list and 'folder name' is the name of the folder into which the source code is to be checked out.


To update your working copy to the latest version from the repository, execute:

svn update


If you would like to submit a patch, execute:

svn diff

The above command will create a unified diff that can be attached to the Apache Rampart/C JIRA issue tracker.


rampartc-src-1.3.0/xdocs/navigation.xml0000644000076500007650000000247211202453400017760 0ustar shankarshankar rampartc-src-1.3.0/xdocs/index.html0000644000076500007650000001107411202453400017072 0ustar shankarshankar The Security Module for Apache Axis2/C

Welcome to Apache Rampart/C

Apache Rampart/C is the security module for Apache Axis2/C. It features in many ways to protect SOAP messages exchanged. This includes SOAP message encryption and signature as specified in WS-Security Specification. In addition Apache Rampart/C configurations are based on security policy assertions as per WS-Security Policy specificatoin

Why Apache Rampart/C ?

In distributed computing, web services play a crucial role. But as many distributed systems web services are also vulnerable for security threats. Developers are always struggling to ensure the integrity, confidentiality of messages. Implementing the right security solution can be an expensive and time consuming task. Rampart/C makes the life easier for those who uses Axis2/C, by providing a configurable security module, which protect SOAP messages from such threats.

Latest Release

27th May 2009 - Apache Rampart/C Version 1.3.0 Released

Download 1.3

Key Features

  1. Ability to send and verify UsernameTokens with
    • Username and PlainText password
    • Username and Digested password
  2. Ability to send Timestamp tokens
  3. SOAP message encryption
    • With derived key support for improved security
    • Symmetric and Asymmetric modes of operations
    • Support for AES and Tripple DES encryption
    • Signature encryption
    • Keys encryption
  4. SOAP message signature
    • XML signature with RSA-SHA1
    • Message authentication with HMAC-SHA1
    • Signature confirmation support
    • SOAP Header signing
  5. WS-Security Policy (spec 1.1 and spec 1.2) based configurations
    • Support for both Symmetric as well as Asymmetric policy bindings
    • Support for different modes of key identifiers
    • Support for different algorithm suites
      [Basic128, Basic 192, Basic256, TrippleDES, Basic128Rsa15, Basic192Rsa15,Basic256Rsa15, TripleDesRsa15]
    • Support for IssuedToken assertion in client side
    • Support for SAMLToken assertion
  6. Replay detection support
    • Easy to use built-in replay detection module
    • Ability to deploy a customized replay detection module
  7. Different protection orders
    • Encrypt before signing
    • Sign before encrypting
  8. Extensible modules
    • Password callback module
    • Authentication module
    • Credentials module
    • Replay detection module
    • Secure conversation token module
  9. Keys management
    • Support for X509 token profile
    • Support for Key identifiers, Thumb prints, Issuer/Serial pairs, Embedded and Direct references
    • Support for PKCS12 keystore
  10. WS-Secure Conversation Language support
    • Establishing Security Context and thereby maintaining a session
    • Per message key derivation
    • Support for stored securtiy context token
    • Rahas module support to give STS functionality to a service
  11. WS-Trust Language support
    • Security Token Services (STS)
    • STS Client
    • Server and Client entrophy support
  12. SAML Support
    • Support for Creation and Processing of SAML Core 1.1 Assertion
    • SAML Token as Sign Supporting Token
    • Signing and Encryption with SAML
  13. Other
    • Easy to use deployment scripts
    • A comprehensive set of samples

Major Changes Since Last Release

  1. WS-Secure Conversation Language support
  2. WS-Trust Language support
  3. Rahas module to give STS support to a service
  4. PKCS12 Keystore support
  5. Security Policy 1.2 support
  6. Memory leak fixes
  7. Many bug fixes

Archived News

News on previous Rampart/C releases.

rampartc-src-1.3.0/xdocs/coding_conventions.html0000644000076500007650000000062111202453400021647 0ustar shankarshankar Coding Conventions

Rampart/C Coding Conventions

Apache Rampart/C coding convensions are as specified in Apache Axis2/C Coding Conventions

rampartc-src-1.3.0/xdocs/download.html0000644000076500007650000004255311202453400017600 0ustar shankarshankar Releases

Apache Rampart/C Releases

These releases are available for download as a source or binary. For more information on Apache software releases, please see Apache Releases FAQ.

Name Type Distribution Date Description
1.3.0 Release MS Windows Distribution
- Binary Distribution zip MD5 PGP
- Source Distribution zip MD5 PGP
Linux Distribution
- Binary Distribution tar.gz MD5 PGP
- Source Distribution tar.gz MD5 PGP
27 - 05 - 2009 1.3.0 Release (Mirrored) Depends on Axis2/C 1.6.0
1.2.0 Release MS Windows Distribution
- Binary Distribution zip MD5 PGP
- Source Distribution zip MD5 PGP
Linux Distribution
- Binary Distribution tar.gz MD5 PGP
- Source Distribution tar.gz MD5 PGP
13 - 05 - 2008 1.2.0 Release (Mirrored) Depends on Axis2/C 1.4.0
1.1.0 Release MS Windows Distribution
- Binary Distribution zip MD5 PGP
- Source Distribution zip MD5 PGP
Linux Distribution
- Binary Distribution tar.gz MD5 PGP
- Source Distribution tar.gz MD5 PGP
16 - 01 - 2008 1.1.0 Release (Archived) Depends on Axis2/C 1.2.0
1.0.0 Release MS Windows Distribution
- Binary Distribution zip MD5 PGP
- Source Distribution zip MD5 PGP
Linux Distribution
- Binary Distribution tar.gz MD5 PGP
- Source Distribution tar.gz MD5 PGP
05 - 10 - 2007 1.0.0 Release (Archived) Depends on Axis2/C 1.1.0
0.90 Release MS Windows Distribution
- Binary Distribution zip MD5 PGP
- Source Distribution zip MD5 PGP
Linux Distribution
- Binary Distribution tar.gz MD5 PGP
- Source Distribution tar.gz MD5 PGP
11 - 05 - 2007 0.90 Release (Archived) Depends on Axis2/C 1.0.0

[if-any logo] [end] The currently selected mirror is [preferred]. If you encounter a problem with this mirror, please select another mirror. If all mirrors are failing, there are backup mirrors (at the end of the mirrors list) that should be available.

Other mirrors:

You may also consult the complete list of mirrors.

Note: When downloading from a mirror, please check the md5sum and verify the OpenPGP compatible signature from the main Apache site. They can be downloaded by following the links above. This KEYS file contains the public keys that can be used for verifying signatures. It is recommended that (when possible) a web of trust is used to confirm the identity of these keys.

rampartc-src-1.3.0/xdocs/download.cgi0000755000076500007650000000035311202453400017371 0ustar shankarshankar#!/bin/sh # Wrapper script around mirrors.cgi script # (we must change to that directory in order for python to pick up the # python includes correctly) cd /www/www.apache.org/dyn/mirrors /www/www.apache.org/dyn/mirrors/mirrors.cgi $*rampartc-src-1.3.0/xdocs/lists_issues.html0000644000076500007650000000275011202453400020515 0ustar shankarshankar Mailing Lists and Issue Tracking

Mailing Lists

These are the mailing lists that have been established for this project. For each list, there is a subscribe, unsubscribe, and an archive link.

List NameSubscribeUnsubscribeArchive
Rampart C Developer List Subscribe Unsubscribe Archive

Note: For the moment many discussion related to Rampart/C can be seen in Axis2/C mailing lists

Issue Tracking

http://issues.apache.org/jira/browse/RAMPARTC

Svn Location

https://svn.apache.org/repos/asf/webservices/rampart/trunk/c

rampartc-src-1.3.0/configure0000755000076500007650000255457311202453546015721 0ustar shankarshankar#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.61 for rampartc-src 1.3.0. # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, # 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi # PATH needs CR # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) as_nl=' ' IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 { (exit 1); exit 1; } fi # Work around bugs in pre-3.0 UWIN ksh. for as_var in ENV MAIL MAILPATH do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. for as_var in \ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ LC_TELEPHONE LC_TIME do if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var fi done # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # CDPATH. $as_unset CDPATH if test "x$CONFIG_SHELL" = x; then if (eval ":") 2>/dev/null; then as_have_required=yes else as_have_required=no fi if test $as_have_required = yes && (eval ": (as_func_return () { (exit \$1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = \"\$1\" ); then : else exitcode=1 echo positional parameters were not saved. fi test \$exitcode = 0) || { (exit 1); exit 1; } ( as_lineno_1=\$LINENO as_lineno_2=\$LINENO test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } ") 2> /dev/null; then : else as_candidate_shells= as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. case $as_dir in /*) for as_base in sh bash ksh sh5; do as_candidate_shells="$as_candidate_shells $as_dir/$as_base" done;; esac done IFS=$as_save_IFS for as_shell in $as_candidate_shells $SHELL; do # Try only shells that exist, to save several forks. if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { ("$as_shell") 2> /dev/null <<\_ASEOF if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi : _ASEOF }; then CONFIG_SHELL=$as_shell as_have_required=yes if { "$as_shell" 2> /dev/null <<\_ASEOF if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi : (as_func_return () { (exit $1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = "$1" ); then : else exitcode=1 echo positional parameters were not saved. fi test $exitcode = 0) || { (exit 1); exit 1; } ( as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } _ASEOF }; then break fi fi done if test "x$CONFIG_SHELL" != x; then for as_var in BASH_ENV ENV do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done export CONFIG_SHELL exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} fi if test $as_have_required = no; then echo This script requires a shell more modern than all the echo shells that I found on your system. Please install a echo modern shell, or manually run the script under such a echo shell if you do have one. { (exit 1); exit 1; } fi fi fi (eval "as_func_return () { (exit \$1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = \"\$1\" ); then : else exitcode=1 echo positional parameters were not saved. fi test \$exitcode = 0") || { echo No shell found that supports shell functions. echo Please tell autoconf@gnu.org about your system, echo including any error possibly output before this echo message } as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line after each line using $LINENO; the second 'sed' # does the real work. The second script uses 'N' to pair each # line-number line with the line containing $LINENO, and appends # trailing '-' during substitution so that $LINENO is not a special # case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # scripts with optimization help from Paolo Bonzini. Blame Lee # E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in -n*) case `echo 'x\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. *) ECHO_C='\c';; esac;; *) ECHO_N='-n';; esac if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir fi echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" # Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} case X$ECHO in X*--fallback-echo) # Remove one level of quotation (which was required for Make). ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','` ;; esac echo=${ECHO-echo} if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then # Yippee, $echo works! : else # Restart under the correct shell. exec $SHELL "$0" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat </dev/null 2>&1 && unset CDPATH if test -z "$ECHO"; then if test "X${echo_test_string+set}" != Xset; then # find a string as large as possible, as long as the shell can cope with it for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... if (echo_test_string=`eval $cmd`) 2>/dev/null && echo_test_string=`eval $cmd` && (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null then break fi done fi if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then : else # The Solaris, AIX, and Digital Unix default echo programs unquote # backslashes. This makes it impossible to quote backslashes using # echo "$something" | sed 's/\\/\\\\/g' # # So, first we look for a working echo in the user's PATH. lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for dir in $PATH /usr/ucb; do IFS="$lt_save_ifs" if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$dir/echo" break fi done IFS="$lt_save_ifs" if test "X$echo" = Xecho; then # We didn't find a better echo, so look for alternatives. if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # This shell has a builtin print -r that does the trick. echo='print -r' elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && test "X$CONFIG_SHELL" != X/bin/ksh; then # If we have ksh, try running configure again with it. ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} export ORIGINAL_CONFIG_SHELL CONFIG_SHELL=/bin/ksh export CONFIG_SHELL exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} else # Try using printf. echo='printf %s\n' if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # Cool, printf works : elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL export CONFIG_SHELL SHELL="$CONFIG_SHELL" export SHELL echo="$CONFIG_SHELL $0 --fallback-echo" elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$CONFIG_SHELL $0 --fallback-echo" else # maybe with a smaller string... prev=: for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null then break fi prev="$cmd" done if test "$prev" != 'sed 50q "$0"'; then echo_test_string=`eval $prev` export echo_test_string exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} else # Oops. We lost completely, so just stick with echo. echo=echo fi fi fi fi fi fi # Copy echo and quote the copy suitably for passing to libtool from # the Makefile, instead of quoting the original, which is used later. ECHO=$echo if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" fi tagnames=${tagnames+${tagnames},}CXX tagnames=${tagnames+${tagnames},}F77 exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} # Identity of this package. PACKAGE_NAME='rampartc-src' PACKAGE_TARNAME='rampartc-src' PACKAGE_VERSION='1.3.0' PACKAGE_STRING='rampartc-src 1.3.0' PACKAGE_BUGREPORT='' ac_default_prefix=/usr/local/rampartc # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datarootdir datadir sysconfdir sharedstatedir localstatedir includedir oldincludedir docdir infodir htmldir dvidir pdfdir psdir libdir localedir mandir DEFS ECHO_C ECHO_N ECHO_T LIBS build_alias host_alias target_alias build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA am__isrc CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CPP SED GREP EGREP LN_S ECHO AR RANLIB CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL LIBOBJS AXIS2INC AXIS2LIB AXIOMINC OPENSSLINC OPENSSLLIB NEETHIINC UTILINC XMLSCHEMAINC VERSION_NO LTLIBOBJS' ac_subst_files='' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CXX CXXFLAGS CCC CPP CXXCPP F77 FFLAGS' # Initialize some variables set by options. ac_init_help= ac_init_version=false # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` eval enable_$ac_feature=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` eval enable_$ac_feature=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package | sed 's/[-.]/_/g'` eval with_$ac_package=\$ac_optarg ;; -without-* | --without-*) ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package | sed 's/[-.]/_/g'` eval with_$ac_package=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) { echo "$as_me: error: unrecognized option: $ac_option Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 { (exit 1); exit 1; }; } eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` { echo "$as_me: error: missing argument to $ac_option" >&2 { (exit 1); exit 1; }; } fi # Be sure to have absolute directory names. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; } done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used." >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || { echo "$as_me: error: Working directory cannot be determined" >&2 { (exit 1); exit 1; }; } test "X$ac_ls_di" = "X$ac_pwd_ls_di" || { echo "$as_me: error: pwd does not report name of working directory" >&2 { (exit 1); exit 1; }; } # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$0" || $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$0" : 'X\(//\)[^/]' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || echo X"$0" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 { (exit 1); exit 1; }; } fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2 { (exit 1); exit 1; }; } pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures rampartc-src 1.3.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/rampartc-src] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] --target=TARGET configure for building compilers for TARGET [HOST] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of rampartc-src 1.3.0:";; esac cat <<\_ACEOF Optional Features: --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors --enable-shared[=PKGS] build shared libraries [default=yes] --enable-static[=PKGS] build static libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-pic try to use only PIC/non-PIC objects [default=use both] --with-tags[=TAGS] include additional configurations [automatic] --with-axis2=PATH use axis2c. --with-openssl=PATH use openssl. Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if you have headers in a nonstandard directory CXX C++ compiler command CXXFLAGS C++ compiler flags CPP C preprocessor CXXCPP C++ preprocessor F77 Fortran 77 compiler command FFLAGS Fortran 77 compiler flags Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF rampartc-src configure 1.3.0 generated by GNU Autoconf 2.61 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by rampartc-src $as_me 1.3.0, which was generated by GNU Autoconf 2.61. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; 2) ac_configure_args1="$ac_configure_args1 '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac done done $as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } $as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo cat <<\_ASBOX ## ---------------- ## ## Cache variables. ## ## ---------------- ## _ASBOX echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( *) $as_unset $ac_var ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo cat <<\_ASBOX ## ----------------- ## ## Output variables. ## ## ----------------- ## _ASBOX echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then cat <<\_ASBOX ## ------------------- ## ## File substitutions. ## ## ------------------- ## _ASBOX echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then cat <<\_ASBOX ## ----------- ## ## confdefs.h. ## ## ----------- ## _ASBOX echo cat confdefs.h echo fi test "$ac_signal" != 0 && echo "$as_me: caught signal $ac_signal" echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer explicitly selected file to automatically selected ones. if test -n "$CONFIG_SITE"; then set x "$CONFIG_SITE" elif test "x$prefix" != xNONE; then set x "$prefix/share/config.site" "$prefix/etc/config.site" else set x "$ac_default_prefix/share/config.site" \ "$ac_default_prefix/etc/config.site" fi shift for ac_site_file do if test -r "$ac_site_file"; then { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special # files actually), so we avoid doing that. if test -f "$cache_file"; then { echo "$as_me:$LINENO: loading cache $cache_file" >&5 echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { echo "$as_me:$LINENO: creating cache $cache_file" >&5 echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 echo "$as_me: former value: $ac_old_val" >&2;} { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 echo "$as_me: current value: $ac_new_val" >&2;} ac_cache_corrupted=: fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 echo "$as_me: error: changes in the environment can compromise the build" >&2;} { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5 echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;} { (exit 1); exit 1; }; } fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} { (exit 1); exit 1; }; } { echo "$as_me:$LINENO: checking build system type" >&5 echo $ECHO_N "checking build system type... $ECHO_C" >&6; } if test "${ac_cv_build+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 echo "$as_me: error: cannot guess build type; you must specify one" >&2;} { (exit 1); exit 1; }; } ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} { (exit 1); exit 1; }; } fi { echo "$as_me:$LINENO: result: $ac_cv_build" >&5 echo "${ECHO_T}$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 echo "$as_me: error: invalid value of canonical build" >&2;} { (exit 1); exit 1; }; };; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { echo "$as_me:$LINENO: checking host system type" >&5 echo $ECHO_N "checking host system type... $ECHO_C" >&6; } if test "${ac_cv_host+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} { (exit 1); exit 1; }; } fi fi { echo "$as_me:$LINENO: result: $ac_cv_host" >&5 echo "${ECHO_T}$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 echo "$as_me: error: invalid value of canonical host" >&2;} { (exit 1); exit 1; }; };; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac { echo "$as_me:$LINENO: checking target system type" >&5 echo $ECHO_N "checking target system type... $ECHO_C" >&6; } if test "${ac_cv_target+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "x$target_alias" = x; then ac_cv_target=$ac_cv_host else ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&5 echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&2;} { (exit 1); exit 1; }; } fi fi { echo "$as_me:$LINENO: result: $ac_cv_target" >&5 echo "${ECHO_T}$ac_cv_target" >&6; } case $ac_cv_target in *-*-*) ;; *) { { echo "$as_me:$LINENO: error: invalid value of canonical target" >&5 echo "$as_me: error: invalid value of canonical target" >&2;} { (exit 1); exit 1; }; };; esac target=$ac_cv_target ac_save_IFS=$IFS; IFS='-' set x $ac_cv_target shift target_cpu=$1 target_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: target_os=$* IFS=$ac_save_IFS case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac # The aliases save the names the user supplied, while $host etc. # will get canonicalized. test -n "$target_alias" && test "$program_prefix$program_suffix$program_transform_name" = \ NONENONEs,x,x, && program_prefix=${target_alias}- ac_config_headers="$ac_config_headers config.h" am__api_version='1.10' # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. { echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; } if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in ./ | .// | /cC/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi done done ;; esac done IFS=$as_save_IFS fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { echo "$as_me:$LINENO: result: $INSTALL" >&5 echo "${ECHO_T}$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { echo "$as_me:$LINENO: checking whether build environment is sane" >&5 echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6; } # Just in case sleep 1 echo timestamp > conftest.file # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t $srcdir/configure conftest.file` fi rm -f conftest.file if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&5 echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&2;} { (exit 1); exit 1; }; } fi test "$2" = conftest.file ) then # Ok. : else { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! Check your system clock" >&5 echo "$as_me: error: newly created file is older than distributed files! Check your system clock" >&2;} { (exit 1); exit 1; }; } fi { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. echo might interpret backslashes. # By default was `s,x,x', remove it if useless. cat <<\_ACEOF >conftest.sed s/[\\$]/&&/g;s/;s,x,x,$// _ACEOF program_transform_name=`echo $program_transform_name | sed -f conftest.sed` rm -f conftest.sed # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi { echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5 echo $ECHO_N "checking for a thread-safe mkdir -p... $ECHO_C" >&6; } if test -z "$MKDIR_P"; then if test "${ac_cv_path_mkdir+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. test -d ./--version && rmdir ./--version MKDIR_P="$ac_install_sh -d" fi fi { echo "$as_me:$LINENO: result: $MKDIR_P" >&5 echo "${ECHO_T}$MKDIR_P" >&6; } mkdir_p="$MKDIR_P" case $mkdir_p in [\\/$]* | ?:[\\/]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_AWK+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AWK="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { echo "$as_me:$LINENO: result: $AWK" >&5 echo "${ECHO_T}$AWK" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi test -n "$AWK" && break done { echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; } set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } SET_MAKE= else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} { (exit 1); exit 1; }; } fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='rampartc-src' VERSION='1.3.0' cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"} # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { echo "$as_me:$LINENO: result: $STRIP" >&5 echo "${ECHO_T}$STRIP" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_STRIP="strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 echo "${ECHO_T}$ac_ct_STRIP" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&5 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" # We need awk for the "check" target. The system "awk" is bad on # some platforms. # Always define AMTAR for backward compatibility. AMTAR=${AMTAR-"${am_missing_run}tar"} am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&5 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&5 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&5 echo "$as_me: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } # Provide some information about the compiler. echo "$as_me:$LINENO: checking for C compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (ac_try="$ac_compiler --version >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -v >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -V >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; } ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # # List of possible output files, starting from the most likely. # The algorithm is not robust to junk in `.', hence go to wildcards (a.*) # only as a last resort. b.out is created by i960 compilers. ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out' # # The IRIX 6 linker writes into existing files which may not be # executable, retaining their permissions. Remove them first so a # subsequent execution test works. ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { (ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link_default") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi { echo "$as_me:$LINENO: result: $ac_file" >&5 echo "${ECHO_T}$ac_file" >&6; } if test -z "$ac_file"; then echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { echo "$as_me:$LINENO: error: C compiler cannot create executables See \`config.log' for more details." >&5 echo "$as_me: error: C compiler cannot create executables See \`config.log' for more details." >&2;} { (exit 77); exit 77; }; } fi ac_exeext=$ac_cv_exeext # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { echo "$as_me:$LINENO: checking whether the C compiler works" >&5 echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; } # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 # If not cross compiling, check that we can run a simple program. if test "$cross_compiling" != yes; then if { ac_try='./$ac_file' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { echo "$as_me:$LINENO: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&5 echo "$as_me: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi fi fi { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } rm -f a.out a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; } { echo "$as_me:$LINENO: result: $cross_compiling" >&5 echo "${ECHO_T}$cross_compiling" >&6; } { echo "$as_me:$LINENO: checking for suffix of executables" >&5 echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; } if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&5 echo "$as_me: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi rm -f conftest$ac_cv_exeext { echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 echo "${ECHO_T}$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT { echo "$as_me:$LINENO: checking for suffix of object files" >&5 echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; } if test "${ac_cv_objext+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&5 echo "$as_me: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 echo "${ECHO_T}$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; } if test "${ac_cv_c_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; } GCC=`test $ac_compiler_gnu = yes && echo yes` ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } if test "${ac_cv_prog_cc_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 CFLAGS="" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } if test "${ac_cv_prog_cc_c89+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_c89=$ac_arg else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { echo "$as_me:$LINENO: result: none needed" >&5 echo "${ECHO_T}none needed" >&6; } ;; xno) { echo "$as_me:$LINENO: result: unsupported" >&5 echo "${ECHO_T}unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; esac ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo done .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # We grep out `Entering directory' and `Leaving directory' # messages which can occur if `w' ends up in MAKEFLAGS. # In particular we don't look at `^make:' because GNU make might # be invoked under some other name (usually "gmake"), in which # case it prints its new name instead of `make'. if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then am__include=include am__quote= _am_result=GNU fi # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then am__include=.include am__quote="\"" _am_result=BSD fi fi { echo "$as_me:$LINENO: result: $_am_result" >&5 echo "${ECHO_T}$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi depcc="$CC" am_compiler_list= { echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; } if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; none) break ;; esac # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { echo "$as_me:$LINENO: result: $CXX" >&5 echo "${ECHO_T}$CXX" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CXX="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 echo "${ECHO_T}$ac_ct_CXX" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&5 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. echo "$as_me:$LINENO: checking for C++ compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (ac_try="$ac_compiler --version >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -v >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -V >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6; } if test "${ac_cv_cxx_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6; } GXX=`test $ac_compiler_gnu = yes && echo yes` ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS { echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6; } if test "${ac_cv_prog_cxx_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cxx_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 CXXFLAGS="" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cxx_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CXX" am_compiler_list= { echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; } if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; none) break ;; esac # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi { echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if test "${ac_cv_prog_CPP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { echo "$as_me:$LINENO: result: $CPP" >&5 echo "${ECHO_T}$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&5 echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Check whether --enable-shared was given. if test "${enable_shared+set}" = set; then enableval=$enable_shared; p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac else enable_shared=yes fi # Check whether --enable-static was given. if test "${enable_static+set}" = set; then enableval=$enable_static; p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac else enable_static=yes fi # Check whether --enable-fast-install was given. if test "${enable_fast_install+set}" = set; then enableval=$enable_fast_install; p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac else enable_fast_install=yes fi { echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6; } if test "${lt_cv_path_SED+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$lt_ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$lt_ac_prog$ac_exec_ext"; }; then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done done done IFS=$as_save_IFS lt_ac_max=0 lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do test ! -f $lt_ac_sed && continue cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in # Check for GNU sed and select it if it is found. if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then lt_cv_path_SED=$lt_ac_sed break fi while true; do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo >>conftest.nl $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough test $lt_ac_count -gt 10 && break lt_ac_count=`expr $lt_ac_count + 1` if test $lt_ac_count -gt $lt_ac_max; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi done done fi SED=$lt_cv_path_SED { echo "$as_me:$LINENO: result: $SED" >&5 echo "${ECHO_T}$SED" >&6; } { echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; } if test "${ac_cv_path_GREP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # Extract the first word of "grep ggrep" to use in msg output if test -z "$GREP"; then set dummy grep ggrep; ac_prog_name=$2 if test "${ac_cv_path_GREP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ac_count=`expr $ac_count + 1` if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS fi GREP="$ac_cv_path_GREP" if test -z "$GREP"; then { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} { (exit 1); exit 1; }; } fi else ac_cv_path_GREP=$GREP fi fi { echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 echo "${ECHO_T}$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { echo "$as_me:$LINENO: checking for egrep" >&5 echo $ECHO_N "checking for egrep... $ECHO_C" >&6; } if test "${ac_cv_path_EGREP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else # Extract the first word of "egrep" to use in msg output if test -z "$EGREP"; then set dummy egrep; ac_prog_name=$2 if test "${ac_cv_path_EGREP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ac_count=`expr $ac_count + 1` if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS fi EGREP="$ac_cv_path_EGREP" if test -z "$EGREP"; then { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} { (exit 1); exit 1; }; } fi else ac_cv_path_EGREP=$EGREP fi fi fi { echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 echo "${ECHO_T}$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { echo "$as_me:$LINENO: checking for ld used by $CC" >&5 echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then { echo "$as_me:$LINENO: checking for GNU ld" >&5 echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; } else { echo "$as_me:$LINENO: checking for non-GNU ld" >&5 echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; } fi if test "${lt_cv_path_LD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 echo "${ECHO_T}$LD" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} { (exit 1); exit 1; }; } { echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; } if test "${lt_cv_prog_gnu_ld+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld { echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6; } if test "${lt_cv_ld_reload_flag+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_ld_reload_flag='-r' fi { echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6; } reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; *) reload_flag=" $reload_flag" ;; esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in darwin*) if test "$GCC" = yes; then reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' else reload_cmds='$LD$reload_flag -o $output$reload_objs' fi ;; esac { echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6; } if test "${lt_cv_path_NM+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_nm_to_check="${ac_tool_prefix}nm" if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/$lt_tmp_nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS="$lt_save_ifs" done test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm fi fi { echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5 echo "${ECHO_T}$lt_cv_path_NM" >&6; } NM="$lt_cv_path_NM" { echo "$as_me:$LINENO: checking whether ln -s works" >&5 echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } else { echo "$as_me:$LINENO: result: no, using $LN_S" >&5 echo "${ECHO_T}no, using $LN_S" >&6; } fi { echo "$as_me:$LINENO: checking how to recognize dependent libraries" >&5 echo $ECHO_N "checking how to recognize dependent libraries... $ECHO_C" >&6; } if test "${lt_cv_deplibs_check_method+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # `unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # which responds to the $file_magic_cmd with a given extended regex. # If you have `file' or equivalent on your system and you're not sure # whether `pass_all' will *always* work, you probably want this one. case $host_os in aix4* | aix5*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[45]*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. if ( file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]' lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[3-9]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be Linux ELF. linux* | k*bsd*-gnu) lt_cv_deplibs_check_method=pass_all ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; nto-qnx*) lt_cv_deplibs_check_method=unknown ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; esac fi { echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6; } file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then enableval=$enable_libtool_lock; fi test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '#line 5076 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ s390*-*linux*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) libsuff=64 case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; ppc*-*linux*|powerpc*-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" { echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6; } if test "${lt_cv_cc_needs_belf+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then lt_cv_cc_needs_belf=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 lt_cv_cc_needs_belf=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6; } if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; sparc*-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) LD="${LD-ld} -m elf64_sparc" ;; *) LD="${LD-ld} -64" ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks="$enable_libtool_lock" { echo "$as_me:$LINENO: checking for ANSI C header files" >&5 echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } if test "${ac_cv_header_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_header_stdc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF rm -f conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi fi { echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 echo "${ECHO_T}$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF #define STDC_HEADERS 1 _ACEOF fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` { echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then eval "$as_ac_Header=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_Header=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi ac_res=`eval echo '${'$as_ac_Header'}'` { echo "$as_me:$LINENO: result: $ac_res" >&5 echo "${ECHO_T}$ac_res" >&6; } if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in dlfcn.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then { echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi ac_res=`eval echo '${'$as_ac_Header'}'` { echo "$as_me:$LINENO: result: $ac_res" >&5 echo "${ECHO_T}$ac_res" >&6; } else # Is the header compilable? { echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6; } # Is the header present? { echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext { echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ;; esac { echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi ac_res=`eval echo '${'$as_ac_Header'}'` { echo "$as_me:$LINENO: result: $ac_res" >&5 echo "${ECHO_T}$ac_res" >&6; } fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6; } if test -z "$CXXCPP"; then if test "${ac_cv_prog_CXXCPP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # Double quotes because CXXCPP needs to be expanded for CXXCPP in "$CXX -E" "/lib/cpp" do ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then break fi done ac_cv_prog_CXXCPP=$CXXCPP fi CXXCPP=$ac_cv_prog_CXXCPP else ac_cv_prog_CXXCPP=$CXXCPP fi { echo "$as_me:$LINENO: result: $CXXCPP" >&5 echo "${ECHO_T}$CXXCPP" >&6; } ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details." >&5 echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu fi ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu if test -n "$ac_tool_prefix"; then for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_F77+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$F77"; then ac_cv_prog_F77="$F77" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_F77="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi F77=$ac_cv_prog_F77 if test -n "$F77"; then { echo "$as_me:$LINENO: result: $F77" >&5 echo "${ECHO_T}$F77" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi test -n "$F77" && break done fi if test -z "$F77"; then ac_ct_F77=$F77 for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_F77+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_F77"; then ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_F77="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_F77=$ac_cv_prog_ac_ct_F77 if test -n "$ac_ct_F77"; then { echo "$as_me:$LINENO: result: $ac_ct_F77" >&5 echo "${ECHO_T}$ac_ct_F77" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi test -n "$ac_ct_F77" && break done if test "x$ac_ct_F77" = x; then F77="" else case $cross_compiling:$ac_tool_warned in yes:) { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&5 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&2;} ac_tool_warned=yes ;; esac F77=$ac_ct_F77 fi fi # Provide some information about the compiler. echo "$as_me:$LINENO: checking for Fortran 77 compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (ac_try="$ac_compiler --version >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -v >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -V >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } rm -f a.out # If we don't use `.F' as extension, the preprocessor is not run on the # input file. (Note that this only needs to work for GNU compilers.) ac_save_ext=$ac_ext ac_ext=F { echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5 echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6; } if test "${ac_cv_f77_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF program main #ifndef __GNUC__ choke me #endif end _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_f77_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_f77_compiler_gnu=$ac_compiler_gnu fi { echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6; } ac_ext=$ac_save_ext ac_test_FFLAGS=${FFLAGS+set} ac_save_FFLAGS=$FFLAGS FFLAGS= { echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5 echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6; } if test "${ac_cv_prog_f77_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else FFLAGS=-g cat >conftest.$ac_ext <<_ACEOF program main end _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_f77_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_f77_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_prog_f77_g=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5 echo "${ECHO_T}$ac_cv_prog_f77_g" >&6; } if test "$ac_test_FFLAGS" = set; then FFLAGS=$ac_save_FFLAGS elif test $ac_cv_prog_f77_g = yes; then if test "x$ac_cv_f77_compiler_gnu" = xyes; then FFLAGS="-g -O2" else FFLAGS="-g" fi else if test "x$ac_cv_f77_compiler_gnu" = xyes; then FFLAGS="-O2" else FFLAGS= fi fi G77=`test $ac_compiler_gnu = yes && echo yes` ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! # find the maximum length of command line arguments { echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6; } if test "${lt_cv_sys_max_cmd_len+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} while (test "X"`$SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \ = "XX$teststring") >/dev/null 2>&1 && new_result=`expr "X$teststring" : ".*" 2>&1` && lt_cv_sys_max_cmd_len=$new_result && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done teststring= # Add a significant safety factor because C++ compilers can tack on massive # amounts of additional arguments before passing them to the linker. # It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac fi if test -n $lt_cv_sys_max_cmd_len ; then { echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6; } else { echo "$as_me:$LINENO: result: none" >&5 echo "${ECHO_T}none" >&6; } fi # Check for command to grab the raw symbol name followed by C symbol from nm. { echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5 echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6; } if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Transform an extracted symbol line into a proper C declaration lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | pw32*) symcode='[ABCDGISTW]' ;; hpux*) # Its linker distinguishes data from code symbols if test "$host_cpu" = ia64; then symcode='[ABCDEGRST]' fi lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" ;; linux* | k*bsd*-gnu) if test "$host_cpu" = ia64; then symcode='[ABCDGIRSTW]' lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" fi ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; osf*) symcode='[BCDEGQRST]' ;; solaris*) symcode='[BDRT]' ;; sco3.2v5*) symcode='[DT]' ;; sysv4.2uw2*) symcode='[DT]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[ABDT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[ABCDGIRSTW]' ;; esac # Try without a prefix undercore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Now try to grab the symbols. nlist=conftest.nm if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if grep ' nm_test_var$' "$nlist" >/dev/null; then if grep ' nm_test_func$' "$nlist" >/dev/null; then cat < conftest.$ac_ext #ifdef __cplusplus extern "C" { #endif EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' cat <> conftest.$ac_ext #if defined (__STDC__) && __STDC__ # define lt_ptr_t void * #else # define lt_ptr_t char * # define const #endif /* The mapping between symbol names and symbols. */ const struct { const char *name; lt_ptr_t address; } lt_preloaded_symbols[] = { EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext cat <<\EOF >> conftest.$ac_ext {0, (lt_ptr_t) 0} }; #ifdef __cplusplus } #endif EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_save_LIBS="$LIBS" lt_save_CFLAGS="$CFLAGS" LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS="$lt_save_LIBS" CFLAGS="$lt_save_CFLAGS" else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done fi if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then { echo "$as_me:$LINENO: result: failed" >&5 echo "${ECHO_T}failed" >&6; } else { echo "$as_me:$LINENO: result: ok" >&5 echo "${ECHO_T}ok" >&6; } fi { echo "$as_me:$LINENO: checking for objdir" >&5 echo $ECHO_N "checking for objdir... $ECHO_C" >&6; } if test "${lt_cv_objdir+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null fi { echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5 echo "${ECHO_T}$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='sed -e 1s/^X//' sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' # Constants: rm="rm -f" # Global variables: default_ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a ltmain="$ac_aux_dir/ltmain.sh" ofile="$default_ofile" with_gnu_ld="$lt_cv_prog_gnu_ld" if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. set dummy ${ac_tool_prefix}ar; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_AR+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AR="${ac_tool_prefix}ar" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { echo "$as_me:$LINENO: result: $AR" >&5 echo "${ECHO_T}$AR" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi fi if test -z "$ac_cv_prog_AR"; then ac_ct_AR=$AR # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_AR+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_AR="ar" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 echo "${ECHO_T}$ac_ct_AR" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&5 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi else AR="$ac_cv_prog_AR" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { echo "$as_me:$LINENO: result: $RANLIB" >&5 echo "${ECHO_T}$RANLIB" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_RANLIB="ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 echo "${ECHO_T}$ac_ct_RANLIB" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&5 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { echo "$as_me:$LINENO: result: $STRIP" >&5 echo "${ECHO_T}$STRIP" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_STRIP="strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 echo "${ECHO_T}$ac_ct_STRIP" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&5 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$AR" && AR=ar test -z "$AR_FLAGS" && AR_FLAGS=cru test -z "$AS" && AS=as test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$DLLTOOL" && DLLTOOL=dlltool test -z "$LD" && LD=ld test -z "$LN_S" && LN_S="ln -s" test -z "$MAGIC_CMD" && MAGIC_CMD=file test -z "$NM" && NM=nm test -z "$SED" && SED=sed test -z "$OBJDUMP" && OBJDUMP=objdump test -z "$RANLIB" && RANLIB=: test -z "$STRIP" && STRIP=: test -z "$ac_objext" && ac_objext=o # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" fi for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` # Only perform the check for file, if the check method requires it case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then { echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6; } if test "${lt_cv_path_MAGIC_CMD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/${ac_tool_prefix}file; then lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 echo "${ECHO_T}$MAGIC_CMD" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then { echo "$as_me:$LINENO: checking for file" >&5 echo $ECHO_N "checking for file... $ECHO_C" >&6; } if test "${lt_cv_path_MAGIC_CMD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/file; then lt_cv_path_MAGIC_CMD="$ac_dir/file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 echo "${ECHO_T}$MAGIC_CMD" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi else MAGIC_CMD=: fi fi fi ;; esac enable_dlopen=no enable_win32_dll=no # Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then enableval=$enable_libtool_lock; fi test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Check whether --with-pic was given. if test "${with_pic+set}" = set; then withval=$with_pic; pic_mode="$withval" else pic_mode=default fi test -z "$pic_mode" && pic_mode=default # Use C for the default configuration in the libtool script tagname= lt_save_CC="$CC" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o objext=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $rm conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $rm conftest* lt_prog_compiler_no_builtin_flag= if test "$GCC" = yes; then lt_prog_compiler_no_builtin_flag=' -fno-builtin' { echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6; } if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:7112: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:7116: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $rm conftest* fi { echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= { echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } if test "$GCC" = yes; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared=no enable_shared=no ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='-fPIC' ;; esac ;; *) lt_prog_compiler_pic='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; darwin*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files case $cc_basename in xlc*) lt_prog_compiler_pic='-qnocommon' lt_prog_compiler_wl='-Wl,' ;; esac ;; mingw* | cygwin* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static='-non_shared' ;; newsos6) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; linux* | k*bsd*-gnu) case $cc_basename in icc* | ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; pgcc* | pgf77* | pgf90* | pgf95*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; *Sun\ F*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='' ;; esac ;; esac ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static='-non_shared' ;; rdos*) lt_prog_compiler_static='-non_shared' ;; solaris*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' case $cc_basename in f77* | f90* | f95*) lt_prog_compiler_wl='-Qoption ld ';; *) lt_prog_compiler_wl='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl='-Qoption ld ' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; unicos*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_can_build_shared=no ;; uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' ;; *) lt_prog_compiler_can_build_shared=no ;; esac fi { echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5 echo "${ECHO_T}$lt_prog_compiler_pic" >&6; } # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then { echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6; } if test "${lt_prog_compiler_pic_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:7402: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:7406: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_prog_compiler_pic_works=yes fi fi $rm conftest* fi { echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5 echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6; } if test x"$lt_prog_compiler_pic_works" = xyes; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; esac else lt_prog_compiler_pic= lt_prog_compiler_can_build_shared=no fi fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" { echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } if test "${lt_prog_compiler_static_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_prog_compiler_static_works=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_prog_compiler_static_works=yes fi else lt_prog_compiler_static_works=yes fi fi $rm conftest* LDFLAGS="$save_LDFLAGS" fi { echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5 echo "${ECHO_T}$lt_prog_compiler_static_works" >&6; } if test x"$lt_prog_compiler_static_works" = xyes; then : else lt_prog_compiler_static= fi { echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } if test "${lt_cv_prog_compiler_c_o+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_c_o=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:7506: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:7510: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* fi { echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { echo "$as_me:$LINENO: result: $hard_links" >&5 echo "${ECHO_T}$hard_links" >&6; } if test "$hard_links" = no; then { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } runpath_var= allow_undefined_flag= enable_shared_with_static_runtimes=no archive_cmds= archive_expsym_cmds= old_archive_From_new_cmds= old_archive_from_expsyms_cmds= export_dynamic_flag_spec= whole_archive_flag_spec= thread_safe_flag_spec= hardcode_libdir_flag_spec= hardcode_libdir_flag_spec_ld= hardcode_libdir_separator= hardcode_direct=no hardcode_minus_L=no hardcode_shlibpath_var=unsupported link_all_deplibs=unknown hardcode_automatic=no module_cmds= module_expsym_cmds= always_export_symbols=no export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms="_GLOBAL_OFFSET_TABLE_" # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. extract_expsyms_cmds= # Just being paranoid about ensuring that cc_basename is set. for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` case $host_os in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec= fi supports_anon_versioning=no case `$LD -v 2>/dev/null` in *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix3* | aix4* | aix5*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF fi ;; amigaos*) archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can't use # them. ld_shlibs=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs=no fi ;; interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | k*bsd*-gnu) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then tmp_addflag= case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; *) tmp_sharedflag='-shared' ;; esac archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test $supports_anon_versioning = yes; then archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ $echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi else ld_shlibs=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' else ld_shlibs=no fi ;; esac ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = no; then runpath_var= hardcode_libdir_flag_spec= export_dynamic_flag_spec= whole_archive_flag_spec= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix4* | aix5*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix5*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds='' hardcode_direct=yes hardcode_libdir_separator=':' link_all_deplibs=yes if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag=' ${wl}-bernotok' allow_undefined_flag=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec='$convenience' archive_cmds_need_lc=yes # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # see comment about different semantics on the GNU ld section ld_shlibs=no ;; bsdi[45]*) export_dynamic_flag_spec=-rdynamic ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_From_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path='`cygpath -w "$srcfile"`' enable_shared_with_static_runtimes=yes ;; darwin* | rhapsody*) case $host_os in rhapsody* | darwin1.[012]) allow_undefined_flag='${wl}-undefined ${wl}suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[012]) allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) allow_undefined_flag='${wl}-undefined ${wl}dynamic_lookup' ;; esac fi ;; esac archive_cmds_need_lc=no hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported whole_archive_flag_spec='' link_all_deplibs=yes if test "$GCC" = yes ; then output_verbose_link_cmd='echo' archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' else case $cc_basename in xlc*) output_verbose_link_cmd='echo' archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ;; *) ld_shlibs=no ;; esac fi ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; freebsd1*) ld_shlibs=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes export_dynamic_flag_spec='${wl}-E' ;; hpux10*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_libdir_flag_spec_ld='+b $libdir' hardcode_direct=no hardcode_shlibpath_var=no ;; *) hardcode_direct=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_ld='-rpath $libdir' fi hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: link_all_deplibs=yes ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes hardcode_shlibpath_var=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-R$libdir' ;; *) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_From_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi hardcode_libdir_separator=: ;; solaris*) no_undefined_flag=' -z text' if test "$GCC" = yes; then wlarc='${wl}' archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' else wlarc='' archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' fi hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else whole_archive_flag_spec='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) case $host_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds='$CC -r -o $output$reload_objs' hardcode_direct=no ;; motorola) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag='${wl}-z,text' archive_cmds_need_lc=no hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag='${wl}-z,text' allow_undefined_flag='${wl}-z,nodefs' archive_cmds_need_lc=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' hardcode_libdir_separator=':' link_all_deplibs=yes export_dynamic_flag_spec='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac fi { echo "$as_me:$LINENO: result: $ld_shlibs" >&5 echo "${ECHO_T}$ld_shlibs" >&6; } test "$ld_shlibs" = no && can_build_shared=no # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc" in x|xyes) # Assume -lc should be added archive_cmds_need_lc=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } $rm conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl pic_flag=$lt_prog_compiler_pic compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc=no else archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* { echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5 echo "${ECHO_T}$archive_cmds_need_lc" >&6; } ;; esac fi ;; esac { echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$lt_search_path_spec" | grep ';' >/dev/null ; then # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e 's/;/ /g'` else lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path/$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" else test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`echo $lt_tmp_lt_search_path_spec | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo="/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[lt_foo]++; } if (lt_freq[lt_foo] == 1) { print lt_foo; } }'` sys_lib_search_path_spec=`echo $lt_search_path_spec` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix4* | aix5*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[123]*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; interix[3-9]*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux* | k*bsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' shlibpath_overrides_runpath=no else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' shlibpath_overrides_runpath=yes case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { echo "$as_me:$LINENO: result: $dynamic_linker" >&5 echo "${ECHO_T}$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi { echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || \ test -n "$runpath_var" || \ test "X$hardcode_automatic" = "Xyes" ; then # We can hardcode non-existant directories. if test "$hardcode_direct" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, )" != no && test "$hardcode_minus_L" != no; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi { echo "$as_me:$LINENO: result: $hardcode_action" >&5 echo "${ECHO_T}$hardcode_action" >&6; } if test "$hardcode_action" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi striplib= old_striplib= { echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6; } if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi ;; *) { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } ;; esac fi if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; } if test "${ac_cv_lib_dl_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; } if test $ac_cv_lib_dl_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; *) { echo "$as_me:$LINENO: checking for shl_load" >&5 echo $ECHO_N "checking for shl_load... $ECHO_C" >&6; } if test "${ac_cv_func_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define shl_load to an innocuous variant, in case declares shl_load. For example, HP-UX 11i declares gettimeofday. */ #define shl_load innocuous_shl_load /* System header to define __stub macros and hopefully few prototypes, which can conflict with char shl_load (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef shl_load /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shl_load (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_shl_load || defined __stub___shl_load choke me #endif int main () { return shl_load (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_func_shl_load=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_shl_load=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi { echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 echo "${ECHO_T}$ac_cv_func_shl_load" >&6; } if test $ac_cv_func_shl_load = yes; then lt_cv_dlopen="shl_load" else { echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6; } if test "${ac_cv_lib_dld_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shl_load (); int main () { return shl_load (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_lib_dld_shl_load=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_shl_load=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6; } if test $ac_cv_lib_dld_shl_load = yes; then lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" else { echo "$as_me:$LINENO: checking for dlopen" >&5 echo $ECHO_N "checking for dlopen... $ECHO_C" >&6; } if test "${ac_cv_func_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define dlopen to an innocuous variant, in case declares dlopen. For example, HP-UX 11i declares gettimeofday. */ #define dlopen innocuous_dlopen /* System header to define __stub macros and hopefully few prototypes, which can conflict with char dlopen (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef dlopen /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_dlopen || defined __stub___dlopen choke me #endif int main () { return dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_func_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_dlopen=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi { echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 echo "${ECHO_T}$ac_cv_func_dlopen" >&6; } if test $ac_cv_func_dlopen = yes; then lt_cv_dlopen="dlopen" else { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; } if test "${ac_cv_lib_dl_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; } if test $ac_cv_lib_dl_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else { echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6; } if test "${ac_cv_lib_svld_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_lib_svld_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_svld_dlopen=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6; } if test $ac_cv_lib_svld_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else { echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6; } if test "${ac_cv_lib_dld_dld_link+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dld_link (); int main () { return dld_link (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_lib_dld_dld_link=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_dld_link=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6; } if test $ac_cv_lib_dld_dld_link = yes; then lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" fi fi fi fi fi fi ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" { echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6; } if test "${lt_cv_dlopen_self+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } else puts (dlerror ()); exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi { echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 echo "${ECHO_T}$lt_cv_dlopen_self" >&6; } if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" { echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6; } if test "${lt_cv_dlopen_self_static+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } else puts (dlerror ()); exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi { echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6; } fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi # Report which library types will actually be built { echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6; } { echo "$as_me:$LINENO: result: $can_build_shared" >&5 echo "${ECHO_T}$can_build_shared" >&6; } { echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6; } test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix4* | aix5*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac { echo "$as_me:$LINENO: result: $enable_shared" >&5 echo "${ECHO_T}$enable_shared" >&6; } { echo "$as_me:$LINENO: checking whether to build static libraries" >&5 echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6; } # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes { echo "$as_me:$LINENO: result: $enable_static" >&5 echo "${ECHO_T}$enable_static" >&6; } # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler \ CC \ LD \ lt_prog_compiler_wl \ lt_prog_compiler_pic \ lt_prog_compiler_static \ lt_prog_compiler_no_builtin_flag \ export_dynamic_flag_spec \ thread_safe_flag_spec \ whole_archive_flag_spec \ enable_shared_with_static_runtimes \ old_archive_cmds \ old_archive_from_new_cmds \ predep_objects \ postdep_objects \ predeps \ postdeps \ compiler_lib_search_path \ archive_cmds \ archive_expsym_cmds \ postinstall_cmds \ postuninstall_cmds \ old_archive_from_expsyms_cmds \ allow_undefined_flag \ no_undefined_flag \ export_symbols_cmds \ hardcode_libdir_flag_spec \ hardcode_libdir_flag_spec_ld \ hardcode_libdir_separator \ hardcode_automatic \ module_cmds \ module_expsym_cmds \ lt_cv_prog_compiler_c_o \ fix_srcfile_path \ exclude_expsyms \ include_expsyms; do case $var in old_archive_cmds | \ old_archive_from_new_cmds | \ archive_cmds | \ archive_expsym_cmds | \ module_cmds | \ module_expsym_cmds | \ old_archive_from_expsyms_cmds | \ export_symbols_cmds | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="${ofile}T" trap "$rm \"$cfgfile\"; exit 1" 1 2 15 $rm -f "$cfgfile" { echo "$as_me:$LINENO: creating $ofile" >&5 echo "$as_me: creating $ofile" >&6;} cat <<__EOF__ >> "$cfgfile" #! $SHELL # `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 # Free Software Foundation, Inc. # # This file is part of GNU Libtool: # Originally by Gordon Matzigkeit , 1996 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="$SED -e 1s/^X//" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # The names of the tagged configurations supported by this script. available_tags= # ### BEGIN LIBTOOL CONFIG # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # LTCC compiler flags. LTCFLAGS=$lt_LTCFLAGS # A language-specific compiler. CC=$lt_compiler # Is the compiler the GNU C compiler? with_gcc=$GCC # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o # Must we lock files when doing compilation? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds module_expsym_cmds=$lt_module_expsym_cmds # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path=$lt_fix_srcfile_path # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # ### END LIBTOOL CONFIG __EOF__ case $host_os in aix3*) cat <<\EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi EOF ;; esac # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || \ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" # Check whether --with-tags was given. if test "${with_tags+set}" = set; then withval=$with_tags; tagnames="$withval" fi if test -f "$ltmain" && test -n "$tagnames"; then if test ! -f "${ofile}"; then { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5 echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;} fi if test -z "$LTCC"; then eval "`$SHELL ${ofile} --config | grep '^LTCC='`" if test -z "$LTCC"; then { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5 echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;} else { echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5 echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;} fi fi if test -z "$LTCFLAGS"; then eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`" fi # Extract list of available tagged configurations in $ofile. # Note that this assumes the entire list is on one line. available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for tagname in $tagnames; do IFS="$lt_save_ifs" # Check whether tagname contains only valid characters case `$echo "X$tagname" | $Xsed -e 's:[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]::g'` in "") ;; *) { { echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5 echo "$as_me: error: invalid tag name: $tagname" >&2;} { (exit 1); exit 1; }; } ;; esac if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null then { { echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5 echo "$as_me: error: tag name \"$tagname\" already exists" >&2;} { (exit 1); exit 1; }; } fi # Update the list of available tags. if test -n "$tagname"; then echo appending configuration tag \"$tagname\" to $ofile case $tagname in CXX) if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu archive_cmds_need_lc_CXX=no allow_undefined_flag_CXX= always_export_symbols_CXX=no archive_expsym_cmds_CXX= export_dynamic_flag_spec_CXX= hardcode_direct_CXX=no hardcode_libdir_flag_spec_CXX= hardcode_libdir_flag_spec_ld_CXX= hardcode_libdir_separator_CXX= hardcode_minus_L_CXX=no hardcode_shlibpath_var_CXX=unsupported hardcode_automatic_CXX=no module_cmds_CXX= module_expsym_cmds_CXX= link_all_deplibs_CXX=unknown old_archive_cmds_CXX=$old_archive_cmds no_undefined_flag_CXX= whole_archive_flag_spec_CXX= enable_shared_with_static_runtimes_CXX=no # Dependencies to place before and after the object being linked: predep_objects_CXX= postdep_objects_CXX= predeps_CXX= postdeps_CXX= compiler_lib_search_path_CXX= # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o objext_CXX=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $rm conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $rm conftest* # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} compiler=$CC compiler_CXX=$CC for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` # We don't want -fno-exception wen compiling C++ code, so set the # no_builtin_flag separately if test "$GXX" = yes; then lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' else lt_prog_compiler_no_builtin_flag_CXX= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { echo "$as_me:$LINENO: checking for ld used by $CC" >&5 echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then { echo "$as_me:$LINENO: checking for GNU ld" >&5 echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; } else { echo "$as_me:$LINENO: checking for non-GNU ld" >&5 echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; } fi if test "${lt_cv_path_LD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 echo "${ECHO_T}$LD" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} { (exit 1); exit 1; }; } { echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; } if test "${lt_cv_prog_gnu_ld+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ grep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec_CXX= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics { echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } ld_shlibs_CXX=yes case $host_os in aix3*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aix4* | aix5*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix5*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_CXX='' hardcode_direct_CXX=yes hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes if test "$GXX" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct_CXX=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_CXX=yes hardcode_libdir_flag_spec_CXX='-L$libdir' hardcode_libdir_separator_CXX= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols_CXX=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag_CXX='-berok' # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag_CXX="-z nodefs" archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_CXX=' ${wl}-bernotok' allow_undefined_flag_CXX=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_CXX='$convenience' archive_cmds_need_lc_CXX=yes # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_CXX=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs_CXX=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_CXX='-L$libdir' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=no enable_shared_with_static_runtimes_CXX=yes if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs_CXX=no fi ;; darwin* | rhapsody*) case $host_os in rhapsody* | darwin1.[012]) allow_undefined_flag_CXX='${wl}-undefined ${wl}suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[012]) allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) allow_undefined_flag_CXX='${wl}-undefined ${wl}dynamic_lookup' ;; esac fi ;; esac archive_cmds_need_lc_CXX=no hardcode_direct_CXX=no hardcode_automatic_CXX=yes hardcode_shlibpath_var_CXX=unsupported whole_archive_flag_spec_CXX='' link_all_deplibs_CXX=yes if test "$GXX" = yes ; then lt_int_apple_cc_single_mod=no output_verbose_link_cmd='echo' if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then lt_int_apple_cc_single_mod=yes fi if test "X$lt_int_apple_cc_single_mod" = Xyes ; then archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' else archive_cmds_CXX='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' fi module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds if test "X$lt_int_apple_cc_single_mod" = Xyes ; then archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' else archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' fi module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' else case $cc_basename in xlc*) output_verbose_link_cmd='echo' archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ;; *) ld_shlibs_CXX=no ;; esac fi ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; freebsd[12]*) # C++ shared libraries reported to be fairly broken before switch to ELF ld_shlibs_CXX=no ;; freebsd-elf*) archive_cmds_need_lc_CXX=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions ld_shlibs_CXX=yes ;; gnu*) ;; hpux9*) hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: export_dynamic_flag_spec_CXX='${wl}-E' hardcode_direct_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) archive_cmds_CXX='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes; then archive_cmds_CXX='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: case $host_cpu in hppa*64*|ia64*) ;; *) export_dynamic_flag_spec_CXX='${wl}-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no ;; *) hardcode_direct_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; interix[3-9]*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' fi fi link_all_deplibs_CXX=yes ;; esac hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: ;; linux* | k*bsd*-gnu) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' hardcode_libdir_flag_spec_CXX='${wl}--rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc*) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; esac archive_cmds_need_lc_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; pgCC*) # Portland Group C++ compiler archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ;; cxx*) # Compaq C++ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_CXX='-rpath $libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' hardcode_libdir_flag_spec_CXX='-R$libdir' whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='echo' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; m88k*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; openbsd2*) # C++ shared libraries are fairly broken ld_shlibs_CXX=no ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' export_dynamic_flag_spec_CXX='${wl}-E' whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi output_verbose_link_cmd='echo' else ld_shlibs_CXX=no fi ;; osf3*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' hardcode_libdir_separator_CXX=: # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; cxx*) allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' hardcode_libdir_separator_CXX=: # Archives containing C++ object files must be created using # the KAI C++ compiler. old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; cxx*) allow_undefined_flag_CXX=' -expect_unresolved \*' archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~ $rm $lib.exp' hardcode_libdir_flag_spec_CXX='-rpath $libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; solaris*) case $cc_basename in CC*) # Sun C++ 4.2, 5.x and Centerline C++ archive_cmds_need_lc_CXX=yes no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_shlibpath_var_CXX=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' ;; esac link_all_deplibs_CXX=yes output_verbose_link_cmd='echo' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$GXX" = yes && test "$with_gnu_ld" = no; then no_undefined_flag_CXX=' ${wl}-z ${wl}defs' if $CC --version | grep -v '^2\.7' > /dev/null; then archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" fi hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag_CXX='${wl}-z,text' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. # So that behaviour is only enabled if SCOABSPATH is set to a # non-empty value in the environment. Most likely only useful for # creating official distributions of packages. # This is a hack until libtool officially supports absolute path # names for shared libraries. no_undefined_flag_CXX='${wl}-z,text' allow_undefined_flag_CXX='${wl}-z,nodefs' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes export_dynamic_flag_spec_CXX='${wl}-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac { echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 echo "${ECHO_T}$ld_shlibs_CXX" >&6; } test "$ld_shlibs_CXX" = no && can_build_shared=no GCC_CXX="$GXX" LD_CXX="$LD" cat > conftest.$ac_ext <&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no # The `*' in the case matches for architectures that use `case' in # $output_verbose_cmd can trigger glob expansion during the loop # eval without this substitution. output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"` for p in `eval $output_verbose_link_cmd`; do case $p in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test $p = "-L" \ || test $p = "-R"; then prev=$p continue else prev= fi if test "$pre_test_object_deps_done" = no; then case $p in -L* | -R*) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$compiler_lib_search_path_CXX"; then compiler_lib_search_path_CXX="${prev}${p}" else compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$postdeps_CXX"; then postdeps_CXX="${prev}${p}" else postdeps_CXX="${postdeps_CXX} ${prev}${p}" fi fi ;; *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test "$pre_test_object_deps_done" = no; then if test -z "$predep_objects_CXX"; then predep_objects_CXX="$p" else predep_objects_CXX="$predep_objects_CXX $p" fi else if test -z "$postdep_objects_CXX"; then postdep_objects_CXX="$p" else postdep_objects_CXX="$postdep_objects_CXX $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling CXX test program" fi $rm -f confest.$objext # PORTME: override above test on systems where it is broken case $host_os in interix[3-9]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. predep_objects_CXX= postdep_objects_CXX= postdeps_CXX= ;; linux*) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 # # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac if test "$solaris_use_stlport4" != yes; then postdeps_CXX='-library=Cstd -library=Crun' fi ;; esac ;; solaris*) case $cc_basename in CC*) # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac # Adding this requires a known-good setup of shared libraries for # Sun compiler versions before 5.6, else PIC objects from an old # archive will be linked into the output, leading to subtle bugs. if test "$solaris_use_stlport4" != yes; then postdeps_CXX='-library=Cstd -library=Crun' fi ;; esac ;; esac case " $postdeps_CXX " in *" -lc "*) archive_cmds_need_lc_CXX=no ;; esac lt_prog_compiler_wl_CXX= lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX= { echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic_CXX='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_CXX='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all lt_prog_compiler_pic_CXX= ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_CXX=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac else case $host_os in aix4* | aix5*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' else lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_AC_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; darwin*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files case $cc_basename in xlc*) lt_prog_compiler_pic_CXX='-qnocommon' lt_prog_compiler_wl_CXX='-Wl,' ;; esac ;; dgux*) case $cc_basename in ec++*) lt_prog_compiler_pic_CXX='-KPIC' ;; ghcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' if test "$host_cpu" != ia64; then lt_prog_compiler_pic_CXX='+Z' fi ;; aCC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_CXX='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu) case $cc_basename in KCC*) # KAI C++ Compiler lt_prog_compiler_wl_CXX='--backend -Wl,' lt_prog_compiler_pic_CXX='-fPIC' ;; icpc* | ecpc*) # Intel C++ lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-static' ;; pgCC*) # Portland Group C++ compiler. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fpic' lt_prog_compiler_static_CXX='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) lt_prog_compiler_pic_CXX='-W c,exportall' ;; *) ;; esac ;; netbsd*) ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) lt_prog_compiler_wl_CXX='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 lt_prog_compiler_pic_CXX='-pic' ;; cxx*) # Digital/Compaq C++ lt_prog_compiler_wl_CXX='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC*) # Sun C++ 4.2, 5.x and Centerline C++ lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x lt_prog_compiler_pic_CXX='-pic' lt_prog_compiler_static_CXX='-Bstatic' ;; lcc*) # Lucid lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 lt_prog_compiler_pic_CXX='-KPIC' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' ;; esac ;; vxworks*) ;; *) lt_prog_compiler_can_build_shared_CXX=no ;; esac fi { echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5 echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6; } # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_CXX"; then { echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6; } if test "${lt_prog_compiler_pic_works_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_prog_compiler_pic_works_CXX=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:12377: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:12381: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_prog_compiler_pic_works_CXX=yes fi fi $rm conftest* fi { echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_CXX" >&5 echo "${ECHO_T}$lt_prog_compiler_pic_works_CXX" >&6; } if test x"$lt_prog_compiler_pic_works_CXX" = xyes; then case $lt_prog_compiler_pic_CXX in "" | " "*) ;; *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; esac else lt_prog_compiler_pic_CXX= lt_prog_compiler_can_build_shared_CXX=no fi fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_CXX= ;; *) lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" ;; esac # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" { echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } if test "${lt_prog_compiler_static_works_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_prog_compiler_static_works_CXX=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_prog_compiler_static_works_CXX=yes fi else lt_prog_compiler_static_works_CXX=yes fi fi $rm conftest* LDFLAGS="$save_LDFLAGS" fi { echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_CXX" >&5 echo "${ECHO_T}$lt_prog_compiler_static_works_CXX" >&6; } if test x"$lt_prog_compiler_static_works_CXX" = xyes; then : else lt_prog_compiler_static_CXX= fi { echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_c_o_CXX=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:12481: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:12485: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . 2>&5 $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* fi { echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { echo "$as_me:$LINENO: result: $hard_links" >&5 echo "${ECHO_T}$hard_links" >&6; } if test "$hard_links" = no; then { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' case $host_os in aix4* | aix5*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) export_symbols_cmds_CXX="$ltdll_cmds" ;; cygwin* | mingw*) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;/^.*[ ]__nm__/s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac { echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 echo "${ECHO_T}$ld_shlibs_CXX" >&6; } test "$ld_shlibs_CXX" = no && can_build_shared=no # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_CXX" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_CXX=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds_CXX in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } $rm conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_CXX pic_flag=$lt_prog_compiler_pic_CXX compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_CXX allow_undefined_flag_CXX= if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc_CXX=no else archive_cmds_need_lc_CXX=yes fi allow_undefined_flag_CXX=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5 echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6; } ;; esac fi ;; esac { echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix4* | aix5*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[123]*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; interix[3-9]*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux* | k*bsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' shlibpath_overrides_runpath=no else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' shlibpath_overrides_runpath=yes case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { echo "$as_me:$LINENO: result: $dynamic_linker" >&5 echo "${ECHO_T}$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi { echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } hardcode_action_CXX= if test -n "$hardcode_libdir_flag_spec_CXX" || \ test -n "$runpath_var_CXX" || \ test "X$hardcode_automatic_CXX" = "Xyes" ; then # We can hardcode non-existant directories. if test "$hardcode_direct_CXX" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, CXX)" != no && test "$hardcode_minus_L_CXX" != no; then # Linking always hardcodes the temporary library directory. hardcode_action_CXX=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_CXX=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_CXX=unsupported fi { echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5 echo "${ECHO_T}$hardcode_action_CXX" >&6; } if test "$hardcode_action_CXX" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler_CXX \ CC_CXX \ LD_CXX \ lt_prog_compiler_wl_CXX \ lt_prog_compiler_pic_CXX \ lt_prog_compiler_static_CXX \ lt_prog_compiler_no_builtin_flag_CXX \ export_dynamic_flag_spec_CXX \ thread_safe_flag_spec_CXX \ whole_archive_flag_spec_CXX \ enable_shared_with_static_runtimes_CXX \ old_archive_cmds_CXX \ old_archive_from_new_cmds_CXX \ predep_objects_CXX \ postdep_objects_CXX \ predeps_CXX \ postdeps_CXX \ compiler_lib_search_path_CXX \ archive_cmds_CXX \ archive_expsym_cmds_CXX \ postinstall_cmds_CXX \ postuninstall_cmds_CXX \ old_archive_from_expsyms_cmds_CXX \ allow_undefined_flag_CXX \ no_undefined_flag_CXX \ export_symbols_cmds_CXX \ hardcode_libdir_flag_spec_CXX \ hardcode_libdir_flag_spec_ld_CXX \ hardcode_libdir_separator_CXX \ hardcode_automatic_CXX \ module_cmds_CXX \ module_expsym_cmds_CXX \ lt_cv_prog_compiler_c_o_CXX \ fix_srcfile_path_CXX \ exclude_expsyms_CXX \ include_expsyms_CXX; do case $var in old_archive_cmds_CXX | \ old_archive_from_new_cmds_CXX | \ archive_cmds_CXX | \ archive_expsym_cmds_CXX | \ module_cmds_CXX | \ module_expsym_cmds_CXX | \ old_archive_from_expsyms_cmds_CXX | \ export_symbols_cmds_CXX | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="$ofile" cat <<__EOF__ >> "$cfgfile" # ### BEGIN LIBTOOL TAG CONFIG: $tagname # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_CXX # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # LTCC compiler flags. LTCFLAGS=$lt_LTCFLAGS # A language-specific compiler. CC=$lt_compiler_CXX # Is the compiler the GNU C compiler? with_gcc=$GCC_CXX # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD_CXX # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_CXX # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_CXX pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX # Must we lock files when doing compilation? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_CXX # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds_CXX old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds_CXX archive_expsym_cmds=$lt_archive_expsym_cmds_CXX postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds_CXX module_expsym_cmds=$lt_module_expsym_cmds_CXX # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects_CXX # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects_CXX # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps_CXX # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps_CXX # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_CXX # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_CXX # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_CXX # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_CXX # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct_CXX # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L_CXX # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic_CXX # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_CXX # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path=$lt_fix_srcfile_path # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols_CXX # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_CXX # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_CXX # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_CXX # ### END LIBTOOL TAG CONFIG: $tagname __EOF__ else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC=$lt_save_CC LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ldcxx=$with_gnu_ld with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld else tagname="" fi ;; F77) if test -n "$F77" && test "X$F77" != "Xno"; then ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu archive_cmds_need_lc_F77=no allow_undefined_flag_F77= always_export_symbols_F77=no archive_expsym_cmds_F77= export_dynamic_flag_spec_F77= hardcode_direct_F77=no hardcode_libdir_flag_spec_F77= hardcode_libdir_flag_spec_ld_F77= hardcode_libdir_separator_F77= hardcode_minus_L_F77=no hardcode_automatic_F77=no module_cmds_F77= module_expsym_cmds_F77= link_all_deplibs_F77=unknown old_archive_cmds_F77=$old_archive_cmds no_undefined_flag_F77= whole_archive_flag_spec_F77= enable_shared_with_static_runtimes_F77=no # Source file extension for f77 test sources. ac_ext=f # Object file extension for compiled f77 test sources. objext=o objext_F77=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $rm conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $rm conftest* # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${F77-"f77"} compiler=$CC compiler_F77=$CC for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` { echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6; } { echo "$as_me:$LINENO: result: $can_build_shared" >&5 echo "${ECHO_T}$can_build_shared" >&6; } { echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6; } test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix4* | aix5*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac { echo "$as_me:$LINENO: result: $enable_shared" >&5 echo "${ECHO_T}$enable_shared" >&6; } { echo "$as_me:$LINENO: checking whether to build static libraries" >&5 echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6; } # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes { echo "$as_me:$LINENO: result: $enable_static" >&5 echo "${ECHO_T}$enable_static" >&6; } GCC_F77="$G77" LD_F77="$LD" lt_prog_compiler_wl_F77= lt_prog_compiler_pic_F77= lt_prog_compiler_static_F77= { echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } if test "$GCC" = yes; then lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_static_F77='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_F77='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4' ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic_F77='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_F77='-fno-common' ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared_F77=no enable_shared=no ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_F77=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_F77='-fPIC' ;; esac ;; *) lt_prog_compiler_pic_F77='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl_F77='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_F77='-Bstatic' else lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp' fi ;; darwin*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files case $cc_basename in xlc*) lt_prog_compiler_pic_F77='-qnocommon' lt_prog_compiler_wl_F77='-Wl,' ;; esac ;; mingw* | cygwin* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_F77='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl_F77='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_F77='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static_F77='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl_F77='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static_F77='-non_shared' ;; newsos6) lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' ;; linux* | k*bsd*-gnu) case $cc_basename in icc* | ecc*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-static' ;; pgcc* | pgf77* | pgf90* | pgf95*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-fpic' lt_prog_compiler_static_F77='-Bstatic' ;; ccc*) lt_prog_compiler_wl_F77='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static_F77='-non_shared' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' lt_prog_compiler_wl_F77='-Wl,' ;; *Sun\ F*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' lt_prog_compiler_wl_F77='' ;; esac ;; esac ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl_F77='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static_F77='-non_shared' ;; rdos*) lt_prog_compiler_static_F77='-non_shared' ;; solaris*) lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' case $cc_basename in f77* | f90* | f95*) lt_prog_compiler_wl_F77='-Qoption ld ';; *) lt_prog_compiler_wl_F77='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl_F77='-Qoption ld ' lt_prog_compiler_pic_F77='-PIC' lt_prog_compiler_static_F77='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic_F77='-Kconform_pic' lt_prog_compiler_static_F77='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' ;; unicos*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_can_build_shared_F77=no ;; uts4*) lt_prog_compiler_pic_F77='-pic' lt_prog_compiler_static_F77='-Bstatic' ;; *) lt_prog_compiler_can_build_shared_F77=no ;; esac fi { echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5 echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6; } # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_F77"; then { echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5 echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6; } if test "${lt_prog_compiler_pic_works_F77+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_prog_compiler_pic_works_F77=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_F77" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:14045: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:14049: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_prog_compiler_pic_works_F77=yes fi fi $rm conftest* fi { echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_F77" >&5 echo "${ECHO_T}$lt_prog_compiler_pic_works_F77" >&6; } if test x"$lt_prog_compiler_pic_works_F77" = xyes; then case $lt_prog_compiler_pic_F77 in "" | " "*) ;; *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;; esac else lt_prog_compiler_pic_F77= lt_prog_compiler_can_build_shared_F77=no fi fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_F77= ;; *) lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77" ;; esac # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_F77 eval lt_tmp_static_flag=\"$lt_prog_compiler_static_F77\" { echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } if test "${lt_prog_compiler_static_works_F77+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_prog_compiler_static_works_F77=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_prog_compiler_static_works_F77=yes fi else lt_prog_compiler_static_works_F77=yes fi fi $rm conftest* LDFLAGS="$save_LDFLAGS" fi { echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_F77" >&5 echo "${ECHO_T}$lt_prog_compiler_static_works_F77" >&6; } if test x"$lt_prog_compiler_static_works_F77" = xyes; then : else lt_prog_compiler_static_F77= fi { echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_c_o_F77=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:14149: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:14153: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_F77=yes fi fi chmod u+w . 2>&5 $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* fi { echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { echo "$as_me:$LINENO: result: $hard_links" >&5 echo "${ECHO_T}$hard_links" >&6; } if test "$hard_links" = no; then { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } runpath_var= allow_undefined_flag_F77= enable_shared_with_static_runtimes_F77=no archive_cmds_F77= archive_expsym_cmds_F77= old_archive_From_new_cmds_F77= old_archive_from_expsyms_cmds_F77= export_dynamic_flag_spec_F77= whole_archive_flag_spec_F77= thread_safe_flag_spec_F77= hardcode_libdir_flag_spec_F77= hardcode_libdir_flag_spec_ld_F77= hardcode_libdir_separator_F77= hardcode_direct_F77=no hardcode_minus_L_F77=no hardcode_shlibpath_var_F77=unsupported link_all_deplibs_F77=unknown hardcode_automatic_F77=no module_cmds_F77= module_expsym_cmds_F77= always_export_symbols_F77=no export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms_F77= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms_F77="_GLOBAL_OFFSET_TABLE_" # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. extract_expsyms_cmds= # Just being paranoid about ensuring that cc_basename is set. for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` case $host_os in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs_F77=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_F77='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec_F77= fi supports_anon_versioning=no case `$LD -v 2>/dev/null` in *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix3* | aix4* | aix5*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs_F77=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF fi ;; amigaos*) archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_minus_L_F77=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can't use # them. ld_shlibs_F77=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_F77=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs_F77=no fi ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_F77='-L$libdir' allow_undefined_flag_F77=unsupported always_export_symbols_F77=no enable_shared_with_static_runtimes_F77=yes export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs_F77=no fi ;; interix[3-9]*) hardcode_direct_F77=no hardcode_shlibpath_var_F77=no hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' export_dynamic_flag_spec_F77='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds_F77='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | k*bsd*-gnu) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then tmp_addflag= case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec_F77='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; *) tmp_sharedflag='-shared' ;; esac archive_cmds_F77='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test $supports_anon_versioning = yes; then archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ $echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi else ld_shlibs_F77=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs_F77=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_F77=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs_F77=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' else ld_shlibs_F77=no fi ;; esac ;; sunos4*) archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_F77=no fi ;; esac if test "$ld_shlibs_F77" = no; then runpath_var= hardcode_libdir_flag_spec_F77= export_dynamic_flag_spec_F77= whole_archive_flag_spec_F77= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag_F77=unsupported always_export_symbols_F77=yes archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L_F77=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct_F77=unsupported fi ;; aix4* | aix5*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix5*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_F77='' hardcode_direct_F77=yes hardcode_libdir_separator_F77=':' link_all_deplibs_F77=yes if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct_F77=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_F77=yes hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_libdir_separator_F77= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols_F77=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag_F77='-berok' # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF program main end _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_f77_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag_F77="-z nodefs" archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF program main end _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_f77_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_F77=' ${wl}-bernotok' allow_undefined_flag_F77=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_F77='$convenience' archive_cmds_need_lc_F77=yes # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_minus_L_F77=yes # see comment about different semantics on the GNU ld section ld_shlibs_F77=no ;; bsdi[45]*) export_dynamic_flag_spec_F77=-rdynamic ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec_F77=' ' allow_undefined_flag_F77=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_From_new_cmds_F77='true' # FIXME: Should let the user specify the lib program. old_archive_cmds_F77='lib -OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path_F77='`cygpath -w "$srcfile"`' enable_shared_with_static_runtimes_F77=yes ;; darwin* | rhapsody*) case $host_os in rhapsody* | darwin1.[012]) allow_undefined_flag_F77='${wl}-undefined ${wl}suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[012]) allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) allow_undefined_flag_F77='${wl}-undefined ${wl}dynamic_lookup' ;; esac fi ;; esac archive_cmds_need_lc_F77=no hardcode_direct_F77=no hardcode_automatic_F77=yes hardcode_shlibpath_var_F77=unsupported whole_archive_flag_spec_F77='' link_all_deplibs_F77=yes if test "$GCC" = yes ; then output_verbose_link_cmd='echo' archive_cmds_F77='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' else case $cc_basename in xlc*) output_verbose_link_cmd='echo' archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ;; *) ld_shlibs_F77=no ;; esac fi ;; dgux*) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_shlibpath_var_F77=no ;; freebsd1*) ld_shlibs_F77=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=yes hardcode_minus_L_F77=yes hardcode_shlibpath_var_F77=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' hardcode_libdir_separator_F77=: hardcode_direct_F77=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_F77=yes export_dynamic_flag_spec_F77='${wl}-E' ;; hpux10*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' hardcode_libdir_separator_F77=: hardcode_direct_F77=yes export_dynamic_flag_spec_F77='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_F77=yes fi ;; hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' hardcode_libdir_separator_F77=: case $host_cpu in hppa*64*|ia64*) hardcode_libdir_flag_spec_ld_F77='+b $libdir' hardcode_direct_F77=no hardcode_shlibpath_var_F77=no ;; *) hardcode_direct_F77=yes export_dynamic_flag_spec_F77='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_F77=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_ld_F77='-rpath $libdir' fi hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_F77=: link_all_deplibs_F77=yes ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no ;; newsos6) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=yes hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_F77=: hardcode_shlibpath_var_F77=no ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' export_dynamic_flag_spec_F77='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_F77='-R$libdir' ;; *) archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' ;; esac fi else ld_shlibs_F77=no fi ;; os2*) hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_minus_L_F77=yes allow_undefined_flag_F77=unsupported archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag_F77=' -expect_unresolved \*' archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_F77=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' else allow_undefined_flag_F77=' -expect_unresolved \*' archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec_F77='-rpath $libdir' fi hardcode_libdir_separator_F77=: ;; solaris*) no_undefined_flag_F77=' -z text' if test "$GCC" = yes; then wlarc='${wl}' archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' else wlarc='' archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' fi hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_shlibpath_var_F77=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then whole_archive_flag_spec_F77='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs_F77=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_direct_F77=yes hardcode_minus_L_F77=yes hardcode_shlibpath_var_F77=no ;; sysv4) case $host_vendor in sni) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds_F77='$CC -r -o $output$reload_objs' hardcode_direct_F77=no ;; motorola) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var_F77=no ;; sysv4.3*) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_F77=no export_dynamic_flag_spec_F77='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_F77=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs_F77=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag_F77='${wl}-z,text' archive_cmds_need_lc_F77=no hardcode_shlibpath_var_F77=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds_F77='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_F77='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag_F77='${wl}-z,text' allow_undefined_flag_F77='${wl}-z,nodefs' archive_cmds_need_lc_F77=no hardcode_shlibpath_var_F77=no hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' hardcode_libdir_separator_F77=':' link_all_deplibs_F77=yes export_dynamic_flag_spec_F77='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds_F77='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_F77='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_shlibpath_var_F77=no ;; *) ld_shlibs_F77=no ;; esac fi { echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5 echo "${ECHO_T}$ld_shlibs_F77" >&6; } test "$ld_shlibs_F77" = no && can_build_shared=no # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_F77" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_F77=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds_F77 in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } $rm conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_F77 pic_flag=$lt_prog_compiler_pic_F77 compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_F77 allow_undefined_flag_F77= if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc_F77=no else archive_cmds_need_lc_F77=yes fi allow_undefined_flag_F77=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5 echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6; } ;; esac fi ;; esac { echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix4* | aix5*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[123]*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; interix[3-9]*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux* | k*bsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' shlibpath_overrides_runpath=no else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' shlibpath_overrides_runpath=yes case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { echo "$as_me:$LINENO: result: $dynamic_linker" >&5 echo "${ECHO_T}$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi { echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } hardcode_action_F77= if test -n "$hardcode_libdir_flag_spec_F77" || \ test -n "$runpath_var_F77" || \ test "X$hardcode_automatic_F77" = "Xyes" ; then # We can hardcode non-existant directories. if test "$hardcode_direct_F77" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no && test "$hardcode_minus_L_F77" != no; then # Linking always hardcodes the temporary library directory. hardcode_action_F77=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_F77=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_F77=unsupported fi { echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5 echo "${ECHO_T}$hardcode_action_F77" >&6; } if test "$hardcode_action_F77" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler_F77 \ CC_F77 \ LD_F77 \ lt_prog_compiler_wl_F77 \ lt_prog_compiler_pic_F77 \ lt_prog_compiler_static_F77 \ lt_prog_compiler_no_builtin_flag_F77 \ export_dynamic_flag_spec_F77 \ thread_safe_flag_spec_F77 \ whole_archive_flag_spec_F77 \ enable_shared_with_static_runtimes_F77 \ old_archive_cmds_F77 \ old_archive_from_new_cmds_F77 \ predep_objects_F77 \ postdep_objects_F77 \ predeps_F77 \ postdeps_F77 \ compiler_lib_search_path_F77 \ archive_cmds_F77 \ archive_expsym_cmds_F77 \ postinstall_cmds_F77 \ postuninstall_cmds_F77 \ old_archive_from_expsyms_cmds_F77 \ allow_undefined_flag_F77 \ no_undefined_flag_F77 \ export_symbols_cmds_F77 \ hardcode_libdir_flag_spec_F77 \ hardcode_libdir_flag_spec_ld_F77 \ hardcode_libdir_separator_F77 \ hardcode_automatic_F77 \ module_cmds_F77 \ module_expsym_cmds_F77 \ lt_cv_prog_compiler_c_o_F77 \ fix_srcfile_path_F77 \ exclude_expsyms_F77 \ include_expsyms_F77; do case $var in old_archive_cmds_F77 | \ old_archive_from_new_cmds_F77 | \ archive_cmds_F77 | \ archive_expsym_cmds_F77 | \ module_cmds_F77 | \ module_expsym_cmds_F77 | \ old_archive_from_expsyms_cmds_F77 | \ export_symbols_cmds_F77 | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="$ofile" cat <<__EOF__ >> "$cfgfile" # ### BEGIN LIBTOOL TAG CONFIG: $tagname # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_F77 # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77 # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # LTCC compiler flags. LTCFLAGS=$lt_LTCFLAGS # A language-specific compiler. CC=$lt_compiler_F77 # Is the compiler the GNU C compiler? with_gcc=$GCC_F77 # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD_F77 # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_F77 # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_F77 pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77 # Must we lock files when doing compilation? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_F77 # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77 # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77 # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77 # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77 # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds_F77 old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77 # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77 # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds_F77 archive_expsym_cmds=$lt_archive_expsym_cmds_F77 postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds_F77 module_expsym_cmds=$lt_module_expsym_cmds_F77 # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects_F77 # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects_F77 # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps_F77 # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps_F77 # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_F77 # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_F77 # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_F77 # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_F77 # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77 # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_F77 # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77 # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct_F77 # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L_F77 # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_F77 # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic_F77 # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_F77 # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path=$lt_fix_srcfile_path # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols_F77 # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_F77 # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_F77 # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_F77 # ### END LIBTOOL TAG CONFIG: $tagname __EOF__ else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" else tagname="" fi ;; GCJ) if test -n "$GCJ" && test "X$GCJ" != "Xno"; then # Source file extension for Java test sources. ac_ext=java # Object file extension for compiled Java test sources. objext=o objext_GCJ=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="class foo {}" # Code to be used in simple link tests lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $rm conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $rm conftest* # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${GCJ-"gcj"} compiler=$CC compiler_GCJ=$CC for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` # GCJ did not exist at the time GCC didn't implicitly link libc in. archive_cmds_need_lc_GCJ=no old_archive_cmds_GCJ=$old_archive_cmds lt_prog_compiler_no_builtin_flag_GCJ= if test "$GCC" = yes; then lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin' { echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6; } if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:16338: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:16342: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $rm conftest* fi { echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl_GCJ= lt_prog_compiler_pic_GCJ= lt_prog_compiler_static_GCJ= { echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } if test "$GCC" = yes; then lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_static_GCJ='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_GCJ='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4' ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic_GCJ='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_GCJ='-fno-common' ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared_GCJ=no enable_shared=no ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_GCJ=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_GCJ='-fPIC' ;; esac ;; *) lt_prog_compiler_pic_GCJ='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl_GCJ='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_GCJ='-Bstatic' else lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp' fi ;; darwin*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files case $cc_basename in xlc*) lt_prog_compiler_pic_GCJ='-qnocommon' lt_prog_compiler_wl_GCJ='-Wl,' ;; esac ;; mingw* | cygwin* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_GCJ='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl_GCJ='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_GCJ='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl_GCJ='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static_GCJ='-non_shared' ;; newsos6) lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-Bstatic' ;; linux* | k*bsd*-gnu) case $cc_basename in icc* | ecc*) lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-static' ;; pgcc* | pgf77* | pgf90* | pgf95*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_pic_GCJ='-fpic' lt_prog_compiler_static_GCJ='-Bstatic' ;; ccc*) lt_prog_compiler_wl_GCJ='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static_GCJ='-non_shared' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-Bstatic' lt_prog_compiler_wl_GCJ='-Wl,' ;; *Sun\ F*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-Bstatic' lt_prog_compiler_wl_GCJ='' ;; esac ;; esac ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl_GCJ='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static_GCJ='-non_shared' ;; rdos*) lt_prog_compiler_static_GCJ='-non_shared' ;; solaris*) lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-Bstatic' case $cc_basename in f77* | f90* | f95*) lt_prog_compiler_wl_GCJ='-Qoption ld ';; *) lt_prog_compiler_wl_GCJ='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl_GCJ='-Qoption ld ' lt_prog_compiler_pic_GCJ='-PIC' lt_prog_compiler_static_GCJ='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic_GCJ='-Kconform_pic' lt_prog_compiler_static_GCJ='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-Bstatic' ;; unicos*) lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_can_build_shared_GCJ=no ;; uts4*) lt_prog_compiler_pic_GCJ='-pic' lt_prog_compiler_static_GCJ='-Bstatic' ;; *) lt_prog_compiler_can_build_shared_GCJ=no ;; esac fi { echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5 echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6; } # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_GCJ"; then { echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5 echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6; } if test "${lt_prog_compiler_pic_works_GCJ+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_prog_compiler_pic_works_GCJ=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_GCJ" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:16628: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:16632: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_prog_compiler_pic_works_GCJ=yes fi fi $rm conftest* fi { echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_GCJ" >&5 echo "${ECHO_T}$lt_prog_compiler_pic_works_GCJ" >&6; } if test x"$lt_prog_compiler_pic_works_GCJ" = xyes; then case $lt_prog_compiler_pic_GCJ in "" | " "*) ;; *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;; esac else lt_prog_compiler_pic_GCJ= lt_prog_compiler_can_build_shared_GCJ=no fi fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_GCJ= ;; *) lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ" ;; esac # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_GCJ eval lt_tmp_static_flag=\"$lt_prog_compiler_static_GCJ\" { echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } if test "${lt_prog_compiler_static_works_GCJ+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_prog_compiler_static_works_GCJ=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_prog_compiler_static_works_GCJ=yes fi else lt_prog_compiler_static_works_GCJ=yes fi fi $rm conftest* LDFLAGS="$save_LDFLAGS" fi { echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_GCJ" >&5 echo "${ECHO_T}$lt_prog_compiler_static_works_GCJ" >&6; } if test x"$lt_prog_compiler_static_works_GCJ" = xyes; then : else lt_prog_compiler_static_GCJ= fi { echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_c_o_GCJ=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:16732: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:16736: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_GCJ=yes fi fi chmod u+w . 2>&5 $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* fi { echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { echo "$as_me:$LINENO: result: $hard_links" >&5 echo "${ECHO_T}$hard_links" >&6; } if test "$hard_links" = no; then { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } runpath_var= allow_undefined_flag_GCJ= enable_shared_with_static_runtimes_GCJ=no archive_cmds_GCJ= archive_expsym_cmds_GCJ= old_archive_From_new_cmds_GCJ= old_archive_from_expsyms_cmds_GCJ= export_dynamic_flag_spec_GCJ= whole_archive_flag_spec_GCJ= thread_safe_flag_spec_GCJ= hardcode_libdir_flag_spec_GCJ= hardcode_libdir_flag_spec_ld_GCJ= hardcode_libdir_separator_GCJ= hardcode_direct_GCJ=no hardcode_minus_L_GCJ=no hardcode_shlibpath_var_GCJ=unsupported link_all_deplibs_GCJ=unknown hardcode_automatic_GCJ=no module_cmds_GCJ= module_expsym_cmds_GCJ= always_export_symbols_GCJ=no export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms_GCJ= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms_GCJ="_GLOBAL_OFFSET_TABLE_" # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. extract_expsyms_cmds= # Just being paranoid about ensuring that cc_basename is set. for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` case $host_os in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs_GCJ=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_GCJ='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec_GCJ= fi supports_anon_versioning=no case `$LD -v 2>/dev/null` in *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix3* | aix4* | aix5*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs_GCJ=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF fi ;; amigaos*) archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_minus_L_GCJ=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can't use # them. ld_shlibs_GCJ=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_GCJ=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs_GCJ=no fi ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_GCJ='-L$libdir' allow_undefined_flag_GCJ=unsupported always_export_symbols_GCJ=no enable_shared_with_static_runtimes_GCJ=yes export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs_GCJ=no fi ;; interix[3-9]*) hardcode_direct_GCJ=no hardcode_shlibpath_var_GCJ=no hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' export_dynamic_flag_spec_GCJ='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds_GCJ='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds_GCJ='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | k*bsd*-gnu) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then tmp_addflag= case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec_GCJ='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; *) tmp_sharedflag='-shared' ;; esac archive_cmds_GCJ='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test $supports_anon_versioning = yes; then archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ $echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi else ld_shlibs_GCJ=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs_GCJ=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_GCJ=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs_GCJ=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' else ld_shlibs_GCJ=no fi ;; esac ;; sunos4*) archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_GCJ=no fi ;; esac if test "$ld_shlibs_GCJ" = no; then runpath_var= hardcode_libdir_flag_spec_GCJ= export_dynamic_flag_spec_GCJ= whole_archive_flag_spec_GCJ= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag_GCJ=unsupported always_export_symbols_GCJ=yes archive_expsym_cmds_GCJ='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L_GCJ=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct_GCJ=unsupported fi ;; aix4* | aix5*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_GCJ='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix5*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_GCJ='' hardcode_direct_GCJ=yes hardcode_libdir_separator_GCJ=':' link_all_deplibs_GCJ=yes if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct_GCJ=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_GCJ=yes hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_libdir_separator_GCJ= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols_GCJ=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag_GCJ='-berok' # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag_GCJ="-z nodefs" archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_GCJ=' ${wl}-bernotok' allow_undefined_flag_GCJ=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_GCJ='$convenience' archive_cmds_need_lc_GCJ=yes # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_minus_L_GCJ=yes # see comment about different semantics on the GNU ld section ld_shlibs_GCJ=no ;; bsdi[45]*) export_dynamic_flag_spec_GCJ=-rdynamic ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec_GCJ=' ' allow_undefined_flag_GCJ=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_From_new_cmds_GCJ='true' # FIXME: Should let the user specify the lib program. old_archive_cmds_GCJ='lib -OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path_GCJ='`cygpath -w "$srcfile"`' enable_shared_with_static_runtimes_GCJ=yes ;; darwin* | rhapsody*) case $host_os in rhapsody* | darwin1.[012]) allow_undefined_flag_GCJ='${wl}-undefined ${wl}suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[012]) allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) allow_undefined_flag_GCJ='${wl}-undefined ${wl}dynamic_lookup' ;; esac fi ;; esac archive_cmds_need_lc_GCJ=no hardcode_direct_GCJ=no hardcode_automatic_GCJ=yes hardcode_shlibpath_var_GCJ=unsupported whole_archive_flag_spec_GCJ='' link_all_deplibs_GCJ=yes if test "$GCC" = yes ; then output_verbose_link_cmd='echo' archive_cmds_GCJ='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' else case $cc_basename in xlc*) output_verbose_link_cmd='echo' archive_cmds_GCJ='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ;; *) ld_shlibs_GCJ=no ;; esac fi ;; dgux*) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_shlibpath_var_GCJ=no ;; freebsd1*) ld_shlibs_GCJ=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec_GCJ='-R$libdir' hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_GCJ=yes hardcode_minus_L_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_GCJ='-R$libdir' hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds_GCJ='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds_GCJ='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' hardcode_libdir_separator_GCJ=: hardcode_direct_GCJ=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_GCJ=yes export_dynamic_flag_spec_GCJ='${wl}-E' ;; hpux10*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' hardcode_libdir_separator_GCJ=: hardcode_direct_GCJ=yes export_dynamic_flag_spec_GCJ='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_GCJ=yes fi ;; hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' hardcode_libdir_separator_GCJ=: case $host_cpu in hppa*64*|ia64*) hardcode_libdir_flag_spec_ld_GCJ='+b $libdir' hardcode_direct_GCJ=no hardcode_shlibpath_var_GCJ=no ;; *) hardcode_direct_GCJ=yes export_dynamic_flag_spec_GCJ='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_GCJ=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir' fi hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_GCJ=: link_all_deplibs_GCJ=yes ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec_GCJ='-R$libdir' hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; newsos6) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_GCJ=yes hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_GCJ=: hardcode_shlibpath_var_GCJ=no ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' export_dynamic_flag_spec_GCJ='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_GCJ='-R$libdir' ;; *) archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' ;; esac fi else ld_shlibs_GCJ=no fi ;; os2*) hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_minus_L_GCJ=yes allow_undefined_flag_GCJ=unsupported archive_cmds_GCJ='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_From_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag_GCJ=' -expect_unresolved \*' archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_GCJ=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' else allow_undefined_flag_GCJ=' -expect_unresolved \*' archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec_GCJ='-rpath $libdir' fi hardcode_libdir_separator_GCJ=: ;; solaris*) no_undefined_flag_GCJ=' -z text' if test "$GCC" = yes; then wlarc='${wl}' archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' else wlarc='' archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' fi hardcode_libdir_flag_spec_GCJ='-R$libdir' hardcode_shlibpath_var_GCJ=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then whole_archive_flag_spec_GCJ='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs_GCJ=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_direct_GCJ=yes hardcode_minus_L_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; sysv4) case $host_vendor in sni) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_GCJ=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds_GCJ='$CC -r -o $output$reload_objs' hardcode_direct_GCJ=no ;; motorola) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var_GCJ=no ;; sysv4.3*) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_GCJ=no export_dynamic_flag_spec_GCJ='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_GCJ=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs_GCJ=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag_GCJ='${wl}-z,text' archive_cmds_need_lc_GCJ=no hardcode_shlibpath_var_GCJ=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds_GCJ='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_GCJ='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag_GCJ='${wl}-z,text' allow_undefined_flag_GCJ='${wl}-z,nodefs' archive_cmds_need_lc_GCJ=no hardcode_shlibpath_var_GCJ=no hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' hardcode_libdir_separator_GCJ=':' link_all_deplibs_GCJ=yes export_dynamic_flag_spec_GCJ='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds_GCJ='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_GCJ='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_shlibpath_var_GCJ=no ;; *) ld_shlibs_GCJ=no ;; esac fi { echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5 echo "${ECHO_T}$ld_shlibs_GCJ" >&6; } test "$ld_shlibs_GCJ" = no && can_build_shared=no # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_GCJ" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_GCJ=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds_GCJ in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } $rm conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_GCJ pic_flag=$lt_prog_compiler_pic_GCJ compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ allow_undefined_flag_GCJ= if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc_GCJ=no else archive_cmds_need_lc_GCJ=yes fi allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5 echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6; } ;; esac fi ;; esac { echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix4* | aix5*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[123]*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; interix[3-9]*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux* | k*bsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' shlibpath_overrides_runpath=no else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' shlibpath_overrides_runpath=yes case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { echo "$as_me:$LINENO: result: $dynamic_linker" >&5 echo "${ECHO_T}$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi { echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } hardcode_action_GCJ= if test -n "$hardcode_libdir_flag_spec_GCJ" || \ test -n "$runpath_var_GCJ" || \ test "X$hardcode_automatic_GCJ" = "Xyes" ; then # We can hardcode non-existant directories. if test "$hardcode_direct_GCJ" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no && test "$hardcode_minus_L_GCJ" != no; then # Linking always hardcodes the temporary library directory. hardcode_action_GCJ=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_GCJ=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_GCJ=unsupported fi { echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5 echo "${ECHO_T}$hardcode_action_GCJ" >&6; } if test "$hardcode_action_GCJ" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler_GCJ \ CC_GCJ \ LD_GCJ \ lt_prog_compiler_wl_GCJ \ lt_prog_compiler_pic_GCJ \ lt_prog_compiler_static_GCJ \ lt_prog_compiler_no_builtin_flag_GCJ \ export_dynamic_flag_spec_GCJ \ thread_safe_flag_spec_GCJ \ whole_archive_flag_spec_GCJ \ enable_shared_with_static_runtimes_GCJ \ old_archive_cmds_GCJ \ old_archive_from_new_cmds_GCJ \ predep_objects_GCJ \ postdep_objects_GCJ \ predeps_GCJ \ postdeps_GCJ \ compiler_lib_search_path_GCJ \ archive_cmds_GCJ \ archive_expsym_cmds_GCJ \ postinstall_cmds_GCJ \ postuninstall_cmds_GCJ \ old_archive_from_expsyms_cmds_GCJ \ allow_undefined_flag_GCJ \ no_undefined_flag_GCJ \ export_symbols_cmds_GCJ \ hardcode_libdir_flag_spec_GCJ \ hardcode_libdir_flag_spec_ld_GCJ \ hardcode_libdir_separator_GCJ \ hardcode_automatic_GCJ \ module_cmds_GCJ \ module_expsym_cmds_GCJ \ lt_cv_prog_compiler_c_o_GCJ \ fix_srcfile_path_GCJ \ exclude_expsyms_GCJ \ include_expsyms_GCJ; do case $var in old_archive_cmds_GCJ | \ old_archive_from_new_cmds_GCJ | \ archive_cmds_GCJ | \ archive_expsym_cmds_GCJ | \ module_cmds_GCJ | \ module_expsym_cmds_GCJ | \ old_archive_from_expsyms_cmds_GCJ | \ export_symbols_cmds_GCJ | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="$ofile" cat <<__EOF__ >> "$cfgfile" # ### BEGIN LIBTOOL TAG CONFIG: $tagname # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_GCJ # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_GCJ # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # LTCC compiler flags. LTCFLAGS=$lt_LTCFLAGS # A language-specific compiler. CC=$lt_compiler_GCJ # Is the compiler the GNU C compiler? with_gcc=$GCC_GCJ # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD_GCJ # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_GCJ # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_GCJ pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ # Must we lock files when doing compilation? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_GCJ # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_GCJ # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_GCJ # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_GCJ # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec_GCJ # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds_GCJ old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_GCJ # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_GCJ # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds_GCJ archive_expsym_cmds=$lt_archive_expsym_cmds_GCJ postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds_GCJ module_expsym_cmds=$lt_module_expsym_cmds_GCJ # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects_GCJ # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects_GCJ # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps_GCJ # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps_GCJ # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_GCJ # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_GCJ # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_GCJ # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_GCJ # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_GCJ # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_GCJ # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_GCJ # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct_GCJ # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L_GCJ # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_GCJ # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic_GCJ # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_GCJ # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path=$lt_fix_srcfile_path # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols_GCJ # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_GCJ # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_GCJ # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_GCJ # ### END LIBTOOL TAG CONFIG: $tagname __EOF__ else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" else tagname="" fi ;; RC) # Source file extension for RC test sources. ac_ext=rc # Object file extension for compiled RC test sources. objext=o objext_RC=$objext # Code to be used in simple compile tests lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' # Code to be used in simple link tests lt_simple_link_test_code="$lt_simple_compile_test_code" # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $rm conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $rm conftest* # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${RC-"windres"} compiler=$CC compiler_RC=$CC for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` lt_cv_prog_compiler_c_o_RC=yes # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler_RC \ CC_RC \ LD_RC \ lt_prog_compiler_wl_RC \ lt_prog_compiler_pic_RC \ lt_prog_compiler_static_RC \ lt_prog_compiler_no_builtin_flag_RC \ export_dynamic_flag_spec_RC \ thread_safe_flag_spec_RC \ whole_archive_flag_spec_RC \ enable_shared_with_static_runtimes_RC \ old_archive_cmds_RC \ old_archive_from_new_cmds_RC \ predep_objects_RC \ postdep_objects_RC \ predeps_RC \ postdeps_RC \ compiler_lib_search_path_RC \ archive_cmds_RC \ archive_expsym_cmds_RC \ postinstall_cmds_RC \ postuninstall_cmds_RC \ old_archive_from_expsyms_cmds_RC \ allow_undefined_flag_RC \ no_undefined_flag_RC \ export_symbols_cmds_RC \ hardcode_libdir_flag_spec_RC \ hardcode_libdir_flag_spec_ld_RC \ hardcode_libdir_separator_RC \ hardcode_automatic_RC \ module_cmds_RC \ module_expsym_cmds_RC \ lt_cv_prog_compiler_c_o_RC \ fix_srcfile_path_RC \ exclude_expsyms_RC \ include_expsyms_RC; do case $var in old_archive_cmds_RC | \ old_archive_from_new_cmds_RC | \ archive_cmds_RC | \ archive_expsym_cmds_RC | \ module_cmds_RC | \ module_expsym_cmds_RC | \ old_archive_from_expsyms_cmds_RC | \ export_symbols_cmds_RC | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="$ofile" cat <<__EOF__ >> "$cfgfile" # ### BEGIN LIBTOOL TAG CONFIG: $tagname # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_RC # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # LTCC compiler flags. LTCFLAGS=$lt_LTCFLAGS # A language-specific compiler. CC=$lt_compiler_RC # Is the compiler the GNU C compiler? with_gcc=$GCC_RC # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD_RC # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_RC # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_RC pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC # Must we lock files when doing compilation? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_RC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec_RC # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds_RC old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds_RC archive_expsym_cmds=$lt_archive_expsym_cmds_RC postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds_RC module_expsym_cmds=$lt_module_expsym_cmds_RC # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects_RC # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects_RC # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps_RC # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps_RC # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_RC # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_RC # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_RC # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_RC # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_RC # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct_RC # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L_RC # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_RC # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic_RC # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_RC # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path=$lt_fix_srcfile_path # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols_RC # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_RC # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_RC # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_RC # ### END LIBTOOL TAG CONFIG: $tagname __EOF__ else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" ;; *) { { echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5 echo "$as_me: error: Unsupported tag name: $tagname" >&2;} { (exit 1); exit 1; }; } ;; esac # Append the new tag name to the list of available tags. if test -n "$tagname" ; then available_tags="$available_tags $tagname" fi fi done IFS="$lt_save_ifs" # Now substitute the updated list of available tags. if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then mv "${ofile}T" "$ofile" chmod +x "$ofile" else rm -f "${ofile}T" { { echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5 echo "$as_me: error: unable to update list of available tagged configurations." >&2;} { (exit 1); exit 1; }; } fi fi # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' # Prevent multiple expansion # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. { echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; } if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in ./ | .// | /cC/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi done done ;; esac done IFS=$as_save_IFS fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { echo "$as_me:$LINENO: result: $INSTALL" >&5 echo "${ECHO_T}$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { echo "$as_me:$LINENO: checking whether ln -s works" >&5 echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } else { echo "$as_me:$LINENO: result: no, using $LN_S" >&5 echo "${ECHO_T}no, using $LN_S" >&6; } fi { echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; } set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } SET_MAKE= else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi { echo "$as_me:$LINENO: checking for ISO C99 varargs macros in C" >&5 echo $ECHO_N "checking for ISO C99 varargs macros in C... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { int a(int p1, int p2, int p3); #define call_a(...) a(1,__VA_ARGS__) call_a(2,3); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then axis2c_have_iso_c_varargs=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 axis2c_have_iso_c_varargs=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { echo "$as_me:$LINENO: result: $axis2c_have_iso_c_varargs" >&5 echo "${ECHO_T}$axis2c_have_iso_c_varargs" >&6; } { echo "$as_me:$LINENO: checking for GNUC varargs macros" >&5 echo $ECHO_N "checking for GNUC varargs macros... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { int a(int p1, int p2, int p3); #define call_a(params...) a(1,params) call_a(2,3); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then axis2c_have_gnuc_varargs=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 axis2c_have_gnuc_varargs=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { echo "$as_me:$LINENO: result: $axis2c_have_gnuc_varargs" >&5 echo "${ECHO_T}$axis2c_have_gnuc_varargs" >&6; } if test x$axis2c_have_iso_c_varargs = xyes; then cat >>confdefs.h <<\_ACEOF #define HAVE_ISO_VARARGS 1 _ACEOF fi if test x$axis2c_have_gnuc_varargs = xyes; then cat >>confdefs.h <<\_ACEOF #define HAVE_GNUC_VARARGS 1 _ACEOF fi { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; } if test "${ac_cv_lib_dl_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; } if test $ac_cv_lib_dl_dlopen = yes; then cat >>confdefs.h <<_ACEOF #define HAVE_LIBDL 1 _ACEOF LIBS="-ldl $LIBS" fi CFLAGS="$CFLAGS -D_LARGEFILE64_SOURCE -g3" if test "$GCC" = "yes"; then CFLAGS="$CFLAGS -ansi -Wall -Werror -ggdb -Wno-implicit-function-declaration" #CFLAGS="$CFLAGS -ansi -Wall -Wno-implicit-function-declaration" fi LDFLAGS="$LDFLAGS -lpthread" { echo "$as_me:$LINENO: checking for ANSI C header files" >&5 echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } if test "${ac_cv_header_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_header_stdc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF rm -f conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi fi { echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 echo "${ECHO_T}$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF #define STDC_HEADERS 1 _ACEOF fi for ac_header in stdio.h stdlib.h string.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then { echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi ac_res=`eval echo '${'$as_ac_Header'}'` { echo "$as_me:$LINENO: result: $ac_res" >&5 echo "${ECHO_T}$ac_res" >&6; } else # Is the header compilable? { echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6; } # Is the header present? { echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext { echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ;; esac { echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi ac_res=`eval echo '${'$as_ac_Header'}'` { echo "$as_me:$LINENO: result: $ac_res" >&5 echo "${ECHO_T}$ac_res" >&6; } fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in stdlib.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then { echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi ac_res=`eval echo '${'$as_ac_Header'}'` { echo "$as_me:$LINENO: result: $ac_res" >&5 echo "${ECHO_T}$ac_res" >&6; } else # Is the header compilable? { echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6; } # Is the header present? { echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext { echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ;; esac { echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi ac_res=`eval echo '${'$as_ac_Header'}'` { echo "$as_me:$LINENO: result: $ac_res" >&5 echo "${ECHO_T}$ac_res" >&6; } fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done { echo "$as_me:$LINENO: checking for GNU libc compatible malloc" >&5 echo $ECHO_N "checking for GNU libc compatible malloc... $ECHO_C" >&6; } if test "${ac_cv_func_malloc_0_nonnull+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then ac_cv_func_malloc_0_nonnull=no else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #if defined STDC_HEADERS || defined HAVE_STDLIB_H # include #else char *malloc (); #endif int main () { return ! malloc (0); ; return 0; } _ACEOF rm -f conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_malloc_0_nonnull=yes else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_func_malloc_0_nonnull=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi { echo "$as_me:$LINENO: result: $ac_cv_func_malloc_0_nonnull" >&5 echo "${ECHO_T}$ac_cv_func_malloc_0_nonnull" >&6; } if test $ac_cv_func_malloc_0_nonnull = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_MALLOC 1 _ACEOF else cat >>confdefs.h <<\_ACEOF #define HAVE_MALLOC 0 _ACEOF case " $LIBOBJS " in *" malloc.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS malloc.$ac_objext" ;; esac cat >>confdefs.h <<\_ACEOF #define malloc rpl_malloc _ACEOF fi for ac_header in stdlib.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then { echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi ac_res=`eval echo '${'$as_ac_Header'}'` { echo "$as_me:$LINENO: result: $ac_res" >&5 echo "${ECHO_T}$ac_res" >&6; } else # Is the header compilable? { echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6; } # Is the header present? { echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext { echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ;; esac { echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi ac_res=`eval echo '${'$as_ac_Header'}'` { echo "$as_me:$LINENO: result: $ac_res" >&5 echo "${ECHO_T}$ac_res" >&6; } fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done { echo "$as_me:$LINENO: checking for GNU libc compatible realloc" >&5 echo $ECHO_N "checking for GNU libc compatible realloc... $ECHO_C" >&6; } if test "${ac_cv_func_realloc_0_nonnull+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then ac_cv_func_realloc_0_nonnull=no else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #if defined STDC_HEADERS || defined HAVE_STDLIB_H # include #else char *realloc (); #endif int main () { return ! realloc (0, 0); ; return 0; } _ACEOF rm -f conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_realloc_0_nonnull=yes else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_func_realloc_0_nonnull=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi { echo "$as_me:$LINENO: result: $ac_cv_func_realloc_0_nonnull" >&5 echo "${ECHO_T}$ac_cv_func_realloc_0_nonnull" >&6; } if test $ac_cv_func_realloc_0_nonnull = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_REALLOC 1 _ACEOF else cat >>confdefs.h <<\_ACEOF #define HAVE_REALLOC 0 _ACEOF case " $LIBOBJS " in *" realloc.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS realloc.$ac_objext" ;; esac cat >>confdefs.h <<\_ACEOF #define realloc rpl_realloc _ACEOF fi #AC_CHECK_FUNCS([memmove]) { echo "$as_me:$LINENO: checking path to use Axis2C . This is a compulsory to build Rampart-C" >&5 echo $ECHO_N "checking path to use Axis2C . This is a compulsory to build Rampart-C... $ECHO_C" >&6; } # Check whether --with-axis2 was given. if test "${with_axis2+set}" = set; then withval=$with_axis2; case "$withval" in no) { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } ;; *) { echo "$as_me:$LINENO: result: $withval" >&5 echo "${ECHO_T}$withval" >&6; } if test -d $withval; then axis2inc="-I$withval" elif test -d '$(AXIS2C_HOME)/include/axis2-1.6.0'; then axis2inc="-I$(AXIS2C_HOME)/include/axis2-1.6.0" else { { echo "$as_me:$LINENO: error: could not find axis2inc. stop" >&5 echo "$as_me: error: could not find axis2inc. stop" >&2;} { (exit 1); exit 1; }; } fi ;; esac else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi { echo "$as_me:$LINENO: checking path to use openssl . This is a compulsory to build Rampart-C" >&5 echo $ECHO_N "checking path to use openssl . This is a compulsory to build Rampart-C... $ECHO_C" >&6; } # Check whether --with-openssl was given. if test "${with_openssl+set}" = set; then withval=$with_openssl; case "$withval" in no) { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } ;; *) { echo "$as_me:$LINENO: result: $withval" >&5 echo "${ECHO_T}$withval" >&6; } if test -d $withval; then opensslinc="-I$withval/include" openssllib="-L$withval/lib" elif test -d '/usr/include/openssl'; then opensslinc="-I/usr/include/openssl" openssllib="" else { { echo "$as_me:$LINENO: error: could not find openssl. stop" >&5 echo "$as_me: error: could not find openssl. stop" >&2;} { (exit 1); exit 1; }; } fi ;; esac else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi AXIS2INC=$axis2inc AXIS2LIB='-L$(AXIS2C_HOME)/lib' AXIOMINC=$axiominc NEETHIINC=$neethiinc OPENSSLINC=$opensslinc OPENSSLLIB=$openssllib UTILINC=$axis2_utilinc VERSION_NO="3:0:3" ac_config_files="$ac_config_files Makefile src/Makefile src/omxmlsec/Makefile src/omxmlsec/tokens/Makefile src/omxmlsec/openssl/Makefile src/omxmlsec/c14n/Makefile src/data/Makefile src/handlers/Makefile src/core/Makefile src/trust/Makefile src/util/Makefile src/secconv/Makefile src/rahas/Makefile test/Makefile test/omxmlsec/Makefile test/c14n/Makefile test/openssl/Makefile test/openssl/sign/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( *) $as_unset $ac_var ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes (double-quote # substitution turns \\\\ into \\, and sed turns \\ into \). sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then test "x$cache_file" != "x/dev/null" && { echo "$as_me:$LINENO: updating cache $cache_file" >&5 echo "$as_me: updating cache $cache_file" >&6;} cat confcache >$cache_file else { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi : ${CONFIG_STATUS=./config.status} ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 echo "$as_me: creating $CONFIG_STATUS" >&6;} cat >$CONFIG_STATUS <<_ACEOF #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi # PATH needs CR # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) as_nl=' ' IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 { (exit 1); exit 1; } fi # Work around bugs in pre-3.0 UWIN ksh. for as_var in ENV MAIL MAILPATH do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. for as_var in \ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ LC_TELEPHONE LC_TIME do if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var fi done # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # CDPATH. $as_unset CDPATH as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line after each line using $LINENO; the second 'sed' # does the real work. The second script uses 'N' to pair each # line-number line with the line containing $LINENO, and appends # trailing '-' during substitution so that $LINENO is not a special # case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # scripts with optimization help from Paolo Bonzini. Blame Lee # E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in -n*) case `echo 'x\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. *) ECHO_C='\c';; esac;; *) ECHO_N='-n';; esac if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir fi echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 # Save the log message, to keep $[0] and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by rampartc-src $as_me 1.3.0, which was generated by GNU Autoconf 2.61. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF cat >>$CONFIG_STATUS <<_ACEOF # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. Usage: $0 [OPTIONS] [FILE]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ rampartc-src config.status 1.3.0 configured by $0, generated by GNU Autoconf 2.61, with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" Copyright (C) 2006 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # If no file are specified by the user, then we need to provide default # value. By we need to know if files were specified by the user. ac_need_defaults=: while test $# != 0 do case $1 in --*=*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) echo "$ac_cs_version"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift CONFIG_FILES="$CONFIG_FILES $ac_optarg" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header { echo "$as_me: error: ambiguous option: $1 Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; };; --help | --hel | -h ) echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) { echo "$as_me: error: unrecognized option: $1 Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *) ac_config_targets="$ac_config_targets $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF if \$ac_cs_recheck; then echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 CONFIG_SHELL=$SHELL export CONFIG_SHELL exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "src/omxmlsec/Makefile") CONFIG_FILES="$CONFIG_FILES src/omxmlsec/Makefile" ;; "src/omxmlsec/tokens/Makefile") CONFIG_FILES="$CONFIG_FILES src/omxmlsec/tokens/Makefile" ;; "src/omxmlsec/openssl/Makefile") CONFIG_FILES="$CONFIG_FILES src/omxmlsec/openssl/Makefile" ;; "src/omxmlsec/c14n/Makefile") CONFIG_FILES="$CONFIG_FILES src/omxmlsec/c14n/Makefile" ;; "src/data/Makefile") CONFIG_FILES="$CONFIG_FILES src/data/Makefile" ;; "src/handlers/Makefile") CONFIG_FILES="$CONFIG_FILES src/handlers/Makefile" ;; "src/core/Makefile") CONFIG_FILES="$CONFIG_FILES src/core/Makefile" ;; "src/trust/Makefile") CONFIG_FILES="$CONFIG_FILES src/trust/Makefile" ;; "src/util/Makefile") CONFIG_FILES="$CONFIG_FILES src/util/Makefile" ;; "src/secconv/Makefile") CONFIG_FILES="$CONFIG_FILES src/secconv/Makefile" ;; "src/rahas/Makefile") CONFIG_FILES="$CONFIG_FILES src/rahas/Makefile" ;; "test/Makefile") CONFIG_FILES="$CONFIG_FILES test/Makefile" ;; "test/omxmlsec/Makefile") CONFIG_FILES="$CONFIG_FILES test/omxmlsec/Makefile" ;; "test/c14n/Makefile") CONFIG_FILES="$CONFIG_FILES test/c14n/Makefile" ;; "test/openssl/Makefile") CONFIG_FILES="$CONFIG_FILES test/openssl/Makefile" ;; "test/openssl/sign/Makefile") CONFIG_FILES="$CONFIG_FILES test/openssl/sign/Makefile" ;; *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= trap 'exit_status=$? { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status ' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || { echo "$me: cannot create a temporary directory in ." >&2 { (exit 1); exit 1; } } # # Set up the sed scripts for CONFIG_FILES section. # # No need to generate the scripts if there are no CONFIG_FILES. # This happens for instance when ./config.status config.h if test -n "$CONFIG_FILES"; then _ACEOF ac_delim='%!_!# ' for ac_last_try in false false false false false :; do cat >conf$$subs.sed <<_ACEOF SHELL!$SHELL$ac_delim PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim PACKAGE_NAME!$PACKAGE_NAME$ac_delim PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim PACKAGE_STRING!$PACKAGE_STRING$ac_delim PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim exec_prefix!$exec_prefix$ac_delim prefix!$prefix$ac_delim program_transform_name!$program_transform_name$ac_delim bindir!$bindir$ac_delim sbindir!$sbindir$ac_delim libexecdir!$libexecdir$ac_delim datarootdir!$datarootdir$ac_delim datadir!$datadir$ac_delim sysconfdir!$sysconfdir$ac_delim sharedstatedir!$sharedstatedir$ac_delim localstatedir!$localstatedir$ac_delim includedir!$includedir$ac_delim oldincludedir!$oldincludedir$ac_delim docdir!$docdir$ac_delim infodir!$infodir$ac_delim htmldir!$htmldir$ac_delim dvidir!$dvidir$ac_delim pdfdir!$pdfdir$ac_delim psdir!$psdir$ac_delim libdir!$libdir$ac_delim localedir!$localedir$ac_delim mandir!$mandir$ac_delim DEFS!$DEFS$ac_delim ECHO_C!$ECHO_C$ac_delim ECHO_N!$ECHO_N$ac_delim ECHO_T!$ECHO_T$ac_delim LIBS!$LIBS$ac_delim build_alias!$build_alias$ac_delim host_alias!$host_alias$ac_delim target_alias!$target_alias$ac_delim build!$build$ac_delim build_cpu!$build_cpu$ac_delim build_vendor!$build_vendor$ac_delim build_os!$build_os$ac_delim host!$host$ac_delim host_cpu!$host_cpu$ac_delim host_vendor!$host_vendor$ac_delim host_os!$host_os$ac_delim target!$target$ac_delim target_cpu!$target_cpu$ac_delim target_vendor!$target_vendor$ac_delim target_os!$target_os$ac_delim INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim INSTALL_DATA!$INSTALL_DATA$ac_delim am__isrc!$am__isrc$ac_delim CYGPATH_W!$CYGPATH_W$ac_delim PACKAGE!$PACKAGE$ac_delim VERSION!$VERSION$ac_delim ACLOCAL!$ACLOCAL$ac_delim AUTOCONF!$AUTOCONF$ac_delim AUTOMAKE!$AUTOMAKE$ac_delim AUTOHEADER!$AUTOHEADER$ac_delim MAKEINFO!$MAKEINFO$ac_delim install_sh!$install_sh$ac_delim STRIP!$STRIP$ac_delim INSTALL_STRIP_PROGRAM!$INSTALL_STRIP_PROGRAM$ac_delim mkdir_p!$mkdir_p$ac_delim AWK!$AWK$ac_delim SET_MAKE!$SET_MAKE$ac_delim am__leading_dot!$am__leading_dot$ac_delim AMTAR!$AMTAR$ac_delim am__tar!$am__tar$ac_delim am__untar!$am__untar$ac_delim CC!$CC$ac_delim CFLAGS!$CFLAGS$ac_delim LDFLAGS!$LDFLAGS$ac_delim CPPFLAGS!$CPPFLAGS$ac_delim ac_ct_CC!$ac_ct_CC$ac_delim EXEEXT!$EXEEXT$ac_delim OBJEXT!$OBJEXT$ac_delim DEPDIR!$DEPDIR$ac_delim am__include!$am__include$ac_delim am__quote!$am__quote$ac_delim AMDEP_TRUE!$AMDEP_TRUE$ac_delim AMDEP_FALSE!$AMDEP_FALSE$ac_delim AMDEPBACKSLASH!$AMDEPBACKSLASH$ac_delim CCDEPMODE!$CCDEPMODE$ac_delim am__fastdepCC_TRUE!$am__fastdepCC_TRUE$ac_delim am__fastdepCC_FALSE!$am__fastdepCC_FALSE$ac_delim CXX!$CXX$ac_delim CXXFLAGS!$CXXFLAGS$ac_delim ac_ct_CXX!$ac_ct_CXX$ac_delim CXXDEPMODE!$CXXDEPMODE$ac_delim am__fastdepCXX_TRUE!$am__fastdepCXX_TRUE$ac_delim am__fastdepCXX_FALSE!$am__fastdepCXX_FALSE$ac_delim CPP!$CPP$ac_delim SED!$SED$ac_delim GREP!$GREP$ac_delim EGREP!$EGREP$ac_delim _ACEOF if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then break elif $ac_last_try; then { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` if test -n "$ac_eof"; then ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` ac_eof=`expr $ac_eof + 1` fi cat >>$CONFIG_STATUS <<_ACEOF cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof /@[a-zA-Z_][a-zA-Z_0-9]*@/!b _ACEOF sed ' s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g s/^/s,@/; s/!/@,|#_!!_#|/ :n t n s/'"$ac_delim"'$/,g/; t s/$/\\/; p N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n ' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF CEOF$ac_eof _ACEOF ac_delim='%!_!# ' for ac_last_try in false false false false false :; do cat >conf$$subs.sed <<_ACEOF LN_S!$LN_S$ac_delim ECHO!$ECHO$ac_delim AR!$AR$ac_delim RANLIB!$RANLIB$ac_delim CXXCPP!$CXXCPP$ac_delim F77!$F77$ac_delim FFLAGS!$FFLAGS$ac_delim ac_ct_F77!$ac_ct_F77$ac_delim LIBTOOL!$LIBTOOL$ac_delim LIBOBJS!$LIBOBJS$ac_delim AXIS2INC!$AXIS2INC$ac_delim AXIS2LIB!$AXIS2LIB$ac_delim AXIOMINC!$AXIOMINC$ac_delim OPENSSLINC!$OPENSSLINC$ac_delim OPENSSLLIB!$OPENSSLLIB$ac_delim NEETHIINC!$NEETHIINC$ac_delim UTILINC!$UTILINC$ac_delim XMLSCHEMAINC!$XMLSCHEMAINC$ac_delim VERSION_NO!$VERSION_NO$ac_delim LTLIBOBJS!$LTLIBOBJS$ac_delim _ACEOF if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 20; then break elif $ac_last_try; then { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` if test -n "$ac_eof"; then ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` ac_eof=`expr $ac_eof + 1` fi cat >>$CONFIG_STATUS <<_ACEOF cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof /@[a-zA-Z_][a-zA-Z_0-9]*@/!b end _ACEOF sed ' s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g s/^/s,@/; s/!/@,|#_!!_#|/ :n t n s/'"$ac_delim"'$/,g/; t s/$/\\/; p N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n ' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF :end s/|#_!!_#|//g CEOF$ac_eof _ACEOF # VPATH may cause trouble with some makes, so we remove $(srcdir), # ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=/{ s/:*\$(srcdir):*/:/ s/:*\${srcdir}:*/:/ s/:*@srcdir@:*/:/ s/^\([^=]*=[ ]*\):*/\1/ s/:*$// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF fi # test -n "$CONFIG_FILES" for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 echo "$as_me: error: Invalid tag $ac_tag." >&2;} { (exit 1); exit 1; }; };; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 echo "$as_me: error: cannot find input file: $ac_f" >&2;} { (exit 1); exit 1; }; };; esac ac_file_inputs="$ac_file_inputs $ac_f" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input="Generated from "`IFS=: echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure." if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { echo "$as_me:$LINENO: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} fi case $ac_tag in *:-:* | *:-) cat >"$tmp/stdin";; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` { as_dir="$ac_dir" case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 echo "$as_me: error: cannot create directory $as_dir" >&2;} { (exit 1); exit 1; }; }; } ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= case `sed -n '/datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p ' $ac_file_inputs` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF sed "$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s&@configure_input@&$configure_input&;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" >$tmp/out test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined." >&5 echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined." >&2;} rm -f "$tmp/stdin" case $ac_file in -) cat "$tmp/out"; rm -f "$tmp/out";; *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;; esac ;; :H) # # CONFIG_HEADER # _ACEOF # Transform confdefs.h into a sed script `conftest.defines', that # substitutes the proper values into config.h.in to produce config.h. rm -f conftest.defines conftest.tail # First, append a space to every undef/define line, to ease matching. echo 's/$/ /' >conftest.defines # Then, protect against being on the right side of a sed subst, or in # an unquoted here document, in config.status. If some macros were # called several times there might be several #defines for the same # symbol, which is useless. But do not sort them, since the last # AC_DEFINE must be honored. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* # These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where # NAME is the cpp macro being defined, VALUE is the value it is being given. # PARAMS is the parameter list in the macro definition--in most cases, it's # just an empty string. ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*' ac_dB='\\)[ (].*,\\1define\\2' ac_dC=' ' ac_dD=' ,' uniq confdefs.h | sed -n ' t rset :rset s/^[ ]*#[ ]*define[ ][ ]*// t ok d :ok s/[\\&,]/\\&/g s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p ' >>conftest.defines # Remove the space that was appended to ease matching. # Then replace #undef with comments. This is necessary, for # example, in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. # (The regexp can be short, since the line contains either #define or #undef.) echo 's/ $// s,^[ #]*u.*,/* & */,' >>conftest.defines # Break up conftest.defines: ac_max_sed_lines=50 # First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1" # Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2" # Third one will be: sed -f defines.sed "$tmp/out2" >"$tmp/out1" # et cetera. ac_in='$ac_file_inputs' ac_out='"$tmp/out1"' ac_nxt='"$tmp/out2"' while : do # Write a here document: cat >>$CONFIG_STATUS <<_ACEOF # First, check the format of the line: cat >"\$tmp/defines.sed" <<\\CEOF /^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def /^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def b :def _ACEOF sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS echo 'CEOF sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail grep . conftest.tail >/dev/null || break rm -f conftest.defines mv conftest.tail conftest.defines done rm -f conftest.defines conftest.tail echo "ac_result=$ac_in" >>$CONFIG_STATUS cat >>$CONFIG_STATUS <<\_ACEOF if test x"$ac_file" != x-; then echo "/* $configure_input */" >"$tmp/config.h" cat "$ac_result" >>"$tmp/config.h" if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 echo "$as_me: $ac_file is unchanged" >&6;} else rm -f $ac_file mv "$tmp/config.h" $ac_file fi else echo "/* $configure_input */" cat "$ac_result" fi rm -f "$tmp/out12" # Compute $ac_file's index in $config_headers. _am_arg=$ac_file _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { echo "$as_me:$LINENO: executing $ac_file commands" >&5 echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` { as_dir=$dirpart/$fdir case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 echo "$as_me: error: cannot create directory $as_dir" >&2;} { (exit 1); exit 1; }; }; } # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done ;; esac done # for ac_tag { (exit 0); exit 0; } _ACEOF chmod +x $CONFIG_STATUS ac_clean_files=$ac_clean_files_save # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || { (exit 1); exit 1; } fi rampartc-src-1.3.0/missing0000755000076500007650000002557710751614361015406 0ustar shankarshankar#! /bin/sh # Common stub for a few missing GNU programs while installing. scriptversion=2006-05-10.23 # Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006 # Free Software Foundation, Inc. # Originally by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301, USA. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try \`$0 --help' for more information" exit 1 fi run=: sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' sed_minuso='s/.* -o \([^ ]*\).*/\1/p' # In the cases where this matters, `missing' is being run in the # srcdir already. if test -f configure.ac; then configure_ac=configure.ac else configure_ac=configure.in fi msg="missing on your system" case $1 in --run) # Try to run requested program, and just exit if it succeeds. run= shift "$@" && exit 0 # Exit code 63 means version mismatch. This often happens # when the user try to use an ancient version of a tool on # a file that requires a minimum version. In this case we # we should proceed has if the program had been absent, or # if --run hadn't been passed. if test $? = 63; then run=: msg="probably too old" fi ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an error status if there is no known handling for PROGRAM. Options: -h, --help display this help and exit -v, --version output version information and exit --run try to run the given command, and emulate it if it fails Supported PROGRAM values: aclocal touch file \`aclocal.m4' autoconf touch file \`configure' autoheader touch file \`config.h.in' autom4te touch the output file, or create a stub one automake touch all \`Makefile.in' files bison create \`y.tab.[ch]', if possible, from existing .[ch] flex create \`lex.yy.c', if possible, from existing .c help2man touch the output file lex create \`lex.yy.c', if possible, from existing .c makeinfo touch the output file tar try tar, gnutar, gtar, then tar without non-portable flags yacc create \`y.tab.[ch]', if possible, from existing .[ch] Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: Unknown \`$1' option" echo 1>&2 "Try \`$0 --help' for more information" exit 1 ;; esac # Now exit if we have it, but it failed. Also exit now if we # don't have it and --version was passed (most likely to detect # the program). case $1 in lex|yacc) # Not GNU programs, they don't have --version. ;; tar) if test -n "$run"; then echo 1>&2 "ERROR: \`tar' requires --run" exit 1 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then exit 1 fi ;; *) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then # Could not run --version or --help. This is probably someone # running `$TOOL --version' or `$TOOL --help' to check whether # $TOOL exists and not knowing $TOOL uses missing. exit 1 fi ;; esac # If it does not exist, or fails to run (possibly an outdated version), # try to emulate it. case $1 in aclocal*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." touch aclocal.m4 ;; autoconf) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." touch configure ;; autoheader) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acconfig.h' or \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` test -z "$files" && files="config.h" touch_files= for f in $files; do case $f in *:*) touch_files="$touch_files "`echo "$f" | sed -e 's/^[^:]*://' -e 's/:.*//'`;; *) touch_files="$touch_files $f.in";; esac done touch $touch_files ;; automake*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." find . -type f -name Makefile.am -print | sed 's/\.am$/.in/' | while read f; do touch "$f"; done ;; autom4te) echo 1>&2 "\ WARNING: \`$1' is needed, but is $msg. You might have modified some files without having the proper tools for further handling them. You can get \`$1' as part of \`Autoconf' from any GNU archive site." file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo "#! /bin/sh" echo "# Created by GNU Automake missing as a replacement of" echo "# $ $@" echo "exit 0" chmod +x $file exit 1 fi ;; bison|yacc) echo 1>&2 "\ WARNING: \`$1' $msg. You should only need it if you modified a \`.y' file. You may need the \`Bison' package in order for those modifications to take effect. You can get \`Bison' from any GNU archive site." rm -f y.tab.c y.tab.h if test $# -ne 1; then eval LASTARG="\${$#}" case $LASTARG in *.y) SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` if test -f "$SRCFILE"; then cp "$SRCFILE" y.tab.c fi SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` if test -f "$SRCFILE"; then cp "$SRCFILE" y.tab.h fi ;; esac fi if test ! -f y.tab.h; then echo >y.tab.h fi if test ! -f y.tab.c; then echo 'main() { return 0; }' >y.tab.c fi ;; lex|flex) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.l' file. You may need the \`Flex' package in order for those modifications to take effect. You can get \`Flex' from any GNU archive site." rm -f lex.yy.c if test $# -ne 1; then eval LASTARG="\${$#}" case $LASTARG in *.l) SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` if test -f "$SRCFILE"; then cp "$SRCFILE" lex.yy.c fi ;; esac fi if test ! -f lex.yy.c; then echo 'main() { return 0; }' >lex.yy.c fi ;; help2man) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a dependency of a manual page. You may need the \`Help2man' package in order for those modifications to take effect. You can get \`Help2man' from any GNU archive site." file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo ".ab help2man is required to generate this page" exit 1 fi ;; makeinfo) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.texi' or \`.texinfo' file, or any other file indirectly affecting the aspect of the manual. The spurious call might also be the consequence of using a buggy \`make' (AIX, DU, IRIX). You might want to install the \`Texinfo' package or the \`GNU make' package. Grab either from any GNU archive site." # The file to touch is that specified with -o ... file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -z "$file"; then # ... or it is the one specified with @setfilename ... infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` file=`sed -n ' /^@setfilename/{ s/.* \([^ ]*\) *$/\1/ p q }' $infile` # ... or it is derived from the source name (dir/f.texi becomes f.info) test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info fi # If the file does not exist, the user really needs makeinfo; # let's fail without touching anything. test -f $file || exit 1 touch $file ;; tar) shift # We have already tried tar in the generic part. # Look for gnutar/gtar before invocation to avoid ugly error # messages. if (gnutar --version > /dev/null 2>&1); then gnutar "$@" && exit 0 fi if (gtar --version > /dev/null 2>&1); then gtar "$@" && exit 0 fi firstarg="$1" if shift; then case $firstarg in *o*) firstarg=`echo "$firstarg" | sed s/o//` tar "$firstarg" "$@" && exit 0 ;; esac case $firstarg in *h*) firstarg=`echo "$firstarg" | sed s/h//` tar "$firstarg" "$@" && exit 0 ;; esac fi echo 1>&2 "\ WARNING: I can't seem to be able to run \`tar' with the given arguments. You may want to install GNU tar or Free paxutils, or check the command line arguments." exit 1 ;; *) echo 1>&2 "\ WARNING: \`$1' is needed, and is $msg. You might have modified some files without having the proper tools for further handling them. Check the \`README' file, it often tells you about the needed prerequisites for installing this package. You may also peek at any GNU archive site, in case some other package would contain this missing \`$1' program." exit 1 ;; esac exit 0 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-end: "$" # End: rampartc-src-1.3.0/config.guess0000755000076500007650000012706310750156617016324 0ustar shankarshankar#! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, # Inc. timestamp='2007-05-17' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA # 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Per Bothner . # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and # exits with 0. Otherwise, it exits with 1. # # The plan is that this can be called by configure scripts if you # don't specify an explicit build system type. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep __ELF__ >/dev/null then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` exit ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm:riscos:*:*|arm:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:SunOS:5.*:* | ix86xen:SunOS:5.*:*) echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[45]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | grep __LP64__ >/dev/null then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) case ${UNAME_MACHINE} in pc98) echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:[3456]*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; EM64T | authenticamd) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; arm*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; cris:Linux:*:*) echo cris-axis-linux-gnu exit ;; crisv32:Linux:*:*) echo crisv32-axis-linux-gnu exit ;; frv:Linux:*:*) echo frv-unknown-linux-gnu exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; mips:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef mips #undef mipsel #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=mipsel #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=mips #else CPU= #endif #endif EOF eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' /^CPU/{ s: ::g p }'`" test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef mips64 #undef mips64el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=mips64el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=mips64 #else CPU= #endif #endif EOF eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' /^CPU/{ s: ::g p }'`" test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; or32:Linux:*:*) echo or32-unknown-linux-gnu exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-gnu exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-gnu exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-gnu ;; PA8*) echo hppa2.0-unknown-linux-gnu ;; *) echo hppa-unknown-linux-gnu ;; esac exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-gnu exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-gnu exit ;; x86_64:Linux:*:*) echo x86_64-unknown-linux-gnu exit ;; xtensa:Linux:*:*) echo xtensa-unknown-linux-gnu exit ;; i*86:Linux:*:*) # The BFD linker knows what the default object file format is, so # first see if it will tell us. cd to the root directory to prevent # problems with other programs or directories called `ld' in the path. # Set LC_ALL=C to ensure ld outputs messages in English. ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ | sed -ne '/supported targets:/!d s/[ ][ ]*/ /g s/.*supported targets: *// s/ .*// p'` case "$ld_supported_targets" in elf32-i386) TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" ;; a.out-i386-linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" exit ;; coff-i386) echo "${UNAME_MACHINE}-pc-linux-gnucoff" exit ;; "") # Either a pre-BFD a.out linker (linux-gnuoldld) or # one that does not give us useful --help. echo "${UNAME_MACHINE}-pc-linux-gnuoldld" exit ;; esac # Determine whether the default compiler is a.out or elf eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include #ifdef __ELF__ # ifdef __GLIBC__ # if __GLIBC__ >= 2 LIBC=gnu # else LIBC=gnulibc1 # endif # else LIBC=gnulibc1 # endif #else #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) LIBC=gnu #else LIBC=gnuaout #endif #endif #ifdef __dietlibc__ LIBC=dietlibc #endif EOF eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' /^LIBC/{ s: ::g p }'`" test x"${LIBC}" != x && { echo "${UNAME_MACHINE}-pc-linux-${LIBC}" exit } test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; } ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i386. echo i386-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown case $UNAME_PROCESSOR in unknown) UNAME_PROCESSOR=powerpc ;; esac echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NSE-?:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 eval $set_cc_for_build cat >$dummy.c < # include #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix\n"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) # if !defined (ultrix) # include # if defined (BSD) # if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); # else # if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); # else printf ("vax-dec-bsd\n"); exit (0); # endif # endif # else printf ("vax-dec-bsd\n"); exit (0); # endif # else printf ("vax-dec-ultrix\n"); exit (0); # endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; c34*) echo c34-convex-bsd exit ;; c38*) echo c38-convex-bsd exit ;; c4*) echo c4-convex-bsd exit ;; esac fi cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: rampartc-src-1.3.0/Makefile.in0000644000076500007650000005341011202453551016031 0ustar shankarshankar# Makefile.in generated by automake 1.10.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = . DIST_COMMON = README $(am__configure_deps) $(include_HEADERS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(srcdir)/config.h.in $(top_srcdir)/configure AUTHORS COPYING \ ChangeLog INSTALL NEWS config.guess config.sub depcomp \ install-sh ltmain.sh missing ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(docsdir)" "$(DESTDIR)$(includedir)" docsDATA_INSTALL = $(INSTALL_DATA) DATA = $(docs_DATA) includeHEADERS_INSTALL = $(INSTALL_HEADER) HEADERS = $(include_HEADERS) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ { test ! -d $(distdir) \ || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -fr $(distdir); }; } DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best distuninstallcheck_listfiles = find . -type f -print distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ AXIOMINC = @AXIOMINC@ AXIS2INC = @AXIS2INC@ AXIS2LIB = @AXIS2LIB@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NEETHIINC = @NEETHIINC@ OBJEXT = @OBJEXT@ OPENSSLINC = @OPENSSLINC@ OPENSSLLIB = @OPENSSLLIB@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UTILINC = @UTILINC@ VERSION = @VERSION@ VERSION_NO = @VERSION_NO@ XMLSCHEMAINC = @XMLSCHEMAINC@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = $(prefix)/include/rampart-1.3.0 infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = src docsdir = $(prefix)/docs include_HEADERS = $(top_builddir)/include/*.h docs_DATA = xdocs/* EXTRA_DIST = LICENSE NOTICE build.sh autogen.sh samples build test xdocs all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: am--refresh: @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \ cd $(srcdir) && $(AUTOMAKE) --gnu \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: $(am__configure_deps) cd $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) config.h: stamp-h1 @if test ! -f $@; then \ rm -f stamp-h1; \ $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \ else :; fi stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status config.h $(srcdir)/config.h.in: $(am__configure_deps) cd $(top_srcdir) && $(AUTOHEADER) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f config.h stamp-h1 mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool install-docsDATA: $(docs_DATA) @$(NORMAL_INSTALL) test -z "$(docsdir)" || $(MKDIR_P) "$(DESTDIR)$(docsdir)" @list='$(docs_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(docsDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(docsdir)/$$f'"; \ $(docsDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(docsdir)/$$f"; \ done uninstall-docsDATA: @$(NORMAL_UNINSTALL) @list='$(docs_DATA)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(docsdir)/$$f'"; \ rm -f "$(DESTDIR)$(docsdir)/$$f"; \ done install-includeHEADERS: $(include_HEADERS) @$(NORMAL_INSTALL) test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)" @list='$(include_HEADERS)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(includeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(includedir)/$$f'"; \ $(includeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(includedir)/$$f"; \ done uninstall-includeHEADERS: @$(NORMAL_UNINSTALL) @list='$(include_HEADERS)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(includedir)/$$f'"; \ rm -f "$(DESTDIR)$(includedir)/$$f"; \ done # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) $(am__remove_distdir) test -d $(distdir) || mkdir $(distdir) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ distdir=`$(am__cd) $(distdir) && pwd`; \ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ (cd $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$top_distdir" \ distdir="$$distdir/$$subdir" \ am__remove_distdir=: \ am__skip_length_check=: \ distdir) \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r $(distdir) dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 $(am__remove_distdir) dist-lzma: distdir tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma $(am__remove_distdir) dist-tarZ: distdir tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__remove_distdir) dist-shar: distdir shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__remove_distdir) dist dist-all: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lzma*) \ unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir); chmod a+w $(distdir) mkdir $(distdir)/_build mkdir $(distdir)/_inst chmod a-w $(distdir) dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && cd $(distdir)/_build \ && ../configure --srcdir=.. --prefix="$$dc_install_base" \ $(DISTCHECK_CONFIGURE_FLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck $(am__remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @cd $(distuninstallcheck_dir) \ && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile $(DATA) $(HEADERS) config.h installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(docsdir)" "$(DESTDIR)$(includedir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-hdr \ distclean-libtool distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive info: info-recursive info-am: install-data-am: install-docsDATA install-includeHEADERS install-dvi: install-dvi-recursive install-exec-am: install-html: install-html-recursive install-info: install-info-recursive install-man: install-pdf: install-pdf-recursive install-ps: install-ps-recursive installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-docsDATA uninstall-includeHEADERS .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ install-strip .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am am--refresh check check-am clean clean-generic \ clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \ dist-gzip dist-hook dist-lzma dist-shar dist-tarZ dist-zip \ distcheck distclean distclean-generic distclean-hdr \ distclean-libtool distclean-tags distcleancheck distdir \ distuninstallcheck dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am \ install-docsDATA install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am \ install-includeHEADERS install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ uninstall uninstall-am uninstall-docsDATA \ uninstall-includeHEADERS check: ./rampart-tests.sh dist-hook: cp -r target/docs $(distdir) cp -r xdocs/api $(distdir)/docs # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: rampartc-src-1.3.0/src/0000755000076500007650000000000011202454500014543 5ustar shankarshankarrampartc-src-1.3.0/src/Makefile.am0000644000076500007650000000010011202453426016574 0ustar shankarshankarSUBDIRS = omxmlsec trust secconv util handlers core rahas data rampartc-src-1.3.0/src/core/0000755000076500007650000000000011202454500015473 5ustar shankarshankarrampartc-src-1.3.0/src/core/Makefile.am0000644000076500007650000000102411202453422017526 0ustar shankarshankarTESTS = prglibdir=$(prefix)/modules/rampart prglib_LTLIBRARIES = libmod_rampart.la prglib_DATA= ../data/module.xml libmod_rampart_la_SOURCES = mod_rampart.c libmod_rampart_la_LDFLAGS = -version-info $(VERSION_NO) libmod_rampart_la_LIBADD = ../handlers/librampart_handlers.la \ ../util/librampart.la \ @OPENSSLLIB@ \ @AXIS2LIB@ \ -lcrypto \ -laxis2_engine INCLUDES = -I$(top_builddir)/include \ -I ../../include \ @OPENSSLINC@ \ @AXIS2INC@ \ @UTILINC@ \ @NEETHIINC@ \ @AXIOMINC@ rampartc-src-1.3.0/src/core/Makefile.in0000644000076500007650000004432011202453550017547 0ustar shankarshankar# Makefile.in generated by automake 1.10.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ TESTS = subdir = src/core DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(prglibdir)" "$(DESTDIR)$(prglibdir)" prglibLTLIBRARIES_INSTALL = $(INSTALL) LTLIBRARIES = $(prglib_LTLIBRARIES) libmod_rampart_la_DEPENDENCIES = ../handlers/librampart_handlers.la \ ../util/librampart.la am_libmod_rampart_la_OBJECTS = mod_rampart.lo libmod_rampart_la_OBJECTS = $(am_libmod_rampart_la_OBJECTS) libmod_rampart_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(libmod_rampart_la_LDFLAGS) $(LDFLAGS) -o $@ DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = $(libmod_rampart_la_SOURCES) DIST_SOURCES = $(libmod_rampart_la_SOURCES) prglibDATA_INSTALL = $(INSTALL_DATA) DATA = $(prglib_DATA) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ AXIOMINC = @AXIOMINC@ AXIS2INC = @AXIS2INC@ AXIS2LIB = @AXIS2LIB@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NEETHIINC = @NEETHIINC@ OBJEXT = @OBJEXT@ OPENSSLINC = @OPENSSLINC@ OPENSSLLIB = @OPENSSLLIB@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UTILINC = @UTILINC@ VERSION = @VERSION@ VERSION_NO = @VERSION_NO@ XMLSCHEMAINC = @XMLSCHEMAINC@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ prglibdir = $(prefix)/modules/rampart prglib_LTLIBRARIES = libmod_rampart.la prglib_DATA = ../data/module.xml libmod_rampart_la_SOURCES = mod_rampart.c libmod_rampart_la_LDFLAGS = -version-info $(VERSION_NO) libmod_rampart_la_LIBADD = ../handlers/librampart_handlers.la \ ../util/librampart.la \ @OPENSSLLIB@ \ @AXIS2LIB@ \ -lcrypto \ -laxis2_engine INCLUDES = -I$(top_builddir)/include \ -I ../../include \ @OPENSSLINC@ \ @AXIS2INC@ \ @UTILINC@ \ @NEETHIINC@ \ @AXIOMINC@ all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/core/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu src/core/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh install-prglibLTLIBRARIES: $(prglib_LTLIBRARIES) @$(NORMAL_INSTALL) test -z "$(prglibdir)" || $(MKDIR_P) "$(DESTDIR)$(prglibdir)" @list='$(prglib_LTLIBRARIES)'; for p in $$list; do \ if test -f $$p; then \ f=$(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(prglibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(prglibdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(prglibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(prglibdir)/$$f"; \ else :; fi; \ done uninstall-prglibLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(prglib_LTLIBRARIES)'; for p in $$list; do \ p=$(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(prglibdir)/$$p'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(prglibdir)/$$p"; \ done clean-prglibLTLIBRARIES: -test -z "$(prglib_LTLIBRARIES)" || rm -f $(prglib_LTLIBRARIES) @list='$(prglib_LTLIBRARIES)'; for p in $$list; do \ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ test "$$dir" != "$$p" || dir=.; \ echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done libmod_rampart.la: $(libmod_rampart_la_OBJECTS) $(libmod_rampart_la_DEPENDENCIES) $(libmod_rampart_la_LINK) -rpath $(prglibdir) $(libmod_rampart_la_OBJECTS) $(libmod_rampart_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mod_rampart.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-prglibDATA: $(prglib_DATA) @$(NORMAL_INSTALL) test -z "$(prglibdir)" || $(MKDIR_P) "$(DESTDIR)$(prglibdir)" @list='$(prglib_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(prglibDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(prglibdir)/$$f'"; \ $(prglibDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(prglibdir)/$$f"; \ done uninstall-prglibDATA: @$(NORMAL_UNINSTALL) @list='$(prglib_DATA)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(prglibdir)/$$f'"; \ rm -f "$(DESTDIR)$(prglibdir)/$$f"; \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags check-TESTS: $(TESTS) @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \ srcdir=$(srcdir); export srcdir; \ list=' $(TESTS) '; \ if test -n "$$list"; then \ for tst in $$list; do \ if test -f ./$$tst; then dir=./; \ elif test -f $$tst; then dir=; \ else dir="$(srcdir)/"; fi; \ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ all=`expr $$all + 1`; \ case " $(XFAIL_TESTS) " in \ *$$ws$$tst$$ws*) \ xpass=`expr $$xpass + 1`; \ failed=`expr $$failed + 1`; \ echo "XPASS: $$tst"; \ ;; \ *) \ echo "PASS: $$tst"; \ ;; \ esac; \ elif test $$? -ne 77; then \ all=`expr $$all + 1`; \ case " $(XFAIL_TESTS) " in \ *$$ws$$tst$$ws*) \ xfail=`expr $$xfail + 1`; \ echo "XFAIL: $$tst"; \ ;; \ *) \ failed=`expr $$failed + 1`; \ echo "FAIL: $$tst"; \ ;; \ esac; \ else \ skip=`expr $$skip + 1`; \ echo "SKIP: $$tst"; \ fi; \ done; \ if test "$$failed" -eq 0; then \ if test "$$xfail" -eq 0; then \ banner="All $$all tests passed"; \ else \ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ fi; \ else \ if test "$$xpass" -eq 0; then \ banner="$$failed of $$all tests failed"; \ else \ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ fi; \ fi; \ dashes="$$banner"; \ skipped=""; \ if test "$$skip" -ne 0; then \ skipped="($$skip tests were not run)"; \ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ dashes="$$skipped"; \ fi; \ report=""; \ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ report="Please report to $(PACKAGE_BUGREPORT)"; \ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ dashes="$$report"; \ fi; \ dashes=`echo "$$dashes" | sed s/./=/g`; \ echo "$$dashes"; \ echo "$$banner"; \ test -z "$$skipped" || echo "$$skipped"; \ test -z "$$report" || echo "$$report"; \ echo "$$dashes"; \ test "$$failed" -eq 0; \ else :; fi distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am all-am: Makefile $(LTLIBRARIES) $(DATA) installdirs: for dir in "$(DESTDIR)$(prglibdir)" "$(DESTDIR)$(prglibdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-prglibLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-prglibDATA install-prglibLTLIBRARIES install-dvi: install-dvi-am install-exec-am: install-html: install-html-am install-info: install-info-am install-man: install-pdf: install-pdf-am install-ps: install-ps-am installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-prglibDATA uninstall-prglibLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ clean-generic clean-libtool clean-prglibLTLIBRARIES ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-prglibDATA install-prglibLTLIBRARIES install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ uninstall-am uninstall-prglibDATA uninstall-prglibLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: rampartc-src-1.3.0/src/core/mod_rampart.c0000644000076500007650000001067011202453422020152 0ustar shankarshankar/* * 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. */ #include #include #include #include axis2_status_t AXIS2_CALL rampart_mod_shutdown( axis2_module_t *module, const axutil_env_t *env); axis2_status_t AXIS2_CALL rampart_mod_init( axis2_module_t *module, const axutil_env_t *env, axis2_conf_ctx_t *conf_ctx, axis2_module_desc_t *module_desc); axis2_status_t AXIS2_CALL rampart_mod_fill_handler_create_func_map( axis2_module_t *module, const axutil_env_t *env); static const axis2_module_ops_t addr_module_ops_var = { rampart_mod_init, rampart_mod_shutdown, rampart_mod_fill_handler_create_func_map }; axis2_module_t * rampart_mod_create( const axutil_env_t *env) { axis2_module_t *module = NULL; module = AXIS2_MALLOC(env->allocator, sizeof(axis2_module_t)); if (!module) { AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE); AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_mod] Not enough memory. Cannot create module."); return NULL; } module->ops = &addr_module_ops_var; return module; } axis2_status_t AXIS2_CALL rampart_mod_init( axis2_module_t *module, const axutil_env_t *env, axis2_conf_ctx_t *conf_ctx, axis2_module_desc_t *module_desc) { /* * Any initialization stuff of Rampart module goes here. At the moment we have NONE. * Intialization happens in handlers depending on the message flow and policies */ rampart_error_init(); AXIS2_LOG_INFO(env->log, "[rampart][rampart_mod] rampart_mod initialized"); return AXIS2_SUCCESS; } axis2_status_t AXIS2_CALL rampart_mod_shutdown( axis2_module_t *module, const axutil_env_t *env) { AXIS2_LOG_INFO(env->log, "[rampart][rampart_mod] rampart_mod shutdown"); if (module) { if (module->handler_create_func_map) { axutil_hash_free(module->handler_create_func_map, env); module->handler_create_func_map = NULL; } AXIS2_FREE(env->allocator, module); module = NULL; } return AXIS2_SUCCESS; } axis2_status_t AXIS2_CALL rampart_mod_fill_handler_create_func_map( axis2_module_t *module, const axutil_env_t *env) { module->handler_create_func_map = axutil_hash_make(env); if (!module->handler_create_func_map) { AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE); AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_mod] Cannot create function map."); return AXIS2_FAILURE; } /* * Set Rampart Handlers * 1. Rampart In Handler to process message * 2. Rampart Out Handler to build the message */ axutil_hash_set(module->handler_create_func_map, RAMPART_IN_HANDLER, AXIS2_HASH_KEY_STRING, rampart_in_handler_create); axutil_hash_set(module->handler_create_func_map, RAMPART_OUT_HANDLER, AXIS2_HASH_KEY_STRING, rampart_out_handler_create); return AXIS2_SUCCESS; } /** * Following block distinguish the exposed part of the dll. */ AXIS2_EXPORT int axis2_get_instance( axis2_module_t **inst, const axutil_env_t *env) { *inst = rampart_mod_create(env); if (!(*inst)) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_mod] Rampart module creation failed"); return AXIS2_FAILURE; } return AXIS2_SUCCESS; } AXIS2_EXPORT int axis2_remove_instance( axis2_module_t *inst, const axutil_env_t *env) { axis2_status_t status = AXIS2_FAILURE; if (inst) { status = rampart_mod_shutdown(inst, env); } return status; } rampartc-src-1.3.0/src/omxmlsec/0000755000076500007650000000000011202454477016407 5ustar shankarshankarrampartc-src-1.3.0/src/omxmlsec/derivation.c0000644000076500007650000002051111202453422020703 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include #include #include #include #if 0 /*Remove this funciton if not in use*/ AXIS2_EXTERN oxs_key_t* AXIS2_CALL oxs_derivation_get_the_referenced_base_key(const axutil_env_t *env, axiom_node_t *dk_token_node, axiom_node_t *root_node) { axiom_node_t *str_node = NULL; axiom_node_t *ref_node = NULL; axiom_node_t *refed_node = NULL; axis2_char_t *ref_val = NULL; axis2_char_t *id = NULL; str_node = oxs_axiom_get_first_child_node_by_name(env, dk_token_node, OXS_NODE_SECURITY_TOKEN_REFRENCE, OXS_WSSE_XMLNS, NULL); ref_node = oxs_axiom_get_first_child_node_by_name(env, str_node, OXS_NODE_REFERENCE, OXS_WSSE_XMLNS, NULL); if(!ref_node) {return NULL ;} ref_val = oxs_token_get_reference(env, ref_node); if(!ref_val) {return NULL ;} /*Need to remove # sign from the ID*/ id = axutil_string_substring_starting_at(ref_val, 1); /*Search for an element with the val(@Id)=@URI*/ refed_node = oxs_axiom_get_node_by_id(env, root_node, OXS_ATTR_ID, id, NULL); if(!refed_node){ oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_INVALID_DATA, "Cannot find the referenced key for the derived key"); return NULL; } return NULL; } #endif AXIS2_EXTERN oxs_key_t* AXIS2_CALL oxs_derivation_extract_derived_key_from_token( const axutil_env_t *env, axiom_node_t *dk_token_node, axiom_node_t *root_node, oxs_key_t *session_key) { oxs_key_t *base_key = NULL; oxs_key_t *derived_key = NULL; axiom_node_t *nonce_node = NULL; axiom_node_t *length_node = NULL; axiom_node_t *offset_node = NULL; axis2_status_t status = AXIS2_FAILURE; axis2_char_t *nonce = NULL; axis2_char_t *id = NULL; axiom_element_t *dk_token_element = NULL; axis2_char_t *wsc_ns_uri = NULL; /* Default values */ int offset = 0; int length = 0; /* If the session_key is NULL then extract it form the refered EncryptedKey. Otherwise use it */ if(!session_key) { /* TODO Lots of work including decrypting the EncryptedKey */ } else { base_key = session_key; } dk_token_element =(axiom_element_t *) axiom_node_get_data_element(dk_token_node, env); if (dk_token_element) { axutil_qname_t *node_qname = NULL; node_qname = axiom_element_get_qname(dk_token_element, env, dk_token_node); if(!node_qname) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart] Cannot get qname from dervied key token."); return NULL; } wsc_ns_uri = axutil_qname_get_uri(node_qname, env); } if(!wsc_ns_uri) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart] Cannot get namespace from dervied key token."); return NULL; } /* Get offset value */ offset_node = oxs_axiom_get_first_child_node_by_name( env, dk_token_node, OXS_NODE_OFFSET, wsc_ns_uri, NULL); if(offset_node) { offset = oxs_token_get_offset_value(env, offset_node); } /* Get length value */ length_node = oxs_axiom_get_first_child_node_by_name( env, dk_token_node, OXS_NODE_LENGTH, wsc_ns_uri, NULL); if(length_node) { length = oxs_token_get_length_value(env, length_node); } /* Get nonce value */ nonce_node = oxs_axiom_get_first_child_node_by_name( env, dk_token_node, OXS_NODE_NONCE, wsc_ns_uri, NULL); if(nonce_node) { nonce = oxs_token_get_nonce_value(env, nonce_node); } /* Create a new(empty) key as the derived key */ derived_key = oxs_key_create(env); oxs_key_set_offset(derived_key, env, offset); oxs_key_set_nonce(derived_key, env, nonce); oxs_key_set_length(derived_key, env, length); /* Now derive the key using the base_key and other parematers */ status = oxs_derivation_derive_key(env, base_key, derived_key, AXIS2_FALSE); if(status != AXIS2_SUCCESS) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Cannot derive the key from given element."); oxs_key_free(derived_key, env); derived_key = NULL; } /* We need to set the name of the derived key */ id = oxs_axiom_get_attribute_value_of_node_by_name( env, dk_token_node, OXS_ATTR_ID, OXS_WSU_XMLNS); oxs_key_set_name(derived_key, env, id); AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[rampart] DK=%s derived from Sk=%s ", id , oxs_key_get_name(base_key, env) ); return derived_key; } AXIS2_EXTERN axiom_node_t * AXIS2_CALL oxs_derivation_build_derived_key_token( const axutil_env_t *env, oxs_key_t *derived_key, axiom_node_t *parent, axis2_char_t *stref_uri, axis2_char_t *stref_val_type, axis2_char_t *wsc_ns_uri) { axiom_node_t *str_token = NULL; axiom_node_t *ref_token = NULL; axis2_char_t *uri = NULL; uri = axutil_stracat(env, OXS_LOCAL_REFERENCE_PREFIX, stref_uri); str_token = oxs_token_build_security_token_reference_element(env, NULL); ref_token = oxs_token_build_reference_element(env, str_token, uri, stref_val_type); AXIS2_FREE(env->allocator, uri); return oxs_derivation_build_derived_key_token_with_stre( env, derived_key, parent, str_token, wsc_ns_uri); } AXIS2_EXTERN axiom_node_t * AXIS2_CALL oxs_derivation_build_derived_key_token_with_stre(const axutil_env_t *env, oxs_key_t *derived_key, axiom_node_t *parent, axiom_node_t *stre, axis2_char_t *wsc_ns_uri) { axiom_node_t *dk_token = NULL; axiom_node_t *nonce_token = NULL; axiom_node_t *offset_token = NULL; axiom_node_t *length_token = NULL; /*axiom_node_t *label_token = NULL;*/ axis2_char_t *dk_id = NULL; axis2_char_t *dk_name = NULL; axis2_char_t *nonce = NULL; axis2_char_t *label = NULL; int offset = -1; int length = 0; dk_name = oxs_key_get_name(derived_key, env); dk_id = axutil_string_substring_starting_at(dk_name, 1); dk_token = oxs_token_build_derived_key_token_element(env, parent, dk_id, NULL, wsc_ns_uri); axiom_node_add_child(dk_token, env, stre); /* Create offset */ offset = oxs_key_get_offset(derived_key, env); if(offset > -1) { offset_token = oxs_token_build_offset_element(env, dk_token, offset, wsc_ns_uri); } /* Create length */ length = oxs_key_get_length(derived_key, env); if(length > 0) { length_token = oxs_token_build_length_element(env, dk_token, length, wsc_ns_uri); } /* Create nonce */ nonce = oxs_key_get_nonce(derived_key, env); if(nonce) { nonce_token = oxs_token_build_nonce_element(env, dk_token, nonce, wsc_ns_uri); } /* Create label. Hmm we dont need to send the label. Use the default. */ label = oxs_key_get_label(derived_key, env); /*if(label) { label_token = oxs_token_build_label_element(env, dk_token, label, wsc_ns_uri); }*/ return dk_token; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_derivation_derive_key( const axutil_env_t *env, oxs_key_t *secret, oxs_key_t *derived_key, axis2_bool_t build) { axis2_status_t status = AXIS2_FAILURE; /* TODO check for derivation algorithm */ if (build) { status = openssl_p_sha1(env, secret, NULL, NULL, derived_key); } else { status = openssl_p_sha1(env, secret, oxs_key_get_label(derived_key, env), oxs_key_get_nonce(derived_key, env), derived_key); } return status; } rampartc-src-1.3.0/src/omxmlsec/openssl/0000755000076500007650000000000011202454477020072 5ustar shankarshankarrampartc-src-1.3.0/src/omxmlsec/openssl/Makefile.am0000644000076500007650000000057611202453415022125 0ustar shankarshankarnoinst_LTLIBRARIES =libomopenssl.la libomopenssl_la_SOURCES = cipher_ctx.c crypt.c rsa.c pkey.c util.c cipher_property.c digest.c x509.c pkcs12.c pem.c sign.c hmac.c pkcs12_keystore.c INCLUDES = -I$(top_builddir)/include \ -I ../../../../util/include \ -I ../../../../include \ -I ../../../../axiom/include \ @OPENSSLINC@ \ @UTILINC@ \ @AXIOMINC@ \ @AXIS2INC@ rampartc-src-1.3.0/src/omxmlsec/openssl/pem.c0000644000076500007650000000722711202453415021016 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include #include #include #include #include #include #include AXIS2_EXTERN axis2_status_t AXIS2_CALL openssl_pem_buf_read_pkey(const axutil_env_t *env, axis2_char_t *b64_encoded_buf, axis2_char_t *password, openssl_pem_pkey_type_t type, EVP_PKEY **pkey) { unsigned char *buff = NULL; BIO *bio = NULL; int ilen = 0; /*First we need to base64 decode*/ EVP_ENCODE_CTX ctx; int len = 0; int ret = 0; int decode_len = 0; decode_len = axutil_base64_decode_len(b64_encoded_buf); buff = AXIS2_MALLOC(env->allocator, decode_len + 1000); ilen = axutil_strlen(b64_encoded_buf); EVP_DecodeInit(&ctx); EVP_DecodeUpdate(&ctx, (unsigned char*)buff, &len, (unsigned char*)b64_encoded_buf, ilen); EVP_DecodeFinal(&ctx, (unsigned char*)buff, &ret); ret += len; if ((bio = BIO_new_mem_buf(buff, ilen)) == NULL) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_DEFAULT, "BIO memeory allocation failure"); return AXIS2_FAILURE; } /*Load*/ if(OPENSSL_PEM_PKEY_TYPE_PUBLIC_KEY == type){ *pkey = d2i_PUBKEY_bio(bio, NULL); }else{ *pkey = d2i_PrivateKey_bio(bio, NULL); } /*Free*/ BIO_free(bio); bio = NULL; AXIS2_FREE(env->allocator, buff); buff = NULL; if(!*pkey){ oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_DEFAULT, "private key is NULL"); return AXIS2_FAILURE; } return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL openssl_pem_read_pkey(const axutil_env_t *env, axis2_char_t *filename, axis2_char_t *password, openssl_pem_pkey_type_t type, EVP_PKEY **pkey) { BIO *bio; int ret; bio = BIO_new_file(filename, "r"); if(type == OPENSSL_PEM_PKEY_TYPE_PRIVATE_KEY){ *pkey = PEM_read_bio_PrivateKey(bio, NULL, 0 , password); }else if(type == OPENSSL_PEM_PKEY_TYPE_PUBLIC_KEY){ *pkey = PEM_read_bio_PUBKEY(bio, NULL, 0 , password); }else{/*Type unknown*/ /*Try to read the prv key first*/ *pkey = PEM_read_bio_PrivateKey(bio, NULL, 0 , password); if(!*pkey) { /*If prv key is not found then read the public key*/ ret = BIO_reset(bio); *pkey = PEM_read_bio_PUBKEY(bio, NULL, 0 , password); } } /*Reset before FREE*/ ret = BIO_reset(bio); ret = BIO_free(bio); bio = NULL; if(!*pkey){ return AXIS2_FAILURE; } return AXIS2_SUCCESS; } rampartc-src-1.3.0/src/omxmlsec/openssl/x509.c0000644000076500007650000003462011202453415020737 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include /*Usefull when we have BinarySecurityTokn*/ AXIS2_EXTERN axis2_status_t AXIS2_CALL openssl_x509_load_from_buffer(const axutil_env_t *env, axis2_char_t *b64_encoded_buf, X509 **cert) { unsigned char *buff = NULL; BIO *mem = NULL; int ilen = 0; axis2_char_t *formatted_buf = NULL; axis2_char_t *buf_to_format = NULL; int decode_len = 0; int decoded_len = -1; /*We should remove new lines here.*/ buf_to_format = (axis2_char_t*)axutil_strdup(env, b64_encoded_buf); if(buf_to_format) { formatted_buf = oxs_util_get_newline_removed_string(env,buf_to_format); AXIS2_FREE(env->allocator,buf_to_format); buf_to_format = NULL; } else { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_DEFAULT, "New line removed buffer creation failed."); return AXIS2_FAILURE; } decode_len = axutil_base64_decode_len(formatted_buf ); buff = AXIS2_MALLOC(env->allocator, decode_len); ilen = axutil_strlen(formatted_buf); decoded_len = axutil_base64_decode_binary(buff, formatted_buf); AXIS2_FREE(env->allocator, formatted_buf); formatted_buf = NULL; if (decoded_len < 0) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_DEFAULT, "axutil_base64_decode_binary failed"); return AXIS2_FAILURE; } if ((mem = BIO_new_mem_buf(buff, ilen)) == NULL) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_DEFAULT, "Cannot create a new memory buffer"); return AXIS2_FAILURE; } *cert = d2i_X509_bio(mem, NULL); /*Free*/ BIO_free(mem); mem = NULL; AXIS2_FREE(env->allocator, buff); buff = NULL; if (*cert == NULL){ return AXIS2_FAILURE; } return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL openssl_x509_load_from_pem(const axutil_env_t *env, axis2_char_t *filename, X509 **cert) { BIO *in = NULL; in = BIO_new_file(filename,"r"); if (!in) { return AXIS2_FAILURE; } /*Read certificate*/ PEM_read_bio_X509(in, cert, NULL, NULL); if (-1 == BIO_reset(in) ){ BIO_free(in); return AXIS2_FAILURE; } if (-1 == BIO_free(in) ){ return AXIS2_FAILURE; } if(!*cert) { return AXIS2_FAILURE; } return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL openssl_x509_load_from_pkcs12(const axutil_env_t *env, axis2_char_t *filename, axis2_char_t *password, X509 **cert, EVP_PKEY **pkey, STACK_OF(X509) **ca) { PKCS12 *p12 = NULL; axis2_status_t status = AXIS2_FAILURE; /*Load*/ status = openssl_pkcs12_load(env, filename, &p12); if(AXIS2_FAILURE == status){ return AXIS2_FAILURE; } /*Parse*/ status = openssl_pkcs12_parse(env, password, p12, pkey, cert, ca); if(AXIS2_FAILURE == status){ return AXIS2_FAILURE; } /*Free*/ status = openssl_pkcs12_free(env, p12); if(AXIS2_FAILURE == status){ return AXIS2_FAILURE; } return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL openssl_x509_load_certificate(const axutil_env_t *env, openssl_x509_format_t format, axis2_char_t *filename, axis2_char_t *password, X509 **cert) { axis2_status_t status = AXIS2_FAILURE; if(OPENSSL_X509_FORMAT_PEM == format){ /*Load from PEM*/ status = openssl_x509_load_from_pem(env, filename, cert); if(AXIS2_FAILURE == status){ return AXIS2_FAILURE; } }else if(OPENSSL_X509_FORMAT_PKCS12 == format){ /*Load from PKCS12*/ EVP_PKEY *pkey = NULL; STACK_OF(X509) *ca = NULL; status = openssl_x509_load_from_pkcs12(env, filename, password, cert, &pkey, &ca); if(AXIS2_FAILURE == status){ return AXIS2_FAILURE; } }else if(OPENSSL_X509_FORMAT_DER == format){ /*Load from DER*/ }else{ /*Unspported*/ } return AXIS2_SUCCESS; } /* * Here we take data in btwn -----BEGIN CERTIFICATE----- -----END CERTIFICATE----- */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL openssl_x509_get_cert_data(const axutil_env_t *env, X509 *cert) { axis2_char_t *unformatted = NULL; axis2_char_t *core_tail = NULL; axis2_char_t *core = NULL; axis2_char_t *res = NULL; axis2_char_t *buffer = NULL; unformatted = openssl_x509_get_info(env, OPENSSL_X509_INFO_DATA_CERT, cert); core_tail = axutil_strstr(unformatted, "\n"); res = axutil_strstr(core_tail,"-----END"); res[0] = '\0'; core = (axis2_char_t*)axutil_strdup(env, core_tail); if(core) { buffer = oxs_util_get_newline_removed_string(env, core); AXIS2_FREE(env->allocator, core); AXIS2_FREE(env->allocator, unformatted); unformatted = NULL; core = NULL; return buffer; }else{ return NULL; } } AXIS2_EXTERN int AXIS2_CALL openssl_x509_get_serial( const axutil_env_t *env, X509 *cert) { axis2_char_t *serial = NULL; int no = 0; /*WARN: Do not use the serial number without converting it to the integer.*/ serial = (axis2_char_t*)i2s_ASN1_INTEGER(NULL, X509_get_serialNumber(cert)); if(serial) { no = atoi(serial); OPENSSL_free(serial); serial = NULL; return no; } else { return -1; } } AXIS2_EXTERN unsigned long AXIS2_CALL openssl_x509_get_subject_name_hash(const axutil_env_t *env, X509 *cert) { unsigned long l = 0; l=X509_subject_name_hash(cert); return l; } AXIS2_EXTERN axis2_status_t AXIS2_CALL openssl_x509_get_pubkey(const axutil_env_t *env, X509 *cert, EVP_PKEY **pubkey) { *pubkey = X509_get_pubkey(cert); return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL openssl_x509_get_subject_key_identifier(const axutil_env_t *env, X509 *cert) { X509_EXTENSION *ext; ASN1_OCTET_STRING *key_id = NULL; int index = 0; EVP_ENCODE_CTX ctx; int len, ret; char buf[1000]; char output[100]; axis2_char_t *ski = NULL; /*Get ext by ID*/ index = X509_get_ext_by_NID(cert, NID_subject_key_identifier, -1); if (index < 0) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_DEFAULT, "The extenension index of NID_subject_key_identifier is not valid"); return NULL; } /*Get the extension*/ ext = X509_get_ext(cert, index); if (ext == NULL) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_DEFAULT, "The extension for NID_subject_key_identifier is NULL"); return NULL; } /*Subject Key Identifier*/ key_id = (ASN1_OCTET_STRING *)X509V3_EXT_d2i(ext); if (key_id == NULL) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_DEFAULT, "The SubjectKeyIdentifier is NULL"); return NULL; } memcpy(buf, key_id->data, key_id->length); buf[key_id->length] = 0; EVP_EncodeInit(&ctx); EVP_EncodeUpdate(&ctx, (unsigned char*)output, &len, (unsigned char*)buf, key_id->length); EVP_EncodeFinal(&ctx, (unsigned char*)(output+len), &ret); /*Free key_id*/ M_ASN1_OCTET_STRING_free(key_id); key_id = NULL; ret += len; ski = axutil_strdup(env, output); return ski; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL openssl_x509_get_info(const axutil_env_t *env, openssl_x509_info_type_t type, X509 *cert) { BIO *out = NULL; unsigned char *data= NULL; axis2_char_t *result = NULL; int n = 0; out = BIO_new(BIO_s_mem()); if(OPENSSL_X509_INFO_SUBJECT==type){ X509_NAME_print_ex(out, X509_get_subject_name(cert), 0, 0); }else if(OPENSSL_X509_INFO_ISSUER == type){ X509_NAME_print_ex(out, X509_get_issuer_name(cert), 0, 0); }else if(OPENSSL_X509_INFO_VALID_FROM == type){ ASN1_TIME_print(out, X509_get_notBefore(cert)); }else if(OPENSSL_X509_INFO_VALID_TO == type){ ASN1_TIME_print(out, X509_get_notAfter(cert)); }else if(OPENSSL_X509_INFO_DATA_CERT == type){ if(!PEM_write_bio_X509_AUX(out, cert)){ return NULL; } }else if(OPENSSL_X509_INFO_FINGER == type){ const EVP_MD *digest = NULL; unsigned char md[EVP_MAX_MD_SIZE]; unsigned int _n = 0; digest = EVP_sha1();/*If we use EVP_md5(); here we can get the digest from md5. */ if(X509_digest(cert,digest,md,&_n)) { /*BIO_printf(out, "%s:", OBJ_nid2sn(EVP_MD_type(digest))); int j = 0; for (j=0; j<(int)_n; j++) { BIO_printf (out, "%02X",md[j]); if (j+1 != (int)_n) BIO_printf(out,":"); }*/ /*We need to base64 encode the digest value of the finger print*/ axis2_char_t *encoded_str = NULL; encoded_str = AXIS2_MALLOC(env->allocator, axutil_base64_encode_len(_n)); axutil_base64_encode(encoded_str, (char*)md, SHA_DIGEST_LENGTH); BIO_printf(out, "%s", encoded_str); AXIS2_FREE(env->allocator, encoded_str); } }else if(OPENSSL_X509_INFO_SIGNATURE == type){ int i = 0; unsigned char *s = NULL; n=cert->signature->length; s=cert->signature->data; for (i=0; itype == EVP_PKEY_RSA){ RSA_print(out,pkey->pkey.rsa,0); }else if (pkey->type == EVP_PKEY_DSA){ DSA_print(out,pkey->pkey.dsa,0); } EVP_PKEY_free(pkey); pkey = NULL; } }else if(OPENSSL_X509_INFO_PUBKEY_ALGO == type){ X509_CINF *ci = NULL; ci = cert->cert_info; i2a_ASN1_OBJECT(out, ci->key->algor->algorithm); } n = BIO_get_mem_data(out, &data); result = axutil_strndup( env, data, n); BIO_free(out); out = NULL; return result; } AXIS2_EXTERN axis2_char_t * AXIS2_CALL openssl_x509_get_common_name( const axutil_env_t *env, X509 *cert) { X509_NAME *subject = NULL; int pos = -1; X509_NAME_ENTRY *entry = NULL; ASN1_STRING *entry_str; BIO *out = NULL; unsigned char *data= NULL; axis2_char_t *result = NULL; int n = 0; out = BIO_new(BIO_s_mem()); subject = X509_get_subject_name(cert); pos = X509_NAME_get_index_by_NID(subject, NID_commonName, -1); if(pos < 0) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_DEFAULT, "No Common Name in given X509 Certificate!"); return NULL; } if (X509_NAME_get_index_by_NID(subject, NID_commonName, pos) >= 0) { /* Handling multiple common names. */ } if ((entry = X509_NAME_get_entry(subject, pos)) == 0) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_DEFAULT, "Error occured during when retrieving common name from X509_NAME!"); return NULL; } if ((entry_str = X509_NAME_ENTRY_get_data(entry)) == 0) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_DEFAULT, "Error occured during when retrieving common name from X509_NAME_ENTRY!"); return NULL; } ASN1_TIME_print(out, entry_str); n = BIO_get_mem_data(out, &data); result = axutil_strndup( env, data, n); BIO_free(out); out = NULL; return result; } AXIS2_EXTERN void AXIS2_CALL openssl_x509_print(const axutil_env_t *env, X509 *cert) { printf("\n*************START PRINTING*****************\n"); printf("OPENSSL_X509_INFO_SUBJECT : %s\n", openssl_x509_get_info(env, OPENSSL_X509_INFO_SUBJECT,cert)); printf("OPENSSL_X509_INFO_ISSUER : %s\n", openssl_x509_get_info(env,OPENSSL_X509_INFO_ISSUER ,cert)); printf("OPENSSL_X509_INFO_VALID_FROM : %s\n", openssl_x509_get_info(env, OPENSSL_X509_INFO_VALID_FROM,cert)); printf("OPENSSL_X509_INFO_VALID_TO : %s\n", openssl_x509_get_info(env,OPENSSL_X509_INFO_VALID_TO ,cert)); printf("OPENSSL_X509_INFO_FINGER : %s\n", openssl_x509_get_info(env,OPENSSL_X509_INFO_FINGER ,cert)); printf("OPENSSL_X509_INFO_SIGNATURE : %s\n", openssl_x509_get_info(env, OPENSSL_X509_INFO_SIGNATURE,cert)); printf("OPENSSL_X509_INFO_VERSION : %s\n", openssl_x509_get_info(env,OPENSSL_X509_INFO_VERSION ,cert)); printf("OPENSSL_X509_INFO_PUBKEY : %s\n", openssl_x509_get_info(env,OPENSSL_X509_INFO_PUBKEY ,cert)); printf("OPENSSL_X509_INFO_PUBKEY_ALGO : %s\n", openssl_x509_get_info(env,OPENSSL_X509_INFO_PUBKEY_ALGO ,cert)); printf("SERIAL : %u\n", openssl_x509_get_serial(env,cert)); printf("PUBKEY : %s\n", openssl_x509_get_cert_data(env,cert)); printf("\n*************END PRINTING********************\n"); } rampartc-src-1.3.0/src/omxmlsec/openssl/cipher_ctx.c0000644000076500007650000001152111202453415022355 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include #include #include #include struct openssl_cipher_ctx_t { const EVP_CIPHER* cipher; oxs_key_t *key; axis2_char_t *iv; axis2_char_t *pad; }; /******************* end of function headers ******************************/ AXIS2_EXTERN openssl_cipher_ctx_t *AXIS2_CALL openssl_cipher_ctx_create(const axutil_env_t *env) { openssl_cipher_ctx_t *ctx = NULL; AXIS2_ENV_CHECK(env, NULL); ctx = (openssl_cipher_ctx_t *)AXIS2_MALLOC(env->allocator, sizeof(openssl_cipher_ctx_t)); if (!ctx) { AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE); return NULL; } ctx->cipher = NULL; ctx->key = NULL; ctx->iv = NULL; ctx->pad = NULL; return ctx; } /* public functions*/ axis2_status_t AXIS2_CALL openssl_cipher_ctx_free(openssl_cipher_ctx_t *ctx, const axutil_env_t *env ) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); if (ctx->iv) { AXIS2_FREE(env->allocator, ctx->iv); ctx->iv = NULL; } if (ctx->pad) { AXIS2_FREE(env->allocator, ctx->pad); ctx->pad = NULL; } AXIS2_FREE(env->allocator, ctx); ctx = NULL; return AXIS2_SUCCESS; } const EVP_CIPHER* AXIS2_CALL openssl_cipher_ctx_get_cipher(openssl_cipher_ctx_t *ctx, const axutil_env_t *env) { AXIS2_ENV_CHECK(env, NULL); return ctx->cipher ; } oxs_key_t *AXIS2_CALL openssl_cipher_ctx_get_key(openssl_cipher_ctx_t *ctx, const axutil_env_t *env ) { AXIS2_ENV_CHECK(env, NULL); return ctx->key ; } axis2_char_t *AXIS2_CALL openssl_cipher_ctx_get_iv(openssl_cipher_ctx_t *ctx, const axutil_env_t *env ) { AXIS2_ENV_CHECK(env, NULL); return ctx->iv ; } axis2_char_t *AXIS2_CALL openssl_cipher_ctx_get_pad(openssl_cipher_ctx_t *ctx, const axutil_env_t *env ) { AXIS2_ENV_CHECK(env, NULL); return ctx->pad; } axis2_status_t AXIS2_CALL openssl_cipher_ctx_set_cipher(openssl_cipher_ctx_t *ctx, const axutil_env_t *env, const EVP_CIPHER *cipher ) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); /*if (ctx->cipher){ AXIS2_FREE(env->allocator, ctx->cipher); ctx->cipher = NULL; } */ ctx->cipher = cipher; return AXIS2_SUCCESS; } axis2_status_t AXIS2_CALL openssl_cipher_ctx_set_key(openssl_cipher_ctx_t *ctx, const axutil_env_t *env, oxs_key_t *key ) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, key, AXIS2_FAILURE); if (ctx->key) { oxs_key_free(ctx->key, env); ctx->key = NULL; } ctx->key = key ; return AXIS2_SUCCESS; } axis2_status_t AXIS2_CALL openssl_cipher_ctx_set_iv(openssl_cipher_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *iv ) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, iv, AXIS2_FAILURE); if (ctx->iv) { AXIS2_FREE(env->allocator, ctx->iv); ctx->iv = NULL; } ctx->iv = axutil_strdup(env, iv); return AXIS2_SUCCESS; } axis2_status_t AXIS2_CALL openssl_cipher_ctx_set_pad(openssl_cipher_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *pad ) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, pad, AXIS2_FAILURE); if (ctx->pad) { AXIS2_FREE(env->allocator, ctx->pad); ctx->pad = NULL; } ctx->pad = axutil_strdup(env, pad); return AXIS2_SUCCESS; } rampartc-src-1.3.0/src/omxmlsec/openssl/rsa.c0000644000076500007650000001417311202453415021020 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include #include #include #include #include /** struct _evp_pkey{ EVP_PKEY *key; unsigned char *name; int size; int type; } */ int AXIS2_CALL openssl_rsa_pub_encrypt( const axutil_env_t *env, const openssl_pkey_t *pkey, const axis2_char_t *padding, oxs_buffer_t *in, oxs_buffer_t *out) { unsigned char *encrypted = NULL; int ret; EVP_PKEY *key = NULL; int pad = RSA_PKCS1_PADDING; AXIS2_ENV_CHECK(env, AXIS2_FAILURE); key = (EVP_PKEY *)openssl_pkey_get_key(pkey, env); if(0 == axutil_strcmp(padding, OPENSSL_RSA_PKCS1_OAEP_PADDING ) ){ pad = RSA_PKCS1_OAEP_PADDING; }else if(0 == axutil_strcmp(padding, OPENSSL_RSA_PKCS1_PADDING ) ){ pad = RSA_PKCS1_PADDING; } encrypted = AXIS2_MALLOC(env->allocator, RSA_size(key->pkey.rsa)); ret = RSA_public_encrypt(oxs_buffer_get_size(in, env), oxs_buffer_get_data(in, env), encrypted, key->pkey.rsa , pad); if (ret < 0) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_OPENSSL_FUNC_FAILED, "RSA encryption failed"); return (-1); } oxs_buffer_populate(out, env, encrypted, ret); AXIS2_FREE(env->allocator, encrypted); encrypted = NULL; return ret; } int AXIS2_CALL openssl_rsa_pub_decrypt( const axutil_env_t *env, const openssl_pkey_t *pkey, const axis2_char_t *padding, oxs_buffer_t *in, oxs_buffer_t *out) { unsigned char *decrypted = NULL; int ret; EVP_PKEY *key = NULL; int pad = RSA_PKCS1_PADDING; AXIS2_ENV_CHECK(env, AXIS2_FAILURE); key = (EVP_PKEY *)openssl_pkey_get_key(pkey, env); if(0 == axutil_strcmp(padding, OPENSSL_RSA_PKCS1_OAEP_PADDING ) ){ pad = RSA_PKCS1_OAEP_PADDING; }else if(0 == axutil_strcmp(padding, OPENSSL_RSA_PKCS1_PADDING ) ){ pad = RSA_PKCS1_PADDING; } decrypted = AXIS2_MALLOC(env->allocator, RSA_size(key->pkey.rsa)); ret = RSA_public_decrypt(oxs_buffer_get_size(in, env), oxs_buffer_get_data(in, env), decrypted, key->pkey.rsa , pad); if (ret < 0) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_OPENSSL_FUNC_FAILED, "PUBKEY decrypt (signature verification) failed"); return (-1); } oxs_buffer_populate(out, env, decrypted, ret); return ret; } int AXIS2_CALL openssl_rsa_prv_decrypt( const axutil_env_t *env, const openssl_pkey_t *pkey, const axis2_char_t *padding, oxs_buffer_t *in, oxs_buffer_t *out) { unsigned char *decrypted = NULL; int ret = -1; EVP_PKEY *key = NULL; int pad = RSA_PKCS1_PADDING; AXIS2_ENV_CHECK(env, AXIS2_FAILURE); key = openssl_pkey_get_key(pkey, env); /*Set padding. This is the only diff btwn RSA-v1.5 and RSA-OAEP*/ if(0 == axutil_strcmp(padding, OPENSSL_RSA_PKCS1_OAEP_PADDING ) ){ pad = RSA_PKCS1_OAEP_PADDING; }else if(0 == axutil_strcmp(padding, OPENSSL_RSA_PKCS1_PADDING ) ){ pad = RSA_PKCS1_PADDING; } decrypted = AXIS2_MALLOC(env->allocator, RSA_size(key->pkey.rsa)); /*Here the ret is the length of decrypted data*/ ret = RSA_private_decrypt(RSA_size(key->pkey.rsa), oxs_buffer_get_data(in, env), decrypted, key->pkey.rsa, pad); if (ret < 0) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_OPENSSL_FUNC_FAILED, "RSA decryption failed"); return (-1); } oxs_buffer_populate(out, env, decrypted, ret); /*Free*/ AXIS2_FREE(env->allocator, decrypted); decrypted = NULL; return ret; } int AXIS2_CALL openssl_rsa_prv_encrypt( const axutil_env_t *env, const openssl_pkey_t *pkey, const axis2_char_t *padding, oxs_buffer_t *in, oxs_buffer_t *out) { unsigned char *encrypted = NULL; int ret; EVP_PKEY *key = NULL; int pad = RSA_PKCS1_PADDING; AXIS2_ENV_CHECK(env, AXIS2_FAILURE); /*Get the private key*/ key = (EVP_PKEY *)openssl_pkey_get_key(pkey, env); /*Set padding. This is the only diff btwn RSA-v1.5 and RSA-OAEP*/ if(0 == axutil_strcmp(padding, OPENSSL_RSA_PKCS1_OAEP_PADDING ) ){ pad = RSA_PKCS1_OAEP_PADDING; }else if(0 == axutil_strcmp(padding, OPENSSL_RSA_PKCS1_PADDING ) ){ pad = RSA_PKCS1_PADDING; } encrypted = AXIS2_MALLOC(env->allocator, RSA_size(key->pkey.rsa)); ret = RSA_private_encrypt(RSA_size(key->pkey.rsa), oxs_buffer_get_data(in, env), encrypted, key->pkey.rsa, pad); if (ret < 0) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_OPENSSL_FUNC_FAILED, "RSA private encryption(Signing) failed. Error code %d: %s",ERR_get_error(), ERR_reason_error_string(ERR_get_error())); return (-1); } oxs_buffer_populate(out, env, encrypted, ret); return ret; } rampartc-src-1.3.0/src/omxmlsec/openssl/util.c0000644000076500007650000001033311202453415021202 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include #include #include #include AXIS2_EXTERN axis2_status_t AXIS2_CALL openssl_generate_random_data(const axutil_env_t *env, oxs_buffer_t *buffer, int size) { axis2_status_t status = AXIS2_FAILURE; int ret; unsigned char temp_buffer[1024]; ret = RAND_bytes(temp_buffer, size); if (ret < 0) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_DEFAULT, "RAND_bytes failed %d", size); return AXIS2_FAILURE; } /*Encoding make it easier to handle random data*/ #if 0 int encodedlen; axis2_char_t *encoded_str = NULL; encodedlen = axutil_base64_encode_len(size); encoded_str = AXIS2_MALLOC(env->allocator, encodedlen); ret = axutil_base64_encode(encoded_str, (const char *)temp_buffer, size); status = oxs_buffer_populate(buffer, env, (unsigned char*)encoded_str, size); AXIS2_FREE(env->allocator, encoded_str); encoded_str = NULL; #else status = oxs_buffer_populate(buffer, env, (unsigned char*)temp_buffer, size); #endif return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL openssl_populate_cipher_property(const axutil_env_t *env, openssl_cipher_property_t *cprop) { EVP_CIPHER* cipher; EVP_CIPHER_CTX ctx; axis2_char_t* cipher_name = NULL; if (!cprop) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_INVALID_DATA, "openssl_cipher_property is NULL"); return AXIS2_FAILURE; } cipher_name = openssl_cipher_property_get_name(cprop, env); if (!cipher_name) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_INVALID_DATA, "openssl_cipher_property name is NULL"); return AXIS2_FAILURE; } cipher = (EVP_CIPHER*)openssl_get_evp_cipher_by_name(env, cipher_name); if (!cipher) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_INVALID_DATA, "openssl_get_evp_cipher_by_name failed"); return AXIS2_FAILURE; } /*Initialize a cipher ctx*/ EVP_CIPHER_CTX_init(&ctx); EVP_CipherInit_ex(&ctx, cipher, NULL, NULL, NULL, -1); openssl_cipher_property_set_cipher(cprop, env, cipher); openssl_cipher_property_set_key_size(cprop, env, EVP_CIPHER_CTX_key_length(&ctx)); openssl_cipher_property_set_block_size(cprop, env, EVP_CIPHER_CTX_block_size(&ctx)); openssl_cipher_property_set_iv_size(cprop, env, EVP_CIPHER_CTX_iv_length(&ctx)); /*free ctx*/ EVP_CIPHER_CTX_cleanup(&ctx); return AXIS2_SUCCESS; } AXIS2_EXTERN EVP_CIPHER* AXIS2_CALL openssl_get_evp_cipher_by_name(const axutil_env_t *env, axis2_char_t *cipher_name) { EVP_CIPHER* cipher = NULL; if (0 == axutil_strcmp((char*)cipher_name, (char*)OPENSSL_EVP_des_ede3_cbc)) { cipher = (EVP_CIPHER*) EVP_des_ede3_cbc(); } else if (0 == axutil_strcmp((char*)cipher_name, (char*)OPENSSL_EVP_aes_128_cbc)) { cipher = (EVP_CIPHER*)EVP_aes_128_cbc(); } else if (0 == axutil_strcmp((char*)cipher_name, (char*)OPENSSL_EVP_aes_192_cbc)) { cipher = (EVP_CIPHER*)EVP_aes_192_cbc(); } else if (0 == axutil_strcmp((char*)cipher_name, (char*)OPENSSL_EVP_aes_256_cbc)) { cipher = (EVP_CIPHER*)EVP_aes_256_cbc(); } else { return NULL; } return cipher; } rampartc-src-1.3.0/src/omxmlsec/openssl/crypt.c0000644000076500007650000001555111202453415021375 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include #include #include #define BUFSIZE 64 AXIS2_EXTERN int AXIS2_CALL openssl_bc_crypt(const axutil_env_t *env, openssl_cipher_ctx_t *oc_ctx, oxs_buffer_t *input_buf, oxs_buffer_t *output_buf, int encrypt) { EVP_CIPHER_CTX ctx ; oxs_key_t *okey = NULL; unsigned char iv[EVP_MAX_IV_LENGTH]; unsigned char key[EVP_MAX_KEY_LENGTH]; int ret =0, iv_length =0, block_length =0; int last = 0; axis2_status_t status = AXIS2_FAILURE; /********************************Initialize*****************************************************/ iv_length = EVP_CIPHER_iv_length(openssl_cipher_ctx_get_cipher(oc_ctx, env)); /*Get the IV. If encrypt, we need to generate the IV else we need to get it from the input buffer*/ if(encrypt){ /*Generate IV*/ ret = RAND_bytes(iv, iv_length); /*IV to the output*/ status = oxs_buffer_append(output_buf, env, iv, iv_length); }else{ /*Decrypt*/ /*If data is less than the IV its an error*/ if(oxs_buffer_get_size(input_buf, env) < iv_length){ return -1; } /*Copy IV from the inbuf to our buffer*/ memcpy(iv, oxs_buffer_get_data(input_buf, env), iv_length); /*And remove from input*/ status = oxs_buffer_remove_head (input_buf, env, iv_length); } /*Get key*/ okey = openssl_cipher_ctx_get_key(oc_ctx, env); memcpy(key, oxs_key_get_data(okey, env), oxs_key_get_size(okey, env)); /*Set the IV */ ret = EVP_CipherInit(&ctx, (EVP_CIPHER *)openssl_cipher_ctx_get_cipher(oc_ctx, env), key, iv, encrypt); #ifndef OXS_OPENSSL_096 EVP_CIPHER_CTX_set_padding(&ctx, 0); #endif /*Get the block length of the cipher*/ block_length = EVP_CIPHER_block_size((EVP_CIPHER *)openssl_cipher_ctx_get_cipher(oc_ctx, env)); /*********************************Update***********************************************************/ for(;;){/*Loop untill all the data are encrypted*/ unsigned char *out_buf = NULL; int in_size =0, out_size =0, fixed=0, out_length = 0; if (0 == oxs_buffer_get_size(input_buf, env)) { last = 1; break; /*Quit loop if NO DATA!!! */ } /*If the amnt of data available is greater than the buffer size, we limit it to buffer size */ if(oxs_buffer_get_size(input_buf, env) > BUFSIZE){ in_size = BUFSIZE; }else{ in_size = oxs_buffer_get_size(input_buf, env); } out_size = oxs_buffer_get_size(output_buf, env); /*Set the output buffer size*/ status = oxs_buffer_set_max_size(output_buf, env, out_size + in_size + block_length); out_buf = oxs_buffer_get_data(output_buf, env) + out_size; /*position to write*/ #ifndef OXS_OPENSSL_096 /*If decrypt, we copy the final data to the out_buf of size block_length*/ if(!ctx.encrypt) { if(ctx.final_used) { memcpy(out_buf, ctx.final, block_length); out_buf += block_length; fixed = 1; }else { fixed = 0; } } #endif /* encrypt or decrypt */ ret = EVP_CipherUpdate(&ctx, out_buf, &out_length, oxs_buffer_get_data(input_buf, env), in_size); #ifndef OXS_OPENSSL_096 /*If decrypt, we copy data from the out_buf to the ctx.final*/ if(!ctx.encrypt) { if (block_length > 1 && !ctx.buf_len) { out_length -= block_length; ctx.final_used = 1; memcpy(ctx.final, &out_buf[out_length], block_length); } else { ctx.final_used = 0; } if (fixed) { out_length += block_length; } } #endif /* set correct output buffer size */ status = oxs_buffer_set_size(output_buf, env, out_size + out_length); if(AXIS2_FAILURE == status){ return -1; } /* remove the processed block from input */ status = oxs_buffer_remove_head(input_buf, env, in_size); if(AXIS2_FAILURE == status){ return -1; } }/*End of for loop*/ /********************************Finalize*****************************************************/ /* by now there should be no input */ if(last == 1){ unsigned char pad[EVP_MAX_BLOCK_LENGTH]; unsigned char *out_buf = NULL; int out_size = 0, out_length = 0, out_length2 = 0; out_size = oxs_buffer_get_size(output_buf, env); status = oxs_buffer_set_max_size(output_buf, env, out_size + 2 * block_length); out_buf = oxs_buffer_get_data(output_buf, env) + out_size;/*position to write*/ #ifndef OXS_OPENSSL_096 if(encrypt){ int pad_length; pad_length = block_length - ctx.buf_len; /* generate random padding */ if(pad_length > 1) { ret = RAND_bytes(pad, pad_length - 1); } pad[pad_length - 1] = pad_length; /* write padding */ ret = EVP_CipherUpdate(&ctx, out_buf, &out_length, pad, pad_length); out_buf += out_length; } #endif /* finalize */ ret = EVP_CipherFinal(&ctx, out_buf, &out_length2); #ifndef OXS_OPENSSL_096 if(!encrypt){ if(block_length > 1) { out_length2 = block_length - ctx.final[block_length - 1]; if(out_length2 > 0) { memcpy(out_buf, ctx.final, out_length2); } else if(out_length2 < 0) { return(-1); } } } #endif /* set correct output buffer size */ status = oxs_buffer_set_size(output_buf, env, out_size + out_length + out_length2); EVP_CIPHER_CTX_cleanup(&ctx); /*return the length of the outputbuf*/ return out_size + out_length + out_length2; }else{ return -1; } } rampartc-src-1.3.0/src/omxmlsec/openssl/pkey.c0000644000076500007650000001313511202453415021200 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include #include #include #include #include /** struct _evp_pkey{ EVP_PKEY *key; unsigned char *name; int size; int type; } */ struct openssl_pkey_t { EVP_PKEY *key; axis2_char_t *name; int type; int ref; }; AXIS2_EXTERN openssl_pkey_t *AXIS2_CALL openssl_pkey_create(const axutil_env_t *env) { openssl_pkey_t * pkey = NULL; AXIS2_ENV_CHECK(env, NULL); pkey = (openssl_pkey_t *)AXIS2_MALLOC(env->allocator, sizeof(openssl_pkey_t)); if (!pkey) { AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE); return NULL; } pkey->key = NULL; pkey->name = NULL ; pkey->type = OPENSSL_PKEY_TYPE_UNKNOWN; pkey->ref = 1; return pkey; } EVP_PKEY *AXIS2_CALL openssl_pkey_get_key( const openssl_pkey_t *pkey, const axutil_env_t *env ) { AXIS2_ENV_CHECK(env, NULL); return pkey->key ; } axis2_char_t *AXIS2_CALL openssl_pkey_get_name( const openssl_pkey_t *pkey, const axutil_env_t *env ) { AXIS2_ENV_CHECK(env, NULL); return pkey->name ; } int AXIS2_CALL openssl_pkey_get_size( const openssl_pkey_t *pkey, const axutil_env_t *env ) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); return sizeof(pkey->key) ; } int AXIS2_CALL openssl_pkey_get_type( const openssl_pkey_t *pkey, const axutil_env_t *env ) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); return pkey->type ; } axis2_status_t AXIS2_CALL openssl_pkey_set_key( openssl_pkey_t *pkey, const axutil_env_t *env, EVP_PKEY *key ) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); if (pkey->key) { /* AXIS2_FREE(env->allocator, pkey->key);*/ EVP_PKEY_free(pkey->key); pkey->key = NULL; } pkey->key = key; return AXIS2_SUCCESS; } axis2_status_t AXIS2_CALL openssl_pkey_set_name( openssl_pkey_t *pkey, const axutil_env_t *env, axis2_char_t *name ) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, name, AXIS2_FAILURE); if (pkey->name) { AXIS2_FREE(env->allocator, pkey->name); pkey->name = NULL; } pkey->name = axutil_strdup(env, name); return AXIS2_SUCCESS; } axis2_status_t AXIS2_CALL openssl_pkey_set_type( openssl_pkey_t *pkey, const axutil_env_t *env, int type ) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); pkey->type = type; return AXIS2_SUCCESS; } axis2_status_t AXIS2_CALL openssl_pkey_load( openssl_pkey_t *pkey, const axutil_env_t *env, axis2_char_t *filename, axis2_char_t *password ) { EVP_PKEY *pk = NULL; BIO *bio; int type = OPENSSL_PKEY_TYPE_UNKNOWN; int ret ; axis2_status_t status = AXIS2_FAILURE; AXIS2_ENV_CHECK(env, AXIS2_FAILURE); bio = BIO_new_file(filename, "rb"); /*Try to read the prv key first*/ pk = PEM_read_bio_PrivateKey(bio, NULL, 0 , password); if (!pk) { /*If prv key is not found then read the public key*/ ret = BIO_reset(bio); pk = PEM_read_bio_PUBKEY(bio, NULL, 0 , password); if (!pk) { /*If there is no key by now its an error*/ oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_OPENSSL_FUNC_FAILED, "Cannot load key from %s", filename); return AXIS2_FAILURE; } type = OPENSSL_PKEY_TYPE_PUBLIC_KEY; } else { type = OPENSSL_PKEY_TYPE_PRIVATE_KEY; } status = openssl_pkey_populate(pkey, env, pk, filename, type) ; return AXIS2_SUCCESS; } axis2_status_t AXIS2_CALL openssl_pkey_populate( openssl_pkey_t *pkey, const axutil_env_t *env, EVP_PKEY *key, axis2_char_t *name, int type ) { axis2_status_t status = AXIS2_FAILURE; AXIS2_ENV_CHECK(env, AXIS2_FAILURE); status = openssl_pkey_set_key(pkey, env, key); status = openssl_pkey_set_name(pkey, env, name); status = openssl_pkey_set_type(pkey, env, type); return AXIS2_SUCCESS; } axis2_status_t AXIS2_CALL openssl_pkey_increment_ref( openssl_pkey_t *pkey, const axutil_env_t *env) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); pkey->ref++; return AXIS2_SUCCESS; } axis2_status_t AXIS2_CALL openssl_pkey_free( openssl_pkey_t *pkey, const axutil_env_t *env ) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); /*We do not FREE. If somebody still need this*/ if(--(pkey->ref) > 0){ return AXIS2_SUCCESS ; } if (pkey->key) { EVP_PKEY_free(pkey->key); pkey->key = NULL; } if (pkey->name) { AXIS2_FREE(env->allocator, pkey->name); pkey->name = NULL; } AXIS2_FREE(env->allocator, pkey); pkey = NULL; return AXIS2_SUCCESS; } rampartc-src-1.3.0/src/omxmlsec/openssl/cipher_property.c0000644000076500007650000001313511202453415023446 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include #include struct openssl_cipher_property_t { EVP_CIPHER *cipher; axis2_char_t *name; axis2_char_t *url; int key_size; int block_size; int iv_size; }; EVP_CIPHER * AXIS2_CALL openssl_cipher_property_get_cipher( const openssl_cipher_property_t *cprop, const axutil_env_t *env) { AXIS2_ENV_CHECK(env, NULL); return cprop->cipher; } axis2_char_t * AXIS2_CALL openssl_cipher_property_get_name( const openssl_cipher_property_t *cprop, const axutil_env_t *env) { AXIS2_ENV_CHECK(env, NULL); return cprop->name; } axis2_char_t * AXIS2_CALL openssl_cipher_property_get_url( const openssl_cipher_property_t *cprop, const axutil_env_t *env) { AXIS2_ENV_CHECK(env, NULL); return cprop->url; } int AXIS2_CALL openssl_cipher_property_get_key_size( const openssl_cipher_property_t *cprop, const axutil_env_t *env) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); return cprop->key_size; } int AXIS2_CALL openssl_cipher_property_get_block_size( const openssl_cipher_property_t *cprop, const axutil_env_t *env) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); return cprop->block_size; } int AXIS2_CALL openssl_cipher_property_get_iv_size( const openssl_cipher_property_t *cprop, const axutil_env_t *env) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); return cprop->iv_size; } axis2_status_t AXIS2_CALL openssl_cipher_property_set_cipher( openssl_cipher_property_t *cprop, const axutil_env_t *env, EVP_CIPHER *cipher) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); if (cprop->cipher) { AXIS2_FREE(env->allocator, cprop->cipher); cprop->cipher = NULL; } cprop->cipher = cipher; return AXIS2_SUCCESS; } axis2_status_t AXIS2_CALL openssl_cipher_property_set_name( openssl_cipher_property_t *cprop, const axutil_env_t *env, axis2_char_t *name) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, name, AXIS2_FAILURE); if (cprop->name) { AXIS2_FREE(env->allocator, cprop->name); cprop->name = NULL; } cprop->name = axutil_strdup(env, name); return AXIS2_SUCCESS; } axis2_status_t AXIS2_CALL openssl_cipher_property_set_url( openssl_cipher_property_t *cprop, const axutil_env_t *env, axis2_char_t *url) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, url, AXIS2_FAILURE); if (cprop->url) { AXIS2_FREE(env->allocator, cprop->url); cprop->url = NULL; } cprop->url = axutil_strdup(env, url); return AXIS2_SUCCESS; } axis2_status_t AXIS2_CALL openssl_cipher_property_set_key_size( openssl_cipher_property_t *cprop, const axutil_env_t *env, int key_size) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); cprop->key_size = key_size; return AXIS2_SUCCESS; } axis2_status_t AXIS2_CALL openssl_cipher_property_set_block_size( openssl_cipher_property_t *cprop, const axutil_env_t *env, int block_size) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); cprop->block_size = block_size; return AXIS2_SUCCESS; } axis2_status_t AXIS2_CALL openssl_cipher_property_set_iv_size( openssl_cipher_property_t *cprop, const axutil_env_t *env, int iv_size) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); cprop->iv_size = iv_size; return AXIS2_SUCCESS; } AXIS2_EXTERN openssl_cipher_property_t *AXIS2_CALL openssl_cipher_property_create(const axutil_env_t *env) { openssl_cipher_property_t *cprop = NULL; AXIS2_ENV_CHECK(env, NULL); cprop = (openssl_cipher_property_t *)AXIS2_MALLOC(env->allocator, sizeof(openssl_cipher_property_t)); if (!cprop) { AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE); return NULL; } cprop->cipher = NULL; cprop->name = NULL; cprop->url = NULL; cprop->key_size = -1; cprop->block_size = -1; cprop->iv_size = -1; return cprop; } axis2_status_t AXIS2_CALL openssl_cipher_property_free( openssl_cipher_property_t * cprop, const axutil_env_t *env) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); if (cprop->cipher) { /*We should not free the EVP_CIPHER* cipher here*/ /*AXIS2_FREE(env->allocator, cprop->cipher);*/ cprop->cipher = NULL; } if (cprop->name) { AXIS2_FREE(env->allocator, cprop->name); cprop->name = NULL; } if (cprop->url) { AXIS2_FREE(env->allocator, cprop->url); cprop->url = NULL; } AXIS2_FREE(env->allocator, cprop); cprop = NULL; return AXIS2_SUCCESS; } rampartc-src-1.3.0/src/omxmlsec/openssl/Makefile.in0000644000076500007650000003462311202453550022136 0ustar shankarshankar# Makefile.in generated by automake 1.10.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = src/omxmlsec/openssl DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libomopenssl_la_LIBADD = am_libomopenssl_la_OBJECTS = cipher_ctx.lo crypt.lo rsa.lo pkey.lo \ util.lo cipher_property.lo digest.lo x509.lo pkcs12.lo pem.lo \ sign.lo hmac.lo pkcs12_keystore.lo libomopenssl_la_OBJECTS = $(am_libomopenssl_la_OBJECTS) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = $(libomopenssl_la_SOURCES) DIST_SOURCES = $(libomopenssl_la_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ AXIOMINC = @AXIOMINC@ AXIS2INC = @AXIS2INC@ AXIS2LIB = @AXIS2LIB@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NEETHIINC = @NEETHIINC@ OBJEXT = @OBJEXT@ OPENSSLINC = @OPENSSLINC@ OPENSSLLIB = @OPENSSLLIB@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UTILINC = @UTILINC@ VERSION = @VERSION@ VERSION_NO = @VERSION_NO@ XMLSCHEMAINC = @XMLSCHEMAINC@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ noinst_LTLIBRARIES = libomopenssl.la libomopenssl_la_SOURCES = cipher_ctx.c crypt.c rsa.c pkey.c util.c cipher_property.c digest.c x509.c pkcs12.c pem.c sign.c hmac.c pkcs12_keystore.c INCLUDES = -I$(top_builddir)/include \ -I ../../../../util/include \ -I ../../../../include \ -I ../../../../axiom/include \ @OPENSSLINC@ \ @UTILINC@ \ @AXIOMINC@ \ @AXIS2INC@ all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/omxmlsec/openssl/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu src/omxmlsec/openssl/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ test "$$dir" != "$$p" || dir=.; \ echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done libomopenssl.la: $(libomopenssl_la_OBJECTS) $(libomopenssl_la_DEPENDENCIES) $(LINK) $(libomopenssl_la_OBJECTS) $(libomopenssl_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cipher_ctx.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cipher_property.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/crypt.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/digest.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hmac.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pem.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pkcs12.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pkcs12_keystore.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pkey.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rsa.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sign.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/util.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/x509.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-exec-am: install-html: install-html-am install-info: install-info-am install-man: install-pdf: install-pdf-am install-ps: install-ps-am installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: rampartc-src-1.3.0/src/omxmlsec/openssl/digest.c0000644000076500007650000000367111202453415021513 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include #define SIZE_HASH 32 AXIS2_EXTERN axis2_char_t *AXIS2_CALL openssl_sha1(const axutil_env_t *env, axis2_char_t *input, int length) { SHA_CTX c ; unsigned char md[SHA_DIGEST_LENGTH]; axis2_char_t* encoded_str = NULL; SHA1_Init(&c); SHA1_Update(&c,(unsigned char*)input,length); SHA1_Final(md,&c); encoded_str = AXIS2_MALLOC(env->allocator, axutil_base64_encode_len(SIZE_HASH)); axutil_base64_encode(encoded_str, (char*)md, SHA_DIGEST_LENGTH); return encoded_str; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL openssl_md5(const axutil_env_t *env, axis2_char_t *input, int length) { MD5_CTX ctx; unsigned char md[MD5_DIGEST_LENGTH]; axis2_char_t* encoded_str = NULL; MD5_Init(&ctx); MD5_Update(&ctx, (unsigned char*)input,length); MD5_Final(md, &ctx); encoded_str = AXIS2_MALLOC(env->allocator, MD5_DIGEST_LENGTH); axutil_base64_encode(encoded_str, (char*)md, MD5_DIGEST_LENGTH); return encoded_str; } rampartc-src-1.3.0/src/omxmlsec/openssl/pkcs12_keystore.c0000644000076500007650000002755011202453415023266 0ustar shankarshankar/* * 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. */ #include #include #include struct pkcs12_keystore { char *keystore_file; char *keystore_password; PKCS12 *keystore; X509 *cert; STACK_OF(X509) *other_certs; openssl_pkey_t *pvt_key; }; AXIS2_EXTERN pkcs12_keystore_t * AXIS2_CALL pkcs12_keystore_create( const axutil_env_t *env, axis2_char_t *filename, axis2_char_t *password) { pkcs12_keystore_t *keystore = NULL; EVP_PKEY *pvt_key = NULL; SSLeay_add_all_algorithms(); ERR_load_crypto_strings(); keystore = (pkcs12_keystore_t*) AXIS2_MALLOC(env->allocator, sizeof (pkcs12_keystore_t)); if (!keystore) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_CREATION_FAILED, "Memory allocation error!"); return NULL; } keystore->keystore_file = filename; keystore->keystore_password = password; keystore->other_certs = NULL; keystore->keystore = NULL; keystore->cert = NULL; keystore->pvt_key = NULL; if (!openssl_pkcs12_load(env, keystore->keystore_file, &keystore->keystore)) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_DEFAULT, "Error loading pkcs12 keystore from file"); return NULL; } if (!openssl_pkcs12_parse( env, keystore->keystore_password, keystore->keystore, &pvt_key, &keystore->cert, &keystore->other_certs)) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_CREATION_FAILED, "PKCS12 Key Store Parsing failed."); AXIS2_FREE(env->allocator, keystore); return NULL; } /* We only populate this since openssl_pkey_t is ref counted. */ if (pvt_key) { keystore->pvt_key = openssl_pkey_create(env); openssl_pkey_populate(keystore->pvt_key, env, pvt_key, (axis2_char_t*) keystore->keystore_file, OPENSSL_PKEY_TYPE_PRIVATE_KEY); } return keystore; } AXIS2_EXTERN pkcs12_keystore_t * AXIS2_CALL pkcs12_keystore_create_from_buffer( const axutil_env_t *env, axis2_char_t *buffer, axis2_char_t *password, int len) { pkcs12_keystore_t *keystore = NULL; EVP_PKEY *pvt_key = NULL; SSLeay_add_all_algorithms(); ERR_load_crypto_strings(); keystore = (pkcs12_keystore_t*) AXIS2_MALLOC(env->allocator, sizeof (pkcs12_keystore_t)); if (!keystore) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_CREATION_FAILED, "Memory allocation error!"); return NULL; } keystore->keystore_file = NULL; keystore->keystore_password = password; keystore->other_certs = NULL; keystore->keystore = NULL; keystore->cert = NULL; keystore->pvt_key = NULL; if (!openssl_pkcs12_load_from_buffer(env, buffer, &keystore->keystore, len)) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_DEFAULT, "Error loading pkcs12 keystore from file"); return NULL; } if (!openssl_pkcs12_parse( env, keystore->keystore_password, keystore->keystore, &pvt_key, &keystore->cert, &keystore->other_certs)) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_CREATION_FAILED, "PKCS12 Key Store Parsing failed."); AXIS2_FREE(env->allocator, keystore); return NULL; } /* We only populate this since openssl_pkey_t is ref counted. */ if (pvt_key) { keystore->pvt_key = openssl_pkey_create(env); openssl_pkey_populate(keystore->pvt_key, env, pvt_key, (axis2_char_t*) keystore->keystore_file, OPENSSL_PKEY_TYPE_PRIVATE_KEY); } return keystore; } axutil_array_list_t * AXIS2_CALL pkcs12_keystore_populate_cert_array( const axutil_env_t *env, STACK_OF(X509) * other_certs) { int num = 0, i; axutil_array_list_t *cert_list = NULL; oxs_x509_cert_t *oxs_cert = NULL; X509 *cert = NULL; num = sk_X509_num(other_certs); cert_list = axutil_array_list_create(env, num); for (i = 0; i < num; i++) { cert = sk_X509_value(other_certs, i); oxs_cert = pkcs12_keystore_populate_oxs_cert(env, cert); if (oxs_cert) { if (!axutil_array_list_add(cert_list, env, (void *) oxs_cert)) return NULL; } } return cert_list; } oxs_x509_cert_t * AXIS2_CALL pkcs12_keystore_populate_oxs_cert( const axutil_env_t *env, X509 *cert_in) { axis2_char_t *x509_cert_data = NULL; axis2_char_t *x509_cert_date = NULL; axis2_char_t *x509_cert_issuer = NULL; axis2_char_t *x509_cert_subject = NULL; axis2_char_t *x509_cert_finger = NULL; axis2_char_t *x509_cert_key_id = NULL; axis2_char_t *x509_common_name = NULL; EVP_PKEY *pub_key = NULL; openssl_pkey_t *open_pubkey = NULL; oxs_x509_cert_t *cert_out = NULL; x509_cert_data = openssl_x509_get_cert_data(env, cert_in); x509_cert_date = openssl_x509_get_info(env, OPENSSL_X509_INFO_VALID_TO, cert_in); x509_cert_issuer = openssl_x509_get_info(env, OPENSSL_X509_INFO_ISSUER, cert_in); x509_cert_subject = openssl_x509_get_info(env, OPENSSL_X509_INFO_SUBJECT, cert_in); x509_cert_finger = openssl_x509_get_info(env, OPENSSL_X509_INFO_FINGER, cert_in); x509_cert_key_id = openssl_x509_get_subject_key_identifier(env, cert_in); x509_common_name = openssl_x509_get_common_name(env, cert_in); cert_out = oxs_x509_cert_create(env); if (!cert_out) { return NULL; } oxs_x509_cert_set_data(cert_out, env, x509_cert_data); oxs_x509_cert_set_date(cert_out, env, x509_cert_date); oxs_x509_cert_set_issuer(cert_out, env, x509_cert_issuer); oxs_x509_cert_set_subject(cert_out, env, x509_cert_subject); oxs_x509_cert_set_fingerprint(cert_out, env, x509_cert_finger); oxs_x509_cert_set_serial_number(cert_out, env, openssl_x509_get_serial(env, cert_in)); oxs_x509_cert_set_key_identifier(cert_out, env, x509_cert_key_id); oxs_x509_cert_set_common_name(cert_out, env, x509_common_name); openssl_x509_get_pubkey(env, cert_in, &pub_key); open_pubkey = openssl_pkey_create(env); openssl_pkey_populate(open_pubkey, env, pub_key, x509_cert_finger, OPENSSL_PKEY_TYPE_PUBLIC_KEY); /*Set the public key to the x509 certificate*/ oxs_x509_cert_set_public_key(cert_out, env, open_pubkey); return cert_out; } AXIS2_EXTERN openssl_pkey_t * AXIS2_CALL pkcs12_keystore_get_owner_private_key( pkcs12_keystore_t *keystore, const axutil_env_t *env) { if (keystore->pvt_key) { /* We are always having a pointer */ openssl_pkey_increment_ref(keystore->pvt_key, env); } return keystore->pvt_key; } AXIS2_EXTERN oxs_x509_cert_t * AXIS2_CALL pkcs12_keystore_get_owner_certificate( pkcs12_keystore_t *keystore, const axutil_env_t *env) { if (!keystore->cert) { return NULL; } return pkcs12_keystore_populate_oxs_cert(env, keystore->cert); } AXIS2_EXTERN oxs_x509_cert_t * AXIS2_CALL pkcs12_keystore_get_other_certificate( pkcs12_keystore_t *keystore, const axutil_env_t *env) { int num = 0; oxs_x509_cert_t *x509_cert = NULL; X509 *cert = NULL; num = sk_X509_num(keystore->other_certs); if (num == 1) { cert = sk_X509_value(keystore->other_certs, 0); x509_cert = pkcs12_keystore_populate_oxs_cert(env, cert); if (!x509_cert) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_INVALID_DATA, "Certificate population error."); return NULL; } } return x509_cert; } AXIS2_EXTERN oxs_x509_cert_t * AXIS2_CALL pkcs12_keystore_get_certificate_for_issuer_serial( pkcs12_keystore_t *keystore, const axutil_env_t *env, axis2_char_t *issuer, int serial_number) { int i = 0, num = 0; oxs_x509_cert_t *x509_cert = NULL; axis2_char_t *x509_issuer = NULL; int x509_serial = -1; X509 *cert = NULL; if (!issuer || !(serial_number > 0)) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_INVALID_DATA, "Invalid arguments to get_certificate_for_issuer_serial."); return NULL; } num = sk_X509_num(keystore->other_certs); if (num > 0) { for (i = 0; i < num; i++) { cert = sk_X509_value(keystore->other_certs, i); x509_issuer = openssl_x509_get_info(env, OPENSSL_X509_INFO_ISSUER, cert); x509_serial = openssl_x509_get_serial(env, cert); if ((axutil_strcmp(x509_issuer, issuer) == 0) && (serial_number == x509_serial)) { x509_cert = pkcs12_keystore_populate_oxs_cert(env, cert); if (!x509_cert) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_INVALID_DATA, "Certificate population error."); return NULL; } } } } return x509_cert; } AXIS2_EXTERN oxs_x509_cert_t * AXIS2_CALL pkcs12_keystore_get_certificate_for_thumbprint( pkcs12_keystore_t *keystore, const axutil_env_t *env, axis2_char_t *thumbprint) { int i = 0, num = 0; oxs_x509_cert_t *x509_cert = NULL; axis2_char_t *x509_thumbprint = NULL; X509 *cert = NULL; if (!thumbprint) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_INVALID_DATA, "Invalid arguments to get_certificate_for_issuer_serial."); return NULL; } num = sk_X509_num(keystore->other_certs); if (num > 0) { for (i = 0; i < num; i++) { cert = sk_X509_value(keystore->other_certs, i); x509_thumbprint = openssl_x509_get_info(env, OPENSSL_X509_INFO_FINGER, cert); if ((axutil_strcmp(x509_thumbprint, thumbprint) == 0)) { x509_cert = pkcs12_keystore_populate_oxs_cert(env, cert); if (!x509_cert) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_INVALID_DATA, "Certificate population error."); return NULL; } } } } return x509_cert; } AXIS2_EXTERN oxs_x509_cert_t * AXIS2_CALL pkcs12_keystore_get_certificate_for_subject_key_id( pkcs12_keystore_t *keystore, const axutil_env_t *env, axis2_char_t *ski) { int i = 0, num = 0; oxs_x509_cert_t *x509_cert = NULL; axis2_char_t *x509_ski = NULL; X509 *cert = NULL; if (!ski) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_INVALID_DATA, "Invalid arguments to get_certificate_for_issuer_serial."); return NULL; } num = sk_X509_num(keystore->other_certs); if (num > 0) { for (i = 0; i < num; i++) { cert = sk_X509_value(keystore->other_certs, i); x509_ski = openssl_x509_get_subject_key_identifier(env, cert); if ((axutil_strcmp(x509_ski, ski) == 0)) { x509_cert = pkcs12_keystore_populate_oxs_cert(env, cert); if (!x509_cert) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_INVALID_DATA, "Certificate population error."); return NULL; } } } } return x509_cert; } rampartc-src-1.3.0/src/omxmlsec/openssl/sign.c0000644000076500007650000001121511202453415021165 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define BUFSIZE 64 AXIS2_EXTERN int AXIS2_CALL openssl_sig_sign(const axutil_env_t *env, openssl_pkey_t *prvkey, oxs_buffer_t *input_buf, oxs_buffer_t *output_buf) { unsigned char sig_buf[4096]; /*Enough for the signature*/ unsigned int sig_len; const EVP_MD* digest; EVP_MD_CTX md_ctx; EVP_PKEY* pkey = NULL; int err, ret; /*Get the key*/ /*open_pkey = oxs_sign_ctx_get_private_key(sign_ctx, env);*/ pkey = openssl_pkey_get_key(prvkey, env); if(!pkey){ oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_SIGN_FAILED,"Cannot load the private key" ); } /*TODO: Set the digest according to the signature method*/ digest = EVP_sha1(); /*MD Ctx init*/ EVP_MD_CTX_init(&md_ctx); /*Sign init*/ ret = EVP_SignInit(&md_ctx, digest); AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[openssl][sig] Signing content %s", oxs_buffer_get_data(input_buf, env) ); EVP_SignUpdate (&md_ctx, oxs_buffer_get_data(input_buf, env), oxs_buffer_get_size(input_buf, env)); sig_len = sizeof(sig_buf); err = EVP_SignFinal (&md_ctx, sig_buf, &sig_len, pkey); if (err != 1) { ERR_print_errors_fp (stderr); } /*Fill the output buffer*/ oxs_buffer_populate(output_buf, env, sig_buf, sig_len); EVP_MD_CTX_cleanup(&md_ctx); return sig_len; } AXIS2_EXTERN axis2_status_t AXIS2_CALL openssl_sig_verify(const axutil_env_t *env, openssl_pkey_t *pubkey, oxs_buffer_t *input_buf, oxs_buffer_t *sig_buf) { axis2_status_t status = AXIS2_FAILURE; const EVP_MD* digest; EVP_MD_CTX md_ctx; EVP_PKEY* pkey = NULL; int ret; /*Get the publickey*/ pkey = openssl_pkey_get_key(pubkey, env); if(!pkey){ oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_SIG_VERIFICATION_FAILED,"Cannot load the public key" ); } /*TODO Set the digest according to the signature method*/ digest = EVP_sha1(); /*Init MD Ctx*/ EVP_MD_CTX_init(&md_ctx); /*Intialize verification*/ ret = EVP_VerifyInit(&md_ctx, digest); if(ret != 1) { /*Error*/ oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_SIG_VERIFICATION_FAILED,"EVP_VerifyInit failed" ); return AXIS2_FAILURE; } ret = EVP_VerifyUpdate(&md_ctx, oxs_buffer_get_data(input_buf, env), oxs_buffer_get_size(input_buf, env)); if(ret != 1) { /*Error*/ oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_SIG_VERIFICATION_FAILED,"EVP_VerifyUpdate failed" ); return AXIS2_FAILURE; } ret = EVP_VerifyFinal(&md_ctx, oxs_buffer_get_data(sig_buf, env), oxs_buffer_get_size(sig_buf, env), pkey); if(ret == 0){ /*Error. Signature verification FAILED */ oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_SIG_VERIFICATION_FAILED,"Signature verification FAILED." ); status = AXIS2_FAILURE; }else if(ret < 0){ /*Erorr. Some other error*/ oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_SIG_VERIFICATION_FAILED,"Error occured while verifying the signature." ); status = AXIS2_FAILURE; }else{ /*SUCCESS. */ AXIS2_LOG_INFO(env->log, "[openssl][sig] Signature verification SUCCESS " ); status = AXIS2_SUCCESS; } EVP_MD_CTX_cleanup(&md_ctx); return status; } rampartc-src-1.3.0/src/omxmlsec/openssl/hmac.c0000644000076500007650000001645111202453415021144 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include #include #include /** */ AXIS2_EXTERN axis2_status_t AXIS2_CALL openssl_hmac_sha1(const axutil_env_t *env, oxs_key_t *secret, oxs_buffer_t *input, oxs_buffer_t *output) { HMAC_CTX ctx; unsigned char hmac[EVP_MAX_MD_SIZE + 1]; unsigned int hashed_len; if(!secret){ oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_SIGN_FAILED,"[oxs][openssl] No key to sign "); return AXIS2_FAILURE; } if(!input){ oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_SIGN_FAILED,"[oxs][openssl] Nothing to sign "); return AXIS2_FAILURE; } if(!output){ oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_SIGN_FAILED,"[oxs][openssl] The buffer to place signature is NULL "); return AXIS2_FAILURE; } HMAC_CTX_init(&ctx); HMAC_Init_ex(&ctx, oxs_key_get_data(secret, env), oxs_key_get_size(secret, env), EVP_sha1(), NULL); HMAC_Update(&ctx, oxs_buffer_get_data(input, env), oxs_buffer_get_size(input, env)); HMAC_Final(&ctx, hmac, &hashed_len); /*Fill the output buffer*/ oxs_buffer_populate(output, env, hmac, hashed_len); HMAC_cleanup(&ctx); HMAC_CTX_cleanup(&ctx); return AXIS2_SUCCESS; } /* * Borrowed from openssl library. Thankyou */ AXIS2_EXTERN axis2_status_t AXIS2_CALL openssl_p_hash(const axutil_env_t *env, unsigned char *secret, unsigned int secret_len, unsigned char *seed, unsigned int seed_len, unsigned char *output, unsigned int output_len) { int chunk; unsigned int j; HMAC_CTX ctx; HMAC_CTX ctx_tmp; unsigned char A1[EVP_MAX_MD_SIZE]; unsigned int A1_len; /* char a[5000]; printf("seed_len %d\n", seed_len); axutil_base64_encode(a, (const char*)seed, seed_len); printf("seed is %s\n", a); */ if(!secret) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_KEY_DERIVATION_FAILED,"[oxs][openssl] No key to derive "); return AXIS2_FAILURE; } if(!seed) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_KEY_DERIVATION_FAILED,"[oxs][openssl] lable+seed is empty "); return AXIS2_FAILURE; } if(!output) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_KEY_DERIVATION_FAILED,"[oxs][openssl] The buffer to place hash is NULL "); return AXIS2_FAILURE; } chunk=EVP_MD_size(EVP_sha1()); HMAC_CTX_init(&ctx); HMAC_CTX_init(&ctx_tmp); HMAC_Init_ex(&ctx, secret, secret_len, EVP_sha1(), NULL); HMAC_Init_ex(&ctx_tmp, secret, secret_len, EVP_sha1(), NULL); HMAC_Update(&ctx, seed, seed_len); HMAC_Final(&ctx, A1, &A1_len); for (;;) { HMAC_Init_ex(&ctx, NULL, 0, NULL, NULL); /* re-init */ HMAC_Init_ex(&ctx_tmp, NULL, 0, NULL, NULL); /* re-init */ HMAC_Update(&ctx, A1, A1_len); HMAC_Update(&ctx_tmp, A1, A1_len); HMAC_Update(&ctx, seed, seed_len); if (output_len > chunk) { HMAC_Final(&ctx, output, &j); output+=j; output_len-=j; HMAC_Final(&ctx_tmp, A1, &A1_len); /* calc the next A1 value */ } else /* last one */ { HMAC_Final(&ctx, A1, &A1_len); memcpy(output, A1, output_len); break; } } HMAC_CTX_cleanup(&ctx); HMAC_CTX_cleanup(&ctx_tmp); OPENSSL_cleanse(A1,sizeof(A1)); return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL openssl_p_sha1(const axutil_env_t *env, oxs_key_t *secret, axis2_char_t *label, axis2_char_t *seed, oxs_key_t *derived_key) { oxs_buffer_t *label_and_seed = NULL; unsigned int key_len = 0; unsigned char *output = NULL; axis2_char_t *dk_id = NULL; axis2_char_t *dk_name = NULL; axis2_char_t *decoded_seed = NULL; unsigned int decoded_seed_len = 0; axis2_status_t status = AXIS2_FAILURE; unsigned int length; unsigned int offset; if(!derived_key) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_KEY_DERIVATION_FAILED,"[oxs][openssl] derived key is null "); return status; } if (!secret) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_KEY_DERIVATION_FAILED,"[oxs][openssl] secret is not valid "); return status; } length = oxs_key_get_length(derived_key, env); offset = oxs_key_get_offset(derived_key, env); if (!length) { length = OPENSSL_DEFAULT_KEY_LEN_FOR_PSHA1; oxs_key_set_length(derived_key, env, length); } label_and_seed = oxs_buffer_create(env); if((!label) || (!axutil_strlen(label))) { label = axutil_stracat(env, OPENSSL_DEFAULT_LABEL_FOR_PSHA1, OPENSSL_DEFAULT_LABEL_FOR_PSHA1); oxs_key_set_label(derived_key, env, label); oxs_buffer_append(label_and_seed, env, (unsigned char*)label, axutil_strlen(label)); AXIS2_FREE(env->allocator, label); label = NULL; } else { oxs_buffer_append(label_and_seed, env, (unsigned char*)label, axutil_strlen(label)); } if ((!seed) || (!axutil_strlen(seed))) { seed = oxs_util_generate_nonce(env, 16); oxs_key_set_nonce(derived_key, env, seed); decoded_seed_len = axutil_base64_decode_len(seed); decoded_seed = AXIS2_MALLOC(env->allocator, decoded_seed_len); axutil_base64_decode_binary((unsigned char*)decoded_seed, seed); AXIS2_FREE(env->allocator, seed); seed = NULL; } else { decoded_seed_len = axutil_base64_decode_len(seed); decoded_seed = AXIS2_MALLOC(env->allocator, decoded_seed_len); axutil_base64_decode_binary((unsigned char*)decoded_seed, seed); } if(decoded_seed) { oxs_buffer_append(label_and_seed, env, (unsigned char*)decoded_seed, decoded_seed_len); AXIS2_FREE(env->allocator, decoded_seed); decoded_seed = NULL; } oxs_key_set_offset(derived_key, env, offset); key_len = length + offset; output = (unsigned char*)AXIS2_MALLOC(env->allocator, key_len + 1); status = openssl_p_hash(env, oxs_key_get_data(secret, env), oxs_key_get_size(secret, env), oxs_buffer_get_data(label_and_seed, env), oxs_buffer_get_size(label_and_seed, env), output, key_len); /*output = (unsigned char*)axutil_string_substring_starting_at((axis2_char_t*)output, offset);*/ dk_id = (axis2_char_t*)oxs_util_generate_id(env, (axis2_char_t*)OXS_DERIVED_ID); dk_name = axutil_stracat(env, OXS_LOCAL_REFERENCE_PREFIX, dk_id); status = status && oxs_key_populate(derived_key, env, (unsigned char*)(output+offset), dk_name, length, OXS_KEY_USAGE_DERIVED); AXIS2_FREE(env->allocator, output); AXIS2_FREE(env->allocator, dk_id); AXIS2_FREE(env->allocator, dk_name); oxs_buffer_free(label_and_seed, env); return status; } rampartc-src-1.3.0/src/omxmlsec/openssl/pkcs12.c0000644000076500007650000000726211202453415021337 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include #include #include #include #include AXIS2_EXTERN axis2_status_t AXIS2_CALL openssl_pkcs12_load(const axutil_env_t *env, axis2_char_t *filename, PKCS12 **p12) { BIO *in = NULL; SSLeay_add_all_algorithms(); ERR_load_crypto_strings(); if (!(in = BIO_new_file(filename, "rb"))) { fprintf(stderr, "Error opening file %s\n", filename); return AXIS2_FAILURE; } /*Load pkcs store*/ *p12 = d2i_PKCS12_bio(in, NULL); if (!p12) { fprintf(stderr, "Error reading PKCS#12 file %s\n", filename); ERR_print_errors_fp(stderr); return AXIS2_FAILURE; } BIO_free(in); return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL openssl_pkcs12_load_from_buffer( const axutil_env_t *env, axis2_char_t *buffer, PKCS12 **p12, int len) { BIO *in = NULL; BUF_MEM* bm = NULL; SSLeay_add_all_algorithms(); ERR_load_crypto_strings(); if (!(in = BIO_new(BIO_s_mem()))) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_CREATION_FAILED, "Memory allocation error!"); return AXIS2_FAILURE; } if (!(bm = BUF_MEM_new())) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_CREATION_FAILED, "Memory allocation error!"); return AXIS2_FAILURE; } if (!BUF_MEM_grow(bm, len)) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_CREATION_FAILED, "Memory allocation error!"); return AXIS2_FAILURE; } memcpy(bm->data, buffer, len); BIO_set_mem_buf(in, bm, 0 /*not used*/); /*if (!(in = BIO_new_mem_buf((unsigned char*)buffer, len))) { fprintf(stderr, "Error creating pkcs12 from buffer."); return AXIS2_FAILURE; }*/ /*Load pkcs store*/ *p12 = d2i_PKCS12_bio(in, NULL); if (!p12) { fprintf(stderr, "Error reading PKCS#12 from buffer: %s\n", buffer); ERR_print_errors_fp(stderr); return AXIS2_FAILURE; } BIO_free(in); return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL openssl_pkcs12_parse(const axutil_env_t *env, axis2_char_t *password , PKCS12 *p12, EVP_PKEY **prvkey, X509 **cert, STACK_OF(X509) **ca) { /*Parse the pkcs store*/ if (!PKCS12_parse(p12, password, prvkey, cert, ca)) { fprintf(stderr, "Error parsing PKCS#12 file\n"); ERR_print_errors_fp(stderr); return AXIS2_FAILURE; } return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL openssl_pkcs12_free(const axutil_env_t *env, PKCS12 *p12) { PKCS12_free(p12); return AXIS2_SUCCESS; } rampartc-src-1.3.0/src/omxmlsec/cipher.c0000644000076500007650000000761711202453422020025 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include AXIS2_EXTERN openssl_cipher_property_t *AXIS2_CALL oxs_get_cipher_property_for_url(const axutil_env_t *env, axis2_char_t *url) { openssl_cipher_property_t *cprop = NULL; axis2_char_t *cipher_name = NULL; axis2_status_t ret = AXIS2_SUCCESS; cprop = openssl_cipher_property_create(env); ret = openssl_cipher_property_set_url(cprop, env , url); cipher_name = oxs_get_cipher_name_for_url(env, url); if((!cipher_name) || (0 == axutil_strcmp(cipher_name, ""))){ oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_INVALID_DATA, "Cannot populate cipher property"); openssl_cipher_property_free(cprop, env); cprop = NULL; return NULL; } ret = openssl_cipher_property_set_name(cprop, env , cipher_name); ret = openssl_populate_cipher_property(env, cprop); if (ret == AXIS2_FAILURE) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_INVALID_DATA, "Cannot populate cipher property"); openssl_cipher_property_free(cprop, env); cprop = NULL; return NULL; } return cprop; } AXIS2_EXTERN axis2_char_t* AXIS2_CALL oxs_get_cipher_name_for_url(const axutil_env_t *env, axis2_char_t *url) { axis2_char_t *cipher_name = NULL; if (0 == axutil_strcmp(url, (axis2_char_t*)OXS_HREF_DES3_CBC)) { cipher_name = OPENSSL_EVP_des_ede3_cbc; } else if (0 == axutil_strcmp(url, (axis2_char_t*)OXS_HREF_AES_128_CBC)) { cipher_name = OPENSSL_EVP_aes_128_cbc; } else if (0 == axutil_strcmp(url, (axis2_char_t*)OXS_HREF_AES_192_CBC)) { cipher_name = OPENSSL_EVP_aes_192_cbc; } else if (0 == axutil_strcmp(url, (axis2_char_t*)OXS_HREF_AES_256_CBC)) { cipher_name = OPENSSL_EVP_aes_256_cbc; } else if (0 == axutil_strcmp(url, (axis2_char_t*)OXS_HREF_HMAC_SHA1)) { cipher_name = OPENSSL_HMAC_SHA1; } else { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_UNSUPPORTED_ALGO, "Algorithm not supported"); return NULL; } return cipher_name; } AXIS2_EXTERN axis2_char_t* AXIS2_CALL oxs_get_cipher_url_for_name(const axutil_env_t *env, axis2_char_t *name) { axis2_char_t *cipher_url = NULL; if (0 == axutil_strcmp(name, (axis2_char_t*)OPENSSL_EVP_des_ede3_cbc)) { cipher_url = OXS_HREF_DES3_CBC; } else if (0 == axutil_strcmp(name, (axis2_char_t*)OPENSSL_EVP_aes_128_cbc)) { cipher_url = OXS_HREF_AES_128_CBC; } else if (0 == axutil_strcmp(name, (axis2_char_t*)OPENSSL_EVP_aes_192_cbc)) { cipher_url = OXS_HREF_AES_192_CBC; } else if (0 == axutil_strcmp(name, (axis2_char_t*)OPENSSL_EVP_aes_256_cbc)) { cipher_url = OXS_HREF_AES_256_CBC; } else { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_INVALID_DATA, "Name not supported"); return NULL; } return cipher_url; } rampartc-src-1.3.0/src/omxmlsec/transforms_factory.c0000644000076500007650000001756611202453422022504 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include #include #include #include #include #include /*Functions that implements transforms*/ oxs_tr_dtype_t AXIS2_CALL oxs_transforms_exc_c14n(const axutil_env_t *env, axiom_node_t *input, oxs_tr_dtype_t input_dtype, axis2_char_t **output) { axiom_document_t *doc = NULL; axis2_char_t *algo = NULL; axis2_char_t *c14nized = NULL; oxs_tr_dtype_t output_dtype = OXS_TRANSFORM_TYPE_UNKNOWN; if(input_dtype != OXS_TRANSFORM_TYPE_NODE){ oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_TRANSFORM_FAILED,"Transform expects a NODE."); return OXS_TRANSFORM_TYPE_UNKNOWN; } doc = axiom_node_get_document(input, env); algo = OXS_HREF_TRANSFORM_XML_EXC_C14N; oxs_c14n_apply_algo(env, doc, &c14nized, NULL, input, algo); AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[rampart][c14n-OutPut] is\n\n%s\n\n",c14nized); *output= c14nized; output_dtype = OXS_TRANSFORM_TYPE_CHAR; return output_dtype; } oxs_tr_dtype_t AXIS2_CALL oxs_transforms_enveloped_xmldsig(const axutil_env_t *env, axiom_node_t *input, oxs_tr_dtype_t input_dtype, void **output) { axiom_node_t *sig_node = NULL, *child_node = NULL; if(input_dtype != OXS_TRANSFORM_TYPE_NODE){ oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_TRANSFORM_FAILED, "Transform expects a NODE."); return OXS_TRANSFORM_TYPE_UNKNOWN; } child_node = axiom_node_get_first_element(input, env); while(child_node) { axis2_char_t *node_local_name = NULL; node_local_name = axiom_util_get_localname(child_node, env); if(!(axutil_strcmp(node_local_name, OXS_NODE_SIGNATURE))) { sig_node = axiom_node_detach(child_node, env); break; } child_node = axiom_node_get_next_sibling(child_node, env); } if (sig_node) { axutil_array_list_t *out = axutil_array_list_create(env, 2); if (out) { axutil_array_list_add(out, env, input); axutil_array_list_add(out, env, sig_node); *output = out; return OXS_TRANSFORM_TYPE_NODE_ARRAY_LIST; } axiom_node_add_child(input, env, sig_node); } return OXS_TRANSFORM_TYPE_UNKNOWN; } oxs_tr_dtype_t AXIS2_CALL oxs_transforms_STR(const axutil_env_t *env, axiom_node_t *input, oxs_tr_dtype_t input_dtype, void **output) { axiom_document_t *doc = NULL; axis2_char_t *algo = NULL; axis2_char_t *c14nized = NULL; oxs_tr_dtype_t output_dtype = OXS_TRANSFORM_TYPE_UNKNOWN; axiom_node_t *cn = NULL, *node = NULL; axiom_element_t *stre = NULL, *ce = NULL; axiom_child_element_iterator_t *it = NULL; axutil_qname_t *qname = NULL, *key_qname = NULL, *embeded_qname = NULL; embeded_qname = axutil_qname_create(env, OXS_NODE_EMBEDDED, OXS_WSSE_XMLNS, NULL); key_qname = axutil_qname_create(env, OXS_NODE_KEY_IDENTIFIER, OXS_WSSE_XMLNS, NULL); if (!embeded_qname || !key_qname) { if(embeded_qname) axutil_qname_free(embeded_qname, env); if(key_qname) axutil_qname_free(key_qname, env); return OXS_TRANSFORM_TYPE_UNKNOWN; } stre = axiom_node_get_data_element(input, env); it = axiom_element_get_child_elements(stre, env, input); if (it) { while (AXIS2_TRUE == axiom_child_element_iterator_has_next(it, env)) { axis2_char_t *attr_val = NULL; cn = axiom_child_element_iterator_next(it, env); ce = axiom_node_get_data_element(cn, env); /* At the moment we are supporting only saml token references */ attr_val = axiom_element_get_attribute_value_by_name(ce, env, OXS_ATTR_VALUE_TYPE); if (attr_val && 0 == axutil_strcmp(OXS_ST_KEY_ID_VALUE_TYPE, attr_val)) { qname = axiom_element_get_qname(ce, env, cn); if (axutil_qname_equals(qname, env, key_qname) == AXIS2_TRUE) { node = oxs_saml_token_get_from_key_identifer_reference(env, cn, NULL); break; } else if (axutil_qname_equals(qname, env, embeded_qname) == AXIS2_TRUE) { node = oxs_saml_token_get_from_embeded_reference(env, cn); break; } else { axutil_qname_free(embeded_qname, env); axutil_qname_free(key_qname, env); oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_TRANSFORM_FAILED, "Unrecognized reference type NODE."); return OXS_TRANSFORM_TYPE_UNKNOWN; } } } } axutil_qname_free(embeded_qname, env); axutil_qname_free(key_qname, env); if (node) { doc = axiom_node_get_document(node, env); algo = OXS_HREF_TRANSFORM_XML_EXC_C14N; oxs_c14n_apply_algo(env, doc, &c14nized, NULL, node, algo); *output= c14nized; output_dtype = OXS_TRANSFORM_TYPE_CHAR; return output_dtype; } *output = NULL; oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_TRANSFORM_FAILED, "Referenced node couln't be found in the specifed scope."); return OXS_TRANSFORM_TYPE_UNKNOWN; } /*Public functions*/ AXIS2_EXTERN oxs_transform_t *AXIS2_CALL oxs_transforms_factory_produce_transform(const axutil_env_t *env, axis2_char_t *id) { oxs_transform_t *tr = NULL; /*Inspect the id and produce a transform*/ if(0 == axutil_strcmp(id, OXS_HREF_TRANSFORM_XML_EXC_C14N)){ tr = oxs_transform_create(env); oxs_transform_set_id(tr, env, id); oxs_transform_set_input_data_type(tr, env, OXS_TRANSFORM_TYPE_NODE); oxs_transform_set_output_data_type(tr, env, OXS_TRANSFORM_TYPE_CHAR); oxs_transform_set_transform_func(tr, env, (oxs_transform_tr_func)oxs_transforms_exc_c14n); return tr; }else if(0 == axutil_strcmp(id, OXS_HREF_TRANSFORM_ENVELOPED_SIGNATURE)){ tr = oxs_transform_create(env); oxs_transform_set_id(tr, env, id); oxs_transform_set_input_data_type(tr, env, OXS_TRANSFORM_TYPE_NODE); oxs_transform_set_output_data_type(tr, env, OXS_TRANSFORM_TYPE_NODE_ARRAY_LIST); oxs_transform_set_transform_func(tr, env, (oxs_transform_tr_func)oxs_transforms_enveloped_xmldsig); return tr; }else if (0 == axutil_strcmp(id, OXS_HREF_TRANSFORM_STR_TRANSFORM)) { tr = oxs_transform_create(env); oxs_transform_set_id(tr, env, id); oxs_transform_set_input_data_type(tr, env, OXS_TRANSFORM_TYPE_NODE); oxs_transform_set_output_data_type(tr, env, OXS_TRANSFORM_TYPE_NODE); oxs_transform_set_transform_func(tr, env, (oxs_transform_tr_func)oxs_transforms_STR); return tr; } else return NULL; } rampartc-src-1.3.0/src/omxmlsec/Makefile.am0000644000076500007650000000157111202453422020434 0ustar shankarshankarSUBDIRS = tokens openssl c14n noinst_LTLIBRARIES = libomxmlsec.la libomxmlsec_la_SOURCES = ctx.c buffer.c key.c cipher.c error.c axis2_utils.c axiom.c \ iv.c xml_encryption.c encryption.c\ utility.c asym_ctx.c x509_cert.c key_mgr.c sign_part.c sign_ctx.c \ xml_signature.c signature.c transform.c transforms_factory.c xml_key_processor.c \ xml_key_info_builder.c derivation.c saml/assertion.c saml/auth_des_stmt.c \ saml/condition.c saml/query.c saml/response.c saml/subject.c saml/attr_stmt.c \ saml/auth_smt.c saml/id_type.c saml/request.c saml/stmt.c saml/sutil.c libomxmlsec_la_LIBADD = @OPENSSLLIB@ \ -lssl \ tokens/liboxstokens.la \ openssl/libomopenssl.la \ c14n/liboxsc14n.la INCLUDES = -I$(top_builddir)/include \ -I ../../include \ @OPENSSLINC@ \ @UTILINC@ \ @AXIOMINC@ \ @AXIS2INC@ rampartc-src-1.3.0/src/omxmlsec/c14n/0000755000076500007650000000000011202454477017154 5ustar shankarshankarrampartc-src-1.3.0/src/omxmlsec/c14n/c14n_sorted_list.h0000644000076500007650000000417211202453421022475 0ustar shankarshankar /* * 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 C14N_SORTED_LIST_H #define C14N_SORTED_LIST_H #ifdef __cplusplus extern "C" { #endif typedef struct c14n_sorted_list c14n_sorted_list_t; struct c14n_sorted_list { void *val; c14n_sorted_list_t *right, *left; }; void sorted_list_insert( c14n_sorted_list_t **node, void *val, const void *ctx, int(*compar)(const void *, const void *, const void *), const axutil_env_t *env ); void sorted_list_iterate( c14n_sorted_list_t *root, const void *ctx, void(*perform)(const void *, const void *), const axutil_env_t *env ); void sorted_list_free_container( c14n_sorted_list_t *root, const axutil_env_t *env ); #ifdef __cplusplus } #endif #define C14N_SORTED_LIST_INSERT(list, val, ctx, compar, env)\ sorted_list_insert((list), (val), (ctx), (compar), (env)) #define c14n_sorted_list_create(env) NULL #define C14N_SORTED_LIST_FREE(list, fp_free, env)\ sorted_list_free((list), (fp_free)) #define C14N_SORTED_LIST_ITERATE(list, ctx, fp_perform, env)\ sorted_list_iterate((list), (ctx), (fp_perform), (env)) #define C14N_SORTED_LIST_FREE_CONTAINER(list, env)\ if (list) {\ sorted_list_free_container((list), (env));\ AXIS2_FREE((env)->allocator, (list));\ } #endif rampartc-src-1.3.0/src/omxmlsec/c14n/Makefile.am0000644000076500007650000000034411202453421021175 0ustar shankarshankarnoinst_LTLIBRARIES = liboxsc14n.la noinst_HEADERS = c14n_sorted_list.h liboxsc14n_la_SOURCES = c14n.c \ sorted_list.c INCLUDES = -I ../../../include \ @OPENSSLINC@ \ @UTILINC@ \ @AXIOMINC@ \ @AXIS2INC@ rampartc-src-1.3.0/src/omxmlsec/c14n/sorted_list.c0000644000076500007650000000677111202453421021652 0ustar shankarshankar /* * 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. */ #include #include #include #include "c14n_sorted_list.h" /* * Quick and dirty hack for a sorted list. This must later be * reimplemented * */ void sorted_list_iterate( c14n_sorted_list_t *root, const void *ctx, void(*perform)(const void *, const void *), const axutil_env_t *env ) { if (!root) return; if(root->left) sorted_list_iterate(root->left, ctx, perform, env); perform(root->val, ctx); if(root->right) sorted_list_iterate(root->right, ctx, perform, env); } void sorted_list_insert( c14n_sorted_list_t **node, void *val, const void *ctx, int(*compar)(const void *, const void *, const void *), const axutil_env_t *env ) { if(!(*node)) { *node = (c14n_sorted_list_t *) AXIS2_MALLOC(env->allocator, (sizeof(**node))); (*node)->left = (*node)->right = NULL; (*node)->val = val; return; } if(compar(val, (*node)->val, ctx)<0) sorted_list_insert(&(*node)->left, val, ctx, compar, env); else if(compar(val, (*node)->val, ctx)>0) sorted_list_insert(&(*node)->right, val, ctx, compar, env); else; /*neglect if the same ns*/ } void sorted_list_free_container( c14n_sorted_list_t *root, const axutil_env_t *env ) { if (!root) return; if (root->left) { sorted_list_free_container(root->left, env); AXIS2_FREE(env->allocator, root->left); } if (root->right) { sorted_list_free_container(root->right, env); AXIS2_FREE(env->allocator, root->right); } /*if (root) AXIS2_FREE(env->allocator, root);*/ } void sorted_list_free( c14n_sorted_list_t *root, void(*free)(const void *, const void *), const axutil_env_t *env ) { sorted_list_iterate(root, NULL, free, env); } /* void print_str(const void* p) { printf("%s\n", (char *)p); } void printout(c14n_sorted_list_t * sorted_list) { sorted_list_iterate(sorted_list, print_str); } static int cmpstringp( const void *p1, const void *p2 ) { return strcmp((char *) p1, (char *) p2); } int main() { c14n_sorted_list_t * curr, * root; root = c14n_sorted_list_create(curr); char *c1 = "aaa"; char *c2 = "bac"; char *c3 = "aaaaaa"; char *c4 = "bab"; char *c5 = "aca"; char *c6 = "babaaa"; AXIS2_SORTED_LIST_INSERT(&root, (void *) c1, cmpstringp, env); AXIS2_SORTED_LIST_INSERT(&root, (void *) c2, cmpstringp, env); AXIS2_SORTED_LIST_INSERT(&root, (void *) c3, cmpstringp, env); AXIS2_SORTED_LIST_INSERT(&root, (void *) c4, cmpstringp, env); AXIS2_SORTED_LIST_INSERT(&root, (void *) c5, cmpstringp, env); AXIS2_SORTED_LIST_INSERT(&root, (void *) c6, cmpstringp, env); printout(root); return 0; } */ rampartc-src-1.3.0/src/omxmlsec/c14n/c14n.c0000644000076500007650000013114311202453421020054 0ustar shankarshankar /* * 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. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "c14n_sorted_list.h" #define N_C14N_DEBUG #define DEFAULT_STACK_SIZE 16 #define INIT_BUFFER_SIZE 256 #define c14n_ns_stack_push(save_stack, ctx) \ (save_stack)->head = (ctx)->ns_stack->head; \ (save_stack)->def_ns = (ctx)->ns_stack->def_ns; #define c14n_ns_stack_pop(saved_stack, ctx) \ (ctx)->ns_stack->head = (saved_stack)->head; \ (ctx)->ns_stack->def_ns = (saved_stack)->def_ns; #define c14n_ns_stack_set_default(ns, ctx) \ ((ctx)->ns_stack->def_ns = (ns)) #define c14n_ns_stack_get_default(ctx) \ ((ctx)->ns_stack->def_ns) #define C14N_GET_ROOT_NODE_FROM_DOC_OR_NODE(doc, node, ctx) \ ((doc) ? axiom_document_get_root_element((axiom_document_t *)(doc), \ (ctx)->env) : c14n_get_root_node((node), (ctx))) typedef enum { C14N_XML_C14N = 1, C14N_XML_C14N_WITH_COMMENTS, C14N_XML_EXC_C14N, C14N_XML_EXC_C14N_WITH_COMMENTS, } c14n_algo_t; typedef struct c14n_ns_stack { int head; /*index of the currnt stack TOP*/ int size; /*total size allocated for current stack*/ axiom_namespace_t **stack; /*namespace array*/ axiom_namespace_t *def_ns; /*default ns in current scope*/ } c14n_ns_stack_t; typedef struct c14n_ctx { const axutil_env_t *env; const axiom_document_t *doc; axis2_bool_t comments; axis2_char_t **outbuf; axutil_stream_t *outstream; axis2_bool_t exclusive; axis2_bool_t use_stream; const axutil_array_list_t *ns_prefixes; const axiom_node_t *node; c14n_ns_stack_t *ns_stack; } c14n_ctx_t; /*Function prototypes for ns stack*/ static c14n_ns_stack_t* c14n_ns_stack_create( const c14n_ctx_t *ctx ); static void c14n_ns_stack_free( c14n_ctx_t *ctx ); static axis2_status_t c14n_ns_stack_find( const axiom_namespace_t *ns, const c14n_ctx_t *ctx ); static axis2_status_t c14n_ns_stack_find_with_prefix_uri( const axis2_char_t *prefix, const axis2_char_t *uri, const c14n_ctx_t *ctx ); static axis2_status_t c14n_ns_stack_add( axiom_namespace_t *ns, const c14n_ctx_t *ctx ); /*ns stack implementation*/ static c14n_ns_stack_t* c14n_ns_stack_create( const c14n_ctx_t *ctx ) { c14n_ns_stack_t *ns_stack = NULL; ns_stack = (c14n_ns_stack_t *)(AXIS2_MALLOC(ctx->env->allocator, sizeof(c14n_ns_stack_t))); if (ns_stack) { ns_stack->head = 0; ns_stack->size = 0; ns_stack->stack = NULL; ns_stack->def_ns = NULL; } else AXIS2_ERROR_SET(ctx->env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE); return ns_stack; } static axis2_status_t c14n_ns_stack_add( axiom_namespace_t *ns, const c14n_ctx_t *ctx ) { c14n_ns_stack_t *ns_stack = ctx->ns_stack; if (!ns_stack->stack) { ns_stack->stack = (axiom_namespace_t **)(AXIS2_MALLOC( ctx->env->allocator, sizeof(axiom_namespace_t*) * DEFAULT_STACK_SIZE)); if (!ns_stack->stack) { AXIS2_ERROR_SET(ctx->env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE); return AXIS2_FAILURE; } else ns_stack->size = DEFAULT_STACK_SIZE; } else if (ns_stack->head >= ns_stack->size) { int size = 2 * ns_stack->size; axiom_namespace_t **tmp_stack = (axiom_namespace_t **)(AXIS2_MALLOC( ctx->env->allocator, sizeof(axiom_namespace_t*) * size)); if (tmp_stack) { /*int i = 0;*/ /* TODO:DONE use memcpy for this.*/ /*for (i=0; isize; i++) tmp_stack[i] = (ns_stack->stack)[i];*/ memcpy(tmp_stack, ns_stack, sizeof(axiom_namespace_t*) * ns_stack->size); ns_stack->size = size; AXIS2_FREE(ctx->env->allocator, ns_stack->stack); ns_stack->stack = tmp_stack; } else { AXIS2_ERROR_SET(ctx->env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE); return AXIS2_FAILURE; } } /*if memory overflow occur we won't be here*/ (ns_stack->stack)[ns_stack->head] = ns; (ns_stack->head)++; return AXIS2_SUCCESS; } /* * TODO: DONE * Find process should be changed ( if the ns has the same prefix but diff uri) * Eg: * * * * * */ static axis2_status_t c14n_ns_stack_find_with_prefix_uri( const axis2_char_t *prefix, const axis2_char_t *uri, const c14n_ctx_t *ctx ) { int i; c14n_ns_stack_t *ns_stack = ctx->ns_stack; if (ns_stack->stack) /*Is this necessary?*/ { for (i = ns_stack->head-1; i>=0; i--) { axis2_char_t *prefix_i = axiom_namespace_get_prefix( (ns_stack->stack)[i], ctx->env); if (axutil_strcmp(prefix_i, prefix) == 0) { axis2_char_t *uri_i = axiom_namespace_get_uri((ns_stack->stack)[i], ctx->env); if (axutil_strcmp(uri_i, uri) == 0) return AXIS2_SUCCESS; else return AXIS2_FALSE; } else continue; } } return AXIS2_FAILURE; } static axis2_status_t c14n_ns_stack_find( const axiom_namespace_t *ns, const c14n_ctx_t *ctx ) { return (c14n_ns_stack_find_with_prefix_uri( axiom_namespace_get_prefix((axiom_namespace_t *)ns, ctx->env), axiom_namespace_get_uri((axiom_namespace_t *)ns, ctx->env), ctx) ); } static void c14n_ns_stack_free( c14n_ctx_t *ctx ) { if (ctx->ns_stack->stack) { AXIS2_FREE(ctx->env->allocator, ctx->ns_stack->stack); ctx->ns_stack->stack=NULL; } ctx->ns_stack->stack = NULL; ctx->ns_stack->head = 0; ctx->ns_stack->size = 0; /**/ AXIS2_FREE(ctx->env->allocator, ctx->ns_stack); ctx->ns_stack = NULL; } /* Function Prototypes */ static axis2_status_t c14n_apply_on_node( const axiom_node_t *node, const c14n_ctx_t *ctx ); static axis2_status_t c14n_apply_on_element( const axiom_node_t *node, const c14n_ctx_t *ctx ); static axis2_status_t c14n_apply_on_namespace_axis( const axiom_element_t *ele, const axiom_node_t *node, const c14n_ctx_t *ctx ); static axis2_status_t c14n_apply_on_namespace_axis_exclusive( const axiom_element_t *ele, const axiom_node_t *node, const c14n_ctx_t *ctx ); static axis2_status_t c14n_apply_on_attribute_axis( const axiom_element_t *ele, const c14n_ctx_t *ctx ); static axis2_status_t c14n_apply_on_node ( const axiom_node_t *node, const c14n_ctx_t *ctx ); static void c14n_apply_on_comment ( const axiom_node_t *node, const c14n_ctx_t *ctx ); static void c14n_output( const axis2_char_t *str, const c14n_ctx_t *ctx ); static int attr_compare( const void *a1, const void *a2, const void *context ); static int ns_prefix_compare( const void *ns1, const void *ns2, const void *context ); static int ns_uri_compare( const void *ns1, const void *ns2, const void *context ); static axis2_char_t* c14n_normalize_attribute( axis2_char_t *attval, const c14n_ctx_t *ctx ); static axis2_char_t* c14n_normalize_text( axis2_char_t *text, const c14n_ctx_t *ctx ); static void c14n_apply_on_namespace( const void *ns, const void *ctx ); static axis2_bool_t c14n_need_to_declare_ns( const axiom_element_t *ele, const axiom_node_t *node, const axiom_namespace_t *ns, const c14n_ctx_t *ctx ); static axis2_bool_t c14n_ns_visibly_utilized( const axiom_element_t *ele, const axiom_node_t *node, const axiom_namespace_t *ns, const c14n_ctx_t *ctx ); static axis2_bool_t c14n_no_output_ancestor_uses_prefix( const axiom_element_t *ele, const axiom_node_t *node, const axiom_namespace_t *ns, const c14n_ctx_t *ctx ); static axiom_node_t* c14n_get_root_node( const axiom_node_t *node, const c14n_ctx_t *ctx ); static c14n_algo_t c14n_get_algorithm( const axis2_char_t* algo ); /*static axis2_bool_t c14n_in_nodeset( const axiom_node_t *node, const c14n_ctx_t *ctx ); */ /* Implementations */ static void c14n_ctx_free( c14n_ctx_t *ctx ) { if (ctx) { c14n_ns_stack_free(ctx); } AXIS2_FREE(ctx->env->allocator, ctx); } static c14n_ctx_t* c14n_init( const axutil_env_t *env, const axiom_document_t *doc, axis2_bool_t comments, axis2_char_t **outbuf, axutil_stream_t *stream, const axis2_bool_t exclusive, const axutil_array_list_t *ns_prefixes, const axis2_bool_t use_stream, const axiom_node_t *node ) { c14n_ctx_t *ctx = (c14n_ctx_t *)(AXIS2_MALLOC(env->allocator, sizeof(c14n_ctx_t))); if (ctx) { ctx->env = env; ctx->doc = doc; ctx->comments = comments; ctx->outbuf = outbuf; ctx->exclusive = exclusive; ctx->ns_prefixes = ns_prefixes; ctx->use_stream = use_stream; ctx->node = node; if (use_stream) ctx->outstream = stream; /*this should come after ctx->env=env*/ ctx->ns_stack = c14n_ns_stack_create(ctx); } else AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE); return ctx; } /*static axis2_bool_t c14n_in_nodeset( const axiom_node_t *node, const c14n_ctx_t *ctx ) { return AXIS2_SUCCESS; }*/ static axiom_node_t* c14n_get_root_node( const axiom_node_t *node, const c14n_ctx_t *ctx ) { const axiom_node_t *parent = NULL; const axiom_node_t *prv_parent = NULL; parent = node; while (parent) { prv_parent = parent; parent = axiom_node_get_parent((axiom_node_t *)parent, ctx->env); } return (axiom_node_t *)prv_parent; } static c14n_algo_t c14n_get_algorithm( const axis2_char_t* algo ) { if (axutil_strcmp(algo, OXS_HREF_XML_C14N) == 0) return C14N_XML_C14N; if (axutil_strcmp(algo, OXS_HREF_XML_C14N_WITH_COMMENTS) == 0) return C14N_XML_C14N_WITH_COMMENTS; if (axutil_strcmp(algo, OXS_HREF_XML_EXC_C14N) == 0) return C14N_XML_EXC_C14N; if (axutil_strcmp(algo, OXS_HREF_XML_EXC_C14N_WITH_COMMENTS) == 0) return C14N_XML_EXC_C14N_WITH_COMMENTS; return 0; /*c14n_algo_t enum starts with 1*/ } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_c14n_apply_stream_algo( const axutil_env_t *env, const axiom_document_t *doc, axutil_stream_t *stream, const axutil_array_list_t *ns_prefixes, const axiom_node_t *node, const axis2_char_t* algo ) { switch (c14n_get_algorithm(algo)) { case C14N_XML_C14N: return oxs_c14n_apply_stream(env, doc, AXIS2_FALSE, stream, AXIS2_FALSE, ns_prefixes, node); case C14N_XML_C14N_WITH_COMMENTS: return oxs_c14n_apply_stream(env, doc, AXIS2_TRUE, stream, AXIS2_FALSE, ns_prefixes, node); case C14N_XML_EXC_C14N: return oxs_c14n_apply_stream(env, doc, AXIS2_FALSE, stream, AXIS2_TRUE, ns_prefixes, node); case C14N_XML_EXC_C14N_WITH_COMMENTS: return oxs_c14n_apply_stream(env, doc, AXIS2_TRUE, stream, AXIS2_TRUE, ns_prefixes, node); default: /*TODO: set the error*/ return AXIS2_FAILURE; } } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_c14n_apply_algo( const axutil_env_t *env, const axiom_document_t *doc, axis2_char_t **outbuf, const axutil_array_list_t *ns_prefixes, const axiom_node_t *node, const axis2_char_t *algo ) { switch (c14n_get_algorithm(algo)) { case C14N_XML_C14N: return oxs_c14n_apply(env, doc, AXIS2_FALSE, outbuf, AXIS2_FALSE, ns_prefixes, node); case C14N_XML_C14N_WITH_COMMENTS: return oxs_c14n_apply(env, doc, AXIS2_TRUE, outbuf, AXIS2_FALSE, ns_prefixes, node); case C14N_XML_EXC_C14N: return oxs_c14n_apply(env, doc, AXIS2_FALSE, outbuf, AXIS2_TRUE, ns_prefixes, node); case C14N_XML_EXC_C14N_WITH_COMMENTS: return oxs_c14n_apply(env, doc, AXIS2_TRUE, outbuf, AXIS2_TRUE, ns_prefixes, node); default: /*TODO:set the error*/ return AXIS2_FAILURE; } } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_c14n_apply_stream( const axutil_env_t *env, const axiom_document_t *doc, axis2_bool_t comments, axutil_stream_t *stream, const axis2_bool_t exclusive, const axutil_array_list_t *ns_prefixes, const axiom_node_t *node ) { c14n_ctx_t *ctx = NULL; axiom_node_t *root_node = NULL; axis2_status_t status = AXIS2_SUCCESS; axiom_element_t *root_ele = NULL; /*axiom_children_iterator_t *child_itr = NULL;*/ axutil_stream_t *outstream = NULL; ctx = c14n_init(env, doc, comments, NULL, stream, exclusive, ns_prefixes, AXIS2_TRUE, node); if (ctx && ctx->outstream) { root_node = C14N_GET_ROOT_NODE_FROM_DOC_OR_NODE(doc, node, ctx); /*root_node = axiom_document_get_root_element((axiom_document_t *)doc, ctx->env); */ /* shouldn't the called method's document be const?*/ root_ele = axiom_node_get_data_element(root_node, env); status = c14n_apply_on_node((node ? node : root_node), ctx); if (!status) { axutil_stream_free(ctx->outstream, env); ctx->outstream = NULL; } outstream = ctx->outstream; #ifdef TEST printf("--------------\n"); axiom_namespace_t *ns1 = NULL; axiom_namespace_t *ns2 = NULL; axiom_namespace_t *ns3 = NULL; int i = 0; for (i=0; i<17; i++) { char uri[10], pfx[10]; sprintf(uri, "urn:ns%d", i); sprintf(pfx, "ns%d", i); ns1 = axiom_namespace_create(ctx->env, uri, pfx); c14n_ns_stack_add(ns1, ctx); } for (i=0; ins_stack->head; i++) { ns1 = ctx->ns_stack->stack[i]; printf("%s:%s\n", axiom_namespace_get_prefix(ns1, env), axiom_namespace_get_uri(ns1, env)); } printf("%d\n", ctx->ns_stack->size); ns1 = axiom_namespace_create(ctx->env, "urn:ns0", "ns0"); ns2 = axiom_namespace_create(ctx->env, "urn:ns10", "ns10"); ns3 = axiom_namespace_create(ctx->env, "urn:ns2", "ns3"); if (c14n_ns_stack_find(ns1, ctx)) printf("ns1 found\n"); if (c14n_ns_stack_find(ns2, ctx)) printf("ns2 found\n"); if (c14n_ns_stack_find(ns3, ctx)) printf("ns3 found\n"); #endif c14n_ctx_free(ctx); ctx = NULL; } else { AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE); if (ctx) { c14n_ctx_free(ctx); ctx = NULL; } status = AXIS2_FAILURE; } return status; /*if (status) return outstream; else return NULL;*/ } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_c14n_apply( const axutil_env_t *env, const axiom_document_t *doc, const axis2_bool_t comments, axis2_char_t **outbuf, const axis2_bool_t exclusive, const axutil_array_list_t *ns_prefixes, const axiom_node_t *node ) { axutil_stream_t *stream = axutil_stream_create_basic(env); axis2_status_t ret = oxs_c14n_apply_stream(env, doc, comments, stream, exclusive, ns_prefixes, node); *outbuf = NULL; if (!ret) { return AXIS2_FAILURE; } else { int len = axutil_stream_get_len(stream, env)+1; if (len>0) { *outbuf = (axis2_char_t *)(AXIS2_MALLOC(env->allocator, sizeof(axis2_char_t)*len)); axutil_stream_read(stream, env, *outbuf, len); axutil_stream_free(stream, env); stream = NULL; return AXIS2_SUCCESS; } else { axutil_stream_free(stream, env); stream = NULL; return AXIS2_FAILURE; } } } static axis2_status_t c14n_apply_on_text ( const axiom_node_t *node, const c14n_ctx_t *ctx ) { axiom_text_t *text = NULL; text = (axiom_text_t *)axiom_node_get_data_element((axiom_node_t *)node, ctx->env); if (text) { axis2_char_t *textval = (axis2_char_t*)axiom_text_get_text(text, ctx->env); if (textval) textval = c14n_normalize_text(textval, ctx); else /*should never occur*/ return AXIS2_FAILURE; c14n_output(textval, ctx); if (textval) { AXIS2_FREE(ctx->env->allocator, textval); textval = NULL; } } return AXIS2_SUCCESS; } static axis2_status_t c14n_apply_on_node ( const axiom_node_t *node, const c14n_ctx_t *ctx ) { /* printf("%d %d %d\n", axiom_node_get_node_type((axiom_node_t *)node, ctx->env), AXIOM_COMMENT, AXIOM_ELEMENT); */ switch (axiom_node_get_node_type((axiom_node_t *)node, ctx->env)) { case AXIOM_ELEMENT: c14n_apply_on_element(node, ctx); break; case AXIOM_TEXT: c14n_apply_on_text(node, ctx); break; case AXIOM_COMMENT: if (ctx->comments) { c14n_apply_on_comment(node, ctx); break; } case AXIOM_DOCTYPE: case AXIOM_PROCESSING_INSTRUCTION: default: ; } return AXIS2_SUCCESS; } static void c14n_apply_on_comment ( const axiom_node_t *node, const c14n_ctx_t *ctx ) { /*TODO: HACK*/ c14n_output("", ctx); } static axis2_status_t c14n_apply_on_element( const axiom_node_t *node, const c14n_ctx_t *ctx ) { axis2_status_t res = AXIS2_SUCCESS; axiom_element_t *ele = NULL; axiom_namespace_t *ns = NULL; /*axiom_children_iterator_t *child_itr = NULL;*/ c14n_ns_stack_t *save_stack = NULL; axiom_node_t *child_node = NULL; ele = (axiom_element_t *)axiom_node_get_data_element((axiom_node_t *)node, ctx->env); if (!ele) return AXIS2_FAILURE; /*should it be failure?*/ ns = axiom_element_get_namespace(ele, ctx->env, (axiom_node_t *)node); save_stack = c14n_ns_stack_create(ctx); c14n_ns_stack_push(save_stack, ctx); /*save current ns stack*/ /*print qname*/ c14n_output("<", ctx); if (ns) { axis2_char_t *prefix = axiom_namespace_get_prefix(ns, ctx->env); if (axutil_strlen(prefix) > 0) { c14n_output(prefix, ctx); c14n_output(":", ctx); } } c14n_output(axiom_element_get_localname(ele, ctx->env), ctx); if (ctx->exclusive) res = c14n_apply_on_namespace_axis_exclusive(ele, node, ctx); else res = c14n_apply_on_namespace_axis(ele, node, ctx); /* * edited the code so that the same fn does both exc and non-exc. * have to be careful here! */ if (!res) return res; res = c14n_apply_on_attribute_axis(ele, ctx); if (!res) return res; c14n_output(">", ctx); #ifdef C14N_DEBUG /*c14n_output("\n", ctx);*/ #endif /*process child elements*/ child_node = axiom_node_get_first_child((axiom_node_t *)node, ctx->env); while (child_node) { c14n_apply_on_node(child_node, ctx); child_node = axiom_node_get_next_sibling(child_node, ctx->env); } /*process child elements*/ /*child_itr = AXIOM_ELEMENT_GET_CHILDREN(ele, ctx->env, (axiom_node_t*)node); if (child_itr) { while(axiom_children_iterator_has_next(child_itr, ctx->env)) { axiom_node_t *child_node = NULL; child_node = axiom_children_iterator_next(child_itr, ctx->env); if (child_node) { c14n_apply_on_node(child_node, ctx); } } }*/ /*print qname*/ c14n_output("env); if (axutil_strlen(prefix) > 0) { c14n_output(prefix, ctx); c14n_output(":", ctx); } } c14n_output(axiom_element_get_localname(ele, ctx->env), ctx); c14n_output(">", ctx); c14n_ns_stack_pop(save_stack, ctx); /*restore to previous ns stack */ /*TODO:DONE??? save_stack free*/ /*since save_stack is used just to memorize the head of the stack, * we don't have to worry about freeing its members*/ /**/ AXIS2_FREE(ctx->env->allocator, save_stack); save_stack = NULL; #ifdef C14N_DEBUG /*c14n_output("\n", ctx);*/ #endif return res; } static int ns_uri_compare( const void *ns1, const void *ns2, const void *context ) { c14n_ctx_t *ctx = (c14n_ctx_t *)context; if (ns1 == ns2) return 0; if (!ns1) return -1; if (!ns2) return 1; return (axutil_strcmp( (const axis2_char_t *)axiom_namespace_get_uri( (axiom_namespace_t *)ns1, ctx->env), (const axis2_char_t *)axiom_namespace_get_uri( (axiom_namespace_t *)ns2, ctx->env))); } static int ns_prefix_compare( const void *ns1, const void *ns2, const void *context ) { c14n_ctx_t *ctx = (c14n_ctx_t *)context; if (ns1 == ns2) return 0; if (!ns1) return -1; if (!ns2) return 1; return (axutil_strcmp( (const axis2_char_t *)axiom_namespace_get_prefix( (axiom_namespace_t *)ns1, ctx->env), (const axis2_char_t *)axiom_namespace_get_prefix( (axiom_namespace_t *)ns2, ctx->env))); } static int attr_compare( const void *a1, const void *a2, const void *context ) { c14n_ctx_t *ctx = (c14n_ctx_t *)context; axiom_attribute_t *attr1 = NULL; axiom_attribute_t *attr2 = NULL; axiom_namespace_t *ns1 = NULL; axiom_namespace_t *ns2 = NULL; int res; if (a1 == a2) return 0; if (!a1) return -1; if (!a2) return 1; attr1 = (axiom_attribute_t *)a1; attr2 = (axiom_attribute_t *)a2; ns1 = axiom_attribute_get_namespace((axiom_attribute_t *)a1, ctx->env); ns2 = axiom_attribute_get_namespace((axiom_attribute_t *)a2, ctx->env); if (ns1 == ns2) return axutil_strcmp( (const axis2_char_t *)axiom_attribute_get_localname( (axiom_attribute_t *)a1, ctx->env), (const axis2_char_t *)axiom_attribute_get_localname( (axiom_attribute_t *)a2, ctx->env)); if (!ns1) return -1; if (!ns2) return 1; res = axutil_strcmp( axiom_namespace_get_uri(ns1, ctx->env), axiom_namespace_get_uri(ns2, ctx->env)); if (res == 0) return axutil_strcmp( (const axis2_char_t *)axiom_attribute_get_localname( (axiom_attribute_t *)a1, ctx->env), (const axis2_char_t *)axiom_attribute_get_localname( (axiom_attribute_t *)a2, ctx->env)); else return res; } static void c14n_apply_on_attribute( const void *attribute, const void *context ) { c14n_ctx_t *ctx = (c14n_ctx_t *) context; axiom_attribute_t *attr = (axiom_attribute_t *) attribute; axiom_namespace_t *ns = axiom_attribute_get_namespace(attr, ctx->env); axis2_char_t *attvalue = NULL; c14n_output(" ", ctx); if (ns) { axis2_char_t *prefix = axiom_namespace_get_prefix(ns, ctx->env); if (axutil_strlen(prefix) > 0) { c14n_output(prefix, ctx); c14n_output(":", ctx); } } c14n_output(axiom_attribute_get_localname(attr, ctx->env), ctx); c14n_output("=\"", ctx); /* TODO:DONE Normalize the text before output */ attvalue = axiom_attribute_get_value(attr, ctx->env); attvalue = c14n_normalize_attribute(attvalue, (c14n_ctx_t const *)context); c14n_output(attvalue, ctx); c14n_output("\"", ctx); if (attvalue) { AXIS2_FREE(ctx->env->allocator, attvalue); attvalue = NULL; } } static axis2_status_t c14n_apply_on_attribute_axis( const axiom_element_t *ele, const c14n_ctx_t *ctx ) { axutil_hash_t *attr_ht = NULL; axutil_hash_index_t *hi = NULL; c14n_sorted_list_t *attr_list = c14n_sorted_list_create(ctx->env); attr_ht = axiom_element_get_all_attributes((axiom_element_t *)ele, ctx->env); if(attr_ht) { for (hi = axutil_hash_first(attr_ht, ctx->env); hi; hi = axutil_hash_next(ctx->env, hi)) { void *v = NULL; axutil_hash_this(hi, NULL, NULL, &v); if (v) { C14N_SORTED_LIST_INSERT(&attr_list, v, ctx, attr_compare, ctx->env); } } C14N_SORTED_LIST_ITERATE(attr_list, ctx, c14n_apply_on_attribute, ctx->env); } /*TODO:DONE C14N_SORTED_LIST_FREE();*/ C14N_SORTED_LIST_FREE_CONTAINER(attr_list, ctx->env); return AXIS2_SUCCESS; /* TODO: Still need to add the "xml" attrs of the parents in case of doc subsets * and non-exclusive c14n * */ } static axis2_char_t* c14n_normalize_text( axis2_char_t *text, const c14n_ctx_t *ctx ) { axis2_char_t *buf = NULL; axis2_char_t *endpivot = NULL; axis2_char_t *p = NULL; axis2_char_t *old = NULL; int bufsz = INIT_BUFFER_SIZE; /* TODO:DONE a better buffer implementation */ buf = (axis2_char_t *)(AXIS2_MALLOC(ctx->env->allocator, (sizeof(axis2_char_t) * bufsz) + 10)); if (!buf) { AXIS2_ERROR_SET(ctx->env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE); return buf; } p = buf; endpivot = p + bufsz; old = text; while (*old !='\0') { if (p > endpivot) { int size = bufsz * 2; axis2_char_t *temp_buf = (axis2_char_t *)(AXIS2_MALLOC( ctx->env->allocator, sizeof(axis2_char_t) * size + 10)); if (!temp_buf) { AXIS2_ERROR_SET(ctx->env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE); return buf; } memcpy(temp_buf, buf, sizeof(axis2_char_t) * bufsz + 10); p = temp_buf + (p - buf); AXIS2_FREE(ctx->env->allocator, buf); buf = temp_buf; bufsz = size; endpivot = buf + bufsz; } switch (*old) { case '&': *p++ = '&'; *p++ = 'a'; *p++ = 'm'; *p++ = 'p'; *p++ = ';'; break; case '>': *p++ = '&'; *p++ = 'g'; *p++ = 't'; *p++ = ';'; break; case '<': *p++ = '&'; *p++ = 'l'; *p++ = 't'; *p++ = ';'; break; case '\x0D': *p++ = '&'; *p++ = '#'; *p++ = 'x'; *p++ = 'D'; *p++ = ';'; break; default: *p++ = *old; } old ++; } *p++ = '\0'; return buf; } static axis2_char_t* c14n_normalize_attribute( axis2_char_t *attval, const c14n_ctx_t *ctx ) { axis2_char_t *buf = NULL; axis2_char_t *endpivot = NULL; axis2_char_t *p = NULL; axis2_char_t *old = NULL; int bufsz = INIT_BUFFER_SIZE; /* TODO:DONE a better buffer implementation */ buf = (axis2_char_t *)(AXIS2_MALLOC(ctx->env->allocator, sizeof(axis2_char_t) * INIT_BUFFER_SIZE + 10)); if (!buf) { AXIS2_ERROR_SET(ctx->env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE); return buf; } p = buf; endpivot = buf + bufsz; old = attval; while (*old !='\0') { if (p > endpivot) { int size = bufsz * 2; axis2_char_t *temp_buf = (axis2_char_t *)(AXIS2_MALLOC( ctx->env->allocator, sizeof(axis2_char_t) * size + 10)); if (!temp_buf) { AXIS2_ERROR_SET(ctx->env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE); return buf; } memcpy(temp_buf, buf, sizeof(axis2_char_t) * bufsz + 10); p = temp_buf + (p - buf); AXIS2_FREE(ctx->env->allocator, buf); buf = temp_buf; bufsz = size; endpivot = buf + bufsz; } switch (*old) { case '&': *p++ = '&'; *p++ = 'a'; *p++ = 'm'; *p++ = 'p'; *p++ = ';'; break; case '<': *p++ = '&'; *p++ = 'l'; *p++ = 't'; *p++ = ';'; break; case '"': *p++ = '&'; *p++ = 'q'; *p++ = 'u'; *p++ = 'o'; *p++ = 't'; *p++ = ';'; break; case '\x09': *p++ = '&'; *p++ = '#'; *p++ = 'x'; *p++ = '9'; *p++ = ';'; break; case '\x0A': *p++ = '&'; *p++ = '#'; *p++ = 'x'; *p++ = 'A'; *p++ = ';'; break; case '\x0D': *p++ = '&'; *p++ = '#'; *p++ = 'x'; *p++ = 'D'; *p++ = ';'; break; default: *p++ = *old; } old ++; } *p++ = '\0'; return buf; } static axis2_status_t c14n_apply_on_namespace_axis( const axiom_element_t *ele, const axiom_node_t *node, const c14n_ctx_t *ctx ) { axutil_hash_t *ns_ht = NULL; axutil_hash_index_t *hi = NULL; c14n_sorted_list_t *out_list = c14n_sorted_list_create(ctx->env); ns_ht = axiom_element_get_namespaces((axiom_element_t *)ele, ctx->env); if(ns_ht) { for (hi = axutil_hash_first(ns_ht, ctx->env); hi; hi = axutil_hash_next(ctx->env, hi)) { void *v = NULL; axutil_hash_this(hi, NULL, NULL, &v); if (v) { axiom_namespace_t *ns = (axiom_namespace_t *) v; axis2_char_t *pfx = axiom_namespace_get_prefix(ns, ctx->env); axis2_char_t *uri = axiom_namespace_get_uri(ns, ctx->env); if (axutil_strlen(pfx) == 0) { /*process for default namespace*/ /*int nsc = ns_prefix_compare(c14n_ns_stack_get_default(ctx), ns, ctx); int len = axutil_strlen(uri);*/ if (axutil_strlen(uri) == 0) { if (c14n_ns_stack_get_default(ctx)!=NULL) { c14n_ns_stack_set_default(ns, ctx); C14N_SORTED_LIST_INSERT(&out_list, (void *)ns, ctx, ns_prefix_compare, ctx->env); } } else { axiom_namespace_t *prev_def = c14n_ns_stack_get_default(ctx); axis2_char_t *prev_def_uri = ((prev_def) ? axiom_namespace_get_uri(prev_def, ctx->env) : NULL); if (!prev_def_uri || axutil_strcmp(prev_def_uri, uri) != 0) { c14n_ns_stack_set_default(ns, ctx); C14N_SORTED_LIST_INSERT(&out_list, (void *)ns, ctx, ns_prefix_compare, ctx->env); } } } else if (!c14n_ns_stack_find(ns, ctx)) { /*non-default namespace*/ c14n_ns_stack_add(ns, ctx); C14N_SORTED_LIST_INSERT(&out_list, (void *)ns, ctx, ns_prefix_compare, ctx->env); } } } } C14N_SORTED_LIST_ITERATE(out_list, ctx, c14n_apply_on_namespace, ctx->env); C14N_SORTED_LIST_FREE_CONTAINER(out_list, ctx->env); /*TODO:DONE C14N_SORTED_LIST_FREE();*/ return AXIS2_SUCCESS; } static axis2_status_t c14n_apply_on_namespace_axis_exclusive( const axiom_element_t *ele, const axiom_node_t *node, const c14n_ctx_t *ctx ) { axutil_hash_t *ns_ht = NULL; axutil_hash_index_t *hi = NULL; axiom_node_t *pnode = NULL; axiom_element_t *pele = NULL; axiom_namespace_t *ns = NULL; c14n_sorted_list_t *out_list = c14n_sorted_list_create(ctx->env); pele = (axiom_element_t *)ele; pnode = (axiom_node_t *)node; /*treat the default namespace specially*/ ns = axiom_element_get_namespace(pele, ctx->env, pnode); if (ns) { if (axutil_strlen(axiom_namespace_get_prefix((axiom_namespace_t *)ns, ctx->env)) == 0) { axiom_namespace_t *def_ns = c14n_ns_stack_get_default(ctx); if (def_ns || axutil_strlen(axiom_namespace_get_uri( (axiom_namespace_t *)ns, ctx->env)) != 0) { if (ns_uri_compare(ns, def_ns, ctx) != 0) { c14n_ns_stack_set_default(ns, ctx); C14N_SORTED_LIST_INSERT(&out_list, (void *)ns, ctx, ns_prefix_compare, ctx->env); } } } } while (pnode) { pele = axiom_node_get_data_element((axiom_node_t *)pnode, ctx->env); ns_ht = axiom_element_get_namespaces((axiom_element_t *)pele, ctx->env); if (ns_ht) { for (hi = axutil_hash_first(ns_ht, ctx->env); hi; hi = axutil_hash_next(ctx->env, hi)) { void *v = NULL; axutil_hash_this(hi, NULL, NULL, &v); if (v) { axis2_char_t *pfx = NULL; ns = (axiom_namespace_t *) v; pfx = axiom_namespace_get_prefix(ns, ctx->env); /*axis2_char_t *uri = axiom_namespace_get_uri(ns, ctx->env);*/ if (axutil_strlen(pfx) == 0) { /* process for default namespace. * NOTE: This part was taken out of here due to the * search thruogh parent-axis * */ } else if (!c14n_ns_stack_find(ns, ctx)) { /*non-default namespace*/ if (c14n_need_to_declare_ns(ele, node, ns, ctx)) { c14n_ns_stack_add(ns, ctx); C14N_SORTED_LIST_INSERT(&out_list, (void *)ns, ctx, ns_prefix_compare, ctx->env); } } } } } pnode = axiom_node_get_parent((axiom_node_t *)pnode, ctx->env); } /*while*/ C14N_SORTED_LIST_ITERATE(out_list, ctx, c14n_apply_on_namespace , ctx->env); C14N_SORTED_LIST_FREE_CONTAINER(out_list, ctx->env); /*TODO:DONE C14N_SORTED_LIST_FREE();*/ return AXIS2_SUCCESS; } static void c14n_apply_on_namespace( const void *namespace, const void *context ) { axiom_namespace_t *ns = (axiom_namespace_t *)namespace; c14n_ctx_t *ctx = (c14n_ctx_t *)context; axis2_char_t *pfx = axiom_namespace_get_prefix(ns, ctx->env); axis2_char_t *uri = axiom_namespace_get_uri(ns, ctx->env); /*c14n_output(" *", ctx); c14n_output(axiom_namespace_to_string(ns, ctx->env), ctx); c14n_output("*", ctx);*/ if (axutil_strlen(pfx) > 0) { c14n_output(" xmlns:", ctx); c14n_output(pfx, ctx); } else c14n_output(" xmlns", ctx); c14n_output("=\"", ctx); if (axutil_strlen(uri) > 0) c14n_output(uri, ctx); c14n_output("\"", ctx); } static void c14n_output( const axis2_char_t *str, const c14n_ctx_t *ctx ) { #ifdef C14N_DEBUG printf("%s", str); #else if (ctx->use_stream) { axutil_stream_write(ctx->outstream, ctx->env, str, axutil_strlen(str)*sizeof(axis2_char_t)); } #endif } static axis2_bool_t c14n_need_to_declare_ns( const axiom_element_t *ele, const axiom_node_t *node, const axiom_namespace_t *ns, const c14n_ctx_t *ctx ) { axis2_bool_t vu = c14n_ns_visibly_utilized(ele, node, ns, ctx); if (vu || (ctx->ns_prefixes && axutil_array_list_contains( (axutil_array_list_t*)(ctx->ns_prefixes), ctx->env, (void*)(axiom_namespace_get_prefix((axiom_namespace_t*)ns, ctx->env))))) return c14n_no_output_ancestor_uses_prefix(ele, node, ns, ctx); return AXIS2_FALSE; } static axis2_bool_t c14n_ns_visibly_utilized( const axiom_element_t *ele, const axiom_node_t *node, const axiom_namespace_t *ns, const c14n_ctx_t *ctx ) { axis2_bool_t vu = AXIS2_FALSE; axiom_namespace_t *ns_ele = NULL; axis2_char_t *pfx = axiom_namespace_get_prefix((axiom_namespace_t*)ns, ctx->env); axis2_char_t *uri = axiom_namespace_get_uri((axiom_namespace_t *)ns, ctx->env); axis2_char_t *pfx_ele = NULL; axis2_char_t *uri_ele = NULL; ns_ele = axiom_element_get_namespace((axiom_element_t*)ele, ctx->env, (axiom_node_t *)node); if (ns_ele) /* return AXIS2_FALSE; TODO:check */ { pfx_ele = axiom_namespace_get_prefix(ns_ele, ctx->env); uri_ele = axiom_namespace_get_uri(ns_ele, ctx->env); } if ((axutil_strcmp(pfx, pfx_ele) == 0) && (axutil_strcmp(uri, uri_ele) == 0)) vu = AXIS2_TRUE; else { axutil_hash_t *attr_ht = axiom_element_get_all_attributes( (axiom_element_t *)ele, ctx->env); axutil_hash_index_t *hi = NULL; if (attr_ht) { for (hi = axutil_hash_first(attr_ht, ctx->env); hi; hi = axutil_hash_next(ctx->env, hi)) { void *v = NULL; axutil_hash_this(hi, NULL, NULL, &v); if (v) { axiom_attribute_t *attr = (axiom_attribute_t*)v; axiom_namespace_t *ns_attr = axiom_attribute_get_namespace( attr, ctx->env); axis2_char_t *attr_pfx = NULL; /*if in_nodelist(attr) {*/ if (ns_attr) attr_pfx = axiom_namespace_get_prefix( ns_attr, ctx->env); if (axutil_strcmp(attr_pfx, pfx) == 0) { vu = AXIS2_TRUE; if (ctx->env) AXIS2_FREE(ctx->env->allocator, hi); break; } /*}*/ } } } } return vu; } static axis2_bool_t in_nodeset( const axiom_node_t *node, const c14n_ctx_t *ctx ) { axiom_node_t *pnode = NULL; pnode = axiom_node_get_parent((axiom_node_t *)node, ctx->env); while (pnode) { if (ctx->node == pnode) return AXIS2_TRUE; pnode = axiom_node_get_parent((axiom_node_t *)pnode, ctx->env); } return AXIS2_FALSE; } static axis2_bool_t c14n_no_output_ancestor_uses_prefix( const axiom_element_t *ele, const axiom_node_t *node, const axiom_namespace_t *ns, const c14n_ctx_t *ctx ) { axis2_char_t *pfx = axiom_namespace_get_prefix((axiom_namespace_t*)ns, ctx->env); axis2_char_t *uri = axiom_namespace_get_uri((axiom_namespace_t *)ns, ctx->env); axiom_node_t *parent_node = axiom_node_get_parent((axiom_node_t *)node, ctx->env); axiom_element_t *parent_element = NULL; axiom_namespace_t *parent_ns = NULL; axis2_char_t *parent_pfx = NULL; axis2_char_t *parent_uri = NULL; /* assuming the parent of an element is always an element node in AXIOM*/ while (parent_node) { axutil_hash_index_t *hi = NULL; axutil_hash_t *attr_ht = NULL; /* TODO: * HACK: since we only use a single node as the subset * the following hack should work instead of a more * general in_nodest()*/ if (!in_nodeset(parent_node, ctx)) { /*we reached a node beyond the nodeset, * so the prefix is not used*/ return AXIS2_TRUE; } /* if (in_nodeset(parent)){*/ parent_element = axiom_node_get_data_element( (axiom_node_t *)parent_node, ctx->env); parent_ns = axiom_element_get_namespace((axiom_element_t *) parent_element, ctx->env, (axiom_node_t *)parent_node); if (parent_ns) { parent_pfx = axiom_namespace_get_prefix((axiom_namespace_t *)parent_ns, ctx->env); if (axutil_strcmp(pfx, parent_pfx) == 0) { parent_uri = axiom_namespace_get_uri((axiom_namespace_t*)parent_ns, ctx->env); return (!(axutil_strcmp(uri, parent_uri) == 0)); } } attr_ht = axiom_element_get_all_attributes( (axiom_element_t *)parent_element, ctx->env); if (attr_ht) { for (hi = axutil_hash_first(attr_ht, ctx->env); hi; hi = axutil_hash_next(ctx->env, hi)) { void *v = NULL; axutil_hash_this(hi, NULL, NULL, &v); if (v) { axiom_attribute_t *attr = (axiom_attribute_t*)v; axiom_namespace_t *attr_ns = axiom_attribute_get_namespace( attr, ctx->env); axis2_char_t *attr_pfx = NULL; axis2_char_t *attr_uri = NULL; if (attr_ns) { attr_pfx = axiom_namespace_get_prefix( attr_ns, ctx->env); attr_uri = axiom_namespace_get_uri(attr_ns, ctx->env); if (axutil_strcmp(attr_pfx, pfx) == 0) return (!(axutil_strcmp(attr_uri, uri) == 0)); /*test for this case*/ } } } } /*}*/ parent_node = axiom_node_get_parent((axiom_node_t *)parent_node, ctx->env); } return AXIS2_TRUE; } rampartc-src-1.3.0/src/omxmlsec/c14n/Makefile.in0000644000076500007650000003261611202453550021220 0ustar shankarshankar# Makefile.in generated by automake 1.10.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = src/omxmlsec/c14n DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) liboxsc14n_la_LIBADD = am_liboxsc14n_la_OBJECTS = c14n.lo sorted_list.lo liboxsc14n_la_OBJECTS = $(am_liboxsc14n_la_OBJECTS) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = $(liboxsc14n_la_SOURCES) DIST_SOURCES = $(liboxsc14n_la_SOURCES) HEADERS = $(noinst_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ AXIOMINC = @AXIOMINC@ AXIS2INC = @AXIS2INC@ AXIS2LIB = @AXIS2LIB@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NEETHIINC = @NEETHIINC@ OBJEXT = @OBJEXT@ OPENSSLINC = @OPENSSLINC@ OPENSSLLIB = @OPENSSLLIB@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UTILINC = @UTILINC@ VERSION = @VERSION@ VERSION_NO = @VERSION_NO@ XMLSCHEMAINC = @XMLSCHEMAINC@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ noinst_LTLIBRARIES = liboxsc14n.la noinst_HEADERS = c14n_sorted_list.h liboxsc14n_la_SOURCES = c14n.c \ sorted_list.c INCLUDES = -I ../../../include \ @OPENSSLINC@ \ @UTILINC@ \ @AXIOMINC@ \ @AXIS2INC@ all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/omxmlsec/c14n/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu src/omxmlsec/c14n/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ test "$$dir" != "$$p" || dir=.; \ echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done liboxsc14n.la: $(liboxsc14n_la_OBJECTS) $(liboxsc14n_la_DEPENDENCIES) $(LINK) $(liboxsc14n_la_OBJECTS) $(liboxsc14n_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/c14n.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sorted_list.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) $(HEADERS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-exec-am: install-html: install-html-am install-info: install-info-am install-man: install-pdf: install-pdf-am install-ps: install-ps-am installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: rampartc-src-1.3.0/src/omxmlsec/asym_ctx.c0000644000076500007650000001243511202453422020374 0ustar shankarshankar/* * 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. */ #include #include #include #include #include struct oxs_asym_ctx_t { axis2_char_t *algorithm; axis2_char_t *st_ref_pattern; oxs_asym_ctx_operation_t operation; oxs_x509_cert_t *certificate; openssl_pkey_t *private_key; }; /*Public functions*/ AXIS2_EXTERN oxs_asym_ctx_t *AXIS2_CALL oxs_asym_ctx_create(const axutil_env_t *env) { oxs_asym_ctx_t *asym_ctx = NULL; AXIS2_ENV_CHECK(env, NULL); asym_ctx = AXIS2_MALLOC(env->allocator, sizeof(oxs_asym_ctx_t)); if (!asym_ctx) { AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE); return NULL; } asym_ctx->algorithm = NULL; asym_ctx->st_ref_pattern = NULL; asym_ctx->operation = -1; asym_ctx->certificate = NULL; asym_ctx->private_key = NULL; return asym_ctx; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_asym_ctx_free(oxs_asym_ctx_t *asym_ctx, const axutil_env_t *env) { if (asym_ctx->algorithm) { AXIS2_FREE(env->allocator, asym_ctx->algorithm); asym_ctx->algorithm = NULL; } if (asym_ctx->st_ref_pattern) { AXIS2_FREE(env->allocator, asym_ctx->st_ref_pattern); asym_ctx->st_ref_pattern = NULL; } /** * in current impleemtnation we set the certificate found in the signature processing * to rampart context. Because of that rampart context must free the cert. But have to * fix the free logic when we use certificate directly from file. */ /*if (asym_ctx->certificate) { oxs_x509_cert_free(asym_ctx->certificate, env); asym_ctx->certificate = NULL; }*/ if (asym_ctx->private_key) { openssl_pkey_free(asym_ctx->private_key, env); asym_ctx->private_key = NULL; } AXIS2_FREE(env->allocator, asym_ctx); asym_ctx = NULL; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_asym_ctx_get_algorithm( const oxs_asym_ctx_t *asym_ctx, const axutil_env_t *env) { return asym_ctx->algorithm; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_asym_ctx_get_st_ref_pattern( const oxs_asym_ctx_t *asym_ctx, const axutil_env_t *env) { return asym_ctx->st_ref_pattern; } AXIS2_EXTERN oxs_asym_ctx_operation_t AXIS2_CALL oxs_asym_ctx_get_operation( const oxs_asym_ctx_t *asym_ctx, const axutil_env_t *env) { return asym_ctx->operation; } AXIS2_EXTERN openssl_pkey_t *AXIS2_CALL oxs_asym_ctx_get_private_key( const oxs_asym_ctx_t *asym_ctx, const axutil_env_t *env) { return asym_ctx->private_key; } AXIS2_EXTERN oxs_x509_cert_t *AXIS2_CALL oxs_asym_ctx_get_certificate( const oxs_asym_ctx_t *asym_ctx, const axutil_env_t *env) { return asym_ctx->certificate; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_asym_ctx_set_algorithm( oxs_asym_ctx_t *asym_ctx, const axutil_env_t *env, axis2_char_t *algorithm) { if (asym_ctx->algorithm) { AXIS2_FREE(env->allocator, asym_ctx->algorithm); asym_ctx->algorithm = NULL; } asym_ctx->algorithm = axutil_strdup(env, algorithm); return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_asym_ctx_set_st_ref_pattern( oxs_asym_ctx_t *asym_ctx, const axutil_env_t *env, axis2_char_t *st_ref_pattern) { if (asym_ctx->st_ref_pattern) { AXIS2_FREE(env->allocator, asym_ctx->st_ref_pattern); asym_ctx->st_ref_pattern = NULL; } asym_ctx->st_ref_pattern = axutil_strdup(env, st_ref_pattern); return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_asym_ctx_set_operation( oxs_asym_ctx_t *asym_ctx, const axutil_env_t *env, oxs_asym_ctx_operation_t operation) { asym_ctx->operation = operation; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_asym_ctx_set_certificate( oxs_asym_ctx_t *asym_ctx, const axutil_env_t *env, oxs_x509_cert_t *certificate) { if (asym_ctx->certificate) { oxs_x509_cert_free(asym_ctx->certificate, env); asym_ctx->certificate = NULL; } asym_ctx->certificate = certificate; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_asym_ctx_set_private_key( oxs_asym_ctx_t *asym_ctx, const axutil_env_t *env, openssl_pkey_t *private_key) { if (asym_ctx->private_key) { openssl_pkey_free(asym_ctx->private_key, env); asym_ctx->private_key = NULL; } asym_ctx->private_key = private_key; return AXIS2_SUCCESS; } rampartc-src-1.3.0/src/omxmlsec/buffer.c0000644000076500007650000002426111202453422020016 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include #include struct oxs_buffer { unsigned char* data; unsigned int size; unsigned int max_size; oxs_AllocMode alloc_mode; }; /******************** end of function headers *****************/ AXIS2_EXTERN oxs_buffer_t *AXIS2_CALL oxs_buffer_create(const axutil_env_t *env) { oxs_buffer_t *buffer = NULL; axis2_status_t status = AXIS2_FAILURE; AXIS2_ENV_CHECK(env, NULL); buffer = (oxs_buffer_t*)AXIS2_MALLOC(env->allocator, sizeof(oxs_buffer_t)); if (!buffer) { AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE); return NULL; } buffer->data = NULL; buffer->size = 0; buffer->max_size = 0; buffer->alloc_mode = oxs_alloc_mode_double; status = oxs_buffer_set_max_size(buffer, env, OXS_BUFFER_INITIAL_SIZE); if (status == AXIS2_FAILURE) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_DEFAULT, "oxs_buffer_set_max_size"); AXIS2_FREE(env->allocator, buffer); return NULL; } return buffer; } AXIS2_EXTERN oxs_buffer_t *AXIS2_CALL oxs_buffer_dup(oxs_buffer_t *buffer, const axutil_env_t *env) { oxs_buffer_t *buf = NULL; axis2_status_t status = AXIS2_FAILURE; AXIS2_ENV_CHECK(env, NULL); buf = oxs_buffer_create(env); status = oxs_buffer_populate(buf, env, oxs_buffer_get_data(buffer, env), oxs_buffer_get_size(buffer, env)); return buf; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_buffer_free( oxs_buffer_t *buffer, const axutil_env_t *env ) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); if (buffer->data) { AXIS2_FREE(env->allocator, buffer->data); buffer->data = NULL; } AXIS2_FREE(env->allocator, buffer); buffer = NULL; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_buffer_remove_head( oxs_buffer_t *buffer, const axutil_env_t *env, int size ) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); /*If the size to be removed is less than the buffer size*/ if (size < buffer->size) { if (!buffer->data) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_INVALID_DATA, "oxs_buffer_remove_head failed. data is NULL"); return AXIS2_FAILURE; } buffer->size -= size; memmove(buffer->data, buffer->data + size, buffer->size); } else { buffer->size = 0; } /*If the buffer size is less than the max_size.*/ if (buffer->size < buffer->max_size) { if (!buffer->data) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_INVALID_DATA, "oxs_buffer_remove_head failed"); return AXIS2_FAILURE; } memset(buffer->data + buffer->size, 0, buffer->max_size - buffer->size); } return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_buffer_remove_tail( oxs_buffer_t *buffer, const axutil_env_t *env, int size ) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); if (size < buffer->size) { buffer->size -= size; } else { buffer->size = 0; } if (buffer->size < buffer->max_size) { if (buffer->data) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_INVALID_DATA, ""); return AXIS2_FAILURE; } memset(buffer->data + buffer->size, 0, buffer->max_size - buffer->size); } return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_buffer_populate( oxs_buffer_t *buffer, const axutil_env_t *env, unsigned char *data, int size ) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); if (size > 0) { oxs_buffer_set_max_size(buffer, env, size); if (!data) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_INVALID_DATA, "data is NULL"); return AXIS2_FAILURE; } memcpy(buffer->data, data, size); buffer->size = size; } return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_buffer_append( oxs_buffer_t *buffer, const axutil_env_t *env, unsigned char *data, int size ) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); if (size > 0) { oxs_buffer_set_max_size(buffer, env, buffer->size + size); if (!data) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_INVALID_DATA, "data is NULL"); return AXIS2_FAILURE; } memcpy(buffer->data + buffer->size, data, size); buffer->size += size; } return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_buffer_prepend( oxs_buffer_t *buffer, const axutil_env_t *env, unsigned char *data, int size ) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); if (size > 0) { if (!data) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_INVALID_DATA, "Passed data is NULL"); return AXIS2_FAILURE; } buffer->max_size = buffer->size + size; memmove(buffer->data + size, buffer->data, buffer->size); memcpy(buffer->data, data, size); buffer->size += size; } return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_buffer_read_file( oxs_buffer_t *buffer, const axutil_env_t *env, const axis2_char_t *filename ) { unsigned char fbuffer[1024]; FILE* f; int len; axis2_status_t status = AXIS2_FAILURE; AXIS2_ENV_CHECK(env, AXIS2_FAILURE); f = fopen(filename, "rb"); if (f == NULL) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_INVALID_DATA, ""); return AXIS2_FAILURE; } while (1) { len = fread(fbuffer, 1, sizeof(fbuffer), f); if (len == 0) { break; /*Stop reading*/ } else if (len < 0) { fclose(f); return AXIS2_FAILURE; } status = oxs_buffer_append(buffer, env, fbuffer, len); if (status == AXIS2_FAILURE) { fclose(f); oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_INVALID_DATA, ""); return AXIS2_FAILURE; } /*Alright so far everything is fine. So let's close the output*/ fclose(f); return AXIS2_SUCCESS; }/*End of while*/ return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_buffer_set_size( oxs_buffer_t *buffer, const axutil_env_t *env, int size ) { axis2_status_t status = AXIS2_FAILURE; AXIS2_ENV_CHECK(env, AXIS2_FAILURE); /*First we need to make sure that the max size has a value greater or equal value*/ status = oxs_buffer_set_max_size(buffer, env, size); if (status == AXIS2_FAILURE) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_INVALID_DATA, "oxs_buffer_set_max_size failed"); return AXIS2_FAILURE; } /*Now set the size*/ buffer->size = size; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_buffer_set_max_size( oxs_buffer_t *buffer, const axutil_env_t *env, int size ) { unsigned char* new_data; unsigned int new_size = 0; AXIS2_ENV_CHECK(env, AXIS2_FAILURE); if (size <= buffer->max_size) { return AXIS2_SUCCESS; } switch (buffer->alloc_mode) { case oxs_alloc_mode_exact: new_size = size + 8; break; case oxs_alloc_mode_double: new_size = 2 * size + 32; break; } if (new_size < OXS_BUFFER_INITIAL_SIZE) { new_size = OXS_BUFFER_INITIAL_SIZE; } /*If there are data already then use realloc instead of malloc*/ if (buffer->data) { #if 0 new_data = (unsigned char*)AXIS2_REALLOC(env->allocator, buffer_impl->data, new_size); #else /*Assign extra amnt of memory*/ new_data = (unsigned char*)AXIS2_MALLOC(env->allocator, new_size + buffer->max_size); /*Copy to newdata*/ new_data = memcpy(new_data, buffer->data, buffer->size); AXIS2_FREE(env->allocator, buffer->data); buffer->data = NULL; #endif } else { new_data = (unsigned char*)AXIS2_MALLOC(env->allocator, new_size); } if (new_data == NULL) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_INVALID_DATA, ""); return AXIS2_FAILURE; } buffer->data = new_data; buffer->max_size = new_size; if (buffer->size < buffer->max_size) { if (buffer->data == NULL) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_INVALID_DATA, ""); return AXIS2_FAILURE; } memset(buffer->data + buffer->size, 0, buffer->max_size - buffer->size); } return AXIS2_SUCCESS; } AXIS2_EXTERN unsigned char* AXIS2_CALL oxs_buffer_get_data( oxs_buffer_t *buffer, const axutil_env_t *env ) { AXIS2_ENV_CHECK(env, NULL); return buffer->data; } AXIS2_EXTERN int AXIS2_CALL oxs_buffer_get_size( oxs_buffer_t *buffer, const axutil_env_t *env ) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); return buffer->size; } AXIS2_EXTERN int AXIS2_CALL oxs_buffer_get_max_size( oxs_buffer_t *buffer, const axutil_env_t *env ) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); return buffer->max_size; } rampartc-src-1.3.0/src/omxmlsec/tokens/0000755000076500007650000000000011202454476017711 5ustar shankarshankarrampartc-src-1.3.0/src/omxmlsec/tokens/token_signature_value.c0000644000076500007650000000377311202453421024451 0ustar shankarshankar/* * 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. */ #include AXIS2_EXTERN axis2_char_t* AXIS2_CALL oxs_token_get_signature_value( const axutil_env_t *env, axiom_node_t *sv_node) { axis2_char_t *sv = NULL; /* TODO Verification */ sv = (axis2_char_t*)oxs_axiom_get_node_content(env, sv_node); return sv; } /** * Creates element */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL oxs_token_build_signature_value_element( const axutil_env_t *env, axiom_node_t *parent, axis2_char_t* signature_val) { axiom_node_t *signature_value_node = NULL; axiom_element_t *signature_value_ele = NULL; axis2_status_t ret; axiom_namespace_t *ns_obj = NULL; ns_obj = axiom_namespace_create(env, OXS_DSIG_NS, OXS_DS); signature_value_ele = axiom_element_create( env, parent, OXS_NODE_SIGNATURE_VALUE, ns_obj, &signature_value_node); if(!signature_value_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error creating signature value element."); axiom_namespace_free(ns_obj, env); return NULL; } if (signature_val) { ret = axiom_element_set_text(signature_value_ele, env, signature_val, signature_value_node); } return signature_value_node; } rampartc-src-1.3.0/src/omxmlsec/tokens/token_x509_certificate.c0000644000076500007650000000402411202453421024311 0ustar shankarshankar/* * 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. */ #include AXIS2_EXTERN axis2_char_t* AXIS2_CALL oxs_token_get_x509_certificate( const axutil_env_t *env, axiom_node_t *sv_node) { axis2_char_t *sv = NULL; /* TODO Verification */ sv = (axis2_char_t*)oxs_axiom_get_node_content(env, sv_node); return sv; } /** * Creates element */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL oxs_token_build_x509_certificate_element( const axutil_env_t *env, axiom_node_t *parent, axis2_char_t* cert_data) { axiom_node_t *x509_certificate_node = NULL; axiom_element_t *x509_certificate_ele = NULL; axis2_status_t ret; axiom_namespace_t *ns_obj = NULL; ns_obj = axiom_namespace_create(env, OXS_DSIG_NS, OXS_DS); x509_certificate_ele = axiom_element_create( env, parent, OXS_NODE_X509_CERTIFICATE, ns_obj, &x509_certificate_node); if(!x509_certificate_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error creating %s element", OXS_NODE_X509_CERTIFICATE); axiom_namespace_free(ns_obj, env); return NULL; } if (cert_data) { ret = axiom_element_set_text(x509_certificate_ele, env, cert_data, x509_certificate_node); } return x509_certificate_node; } rampartc-src-1.3.0/src/omxmlsec/tokens/token_offset.c0000644000076500007650000000466011202453421022536 0ustar shankarshankar/* * 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. */ #include AXIS2_EXTERN int AXIS2_CALL oxs_token_get_offset_value( const axutil_env_t *env, axiom_node_t *offset_node) { axis2_char_t *value = NULL; int offset = -1; value = (axis2_char_t*)oxs_axiom_get_node_content(env, offset_node); offset = axutil_atoi(value); return offset; } /** * Creates element */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL oxs_token_build_offset_element( const axutil_env_t *env, axiom_node_t *parent, int offset, axis2_char_t *wsc_ns_uri) { axiom_node_t *offset_node = NULL; axiom_element_t *offset_ele = NULL; axis2_status_t ret; axiom_namespace_t *ns_obj = NULL; axis2_char_t* offset_val = NULL; if(!wsc_ns_uri) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error creating %s Token element. SecConv namespace uri is not valid.", OXS_NODE_OFFSET); return NULL; } ns_obj = axiom_namespace_create(env, wsc_ns_uri, OXS_WSC); offset_ele = axiom_element_create(env, parent, OXS_NODE_OFFSET, ns_obj, &offset_node); if (!offset_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error creating %s Token element.", OXS_NODE_OFFSET); axiom_namespace_free(ns_obj, env); return NULL; } if(offset > -1) { offset_val = (axis2_char_t *) AXIS2_MALLOC(env->allocator, sizeof(axis2_char_t) * 32); sprintf(offset_val, "%d", offset ); } if (offset_val) { ret = axiom_element_set_text(offset_ele, env, offset_val, offset_node); AXIS2_FREE(env->allocator, offset_val); } return offset_node; } rampartc-src-1.3.0/src/omxmlsec/tokens/token_encrypted_header.c0000644000076500007650000000343111202453421024550 0ustar shankarshankar/* * 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. */ #include /** * Creates element */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL oxs_token_build_enc_header_element( const axutil_env_t *env, axiom_node_t *parent, axis2_char_t* id) { axiom_node_t *enc_header_node = NULL; axiom_element_t *enc_header_ele = NULL; axiom_attribute_t *id_attr = NULL; axiom_namespace_t *ns_obj = NULL; int ret; ns_obj = axiom_namespace_create(env, OXS_WSSE_11_XMLNS, OXS_WSSE_11); enc_header_ele = axiom_element_create( env, parent, OXS_NODE_ENCRYPTED_HEADER, ns_obj, &enc_header_node); if(!enc_header_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error creating EncryptedHeader element."); axiom_namespace_free(ns_obj, env); return NULL; } if(id) { id_attr = axiom_attribute_create(env, OXS_ATTR_ID, id, NULL); ret = axiom_element_add_attribute(enc_header_ele, env, id_attr, enc_header_node); } return enc_header_node; } rampartc-src-1.3.0/src/omxmlsec/tokens/token_generation.c0000644000076500007650000000435511202453421023404 0ustar shankarshankar/* * 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. */ #include AXIS2_EXTERN axis2_char_t* AXIS2_CALL oxs_token_get_generation_value( const axutil_env_t *env, axiom_node_t *generation_node) { axis2_char_t *value = NULL; value = (axis2_char_t*)oxs_axiom_get_node_content(env, generation_node); return value; } /** * Creates element */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL oxs_token_build_generation_element( const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *generation_val, axis2_char_t *wsc_ns_uri) { axiom_node_t *generation_node = NULL; axiom_element_t *generation_ele = NULL; axis2_status_t ret; axiom_namespace_t *ns_obj = NULL; if(!wsc_ns_uri) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error creating %s Token element. SecConv namespace uri is not valid.", OXS_NODE_GENERATION); return NULL; } ns_obj = axiom_namespace_create(env, wsc_ns_uri, OXS_WSC); generation_ele = axiom_element_create( env, parent, OXS_NODE_GENERATION, ns_obj, &generation_node); if (!generation_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error creating %s Token element.", OXS_NODE_GENERATION); axiom_namespace_free(ns_obj, env); return NULL; } if (generation_val) { ret = axiom_element_set_text(generation_ele, env, generation_val, generation_node); } return generation_node; } rampartc-src-1.3.0/src/omxmlsec/tokens/token_key_name.c0000644000076500007650000000314711202453421023037 0ustar shankarshankar/* * 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. */ #include /** * Creates element */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL oxs_token_build_key_name_element( const axutil_env_t *env, axiom_node_t *parent, axis2_char_t* key_name_val) { axiom_node_t *key_name_node = NULL; axiom_element_t *key_name_ele = NULL; axis2_status_t ret; axiom_namespace_t *ns_obj = NULL; ns_obj = axiom_namespace_create(env, OXS_DSIG_NS, OXS_DS); key_name_ele = axiom_element_create(env, parent, OXS_NODE_KEY_NAME, ns_obj, &key_name_node); if(!key_name_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error creating KeyName element."); axiom_namespace_free(ns_obj, env); return NULL; } ret = axiom_element_set_text(key_name_ele, env, key_name_val, key_name_node); return key_name_node; } rampartc-src-1.3.0/src/omxmlsec/tokens/token_transform.c0000644000076500007650000000765711202453421023274 0ustar shankarshankar/* * 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. */ #include /** * Creates element */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL oxs_token_build_transform_element( const axutil_env_t *env, axiom_node_t *parent, axis2_char_t* algorithm) { axiom_node_t *transform_node = NULL, *tr_para_node = NULL, *tr_can_node = NULL; axiom_element_t *transform_ele = NULL, *tr_para_ele = NULL, *tr_can_ele = NULL; axiom_attribute_t *algo_attr = NULL; int ret; axiom_namespace_t *ns_obj = NULL; ns_obj = axiom_namespace_create(env, OXS_DSIG_NS, OXS_DS); transform_ele = axiom_element_create(env, parent, OXS_NODE_TRANSFORM, ns_obj, &transform_node); if (!transform_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error creating transform element."); axiom_namespace_free(ns_obj, env); return NULL; } /* If transform algorithm is NULL then use the default */ if(!algorithm) { algorithm = (axis2_char_t*)OXS_HREF_XML_EXC_C14N; } algo_attr = axiom_attribute_create(env, OXS_ATTR_ALGORITHM, algorithm, NULL); ret = axiom_element_add_attribute(transform_ele, env, algo_attr, transform_node); if (!axutil_strcmp(algorithm, OXS_HREF_TRANSFORM_STR_TRANSFORM)) { ns_obj = axiom_namespace_create(env, OXS_WSSE_NS, OXS_WSSE); tr_para_ele = axiom_element_create( env, NULL, OXS_NODE_TRANSFORMATIONPARAMETERS, ns_obj, &tr_para_node); if (!tr_para_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error creating TransformationParameters element."); axiom_namespace_free(ns_obj, env); return NULL; } ns_obj = axiom_namespace_create(env, OXS_DSIG_NS, OXS_DS); tr_can_ele = axiom_element_create( env, tr_para_node, OXS_NODE_CANONICALIZATION_METHOD, ns_obj, &tr_can_node); if (!tr_can_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error creating CanonicalizationMethod element."); axiom_namespace_free(ns_obj, env); return NULL; } algo_attr = axiom_attribute_create(env, OXS_ATTR_ALGORITHM, OXS_HREF_XML_EXC_C14N, NULL); axiom_element_add_attribute(tr_can_ele, env, algo_attr, tr_can_node); axiom_node_add_child(transform_node, env, tr_para_node); } return transform_node; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_token_get_transform( const axutil_env_t *env, axiom_node_t *transform_node) { axis2_char_t *transform = NULL; axiom_element_t *transform_ele = NULL; if(!transform_node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error retrieving digest method node."); return NULL; } transform_ele = axiom_node_get_data_element(transform_node, env); if (!transform_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error retrieving digest method element."); return NULL; } transform = axiom_element_get_attribute_value_by_name(transform_ele, env, OXS_ATTR_ALGORITHM); if((!transform) ||(!axutil_strcmp("", transform))) { return NULL; } return transform; } rampartc-src-1.3.0/src/omxmlsec/tokens/token_x509_issuer_serial.c0000644000076500007650000000467511202453421024714 0ustar shankarshankar/* * 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. */ #include /** * Creates element with issuer name and serial number */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL oxs_token_build_x509_issuer_serial_with_data( const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *issuer_name, axis2_char_t *serial_number) { axiom_node_t *x509_issuer_serial_node = NULL; axiom_node_t *x509_issuer_name_node = NULL; axiom_node_t *x509_serial_number_node = NULL; x509_issuer_serial_node = oxs_token_build_x509_issuer_serial_element(env, parent); if(issuer_name) { x509_issuer_name_node = oxs_token_build_issuer_name_element( env, x509_issuer_serial_node, issuer_name); } if(serial_number) { x509_serial_number_node = oxs_token_build_serial_number_element( env, x509_issuer_serial_node, serial_number); } return x509_issuer_serial_node; } /** * Creates element */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL oxs_token_build_x509_issuer_serial_element( const axutil_env_t *env, axiom_node_t *parent) { axiom_node_t *x509_issuer_serial_node = NULL; axiom_element_t *x509_issuer_serial_ele = NULL; axiom_namespace_t *ns_obj = NULL; ns_obj = axiom_namespace_create(env, OXS_DSIG_NS, OXS_DS); x509_issuer_serial_ele = axiom_element_create( env, parent, OXS_NODE_X509_ISSUER_SERIAL, ns_obj, &x509_issuer_serial_node); if(!x509_issuer_serial_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error creating X509IssuerSerial element."); axiom_namespace_free(ns_obj, env); return NULL; } return x509_issuer_serial_node; } rampartc-src-1.3.0/src/omxmlsec/tokens/token_encrypted_key.c0000644000076500007650000000335711202453421024117 0ustar shankarshankar/* * 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. */ #include /** * Creates element */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL oxs_token_build_encrypted_key_element( const axutil_env_t *env, axiom_node_t *parent) { axiom_node_t *encrypted_key_node = NULL; axiom_element_t *encrypted_key_ele = NULL; axiom_namespace_t *ns_obj = NULL; ns_obj = axiom_namespace_create(env, OXS_ENC_NS, OXS_XENC); encrypted_key_ele = axiom_element_create( env, parent, OXS_NODE_ENCRYPTED_KEY, ns_obj, &encrypted_key_node); if(!encrypted_key_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error creating encrypted key element."); axiom_namespace_free(ns_obj, env); return NULL; } return encrypted_key_node; } AXIS2_EXTERN axiom_node_t* AXIS2_CALL oxs_token_get_encrypted_key_node( const axutil_env_t *env, axiom_node_t *parent) { axiom_node_t *enc_key_node = NULL; /* TODO */ return enc_key_node; } rampartc-src-1.3.0/src/omxmlsec/tokens/token_security_token_reference.c0000644000076500007650000000366611202453421026342 0ustar shankarshankar/* * 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. */ #include AXIS2_EXTERN axiom_node_t* AXIS2_CALL oxs_token_build_security_token_reference_element( const axutil_env_t *env, axiom_node_t *parent) { axiom_node_t *security_token_reference_node = NULL; axiom_element_t *security_token_reference_ele = NULL; axiom_namespace_t *ns_obj = NULL; ns_obj = axiom_namespace_create(env, OXS_WSSE_XMLNS, OXS_WSSE); /* We especially pass parent=NULL in order to add WSSE namespace to the SECURITY_TOKEN_REFRENCE * node. Otherwise if we encrypt the signature , the dercyption fails to build the node as the * namespace is not within the doc */ security_token_reference_ele = axiom_element_create( env, NULL, OXS_NODE_SECURITY_TOKEN_REFRENCE, ns_obj, &security_token_reference_node); if(!security_token_reference_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error creating SecurityTokenReference element."); axiom_namespace_free(ns_obj, env); return NULL; } if(parent) { axiom_node_add_child(parent, env, security_token_reference_node); } return security_token_reference_node; } rampartc-src-1.3.0/src/omxmlsec/tokens/token_length.c0000644000076500007650000000460411202453421022527 0ustar shankarshankar/* * 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. */ #include AXIS2_EXTERN int AXIS2_CALL oxs_token_get_length_value( const axutil_env_t *env, axiom_node_t *length_node) { axis2_char_t *value = NULL; value = (axis2_char_t*)oxs_axiom_get_node_content(env, length_node); return axutil_atoi(value); } /** * Creates element */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL oxs_token_build_length_element( const axutil_env_t *env, axiom_node_t *parent, int length, axis2_char_t *wsc_ns_uri) { axiom_node_t *length_node = NULL; axiom_element_t *length_ele = NULL; axis2_status_t ret; axiom_namespace_t *ns_obj = NULL; axis2_char_t *length_val = NULL; if(!wsc_ns_uri) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error creating %s Token element. SecConv namespace uri is not valid.", OXS_NODE_LENGTH); return NULL; } ns_obj = axiom_namespace_create(env, wsc_ns_uri, OXS_WSC); length_ele = axiom_element_create(env, parent, OXS_NODE_LENGTH, ns_obj, &length_node); if(!length_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error creating %s Token element.", OXS_NODE_LENGTH); axiom_namespace_free(ns_obj, env); return NULL; } if(length > 0) { length_val = (axis2_char_t *) AXIS2_MALLOC(env->allocator, sizeof(axis2_char_t) * 32); sprintf(length_val, "%d", length ); } if(length_val) { ret = axiom_element_set_text(length_ele, env, length_val, length_node); AXIS2_FREE(env->allocator, length_val); } return length_node; } rampartc-src-1.3.0/src/omxmlsec/tokens/Makefile.am0000644000076500007650000000243211202453421021733 0ustar shankarshankarnoinst_LTLIBRARIES =liboxstokens.la liboxstokens_la_SOURCES = token_encrypted_data.c token_encryption_method.c token_cipher_value.c \ token_cipher_data.c token_key_name.c token_key_info.c token_binary_security_token.c \ token_reference_list.c token_data_reference.c token_encrypted_key.c \ token_key_identifier.c token_x509_data.c token_x509_issuer_serial.c\ token_x509_issuer_name.c token_x509_serial_number.c token_security_token_reference.c \ token_embedded.c token_reference.c token_signature_value.c token_signed_info.c \ token_c14n_method.c token_signature_method.c token_digest_method.c token_digest_value.c \ token_transform.c token_transforms.c token_signature.c token_ds_reference.c \ token_x509_certificate.c token_signature_confirmation.c token_derived_key_token.c \ token_properties.c token_generation.c token_length.c token_nonce.c token_offset.c token_label.c \ token_encrypted_header.c token_saml.c INCLUDES = -I$(top_builddir)/include \ -I ../../../../util/include \ -I ../../../../include \ -I ../../../../axiom/include \ @OPENSSLINC@ \ @UTILINC@ \ @AXIOMINC@ \ @AXIS2INC@ rampartc-src-1.3.0/src/omxmlsec/tokens/token_embedded.c0000644000076500007650000000450311202453421022775 0ustar shankarshankar/* * 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. */ #include /** * Creates element */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL oxs_token_build_embedded_element( const axutil_env_t *env, axiom_node_t *parent, axis2_char_t* id) { axiom_node_t *embedded_node = NULL; axiom_element_t *embedded_ele = NULL; axiom_attribute_t *id_attr = NULL; int ret; axiom_namespace_t *ns_obj = NULL; ns_obj = axiom_namespace_create(env, OXS_WSSE_NS, OXS_WSSE); embedded_ele = axiom_element_create(env, parent, OXS_NODE_EMBEDDED, ns_obj, &embedded_node); if(!embedded_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error creating embedded element."); axiom_namespace_free(ns_obj, env); return NULL; } if(!id) { id = oxs_util_generate_id(env,(axis2_char_t*)OXS_EMBEDDED_ID); } id_attr = axiom_attribute_create(env, OXS_ATTR_ID, id, NULL); ret = axiom_element_add_attribute(embedded_ele, env, id_attr, embedded_node); return embedded_node; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_token_get_embedded_id( const axutil_env_t *env, axiom_node_t *embedded_node) { axis2_char_t *embedded = NULL; axiom_element_t *embedded_ele = NULL; embedded_ele = axiom_node_get_data_element(embedded_node, env); if(!embedded_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error retrieving embedded element."); return NULL; } embedded = axiom_element_get_attribute_value_by_name(embedded_ele, env, OXS_ATTR_ID); return embedded; } rampartc-src-1.3.0/src/omxmlsec/tokens/token_signature_method.c0000644000076500007650000000530311202453421024604 0ustar shankarshankar/* * 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. */ #include /** * Creates element */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL oxs_token_build_signature_method_element( const axutil_env_t *env, axiom_node_t *parent, axis2_char_t* algorithm) { axiom_node_t *signature_method_node = NULL; axiom_element_t *signature_method_ele = NULL; axiom_attribute_t *algo_attr = NULL; int ret; axiom_namespace_t *ns_obj = NULL; ns_obj = axiom_namespace_create(env, OXS_DSIG_NS, OXS_DS); signature_method_ele = axiom_element_create( env, parent, OXS_NODE_SIGNATURE_METHOD, ns_obj, &signature_method_node); if(!signature_method_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,"[rampart]Error creating signature method element."); axiom_namespace_free(ns_obj, env); return NULL; } if(!algorithm) { algorithm = (axis2_char_t*)OXS_HREF_RSA_SHA1; } algo_attr = axiom_attribute_create(env, OXS_ATTR_ALGORITHM, algorithm, NULL); ret = axiom_element_add_attribute(signature_method_ele, env, algo_attr, signature_method_node); return signature_method_node; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_token_get_signature_method( const axutil_env_t *env, axiom_node_t *enc_mtd_node) { axis2_char_t *enc_mtd = NULL; axiom_element_t *enc_mtd_ele = NULL; if(!enc_mtd_node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error retrieving signature method node."); return NULL; } enc_mtd_ele = axiom_node_get_data_element(enc_mtd_node, env); if (!enc_mtd_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error retrieving signature method element."); return NULL; } enc_mtd = axiom_element_get_attribute_value_by_name(enc_mtd_ele, env, OXS_ATTR_ALGORITHM); if((!enc_mtd) ||(0 == axutil_strcmp("", enc_mtd))) { return NULL; } return enc_mtd; } rampartc-src-1.3.0/src/omxmlsec/tokens/token_c14n_method.c0000644000076500007650000000542611202453421023356 0ustar shankarshankar/* * 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. */ #include /** * Creates element */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL oxs_token_build_c14n_method_element( const axutil_env_t *env, axiom_node_t *parent, axis2_char_t* algorithm) { axiom_node_t *c14n_method_node = NULL; axiom_element_t *c14n_method_ele = NULL; axiom_attribute_t *algo_attr = NULL; int ret; axiom_namespace_t *ns_obj = NULL; ns_obj = axiom_namespace_create(env, OXS_DSIG_NS, OXS_DS); c14n_method_ele = axiom_element_create( env, parent, OXS_NODE_CANONICALIZATION_METHOD, ns_obj, &c14n_method_node); if (!c14n_method_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error creating %s Token element.", OXS_NODE_CANONICALIZATION_METHOD); axiom_namespace_free(ns_obj, env); return NULL; } /* If c14n algorithm is NULL then use the default */ if(!algorithm) { algorithm = (axis2_char_t*)OXS_HREF_XML_EXC_C14N; } algo_attr = axiom_attribute_create(env, OXS_ATTR_ALGORITHM, algorithm, NULL); ret = axiom_element_add_attribute(c14n_method_ele, env, algo_attr, c14n_method_node); return c14n_method_node; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_token_get_c14n_method( const axutil_env_t *env, axiom_node_t *c14n_mtd_node) { axis2_char_t *c14n_mtd = NULL; axiom_element_t *c14n_mtd_ele = NULL; if(!c14n_mtd_node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]CanonicalizationMethod node is not valid."); return NULL; } c14n_mtd_ele = axiom_node_get_data_element(c14n_mtd_node, env); if (!c14n_mtd_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error retrieving c14n method element."); return NULL; } c14n_mtd = axiom_element_get_attribute_value_by_name(c14n_mtd_ele, env, OXS_ATTR_ALGORITHM); if((!c14n_mtd) ||(!axutil_strcmp("", c14n_mtd))) { return NULL; } return c14n_mtd; } rampartc-src-1.3.0/src/omxmlsec/tokens/token_digest_method.c0000644000076500007650000000534311202453421024066 0ustar shankarshankar/* * 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. */ #include /** * Creates element */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL oxs_token_build_digest_method_element( const axutil_env_t *env, axiom_node_t *parent, axis2_char_t* algorithm) { axiom_node_t *digest_method_node = NULL; axiom_element_t *digest_method_ele = NULL; axiom_attribute_t *algo_attr = NULL; int ret; axiom_namespace_t *ns_obj = NULL; ns_obj = axiom_namespace_create(env, OXS_DSIG_NS, OXS_DS); digest_method_ele = axiom_element_create( env, parent, OXS_NODE_DIGEST_METHOD, ns_obj, &digest_method_node); if (!digest_method_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error creating digest method element."); axiom_namespace_free(ns_obj, env); return NULL; } /* If digest algorithm is NULL then use the default */ if(!algorithm) { algorithm = (axis2_char_t*)OXS_HREF_SHA1; } algo_attr = axiom_attribute_create(env, OXS_ATTR_ALGORITHM, algorithm, NULL); ret = axiom_element_add_attribute(digest_method_ele, env, algo_attr, digest_method_node); return digest_method_node; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_token_get_digest_method( const axutil_env_t *env, axiom_node_t *digest_mtd_node) { axis2_char_t *digest_mtd = NULL; axiom_element_t *digest_mtd_ele = NULL; if(!digest_mtd_node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error retrieving digest method node."); return NULL; } digest_mtd_ele = axiom_node_get_data_element(digest_mtd_node, env); if(!digest_mtd_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error retrieving digest method element."); return NULL; } digest_mtd = axiom_element_get_attribute_value_by_name(digest_mtd_ele, env, OXS_ATTR_ALGORITHM); if((!digest_mtd) ||(!axutil_strcmp("", digest_mtd))) { return NULL; } return digest_mtd; } rampartc-src-1.3.0/src/omxmlsec/tokens/token_transforms.c0000644000076500007650000000277211202453421023450 0ustar shankarshankar/* * 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. */ #include /** * Creates element */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL oxs_token_build_transforms_element( const axutil_env_t *env, axiom_node_t *parent) { axiom_node_t *transforms_node = NULL; axiom_element_t *transforms_ele = NULL; axiom_namespace_t *ns_obj = NULL; ns_obj = axiom_namespace_create(env, OXS_DSIG_NS, OXS_DS); transforms_ele = axiom_element_create( env, parent, OXS_NODE_TRANSFORMS, ns_obj, &transforms_node); if(!transforms_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error creating Transforms element."); axiom_namespace_free(ns_obj, env); return NULL; } return transforms_node; } rampartc-src-1.3.0/src/omxmlsec/tokens/token_ds_reference.c0000644000076500007650000000547711202453421023703 0ustar shankarshankar/* * 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. */ #include /** * Creates element */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL oxs_token_build_ds_reference_element( const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *id, axis2_char_t *uri, axis2_char_t *type) { axiom_node_t *ds_reference_node = NULL; axiom_element_t *ds_reference_ele = NULL; int ret; axiom_namespace_t *ns_obj = NULL; ns_obj = axiom_namespace_create(env, OXS_DSIG_NS, OXS_DS); ds_reference_ele = axiom_element_create( env, parent, OXS_NODE_REFERENCE, ns_obj, &ds_reference_node); if(!ds_reference_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error creating ds:Reference element."); axiom_namespace_free(ns_obj, env); return NULL; } if(id) { axiom_attribute_t *id_attr = NULL; id_attr = axiom_attribute_create(env, OXS_ATTR_ID , id, NULL); ret = axiom_element_add_attribute(ds_reference_ele, env, id_attr, ds_reference_node); } if(uri) { axiom_attribute_t *uri_attr = NULL; uri_attr = axiom_attribute_create(env, OXS_ATTR_URI , uri, NULL); ret = axiom_element_add_attribute(ds_reference_ele, env, uri_attr, ds_reference_node); } if(type) { axiom_attribute_t *type_attr = NULL; type_attr = axiom_attribute_create(env, OXS_ATTR_TYPE , type, NULL); ret = axiom_element_add_attribute(ds_reference_ele, env, type_attr, ds_reference_node); } return ds_reference_node; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_token_get_ds_reference( const axutil_env_t *env, axiom_node_t *ref_node) { axis2_char_t *ref = NULL; axiom_element_t *reference_ele = NULL; reference_ele = axiom_node_get_data_element(ref_node, env); if (!reference_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,"[rampart]Error retrieving data reference element."); return NULL; } ref = axiom_element_get_attribute_value_by_name(reference_ele, env, OXS_ATTR_URI); return ref; } rampartc-src-1.3.0/src/omxmlsec/tokens/token_encrypted_data.c0000644000076500007650000000423311202453421024232 0ustar shankarshankar/* * 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. */ #include /** * Creates element */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL oxs_token_build_encrypted_data_element( const axutil_env_t *env, axiom_node_t *parent, axis2_char_t* type_attribute, axis2_char_t* id) { axiom_node_t *encrypted_data_node = NULL; axiom_element_t *encrypted_data_ele = NULL; axiom_attribute_t *type_attr = NULL; axiom_attribute_t *id_attr = NULL; axiom_namespace_t *ns_obj = NULL; int ret; ns_obj = axiom_namespace_create(env, OXS_ENC_NS, OXS_XENC); encrypted_data_ele = axiom_element_create( env, parent, OXS_NODE_ENCRYPTED_DATA, ns_obj, &encrypted_data_node); if(!encrypted_data_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error creating encrypted data element."); axiom_namespace_free(ns_obj, env); return NULL; } if (type_attribute) { type_attr = axiom_attribute_create(env, OXS_ATTR_TYPE, type_attribute, NULL); ret = axiom_element_add_attribute(encrypted_data_ele, env, type_attr, encrypted_data_node); } if(!id) { id = oxs_util_generate_id(env, (axis2_char_t*)OXS_ENCDATA_ID); } id_attr = axiom_attribute_create(env, OXS_ATTR_ID, id, NULL ); ret = axiom_element_add_attribute(encrypted_data_ele, env, id_attr, encrypted_data_node); return encrypted_data_node; } rampartc-src-1.3.0/src/omxmlsec/tokens/token_x509_serial_number.c0000644000076500007650000000375711202453421024672 0ustar shankarshankar/* * 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. */ #include AXIS2_EXTERN axis2_char_t* AXIS2_CALL oxs_token_get_serial_number( const axutil_env_t *env, axiom_node_t *serial_number_node) { axis2_char_t *val = NULL; /* TODO Verification */ val = (axis2_char_t*)oxs_axiom_get_node_content(env, serial_number_node); return val; } /** * Creates element */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL oxs_token_build_serial_number_element( const axutil_env_t *env, axiom_node_t *parent, axis2_char_t* value) { axiom_node_t *serial_number_node = NULL; axiom_element_t *serial_number_ele = NULL; axis2_status_t ret; axiom_namespace_t *ns_obj = NULL; ns_obj = axiom_namespace_create(env, OXS_DSIG_NS, OXS_DS); serial_number_ele = axiom_element_create( env, parent, OXS_NODE_X509_SERIAL_NUMBER, ns_obj, &serial_number_node); if (!serial_number_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,"[rampart]Error creating X509SerialNumber element."); axiom_namespace_free(ns_obj, env); return NULL; } if (value) { ret = axiom_element_set_text(serial_number_ele, env, value, serial_number_node); } return serial_number_node; } rampartc-src-1.3.0/src/omxmlsec/tokens/token_label.c0000644000076500007650000000420111202453421022316 0ustar shankarshankar/* * 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. */ #include AXIS2_EXTERN axis2_char_t* AXIS2_CALL oxs_token_get_label_value( const axutil_env_t *env, axiom_node_t *label_node) { axis2_char_t *value = NULL; value = (axis2_char_t*)oxs_axiom_get_node_content(env, label_node); return value; } /** * Creates element */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL oxs_token_build_label_element( const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *label_val, axis2_char_t *wsc_ns_uri) { axiom_node_t *label_node = NULL; axiom_element_t *label_ele = NULL; axis2_status_t ret; axiom_namespace_t *ns_obj = NULL; if(!wsc_ns_uri) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error creating %s Token element. SecConv namespace uri is not valid.", OXS_NODE_LABEL); return NULL; } ns_obj = axiom_namespace_create(env, wsc_ns_uri, OXS_WSC); label_ele = axiom_element_create(env, parent, OXS_NODE_LABEL, ns_obj, &label_node); if(!label_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error creating %s Token element.", OXS_NODE_LABEL); axiom_namespace_free(ns_obj, env); return NULL; } if(label_val) { ret = axiom_element_set_text(label_ele, env, label_val, label_node); } return label_node; } rampartc-src-1.3.0/src/omxmlsec/tokens/token_cipher_data.c0000644000076500007650000000413111202453421023504 0ustar shankarshankar/* * 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. */ #include /** * Creates element */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL oxs_token_build_cipher_data_element( const axutil_env_t *env, axiom_node_t *parent) { axiom_node_t *cipher_data_node = NULL; axiom_element_t *cipher_data_ele = NULL; axiom_namespace_t *ns_obj = NULL; ns_obj = axiom_namespace_create(env, OXS_ENC_NS, OXS_XENC); cipher_data_ele = axiom_element_create( env, parent, OXS_NODE_CIPHER_DATA, ns_obj, &cipher_data_node); if (!cipher_data_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error creating cipher data element."); axiom_namespace_free(ns_obj, env); return NULL; } return cipher_data_node; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_token_get_cipher_value_from_cipher_data( const axutil_env_t *env, axiom_node_t *cd_node) { axiom_node_t *cv_node = NULL; axis2_char_t *value = NULL; /* First check direct */ cv_node = oxs_axiom_get_first_child_node_by_name( env, cd_node, OXS_NODE_CIPHER_VALUE, OXS_ENC_NS, OXS_XENC); if(cv_node) { value = oxs_token_get_cipher_value(env, cv_node); } else { /* If not then check for */ /* TODO */ } return value; } rampartc-src-1.3.0/src/omxmlsec/tokens/token_x509_data.c0000644000076500007650000000274411202453421022747 0ustar shankarshankar/* * 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. */ #include /** * Creates element */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL oxs_token_build_x509_data_element( const axutil_env_t *env, axiom_node_t *parent) { axiom_node_t *x509_data_node = NULL; axiom_element_t *x509_data_ele = NULL; axiom_namespace_t *ns_obj = NULL; ns_obj = axiom_namespace_create(env, OXS_DSIG_NS, OXS_DS); x509_data_ele = axiom_element_create(env, parent, OXS_NODE_X509_DATA, ns_obj, &x509_data_node); if(!x509_data_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error creating X509Data element."); axiom_namespace_free(ns_obj, env); return NULL; } return x509_data_node; } rampartc-src-1.3.0/src/omxmlsec/tokens/token_derived_key_token.c0000644000076500007650000000515211202453421024737 0ustar shankarshankar/* * 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. */ #include /** * Creates element */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL oxs_token_build_derived_key_token_element( const axutil_env_t *env, axiom_node_t *parent, axis2_char_t* id, axis2_char_t* algo, axis2_char_t* wsc_ns_uri) { axiom_node_t *derived_key_token_node = NULL; axiom_element_t *derived_key_token_ele = NULL; axiom_attribute_t *algo_att = NULL; axiom_attribute_t *id_attr = NULL; int ret; axiom_namespace_t *ns_obj = NULL; axiom_namespace_t *ns = NULL; if(!wsc_ns_uri) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error creating %s Token element. SecConv namespace uri is not valid.", OXS_NODE_DERIVED_KEY_TOKEN); return NULL; } ns_obj = axiom_namespace_create(env, wsc_ns_uri, OXS_WSC); ns = axiom_namespace_create(env, RAMPART_WSU_XMLNS, OXS_WSU); derived_key_token_ele = axiom_element_create( env, parent, OXS_NODE_DERIVED_KEY_TOKEN, ns_obj, &derived_key_token_node); if (!derived_key_token_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error creating %s Token element", OXS_NODE_DERIVED_KEY_TOKEN); axiom_namespace_free(ns_obj, env); axiom_namespace_free(ns, env); return NULL; } if(algo) { algo_att = axiom_attribute_create(env, OXS_ATTR_ALGORITHM, algo, NULL); ret = axiom_element_add_attribute( derived_key_token_ele, env, algo_att, derived_key_token_node); } if (!id) { id = oxs_util_generate_id(env,(axis2_char_t*)OXS_DERIVED_ID); } id_attr = axiom_attribute_create(env, OXS_ATTR_ID, id,ns); ret = axiom_element_add_attribute(derived_key_token_ele, env, id_attr, derived_key_token_node); return derived_key_token_node; } rampartc-src-1.3.0/src/omxmlsec/tokens/token_cipher_value.c0000644000076500007650000000372511202453421023717 0ustar shankarshankar/* * 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. */ #include AXIS2_EXTERN axis2_char_t* AXIS2_CALL oxs_token_get_cipher_value( const axutil_env_t *env, axiom_node_t *cv_node) { axis2_char_t *cv = NULL; /* TODO Verification */ cv = (axis2_char_t*)oxs_axiom_get_node_content(env, cv_node); return cv; } /** * Creates element */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL oxs_token_build_cipher_value_element( const axutil_env_t *env, axiom_node_t *parent, axis2_char_t* cipher_val) { axiom_node_t *cipher_value_node = NULL; axiom_element_t *cipher_value_ele = NULL; axis2_status_t ret; axiom_namespace_t *ns_obj = NULL; ns_obj = axiom_namespace_create(env, OXS_ENC_NS, OXS_XENC); cipher_value_ele = axiom_element_create( env, parent, OXS_NODE_CIPHER_VALUE, ns_obj, &cipher_value_node); if(!cipher_value_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error creating cipher value element."); axiom_namespace_free(ns_obj, env); return NULL; } if (cipher_val) { ret = axiom_element_set_text(cipher_value_ele, env, cipher_val, cipher_value_node); } return cipher_value_node; } rampartc-src-1.3.0/src/omxmlsec/tokens/token_signature_confirmation.c0000644000076500007650000001011111202453421026005 0ustar shankarshankar/* * 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. */ #include AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_token_get_signature_confirmation_value( const axutil_env_t *env, axiom_node_t *signature_confirmation_node) { axis2_char_t *value = NULL; axiom_element_t *signature_confirmation_ele = NULL; if(!signature_confirmation_node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error retrieving SignatureConfirmation method node."); return NULL; } signature_confirmation_ele = axiom_node_get_data_element(signature_confirmation_node, env); if(!signature_confirmation_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error retrieving SignatureConfirmation method element."); return NULL; } value = axiom_element_get_attribute_value_by_name( signature_confirmation_ele, env, OXS_ATTR_VALUE); if((!value) ||(!axutil_strcmp("", value))) { return NULL; } return value; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_token_get_signature_confirmation_id( const axutil_env_t *env, axiom_node_t *signature_confirmation_node) { axis2_char_t *id = NULL; axiom_element_t *signature_confirmation_ele = NULL; if(!signature_confirmation_node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error retrieving SignatureConfirmation method node."); return NULL; } signature_confirmation_ele = axiom_node_get_data_element(signature_confirmation_node, env); if (!signature_confirmation_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error retrieving SignatureConfirmation method element."); return NULL; } id = axiom_element_get_attribute_value_by_name(signature_confirmation_ele, env, OXS_ATTR_ID); if((!id) ||(!axutil_strcmp("", id))) { return NULL; } return id; } /** * Creates element */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL oxs_token_build_signature_confirmation_element( const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *id, axis2_char_t *val) { axiom_node_t *signature_confirmation_node = NULL; axiom_element_t *signature_confirmation_ele = NULL; axis2_status_t ret; axiom_namespace_t *ns_obj = NULL; axiom_attribute_t *id_attr = NULL; axiom_attribute_t *val_attr = NULL; ns_obj = axiom_namespace_create(env, OXS_WSSE_11_XMLNS,OXS_WSSE_11); signature_confirmation_ele = axiom_element_create( env, parent, OXS_NODE_SIGNATURE_CONFIRMATION, ns_obj, &signature_confirmation_node); if(!signature_confirmation_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error %s element", OXS_NODE_SIGNATURE_CONFIRMATION); axiom_namespace_free(ns_obj, env); return NULL; } if (id) { id_attr = axiom_attribute_create(env, OXS_ATTR_ID, id, NULL); ret = axiom_element_add_attribute( signature_confirmation_ele, env, id_attr, signature_confirmation_node); } if (val) { val_attr = axiom_attribute_create(env, OXS_ATTR_VALUE, val, NULL); ret = axiom_element_add_attribute( signature_confirmation_ele, env, val_attr, signature_confirmation_node); } return signature_confirmation_node; } rampartc-src-1.3.0/src/omxmlsec/tokens/token_binary_security_token.c0000644000076500007650000000673311202453421025666 0ustar shankarshankar/* * 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. */ #include /** * Creates element */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL oxs_token_build_binary_security_token_element( const axutil_env_t *env, axiom_node_t *parent, axis2_char_t* id, axis2_char_t* encoding_type, axis2_char_t* value_type, axis2_char_t* data) { axiom_node_t *binary_security_token_node = NULL; axiom_node_t *first_child_of_parent = NULL; axiom_element_t *binary_security_token_ele = NULL; axiom_attribute_t *encoding_type_att = NULL; axiom_attribute_t *value_type_att = NULL; axiom_attribute_t *id_attr = NULL; int ret; axiom_namespace_t *ns_obj = NULL; axiom_namespace_t *ns = NULL; ns_obj = axiom_namespace_create(env, OXS_WSSE_NS, OXS_WSSE); ns = axiom_namespace_create(env,RAMPART_WSU_XMLNS,OXS_WSU); binary_security_token_ele = axiom_element_create( env, parent, OXS_NODE_BINARY_SECURITY_TOKEN, ns_obj, &binary_security_token_node); if (!binary_security_token_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error creating %s element.", OXS_NODE_BINARY_SECURITY_TOKEN); axiom_namespace_free(ns_obj, env); axiom_namespace_free(ns, env); return NULL; } /* Binary security token must be added as the first child of the paretn */ binary_security_token_node = axiom_node_detach(binary_security_token_node, env); first_child_of_parent = axiom_node_get_first_element(parent, env); if(first_child_of_parent) { /* If there is a child add bst before it */ axiom_node_insert_sibling_before(first_child_of_parent, env, binary_security_token_node); } else { /* If there are no children just add the bst */ axiom_node_add_child(parent, env, binary_security_token_node); } if(!id) { id = oxs_util_generate_id(env,(axis2_char_t*)OXS_CERT_ID); } id_attr = axiom_attribute_create(env, OXS_ATTR_ID, id,ns); encoding_type_att = axiom_attribute_create(env, OXS_ATTR_ENCODING_TYPE, encoding_type, NULL); value_type_att = axiom_attribute_create(env, OXS_ATTR_VALUE_TYPE, value_type, NULL); ret = axiom_element_add_attribute( binary_security_token_ele, env, id_attr, binary_security_token_node); ret = axiom_element_add_attribute( binary_security_token_ele, env, encoding_type_att, binary_security_token_node); ret = axiom_element_add_attribute( binary_security_token_ele, env, value_type_att, binary_security_token_node); if(data) { ret = axiom_element_set_text( binary_security_token_ele, env, data, binary_security_token_node); } return binary_security_token_node; } rampartc-src-1.3.0/src/omxmlsec/tokens/token_key_info.c0000644000076500007650000000273111202453421023050 0ustar shankarshankar/* * 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. */ #include /** * Creates element */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL oxs_token_build_key_info_element( const axutil_env_t *env, axiom_node_t *parent) { axiom_node_t *key_info_node = NULL; axiom_element_t *key_info_ele = NULL; axiom_namespace_t *ns_obj = NULL; ns_obj = axiom_namespace_create(env, OXS_DSIG_NS,OXS_DS); key_info_ele = axiom_element_create(env, parent, OXS_NODE_KEY_INFO, ns_obj, &key_info_node); if(!key_info_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error creating KeyInfo element."); axiom_namespace_free(ns_obj, env); return NULL; } return key_info_node; } rampartc-src-1.3.0/src/omxmlsec/tokens/token_reference.c0000644000076500007650000000615211202453421023204 0ustar shankarshankar/* * 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. */ #include /** * Creates element */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL oxs_token_build_reference_element( const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *ref, axis2_char_t *value_type) { axiom_node_t *reference_node = NULL; axiom_element_t *reference_ele = NULL; axiom_attribute_t *ref_attr = NULL; axiom_attribute_t *value_type_attr = NULL; int ret; axiom_namespace_t *ns_obj = NULL; ns_obj = axiom_namespace_create(env, OXS_WSSE_NS, OXS_WSSE); reference_ele = axiom_element_create(env, parent, OXS_NODE_REFERENCE, ns_obj, &reference_node); if (!reference_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error creating Reference element."); axiom_namespace_free(ns_obj, env); return NULL; } if(!ref) { ref = ""; } ref_attr = axiom_attribute_create(env, OXS_ATTR_URI , ref, NULL); ret = axiom_element_add_attribute(reference_ele, env, ref_attr, reference_node); if(value_type) { value_type_attr = axiom_attribute_create(env, OXS_ATTR_VALUE_TYPE , value_type, NULL); ret = axiom_element_add_attribute(reference_ele, env, value_type_attr, reference_node); } return reference_node; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_token_get_reference( const axutil_env_t *env, axiom_node_t *ref_node) { axis2_char_t *ref = NULL; axiom_element_t *reference_ele = NULL; reference_ele = axiom_node_get_data_element(ref_node, env); if (!reference_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,"[rampart]Error retrieving data reference element."); return NULL; } ref = axiom_element_get_attribute_value_by_name(reference_ele, env, OXS_ATTR_URI); return ref; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_token_get_reference_value_type( const axutil_env_t *env, axiom_node_t *ref_node) { axis2_char_t *val_type = NULL; axiom_element_t *reference_ele = NULL; reference_ele = axiom_node_get_data_element(ref_node, env); if (!reference_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,"[rampart]Error retrieving data reference element."); return NULL; } val_type = axiom_element_get_attribute_value_by_name(reference_ele, env, OXS_ATTR_VALUE_TYPE); return val_type; } rampartc-src-1.3.0/src/omxmlsec/tokens/token_encryption_method.c0000644000076500007650000000542711202453421025004 0ustar shankarshankar/* * 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. */ #include /** * Creates element */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL oxs_token_build_encryption_method_element( const axutil_env_t *env, axiom_node_t *parent, axis2_char_t* algorithm) { axiom_node_t *encryption_method_node = NULL; axiom_element_t *encryption_method_ele = NULL; axiom_attribute_t *algo_attr = NULL; int ret; axiom_namespace_t *ns_obj = NULL; ns_obj = axiom_namespace_create(env, OXS_ENC_NS, OXS_XENC); encryption_method_ele = axiom_element_create( env, parent, OXS_NODE_ENCRYPTION_METHOD, ns_obj, &encryption_method_node); if(!encryption_method_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error creating encryption method element."); axiom_namespace_free(ns_obj, env); return NULL; } /* If kt algorithm is NULL then use the default */ if(!algorithm) { algorithm = (axis2_char_t*)OXS_DEFAULT_KT_ALGO_HREF; } algo_attr = axiom_attribute_create(env, OXS_ATTR_ALGORITHM, algorithm, NULL); ret = axiom_element_add_attribute(encryption_method_ele, env, algo_attr, encryption_method_node); return encryption_method_node; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_token_get_encryption_method( const axutil_env_t *env, axiom_node_t *enc_mtd_node) { axis2_char_t *enc_mtd = NULL; axiom_element_t *enc_mtd_ele = NULL; if(!enc_mtd_node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,"[rampart]Error retrieving encryption method node."); return NULL; } enc_mtd_ele = axiom_node_get_data_element(enc_mtd_node, env); if(!enc_mtd_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error retrieving encryption method element."); return NULL; } enc_mtd = axiom_element_get_attribute_value_by_name(enc_mtd_ele, env, OXS_ATTR_ALGORITHM); if((!enc_mtd) ||(!axutil_strcmp("", enc_mtd))) { return NULL; } return enc_mtd; } rampartc-src-1.3.0/src/omxmlsec/tokens/token_key_identifier.c0000644000076500007650000000426011202453421024236 0ustar shankarshankar/* * 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. */ #include /** * Creates element */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL oxs_token_build_key_identifier_element( const axutil_env_t *env, axiom_node_t *parent, axis2_char_t* encoding_type, axis2_char_t* value_type, axis2_char_t* value ) { axiom_node_t *ki_node = NULL; axiom_element_t *ki_ele = NULL; axiom_attribute_t *encoding_type_att = NULL; axiom_attribute_t *value_type_att = NULL; int ret; axiom_namespace_t *ns_obj = NULL; ns_obj = axiom_namespace_create(env, OXS_WSSE_NS, OXS_WSSE); ki_ele = axiom_element_create(env, parent, OXS_NODE_KEY_IDENTIFIER, ns_obj, &ki_node); if(!ki_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error creating KeyIdentifier element."); axiom_namespace_free(ns_obj, env); return NULL; } if(encoding_type) { encoding_type_att = axiom_attribute_create( env, OXS_ATTR_ENCODING_TYPE, encoding_type, NULL); ret = axiom_element_add_attribute(ki_ele, env, encoding_type_att, ki_node); } if(value_type) { value_type_att = axiom_attribute_create(env, OXS_ATTR_VALUE_TYPE, value_type, NULL); ret = axiom_element_add_attribute(ki_ele, env, value_type_att, ki_node); } if(value) { ret = axiom_element_set_text(ki_ele, env, value, ki_node); } return ki_node; } rampartc-src-1.3.0/src/omxmlsec/tokens/Makefile.in0000644000076500007650000004446611202453550021764 0ustar shankarshankar# Makefile.in generated by automake 1.10.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = src/omxmlsec/tokens DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) liboxstokens_la_LIBADD = am_liboxstokens_la_OBJECTS = token_encrypted_data.lo \ token_encryption_method.lo token_cipher_value.lo \ token_cipher_data.lo token_key_name.lo token_key_info.lo \ token_binary_security_token.lo token_reference_list.lo \ token_data_reference.lo token_encrypted_key.lo \ token_key_identifier.lo token_x509_data.lo \ token_x509_issuer_serial.lo token_x509_issuer_name.lo \ token_x509_serial_number.lo token_security_token_reference.lo \ token_embedded.lo token_reference.lo token_signature_value.lo \ token_signed_info.lo token_c14n_method.lo \ token_signature_method.lo token_digest_method.lo \ token_digest_value.lo token_transform.lo token_transforms.lo \ token_signature.lo token_ds_reference.lo \ token_x509_certificate.lo token_signature_confirmation.lo \ token_derived_key_token.lo token_properties.lo \ token_generation.lo token_length.lo token_nonce.lo \ token_offset.lo token_label.lo token_encrypted_header.lo \ token_saml.lo liboxstokens_la_OBJECTS = $(am_liboxstokens_la_OBJECTS) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = $(liboxstokens_la_SOURCES) DIST_SOURCES = $(liboxstokens_la_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ AXIOMINC = @AXIOMINC@ AXIS2INC = @AXIS2INC@ AXIS2LIB = @AXIS2LIB@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NEETHIINC = @NEETHIINC@ OBJEXT = @OBJEXT@ OPENSSLINC = @OPENSSLINC@ OPENSSLLIB = @OPENSSLLIB@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UTILINC = @UTILINC@ VERSION = @VERSION@ VERSION_NO = @VERSION_NO@ XMLSCHEMAINC = @XMLSCHEMAINC@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ noinst_LTLIBRARIES = liboxstokens.la liboxstokens_la_SOURCES = token_encrypted_data.c token_encryption_method.c token_cipher_value.c \ token_cipher_data.c token_key_name.c token_key_info.c token_binary_security_token.c \ token_reference_list.c token_data_reference.c token_encrypted_key.c \ token_key_identifier.c token_x509_data.c token_x509_issuer_serial.c\ token_x509_issuer_name.c token_x509_serial_number.c token_security_token_reference.c \ token_embedded.c token_reference.c token_signature_value.c token_signed_info.c \ token_c14n_method.c token_signature_method.c token_digest_method.c token_digest_value.c \ token_transform.c token_transforms.c token_signature.c token_ds_reference.c \ token_x509_certificate.c token_signature_confirmation.c token_derived_key_token.c \ token_properties.c token_generation.c token_length.c token_nonce.c token_offset.c token_label.c \ token_encrypted_header.c token_saml.c INCLUDES = -I$(top_builddir)/include \ -I ../../../../util/include \ -I ../../../../include \ -I ../../../../axiom/include \ @OPENSSLINC@ \ @UTILINC@ \ @AXIOMINC@ \ @AXIS2INC@ all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/omxmlsec/tokens/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu src/omxmlsec/tokens/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ test "$$dir" != "$$p" || dir=.; \ echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done liboxstokens.la: $(liboxstokens_la_OBJECTS) $(liboxstokens_la_DEPENDENCIES) $(LINK) $(liboxstokens_la_OBJECTS) $(liboxstokens_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/token_binary_security_token.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/token_c14n_method.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/token_cipher_data.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/token_cipher_value.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/token_data_reference.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/token_derived_key_token.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/token_digest_method.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/token_digest_value.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/token_ds_reference.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/token_embedded.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/token_encrypted_data.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/token_encrypted_header.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/token_encrypted_key.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/token_encryption_method.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/token_generation.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/token_key_identifier.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/token_key_info.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/token_key_name.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/token_label.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/token_length.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/token_nonce.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/token_offset.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/token_properties.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/token_reference.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/token_reference_list.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/token_saml.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/token_security_token_reference.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/token_signature.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/token_signature_confirmation.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/token_signature_method.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/token_signature_value.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/token_signed_info.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/token_transform.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/token_transforms.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/token_x509_certificate.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/token_x509_data.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/token_x509_issuer_name.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/token_x509_issuer_serial.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/token_x509_serial_number.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-exec-am: install-html: install-html-am install-info: install-info-am install-man: install-pdf: install-pdf-am install-ps: install-ps-am installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: rampartc-src-1.3.0/src/omxmlsec/tokens/token_nonce.c0000644000076500007650000000420211202453421022342 0ustar shankarshankar/* * 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. */ #include AXIS2_EXTERN axis2_char_t* AXIS2_CALL oxs_token_get_nonce_value( const axutil_env_t *env, axiom_node_t *nonce_node) { axis2_char_t *value = NULL; value = (axis2_char_t*)oxs_axiom_get_node_content(env, nonce_node); return value; } /** * Creates element */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL oxs_token_build_nonce_element( const axutil_env_t *env, axiom_node_t *parent, axis2_char_t* nonce_val, axis2_char_t *wsc_ns_uri) { axiom_node_t *nonce_node = NULL; axiom_element_t *nonce_ele = NULL; axis2_status_t ret; axiom_namespace_t *ns_obj = NULL; if(!wsc_ns_uri) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error creating %s Token element. SecConv namespace uri is not valid.", OXS_NODE_NONCE); return NULL; } ns_obj = axiom_namespace_create(env, wsc_ns_uri, OXS_WSC); nonce_ele = axiom_element_create(env, parent, OXS_NODE_NONCE, ns_obj, &nonce_node); if (!nonce_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error creating %s Token element.", OXS_NODE_NONCE); axiom_namespace_free(ns_obj, env); return NULL; } if (nonce_val) { ret = axiom_element_set_text(nonce_ele, env, nonce_val, nonce_node); } return nonce_node; } rampartc-src-1.3.0/src/omxmlsec/tokens/token_digest_value.c0000644000076500007650000000376411202453421023727 0ustar shankarshankar/* * 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. */ #include AXIS2_EXTERN axis2_char_t* AXIS2_CALL oxs_token_get_digest_value( const axutil_env_t *env, axiom_node_t *digest_val_node) { axis2_char_t *digest_val = NULL; /* TODO Verification */ digest_val = (axis2_char_t*)oxs_axiom_get_node_content(env, digest_val_node); return digest_val; } /** * Creates element */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL oxs_token_build_digest_value_element( const axutil_env_t *env, axiom_node_t *parent, axis2_char_t* digest_val) { axiom_node_t *digest_value_node = NULL; axiom_element_t *digest_value_ele = NULL; axis2_status_t ret; axiom_namespace_t *ns_obj = NULL; ns_obj = axiom_namespace_create(env, OXS_DSIG_NS, OXS_DS); digest_value_ele = axiom_element_create( env, parent, OXS_NODE_DIGEST_VALUE, ns_obj, &digest_value_node); if(!digest_value_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error creating digest value element."); axiom_namespace_free(ns_obj, env); return NULL; } if(digest_val) { ret = axiom_element_set_text(digest_value_ele, env, digest_val, digest_value_node); } return digest_value_node; } rampartc-src-1.3.0/src/omxmlsec/tokens/token_reference_list.c0000644000076500007650000001027011202453421024233 0ustar shankarshankar/* * 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. */ #include /** * Creates element */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL oxs_token_build_reference_list_element( const axutil_env_t *env, axiom_node_t *parent ) { axiom_node_t *reference_list_node = NULL; axiom_element_t *reference_list_ele = NULL; axiom_namespace_t *ns_obj = NULL; ns_obj = axiom_namespace_create(env, OXS_ENC_NS, OXS_XENC); reference_list_ele = axiom_element_create( env, NULL, OXS_NODE_REFERENCE_LIST, ns_obj, &reference_list_node); if (!reference_list_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error creating ReferenceList element."); axiom_namespace_free(ns_obj, env); return NULL; } axiom_node_add_child(parent, env, reference_list_node); return reference_list_node; } /** * Creates elements under element */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL oxs_token_build_data_reference_list( const axutil_env_t *env, axiom_node_t *parent, axutil_array_list_t *id_list) { axiom_node_t *ref_list_node = NULL; int i=0; if(!id_list) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]id list is not valid."); return NULL; } /* Build the ReferenceList element */ ref_list_node = oxs_token_build_reference_list_element(env, parent); if(!ref_list_node) { return NULL; } /* Build the list */ for(i=0 ; i < axutil_array_list_size(id_list, env); i++) { axiom_node_t *data_ref_node = NULL; axis2_char_t *id = NULL; /* We need to prepend # to the id in the list to create the reference */ id = axutil_stracat( env, OXS_LOCAL_REFERENCE_PREFIX,(axis2_char_t*)axutil_array_list_get(id_list, env, i)); data_ref_node = oxs_token_build_data_reference_element(env, ref_list_node, id); AXIS2_FREE(env->allocator, id); if(!data_ref_node) { return NULL; } } return ref_list_node; } AXIS2_EXTERN axutil_array_list_t *AXIS2_CALL oxs_token_get_reference_list_data( const axutil_env_t *env, axiom_node_t *ref_list_node) { axutil_array_list_t *list = NULL; axiom_children_qname_iterator_t *iter = NULL; axiom_element_t *ref_list_ele = NULL; axutil_qname_t *qname = NULL; if(!ref_list_node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]reference list node is NULL."); return NULL; } ref_list_ele = axiom_node_get_data_element(ref_list_node, env); /* Get children */ qname = axutil_qname_create(env, OXS_NODE_DATA_REFERENCE, OXS_ENC_NS, OXS_ENC_NS); iter = axiom_element_get_children_with_qname(ref_list_ele, env, qname, ref_list_node); axutil_qname_free(qname, env); qname = NULL; if(!iter) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]There are no children for %s", OXS_NODE_DATA_REFERENCE); return NULL; } list = axutil_array_list_create(env, 0); /* Insert UIDs of nodes to the list */ while (AXIS2_TRUE == axiom_children_qname_iterator_has_next(iter, env)) { axiom_node_t *dref_node = NULL; axis2_char_t *dref_val = NULL; dref_node = axiom_children_qname_iterator_next(iter, env); dref_val = oxs_token_get_data_reference(env, dref_node); axutil_array_list_add(list, env, dref_val); } return list; } rampartc-src-1.3.0/src/omxmlsec/tokens/token_saml.c0000644000076500007650000001424211202453421022201 0ustar shankarshankar/* * 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 */ #include #include #include AXIS2_EXTERN axiom_node_t * AXIS2_CALL oxs_saml_token_build_key_identifier_reference_local(const axutil_env_t *env, axiom_node_t *parent, axiom_node_t *assertion) { axiom_node_t *key_id = NULL, *stre = NULL; axis2_char_t *id = NULL; axiom_element_t *e = NULL; e = axiom_node_get_data_element(assertion, env); id = axiom_element_get_attribute_value_by_name(e, env, SAML_ASSERTION_ID); if (!id) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[oxs][saml token] Assertion doesn't contain an id."); return NULL; } stre = oxs_token_build_security_token_reference_element(env, parent); if (!stre) { return NULL; } key_id = oxs_token_build_key_identifier_element(env, stre, NULL, OXS_ST_KEY_ID_VALUE_TYPE, id); return stre; } AXIS2_EXTERN axiom_node_t * AXIS2_CALL oxs_saml_token_build_key_identifier_reference_remote(const axutil_env_t *env, axiom_node_t *parent, axiom_node_t *assertion, axiom_node_t *auth_bind) { axiom_node_t *key_id = NULL, *stre = NULL; axis2_char_t *id = NULL; axiom_element_t *e = NULL; e = axiom_node_get_data_element(assertion, env); id = axiom_element_get_attribute_value_by_name(e, env, SAML_ASSERTION_ID); if (!id) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[oxs][saml token] Assertion doesn't contain an id."); return NULL; } stre = oxs_token_build_security_token_reference_element(env, parent); if (!stre) { return NULL; } key_id = oxs_token_build_key_identifier_element(env, parent, NULL, OXS_ST_KEY_ID_VALUE_TYPE, id); if (!key_id) { return NULL; } /* Add the autherity bindng element to the key identifier */ axiom_node_add_child(stre, env, auth_bind); return stre; } AXIS2_EXTERN axiom_node_t * AXIS2_CALL oxs_saml_token_build_embeded_reference(const axutil_env_t *env, axiom_node_t *parent, axiom_node_t *assertion) { axiom_node_t *embeded = NULL, *stre = NULL; if (!assertion) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[oxs][saml token] Assertion To OM failed."); return NULL; } stre = oxs_token_build_security_token_reference_element(env, parent); if (!stre) { return NULL; } embeded = oxs_token_build_embedded_element(env, stre, NULL); if (embeded) { axiom_node_add_child(embeded, env, assertion); } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[oxs][saml token] Embeded Token creation failed."); } return stre; } AXIS2_EXTERN axiom_node_t * AXIS2_CALL oxs_saml_token_get_from_key_identifer_reference(const axutil_env_t *env, axiom_node_t *key_id, axiom_node_t *scope) { axis2_char_t *value_type = NULL, *id = NULL; axiom_element_t *key_id_e = NULL; axiom_node_t *assertion = NULL; key_id_e = axiom_node_get_data_element(key_id, env); value_type = axiom_element_get_attribute_value_by_name(key_id_e, env, OXS_ATTR_VALUE_TYPE); if (!value_type || axutil_strcmp(OXS_ST_KEY_ID_VALUE_TYPE, value_type) != 0) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[oxs][saml token] KeyId reference doesn't contain the ValueType attribute."); return NULL; } id = axiom_element_get_text(key_id_e, env, key_id); if (!id) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[oxs][saml token] ID reference doesn't contain a value."); return NULL; } if (!scope) { assertion = oxs_axiom_get_first_node_by_name_and_attr_val_from_xml_doc(env, key_id, SAML_ASSERTION, SAML_NMSP_URI, SAML_ASSERTION_ID, id, NULL); } else { assertion = oxs_axiom_get_first_node_by_name_and_attr_val(env, scope, SAML_ASSERTION, SAML_NMSP_URI, SAML_ASSERTION_ID, id, NULL); } if (!assertion) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[oxs][saml token] SAML Token cannot be found."); } return assertion; } AXIS2_EXTERN axiom_node_t * AXIS2_CALL oxs_saml_token_get_from_embeded_reference(const axutil_env_t *env, axiom_node_t *embeded) { axiom_node_t *assertion = NULL; axiom_element_t *e = NULL; axutil_qname_t *qname = axutil_qname_create(env, SAML_ASSERTION, SAML_NMSP_URI, NULL); if (!qname) { return NULL; } e = axiom_node_get_data_element(assertion, env); axiom_element_get_first_child_with_qname(e, env, qname, embeded, &assertion); if (!assertion) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[oxs][saml token] SAML Token cannot be found."); } return assertion; } rampartc-src-1.3.0/src/omxmlsec/tokens/token_data_reference.c0000644000076500007650000000471011202453421024173 0ustar shankarshankar/* * 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. */ #include /** * Creates element */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL oxs_token_build_data_reference_element( const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *data_ref) { axiom_node_t *data_reference_node = NULL; axiom_element_t *data_reference_ele = NULL; axiom_attribute_t *data_ref_attr = NULL; int ret; axiom_namespace_t *ns_obj = NULL; ns_obj = axiom_namespace_create(env, OXS_ENC_NS, OXS_XENC); data_reference_ele = axiom_element_create( env, parent, OXS_NODE_DATA_REFERENCE, ns_obj, &data_reference_node); if(!data_reference_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error creating data reference element."); axiom_namespace_free(ns_obj, env); return NULL; } if(!data_ref) { /* attach empty string */ data_ref = ""; } data_ref_attr = axiom_attribute_create(env, OXS_ATTR_URI , data_ref, NULL); ret = axiom_element_add_attribute(data_reference_ele, env, data_ref_attr, data_reference_node); return data_reference_node; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_token_get_data_reference( const axutil_env_t *env, axiom_node_t *data_ref_node) { axis2_char_t *data_ref = NULL; axiom_element_t *data_reference_ele = NULL; data_reference_ele = axiom_node_get_data_element(data_ref_node, env); if (!data_reference_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,"[rampart]Error retrieving data reference element."); return NULL; } data_ref = axiom_element_get_attribute_value_by_name(data_reference_ele, env, OXS_ATTR_URI); return data_ref; } rampartc-src-1.3.0/src/omxmlsec/tokens/token_properties.c0000644000076500007650000000435211202453421023442 0ustar shankarshankar/* * 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. */ #include AXIS2_EXTERN axis2_char_t* AXIS2_CALL oxs_token_get_properties_value( const axutil_env_t *env, axiom_node_t *properties_node) { axis2_char_t *value = NULL; value = (axis2_char_t*)oxs_axiom_get_node_content(env, properties_node); return value; } /** * Creates element */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL oxs_token_build_properties_element( const axutil_env_t *env, axiom_node_t *parent, axis2_char_t *properties_val, axis2_char_t *wsc_ns_uri) { axiom_node_t *properties_node = NULL; axiom_element_t *properties_ele = NULL; axis2_status_t ret; axiom_namespace_t *ns_obj = NULL; if(!wsc_ns_uri) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error creating %s Token element. SecConv namespace uri is not valid.", OXS_NODE_PROPERTIES); return NULL; } ns_obj = axiom_namespace_create(env, wsc_ns_uri,OXS_WSC); properties_ele = axiom_element_create( env, parent, OXS_NODE_PROPERTIES, ns_obj, &properties_node); if (!properties_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error creating %s Token element.", OXS_NODE_PROPERTIES); axiom_namespace_free(ns_obj, env); return NULL; } if (properties_val) { ret = axiom_element_set_text(properties_ele, env, properties_val, properties_node); } return properties_node; } rampartc-src-1.3.0/src/omxmlsec/tokens/token_signature.c0000644000076500007650000000335311202453421023247 0ustar shankarshankar/* * 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. */ #include /** * Creates element */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL oxs_token_build_signature_element( const axutil_env_t *env, axiom_node_t *parent, axis2_char_t* id) { axiom_node_t *signature_node = NULL; axiom_element_t *signature_ele = NULL; axiom_attribute_t *id_attr = NULL; axiom_namespace_t *ns_obj = NULL; int ret; ns_obj = axiom_namespace_create(env, OXS_DSIG_NS, OXS_DS); signature_ele = axiom_element_create(env, parent, OXS_NODE_SIGNATURE, ns_obj, &signature_node); if (!signature_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error creating ds:Signature element."); axiom_namespace_free(ns_obj, env); return NULL; } if (id) { id_attr = axiom_attribute_create(env, OXS_ATTR_ID, id, NULL); ret = axiom_element_add_attribute(signature_ele, env, id_attr, signature_node); } return signature_node; } rampartc-src-1.3.0/src/omxmlsec/tokens/token_signed_info.c0000644000076500007650000000300311202453421023522 0ustar shankarshankar/* * 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. */ #include /** * Creates element */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL oxs_token_build_signed_info_element( const axutil_env_t *env, axiom_node_t *parent) { axiom_node_t *signed_info_node = NULL; axiom_element_t *signed_info_ele = NULL; axiom_namespace_t *ns_obj = NULL; ns_obj = axiom_namespace_create(env, OXS_DSIG_NS, OXS_DS); signed_info_ele = axiom_element_create( env, parent, OXS_NODE_SIGNEDINFO, ns_obj, &signed_info_node); if (!signed_info_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error creating SignedInfo element."); axiom_namespace_free(ns_obj, env); return NULL; } return signed_info_node; } rampartc-src-1.3.0/src/omxmlsec/tokens/token_x509_issuer_name.c0000644000076500007650000000372111202453421024344 0ustar shankarshankar/* * 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. */ #include AXIS2_EXTERN axis2_char_t* AXIS2_CALL oxs_token_get_issuer_name( const axutil_env_t *env, axiom_node_t *issuer_name_node) { axis2_char_t *val = NULL; /* TODO Verification */ val = (axis2_char_t*)oxs_axiom_get_node_content(env, issuer_name_node); return val; } /** * Creates element */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL oxs_token_build_issuer_name_element( const axutil_env_t *env, axiom_node_t *parent, axis2_char_t* value) { axiom_node_t *issuer_name_node = NULL; axiom_element_t *issuer_name_ele = NULL; axis2_status_t ret; axiom_namespace_t *ns_obj = NULL; ns_obj = axiom_namespace_create(env, OXS_DSIG_NS, OXS_DS); issuer_name_ele = axiom_element_create( env, parent, OXS_NODE_X509_ISSUER_NAME, ns_obj, &issuer_name_node); if (!issuer_name_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error creating X509IssuerName element."); axiom_namespace_free(ns_obj, env); return NULL; } if (value) { ret = axiom_element_set_text(issuer_name_ele, env, value, issuer_name_node); } return issuer_name_node; } rampartc-src-1.3.0/src/omxmlsec/xml_key_processor.c0000644000076500007650000001471611202453422022320 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include /*Private functions*/ /*Public functions*/ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_xml_key_process_X509SKI(const axutil_env_t *env, axiom_node_t *X509SKI_node, oxs_x509_cert_t *cert) { axis2_char_t *ski = NULL; axis2_char_t *node_name = NULL; axis2_status_t status = AXIS2_FAILURE; node_name = axiom_util_get_localname(X509SKI_node, env); if(0 != axutil_strcmp(node_name, OXS_NODE_X509_SKI)){ oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_INVALID_DATA,"Invalid node. Expected %s. Found", OXS_NODE_X509_SKI, node_name); return AXIS2_FAILURE; } ski = oxs_axiom_get_node_content(env, X509SKI_node); oxs_x509_cert_set_subject(cert, env, ski); return status; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_xml_key_process_X509SubjectName(const axutil_env_t *env, axiom_node_t *X509_subj_name_node, oxs_x509_cert_t *cert) { axis2_char_t *subj_name = NULL; axis2_char_t *node_name = NULL; axis2_status_t status = AXIS2_FAILURE; node_name = axiom_util_get_localname(X509_subj_name_node, env); if(0 != axutil_strcmp(node_name, OXS_NODE_X509_SUBJECT_NAME)){ oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_INVALID_DATA,"Invalid node. Expected %s. Found", OXS_NODE_X509_SUBJECT_NAME, node_name); return AXIS2_FAILURE; } subj_name = oxs_axiom_get_node_content(env, X509_subj_name_node); oxs_x509_cert_set_subject(cert, env, subj_name); return status; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_xml_key_process_X509IssuerSerial(const axutil_env_t *env, axiom_node_t *X509_issuer_serial_node, oxs_x509_cert_t *cert) { axiom_node_t *issuer_name_node = NULL; axiom_node_t *serial_num_node = NULL; axis2_char_t *node_name = NULL; axis2_char_t *issuer_name = NULL; axis2_char_t *serial_num_str = NULL; axis2_status_t status = AXIS2_FAILURE; node_name = axiom_util_get_localname(X509_issuer_serial_node, env); if(0 != axutil_strcmp(node_name, OXS_NODE_X509_ISSUER_SERIAL)){ oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_INVALID_DATA,"Invalid node. Expected %s. Found", OXS_NODE_X509_ISSUER_SERIAL, node_name); return AXIS2_FAILURE; } issuer_name_node = axiom_node_get_first_element(X509_issuer_serial_node, env); if(issuer_name_node){ issuer_name = oxs_axiom_get_node_content(env, issuer_name_node); } serial_num_node = axiom_node_get_next_sibling(issuer_name_node, env); if(serial_num_node){ serial_num_str = oxs_axiom_get_node_content(env, serial_num_node); } /*we set the key issuername and the serial number*/ oxs_x509_cert_set_issuer(cert, env, issuer_name); oxs_x509_cert_set_serial_number(cert, env, atoi(serial_num_str)); return status; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_xml_key_process_X509Certificate(const axutil_env_t *env, axiom_node_t *X509_cert_node, oxs_x509_cert_t *cert) { axis2_char_t *data = NULL; axis2_char_t *node_name = NULL; axis2_status_t status = AXIS2_FAILURE; oxs_x509_cert_t *_cert = NULL; node_name = axiom_util_get_localname(X509_cert_node, env); if(0 != axutil_strcmp(node_name, OXS_NODE_X509_CERTIFICATE)){ oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_INVALID_DATA,"Invalid node. Expected %s. Found", OXS_NODE_X509_CERTIFICATE, node_name); return AXIS2_FAILURE; } /*Get contents*/ data = oxs_token_get_x509_certificate(env, X509_cert_node); _cert = oxs_key_mgr_load_x509_cert_from_string(env, data); if(_cert){ status = AXIS2_SUCCESS; }else{ status = AXIS2_FAILURE; } oxs_x509_cert_copy_to(_cert, env, cert); return status; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_xml_key_process_X509Data(const axutil_env_t *env, axiom_node_t *X509_data_node, oxs_x509_cert_t *cert) { axiom_node_t *child_node = NULL; axis2_char_t *child_name = NULL; axis2_char_t *node_name = NULL; axis2_status_t status = AXIS2_FAILURE; node_name = axiom_util_get_localname(X509_data_node, env); if(0 != axutil_strcmp(node_name, OXS_NODE_X509_DATA)){ oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_INVALID_DATA,"Invalid node. Expected %s. Found", OXS_NODE_X509_DATA, node_name); return AXIS2_FAILURE; } child_node = axiom_node_get_first_element( X509_data_node, env); child_name = axiom_util_get_localname(child_node, env); /*Check wht's inside the */ if(0 == axutil_strcmp(child_name, OXS_NODE_X509_CERTIFICATE)){ status = oxs_xml_key_process_X509Certificate(env, child_node, cert); }else if(0 == axutil_strcmp(child_name, OXS_NODE_X509_ISSUER_SERIAL)){ status = oxs_xml_key_process_X509IssuerSerial(env, child_node, cert); }else if(0 == axutil_strcmp(child_name, OXS_NODE_X509_SUBJECT_NAME )){ status = oxs_xml_key_process_X509SubjectName(env, child_node, cert); }else if(0 == axutil_strcmp(child_name, OXS_NODE_X509_SKI )){ status = oxs_xml_key_process_X509SKI(env, child_node, cert); }else{ /*We do not support*/ } return status; } rampartc-src-1.3.0/src/omxmlsec/x509_cert.c0000644000076500007650000002331111202453422020262 0ustar shankarshankar/* * 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. */ #include #include #include #include struct oxs_x509_cert_t { int serial_number; axis2_char_t *subject; axis2_char_t *issuer; axis2_char_t *key_identifier; axis2_char_t *fingerprint; axis2_char_t *date; axis2_char_t *hash; axis2_char_t *data; axis2_char_t *common_name; openssl_pkey_t *public_key; }; AXIS2_EXTERN oxs_x509_cert_t *AXIS2_CALL oxs_x509_cert_create(const axutil_env_t *env) { oxs_x509_cert_t *x509_cert = NULL; AXIS2_ENV_CHECK(env, NULL); x509_cert = (oxs_x509_cert_t *)AXIS2_MALLOC(env->allocator, sizeof(oxs_x509_cert_t)); if(!x509_cert) { AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE); return NULL; } /* initialize properties */ x509_cert->serial_number = 0; x509_cert->subject =NULL; x509_cert->issuer =NULL; x509_cert->key_identifier =NULL; x509_cert->fingerprint =NULL; x509_cert->date =NULL; x509_cert->hash =NULL; x509_cert->data =NULL; x509_cert->public_key =NULL; x509_cert->common_name = NULL; return x509_cert; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_x509_cert_free(oxs_x509_cert_t *x509_cert, const axutil_env_t *env) { if(x509_cert->subject ){ AXIS2_FREE(env->allocator, x509_cert->subject ); x509_cert->subject =NULL; } if(x509_cert->issuer ){ AXIS2_FREE(env->allocator, x509_cert->issuer ); x509_cert->issuer =NULL; } if(x509_cert->key_identifier ){ AXIS2_FREE(env->allocator, x509_cert->key_identifier ); x509_cert->key_identifier =NULL; } if(x509_cert->fingerprint ){ AXIS2_FREE(env->allocator, x509_cert->fingerprint ); x509_cert->fingerprint =NULL; } if(x509_cert->date ){ AXIS2_FREE(env->allocator, x509_cert->date ); x509_cert->date =NULL; } if(x509_cert->hash ){ AXIS2_FREE(env->allocator, x509_cert->hash ); x509_cert->hash =NULL; } if(x509_cert->data ){ AXIS2_FREE(env->allocator, x509_cert->data ); x509_cert->data =NULL; } if(x509_cert->public_key){ openssl_pkey_free(x509_cert->public_key, env); x509_cert->public_key = NULL; } if(x509_cert->common_name){ AXIS2_FREE(env->allocator, x509_cert->common_name); x509_cert->common_name = NULL; } AXIS2_FREE(env->allocator, x509_cert); x509_cert = NULL; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_x509_cert_copy_to(oxs_x509_cert_t *x509_cert, const axutil_env_t *env, oxs_x509_cert_t *to) { oxs_x509_cert_set_serial_number(to, env, x509_cert->serial_number); oxs_x509_cert_set_issuer(to, env, x509_cert->issuer); oxs_x509_cert_set_key_identifier(to, env, x509_cert->key_identifier); oxs_x509_cert_set_subject(to, env, x509_cert->subject); oxs_x509_cert_set_fingerprint(to, env, x509_cert->fingerprint); oxs_x509_cert_set_date(to, env, x509_cert->date); oxs_x509_cert_set_hash(to, env, x509_cert->hash); oxs_x509_cert_set_data(to, env, x509_cert->data); openssl_pkey_increment_ref(x509_cert->public_key, env); oxs_x509_cert_set_public_key(to, env, x509_cert->public_key); oxs_x509_cert_set_common_name(to, env, x509_cert->common_name); return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL oxs_x509_cert_get_serial_number(oxs_x509_cert_t *x509_cert, const axutil_env_t *env) { return x509_cert->serial_number; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_x509_cert_get_subject(oxs_x509_cert_t *x509_cert, const axutil_env_t *env) { return x509_cert->subject; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_x509_cert_get_issuer(oxs_x509_cert_t *x509_cert, const axutil_env_t *env) { return x509_cert->issuer; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_x509_cert_get_key_identifier(oxs_x509_cert_t *x509_cert, const axutil_env_t *env) { return x509_cert->key_identifier; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_x509_cert_get_fingerprint(oxs_x509_cert_t *x509_cert, const axutil_env_t *env) { return x509_cert->fingerprint; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_x509_cert_get_date(oxs_x509_cert_t *x509_cert, const axutil_env_t *env) { return x509_cert->date; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_x509_cert_get_hash(oxs_x509_cert_t *x509_cert, const axutil_env_t *env) { return x509_cert->hash; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_x509_cert_get_data(oxs_x509_cert_t *x509_cert, const axutil_env_t *env) { return x509_cert->data; } AXIS2_EXTERN openssl_pkey_t *AXIS2_CALL oxs_x509_cert_get_public_key(oxs_x509_cert_t *x509_cert, const axutil_env_t *env) { return x509_cert->public_key; } AXIS2_EXTERN axis2_char_t * AXIS2_CALL oxs_x509_cert_get_common_name(oxs_x509_cert_t *x509_cert, const axutil_env_t *env) { return x509_cert->common_name; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_x509_cert_set_common_name(oxs_x509_cert_t *x509_cert, const axutil_env_t *env, axis2_char_t *common_name) { if(x509_cert->common_name) { AXIS2_FREE(env->allocator, x509_cert->common_name); x509_cert->common_name = NULL; } x509_cert->common_name = axutil_strdup(env,common_name); return AXIS2_SUCCESS; } /*Setters*/ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_x509_cert_set_serial_number(oxs_x509_cert_t *x509_cert, const axutil_env_t *env, int value) { x509_cert->serial_number= value; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_x509_cert_set_subject(oxs_x509_cert_t *x509_cert, const axutil_env_t *env, axis2_char_t *value) { if(x509_cert->subject) { AXIS2_FREE(env->allocator, x509_cert->subject); x509_cert->subject = NULL; } x509_cert->subject = axutil_strdup(env, value); return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_x509_cert_set_issuer(oxs_x509_cert_t *x509_cert, const axutil_env_t *env, axis2_char_t *value) { if(x509_cert->issuer) { AXIS2_FREE(env->allocator, x509_cert->issuer); x509_cert->issuer = NULL; } x509_cert->issuer = axutil_strdup(env, value); return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_x509_cert_set_key_identifier(oxs_x509_cert_t *x509_cert, const axutil_env_t *env, axis2_char_t *value) { if(x509_cert->key_identifier) { AXIS2_FREE(env->allocator, x509_cert->key_identifier); x509_cert->key_identifier = NULL; } x509_cert->key_identifier = axutil_strdup(env, value); return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_x509_cert_set_fingerprint(oxs_x509_cert_t *x509_cert, const axutil_env_t *env, axis2_char_t *value) { if(x509_cert->fingerprint) { AXIS2_FREE(env->allocator, x509_cert->fingerprint); x509_cert->fingerprint = NULL; } x509_cert->fingerprint = axutil_strdup(env, value); return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_x509_cert_set_date(oxs_x509_cert_t *x509_cert, const axutil_env_t *env, axis2_char_t *value) { if(x509_cert->date) { AXIS2_FREE(env->allocator, x509_cert->date); x509_cert->date = NULL; } x509_cert->date = axutil_strdup(env, value); return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_x509_cert_set_hash(oxs_x509_cert_t *x509_cert, const axutil_env_t *env, axis2_char_t *value) { if(x509_cert->hash) { AXIS2_FREE(env->allocator, x509_cert->hash); x509_cert->hash = NULL; } x509_cert->hash = axutil_strdup(env, value); return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_x509_cert_set_data(oxs_x509_cert_t *x509_cert, const axutil_env_t *env, axis2_char_t *value) { if(x509_cert->data) { AXIS2_FREE(env->allocator, x509_cert->data); x509_cert->data = NULL; } x509_cert->data = axutil_strdup(env, value); return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_x509_cert_set_public_key(oxs_x509_cert_t *x509_cert, const axutil_env_t *env, openssl_pkey_t *public_key) { if(x509_cert->public_key) { openssl_pkey_free(x509_cert->public_key, env); x509_cert->public_key = NULL; } x509_cert->public_key = public_key; return AXIS2_SUCCESS; } rampartc-src-1.3.0/src/omxmlsec/encryption.c0000644000076500007650000002510311202453422020733 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_encryption_symmetric_crypt(const axutil_env_t *env, oxs_ctx_t *enc_ctx, oxs_buffer_t *input, oxs_buffer_t *result) { openssl_cipher_ctx_t *oc_ctx = NULL; openssl_cipher_property_t *cprop = NULL; axis2_char_t *iv = NULL; axis2_char_t *cipher_name = NULL; axis2_status_t ret = AXIS2_FAILURE; /*Get cipher property*/ cprop = oxs_get_cipher_property_for_url(env, oxs_ctx_get_enc_mtd_algorithm(enc_ctx, env)); if (!cprop) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_INVALID_DATA, "Cipher property is NULL"); return AXIS2_FAILURE; } /*Get the IV*/ iv = axutil_strndup(env, (axis2_char_t *)oxs_iv_generate_for_algo(env, oxs_ctx_get_enc_mtd_algorithm(enc_ctx, env)), openssl_cipher_property_get_iv_size(cprop, env)); /*Create the openssl context*/ oc_ctx = openssl_cipher_ctx_create(env); if (!oc_ctx) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_INVALID_DATA, "openssl_cipher_ctx_create failed"); return AXIS2_FAILURE; } /*Set IV*/ ret = openssl_cipher_ctx_set_iv(oc_ctx, env, iv); /*Set key*/ ret = openssl_cipher_ctx_set_key(oc_ctx, env, oxs_ctx_get_key(enc_ctx, env)); /*Set the cipher*/ cipher_name = (axis2_char_t*)openssl_cipher_property_get_name(cprop, env); if (!cipher_name) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_INVALID_DATA, "oxs_get_cipher failed"); return AXIS2_FAILURE; } ret = openssl_cipher_ctx_set_cipher(oc_ctx, env, (EVP_CIPHER*) openssl_get_evp_cipher_by_name( env, (axis2_char_t*)cipher_name) ); /*Now everything is ready for the en/decryption*/ /*ENCRYPTION*/ if (oxs_ctx_get_operation(enc_ctx, env) == OXS_CTX_OPERATION_ENCRYPT) { axis2_char_t *encoded_str = NULL; int enclen = -1; int encodedlen = -1; oxs_buffer_t *output = NULL; output = oxs_buffer_create(env); /*Encrypt*/ enclen = openssl_bc_crypt(env, oc_ctx, input, output, OPENSSL_ENCRYPT); if (enclen < 0){ oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_ENCRYPT_FAILED, "openssl_block_cipher_crypt FAILED"); return AXIS2_FAILURE; } encodedlen = axutil_base64_encode_len(enclen); encoded_str = AXIS2_MALLOC(env->allocator, encodedlen); ret = axutil_base64_encode_binary(encoded_str, oxs_buffer_get_data(output, env), enclen); if (ret < 0) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_INVALID_DATA, "axutil_base64_encode_binary failed"); return AXIS2_FAILURE; } /*Attach the result to the result buf*/ ret = oxs_buffer_populate(result, env, (unsigned char*)encoded_str, encodedlen); /*Free*/ oxs_buffer_free(output, env); output = NULL; AXIS2_FREE(env->allocator, encoded_str); encoded_str = NULL; /*DECRYPTION*/ } else if (oxs_ctx_get_operation(enc_ctx, env) == OXS_CTX_OPERATION_DECRYPT) { unsigned char *decoded_data = NULL;/*Can be binary*/ int decoded_len = -1; int enclen = -1; int x=-1; oxs_buffer_t *decoded_buf = NULL; decoded_buf = oxs_buffer_create(env); /*First we need to base64 decode*/ x = axutil_base64_decode_len((const char*) oxs_buffer_get_data(input,env)); decoded_data = AXIS2_MALLOC(env->allocator, x); decoded_len = axutil_base64_decode_binary(decoded_data, (char*)oxs_buffer_get_data(input, env)); if (decoded_len < 0) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_DECRYPT_FAILED, "axutil_base64_decode_binary failed"); return AXIS2_FAILURE; } /*Populate decoded (input to the crypto function) buffer*/ ret = oxs_buffer_populate(decoded_buf, env, decoded_data, decoded_len); /*Then we decrypt*/ enclen = openssl_bc_crypt(env, oc_ctx, decoded_buf, result, OPENSSL_DECRYPT); if (enclen < 0) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_DECRYPT_FAILED, "openssl_block_cipher_crypt FAILED"); return AXIS2_FAILURE; } /*Free*/ oxs_buffer_free(decoded_buf, env); decoded_buf = NULL; AXIS2_FREE(env->allocator, decoded_data); decoded_data = NULL; } else { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_INVALID_DATA, "Invalid operation type %d", oxs_ctx_get_operation(enc_ctx, env)); return AXIS2_FAILURE; } /*FREE*/ openssl_cipher_property_free(cprop, env); cprop = NULL; AXIS2_FREE(env->allocator, iv); iv = NULL; openssl_cipher_ctx_free(oc_ctx, env); oc_ctx = NULL; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_encryption_asymmetric_crypt(const axutil_env_t *env, oxs_asym_ctx_t *asym_ctx, oxs_buffer_t *input, oxs_buffer_t *result) { openssl_pkey_t *pkey = NULL; oxs_asym_ctx_operation_t operation = -1; axis2_status_t status = AXIS2_FAILURE; axis2_char_t *algorithm = NULL; axis2_char_t *padding = NULL; algorithm = oxs_asym_ctx_get_algorithm(asym_ctx, env); /* We support RSA v1.5 encryption only. If any other algorithm is * specified, replace it with the proper one if(0 != (axutil_strcmp(OXS_HREF_RSA_PKCS1, algorithm ))) { oxs_asym_ctx_set_algorithm(asym_ctx, env, OXS_HREF_RSA_PKCS1); }*/ /*Set the proper padding for the algorithm*/ if ((axutil_strcmp(OXS_HREF_RSA_OAEP, algorithm)) == 0) { padding = OPENSSL_RSA_PKCS1_OAEP_PADDING; } else if ((axutil_strcmp(OXS_HREF_RSA_PKCS1, algorithm)) == 0) { padding = OPENSSL_RSA_PKCS1_PADDING; } /*Check for the operation and call appropriate method*/ operation = oxs_asym_ctx_get_operation(asym_ctx, env); if (operation == OXS_ASYM_CTX_OPERATION_PUB_ENCRYPT) { axis2_char_t *encoded_str = NULL; oxs_x509_cert_t *x509_cert = NULL; oxs_buffer_t *out_buf = NULL; int enclen = -1; int encodedlen = -1; int ret = -1; /*Operation is PUB ENCRYPT; Get the public key from the context*/ x509_cert = oxs_asym_ctx_get_certificate(asym_ctx, env); if (!x509_cert) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_INVALID_DATA, "Certificate not set"); return AXIS2_FAILURE; } pkey = oxs_x509_cert_get_public_key(x509_cert, env); /* Encrypt using the public key. Then base64 encode and populate the * buffer */ out_buf = oxs_buffer_create(env); enclen = openssl_rsa_pub_encrypt(env, pkey, padding, input, out_buf); encodedlen = axutil_base64_encode_len(enclen); encoded_str = AXIS2_MALLOC(env->allocator, encodedlen); ret = axutil_base64_encode(encoded_str, (const char *)oxs_buffer_get_data(out_buf, env), enclen); status = oxs_buffer_populate(result, env, (unsigned char*)encoded_str, encodedlen); /*Free*/ oxs_buffer_free(out_buf, env); out_buf = NULL; AXIS2_FREE(env->allocator, encoded_str); encoded_str = NULL; } else if (operation == OXS_ASYM_CTX_OPERATION_PRV_DECRYPT) { unsigned char *decoded_encrypted_str = NULL; oxs_buffer_t *dec_enc_buf = NULL; int ret = -1; int declen = -1; /*Operation id PRV DECRYPT; Get the private key from the context*/ pkey = oxs_asym_ctx_get_private_key(asym_ctx, env); /*Base64 decode first. Then do the decryption and populate the buffer*/ decoded_encrypted_str = AXIS2_MALLOC(env->allocator, axutil_base64_decode_len( (char*)oxs_buffer_get_data(input, env))); ret = axutil_base64_decode_binary(decoded_encrypted_str, (char*)oxs_buffer_get_data(input, env)); dec_enc_buf = oxs_buffer_create(env); oxs_buffer_populate(dec_enc_buf, env, decoded_encrypted_str, ret); declen = openssl_rsa_prv_decrypt(env, pkey, padding, dec_enc_buf, result); /*Free*/ AXIS2_FREE(env->allocator, decoded_encrypted_str); decoded_encrypted_str = NULL; oxs_buffer_free(dec_enc_buf, env); dec_enc_buf = NULL; if (declen < 0) { return AXIS2_FAILURE; } } else { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_INVALID_DATA, "Operation not supported."); return AXIS2_FAILURE; } return AXIS2_SUCCESS; } rampartc-src-1.3.0/src/omxmlsec/axiom.c0000644000076500007650000005044711202453422017667 0ustar shankarshankar/* * 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. */ #include #include #include /** * Adds an attribute to a particular node * @param env Environment. MUST NOT be NULL * @param node the node where the attibute will be added * @param attribute_ns the the ns_prefix of the attribute * @param attribute_ns_uri the uri of the attribute * @param attribute the localname of the attribute * @param value the value of the attribute * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_axiom_add_attribute( const axutil_env_t *env, axiom_node_t* node, axis2_char_t* attribute_ns, axis2_char_t* attribute_ns_uri, axis2_char_t* attribute, axis2_char_t* value) { axiom_attribute_t *attr = NULL; axiom_element_t *ele = NULL; axis2_status_t status = AXIS2_FAILURE; axiom_namespace_t *ns = NULL; if(attribute_ns_uri) { ns = axiom_namespace_create(env, attribute_ns_uri, attribute_ns); } ele = axiom_node_get_data_element(node, env); attr = axiom_attribute_create(env, attribute , value, ns); if((!attr) && ns) { axiom_namespace_free(ns, env); } status = axiom_element_add_attribute(ele, env, attr, node); return status; } /** * Finds the number of childern with given qname * @param env Environment. MUST NOT be NULL, * @param parent the root element defining start of the search * @param localname the local part of the qname * @param ns_uri uri part of the qname * @param prefix the prefix part of the qname * @return the number of children found */ AXIS2_EXTERN int AXIS2_CALL oxs_axiom_get_number_of_children_with_qname( const axutil_env_t *env, axiom_node_t* parent, axis2_char_t* local_name, axis2_char_t* ns_uri, axis2_char_t* prefix) { axutil_qname_t *qname = NULL; axiom_element_t *parent_ele = NULL; axiom_children_qname_iterator_t *qname_iter = NULL; int counter = 0; parent_ele = axiom_node_get_data_element(parent, env); if(!parent_ele) { return -1; } qname = axutil_qname_create(env, local_name, ns_uri, prefix); qname_iter = axiom_element_get_children_with_qname(parent_ele, env, qname, parent); while (axiom_children_qname_iterator_has_next(qname_iter , env)) { axiom_node_t *temp_node = NULL; counter++; temp_node = axiom_children_qname_iterator_next(qname_iter, env); } axutil_qname_free(qname, env); qname = NULL; return counter; } /** * Traverse thru the node and its descendents. Check if the localname is equal to the given name * @param env Environment. MUST NOT be NULL, * @param node the node to be searched * @param localname the local name of the node to be searched * @return the node if found, else NULL */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL oxs_axiom_get_node_by_local_name( const axutil_env_t *env, axiom_node_t *node, axis2_char_t *local_name) { axis2_char_t *temp_name = NULL; if(!node) { return NULL; } if(axiom_node_get_node_type(node, env) != AXIOM_ELEMENT) { return NULL; } temp_name = axiom_util_get_localname(node, env); AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[rampart]Checking node %s for %s", temp_name, local_name ); if(!axutil_strcmp(temp_name, local_name)) { /* Gottcha.. return this node */ return node; } else { /* Doesn't match? Get the children and search for them */ axiom_node_t *temp_node = NULL; temp_node = axiom_node_get_first_element(node, env); while(temp_node) { axiom_node_t *res_node = NULL; res_node = oxs_axiom_get_node_by_local_name(env, temp_node, local_name); if(res_node) { return res_node; } temp_node = axiom_node_get_next_sibling(temp_node, env); } } return NULL; } /** * Traverse thru the node and its descendents. Check if the node has a particular attibure value, * whose attribute name as in @attr and value as in @val * @param env Environment. MUST NOT be NULL, * @param node the node to be searched * @param attr the attribute name of the node * @param val the attribute value of the node * @param ns namespace of the attribute * @return the node if found, else NULL */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL oxs_axiom_get_node_by_id( const axutil_env_t *env, axiom_node_t *node, axis2_char_t *attr, axis2_char_t *val, axis2_char_t *ns) { axis2_char_t *attribute_value = NULL; if(!node) { return NULL; } if(axiom_node_get_node_type(node, env) != AXIOM_ELEMENT) { return NULL; } attribute_value = oxs_axiom_get_attribute_value_of_node_by_name(env, node, attr, ns); if(!axutil_strcmp(val, attribute_value)) { /* Gottcha.. return this node */ return node; } else { /* Doesn't match? Get the children and search recursively. */ axiom_node_t *temp_node = NULL; temp_node = axiom_node_get_first_element(node, env); while (temp_node) { axiom_node_t *res_node = NULL; res_node = oxs_axiom_get_node_by_id(env, temp_node, attr, val, ns); if(res_node) { return res_node; } temp_node = axiom_node_get_next_sibling(temp_node, env); } } return NULL; } /** * Traverse thru the node and its descendents. Check if the node has a particular attribute with * name as in @attr and namespace as in @ns. Returns the attribute value. * @param env Environment. MUST NOT be NULL, * @param node the node to be searched * @param attribute_name the attribute name of the node * @param ns namespace of the attribute * @return the attribute value if found, else NULL */ AXIS2_EXTERN axis2_char_t* AXIS2_CALL oxs_axiom_get_attribute_value_of_node_by_name( const axutil_env_t *env, axiom_node_t *node, axis2_char_t *attribute_name, axis2_char_t *ns_uri) { axis2_char_t *found_val = NULL; axiom_element_t *ele = NULL; axutil_hash_t *attr_list = NULL; axutil_hash_index_t *hi = NULL; ele = axiom_node_get_data_element(node, env); /* Get attribute list of the element */ attr_list = axiom_element_extract_attributes(ele, env, node); if(!attr_list) { return NULL; } /* namespace uri can be NULL. In that case, use empty string */ if(!ns_uri) { ns_uri = ""; } /* Traverse thru all the attributes. If both localname and the nsuri matches return the val */ for (hi = axutil_hash_first(attr_list, env); hi; hi = axutil_hash_next(env, hi)) { void *attr = NULL; axiom_attribute_t *om_attr = NULL; axutil_hash_this(hi, NULL, NULL, &attr); if (attr) { axis2_char_t *this_attr_name = NULL; axis2_char_t *this_attr_ns_uri = NULL; axiom_namespace_t *attr_ns = NULL; om_attr = (axiom_attribute_t*)attr; this_attr_name = axiom_attribute_get_localname(om_attr, env); attr_ns = axiom_attribute_get_namespace(om_attr, env); if(attr_ns) { this_attr_ns_uri = axiom_namespace_get_uri(attr_ns, env); } else { this_attr_ns_uri = ""; } if((!axutil_strcmp(attribute_name, this_attr_name)) && (!axutil_strcmp(ns_uri, this_attr_ns_uri))) { /* Got it !!! */ found_val = axiom_attribute_get_value(om_attr, env); AXIS2_FREE(env->allocator, hi); break; } } } for(hi = axutil_hash_first(attr_list, env); hi; hi = axutil_hash_next(env, hi)) { void *val = NULL; axutil_hash_this(hi, NULL, NULL, &val); if (val) { axiom_attribute_free((axiom_attribute_t *)val, env); val = NULL; } } axutil_hash_free(attr_list, env); attr_list = NULL; return found_val; } /** * Traverse thru the node and its descendents. Check if the node has a particular attribute with * qname as in @qname. Returns the attribute value. * @param env Environment. MUST NOT be NULL, * @param node the node to be searched * @param qname the qname of the attribute * @return the attribute value if found, else NULL */ AXIS2_EXTERN axis2_char_t* AXIS2_CALL oxs_axiom_get_attribute_val_of_node_by_qname( const axutil_env_t *env, axiom_node_t *node, axutil_qname_t *qname) { axis2_char_t *local_name = NULL; axis2_char_t *ns_uri = NULL; /* Get localname of the qname */ local_name = axutil_qname_get_localpart(qname, env); /* Get namespace uri of the qname */ ns_uri = axutil_qname_get_uri(qname, env); return oxs_axiom_get_attribute_value_of_node_by_name(env, node, local_name, ns_uri); } /** * Check the node and its children. Check if the localname is equal to the given name * Note: You may pass the prefix=NULL as the prefix may be different depending on the impl * @param env Environment. MUST NOT be NULL, * @param parent the node to be searched * @param local_name the local name of the node to be searched * @ns_uri namespace uri of the node to be searched * @prefix prefix of the node to be searched. If NULL, node with any prefix will be considered * @return the node if found, else NULL */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL oxs_axiom_get_first_child_node_by_name( const axutil_env_t *env, axiom_node_t* parent, axis2_char_t* local_name, axis2_char_t* ns_uri, axis2_char_t* prefix) { axutil_qname_t *qname = NULL; axiom_node_t *node = NULL; axiom_element_t *parent_ele = NULL; axiom_element_t *ele = NULL; qname = axutil_qname_create(env, local_name, ns_uri, prefix); parent_ele = axiom_node_get_data_element(parent, env); if (!parent_ele) { return NULL; } /*Get the child*/ ele = axiom_element_get_first_child_with_qname(parent_ele, env, qname, parent, &node); axutil_qname_free(qname, env); qname = NULL; return node; } /** * Returns content of a node * @param env Environment. MUST NOT be NULL, * @param node the node whose content should be retrieved * @return the content of the node if found, else NULL */ AXIS2_EXTERN axis2_char_t* AXIS2_CALL oxs_axiom_get_node_content( const axutil_env_t *env, axiom_node_t* node) { axiom_element_t *ele = NULL; axis2_char_t *content = NULL; ele = axiom_node_get_data_element(node, env); if(!ele) { return NULL; } content = axiom_element_get_text(ele, env, node); return content; } /** * Deserialises given buffer and creates the axiom node * @param env Environment. Must not be NULL * @param buffer representation of serialised node * @return deserialised node if success. NULL otherwise. */ AXIS2_EXTERN axiom_node_t *AXIS2_CALL oxs_axiom_deserialize_node( const axutil_env_t *env, axis2_char_t* buffer) { axiom_document_t *doc = NULL; axiom_stax_builder_t *builder = NULL; axiom_xml_reader_t *reader = NULL; axiom_node_t *node = NULL; if(!buffer) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Deserialise method called with invalid buffer."); return NULL; } reader = axiom_xml_reader_create_for_memory( env, (void*)buffer, axutil_strlen(buffer), NULL, AXIS2_XML_PARSER_TYPE_BUFFER); if(!reader) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Could not be able to create axiom_xml_reader."); return NULL; } builder = axiom_stax_builder_create(env, reader); if(!builder) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Could not be able to create axiom_stax_builder."); return NULL; } doc = axiom_document_create(env, NULL, builder); if(!doc) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Could not be able to create axiom_document."); return NULL; } node = axiom_document_build_all(doc, env); if(!node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Could not be able to deserialize the node."); axiom_document_free(doc, env); return NULL; } /* Free stax builder. The stax builder will free the reader. */ axiom_stax_builder_free_self(builder, env); builder = NULL; axiom_document_free_self(doc, env); doc = NULL; return node; } /** * Checks whether given node is having same name and namespace as given * @param env Environment. Must not be null * @param node node to be checked for name and namespace * @param name local name to be checked against given node * @param ns namespace to be checked against given node. Can be null. If null, will be omitted * @return AXIS2_TRUE if given name/ns is same as in the node. AXIS2_FALSE otherwise. */ AXIS2_EXTERN axis2_bool_t AXIS2_CALL oxs_axiom_check_node_name( const axutil_env_t *env, axiom_node_t* node, axis2_char_t* name, axis2_char_t* ns) { axiom_element_t * ele = NULL; axis2_char_t* namestr = NULL; axis2_char_t* ns_str = NULL; axutil_qname_t* qname = NULL; ele = axiom_node_get_data_element(node, env); qname = axiom_element_get_qname(ele, env, node); namestr = axutil_qname_get_localpart(qname, env); if(axutil_strcmp(namestr, name)) { return AXIS2_FALSE; } if(ns) { ns_str = axutil_qname_get_uri(qname, env); if(axutil_strcmp(ns_str, ns)) { return AXIS2_FALSE; } } return AXIS2_TRUE; } /** * moves the given node before second node. * @param env Environment. Must not be null * @param node_to_move node to be moved * @param node_before node_to_move will be moved before this node * @return status of the operation */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_axiom_interchange_nodes( const axutil_env_t *env, axiom_node_t *node_to_move, axiom_node_t *node_before) { axis2_status_t status = AXIS2_FAILURE; axiom_node_t *temp_node = NULL; temp_node = axiom_node_detach(node_to_move,env); status = axiom_node_insert_sibling_before(node_before, env, temp_node); return status; } /** * Adds @child as the first child of @parent * @param env Environment. Must not be null * @param parent parent node * @param child child node which has to be the first child of parent * @return status of the operation */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_axiom_add_as_the_first_child( const axutil_env_t *env, axiom_node_t *parent, axiom_node_t *child) { axis2_status_t status = AXIS2_FAILURE; axiom_node_t *first_child = NULL; first_child = axiom_node_get_first_child(parent, env); status = axiom_node_insert_sibling_before(first_child, env, child); return status; } /** * First find the root of the scope node. Traverse thru the root node and its * children. Check if the element has the given qname and has a attribute * equal to the given values. * @param env Environment. MUST NOT be NULL, * @param node the node to be searched * @param e_name element name * @param e_ns element namespace. If NULL doesn't consider the namespaces * @param attr_name the attribute name of the node * @param attr_val the attribute value of the node * @param attr_ns the attribute namespace. If NULL doesn't consider namespaces. * @return the node if found, else NULL */ AXIS2_EXTERN axiom_node_t * AXIS2_CALL oxs_axiom_get_first_node_by_name_and_attr_val_from_xml_doc( const axutil_env_t *env, axiom_node_t *node, axis2_char_t *e_name, axis2_char_t *e_ns, axis2_char_t *attr_name, axis2_char_t *attr_val, axis2_char_t *attr_ns) { axiom_node_t *p = NULL; axiom_node_t *root = NULL; /* find the root node */ p = node; do { root = p; p = axiom_node_get_parent(root, env); } while (p); /* from the root node, find the node with name and attribute value */ return oxs_axiom_get_first_node_by_name_and_attr_val( env, root, e_name, e_ns, attr_name, attr_val, attr_ns); } /** * Traverse thru the node and its children. Check if the element has the * given qname and has a id attribute equal to the given value. * @param env Environment. MUST NOT be NULL, * @param node the node to be searched * @param e_name element name * @param e_ns element namespace. If NULL doesn't consider the namespaces * @param attr_name the attribute name of the node * @param attr_val the attribute value of the node * @param attr_ns the attribute namespace. If NULL doesn't consider namespaces. * @return the node if found, else NULL */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL oxs_axiom_get_first_node_by_name_and_attr_val( const axutil_env_t *env, axiom_node_t *node, axis2_char_t *e_name, axis2_char_t *e_ns, axis2_char_t *attr_name, axis2_char_t *attr_val, axis2_char_t *attr_ns) { axis2_char_t *attribute_value = NULL; axis2_char_t *localname = NULL; axiom_namespace_t *nmsp = NULL; axiom_element_t *element = NULL; axis2_bool_t element_match = AXIS2_FALSE; axiom_node_t *temp_node = NULL; if(axiom_node_get_node_type(node, env) != AXIOM_ELEMENT) { return NULL; } element = axiom_node_get_data_element(node, env); localname = axiom_element_get_localname(element, env); if(localname && !axutil_strcmp(localname, e_name)) { element_match = AXIS2_TRUE; if(e_ns) { nmsp = axiom_element_get_namespace(element, env, node); if(nmsp) { axis2_char_t *namespacea = NULL; namespacea = axiom_namespace_get_uri(nmsp, env); if(axutil_strcmp(e_ns, namespacea)) { element_match = AXIS2_FALSE; } } } /* element is ok. So, we have to check the attribute value */ if(element_match) { if(attr_ns) { axiom_attribute_t *attr = NULL; axutil_qname_t *qname = axutil_qname_create(env, attr_name, attr_ns, NULL); attr = axiom_element_get_attribute(element, env, qname); if(attr) { attribute_value = axiom_attribute_get_value(attr, env); } axutil_qname_free(qname, env); } else { attribute_value = axiom_element_get_attribute_value_by_name( element, env, attr_name); } } if (attribute_value && !axutil_strcmp(attribute_value, attr_val)) { return node; } } /* Doesn't match? Get the children and search */ temp_node = axiom_node_get_first_element(node, env); while (temp_node) { axiom_node_t *res_node = NULL; res_node = oxs_axiom_get_first_node_by_name_and_attr_val( env, temp_node, e_name, e_ns, attr_name, attr_val, attr_ns); if (res_node) { return res_node; } temp_node = axiom_node_get_next_sibling(temp_node, env); } return NULL; } /** * Clones the given node. * @param env Environment. Must not be null * @param node node to be cloned * @return cloned node if success. NULL otherwise */ AXIS2_EXTERN axiom_node_t *AXIS2_CALL oxs_axiom_clone_node( const axutil_env_t *env, axiom_node_t *node) { axis2_char_t* node_string = NULL; axiom_node_t *clone = NULL; if(!node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Could not be able to clone the node. Given node is not valid."); return NULL; } node_string = axiom_node_sub_tree_to_string(node, env); clone = oxs_axiom_deserialize_node(env, node_string); if(node_string) { AXIS2_FREE(env->allocator, node_string); } return clone; } rampartc-src-1.3.0/src/omxmlsec/key.c0000644000076500007650000002537111202453422017340 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include #include #include #include struct oxs_key_t { oxs_buffer_t *buf; axis2_char_t *name; int usage; axis2_char_t *nonce; /*Specially added for WS-Secure Conversation*/ axis2_char_t *label; /*Specially added for WS-Secure Conversation*/ int offset; /*Specially added for WS-Secure Conversation*/ int length; /*Specially added for WS-Secure Conversation. used to pass the derived key length for processing.*/ /*size is used when building and length is used when processing*/ axis2_char_t *key_sha; }; /******************** end of function headers *****************/ AXIS2_EXTERN unsigned char *AXIS2_CALL oxs_key_get_data( const oxs_key_t *key, const axutil_env_t *env) { AXIS2_ENV_CHECK(env, NULL); return oxs_buffer_get_data(key->buf, env); } AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_key_get_name( const oxs_key_t *key, const axutil_env_t *env) { AXIS2_ENV_CHECK(env, NULL); return key->name; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_key_get_nonce( const oxs_key_t *key, const axutil_env_t *env) { AXIS2_ENV_CHECK(env, NULL); return key->nonce; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_key_get_label( const oxs_key_t *key, const axutil_env_t *env) { AXIS2_ENV_CHECK(env, NULL); return key->label; } AXIS2_EXTERN oxs_buffer_t *AXIS2_CALL oxs_key_get_buffer(const oxs_key_t *key, const axutil_env_t *env) { AXIS2_ENV_CHECK(env, NULL); return key->buf; } AXIS2_EXTERN int AXIS2_CALL oxs_key_get_size( const oxs_key_t *key, const axutil_env_t *env) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); return oxs_buffer_get_size(key->buf, env); } AXIS2_EXTERN int AXIS2_CALL oxs_key_get_usage( const oxs_key_t *key, const axutil_env_t *env) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); return key->usage; } AXIS2_EXTERN int AXIS2_CALL oxs_key_get_offset( const oxs_key_t *key, const axutil_env_t *env) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); return key->offset; } AXIS2_EXTERN int AXIS2_CALL oxs_key_get_length( const oxs_key_t *key, const axutil_env_t *env) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); return key->length; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_set_name( oxs_key_t *key, const axutil_env_t *env, axis2_char_t *name) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, name, AXIS2_FAILURE); if (key->name) { AXIS2_FREE(env->allocator, key->name); key->name = NULL; } key->name = axutil_strdup(env, name); return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_set_key_sha( oxs_key_t *key, const axutil_env_t *env, axis2_char_t *key_sha) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, key_sha, AXIS2_FAILURE); if(key->key_sha) { AXIS2_FREE(env->allocator, key->key_sha); key->key_sha = NULL; } key->key_sha = key_sha; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_key_get_key_sha( const oxs_key_t *key, const axutil_env_t *env) { AXIS2_ENV_CHECK(env, NULL); return key->key_sha; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_set_nonce( oxs_key_t *key, const axutil_env_t *env, axis2_char_t *nonce) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, nonce, AXIS2_FAILURE); if (key->nonce) { AXIS2_FREE(env->allocator, key->nonce); key->nonce = NULL; } key->nonce = axutil_strdup(env, nonce); return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_set_label( oxs_key_t *key, const axutil_env_t *env, axis2_char_t *label) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, label, AXIS2_FAILURE); if (key->label) { AXIS2_FREE(env->allocator, key->label); key->label = NULL; } key->label = axutil_strdup(env, label); return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_set_usage( oxs_key_t *key, const axutil_env_t *env, int usage) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); key->usage = usage; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_set_offset( oxs_key_t *key, const axutil_env_t *env, int offset) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); key->offset = offset; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_set_length( oxs_key_t *key, const axutil_env_t *env, int length) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); key->length = length; return AXIS2_SUCCESS; } AXIS2_EXTERN oxs_key_t *AXIS2_CALL oxs_key_dup(oxs_key_t *key, const axutil_env_t *env) { oxs_key_t *new_key = NULL; AXIS2_ENV_CHECK(env, NULL); AXIS2_PARAM_CHECK(env->error, key, NULL); /*Create new key*/ new_key = oxs_key_create(env); if (!new_key) { AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE); return NULL; } /*Populate with data buf*/ oxs_key_populate_with_buf(new_key, env, oxs_key_get_buffer(key, env), key->name, key->usage); new_key->key_sha = key->key_sha; return new_key; } AXIS2_EXTERN oxs_key_t *AXIS2_CALL oxs_key_create(const axutil_env_t *env) { oxs_key_t *key = NULL; AXIS2_ENV_CHECK(env, NULL); key = (oxs_key_t*)AXIS2_MALLOC(env->allocator, sizeof(oxs_key_t)); if (!key) { AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE); return NULL; } key->buf = NULL; key->name = NULL; key->nonce = NULL; key->label = NULL; key->usage = -1; key->offset = 0; key->length = 0; key->key_sha = NULL; /*additionally we need to create a buffer to keep data*/ key->buf = oxs_buffer_create(env); return key; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_free(oxs_key_t *key, const axutil_env_t *env) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); oxs_buffer_free(key->buf, env); key->buf = NULL; AXIS2_FREE(env->allocator, key->name); key->name = NULL; AXIS2_FREE(env->allocator, key->nonce); key->nonce = NULL; AXIS2_FREE(env->allocator, key->label); key->label = NULL; if(key->key_sha) AXIS2_FREE(env->allocator, key->key_sha); AXIS2_FREE(env->allocator, key); key = NULL; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_populate_with_buf(oxs_key_t *key, const axutil_env_t *env, oxs_buffer_t *buffer, axis2_char_t *name, int usage) { int ret; AXIS2_ENV_CHECK(env, AXIS2_FAILURE); ret = oxs_key_set_name(key, env, name); ret = oxs_key_set_usage(key, env, usage); ret = oxs_buffer_populate(key->buf, env, oxs_buffer_get_data(buffer, env), oxs_buffer_get_size(buffer, env)); return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_populate(oxs_key_t *key, const axutil_env_t *env, unsigned char *data, axis2_char_t *name, int size, int usage) { int ret; AXIS2_ENV_CHECK(env, AXIS2_FAILURE); ret = oxs_key_set_name(key, env, name); ret = oxs_key_set_usage(key, env, usage); ret = oxs_buffer_populate(key->buf, env, data, size); return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_read_from_file(oxs_key_t *key, const axutil_env_t *env, axis2_char_t *file_name) { oxs_buffer_t *buf = NULL; axis2_status_t status = AXIS2_FAILURE; buf = oxs_buffer_create(env); status = oxs_buffer_read_file(buf, env, file_name); status = oxs_key_populate(key, env, oxs_buffer_get_data(buf, env), file_name, oxs_buffer_get_size(buf, env), OXS_KEY_USAGE_NONE); oxs_buffer_free(buf, env); buf = NULL; return status; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_for_algo(oxs_key_t *key, const axutil_env_t *env, rp_algorithmsuite_t *key_algo) { oxs_buffer_t *key_buf = NULL; /*openssl_cipher_property_t * cprop = NULL;*/ axis2_status_t ret = AXIS2_FAILURE; int size; #if 0 if(0 == axutil_strcmp(key_algo, OXS_HREF_HMAC_SHA1)){ /*We need to make an special entry for the HMAC-Sha1 as we do not need a cipher property for it.*/ size = OPENSSL_HMAC_SHA1_KEY_LEN; }else{ cprop = (openssl_cipher_property_t *)oxs_get_cipher_property_for_url(env, key_algo); if (!cprop) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_DEFAULT, "openssl_get_cipher_property failed"); return AXIS2_FAILURE; } size = openssl_cipher_property_get_key_size(cprop, env); openssl_cipher_property_free(cprop, env); cprop = NULL; } #endif if(key_algo) size = rp_algorithmsuite_get_min_symmetric_keylength(key_algo,env)/8; else size = OPENSSL_HMAC_SHA1_KEY_LEN; key_buf = oxs_buffer_create(env); /*The actual key generation happens here*/ ret = openssl_generate_random_data(env, key_buf, size); if (ret == AXIS2_FAILURE) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_DEFAULT, "generate_random_data failed"); return AXIS2_FAILURE; } ret = oxs_key_populate(key, env, oxs_buffer_get_data(key_buf, env), "for-algo", oxs_buffer_get_size(key_buf, env), OXS_KEY_USAGE_NONE); oxs_buffer_free(key_buf, env); key_buf = NULL; return ret; } rampartc-src-1.3.0/src/omxmlsec/xml_encryption.c0000644000076500007650000005522311202453422021621 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include /*private functions*/ /** * * * WEqswOIUsd * * * */ static axis2_status_t oxs_xml_enc_populate_stref_with_key_identifier(const axutil_env_t *env, oxs_asym_ctx_t *asym_ctx, axiom_node_t *stref_node, axis2_bool_t is_thumbprint) { axiom_node_t *key_identifier_node = NULL; axis2_char_t *key_identifier = NULL; axis2_char_t *val_type = NULL; oxs_x509_cert_t *cert = NULL; cert = oxs_asym_ctx_get_certificate(asym_ctx, env); if(is_thumbprint){ key_identifier = oxs_x509_cert_get_fingerprint(cert, env); val_type = OXS_X509_TUMBP_PRINT_SHA1; }else{ key_identifier = oxs_x509_cert_get_key_identifier(cert, env); val_type = OXS_X509_SUBJ_KI; } if(!key_identifier){ return AXIS2_FAILURE; } /*Build KeyIdentifier node*/ key_identifier_node = oxs_token_build_key_identifier_element( env, stref_node, OXS_ENCODING_BASE64BINARY, val_type, key_identifier); return AXIS2_SUCCESS; } /** * * KJDSsdlDJjsd= * * * * * */ static axis2_status_t oxs_xml_enc_populate_stref_with_bst(const axutil_env_t *env, oxs_asym_ctx_t *asym_ctx, axiom_node_t *stref_node, axiom_node_t *parent) { axiom_node_t *ref_node = NULL; axiom_node_t *bst_node = NULL; axis2_char_t *bst_data = NULL; axis2_char_t *id = NULL; axis2_char_t *ref_id = NULL; oxs_x509_cert_t *cert = NULL; cert = oxs_asym_ctx_get_certificate(asym_ctx, env); bst_data = oxs_x509_cert_get_data(cert, env); if(!bst_data){ return AXIS2_FAILURE; } /*Generate an ID for BST*/ id = oxs_util_generate_id(env,(axis2_char_t*)OXS_CERT_ID); /*Build BinarySecurityToken as a child of parent(wsse:Security)*/ bst_node = oxs_token_build_binary_security_token_element(env, parent, id, OXS_ENCODING_BASE64BINARY, OXS_VALUE_X509V3, bst_data); /*Build a Reference to above BST*/ ref_id = axutil_stracat(env, OXS_LOCAL_REFERENCE_PREFIX, id); ref_node = oxs_token_build_reference_element(env, stref_node, ref_id, OXS_VALUE_X509V3); return AXIS2_SUCCESS; } /** * * * * UYISDjsdaousdWEqswOIUsd * * * */ static axis2_status_t oxs_xml_enc_populate_stref_with_embedded(const axutil_env_t *env, oxs_asym_ctx_t *asym_ctx, axiom_node_t *stref_node) { axiom_node_t *embedded_node = NULL; axiom_node_t *bst_node = NULL; axis2_char_t *bst_data = NULL; oxs_x509_cert_t *cert = NULL; cert = oxs_asym_ctx_get_certificate(asym_ctx, env); bst_data = oxs_x509_cert_get_data(cert, env); if(!bst_data){ return AXIS2_FAILURE; } /*Build embedded token*/ embedded_node = oxs_token_build_embedded_element(env, stref_node, NULL); /*Build BinarySecurityToken*/ bst_node = oxs_token_build_binary_security_token_element(env, embedded_node, NULL, OXS_ENCODING_BASE64BINARY, OXS_VALUE_X509V3, bst_data); return AXIS2_SUCCESS; } /** * * * * * C=US, O=VeriSign, Inc., * 93243297328 * * * * */ static axis2_status_t oxs_xml_enc_populate_stref_with_issuer_serial(const axutil_env_t *env, oxs_asym_ctx_t *asym_ctx, axiom_node_t *stref_node) { axiom_node_t *x509_data_node = NULL; axiom_node_t *issuer_serial_node = NULL; oxs_x509_cert_t *cert = NULL; axis2_char_t *issuer_name = NULL; axis2_char_t serial_number[255]; int serial = -1; cert = oxs_asym_ctx_get_certificate(asym_ctx, env); issuer_name = oxs_x509_cert_get_issuer(cert, env); serial = oxs_x509_cert_get_serial_number(cert, env); if((!issuer_name) || (serial<0)){ return AXIS2_FAILURE; } sprintf(serial_number, "%d", serial); /*Build x509Data*/ x509_data_node = oxs_token_build_x509_data_element(env, stref_node); issuer_serial_node = oxs_token_build_x509_issuer_serial_with_data(env, x509_data_node, issuer_name, serial_number); return AXIS2_SUCCESS; } static axis2_status_t oxs_xml_enc_process_key_info( const axutil_env_t *env, oxs_asym_ctx_t *asym_ctx, axiom_node_t *key_info_node, axiom_node_t *parent_node) { axiom_node_t *st_ref_node = NULL; st_ref_node = oxs_axiom_get_first_child_node_by_name( env, key_info_node, OXS_NODE_SECURITY_TOKEN_REFRENCE, OXS_WSSE_XMLNS, OXS_WSSE); if(!st_ref_node) { return AXIS2_FAILURE; } /* WSS-Core specification suggests 1. Resolve any elements (specified within ). 2. Resolve any elements (specified within ). 3. Resolve any elements. NOT PERMITTED by WS-i 4. Resolve any other elements. NOT PERMITTED by WS-i */ /* * TODO: This method should get the key from the key_node. Currently key is taken from * given private key file */ return AXIS2_SUCCESS; } /*public functions*/ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_xml_enc_encrypt_node(const axutil_env_t *env, oxs_ctx_t * enc_ctx, axiom_node_t *node, axiom_node_t **enc_type_node, axiom_node_t *security_token_reference) { axis2_char_t *serialized_data = NULL; oxs_buffer_t *serialized_buf= NULL; axis2_status_t ret = AXIS2_FAILURE; /*Serialize node*/ /*serialized_data = axiom_node_to_string(node, env);*/ serialized_data = axiom_node_to_string_non_optimized(node, env); serialized_buf = oxs_buffer_create(env); ret = oxs_buffer_populate(serialized_buf, env, (unsigned char *)serialized_data, axutil_strlen(serialized_data)); /*We call encrypt_data*/ ret = oxs_xml_enc_encrypt_data(env, enc_ctx, serialized_buf, enc_type_node, security_token_reference); /*Remove the node from the parent*/ if(AXIS2_SUCCESS == ret){ axiom_node_detach(node, env); axiom_node_free_tree(node, env); node = NULL; } /*Free*/ oxs_buffer_free(serialized_buf, env); serialized_buf = NULL; AXIS2_FREE(env->allocator, serialized_data); serialized_data = NULL; /*Return success*/ return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_xml_enc_encrypt_data(const axutil_env_t *env, oxs_ctx_t * enc_ctx, oxs_buffer_t *content_buf, axiom_node_t **enc_type_node, axiom_node_t *security_token_reference_node) { oxs_buffer_t *result_buf= NULL; oxs_key_t *sym_key = NULL; axis2_char_t *sym_algo = NULL; axiom_node_t *enc_mtd_node = NULL; axiom_node_t *cd_node = NULL; axiom_node_t *cv_node = NULL; axis2_status_t ret = AXIS2_FAILURE; /*Determine the algorithm to be used*/ sym_algo = oxs_ctx_get_enc_mtd_algorithm(enc_ctx, env); /*Determine the key to be used*/ sym_key = oxs_ctx_get_key(enc_ctx, env); /*Set the operation to encrypt*/ oxs_ctx_set_operation(enc_ctx, env, OXS_CTX_OPERATION_ENCRYPT); /*Create an empty buffer for encrypted data*/ result_buf = oxs_buffer_create(env); /*Call encryption. Result should be base64 encoded*/ ret = oxs_encryption_symmetric_crypt(env, enc_ctx, content_buf, result_buf); /*Create EncryptionMethod*/ enc_mtd_node = oxs_token_build_encryption_method_element(env, *enc_type_node, sym_algo); /*If security_token_reference_node is given, then use it to build the key info*/ /*if we are using any trust/sct related token, then the key reference is given with the token *and we are suppose to use it */ if(security_token_reference_node) { axiom_node_t *key_info_node = NULL; key_info_node = oxs_token_build_key_info_element(env, *enc_type_node); axiom_node_add_child(key_info_node, env, security_token_reference_node); } /*If the enc_ctx has a key name, then build the KeyInfo element using key name*/ else if(oxs_ctx_get_ref_key_name(enc_ctx, env)) { axiom_node_t *key_info_node = NULL; axiom_node_t *str_node = NULL; axiom_node_t *ref_node = NULL; key_info_node = oxs_token_build_key_info_element(env, *enc_type_node); str_node = oxs_token_build_security_token_reference_element(env, key_info_node); ref_node = oxs_token_build_reference_element(env, str_node, oxs_ctx_get_ref_key_name(enc_ctx, env), NULL); } /*Create CipherData element and populate*/ cd_node = oxs_token_build_cipher_data_element(env, *enc_type_node); cv_node = oxs_token_build_cipher_value_element(env, cd_node, (axis2_char_t*)oxs_buffer_get_data(result_buf, env)); /*Free buffers*/ oxs_buffer_free(result_buf, env); result_buf = NULL; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_xml_enc_decrypt_node(const axutil_env_t *env, oxs_ctx_t * enc_ctx, axiom_node_t *enc_type_node, axiom_node_t **decrypted_node) { axiom_node_t *deserialized_node = NULL; axiom_node_t *parent_of_enc_node = NULL; oxs_buffer_t *result_buf = NULL; axis2_char_t *decrypted_data = NULL;/*Can be either am XML-Element or XML-Content*/ axis2_status_t status = AXIS2_FAILURE; /*Create an empty buffer for results*/ result_buf = oxs_buffer_create(env); /*Decrypt*/ status = oxs_xml_enc_decrypt_data(env, enc_ctx, enc_type_node, result_buf); if(AXIS2_FAILURE == status){ oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_ENCRYPT_FAILED, "Data encryption failed"); return AXIS2_FAILURE; } decrypted_data = axutil_strmemdup(oxs_buffer_get_data(result_buf, env), oxs_buffer_get_size(result_buf, env), env); /*De-serialize the decrypted content to build the node*/ deserialized_node = (axiom_node_t*)oxs_axiom_deserialize_node(env, decrypted_data); if(!deserialized_node){ oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_ENCRYPT_FAILED,"Cannot deserialize a node from the content.\n%s", decrypted_data); return AXIS2_FAILURE; } /*Assign deserialized_node to the reference passed*/ *decrypted_node = deserialized_node; /*Replace the encrypted node with the de-serialized node*/ parent_of_enc_node = axiom_node_get_parent(enc_type_node, env); axiom_node_insert_sibling_after(enc_type_node, env, deserialized_node); axiom_node_detach(enc_type_node, env); axiom_node_free_tree(enc_type_node, env); enc_type_node = NULL; /*Free result buf*/ oxs_buffer_free(result_buf, env); result_buf = NULL; AXIS2_FREE(env->allocator, decrypted_data); decrypted_data = NULL; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_xml_enc_decrypt_data(const axutil_env_t *env, oxs_ctx_t * enc_ctx, axiom_node_t *enc_type_node, oxs_buffer_t *result_buf) { axiom_node_t *enc_mtd_node = NULL; axiom_node_t *cd_node = NULL; axiom_node_t *cv_node = NULL; axis2_char_t *cipher_val = NULL; axis2_char_t *new_cipher_val = NULL; axis2_char_t *sym_algo = NULL; axis2_char_t *type = NULL; axis2_char_t *id = NULL; oxs_buffer_t *input_buf = NULL; axis2_status_t status = AXIS2_FAILURE; /*Get the symmetric encryption algorithm*/ enc_mtd_node = oxs_axiom_get_first_child_node_by_name(env, enc_type_node, OXS_NODE_ENCRYPTION_METHOD,OXS_ENC_NS,OXS_XENC); sym_algo = oxs_token_get_encryption_method(env, enc_mtd_node); if(!sym_algo){ return AXIS2_FAILURE; } /*Get ID, Type, MimeType attributes from the EncryptedDataNode*/ id = oxs_axiom_get_attribute_value_of_node_by_name(env, enc_type_node, OXS_ATTR_ID, NULL); type = oxs_axiom_get_attribute_value_of_node_by_name(env, enc_type_node, OXS_ATTR_TYPE, NULL); /*Populate the context for future use*/ oxs_ctx_set_enc_mtd_algorithm(enc_ctx, env, sym_algo); oxs_ctx_set_id(enc_ctx, env, id); oxs_ctx_set_type(enc_ctx, env, type); /*Get the cipher value*/ cd_node = oxs_axiom_get_first_child_node_by_name(env, enc_type_node, OXS_NODE_CIPHER_DATA,OXS_ENC_NS,OXS_XENC); cv_node = oxs_axiom_get_first_child_node_by_name(env, cd_node, OXS_NODE_CIPHER_VALUE,OXS_ENC_NS,OXS_XENC); cipher_val = oxs_token_get_cipher_value(env, cv_node); /*We need to remove new lines if any*/ new_cipher_val = oxs_util_get_newline_removed_string(env, cipher_val); /*eof NEW CODE*/ /*Create input buffer with cipher data obtained*/ input_buf = oxs_buffer_create(env); oxs_buffer_populate(input_buf, env, (unsigned char*)new_cipher_val, axutil_strlen(new_cipher_val) ); /*Decrypt*/ oxs_ctx_set_operation(enc_ctx, env, OXS_CTX_OPERATION_DECRYPT); status = oxs_encryption_symmetric_crypt(env, enc_ctx, input_buf, result_buf); /*Free*/ oxs_buffer_free(input_buf, env); input_buf = NULL; /*AXIS2_FREE(env->allocator, cipher_val); cipher_val = NULL;*/ AXIS2_FREE(env->allocator, new_cipher_val); new_cipher_val = NULL; return status; } /*For SOAP this parent is the wsse:Security node*/ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_xml_enc_encrypt_key(const axutil_env_t *env, oxs_asym_ctx_t * asym_ctx, axiom_node_t *parent, oxs_key_t *sym_key, axutil_array_list_t *id_list) { axis2_char_t *algorithm = NULL; axis2_char_t *encrypted_key_data = NULL; axis2_char_t *st_ref_pattern = NULL; oxs_buffer_t *input = NULL; oxs_buffer_t *result = NULL; axiom_node_t *encrypted_key_node = NULL; axiom_node_t *enc_mtd_node = NULL; axiom_node_t *key_info_node = NULL; axiom_node_t *stref_node = NULL; axiom_node_t *cd_node = NULL; axiom_node_t *cv_node = NULL; axis2_status_t status = AXIS2_FAILURE; axis2_char_t* encrypted_key_hash = NULL; int decoded_len = 0; axis2_char_t *decoded_enc_sec = NULL; /*Create input buffer*/ input = oxs_buffer_create(env); oxs_buffer_populate(input, env, oxs_key_get_data(sym_key, env), oxs_key_get_size(sym_key, env)); /*Create an empty buffer to collect results*/ result = oxs_buffer_create(env); /*Call encryption*/ status = oxs_encryption_asymmetric_crypt(env, asym_ctx, input, result); /*Free input*/ oxs_buffer_free(input, env); input = NULL; if(AXIS2_FAILURE == status){ oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_ENCRYPT_FAILED, "Assymmetric key encryption failed"); return AXIS2_FAILURE; } /*Get the encrypted key*/ encrypted_key_data = (axis2_char_t *)oxs_buffer_get_data(result, env); /*Build nodes*/ encrypted_key_node = oxs_token_build_encrypted_key_element(env, parent); algorithm = oxs_asym_ctx_get_algorithm(asym_ctx, env); enc_mtd_node = oxs_token_build_encryption_method_element(env, encrypted_key_node, algorithm); key_info_node = oxs_token_build_key_info_element(env, encrypted_key_node); stref_node = oxs_token_build_security_token_reference_element(env, key_info_node); /*Get the ST REF pattern. If not set the default*/ st_ref_pattern = oxs_asym_ctx_get_st_ref_pattern(asym_ctx, env); if((!st_ref_pattern) || (0 == axutil_strcmp(st_ref_pattern, ""))){ st_ref_pattern = OXS_STR_DEFAULT; } if(0 == axutil_strcmp(st_ref_pattern, OXS_STR_ISSUER_SERIAL)){ status = oxs_xml_enc_populate_stref_with_issuer_serial(env, asym_ctx, stref_node); }else if(0 == axutil_strcmp(st_ref_pattern, OXS_STR_EMBEDDED)){ status = oxs_xml_enc_populate_stref_with_embedded(env, asym_ctx, stref_node); }else if(0 == axutil_strcmp(st_ref_pattern, OXS_STR_DIRECT_REFERENCE)){ status = oxs_xml_enc_populate_stref_with_bst(env, asym_ctx, stref_node, parent); }else if(0 == axutil_strcmp(st_ref_pattern, OXS_STR_KEY_IDENTIFIER)){ status = oxs_xml_enc_populate_stref_with_key_identifier(env, asym_ctx, stref_node, AXIS2_FALSE); }else if(0 == axutil_strcmp(st_ref_pattern, OXS_STR_THUMB_PRINT)){ /*TODO: Need to support Thumbprint Ref*/ status = oxs_xml_enc_populate_stref_with_key_identifier(env, asym_ctx, stref_node, AXIS2_TRUE); } cd_node = oxs_token_build_cipher_data_element(env, encrypted_key_node); cv_node = oxs_token_build_cipher_value_element(env, cd_node, encrypted_key_data); /*If and only if the id_list the present, we create the reference list*/ if(id_list){ oxs_token_build_data_reference_list(env, encrypted_key_node, id_list); } /*calculate the EncryptedKeySHA1 and set as the key_sha*/ decoded_len = axutil_base64_decode_len(encrypted_key_data); decoded_enc_sec = AXIS2_MALLOC(env->allocator, decoded_len); axutil_base64_decode_binary((unsigned char*)decoded_enc_sec, encrypted_key_data); encrypted_key_hash = openssl_sha1(env, decoded_enc_sec, decoded_len); oxs_key_set_key_sha(sym_key, env, encrypted_key_hash); AXIS2_FREE(env->allocator, decoded_enc_sec); /*Free*/ oxs_buffer_free(result, env); result = NULL; return AXIS2_SUCCESS; } /** * Inspect the key node. Then populate the sym_key */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_xml_enc_decrypt_key(const axutil_env_t *env, oxs_asym_ctx_t * asym_ctx, axiom_node_t *parent, axiom_node_t *encrypted_key_node, oxs_key_t *key) { axiom_node_t *enc_mtd_node = NULL; axiom_node_t *key_info_node = NULL; axiom_node_t *cd_node = NULL; axis2_char_t *enc_mtd_algo = NULL; axis2_char_t *cipher_val = NULL; axis2_char_t *new_cipher_val = NULL; axis2_status_t status = AXIS2_FAILURE; oxs_buffer_t *input_buf = NULL; oxs_buffer_t *result_buf = NULL; axis2_char_t *key_name = NULL; axis2_char_t* encrypted_key_hash = NULL; int decoded_len = 0; axis2_char_t *decoded_enc_sec = NULL; /*Get encryption method algorithm*/ enc_mtd_node = oxs_axiom_get_first_child_node_by_name(env, encrypted_key_node, OXS_NODE_ENCRYPTION_METHOD,OXS_ENC_NS,OXS_XENC); enc_mtd_algo = oxs_token_get_encryption_method(env, enc_mtd_node); if(!enc_mtd_algo){ oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_ENCRYPT_FAILED, "Cannot find the Encryption method"); return AXIS2_FAILURE; } /*Get cipher data*/ cd_node = oxs_axiom_get_first_child_node_by_name(env, encrypted_key_node, OXS_NODE_CIPHER_DATA,OXS_ENC_NS,OXS_XENC); cipher_val = oxs_token_get_cipher_value_from_cipher_data(env, cd_node); if(!cipher_val){ oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_ENCRYPT_FAILED, "Cannot find the cipher value for key decryption"); return AXIS2_FAILURE; } new_cipher_val = oxs_util_get_newline_removed_string(env, cipher_val); /*Get key used to encrypt*/ key_info_node = oxs_axiom_get_first_child_node_by_name(env, encrypted_key_node, OXS_NODE_KEY_INFO,OXS_DSIG_NS,OXS_DS); status = oxs_xml_enc_process_key_info(env, asym_ctx, key_info_node, parent); /*Right now we support KeyInfo -> SecurityTokenReference -> Reference KeyInfo -> SecurityTokenReference -> X509IssuerSerial */ /*Get the pkey used to decrypt the session key. If found set it to the asym_ctx*/ /*Create the input buffer*/ input_buf = oxs_buffer_create(env); oxs_buffer_populate(input_buf, env, (unsigned char*)new_cipher_val, axutil_strlen(new_cipher_val)); /*Create a results buffer*/ result_buf = oxs_buffer_create(env); /*Call decryption*/ status = oxs_encryption_asymmetric_crypt(env, asym_ctx, input_buf, result_buf); /*Free input*/ oxs_buffer_free(input_buf, env); input_buf = NULL; /*calculate the EncryptedKeySHA1 and set as the key_sha*/ decoded_len = axutil_base64_decode_len(new_cipher_val); decoded_enc_sec = AXIS2_MALLOC(env->allocator, decoded_len); axutil_base64_decode_binary((unsigned char*)decoded_enc_sec, new_cipher_val); encrypted_key_hash = openssl_sha1(env, decoded_enc_sec, decoded_len); AXIS2_FREE(env->allocator, decoded_enc_sec); AXIS2_FREE(env->allocator, new_cipher_val); new_cipher_val = NULL; if(AXIS2_FAILURE == status){ return AXIS2_FAILURE; } key_name = oxs_axiom_get_attribute_value_of_node_by_name(env, encrypted_key_node, OXS_ATTR_ID, NULL); /*Populate the key with the data in the result buffer*/ oxs_key_populate(key, env, oxs_buffer_get_data(result_buf, env), key_name, oxs_buffer_get_size(result_buf, env), OXS_KEY_USAGE_SESSION ); oxs_key_set_key_sha(key, env, encrypted_key_hash); /*Free*/ oxs_buffer_free(result_buf, env); result_buf = NULL; return AXIS2_SUCCESS; } rampartc-src-1.3.0/src/omxmlsec/xml_signature.c0000644000076500007650000007547611202453422021444 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include /*Private functions*/ /*This method is common for both signing and verification*/ static axis2_char_t * oxs_xml_sig_transform_n_digest(const axutil_env_t *env, axiom_node_t *node, axutil_array_list_t *transforms, axis2_char_t *digest_mtd) { axis2_char_t *serialized_node = NULL; axis2_char_t *digest = NULL; axiom_node_t *ori_node = NULL, *sig_node = NULL; oxs_tr_dtype_t output_dtype = OXS_TRANSFORM_TYPE_UNKNOWN;/*This will always be the current dtype*/ void *tr_output = NULL; int i = 0; if((transforms) && (0 < axutil_array_list_size(transforms, env))){ output_dtype = OXS_TRANSFORM_TYPE_NODE; /*We always begin with a node*/ tr_output = node; /*The first transformation is applied to the node*/ /*LOOP: Apply transforms. For example exclusive C14N*/ for (i = 0; i < axutil_array_list_size(transforms, env); i++){ oxs_transform_t *tr = NULL; oxs_transform_tr_func tr_func = NULL; oxs_tr_dtype_t input_dtype = OXS_TRANSFORM_TYPE_UNKNOWN; void *tr_input = NULL; axis2_char_t *tr_id = NULL; /*Get the ith transform*/ tr = (oxs_transform_t*)axutil_array_list_get(transforms, env, i); tr_id = oxs_transform_get_id(tr, env); tr_func = oxs_transform_get_transform_function(tr, env); input_dtype = oxs_transform_get_input_data_type(tr, env); /*Prepare the input*/ /*If the required input type is CHAR and what we have is a NODE*/ if((input_dtype == OXS_TRANSFORM_TYPE_CHAR) && (output_dtype == OXS_TRANSFORM_TYPE_NODE)){ /*Serialize*/ tr_input = axiom_node_to_string((axiom_node_t*)tr_output, env); /*If the required input type is NODE and what we have is a CHAR*/ }else if((input_dtype == OXS_TRANSFORM_TYPE_NODE) && (output_dtype == OXS_TRANSFORM_TYPE_CHAR)){ /*De-serialize*/ tr_input = oxs_axiom_deserialize_node(env, (axis2_char_t *)tr_output); }else if((input_dtype == OXS_TRANSFORM_TYPE_NODE) && (output_dtype == OXS_TRANSFORM_TYPE_NODE_ARRAY_LIST)){ ori_node = axutil_array_list_get((axutil_array_list_t*)tr_output, env, 0); sig_node = axutil_array_list_get((axutil_array_list_t*)tr_output, env, 1); tr_input = ori_node; }else if((input_dtype == OXS_TRANSFORM_TYPE_CHAR) && (output_dtype == OXS_TRANSFORM_TYPE_NODE_ARRAY_LIST)){ ori_node = axutil_array_list_get((axutil_array_list_t*)tr_output, env, 0); sig_node = axutil_array_list_get((axutil_array_list_t*)tr_output, env, 1); tr_input = axiom_node_to_string(ori_node, env); }else{ /*Let it go as it is. */ tr_input = tr_output; } /*Apply transform*/ if(tr_func){ output_dtype = (*tr_func)(env, tr_input, input_dtype, &tr_output); }else{ oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_TRANSFORM_FAILED,"Cannot get the transform implementation for %s", tr_id); } /*If the output data type is unknown OR the output is NULL its an error*/ if((output_dtype == OXS_TRANSFORM_TYPE_UNKNOWN) || (!tr_output)){ oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_TRANSFORM_FAILED,"Transform failed for %s", tr_id); return NULL; } }/*eof for loop*/ /*We have applied all our transforms now*/ /*Serialize node*/ if(OXS_TRANSFORM_TYPE_NODE == output_dtype ){ serialized_node = axiom_node_to_string((axiom_node_t*)tr_output, env); }else if(OXS_TRANSFORM_TYPE_CHAR == output_dtype){ serialized_node = (axis2_char_t*)tr_output; } else if(OXS_TRANSFORM_TYPE_NODE_ARRAY_LIST == output_dtype){ ori_node = (axiom_node_t*)axutil_array_list_get((axutil_array_list_t*)tr_output, env, 0); sig_node = (axiom_node_t*)axutil_array_list_get((axutil_array_list_t*)tr_output, env, 1); serialized_node = axiom_node_to_string(ori_node, env); } else{ /*Error*/ oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_TRANSFORM_FAILED,"Unsupported transform data type %d", output_dtype); } }else{ /*No transforms defined. Thus we simply direct the node, to make the digest*/ serialized_node = axiom_node_to_string(node, env); } if(0 == axutil_strcmp( OXS_HREF_SHA1 , digest_mtd)){ digest = openssl_sha1(env, serialized_node, axutil_strlen(serialized_node)); }else{ oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_TRANSFORM_FAILED,"Unsupported digest method %s", digest_mtd); return NULL; } if(ori_node && sig_node){ axiom_node_add_child(ori_node, env, sig_node); } if(serialized_node){ AXIS2_FREE(env->allocator, serialized_node); serialized_node = NULL; } return digest; } /*parent is ds:SignedInfo*/ static axis2_status_t oxs_xml_sig_build_reference(const axutil_env_t *env, axiom_node_t *parent, oxs_sign_part_t *sign_part) { axis2_char_t *digest = NULL; axis2_char_t *digest_mtd = NULL; axis2_char_t *ref_id = NULL; axis2_char_t *id = NULL, *id_name = NULL; axiom_namespace_t *ns = NULL; axis2_char_t *ns_uri = NULL; axutil_array_list_t *transforms = NULL; axiom_node_t *node = NULL; axiom_node_t *reference_node = NULL; axiom_node_t *digest_value_node = NULL; axiom_node_t *digest_mtd_node = NULL; int i = 0; /*Get the node to digest*/ node = oxs_sign_part_get_node(sign_part, env); id_name = oxs_sign_part_get_id_name(sign_part, env); ns = oxs_sign_part_get_sign_namespace(sign_part, env); if(ns) ns_uri = axiom_namespace_get_uri(ns, env); else if (!ns && !id_name) ns_uri = OXS_WSU_XMLNS; else ns_uri = NULL; if(!id_name) id_name = OXS_ATTR_ID; /*Get the reference ID from the node and hence to the ds:Reference node*/ id = oxs_axiom_get_attribute_value_of_node_by_name(env, node, id_name, ns_uri); ref_id = axutil_stracat(env, OXS_LOCAL_REFERENCE_PREFIX, id);/* */ reference_node = oxs_token_build_ds_reference_element(env, parent ,NULL, ref_id, NULL); AXIS2_FREE(env->allocator, ref_id); ref_id = NULL; /*Get transforms if any*/ transforms = oxs_sign_part_get_transforms(sign_part, env); /*Get the digest method*/ digest_mtd = oxs_sign_part_get_digest_mtd(sign_part, env); /*Transform and Digest*/ digest = oxs_xml_sig_transform_n_digest(env, node, transforms, digest_mtd); /*Build ds:Transforms node and its children*/ if((transforms) && (0 < axutil_array_list_size(transforms, env))){ axiom_node_t *transforms_node = NULL; transforms_node = oxs_token_build_transforms_element(env, reference_node); for (i = 0; i < axutil_array_list_size(transforms, env); i++){ oxs_transform_t *tr = NULL; axis2_char_t *tr_id = NULL; /*Get the ith transform*/ tr = (oxs_transform_t*)axutil_array_list_get(transforms, env, i); tr_id = oxs_transform_get_id(tr, env); oxs_token_build_transform_element(env, transforms_node, tr_id); } } /*Construct nodes*/ digest_mtd_node = oxs_token_build_digest_method_element(env, reference_node, digest_mtd); digest_value_node = oxs_token_build_digest_value_element(env, reference_node, digest); /*Free*/ AXIS2_FREE(env->allocator, digest); digest = NULL; return AXIS2_SUCCESS; } /** * C14N -> Serialize -> Sign the element */ static axis2_status_t oxs_xml_sig_sign_signed_info(const axutil_env_t *env, axiom_node_t *signature_node, axiom_node_t *signed_info_node, oxs_sign_ctx_t *sign_ctx) { axis2_char_t *signature_val = NULL; axis2_char_t *serialized_signed_info = NULL; axis2_char_t *c14n_algo = NULL; axis2_char_t *c14nized = NULL; axiom_node_t *signature_val_node = NULL; axiom_document_t *doc = NULL; oxs_buffer_t *input_buf = NULL; oxs_buffer_t *output_buf = NULL; axis2_status_t status = AXIS2_FAILURE; /*Cannonicalize */ c14n_algo = oxs_sign_ctx_get_c14n_mtd(sign_ctx, env); doc = axiom_node_get_document(signed_info_node, env); /*oxs_c14n_apply(env, doc, AXIS2_FALSE, &c14nized, AXIS2_TRUE, NULL, signed_info_node); */ oxs_c14n_apply_algo(env, doc, &c14nized, NULL, signed_info_node, c14n_algo); AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[oxs][xml_sig] C14N (sig)= %s ", c14nized ); /*Then serialize */ serialized_signed_info = c14nized; /*axiom_node_to_string(signed_info_node, env);*/ /*Make the input and out put buffers*/ input_buf = oxs_buffer_create(env); output_buf = oxs_buffer_create(env); oxs_buffer_populate(input_buf, env, (unsigned char *)serialized_signed_info, axutil_strlen(serialized_signed_info)); /*Then sign... NOTE: The signature process includes making the digest. e.g. rsa-sha1 => RSA(SHA-1(contents))*/ status = oxs_sig_sign(env, sign_ctx, input_buf, output_buf); signature_val = (axis2_char_t*)oxs_buffer_get_data(output_buf, env); /*Construct */ signature_val_node = oxs_token_build_signature_value_element(env, signature_node, signature_val); /*Free*/ AXIS2_FREE(env->allocator , c14nized); c14nized = NULL; oxs_buffer_free(input_buf, env); input_buf = NULL; oxs_buffer_free(output_buf, env); output_buf = NULL; return status; } /*Public functions*/ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_xml_sig_sign(const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, axiom_node_t *parent, axiom_node_t **sig_node) { axiom_node_t *signed_info_node = NULL; axiom_node_t *signature_node = NULL; axiom_node_t *signature_mtd_node = NULL; axiom_node_t *c14n_mtd_node = NULL; axis2_char_t *sign_algo = NULL; axis2_char_t *c14n_algo = NULL; axis2_char_t *sig_id = NULL; axutil_array_list_t *sign_parts = NULL; axis2_status_t status = AXIS2_FAILURE; int i=0; /*Construct the element*/ sig_id = oxs_util_generate_id(env, OXS_SIG_ID); signature_node = oxs_token_build_signature_element(env, parent, sig_id); AXIS2_FREE(env->allocator, sig_id); sig_id = NULL; /*Construct the */ signed_info_node = oxs_token_build_signed_info_element(env, signature_node); /*Construct the */ c14n_algo = oxs_sign_ctx_get_c14n_mtd(sign_ctx, env); c14n_mtd_node = oxs_token_build_c14n_method_element(env, signed_info_node, c14n_algo); /*Construct the */ sign_algo = oxs_sign_ctx_get_sign_mtd_algo(sign_ctx, env); signature_mtd_node = oxs_token_build_signature_method_element(env, signed_info_node, sign_algo); /*Look for signature parts*/ sign_parts = oxs_sign_ctx_get_sign_parts(sign_ctx , env); /*For each and every signature part in sig ctx,*/ for (i = 0; i < axutil_array_list_size(sign_parts, env); i++){ oxs_sign_part_t *sign_part = NULL; /*Get ith sign_part*/ sign_part = (oxs_sign_part_t*)axutil_array_list_get(sign_parts, env, i); /*Create elements */ oxs_xml_sig_build_reference(env, signed_info_node, sign_part); } /*At this point we have a complete node. Now we need to sign it*/ status = oxs_xml_sig_sign_signed_info(env, signature_node, signed_info_node, sign_ctx); /*sig_id = axiom_node_to_string(parent, env);*/ *sig_node = signature_node; return status; } /*******************************Verification specific*****************************/ /*Populates a sign_part according to the node*/ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_xml_sig_process_ref_node(const axutil_env_t *env, oxs_sign_part_t *sign_part, axiom_node_t *ref_node, axiom_node_t *scope_node) { axis2_char_t *ref_id = NULL; axis2_char_t *ref_id2 = NULL; axis2_char_t *child_node_name = NULL; axiom_node_t *reffed_node = NULL; axiom_node_t *child_node = NULL, *cn = NULL; axis2_char_t *id_name = NULL; axiom_namespace_t *ns = NULL; axis2_char_t *ns_uri = NULL; axiom_attribute_t *attr = NULL; axutil_hash_t *attr_hash = NULL; axutil_hash_index_t *hi = NULL; axiom_element_t *element = NULL, *ce = NULL; axiom_child_element_iterator_t *ci = NULL; ref_id = oxs_token_get_ds_reference(env, ref_node); oxs_sign_part_set_id(sign_part, env, ref_id); /*Remove the # from the id*/ ref_id2 = axutil_string_substring_starting_at(axutil_strdup(env, ref_id), 1); /*Look for the attribute with the Reference URI value*/ if(scope_node) { element = axiom_node_get_data_element(scope_node, env); if(element) attr_hash = axiom_element_get_all_attributes(element, env); if (attr_hash) { for (hi = axutil_hash_first(attr_hash, env); hi; hi = axutil_hash_next(env, hi)) { void *v = NULL; axutil_hash_this(hi, NULL, NULL, &v); if (v) { axis2_char_t *attr_val = NULL; axiom_attribute_t *attribute = (axiom_attribute_t*)v; attr_val = axiom_attribute_get_value(attribute, env); if(!axutil_strcmp(attr_val, ref_id2)) { attr = attribute; break; } } } } } /* if we cannot find the Id in the scope node proceed to childs*/ if (!attr) { element = axiom_node_get_data_element(scope_node, env); if (element) { ci = axiom_element_get_child_elements(element, env, scope_node); if (ci) { while (AXIS2_TRUE == axiom_child_element_iterator_has_next(ci, env)) { cn = axiom_child_element_iterator_next(ci, env); ce = axiom_node_get_data_element(cn, env); if(ce) attr_hash = axiom_element_get_all_attributes(ce, env); if (attr_hash) { for (hi = axutil_hash_first(attr_hash, env); hi; hi = axutil_hash_next(env, hi)) { void *v = NULL; axutil_hash_this(hi, NULL, NULL, &v); if (v) { axis2_char_t *attr_val = NULL; axiom_attribute_t *attribute = (axiom_attribute_t*)v; attr_val = axiom_attribute_get_value(attribute, env); if(!axutil_strcmp(attr_val, ref_id2)) { attr = attribute; if (env) AXIS2_FREE(env->allocator, hi); break; } } } } } } } } if(attr) { id_name = axiom_attribute_get_localname(attr, env); ns = axiom_attribute_get_namespace(attr, env); if(ns) ns_uri = axiom_namespace_get_uri(ns, env); else ns_uri = ""; reffed_node = oxs_axiom_get_node_by_id(env, scope_node, id_name, ref_id2, ns_uri); } else { reffed_node = oxs_axiom_get_node_by_id(env, scope_node, "Id", ref_id2, OXS_WSU_XMLNS ); /*for endorsing, we have to check "Id", not "wsu:Id"*/ if(!reffed_node) { reffed_node = oxs_axiom_get_node_by_id(env, scope_node, "Id", ref_id2, NULL ); } } /*Find the node refered by this ref_id2 and set to the sign part*/ if(reffed_node){ oxs_sign_part_set_node(sign_part, env, reffed_node); }else{ oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_SIG_VERIFICATION_FAILED,"Cannot find node with Id=%s ", ref_id2 ); AXIS2_FREE(env->allocator, ref_id2); ref_id2 = NULL; return AXIS2_FAILURE; /*No such node. Its an error*/ } AXIS2_FREE(env->allocator, ref_id2); ref_id2 = NULL; /*First child is optional Transforms element*/ child_node = axiom_node_get_first_element(ref_node, env); child_node_name = axiom_util_get_localname(child_node, env); if(0 == axutil_strcmp(child_node_name, OXS_NODE_TRANSFORMS)){ /*Transforms found*/ axiom_node_t *tr_node = NULL; axutil_array_list_t *tr_list = NULL; /*Create a list to hold transforms*/ tr_list = axutil_array_list_create(env, 1); tr_node = axiom_node_get_first_element(child_node, env); /*Iterate thru all the nodes in */ while(tr_node) { axis2_char_t *node_name = NULL; node_name = axiom_util_get_localname(tr_node, env); if( 0 == axutil_strcmp(OXS_NODE_TRANSFORM, node_name)){ axis2_char_t *tr_id = NULL; oxs_transform_t *tr = NULL; tr_id = oxs_token_get_transform(env, tr_node); /*Get the transform given the id*/ tr = oxs_transforms_factory_produce_transform(env, tr_id); if(!tr) { /*The transform not supported*/ oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_TRANSFORM_FAILED,"Cannot produce the transform for %s", tr_id); return AXIS2_FAILURE; } /*Add the transform to the list*/ axutil_array_list_add(tr_list, env, tr); }else{ /* cant have any other element*/ /*NOTE: Removed this check for interop testing*/ /*oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_TRANSFORM_FAILED," cannot have node %s ", node_name ); return AXIS2_FAILURE;*/ } /*Set the next node to be processed*/ tr_node = axiom_node_get_next_sibling(tr_node, env); /*axiom_util_get_next_sibling_element(axiom_node_get_data_element(tr_node, env), env, tr_node, &tr_node);*/ }/*eof while*/ /*Set transforms for this signature part*/ oxs_sign_part_set_transforms(sign_part, env, tr_list); /*At the end, set the next node as the child node*/ /*child_node = axiom_node_get_next_sibling(child_node, env);*/ axiom_util_get_next_sibling_element(axiom_node_get_data_element(child_node, env), env, child_node, &child_node); }else{ /*There are no transforms for this sign part*/ } /* Process mandatory ds:DigestMethod*/ child_node_name = axiom_util_get_localname(child_node, env); if(0 == axutil_strcmp(child_node_name, OXS_NODE_DIGEST_METHOD)){ axis2_char_t *digest_mtd = NULL; /*ds:DigestMethod found*/ digest_mtd = oxs_token_get_digest_method(env, child_node); oxs_sign_part_set_digest_mtd(sign_part, env, digest_mtd); /*At the end, set the next node as the child node*/ /*child_node = axiom_node_get_next_sibling(child_node, env);*/ axiom_util_get_next_sibling_element(axiom_node_get_data_element(child_node, env), env, child_node, &child_node); }else{ oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_SIG_VERIFICATION_FAILED,"Cannot find " ); return AXIS2_FAILURE; } /* Process mandatory ds:DigestValue*/ child_node_name = axiom_util_get_localname(child_node, env); if(0 == axutil_strcmp(child_node_name, OXS_NODE_DIGEST_VALUE)){ /*ds:DigestValue found*/ axis2_char_t *digest_val = NULL; digest_val = oxs_token_get_digest_value(env, child_node); oxs_sign_part_set_digest_val(sign_part, env, digest_val); }else{ oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_SIG_VERIFICATION_FAILED,"Cannot find " ); return AXIS2_FAILURE; } return AXIS2_SUCCESS; } /*Process Signature Node along with its most loving child ds:SignedInfo. * We need to populate * 1. Sig_mtd * 2. C14N Mtd * 3. Sign parts * 3.1. Id * 3.2 Digest mtd * 3.3. Transforms*/ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_xml_sig_process_signature_node(const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, axiom_node_t *signature_node, axiom_node_t *scope_node) { axiom_node_t *cur_node = NULL; axiom_node_t *signed_info_node = NULL; axiom_node_t *sig_val_node = NULL; axis2_status_t status = AXIS2_FAILURE; axutil_array_list_t *sign_part_list = NULL; signed_info_node = oxs_axiom_get_first_child_node_by_name(env, signature_node, OXS_NODE_SIGNEDINFO, OXS_DSIG_NS, OXS_DS ); /*signed_info_node = oxs_axiom_get_first_child_node_by_name(env, signature_node, OXS_NODE_SIGNEDINFO, NULL,NULL);*/ if(!signed_info_node){ oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_SIG_VERIFICATION_FAILED,"Cannot find " ); return AXIS2_FAILURE; } /*Create the list for sign parts*/ sign_part_list = axutil_array_list_create(env,5); /*Process signed info element*/ cur_node = axiom_node_get_first_element(signed_info_node, env); /*Iterate thru children of */ while(cur_node){ axis2_char_t *localname = NULL; localname = axiom_util_get_localname(cur_node, env); if(0 == axutil_strcmp(localname, OXS_NODE_CANONICALIZATION_METHOD)){ axis2_char_t *c14n_mtd = NULL; c14n_mtd = oxs_token_get_c14n_method(env, cur_node); oxs_sign_ctx_set_c14n_mtd(sign_ctx, env, c14n_mtd); }else if(0 == axutil_strcmp(localname, OXS_NODE_SIGNATURE_METHOD)){ axis2_char_t *sig_mtd = NULL; sig_mtd = oxs_token_get_signature_method(env, cur_node); oxs_sign_ctx_set_sign_mtd_algo(sign_ctx, env, sig_mtd); }else if(0 == axutil_strcmp(localname, OXS_NODE_REFERENCE)){ oxs_sign_part_t *sign_part = NULL; /* There might be multiple references. * For each create a sign_part and add to sign_part_list in the sign_ctx*/ sign_part = oxs_sign_part_create(env); status = oxs_xml_sig_process_ref_node(env, sign_part, cur_node, scope_node); if(status == AXIS2_FAILURE){ oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_SIG_VERIFICATION_FAILED," node processing failed " ); return AXIS2_FAILURE; } /*Now we have a new sign_part. Add it to the list.*/ axutil_array_list_add(sign_part_list, env, sign_part); }else{ /*We do not process*/ } cur_node = axiom_node_get_next_sibling(cur_node, env); /*axiom_util_get_next_sibling_element(axiom_node_get_data_element(cur_node, env), env, cur_node, &cur_node);*/ } oxs_sign_ctx_set_sign_parts(sign_ctx, env, sign_part_list); /*Finished processing SignedInfo. Now we are processing the Signature Value element*/ /*The very next child of SignedInfo Should be the ds:SignatureValue*/ /*sig_val_node = axiom_node_get_next_sibling(signed_info_node, env);*/ axiom_util_get_next_sibling_element(axiom_node_get_data_element(signed_info_node, env), env, signed_info_node, &sig_val_node); if(0 == axutil_strcmp( OXS_NODE_SIGNATURE_VALUE, axiom_util_get_localname(sig_val_node, env))){ axis2_char_t *sig_val = NULL; axis2_char_t *newline_removed = NULL; sig_val = oxs_token_get_signature_value(env, sig_val_node); if(!sig_val) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_SIG_VERIFICATION_FAILED,"Cannot find signature value. " ); return AXIS2_FAILURE; } /*We now remove \n in this text.Otherwise verifications failed.*/ newline_removed = oxs_util_get_newline_removed_string(env,sig_val); if(!newline_removed) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_SIG_VERIFICATION_FAILED,"Cannot Remove new lines. " ); return AXIS2_FAILURE; } oxs_sign_ctx_set_sig_val(sign_ctx, env, newline_removed); /*We can free newline_removed string as sign_ctx duplicates it*/ AXIS2_FREE(env->allocator, newline_removed); newline_removed = NULL; }else{ /*Error the node should be the ds:SignatureValue*/ oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_SIG_VERIFICATION_FAILED,"Cannot find " ); return AXIS2_FAILURE; } return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_xml_sig_verify_sign_part(const axutil_env_t *env, oxs_sign_part_t *sign_part) { axis2_char_t *id = NULL; axis2_char_t *digest_mtd = NULL; axis2_char_t *digest_val = NULL; axis2_char_t *new_digest = NULL; axiom_node_t *node = NULL; axutil_array_list_t *transforms = NULL; axis2_status_t status = AXIS2_FAILURE; id = oxs_sign_part_get_id(sign_part, env); digest_mtd = oxs_sign_part_get_digest_mtd(sign_part, env); digest_val = oxs_sign_part_get_digest_val(sign_part, env); node = oxs_sign_part_get_node(sign_part, env); transforms = oxs_sign_part_get_transforms(sign_part, env); AXIS2_LOG_INFO(env->log, "[oxs][xml_sig] Verifying signature part %s ", id ); /*Do transforms to the node*/ new_digest = oxs_xml_sig_transform_n_digest(env, node, transforms, digest_mtd); /*Compare values*/ if(0 == axutil_strcmp(new_digest, digest_val)){ AXIS2_LOG_INFO(env->log, "[oxs][xml_sig] Digest verification success for node Id= %s ", id ); status = AXIS2_SUCCESS; }else{ oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_SIG_VERIFICATION_FAILED,"Digest verification failed for node Id= %s ", id ); status = AXIS2_FAILURE; } /*FREE*/ AXIS2_FREE(env->allocator, new_digest); new_digest = NULL; return status; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_xml_sig_verify_digests(const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx) { axis2_status_t status = AXIS2_FAILURE; axutil_array_list_t *sign_parts = NULL; int i = 0 ; /*Get the sign_part list*/ sign_parts = oxs_sign_ctx_get_sign_parts(sign_ctx, env); /*For each and every signature part in sig ctx,*/ for (i = 0; i < axutil_array_list_size(sign_parts, env); i++){ oxs_sign_part_t *sign_part = NULL; /*Get ith sign_part*/ sign_part = (oxs_sign_part_t*)axutil_array_list_get(sign_parts, env, i); status = oxs_xml_sig_verify_sign_part(env, sign_part); if(AXIS2_FAILURE == status){ return AXIS2_FAILURE; } } return status; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_xml_sig_verify(const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, axiom_node_t *signature_node, axiom_node_t *scope_node) { axis2_status_t status = AXIS2_FAILURE; axiom_node_t *signed_info_node = NULL; axiom_document_t *doc = NULL; axis2_char_t *c14n_mtd = NULL; axis2_char_t *content = NULL; axis2_char_t *signature_val = NULL; axis2_char_t *signed_info_node_value = NULL; /*Set operation to verify*/ oxs_sign_ctx_set_operation(sign_ctx, env, OXS_SIGN_OPERATION_VERIFY); /*Populate the sign_ctx by inspecting the ds:Signature node*/ status = oxs_xml_sig_process_signature_node(env, sign_ctx, signature_node, scope_node); if(status != AXIS2_SUCCESS){ /*Something went wrong while processing the Signature node!!! :(*/ oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_SIG_VERIFICATION_FAILED," node processing failed " ); return AXIS2_FAILURE; } /*-----------------------------------------------------------------------------------------*/ /*At this point we have a ready to process signature context. So start verification process*/ /*-----------------------------------------------------------------------------------------*/ /*Verify the integrity of the signed parts by comparing the digest values of each and every reference.*/ status = oxs_xml_sig_verify_digests(env, sign_ctx); if(AXIS2_FAILURE == status){ return AXIS2_FAILURE; }else{ AXIS2_LOG_INFO(env->log, "[oxs][xml_sig] Digests verification SUCCESS " ); } /*At this point we have compared the digest. Next step is to compare the Signature value */ /*First get the signature value from the context*/ signature_val = oxs_sign_ctx_get_sig_val(sign_ctx, env); /*Then we apply the C14N for the ds:SignedInfo*/ signed_info_node = oxs_axiom_get_first_child_node_by_name(env, signature_node, OXS_NODE_SIGNEDINFO, OXS_DSIG_NS, OXS_DS ); /*signed_info_node = oxs_axiom_get_first_child_node_by_name(env, signature_node, OXS_NODE_SIGNEDINFO, NULL,NULL );*/ c14n_mtd = oxs_sign_ctx_get_c14n_mtd(sign_ctx, env); doc = axiom_node_get_document(signed_info_node, env); signed_info_node_value = axiom_node_to_string(signed_info_node, env); AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[oxs][xml_sig] C14N (verif1)= %s ", signed_info_node_value ); AXIS2_FREE(env->allocator, signed_info_node_value); signed_info_node_value = NULL; /* oxs_c14n_apply(env, doc, AXIS2_FALSE, &content, AXIS2_TRUE, NULL, signed_info_node);*/ oxs_c14n_apply_algo(env, doc, &content, NULL, signed_info_node, c14n_mtd); AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[oxs][xml_sig] C14N (verif2)=\n\n%s\n\n", content ); /*In the final step we Verify*/ status = oxs_sig_verify(env, sign_ctx, content , signature_val); AXIS2_FREE(env->allocator, content); content = NULL; if(AXIS2_FAILURE == status){ oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_SIG_VERIFICATION_FAILED,"Signature is not valid " ); return AXIS2_FAILURE; }else{ return AXIS2_SUCCESS; } } rampartc-src-1.3.0/src/omxmlsec/iv.c0000644000076500007650000000362411202453422017163 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include #include AXIS2_EXTERN axis2_char_t* AXIS2_CALL oxs_iv_generate_for_algo(const axutil_env_t *env, axis2_char_t *key_algo) { axis2_char_t* iv = NULL; openssl_cipher_property_t *cprop = NULL; int size; cprop = oxs_get_cipher_property_for_url(env, key_algo); if (!cprop) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_DEFAULT, "openssl_get_cipher_property failed"); return NULL; } size = openssl_cipher_property_get_iv_size(cprop, env); openssl_cipher_property_free(cprop, env); cprop = NULL; /*Here we have predefined IVs in the openssl_constants. Get the correct one using the size*/ if (size == 8) { iv = OPENSSL_DEFAULT_IV8; } else if (size == 16) { iv = OPENSSL_DEFAULT_IV16; } else if (size == 24) { iv = OPENSSL_DEFAULT_IV24; } else { iv = OXS_IV_DEFAULT; } return iv; } rampartc-src-1.3.0/src/omxmlsec/axis2_utils.c0000644000076500007650000000405611202453422021013 0ustar shankarshankar/* * 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. */ #include #include #include #if 0 AXIS2_EXTERN oxs_buffer_t * AXIS2_CALL oxs_base64_decode(axutil_env_t *env, oxs_buffer_t *coded_buf) { axis2_char_t *plain_str = NULL;/* Here plain can be binary sometimes */ oxs_buffer_t *out_buf = NULL; int ret, length; length = axutil_base64_decode_len((char*)(oxs_buffer_get_data(coded_buf, env))); plain_str = AXIS2_MALLOC(env->allocator, axutil_base64_decode_len((char*)(oxs_buffer_get_data(coded_buf, env)))); ret = axutil_base64_decode(plain_str, (char*)(oxs_buffer_get_data(coded_buf, env))); if (ret < 0) return NULL; out_buf = oxs_string_to_buffer(env, plain_str); return out_buf; } AXIS2_EXTERN oxs_buffer_t * AXIS2_CALL oxs_base64_encode(axutil_env_t *env, oxs_buffer_t *plain_buf) { axis2_char_t *encoded_str = NULL; oxs_buffer_t *out_buf = NULL; int ret; encoded_str = AXIS2_MALLOC(env->allocator, (unsigned int)axutil_base64_encode_len(axutil_strlen((char*)(plain_buf->data)))); ret = axutil_base64_encode(encoded_str, (char*)(plain_buf->data), plain_buf->size); if (ret < 0) return NULL; /*Set to the output buffer */ out_buf = oxs_string_to_buffer(env, encoded_str); return out_buf; } #endif rampartc-src-1.3.0/src/omxmlsec/signature.c0000644000076500007650000002362711202453422020553 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include #include #include #include #include #include #include #include AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sig_sign_hmac_sha1(const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, oxs_buffer_t *input, oxs_buffer_t *output) { axis2_status_t status = AXIS2_FAILURE; axis2_char_t *encoded_str = NULL; oxs_buffer_t *signed_result_buf = NULL; oxs_key_t *secret = NULL; int signedlen = -1; int encodedlen = -1; int ret = -1; /*Create output buffer to store signed data*/ signed_result_buf = oxs_buffer_create(env); /*Get the shared secret form the sig_ctx*/ secret = oxs_sign_ctx_get_secret(sign_ctx, env); if(!secret){ oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_SIGN_FAILED,"Signature failed. using HMAC-SHA1. No secret key is set"); return AXIS2_FAILURE; } /*Sign using HMAC-SHA1*/ status = openssl_hmac_sha1(env, secret, input, signed_result_buf); if(AXIS2_FAILURE == status){ oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_SIGN_FAILED,"Signature failed. using HMAC-SHA1 "); return AXIS2_FAILURE; } signedlen = oxs_buffer_get_size(signed_result_buf, env); /*Base64 encode*/ encodedlen = axutil_base64_encode_len(signedlen); encoded_str = AXIS2_MALLOC(env->allocator, encodedlen); ret = axutil_base64_encode(encoded_str, (const char *) oxs_buffer_get_data(signed_result_buf, env), signedlen); status = oxs_buffer_populate(output, env, (unsigned char*)encoded_str, encodedlen); /*Free signed_result_buf*/ oxs_buffer_free(signed_result_buf, env); signed_result_buf = NULL; /*Free encoded_str*/ AXIS2_FREE(env->allocator, encoded_str); encoded_str = NULL; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sig_sign_rsa_sha1(const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, oxs_buffer_t *input, oxs_buffer_t *output) { axis2_char_t *encoded_str = NULL; axis2_status_t status = AXIS2_FAILURE; oxs_buffer_t *signed_result_buf = NULL; openssl_pkey_t *prvkey = NULL; int signedlen = -1; int encodedlen = -1; int ret = -1; /*Create output buffer to store signed data*/ signed_result_buf = oxs_buffer_create(env); /*Sign */ prvkey = oxs_sign_ctx_get_private_key(sign_ctx, env); signedlen = openssl_sig_sign(env, prvkey, input, signed_result_buf); if (signedlen < 0) { /*Error*/ oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_SIGN_FAILED, "Signature failed. The length of signature is %d", signedlen); } /*Base64 encode*/ encodedlen = axutil_base64_encode_len(signedlen); encoded_str = AXIS2_MALLOC(env->allocator, encodedlen); ret = axutil_base64_encode(encoded_str, (const char *) oxs_buffer_get_data(signed_result_buf, env), signedlen); status = oxs_buffer_populate(output, env, (unsigned char*)encoded_str, encodedlen); /*Free signed_result_buf*/ oxs_buffer_free(signed_result_buf, env); signed_result_buf = NULL; /*Free encoded_str*/ AXIS2_FREE(env->allocator, encoded_str); encoded_str = NULL; return AXIS2_SUCCESS; } /*Public functions*/ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sig_sign(const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, oxs_buffer_t *input, oxs_buffer_t *output) { axis2_char_t *sign_algo = NULL; /*Get algo. To check whether we support*/ sign_algo = oxs_sign_ctx_get_sign_mtd_algo(sign_ctx, env); /*Prepare content and sign*/ if ((axutil_strcmp(sign_algo, OXS_HREF_RSA_SHA1)) == 0) { oxs_sig_sign_rsa_sha1(env, sign_ctx, input, output); } else if ((axutil_strcmp(sign_algo, OXS_HREF_HMAC_SHA1)) == 0) { oxs_sig_sign_hmac_sha1(env, sign_ctx, input, output); } else { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_INVALID_DATA, "Cannot support cipher %s", sign_algo); return AXIS2_FAILURE; } return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sig_verify_hmac_sha1(const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, axis2_char_t *content, axis2_char_t *signature) { axis2_status_t status = AXIS2_FAILURE; oxs_buffer_t *input_buf = NULL; oxs_buffer_t *output_buf = NULL; axis2_char_t *signed_val = NULL; /*Make the input and out put buffers*/ input_buf = oxs_buffer_create(env); output_buf = oxs_buffer_create(env); oxs_buffer_populate(input_buf, env, (unsigned char *)content, axutil_strlen(content)); /*Sign the content and get the output*/ status = oxs_sig_sign_hmac_sha1(env, sign_ctx, input_buf, output_buf); signed_val = (axis2_char_t*)oxs_buffer_get_data(output_buf, env); oxs_buffer_free(input_buf, env); /*Compare the output with the signature. If tally; SUCCESS*/ AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[RAMPART]Signature received [%s]", signature); AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[RAMPART]Signature calculated [%s]", signed_val); if(axutil_strcmp(signature, signed_val) == 0){ oxs_buffer_free(output_buf, env); return AXIS2_SUCCESS; }else{ oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_SIG_VERIFICATION_FAILED, "Signature verification failed using HMAC-SHA1"); oxs_buffer_free(output_buf, env); return AXIS2_FAILURE; } } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sig_verify(const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, axis2_char_t *content, axis2_char_t *signature) { axis2_status_t status = AXIS2_FAILURE; axis2_char_t *sign_algo = NULL; /*Get algo. To check whether we support*/ sign_algo = oxs_sign_ctx_get_sign_mtd_algo(sign_ctx, env); /*Prepare content and verify*/ if ((axutil_strcmp(sign_algo, OXS_HREF_RSA_SHA1)) == 0) { status = oxs_sig_verify_rsa_sha1(env, sign_ctx, content, signature); } else if ((axutil_strcmp(sign_algo, OXS_HREF_HMAC_SHA1)) == 0) { status = oxs_sig_verify_hmac_sha1(env, sign_ctx, content, signature); } else { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_INVALID_DATA, "Cannot support cipher %s for verification", sign_algo); status = AXIS2_FAILURE; } return status; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sig_verify_rsa_sha1(const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, axis2_char_t *content, axis2_char_t *signature) { axis2_status_t status = AXIS2_FAILURE; oxs_buffer_t *in_buf = NULL; oxs_buffer_t *sig_buf = NULL; openssl_pkey_t *pubkey = NULL; unsigned char* decoded_data = NULL; int decoded_len = -1; int ret = -1; /*Base64 decode the signature value and create the sig buffer*/ /*Allocate enough space*/ decoded_data = AXIS2_MALLOC(env->allocator, axutil_base64_decode_len(signature)); decoded_len = axutil_base64_decode_binary(decoded_data, signature); if (decoded_len < 0) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_SIG_VERIFICATION_FAILED, "axutil_base64_decode_binary failed"); return AXIS2_FAILURE; } /*Create the signature buffer*/ sig_buf = oxs_buffer_create(env); ret = oxs_buffer_populate(sig_buf, env, decoded_data, decoded_len); /*Create the input buffer*/ in_buf = oxs_buffer_create(env); status = oxs_buffer_populate(in_buf, env, (unsigned char*)content, axutil_strlen(content)); AXIS2_FREE(env->allocator, decoded_data); /* Get the public key. See.. this method is trickey. It might take the * public key from the certificate, only if * the public key is not available directly */ pubkey = oxs_sign_ctx_get_public_key(sign_ctx, env); if (!pubkey) { oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_SIG_VERIFICATION_FAILED, "Cannot obtain the public key."); return AXIS2_FAILURE; } /*Call OpenSSL function to verify the signature*/ status = openssl_sig_verify(env, pubkey, in_buf, sig_buf); if (status != AXIS2_SUCCESS) { /*Error in signature processing*/ oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_SIG_VERIFICATION_FAILED, "Signature verification FAILED."); oxs_buffer_free(sig_buf, env); sig_buf = NULL; oxs_buffer_free(in_buf, env); in_buf = NULL; return AXIS2_FAILURE; } else { /*Signature SUCCESS*/ AXIS2_LOG_INFO(env->log, "[oxs][sig] Signature verification SUCCESS"); oxs_buffer_free(sig_buf, env); sig_buf = NULL; oxs_buffer_free(in_buf, env); in_buf = NULL; return AXIS2_SUCCESS; } } rampartc-src-1.3.0/src/omxmlsec/utility.c0000644000076500007650000000662711202453422020256 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include #include #include AXIS2_EXTERN axis2_char_t* AXIS2_CALL oxs_util_generate_nonce(const axutil_env_t *env, int length) { oxs_buffer_t *buffer = NULL; axis2_status_t status = AXIS2_FAILURE; char *rand_str = NULL; axis2_char_t* encoded_str = NULL; buffer = oxs_buffer_create(env); status = openssl_generate_random_data(env, buffer, length); rand_str = (char*)oxs_buffer_get_data(buffer, env); encoded_str = AXIS2_MALLOC(env->allocator, sizeof(char) * (axutil_base64_encode_len(length)+1)); axutil_base64_encode(encoded_str, rand_str, oxs_buffer_get_size(buffer, env)); oxs_buffer_free(buffer, env); return encoded_str; } /* Generates an id for an element. * Specially used in xml encryption and signature references. * */ AXIS2_EXTERN axis2_char_t* AXIS2_CALL oxs_util_generate_id(const axutil_env_t *env, axis2_char_t *prefix) { axis2_char_t *id = NULL; char _id[50]; axis2_char_t *random ; axis2_char_t *uuid = NULL; uuid = axutil_uuid_gen(env); random = axutil_strndup(env, uuid, 23); sprintf(_id, "%s-%s", prefix, random); id = (axis2_char_t*)axutil_strdup(env, _id); AXIS2_FREE(env->allocator, uuid); AXIS2_FREE(env->allocator, random); random = NULL; return id; } AXIS2_EXTERN oxs_key_mgr_format_t AXIS2_CALL oxs_util_get_format_by_file_extension(const axutil_env_t *env, axis2_char_t *file_name) { axis2_char_t *extension = NULL; if(!file_name){ return OXS_ASYM_CTX_FORMAT_UNKNOWN; } extension = axutil_rindex(file_name, '.'); if(!extension){ /*No extension*/ /*Its safe to assume that PEM can be without extension*/ return OXS_ASYM_CTX_FORMAT_PEM; } if((strcmp(extension, ".pfx") == 0) || (strcmp(extension, ".p12") == 0) ){ return OXS_ASYM_CTX_FORMAT_PKCS12; }else{ /*Its safe to assume that PEM can be in any extensions. e.g. .cert, .cer, .pem*/ return OXS_ASYM_CTX_FORMAT_PEM; } } AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_util_get_newline_removed_string(const axutil_env_t *env, axis2_char_t *input) { axis2_char_t *output = NULL; int i = 0; output = AXIS2_MALLOC(env->allocator, axutil_strlen(input)+1); while(*input!='\0') { if(*input!='\n') { output[i] = *input; i++; } input++; } output[i]='\0'; return output; } rampartc-src-1.3.0/src/omxmlsec/error.c0000644000076500007650000000610311202453422017671 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include #include /*Table to map error codes with the error message*/ #define OXS_ERRORS_MAX_NUMBER 64 static oxs_error_description oxs_errors_table[OXS_ERRORS_MAX_NUMBER] = { {OXS_ERROR_DEFAULT, "oxs defualt error"}, {OXS_ERROR_ENCRYPT_FAILED , "encryption failed" }, {OXS_ERROR_DECRYPT_FAILED , "decryption failed"}, {OXS_ERROR_INVALID_DATA , "invalid data"}, {OXS_ERROR_INVALID_SIZE , "invalid size"}, {OXS_ERROR_INVALID_FORMAT , "invalid format"}, {OXS_ERROR_ELEMENT_FAILED , "element failed"}, {OXS_ERROR_TRANSFORM_FAILED , "Transformation failed"}, {OXS_ERROR_SIGN_FAILED , "Signing failed"}, {OXS_ERROR_SIG_VERIFICATION_FAILED , "Signature verification failed"}, }; AXIS2_EXTERN const char* AXIS2_CALL oxs_errors_get_msg_by_code(int code) { const char* error_msg = NULL; unsigned int i; for (i = 0; (i < OXS_ERRORS_MAX_NUMBER) && (oxs_errors_get_msg(i)); ++i) { if (oxs_errors_get_code(i) == code) { error_msg = oxs_errors_get_msg(i); break; } } return error_msg; } AXIS2_EXTERN int AXIS2_CALL oxs_errors_get_code(unsigned int pos) { if (pos < sizeof(oxs_errors_table) / sizeof(oxs_errors_table[0])) { return(oxs_errors_table[pos].code); } return(0); } AXIS2_EXTERN const char* AXIS2_CALL oxs_errors_get_msg(unsigned int pos) { if (pos < sizeof(oxs_errors_table) / sizeof(oxs_errors_table[0])) { return(oxs_errors_table[pos].message); } return(NULL); } AXIS2_EXTERN void AXIS2_CALL oxs_error(const axutil_env_t *env, const char* file, int line, const char* func, int code, const char* msg, ...) { const char* error_msg = NULL; char value[AXIS2_LEN_VALUE+1]; va_list ap; error_msg = oxs_errors_get_msg_by_code(code); va_start(ap, msg); AXIS2_VSNPRINTF(value, AXIS2_LEN_VALUE, msg, ap); va_end(ap); AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,"OXS ERROR [%s:%d in %s] %s , %s", file, line, func, error_msg, value ); /*printf("\nOXS ERROR [%s:%d in %s] %s , %s\n", file, line, func, error_msg, value);*/ } rampartc-src-1.3.0/src/omxmlsec/sign_part.c0000644000076500007650000001531311202453422020531 0ustar shankarshankar/* * 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. */ #include #include #include #include #include struct oxs_sign_part_t { axis2_char_t *id; axis2_char_t *digest_mtd; axis2_char_t *digest_val; axiom_namespace_t *sig_ns; axis2_char_t *id_name; axiom_node_t *node ; /*Shallow copies*/ axutil_array_list_t *transforms; /*Shallow copies*/ }; /*Public functions*/ AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_sign_part_get_id( const oxs_sign_part_t *sign_part, const axutil_env_t *env) { return sign_part->id; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_sign_part_get_digest_mtd( const oxs_sign_part_t *sign_part, const axutil_env_t *env) { return sign_part->digest_mtd; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_sign_part_get_digest_val( const oxs_sign_part_t *sign_part, const axutil_env_t *env) { return sign_part->digest_val; } AXIS2_EXTERN axiom_node_t *AXIS2_CALL oxs_sign_part_get_node( const oxs_sign_part_t *sign_part, const axutil_env_t *env) { return sign_part->node; } AXIS2_EXTERN axutil_array_list_t *AXIS2_CALL oxs_sign_part_get_transforms( const oxs_sign_part_t *sign_part, const axutil_env_t *env) { return sign_part->transforms; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sign_part_set_id( oxs_sign_part_t *sign_part, const axutil_env_t *env, axis2_char_t *id) { if (sign_part->id) { AXIS2_FREE(env->allocator, sign_part->id); sign_part->id = NULL; } sign_part->id = axutil_strdup(env, id); return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sign_part_set_digest_mtd( oxs_sign_part_t *sign_part, const axutil_env_t *env, axis2_char_t *digest_mtd) { if (sign_part->digest_mtd) { AXIS2_FREE(env->allocator, sign_part->digest_mtd); sign_part->digest_mtd = NULL; } sign_part->digest_mtd = axutil_strdup(env, digest_mtd); return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sign_part_set_digest_val( oxs_sign_part_t *sign_part, const axutil_env_t *env, axis2_char_t *digest_val) { if (sign_part->digest_val) { AXIS2_FREE(env->allocator, sign_part->digest_val); sign_part->digest_val = NULL; } sign_part->digest_val = axutil_strdup(env, digest_val); return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sign_part_set_node( oxs_sign_part_t *sign_part, const axutil_env_t *env, axiom_node_t *node) { if(sign_part->node){ sign_part->node = NULL; } sign_part->node = node; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sign_part_set_transforms( oxs_sign_part_t *sign_part, const axutil_env_t *env, axutil_array_list_t *transforms) { if(sign_part->transforms){ sign_part->transforms = NULL; } sign_part->transforms = transforms; return AXIS2_SUCCESS; } AXIS2_EXTERN oxs_sign_part_t *AXIS2_CALL oxs_sign_part_create(const axutil_env_t *env) { oxs_sign_part_t *sign_part = NULL; AXIS2_ENV_CHECK(env, NULL); sign_part = AXIS2_MALLOC(env->allocator, sizeof(oxs_sign_part_t)); if (!sign_part) { AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE); return NULL; } sign_part->id= NULL; sign_part->digest_mtd = NULL; sign_part->digest_val = NULL; sign_part->node = NULL; sign_part->transforms = NULL; sign_part->id_name = NULL; sign_part->sig_ns = NULL; return sign_part; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sign_part_free(oxs_sign_part_t *sign_part, const axutil_env_t *env) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); if (sign_part->id) { AXIS2_FREE(env->allocator, sign_part->id); sign_part->id = NULL; } if (sign_part->digest_mtd) { AXIS2_FREE(env->allocator, sign_part->digest_mtd); sign_part->digest_mtd = NULL; } if (sign_part->digest_val) { AXIS2_FREE(env->allocator, sign_part->digest_val); sign_part->digest_val = NULL; } if (sign_part->id_name) { AXIS2_FREE(env->allocator, sign_part->id_name); sign_part->id_name = NULL; } if (sign_part->sig_ns) { axiom_namespace_free(sign_part->sig_ns, env); sign_part->sig_ns = NULL; } sign_part->node = NULL; if(sign_part->transforms){ int size = 0; int j = 0; size = axutil_array_list_size(sign_part->transforms, env); for (j = 0; j < size; j++) { oxs_transform_t *tr = NULL; tr = axutil_array_list_get(sign_part->transforms, env, j); oxs_transform_free(tr, env); tr = NULL; } axutil_array_list_free(sign_part->transforms, env); sign_part->transforms = NULL; } AXIS2_FREE(env->allocator, sign_part); sign_part = NULL; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_sign_part_get_id_name( const oxs_sign_part_t *sign_part, const axutil_env_t *env) { return sign_part->id_name; } AXIS2_EXTERN axiom_namespace_t *AXIS2_CALL oxs_sign_part_get_sign_namespace( const oxs_sign_part_t *sign_part, const axutil_env_t *env) { return sign_part->sig_ns; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sign_part_set_id_name( oxs_sign_part_t *sign_part, const axutil_env_t *env, axis2_char_t *id_name) { if (sign_part->id_name) { AXIS2_FREE(env->allocator, sign_part->id_name); sign_part->id_name = NULL; } sign_part->id_name = axutil_strdup(env, id_name); return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sign_part_set_sign_namespace( oxs_sign_part_t *sign_part, const axutil_env_t *env, axiom_namespace_t *sig_ns) { if (sign_part->sig_ns) { axiom_namespace_free(sign_part->sig_ns, env); sign_part->sig_ns = NULL; } sign_part->sig_ns = sig_ns; return AXIS2_SUCCESS; } rampartc-src-1.3.0/src/omxmlsec/Makefile.in0000644000076500007650000007621711202453550020460 0ustar shankarshankar# Makefile.in generated by automake 1.10.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = src/omxmlsec DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libomxmlsec_la_DEPENDENCIES = tokens/liboxstokens.la \ openssl/libomopenssl.la c14n/liboxsc14n.la am_libomxmlsec_la_OBJECTS = ctx.lo buffer.lo key.lo cipher.lo error.lo \ axis2_utils.lo axiom.lo iv.lo xml_encryption.lo encryption.lo \ utility.lo asym_ctx.lo x509_cert.lo key_mgr.lo sign_part.lo \ sign_ctx.lo xml_signature.lo signature.lo transform.lo \ transforms_factory.lo xml_key_processor.lo \ xml_key_info_builder.lo derivation.lo assertion.lo \ auth_des_stmt.lo condition.lo query.lo response.lo subject.lo \ attr_stmt.lo auth_smt.lo id_type.lo request.lo stmt.lo \ sutil.lo libomxmlsec_la_OBJECTS = $(am_libomxmlsec_la_OBJECTS) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = $(libomxmlsec_la_SOURCES) DIST_SOURCES = $(libomxmlsec_la_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ AXIOMINC = @AXIOMINC@ AXIS2INC = @AXIS2INC@ AXIS2LIB = @AXIS2LIB@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NEETHIINC = @NEETHIINC@ OBJEXT = @OBJEXT@ OPENSSLINC = @OPENSSLINC@ OPENSSLLIB = @OPENSSLLIB@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UTILINC = @UTILINC@ VERSION = @VERSION@ VERSION_NO = @VERSION_NO@ XMLSCHEMAINC = @XMLSCHEMAINC@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = tokens openssl c14n noinst_LTLIBRARIES = libomxmlsec.la libomxmlsec_la_SOURCES = ctx.c buffer.c key.c cipher.c error.c axis2_utils.c axiom.c \ iv.c xml_encryption.c encryption.c\ utility.c asym_ctx.c x509_cert.c key_mgr.c sign_part.c sign_ctx.c \ xml_signature.c signature.c transform.c transforms_factory.c xml_key_processor.c \ xml_key_info_builder.c derivation.c saml/assertion.c saml/auth_des_stmt.c \ saml/condition.c saml/query.c saml/response.c saml/subject.c saml/attr_stmt.c \ saml/auth_smt.c saml/id_type.c saml/request.c saml/stmt.c saml/sutil.c libomxmlsec_la_LIBADD = @OPENSSLLIB@ \ -lssl \ tokens/liboxstokens.la \ openssl/libomopenssl.la \ c14n/liboxsc14n.la INCLUDES = -I$(top_builddir)/include \ -I ../../include \ @OPENSSLINC@ \ @UTILINC@ \ @AXIOMINC@ \ @AXIS2INC@ all: all-recursive .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/omxmlsec/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu src/omxmlsec/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ test "$$dir" != "$$p" || dir=.; \ echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done libomxmlsec.la: $(libomxmlsec_la_OBJECTS) $(libomxmlsec_la_DEPENDENCIES) $(LINK) $(libomxmlsec_la_OBJECTS) $(libomxmlsec_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/assertion.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asym_ctx.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/attr_stmt.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/auth_des_stmt.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/auth_smt.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/axiom.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/axis2_utils.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/buffer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cipher.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/condition.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ctx.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/derivation.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/encryption.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/error.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/id_type.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/key.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/key_mgr.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/query.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/request.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/response.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sign_ctx.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sign_part.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/signature.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stmt.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/subject.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sutil.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/transform.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/transforms_factory.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utility.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/x509_cert.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xml_encryption.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xml_key_info_builder.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xml_key_processor.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xml_signature.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< assertion.lo: saml/assertion.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT assertion.lo -MD -MP -MF $(DEPDIR)/assertion.Tpo -c -o assertion.lo `test -f 'saml/assertion.c' || echo '$(srcdir)/'`saml/assertion.c @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/assertion.Tpo $(DEPDIR)/assertion.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='saml/assertion.c' object='assertion.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o assertion.lo `test -f 'saml/assertion.c' || echo '$(srcdir)/'`saml/assertion.c auth_des_stmt.lo: saml/auth_des_stmt.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT auth_des_stmt.lo -MD -MP -MF $(DEPDIR)/auth_des_stmt.Tpo -c -o auth_des_stmt.lo `test -f 'saml/auth_des_stmt.c' || echo '$(srcdir)/'`saml/auth_des_stmt.c @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/auth_des_stmt.Tpo $(DEPDIR)/auth_des_stmt.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='saml/auth_des_stmt.c' object='auth_des_stmt.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o auth_des_stmt.lo `test -f 'saml/auth_des_stmt.c' || echo '$(srcdir)/'`saml/auth_des_stmt.c condition.lo: saml/condition.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT condition.lo -MD -MP -MF $(DEPDIR)/condition.Tpo -c -o condition.lo `test -f 'saml/condition.c' || echo '$(srcdir)/'`saml/condition.c @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/condition.Tpo $(DEPDIR)/condition.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='saml/condition.c' object='condition.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o condition.lo `test -f 'saml/condition.c' || echo '$(srcdir)/'`saml/condition.c query.lo: saml/query.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT query.lo -MD -MP -MF $(DEPDIR)/query.Tpo -c -o query.lo `test -f 'saml/query.c' || echo '$(srcdir)/'`saml/query.c @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/query.Tpo $(DEPDIR)/query.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='saml/query.c' object='query.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o query.lo `test -f 'saml/query.c' || echo '$(srcdir)/'`saml/query.c response.lo: saml/response.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT response.lo -MD -MP -MF $(DEPDIR)/response.Tpo -c -o response.lo `test -f 'saml/response.c' || echo '$(srcdir)/'`saml/response.c @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/response.Tpo $(DEPDIR)/response.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='saml/response.c' object='response.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o response.lo `test -f 'saml/response.c' || echo '$(srcdir)/'`saml/response.c subject.lo: saml/subject.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT subject.lo -MD -MP -MF $(DEPDIR)/subject.Tpo -c -o subject.lo `test -f 'saml/subject.c' || echo '$(srcdir)/'`saml/subject.c @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/subject.Tpo $(DEPDIR)/subject.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='saml/subject.c' object='subject.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o subject.lo `test -f 'saml/subject.c' || echo '$(srcdir)/'`saml/subject.c attr_stmt.lo: saml/attr_stmt.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT attr_stmt.lo -MD -MP -MF $(DEPDIR)/attr_stmt.Tpo -c -o attr_stmt.lo `test -f 'saml/attr_stmt.c' || echo '$(srcdir)/'`saml/attr_stmt.c @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/attr_stmt.Tpo $(DEPDIR)/attr_stmt.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='saml/attr_stmt.c' object='attr_stmt.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o attr_stmt.lo `test -f 'saml/attr_stmt.c' || echo '$(srcdir)/'`saml/attr_stmt.c auth_smt.lo: saml/auth_smt.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT auth_smt.lo -MD -MP -MF $(DEPDIR)/auth_smt.Tpo -c -o auth_smt.lo `test -f 'saml/auth_smt.c' || echo '$(srcdir)/'`saml/auth_smt.c @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/auth_smt.Tpo $(DEPDIR)/auth_smt.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='saml/auth_smt.c' object='auth_smt.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o auth_smt.lo `test -f 'saml/auth_smt.c' || echo '$(srcdir)/'`saml/auth_smt.c id_type.lo: saml/id_type.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT id_type.lo -MD -MP -MF $(DEPDIR)/id_type.Tpo -c -o id_type.lo `test -f 'saml/id_type.c' || echo '$(srcdir)/'`saml/id_type.c @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/id_type.Tpo $(DEPDIR)/id_type.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='saml/id_type.c' object='id_type.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o id_type.lo `test -f 'saml/id_type.c' || echo '$(srcdir)/'`saml/id_type.c request.lo: saml/request.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT request.lo -MD -MP -MF $(DEPDIR)/request.Tpo -c -o request.lo `test -f 'saml/request.c' || echo '$(srcdir)/'`saml/request.c @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/request.Tpo $(DEPDIR)/request.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='saml/request.c' object='request.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o request.lo `test -f 'saml/request.c' || echo '$(srcdir)/'`saml/request.c stmt.lo: saml/stmt.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT stmt.lo -MD -MP -MF $(DEPDIR)/stmt.Tpo -c -o stmt.lo `test -f 'saml/stmt.c' || echo '$(srcdir)/'`saml/stmt.c @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/stmt.Tpo $(DEPDIR)/stmt.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='saml/stmt.c' object='stmt.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o stmt.lo `test -f 'saml/stmt.c' || echo '$(srcdir)/'`saml/stmt.c sutil.lo: saml/sutil.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sutil.lo -MD -MP -MF $(DEPDIR)/sutil.Tpo -c -o sutil.lo `test -f 'saml/sutil.c' || echo '$(srcdir)/'`saml/sutil.c @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/sutil.Tpo $(DEPDIR)/sutil.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='saml/sutil.c' object='sutil.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sutil.lo `test -f 'saml/sutil.c' || echo '$(srcdir)/'`saml/sutil.c mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ distdir=`$(am__cd) $(distdir) && pwd`; \ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ (cd $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$top_distdir" \ distdir="$$distdir/$$subdir" \ am__remove_distdir=: \ am__skip_length_check=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(LTLIBRARIES) installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-exec-am: install-html: install-html-recursive install-info: install-info-recursive install-man: install-pdf: install-pdf-recursive install-ps: install-ps-recursive installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ install-strip .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic clean-libtool \ clean-noinstLTLIBRARIES ctags ctags-recursive distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: rampartc-src-1.3.0/src/omxmlsec/transform.c0000644000076500007650000000750511202453422020562 0ustar shankarshankar/* * 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. */ #include #include #include #include struct oxs_transform_t { axis2_char_t *id ; oxs_tr_dtype_t input_data_type; oxs_tr_dtype_t output_data_type; oxs_transform_tr_func transform_func; /*The function to implement the transform*/ }; AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_transform_get_id( const oxs_transform_t *transform, const axutil_env_t *env) { return transform->id; } AXIS2_EXTERN oxs_tr_dtype_t AXIS2_CALL oxs_transform_get_input_data_type( const oxs_transform_t *transform, const axutil_env_t *env) { return transform->input_data_type; } AXIS2_EXTERN oxs_tr_dtype_t AXIS2_CALL oxs_transform_get_output_data_type( const oxs_transform_t *transform, const axutil_env_t *env) { return transform->output_data_type; } AXIS2_EXTERN oxs_transform_tr_func AXIS2_CALL oxs_transform_get_transform_function( const oxs_transform_t *transform, const axutil_env_t *env) { return transform->transform_func; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_transform_set_id( oxs_transform_t *transform, const axutil_env_t *env, axis2_char_t *id) { if (transform->id) { AXIS2_FREE(env->allocator, transform->id); transform->id = NULL; } transform->id = axutil_strdup(env, id); return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_transform_set_input_data_type( oxs_transform_t *transform, const axutil_env_t *env, oxs_tr_dtype_t input_data_type) { transform->input_data_type = input_data_type; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_transform_set_output_data_type( oxs_transform_t *transform, const axutil_env_t *env, oxs_tr_dtype_t output_data_type) { transform->output_data_type = output_data_type; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_transform_set_transform_func( oxs_transform_t *transform, const axutil_env_t *env, oxs_transform_tr_func transform_func) { transform->transform_func = transform_func; return AXIS2_SUCCESS; } /*Create function*/ AXIS2_EXTERN oxs_transform_t *AXIS2_CALL oxs_transform_create(const axutil_env_t *env) { oxs_transform_t *transform = NULL; AXIS2_ENV_CHECK(env, NULL); transform = AXIS2_MALLOC(env->allocator, sizeof(oxs_transform_t)); if (!transform) { AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE); return NULL; } transform->id = NULL; transform->input_data_type = OXS_TRANSFORM_TYPE_UNKNOWN; transform->output_data_type = OXS_TRANSFORM_TYPE_UNKNOWN; return transform; } /*Free*/ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_transform_free(oxs_transform_t *transform, const axutil_env_t *env) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); if (transform->id) { AXIS2_FREE(env->allocator, transform->id); transform->id = NULL; } AXIS2_FREE(env->allocator, transform); transform = NULL; return AXIS2_SUCCESS; } rampartc-src-1.3.0/src/omxmlsec/sign_ctx.c0000644000076500007650000002123611202453422020362 0ustar shankarshankar/* * 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. */ #include #include #include #include #include struct oxs_sign_ctx_t { axis2_char_t *sign_mtd_algo; axis2_char_t *c14n_mtd ; axis2_char_t *sig_val ; axutil_array_list_t *sign_parts; oxs_x509_cert_t *certificate ; openssl_pkey_t *prv_key ; openssl_pkey_t *pub_key ; oxs_sign_operation_t operation; oxs_key_t *secret; }; /*Public functions*/ AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_sign_ctx_get_sign_mtd_algo( const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env) { return sign_ctx->sign_mtd_algo; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_sign_ctx_get_c14n_mtd( const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env) { return sign_ctx->c14n_mtd; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_sign_ctx_get_sig_val( const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env) { return sign_ctx->sig_val; } AXIS2_EXTERN axutil_array_list_t *AXIS2_CALL oxs_sign_ctx_get_sign_parts( const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env) { return sign_ctx->sign_parts; } AXIS2_EXTERN oxs_x509_cert_t *AXIS2_CALL oxs_sign_ctx_get_certificate( const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env) { return sign_ctx->certificate ; } AXIS2_EXTERN openssl_pkey_t *AXIS2_CALL oxs_sign_ctx_get_private_key( const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env) { return sign_ctx->prv_key ; } AXIS2_EXTERN openssl_pkey_t *AXIS2_CALL oxs_sign_ctx_get_public_key( const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env) { /*If the public key is set then use it. Else get the public key from the certificate.*/ if(sign_ctx->pub_key){ AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[oxs][sign_ctx] Public key is available directly"); return sign_ctx->pub_key ; }else if(sign_ctx->certificate){ AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[oxs][sign_ctx] Public key is not available directly. Extracting the certificate"); return oxs_x509_cert_get_public_key(sign_ctx->certificate, env); }else{ AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[oxs][sign_ctx] Public key is available neither in the ctx nor in the certificate"); return NULL; } } AXIS2_EXTERN oxs_key_t *AXIS2_CALL oxs_sign_ctx_get_secret( const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env) { return sign_ctx->secret; } AXIS2_EXTERN oxs_sign_operation_t AXIS2_CALL oxs_sign_ctx_get_operation( const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env) { return sign_ctx->operation; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sign_ctx_set_certificate( oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, oxs_x509_cert_t *certificate) { if (sign_ctx->certificate ) { sign_ctx->certificate = NULL; } sign_ctx->certificate = certificate; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sign_ctx_set_private_key( oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, openssl_pkey_t *prv_key) { if (sign_ctx->prv_key ) { sign_ctx->prv_key = NULL; } sign_ctx->prv_key = prv_key; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sign_ctx_set_public_key( oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, openssl_pkey_t *pub_key) { if (sign_ctx->pub_key ) { sign_ctx->pub_key = NULL; } sign_ctx->pub_key = pub_key; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sign_ctx_set_secret( oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, oxs_key_t *secret) { if (sign_ctx->secret ) { sign_ctx->secret = NULL; } sign_ctx->secret = secret; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sign_ctx_set_sign_mtd_algo( oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, axis2_char_t *sign_mtd_algo) { if (sign_ctx->sign_mtd_algo) { AXIS2_FREE(env->allocator, sign_ctx->sign_mtd_algo); sign_ctx->sign_mtd_algo = NULL; } sign_ctx->sign_mtd_algo = axutil_strdup(env,sign_mtd_algo); return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sign_ctx_set_c14n_mtd( oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, axis2_char_t *c14n_mtd) { if (sign_ctx->c14n_mtd) { AXIS2_FREE(env->allocator, sign_ctx->c14n_mtd); sign_ctx->c14n_mtd = NULL; } sign_ctx->c14n_mtd = axutil_strdup(env, c14n_mtd); return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sign_ctx_set_sig_val( oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, axis2_char_t *sig_val) { if (sign_ctx->sig_val) { AXIS2_FREE(env->allocator, sign_ctx->sig_val); sign_ctx->sig_val = NULL; } sign_ctx->sig_val = axutil_strdup(env, sig_val); return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sign_ctx_set_sign_parts( oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, axutil_array_list_t *sign_parts) { if(sign_ctx->sign_parts){ sign_ctx->sign_parts = NULL; } sign_ctx->sign_parts = sign_parts; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sign_ctx_set_operation( oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, oxs_sign_operation_t operation ) { sign_ctx->operation = operation; return AXIS2_SUCCESS; } AXIS2_EXTERN oxs_sign_ctx_t *AXIS2_CALL oxs_sign_ctx_create(const axutil_env_t *env) { oxs_sign_ctx_t *sign_ctx = NULL; AXIS2_ENV_CHECK(env, NULL); sign_ctx = AXIS2_MALLOC(env->allocator, sizeof(oxs_sign_ctx_t)); if (!sign_ctx) { AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE); return NULL; } sign_ctx->sign_mtd_algo= NULL; sign_ctx->c14n_mtd = NULL; sign_ctx->sig_val = NULL; sign_ctx->sign_parts = NULL; sign_ctx->certificate = NULL; sign_ctx->prv_key = NULL; sign_ctx->pub_key = NULL; sign_ctx->operation = OXS_SIGN_OPERATION_NONE; sign_ctx->secret=NULL; return sign_ctx; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sign_ctx_free(oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); if (sign_ctx->sign_mtd_algo) { AXIS2_FREE(env->allocator, sign_ctx->sign_mtd_algo); sign_ctx->sign_mtd_algo = NULL; } if (sign_ctx->c14n_mtd) { AXIS2_FREE(env->allocator, sign_ctx->c14n_mtd); sign_ctx->c14n_mtd = NULL; } if (sign_ctx->sig_val) { AXIS2_FREE(env->allocator, sign_ctx->sig_val); sign_ctx->sig_val = NULL; } if(sign_ctx->prv_key) { openssl_pkey_free(sign_ctx->prv_key, env); sign_ctx->prv_key = NULL; } if(sign_ctx->pub_key) { openssl_pkey_free(sign_ctx->pub_key, env); sign_ctx->pub_key = NULL; } if(sign_ctx->sign_parts) { int size = 0; int j = 0; size = axutil_array_list_size(sign_ctx->sign_parts, env); for (j = 0; j < size; j++) { oxs_sign_part_t *sig_part = NULL; sig_part = axutil_array_list_get(sign_ctx->sign_parts, env, j); oxs_sign_part_free(sig_part, env); sig_part = NULL; } axutil_array_list_free(sign_ctx->sign_parts, env); sign_ctx->sign_parts = NULL; } /** * in current impleemtnation we set the certificate found in the signature processing * to rampart context. Because of that rampart context must free the cert. But have to * fix the free logic when we use certificate directly from file. */ /* if(sign_ctx->certificate){ oxs_x509_cert_free(sign_ctx->certificate, env); sign_ctx->certificate = NULL; }*/ sign_ctx->operation = OXS_SIGN_OPERATION_NONE; AXIS2_FREE(env->allocator, sign_ctx); sign_ctx = NULL; return AXIS2_SUCCESS; } rampartc-src-1.3.0/src/omxmlsec/ctx.c0000644000076500007650000002314111202453422017337 0ustar shankarshankar/* * 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. */ #include #include #include #include struct oxs_ctx_t { /*Encryption mode*/ oxs_ctx_mode_t mode; /*transformation type */ oxs_ctx_operation_t operation; /*key*/ oxs_key_t* key; /* attributes from EncryptedData or EncryptedKey */ axis2_char_t* id; axis2_char_t* type; axis2_char_t* mime_type; axis2_char_t* encoding; axis2_char_t* recipient; axis2_char_t* ref_key_name; /*attributes from EncryptionMethod*/ axis2_char_t* enc_mtd_algorithm; /*Used in decryption process to keep the data to be decrypted*/ axis2_char_t* input_data; }; /******************* function headers ******************************/ AXIS2_EXTERN oxs_ctx_t *AXIS2_CALL oxs_ctx_create(const axutil_env_t *env) { oxs_ctx_t *ctx = NULL; AXIS2_ENV_CHECK(env, NULL); ctx = (oxs_ctx_t*)AXIS2_MALLOC(env->allocator, sizeof(oxs_ctx_t)); if (!ctx) { AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE); return NULL; } ctx->mode = -1; ctx->operation = -1; ctx->key = NULL; ctx->id = NULL; ctx->type = NULL; ctx->mime_type = NULL; ctx->encoding = NULL; ctx->recipient = NULL; ctx->ref_key_name = NULL; ctx->enc_mtd_algorithm = NULL; ctx->input_data = NULL; return ctx; } /*public functions*/ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_ctx_free(oxs_ctx_t *ctx, const axutil_env_t *env ) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); if (ctx->id) { AXIS2_FREE(env->allocator, ctx->id); ctx->id = NULL; } if (ctx->type) { AXIS2_FREE(env->allocator, ctx->type); ctx->type = NULL; } if (ctx->mime_type) { AXIS2_FREE(env->allocator, ctx->mime_type); ctx->mime_type = NULL; } if (ctx->encoding) { AXIS2_FREE(env->allocator, ctx->encoding); ctx->encoding = NULL; } if (ctx->recipient) { AXIS2_FREE(env->allocator, ctx->recipient); ctx->recipient = NULL; } if (ctx->ref_key_name) { AXIS2_FREE(env->allocator, ctx->ref_key_name); ctx->ref_key_name = NULL; } if (ctx->enc_mtd_algorithm) { AXIS2_FREE(env->allocator, ctx->enc_mtd_algorithm); ctx->enc_mtd_algorithm = NULL; } if (ctx->input_data) { AXIS2_FREE(env->allocator, ctx->input_data); ctx->input_data = NULL; } AXIS2_FREE(env->allocator, ctx); ctx = NULL; return AXIS2_SUCCESS; } AXIS2_EXTERN oxs_ctx_mode_t AXIS2_CALL oxs_ctx_get_mode( oxs_ctx_t *ctx, const axutil_env_t *env ) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); return ctx->mode ; } AXIS2_EXTERN oxs_ctx_operation_t AXIS2_CALL oxs_ctx_get_operation( oxs_ctx_t *ctx, const axutil_env_t *env ) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); return ctx->operation ; } AXIS2_EXTERN oxs_key_t *AXIS2_CALL oxs_ctx_get_key( oxs_ctx_t *ctx, const axutil_env_t *env ) { AXIS2_ENV_CHECK(env, NULL); return ctx->key ; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_ctx_get_id( oxs_ctx_t *ctx, const axutil_env_t *env ) { AXIS2_ENV_CHECK(env, NULL); return ctx->id ; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_ctx_get_type( oxs_ctx_t *ctx, const axutil_env_t *env ) { AXIS2_ENV_CHECK(env, NULL); return ctx->type ; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_ctx_get_mime_type( oxs_ctx_t *ctx, const axutil_env_t *env ) { AXIS2_ENV_CHECK(env, NULL); return ctx->mime_type ; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_ctx_get_encoding( oxs_ctx_t *ctx, const axutil_env_t *env ) { AXIS2_ENV_CHECK(env, NULL); return ctx->encoding ; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_ctx_get_recipient( oxs_ctx_t *ctx, const axutil_env_t *env ) { AXIS2_ENV_CHECK(env, NULL); return ctx->recipient ; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_ctx_get_ref_key_name( oxs_ctx_t *ctx, const axutil_env_t *env ) { AXIS2_ENV_CHECK(env, NULL); return ctx->ref_key_name ; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_ctx_get_enc_mtd_algorithm( oxs_ctx_t *ctx, const axutil_env_t *env ) { AXIS2_ENV_CHECK(env, NULL); return ctx->enc_mtd_algorithm ; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_ctx_get_input_data( oxs_ctx_t *ctx, const axutil_env_t *env ) { AXIS2_ENV_CHECK(env, NULL); return ctx->input_data ; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_ctx_set_mode( oxs_ctx_t *ctx, const axutil_env_t *env, oxs_ctx_mode_t mode ) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); ctx->mode = mode ; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_ctx_set_operation( oxs_ctx_t *ctx, const axutil_env_t *env, oxs_ctx_operation_t operation ) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); ctx->operation = operation ; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_ctx_set_key( oxs_ctx_t *ctx, const axutil_env_t *env, oxs_key_t *key ) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); /* if (ctx->key) { oxs_key_free(ctx->key, env); ctx->key = NULL; }*/ ctx->key = key; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_ctx_set_id( oxs_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *id ) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, id, AXIS2_FAILURE); if (ctx->id) { AXIS2_FREE(env->allocator, ctx->id); ctx->id = NULL; } ctx->id = axutil_strdup(env, id); return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_ctx_set_type( oxs_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *type ) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, type, AXIS2_FAILURE); if (ctx->type) { AXIS2_FREE(env->allocator, ctx->type); ctx->type = NULL; } ctx->type = axutil_strdup(env, type); return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_ctx_set_mime_type( oxs_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *mime_type ) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, mime_type, AXIS2_FAILURE); if (ctx->mime_type) { AXIS2_FREE(env->allocator, ctx->mime_type); ctx->mime_type = NULL; } ctx->mime_type = axutil_strdup(env, mime_type); return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_ctx_set_encoding( oxs_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *encoding ) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, encoding, AXIS2_FAILURE); if (ctx->encoding) { AXIS2_FREE(env->allocator, ctx->encoding); ctx->encoding = NULL; } ctx->encoding = axutil_strdup(env, encoding); return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_ctx_set_recipient( oxs_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *recipient ) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, recipient, AXIS2_FAILURE); if (ctx->recipient) { AXIS2_FREE(env->allocator, ctx->recipient); ctx->recipient = NULL; } ctx->recipient = axutil_strdup(env, recipient); return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_ctx_set_ref_key_name( oxs_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *ref_key_name ) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, ref_key_name, AXIS2_FAILURE); if (ctx->ref_key_name) { AXIS2_FREE(env->allocator, ctx->ref_key_name); ctx->ref_key_name = NULL; } ctx->ref_key_name = axutil_strdup(env, ref_key_name); return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_ctx_set_enc_mtd_algorithm( oxs_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *enc_mtd_algorithm ) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, enc_mtd_algorithm, AXIS2_FAILURE); if (ctx->enc_mtd_algorithm) { AXIS2_FREE(env->allocator, ctx->enc_mtd_algorithm); ctx->enc_mtd_algorithm = NULL; } ctx->enc_mtd_algorithm = axutil_strdup(env, enc_mtd_algorithm); return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_ctx_set_input_data( oxs_ctx_t *ctx, const axutil_env_t *env, axis2_char_t *input_data ) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, input_data, AXIS2_FAILURE); if (ctx->input_data) { AXIS2_FREE(env->allocator, ctx->input_data); ctx->input_data = NULL; } ctx->input_data = axutil_strdup(env, input_data) ; return AXIS2_SUCCESS; } rampartc-src-1.3.0/src/omxmlsec/key_mgr.c0000644000076500007650000007530311202453422020205 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include #include #include struct oxs_key_mgr_t { /* Location of the private key file */ axis2_char_t *private_key_file; /*Pasword of the private key */ axis2_char_t *prv_key_password; /*Location of the cert file of the private key owner */ axis2_char_t *certificate_file; /*Location of the cert file of the user at the other end */ axis2_char_t *reciever_certificate_file; /* Priate key */ void *prv_key; /*Type of the private key */ axis2_key_type_t prv_key_type; /*Owner certificate */ void *certificate; /* type of the certificate */ axis2_key_type_t certificate_type; /*Certificate of the enityt at the other end*/ void *receiver_certificate; /*Type of Certificate at the other end*/ axis2_key_type_t receiver_certificate_type; /* PKCS12 Key store */ pkcs12_keystore_t *key_store; void *pkcs12_buf; int pkcs12_buff_len; /* Buffer holding keys and certs */ void *pem_buf; /* Format of the current key */ oxs_key_mgr_format_t format; /* ref count to monitor when to free */ int ref; }; AXIS2_EXTERN oxs_key_mgr_t * AXIS2_CALL oxs_key_mgr_create(const axutil_env_t *env) { oxs_key_mgr_t *key_mgr = NULL; key_mgr = AXIS2_MALLOC(env->allocator, sizeof(oxs_key_mgr_t)); if (key_mgr) { key_mgr->private_key_file = NULL; key_mgr->certificate_file = NULL; key_mgr->reciever_certificate_file = NULL; key_mgr->prv_key_password = NULL; key_mgr->prv_key = NULL; key_mgr->prv_key_type = AXIS2_KEY_TYPE_UNKNOWN; key_mgr->certificate = NULL; key_mgr->certificate_type = AXIS2_KEY_TYPE_UNKNOWN; key_mgr->receiver_certificate = NULL; key_mgr->receiver_certificate_type = AXIS2_KEY_TYPE_UNKNOWN; key_mgr->key_store = NULL; key_mgr->pem_buf = NULL; key_mgr->format = -1; key_mgr->pkcs12_buf = NULL; key_mgr->ref = 1; } return key_mgr; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_mgr_free(oxs_key_mgr_t *key_mgr, const axutil_env_t *env) { if(--(key_mgr->ref) < 1) { if(key_mgr->certificate) { if(key_mgr->certificate_type == AXIS2_KEY_TYPE_PEM) { AXIS2_FREE(env->allocator, key_mgr->certificate); } else { oxs_x509_cert_free(key_mgr->certificate, env); } key_mgr->certificate = NULL; } if(key_mgr->receiver_certificate) { if(key_mgr->receiver_certificate_type == AXIS2_KEY_TYPE_PEM) { AXIS2_FREE(env->allocator, key_mgr->receiver_certificate); } else { oxs_x509_cert_free(key_mgr->receiver_certificate, env); } key_mgr->receiver_certificate = NULL; } /*if(key_mgr->prv_key) { if(key_mgr->prv_key_type== AXIS2_KEY_TYPE_PEM) { AXIS2_FREE(env->allocator, key_mgr->prv_key); } else { openssl_pkey_free(key_mgr->prv_key, env); } key_mgr->receiver_certificate = NULL; }*/ AXIS2_FREE(env->allocator, key_mgr); } return AXIS2_SUCCESS; } AXIS2_EXTERN pkcs12_keystore_t* AXIS2_CALL oxs_key_mgr_get_key_store( oxs_key_mgr_t *key_mgr, const axutil_env_t *env) { return key_mgr->key_store; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_key_mgr_get_prv_key_password( oxs_key_mgr_t *key_mgr, const axutil_env_t *env) { return key_mgr->prv_key_password; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_mgr_set_prv_key_password( oxs_key_mgr_t *key_mgr, const axutil_env_t *env, axis2_char_t *password) { key_mgr->prv_key_password = password; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_key_mgr_get_private_key_file( oxs_key_mgr_t *key_mgr, const axutil_env_t *env) { return key_mgr->private_key_file; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_key_mgr_get_certificate_file( oxs_key_mgr_t *key_mgr, const axutil_env_t *env) { return key_mgr->certificate_file; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_key_mgr_get_reciever_certificate_file( oxs_key_mgr_t *key_mgr, const axutil_env_t *env) { return key_mgr->reciever_certificate_file; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_mgr_set_private_key_file( oxs_key_mgr_t *key_mgr, const axutil_env_t *env, axis2_char_t *file_name) { key_mgr->private_key_file = file_name; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_mgr_set_certificate_file( oxs_key_mgr_t *key_mgr, const axutil_env_t *env, axis2_char_t *file_name) { key_mgr->certificate_file = file_name; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_mgr_set_reciever_certificate_file( oxs_key_mgr_t *key_mgr, const axutil_env_t *env, axis2_char_t *file_name) { key_mgr->reciever_certificate_file = file_name; return AXIS2_SUCCESS; } AXIS2_EXTERN void *AXIS2_CALL oxs_key_mgr_get_certificate( oxs_key_mgr_t *key_mgr, const axutil_env_t *env) { /*void *key_buf = NULL;*/ /* axis2_key_type_t type = 0;*/ oxs_x509_cert_t *cert = NULL; axis2_char_t *certificate_file = NULL; if (key_mgr->certificate) { if(key_mgr->certificate_type == AXIS2_KEY_TYPE_PEM) { cert = oxs_key_mgr_load_x509_cert_from_string(env, (axis2_char_t *)key_mgr->certificate); if(!cert) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_signature] Certificate cannot be loaded from the buffer."); return NULL; } else { key_mgr->certificate = cert; key_mgr->certificate_type = AXIS2_KEY_TYPE_CERT; return cert; } } else if(key_mgr->certificate_type == AXIS2_KEY_TYPE_CERT) { return key_mgr->certificate; } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_signature] Key file type unknown."); return NULL; } } certificate_file = oxs_key_mgr_get_certificate_file(key_mgr, env); if(certificate_file) { cert = oxs_key_mgr_load_x509_cert_from_pem_file(env, certificate_file); if(!cert) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_signature] Certificate cannot be loaded from the file."); return NULL; } } else if(oxs_key_mgr_get_key_store(key_mgr, env)) { cert = pkcs12_keystore_get_owner_certificate(key_mgr->key_store, env); if(!cert) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_signature] Certificate cannot be loaded from the key store."); return NULL; } } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_signature] Public key certificate file is not specified."); return NULL; } return cert; } AXIS2_EXTERN axis2_key_type_t AXIS2_CALL oxs_key_mgr_get_certificate_type( oxs_key_mgr_t *key_mgr, const axutil_env_t *env) { return key_mgr->certificate_type; } AXIS2_EXTERN void * AXIS2_CALL oxs_key_mgr_get_prv_key( oxs_key_mgr_t *key_mgr, const axutil_env_t *env) { void *key_buf = NULL; openssl_pkey_t *prvkey = NULL; axis2_char_t *prv_key_file = NULL; axis2_char_t *password = NULL; key_buf = key_mgr->prv_key; if(key_buf) { if(key_mgr->prv_key_type == AXIS2_KEY_TYPE_PEM) { prvkey = oxs_key_mgr_load_private_key_from_string( env, (axis2_char_t *)key_buf, NULL); if(!prvkey) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[oxs]Can't load the key from buffer"); return NULL; } /*key_mgr->prv_key = prvkey; key_mgr->prv_key_type = AXIS2_KEY_TYPE_CERT; } else if(key_mgr->prv_key_type == AXIS2_KEY_TYPE_CERT) { prvkey = key_buf;*/ } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[oxs] Private key type is unknown."); return NULL; } } else { /*Buffer is null load from the file*/ prv_key_file = key_mgr->private_key_file; /*Get the password to retrieve the key from key store*/ password = key_mgr->prv_key_password; if(prv_key_file) { if(oxs_util_get_format_by_file_extension(env, prv_key_file) ==OXS_ASYM_CTX_FORMAT_PEM) { prvkey = oxs_key_mgr_load_private_key_from_pem_file(env, prv_key_file, password); if(!prvkey) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[oxs]Cannot load the private key from file."); return NULL; } /*key_mgr->prv_key = prvkey; key_mgr->prv_key_type = AXIS2_KEY_TYPE_CERT;*/ } } else { if(key_mgr->key_store) { prvkey = pkcs12_keystore_get_owner_private_key(key_mgr->key_store, env); if(!prvkey) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][key_mgr] Cannot load the private key from pkcs12 key store."); return NULL; } key_mgr->prv_key_type = AXIS2_KEY_TYPE_PEM; } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][key_mgr] Cannot find a way to load the private key."); return NULL; } } } return prvkey; } AXIS2_EXTERN axis2_key_type_t AXIS2_CALL oxs_key_mgr_get_prv_key_type( oxs_key_mgr_t *key_mgr, const axutil_env_t *env) { return key_mgr->prv_key_type; } AXIS2_EXTERN void *AXIS2_CALL oxs_key_mgr_get_receiver_certificate( oxs_key_mgr_t *key_mgr, const axutil_env_t *env) { oxs_x509_cert_t *oxs_cert = NULL; if (key_mgr->receiver_certificate) { if(key_mgr->receiver_certificate_type == AXIS2_KEY_TYPE_PEM) { oxs_cert = oxs_key_mgr_load_x509_cert_from_string(env, (axis2_char_t *)key_mgr->receiver_certificate); if(!oxs_cert) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_signature] Certificate cannot be loaded from the buffer."); return NULL; } else { key_mgr->receiver_certificate = oxs_cert; key_mgr->receiver_certificate_type = AXIS2_KEY_TYPE_CERT; return oxs_cert; } } else if(key_mgr->receiver_certificate_type == AXIS2_KEY_TYPE_CERT) { return key_mgr->receiver_certificate; } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_signature] Key file type unknown."); return NULL; } } else { /* If user has specified the certificate/private key directly we will extract the information from it. * Else we will look for a file name to load the certificate/private key*/ if(key_mgr->reciever_certificate_file) { oxs_cert = oxs_key_mgr_load_x509_cert_from_pem_file(env, key_mgr->reciever_certificate_file); key_mgr->receiver_certificate = oxs_cert; key_mgr->receiver_certificate_type = AXIS2_KEY_TYPE_CERT; } else if(key_mgr->key_store) { oxs_cert = pkcs12_keystore_get_other_certificate(key_mgr->key_store, env); } } return oxs_cert; } AXIS2_EXTERN axis2_key_type_t AXIS2_CALL oxs_key_mgr_get_receiver_certificate_type( oxs_key_mgr_t *key_mgr, const axutil_env_t *env) { return key_mgr->receiver_certificate_type; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_mgr_set_certificate( oxs_key_mgr_t *key_mgr, const axutil_env_t *env, void *certificate) { key_mgr->certificate = certificate; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_mgr_set_certificate_type( oxs_key_mgr_t *key_mgr, const axutil_env_t *env, axis2_key_type_t type) { key_mgr->certificate_type = type; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_mgr_set_prv_key( oxs_key_mgr_t *key_mgr, const axutil_env_t *env, void *key) { key_mgr->prv_key = key; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_mgr_set_prv_key_type( oxs_key_mgr_t *key_mgr, const axutil_env_t *env, axis2_key_type_t type) { key_mgr->prv_key_type = type; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_mgr_set_receiver_certificate( oxs_key_mgr_t *key_mgr, const axutil_env_t *env, void *certificate) { key_mgr->receiver_certificate = certificate; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_mgr_set_receiver_certificate_type( oxs_key_mgr_t *key_mgr, const axutil_env_t *env, axis2_key_type_t type) { key_mgr->receiver_certificate_type = type; return AXIS2_SUCCESS; } AXIS2_EXTERN oxs_key_mgr_format_t AXIS2_CALL oxs_key_mgr_get_format( oxs_key_mgr_t *key_mgr, const axutil_env_t *env) { return key_mgr->format; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_mgr_set_format( oxs_key_mgr_t *key_mgr, const axutil_env_t *env, oxs_key_mgr_format_t format) { key_mgr->format = format; return AXIS2_SUCCESS; } AXIS2_EXTERN void * AXIS2_CALL oxs_key_mgr_get_pem_buf( oxs_key_mgr_t *key_mgr, const axutil_env_t *env) { return key_mgr->pem_buf; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_mgr_set_pem_buf( oxs_key_mgr_t *key_mgr, const axutil_env_t *env, void *pem_buf) { key_mgr->pem_buf = pem_buf; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_mgr_set_key_store( oxs_key_mgr_t *key_mgr, const axutil_env_t *env, pkcs12_keystore_t *key_store) { key_mgr->key_store = key_store; return AXIS2_SUCCESS; } #if 0 /** * Loads the key * 1. If the key buffer is specified, Take that as the source. * 2. Else if the key file name has specified, Take that as the source. */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_mgr_load_key( oxs_key_mgr_t *key_mgr, const axutil_env_t *env, oxs_asym_ctx_t *ctx) { axis2_char_t *filename = NULL; axis2_char_t *pem_buf = NULL; axis2_status_t status = AXIS2_FAILURE; openssl_x509_format_t format; openssl_pkey_t *open_prvkey = NULL; openssl_pkey_t *open_pubkey = NULL; oxs_x509_cert_t *oxs_cert = NULL; X509 *cert = NULL; STACK_OF(X509) *ca = NULL; EVP_PKEY *prvkey = NULL; EVP_PKEY *pubkey = NULL; /* If user has specified the certificate/private key directly we will extract the information from it. * Else we will look for a file name to load the certificate/private key*/ pem_buf = oxs_key_mgr_get_pem_buf(key_mgr, env); if(pem_buf) { if( OXS_ASYM_CTX_OPERATION_PUB_ENCRYPT == oxs_asym_ctx_get_operation(ctx, env) || OXS_ASYM_CTX_OPERATION_PUB_DECRYPT == oxs_asym_ctx_get_operation(ctx, env)) { /*load certificate from buf*/ status = openssl_x509_load_from_buffer(env, pem_buf, &cert); } else { /*load private key from buf*/ status = openssl_pem_buf_read_pkey(env, pem_buf, key_mgr->prv_key_password, OPENSSL_PEM_PKEY_TYPE_PRIVATE_KEY, &prvkey); if(status == AXIS2_FAILURE) { prvkey = NULL; } } } else { oxs_asym_ctx_operation_t operation = oxs_asym_ctx_get_operation(ctx, env); if((operation == OXS_ASYM_CTX_OPERATION_PRV_DECRYPT) || (operation == OXS_ASYM_CTX_OPERATION_PRV_ENCRYPT)) { filename = oxs_key_mgr_get_private_key_file(key_mgr, env); } else if(operation == OXS_ASYM_CTX_OPERATION_PUB_DECRYPT) { filename = oxs_key_mgr_get_reciever_certificate_file(key_mgr, env); } else if(operation == OXS_ASYM_CTX_OPERATION_PUB_ENCRYPT) { filename = oxs_key_mgr_get_reciever_certificate_file(key_mgr, env); } /* pem_buf is NULL. So we have to fetch the key in a file*/ /* Get file to be loaded. Can be either in PEM or PKCS12 format*/ if(!filename){ return AXIS2_FAILURE; } if(OXS_ASYM_CTX_FORMAT_PEM == oxs_key_mgr_get_format(key_mgr, env)){ format = OPENSSL_X509_FORMAT_PEM; /*First let's check if this is a file containing a certificate*/ status = openssl_x509_load_from_pem(env, filename, &cert); if((status == AXIS2_FAILURE) || (!cert)){ /* If we cannot get the certificate then the file might contain either a public key or a private key*/ /* The type depends on the operation*/ operation = oxs_asym_ctx_get_operation(ctx, env); if((operation == OXS_ASYM_CTX_OPERATION_PRV_DECRYPT) || (operation == OXS_ASYM_CTX_OPERATION_PRV_ENCRYPT)){ status = openssl_pem_read_pkey(env, filename, key_mgr->prv_key_password, OPENSSL_PEM_PKEY_TYPE_PRIVATE_KEY, &prvkey); if(status == AXIS2_FAILURE){ prvkey = NULL; } } else if((operation == OXS_ASYM_CTX_OPERATION_PUB_DECRYPT) || (operation == OXS_ASYM_CTX_OPERATION_PUB_ENCRYPT)){ status = openssl_pem_read_pkey(env, filename, key_mgr->prv_key_password, OPENSSL_PEM_PKEY_TYPE_PUBLIC_KEY, &pubkey); if(status == AXIS2_FAILURE){ pubkey = NULL; } } } }else if(OXS_ASYM_CTX_FORMAT_PKCS12 == oxs_key_mgr_get_format(key_mgr, env)){ format = OPENSSL_X509_FORMAT_PKCS12; /* Here we load both key and the certificate*/ status = openssl_x509_load_from_pkcs12(env, filename, key_mgr->prv_key_password, &cert, &prvkey, &ca); if(AXIS2_FAILURE == status){ oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_DEFAULT, "Error reading the certificate"); return AXIS2_FAILURE; } } }/*end of pem_buf*/ /*Wht ever the way, right now we should have either the public key or the private key*/ /*If the prvkey is available, populate the openssl_pkey*/ if(prvkey){ open_prvkey = openssl_pkey_create(env); openssl_pkey_populate(open_prvkey, env, prvkey, filename, OPENSSL_PKEY_TYPE_PRIVATE_KEY); oxs_asym_ctx_set_private_key(ctx, env, open_prvkey); } /*If the public key is available populate*/ if(pubkey){ /*This scenario is not recommonded. This will be executed iff the file is a public key file in PEM format*/ open_pubkey = openssl_pkey_create(env); openssl_pkey_populate(open_pubkey, env, pubkey, filename, OPENSSL_PKEY_TYPE_PUBLIC_KEY); oxs_cert = oxs_x509_cert_create(env); oxs_x509_cert_set_public_key(oxs_cert, env, open_pubkey); oxs_asym_ctx_set_certificate(ctx, env, oxs_cert); } /*If the X509 certificate is available, populate oxs_x509_cert*/ if(cert){ axis2_char_t *x509_cert_data = NULL; axis2_char_t *x509_cert_date = NULL; axis2_char_t *x509_cert_issuer = NULL; axis2_char_t *x509_cert_subject = NULL; axis2_char_t *x509_cert_finger = NULL; axis2_char_t *x509_cert_key_id = NULL; axis2_char_t *x509_common_name = NULL; x509_cert_data = openssl_x509_get_cert_data(env, cert); x509_cert_date = openssl_x509_get_info(env, OPENSSL_X509_INFO_VALID_TO ,cert); x509_cert_issuer = openssl_x509_get_info(env, OPENSSL_X509_INFO_ISSUER ,cert); x509_cert_subject = openssl_x509_get_info(env, OPENSSL_X509_INFO_SUBJECT ,cert); x509_cert_finger = openssl_x509_get_info(env, OPENSSL_X509_INFO_FINGER,cert); x509_cert_key_id = openssl_x509_get_subject_key_identifier(env, cert); x509_common_name = openssl_x509_get_common_name(env,cert); /*Create certificate*/ oxs_cert = oxs_x509_cert_create(env); /*And populate it*/ oxs_x509_cert_set_data(oxs_cert, env, x509_cert_data); oxs_x509_cert_set_date(oxs_cert, env, x509_cert_date); oxs_x509_cert_set_issuer(oxs_cert, env, x509_cert_issuer); oxs_x509_cert_set_subject(oxs_cert, env, x509_cert_subject); oxs_x509_cert_set_fingerprint(oxs_cert, env, x509_cert_finger); oxs_x509_cert_set_serial_number(oxs_cert, env, openssl_x509_get_serial(env, cert)); oxs_x509_cert_set_key_identifier(oxs_cert, env, x509_cert_key_id); oxs_x509_cert_set_common_name(oxs_cert, env, x509_common_name); /*Additionally we need to set the public key*/ openssl_x509_get_pubkey(env, cert, &pubkey); open_pubkey = openssl_pkey_create(env); openssl_pkey_populate(open_pubkey, env, pubkey, x509_cert_finger, OPENSSL_PKEY_TYPE_PUBLIC_KEY); /*Set the public key to the x509 certificate*/ oxs_x509_cert_set_public_key(oxs_cert, env, open_pubkey); /*Set the x509 certificate to the asym ctx*/ oxs_asym_ctx_set_certificate(ctx, env, oxs_cert); AXIS2_FREE(env->allocator, x509_cert_data); x509_cert_data = NULL; AXIS2_FREE(env->allocator, x509_cert_date); x509_cert_date = NULL; AXIS2_FREE(env->allocator, x509_cert_issuer); x509_cert_issuer = NULL; AXIS2_FREE(env->allocator, x509_cert_subject); x509_cert_subject = NULL; AXIS2_FREE(env->allocator, x509_cert_finger); x509_cert_finger = NULL; AXIS2_FREE(env->allocator, x509_cert_key_id); x509_cert_key_id = NULL; AXIS2_FREE(env->allocator, x509_common_name); x509_common_name = NULL; X509_free(cert); cert = NULL; } /*If this fails to get anything return failure*/ if((!cert) && (!pubkey) && (!prvkey)){ oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_DEFAULT, "Error reading the key"); return AXIS2_FAILURE; } return AXIS2_SUCCESS; } /********************************************************************************************/ /*These are new set of functions that break-up the complex logic in oxs_key_mgr_load_key()*/ #endif AXIS2_EXTERN openssl_pkey_t* AXIS2_CALL oxs_key_mgr_load_private_key_from_string(const axutil_env_t *env, axis2_char_t *pem_string, /*in PEM format*/ axis2_char_t *password) { openssl_pkey_t *open_prvkey = NULL; axis2_status_t status = AXIS2_FAILURE; EVP_PKEY *prvkey = NULL; /*load private key from buf*/ status = openssl_pem_buf_read_pkey(env, pem_string, password, OPENSSL_PEM_PKEY_TYPE_PRIVATE_KEY, &prvkey); /*Populate*/ if(prvkey){ open_prvkey = openssl_pkey_create(env); openssl_pkey_populate(open_prvkey, env, prvkey, NULL, OPENSSL_PKEY_TYPE_PRIVATE_KEY); }else{ return NULL; } return open_prvkey; } AXIS2_EXTERN openssl_pkey_t* AXIS2_CALL oxs_key_mgr_load_private_key_from_pem_file( const axutil_env_t *env, axis2_char_t *filename, axis2_char_t *password) { openssl_pkey_t *open_prvkey = NULL; axis2_status_t status = AXIS2_FAILURE; EVP_PKEY *prvkey = NULL; /*Read EVP_PKEY*/ status = openssl_pem_read_pkey(env, filename, password, OPENSSL_PEM_PKEY_TYPE_PRIVATE_KEY, &prvkey); /*Populate*/ if(prvkey){ open_prvkey = openssl_pkey_create(env); openssl_pkey_populate(open_prvkey, env, prvkey, filename, OPENSSL_PKEY_TYPE_PRIVATE_KEY); }else{ return NULL; } return open_prvkey; } /*Private function to convert X509* -> oxs_x509_cert_t* */ static oxs_x509_cert_t* oxs_key_mgr_convert_to_x509(const axutil_env_t *env, X509 *cert) { oxs_x509_cert_t *oxs_cert = NULL; if(cert){ EVP_PKEY *pubkey = NULL; openssl_pkey_t *open_pubkey = NULL; axis2_char_t *x509_cert_data = NULL; axis2_char_t *x509_cert_date = NULL; axis2_char_t *x509_cert_issuer = NULL; axis2_char_t *x509_cert_subject = NULL; axis2_char_t *x509_cert_fingerprint = NULL; axis2_char_t *x509_cert_key_id = NULL; axis2_char_t *x509_common_name = NULL; x509_cert_data = openssl_x509_get_cert_data(env, cert); x509_cert_date = openssl_x509_get_info(env, OPENSSL_X509_INFO_VALID_TO ,cert); x509_cert_issuer = openssl_x509_get_info(env, OPENSSL_X509_INFO_ISSUER ,cert); x509_cert_subject = openssl_x509_get_info(env, OPENSSL_X509_INFO_SUBJECT ,cert); x509_cert_fingerprint = openssl_x509_get_info(env, OPENSSL_X509_INFO_FINGER,cert); x509_cert_key_id = openssl_x509_get_subject_key_identifier(env, cert); x509_common_name = openssl_x509_get_common_name(env,cert); /*Create X509 certificate*/ oxs_cert = oxs_x509_cert_create(env); oxs_x509_cert_set_data(oxs_cert, env, x509_cert_data); oxs_x509_cert_set_date(oxs_cert, env, x509_cert_date); oxs_x509_cert_set_issuer(oxs_cert, env, x509_cert_issuer); oxs_x509_cert_set_subject(oxs_cert, env, x509_cert_subject); oxs_x509_cert_set_fingerprint(oxs_cert, env, x509_cert_fingerprint); oxs_x509_cert_set_serial_number(oxs_cert, env, openssl_x509_get_serial(env, cert)); oxs_x509_cert_set_key_identifier(oxs_cert, env, x509_cert_key_id); oxs_x509_cert_set_common_name(oxs_cert, env, x509_common_name); /*Additionally we need to set the public key*/ openssl_x509_get_pubkey(env, cert, &pubkey); open_pubkey = openssl_pkey_create(env); openssl_pkey_populate(open_pubkey, env, pubkey, x509_cert_fingerprint, OPENSSL_PKEY_TYPE_PUBLIC_KEY); /*Set the public key to the x509 certificate*/ oxs_x509_cert_set_public_key(oxs_cert, env, open_pubkey); /*Free*/ AXIS2_FREE(env->allocator, x509_cert_data); x509_cert_data = NULL; AXIS2_FREE(env->allocator, x509_cert_date); x509_cert_date = NULL; AXIS2_FREE(env->allocator, x509_cert_issuer); x509_cert_issuer = NULL; AXIS2_FREE(env->allocator, x509_cert_subject); x509_cert_subject = NULL; AXIS2_FREE(env->allocator, x509_cert_fingerprint); x509_cert_fingerprint = NULL; AXIS2_FREE(env->allocator, x509_cert_key_id); x509_cert_key_id = NULL; AXIS2_FREE(env->allocator, x509_common_name); x509_common_name = NULL; /*Free the certificate*/ X509_free(cert); cert = NULL; } return oxs_cert; } AXIS2_EXTERN oxs_x509_cert_t* AXIS2_CALL oxs_key_mgr_load_x509_cert_from_pem_file(const axutil_env_t *env, axis2_char_t *filename) { X509 *cert = NULL; oxs_x509_cert_t *oxs_cert = NULL; openssl_x509_load_from_pem(env, filename, &cert); oxs_cert = oxs_key_mgr_convert_to_x509(env, cert); return oxs_cert; } AXIS2_EXTERN oxs_x509_cert_t* AXIS2_CALL oxs_key_mgr_load_x509_cert_from_string(const axutil_env_t *env, axis2_char_t *pem_string) { X509 *cert = NULL; oxs_x509_cert_t *oxs_cert = NULL; openssl_x509_load_from_buffer(env, pem_string, &cert); oxs_cert = oxs_key_mgr_convert_to_x509(env, cert); return oxs_cert; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_mgr_read_pkcs12_key_store(const axutil_env_t *env, axis2_char_t *filename, axis2_char_t *password, oxs_x509_cert_t **cert, openssl_pkey_t **prv_key) { X509 *c = NULL; STACK_OF(X509) *ca = NULL; EVP_PKEY *pkey = NULL; axis2_status_t status = AXIS2_FAILURE; status = openssl_x509_load_from_pkcs12(env, filename, password, &c, &pkey, &ca); if(AXIS2_FAILURE == status){ oxs_error(env, OXS_ERROR_LOCATION, OXS_ERROR_DEFAULT, "Error reading the PKCS12 Key Store"); return AXIS2_FAILURE; } if(*prv_key){ if(pkey){ *prv_key = openssl_pkey_create(env); openssl_pkey_populate(*prv_key, env, pkey, filename, OPENSSL_PKEY_TYPE_PRIVATE_KEY); } } if(*cert){ if(c){ *cert = oxs_key_mgr_convert_to_x509(env, c); } } return AXIS2_SUCCESS; } AXIS2_EXTERN void * AXIS2_CALL oxs_key_mgr_get_key_store_buff( oxs_key_mgr_t *key_mgr, const axutil_env_t *env) { return key_mgr->pkcs12_buf; } AXIS2_EXTERN int AXIS2_CALL oxs_key_mgr_get_key_store_buff_len( oxs_key_mgr_t *key_mgr, const axutil_env_t *env) { return key_mgr->pkcs12_buff_len; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_mgr_set_key_store_buff( oxs_key_mgr_t *key_mgr, const axutil_env_t *env, void *key_store_buf, int len) { AXIS2_PARAM_CHECK(env->error, key_store_buf, AXIS2_FAILURE); key_mgr->pkcs12_buf = key_store_buf; key_mgr->pkcs12_buff_len = len; return AXIS2_SUCCESS; } AXIS2_EXTERN oxs_x509_cert_t * AXIS2_CALL oxs_key_mgr_get_receiver_certificate_from_ski( oxs_key_mgr_t *key_mgr, const axutil_env_t *env, axis2_char_t *ski) { AXIS2_PARAM_CHECK(env->error, ski, NULL); if(key_mgr->key_store) { return pkcs12_keystore_get_certificate_for_subject_key_id(key_mgr->key_store, env, ski); } return NULL; } AXIS2_EXTERN oxs_x509_cert_t * AXIS2_CALL oxs_key_mgr_get_receiver_certificate_from_issuer_serial( oxs_key_mgr_t *key_mgr, const axutil_env_t *env, axis2_char_t *issuer, int serial) { AXIS2_PARAM_CHECK(env->error, issuer, NULL); AXIS2_PARAM_CHECK(env->error, serial, NULL) if(key_mgr->key_store) return pkcs12_keystore_get_certificate_for_issuer_serial(key_mgr->key_store, env, issuer, serial); return NULL; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_key_mgr_increment_ref( oxs_key_mgr_t *key_mgr, const axutil_env_t *env) { key_mgr->ref++; return AXIS2_SUCCESS; } rampartc-src-1.3.0/src/omxmlsec/xml_key_info_builder.c0000644000076500007650000000667611202453422022750 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include /*Private functions*/ /*Public functions*/ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_xml_key_info_build(const axutil_env_t *env, axiom_node_t *parent, oxs_x509_cert_t *cert, oxs_key_info_build_pattern_t pattern) { axis2_status_t status = AXIS2_FAILURE; axiom_node_t *key_info_node = NULL; /*Build the KeyInfo node*/ key_info_node = oxs_token_build_key_info_element(env, parent); if(OXS_KIBP_X509DATA_X509CERTIFICATE == pattern){ status = oxs_xml_key_info_build_x509_data_x509_certificate(env, key_info_node, cert); }else if(OXS_KIBP_X509DATA_ISSUER_SERIAL == pattern){ status = oxs_xml_key_info_build_x509_data_issuer_serial(env, key_info_node, cert); }else{ /*We do not support*/ } return status; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_xml_key_info_build_x509_data_x509_certificate(const axutil_env_t *env, axiom_node_t *parent, oxs_x509_cert_t *cert) { axiom_node_t *x509_data_node = NULL; axiom_node_t *x509_certificate_node = NULL; axis2_char_t *cert_data = NULL; /*Get certificate data*/ cert_data = oxs_x509_cert_get_data(cert, env); /*Build the X509Data node*/ x509_data_node = oxs_token_build_x509_data_element(env, parent); /*Now build the X509Certificate node*/ x509_certificate_node = oxs_token_build_x509_certificate_element(env, x509_data_node, cert_data); return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_xml_key_info_build_x509_data_issuer_serial(const axutil_env_t *env, axiom_node_t *parent, oxs_x509_cert_t *cert) { axiom_node_t *x509_data_node = NULL; axiom_node_t *x509_issuer_serial_node = NULL; axis2_char_t *issuer = NULL; axis2_char_t *serial_num = NULL; int serial = -1; issuer = oxs_x509_cert_get_issuer(cert, env); serial = oxs_x509_cert_get_serial_number(cert, env); if(!issuer || (serial_num <0)){ return AXIS2_FAILURE; } serial_num = AXIS2_MALLOC(env->allocator, 10); sprintf(serial_num, "%d", serial); /*Build tokens*/ x509_data_node = oxs_token_build_x509_data_element(env, parent); x509_issuer_serial_node = oxs_token_build_x509_issuer_serial_with_data(env, x509_data_node, issuer, serial_num); return AXIS2_SUCCESS; } rampartc-src-1.3.0/src/omxmlsec/saml/0000755000076500007650000000000011202454476017342 5ustar shankarshankarrampartc-src-1.3.0/src/omxmlsec/saml/assertion.c0000644000076500007650000004140311202453417021511 0ustar shankarshankar/* * 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. */ #include AXIS2_EXTERN saml_assertion_t * AXIS2_CALL saml_assertion_create(const axutil_env_t *env) { saml_assertion_t *assertion = AXIS2_MALLOC(env->allocator, sizeof(saml_assertion_t)); if (assertion) { assertion->major_version = NULL; assertion->minor_version = NULL; assertion->not_before = NULL; assertion->not_on_or_after = NULL; assertion->assertion_id = NULL; assertion->conditions = NULL; assertion->statements = axutil_array_list_create(env, (SAML_ARRAY_LIST_DEF) * 2); assertion->issuer = NULL; assertion->issue_instant = NULL; assertion->signature = NULL; assertion->sign_ctx = NULL; assertion->ori_xml = NULL; } return assertion; } AXIS2_EXTERN void AXIS2_CALL saml_assertion_free(saml_assertion_t *assertion, const axutil_env_t *env) { int i = 0, size = 0; if (assertion->major_version) { AXIS2_FREE(env->allocator, assertion->major_version); assertion->major_version = NULL; } if (assertion->minor_version) { AXIS2_FREE(env->allocator, assertion->minor_version); assertion->minor_version = NULL; } if (assertion->not_before) { axutil_date_time_free(assertion->not_before, env); assertion->not_before = NULL; } if (assertion->not_on_or_after) { axutil_date_time_free(assertion->not_on_or_after, env); assertion->not_on_or_after = NULL; } if (assertion->issue_instant) { axutil_date_time_free(assertion->issue_instant, env); assertion->issue_instant = NULL; } if (assertion->assertion_id) { AXIS2_FREE(env->allocator, assertion->assertion_id); assertion->assertion_id = NULL; } if (assertion->conditions) { saml_condition_t *cond = NULL; size = axutil_array_list_size(assertion->conditions, env); for (i = 0; i < size; i++) { cond = (saml_condition_t*)axutil_array_list_get(assertion->conditions, env, i); if (cond) { saml_condition_free(cond, env); } } } if (assertion->statements) { saml_stmt_t *stmt = NULL; size = axutil_array_list_size(assertion->statements, env); for (i = 0; i < size; i++) { stmt = axutil_array_list_get(assertion->statements, env, i); if (stmt) { saml_stmt_free(stmt, env); } } } if (assertion->issue_instant) { AXIS2_FREE(env->allocator, assertion->issue_instant); assertion->issue_instant = NULL; } if (assertion->signature) { assertion->signature = NULL; } AXIS2_FREE(env->allocator, assertion); } AXIS2_EXTERN int AXIS2_CALL saml_assertion_build(saml_assertion_t *assertion, axiom_node_t *node, const axutil_env_t *env) { axiom_element_t *element = NULL; axiom_child_element_iterator_t *ci = NULL; axis2_char_t *attr_val = NULL; saml_stmt_t *stmt = NULL; saml_condition_t *cond = NULL; if (axiom_node_get_node_type(node, env) != AXIOM_ELEMENT || (element = (axiom_element_t *)axiom_node_get_data_element(node, env)) == NULL) { return AXIS2_FAILURE; } if (!(assertion->major_version = axiom_element_get_attribute_value_by_name(element, env, SAML_MAJORVERSION)) || !(assertion->minor_version = axiom_element_get_attribute_value_by_name(element, env, SAML_MINORVERSION)) || !(assertion->assertion_id = axiom_element_get_attribute_value_by_name(element, env, SAML_ASSERTION_ID)) || !(assertion->issuer = axiom_element_get_attribute_value_by_name(element, env, SAML_ISSUER))) { return AXIS2_FAILURE; } assertion->issue_instant = axutil_date_time_create(env); attr_val = axiom_element_get_attribute_value_by_name(element, env, SAML_ISSUE_INSTANT); if (attr_val) { axutil_date_time_deserialize_date_time(assertion->issue_instant, env, attr_val); } else { return AXIS2_FAILURE; } assertion->ori_xml = node; if ((ci = axiom_element_get_child_elements(element, env, node)) != NULL) { axiom_element_t *ce = NULL; axiom_node_t *cn = NULL; axiom_node_t *ccn = NULL; axiom_child_element_iterator_t *cci = NULL; while(AXIS2_TRUE == axiom_child_element_iterator_has_next(ci, env)) { cn = axiom_child_element_iterator_next(ci, env); ce = axiom_node_get_data_element(cn, env); if (0 == axutil_strcmp(axiom_element_get_localname(ce, env), SAML_CONDITIONS)) { attr_val = axiom_element_get_attribute_value_by_name(ce, env, SAML_NOT_BEFORE); if (attr_val) { assertion->not_before = axutil_date_time_create(env); axutil_date_time_deserialize_date_time(assertion->not_before, env, attr_val); } attr_val = axiom_element_get_attribute_value_by_name(ce, env, SAML_NOT_ON_OR_AFTER); if (attr_val) { assertion->not_on_or_after = axutil_date_time_create(env); axutil_date_time_deserialize_date_time(assertion->not_on_or_after, env, attr_val); } if ((cci = axiom_element_get_child_elements(ce, env, cn)) != NULL) { assertion->conditions = axutil_array_list_create(env, SAML_ARRAY_LIST_DEF); while(AXIS2_TRUE == axiom_child_element_iterator_has_next(cci, env)) { ccn = axiom_child_element_iterator_next(ci, env); cond = saml_condition_create(env); if(saml_condition_build(cond, ccn, env)) { axutil_array_list_add(assertion->conditions, env, cond); } else { saml_condition_free(cond, env); } } /*axiom_child_element_iterator_free(cci, env);*/ } } else if (0 == axutil_strcmp(axiom_element_get_localname(ce, env), SAML_ADVICE)) { } else if (0 == axutil_strcmp(axiom_element_get_localname(ce, env), SAML_SIGNATURE)) { assertion->signature = cn; } else { /*if ((cci = axiom_element_get_child_elements(element, env, node)) != NULL) { while(AXIS2_TRUE == axiom_child_element_iterator_has_next(cci, env)) { ccn = axiom_child_element_iterator_next(cci, env);*/ stmt = saml_stmt_create(env); if(saml_stmt_build(stmt, cn, env)) { axutil_array_list_add(assertion->statements, env, stmt); } else { saml_stmt_free(stmt, env); } /*}*/ /*axiom_child_element_iterator_free(cci, env);*/ /*} */ } } } return AXIS2_SUCCESS; } AXIS2_EXTERN axiom_node_t * AXIS2_CALL saml_assertion_to_om(saml_assertion_t *assertion, axiom_node_t *parent, const axutil_env_t *env) { int i = 0, size = 0; axiom_element_t *e = NULL, *ce = NULL; axiom_node_t *n = NULL, *cn = NULL; axiom_attribute_t *attr = NULL; axiom_namespace_t *ns = NULL; saml_condition_t *cond = NULL; saml_stmt_t *stmt = NULL; ns = axiom_namespace_create(env, SAML_NMSP_URI, SAML_PREFIX); e = axiom_element_create(env, parent, SAML_ASSERTION, ns, &n); if (e) { if (assertion->minor_version && assertion->issuer && assertion->issue_instant) { axis2_char_t *random_byte = NULL; axis2_char_t *serialised_date = NULL; attr = axiom_attribute_create(env, SAML_MAJORVERSION, SAML_MAJOR_VERSION, NULL); axiom_element_add_attribute(e, env, attr, n); attr = axiom_attribute_create(env, SAML_MINORVERSION, assertion->minor_version, NULL); axiom_element_add_attribute(e, env, attr, n); random_byte = saml_id_generate_random_bytes(env); attr = axiom_attribute_create(env, SAML_ASSERTION_ID, random_byte, NULL); axiom_element_add_attribute(e, env, attr, n); attr = axiom_attribute_create(env, SAML_ISSUER, assertion->issuer, NULL); axiom_element_add_attribute(e, env, attr, n); serialised_date = axutil_date_time_serialize_date_time(assertion->issue_instant, env); attr = axiom_attribute_create(env, SAML_ISSUE_INSTANT, serialised_date, NULL); axiom_element_add_attribute(e, env, attr, n); AXIS2_FREE(env->allocator, random_byte); AXIS2_FREE(env->allocator, serialised_date); } else { return NULL; } if (assertion->conditions || assertion->not_before || assertion->not_on_or_after) { ns = axiom_namespace_create(env, SAML_NMSP_URI, SAML_PREFIX); ce = axiom_element_create(env, n, SAML_CONDITIONS, ns, &cn); if (ce) { if (assertion->not_before) { attr = axiom_attribute_create(env, SAML_NOT_BEFORE, axutil_date_time_serialize_date_time(assertion->not_before, env), NULL); axiom_element_add_attribute(ce, env, attr, cn); } if (assertion->not_on_or_after) { attr = axiom_attribute_create(env, SAML_NOT_ON_OR_AFTER, axutil_date_time_serialize_date_time(assertion->not_on_or_after, env), NULL); axiom_element_add_attribute(ce, env, attr, cn); } if (assertion->conditions) { size = axutil_array_list_size(assertion->conditions, env); for (i = 0; i < size; i++) { cond = axutil_array_list_get(assertion->conditions, env, i); if (cond) { saml_condition_to_om(cond, cn, env); } } } } } if (assertion->statements) { size = axutil_array_list_size(assertion->statements, env); for (i = 0; i < size; i++) { stmt = axutil_array_list_get(assertion->statements, env, i); if (stmt) { saml_stmt_to_om(stmt, n, env); } } } /*if (assertion->signature) { }*/ if (assertion->sign_ctx) { /*oxs_xml_sig_sign(env, assertion->sign_ctx, n, &assertion->signature); */ saml_assertion_sign(assertion, n, env); } } return n; } AXIS2_EXTERN axis2_char_t * AXIS2_CALL saml_assetion_get_assertion_id(saml_assertion_t *a, const axutil_env_t *env) { return a->assertion_id; } AXIS2_EXTERN axutil_array_list_t * AXIS2_CALL saml_assetion_get_conditions(saml_assertion_t *a, const axutil_env_t *env) { return a->conditions;; } AXIS2_EXTERN int AXIS2_CALL saml_assertion_set_conditions(saml_assertion_t *a, const axutil_env_t *env, axutil_array_list_t *list) { int i = 0, size = 0; saml_condition_t *cond = NULL; if (a->conditions) { size = axutil_array_list_size(a->conditions, env); for (i = 0; i < size; i++) { cond = axutil_array_list_get(a->conditions, env, i); if (cond) { saml_condition_free(cond, env); } } axutil_array_list_free(a->conditions, env); a->conditions = list; } else { a->conditions = list; } return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL saml_assertion_add_condition(saml_assertion_t *a, const axutil_env_t *env, saml_condition_t *cond) { if (!a->conditions) { a->conditions = axutil_array_list_create(env, SAML_ARRAY_LIST_DEF); } axutil_array_list_add(a->conditions, env, cond); return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL saml_assertion_remove_condition(saml_assertion_t *a, const axutil_env_t *env, int index) { saml_condition_t *cond = NULL; if (a->conditions && axutil_array_list_size(a->conditions, env) > index) { cond = axutil_array_list_remove(a->conditions, env, index); if (cond) { saml_condition_free(cond, env); } return AXIS2_SUCCESS; } else { return AXIS2_FAILURE; } } AXIS2_EXTERN axutil_array_list_t * AXIS2_CALL saml_assertion_get_statements(saml_assertion_t *a, const axutil_env_t *env) { return a->statements; } AXIS2_EXTERN int AXIS2_CALL saml_assertion_set_statements(saml_assertion_t *a, const axutil_env_t *env, axutil_array_list_t *list) { int i = 0, size = 0; saml_stmt_t *stmt = NULL; if (a->statements) { size = axutil_array_list_size(a->statements, env); for (i = 0; i < size; i++) { stmt = axutil_array_list_get(a->statements, env, i); if (stmt) { saml_stmt_free(stmt, env); } } axutil_array_list_free(a->statements, env); a->statements = list; } else { a->statements = list; } return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL saml_assertion_add_statement(saml_assertion_t *a, const axutil_env_t *env, saml_stmt_t *stmt) { if (!a->statements) { a->statements = axutil_array_list_create(env, SAML_ARRAY_LIST_DEF * 2); } axutil_array_list_add(a->statements, env, stmt); return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL saml_assertion_remove_statement(saml_assertion_t *a, const axutil_env_t *env, int index) { saml_stmt_t *stmt = NULL; if (a->statements && axutil_array_list_size(a->statements, env) > index) { stmt = axutil_array_list_remove(a->statements, env, index); if (stmt) { saml_stmt_free(stmt, env); } return AXIS2_SUCCESS; } else { return AXIS2_FAILURE; } } AXIS2_EXTERN int AXIS2_CALL saml_assertion_set_minor_version(saml_assertion_t *a, const axutil_env_t *env, int version) { if (!a->minor_version) { a->minor_version = AXIS2_MALLOC(env->allocator, 8); } sprintf(a->minor_version, "%d", version); return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL saml_assertion_set_issuer(saml_assertion_t *a, const axutil_env_t *env, axis2_char_t *issuer) { if (a->issuer) { AXIS2_FREE(env->allocator, a->issuer); } a->issuer = axutil_strdup(env, issuer); return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL saml_assertion_set_issue_instant(saml_assertion_t *a, const axutil_env_t *env, axutil_date_time_t *instant) { if (a->issue_instant) { axutil_date_time_free(a->issue_instant, env); } a->issue_instant = instant; return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL saml_assertion_set_not_before(saml_assertion_t *a, const axutil_env_t *env, axutil_date_time_t *time) { if (a->not_before) { axutil_date_time_free(a->not_before, env); } a->not_before = time; return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL saml_assertion_set_not_on_or_after(saml_assertion_t *a, const axutil_env_t *env, axutil_date_time_t *time) { if (a->not_on_or_after) { axutil_date_time_free(a->not_on_or_after, env); } a->not_on_or_after = time; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_char_t * AXIS2_CALL saml_assertion_get_issuer(saml_assertion_t *a, const axutil_env_t *env) { return a->issuer; } AXIS2_EXTERN axutil_date_time_t * AXIS2_CALL saml_assertion_get_issue_instant(saml_assertion_t *a, const axutil_env_t *env) { return a->issue_instant; } AXIS2_EXTERN axutil_date_time_t * AXIS2_CALL saml_assertion_get_not_before(saml_assertion_t *a, const axutil_env_t *env) { return a->not_before; } AXIS2_EXTERN axutil_date_time_t * AXIS2_CALL saml_assertion_get_not_on_or_after(saml_assertion_t *a, const axutil_env_t *env) { return a->not_on_or_after; } AXIS2_EXTERN int AXIS2_CALL saml_assertion_unsign(saml_assertion_t *a, const axutil_env_t *env) { if (a->sign_ctx) { oxs_sign_ctx_free(a->sign_ctx, env); } a->sign_ctx = NULL; return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL saml_assertion_sign(saml_assertion_t *a, axiom_node_t *node, const axutil_env_t *env) { axiom_node_t *n= NULL; oxs_sign_part_t* sig_part = NULL; axutil_array_list_t *sig_parts = NULL; int size = 0, i = 0; sig_parts = oxs_sign_ctx_get_sign_parts(a->sign_ctx, env); if(sig_parts) { size = axutil_array_list_size(sig_parts, env); for(i = 0; i < size; i++) { sig_part = axutil_array_list_get(sig_parts, env, i); if(sig_part) { oxs_sign_part_set_node(sig_part, env, node); } } } oxs_xml_sig_sign(env, a->sign_ctx, node, &n); /*Finally build KeyInfo*/ oxs_xml_key_info_build(env, n, oxs_sign_ctx_get_certificate(a->sign_ctx, env), OXS_KIBP_X509DATA_X509CERTIFICATE); return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL saml_assertion_signature_verify(saml_assertion_t *a, const axutil_env_t *env) { return oxs_xml_sig_verify(env, a->sign_ctx, a->signature, a->ori_xml); } AXIS2_EXTERN int AXIS2_CALL saml_assertion_is_sign_set(saml_assertion_t *a, const axutil_env_t *env) { if (a->sign_ctx) { return AXIS2_TRUE; } return AXIS2_FALSE; } AXIS2_EXTERN int AXIS2_CALL saml_assertion_is_signed(saml_assertion_t *a, const axutil_env_t *env) { if (a->signature) { return AXIS2_TRUE; } return AXIS2_FALSE; } AXIS2_EXTERN int AXIS2_CALL saml_assertion_set_default_signature(saml_assertion_t *a, const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx) { if (a->sign_ctx) { oxs_sign_ctx_free(a->sign_ctx, env); } a->sign_ctx = sign_ctx; saml_util_set_sig_ctx_defaults(a->sign_ctx, env, SAML_ASSERTION_ID); return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL saml_assertion_set_signature(saml_assertion_t *a, const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx) { if (a->sign_ctx) { oxs_sign_ctx_free(a->sign_ctx, env); } a->sign_ctx = sign_ctx; return AXIS2_SUCCESS; } rampartc-src-1.3.0/src/omxmlsec/saml/sutil.c0000644000076500007650000001070111202453417020637 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include #include AXIS2_EXTERN int AXIS2_CALL saml_util_set_sig_ctx_defaults(oxs_sign_ctx_t *sig_ctx, const axutil_env_t *env, axis2_char_t *id) { oxs_sign_part_t* sig_part = NULL; oxs_transform_t *tr = NULL; axutil_array_list_t *sig_parts = NULL, *trans = NULL; trans = axutil_array_list_create(env, SAML_ARRAY_LIST_DEF); /*create transform sor SAML XML signature with identifier*/ tr = oxs_transforms_factory_produce_transform(env, OXS_HREF_TRANSFORM_ENVELOPED_SIGNATURE); axutil_array_list_add(trans, env, tr); /*Create the EXCL-C14N Transformation*/ tr = oxs_transforms_factory_produce_transform(env, OXS_HREF_TRANSFORM_XML_EXC_C14N); axutil_array_list_add(trans, env, tr); sig_part = oxs_sign_part_create(env); oxs_sign_part_set_digest_mtd(sig_part, env, OXS_HREF_SHA1); oxs_sign_part_set_transforms(sig_part, env, trans); oxs_sign_part_set_id_name(sig_part, env, id); /*ns = axiom_namespace_create(env, "", ""); oxs_sign_part_set_sign_namespace(sig_part,env, ns);*/ sig_parts = axutil_array_list_create(env, SAML_ARRAY_LIST_DEF); axutil_array_list_add(sig_parts, env, sig_part); /*create the specific sign context*/ oxs_sign_ctx_set_c14n_mtd(sig_ctx, env, OXS_HREF_XML_EXC_C14N); oxs_sign_ctx_set_operation(sig_ctx, env, OXS_SIGN_OPERATION_SIGN); oxs_sign_ctx_set_sign_mtd_algo(sig_ctx, env, OXS_HREF_RSA_SHA1); oxs_sign_ctx_set_sign_parts(sig_ctx, env, sig_parts); return AXIS2_SUCCESS; } AXIS2_EXTERN oxs_key_t * AXIS2_CALL saml_assertion_get_session_key(const axutil_env_t *env, axiom_node_t *assertion, openssl_pkey_t *pvt_key) { axiom_node_t *encrypted_key_node = NULL; axiom_node_t *enc_mtd_node = NULL; axis2_char_t *enc_asym_algo = NULL; oxs_asym_ctx_t *asym_ctx = NULL; oxs_key_t *decrypted_sym_key = NULL; axis2_status_t status = AXIS2_FAILURE; if (!pvt_key) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[oxs][saml] Private key not specified"); return NULL; } encrypted_key_node = oxs_axiom_get_node_by_local_name(env, assertion, OXS_NODE_ENCRYPTED_KEY); if (!encrypted_key_node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[oxs][saml] Encrypted key cannot be found"); return NULL; } enc_mtd_node = oxs_axiom_get_first_child_node_by_name( env, encrypted_key_node, OXS_NODE_ENCRYPTION_METHOD, OXS_ENC_NS, NULL); if (!enc_mtd_node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[oxs][saml] EncryptedKey node cannot be found"); return NULL; } enc_asym_algo = oxs_token_get_encryption_method(env, enc_mtd_node); if (!enc_asym_algo) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[oxs][saml] Encryption Algorithm cannot be found"); return NULL; } asym_ctx = oxs_asym_ctx_create(env); oxs_asym_ctx_set_algorithm(asym_ctx, env, enc_asym_algo); oxs_asym_ctx_set_private_key(asym_ctx, env, pvt_key); oxs_asym_ctx_set_operation(asym_ctx, env, OXS_ASYM_CTX_OPERATION_PRV_DECRYPT); decrypted_sym_key = oxs_key_create(env); /*Call decrypt for the EncryptedKey*/ status = oxs_xml_enc_decrypt_key(env, asym_ctx, NULL, encrypted_key_node, decrypted_sym_key); if (status == AXIS2_FAILURE) { oxs_key_free(decrypted_sym_key, env); AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[oxs][saml] Decryption failed in SAML encrypted key"); return NULL; } return decrypted_sym_key; } rampartc-src-1.3.0/src/omxmlsec/saml/auth_des_stmt.c0000644000076500007650000004330711202453417022352 0ustar shankarshankar/* * 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. */ #include AXIS2_EXTERN saml_action_t * AXIS2_CALL saml_action_create(const axutil_env_t *env) { saml_action_t *action = AXIS2_MALLOC(env->allocator, sizeof(saml_action_t)); if (action) { action->data = NULL; action->name_space = NULL; } return action; } AXIS2_EXTERN void AXIS2_CALL saml_action_free(saml_action_t *action, const axutil_env_t *env) { if (action->data) { AXIS2_FREE(env->allocator, action->data); } if (action->name_space) { AXIS2_FREE(env->allocator, action->name_space); } AXIS2_FREE(env->allocator, action); } AXIS2_EXTERN int AXIS2_CALL saml_action_build(saml_action_t *action, axiom_node_t *node, const axutil_env_t *env) { axiom_element_t *element = NULL; if (axiom_node_get_node_type(node, env) != AXIOM_ELEMENT || (element = (axiom_element_t *)axiom_node_get_data_element(node, env)) == NULL) { return AXIS2_FAILURE; } action->name_space = axiom_element_get_attribute_value_by_name(element, env, SAML_NAMESPACE); if ((action->data = axiom_element_get_text(element, env, node)) == NULL) { return AXIS2_FALSE; } return AXIS2_SUCCESS; } AXIS2_EXTERN axiom_node_t * AXIS2_CALL saml_action_to_om(saml_action_t *action, axiom_node_t *parent, const axutil_env_t *env) { axiom_element_t *e = NULL; axiom_node_t *n = NULL; axiom_namespace_t *ns = NULL; axiom_attribute_t *attr = NULL; ns = axiom_namespace_create(env, SAML_NMSP_URI, SAML_PREFIX); e = axiom_element_create(env, parent, SAML_ACTION, ns, &n); if (e) { if (action->name_space) { attr = axiom_attribute_create(env, SAML_NAMESPACE, action->name_space, NULL); axiom_element_add_attribute(e, env, attr, n); } if (action->data) { axiom_element_set_text(e, env, action->data, n); } else { return NULL; } } return n; } AXIS2_EXTERN axis2_char_t * AXIS2_CALL saml_action_get_data(saml_action_t *action, const axutil_env_t *env) { return action->data; } AXIS2_EXTERN axis2_char_t * AXIS2_CALL saml_action_get_namespace(saml_action_t *action, const axutil_env_t *env) { return action->name_space; } AXIS2_EXTERN int AXIS2_CALL saml_action_set_data(saml_action_t *action, const axutil_env_t *env, axis2_char_t *data) { if (action->data) { AXIS2_FREE(env->allocator, action->data); } action->data = axutil_strdup(env, data); return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL saml_action_set_namespace(saml_action_t *action, const axutil_env_t *env, axis2_char_t *name_space) { if (action->name_space) { AXIS2_FREE(env->allocator, action->name_space); } action->name_space = axutil_strdup(env, name_space); return AXIS2_SUCCESS; } AXIS2_EXTERN saml_evidence_t * AXIS2_CALL saml_evidence_create(const axutil_env_t *env) { saml_evidence_t *evidence = (saml_evidence_t *)AXIS2_MALLOC(env->allocator, sizeof(saml_evidence_t)); if (evidence) { evidence->assertion_ids = axutil_array_list_create(env, SAML_ARRAY_LIST_DEF); evidence->assertions = axutil_array_list_create(env, SAML_ARRAY_LIST_DEF); } return evidence; } AXIS2_EXTERN void AXIS2_CALL saml_evidence_free(saml_evidence_t *evidence, const axutil_env_t *env) { int i = 0, size = 0; char *val = NULL; saml_assertion_t *assertion = NULL; if (evidence->assertion_ids) { size = axutil_array_list_size(evidence->assertion_ids, env); for (i = 0; i < size; i++) { val = axutil_array_list_get(evidence->assertion_ids, env, i); if (val) { AXIS2_FREE(env->allocator, val); } } } if (evidence->assertions) { size = axutil_array_list_size(evidence->assertions, env); for (i = 0; i < size; i++) { assertion = axutil_array_list_get(evidence->assertions, env, i); if (assertion) { saml_assertion_free(assertion, env); } } } } AXIS2_EXTERN int AXIS2_CALL saml_evidence_build(saml_evidence_t *evidence, axiom_node_t *node, const axutil_env_t *env) { axiom_element_t *element = NULL; axiom_element_t *fce = NULL; axiom_node_t *fcn = NULL; axiom_child_element_iterator_t *ci = NULL; saml_assertion_t *assertion = NULL; if (axiom_node_get_node_type(node, env) != AXIOM_ELEMENT || (element = (axiom_element_t *)axiom_node_get_data_element(node, env)) == NULL) { return AXIS2_FAILURE; } ci = axiom_element_get_child_elements(element, env, node); if (ci) { while(AXIS2_TRUE == axiom_child_element_iterator_has_next(ci, env)) { fcn = axiom_child_element_iterator_next(ci, env); fce = axiom_node_get_data_element(fcn, env); if (strcmp(axiom_element_get_localname(fce, env), SAML_ASSERTION_ID_REFERENCE) == 0) { axutil_array_list_add(evidence->assertion_ids, env, axiom_element_get_text(fce, env, fcn)); } else if (strcmp(axiom_element_get_localname(fce, env), SAML_ASSERTION) == 0) { assertion = AXIS2_MALLOC(env->allocator, sizeof(saml_assertion_t)); saml_assertion_build(assertion, fcn, env); axutil_array_list_add(evidence->assertions, env, assertion); } else { return AXIS2_FAILURE; } } } return AXIS2_SUCCESS; } AXIS2_EXTERN axiom_node_t * AXIS2_CALL saml_evidence_to_om(saml_evidence_t *evidence, axiom_node_t *parent, const axutil_env_t *env) { int size = 0, i = 0; axiom_element_t *e = NULL, *ce = NULL; axiom_node_t *n = NULL, *cn = NULL; axiom_namespace_t *ns = NULL; saml_assertion_t *assertion = NULL; ns = axiom_namespace_create(env, SAML_NMSP_URI, SAML_PREFIX); e = axiom_element_create(env, parent, SAML_EVIDENCE, ns, &n); if (e) { if (evidence->assertion_ids) { size = axutil_array_list_size(evidence->assertion_ids, env); for (i = 0; i < size; i++) { ns = axiom_namespace_create(env, SAML_NMSP_URI, SAML_PREFIX); ce = axiom_element_create(env, n, SAML_ASSERTION_ID_REFERENCE, ns, &n); axiom_element_set_text(ce, env, axutil_array_list_get(evidence->assertion_ids, env, i), cn); } } if (evidence->assertions) { size = axutil_array_list_size(evidence->assertions, env); for (i = 0; i < size; i++) { assertion = axutil_array_list_get(evidence->assertions, env, i); saml_assertion_to_om(assertion, n, env); } } } return n; } AXIS2_EXTERN axutil_array_list_t * AXIS2_CALL saml_evidence_get_assertions(saml_evidence_t *evidence, const axutil_env_t *env) { return evidence->assertions; } AXIS2_EXTERN axutil_array_list_t * AXIS2_CALL saml_evidence_get_assertion_ids(saml_evidence_t *evidence, const axutil_env_t *env) { return evidence->assertion_ids; } AXIS2_EXTERN int AXIS2_CALL saml_evidence_set_assertions(saml_evidence_t *evidence, const axutil_env_t *env, axutil_array_list_t *list) { int i = 0, size = 0; saml_assertion_t *a = NULL; if (evidence->assertions) { size = axutil_array_list_size(evidence->assertions, env); for (i = 0; i assertions, env, i); if (a) { AXIS2_FREE(env->allocator, a); } } } evidence->assertions = list; return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL saml_evidence_remove_assertion(saml_evidence_t *evidence, const axutil_env_t *env, int index) { saml_assertion_t *a = NULL; if (evidence->assertions && axutil_array_list_size(evidence->assertions, env) > index) { a = axutil_array_list_remove(evidence->assertions, env, index); if (a) { AXIS2_FREE(env->allocator, a); } return AXIS2_SUCCESS; } else { return AXIS2_FAILURE; } } AXIS2_EXTERN int AXIS2_CALL saml_evidence_add_assertion(saml_evidence_t *evidence, const axutil_env_t *env, saml_assertion_t *assertion) { if (!evidence->assertions) { evidence->assertions = axutil_array_list_create(env, SAML_ARRAY_LIST_DEF); } axutil_array_list_add(evidence->assertions, env, assertion); return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL saml_evidence_set_assertion_ids(saml_evidence_t *evidence, const axutil_env_t *env, axutil_array_list_t *list) { int i = 0, size = 0; axis2_char_t *a = NULL; if (evidence->assertion_ids) { size = axutil_array_list_size(evidence->assertion_ids, env); for (i = 0; i assertion_ids, env, i); if (a) { AXIS2_FREE(env->allocator, a); } } } evidence->assertion_ids = list; return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL saml_evidence_remove_assertion_id(saml_evidence_t *evidence, const axutil_env_t *env, int index) { axis2_char_t *a = NULL; if (evidence->assertion_ids && axutil_array_list_size(evidence->assertion_ids, env) > index) { a = axutil_array_list_remove(evidence->assertion_ids, env, index); if (a) { AXIS2_FREE(env->allocator, a); } return AXIS2_SUCCESS; } else { return AXIS2_FAILURE; } } AXIS2_EXTERN int AXIS2_CALL saml_evidence_add_assertion_id(saml_evidence_t *evidence, const axutil_env_t *env, axis2_char_t *assertion_id) { if (!evidence->assertion_ids) { evidence->assertion_ids = axutil_array_list_create(env, SAML_ARRAY_LIST_DEF); } axutil_array_list_add(evidence->assertion_ids, env, assertion_id); return AXIS2_SUCCESS; } AXIS2_EXTERN saml_auth_desicion_stmt_t * AXIS2_CALL saml_auth_desicion_stmt_create(const axutil_env_t *env) { saml_auth_desicion_stmt_t *auth_des_stmt = AXIS2_MALLOC(env->allocator, sizeof(saml_auth_desicion_stmt_t)); if (auth_des_stmt) { auth_des_stmt->decision = NULL; auth_des_stmt->resource = NULL; auth_des_stmt->evidence = NULL; auth_des_stmt->action = axutil_array_list_create(env, SAML_ARRAY_LIST_DEF); auth_des_stmt->subject = saml_subject_create(env); } return auth_des_stmt; } AXIS2_EXTERN void AXIS2_CALL saml_auth_desicion_stmt_free(saml_auth_desicion_stmt_t *auth_des_stmt, const axutil_env_t *env) { if (auth_des_stmt->decision) { AXIS2_FREE(env->allocator, auth_des_stmt->decision); } if (auth_des_stmt->resource) { AXIS2_FREE(env->allocator, auth_des_stmt->resource); } if (auth_des_stmt->evidence) { saml_evidence_free(auth_des_stmt->evidence, env); } if (auth_des_stmt->action) { int i = 0; saml_action_t *action = NULL; for (i = 0; i < axutil_array_list_size(auth_des_stmt->action, env); i++) { action = axutil_array_list_get(auth_des_stmt->action, env, i); if (action) { saml_action_free(action, env); } } axutil_array_list_free(auth_des_stmt->action, env); } if (auth_des_stmt->subject) { saml_subject_free(auth_des_stmt->subject, env); } AXIS2_FREE(env->allocator, auth_des_stmt); } AXIS2_EXTERN int AXIS2_CALL saml_auth_desicion_stmt_build(saml_auth_desicion_stmt_t *auth_des_stmt, axiom_node_t *node, const axutil_env_t *env) { axutil_hash_t *attr_hash = NULL; axutil_hash_index_t *hi = NULL; axiom_element_t *element = NULL; axiom_element_t *fce = NULL; axiom_node_t *fcn = NULL; axiom_child_element_iterator_t *ci = NULL; saml_action_t *action = NULL; if (axiom_node_get_node_type(node, env) != AXIOM_ELEMENT || (element = (axiom_element_t *)axiom_node_get_data_element(node, env)) == NULL) { return AXIS2_FAILURE; } if ((auth_des_stmt->resource = axiom_element_get_attribute_value_by_name(element, env, SAML_RESOURCE)) == NULL || (auth_des_stmt->decision = axiom_element_get_attribute_value_by_name(element, env, SAML_DECISION)) == NULL) { return AXIS2_FAILURE; } attr_hash = axiom_element_get_all_attributes(element, env); for (hi = axutil_hash_first(attr_hash, env); hi != NULL; hi = axutil_hash_next(env, hi)) { void *v = NULL; axutil_hash_this(hi, NULL, NULL, &v); if (v) { axis2_char_t *attr_val = NULL; axiom_attribute_t *attr = (axiom_attribute_t*)v; attr_val = axiom_attribute_get_localname(attr, env); if (0 != axutil_strcmp(attr_val, SAML_RESOURCE) && 0 != axutil_strcmp(attr_val, SAML_DECISION)) { return AXIS2_FALSE; } } } ci = axiom_element_get_child_elements(element, env, node); if (ci) { while(AXIS2_TRUE == axiom_child_element_iterator_has_next(ci, env)) { fcn = axiom_child_element_iterator_next(ci, env); fce = axiom_node_get_data_element(fcn, env); if (strcmp(axiom_element_get_localname(fce, env), SAML_SUBJECT) == 0) { saml_subject_build(auth_des_stmt->subject, fcn, env); } else if (strcmp(axiom_element_get_localname(fce, env), SAML_ACTION) == 0) { action = saml_action_create(env); saml_action_build(action, fcn, env); axutil_array_list_add(auth_des_stmt->action, env, action); } else if (strcmp(axiom_element_get_localname(fce, env), SAML_EVIDENCE) == 0) { saml_evidence_t *evi = saml_evidence_create(env); if (saml_evidence_build(evi, fcn, env)) { auth_des_stmt->evidence = evi; } else { return AXIS2_FALSE; } } else { return AXIS2_FAILURE; } } } return AXIS2_SUCCESS; } AXIS2_EXTERN axiom_node_t * AXIS2_CALL saml_auth_desicion_stmt_to_om(saml_auth_desicion_stmt_t *auth_des_stmt, axiom_node_t *parent, const axutil_env_t *env) { int i = 0, size = 0; axiom_element_t *e = NULL; axiom_node_t *n = NULL; axiom_attribute_t *attr = NULL; axiom_namespace_t *ns = NULL; saml_action_t *action = NULL; ns = axiom_namespace_create(env, SAML_NMSP_URI, SAML_PREFIX); e = axiom_element_create(env, parent, SAML_AUTHORIZATION_DECISION_STATEMENT, ns, &n); if (e) { if (auth_des_stmt->resource && auth_des_stmt->decision) { attr = axiom_attribute_create(env, SAML_RESOURCE, auth_des_stmt->resource, NULL); axiom_element_add_attribute(e, env, attr, n); attr = axiom_attribute_create(env, SAML_DECISION, auth_des_stmt->decision, NULL); axiom_element_add_attribute(e, env, attr, n); } else { return NULL; } if (auth_des_stmt->subject) { saml_subject_to_om(auth_des_stmt->subject, n, env); } if (auth_des_stmt->action) { size = axutil_array_list_size(auth_des_stmt->action, env); for (i = 0; i < size; i++) { action = axutil_array_list_get(auth_des_stmt->action, env, i); saml_action_to_om(action, n, env); } } if (auth_des_stmt->evidence) { saml_evidence_to_om(auth_des_stmt->evidence, n, env); } } return NULL; } AXIS2_EXTERN axis2_char_t * AXIS2_CALL saml_auth_desicion_stmt_get_resource(saml_auth_desicion_stmt_t *auth_des_stmt, const axutil_env_t *env) { return auth_des_stmt->resource; } AXIS2_EXTERN axis2_char_t * AXIS2_CALL saml_auth_desicion_stmt_get_desicion(saml_auth_desicion_stmt_t *auth_des_stmt, const axutil_env_t *env) { return auth_des_stmt->decision; } AXIS2_EXTERN axutil_array_list_t * AXIS2_CALL saml_auth_desicion_stmt_get_actions(saml_auth_desicion_stmt_t *auth_des_stmt, const axutil_env_t *env) { return auth_des_stmt->action; } AXIS2_EXTERN saml_evidence_t * AXIS2_CALL saml_auth_desicion_stmt_get_evidence(saml_auth_desicion_stmt_t *auth_des_stmt, const axutil_env_t *env) { return auth_des_stmt->evidence; } AXIS2_EXTERN int AXIS2_CALL saml_auth_desicion_stmt_set_resource(saml_auth_desicion_stmt_t *auth_des_stmt, const axutil_env_t *env, axis2_char_t *resource) { if (auth_des_stmt->resource) { AXIS2_FREE(env->allocator, auth_des_stmt->resource); } auth_des_stmt->resource = axutil_strdup(env, resource); return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL saml_auth_desicion_stmt_set_desicion(saml_auth_desicion_stmt_t *auth_des_stmt, const axutil_env_t *env, axis2_char_t *desicion) { if (auth_des_stmt->decision) { AXIS2_FREE(env->allocator, auth_des_stmt->decision); } auth_des_stmt->decision = axutil_strdup(env, desicion); return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL saml_auth_desicion_stmt_set_actions(saml_auth_desicion_stmt_t *auth_des_stmt, const axutil_env_t *env, axutil_array_list_t *list) { int i = 0, size = 0; saml_action_t *action = NULL; if (auth_des_stmt->action) { size = axutil_array_list_size(auth_des_stmt->action, env); for (i = 0; i action, env, i); if (action) { AXIS2_FREE(env->allocator, action); } } } auth_des_stmt->action = list; return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL saml_auth_desicion_stmt_remove_action(saml_auth_desicion_stmt_t *auth_des_stmt, const axutil_env_t *env, int index) { saml_action_t *action = NULL; if (auth_des_stmt->action && axutil_array_list_size(auth_des_stmt->action, env) > index) { action = axutil_array_list_remove(auth_des_stmt->action, env, index); if (action) { AXIS2_FREE(env->allocator, action); } return AXIS2_SUCCESS; } else { return AXIS2_FAILURE; } } AXIS2_EXTERN int AXIS2_CALL saml_auth_desicion_stmt_add_action(saml_auth_desicion_stmt_t *auth_des_stmt, const axutil_env_t *env, saml_action_t *action) { if (!auth_des_stmt->action) { auth_des_stmt->action = axutil_array_list_create(env, SAML_ARRAY_LIST_DEF); } axutil_array_list_add(auth_des_stmt->action, env, action); return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL saml_auth_desicion_stmt_set_subject(saml_auth_desicion_stmt_t *auth_des_stmt, const axutil_env_t *env, saml_subject_t *subject) { if (auth_des_stmt->subject) { saml_subject_free(auth_des_stmt->subject, env); } auth_des_stmt->subject = subject; return AXIS2_SUCCESS; } rampartc-src-1.3.0/src/omxmlsec/saml/stmt.c0000644000076500007650000001123411202453417020470 0ustar shankarshankar/* * 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. */ #include AXIS2_EXTERN saml_stmt_t * AXIS2_CALL saml_stmt_create(const axutil_env_t *env) { saml_stmt_t *stmt = AXIS2_MALLOC(env->allocator, sizeof(saml_stmt_t)); if (stmt) { stmt->type = SAML_STMT_UNSPECIFED; stmt->stmt = NULL; } return stmt; } AXIS2_EXTERN void AXIS2_CALL saml_stmt_free(saml_stmt_t *stmt, const axutil_env_t *env) { if (stmt->type == SAML_STMT_AUTHENTICATIONSTATEMENT) { saml_auth_stmt_free(stmt->stmt, env); stmt->type = SAML_STMT_UNSPECIFED; } else if (stmt->type == SAML_STMT_AUTHORIZATIONDECISIONSTATEMENT) { saml_auth_desicion_stmt_free(stmt->stmt, env); stmt->type = SAML_STMT_UNSPECIFED; } else if (stmt->type == SAML_STMT_ATTRIBUTESTATEMENT) { saml_attr_stmt_free(stmt->stmt, env); stmt->type = SAML_STMT_UNSPECIFED; } else if (stmt->type == SAML_STMT_SUBJECTSTATEMENT) { saml_subject_stmt_free(stmt->stmt, env); stmt->type = SAML_STMT_UNSPECIFED; } AXIS2_FREE(env->allocator, stmt); } AXIS2_EXTERN int AXIS2_CALL saml_stmt_build(saml_stmt_t *stmt, axiom_node_t *node, const axutil_env_t *env) { axis2_char_t *locname = NULL; axiom_element_t *element = NULL; if (axiom_node_get_node_type(node, env) != AXIOM_ELEMENT || (element = (axiom_element_t *)axiom_node_get_data_element(node, env)) == NULL) { return AXIS2_FAILURE; } locname = axiom_element_get_localname(element, env); if (0 == strcmp(locname, SAML_AUTHENTICATION_STATEMENT)) { stmt->stmt = saml_auth_stmt_create(env); stmt->type = SAML_STMT_AUTHENTICATIONSTATEMENT; return saml_auth_stmt_build(stmt->stmt, node, env); } else if (0 == strcmp(locname, SAML_AUTHORIZATION_DECISION_STATEMENT)) { stmt->stmt = saml_auth_desicion_stmt_create(env); stmt->type = SAML_STMT_AUTHORIZATIONDECISIONSTATEMENT; return saml_auth_desicion_stmt_build(stmt->stmt, node,env); } else if (0 == strcmp(locname, SAML_ATTRIBUTE_STATEMENT)) { stmt->stmt = saml_attr_stmt_create(env); stmt->type = SAML_STMT_ATTRIBUTESTATEMENT; return saml_attr_stmt_build(stmt->stmt, node, env); } else if (0 == strcmp(locname, SAML_SUBJECT_STATEMENT)) { stmt->stmt = saml_subject_stmt_create(env); stmt->type = SAML_STMT_SUBJECTSTATEMENT; return saml_subject_stmt_build(stmt->stmt, node, env); } return AXIS2_SUCCESS; } AXIS2_EXTERN axiom_node_t * AXIS2_CALL saml_stmt_to_om(saml_stmt_t *stmt, axiom_node_t *parent, const axutil_env_t *env) { if (stmt->type == SAML_STMT_AUTHENTICATIONSTATEMENT) { return saml_auth_stmt_to_om(stmt->stmt, parent, env); } else if (stmt->type == SAML_STMT_AUTHORIZATIONDECISIONSTATEMENT) { return saml_auth_desicion_stmt_to_om(stmt->stmt, parent,env); } else if (stmt->type == SAML_STMT_ATTRIBUTESTATEMENT) { return saml_attr_stmt_to_om(stmt->stmt, parent, env); } else if (stmt->type == SAML_STMT_SUBJECTSTATEMENT) { return saml_subject_stmt_to_om(stmt->stmt, parent, env); } return NULL; } AXIS2_EXTERN saml_stmt_type_t AXIS2_CALL saml_stmt_get_type(saml_stmt_t *stmt, const axutil_env_t *env) { return stmt->type; } AXIS2_EXTERN saml_stmt_t * AXIS2_CALL saml_stmt_get_stmt(saml_stmt_t *stmt, const axutil_env_t *env) { return stmt->stmt; } AXIS2_EXTERN int AXIS2_CALL saml_stmt_set_type(saml_stmt_t *stmt, const axutil_env_t *env, saml_stmt_type_t type) { stmt->type = type; return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL saml_stmt_set_stmt(saml_stmt_t *stmt, const axutil_env_t *env, void *st, saml_stmt_type_t type) { if (stmt->type == SAML_STMT_AUTHENTICATIONSTATEMENT) { saml_auth_stmt_free(stmt->stmt, env); } else if (stmt->type == SAML_STMT_AUTHORIZATIONDECISIONSTATEMENT) { saml_auth_desicion_stmt_free(stmt->stmt, env); } else if (stmt->type == SAML_STMT_ATTRIBUTESTATEMENT) { saml_attr_stmt_free(stmt->stmt, env); } else if (stmt->type == SAML_STMT_SUBJECTSTATEMENT) { saml_subject_stmt_free(stmt->stmt, env); } stmt->stmt = st; stmt->type = type; return AXIS2_SUCCESS; } rampartc-src-1.3.0/src/omxmlsec/saml/condition.c0000644000076500007650000001633011202453417021471 0ustar shankarshankar/* * 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. */ #include AXIS2_EXTERN saml_audi_restriction_cond_t * AXIS2_CALL saml_audi_restriction_cond_create(const axutil_env_t *env) { saml_audi_restriction_cond_t *arc = AXIS2_MALLOC(env->allocator, sizeof(saml_audi_restriction_cond_t)); if (arc) { arc->audiences = axutil_array_list_create(env, SAML_ARRAY_LIST_DEF); if (arc->audiences) { return arc; } AXIS2_FREE(env->allocator, arc); } return NULL; } AXIS2_EXTERN void AXIS2_CALL saml_audi_restriction_cond_free(saml_audi_restriction_cond_t *arc, const axutil_env_t *env) { int i = 0, size = 0; char *val = NULL; if (arc->audiences) { size = axutil_array_list_size(arc->audiences, env); for (i = 0; i audiences, env, i); if (val) { AXIS2_FREE(env->allocator, val); } } } AXIS2_FREE(env->allocator, arc); } AXIS2_EXTERN int AXIS2_CALL saml_audi_restriction_cond_build(saml_audi_restriction_cond_t *arc, axiom_node_t *node, const axutil_env_t *env) { axiom_element_t *element = NULL; axiom_child_element_iterator_t *ci = NULL; if (axiom_node_get_node_type(node, env) != AXIOM_ELEMENT || (element = (axiom_element_t *)axiom_node_get_data_element(node, env)) == NULL) { return AXIS2_FAILURE; } ci = axiom_element_get_child_elements(element, env, node); if (ci) { axiom_node_t *cn = NULL; axiom_element_t *ce = NULL; while(AXIS2_TRUE == axiom_child_element_iterator_has_next(ci, env)) { cn = axiom_child_element_iterator_next(ci, env); ce = axiom_node_get_data_element(cn, env); if (0 == axutil_strcmp(SAML_AUDIENCE, axiom_element_get_localname(ce, env))) { axutil_array_list_add(arc->audiences, env, axiom_element_get_text(ce, env, cn)); } else { return AXIS2_FAILURE; } } } return AXIS2_SUCCESS; } AXIS2_EXTERN axiom_node_t *AXIS2_CALL saml_audi_restriction_cond_to_om(saml_audi_restriction_cond_t *cond, axiom_node_t *parent, const axutil_env_t *env) { int i = 0, size = 0; axiom_element_t *e = NULL, *ce = NULL; axiom_node_t *n = NULL, *cn = NULL; axiom_namespace_t *ns = NULL, *cns = NULL; ns = axiom_namespace_create(env, SAML_NMSP_URI, SAML_PREFIX); e = axiom_element_create(env, parent, SAML_AUDIENCE_RESTRICTION_CONDITION, ns, &n); if (e && cond->audiences) { size = axutil_array_list_size(cond->audiences, env); for (i = 0; i < size; i++) { cns = axiom_namespace_create(env, SAML_NMSP_URI, SAML_PREFIX); ce = axiom_element_create(env, n, SAML_AUDIENCE, cns, &cn); axiom_element_set_text(ce, env, (axis2_char_t *)axutil_array_list_get(cond->audiences, env, i), cn); } } return n; } AXIS2_EXTERN axutil_array_list_t * AXIS2_CALL saml_audi_restriction_cond_get_audiences(saml_audi_restriction_cond_t *cond, const axutil_env_t *env) { return cond->audiences; } AXIS2_EXTERN int AXIS2_CALL saml_audi_restriction_cond_set_audiences(saml_audi_restriction_cond_t *cond, const axutil_env_t *env, axutil_array_list_t *list) { int i = 0, size = 0; char *val = NULL; if (cond->audiences) { size = axutil_array_list_size(cond->audiences, env); for (i = 0; i audiences, env, i); if (val) { AXIS2_FREE(env->allocator, val); } } } cond->audiences = list; return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL saml_audi_restriction_cond_remove_audiences(saml_audi_restriction_cond_t *cond, const axutil_env_t *env, int index) { axis2_char_t *val = NULL; if (cond->audiences && axutil_array_list_size(cond->audiences, env) > index) { val = axutil_array_list_remove(cond->audiences, env, index); if (cond) { AXIS2_FREE(env->allocator, val); } return AXIS2_SUCCESS; } else { return AXIS2_FAILURE; } } AXIS2_EXTERN int AXIS2_CALL saml_audi_restriction_cond_add_audience(saml_audi_restriction_cond_t *cond, const axutil_env_t *env, axis2_char_t *audience) { if (!cond->audiences) { cond->audiences = axutil_array_list_create(env, SAML_ARRAY_LIST_DEF); } axutil_array_list_add(cond->audiences, env, axutil_strdup(env, audience)); return AXIS2_SUCCESS; } AXIS2_EXTERN saml_condition_t * AXIS2_CALL saml_condition_create(const axutil_env_t *env) { saml_condition_t *cond = AXIS2_MALLOC(env->allocator, sizeof(saml_condition_t)); if (cond) { cond->type = SAML_COND_UNSPECFIED; cond->cond = NULL; } return cond; } AXIS2_EXTERN void AXIS2_CALL saml_condition_free(saml_condition_t *cond, const axutil_env_t *env) { if (cond->type == SAML_COND_AUDI_RESTRICTION) { saml_audi_restriction_cond_free(cond->cond, env); } AXIS2_FREE(env->allocator, cond); } AXIS2_EXTERN int AXIS2_CALL saml_condition_build(saml_condition_t *cond, axiom_node_t *node, const axutil_env_t *env) { axiom_element_t *element = NULL; axis2_char_t *locname = NULL; if (axiom_node_get_node_type(node, env) != AXIOM_ELEMENT || (element = (axiom_element_t *)axiom_node_get_data_element(node, env)) == NULL) { return AXIS2_FAILURE; } locname = axiom_element_get_localname(element, env); if (0 == axutil_strcmp(locname, SAML_AUDIENCE_RESTRICTION_CONDITION)) { if (cond->cond) { saml_audi_restriction_cond_free(cond->cond, env); } cond->cond = saml_audi_restriction_cond_create(env); cond->type = SAML_COND_AUDI_RESTRICTION; if (cond->cond) { return saml_audi_restriction_cond_build(cond->cond, node, env); } } return AXIS2_FAILURE; } AXIS2_EXTERN axiom_node_t * AXIS2_CALL saml_condition_to_om(saml_condition_t *cond, axiom_node_t *parent, const axutil_env_t *env) { if (cond->type == SAML_COND_AUDI_RESTRICTION) { return saml_audi_restriction_cond_to_om(cond->cond, parent, env); } return NULL; } AXIS2_EXTERN saml_cond_type_t AXIS2_CALL saml_condition_get_type(saml_condition_t *cond, const axutil_env_t *env) { return cond->type; } AXIS2_EXTERN void * AXIS2_CALL saml_condition_get_condition(saml_condition_t *cond, const axutil_env_t *env) { return cond->cond; } AXIS2_EXTERN int AXIS2_CALL saml_condition_set_type(saml_condition_t *cond, const axutil_env_t *env, saml_cond_type_t type) { cond->type = type; return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL saml_condition_set_condition(saml_condition_t *cond, const axutil_env_t *env, void * condition, saml_cond_type_t type) { if (cond->type == SAML_COND_AUDI_RESTRICTION) { saml_audi_restriction_cond_free(cond->cond, env); } cond->type = type; cond->cond = condition; return AXIS2_SUCCESS; } rampartc-src-1.3.0/src/omxmlsec/saml/subject.c0000644000076500007650000004010711202453417021141 0ustar shankarshankar/* * 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. */ #include #include #include AXIS2_EXTERN saml_named_id_t * AXIS2_CALL saml_named_id_create(const axutil_env_t *env) { saml_named_id_t *named_id = AXIS2_MALLOC(env->allocator, sizeof(saml_named_id_t)); if (named_id) { named_id->format = NULL; named_id->name_qualifier = NULL; named_id->name = NULL; } return named_id; } #ifndef SAML_NAMED_ID_RESET #define SAML_NAMED_ID_RESET(_named_id, _env) \ if (_named_id->format) \ { \ AXIS2_FREE(_env->allocator, _named_id->format); \ } \ if (named_id->name_qualifier) \ { \ AXIS2_FREE(_env->allocator, _named_id->name_qualifier); \ } \ if (_named_id->name) \ { \ AXIS2_FREE(_env->allocator, _named_id->name); \ } #endif AXIS2_EXTERN void AXIS2_CALL saml_named_id_free(saml_named_id_t *named_id, const axutil_env_t *env) { if (named_id->format) { AXIS2_FREE(env->allocator, named_id->format); } if (named_id->name_qualifier) { AXIS2_FREE(env->allocator, named_id->name_qualifier); } if (named_id->name) { AXIS2_FREE(env->allocator, named_id->name); } AXIS2_FREE(env->allocator, named_id); } AXIS2_EXTERN int AXIS2_CALL saml_named_id_build(saml_named_id_t *named_id, axiom_node_t *node, const axutil_env_t *env) { axutil_hash_t *attr_hash = NULL; axutil_hash_index_t *hi = NULL; axiom_element_t *element = NULL; SAML_NAMED_ID_RESET(named_id, env); if (axiom_node_get_node_type(node, env) != AXIOM_ELEMENT || (element = (axiom_element_t *)axiom_node_get_data_element(node, env)) == NULL) { return AXIS2_FAILURE; } attr_hash = axiom_element_get_all_attributes(element, env); if (attr_hash == NULL) { return AXIS2_FAILURE; } for (hi = axutil_hash_first(attr_hash, env); hi != NULL; hi = axutil_hash_next(env, hi)) { void *v = NULL; axutil_hash_this(hi, NULL, NULL, &v); if (v) { axis2_char_t *local_name = NULL; axiom_attribute_t *attr = (axiom_attribute_t*)v; local_name = axiom_attribute_get_localname(attr, env); if (0 == axutil_strcmp(local_name, SAML_NAME_QUALIFIER)) { named_id->name_qualifier = axiom_attribute_get_value(attr, env); } else if (0 == axutil_strcmp(local_name, SAML_FORMAT)) { named_id->format = axiom_attribute_get_value(attr, env); } else { return AXIS2_FAILURE; } } } if ((named_id->name = axiom_element_get_text(element, env, node)) == NULL) { return AXIS2_FAILURE; } return AXIS2_SUCCESS; } AXIS2_EXTERN axiom_node_t * AXIS2_CALL saml_named_id_to_om(saml_named_id_t *id, axiom_node_t *parent, const axutil_env_t *env) { axiom_element_t *e = NULL; axiom_node_t *n = NULL; axiom_namespace_t *ns = NULL; axiom_attribute_t *attr = NULL; ns = axiom_namespace_create(env, SAML_NMSP_URI, SAML_PREFIX); e = axiom_element_create(env, parent, SAML_NAME_IDENTIFIER, ns, &n); if (e) { if (id->format) { attr = axiom_attribute_create(env, SAML_FORMAT, id->format, NULL); axiom_element_add_attribute(e, env, attr, n); } if (id->name_qualifier) { attr = axiom_attribute_create(env, SAML_NAME_QUALIFIER, id->name_qualifier, NULL); axiom_element_add_attribute(e, env, attr, n); } if (id->name) { axiom_element_set_text(e, env, id->name, n); } } return n; } AXIS2_EXTERN axis2_char_t * AXIS2_CALL saml_named_id_get_name(saml_named_id_t *id, const axutil_env_t *env) { return id->name; } AXIS2_EXTERN axis2_char_t * AXIS2_CALL saml_named_id_get_format(saml_named_id_t *id, const axutil_env_t *env) { return id->format; } AXIS2_EXTERN axis2_char_t * AXIS2_CALL saml_named_id_get_name_qualifier(saml_named_id_t *id, const axutil_env_t *env) { return id->name_qualifier; } AXIS2_EXTERN int AXIS2_CALL saml_named_id_set_name(saml_named_id_t *id, const axutil_env_t *env, axis2_char_t *name) { if (id->name) { AXIS2_FREE(env->allocator, id->name); } id->name = axutil_strdup(env, name); return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL saml_named_id_set_format(saml_named_id_t *id, const axutil_env_t *env, axis2_char_t *format) { if (id->format) { AXIS2_FREE(env->allocator, id->format); } id->format = axutil_strdup(env, format); return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL saml_named_id_set_name_qualifier(saml_named_id_t *id, const axutil_env_t *env, axis2_char_t *qualifier) { if (id->name_qualifier) { AXIS2_FREE(env->allocator, id->name_qualifier); } id->name_qualifier = axutil_strdup(env, qualifier); return AXIS2_SUCCESS; } AXIS2_EXTERN saml_subject_t * AXIS2_CALL saml_subject_create(const axutil_env_t *env) { saml_subject_t *subject = AXIS2_MALLOC(env->allocator, sizeof(saml_subject_t)); if (subject) { subject->named_id = NULL; subject->confirmation_data = NULL; subject->confirmation_methods = NULL; subject->key_info = NULL; } return subject; } AXIS2_EXTERN void AXIS2_CALL saml_subject_free(saml_subject_t *subject, const axutil_env_t *env) { /*if (subject->named_id) { saml_named_id_free(subject->named_id, env); }*/ if (subject->confirmation_methods) { axutil_array_list_free(subject->confirmation_methods, env); } if (subject->confirmation_data) { subject->confirmation_data = NULL; } if (subject->key_info) { subject->key_info = NULL; } AXIS2_FREE(env->allocator, subject); } AXIS2_EXTERN int AXIS2_CALL saml_subject_build(saml_subject_t *subject, axiom_node_t *node, const axutil_env_t *env) { axiom_element_t *element = NULL; axiom_node_t *cn = NULL, *ccn = NULL; axiom_element_t *ce = NULL, *cce = NULL; axiom_child_element_iterator_t *ci = NULL, *cci = NULL; if (axiom_node_get_node_type(node, env) != AXIOM_ELEMENT || (element = (axiom_element_t *)axiom_node_get_data_element(node, env)) == NULL) { return AXIS2_FAILURE; } ci = axiom_element_get_child_elements(element, env, node); if (ci) { while (AXIS2_TRUE == axiom_child_element_iterator_has_next(ci, env)) { cn = axiom_child_element_iterator_next(ci, env); ce = axiom_node_get_data_element(cn, env); if (0 == axutil_strcmp(axiom_element_get_localname(ce, env), SAML_NAME_IDENTIFIER)) { if (!subject->named_id) { subject->named_id = saml_named_id_create(env); } saml_named_id_build(subject->named_id, cn, env); } if (0 == axutil_strcmp(axiom_element_get_localname(ce, env), SAML_SUBJECT_CONFIRMATION)) { cci = axiom_element_get_child_elements(ce, env, cn); if (cci) { while (AXIS2_TRUE == axiom_child_element_iterator_has_next(cci, env)) { ccn = axiom_child_element_iterator_next(cci, env); cce = axiom_node_get_data_element(ccn, env); if (0 == axutil_strcmp(axiom_element_get_localname(cce, env), SAML_CONFIRMATION_METHOD)) { if (!subject->confirmation_methods) { subject->confirmation_methods = axutil_array_list_create(env, SAML_ARRAY_LIST_DEF); } axutil_array_list_add(subject->confirmation_methods, env, axiom_element_get_text(cce, env, ccn)); } else if (0 == axutil_strcmp(axiom_element_get_localname(cce, env), SAML_SUBJECT_CONFIRMATION_DATA)) { subject->confirmation_data = ccn; } else if (0 == axutil_strcmp(axiom_element_get_localname(cce, env), SAML_KEY_INFO)) { subject->key_info = ccn; } else { return AXIS2_FAILURE; } } } } } } else { return AXIS2_FAILURE; } return AXIS2_SUCCESS; } AXIS2_EXTERN axiom_node_t * AXIS2_CALL saml_subject_to_om(saml_subject_t *subject, axiom_node_t *parent, const axutil_env_t *env) { int i = 0, size = 0; axiom_element_t *e = NULL, *ce = NULL, *cce = NULL; axiom_node_t *n = NULL, *cn = NULL, *ccn = NULL; axiom_namespace_t *ns = NULL; ns = axiom_namespace_create(env, SAML_NMSP_URI, SAML_PREFIX); e = axiom_element_create(env, parent, SAML_SUBJECT, ns, &n); if (e) { if (subject->named_id) { saml_named_id_to_om(subject->named_id, n, env); } ns = axiom_namespace_create(env, SAML_NMSP_URI, SAML_PREFIX); ce = axiom_element_create(env, n, SAML_SUBJECT_CONFIRMATION, ns, &cn); if (ce) { if (subject->confirmation_methods) { size = axutil_array_list_size(subject->confirmation_methods, env); for (i = 0; i < size; i++) { ns = axiom_namespace_create(env, SAML_NMSP_URI, SAML_PREFIX); cce = axiom_element_create(env, cn, SAML_CONFIRMATION_METHOD, ns, &ccn); if (cce) { axiom_element_set_text(cce, env, axutil_array_list_get(subject->confirmation_methods, env, i), ccn); } } } if (subject->confirmation_data) { ns = axiom_namespace_create(env, SAML_NMSP_URI, SAML_PREFIX); cce = axiom_element_create(env, cn, SAML_SUBJECT_CONFIRMATION_DATA, ns, &ccn); if (cce) { axiom_node_add_child(cn, env, subject->confirmation_data); } } if (subject->key_info) { axiom_node_add_child(cn, env, subject->key_info); } } } return n; } AXIS2_EXTERN saml_named_id_t * AXIS2_CALL saml_subject_get_named_id(saml_subject_t *subject, const axutil_env_t *env) { return subject->named_id; } AXIS2_EXTERN axutil_array_list_t * AXIS2_CALL saml_subject_get_confirmation_methods(saml_subject_t *subject, const axutil_env_t *env) { return subject->confirmation_methods; } AXIS2_EXTERN axiom_node_t * AXIS2_CALL saml_subject_get_confirmation_data(saml_subject_t *subject, const axutil_env_t *env) { return subject->confirmation_data; } AXIS2_EXTERN axiom_node_t * AXIS2_CALL saml_subject_get_key_info(saml_subject_t *subject, const axutil_env_t *env) { return subject->key_info; } AXIS2_EXTERN int AXIS2_CALL saml_subject_set_session_key(saml_subject_t *subject, axutil_env_t *env, axis2_char_t *certificate_file, oxs_key_t *session_key, axis2_char_t *algorithm) { axiom_node_t *key_info = NULL; axis2_status_t status = AXIS2_FAILURE; oxs_asym_ctx_t * asym_ctx = NULL; oxs_x509_cert_t *cert = NULL; key_info = oxs_token_build_key_info_element(env, NULL); asym_ctx = oxs_asym_ctx_create(env); oxs_asym_ctx_set_algorithm(asym_ctx, env, algorithm); oxs_asym_ctx_set_operation(asym_ctx, env, OXS_ASYM_CTX_OPERATION_PUB_ENCRYPT); cert = oxs_key_mgr_load_x509_cert_from_pem_file(env, certificate_file); if (!cert) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[oxs][saml]Cannot load the certificate to encrypt the ses. key."); return AXIS2_FAILURE; } oxs_asym_ctx_set_certificate(asym_ctx, env, cert); status = oxs_xml_enc_encrypt_key(env, asym_ctx, key_info, session_key, NULL); if (status == AXIS2_FAILURE) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[oxs][saml]Session key encryption failed"); return AXIS2_FAILURE; } subject->key_info = key_info; saml_subject_add_confirmation(subject, env, SAML_SUB_CONFIRMATION_HOLDER_OF_KEY); return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL saml_subject_set_named_id(saml_subject_t *subject, const axutil_env_t *env, saml_named_id_t *named_id) { if (subject->named_id) { saml_named_id_free(subject->named_id, env); } subject->named_id = named_id; return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL saml_subject_set_confirmation_methods(saml_subject_t *subject, const axutil_env_t *env, axutil_array_list_t *list) { int i = 0, size = 0; axis2_char_t *val = NULL; if (subject->confirmation_methods) { size = axutil_array_list_size(subject->confirmation_methods, env); for (i = 0; i < size; i++) { val = axutil_array_list_get(subject->confirmation_methods, env, i); if (val) { AXIS2_FREE(env->allocator, val); } } axutil_array_list_free(subject->confirmation_methods, env); subject->confirmation_methods = list; } else { subject->confirmation_methods = list; } return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL saml_subject_add_confirmation(saml_subject_t *subject, const axutil_env_t *env, axis2_char_t *sub_confirmation) { if (!subject->confirmation_methods) { subject->confirmation_methods = axutil_array_list_create(env, SAML_ARRAY_LIST_DEF * 2); } axutil_array_list_add(subject->confirmation_methods, env, axutil_strdup(env, sub_confirmation)); return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL saml_subject_remove_subject_confiirmation(saml_subject_t *subject, const axutil_env_t *env, int index) { axis2_char_t *val = NULL; if (subject->confirmation_methods && axutil_array_list_size(subject->confirmation_methods, env) > index) { val = axutil_array_list_remove(subject->confirmation_methods, env, index); if (val) { AXIS2_FREE(env->allocator, val); } return AXIS2_SUCCESS; } else { return AXIS2_FAILURE; } } AXIS2_EXTERN int AXIS2_CALL saml_subject_set_key_info(saml_subject_t *subject, const axutil_env_t *env, axiom_node_t *node) { if (subject->key_info) { axiom_node_free_tree(subject->key_info, env); } subject->key_info = node; return AXIS2_SUCCESS; } AXIS2_EXTERN saml_subject_stmt_t * AXIS2_CALL saml_subject_stmt_create(const axutil_env_t *env) { saml_subject_stmt_t *stmt = AXIS2_MALLOC(env->allocator, sizeof(saml_subject_stmt_t)); if (stmt) { if (!(stmt->subject = saml_subject_create(env))) { AXIS2_FREE(env->allocator, stmt); return NULL; } } return stmt; } AXIS2_EXTERN void AXIS2_CALL saml_subject_stmt_free(saml_subject_stmt_t *subject_stmt, const axutil_env_t *env) { saml_subject_free(subject_stmt->subject, env); AXIS2_FREE(env->allocator, subject_stmt); } AXIS2_EXTERN int AXIS2_CALL saml_subject_stmt_build(saml_subject_stmt_t *subject_stmt, axiom_node_t *node, const axutil_env_t *env) { axiom_element_t *element = NULL; axiom_node_t *first_enode = NULL; axiom_element_t *first_element; if (axiom_node_get_node_type(node, env) != AXIOM_ELEMENT || (element = (axiom_element_t *)axiom_node_get_data_element(node, env)) == NULL) { return AXIS2_FAILURE; } if ((first_element = axiom_element_get_first_element(element, env, node, &first_enode)) != NULL && 0 == axutil_strcmp(axiom_element_get_localname(element, env), SAML_SUBJECT)) { saml_subject_build(subject_stmt->subject, first_enode, env); return AXIS2_SUCCESS; } return AXIS2_FAILURE; } AXIS2_EXTERN axiom_node_t * AXIS2_CALL saml_subject_stmt_to_om(saml_subject_stmt_t *subject_stmt, axiom_node_t *parent, const axutil_env_t *env) { axiom_element_t *e = NULL; axiom_node_t *n = NULL; axiom_namespace_t *ns = NULL; ns = axiom_namespace_create(env, SAML_NMSP_URI, SAML_PREFIX); e = axiom_element_create(env, parent, SAML_SUBJECT_STATEMENT, ns, &n); if (e) { saml_subject_to_om(subject_stmt->subject, n, env); } return n; } AXIS2_EXTERN int AXIS2_CALL saml_subject_stmt_set_subject(saml_subject_stmt_t *subject_stmt, const axutil_env_t *env, saml_subject_t *subject) { saml_subject_free(subject_stmt->subject, env); subject_stmt->subject = subject; return AXIS2_SUCCESS; } AXIS2_EXTERN saml_subject_t * AXIS2_CALL saml_subject_stmt_get_subject(saml_subject_stmt_t *subject_stmt, const axutil_env_t *env) { return subject_stmt->subject; } rampartc-src-1.3.0/src/omxmlsec/saml/request.c0000644000076500007650000005361711202453417021204 0ustar shankarshankar/* * 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. */ #include #include AXIS2_EXTERN saml_artifact_t* AXIS2_CALL saml_artifact_create(const axutil_env_t *env) { saml_artifact_t *artifact = NULL; artifact = AXIS2_MALLOC(env->allocator, sizeof(saml_artifact_t)); if(artifact) { artifact->artifact = NULL; } return artifact; } AXIS2_EXTERN void AXIS2_CALL saml_artifact_free(saml_artifact_t *artifact, const axutil_env_t *env) { if(artifact->artifact) { AXIS2_FREE(env->allocator, artifact->artifact); } AXIS2_FREE(env->allocator, artifact); artifact = NULL; } AXIS2_EXTERN axis2_char_t* AXIS2_CALL saml_artifact_get_data(saml_artifact_t *artifact, const axutil_env_t *env) { if(artifact) return artifact->artifact; else return NULL; } AXIS2_EXTERN int AXIS2_CALL saml_artifact_set_data(saml_artifact_t *artifact, const axutil_env_t *env, axis2_char_t *data) { if(artifact->artifact) { AXIS2_FREE(env->allocator, artifact->artifact); } artifact->artifact = axutil_strdup(env, data); return AXIS2_SUCCESS; } AXIS2_EXTERN saml_request_t* AXIS2_CALL saml_request_create(const axutil_env_t *env) { saml_request_t *request = NULL; request = (saml_request_t*)AXIS2_MALLOC(env->allocator, sizeof(saml_request_t)); if(request) { request->issue_instant = NULL; request->major_version = NULL; request->query = NULL; request->minor_version = NULL; request->saml_asserion_id_ref = axutil_array_list_create(env, SAML_ARRAY_LIST_DEF); request->saml_artifacts = axutil_array_list_create(env, SAML_ARRAY_LIST_DEF); request->saml_responds = axutil_array_list_create(env, SAML_ARRAY_LIST_DEF); request->sig_ctx = NULL; request->request_id = NULL; request->signature = NULL; request->original_xml = NULL; } return request; } AXIS2_EXTERN void AXIS2_CALL saml_request_free(saml_request_t *request, const axutil_env_t *env) { int size = 0, i = 0; saml_artifact_t *artifact = NULL; axutil_qname_t *respond = NULL; if(request->request_id) { AXIS2_FREE(env->allocator, request->request_id); } if(request->issue_instant) { axutil_date_time_free(request->issue_instant, env); } if(request->major_version) { AXIS2_FREE(env->allocator, request->major_version); } if(request->minor_version) { AXIS2_FREE(env->allocator, request->minor_version); } if(request->query) { saml_query_free(request->query, env); } if(request->sig_ctx) { oxs_sign_ctx_free(request->sig_ctx, env); } if(request->saml_artifacts) { size = axutil_array_list_size(request->saml_artifacts, env); for(i = 0; i < size ; i++) { artifact = (saml_artifact_t*)axutil_array_list_get(request->saml_artifacts, env , i); if(artifact) saml_artifact_free(artifact, env); } axutil_array_list_free(request->saml_artifacts, env); } if(request->saml_asserion_id_ref) { axis2_char_t *id_ref = NULL; size = axutil_array_list_size(request->saml_asserion_id_ref, env); for(i = 0; i < size ; i++) { id_ref = (axis2_char_t*)axutil_array_list_get(request->saml_asserion_id_ref, env , i); if(id_ref) AXIS2_FREE(env->allocator, id_ref); } axutil_array_list_free(request->saml_asserion_id_ref, env); } if(request->saml_responds) { size = axutil_array_list_size(request->saml_responds, env); for(i = 0; i < size ; i++) { respond = (axutil_qname_t*)axutil_array_list_get(request->saml_responds, env , i); if(respond) axutil_qname_free(respond, env); } axutil_array_list_free(request->saml_responds, env); } request->original_xml = NULL; request->signature = NULL; AXIS2_FREE(env->allocator, request); request = NULL; } AXIS2_EXTERN int AXIS2_CALL saml_request_build(saml_request_t *request, axiom_node_t *node, const axutil_env_t *env) { /*populate the saml request struct from the axiom om node struct*/ axutil_hash_t *attr_hash = NULL; axiom_element_t *element = NULL; axutil_hash_index_t *hi = NULL; axiom_child_element_iterator_t *iterator = NULL; axiom_node_t *child_node = NULL; axis2_char_t *element_local_name = NULL; saml_artifact_t *artifact = NULL; if (axiom_node_get_node_type(node, env) != AXIOM_ELEMENT) { return AXIS2_FAILURE; } if ((element = axiom_node_get_data_element(node, env)) == NULL) { return AXIS2_FAILURE; } /* Get all the the attributes */ attr_hash = axiom_element_get_all_attributes(element, env); request->original_xml = node; if(attr_hash) { /*for each attribute*/ for (hi = axutil_hash_first(attr_hash, env); hi; hi = axutil_hash_next(env, hi)) { void *v = NULL; axutil_hash_this(hi, NULL, NULL, &v); if (v) { axis2_char_t *attr_val = NULL; axiom_attribute_t *attr = (axiom_attribute_t*)v; attr_val = axiom_attribute_get_value(attr, env); if(!axutil_strcmp(axiom_attribute_get_localname(attr, env), SAML_REQUEST_ID)) { request->request_id = attr_val; } else if(!axutil_strcmp(axiom_attribute_get_localname(attr, env), SAML_MAJORVERSION)) { request->major_version = attr_val; } else if(!axutil_strcmp(axiom_attribute_get_localname(attr, env), SAML_MINORVERSION)) { request->minor_version = attr_val; } else if(!axutil_strcmp(axiom_attribute_get_localname(attr, env), SAML_ISSUE_INSTANT)) { request->issue_instant = axutil_date_time_create(env); axutil_date_time_deserialize_date(request->issue_instant, env, attr_val); } } } } /* Get all child elements of */ iterator = axiom_element_get_child_elements(element, env, node); if(iterator) { while(axiom_child_element_iterator_has_next(iterator, env)) { child_node = axiom_child_element_iterator_next(iterator, env); element = (axiom_element_t *)axiom_node_get_data_element(child_node, env); if(element) element_local_name = axiom_element_get_localname(element, env); if(element != NULL && !(axutil_strcmp(element_local_name, SAML_RESPOND_WITH))) { axutil_array_list_add(request->saml_responds, env, axiom_element_get_qname(element, env, child_node)); } else if(element != NULL && !(axutil_strcmp(element_local_name,SAML_SIGNATURE))) { /*Set the reference of the of the request struct to verify*/ request->signature = child_node; } /* Check for the saml queries*/ else if(element != NULL && !(axutil_strcmp(element_local_name, SAML_SUBJECT_QUERY))) { request->query = saml_query_create(env); if(request->query) { /*populate the saml subject query*/ request->query->type = element_local_name; if(saml_query_build(request->query, child_node, env)== AXIS2_FAILURE) { saml_query_free(request->query, env); } } } else if(element != NULL && !(axutil_strcmp(element_local_name,SAML_AUTHENTICATION_QUERY))) { request->query = saml_query_create(env); if(request->query) { /*populate the saml authentication query*/ request->query->type = axutil_strdup(env, element_local_name); if(saml_query_build(request->query, child_node, env)== AXIS2_FAILURE) { saml_query_free(request->query, env); } } } else if(element != NULL && !(axutil_strcmp(element_local_name,SAML_AUTHORIZATION_DECISION_QUERY))) { request->query = saml_query_create(env); if(request->query) { /*populate the saml authorization decision query*/ request->query->type = axutil_strdup(env, element_local_name);; if(saml_query_build(request->query, child_node, env)== AXIS2_FAILURE) { saml_query_free(request->query, env); } } } else if(element != NULL && !(axutil_strcmp(element_local_name, SAML_ATTRIBUTE_QUERY))) { request->query = saml_query_create(env); if(request->query) { /*populate the saml attribute query*/ request->query->type = axutil_strdup(env, element_local_name);; if(saml_query_build(request->query, child_node, env)== AXIS2_FAILURE) { saml_query_free(request->query, env); } } } else if(element != NULL && !(axutil_strcmp(element_local_name,SAML_ASSERTION_ID_REFERENCE))) { axutil_array_list_add(request->saml_asserion_id_ref, env, axiom_element_get_text(element, env, child_node)); } else if(element != NULL && !(axutil_strcmp(element_local_name, SAML_ASSERTION_ARTIFACT))) { artifact = saml_artifact_create(env); if(artifact) { /*populate the saml artifacts*/ artifact->artifact = axiom_element_get_text(element, env, child_node); axutil_array_list_add(request->saml_artifacts, env, artifact); } } } } return AXIS2_SUCCESS; } AXIS2_EXTERN axiom_node_t* AXIS2_CALL saml_request_to_om(saml_request_t *request, axiom_node_t *parent, const axutil_env_t *env) { int size = 0, i = 0; axiom_element_t *element = NULL, *ce = NULL; axiom_node_t *n = NULL, *cn = NULL; axiom_namespace_t *ns1 = NULL, *ns2 = NULL; axiom_attribute_t *attr = NULL; axutil_qname_t *qname = NULL; saml_artifact_t *artifact = NULL; axis2_char_t *id_reference = NULL; /*construct the element*/ ns1 = axiom_namespace_create(env, SAML_PROTOCOL_NMSP, SAML_PROTOCOL_PREFIX); ns2 = axiom_namespace_create(env, SAML_NMSP_URI, SAML_PREFIX); element = axiom_element_create(env, parent, SAML_REQUEST, ns1, &n); axiom_element_declare_namespace(element, env, n, ns2); if(element) { if(request->minor_version && request->issue_instant) { /* set the element attributes*/ if(!request->request_id) request->request_id = saml_id_generate_random_bytes(env); attr = axiom_attribute_create(env, SAML_REQUEST_ID, request->request_id, NULL); axiom_element_add_attribute(element, env, attr, n); attr = axiom_attribute_create(env, SAML_MAJORVERSION, SAML_MAJOR_VERSION, NULL); axiom_element_add_attribute(element, env, attr, n); attr = axiom_attribute_create(env, SAML_MINORVERSION, request->minor_version, NULL); axiom_element_add_attribute(element, env, attr, n); attr = axiom_attribute_create(env, SAML_ISSUE_INSTANT, axutil_date_time_serialize_date_time(request->issue_instant, env), NULL); axiom_element_add_attribute(element, env, attr, n); } if(request->saml_responds) { /*if saml request response values are set, construct elements*/ size = axutil_array_list_size(request->saml_responds, env); for (i = 0 ; i < size ; i++) { qname = (axutil_qname_t*) axutil_array_list_get(request->saml_responds, env, i); ns1 = axiom_namespace_create(env, SAML_PROTOCOL_NMSP, SAML_PROTOCOL_PREFIX); ce = axiom_element_create(env, n, SAML_RESPOND_WITH, ns1, &cn); if(ce) { axiom_element_set_text(ce, env, axutil_qname_to_string(qname, env), cn); } } } if(request->query || request->saml_artifacts || request->saml_asserion_id_ref) { if(request->query) { /* construct the saml query element*/ saml_query_to_om(request->query, n, env); } if(request->saml_artifacts) { /*if defined construct elements*/ size = axutil_array_list_size(request->saml_artifacts, env); for(i = 0; i < size ; i++) { artifact = (saml_artifact_t*) axutil_array_list_get(request->saml_artifacts, env, i); if(artifact) { ns1 = axiom_namespace_create(env, SAML_PROTOCOL_NMSP, SAML_PROTOCOL_PREFIX); ce = axiom_element_create(env, n, SAML_ASSERTION_ARTIFACT, ns1, &cn); if(ce) { axiom_element_set_text(ce, env, artifact->artifact, cn); } } } } if(request->saml_asserion_id_ref) { /*if defined construct elements*/ size = axutil_array_list_size(request->saml_asserion_id_ref, env); for(i = 0; i < size ; i++) { id_reference = (axis2_char_t*) axutil_array_list_get(request->saml_asserion_id_ref, env, i); ns1 = axiom_namespace_create(env, SAML_PROTOCOL_NMSP, SAML_PROTOCOL_PREFIX); ce = axiom_element_create(env, n, SAML_ASSERTION_ID_REFERENCE, ns1, &cn); if(ce) { axiom_element_set_text(ce, env, id_reference, cn); } } } } if(request->sig_ctx) { /*if saml sign context is set, sign the saml request element*/ saml_request_sign(request, n, env); } } return n; } AXIS2_EXTERN axis2_char_t* AXIS2_CALL saml_request_get_id(saml_request_t *request, const axutil_env_t *env) { if(request) { return request->request_id; } else return NULL; } AXIS2_EXTERN int AXIS2_CALL saml_request_set_minor_version(saml_request_t *request, const axutil_env_t *env, int version) { if(request->minor_version) { AXIS2_FREE(env->allocator, request->minor_version); } request->minor_version = AXIS2_MALLOC(env->allocator, 8); sprintf(request->minor_version, "%d", version); return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL saml_request_set_major_version(saml_request_t *request, const axutil_env_t *env, int version) { if(request->major_version) { AXIS2_FREE(env->allocator, request->major_version); } request->minor_version = AXIS2_MALLOC(env->allocator, 8); sprintf(request->major_version, "%d", version); return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL saml_request_set_issue_instant(saml_request_t *request, const axutil_env_t *env, axutil_date_time_t *date_time) { if(request->issue_instant) { axutil_date_time_free(request->issue_instant, env); } request->issue_instant = date_time; return AXIS2_SUCCESS; } AXIS2_EXTERN axutil_date_time_t* AXIS2_CALL saml_request_get_issue_instant(saml_request_t *request, const axutil_env_t *env) { if(request) return request->issue_instant; else return NULL; } AXIS2_EXTERN int AXIS2_CALL saml_request_set_respond_withs(saml_request_t *request, const axutil_env_t *env, axutil_array_list_t *responds) { int size = 0, i = 0; axutil_qname_t *respond = NULL; if(request->saml_responds) { size = axutil_array_list_size(request->saml_responds, env); for(i = 0; i < size; i++) { respond = (axutil_qname_t*)axutil_array_list_get(request->saml_responds, env, i); if(respond) axutil_qname_free(respond, env); } axutil_array_list_free(request->saml_responds, env); } request->saml_responds = responds; return AXIS2_SUCCESS; } AXIS2_EXTERN axutil_array_list_t* AXIS2_CALL saml_request_get_respond_withs(saml_request_t *request, const axutil_env_t *env) { if(request) return request->saml_responds; else return NULL; } AXIS2_EXTERN int AXIS2_CALL saml_request_add_respond_with(saml_request_t *request, const axutil_env_t *env, axutil_qname_t *respond) { if(!request->saml_responds) { request->saml_responds = axutil_array_list_create(env, SAML_ARRAY_LIST_DEF); } if(request->saml_responds) { axutil_array_list_add(request->saml_responds, env, respond); return AXIS2_SUCCESS; } return AXIS2_FAILURE; } AXIS2_EXTERN int AXIS2_CALL saml_request_remove_respond_with(saml_request_t *request, const axutil_env_t *env, int index) { axutil_qname_t *qname; if(request->saml_responds) { qname = axutil_array_list_remove(request->saml_responds, env, index); if(qname) { axutil_qname_free(qname, env); } return AXIS2_SUCCESS; } return AXIS2_FAILURE; } AXIS2_EXTERN int AXIS2_CALL saml_request_set_query(saml_request_t *request, const axutil_env_t *env, saml_query_t *query) { if(request->query) { saml_query_free(request->query, env); } request->query = query; return AXIS2_SUCCESS; } AXIS2_EXTERN saml_query_t* AXIS2_CALL saml_request_get_query(saml_request_t *request, const axutil_env_t *env) { if(request) return request->query; else return NULL; } AXIS2_EXTERN int AXIS2_CALL saml_request_set_id_refs(saml_request_t *request, const axutil_env_t *env, axutil_array_list_t *id_refs) { int size = 0, i = 0; if(request->saml_asserion_id_ref) { axis2_char_t *id_ref = NULL; size = axutil_array_list_size(request->saml_asserion_id_ref, env); for(i = 0; i < size; i++) { id_ref = (axis2_char_t*)axutil_array_list_get(request->saml_asserion_id_ref, env, i); if(id_ref) AXIS2_FREE(env->allocator, id_ref); } axutil_array_list_free(request->saml_asserion_id_ref, env); } request->saml_asserion_id_ref = id_refs; return AXIS2_SUCCESS; } AXIS2_EXTERN axutil_array_list_t* AXIS2_CALL saml_request_get_id_refs(saml_request_t *request, const axutil_env_t *env) { if(request) return request->saml_asserion_id_ref; else return NULL; } AXIS2_EXTERN int AXIS2_CALL saml_request_add_id_refs(saml_request_t *request, const axutil_env_t *env, axis2_char_t *id_reference) { if(!request->saml_asserion_id_ref) { request->saml_asserion_id_ref = axutil_array_list_create(env, SAML_ARRAY_LIST_DEF); } if(request->saml_asserion_id_ref) { axutil_array_list_add(request->saml_asserion_id_ref, env, axutil_strdup(env, id_reference)); return AXIS2_SUCCESS; } return AXIS2_FAILURE; } AXIS2_EXTERN int AXIS2_CALL saml_request_remove_id_refs(saml_request_t *request, const axutil_env_t *env, int index) { axis2_char_t *id_ref; if(request->saml_asserion_id_ref) { id_ref = axutil_array_list_remove(request->saml_asserion_id_ref, env,index); if(id_ref) { AXIS2_FREE(env->allocator, id_ref); return AXIS2_SUCCESS; } } return AXIS2_FAILURE; } AXIS2_EXTERN int AXIS2_CALL saml_request_set_artifacts(saml_request_t *request, const axutil_env_t *env, axutil_array_list_t *artifacts) { int size = 0, i = 0; saml_artifact_t *artifact = NULL; if(request->saml_artifacts) { size = axutil_array_list_size(request->saml_artifacts,env); for(i = 0; i < size ; i++) { artifact = (saml_artifact_t*)axutil_array_list_get(request->saml_artifacts, env, i); if(artifact) saml_artifact_free(artifact, env); } axutil_array_list_free(request->saml_artifacts, env); } request->saml_artifacts = artifacts; return AXIS2_SUCCESS; } AXIS2_EXTERN axutil_array_list_t* AXIS2_CALL saml_request_get_artifacts(saml_request_t *request, const axutil_env_t *env) { if(request) return request->saml_artifacts; else return NULL; } AXIS2_EXTERN int AXIS2_CALL saml_request_add_artifact(saml_request_t *request, const axutil_env_t *env, saml_artifact_t *artifact) { if(!request->saml_artifacts) { request->saml_artifacts = axutil_array_list_create(env, SAML_ARRAY_LIST_DEF); } if(request->saml_artifacts) { axutil_array_list_add(request->saml_artifacts, env, artifact); return AXIS2_SUCCESS; } return AXIS2_FAILURE; } AXIS2_EXTERN int AXIS2_CALL saml_request_remove_artifact(saml_request_t *request, const axutil_env_t *env, int index) { saml_artifact_t *ar; if(request->saml_artifacts) { ar = axutil_array_list_remove(request->saml_artifacts, env ,index); if(ar) { saml_artifact_free(ar, env); return AXIS2_SUCCESS; } } return AXIS2_FAILURE; } AXIS2_EXTERN axis2_bool_t AXIS2_CALL saml_request_check_validity(saml_request_t *request, const axutil_env_t *env) { if(request->query) return AXIS2_TRUE; else if(request->saml_artifacts) { if(!axutil_array_list_is_empty(request->saml_artifacts, env)) return AXIS2_TRUE; else if(request->saml_asserion_id_ref) { if(!axutil_array_list_is_empty(request->saml_asserion_id_ref, env)) return AXIS2_TRUE; else return AXIS2_FALSE; } else return AXIS2_FALSE; } else return AXIS2_FALSE; } AXIS2_EXTERN int AXIS2_CALL saml_request_set_signature(saml_request_t *request, const axutil_env_t *env, oxs_sign_ctx_t *sig_ctx) { if(request->sig_ctx) { oxs_sign_ctx_free(request->sig_ctx, env); } request->sig_ctx = sig_ctx; return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL saml_request_unsign(saml_request_t *request, const axutil_env_t *env) { if(request->sig_ctx) { oxs_sign_ctx_free(request->sig_ctx, env); } return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL saml_request_sign(saml_request_t *request, axiom_node_t *node, const axutil_env_t *env) { axiom_node_t *n= NULL; oxs_sign_part_t* sig_part = NULL; axutil_array_list_t *sig_parts = NULL; int size = 0, i = 0; /*Get the sign parts defined in saml request sign context*/ sig_parts = oxs_sign_ctx_get_sign_parts(request->sig_ctx, env); if(sig_parts) { /* for each sign part, set the node to be signed*/ size = axutil_array_list_size(sig_parts, env); for(i = 0; i < size; i++) { sig_part = axutil_array_list_get(sig_parts, env, i); oxs_sign_part_set_node(sig_part, env, node); } } /*sign the node with the saml request sign info*/ oxs_xml_sig_sign(env, request->sig_ctx, node, &n); /*Finally build KeyInfo*/ oxs_xml_key_info_build(env, n, oxs_sign_ctx_get_certificate(request->sig_ctx, env), OXS_KIBP_X509DATA_X509CERTIFICATE); return AXIS2_SUCCESS; } AXIS2_EXTERN void AXIS2_CALL saml_request_set_default_signature(saml_request_t *request, const axutil_env_t *env, oxs_sign_ctx_t *sig_ctx) { if(request->sig_ctx) { oxs_sign_ctx_free(request->sig_ctx, env); } request->sig_ctx = sig_ctx; /*create transform sor SAML XML signature with identifier*/ saml_util_set_sig_ctx_defaults(request->sig_ctx, env, SAML_REQUEST_ID); } AXIS2_EXTERN int AXIS2_CALL saml_request_signature_verify(saml_request_t *request, const axutil_env_t *env) { return oxs_xml_sig_verify(env, request->sig_ctx, request->signature, request->original_xml); } AXIS2_EXTERN int AXIS2_CALL saml_request_is_sign_set(saml_request_t *request, const axutil_env_t *env) { if (request->sig_ctx) { return AXIS2_TRUE; } return AXIS2_FALSE; } AXIS2_EXTERN int AXIS2_CALL saml_request_is_signed(saml_request_t *request, const axutil_env_t *env) { if (request->signature) { return AXIS2_TRUE; } return AXIS2_FALSE; } rampartc-src-1.3.0/src/omxmlsec/saml/auth_smt.c0000644000076500007650000004040011202453417021322 0ustar shankarshankar/* * 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. */ #include AXIS2_EXTERN saml_auth_stmt_t * AXIS2_CALL saml_auth_stmt_create(const axutil_env_t *env) { saml_auth_stmt_t *auth_stmt = AXIS2_MALLOC(env->allocator, sizeof(saml_auth_stmt_t)); if (auth_stmt) { auth_stmt->auth_instanse = NULL; auth_stmt->auth_method = NULL; auth_stmt->ip = NULL; auth_stmt->dns = NULL; auth_stmt->auth_binding = NULL; auth_stmt->subject = saml_subject_create(env); } return auth_stmt; } AXIS2_EXTERN void AXIS2_CALL saml_auth_stmt_free(saml_auth_stmt_t *auth_stmt, const axutil_env_t *env) { if (auth_stmt->auth_instanse) { axutil_date_time_free(auth_stmt->auth_instanse, env); } if (auth_stmt->auth_method) { AXIS2_FREE(env->allocator, auth_stmt->auth_method); } /*if (auth_stmt->sub_locality) { saml_subject_locality_free(auth_stmt->sub_locality, env); }*/ if (auth_stmt->auth_binding) { int i = 0; saml_auth_binding_t *auth_bind = NULL; for (i = 0; i < axutil_array_list_size(auth_stmt->auth_binding, env); i++) { auth_bind = axutil_array_list_get(auth_stmt->auth_binding, env, i); if (auth_bind) { saml_auth_binding_free(auth_bind, env); } } axutil_array_list_free(auth_stmt->auth_binding, env); } if (auth_stmt->subject) { saml_subject_free(auth_stmt->subject, env); } AXIS2_FREE(env->allocator, auth_stmt); } AXIS2_EXTERN int AXIS2_CALL saml_auth_stmt_build(saml_auth_stmt_t *auth_stmt, axiom_node_t *node, const axutil_env_t *env) { axiom_element_t *element = NULL, *ce = NULL; axiom_node_t *cn = NULL; axiom_child_element_iterator_t *ci = NULL; axis2_char_t *time = NULL; saml_auth_binding_t *auth_bind = NULL; if (axiom_node_get_node_type(node, env) != AXIOM_ELEMENT || (element = axiom_node_get_data_element(node, env)) == NULL) { return AXIS2_FAILURE; } if ((auth_stmt->auth_method = axiom_element_get_attribute_value_by_name(element, env, SAML_AUTHENTICATION_METHOD)) == NULL) { return AXIS2_FAILURE; } if ((time = axiom_element_get_attribute_value_by_name(element, env, SAML_AUTHENTICATION_INSTANT)) != NULL) { auth_stmt->auth_instanse = axutil_date_time_create(env); axutil_date_time_deserialize_date_time(auth_stmt->auth_instanse, env, time); } ci = axiom_element_get_child_elements(element, env, node); if (ci) { while(AXIS2_TRUE == axiom_child_element_iterator_has_next(ci, env)) { cn = axiom_child_element_iterator_next(ci, env); ce = axiom_node_get_data_element(cn, env); if (axutil_strcmp(axiom_element_get_localname(ce, env), SAML_SUBJECT) == 0) { auth_stmt->subject = saml_subject_create(env); saml_subject_build(auth_stmt->subject, cn, env); } else if (axutil_strcmp(axiom_element_get_localname(ce, env), SAML_SUBJECT_LOCALITY) == 0) { /*auth_stmt->sub_locality = saml_subject_locality_create(env); saml_subject_locality_build(auth_stmt->sub_locality, cn, env);*/ auth_stmt->ip = axiom_element_get_attribute_value_by_name(ce, env, SAML_IP_ADDRESS); auth_stmt->dns = axiom_element_get_attribute_value_by_name(ce, env, SAML_DNS_ADDRESS); } else if (axutil_strcmp(axiom_element_get_localname(ce, env), SAML_AUTHORITY_BINDING) == 0) { auth_bind = saml_auth_binding_create(env); saml_auth_binding_build(auth_bind, cn, env); if (!auth_stmt->auth_binding) { auth_stmt->auth_binding = axutil_array_list_create(env, SAML_ARRAY_LIST_DEF * 2); } axutil_array_list_add(auth_stmt->auth_binding, env, auth_bind); } else { return AXIS2_FAILURE; } } } else { return AXIS2_FAILURE; } return AXIS2_SUCCESS; } AXIS2_EXTERN axiom_node_t *AXIS2_CALL saml_auth_stmt_to_om(saml_auth_stmt_t *auth_stmt, axiom_node_t *parent, const axutil_env_t *env) { int i = 0, size = 0; axiom_element_t *e = NULL, *ce = NULL; axiom_node_t *n = NULL, *cn = NULL; axiom_attribute_t *attr = NULL; axiom_namespace_t *ns = NULL; saml_auth_binding_t *auth_bind = NULL; ns = axiom_namespace_create(env, SAML_NMSP_URI, SAML_PREFIX); e = axiom_element_create(env, parent, SAML_AUTHENTICATION_STATEMENT, ns, &n); if (e) { if (auth_stmt->auth_instanse && auth_stmt->auth_method) { attr = axiom_attribute_create(env, SAML_AUTHENTICATION_METHOD, auth_stmt->auth_method, NULL); axiom_element_add_attribute(e, env, attr, n); attr = axiom_attribute_create(env, SAML_AUTHENTICATION_INSTANT, axutil_date_time_serialize_date_time(auth_stmt->auth_instanse, env), NULL); axiom_element_add_attribute(e, env, attr, n); } else { return NULL; } if (auth_stmt->subject) { saml_subject_to_om(auth_stmt->subject, n, env); } if (auth_stmt->ip || auth_stmt->dns) { ns = axiom_namespace_create(env, SAML_NMSP_URI, SAML_PREFIX); ce = axiom_element_create(env, n, SAML_SUBJECT_LOCALITY, ns, &cn); if (auth_stmt->ip) { attr = axiom_attribute_create(env, SAML_IP_ADDRESS, auth_stmt->ip, NULL); axiom_element_add_attribute(ce, env, attr, cn); } if (auth_stmt->dns) { attr = axiom_attribute_create(env, SAML_DNS_ADDRESS, auth_stmt->dns, NULL); axiom_element_add_attribute(ce, env, attr, cn); } } if (auth_stmt->auth_binding) { size = axutil_array_list_size(auth_stmt->auth_binding, env); for (i = 0; i < size; i++) { auth_bind = axutil_array_list_get(auth_stmt->auth_binding, env, i); saml_auth_binding_to_om(auth_bind, n, env); } } } return n; } AXIS2_EXTERN saml_subject_t * AXIS2_CALL saml_auth_stmt_get_subject(saml_auth_stmt_t *auth_stmt, const axutil_env_t *env) { return auth_stmt->subject; } AXIS2_EXTERN axis2_char_t * AXIS2_CALL saml_auth_stmt_get_auth_method(saml_auth_stmt_t *auth_stmt, const axutil_env_t *env) { return auth_stmt->auth_method; } AXIS2_EXTERN axutil_date_time_t * AXIS2_CALL saml_auth_stmt_get_auth_instant(saml_auth_stmt_t *auth_stmt, const axutil_env_t *env) { return auth_stmt->auth_instanse; } AXIS2_EXTERN axutil_array_list_t * AXIS2_CALL saml_auth_stmt_get_auth_bindings(saml_auth_stmt_t *auth_stmt, const axutil_env_t *env) { return auth_stmt->auth_binding; } AXIS2_EXTERN axis2_char_t * AXIS2_CALL saml_auth_stmt_get_subject_ip(saml_auth_stmt_t *auth_stmt, const axutil_env_t *env) { return auth_stmt->ip; } AXIS2_EXTERN axis2_char_t * AXIS2_CALL saml_auth_stmt_get_subject_dns(saml_auth_stmt_t *auth_stmt, const axutil_env_t *env) { return auth_stmt->dns; } AXIS2_EXTERN int AXIS2_CALL saml_auth_stmt_set_auth_method(saml_auth_stmt_t *auth_stmt, const axutil_env_t *env, axis2_char_t *method) { if (auth_stmt->auth_method) { AXIS2_FREE(env->allocator, auth_stmt->auth_method); } auth_stmt->auth_method = axutil_strdup(env, method); return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL saml_auth_stmt_set_auth_instant(saml_auth_stmt_t *auth_stmt, const axutil_env_t *env, axutil_date_time_t *dt) { if (auth_stmt->auth_instanse) { axutil_date_time_free(auth_stmt->auth_instanse, env); } auth_stmt->auth_instanse = dt; return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL saml_auth_stmt_set_auth_bindings(saml_auth_stmt_t *auth_stmt, const axutil_env_t *env, axutil_array_list_t *list) { int i = 0, size = 0; saml_auth_binding_t *bind = NULL; if (auth_stmt->auth_binding) { size = axutil_array_list_size(auth_stmt->auth_binding, env); for (i = 0; i auth_binding, env, i); if (bind) { saml_auth_binding_free(bind, env); } } } auth_stmt->auth_binding = list; return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL saml_auth_stmt_add_auth_binding(saml_auth_stmt_t *auth_stmt, const axutil_env_t *env, saml_auth_binding_t *bind) { if (!auth_stmt->auth_binding) { auth_stmt->auth_binding = axutil_array_list_create(env, SAML_ARRAY_LIST_DEF); } axutil_array_list_add(auth_stmt->auth_binding, env, bind); return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL saml_auth_stmt_remove_auth_binding(saml_auth_stmt_t *auth_stmt, const axutil_env_t *env, int index) { saml_auth_binding_t *bind = NULL; if (auth_stmt->auth_binding && axutil_array_list_size(auth_stmt->auth_binding, env) > index) { bind = axutil_array_list_remove(auth_stmt->auth_binding, env, index); if (bind) { saml_auth_binding_free(bind, env); } return AXIS2_SUCCESS; } else { return AXIS2_FAILURE; } } AXIS2_EXTERN int AXIS2_CALL saml_auth_stmt_set_subject_ip(saml_auth_stmt_t *auth_stmt, const axutil_env_t *env, axis2_char_t *ip) { if (auth_stmt->ip) { AXIS2_FREE(env->allocator, auth_stmt->ip); } auth_stmt->ip = axutil_strdup(env, ip); return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL saml_auth_stmt_set_subject_dns(saml_auth_stmt_t *auth_stmt, const axutil_env_t *env, axis2_char_t *dns) { if (auth_stmt->dns) { AXIS2_FREE(env->allocator, auth_stmt->dns); } auth_stmt->dns = axutil_strdup(env, dns); return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL saml_auth_stmt_set_subject(saml_auth_stmt_t *auth_stmt, const axutil_env_t *env, saml_subject_t *subject) { if (auth_stmt->subject) { saml_subject_free(auth_stmt->subject, env); } auth_stmt->subject = subject; return AXIS2_SUCCESS; } AXIS2_EXTERN saml_subject_locality_t * AXIS2_CALL saml_subject_locality_create(const axutil_env_t *env) { saml_subject_locality_t *sub_locality = AXIS2_MALLOC(env->allocator, sizeof(saml_subject_locality_t)); if (sub_locality) { sub_locality->ip = NULL; sub_locality->dns = NULL; return sub_locality; } return NULL; } AXIS2_EXTERN void AXIS2_CALL saml_subject_locality_free(saml_subject_locality_t *sub_locality, const axutil_env_t *env) { if (sub_locality->dns) { AXIS2_FREE(env->allocator, sub_locality->dns); } if (sub_locality->ip) { AXIS2_FREE(env->allocator, sub_locality->ip); } AXIS2_FREE(env->allocator, sub_locality); } AXIS2_EXTERN int AXIS2_CALL saml_subject_locality_build(saml_subject_locality_t *sub_locality, axiom_node_t *node, const axutil_env_t *env) { axutil_hash_t *attr_hash = NULL; axiom_element_t *element = NULL; axutil_hash_index_t *hi = NULL; if (axiom_node_get_node_type(node, env) != AXIOM_ELEMENT || (element = (axiom_element_t *)axiom_node_get_data_element(node, env)) == NULL) { return AXIS2_FAILURE; } attr_hash = axiom_element_get_all_attributes(element, env); for (hi = axutil_hash_first(attr_hash, env); hi; hi = axutil_hash_next(env, hi)) { void *v = NULL; axutil_hash_this(hi, NULL, NULL, &v); if (v) { axis2_char_t *attr_val = NULL; axis2_char_t *attr_lname = NULL; axiom_attribute_t *attr = (axiom_attribute_t*)v; attr_val = axiom_attribute_get_value(attr, env); attr_lname = axiom_attribute_get_localname(attr, env); if (0 == axutil_strcmp(attr_lname, SAML_IP_ADDRESS)) { sub_locality->ip = attr_val; } else if (0 == axutil_strcmp(attr_lname, SAML_DNS_ADDRESS)) { sub_locality->dns = attr_val; } else { return AXIS2_FAILURE; } } } return AXIS2_SUCCESS; } AXIS2_EXTERN axiom_node_t * AXIS2_CALL saml_subject_locality_to_om(saml_subject_locality_t *sub_locality, axiom_node_t *parent, const axutil_env_t *env) { axiom_element_t *e = NULL; axiom_node_t *n = NULL; axiom_attribute_t *attr = NULL; axiom_namespace_t *ns = NULL; ns = axiom_namespace_create(env, SAML_NMSP_URI, SAML_PREFIX); e = axiom_element_create(env, parent, SAML_SUBJECT_LOCALITY, ns, &n); if (e) { if (sub_locality->dns) { attr = axiom_attribute_create(env, SAML_DNS_ADDRESS, sub_locality->dns, NULL); axiom_element_add_attribute(e, env, attr, n); } if (sub_locality->ip) { attr = axiom_attribute_create(env, SAML_IP_ADDRESS, sub_locality->ip, NULL); axiom_element_add_attribute(e, env, attr, n); } } return n; } AXIS2_EXTERN saml_auth_binding_t * AXIS2_CALL saml_auth_binding_create(const axutil_env_t *env) { saml_auth_binding_t *auth_bind = AXIS2_MALLOC(env->allocator, sizeof(saml_auth_binding_t)); if (auth_bind) { auth_bind->auth_kind = NULL; auth_bind->binding = NULL; auth_bind->location = NULL; return auth_bind; } return NULL; } AXIS2_EXTERN void AXIS2_CALL saml_auth_binding_free(saml_auth_binding_t *auth_bind, const axutil_env_t *env) { if (auth_bind->auth_kind) { AXIS2_FREE(env->allocator, auth_bind->auth_kind); } if (auth_bind->binding) { AXIS2_FREE(env->allocator, auth_bind->binding); } if (auth_bind->location) { AXIS2_FREE(env->allocator, auth_bind->location); } AXIS2_FREE(env->allocator, auth_bind); } AXIS2_EXTERN int AXIS2_CALL saml_auth_binding_build(saml_auth_binding_t *auth_bind, axiom_node_t *node, const axutil_env_t *env) { axiom_element_t *element = NULL; if (axiom_node_get_node_type(node, env) != AXIOM_ELEMENT || (element = (axiom_element_t *)axiom_node_get_data_element(node, env)) == NULL) { return AXIS2_FAILURE; } if ((auth_bind->auth_kind = axiom_element_get_attribute_value_by_name(element, env, SAML_AUTHORITY_KIND)) == NULL || (auth_bind->binding = axiom_element_get_attribute_value_by_name(element, env, SAML_BINDING)) == NULL || (auth_bind->location = axiom_element_get_attribute_value_by_name(element, env, SAML_LOCATION)) == NULL) { return AXIS2_FAILURE; } return AXIS2_SUCCESS; } AXIS2_EXTERN axiom_node_t * AXIS2_CALL saml_auth_binding_to_om(saml_auth_binding_t *auth_binding, axiom_node_t *parent, const axutil_env_t *env) { axiom_element_t *e = NULL; axiom_node_t *n = NULL; axiom_attribute_t *attr = NULL; axiom_namespace_t *ns = NULL; ns = axiom_namespace_create(env, SAML_NMSP_URI, SAML_PREFIX); e = axiom_element_create(env, parent, SAML_AUTHORITY_BINDING, ns, &n); if (e) { if (auth_binding->auth_kind && auth_binding->binding && auth_binding->location) { attr = axiom_attribute_create(env, SAML_AUTHORITY_KIND, auth_binding->auth_kind, NULL); axiom_element_add_attribute(e, env, attr, n); attr = axiom_attribute_create(env, SAML_BINDING, auth_binding->binding, NULL); axiom_element_add_attribute(e, env, attr, n); attr = axiom_attribute_create(env, SAML_LOCATION, auth_binding->location, NULL); axiom_element_add_attribute(e, env, attr, n); } else { return NULL; } } return n; } AXIS2_EXTERN axis2_char_t * AXIS2_CALL saml_auth_binding_get_authoity_kind(saml_auth_binding_t *auth_binding, const axutil_env_t *env) { return auth_binding->auth_kind; } AXIS2_EXTERN axis2_char_t * AXIS2_CALL saml_auth_binding_get_binding(saml_auth_binding_t *auth_binding, const axutil_env_t *env) { return auth_binding->binding; } AXIS2_EXTERN axis2_char_t * AXIS2_CALL saml_auth_binding_get_location(saml_auth_binding_t *auth_binding, const axutil_env_t *env) { return auth_binding->location; } AXIS2_EXTERN int AXIS2_CALL saml_auth_binding_set_authority_kind(saml_auth_binding_t *auth_binding, const axutil_env_t *env, axis2_char_t *auth_kind) { if (auth_binding->auth_kind) { AXIS2_FREE(env->allocator, auth_binding->auth_kind); } auth_binding->auth_kind = axutil_strdup(env, auth_kind); return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL saml_auth_binding_set_binding(saml_auth_binding_t *auth_binding, const axutil_env_t *env, axis2_char_t *binding) { if (auth_binding->binding) { AXIS2_FREE(env->allocator, auth_binding->binding); } auth_binding->binding = axutil_strdup(env, binding); return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL saml_auth_binding_set_location(saml_auth_binding_t *auth_binding, const axutil_env_t *env, axis2_char_t *location) { if (auth_binding->location) { AXIS2_FREE(env->allocator, auth_binding->location); } auth_binding->location = axutil_strdup(env, location); return AXIS2_SUCCESS; } rampartc-src-1.3.0/src/omxmlsec/saml/response.c0000644000076500007650000004713111202453417021344 0ustar shankarshankar/* * 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. */ #include #include AXIS2_EXTERN saml_status_t* AXIS2_CALL saml_status_create(const axutil_env_t *env) { saml_status_t *status = NULL; status = (saml_status_t*)AXIS2_MALLOC(env->allocator, sizeof(saml_status_t)); if(status) { status->status_value = NULL; status->status_msg = NULL; status->status_code = NULL; status->status_detail = NULL; } return status; } AXIS2_EXTERN void saml_status_free(saml_status_t *status, const axutil_env_t *env) { if(status->status_value) { axutil_qname_free(status->status_value, env); } if(status->status_code) { AXIS2_FREE(env->allocator, status->status_code); } if(status->status_msg) { AXIS2_FREE(env->allocator, status->status_msg); } status->status_detail = NULL; AXIS2_FREE(env->allocator, status); status = NULL; } AXIS2_EXTERN int AXIS2_CALL saml_status_build(saml_status_t *status, axiom_node_t *node, const axutil_env_t *env) { axiom_element_t *element = NULL; axiom_child_element_iterator_t *iterator = NULL; axiom_node_t *child_node; axis2_char_t *qname = NULL; if (axiom_node_get_node_type(node, env) != AXIOM_ELEMENT) { return AXIS2_FAILURE; } if ((element = axiom_node_get_data_element(node, env)) == NULL) { return AXIS2_FAILURE; } iterator = axiom_element_get_child_elements(element, env, node); if(iterator) { while(axiom_child_element_iterator_has_next(iterator, env)) { child_node = axiom_child_element_iterator_next(iterator, env); element = (axiom_element_t *)axiom_node_get_data_element(child_node, env); if(element != NULL && !(axutil_strcmp(axiom_element_get_localname(element, env), SAML_STATUS_CODE))) { qname = axiom_element_get_attribute_value_by_name(element, env, SAML_STATUS_VALUE); if(qname) status->status_value = axutil_qname_create_from_string(env, qname); } else if(element != NULL && !(axutil_strcmp(axiom_element_get_localname(element, env), SAML_STATUS_MESSAGE))) { status->status_msg = axiom_element_get_text(element, env, child_node); } else if(element != NULL && !(axutil_strcmp(axiom_element_get_localname(element, env), SAML_STATUS_DETAIL))) { status->status_detail = child_node; } } return AXIS2_SUCCESS; } return AXIS2_FAILURE; } AXIS2_EXTERN axiom_node_t* AXIS2_CALL saml_status_to_om(saml_status_t *status, axiom_node_t *parent, const axutil_env_t *env) { axiom_element_t *e = NULL, *ce = NULL; axiom_node_t *n = NULL, *cn = NULL; axiom_namespace_t *ns = NULL; axiom_attribute_t *attr = NULL; ns = axiom_namespace_create(env, SAML_PROTOCOL_NMSP, SAML_PROTOCOL_PREFIX); e = axiom_element_create(env, parent, SAML_STATUS, ns, &n); if(e) { if(status->status_detail) { axiom_node_add_child(n, env, status->status_detail); } if(status->status_msg) { ns = axiom_namespace_create(env, SAML_PROTOCOL_NMSP, SAML_PROTOCOL_PREFIX); ce = axiom_element_create(env, n, SAML_STATUS_MESSAGE, ns, &cn); if(ce) { axiom_element_set_text(ce, env, status->status_msg, cn); } } if(status->status_code) { ns = axiom_namespace_create(env, SAML_PROTOCOL_NMSP, SAML_PROTOCOL_PREFIX); ce = axiom_element_create(env, n, SAML_STATUS_CODE, ns, &cn); if(ce) { axiom_element_set_text(ce, env, status->status_code, cn); attr = axiom_attribute_create(env, SAML_STATUS_VALUE,axutil_qname_to_string(status->status_value, env), NULL); axiom_element_add_attribute(ce, env, attr, cn); } } } return n; } AXIS2_EXTERN int AXIS2_CALL saml_status_set_status_value(saml_status_t *status, const axutil_env_t *env, axutil_qname_t *qname) { if(status->status_value) { axutil_qname_free(status->status_value, env); } status->status_value = qname; return AXIS2_SUCCESS; } AXIS2_EXTERN axutil_qname_t* AXIS2_CALL saml_status_get_status_value(saml_status_t *status, const axutil_env_t *env) { if(status) return status->status_value; else return NULL; } AXIS2_EXTERN int AXIS2_CALL saml_status_set_status_msg(saml_status_t *status, const axutil_env_t *env, axis2_char_t *msg) { if(status) { AXIS2_FREE(env->allocator, status->status_msg); } status->status_msg = axutil_strdup(env, msg); return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_char_t* AXIS2_CALL saml_status_get_status_msg(saml_status_t *status, const axutil_env_t *env) { if(status) return status->status_msg; else return NULL; } AXIS2_EXTERN int AXIS2_CALL saml_status_set_status_detail(saml_status_t *status, axiom_node_t *det, const axutil_env_t *env) { if(status->status_detail) { axiom_node_free_tree(status->status_detail, env); } status->status_detail = det; return AXIS2_SUCCESS; } AXIS2_EXTERN axiom_node_t* AXIS2_CALL saml_status_get_status_detail(saml_status_t *status, const axutil_env_t *env) { if(status) return status->status_detail; else return NULL; } AXIS2_EXTERN saml_response_t* saml_response_create(const axutil_env_t *env) { saml_response_t *response = NULL; response = (saml_response_t*)AXIS2_MALLOC(env->allocator, sizeof(saml_response_t)); if(response) { response->response_id = NULL; response->issue_instant = NULL; response->major_version = NULL; response->minor_version = NULL; response->recepient = NULL; response->request_response_id = NULL; response->sig_ctx = NULL; response->status = saml_status_create(env); response->saml_assertions = axutil_array_list_create(env, SAML_ARRAY_LIST_DEF); response->signature = NULL; response->original_xml = NULL; } return response; } AXIS2_EXTERN void saml_response_free(saml_response_t *response, const axutil_env_t *env) { int size =0, i = 0; saml_assertion_t *assertion = NULL; if(response->major_version) { AXIS2_FREE(env->allocator, response->major_version); } if(response->minor_version) { AXIS2_FREE(env->allocator, response->minor_version); } if(response->issue_instant) { axutil_date_time_free(response->issue_instant, env); } if(response->recepient) { AXIS2_FREE(env->allocator, response->recepient); } if(response->response_id) { AXIS2_FREE(env->allocator, response->response_id); } if(response->sig_ctx) { oxs_sign_ctx_free(response->sig_ctx, env); } if(response->status) { saml_status_free(response->status, env); } if(response->request_response_id) { AXIS2_FREE(env->allocator, response->request_response_id); } if(response->saml_assertions) { size = axutil_array_list_size(response->saml_assertions, env); for(i = 0; i < size ; i++) { assertion = (saml_assertion_t*)axutil_array_list_get(response->saml_assertions, env, i); if(assertion) { saml_assertion_free(assertion, env); } } axutil_array_list_free(response->saml_assertions, env); } response->original_xml = NULL; response->signature = NULL; AXIS2_FREE(env->allocator, response); response = NULL; } AXIS2_EXTERN int AXIS2_CALL saml_response_build(saml_response_t *response, axiom_node_t *node, const axutil_env_t *env) { axutil_hash_t *attr_hash = NULL; axiom_element_t *element = NULL; axutil_hash_index_t *hi = NULL; axiom_child_element_iterator_t *iterator = NULL; axiom_node_t *child_node; saml_assertion_t *assertion; if (axiom_node_get_node_type(node, env) != AXIOM_ELEMENT) { return AXIS2_FAILURE; } if ((element = axiom_node_get_data_element(node, env)) == NULL) { return AXIS2_FAILURE; } response->original_xml = node; /* initialize the attributes */ attr_hash = axiom_element_get_all_attributes(element, env); for (hi = axutil_hash_first(attr_hash, env); hi; hi = axutil_hash_next(env, hi)) { void *v = NULL; axutil_hash_this(hi, NULL, NULL, &v); if (v) { axis2_char_t *attr_val = NULL; axiom_attribute_t *attr = (axiom_attribute_t*)v; attr_val = axiom_attribute_get_value(attr, env); if(!axutil_strcmp(axiom_attribute_get_localname(attr, env), SAML_RESPONSE_ID)) { response->response_id= attr_val; } if(!axutil_strcmp(axiom_attribute_get_localname(attr, env), SAML_IN_RESPONSE_TO)) { response->request_response_id = attr_val; } else if(!axutil_strcmp(axiom_attribute_get_localname(attr, env), SAML_MAJORVERSION)) { response->major_version = attr_val; } else if(!axutil_strcmp(axiom_attribute_get_localname(attr, env), SAML_MINORVERSION)) { response->minor_version = attr_val; } else if(!axutil_strcmp(axiom_attribute_get_localname(attr, env), SAML_ISSUE_INSTANT)) { response->issue_instant = axutil_date_time_create(env); axutil_date_time_deserialize_date(response->issue_instant, env, attr_val); } else if(!axutil_strcmp(axiom_attribute_get_localname(attr, env), SAML_RECEPIENT)) { response->recepient = attr_val; } } } iterator = axiom_element_get_child_elements(element, env, node); if(iterator) { while(axiom_child_element_iterator_has_next(iterator, env)) { axis2_char_t *t = NULL; child_node = axiom_child_element_iterator_next(iterator, env); element = (axiom_element_t *)axiom_node_get_data_element(child_node, env); t = axiom_node_to_string(child_node, env); if(element != NULL && !(axutil_strcmp(axiom_element_get_localname(element, env), SAML_SIGNATURE))) { response->signature = child_node; } else if(element != NULL && !(axutil_strcmp(axiom_element_get_localname(element, env), SAML_STATUS))) { response->status = (saml_status_t*)AXIS2_MALLOC(env->allocator, sizeof(saml_status_t)); if(response->status) { saml_status_build(response->status, child_node, env); } } else if(element != NULL && !(axutil_strcmp(axiom_element_get_localname(element, env), SAML_ASSERTION))) { assertion = saml_assertion_create(env); if(assertion) { saml_assertion_build(assertion, child_node, env); axutil_array_list_add(response->saml_assertions, env, assertion); } } } } return AXIS2_SUCCESS; } AXIS2_EXTERN axiom_node_t* AXIS2_CALL saml_response_to_om(saml_response_t *response, axiom_node_t *parent, const axutil_env_t *env) { int size = 0, i = 0; axiom_element_t *e = NULL; axiom_node_t *n = NULL; axiom_namespace_t *ns = NULL; axiom_attribute_t *attr = NULL; saml_assertion_t *assertion = NULL; axis2_char_t *t = NULL; ns = axiom_namespace_create(env, SAML_PROTOCOL_NMSP, SAML_PROTOCOL_PREFIX); e = axiom_element_create(env, parent, SAML_RESPONSE, ns, &n); if(e) { if(response->minor_version && response->issue_instant) { if(!response->response_id) response->response_id = saml_id_generate_random_bytes(env); attr = axiom_attribute_create(env, SAML_RESPONSE_ID, response->response_id, NULL); axiom_element_add_attribute(e, env, attr, n); attr = axiom_attribute_create(env, SAML_MAJORVERSION, SAML_MAJOR_VERSION, NULL); axiom_element_add_attribute(e, env, attr, n); attr = axiom_attribute_create(env, SAML_MINORVERSION, response->minor_version, NULL); axiom_element_add_attribute(e, env, attr, n); attr = axiom_attribute_create(env, SAML_ISSUE_INSTANT, axutil_date_time_serialize_date_time(response->issue_instant, env), NULL); axiom_element_add_attribute(e, env, attr, n); } else { return NULL; } t = axiom_node_to_string(n, env); if(response->request_response_id && response->recepient) { attr = axiom_attribute_create(env, SAML_IN_RESPONSE_TO, response->request_response_id, NULL); axiom_element_add_attribute(e, env, attr, n); attr = axiom_attribute_create(env, SAML_RECEPIENT, response->recepient, NULL); axiom_element_add_attribute(e, env, attr, n); } t = axiom_node_to_string(n, env); if(response->saml_assertions) { size = axutil_array_list_size(response->saml_assertions, env); for(i = 0 ; i < size ; i++) { assertion = (saml_assertion_t*)axutil_array_list_get(response->saml_assertions, env, i); if(assertion) saml_assertion_to_om(assertion, n, env); } } if(response->status) { saml_status_to_om(response->status, n, env); } if(response->sig_ctx) { saml_response_sign(response, n, env); } } return n; } AXIS2_EXTERN axis2_char_t* AXIS2_CALL saml_response_get_id(saml_response_t *response, const axutil_env_t *env) { if(response) { return response->response_id; } else return NULL; } AXIS2_EXTERN int AXIS2_CALL saml_response_set_major_version(saml_response_t *response, const axutil_env_t *env, int version) { if(response->major_version) { AXIS2_FREE(env->allocator,response->major_version); } response->minor_version = AXIS2_MALLOC(env->allocator,8); sprintf(response->major_version, "%d", version); return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL saml_response_set_minor_version(saml_response_t *response, const axutil_env_t *env, int version) { if(response->minor_version) { AXIS2_FREE(env->allocator,response->minor_version); } response->minor_version = AXIS2_MALLOC(env->allocator, 8); sprintf(response->minor_version, "%d", version); return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL saml_response_set_issue_instant(saml_response_t *response, const axutil_env_t *env, axutil_date_time_t *date_time) { if(response->issue_instant) { axutil_date_time_free(response->issue_instant, env); } response->issue_instant = date_time; return AXIS2_SUCCESS; } AXIS2_EXTERN axutil_date_time_t* AXIS2_CALL saml_response_get_issue_instant(saml_response_t *response, const axutil_env_t *env) { if(response) return response->issue_instant; else return NULL; } AXIS2_EXTERN int AXIS2_CALL saml_response_set_recepient(saml_response_t *response, const axutil_env_t *env, axis2_char_t *recepient) { if(response->recepient) { AXIS2_FREE(env->allocator, response->issue_instant); } response->recepient= axutil_strdup(env, recepient); return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_char_t* AXIS2_CALL saml_response_get_recepient(saml_response_t *response, const axutil_env_t *env) { if(response) return response->recepient; else return NULL; } AXIS2_EXTERN int AXIS2_CALL saml_response_set_status(saml_response_t *response, const axutil_env_t *env, saml_status_t *status) { if(response->status) { saml_status_free(response->status, env); } response->status = status; return AXIS2_SUCCESS; } AXIS2_EXTERN saml_status_t* AXIS2_CALL saml_response_get_status(saml_response_t *response, const axutil_env_t *env) { if(response) return response->status; else return NULL; } AXIS2_EXTERN int AXIS2_CALL saml_response_set_assertions(saml_response_t *response, const axutil_env_t *env, axutil_array_list_t *assertions) { int size = 0, i = 0; saml_assertion_t *assert = NULL; if(response->saml_assertions) { size = axutil_array_list_size(response->saml_assertions, env); for(i = 0; i < size; i++) { assert = (saml_assertion_t*)axutil_array_list_get(response->saml_assertions, env, i); if(assert) saml_assertion_free(assert, env); } axutil_array_list_free(response->saml_assertions, env); } response->saml_assertions = assertions; return AXIS2_SUCCESS; } AXIS2_EXTERN axutil_array_list_t* AXIS2_CALL saml_response_get_assertions(saml_response_t *response, const axutil_env_t *env) { if(response) return response->saml_assertions; else return NULL; } AXIS2_EXTERN int AXIS2_CALL saml_response_add_assertion(saml_response_t *response, const axutil_env_t *env, saml_assertion_t *assertion) { if(!response->saml_assertions) { axutil_array_list_create(env, SAML_ARRAY_LIST_DEF); } axutil_array_list_add(response->saml_assertions, env, assertion); return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL saml_response_remove_assertion(saml_response_t *response, const axutil_env_t *env, int index) { saml_assertion_t *assert; if(response->saml_assertions) { assert = axutil_array_list_remove(response->saml_assertions, env, index); if(assert) { saml_assertion_free(assert, env); } } return AXIS2_FAILURE; } AXIS2_EXTERN int AXIS2_CALL saml_response_set_in_reponses_to(saml_response_t *response, const axutil_env_t *env, axis2_char_t *request_response) { if(response->request_response_id) { AXIS2_FREE(env->allocator,response->request_response_id); } response->request_response_id = axutil_strdup(env, request_response); return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_char_t* AXIS2_CALL saml_response_get_in_reponses_to(saml_response_t *response, const axutil_env_t *env) { if(response) return response->request_response_id; else return NULL; } AXIS2_EXTERN int AXIS2_CALL saml_response_set_signature(saml_response_t *response, const axutil_env_t *env, oxs_sign_ctx_t *sig_ctx) { if(response->sig_ctx) { oxs_sign_ctx_free(response->sig_ctx, env); } response->sig_ctx = sig_ctx; return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL saml_response_unset_signature(saml_response_t *response, const axutil_env_t *env) { if(response->sig_ctx) { oxs_sign_ctx_free(response->sig_ctx, env); } response->sig_ctx = NULL; return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL saml_response_sign(saml_response_t *response, axiom_node_t *node, const axutil_env_t *env) { axiom_node_t *n= NULL; axis2_char_t *id = NULL; oxs_sign_part_t* sig_part = NULL; axutil_array_list_t *sig_parts = NULL; int size = 0, i = 0; sig_parts = oxs_sign_ctx_get_sign_parts(response->sig_ctx, env); if(sig_parts) { size = axutil_array_list_size(sig_parts, env); for(i = 0; i < size; i++) { sig_part = axutil_array_list_get(sig_parts, env, i); if(sig_part) { oxs_sign_part_set_node(sig_part, env, node); } } } id = axiom_node_to_string(node, env); oxs_xml_sig_sign(env, response->sig_ctx, node, &n); id = axiom_node_to_string(node, env); id = axiom_node_to_string(n, env); /*Finally build KeyInfo*/ oxs_xml_key_info_build(env, n, oxs_sign_ctx_get_certificate(response->sig_ctx, env), OXS_KIBP_X509DATA_X509CERTIFICATE); return AXIS2_SUCCESS; } AXIS2_EXTERN void AXIS2_CALL saml_response_set_default_signature(saml_response_t *response, const axutil_env_t *env, oxs_sign_ctx_t *sig_ctx) { if(response->sig_ctx) { oxs_sign_ctx_free(response->sig_ctx, env); } response->sig_ctx = sig_ctx; saml_util_set_sig_ctx_defaults(response->sig_ctx, env, SAML_RESPONSE_ID); } AXIS2_EXTERN int AXIS2_CALL saml_status_set_status_code(saml_status_t *status, const axutil_env_t *env, axis2_char_t *code) { if(status->status_code) { AXIS2_FREE(env->allocator, status->status_code); } status->status_code = axutil_strdup(env, code); return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL saml_response_signature_verify(saml_response_t *response, const axutil_env_t *env) { return oxs_xml_sig_verify(env, response->sig_ctx, response->signature, response->original_xml); } AXIS2_EXTERN int AXIS2_CALL saml_response_is_sign_set(saml_response_t *response, const axutil_env_t *env) { if (response->sig_ctx) { return AXIS2_TRUE; } return AXIS2_FALSE; } AXIS2_EXTERN int AXIS2_CALL saml_response_is_signed(saml_response_t *response, const axutil_env_t *env) { if (response->signature) { return AXIS2_TRUE; } return AXIS2_FALSE; } rampartc-src-1.3.0/src/omxmlsec/saml/attr_stmt.c0000644000076500007650000003554211202453417021532 0ustar shankarshankar/* * 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. */ #include AXIS2_EXTERN saml_attr_desig_t * AXIS2_CALL saml_attr_desig_create(const axutil_env_t *env) { saml_attr_desig_t *attr_desig = AXIS2_MALLOC(env->allocator, sizeof(saml_attr_desig_t)); if (attr_desig) { attr_desig->attr_name = NULL; attr_desig->attr_nmsp = NULL; } return attr_desig; } AXIS2_EXTERN void AXIS2_CALL saml_attr_desig_free(saml_attr_desig_t *attr_desig, const axutil_env_t *env) { if (attr_desig->attr_name) { AXIS2_FREE(env->allocator, attr_desig->attr_name); } if (attr_desig->attr_nmsp) { AXIS2_FREE(env->allocator, attr_desig->attr_nmsp); } AXIS2_FREE(env->allocator, attr_desig); } AXIS2_EXTERN int AXIS2_CALL saml_attr_desig_build(saml_attr_desig_t *attr_desig, axiom_node_t *node, const axutil_env_t *env) { axutil_hash_t *attr_hash = NULL; axutil_hash_index_t *hi = NULL; axiom_element_t *element = NULL; if (axiom_node_get_node_type(node, env) != AXIOM_ELEMENT || (element = (axiom_element_t *)axiom_node_get_data_element(node, env)) == NULL) { return AXIS2_FAILURE; } if ((attr_desig->attr_name = axiom_element_get_attribute_value_by_name(element, env, SAML_ATTRIBUTE_NAME)) == NULL || (attr_desig->attr_nmsp = axiom_element_get_attribute_value_by_name(element, env, SAML_ATTRIBUTE_NAMESPACE)) == NULL) { return AXIS2_FAILURE; } attr_hash = axiom_element_get_all_attributes(element, env); for (hi = axutil_hash_first(attr_hash, env); hi != NULL; hi = axutil_hash_next(env, hi)) { void *v = NULL; axutil_hash_this(hi, NULL, NULL, &v); if (v) { axis2_char_t *attr_name = NULL; axiom_attribute_t *attr = (axiom_attribute_t*)v; attr_name = axiom_attribute_get_localname(attr, env); if (0 != axutil_strcmp(attr_name, SAML_ATTRIBUTE_NAME) && 0 != axutil_strcmp(attr_name, SAML_ATTRIBUTE_NAMESPACE)) { return AXIS2_FALSE; } } } return AXIS2_SUCCESS; } AXIS2_EXTERN axiom_node_t * AXIS2_CALL saml_attr_desig_to_om(saml_attr_desig_t *attr_desig, axiom_node_t *parent, const axutil_env_t *env) { axiom_element_t *e = NULL; axiom_node_t *n = NULL; axiom_attribute_t *attr = NULL; axiom_namespace_t *ns = NULL; ns = axiom_namespace_create(env, SAML_NMSP_URI, SAML_PREFIX); e = axiom_element_create(env, parent, SAML_ATTRIBUTE_DESIGNATOR, ns, &n); if (e) { if (attr_desig->attr_name && attr_desig->attr_nmsp) { attr = axiom_attribute_create(env, SAML_ATTRIBUTE_NAME, attr_desig->attr_name, NULL); axiom_element_add_attribute(e, env, attr, n); attr = axiom_attribute_create(env, SAML_ATTRIBUTE_NAMESPACE, attr_desig->attr_nmsp, NULL); axiom_element_add_attribute(e, env, attr, n); } else { return NULL; } } return n; } AXIS2_EXTERN axis2_char_t * AXIS2_CALL saml_attr_desig_get_name(saml_attr_desig_t *attr_desig, const axutil_env_t *env) { return attr_desig->attr_name; } AXIS2_EXTERN axis2_char_t * AXIS2_CALL saml_attr_desig_get_namespace(saml_attr_desig_t *attr_desig, const axutil_env_t *env) { return attr_desig->attr_nmsp; } AXIS2_EXTERN int AXIS2_CALL saml_attr_desig_set_name(saml_attr_desig_t *attr_desig, const axutil_env_t *env, axis2_char_t *name) { if (attr_desig->attr_name) { AXIS2_FREE(env->allocator, name); } attr_desig->attr_name = axutil_strdup(env, name); return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL saml_attr_desig_set_namespace(saml_attr_desig_t *attr_desig, const axutil_env_t *env, axis2_char_t *name_space) { if (attr_desig->attr_nmsp) { AXIS2_FREE(env->allocator, name_space); } attr_desig->attr_nmsp = axutil_strdup(env, name_space); return AXIS2_SUCCESS; } AXIS2_EXTERN saml_attr_t * AXIS2_CALL saml_attr_create(const axutil_env_t *env) { saml_attr_t *attr = AXIS2_MALLOC(env->allocator, sizeof(saml_attr_t)); if (attr) { attr->attr_name = NULL; attr->attr_nmsp = NULL; attr->attr_value = axutil_array_list_create(env, SAML_ARRAY_LIST_DEF); } return attr; } AXIS2_EXTERN void AXIS2_CALL saml_attr_free(saml_attr_t *attr, const axutil_env_t *env) { /*int i = 0; char *val = NULL;*/ if (attr->attr_name) { AXIS2_FREE(env->allocator, attr->attr_name); } if (attr->attr_nmsp) { AXIS2_FREE(env->allocator, attr->attr_nmsp); } if (attr->attr_value) { /*for(i = 0; i < axutil_array_list_size(attr->attr_value, env); i++) { val = axutil_array_list_get(attr->attr_value, env, i); if (val) AXIS2_FREE(env->allocator, val); }*/ axutil_array_list_free(attr->attr_value, env); } AXIS2_FREE(env->allocator, attr); } AXIS2_EXTERN int AXIS2_CALL saml_attr_build(saml_attr_t *attr, axiom_node_t *node, const axutil_env_t *env) { axutil_hash_t *attr_hash = NULL; axutil_hash_index_t *hi = NULL; axiom_element_t *element = NULL; axiom_element_t *fce = NULL; axiom_node_t *fcn = NULL; axiom_child_element_iterator_t *ci = NULL; if (axiom_node_get_node_type(node, env) != AXIOM_ELEMENT || (element = (axiom_element_t *)axiom_node_get_data_element(node, env)) == NULL) { return AXIS2_FAILURE; } if ((attr->attr_name = axiom_element_get_attribute_value_by_name(element, env, SAML_ATTRIBUTE_NAME)) == NULL || (attr->attr_nmsp = axiom_element_get_attribute_value_by_name(element, env, SAML_ATTRIBUTE_NAMESPACE)) == NULL) { return AXIS2_FAILURE; } attr_hash = axiom_element_get_all_attributes(element, env); for (hi = axutil_hash_first(attr_hash, env); hi != NULL; hi = axutil_hash_next(env, hi)) { void *v = NULL; axutil_hash_this(hi, NULL, NULL, &v); if (v) { axis2_char_t *attr_local_name = NULL; axiom_attribute_t *attr = (axiom_attribute_t*)v; attr_local_name = axiom_attribute_get_localname(attr, env); if (0 != axutil_strcmp(attr_local_name, SAML_ATTRIBUTE_NAME) && 0 != axutil_strcmp(attr_local_name, SAML_ATTRIBUTE_NAMESPACE)) { return AXIS2_FALSE; } } } ci = axiom_element_get_child_elements(element, env, node); if (ci) { while(AXIS2_TRUE == axiom_child_element_iterator_has_next(ci, env)) { fcn = axiom_child_element_iterator_next(ci, env); fce = axiom_node_get_data_element(fcn, env); if (strcmp(axiom_element_get_localname(fce, env), SAML_ATTRIBUTE_VALUE) == 0) { axiom_node_t *temp = axiom_node_get_first_child(fcn, env); axutil_array_list_add(attr->attr_value, env, temp); } else { return AXIS2_FAILURE; } } } return AXIS2_SUCCESS; } AXIS2_EXTERN axiom_node_t * AXIS2_CALL saml_attr_to_om(saml_attr_t *sattr, axiom_node_t *parent, const axutil_env_t *env) { int i = 0, size = 0; axiom_element_t *e = NULL, *ce = NULL; axiom_node_t *n = NULL, *cn = NULL; axiom_attribute_t *attr = NULL; axiom_namespace_t *ns = NULL; ns = axiom_namespace_create(env, SAML_NMSP_URI, SAML_PREFIX); e = axiom_element_create(env, parent, SAML_ATTRIBUTE, ns, &n); if (e) { if (sattr->attr_name && sattr->attr_nmsp) { attr = axiom_attribute_create(env, SAML_ATTRIBUTE_NAME, sattr->attr_name, NULL); axiom_element_add_attribute(e, env, attr, n); attr = axiom_attribute_create(env, SAML_ATTRIBUTE_NAMESPACE, sattr->attr_nmsp, NULL); axiom_element_add_attribute(e, env, attr, n); } else { return NULL; } if (sattr->attr_value) { size = axutil_array_list_size(sattr->attr_value, env); for (i = 0; i < size; i++) { ns = axiom_namespace_create(env, SAML_NMSP_URI, SAML_PREFIX); ce = axiom_element_create(env, n, SAML_ATTRIBUTE_VALUE, ns, &cn); if (ce) { axiom_node_add_child(cn, env, (axiom_node_t*)axutil_array_list_get(sattr->attr_value, env, i)); } } } } return n; } AXIS2_EXTERN axis2_char_t * AXIS2_CALL saml_attr_get_name(saml_attr_t *attr_stmt, const axutil_env_t *env) { return attr_stmt->attr_name; } AXIS2_EXTERN axis2_char_t * AXIS2_CALL saml_attr_get_namespace(saml_attr_t *attr_stmt, const axutil_env_t *env) { return attr_stmt->attr_nmsp; } AXIS2_EXTERN int AXIS2_CALL saml_attr_set_name(saml_attr_t *attr_stmt, const axutil_env_t *env, axis2_char_t *name) { if (attr_stmt->attr_name) { AXIS2_FREE(env->allocator, name); } attr_stmt->attr_name = axutil_strdup(env, name); return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL saml_attr_set_namespace(saml_attr_t *attr_stmt, const axutil_env_t *env, axis2_char_t *name_space) { if (attr_stmt->attr_nmsp) { AXIS2_FREE(env->allocator, name_space); } attr_stmt->attr_nmsp = axutil_strdup(env, name_space); return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL saml_attr_set_values(saml_attr_t *attr, const axutil_env_t *env, axutil_array_list_t *list) { /*int i = 0, size = 0; axis2_char_t *val = NULL;*/ if (attr->attr_value) { /*size = axutil_array_list_size(attr->attr_value, env); for (i = 0; i attr_value, env, i); if (val) { AXIS2_FREE(env->allocator, val); } }*/ axutil_array_list_free(attr->attr_value, env); } attr->attr_value = list; return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL saml_attr_remove_value(saml_attr_t *attr, const axutil_env_t *env, int index) { /*axis2_char_t *val = NULL;*/ if (attr->attr_value && axutil_array_list_size(attr->attr_value, env) > index) { axutil_array_list_remove(attr->attr_value, env, index); /*if (attr) { AXIS2_FREE(env->allocator, val); }*/ return AXIS2_SUCCESS; } else { return AXIS2_FAILURE; } } AXIS2_EXTERN int AXIS2_CALL saml_attr_add_value(saml_attr_t *attr, const axutil_env_t *env, axiom_node_t *value) { if (!attr->attr_value) { attr->attr_value = axutil_array_list_create(env, SAML_ARRAY_LIST_DEF); } axutil_array_list_add(attr->attr_value, env, value); return AXIS2_SUCCESS; } AXIS2_EXTERN saml_attr_stmt_t * AXIS2_CALL saml_attr_stmt_create(const axutil_env_t *env) { saml_attr_stmt_t *attr_stmt = AXIS2_MALLOC(env->allocator, sizeof(saml_attr_stmt_t)); if (attr_stmt) { attr_stmt->attribute = axutil_array_list_create(env, SAML_ARRAY_LIST_DEF); attr_stmt->subject = NULL; } return attr_stmt; } AXIS2_EXTERN void AXIS2_CALL saml_attr_stmt_free(saml_attr_stmt_t *attr_stmt, const axutil_env_t *env) { int i = 0, size = 0; saml_attr_t *attr = NULL; if (attr_stmt->attribute) { size = axutil_array_list_size(attr_stmt->attribute, env); for (i = 0; i < size; i++) { attr = axutil_array_list_get(attr_stmt->attribute, env, i); saml_attr_free(attr, env); } } if (attr_stmt->subject) { saml_subject_free(attr_stmt->subject, env); } AXIS2_FREE(env->allocator, attr_stmt); } AXIS2_EXTERN int AXIS2_CALL saml_attr_stmt_build(saml_attr_stmt_t *attr_stmt, axiom_node_t *node, const axutil_env_t *env) { axiom_element_t *element = NULL; axiom_element_t *fce = NULL; axiom_node_t *fcn = NULL; saml_attr_t *attr = NULL; axiom_child_element_iterator_t *ci = NULL; if (axiom_node_get_node_type(node, env) != AXIOM_ELEMENT || (element = (axiom_element_t *)axiom_node_get_data_element(node, env)) == NULL) { return AXIS2_FAILURE; } ci = axiom_element_get_child_elements(element, env, node); if (ci) { while(AXIS2_TRUE == axiom_child_element_iterator_has_next(ci, env)) { fcn = axiom_child_element_iterator_next(ci, env); fce = axiom_node_get_data_element(fcn, env); if (strcmp(axiom_element_get_localname(fce, env), SAML_SUBJECT) == 0) { attr_stmt->subject = saml_subject_create(env); saml_subject_build(attr_stmt->subject, fcn, env); } else if (strcmp(axiom_element_get_localname(fce, env), SAML_ATTRIBUTE) == 0) { attr = saml_attr_create(env); saml_attr_build(attr, fcn, env); axutil_array_list_add(attr_stmt->attribute, env, attr); } else { return AXIS2_FAILURE; } } } return AXIS2_SUCCESS; } AXIS2_EXTERN axiom_node_t * AXIS2_CALL saml_attr_stmt_to_om(saml_attr_stmt_t *attr_stmt, axiom_node_t *parent, const axutil_env_t *env) { int i = 0, size = 0; axiom_element_t *e = NULL; axiom_node_t *n = NULL; axiom_namespace_t *ns = NULL; ns = axiom_namespace_create(env, SAML_NMSP_URI, SAML_PREFIX); e = axiom_element_create(env, parent, SAML_ATTRIBUTE_STATEMENT, ns, &n); if (e) { if (attr_stmt->subject) { saml_subject_to_om(attr_stmt->subject, n, env); } if (attr_stmt->attribute) { size = axutil_array_list_size(attr_stmt->attribute, env); for (i = 0; i < size; i++) { saml_attr_to_om(axutil_array_list_get(attr_stmt->attribute, env, i), n, env); } } } return n; } AXIS2_EXTERN saml_subject_t * AXIS2_CALL saml_attr_stmt_get_subject(saml_attr_stmt_t *attr_stmt, const axutil_env_t *env) { return attr_stmt->subject; } AXIS2_EXTERN axutil_array_list_t * AXIS2_CALL saml_attr_stmt_get_attributes(saml_attr_stmt_t *attr_stmt, const axutil_env_t *env) { return attr_stmt->attribute; } AXIS2_EXTERN int AXIS2_CALL saml_attr_stmt_set_subject(saml_attr_stmt_t *attr_stmt, const axutil_env_t *env, saml_subject_t *subject) { if (attr_stmt->subject) { saml_subject_free(attr_stmt->subject, env); } attr_stmt->subject = subject; return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL saml_attr_stmt_set_attributes(saml_attr_stmt_t *attr_stmt, const axutil_env_t *env, axutil_array_list_t *list) { int i = 0, size = 0; saml_attr_t *attr = NULL; if (attr_stmt->attribute) { size = axutil_array_list_size(attr_stmt->attribute, env); for (i = 0; i attribute, env, i); if (attr) { AXIS2_FREE(env->allocator, attr); } } } attr_stmt->attribute = list; return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL saml_attr_stmt_remove_attribute(saml_attr_stmt_t *attr_stmt, const axutil_env_t *env, int index) { saml_attr_t *attr = NULL; if (attr_stmt->attribute && axutil_array_list_size(attr_stmt->attribute, env) > index) { attr = axutil_array_list_remove(attr_stmt->attribute, env, index); if (attr) { AXIS2_FREE(env->allocator, attr); } return AXIS2_SUCCESS; } else { return AXIS2_FAILURE; } } AXIS2_EXTERN int AXIS2_CALL saml_attr_stmt_add_attribute(saml_attr_stmt_t *attr_stmt, const axutil_env_t *env, saml_attr_t *attribute) { if (!attr_stmt->attribute) { attr_stmt->attribute = axutil_array_list_create(env, SAML_ARRAY_LIST_DEF); } axutil_array_list_add(attr_stmt->attribute, env, attribute); return AXIS2_SUCCESS; } rampartc-src-1.3.0/src/omxmlsec/saml/query.c0000644000076500007650000006752611202453417020665 0ustar shankarshankar/* * 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. */ #include #include AXIS2_EXTERN saml_subject_query_t* AXIS2_CALL saml_subject_query_create(const axutil_env_t *env) { saml_subject_query_t *subject_query = NULL; subject_query = (saml_subject_query_t *)AXIS2_MALLOC(env->allocator, sizeof(saml_subject_query_t)); if(subject_query) { subject_query->subject = saml_subject_create(env); } return subject_query; } AXIS2_EXTERN void AXIS2_CALL saml_subject_query_free(saml_subject_query_t *subject_query, const axutil_env_t *env) { if(subject_query->subject) { saml_subject_free(subject_query->subject, env); } AXIS2_FREE(env->allocator, subject_query); subject_query = NULL; } AXIS2_EXTERN saml_authentication_query_t* AXIS2_CALL saml_authentication_query_create(const axutil_env_t *env) { saml_authentication_query_t *authentication_query = NULL; authentication_query = (saml_authentication_query_t*)AXIS2_MALLOC(env->allocator, sizeof(saml_authentication_query_t)); if(authentication_query) { authentication_query->subject = saml_subject_create(env); authentication_query->auth_method = NULL; } return authentication_query; } AXIS2_EXTERN void AXIS2_CALL saml_authentication_query_free(saml_authentication_query_t *auth_query, const axutil_env_t *env) { if(auth_query->auth_method) { AXIS2_FREE(env->allocator, auth_query->auth_method); } if(auth_query->subject) { saml_subject_free(auth_query->subject, env); } AXIS2_FREE(env->allocator, auth_query); auth_query = NULL; } AXIS2_EXTERN saml_attr_query_t* AXIS2_CALL saml_attr_query_create(const axutil_env_t *env) { saml_attr_query_t *attribute_query = NULL; attribute_query = (saml_attr_query_t *)AXIS2_MALLOC(env->allocator, sizeof(saml_attr_query_t)); if(attribute_query) { attribute_query->resource = NULL; attribute_query->subject = saml_subject_create(env); attribute_query->attr_desigs = axutil_array_list_create(env, SAML_ARRAY_LIST_DEF); } return attribute_query; } AXIS2_EXTERN void AXIS2_CALL saml_attr_query_free(saml_attr_query_t *attr_query, const axutil_env_t *env) { int size = 0, i = 0; saml_attr_desig_t *attr_desig = NULL; if(attr_query->resource) { AXIS2_FREE(env->allocator, attr_query->resource); } if(attr_query->subject) { saml_subject_free(attr_query->subject, env); } if(attr_query->attr_desigs) { size = axutil_array_list_size(attr_query->attr_desigs, env); for(i = 0; i < size; i++) { attr_desig = (saml_attr_desig_t*) axutil_array_list_get(attr_query->attr_desigs, env, i); if(attr_desig) saml_attr_desig_free(attr_desig, env); } axutil_array_list_free(attr_query->attr_desigs, env); } AXIS2_FREE(env->allocator, attr_query); attr_query = NULL; } AXIS2_EXTERN saml_autho_decision_query_t* AXIS2_CALL saml_autho_decision_query_create(const axutil_env_t *env) { saml_autho_decision_query_t *autho_decision_query = NULL; autho_decision_query = (saml_autho_decision_query_t *)AXIS2_MALLOC(env->allocator, sizeof(saml_autho_decision_query_t)); if(autho_decision_query) { autho_decision_query->subject = saml_subject_create(env); autho_decision_query->resource = NULL; autho_decision_query->saml_actions = axutil_array_list_create(env, SAML_ARRAY_LIST_DEF); autho_decision_query->evidence = saml_evidence_create(env); } return autho_decision_query; } AXIS2_EXTERN void AXIS2_CALL saml_autho_decision_query_free(saml_autho_decision_query_t* autho_decision_query, const axutil_env_t *env) { int size = 0, i = 0; saml_action_t *action = NULL; if(autho_decision_query->evidence) { saml_evidence_free(autho_decision_query->evidence, env); } if(autho_decision_query->resource) { AXIS2_FREE(env->allocator, autho_decision_query->resource); } if(autho_decision_query->subject) { saml_subject_free(autho_decision_query->subject, env); } if(autho_decision_query->saml_actions) { size = axutil_array_list_size(autho_decision_query->saml_actions, env); for(i = 0; i < size ; i++) { action = (saml_action_t *)axutil_array_list_get(autho_decision_query->saml_actions, env, i); if(action) saml_action_free(action, env); } axutil_array_list_free(autho_decision_query->saml_actions, env); } AXIS2_FREE(env->allocator, autho_decision_query); autho_decision_query = NULL; } AXIS2_EXTERN int AXIS2_CALL saml_subject_query_build(saml_subject_query_t* subject_query, axiom_node_t *node, const axutil_env_t *env) { axiom_element_t *element = NULL; axiom_child_element_iterator_t *iterator = NULL; axiom_node_t *child_node = NULL; if (axiom_node_get_node_type(node, env) != AXIOM_ELEMENT) { return AXIS2_FAILURE; } if ((element = axiom_node_get_data_element(node, env)) == NULL) { return AXIS2_FAILURE; } iterator = axiom_element_get_child_elements(element, env, node); if(iterator) { while(axiom_child_element_iterator_has_next(iterator, env)) { child_node = axiom_child_element_iterator_next(iterator, env); element = (axiom_element_t *)axiom_node_get_data_element(child_node, env); if(element != NULL && !(axutil_strcmp(axiom_element_get_localname(element, env), SAML_SUBJECT))) { if(subject_query->subject) return saml_subject_build(subject_query->subject, child_node, env); else return AXIS2_FAILURE; /*subject query saml subject does not exist*/ } } return AXIS2_SUCCESS; } else return AXIS2_FAILURE; } AXIS2_EXTERN axiom_node_t* AXIS2_CALL saml_subject_query_to_om(saml_subject_query_t *subject_query, axiom_node_t *parent, const axutil_env_t *env) { axiom_element_t *e = NULL; axiom_node_t *n = NULL; axiom_namespace_t *ns = NULL; ns = axiom_namespace_create(env, SAML_PROTOCOL_NMSP, SAML_PROTOCOL_PREFIX); e = axiom_element_create(env, parent, SAML_SUBJECT_QUERY, ns, &n); if(e) { if(subject_query->subject) saml_subject_to_om(subject_query->subject, n, env); } return n; } AXIS2_EXTERN int AXIS2_CALL saml_authentication_query_build(saml_authentication_query_t* authentication_query, axiom_node_t *node, const axutil_env_t *env) { axutil_hash_t *attr_hash = NULL; axiom_element_t *element = NULL; axutil_hash_index_t *hi = NULL; axiom_child_element_iterator_t *iterator = NULL; axiom_node_t *child_node; if (axiom_node_get_node_type(node, env) != AXIOM_ELEMENT) { return AXIS2_FAILURE; } if ((element = axiom_node_get_data_element(node, env)) == NULL) { return AXIS2_FAILURE; } /* initialize the attributes */ attr_hash = axiom_element_get_all_attributes(element, env); if(attr_hash) { for (hi = axutil_hash_first(attr_hash, env); hi; hi = axutil_hash_next(env, hi)) { void *v = NULL; axutil_hash_this(hi, NULL, NULL, &v); if (v) { axis2_char_t *attr_val = NULL; axiom_attribute_t *attr = (axiom_attribute_t*)v; attr_val = axiom_attribute_get_value(attr, env); if(!axutil_strcmp(axiom_attribute_get_localname(attr, env), SAML_AUTHENTICATION_METHOD)) { authentication_query->auth_method = attr_val; break; } } } } iterator = axiom_element_get_child_elements(element, env, node); if(iterator) { while(axiom_child_element_iterator_has_next(iterator, env)) { child_node = axiom_child_element_iterator_next(iterator, env); element = (axiom_element_t *)axiom_node_get_data_element(child_node, env); if(element != NULL && !(axutil_strcmp(axiom_element_get_localname(element, env), SAML_SUBJECT))) { if(authentication_query->subject) return saml_subject_build(authentication_query->subject, child_node, env); else return AXIS2_FAILURE; } } return AXIS2_SUCCESS; } else return AXIS2_FAILURE; } AXIS2_EXTERN axiom_node_t* AXIS2_CALL saml_authentication_query_to_om(saml_authentication_query_t *authentication_query, axiom_node_t *parent, const axutil_env_t *env) { axiom_element_t *e = NULL; axiom_node_t *n = NULL; axiom_namespace_t *ns = NULL; axiom_attribute_t *attr = NULL; ns = axiom_namespace_create(env, SAML_PROTOCOL_NMSP, SAML_PROTOCOL_PREFIX); e = axiom_element_create(env, parent, SAML_AUTHENTICATION_QUERY, ns, &n); if(e) { if(authentication_query->subject) saml_subject_to_om(authentication_query->subject, n, env); if(authentication_query->auth_method) { attr = axiom_attribute_create(env, SAML_AUTHENTICATION_METHOD, authentication_query->auth_method, NULL); axiom_element_add_attribute(e, env, attr, n); } } return n; } AXIS2_EXTERN int AXIS2_CALL saml_autho_decision_query_build(saml_autho_decision_query_t* autho_decision_query, axiom_node_t *node, const axutil_env_t *env) { axutil_hash_t *attr_hash = NULL; axiom_element_t *element = NULL; axutil_hash_index_t *hi = NULL; axiom_child_element_iterator_t *iterator = NULL; axiom_node_t *child_node; saml_action_t *action; if (axiom_node_get_node_type(node, env) != AXIOM_ELEMENT) { return AXIS2_FAILURE; } if ((element = axiom_node_get_data_element(node, env)) == NULL) { return AXIS2_FAILURE; } /* initialize the attributes */ attr_hash = axiom_element_get_all_attributes(element, env); for (hi = axutil_hash_first(attr_hash, env); hi; hi = axutil_hash_next(env, hi)) { void *v = NULL; axutil_hash_this(hi, NULL, NULL, &v); if (v) { axis2_char_t *attr_val = NULL; axiom_attribute_t *attr = (axiom_attribute_t*)v; attr_val = axiom_attribute_get_value(attr, env); if(!axutil_strcmp(axiom_attribute_get_localname(attr, env), SAML_RESOURCE)) { if(autho_decision_query->resource) { autho_decision_query->resource = attr_val; break; } else return AXIS2_FAILURE; } } } iterator = axiom_element_get_child_elements(element, env, node); if(iterator) { while(axiom_child_element_iterator_has_next(iterator, env)) { child_node = axiom_child_element_iterator_next(iterator, env); element = (axiom_element_t *)axiom_node_get_data_element(child_node, env); if(element != NULL && !(axutil_strcmp(axiom_element_get_localname(element, env), SAML_SUBJECT))) { if(autho_decision_query->subject) saml_subject_build(autho_decision_query->subject, child_node, env); } else if(element != NULL && !(axutil_strcmp(axiom_element_get_localname(element, env), SAML_ACTION))) { if(autho_decision_query->saml_actions) { action = saml_action_create(env); saml_action_build(action, child_node, env); axutil_array_list_add(autho_decision_query->saml_actions, env, action); } } else if(element != NULL && !(axutil_strcmp(axiom_element_get_localname(element, env), SAML_EVIDENCE))) { if(autho_decision_query->evidence) saml_evidence_build(autho_decision_query->evidence, child_node, env); } } return AXIS2_SUCCESS; } else return AXIS2_FAILURE; } AXIS2_EXTERN axiom_node_t* AXIS2_CALL saml_autho_decision_query_to_om(saml_autho_decision_query_t *autho_decision_query, axiom_node_t *parent, const axutil_env_t *env) { int size = 0, i = 0; axiom_element_t *e = NULL; axiom_node_t *n = NULL; axiom_namespace_t *ns = NULL; axiom_attribute_t *attr = NULL; saml_action_t *action; ns = axiom_namespace_create(env, SAML_PROTOCOL_NMSP, SAML_PROTOCOL_PREFIX); e = axiom_element_create(env, parent, SAML_AUTHORIZATION_DECISION_QUERY, ns, &n); if(e) { if(autho_decision_query->subject) saml_subject_to_om(autho_decision_query->subject, n, env); if(autho_decision_query->resource) { attr = axiom_attribute_create(env, SAML_RESOURCE, autho_decision_query->resource, NULL); axiom_element_add_attribute(e, env, attr, n); } if(autho_decision_query->saml_actions) { size = axutil_array_list_size(autho_decision_query->saml_actions, env); for(i = 0 ; i < size ; i++) { action = (saml_action_t*)axutil_array_list_get(autho_decision_query->saml_actions, env, i); saml_action_to_om(action, n, env); } } if(autho_decision_query->evidence) { saml_evidence_to_om(autho_decision_query->evidence, n, env); } } return n; } AXIS2_EXTERN int AXIS2_CALL saml_attr_query_build(saml_attr_query_t* attribute_query, axiom_node_t *node, const axutil_env_t *env) { axutil_hash_t *attr_hash = NULL; axiom_element_t *element = NULL; axutil_hash_index_t *hi = NULL; axiom_child_element_iterator_t *iterator = NULL; axiom_node_t *child_node; saml_attr_desig_t *attr_desig = NULL; if (axiom_node_get_node_type(node, env) != AXIOM_ELEMENT) { return AXIS2_FAILURE; } if ((element = axiom_node_get_data_element(node, env)) == NULL) { return AXIS2_FAILURE; } /* initialize the attributes */ attr_hash = axiom_element_get_all_attributes(element, env); /*One resource attribute relate to the attibute query*/ for (hi = axutil_hash_first(attr_hash, env); hi; hi = axutil_hash_next(env, hi)) { void *v = NULL; axutil_hash_this(hi, NULL, NULL, &v); if (v) { axis2_char_t *attr_val = NULL; axiom_attribute_t *attr = (axiom_attribute_t*)v; attr_val = axiom_attribute_get_value(attr, env); if(!axutil_strcmp(axiom_attribute_get_localname(attr, env),SAML_RESOURCE)) { attribute_query->resource = attr_val; break; } } } iterator = axiom_element_get_child_elements(element, env, node); if(iterator) { while(axiom_child_element_iterator_has_next(iterator, env)) { child_node = axiom_child_element_iterator_next(iterator, env); element = (axiom_element_t *)axiom_node_get_data_element(child_node, env); if(element != NULL && !(axutil_strcmp(axiom_element_get_localname(element, env), SAML_SUBJECT))) { if(attribute_query->subject) saml_subject_build(attribute_query->subject, child_node, env); } else if(element != NULL && !(axutil_strcmp(axiom_element_get_localname(element, env), SAML_ATTRIBUTE_DESIGNATOR))) { /*attr_desig = saml_attr_desig_create(env); */ attr_desig = (saml_attr_desig_t*)AXIS2_MALLOC(env->allocator, sizeof(saml_attr_desig_t)); if( AXIS2_SUCCESS == saml_attr_desig_build(attr_desig, child_node, env)) { axutil_array_list_add(attribute_query->attr_desigs,env, attr_desig); } } } return AXIS2_SUCCESS; } else return AXIS2_FAILURE; } AXIS2_EXTERN axiom_node_t* AXIS2_CALL saml_attr_query_to_om(saml_attr_query_t *attribute_query, axiom_node_t *parent, const axutil_env_t *env) { int size = 0, i = 0; axiom_element_t *e = NULL; axiom_node_t *n = NULL; axiom_namespace_t *ns = NULL; axiom_attribute_t *attr = NULL; saml_attr_desig_t *attr_desig = NULL; ns = axiom_namespace_create(env, SAML_PROTOCOL_NMSP, SAML_PROTOCOL_PREFIX); e = axiom_element_create(env, parent, SAML_ATTRIBUTE_QUERY, ns, &n); if(e) { if(attribute_query->subject) saml_subject_to_om(attribute_query->subject, n, env); if(attribute_query->resource) { attr = axiom_attribute_create(env, SAML_RESOURCE, attribute_query->resource, NULL); axiom_element_add_attribute(e, env, attr, n); } if(attribute_query->attr_desigs) { size = axutil_array_list_size(attribute_query->attr_desigs, env); for( i=0 ; i < size ; i++) { attr_desig = (saml_attr_desig_t*)axutil_array_list_get(attribute_query->attr_desigs, env, i); saml_attr_desig_to_om(attr_desig, n, env); } } } return n; } AXIS2_EXTERN int AXIS2_CALL saml_query_build(saml_query_t *query, axiom_node_t *node, const axutil_env_t *env) { if(!axutil_strcmp(query->type,SAML_SUBJECT_QUERY)) { query->query = saml_subject_query_create(env); if(query->query) { saml_subject_query_build((saml_subject_query_t*)query->query, node, env); return AXIS2_SUCCESS; } else return AXIS2_FAILURE; } if(!axutil_strcmp(query->type, SAML_AUTHENTICATION_QUERY)) { query->query = saml_authentication_query_create(env); if(query->query) { saml_authentication_query_build((saml_authentication_query_t*)query->query, node, env); return AXIS2_SUCCESS; } else return AXIS2_FAILURE; } if(!axutil_strcmp(query->type, SAML_ATTRIBUTE_QUERY)) { query->query = saml_attr_query_create(env); if(query->query) { saml_attr_query_build((saml_attr_query_t*)query->query, node, env); return AXIS2_SUCCESS; } else return AXIS2_FAILURE; } if(!axutil_strcmp(query->type, SAML_AUTHORIZATION_DECISION_QUERY)) { query->query = saml_autho_decision_query_create(env); if(query->query) { saml_autho_decision_query_build((saml_autho_decision_query_t*)query->query, node, env); return AXIS2_SUCCESS; } else return AXIS2_FAILURE; } else return AXIS2_FAILURE; } AXIS2_EXTERN saml_query_t* AXIS2_CALL saml_query_create(const axutil_env_t *env) { saml_query_t* query = NULL; query = AXIS2_MALLOC(env->allocator, sizeof(saml_query_t)); if(query) { query->query = NULL; query->type = NULL; } return query; } AXIS2_EXTERN void AXIS2_CALL saml_query_free(saml_query_t *query, const axutil_env_t *env) { if(query->type) { if(!axutil_strcmp(query->type,SAML_SUBJECT_QUERY)) { if(query->query) { saml_subject_query_free(query->query, env); } } if(!axutil_strcmp(query->type, SAML_AUTHENTICATION_QUERY)) { if(query->query) { saml_authentication_query_free(query->query, env); } } if(!axutil_strcmp(query->type, SAML_ATTRIBUTE_QUERY)) { if(query->query) { saml_attr_query_free(query->query, env); } } if(!axutil_strcmp(query->type, SAML_AUTHORIZATION_DECISION_QUERY)) { if(query->query) { saml_autho_decision_query_free(query->query, env); } } AXIS2_FREE(env->allocator, query->type); AXIS2_FREE(env->allocator, query); query = NULL; } } AXIS2_EXTERN axiom_node_t* AXIS2_CALL saml_query_to_om(saml_query_t *query, axiom_node_t *parent, const axutil_env_t *env) { if(!axutil_strcmp(query->type,SAML_SUBJECT_QUERY)) { return saml_subject_query_to_om((saml_subject_query_t*)query->query, parent, env); } if(!axutil_strcmp(query->type, SAML_AUTHENTICATION_QUERY)) { return saml_authentication_query_to_om((saml_authentication_query_t*)query->query, parent, env); } if(!axutil_strcmp(query->type, SAML_ATTRIBUTE_QUERY)) { return saml_attr_query_to_om((saml_attr_query_t*)query->query, parent, env); } if(!axutil_strcmp(query->type, SAML_AUTHORIZATION_DECISION_QUERY)) { return saml_autho_decision_query_to_om((saml_autho_decision_query_t*)query->query, parent, env); } return NULL; } AXIS2_EXTERN int AXIS2_CALL saml_auth_query_set_authentication_method(saml_authentication_query_t *authentication_query, const axutil_env_t *env, axis2_char_t *authentication_mtd) { if(authentication_query->auth_method) { AXIS2_FREE(env->allocator, authentication_query->auth_method); } authentication_query->auth_method = axutil_strdup(env, authentication_mtd); return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL saml_attr_query_set_resource(saml_attr_query_t *attr_query, const axutil_env_t *env, axis2_char_t *resource) { if(attr_query->resource) { AXIS2_FREE(env->allocator, attr_query->resource); } attr_query->resource = axutil_strdup(env, resource); return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_char_t* AXIS2_CALL saml_auth_query_get_authentication_method(saml_authentication_query_t *authentication_query, const axutil_env_t *env) { if(authentication_query) return authentication_query->auth_method; else return NULL; } AXIS2_EXTERN axis2_char_t* AXIS2_CALL saml_attr_query_get_resource(saml_attr_query_t *attr_query, const axutil_env_t *env) { if(attr_query) return attr_query->resource; else return NULL; } AXIS2_EXTERN int AXIS2_CALL saml_attr_query_set_designators(saml_attr_query_t *attr_query, const axutil_env_t *env, axutil_array_list_t *attr_desigs) { if(attr_query->attr_desigs) { axutil_array_list_free(attr_query->attr_desigs, env); } attr_query->attr_desigs = attr_desigs; return AXIS2_SUCCESS; } AXIS2_EXTERN axutil_array_list_t* AXIS2_CALL saml_attr_query_get_designators(saml_attr_query_t *attr_query, const axutil_env_t *env) { if(attr_query) return attr_query->attr_desigs; else return NULL; } AXIS2_EXTERN int AXIS2_CALL saml_attr_query_add_designators(saml_attr_query_t *attr_query, const axutil_env_t *env, saml_attr_desig_t *desig) { if(!attr_query->attr_desigs) { axutil_array_list_create(env, SAML_ARRAY_LIST_DEF); } axutil_array_list_add(attr_query->attr_desigs, env, desig); return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL saml_attr_query_remove_designator(saml_attr_query_t *attr_query, const axutil_env_t *env, int index) { saml_attr_desig_t *desig; if(attr_query->attr_desigs) { desig = axutil_array_list_remove(attr_query->attr_desigs, env, index); if(desig) { saml_attr_desig_free(desig, env); return AXIS2_SUCCESS; } } return AXIS2_FAILURE; } AXIS2_EXTERN int AXIS2_CALL saml_autho_decision_query_set_resource(saml_autho_decision_query_t *autho_dec_query, const axutil_env_t *env, axis2_char_t *resource) { if(autho_dec_query->resource) { AXIS2_FREE(env->allocator, autho_dec_query->resource); } autho_dec_query->resource = axutil_strdup(env, resource); return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_char_t* AXIS2_CALL saml_autho_decision_query_get_resource(saml_autho_decision_query_t *autho_dec_query, const axutil_env_t *env) { if(autho_dec_query) return autho_dec_query->resource; else return NULL; } AXIS2_EXTERN int AXIS2_CALL saml_autho_decision_query_set_actions(saml_autho_decision_query_t *autho_dec_query, const axutil_env_t *env, axutil_array_list_t *actions) { if(autho_dec_query->saml_actions) { axutil_array_list_free(autho_dec_query->saml_actions, env); } autho_dec_query->saml_actions = actions; return AXIS2_SUCCESS; } AXIS2_EXTERN axutil_array_list_t* AXIS2_CALL saml_autho_decision_query_get_actions(saml_autho_decision_query_t *autho_dec_query, const axutil_env_t *env) { if(autho_dec_query) return autho_dec_query->saml_actions; else return NULL; } AXIS2_EXTERN int AXIS2_CALL saml_autho_decision_query_add_action(saml_autho_decision_query_t *autho_dec_query, const axutil_env_t *env, saml_action_t *action) { if(!autho_dec_query->saml_actions) { autho_dec_query->saml_actions = axutil_array_list_create(env, SAML_ARRAY_LIST_DEF); } if(autho_dec_query->saml_actions) { axutil_array_list_add(autho_dec_query->saml_actions, env, action); return AXIS2_SUCCESS; } return AXIS2_FAILURE; } AXIS2_EXTERN int AXIS2_CALL saml_autho_decision_remove_action(saml_autho_decision_query_t *autho_dec_query, const axutil_env_t *env, int index) { saml_action_t *act; if(autho_dec_query->saml_actions) { act = axutil_array_list_remove(autho_dec_query->saml_actions, env, index); if(act) { saml_action_free(act, env); return AXIS2_SUCCESS; } } return AXIS2_FAILURE; } AXIS2_EXTERN int AXIS2_CALL saml_autho_decision_query_set_evidence(saml_autho_decision_query_t *autho_dec_query, const axutil_env_t *env, saml_evidence_t *evidence) { if(autho_dec_query->evidence) { saml_evidence_free(autho_dec_query->evidence, env); } autho_dec_query->evidence = evidence; return AXIS2_FAILURE; } AXIS2_EXTERN saml_evidence_t* AXIS2_CALL saml_autho_decision_query_get_evidence(saml_autho_decision_query_t *autho_dec_query, const axutil_env_t *env) { if(autho_dec_query) return autho_dec_query->evidence; else return NULL; } AXIS2_EXTERN int AXIS2_CALL saml_query_set_subject(saml_query_t* query, const axutil_env_t *env, saml_subject_t *subject) { saml_subject_query_t *sub_q = NULL; saml_authentication_query_t *authent_q; saml_autho_decision_query_t *autho_de_q; saml_attr_query_t *attr_q; if(query) { if(query->type) { if(!axutil_strcmp(query->type,SAML_SUBJECT_QUERY)) { sub_q = (saml_subject_query_t*)query->query; if(sub_q) { if(sub_q->subject) { saml_subject_free(sub_q->subject, env); } sub_q->subject = subject; } } if(!axutil_strcmp(query->type, SAML_AUTHENTICATION_QUERY)) { authent_q = (saml_authentication_query_t*)query->query; if(authent_q->subject) { saml_subject_free(authent_q->subject, env); } authent_q->subject = subject; } if(!axutil_strcmp(query->type, SAML_ATTRIBUTE_QUERY)) { attr_q = (saml_attr_query_t*)query->query; if(attr_q) { saml_subject_free(attr_q->subject, env); } attr_q->subject = subject; } if(!axutil_strcmp(query->type, SAML_AUTHORIZATION_DECISION_QUERY)) { autho_de_q = (saml_autho_decision_query_t*)query->query; if(autho_de_q) { saml_subject_free(autho_de_q->subject, env); } autho_de_q->subject = subject; } } } return AXIS2_SUCCESS; } AXIS2_EXTERN saml_subject_t* AXIS2_CALL saml_query_get_subject(saml_query_t* query, const axutil_env_t *env) { saml_subject_query_t *sub_q = NULL; saml_authentication_query_t *authent_q; saml_autho_decision_query_t *autho_de_q; saml_attr_query_t *attr_q; if(query) { if(query->type) { if(!axutil_strcmp(query->type,SAML_SUBJECT_QUERY)) { sub_q = (saml_subject_query_t*)query->query; if(sub_q) return sub_q->subject; else return NULL; } if(!axutil_strcmp(query->type, SAML_AUTHENTICATION_QUERY)) { authent_q = (saml_authentication_query_t*)query->query; if(authent_q) return authent_q->subject; } if(!axutil_strcmp(query->type, SAML_ATTRIBUTE_QUERY)) { attr_q = (saml_attr_query_t*)query->query; if(attr_q) return attr_q->subject; else return NULL; } if(!axutil_strcmp(query->type, SAML_AUTHORIZATION_DECISION_QUERY)) { autho_de_q = (saml_autho_decision_query_t*)query->query; if(autho_de_q) return autho_de_q->subject; else return NULL; } } } return NULL; } AXIS2_EXTERN int AXIS2_CALL saml_query_set_type(saml_query_t *query, const axutil_env_t *env, axis2_char_t *type) { if(query->type) { AXIS2_FREE(env->allocator, query->type); } query->type = axutil_strdup(env, type); return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL saml_query_set_query(saml_query_t *query, const axutil_env_t *env, void *spec_query, axis2_char_t *type) { if(query->query) { if(!axutil_strcmp(query->type,SAML_SUBJECT_QUERY)) { if(query->query) { saml_subject_query_free(query->query, env); } } if(!axutil_strcmp(query->type, SAML_AUTHENTICATION_QUERY)) { if(query->query) { saml_authentication_query_free(query->query, env); } } if(!axutil_strcmp(query->type, SAML_ATTRIBUTE_QUERY)) { if(query->query) { saml_attr_query_free(query->query, env); } } if(!axutil_strcmp(query->type, SAML_AUTHORIZATION_DECISION_QUERY)) { if(query->query) { saml_autho_decision_query_free(query->query, env); } } AXIS2_FREE(env->allocator, query->type); } query->query = spec_query; query->type = axutil_strdup(env, type); return AXIS2_SUCCESS; } rampartc-src-1.3.0/src/omxmlsec/saml/id_type.c0000644000076500007650000000172711202453417021144 0ustar shankarshankar/* * 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. */ #include #include AXIS2_EXTERN axis2_char_t * AXIS2_CALL saml_id_generate_random_bytes(const axutil_env_t *env) { return axutil_uuid_gen(env); } rampartc-src-1.3.0/src/trust/0000755000076500007650000000000011202454477015741 5ustar shankarshankarrampartc-src-1.3.0/src/trust/rst.c0000644000076500007650000011357511202453414016717 0ustar shankarshankar/* * 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. */ #include #include struct trust_rst { axis2_char_t *attr_context; axis2_char_t *token_type; axis2_char_t *request_type; axis2_char_t *wsa_action; axis2_char_t *applies_to_addr; trust_claims_t *claims; trust_entropy_t *entropy; axis2_bool_t allow_postdating; axis2_bool_t renewing; axis2_bool_t attr_allow; axis2_bool_t attr_ok; axiom_node_t *renew_target; axiom_node_t *cancel_target; axis2_char_t *wst_ns_uri; trust_life_time_t *life_time; axis2_char_t *key_type; int key_size; axis2_char_t *authentication_type; axis2_char_t *signature_algo; axis2_char_t *encryption_algo; axis2_char_t *canonicalization_algo; axis2_char_t *computed_key_algo; axiom_node_t *desired_encryption; axiom_node_t *proof_encryption; axiom_node_t *usekey; axis2_char_t *usekey_sig_attr; axis2_char_t *sign_with; axis2_char_t *encrypt_with; /*ToDo : Federation - Trust Extensions * - Authorization : AdditionalContext and CommonClaim Dialect * - Prefix:auth */ }; AXIS2_EXTERN trust_rst_t * AXIS2_CALL trust_rst_create( const axutil_env_t *env) { trust_rst_t *rst = NULL; rst = (trust_rst_t*)AXIS2_MALLOC(env->allocator, sizeof(trust_rst_t)); if(rst) { rst->attr_context = NULL; rst->token_type = NULL; rst->request_type = NULL; rst->wsa_action = NULL; rst->applies_to_addr = NULL; rst->claims = NULL; rst->entropy = NULL; rst->key_type = NULL; rst->key_size = -1; rst->allow_postdating = AXIS2_FALSE; rst->renewing = AXIS2_FALSE; rst->attr_allow = AXIS2_FALSE; rst->attr_ok = AXIS2_FALSE; rst->renew_target = NULL; rst->cancel_target = NULL; rst->wst_ns_uri = NULL; rst->life_time = NULL; rst->authentication_type = NULL; rst->signature_algo = NULL; rst->encryption_algo = NULL; rst->canonicalization_algo = NULL; rst->computed_key_algo = NULL; rst->desired_encryption = NULL; rst->proof_encryption = NULL; rst->usekey = NULL; rst->usekey_sig_attr = NULL; rst->sign_with = NULL; rst->encrypt_with = NULL; } return rst; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rst_populate_rst( trust_rst_t *rst, const axutil_env_t *env, axiom_node_t *rst_node) { axiom_element_t *rst_ele = NULL; axutil_qname_t *attr_ctx_qname = NULL; axis2_char_t *attr_ctx = NULL; axiom_node_t *token_type_node = NULL; axiom_element_t *token_type_ele = NULL; axutil_qname_t *token_type_qname = NULL; axis2_char_t *token_type = NULL; axiom_element_t *req_type_ele = NULL; axiom_node_t *req_type_node = NULL; axutil_qname_t *req_type_qname = NULL; axis2_char_t *req_type = NULL; axutil_qname_t *applies_to_qname = NULL; /*AppliesTo*/ axiom_node_t *applies_to_node = NULL; axiom_element_t *applies_to_ele = NULL; axutil_qname_t *applies_to_epr_qname = NULL; /*EPR*/ axiom_node_t *applies_to_epr_node = NULL; axiom_element_t *applies_to_epr_ele = NULL; axutil_qname_t *applies_to_addr_qname = NULL; /*Addr*/ axiom_node_t *applies_to_addr_node = NULL; axiom_element_t *applies_to_addr_ele = NULL; trust_claims_t *claims = NULL; axiom_node_t *claims_node = NULL; axiom_element_t *claims_ele = NULL; axutil_qname_t *claims_qname = NULL; trust_entropy_t *entropy = NULL; axiom_node_t *entropy_node = NULL; axiom_element_t *entropy_ele = NULL; axutil_qname_t *entropy_qname = NULL; axiom_node_t *lifetime_node = NULL; axiom_element_t *lifetime_ele = NULL; axutil_qname_t *lifetime_qname = NULL; axiom_node_t *key_type_node = NULL; axiom_element_t *key_type_ele = NULL; axutil_qname_t *key_type_qname = NULL; axis2_char_t *key_type = NULL; axiom_node_t *key_size_node = NULL; axiom_element_t *key_size_ele = NULL; axutil_qname_t *key_size_qname = NULL; axis2_char_t *key_size = NULL; axiom_node_t *authnetication_type_node = NULL; axiom_element_t *authnetication_type_ele = NULL; axutil_qname_t *authnetication_type_qname = NULL; axis2_char_t *authnetication_type = NULL; axiom_node_t *signature_algo_node = NULL; axiom_element_t *signature_algo_ele = NULL; axutil_qname_t *signature_algo_qname = NULL; axis2_char_t *signature_algo = NULL; axiom_node_t *encryption_algo_node = NULL; axiom_element_t *encryption_algo_ele = NULL; axutil_qname_t *encryption_algo_qname = NULL; axis2_char_t *encryption_algo = NULL; axiom_node_t *canonocalization_algo_node = NULL; axiom_element_t *canonocalization_algo_ele = NULL; axutil_qname_t *canonocalization_algo_qname = NULL; axis2_char_t *canonocalization_algo = NULL; axiom_node_t *computedkey_algo_node = NULL; axiom_element_t *computedkey_algo_ele = NULL; axutil_qname_t *computedkey_algo_qname = NULL; axis2_char_t *computedkey_algo = NULL; axiom_node_t *desired_encryption_node = NULL; axiom_element_t *desired_encryption_ele = NULL; axutil_qname_t *desired_encryption_qname = NULL; axiom_node_t *desired_encryption_key_node = NULL; /*This can be either Key or STR*/ axiom_element_t *desired_encryption_key_ele = NULL; axiom_node_t *proof_encryption_node = NULL; axiom_element_t *proof_encryption_ele = NULL; axutil_qname_t *proof_encryption_qname = NULL; axiom_node_t *proof_encryption_key_node = NULL; /*This can be either Key or STR*/ axiom_element_t *proof_encryption_key_ele = NULL; axiom_node_t *use_key_node = NULL; axiom_element_t *use_key_ele = NULL; axutil_qname_t *use_key_qname = NULL; axiom_node_t *usekey_key_node = NULL; /*This can be either Key or STR*/ axiom_element_t *usekey_key_ele = NULL; axiom_node_t *sign_with_node = NULL; axiom_element_t *sign_with_ele = NULL; axutil_qname_t *sign_with_qname = NULL; axis2_char_t *sign_with = NULL; axiom_node_t *encrypt_with_node = NULL; axiom_element_t *encrypt_with_ele = NULL; axutil_qname_t *encrypt_with_qname = NULL; axis2_char_t *encrypt_with = NULL; if(NULL == rst_node || NULL == rst) { return AXIS2_FAILURE; } rst_ele = (axiom_element_t*)axiom_node_get_data_element(rst_node, env); if(NULL == rst_ele) { return AXIS2_FAILURE; } /*@Context*/ attr_ctx_qname = axutil_qname_create(env, TRUST_RST_CONTEXT, rst->wst_ns_uri, TRUST_WST); if (!attr_ctx_qname) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] Context Attribute Qname creation failed."); return AXIS2_FAILURE; } attr_ctx = axiom_element_get_attribute_value(rst_ele, env, attr_ctx_qname); if (attr_ctx) { rst->attr_context = attr_ctx; } axutil_qname_free(attr_ctx_qname, env); /*TokenType*/ token_type_qname = axutil_qname_create(env, TRUST_TOKEN_TYPE, rst->wst_ns_uri, TRUST_WST); if (!token_type_qname) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] TokenType Qname creation failed."); return AXIS2_FAILURE; } token_type_ele = axiom_element_get_first_child_with_qname(rst_ele, env, token_type_qname, rst_node, &token_type_node); if (token_type_ele) { token_type = axiom_element_get_text(token_type_ele, env, token_type_node); if(token_type) { rst->token_type = token_type; } } axutil_qname_free(token_type_qname, env); /* RequestType */ req_type_qname = axutil_qname_create(env, TRUST_REQUEST_TYPE, rst->wst_ns_uri, TRUST_WST); if (!req_type_qname) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] RequestType Qname creation failed."); return AXIS2_FAILURE; } req_type_ele = axiom_element_get_first_child_with_qname(rst_ele, env, req_type_qname, rst_node, &req_type_node); if(req_type_ele) { req_type = axiom_element_get_text(req_type_ele, env, req_type_node); if(req_type) { rst->request_type = req_type; } } axutil_qname_free(req_type_qname, env); /* AppliesTo */ applies_to_qname = axutil_qname_create(env, TRUST_APPLIES_TO, TRUST_WSP_XMLNS, TRUST_WSP); applies_to_epr_qname = axutil_qname_create(env, TRUST_EPR, TRUST_WSA_XMLNS, TRUST_WSA); applies_to_addr_qname = axutil_qname_create(env, TRUST_EPR_ADDRESS, TRUST_WSA_XMLNS, TRUST_WSA); if (!applies_to_qname) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] Appliesto Qname creation failed."); return AXIS2_FAILURE; } applies_to_ele = axiom_element_get_first_child_with_qname(rst_ele, env, applies_to_qname, rst_node, &applies_to_node); if(applies_to_ele) { applies_to_epr_ele = axiom_element_get_first_child_with_qname(applies_to_ele, env, applies_to_epr_qname, applies_to_node, &applies_to_epr_node); if(applies_to_epr_ele) { applies_to_addr_ele = axiom_element_get_first_child_with_qname(applies_to_epr_ele, env, applies_to_addr_qname, applies_to_epr_node, &applies_to_addr_node); if(applies_to_addr_ele) { rst->applies_to_addr = axiom_element_get_text(applies_to_addr_ele, env, applies_to_addr_node); } } } axutil_qname_free(applies_to_qname, env); axutil_qname_free(applies_to_epr_qname, env); axutil_qname_free(applies_to_addr_qname, env); /* Claims */ claims_qname = axutil_qname_create(env, TRUST_CLAIMS, rst->wst_ns_uri, TRUST_WST); if (!claims_qname) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] Claims Qname creation failed."); return AXIS2_FAILURE; } claims_ele = axiom_element_get_first_child_with_qname(rst_ele, env, claims_qname, rst_node, &claims_node); if (claims_ele) { claims = trust_claims_create(env); if(AXIS2_SUCCESS == trust_claims_deserialize(claims, env, claims_node)) { rst->claims = claims; } } axutil_qname_free(claims_qname, env); /*Entropy */ entropy_qname = axutil_qname_create(env, TRUST_ENTROPY, rst->wst_ns_uri, TRUST_WST); if (!entropy_qname) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] Entropy Qname creation failed."); return AXIS2_FAILURE; } entropy_ele = axiom_element_get_first_child_with_qname(rst_ele, env, entropy_qname, rst_node, &entropy_node); if(entropy_ele) { entropy = trust_entropy_create(env); trust_entropy_set_ns_uri(entropy, env, rst->wst_ns_uri); if(AXIS2_SUCCESS == trust_entropy_deserialize(entropy, env, entropy_node)) { rst->entropy = entropy; } } axutil_qname_free(entropy_qname, env); /*LifeTime*/ lifetime_qname = axutil_qname_create(env, TRUST_LIFE_TIME, rst->wst_ns_uri, TRUST_WST); if(!lifetime_qname) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] LifeTime Qname creation failed."); return AXIS2_FAILURE; } lifetime_ele = axiom_element_get_first_child_with_qname(rst_ele, env, lifetime_qname, rst_node, &lifetime_node); if(lifetime_ele) { if(AXIS2_SUCCESS == trust_life_time_deserialize(rst->life_time, env, lifetime_node)) { rst->life_time = NULL; } } axutil_qname_free(lifetime_qname, env); /*Key and Encryption Requirements*/ /* KeyType */ key_type_qname = axutil_qname_create(env, TRUST_KEY_TYPE, rst->wst_ns_uri, TRUST_WST); if(!key_type_qname) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] KeyType Qname creation failed."); return AXIS2_FAILURE; } key_type_ele = axiom_element_get_first_child_with_qname(rst_ele, env, key_type_qname, rst_node, &key_type_node); if(key_type_ele) { key_type = axiom_element_get_text(key_type_ele, env, key_type_node); if(key_type) { rst->key_type = key_type; } } axutil_qname_free(key_type_qname, env); /* KeySize */ key_size_qname = axutil_qname_create(env, TRUST_KEY_SIZE, rst->wst_ns_uri, TRUST_WST); key_size_ele = axiom_element_get_first_child_with_qname(rst_ele, env, key_size_qname, rst_node, &key_size_node); if(key_size_ele) { key_size = axiom_element_get_text(key_size_ele, env, key_size_node); if(key_size) { rst->key_size = atoi(key_size); } } axutil_qname_free(key_size_qname, env); /*AuthenticationType*/ authnetication_type_qname = axutil_qname_create(env, TRUST_AUTHENTICATION_TYPE, rst->wst_ns_uri, TRUST_WST); authnetication_type_ele = axiom_element_get_first_child_with_qname(rst_ele, env, authnetication_type_qname, rst_node, &authnetication_type_node); if(authnetication_type_ele) { authnetication_type = axiom_element_get_text(authnetication_type_ele, env, authnetication_type_node); if(authnetication_type) { rst->authentication_type = authnetication_type; } } axutil_qname_free(authnetication_type_qname, env); /*SignatureAlgorithm*/ signature_algo_qname = axutil_qname_create(env, TRUST_SIGNATURE_ALGO, rst->wst_ns_uri, TRUST_WST); signature_algo_ele = axiom_element_get_first_child_with_qname(rst_ele, env, signature_algo_qname, rst_node, &signature_algo_node); if(signature_algo_ele) { signature_algo = axiom_element_get_text(signature_algo_ele, env, signature_algo_node); if(signature_algo) { rst->signature_algo = signature_algo; } } axutil_qname_free(signature_algo_qname, env); /*EncryptionAlgorithm*/ encryption_algo_qname = axutil_qname_create(env, TRUST_ENCRYPTION_ALGO, rst->wst_ns_uri, TRUST_WST); encryption_algo_ele = axiom_element_get_first_child_with_qname(rst_ele, env, encryption_algo_qname, rst_node, &encryption_algo_node); if(encryption_algo_ele) { encryption_algo = axiom_element_get_text(encryption_algo_ele, env, encryption_algo_node); if(encryption_algo) { rst->encryption_algo = encryption_algo; } } axutil_qname_free(encryption_algo_qname, env); /*CanonicalizationAlgorithm*/ canonocalization_algo_qname = axutil_qname_create(env, TRUST_CANONICAL_ALGO, rst->wst_ns_uri, TRUST_WST); canonocalization_algo_ele = axiom_element_get_first_child_with_qname(rst_ele, env, canonocalization_algo_qname, rst_node, &canonocalization_algo_node); if(canonocalization_algo_ele) { canonocalization_algo = axiom_element_get_text(canonocalization_algo_ele, env, canonocalization_algo_node); if(canonocalization_algo) { rst->canonicalization_algo = canonocalization_algo; } } axutil_qname_free(canonocalization_algo_qname, env); /*ComputedKeyAlgorithm*/ computedkey_algo_qname = axutil_qname_create(env, TRUST_COMPUTED_KEY_ALGO, rst->wst_ns_uri, TRUST_WST); computedkey_algo_ele = axiom_element_get_first_child_with_qname(rst_ele, env, computedkey_algo_qname, rst_node, &computedkey_algo_node); if(computedkey_algo_ele) { computedkey_algo = axiom_element_get_text(computedkey_algo_ele, env, computedkey_algo_node); if(computedkey_algo) { rst->computed_key_algo = computedkey_algo; } } axutil_qname_free(computedkey_algo_qname, env); /*(Desired)Encryption */ desired_encryption_qname = axutil_qname_create(env, TRUST_DESIRED_ENCRYPTION, rst->wst_ns_uri, TRUST_WST); if (!desired_encryption_qname) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] Encryption Qname creation failed."); return AXIS2_FAILURE; } desired_encryption_ele = axiom_element_get_first_child_with_qname(rst_ele, env, desired_encryption_qname, rst_node, &desired_encryption_node); if(desired_encryption_ele) { desired_encryption_key_ele = axiom_element_get_first_element(desired_encryption_ele, env, desired_encryption_node, &desired_encryption_key_node); rst->desired_encryption = desired_encryption_key_node; } axutil_qname_free(desired_encryption_qname, env); /*ProofEncryption*/ proof_encryption_qname = axutil_qname_create(env, TRUST_PROOF_ENCRYPTION, rst->wst_ns_uri, TRUST_WST); if (!proof_encryption_qname) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] ProofEncryption Qname creation failed."); return AXIS2_FAILURE; } proof_encryption_ele = axiom_element_get_first_child_with_qname(rst_ele, env, proof_encryption_qname, rst_node, &proof_encryption_node); if(proof_encryption_ele) { proof_encryption_key_ele = axiom_element_get_first_element(proof_encryption_ele, env, proof_encryption_node, &proof_encryption_key_node); rst->proof_encryption = proof_encryption_key_node; } axutil_qname_free(proof_encryption_qname, env); /*UseKey*/ use_key_qname = axutil_qname_create(env, TRUST_USE_KEY, rst->wst_ns_uri, TRUST_WST); if(!use_key_qname) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] UseKey Qname creation failed."); return AXIS2_FAILURE; } use_key_ele = axiom_element_get_first_child_with_qname(rst_ele, env, use_key_qname, rst_node, &use_key_node); if(use_key_ele) { usekey_key_ele = axiom_element_get_first_element(use_key_ele, env, use_key_node, &usekey_key_node); rst->usekey = usekey_key_node; } axutil_qname_free(use_key_qname, env); /*SignWith*/ sign_with_qname = axutil_qname_create(env, TRUST_SIGN_WITH, rst->wst_ns_uri, TRUST_WST); sign_with_ele = axiom_element_get_first_child_with_qname(rst_ele, env, sign_with_qname, rst_node, &sign_with_node); if(sign_with_ele) { sign_with = axiom_element_get_text(sign_with_ele, env, sign_with_node); if(sign_with) { rst->sign_with = sign_with; } } axutil_qname_free(sign_with_qname, env); /*EncryptWith*/ encrypt_with_qname = axutil_qname_create(env, TRUST_ENCRYPT_WITH, rst->wst_ns_uri, TRUST_WST); if(!encrypt_with_qname) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] EncryptWith Qname creation failed."); return AXIS2_FAILURE; } encrypt_with_ele = axiom_element_get_first_child_with_qname(rst_ele, env, encrypt_with_qname, rst_node, &encrypt_with_node); if(encrypt_with_ele) { encrypt_with = axiom_element_get_text(encrypt_with_ele, env, encrypt_with_node); if(encrypt_with) { rst->encrypt_with = encrypt_with; } } axutil_qname_free(encrypt_with_qname, env); return AXIS2_SUCCESS; } AXIS2_EXTERN axiom_node_t * AXIS2_CALL trust_rst_build_rst( trust_rst_t *rst, const axutil_env_t *env, axiom_node_t *parent) { axiom_node_t *rst_node = NULL; axis2_char_t *key_size = NULL; rst_node = (axiom_node_t*)trust_util_create_rst_element(env, rst->wst_ns_uri, rst->attr_context); if(rst_node) { if(rst->token_type || rst->applies_to_addr) { if(rst->token_type) { if(NULL == (axiom_node_t*)trust_util_create_token_type_element(env, rst->wst_ns_uri, rst_node, rst->token_type)) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] TokenType element creation failed."); return NULL; } } if(rst->applies_to_addr) { /*AppliesTo in WSP - No Need to pass the trust version*/ if(NULL == (axiom_node_t*)trust_util_create_applies_to_element(env, rst_node, rst->applies_to_addr, TRUST_WSA_XMLNS)) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] AppliesTo element creation failed."); return NULL; } } } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] You must at least give token type or applies to address."); return NULL; } if(rst->request_type) { if(NULL == (axiom_node_t*)trust_util_create_request_type_element(env, rst->wst_ns_uri, rst_node, rst->request_type)) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] RequestType element creation failed."); return NULL; } } if(rst->claims) { if(NULL == trust_claims_serialize(rst->claims, env, rst_node)) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] Claims element creation failed."); return NULL; } } if(rst->entropy) { if(NULL == trust_entropy_serialize(rst->entropy, env, rst_node)) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] Entropy element creation failed."); return NULL; } } if(rst->life_time) { if(NULL == trust_life_time_serialize(rst->life_time, env, rst_node)) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] LifeTime element creation failed."); return NULL; } } if(rst->key_type) { if(NULL == (axiom_node_t*)trust_util_create_key_type_element(env, rst->wst_ns_uri, rst_node, rst->key_type)) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] KeyType element creation failed."); return NULL; } } if(rst->key_size > 0) { /*INFO -keysize Malloc Size = 128 */ key_size = AXIS2_MALLOC( env->allocator, sizeof(char)*128); sprintf(key_size, "%d", rst->key_size); if(NULL == (axiom_node_t*)trust_util_create_key_size_element(env, rst->wst_ns_uri, rst_node, key_size)) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] KeySize element creation failed."); return NULL; } } if(rst->authentication_type) { if(NULL == (axiom_node_t*)trust_util_create_authentication_type_element(env, rst->wst_ns_uri, rst_node, rst->authentication_type)) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] AuthenticationType element creation failed."); return NULL; } } if(rst->signature_algo) { if(NULL == (axiom_node_t*)trust_util_create_signature_algo_element(env, rst->wst_ns_uri, rst_node, rst->signature_algo)) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] SignatureAlgo element creation failed."); return NULL; } } if(rst->encryption_algo) { if(NULL == (axiom_node_t*)trust_util_create_encryption_algo_element(env, rst->wst_ns_uri, rst_node, rst->encryption_algo)) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] EncryptionAlgo element creation failed."); return NULL; } } if(rst->canonicalization_algo) { if(NULL == (axiom_node_t*)trust_util_create_canonicalization_algo_element(env, rst->wst_ns_uri, rst_node, rst->canonicalization_algo)) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] CanonicalizationAlgo element creation failed."); return NULL; } } if(rst->computed_key_algo) { if(NULL == (axiom_node_t*)trust_util_create_computedkey_algo_element(env, rst->wst_ns_uri, rst_node, rst->computed_key_algo)) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] ComputedKeyAlgo element creation failed."); return NULL; } } if(rst->desired_encryption) { if(NULL == (axiom_node_t*)trust_util_create_desired_encryption_element(env, rst->wst_ns_uri, rst_node, rst->desired_encryption)) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] DesiredEncryption element creation failed."); return NULL; } } if(rst->proof_encryption) { if(NULL == (axiom_node_t*)trust_util_create_proof_encryption_element(env, rst->wst_ns_uri, rst_node, rst->proof_encryption)) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] ProofEncryption element creation failed."); return NULL; } } if(rst->usekey) { if(NULL == (axiom_node_t*)trust_util_create_usekey_element(env, rst->wst_ns_uri, rst_node, rst->usekey)) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] UseKey element creation failed."); return NULL; } } if(rst->sign_with) { if(NULL == (axiom_node_t*)trust_util_create_signwith_element(env, rst->wst_ns_uri, rst_node, rst->sign_with)) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] SignWith element creation failed."); return NULL; } } if(rst->encrypt_with) { if(NULL == (axiom_node_t*)trust_util_create_encryptwith_element(env, rst->wst_ns_uri, rst_node, rst->encrypt_with)) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] EncryptWith element creation failed."); return NULL; } } return rst_node; } return NULL; } AXIS2_EXTERN axiom_node_t * AXIS2_CALL trust_rst_build_rst_with_issued_token_assertion( trust_rst_t *rst, const axutil_env_t *env, rp_issued_token_t *issued_token) { axiom_node_t *rst_node = NULL; axiom_node_t *rst_template_node = NULL; axiom_element_t * rst_template_element = NULL; axiom_children_iterator_t *rst_template_children_iter = NULL; axiom_node_t *rst_template_child = NULL; /*Attr Context is NULL -?*/ rst_node = (axiom_node_t*)trust_util_create_rst_element(env, rst->wst_ns_uri, rst->attr_context); rst_template_node = rp_issued_token_get_requested_sec_token_template(issued_token, env); rst_template_node = axiom_node_detach(rst_template_node, env); /*Detaching RSTTemplate from the original location- FIX - Detaching problem with NS'*/ rst_template_element = axiom_node_get_data_element(rst_template_node, env); rst_template_children_iter = axiom_element_get_children(rst_template_element, env, rst_template_node); while(axiom_children_iterator_has_next(rst_template_children_iter, env)) { rst_template_child = axiom_children_iterator_next(rst_template_children_iter, env); if(rst_template_node) axiom_node_add_child(rst_node, env, rst_template_child); } if(rst_node) return rst_node; return NULL; } AXIS2_EXTERN axis2_char_t * AXIS2_CALL trust_rst_get_attr_context( trust_rst_t *rst, const axutil_env_t *env) { return rst->attr_context; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rst_set_attr_context( trust_rst_t *rst, const axutil_env_t *env, axis2_char_t *attr_context) { if(attr_context) { rst->attr_context = attr_context; return AXIS2_SUCCESS; } return AXIS2_FAILURE; } AXIS2_EXTERN axis2_char_t * AXIS2_CALL trust_rst_get_token_type( trust_rst_t *rst, const axutil_env_t *env) { return rst->token_type; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rst_set_token_type( trust_rst_t *rst, const axutil_env_t *env, axis2_char_t *token_type) { if(token_type) { rst->token_type = token_type; return AXIS2_SUCCESS; } return AXIS2_FAILURE; } AXIS2_EXTERN axis2_char_t * AXIS2_CALL trust_rst_get_request_type( trust_rst_t *rst, const axutil_env_t *env) { return rst->request_type; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rst_set_request_type( trust_rst_t *rst, const axutil_env_t *env, axis2_char_t *request_type) { if(request_type) { rst->request_type = request_type; return AXIS2_SUCCESS; } return AXIS2_FAILURE; } AXIS2_EXTERN axis2_char_t * AXIS2_CALL trust_rst_get_wsa_action( trust_rst_t *rst, const axutil_env_t *env) { return rst->wsa_action; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rst_set_wsa_action( trust_rst_t *rst, const axutil_env_t *env, axis2_char_t *wsa_action) { if(wsa_action) { rst->wsa_action = wsa_action; return AXIS2_SUCCESS; } return AXIS2_FAILURE; } AXIS2_EXTERN axis2_char_t * AXIS2_CALL trust_rst_get_applies_to_addr( trust_rst_t *rst, const axutil_env_t *env) { return rst->applies_to_addr; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rst_set_appliesto( trust_rst_t *rst, const axutil_env_t *env, axis2_char_t *applies_to_addr) { if(applies_to_addr) { rst->applies_to_addr = applies_to_addr; return AXIS2_SUCCESS; } return AXIS2_FAILURE; } AXIS2_EXTERN trust_claims_t * AXIS2_CALL trust_rst_get_claims( trust_rst_t *rst, const axutil_env_t *env) { return rst->claims; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rst_set_claims( trust_rst_t *rst, const axutil_env_t *env, trust_claims_t *claims) { if(claims) { rst->claims = claims; return AXIS2_SUCCESS; } return AXIS2_FAILURE; } AXIS2_EXTERN trust_entropy_t * AXIS2_CALL trust_rst_get_entropy( trust_rst_t *rst, const axutil_env_t *env) { return rst->entropy; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rst_set_entropy( trust_rst_t *rst, const axutil_env_t *env, trust_entropy_t *entropy) { if(entropy) { rst->entropy = entropy; return AXIS2_SUCCESS; } return AXIS2_FAILURE; } AXIS2_EXTERN trust_life_time_t * AXIS2_CALL trust_rst_get_life_time( trust_rst_t *rst, const axutil_env_t *env) { return rst->life_time; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rst_set_life_time( trust_rst_t *rst, const axutil_env_t *env, trust_life_time_t *life_time) { if(life_time) { rst->life_time = life_time; return AXIS2_SUCCESS; } return AXIS2_FAILURE; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rst_set_key_type( trust_rst_t *rst, const axutil_env_t *env, axis2_char_t *key_type) { if(key_type) { rst->key_type = key_type; return AXIS2_SUCCESS; } return AXIS2_FAILURE; } AXIS2_EXTERN axis2_char_t * AXIS2_CALL trust_rst_get_key_type( trust_rst_t *rst, const axutil_env_t *env) { return rst->key_type; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rst_set_key_size( trust_rst_t *rst, const axutil_env_t *env, int key_size) { if(key_size > 0) { rst->key_size = key_size; return AXIS2_SUCCESS; } return AXIS2_FAILURE; } AXIS2_EXTERN int AXIS2_CALL trust_rst_get_key_size( trust_rst_t *rst, const axutil_env_t *env) { return rst->key_size; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rst_set_authentication_type( trust_rst_t *rst, const axutil_env_t *env, axis2_char_t *authentication_type) { if(authentication_type) { rst->authentication_type = authentication_type; return AXIS2_SUCCESS; } return AXIS2_FAILURE; } AXIS2_EXTERN axis2_char_t * AXIS2_CALL trust_rst_get_authentication_type( trust_rst_t *rst, const axutil_env_t *env) { return rst->authentication_type; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rst_set_signature_algorithm( trust_rst_t *rst, const axutil_env_t *env, axis2_char_t *signature_algorithm) { if(signature_algorithm) { rst->signature_algo = signature_algorithm; return AXIS2_SUCCESS; } return AXIS2_FAILURE; } AXIS2_EXTERN axis2_char_t * AXIS2_CALL trust_rst_get_signature_algorithm( trust_rst_t *rst, const axutil_env_t *env) { return rst->signature_algo; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rst_set_encryption_algorithm( trust_rst_t *rst, const axutil_env_t *env, axis2_char_t *encryption_algorithm) { if(encryption_algorithm) { rst->encryption_algo = encryption_algorithm; return AXIS2_SUCCESS; } return AXIS2_FAILURE; } AXIS2_EXTERN axis2_char_t * AXIS2_CALL trust_rst_get_encryption_algorithm( trust_rst_t *rst, const axutil_env_t *env) { return rst->encryption_algo; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rst_set_canonicalization_algorithm( trust_rst_t *rst, const axutil_env_t *env, axis2_char_t *canonicalization_algorithm) { if(canonicalization_algorithm) { rst->canonicalization_algo = canonicalization_algorithm; return AXIS2_SUCCESS; } return AXIS2_FAILURE; } AXIS2_EXTERN axis2_char_t * AXIS2_CALL trust_rst_get_canonicalization_algorithm( trust_rst_t *rst, const axutil_env_t *env) { return rst->canonicalization_algo; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rst_set_computedkey_algorithm( trust_rst_t *rst, const axutil_env_t *env, axis2_char_t *computedkey_algorithm) { if(computedkey_algorithm) { rst->computed_key_algo = computedkey_algorithm; return AXIS2_SUCCESS; } return AXIS2_FAILURE; } AXIS2_EXTERN axis2_char_t * AXIS2_CALL trust_rst_get_computedkey_algorithm( trust_rst_t *rst, const axutil_env_t *env) { return rst->computed_key_algo; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rst_set_desired_encryption( trust_rst_t *rst, const axutil_env_t *env, axiom_node_t *desired_encryption_key) { if(desired_encryption_key) { rst->desired_encryption = desired_encryption_key; return AXIS2_SUCCESS; } return AXIS2_FAILURE; } AXIS2_EXTERN axiom_node_t * AXIS2_CALL trust_rst_get_desired_encryption( trust_rst_t *rst, const axutil_env_t *env) { return rst->desired_encryption; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rst_set_proof_encryption( trust_rst_t *rst, const axutil_env_t *env, axiom_node_t *proof_encryption_key) { if(proof_encryption_key) { rst->proof_encryption = proof_encryption_key; return AXIS2_SUCCESS; } return AXIS2_FAILURE; } AXIS2_EXTERN axiom_node_t * AXIS2_CALL trust_rst_get_proof_encryption( trust_rst_t *rst, const axutil_env_t *env) { return rst->proof_encryption; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rst_set_usekey( trust_rst_t *rst, const axutil_env_t *env, axiom_node_t *usekey_key) { if(usekey_key) { rst->usekey = usekey_key; return AXIS2_SUCCESS; } return AXIS2_FAILURE; } AXIS2_EXTERN axiom_node_t * AXIS2_CALL trust_rst_get_usekey( trust_rst_t *rst, const axutil_env_t *env) { return rst->usekey; } /*FIX Usekey attr @Sig*/ AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rst_set_signwith( trust_rst_t *rst, const axutil_env_t *env, axis2_char_t *signwith) { if(signwith) { rst->sign_with = signwith; return AXIS2_SUCCESS; } return AXIS2_FAILURE; } AXIS2_EXTERN axis2_char_t * AXIS2_CALL trust_rst_get_signwith( trust_rst_t *rst, const axutil_env_t *env) { return rst->sign_with; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rst_set_encryptwith( trust_rst_t *rst, const axutil_env_t *env, axis2_char_t *encryptwith) { if(encryptwith) { rst->encrypt_with = encryptwith; return AXIS2_SUCCESS; } return AXIS2_FAILURE; } AXIS2_EXTERN axis2_char_t * AXIS2_CALL trust_rst_get_encryptwith( trust_rst_t *rst, const axutil_env_t *env) { return rst->encrypt_with; } AXIS2_EXTERN axis2_char_t * AXIS2_CALL trust_rst_get_wst_ns_uri( trust_rst_t *rst, const axutil_env_t *env) { return rst->wst_ns_uri; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rst_set_wst_ns_uri( trust_rst_t *rst, const axutil_env_t *env, axis2_char_t *wst_ns_uri) { if(wst_ns_uri) { rst->wst_ns_uri = wst_ns_uri; return AXIS2_SUCCESS; } return AXIS2_FAILURE; } AXIS2_EXTERN void AXIS2_CALL trust_rst_free( trust_rst_t *rst, const axutil_env_t *env) { AXIS2_FREE(env->allocator, rst); } rampartc-src-1.3.0/src/trust/Makefile.am0000644000076500007650000000066411202453414017771 0ustar shankarshankarnoinst_LTLIBRARIES = libtrust.la libtrust_la_SOURCES = context.c \ claims.c \ entropy.c \ life_time.c \ rst.c \ rstr.c \ trust_util.c \ sts_client.c \ policy_util.c \ token.c INCLUDES = -I$(top_builddir)/include \ -I ../../../../util/include \ -I ../../../../include \ -I ../../../../axiom/include \ @OPENSSLINC@ \ @UTILINC@ \ @AXIOMINC@ \ @AXIS2INC@ rampartc-src-1.3.0/src/trust/trust_util.c0000644000076500007650000013013011202453414020307 0ustar shankarshankar/* * 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. */ #include #include AXIS2_EXTERN axiom_node_t *AXIS2_CALL trust_util_create_rst_element( const axutil_env_t * env, axis2_char_t *wst_ns_uri, axis2_char_t * context) { axiom_node_t *rst_node = NULL; axiom_element_t *rst_ele = NULL; axiom_namespace_t *wst_ns = NULL; axiom_attribute_t *context_attr = NULL; axis2_status_t status = AXIS2_SUCCESS; wst_ns = axiom_namespace_create(env, wst_ns_uri, TRUST_WST); rst_ele = axiom_element_create(env, NULL, TRUST_REQUEST_SECURITY_TOKEN, wst_ns, &rst_node); if (!rst_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] RST Element creation failed."); return NULL; } if (context) { context_attr = axiom_attribute_create(env, TRUST_RST_CONTEXT, context, wst_ns); status = axiom_element_add_attribute(rst_ele, env, context_attr, rst_node); if (status == AXIS2_FAILURE) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] RST Element add attribute function failed."); return NULL; } } return rst_node; } AXIS2_EXTERN axiom_node_t *AXIS2_CALL trust_util_create_rstr_element( const axutil_env_t * env, axis2_char_t *wst_ns_uri, axis2_char_t * context) { axiom_node_t *rstr_node = NULL; axiom_element_t *rstr_ele = NULL; axiom_namespace_t *wst_ns = NULL; axiom_attribute_t *context_attr = NULL; axis2_status_t status = AXIS2_SUCCESS; wst_ns = axiom_namespace_create(env, wst_ns_uri, TRUST_WST); rstr_ele = axiom_element_create(env, NULL, TRUST_REQUEST_SECURITY_TOKEN_RESPONSE, wst_ns, &rstr_node); if (!rstr_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] RSTR Element creation failed."); return NULL; } if (context) { context_attr = axiom_attribute_create(env, TRUST_RST_CONTEXT, context, wst_ns); status = axiom_element_add_attribute(rstr_ele, env, context_attr, rstr_node); if (status == AXIS2_FAILURE) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] RSTR Element add attribute function failed."); return NULL; } } return rstr_node; } AXIS2_EXTERN axiom_node_t *AXIS2_CALL trust_util_create_rstr_collection_element( const axutil_env_t * env, axis2_char_t *wst_ns_uri) { axiom_node_t *rstrc_node = NULL; axiom_element_t *rstrc_ele = NULL; axiom_namespace_t *wst_ns = NULL; wst_ns = axiom_namespace_create(env, wst_ns_uri, TRUST_WST); rstrc_ele = axiom_element_create(env, NULL, TRUST_REQUEST_SECURITY_TOKEN_RESPONSE_COLLECTION, wst_ns, &rstrc_node); if (!rstrc_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] RSTRC Element creation failed."); return NULL; } return rstrc_node; } AXIS2_EXTERN axiom_node_t *AXIS2_CALL trust_util_create_request_type_element( const axutil_env_t * env, axis2_char_t *wst_ns_uri, axiom_node_t * parent_node, axis2_char_t * request_type) { axis2_char_t *req_type_str = NULL; axiom_node_t *request_type_node = NULL; axiom_element_t *request_type_ele = NULL; axiom_namespace_t *wst_ns = NULL; axis2_status_t status = AXIS2_SUCCESS; wst_ns = axiom_namespace_create(env, wst_ns_uri, TRUST_WST); request_type_ele = axiom_element_create(env, parent_node, TRUST_REQUEST_TYPE, wst_ns, &request_type_node); if (!request_type_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] RequestType Element creation failed."); return NULL; } if (0 == axutil_strcmp(request_type, TRUST_REQ_TYPE_ISSUE) || 0 == axutil_strcmp(request_type, TRUST_REQ_TYPE_CANCEL) || 0 == axutil_strcmp(request_type, TRUST_REQ_TYPE_RENEW) || 0 == axutil_strcmp(request_type, TRUST_REQ_TYPE_VALIDATE)) { req_type_str = axutil_stracat(env, wst_ns_uri, request_type); status = axiom_element_set_text(request_type_ele, env, req_type_str, request_type_node); AXIS2_FREE(env->allocator, req_type_str); } else { status = axiom_element_set_text(request_type_ele, env, request_type, request_type_node); } if (status == AXIS2_FAILURE) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] RequestType Element's setting text function failed."); return NULL; } return request_type_node; } AXIS2_EXTERN axiom_node_t *AXIS2_CALL trust_util_create_token_type_element( const axutil_env_t * env, axis2_char_t *wst_ns_uri, axiom_node_t * parent_node, axis2_char_t * token_type) { axiom_node_t *token_type_node = NULL; axiom_element_t *token_type_ele = NULL; axiom_namespace_t *wst_ns = NULL; axis2_status_t status = AXIS2_SUCCESS; wst_ns = axiom_namespace_create(env, wst_ns_uri, TRUST_WST); token_type_ele = axiom_element_create(env, parent_node, TRUST_TOKEN_TYPE, wst_ns, &token_type_node); if (!token_type_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] TokenType Element creation failed."); return NULL; } status = axiom_element_set_text(token_type_ele, env, token_type, token_type_node); if (status == AXIS2_FAILURE) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] TokenType Element's setting text function failed."); return NULL; } return token_type_node; } 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) { axiom_node_t *applies_to_node = NULL; axiom_node_t *epr_node = NULL; axiom_node_t *addr_node = NULL; axiom_element_t *applies_to_ele = NULL; axiom_element_t *epr_ele = NULL; axiom_element_t *addr_ele = NULL; axiom_namespace_t *wsp_ns = NULL; axiom_namespace_t *wsa_ns = NULL; axis2_status_t status = AXIS2_SUCCESS; wsp_ns = axiom_namespace_create(env, TRUST_WSP_XMLNS, TRUST_WSP); wsa_ns = axiom_namespace_create(env, addressing_ns, TRUST_WSA); applies_to_ele = axiom_element_create(env, parent_node, TRUST_APPLIES_TO, wsp_ns, &applies_to_node); if (!applies_to_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] AppliesTo Element creation failed!"); return NULL; } epr_ele = axiom_element_create(env, applies_to_node, TRUST_EPR, wsa_ns, &epr_node); if (!epr_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] EndpointReference Element creation failed!"); return NULL; } addr_ele = axiom_element_create(env, epr_node, TRUST_EPR_ADDRESS, wsa_ns, &addr_node); if (!addr_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] Address Element creation failed!"); return NULL; } status = axiom_element_set_text(addr_ele, env, address, addr_node); if (status == AXIS2_FAILURE) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] Address Element's setting text function failed."); return NULL; } return applies_to_node; } AXIS2_EXTERN axiom_node_t *AXIS2_CALL trust_util_create_claims_element( const axutil_env_t * env, axis2_char_t *wst_ns_uri, axiom_node_t * parent_node, axis2_char_t * dialect_uri) { axiom_node_t *claims_node = NULL; axiom_element_t *claims_ele = NULL; axiom_namespace_t *wst_ns = NULL; axiom_attribute_t *dialect_attr = NULL; axis2_status_t status = AXIS2_SUCCESS; wst_ns = axiom_namespace_create(env, wst_ns_uri, TRUST_WST); claims_ele = axiom_element_create(env, parent_node, TRUST_CLAIMS, wst_ns, &claims_node); if (!claims_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] Claims Element creation failed!"); return NULL; } if (dialect_uri) { wst_ns = axiom_namespace_create(env, wst_ns_uri, TRUST_WST); dialect_attr = axiom_attribute_create(env, TRUST_CLAIMS_DIALECT, dialect_uri, NULL); if (dialect_attr) { status = axiom_element_add_attribute(claims_ele, env, dialect_attr, claims_node); if (status == AXIS2_FAILURE) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] Claims element adding attribute failed."); return NULL; } } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] Dialect attribute creation failed."); return NULL; } } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] Dialect uri null."); return NULL; } return claims_node; } AXIS2_EXTERN axiom_node_t *AXIS2_CALL trust_util_create_requested_security_token_element( const axutil_env_t * env, axis2_char_t *wst_ns_uri, axiom_node_t * parent_node, axiom_node_t * sec_token_node) { axiom_node_t *requested_token_node = NULL; axiom_element_t *requested_token_ele = NULL; axiom_namespace_t *wst_ns = NULL; wst_ns = axiom_namespace_create(env, wst_ns_uri, TRUST_WST); requested_token_ele = axiom_element_create(env, parent_node, TRUST_REQUESTED_SECURITY_TOKEN, wst_ns, &requested_token_node); if (!requested_token_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] RequestedSecurityToken Element creation failed!"); return NULL; } if(sec_token_node) { axiom_node_add_child(requested_token_node, env, sec_token_node); } return requested_token_node; } AXIS2_EXTERN axiom_node_t *AXIS2_CALL trust_util_create_requsted_proof_token_element( const axutil_env_t * env, axis2_char_t *wst_ns_uri, axiom_node_t * parent_node, axiom_node_t *req_proof_token) { axiom_namespace_t *wst_ns = NULL; axiom_node_t *requested_prooft_node = NULL; axiom_element_t *requested_prooft_ele = NULL; wst_ns = axiom_namespace_create(env, wst_ns_uri, TRUST_WST); requested_prooft_ele = axiom_element_create(env, parent_node, TRUST_REQUESTED_PROOF_TOKEN, wst_ns, &requested_prooft_node); if (!requested_prooft_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] RequestedProofToken Element creation failed!"); return NULL; } if(req_proof_token) { if(AXIS2_FAILURE == axiom_node_add_child(requested_prooft_node, env, req_proof_token)) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] RequestedProofToken child setting failed!"); return NULL; } } return requested_prooft_node; } AXIS2_EXTERN axiom_node_t *AXIS2_CALL trust_util_create_entropy_element( const axutil_env_t * env, axis2_char_t *wst_ns_uri, axiom_node_t * parent_node) { axiom_namespace_t *wst_ns = NULL; axiom_node_t *entropy_node = NULL; axiom_element_t *entropy_ele = NULL; wst_ns = axiom_namespace_create(env, wst_ns_uri, TRUST_WST); entropy_ele = axiom_element_create(env, parent_node, TRUST_ENTROPY, wst_ns, &entropy_node); if (!entropy_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] Entropy Element creation failed!"); return NULL; } return entropy_node; } AXIS2_EXTERN axiom_node_t *AXIS2_CALL trust_util_computed_key_element( const axutil_env_t * env, axis2_char_t *wst_ns_uri, axiom_node_t * parent_node) { axiom_namespace_t *wst_ns = NULL; axiom_node_t *computed_key_node = NULL; axiom_element_t *computed_key_ele = NULL; wst_ns = axiom_namespace_create(env, wst_ns_uri, TRUST_WST); computed_key_ele = axiom_element_create(env, parent_node, TRUST_COMPUTED_KEY, wst_ns, &computed_key_node); if (!computed_key_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] ComputedKey Element creation failed!"); return NULL; } return computed_key_node; } AXIS2_EXTERN axiom_node_t *AXIS2_CALL trust_util_create_binary_secret_element( const axutil_env_t * env, axis2_char_t *wst_ns_uri, axiom_node_t * parent_node, axis2_char_t * enc_secret, axis2_char_t * bin_sec_type) { axiom_node_t *bin_sec_node = NULL; axiom_element_t *bin_sec_ele = NULL; axiom_attribute_t *bin_sec_type_attr = NULL; axiom_namespace_t *wst_ns = NULL; axis2_char_t *type_str = NULL; axis2_status_t status = AXIS2_SUCCESS; wst_ns = axiom_namespace_create(env, wst_ns_uri, TRUST_WST); bin_sec_ele = axiom_element_create(env, parent_node, TRUST_BINARY_SECRET, wst_ns, &bin_sec_node); if (!bin_sec_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] BinarySecret Element creation failed!"); return NULL; } if (enc_secret) { /* Setting up the encoeded secret */ status = axiom_element_set_text(bin_sec_ele, env, enc_secret, bin_sec_node); if (status == AXIS2_FAILURE) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] BinarySecret Element's setting text failed."); return NULL; } } if (bin_sec_type) { /* Setting up BS-Type attribute */ type_str = axutil_stracat(env, wst_ns_uri, bin_sec_type); bin_sec_type_attr = axiom_attribute_create(env, ATTR_TYPE, type_str, NULL); if (!bin_sec_type_attr) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] BinarySecret Element's Type attribute creation failed."); return NULL; } status = axiom_element_add_attribute(bin_sec_ele, env, bin_sec_type_attr, bin_sec_node); if (status == AXIS2_FAILURE) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] BinarySecret Element's attribute adding failed."); return NULL; } } return bin_sec_node; } AXIS2_EXTERN axiom_node_t *AXIS2_CALL trust_util_create_computed_key_algo_element( const axutil_env_t * env, axis2_char_t *wst_ns_uri, axiom_node_t * parent_node, axis2_char_t * algo_id) { axiom_node_t *comp_key_algo_node = NULL; axiom_element_t *comp_key_algo_ele = NULL; axiom_namespace_t *wst_ns = NULL; /*axis2_char_t *algo = NULL;*/ axis2_status_t status = AXIS2_SUCCESS; wst_ns = axiom_namespace_create(env, wst_ns_uri, TRUST_WST); if (algo_id) { comp_key_algo_ele = axiom_element_create(env, parent_node, TRUST_COMPUTED_KEY_ALGO, wst_ns, &comp_key_algo_node); if (!comp_key_algo_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] ComputedKeyAlgorithm element creation failed."); return NULL; } /*algo = axutil_strcat(env, wst_ns_uri, "/" ,algo_id);*/ status = axiom_element_set_text(comp_key_algo_ele, env, algo_id, comp_key_algo_node); if (status == AXIS2_FAILURE) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] ComputedKeyAlgorithm Element's setting text failed."); return NULL; } } return comp_key_algo_node; } /* KEY SIZE Element*/ AXIS2_EXTERN axiom_node_t *AXIS2_CALL trust_util_create_key_size_element( const axutil_env_t * env, axis2_char_t *wst_ns_uri, axiom_node_t * parent_node, axis2_char_t * key_size) { axiom_node_t *key_size_node = NULL; axiom_element_t *key_size_ele = NULL; axiom_namespace_t *wst_ns = NULL; axis2_status_t status = AXIS2_SUCCESS; wst_ns = axiom_namespace_create(env, wst_ns_uri, TRUST_WST); key_size_ele = axiom_element_create(env, parent_node, TRUST_KEY_SIZE, wst_ns, &key_size_node); if (!key_size_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] KeySize element creation failed."); return NULL; } if (key_size) { status = axiom_element_set_text(key_size_ele, env, key_size, key_size_node); if (status == AXIS2_FAILURE) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] KeySize Element's setting text failed."); return NULL; } } return key_size_node; } /* KEY TYPE Element*/ AXIS2_EXTERN axiom_node_t *AXIS2_CALL trust_util_create_key_type_element( const axutil_env_t * env, axis2_char_t *wst_ns_uri, axiom_node_t * parent_node, axis2_char_t * key_type) { axiom_node_t *key_type_node = NULL; axiom_element_t *key_type_ele = NULL; axiom_namespace_t *wst_ns = NULL; axis2_char_t *type = NULL; axis2_status_t status = AXIS2_SUCCESS; wst_ns = axiom_namespace_create(env, wst_ns_uri, TRUST_WST); key_type_ele = axiom_element_create(env, parent_node, TRUST_KEY_TYPE, wst_ns, &key_type_node); if (!key_type_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] KeyType element creation failed."); return NULL; } if (key_type) { if (0 == axutil_strcmp(key_type, TRUST_KEY_TYPE_SYMM_KEY) || 0 == axutil_strcmp(key_type, TRUST_KEY_TYPE_PUBLIC_KEY) || 0 == axutil_strcmp(key_type, TRUST_KEY_TYPE_BEARER)) { type = axutil_stracat(env, wst_ns_uri, key_type); status = axiom_element_set_text(key_type_ele, env, type, key_type_node); if (status == AXIS2_FAILURE) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] KeyType Element's setting text failed."); return NULL; } } } return key_type_node; } AXIS2_EXTERN axiom_node_t *AXIS2_CALL trust_util_create_life_time_element( const axutil_env_t * env, axiom_node_t * parent_node, axis2_char_t *wst_ns_uri, int ttl) { axiom_node_t *life_time_node = NULL; axiom_node_t *created_node = NULL; axiom_node_t *expires_node = NULL; axiom_element_t *life_time_ele = NULL; axiom_element_t *created_ele = NULL; axiom_element_t *expires_ele = NULL; axis2_char_t *created_val_str = NULL; axis2_char_t *expires_val_str = NULL; axiom_namespace_t *wsu_ns = NULL; axiom_namespace_t *wst_ns = NULL; axutil_date_time_t *dt = NULL; axis2_status_t status = AXIS2_SUCCESS; wst_ns = axiom_namespace_create(env, wst_ns_uri, TRUST_WST); wsu_ns = axiom_namespace_create(env, TRUST_WSU_XMLNS, TRUST_WSU); life_time_ele = axiom_element_create(env, parent_node, TRUST_LIFE_TIME, wst_ns, &life_time_node); if (life_time_ele) { created_ele = axiom_element_create(env, life_time_node, TRUST_LIFE_TIME_CREATED, wsu_ns, &created_node); if (created_ele) { dt = axutil_date_time_create_with_offset(env, 0); created_val_str = axutil_date_time_serialize_date_time(dt, env); status = axiom_element_set_text(created_ele, env, created_val_str, created_node); if (status == AXIS2_FAILURE) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] Created Element's setting text failed."); return NULL; } AXIS2_FREE(env->allocator, created_val_str); axutil_date_time_free(dt, env); created_val_str = NULL; } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] Created element creation failed."); return NULL; } /*if ttl <0 we dont build the expires element */ if (ttl < 0) { return life_time_node; } expires_ele = axiom_element_create(env, life_time_node, TRUST_LIFE_TIME_EXPIRES, wsu_ns, &expires_node); if (expires_ele) { dt = axutil_date_time_create_with_offset(env, ttl); expires_val_str = axutil_date_time_serialize_date_time(dt, env); axiom_element_set_text(expires_ele, env, expires_val_str, expires_node); if (status == AXIS2_FAILURE) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] Expires Element's setting text failed."); return NULL; } AXIS2_FREE(env->allocator, expires_val_str); axutil_date_time_free(dt, env); expires_val_str = NULL; } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] Expires element creation failed."); return NULL; } return life_time_node; } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] LifeTime element creation failed."); return NULL; } return NULL; } /* RequstedAttachedReference */ AXIS2_EXTERN axiom_node_t *AXIS2_CALL trust_util_create_req_attached_reference_element( const axutil_env_t * env, axis2_char_t *wst_ns_uri, axiom_node_t * parent_node) { axiom_node_t *attached_ref_node = NULL; axiom_element_t *attached_ref_ele = NULL; axiom_namespace_t *wst_ns = NULL; wst_ns = axiom_namespace_create(env, wst_ns_uri, TRUST_WST); attached_ref_ele = axiom_element_create(env, parent_node, TRUST_REQUESTED_ATTACHED_REFERENCE, wst_ns, &attached_ref_node); if (!attached_ref_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] RequestedAttachedReference element creation failed."); return NULL; } return attached_ref_node; } AXIS2_EXTERN axiom_node_t *AXIS2_CALL trust_util_create_req_unattached_reference_element( const axutil_env_t * env, axis2_char_t *wst_ns_uri, axiom_node_t * parent_node) { axiom_node_t *unattached_ref_node = NULL; axiom_element_t *unattached_ref_ele = NULL; axiom_namespace_t *wst_ns = NULL; wst_ns = axiom_namespace_create(env, wst_ns_uri, TRUST_WST); unattached_ref_ele = axiom_element_create(env, parent_node, TRUST_REQUESTED_UNATTACHED_REFERENCE, wst_ns, &unattached_ref_node); if (!unattached_ref_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] RequestedUnAttachedReference element creation failed."); return NULL; } return unattached_ref_node; } /*AuthenticationType*/ AXIS2_EXTERN axiom_node_t *AXIS2_CALL trust_util_create_authentication_type_element( const axutil_env_t * env, axis2_char_t *wst_ns_uri, axiom_node_t * parent_node, axis2_char_t * authentication_type) { axiom_node_t *authentication_type_node = NULL; axiom_element_t *authentication_type_ele = NULL; axiom_namespace_t *wst_ns = NULL; axis2_status_t status; wst_ns = axiom_namespace_create(env, wst_ns_uri, TRUST_WST); authentication_type_ele = axiom_element_create(env, parent_node, TRUST_AUTHENTICATION_TYPE, wst_ns, &authentication_type_node); if (!authentication_type_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] AuthenticationType element creation failed."); return NULL; } if (authentication_type) { status = axiom_element_set_text(authentication_type_ele, env, authentication_type, authentication_type_node); if (status == AXIS2_FAILURE) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] Authenticationtype Element's setting text failed."); return NULL; } } return authentication_type_node; } /*SignatureAlgorithm*/ AXIS2_EXTERN axiom_node_t *AXIS2_CALL trust_util_create_signature_algo_element( const axutil_env_t * env, axis2_char_t *wst_ns_uri, axiom_node_t * parent_node, axis2_char_t * signature_algo) { axiom_node_t *signature_algo_node = NULL; axiom_element_t *signature_algo_ele = NULL; axiom_namespace_t *wst_ns = NULL; axis2_status_t status; wst_ns = axiom_namespace_create(env, wst_ns_uri, TRUST_WST); signature_algo_ele = axiom_element_create(env, parent_node, TRUST_SIGNATURE_ALGO, wst_ns, &signature_algo_node); if (!signature_algo_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] SignatureAlgo element creation failed."); return NULL; } if (signature_algo) { status = axiom_element_set_text(signature_algo_ele, env, signature_algo, signature_algo_node); if (status == AXIS2_FAILURE) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] SignatureAlgo Element's setting text failed."); return NULL; } } return signature_algo_node; } /*EncryptionAlgorithm*/ AXIS2_EXTERN axiom_node_t *AXIS2_CALL trust_util_create_encryption_algo_element( const axutil_env_t * env, axis2_char_t *wst_ns_uri, axiom_node_t * parent_node, axis2_char_t * encryption_algo) { axiom_node_t *encryption_algo_node = NULL; axiom_element_t *encryption_algo_ele = NULL; axiom_namespace_t *wst_ns = NULL; axis2_status_t status; wst_ns = axiom_namespace_create(env, wst_ns_uri, TRUST_WST); encryption_algo_ele = axiom_element_create(env, parent_node, TRUST_ENCRYPTION_ALGO, wst_ns, &encryption_algo_node); if (!encryption_algo_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] EncryptionAlgo element creation failed."); return NULL; } if (encryption_algo) { status = axiom_element_set_text(encryption_algo_ele, env, encryption_algo, encryption_algo_node); if (status == AXIS2_FAILURE) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] EncryptionAlgo Element's setting text failed."); return NULL; } } return encryption_algo_node; } /*CanonicalizationAlgorithm*/ AXIS2_EXTERN axiom_node_t *AXIS2_CALL trust_util_create_canonicalization_algo_element( const axutil_env_t * env, axis2_char_t *wst_ns_uri, axiom_node_t * parent_node, axis2_char_t * canonicalization_algo) { axiom_node_t *canonicalization_algo_node = NULL; axiom_element_t *canonicalization_algo_ele = NULL; axiom_namespace_t *wst_ns = NULL; axis2_status_t status; wst_ns = axiom_namespace_create(env, wst_ns_uri, TRUST_WST); canonicalization_algo_ele = axiom_element_create(env, parent_node, TRUST_CANONICAL_ALGO, wst_ns, &canonicalization_algo_node); if (!canonicalization_algo_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] CanonicalizationAlgo element creation failed."); return NULL; } if (canonicalization_algo) { status = axiom_element_set_text(canonicalization_algo_ele, env, canonicalization_algo, canonicalization_algo_node); if (status == AXIS2_FAILURE) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] CanonicalizationAlgo Element's setting text failed."); return NULL; } } return canonicalization_algo_node; } /*ComputedKeyAlgorithm*/ AXIS2_EXTERN axiom_node_t *AXIS2_CALL trust_util_create_computedkey_algo_element( const axutil_env_t * env, axis2_char_t *wst_ns_uri, axiom_node_t * parent_node, axis2_char_t * computedkey_algo) { axiom_node_t *computedkey_algo_node = NULL; axiom_element_t *computedkey_algo_ele = NULL; axiom_namespace_t *wst_ns = NULL; axis2_status_t status; wst_ns = axiom_namespace_create(env, wst_ns_uri, TRUST_WST); computedkey_algo_ele = axiom_element_create(env, parent_node, TRUST_COMPUTED_KEY_ALGO, wst_ns, &computedkey_algo_node); if (!computedkey_algo_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] ComputedKeyAlgo element creation failed."); return NULL; } if (computedkey_algo) { status = axiom_element_set_text(computedkey_algo_ele, env, computedkey_algo, computedkey_algo_node); if (status == AXIS2_FAILURE) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] ComputedKey Element's setting text failed."); return NULL; } } return computedkey_algo_node; } /*(Desired)Encryption*/ AXIS2_EXTERN axiom_node_t *AXIS2_CALL trust_util_create_desired_encryption_element( const axutil_env_t * env, axis2_char_t * wst_ns_uri, axiom_node_t * parent_node, axiom_node_t * encryption_key) /*@param encryption_key - This can be either a key or a STR*/ { axiom_node_t *desired_encryption_node = NULL; axiom_element_t *desired_encryption_ele = NULL; axiom_namespace_t *wst_ns = NULL; wst_ns = axiom_namespace_create(env, wst_ns_uri, TRUST_WST); desired_encryption_ele = axiom_element_create(env, parent_node, TRUST_DESIRED_ENCRYPTION, wst_ns, &desired_encryption_node); if (!desired_encryption_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] Encryption Element creation failed!"); return NULL; } if(encryption_key) { /*This node can be a key or a STR*/ axiom_node_add_child(desired_encryption_node, env, encryption_key); } return desired_encryption_node; } /*ProofEncryption*/ AXIS2_EXTERN axiom_node_t *AXIS2_CALL trust_util_create_proof_encryption_element( const axutil_env_t * env, axis2_char_t * wst_ns_uri, axiom_node_t * parent_node, axiom_node_t * proof_encryption_key) /*@param encryption_key - This can be either a key or a STR*/ { axiom_node_t *proof_encryption_node = NULL; axiom_element_t *proof_encryption_ele = NULL; axiom_namespace_t *wst_ns = NULL; wst_ns = axiom_namespace_create(env, wst_ns_uri, TRUST_WST); proof_encryption_ele = axiom_element_create(env, parent_node, TRUST_PROOF_ENCRYPTION, wst_ns, &proof_encryption_node); if (!proof_encryption_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] ProofEncryption Element creation failed!"); return NULL; } if(proof_encryption_key) { /*This node can be a key or a STR*/ axiom_node_add_child(proof_encryption_node, env, proof_encryption_key); } return proof_encryption_node; } /*UseKey*/ AXIS2_EXTERN axiom_node_t *AXIS2_CALL trust_util_create_usekey_element( const axutil_env_t * env, axis2_char_t * wst_ns_uri, axiom_node_t * parent_node, axiom_node_t * usekey_key) /*@param encryption_key - This can be either a key or a STR*/ { axiom_node_t *usekey_node = NULL; axiom_element_t *usekey_ele = NULL; axiom_namespace_t *wst_ns = NULL; wst_ns = axiom_namespace_create(env, wst_ns_uri, TRUST_WST); usekey_ele = axiom_element_create(env, parent_node, TRUST_USE_KEY, wst_ns, &usekey_node); if (!usekey_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] UseKey Element creation failed!"); return NULL; } if(usekey_key) { /*This node can be a key or a STR*/ axiom_node_add_child(usekey_node, env, usekey_key); } return usekey_node; } /*SignWith*/ AXIS2_EXTERN axiom_node_t *AXIS2_CALL trust_util_create_signwith_element( const axutil_env_t * env, axis2_char_t *wst_ns_uri, axiom_node_t * parent_node, axis2_char_t * signwith) { axiom_node_t *signwith_node = NULL; axiom_element_t *signwith_ele = NULL; axiom_namespace_t *wst_ns = NULL; axis2_status_t status; wst_ns = axiom_namespace_create(env, wst_ns_uri, TRUST_WST); signwith_ele = axiom_element_create(env, parent_node, TRUST_SIGN_WITH, wst_ns, &signwith_node); if (!signwith_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] SignWith element creation failed."); return NULL; } if (signwith) { status = axiom_element_set_text(signwith_ele, env, signwith, signwith_node); if (status == AXIS2_FAILURE) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] SignWith Element's setting text failed."); return NULL; } } return signwith_node; } /*EncryptWith*/ AXIS2_EXTERN axiom_node_t *AXIS2_CALL trust_util_create_encryptwith_element( const axutil_env_t * env, axis2_char_t *wst_ns_uri, axiom_node_t * parent_node, axis2_char_t * encryptwith) { axiom_node_t *encryptwith_node = NULL; axiom_element_t *encryptwith_ele = NULL; axiom_namespace_t *wst_ns = NULL; axis2_status_t status; wst_ns = axiom_namespace_create(env, wst_ns_uri, TRUST_WST); encryptwith_ele = axiom_element_create(env, parent_node, TRUST_ENCRYPT_WITH, wst_ns, &encryptwith_node); if (!encryptwith_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] EncryptWith element creation failed."); return NULL; } if (encryptwith) { status = axiom_element_set_text(encryptwith_ele, env, encryptwith, encryptwith_node); if (status == AXIS2_FAILURE) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] EncryptWith Element's setting text failed."); return NULL; } } return encryptwith_node; } AXIS2_EXTERN axiom_node_t *AXIS2_CALL trust_util_create_encrypted_data_element( const axutil_env_t * env, axiom_node_t * parent_node, axis2_char_t * enc_data) { axiom_node_t *encrypted_node = NULL; axiom_element_t *encrypted_ele = NULL; axiom_namespace_t *xenc_ns = NULL; axis2_status_t status = AXIS2_SUCCESS; xenc_ns = axiom_namespace_create(env, TRUST_XENC_XMLNS, TRUST_XENC); encrypted_ele = axiom_element_create(env, parent_node, TRUST_ENCRYPTED_DATA, xenc_ns, &encrypted_node); if (!encrypted_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] EncryptedData element creation failed."); return NULL; } if (enc_data) { status = axiom_element_set_text(encrypted_ele, env, enc_data, encrypted_node); if (status == AXIS2_FAILURE) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] Encrypted Data Element's setting text failed."); return NULL; } } return encrypted_node; } AXIS2_EXTERN axiom_node_t *AXIS2_CALL trust_util_create_renew_traget_element( const axutil_env_t * env, axis2_char_t *wst_ns_uri, axiom_node_t * parent_node, axiom_node_t * renew_pending_node) { axiom_node_t *renew_target_node = NULL; axiom_element_t *renew_target_ele = NULL; axiom_namespace_t *wst_ns = NULL; axis2_status_t status = AXIS2_SUCCESS; wst_ns = axiom_namespace_create(env, wst_ns_uri, TRUST_WST); renew_target_ele = axiom_element_create(env, parent_node, TRUST_RENEW_TARGET, wst_ns, &renew_target_node); if (!renew_target_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] RenewTarget element creation failed."); return NULL; } if (renew_pending_node) { /* Set up token as it is for the request */ status = axiom_node_add_child(renew_target_node, env, renew_pending_node); if (status == AXIS2_FAILURE) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] token renew pending node adding as a child failed."); } } /** Otherwise user has to create a STR as a child ot RenewTarget element and * add the token reference to it. **/ return renew_target_node; } AXIS2_EXTERN axiom_node_t *AXIS2_CALL trust_util_create_allow_postdating_element( const axutil_env_t * env, axis2_char_t *wst_ns_uri, axiom_node_t * parent_node) { axiom_node_t *allow_postdating_node = NULL; axiom_element_t *allow_postdating_ele = NULL; axiom_namespace_t *wst_ns = NULL; wst_ns = axiom_namespace_create(env, wst_ns_uri, TRUST_WST); allow_postdating_ele = axiom_element_create(env, parent_node, TRUST_REQUESTED_UNATTACHED_REFERENCE, wst_ns, &allow_postdating_node); if (!allow_postdating_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] AllowPostdating element creation failed."); return NULL; } return allow_postdating_node; } AXIS2_EXTERN axiom_node_t *AXIS2_CALL trust_util_create_renewing_element( const axutil_env_t * env, axis2_char_t *wst_ns_uri, axiom_node_t * parent_node, trust_allow_t allow_flag, trust_ok_t ok_flag) { axiom_node_t *renewing_node = NULL; axiom_element_t *renewing_ele = NULL; axiom_namespace_t *wst_ns = NULL; axiom_attribute_t *allow_attr = NULL; axiom_attribute_t *ok_attr = NULL; axis2_status_t status = AXIS2_SUCCESS; axis2_char_t *allow = NULL; axis2_char_t *ok = NULL; wst_ns = axiom_namespace_create(env, wst_ns_uri, TRUST_WST); renewing_ele = axiom_element_create(env, parent_node, TRUST_RENEWING, wst_ns, &renewing_node); sprintf(allow, "%d", allow_flag); sprintf(ok, "%d", ok_flag); allow_attr = axiom_attribute_create(env, TRUST_RENEW_ALLOW_ATTR, allow, wst_ns); ok_attr = axiom_attribute_create(env, TRUST_RENEW_OK_ATTR, ok, wst_ns); status = axiom_element_add_attribute(renewing_ele, env, allow_attr, renewing_node); if (status == AXIS2_FAILURE) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] Allow attribute setting failed."); } status = axiom_element_add_attribute(renewing_ele, env, ok_attr, renewing_node); if (status == AXIS2_FAILURE) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] Ok attribute setting failed."); } return renewing_node; } AXIS2_EXTERN axiom_node_t *AXIS2_CALL trust_util_create_cancel_target_element( const axutil_env_t * env, axis2_char_t *wst_ns_uri, axiom_node_t * parent_node, axiom_node_t * token_cancel_pending_node) { axiom_node_t *cancel_target_node = NULL; axiom_element_t *cancel_target_ele = NULL; axiom_namespace_t *wst_ns = NULL; wst_ns = axiom_namespace_create(env, wst_ns_uri, TRUST_WST); cancel_target_ele = axiom_element_create(env, parent_node, TRUST_CANCEL_TARGET, wst_ns, &cancel_target_node); if (!cancel_target_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] CancelTarget element creation failed."); return NULL; } if (token_cancel_pending_node) { /* Set up token as it is for the request */ axiom_node_add_child(cancel_target_node, env, token_cancel_pending_node); } /** Otherwise user has to create a STR as a child ot CancelTarget element and * add the token reference to it. **/ return cancel_target_node; } AXIS2_EXTERN axiom_node_t *AXIS2_CALL trust_util_create_validation_response_element( const axutil_env_t * env, axiom_node_t * parent_node, axis2_char_t *wst_ns_uri, axis2_char_t * code, axis2_char_t * reason) { axiom_node_t *status_node = NULL; axiom_node_t *code_node = NULL; axiom_node_t *reason_node = NULL; axiom_element_t *status_ele = NULL; axiom_element_t *code_ele = NULL; axiom_element_t *reason_ele = NULL; axiom_namespace_t *wst_ns = NULL; axis2_status_t status = AXIS2_SUCCESS; wst_ns = axiom_namespace_create(env, wst_ns_uri, TRUST_WST); status_ele = axiom_element_create(env, parent_node, TRUST_VALIDATION_STATUS, wst_ns, &status_node); if (status_ele) { if (code) { code_ele = axiom_element_create(env, status_node, TRUST_VALIDATION_CODE, wst_ns, &code_node); if (!code_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] Code element creation failed."); return NULL; } status = axiom_element_set_text(code_ele, env, code, code_node); if (status == AXIS2_FAILURE) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] Code element text setting failed."); return NULL; } } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] Code string null."); return NULL; } if (reason) { reason_ele = axiom_element_create(env, status_node, TRUST_VALIDATION_REASON, wst_ns, &reason_node); if (!reason_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] Reason element creation failed."); return NULL; } status = axiom_element_set_text(reason_ele, env, reason, reason_node); if (status == AXIS2_FAILURE) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] Reason element text setting failed."); return status_node; } } } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] Status element creation failed."); return NULL; } return status_node; } /*Generating Random Session Key*/ AXIS2_EXTERN axiom_node_t * AXIS2_CALL trust_util_create_random_session_key_proof_token_element( const axutil_env_t * env, axis2_char_t *wst_ns_uri) { axiom_namespace_t *wst_ns = NULL; axiom_node_t *requested_prooft_node = NULL; axiom_element_t *requested_prooft_ele = NULL; axiom_node_t *binary_secret_node = NULL; int encodedlen = 0; oxs_key_t *session_key = NULL; axis2_char_t * base64_encoded_key = NULL; wst_ns = axiom_namespace_create(env, wst_ns_uri, TRUST_WST); requested_prooft_ele = axiom_element_create(env, NULL, TRUST_REQUESTED_PROOF_TOKEN, wst_ns, &requested_prooft_node); if (!requested_prooft_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] RequestedProofToken-Session Key Proof- Element creation failed!"); return NULL; } /*Generating Session key*/ session_key = oxs_key_create(env); oxs_key_for_algo(session_key, env, NULL); if(oxs_key_get_data(session_key, env)) { /*Encoding the binary key to base 64 encoded value*/ /*FIX : Encoded length is hardcoded :64 */ encodedlen = axutil_base64_encode_len(strlen((const char *)oxs_key_get_data(session_key, env))); base64_encoded_key = AXIS2_MALLOC(env->allocator, encodedlen); axutil_base64_encode(base64_encoded_key, (const char *)oxs_key_get_data(session_key, env), strlen((const char *)oxs_key_get_data(session_key, env))); /*Inside element*/ binary_secret_node = trust_util_create_binary_secret_element(env, wst_ns_uri, requested_prooft_node, base64_encoded_key, TRUST_KEY_TYPE_SYMM_KEY); return requested_prooft_node; } return NULL; } axis2_char_t *AXIS2_CALL trust_util_get_wst_ns( const axutil_env_t * env, int wst_version) { switch (wst_version) { case TRUST_VERSION_05_02: return axutil_strdup(env, TRUST_WST_XMLNS_05_02); case TRUST_VERSION_05_12: return axutil_strdup(env, TRUST_WST_XMLNS_05_12); default: return NULL; } } rampartc-src-1.3.0/src/trust/sts_client.c0000644000076500007650000005224211202453414020247 0ustar shankarshankar/* * 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. */ #include #include #include #include #include static void trust_sts_client_insert_entropy( trust_sts_client_t *sts_client, const axutil_env_t *env, trust_rst_t *rst); static oxs_buffer_t* trust_sts_client_compute_key( trust_sts_client_t *sts_client, const axutil_env_t *env, trust_rst_t *rst, trust_rstr_t *rstr); struct trust_sts_client { /* Algorithm Suite for Entropy */ rp_algorithmsuite_t *algo_suite; /* Trust 1.0 Assertions */ rp_trust10_t *trust10; /* Issuer Address */ axis2_char_t *issuer_address; /* STS Client Home Directory */ axis2_char_t *home_dir; /* Location of the issuer's policy file */ axis2_char_t *issuer_policy_location; /* Location of the service's (relying party's) policy file */ axis2_char_t *service_policy_location; /*SVC Client Reference*/ axis2_svc_client_t *svc_client; /*SENT RST - Most Recent*/ axiom_node_t *sent_rst_node; /*RECEIVED RSTR - Most Recent*/ axiom_node_t *received_rstr_node; /*RECEIVED In_msg_ctx*/ axis2_msg_ctx_t *received_in_msg_ctx; rp_secpolicy_t *sec_policy; }; AXIS2_EXTERN trust_sts_client_t *AXIS2_CALL trust_sts_client_create( const axutil_env_t * env) { trust_sts_client_t *sts_client = NULL; sts_client = (trust_sts_client_t *) AXIS2_MALLOC(env->allocator, sizeof(trust_sts_client_t)); sts_client->algo_suite = NULL; sts_client->trust10 = NULL; sts_client->home_dir = NULL; sts_client->issuer_address = NULL; sts_client->issuer_policy_location = NULL; sts_client->service_policy_location = NULL; sts_client->svc_client = NULL; sts_client->sec_policy = NULL; return sts_client; } AXIS2_EXTERN void AXIS2_CALL trust_sts_client_free( trust_sts_client_t * sts_client, const axutil_env_t * env) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); if(sts_client->sec_policy) { rp_secpolicy_free(sts_client->sec_policy, env); sts_client->sec_policy = NULL; } if(sts_client->svc_client) { axis2_svc_client_free(sts_client->svc_client, env); sts_client->svc_client = NULL; } if (sts_client) { AXIS2_FREE(env->allocator, sts_client); } } AXIS2_EXTERN void AXIS2_CALL trust_sts_client_request_security_token( trust_sts_client_t * sts_client, const axutil_env_t * env, trust_context_t *trust_context) { neethi_policy_t *issuer_policy = NULL; neethi_policy_t *service_policy = NULL; axis2_status_t status = AXIS2_SUCCESS; axiom_node_t *rst_node = NULL; axiom_node_t *return_node = NULL; axis2_op_client_t* op_client = NULL; axis2_msg_ctx_t *in_msg_ctx = NULL; /*Action Logic*/ trust_rst_t *rst = NULL; axis2_char_t *request_type = NULL; axis2_char_t *wsa_action = NULL; if(sts_client->issuer_policy_location && sts_client->service_policy_location) { issuer_policy = neethi_util_create_policy_from_file(env, sts_client->issuer_policy_location); service_policy = neethi_util_create_policy_from_file(env, sts_client->service_policy_location); } if (!issuer_policy || !service_policy) { status = AXIS2_FAILURE; } else { trust_sts_client_process_policies(sts_client, env, issuer_policy, service_policy); } /*Action Logic - RequestType - used for specify the requesting action*/ rst = trust_context_get_rst(trust_context, env); if(NULL == rst) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] RST is NULL: Created RST_CTX may not set to TrustContext"); return; } request_type = trust_rst_get_request_type(rst, env); wsa_action = trust_rst_get_wsa_action(rst, env); if(NULL == request_type) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] RST-RequestType is NOT set. RST MUST have a RequestType"); return; } if(NULL == wsa_action) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] RST-WSA-Action is NOT set"); } sts_client->svc_client = trust_sts_client_get_svc_client(sts_client, env, wsa_action, NULL, AXIS2_FALSE); if (status == AXIS2_SUCCESS) { status = axis2_svc_client_set_policy(sts_client->svc_client, env, issuer_policy); if (status == AXIS2_FAILURE) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Policy setting failed."); } /*Building the RST */ rst_node = trust_context_build_rst_node(trust_context, env); if(rst_node) { return_node = axis2_svc_client_send_receive(sts_client->svc_client, env, rst_node); sts_client->sent_rst_node = return_node; /*Processing Response*/ if(!return_node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] Return axiom node NULL"); } else { /*Processing IN_MSG_CONTEXT*/ op_client = axis2_svc_client_get_op_client(sts_client->svc_client, env); if(op_client) { in_msg_ctx = (axis2_msg_ctx_t *)axis2_op_client_get_msg_ctx (op_client, env, AXIS2_WSDL_MESSAGE_LABEL_IN); if(in_msg_ctx) { trust_context_process_rstr(trust_context, env, in_msg_ctx); sts_client->received_in_msg_ctx = in_msg_ctx; /*Store the in_msg_context for sec_header extentions in trust*/ } } } } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] RST-Not send -> RST Node building failed"); return; } } return; } AXIS2_EXTERN axis2_svc_client_t *AXIS2_CALL trust_sts_client_get_svc_client( trust_sts_client_t * sts_client, const axutil_env_t * env, axis2_char_t * action, axis2_char_t *address_version, axis2_bool_t is_soap11) { axis2_endpoint_ref_t *endpoint_ref = NULL; axis2_options_t *options = NULL; axis2_svc_client_t *svc_client = NULL; endpoint_ref = axis2_endpoint_ref_create(env, sts_client->issuer_address); options = axis2_options_create(env); axis2_options_set_to(options, env, endpoint_ref); axis2_options_set_action(options, env, action); axis2_options_set_xml_parser_reset(options, env, AXIS2_FALSE); if(is_soap11) { axis2_options_set_soap_action(options, env, axutil_string_create(env, action)); axis2_options_set_soap_version(options, env, AXIOM_SOAP11); } if(!(sts_client->svc_client)) { svc_client = axis2_svc_client_create(env, sts_client->home_dir); sts_client->svc_client = svc_client; } else { svc_client = sts_client->svc_client; } if (!svc_client) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Stub invoke FAILED: Error code:" " %d :: %s", env->error->error_number, AXIS2_ERROR_GET_MESSAGE(env->error)); return NULL; } /* Set service client options */ axis2_svc_client_set_options(svc_client, env, options); /* Engage addressing module and rampart module */ axis2_svc_client_engage_module(svc_client, env, AXIS2_MODULE_ADDRESSING); axis2_svc_client_engage_module(svc_client, env, RAMPART_RAMPART); /*set the address version*/ if(address_version) { axutil_property_t *property = NULL; property = axutil_property_create(env); axutil_property_set_scope(property, env, AXIS2_SCOPE_APPLICATION); axutil_property_set_value(property, env, axutil_strdup(env, address_version)); axis2_options_set_property(options, env, AXIS2_WSA_VERSION, property); } return svc_client; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_sts_client_process_policies( trust_sts_client_t * sts_client, const axutil_env_t * env, neethi_policy_t * issuer_policy, neethi_policy_t * service_policy) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); if (issuer_policy) { sts_client->algo_suite = trust_policy_util_get_algorithmsuite(env, issuer_policy, &sts_client->sec_policy); } if (service_policy) { sts_client->trust10 = trust_policy_util_get_trust10(env, service_policy, &sts_client->sec_policy); } return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_sts_client_set_issuer_address( trust_sts_client_t * sts_client, const axutil_env_t * env, axis2_char_t * address) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, address, AXIS2_FAILURE); sts_client->issuer_address = address; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL trust_sts_client_get_issuer_address( trust_sts_client_t * sts_client, const axutil_env_t * env) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); return sts_client->issuer_address; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_sts_client_set_home_dir( trust_sts_client_t * sts_client, const axutil_env_t * env, axis2_char_t * directory) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, directory, AXIS2_FAILURE); sts_client->home_dir = directory; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL trust_sts_client_get_home_dir( trust_sts_client_t * sts_client, const axutil_env_t * env) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); return sts_client->home_dir; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_sts_client_set_issuer_policy_location( trust_sts_client_t * sts_client, const axutil_env_t * env, axis2_char_t * file_path) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, file_path, AXIS2_FAILURE); sts_client->issuer_policy_location = file_path; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL trust_sts_client_get_issuer_policy_location( trust_sts_client_t * sts_client, const axutil_env_t * env) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); return sts_client->issuer_policy_location; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_sts_client_set_service_policy_location( trust_sts_client_t * sts_client, const axutil_env_t * env, axis2_char_t * file_path) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, file_path, AXIS2_FAILURE); sts_client->service_policy_location = file_path; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL trust_sts_client_get_service_policy_location( trust_sts_client_t * sts_client, const axutil_env_t * env) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); return sts_client->service_policy_location; } AXIS2_EXTERN oxs_buffer_t* AXIS2_CALL trust_sts_client_request_security_token_using_policy( trust_sts_client_t * sts_client, const axutil_env_t * env, trust_context_t *trust_context, neethi_policy_t *issuer_policy, axis2_char_t *address_version, axis2_bool_t is_soap11, rampart_context_t *rampart_context) { axis2_status_t status = AXIS2_SUCCESS; axiom_node_t *rst_node = NULL; axiom_node_t *return_node = NULL; axis2_op_client_t* op_client = NULL; axis2_msg_ctx_t *in_msg_ctx = NULL; /*Action Logic*/ trust_rst_t *rst = NULL; axis2_char_t *request_type = NULL; axis2_char_t *wsa_action = NULL; trust_sts_client_process_policies(sts_client, env, issuer_policy, issuer_policy); /*Action Logic - RequestType - used for specify the requesting action*/ rst = trust_context_get_rst(trust_context, env); if(NULL == rst) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] RST is NULL: Created RST_CTX may not set to TrustContest"); return NULL; } request_type = trust_rst_get_request_type(rst, env); wsa_action = trust_rst_get_wsa_action(rst, env); if(NULL == request_type) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] RST-RequestType is NOT set. RST MUST have a RequestType"); return NULL; } if(NULL == wsa_action) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] RST-WSA-Action is NOT set"); } sts_client->svc_client = trust_sts_client_get_svc_client(sts_client, env, wsa_action, address_version, is_soap11); if (sts_client->svc_client) { /* if rampart context is set, we can set it to svc_client. This will be used by * scripting bindings to specify rampart specific values */ if(rampart_context) { axis2_svc_ctx_t *svc_ctx = NULL; axis2_conf_ctx_t *conf_ctx = NULL; axis2_conf_t *conf = NULL; axutil_param_t *security_param = NULL; svc_ctx = axis2_svc_client_get_svc_ctx (sts_client->svc_client, env); conf_ctx = axis2_svc_ctx_get_conf_ctx (svc_ctx, env); conf = axis2_conf_ctx_get_conf (conf_ctx, env); security_param = axutil_param_create ( env, RAMPART_CONFIGURATION, (void *)rampart_context); axis2_conf_add_param (conf, env, security_param); } if(issuer_policy) { status = axis2_svc_client_set_policy(sts_client->svc_client, env, issuer_policy); if (status == AXIS2_FAILURE) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Policy setting failed."); } /*insert entropy if needed*/ trust_sts_client_insert_entropy(sts_client, env, rst); } /*Building the RST */ rst_node = trust_context_build_rst_node(trust_context, env); if(rst_node) { return_node = axis2_svc_client_send_receive(sts_client->svc_client, env, rst_node); sts_client->sent_rst_node = return_node; /*Processing Response*/ if(!return_node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] Return axiom node NULL"); } else { /*---- for debug ------*/ /*axis2_char_t *serialise_node = NULL; serialise_node = axiom_node_to_string(return_node, env); printf("sct reply is %s\n", serialise_node);*/ /*---- End for debug ------*/ /*Processing IN_MSG_CONTEXT*/ op_client = axis2_svc_client_get_op_client(sts_client->svc_client, env); if(op_client) { in_msg_ctx = (axis2_msg_ctx_t *)axis2_op_client_get_msg_ctx (op_client, env, AXIS2_WSDL_MESSAGE_LABEL_IN); if(in_msg_ctx) { trust_context_process_rstr(trust_context, env, in_msg_ctx); sts_client->received_in_msg_ctx = in_msg_ctx; /*Store the in_msg_context for sec_header extentions in trust*/ return trust_sts_client_compute_key(sts_client, env, rst, trust_context_get_rstr(trust_context, env)); } } } } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] RST-Not send -> RST Node building failed"); return NULL; } } return NULL; } static void trust_sts_client_insert_entropy( trust_sts_client_t *sts_client, const axutil_env_t *env, trust_rst_t *rst) { axis2_char_t *request_type = NULL; int key_size = 0; axis2_char_t *nonce = NULL; trust_entropy_t* entropy = NULL; request_type = trust_rst_get_request_type(rst, env); /*we support entropy for issue only*/ if(0 != axutil_strcmp(request_type, TRUST_REQ_TYPE_ISSUE)) return; /*if entropy is already give, no need to create*/ if(trust_rst_get_entropy(rst, env)) return; /*if algorithm suite is missing or trust10 is missing, then we can't proceed*/ if((!sts_client->algo_suite) || (!sts_client->trust10)) return; /*check whether client entropy is needed. If not can return*/ if(!rp_trust10_get_require_client_entropy(sts_client->trust10, env)) return; key_size = rp_algorithmsuite_get_max_symmetric_keylength(sts_client->algo_suite, env); if (key_size <= 0) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] maximum symmetric key length of issuer algorithm suite is not valid"); return; } /*nonce should be created with half the size. size is in bits, have to convert it to bytes*/ nonce = oxs_util_generate_nonce(env, key_size/16); if(!nonce) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] cannon create nonce with length %d", key_size/16); return; } entropy = trust_entropy_create(env); trust_entropy_set_binary_secret(entropy, env, nonce); trust_entropy_set_ns_uri(entropy, env, trust_rst_get_wst_ns_uri(rst, env)); trust_entropy_set_binary_secret_type(entropy, env, NONCE); trust_rst_set_key_size(rst, env, key_size); trust_rst_set_entropy(rst, env, entropy); return; } static oxs_buffer_t* trust_sts_client_compute_key(trust_sts_client_t *sts_client, const axutil_env_t *env, trust_rst_t *rst, trust_rstr_t *rstr) { trust_entropy_t* requester_entropy = NULL; axiom_node_t *proof_token = NULL; /*if rstr is not valid, then can't proceed*/ if(!rstr) return NULL; /*if requester doesn't provide entropy, then no need to compute the key */ requester_entropy = trust_rst_get_entropy(rst, env); if((!requester_entropy) || (!trust_entropy_get_binary_secret(requester_entropy, env))) return NULL; /*check the proof token whether to compute the token or not*/ proof_token = trust_rstr_get_requested_proof_token(rstr, env); /*if issuer doesn't give a proof token/entropy, then requester_entropy is the key*/ if(!proof_token) { oxs_buffer_t *buffer = NULL; int decoded_len = 0; axis2_char_t *decoded_shared_secret = NULL; axis2_char_t* shared_secret = NULL; shared_secret = trust_entropy_get_binary_secret(requester_entropy, env); decoded_len = axutil_base64_decode_len(shared_secret); decoded_shared_secret = AXIS2_MALLOC(env->allocator, decoded_len); axutil_base64_decode_binary((unsigned char*)decoded_shared_secret, shared_secret); buffer = oxs_buffer_create(env); oxs_buffer_populate(buffer, env, (unsigned char*)decoded_shared_secret, decoded_len); AXIS2_FREE(env->allocator, decoded_shared_secret); return buffer; } else /*proof token is available. We have to check the content of proof token*/ { axis2_char_t *local_name = NULL; axis2_char_t *compute_key_algo = NULL; trust_entropy_t* issuer_entropy = NULL; int key_size = 0; axis2_char_t *output = NULL; oxs_buffer_t *buffer = NULL; int requester_entropy_len = 0; axis2_char_t *decoded_requester_entropy = NULL; axis2_char_t *requester_nonce = NULL; int issuer_entropy_len = 0; axis2_char_t *decoded_issuer_entropy = NULL; axis2_char_t *issuer_nonce = NULL; local_name = axiom_util_get_localname(proof_token, env); /*if local name is not ComputedKey, then we can return*/ if(axutil_strcmp(local_name, TRUST_COMPUTED_KEY) != 0) return NULL; key_size = trust_rst_get_key_size(rst, env)/8; if(key_size <= 0) return NULL; compute_key_algo = oxs_axiom_get_node_content(env, proof_token); buffer = oxs_buffer_create(env); requester_nonce = trust_entropy_get_binary_secret(requester_entropy, env); requester_entropy_len = axutil_base64_decode_len(requester_nonce); decoded_requester_entropy = AXIS2_MALLOC(env->allocator, requester_entropy_len); axutil_base64_decode_binary((unsigned char*)decoded_requester_entropy, requester_nonce); issuer_entropy = trust_rstr_get_entropy(rstr, env); /*if issuer doesn't provide entropy, we can take requester entropy as key*/ if((!requester_entropy) || (!trust_entropy_get_binary_secret(requester_entropy, env))) { oxs_buffer_populate(buffer, env, (unsigned char*)decoded_requester_entropy, requester_entropy_len); AXIS2_FREE(env->allocator, decoded_requester_entropy); return buffer; } issuer_nonce = trust_entropy_get_binary_secret(issuer_entropy, env); issuer_entropy_len = axutil_base64_decode_len(issuer_nonce); decoded_issuer_entropy = AXIS2_MALLOC(env->allocator, issuer_entropy_len); axutil_base64_decode_binary((unsigned char*)decoded_issuer_entropy, issuer_nonce); output = AXIS2_MALLOC(env->allocator, key_size); openssl_p_hash(env, (unsigned char*)decoded_requester_entropy, requester_entropy_len, (unsigned char*)decoded_issuer_entropy, issuer_entropy_len, (unsigned char*)output, key_size); oxs_buffer_populate(buffer, env, (unsigned char*)output, key_size); return buffer; } } rampartc-src-1.3.0/src/trust/rstr.c0000644000076500007650000004740011202453414017072 0ustar shankarshankar/* * 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. */ #include struct trust_rstr{ axis2_char_t *attr_context; /*Context Attribute of RSTR : same as RST context attribute */ axis2_char_t *token_type; axis2_char_t *request_type; axiom_node_t *requested_sec_token; axis2_char_t *applies_to; axiom_node_t *requested_attached_ref; axiom_node_t *requested_unattached_ref; axiom_node_t *requested_proof_token; trust_entropy_t *entropy; trust_life_time_t *life_time; int key_size; axis2_char_t *wst_ns_uri; /*Use state whether response is going inside soap header or soap body*/ axis2_bool_t in_header; }; AXIS2_EXTERN trust_rstr_t * AXIS2_CALL trust_rstr_create( const axutil_env_t *env) { trust_rstr_t *rstr = NULL; rstr = (trust_rstr_t*)AXIS2_MALLOC(env->allocator, sizeof(trust_rstr_t)); rstr->token_type = NULL; rstr->attr_context = NULL; rstr->request_type = NULL; rstr->requested_sec_token = NULL; rstr->applies_to = NULL; rstr->requested_attached_ref = NULL; rstr->requested_unattached_ref = NULL; rstr->requested_proof_token = NULL; rstr->entropy = NULL; rstr->life_time = NULL; rstr->key_size = -1; rstr->wst_ns_uri = NULL; return rstr; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rstr_free( trust_rstr_t *rstr, const axutil_env_t *env) { AXIS2_FREE(env->allocator, rstr); return AXIS2_SUCCESS; } /*Populating RSTR*/ AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rstr_populate_rstr( trust_rstr_t *rstr, const axutil_env_t *env, axiom_node_t *rstr_node) { axiom_element_t *rstr_ele = NULL; axutil_qname_t *attr_ctx_qname = NULL; axis2_char_t *attr_ctx = NULL; axiom_node_t *requested_security_token_node = NULL; axiom_element_t *requested_security_token_ele = NULL; axutil_qname_t *requested_security_token_qname = NULL; axiom_node_t *proof_token_node = NULL; axiom_element_t *proof_token_ele = NULL; axutil_qname_t *proof_token_qname = NULL; axiom_node_t *attached_reference_node = NULL; axiom_element_t *attached_reference_ele = NULL; axutil_qname_t *attached_reference_qname = NULL; axiom_node_t *unattached_reference_node = NULL; axiom_element_t *unattached_reference_ele = NULL; axutil_qname_t *unattached_reference_qname = NULL; axiom_node_t *token_type_node = NULL; axiom_element_t *token_type_ele = NULL; axutil_qname_t *token_type_qname = NULL; axis2_char_t *token_type = NULL; axutil_qname_t *applies_to_qname = NULL; axiom_node_t *appliesto_node = NULL; axiom_element_t *appliesto_ele = NULL; axiom_node_t *first_node = NULL; axiom_element_t *first_ele = NULL; trust_entropy_t *entropy = NULL; axiom_node_t *entropy_node = NULL; axiom_element_t *entropy_ele = NULL; axutil_qname_t *entropy_qname = NULL; axiom_node_t *lifetime_node = NULL; axiom_element_t *lifetime_ele = NULL; axutil_qname_t *lifetime_qname = NULL; axiom_node_t *key_size_node = NULL; axiom_element_t *key_size_ele = NULL; axutil_qname_t *key_size_qname = NULL; axis2_char_t *key_size = NULL; rstr_ele = (axiom_element_t*)axiom_node_get_data_element(rstr_node, env); /*@Context RSTR*/ attr_ctx_qname = axutil_qname_create(env, TRUST_RST_CONTEXT, rstr->wst_ns_uri, TRUST_WST); if (!attr_ctx_qname) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] Context Attribute Qname creation failed."); return AXIS2_FAILURE; } attr_ctx = axiom_element_get_attribute_value(rstr_ele, env, attr_ctx_qname); if (attr_ctx) { rstr->attr_context = attr_ctx; } axutil_qname_free(attr_ctx_qname, env); /*TokenType*/ token_type_qname = axutil_qname_create(env, TRUST_TOKEN_TYPE, rstr->wst_ns_uri, TRUST_WST); if (!token_type_qname) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] TokenType Qname creation failed."); return AXIS2_FAILURE; } token_type_ele = axiom_element_get_first_child_with_qname(rstr_ele, env, token_type_qname, rstr_node, &token_type_node); if (token_type_ele) { token_type = axiom_element_get_text(token_type_ele, env, token_type_node); if(token_type) { rstr->token_type = token_type; } } axutil_qname_free(token_type_qname, env); /*RequestedSecurityToken*/ requested_security_token_qname = axutil_qname_create(env, TRUST_REQUESTED_SECURITY_TOKEN, rstr->wst_ns_uri, TRUST_WST); if(!requested_security_token_qname) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] RequestedSecurityToken Qname creation failed."); return AXIS2_FAILURE; } requested_security_token_ele = axiom_element_get_first_child_with_qname(rstr_ele, env, requested_security_token_qname, rstr_node, &requested_security_token_node); if(requested_security_token_ele) { axiom_element_get_first_element(requested_security_token_ele, env, requested_security_token_node, &rstr->requested_sec_token); } axutil_qname_free(requested_security_token_qname, env); /*RequestedProofToken*/ proof_token_qname = axutil_qname_create(env, TRUST_REQUESTED_PROOF_TOKEN, rstr->wst_ns_uri, TRUST_WST); if(!proof_token_qname) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] RequestedProofToken Qname creation failed."); return AXIS2_FAILURE; } proof_token_ele = axiom_element_get_first_child_with_qname(rstr_ele, env, proof_token_qname, rstr_node, &proof_token_node); if(proof_token_ele) { axiom_element_get_first_element(proof_token_ele, env, proof_token_node, &rstr->requested_proof_token); } axutil_qname_free(proof_token_qname, env); /*AppliesTo*/ applies_to_qname = axutil_qname_create(env, TRUST_APPLIES_TO, TRUST_WSP_XMLNS, TRUST_WSP); if (!applies_to_qname) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] Appliesto Qname creation failed."); return AXIS2_FAILURE; } appliesto_ele = axiom_element_get_first_child_with_qname(rstr_ele, env, applies_to_qname, rstr_node, &appliesto_node); if(appliesto_ele) { first_ele = axiom_element_get_first_element(appliesto_ele, env, appliesto_node, &first_node); if(first_ele) { rstr->applies_to = axiom_element_get_text(first_ele, env, first_node); } } axutil_qname_free(applies_to_qname, env); /*Entropy*/ entropy_qname = axutil_qname_create(env, TRUST_ENTROPY, rstr->wst_ns_uri, TRUST_WST); if (!entropy_qname) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] Entropy Qname creation failed."); return AXIS2_FAILURE; } entropy_ele = axiom_element_get_first_child_with_qname(rstr_ele, env, entropy_qname, rstr_node, &entropy_node); if(entropy_ele) { entropy = trust_entropy_create(env); trust_entropy_set_ns_uri(entropy, env, rstr->wst_ns_uri); if(AXIS2_SUCCESS == trust_entropy_deserialize(entropy, env, entropy_node)) { rstr->entropy = entropy; } } axutil_qname_free(entropy_qname, env); /*LifeTime*/ lifetime_qname = axutil_qname_create(env, TRUST_LIFE_TIME, rstr->wst_ns_uri, TRUST_WST); if(!lifetime_qname) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] LifeTime Qname creation failed."); return AXIS2_FAILURE; } lifetime_ele = axiom_element_get_first_child_with_qname(rstr_ele, env, lifetime_qname, rstr_node, &lifetime_node); if(lifetime_ele) { rstr->life_time = trust_life_time_create(env); if(AXIS2_SUCCESS == trust_life_time_deserialize(rstr->life_time, env, lifetime_node)) { } } axutil_qname_free(lifetime_qname, env); /* KeySize */ key_size_qname = axutil_qname_create(env, TRUST_KEY_SIZE, rstr->wst_ns_uri, TRUST_WST); key_size_ele = axiom_element_get_first_child_with_qname(rstr_ele, env, key_size_qname, rstr_node, &key_size_node); if(key_size_ele) { key_size = axiom_element_get_text(key_size_ele, env, key_size_node); if(key_size) { rstr->key_size = atoi(key_size); } } axutil_qname_free(key_size_qname, env); /*Attached reference*/ attached_reference_qname = axutil_qname_create(env, TRUST_REQUESTED_ATTACHED_REFERENCE, rstr->wst_ns_uri, TRUST_WST); if(!attached_reference_qname) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] RequestedAttachedReference Qname creation failed."); return AXIS2_FAILURE; } attached_reference_ele = axiom_element_get_first_child_with_qname(rstr_ele, env, attached_reference_qname, rstr_node, &attached_reference_node); if(attached_reference_ele) { axiom_element_get_first_element(attached_reference_ele, env, attached_reference_node, &rstr->requested_attached_ref); } axutil_qname_free(attached_reference_qname, env); /*Unattached reference*/ unattached_reference_qname = axutil_qname_create(env, TRUST_REQUESTED_UNATTACHED_REFERENCE, rstr->wst_ns_uri, TRUST_WST); if(!unattached_reference_qname) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] RequestedUnattachedReference Qname creation failed."); return AXIS2_FAILURE; } unattached_reference_ele = axiom_element_get_first_child_with_qname(rstr_ele, env, unattached_reference_qname, rstr_node, &unattached_reference_node); if(unattached_reference_ele) { axiom_element_get_first_element(unattached_reference_ele, env, unattached_reference_node, &rstr->requested_unattached_ref); } axutil_qname_free(unattached_reference_qname, env); return AXIS2_SUCCESS; } /*Build RSTR */ AXIS2_EXTERN axiom_node_t * AXIS2_CALL trust_rstr_build_rstr( trust_rstr_t *rstr, const axutil_env_t *env, axiom_node_t *parent) { axiom_node_t *rstr_node = NULL; axis2_char_t *key_size = NULL; rstr_node = (axiom_node_t*)trust_util_create_rstr_element(env, rstr->wst_ns_uri, rstr->attr_context); if(rstr_node) { if(rstr->token_type) { if(NULL == (axiom_node_t*)trust_util_create_token_type_element(env, rstr->wst_ns_uri, rstr_node, rstr->token_type)) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] RSTR TokenType element creation failed."); return NULL; } } if(rstr->requested_sec_token) { if(NULL == (axiom_node_t*)trust_util_create_requested_security_token_element(env, rstr->wst_ns_uri, rstr_node, rstr->requested_sec_token)) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] RSTR ReqSecToken element creation failed."); return NULL; } } if(rstr->requested_proof_token) { /*Appending generic proof token node to RSTR - Here proof token can be just a session key, entropy node with binary secret * Creating the proof token is completely up to the user. Eventhough, there are some default util methods provided by trust_util to create * proof tokens. */ axiom_node_add_child(rstr_node, env, rstr->requested_proof_token); } if(rstr->applies_to) { if(NULL == (axiom_node_t*)trust_util_create_applies_to_element(env, rstr_node, rstr->applies_to, TRUST_WSA_XMLNS)) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] RSTR AppliesTo element creation failed."); return NULL; } } if(rstr->requested_attached_ref) { axiom_node_t* attached_ref = NULL; attached_ref = trust_util_create_req_attached_reference_element(env, rstr->wst_ns_uri, rstr_node); if(NULL == attached_ref) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] RSTR AttachedReference element creation failed."); return NULL; } axiom_node_add_child(attached_ref, env, rstr->requested_attached_ref); } if(rstr->requested_unattached_ref) { axiom_node_t* unattached_ref = NULL; unattached_ref = trust_util_create_req_unattached_reference_element(env, rstr->wst_ns_uri, rstr_node); if(NULL == unattached_ref) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] RSTR UnattachedReference element creation failed."); return NULL; } axiom_node_add_child(unattached_ref, env, rstr->requested_unattached_ref); } if(rstr->entropy) { if(NULL == trust_entropy_serialize(rstr->entropy, env, rstr_node)) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] RSTR Entropy element creation failed."); return NULL; } } if(rstr->life_time) { if(NULL == trust_life_time_serialize(rstr->life_time, env, rstr_node)) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] RSTR LifeTime element creation failed."); return NULL; } } if(rstr->key_size > 0) { /*INFO -keysize Malloc Size = 128 */ key_size = AXIS2_MALLOC( env->allocator, sizeof(char)*128); sprintf(key_size, "%d", rstr->key_size); if(NULL == (axiom_node_t*)trust_util_create_key_size_element(env, rstr->wst_ns_uri, rstr_node, key_size)) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] KeySize element creation failed."); return NULL; } } return rstr_node; } return NULL; } AXIS2_EXTERN axis2_char_t * AXIS2_CALL trust_rstr_get_token_type( trust_rstr_t *rstr, const axutil_env_t *env) { return rstr->token_type; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rstr_set_token_type( trust_rstr_t *rstr, const axutil_env_t *env, axis2_char_t *token_type) { if(token_type) { rstr->token_type = token_type; return AXIS2_SUCCESS; } return AXIS2_FAILURE; } AXIS2_EXTERN axis2_char_t * AXIS2_CALL trust_rstr_get_request_type( trust_rstr_t *rstr, const axutil_env_t *env) { return rstr->request_type; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rstr_set_request_type( trust_rstr_t *rstr, const axutil_env_t *env, axis2_char_t *request_type) { if(request_type) { rstr->request_type = request_type; return AXIS2_SUCCESS; } return AXIS2_FAILURE; } AXIS2_EXTERN axiom_node_t * AXIS2_CALL trust_rstr_get_requested_security_token( trust_rstr_t *rstr, const axutil_env_t *env) { return rstr->requested_sec_token; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rstr_set_requested_security_token( trust_rstr_t *rstr, const axutil_env_t *env, axiom_node_t *security_token) { if (security_token) { rstr->requested_sec_token = security_token; return AXIS2_SUCCESS; } return AXIS2_FAILURE; } AXIS2_EXTERN axis2_char_t * AXIS2_CALL trust_rstr_get_applies_to( trust_rstr_t *rstr, const axutil_env_t *env) { return rstr->applies_to; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rstr_set_applies_to( trust_rstr_t *rstr, const axutil_env_t *env, axis2_char_t *applies_to) { if (applies_to) { rstr->applies_to = applies_to; return AXIS2_SUCCESS; } return AXIS2_FAILURE; } AXIS2_EXTERN axiom_node_t * AXIS2_CALL trust_rstr_get_requested_attached_reference( trust_rstr_t *rstr, const axutil_env_t *env) { return rstr->requested_attached_ref; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rstr_set_requested_attached_reference( trust_rstr_t *rstr, const axutil_env_t *env, axiom_node_t *ref_node) { if (ref_node) { rstr->requested_attached_ref = ref_node; return AXIS2_SUCCESS; } return AXIS2_FAILURE; } AXIS2_EXTERN axiom_node_t * AXIS2_CALL trust_rstr_get_requested_unattached_reference( trust_rstr_t *rstr, const axutil_env_t *env) { return rstr->requested_unattached_ref; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rstr_set_requested_unattached_reference( trust_rstr_t *rstr, const axutil_env_t *env, axiom_node_t *ref_node) { if (ref_node) { rstr->requested_unattached_ref = ref_node; return AXIS2_SUCCESS; } return AXIS2_FAILURE; } AXIS2_EXTERN axiom_node_t * AXIS2_CALL trust_rstr_get_requested_proof_token( trust_rstr_t *rstr, const axutil_env_t *env) { return rstr->requested_proof_token; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rstr_set_requested_proof_token( trust_rstr_t *rstr, const axutil_env_t *env, axiom_node_t *proof_token) { if (proof_token) { rstr->requested_proof_token = proof_token; return AXIS2_SUCCESS; } return AXIS2_FAILURE; } AXIS2_EXTERN trust_entropy_t * AXIS2_CALL trust_rstr_get_entropy( trust_rstr_t *rstr, const axutil_env_t *env) { return rstr->entropy; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rstr_set_entropy( trust_rstr_t *rstr, const axutil_env_t *env, trust_entropy_t *entropy) { if (entropy) { rstr->entropy = entropy; return AXIS2_SUCCESS; } return AXIS2_FAILURE; } AXIS2_EXTERN trust_life_time_t* AXIS2_CALL trust_rstr_get_life_time( trust_rstr_t *rstr, const axutil_env_t *env) { return rstr->life_time; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rstr_set_life_time( trust_rstr_t *rstr, const axutil_env_t *env, trust_life_time_t *life_time) { if (life_time) { rstr->life_time = life_time; return AXIS2_SUCCESS; } return AXIS2_FAILURE; } AXIS2_EXTERN axis2_bool_t AXIS2_CALL trust_rstr_get_in_header( trust_rstr_t *rstr, const axutil_env_t *env) { return rstr->in_header; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rstr_set_in_header( trust_rstr_t *rstr, const axutil_env_t *env, axis2_bool_t in_header) { rstr->in_header = in_header; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_char_t * AXIS2_CALL trust_rstr_get_wst_ns_uri( trust_rstr_t *rstr, const axutil_env_t *env) { return rstr->wst_ns_uri; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rstr_set_wst_ns_uri( trust_rstr_t *rstr, const axutil_env_t *env, axis2_char_t *wst_ns_uri) { if(wst_ns_uri) { rstr->wst_ns_uri = wst_ns_uri; return AXIS2_SUCCESS; } return AXIS2_FAILURE; } AXIS2_EXTERN int AXIS2_CALL trust_rstr_get_key_size( trust_rstr_t *rstr, const axutil_env_t *env) { return rstr->key_size; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_rstr_set_key_size( trust_rstr_t *rstr, const axutil_env_t *env, int key_size) { rstr->key_size = key_size; return AXIS2_SUCCESS; } rampartc-src-1.3.0/src/trust/claims.c0000644000076500007650000001127011202453414017344 0ustar shankarshankar/* * 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. */ #include struct trust_claims { axis2_char_t *attr_dialect; axis2_char_t *wst_ns_uri; axutil_array_list_t * claim_list; }; AXIS2_EXTERN trust_claims_t * AXIS2_CALL trust_claims_create( const axutil_env_t *env) { trust_claims_t *claims = NULL; claims = (trust_claims_t*)AXIS2_MALLOC(env->allocator, sizeof(trust_claims_t)); claims->attr_dialect = NULL; claims->wst_ns_uri = NULL; claims->claim_list = axutil_array_list_create(env, 10); return claims; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_claims_free( trust_claims_t *claims, const axutil_env_t *env) { if(NULL != claims->claim_list) { axutil_array_list_free(claims->claim_list, env); } return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_claims_deserialize( trust_claims_t *claims, const axutil_env_t *env, axiom_node_t *claims_node) { axiom_element_t *claims_ele = NULL; axiom_children_iterator_t *children_iter = NULL; axis2_char_t *dialect_attr = NULL; axiom_node_t * temp_node = NULL; claims_ele = axiom_node_get_data_element(claims_node, env); if(claims_ele) { children_iter = axiom_element_get_children(claims_ele, env, claims_node); if(children_iter) { while (axiom_children_iterator_has_next(children_iter, env)) { temp_node = axiom_children_iterator_next( children_iter, env); if(axiom_node_get_node_type(temp_node, env) == AXIOM_ELEMENT) { axutil_array_list_add(claims->claim_list, env, temp_node); } } } dialect_attr = axiom_element_get_attribute_value_by_name(claims_ele, env, TRUST_CLAIMS_DIALECT); claims->wst_ns_uri = TRUST_WST_XMLNS_05_02; if(dialect_attr) { claims->attr_dialect = dialect_attr; } else { return AXIS2_FAILURE; } } return AXIS2_FAILURE; } AXIS2_EXTERN axiom_node_t * AXIS2_CALL trust_claims_serialize( trust_claims_t *claims, const axutil_env_t *env, axiom_node_t *parent) { axiom_node_t *claims_node = NULL; int index = 0; claims_node = (axiom_node_t*)trust_util_create_claims_element(env, TRUST_WST_XMLNS_05_02, parent, claims->attr_dialect); if(!claims_node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] Claims Element creation failed!"); return NULL; } for(index = 0; index claim_list, env); index++) { axiom_node_add_child(claims_node, env, (axiom_node_t*) axutil_array_list_get(claims->claim_list, env, index)); } return claims_node; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_claims_set_attr_dialect( trust_claims_t *claims, const axutil_env_t *env, axis2_char_t *dialect_attr) { if(dialect_attr) { claims->attr_dialect = dialect_attr; return AXIS2_SUCCESS; } return AXIS2_FAILURE; } AXIS2_EXTERN axis2_char_t * AXIS2_CALL trust_claims_get_attr_dialect( trust_claims_t *claims, const axutil_env_t *env) { return claims->attr_dialect; } AXIS2_EXTERN axutil_array_list_t * AXIS2_CALL trust_claims_get_claim_list( trust_claims_t *claims, const axutil_env_t *env) { return claims->claim_list; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_claims_set_wst_ns_uri( trust_claims_t *claims, const axutil_env_t *env, axis2_char_t *wst_ns_uri) { if(wst_ns_uri) { claims->wst_ns_uri = wst_ns_uri; return AXIS2_SUCCESS; } return AXIS2_FAILURE; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL trust_claims_get_wst_ns_uri( trust_claims_t *claims, const axutil_env_t *env) { return claims->wst_ns_uri; } rampartc-src-1.3.0/src/trust/policy_util.c0000644000076500007650000000732711202453414020440 0ustar shankarshankar/* * 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. */ #include #include AXIS2_EXTERN rp_algorithmsuite_t *AXIS2_CALL trust_policy_util_get_algorithmsuite( const axutil_env_t * env, neethi_policy_t * policy, rp_secpolicy_t **secpolicy) { rp_binding_commons_t *binding_commons = NULL; AXIS2_ENV_CHECK(env, NULL); if(!*secpolicy) *secpolicy = rp_secpolicy_builder_build(env, policy); if (!*secpolicy) { return NULL; } binding_commons = trust_policy_util_get_binding_commons(env, *secpolicy); return rp_binding_commons_get_algorithmsuite(binding_commons, env); } AXIS2_EXTERN rp_trust10_t *AXIS2_CALL trust_policy_util_get_trust10( const axutil_env_t * env, neethi_policy_t * policy, rp_secpolicy_t **secpolicy) { AXIS2_ENV_CHECK(env, NULL); if(!*secpolicy) *secpolicy = rp_secpolicy_builder_build(env, policy); if (!*secpolicy) { return NULL; } return rp_secpolicy_get_trust10(*secpolicy, env); } AXIS2_EXTERN rp_binding_commons_t *AXIS2_CALL trust_policy_util_get_binding_commons( const axutil_env_t * env, rp_secpolicy_t * secpolicy) { rp_property_t *property = NULL; property = rp_secpolicy_get_binding(secpolicy, env); if (!property) return NULL; if (rp_property_get_type(property, env) == RP_PROPERTY_ASYMMETRIC_BINDING) { rp_asymmetric_binding_t *asymmetric_binding = NULL; rp_symmetric_asymmetric_binding_commons_t *sym_asym_commons = NULL; asymmetric_binding = (rp_asymmetric_binding_t *) rp_property_get_value(property, env); if (!asymmetric_binding) return NULL; sym_asym_commons = rp_asymmetric_binding_get_symmetric_asymmetric_binding_commons(asymmetric_binding, env); if (!sym_asym_commons) return NULL; return rp_symmetric_asymmetric_binding_commons_get_binding_commons(sym_asym_commons, env); } else if (rp_property_get_type(property, env) == RP_PROPERTY_SYMMETRIC_BINDING) { rp_symmetric_binding_t *symmetric_binding = NULL; rp_symmetric_asymmetric_binding_commons_t *sym_asym_commons = NULL; symmetric_binding = (rp_symmetric_binding_t *) rp_property_get_value(property, env); if (!symmetric_binding) return NULL; sym_asym_commons = rp_symmetric_binding_get_symmetric_asymmetric_binding_commons(symmetric_binding, env); if (!sym_asym_commons) return NULL; return rp_symmetric_asymmetric_binding_commons_get_binding_commons(sym_asym_commons, env); } else if (rp_property_get_type(property, env) == RP_PROPERTY_TRANSPORT_BINDING) { rp_transport_binding_t *transport_binding = NULL; transport_binding = (rp_transport_binding_t *) rp_property_get_value(property, env); if (!transport_binding) return NULL; return rp_transport_binding_get_binding_commons(transport_binding, env); } else return NULL; } rampartc-src-1.3.0/src/trust/token.c0000644000076500007650000002661611202453414017226 0ustar shankarshankar/* * 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. */ #include struct trust_token { /*Token identifier*/ axis2_char_t *id; /*Current state of the token*/ trust_token_state_t state; /*The actual token in its current state allocator, sizeof(trust_token_t)); if(id) { token->id = id; } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] Cannot create trust token with null id!"); return NULL; } if(token_node) { token->token = token_node; } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] Cannot create trust token with null token element!"); return NULL; } if(life_node) { status = trust_token_process_life_elem(env, life_node, token); if(status == AXIS2_FAILURE) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] Lifetime element processing failed."); } } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] Cannot create trust token with null life element!"); return NULL; } return token; } AXIS2_EXTERN trust_token_t* AXIS2_CALL trust_token_create_with_dates(const axutil_env_t *env, axis2_char_t *id, axiom_node_t *token_node, axutil_date_time_t *created, axutil_date_time_t *expire) { trust_token_t *token = NULL; AXIS2_ENV_CHECK(env, AXIS2_FAILURE); token = AXIS2_MALLOC(env->allocator, sizeof(trust_token_t)); if(id) { token->id = id; } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] Cannot create trust token with null id!"); return NULL; } if(token_node) { token->token = token_node; } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] Cannot create trust token with null token element!"); return NULL; } if(created) { token->created = created; } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] Cannot create trust token with null create date!"); return NULL; } if(expire) { token->expire = expire; } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] Cannot create trust token with null expired date!"); return NULL; } return token; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_token_process_life_elem(const axutil_env_t *env, axiom_node_t *life_node, trust_token_t *token) { axiom_element_t *created_ele = NULL; axiom_element_t *expire_ele = NULL; axiom_node_t *created_node = NULL; axiom_node_t *expire_node = NULL; axiom_element_t *life_ele = NULL; axutil_date_time_t *created_dt = NULL; axutil_date_time_t *expire_dt = NULL; axutil_qname_t *created_qn = NULL; axutil_qname_t *expire_qn = NULL; axis2_status_t status = AXIS2_SUCCESS; axis2_char_t *created_str = NULL; axis2_char_t *expire_str = NULL; if(!life_node){ return AXIS2_FAILURE; } life_ele = axiom_node_get_data_element(life_node, env); created_dt = axutil_date_time_create(env); created_qn = axutil_qname_create(env, TRUST_LIFE_TIME_CREATED, TRUST_WSU_XMLNS, TRUST_WSU); created_ele = axiom_element_get_first_child_with_qname(life_ele, env, created_qn, life_node, &created_node); created_str = axiom_element_get_text(created_ele, env, created_node); status = axutil_date_time_deserialize_date_time(created_dt, env, created_str); if(status == AXIS2_FAILURE){ return status; } token->created = created_dt; expire_dt = axutil_date_time_create(env); expire_qn = axutil_qname_create(env, TRUST_LIFE_TIME_EXPIRES, TRUST_WSU_XMLNS, TRUST_WSU); expire_ele = axiom_element_get_first_child_with_qname(life_ele, env, expire_qn, life_node, &expire_node); expire_str = axiom_element_get_text(expire_ele, env, expire_node); status = axutil_date_time_deserialize_date_time(expire_dt, env, expire_str); if(status == AXIS2_FAILURE){ return status; } token->expire = expire_dt; return status; } AXIS2_EXTERN axis2_bool_t AXIS2_CALL trust_token_is_changed( const axutil_env_t *env, trust_token_t *token) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); return (token->changed); } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_token_set_changed( const axutil_env_t *env, trust_token_t *token, axis2_bool_t changed) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); if(!token) return AXIS2_FAILURE; token->changed = changed; return AXIS2_SUCCESS; } AXIS2_EXTERN trust_token_state_t AXIS2_CALL trust_token_get_state(const axutil_env_t *env, trust_token_t *token) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); if(!token) return AXIS2_FAILURE; return token->state; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_token_set_state(const axutil_env_t *env, trust_token_t *token, trust_token_state_t state) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); if(!token) return AXIS2_FAILURE; token->state = state; return AXIS2_SUCCESS; } AXIS2_EXTERN axiom_node_t* AXIS2_CALL trust_token_get_token( const axutil_env_t *env, trust_token_t *token) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); if(!token) return NULL; return token->token; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_token_set_token( const axutil_env_t *env, trust_token_t *token, axiom_node_t *token_node) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); if(!token) return AXIS2_FAILURE; token->token = token_node; return AXIS2_SUCCESS; } AXIS2_EXTERN axiom_node_t* AXIS2_CALL trust_token_get_previous_token( const axutil_env_t *env, trust_token_t *token) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); if(!token) return NULL; return token->previous_token; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_token_set_previous_token( const axutil_env_t *env, trust_token_t *token, axiom_node_t *prev_token) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); if(!token) return AXIS2_FAILURE; token->previous_token = prev_token; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_char_t* AXIS2_CALL trust_token_get_id( const axutil_env_t *env, trust_token_t *token) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); if(!token) return NULL; return token->id; } AXIS2_EXTERN axiom_node_t* AXIS2_CALL trust_token_get_attached_reference( const axutil_env_t *env, trust_token_t *token) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); if(!token) return NULL; return token->attached_reference; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_token_set_attached_reference( const axutil_env_t *env, trust_token_t *token, axiom_node_t *attached_reference) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); if(!token) return AXIS2_FAILURE; token->attached_reference = attached_reference; return AXIS2_SUCCESS; } AXIS2_EXTERN axiom_node_t* AXIS2_CALL trust_token_get_unattached_reference( const axutil_env_t *env, trust_token_t *token) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); if(!token) return NULL; return token->unattached_reference; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_token_set_unattached_reference( const axutil_env_t *env, trust_token_t *token, axiom_node_t *unattached_reference) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); if(!token) return AXIS2_FAILURE; token->unattached_reference = unattached_reference; return AXIS2_SUCCESS; } AXIS2_EXTERN axutil_date_time_t* AXIS2_CALL trust_token_get_created( const axutil_env_t *env, trust_token_t *token) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); if(!token) return NULL; return token->created; } AXIS2_EXTERN axutil_date_time_t* AXIS2_CALL trust_token_get_expires( const axutil_env_t *env, trust_token_t *token) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); if(!token) return NULL; return token->expire; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_token_set_expires( const axutil_env_t *env, trust_token_t *token, axutil_date_time_t *expire) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); if(!token) return AXIS2_FAILURE; token->expire = expire; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_char_t* AXIS2_CALL trust_token_get_issuer_address( const axutil_env_t *env, trust_token_t *token) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); if(!token) return NULL; return token->issuer_address; } rampartc-src-1.3.0/src/trust/entropy.c0000644000076500007650000001677511202453414017613 0ustar shankarshankar/* * 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. */ #include struct trust_entropy { /* Boolean to specify the type of the entropy. Entropy can be either binary secret * or encrypted key */ axis2_bool_t bin_sec; axis2_char_t *binary_secret; axis2_char_t *encrypted_key; trust_bin_sec_type_t binsec_type; axiom_node_t *other; axis2_char_t *ns_uri; }; AXIS2_EXTERN trust_entropy_t * AXIS2_CALL trust_entropy_create( const axutil_env_t *env) { trust_entropy_t *entropy = NULL; entropy = (trust_entropy_t*)AXIS2_MALLOC(env->allocator, sizeof(trust_entropy_t)); entropy->bin_sec = AXIS2_TRUE; entropy->binary_secret = NULL; entropy->binsec_type = SYMMETRIC; entropy->encrypted_key = NULL; return entropy; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_entropy_free( trust_entropy_t *entropy, const axutil_env_t *env) { return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_entropy_deserialize( trust_entropy_t *entropy, const axutil_env_t *env, axiom_node_t *entropy_node) { axutil_qname_t *bin_sec_qname = NULL; axiom_element_t *entropy_ele = NULL; axiom_node_t *bin_sec_node = NULL; axiom_element_t *bin_sec_ele = NULL; axis2_char_t *bin_sec = NULL; axis2_char_t *binsec_type = NULL; axiom_node_t *other_node = NULL; axiom_element_t *other_ele = NULL; axis2_status_t status = AXIS2_FAILURE; entropy_ele = axiom_node_get_data_element(entropy_node, env); if(entropy_ele) { bin_sec_qname = axutil_qname_create(env, TRUST_BINARY_SECRET, entropy->ns_uri, TRUST_WST); if(!bin_sec_qname) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] BinarySecret Qname creation failed."); return AXIS2_FAILURE; } bin_sec_ele = axiom_element_get_first_child_with_qname(entropy_ele, env, bin_sec_qname, entropy_node, &bin_sec_node); if(bin_sec_ele) { bin_sec = axiom_element_get_text(bin_sec_ele, env, bin_sec_node); status = trust_entropy_set_binary_secret(entropy, env, bin_sec); binsec_type = axiom_element_get_attribute_value_by_name(bin_sec_ele, env, TRUST_BIN_SEC_TYPE_ATTR); if(binsec_type) { entropy->binsec_type = trust_entropy_get_bin_sec_type_from_str(binsec_type, env); /* TODO*/ if(status == AXIS2_SUCCESS) { return AXIS2_SUCCESS; } } } else { other_ele = axiom_element_get_first_element(entropy_ele, env, entropy_node, &other_node); if(other_ele) { entropy->bin_sec = AXIS2_FALSE; entropy->other = other_node; return AXIS2_SUCCESS; } } } return AXIS2_FAILURE; } AXIS2_EXTERN axiom_node_t * AXIS2_CALL trust_entropy_serialize( trust_entropy_t *entropy, const axutil_env_t *env, axiom_node_t *parent) { axiom_node_t *entropy_node = NULL; axiom_node_t *bin_sec_node = NULL; axis2_char_t *bin_sec_type = NULL; entropy_node = (axiom_node_t*)trust_util_create_entropy_element(env, entropy->ns_uri, parent); if(entropy_node) { if(entropy->bin_sec == AXIS2_TRUE) { bin_sec_type = trust_entropy_get_str_for_bin_sec_type(entropy->binsec_type, env); bin_sec_node = (axiom_node_t*)trust_util_create_binary_secret_element(env, entropy->ns_uri, entropy_node, entropy->binary_secret, bin_sec_type); if(bin_sec_node) { return entropy_node; } } else { if(AXIS2_SUCCESS == axiom_node_add_child(entropy_node, env, entropy->other)) { return entropy_node; } } } return NULL; } AXIS2_EXTERN axis2_char_t * AXIS2_CALL trust_entropy_get_binary_secret( trust_entropy_t *entropy, const axutil_env_t *env) { if(entropy->bin_sec == AXIS2_TRUE) { return entropy->binary_secret; } return NULL; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_entropy_set_binary_secret( trust_entropy_t *entropy, const axutil_env_t *env, axis2_char_t *bin_sec) { if(bin_sec) { entropy->binary_secret = bin_sec; entropy->bin_sec = AXIS2_TRUE; return AXIS2_SUCCESS; } return AXIS2_FALSE; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_entropy_set_binary_secret_type( trust_entropy_t *entropy, const axutil_env_t *env, trust_bin_sec_type_t binsec_type) { entropy->binsec_type = binsec_type; return AXIS2_SUCCESS; } AXIS2_EXTERN axiom_node_t * AXIS2_CALL trust_entropy_get_other( trust_entropy_t *entropy, const axutil_env_t *env) { if(entropy->bin_sec == AXIS2_FALSE) { return entropy->other; } return NULL; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_entropy_set_other( trust_entropy_t *entropy, const axutil_env_t *env, axiom_node_t *other_node) { if(other_node) { entropy->bin_sec = AXIS2_FALSE; entropy->other = other_node; return AXIS2_SUCCESS; } return AXIS2_FAILURE; } AXIS2_EXTERN axis2_char_t * AXIS2_CALL trust_entropy_get_ns_uri( trust_entropy_t *entropy, const axutil_env_t *env) { return entropy->ns_uri; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_entropy_set_ns_uri( trust_entropy_t *entropy, const axutil_env_t *env, axis2_char_t *ns_uri) { if(ns_uri) { entropy->ns_uri = ns_uri; return AXIS2_SUCCESS; } return AXIS2_FAILURE; } AXIS2_EXTERN trust_bin_sec_type_t AXIS2_CALL trust_entropy_get_bin_sec_type_from_str( axis2_char_t *str, const axutil_env_t *env) { if(!axutil_strcmp(str, BIN_SEC_ASSYM)) { return ASYMMETRIC; } else if(!axutil_strcmp(str, BIN_SEC_SYM)) { return SYMMETRIC; } else if(!axutil_strcmp(str, BIN_SEC_NONCE)) { return NONCE; } return BIN_SEC_TYPE_ERROR; } AXIS2_EXTERN axis2_char_t * AXIS2_CALL trust_entropy_get_str_for_bin_sec_type( trust_bin_sec_type_t type, const axutil_env_t *env) { if(type == ASYMMETRIC) { return axutil_strdup(env, BIN_SEC_ASSYM); } else if (type == SYMMETRIC) { return axutil_strdup(env, BIN_SEC_SYM); } else if (type == NONCE) { return axutil_strdup(env, BIN_SEC_NONCE); } return NULL; } rampartc-src-1.3.0/src/trust/life_time.c0000644000076500007650000002354511202453414020041 0ustar shankarshankar/* * 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. */ #include struct trust_life_time { int ttl; axutil_date_time_t *created; axutil_date_time_t *expires; axis2_char_t *wst_ns_uri; axis2_char_t *wsu_ns_uri; }; AXIS2_EXTERN trust_life_time_t * AXIS2_CALL trust_life_time_create( const axutil_env_t *env) { trust_life_time_t *life_time = NULL; life_time = (trust_life_time_t*)AXIS2_MALLOC(env->allocator, sizeof(trust_life_time_t)); life_time->ttl = -1; life_time->created = NULL; life_time->expires = NULL; life_time->wst_ns_uri = NULL; life_time->wsu_ns_uri = NULL; return life_time; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_life_time_free( trust_life_time_t *life_time, const axutil_env_t *env) { return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_life_time_deserialize( trust_life_time_t *life_time, const axutil_env_t *env, axiom_node_t *life_time_node) { axiom_element_t *life_time_ele = NULL; axutil_qname_t *created_qname = NULL; axutil_qname_t *expires_qname = NULL; axiom_element_t *created_ele = NULL; axiom_element_t *expires_ele = NULL; axiom_node_t *created_node = NULL; axiom_node_t *expires_node = NULL; axis2_char_t *created_str = NULL; axis2_char_t *expires_str = NULL; axutil_date_time_t *created = NULL; axutil_date_time_t *expires = NULL; axis2_status_t status = AXIS2_FAILURE; life_time_ele = axiom_node_get_data_element(life_time_node, env); if(life_time_ele) { created_qname = axutil_qname_create(env, TRUST_LIFE_TIME_CREATED, TRUST_WSU_XMLNS, TRUST_WSU); if(!created_qname) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] Created Qname creation failed."); return AXIS2_FAILURE; } created_ele = axiom_element_get_first_child_with_qname(life_time_ele, env, created_qname, life_time_node, &created_node); if(created_ele) { created_str = axiom_element_get_text(created_ele, env, created_node); if(created_str) { created = axutil_date_time_create(env); if(AXIS2_SUCCESS == axutil_date_time_deserialize_date_time(created, env, created_str)) { life_time->created = created; status = AXIS2_SUCCESS; } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] Deserializing created time failed."); return AXIS2_FAILURE; } } } expires_qname = axutil_qname_create(env, TRUST_LIFE_TIME_EXPIRES, TRUST_WSU_XMLNS, TRUST_WSU); if(!created_qname) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] Expires Qname creation failed."); return AXIS2_FAILURE; } expires_ele = axiom_element_get_first_child_with_qname(life_time_ele, env, expires_qname, life_time_node, &expires_node); if(expires_ele) { expires_str = axiom_element_get_text(expires_ele, env, expires_node); if(created_str) { expires = axutil_date_time_create(env); if(AXIS2_SUCCESS == axutil_date_time_deserialize_date_time(expires, env, expires_str)) { life_time->expires = expires; status = AXIS2_SUCCESS; } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] Deserializing created time failed."); return AXIS2_FAILURE; } } } if(status == AXIS2_SUCCESS) return AXIS2_SUCCESS; } return AXIS2_FAILURE; } AXIS2_EXTERN axiom_node_t *AXIS2_CALL trust_life_time_serialize( trust_life_time_t *life_time, const axutil_env_t *env, axiom_node_t *parent) { axiom_node_t *life_time_node = NULL; axiom_node_t *created_node = NULL; axiom_node_t *expires_node = NULL; axiom_element_t *life_time_ele = NULL; axiom_element_t *created_ele = NULL; axiom_element_t *expires_ele = NULL; axiom_namespace_t *wsu_ns = NULL; axiom_namespace_t *wst_ns = NULL; axis2_status_t status = AXIS2_SUCCESS; axis2_char_t *created_str = NULL; axis2_char_t *expires_str = NULL; if(life_time->ttl != -1 && life_time->ttl > 0) { life_time_node = (axiom_node_t*)trust_util_create_life_time_element(env, parent, life_time->wst_ns_uri, life_time->ttl); if(!life_time_node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] Life time element creation failed for ttl."); return NULL; } return life_time_node; } else { if(life_time->created || life_time->expires) { wsu_ns = axiom_namespace_create(env, TRUST_WSU_XMLNS, TRUST_WSU); wst_ns = axiom_namespace_create(env, life_time->wst_ns_uri, TRUST_WST); life_time_ele = axiom_element_create(env, parent, TRUST_LIFE_TIME, wst_ns, &life_time_node); if(life_time_ele) { if(life_time->created) { created_ele = axiom_element_create(env, life_time_node, TRUST_LIFE_TIME_CREATED, wsu_ns, &created_node); if(created_ele) { created_str = axutil_date_time_serialize_date_time(life_time->created, env); status = axiom_element_set_text(created_ele, env, created_str, created_node); if (status == AXIS2_FAILURE) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] Created Element's setting text failed."); return NULL; } AXIS2_FREE(env->allocator, created_str); } } if(life_time->expires) { expires_ele = axiom_element_create(env, life_time_node, TRUST_LIFE_TIME_EXPIRES, wsu_ns, &expires_node); if(expires_ele) { expires_str = axutil_date_time_serialize_date_time(life_time->expires, env); status = axiom_element_set_text(expires_ele, env, expires_str, expires_node); if (status == AXIS2_FAILURE) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] Expires Element's setting text failed."); return NULL; } AXIS2_FREE(env->allocator, expires_str); } } return life_time_node; } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] LifeTime element creation failed."); return NULL; } } } return NULL; } AXIS2_EXTERN int AXIS2_CALL trust_life_time_get_ttl( trust_life_time_t *life_time, const axutil_env_t *env) { return life_time->ttl; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_life_time_set_ttl( trust_life_time_t *life_time, const axutil_env_t *env, int ttl) { if(ttl>0) { life_time->ttl = ttl; return AXIS2_SUCCESS; } return AXIS2_FAILURE; } AXIS2_EXTERN axutil_date_time_t * AXIS2_CALL trust_life_time_get_created( trust_life_time_t *life_time, const axutil_env_t *env) { return life_time->created; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_life_time_set_created( trust_life_time_t *life_time, const axutil_env_t *env, axutil_date_time_t *created) { if(created) { life_time->created = created; return AXIS2_SUCCESS; } return AXIS2_FAILURE; } AXIS2_EXTERN axutil_date_time_t * AXIS2_CALL trust_life_time_get_expires( trust_life_time_t *life_time, const axutil_env_t *env) { return life_time->expires; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_life_time_set_expires( trust_life_time_t *life_time, const axutil_env_t *env, axutil_date_time_t *expires) { if(expires) { life_time->expires = expires; return AXIS2_SUCCESS; } return AXIS2_FAILURE; } AXIS2_EXTERN axis2_char_t * AXIS2_CALL trust_life_time_get_ns_uri( trust_life_time_t *life_time, const axutil_env_t *env) { return life_time->wst_ns_uri; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_life_time_set_ns_uri( trust_life_time_t *life_time, const axutil_env_t *env, axis2_char_t *ns_uri) { if(ns_uri) { life_time->wst_ns_uri = ns_uri; return AXIS2_SUCCESS; } return AXIS2_FAILURE; } rampartc-src-1.3.0/src/trust/context.c0000644000076500007650000001773611202453414017575 0ustar shankarshankar/* * 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. */ #include # struct trust_context { axis2_char_t *wst_namespace; axis2_char_t *soap_namespace; /*RST Context*/ trust_rst_t *rst; /*RSTR Context*/ trust_rstr_t *rstr; /*To store the built RST node*/ axiom_node_t *rst_node; /*To store the built RSTR node*/ axiom_node_t *rstr_node; /*Extensible - Other Contexts Related to Trust */ }; AXIS2_EXTERN trust_context_t *AXIS2_CALL trust_context_create( const axutil_env_t * env) { trust_context_t *trust_context = NULL; trust_context = (trust_context_t *) AXIS2_MALLOC(env->allocator, sizeof(trust_context_t)); trust_context->wst_namespace = NULL; trust_context->soap_namespace = NULL; trust_context->rst = NULL; trust_context->rstr = NULL; trust_context->rst_node = NULL; trust_context->rstr_node = NULL; return trust_context; } /*Free Contexts*/ AXIS2_EXTERN void AXIS2_CALL trust_context_free( trust_context_t *trust_context, const axutil_env_t * env) { if (trust_context) { if(trust_context->rst) trust_rst_free(trust_context->rst, env); if(trust_context->rstr) trust_rstr_free(trust_context->rstr, env); /*Free Other Contexts*/ AXIS2_FREE(env->allocator, trust_context); } } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_context_process_rst( trust_context_t *trust_context, const axutil_env_t * env, axis2_msg_ctx_t * in_msg_ctx) { axiom_soap_envelope_t *soap_env = NULL; axiom_soap_body_t *soap_body = NULL; axiom_namespace_t *soap_ns = NULL; axiom_namespace_t *wst_ns = NULL; axiom_node_t *body_base_node = NULL; axiom_element_t *rst_ele = NULL; int trust_version = -1; /* Processing Message Context*/ soap_env = axis2_msg_ctx_get_soap_envelope(in_msg_ctx, env); soap_body = axiom_soap_envelope_get_body(soap_env, env); body_base_node = axiom_soap_body_get_base_node(soap_body, env); trust_context->rst_node = axiom_node_get_first_child(body_base_node, env); /* Processing SOAP Namespace */ soap_ns = axiom_soap_envelope_get_namespace(soap_env, env); trust_context->soap_namespace = axiom_namespace_get_uri(soap_ns, env); /* Processing WS-Trust namespace*/ rst_ele = (axiom_element_t *) axiom_node_get_data_element(trust_context->rst_node, env); wst_ns = axiom_element_get_namespace(rst_ele, env, trust_context->rst_node); trust_context->wst_namespace = axiom_namespace_get_uri(wst_ns, env); if(0 == axutil_strcmp(trust_context->wst_namespace, TRUST_WST_XMLNS_05_02)) { trust_version = 1; } if(0 == axutil_strcmp(trust_context->wst_namespace, TRUST_WST_XMLNS_05_12)) { trust_version = 2; } trust_context->rst = trust_rst_create(env); if(trust_version != -1) { trust_rst_set_wst_ns_uri(trust_context->rst, env, trust_context->wst_namespace); if(AXIS2_SUCCESS == trust_rst_populate_rst(trust_context->rst, env, trust_context->rst_node)) { return AXIS2_SUCCESS; } } AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] Invalid WST Version in RST message or RST node processing failed!"); return AXIS2_FAILURE; } AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_context_process_rstr( trust_context_t *trust_context, const axutil_env_t * env, axis2_msg_ctx_t * in_msg_ctx) { axiom_soap_envelope_t *soap_env = NULL; axiom_soap_body_t *soap_body = NULL; axiom_namespace_t *soap_ns = NULL; axiom_namespace_t *wst_ns = NULL; axiom_node_t *body_base_node = NULL; axiom_element_t *rstr_ele = NULL; int trust_version = -1; /* Processing Message Context*/ soap_env = axis2_msg_ctx_get_soap_envelope(in_msg_ctx, env); soap_body = axiom_soap_envelope_get_body(soap_env, env); body_base_node = axiom_soap_body_get_base_node(soap_body, env); trust_context->rstr_node = axiom_node_get_first_child(body_base_node, env); /* Processing SOAP Namespace */ soap_ns = axiom_soap_envelope_get_namespace(soap_env, env); trust_context->soap_namespace = axiom_namespace_get_uri(soap_ns, env); rstr_ele = (axiom_element_t *) axiom_node_get_data_element(trust_context->rstr_node, env); wst_ns = axiom_element_get_namespace(rstr_ele, env, trust_context->rstr_node); trust_context->wst_namespace = axiom_namespace_get_uri(wst_ns, env); if(0 == axutil_strcmp(trust_context->wst_namespace, TRUST_WST_XMLNS_05_02)) { trust_version = 1; } if(0 == axutil_strcmp(trust_context->wst_namespace, TRUST_WST_XMLNS_05_12)) { trust_version = 2; } trust_context->rstr = trust_rstr_create(env); if(trust_version != -1) { trust_rstr_set_wst_ns_uri(trust_context->rstr, env, trust_context->wst_namespace); if(AXIS2_SUCCESS == trust_rstr_populate_rstr(trust_context->rstr, env, trust_context->rstr_node)) { return AXIS2_SUCCESS; } } AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] Invalid WST Version in RSTR message"); return AXIS2_FAILURE; } /*Build RST Node from created RST_CONTEXT */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL trust_context_build_rst_node( trust_context_t *trust_context, const axutil_env_t * env) { if(trust_context->rst) { trust_context->rst_node = trust_rst_build_rst(trust_context->rst, env, NULL); if(trust_context->rst_node) { AXIS2_LOG_INFO(env->log, "Node Not NULL"); } else { AXIS2_LOG_INFO(env->log, "Node -- NULL"); } return trust_context->rst_node; } AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] RST_OM -> RST node FAILED:RST_OM NULL"); return NULL; } /*Build RSTR Node from created RSTR_CONTEXT */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL trust_context_build_rstr_node( trust_context_t *trust_context, const axutil_env_t * env) { if(trust_context->rstr) { trust_context->rstr_node = trust_rstr_build_rstr(trust_context->rstr, env, NULL); return trust_context->rstr_node; } AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] RSTR_OM -> RSTR node FAILED:RSTR_OM NULL"); return NULL; } /*Get Populated RST_CONTEXT */ AXIS2_EXTERN trust_rst_t* AXIS2_CALL trust_context_get_rst( trust_context_t *trust_context, const axutil_env_t * env) { if(trust_context) return trust_context->rst; return NULL; } /*Get Populated RSTR_CONTEXT */ AXIS2_EXTERN trust_rstr_t* AXIS2_CALL trust_context_get_rstr( trust_context_t *trust_context, const axutil_env_t * env) { if(trust_context) { return trust_context->rstr; } return NULL; } /*Set RST_CONTEXT */ AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_context_set_rst( trust_context_t *trust_context, const axutil_env_t * env, trust_rst_t *rst) { if(trust_context) { trust_context->rst = rst; return AXIS2_SUCCESS; } return AXIS2_FAILURE; } /*Set RSTR_CONTEXT */ AXIS2_EXTERN axis2_status_t AXIS2_CALL trust_context_set_rstr( trust_context_t *trust_context, const axutil_env_t * env, trust_rstr_t *rstr) { if(trust_context) { trust_context->rstr = rstr; return AXIS2_SUCCESS; } return AXIS2_FAILURE; } rampartc-src-1.3.0/src/trust/Makefile.in0000644000076500007650000003422611202453550020004 0ustar shankarshankar# Makefile.in generated by automake 1.10.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = src/trust DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libtrust_la_LIBADD = am_libtrust_la_OBJECTS = context.lo claims.lo entropy.lo life_time.lo \ rst.lo rstr.lo trust_util.lo sts_client.lo policy_util.lo \ token.lo libtrust_la_OBJECTS = $(am_libtrust_la_OBJECTS) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = $(libtrust_la_SOURCES) DIST_SOURCES = $(libtrust_la_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ AXIOMINC = @AXIOMINC@ AXIS2INC = @AXIS2INC@ AXIS2LIB = @AXIS2LIB@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NEETHIINC = @NEETHIINC@ OBJEXT = @OBJEXT@ OPENSSLINC = @OPENSSLINC@ OPENSSLLIB = @OPENSSLLIB@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UTILINC = @UTILINC@ VERSION = @VERSION@ VERSION_NO = @VERSION_NO@ XMLSCHEMAINC = @XMLSCHEMAINC@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ noinst_LTLIBRARIES = libtrust.la libtrust_la_SOURCES = context.c \ claims.c \ entropy.c \ life_time.c \ rst.c \ rstr.c \ trust_util.c \ sts_client.c \ policy_util.c \ token.c INCLUDES = -I$(top_builddir)/include \ -I ../../../../util/include \ -I ../../../../include \ -I ../../../../axiom/include \ @OPENSSLINC@ \ @UTILINC@ \ @AXIOMINC@ \ @AXIS2INC@ all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/trust/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu src/trust/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ test "$$dir" != "$$p" || dir=.; \ echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done libtrust.la: $(libtrust_la_OBJECTS) $(libtrust_la_DEPENDENCIES) $(LINK) $(libtrust_la_OBJECTS) $(libtrust_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/claims.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/context.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/entropy.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/life_time.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/policy_util.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rst.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rstr.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sts_client.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/token.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/trust_util.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-exec-am: install-html: install-html-am install-info: install-info-am install-man: install-pdf: install-pdf-am install-ps: install-ps-am installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: rampartc-src-1.3.0/src/util/0000755000076500007650000000000011202454477015535 5ustar shankarshankarrampartc-src-1.3.0/src/util/rampart_engine.c0000644000076500007650000005661511202453425020701 0ustar shankarshankar/* * 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. */ /* * */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include /*This method sets all the configurations loads required modules and start rampart.*/ neethi_policy_t *AXIS2_CALL build_policy( const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axis2_bool_t is_inflow); axis2_status_t AXIS2_CALL set_rampart_user_properties( const axutil_env_t *env, rampart_context_t *rampart_context); axis2_status_t AXIS2_CALL rampart_engine_retrieve_key_mgr_prop_from_policy( rampart_context_t *rampart_context, const axutil_env_t *env); AXIS2_EXTERN rampart_context_t *AXIS2_CALL rampart_engine_build_configuration( const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axis2_bool_t is_inflow) { rp_secpolicy_t *secpolicy = NULL; rampart_context_t *rampart_context = NULL; axis2_status_t status = AXIS2_SUCCESS; axis2_bool_t is_server_side = AXIS2_TRUE; neethi_policy_t *policy = NULL; axutil_property_t *property = NULL; void *value = NULL; /* Key Manager related */ oxs_key_mgr_t *key_mgr = NULL; axis2_char_t *password = NULL; axis2_char_t *enc_user = NULL; axis2_char_t *pkcs12_file = NULL; axis2_char_t *pkcs12_password = NULL; axis2_char_t *pkcs12_buf = NULL; password_callback_fn password_function = NULL; rampart_callback_t *password_callback = NULL; pkcs12_keystore_t *key_store = NULL; is_server_side = axis2_msg_ctx_get_server_side(msg_ctx, env); /*policy has to be created for inflow and outflow for server side. but for client side, it will be created only on outflow*/ if(is_server_side || (!is_server_side && !is_inflow)) { policy = build_policy(env, msg_ctx, is_inflow); if(!policy) { rampart_create_fault_envelope(env, RAMPART_FAULT_FAILED_CHECK, "Error in the Internal configuration.", RAMPART_FAULT_IN_POLICY, msg_ctx); AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_engine] Policy creation failed."); return NULL; } } /* for server side's outflow and client side's inflow, we have to use rampart context * created in server side's inflow or client side's out flow */ if((is_server_side && !is_inflow) || (!is_server_side && is_inflow)) { if(is_server_side) { property = axis2_msg_ctx_get_property(msg_ctx, env, RAMPART_CONTEXT); } else { /* Options from client's out message context will not be copied to in message context. * So, we have to get original out message context to access the property */ axis2_op_ctx_t *op_ctx = NULL; op_ctx = axis2_msg_ctx_get_op_ctx(msg_ctx, env); if(op_ctx) { axis2_msg_ctx_t *out_msg_ctx = NULL; out_msg_ctx = axis2_op_ctx_get_msg_ctx(op_ctx, env, AXIS2_WSDL_MESSAGE_LABEL_OUT); if(out_msg_ctx) { property = axis2_msg_ctx_get_property(out_msg_ctx, env, RAMPART_CONTEXT); } } } if(property) { rampart_context = (rampart_context_t *)axutil_property_get_value(property, env); /*for serverside, recreate security policy and attach it to rampart context. This is because, there might be differnt policy for inflow and outflow (only for server side. we are still not supporting this feature for client side*/ if(is_server_side) { secpolicy = rp_secpolicy_builder_build(env, policy); if(!secpolicy) { rampart_create_fault_envelope(env, RAMPART_FAULT_FAILED_CHECK, "Error in the Internal security policy configuration.", RAMPART_FAULT_IN_POLICY, msg_ctx); AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_engine] Cannot create security policy from policy."); return NULL; } rampart_context_set_secpolicy(rampart_context, env, secpolicy); } return (rampart_context_t *)axutil_property_get_value(property, env); } else { rampart_create_fault_envelope(env, RAMPART_FAULT_FAILED_CHECK, "Error in the Internal security policy configuration.", RAMPART_FAULT_IN_POLICY, msg_ctx); AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_engine] Cannot get saved rampart_context"); return NULL; } } /*rampart context will be created for server side's inflow and client side's out flow*/ value = rampart_get_rampart_configuration(env, msg_ctx, RAMPART_CONFIGURATION); if(value) { rampart_context = (rampart_context_t *)value; rampart_context_increment_ref(rampart_context, env); if(!rampart_context_get_secpolicy(rampart_context, env)) { secpolicy = rp_secpolicy_builder_build(env, policy); if(!secpolicy) { rampart_create_fault_envelope(env, RAMPART_FAULT_FAILED_CHECK, "Error in the Internal security policy configuration.", RAMPART_FAULT_IN_POLICY, msg_ctx); AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_engine] Cannot create security policy from policy."); return NULL; } rampart_context_set_secpolicy(rampart_context, env, secpolicy); } } else { rampart_context = rampart_context_create(env); secpolicy = rp_secpolicy_builder_build(env, policy); if(!secpolicy) { rampart_create_fault_envelope(env, RAMPART_FAULT_FAILED_CHECK, "Error in the Internal configuration.", RAMPART_FAULT_IN_POLICY, msg_ctx); AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_engine] Cannot create security policy from policy."); rampart_context_free(rampart_context, env); rampart_context = NULL; return NULL; } rampart_context_set_secpolicy(rampart_context, env, secpolicy); status = set_rampart_user_properties(env, rampart_context); if(status != AXIS2_SUCCESS) { rampart_create_fault_envelope(env, RAMPART_FAULT_FAILED_CHECK, "Error in the Internal configuration.", RAMPART_FAULT_IN_POLICY, msg_ctx); AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_engine] rampc policies creation failed."); rampart_context_free(rampart_context, env); rampart_context = NULL; return NULL; } rampart_engine_retrieve_key_mgr_prop_from_policy(rampart_context, env); } key_mgr = rampart_context_get_key_mgr(rampart_context, env); if (!key_mgr) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][engine] Key mgr creation failed."); return NULL; } /* Retrieve the password for obtaining private keys */ enc_user = rampart_context_get_encryption_user(rampart_context, env); if(!enc_user) { enc_user = rampart_context_get_user(rampart_context, env); } if(enc_user) { password_function = rampart_context_get_pwcb_function(rampart_context, env); if(password_function) { void *param = NULL; param = rampart_context_get_pwcb_user_params(rampart_context, env); password = (*password_function)(env, enc_user, param); pkcs12_password = password; } else { password_callback = rampart_context_get_password_callback( rampart_context, env); if(password_callback) { password = rampart_callback_password(env, password_callback, enc_user); pkcs12_password = rampart_callback_pkcs12_password(env, password_callback, enc_user); } else { password = rampart_context_get_password(rampart_context, env); pkcs12_password = password; } } } pkcs12_file = rampart_context_get_pkcs12_file_name(rampart_context, env); if(pkcs12_file && pkcs12_password) { key_store = pkcs12_keystore_create(env, pkcs12_file, pkcs12_password); if(!key_store) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][engine] PKCS12 KeyStore creation failed."); return NULL; } } else if(pkcs12_password && (pkcs12_buf = (axis2_char_t*)rampart_context_get_key_store_buff(rampart_context, env))) { key_store = pkcs12_keystore_create_from_buffer(env, pkcs12_buf, password, oxs_key_mgr_get_key_store_buff_len(key_mgr, env)); if(!key_store) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][engine] PKCS12 KeyStore creation failed."); return NULL; } } oxs_key_mgr_set_key_store(key_mgr, env, key_store); if (password) { oxs_key_mgr_set_prv_key_password(key_mgr, env, password); } /* Since rampart_context is for request scope, we have to store in a container which has * request scope */ property = axutil_property_create_with_args(env, AXIS2_SCOPE_REQUEST , AXIS2_TRUE, (void *)rampart_context_free, rampart_context); axis2_msg_ctx_set_property(msg_ctx, env, RAMPART_CONTEXT, property); /*For the client side*/ if(!is_server_side) { value = axis2_msg_ctx_get_property_value(msg_ctx, env, RAMPART_CLIENT_CONFIGURATION); if(value) { rampart_config_t *client_config = NULL; axutil_array_list_t *saml_tokens = NULL; axis2_char_t *config_value = NULL; issued_token_callback_func issued_token_aquire = NULL; int ttl = 0; client_config = (rampart_config_t*)value; config_value = rampart_config_get_username(client_config, env); if(config_value) { rampart_context_set_user(rampart_context, env, config_value); } config_value = rampart_config_get_password(client_config, env); if(config_value) { rampart_context_set_password(rampart_context, env, config_value); } config_value = rampart_config_get_password_type(client_config, env); if(config_value) { rampart_context_set_password_type(rampart_context, env, config_value); } ttl = rampart_config_get_ttl(client_config, env); if(ttl > 0) { rampart_context_set_ttl(rampart_context, env, ttl); } saml_tokens = rampart_config_get_saml_tokens(client_config, env); if (saml_tokens) { rampart_context_set_saml_tokens(rampart_context, env, saml_tokens); } issued_token_aquire = rampart_config_get_issued_token_aquire_function(client_config, env); if (issued_token_aquire) { rampart_context_set_issued_token_aquire_function(rampart_context, env, issued_token_aquire); } } } return rampart_context; } neethi_policy_t *AXIS2_CALL build_policy( const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axis2_bool_t is_inflow) { axis2_desc_t *desc = NULL; axis2_policy_include_t *policy_include = NULL; neethi_policy_t *service_policy = NULL; axis2_op_t *op = NULL; axis2_msg_t *msg = NULL; op = axis2_msg_ctx_get_op(msg_ctx, env); if(!op) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_engine] Cannot find policy. Operation is NULL."); return NULL; } if(is_inflow) { msg = axis2_op_get_msg(op, env, "in"); } else { msg = axis2_op_get_msg(op, env, "out"); } if(!msg) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_engine] Cannot find policy. Message is NULL."); return NULL; } desc = axis2_msg_get_base(msg, env); if(!desc) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_engine] Cannot find policy. Axis2 description is NULL."); return NULL; } policy_include = axis2_desc_get_policy_include(desc, env); if(!policy_include) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_engine] Policy include is NULL."); return NULL; } service_policy = axis2_policy_include_get_effective_policy(policy_include, env); if(!service_policy) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_engine] Policy is NULL."); return NULL; } return service_policy; } axis2_status_t AXIS2_CALL set_rampart_user_properties( const axutil_env_t *env, rampart_context_t *rampart_context) { rampart_callback_t* password_callback_module = NULL; rampart_authn_provider_t *authn_provider = NULL; rampart_replay_detector_t *replay_detector = NULL; rampart_sct_provider_t* sct_provider = NULL; axis2_char_t *pwcb_module_name = NULL; axis2_char_t *authn_provider_name = NULL; axis2_char_t *replay_detector_name = NULL; axis2_char_t *sct_provider_name = NULL; if(rampart_context_set_user_from_file(rampart_context,env) != AXIS2_SUCCESS) { return AXIS2_FAILURE; } if(rampart_context_set_ttl_from_file(rampart_context,env) != AXIS2_SUCCESS) { return AXIS2_FAILURE; } if(rampart_context_set_clock_skew_buffer_from_file(rampart_context,env) != AXIS2_SUCCESS) { return AXIS2_FAILURE; } if(rampart_context_set_need_millisecond_precision_from_file(rampart_context,env)!= AXIS2_SUCCESS) { return AXIS2_FAILURE; } if(rampart_context_set_rd_val_from_file(rampart_context,env) != AXIS2_SUCCESS) { return AXIS2_FAILURE; } if(rampart_context_set_password_type_from_file(rampart_context,env) != AXIS2_SUCCESS) { return AXIS2_FAILURE; } pwcb_module_name = rampart_context_get_password_callback_class(rampart_context,env); if(pwcb_module_name) { password_callback_module = rampart_load_pwcb_module(env, pwcb_module_name); if(password_callback_module) { rampart_context_set_password_callback(rampart_context,env,password_callback_module); } else { return AXIS2_FAILURE; } } authn_provider_name = rampart_context_get_authn_module_name(rampart_context,env); if(authn_provider_name) { authn_provider = rampart_load_auth_module(env,authn_provider_name); if(authn_provider) { rampart_context_set_authn_provider(rampart_context,env,authn_provider); } else { return AXIS2_FAILURE; } } replay_detector_name = rampart_context_get_replay_detector_name(rampart_context,env); if(replay_detector_name) { replay_detector = rampart_load_replay_detector(env,replay_detector_name); if(replay_detector) { rampart_context_set_replay_detector(rampart_context,env,(void*)replay_detector); } else { return AXIS2_FAILURE; } } else { /* if replay detector is not set, we can use replay detection function. We have to check * whether user has already set it. If not, we can use default function */ if(!rampart_context_get_replay_detect_function(rampart_context, env)) { rampart_context_set_replay_detect_function( rampart_context, env, rampart_replay_detector_default, NULL); } } sct_provider_name = rampart_context_get_sct_provider_name(rampart_context,env); if(sct_provider_name) { sct_provider = rampart_load_sct_provider(env,sct_provider_name); if(sct_provider) { rampart_sct_provider_ops_t *ops = NULL; rampart_context_set_sct_provider(rampart_context,env,(void*)sct_provider); ops = sct_provider->ops; if(ops) { void *user_param = NULL; store_security_context_token_fn store_fn = NULL; obtain_security_context_token_fn obtain_fn = NULL; delete_security_context_token_fn delete_fn = NULL; validate_security_context_token_fn validate_fn = NULL; /* we have to call sct_provider's get user param method */ if(ops->get_user_params) { user_param = ops->get_user_params(env); rampart_context_set_security_context_token_user_params( rampart_context, env, user_param); } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Cannot find 'get user param' operation of secrutiy context token " "provider."); return AXIS2_FAILURE; } /* get function pointers and set it to rampart context */ store_fn = ops->store_security_context_token; if(store_fn) { rampart_context_set_store_security_context_token_fn( rampart_context, env, store_fn); } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Cannot find 'store' operation of secrutiy context token provider."); return AXIS2_FAILURE; } obtain_fn = ops->obtain_security_context_token; if(obtain_fn) { rampart_context_set_obtain_security_context_token_fn( rampart_context, env, obtain_fn); } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Cannot find 'obtain' operation of secrutiy context token provider."); return AXIS2_FAILURE; } delete_fn = ops->delete_security_context_token; if(delete_fn) { rampart_context_set_delete_security_context_token_fn( rampart_context, env, delete_fn); } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Cannot find 'delete' operation of secrutiy context token provider."); return AXIS2_FAILURE; } validate_fn = ops->validate_security_context_token; if(validate_fn) { rampart_context_set_validate_security_context_token_fn( rampart_context, env, validate_fn); } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Cannot find 'validate' operation of secrutiy context token provider."); return AXIS2_FAILURE; } } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Cannot find operations of secrutiy context token provider."); return AXIS2_FAILURE; } } else { return AXIS2_FAILURE; } } else { /* If sct_provider is not set, we can use sct functions. We have to check whether user has * already set it. If not, we can use default function */ if(!rampart_context_get_obtain_security_context_token_fn(rampart_context, env)) { rampart_context_set_obtain_security_context_token_fn( rampart_context, env, sct_provider_obtain_sct_default); } if(!rampart_context_get_store_security_context_token_fn(rampart_context, env)) { rampart_context_set_store_security_context_token_fn( rampart_context, env, sct_provider_store_sct_default); } if(!rampart_context_get_delete_security_context_token_fn(rampart_context, env)) { rampart_context_set_delete_security_context_token_fn( rampart_context, env, sct_provider_delete_sct_default); } if(!rampart_context_get_validate_security_context_token_fn(rampart_context, env)) { rampart_context_set_validate_security_context_token_fn( rampart_context, env, sct_provider_validate_sct_default); } } return AXIS2_SUCCESS; } axis2_status_t AXIS2_CALL rampart_engine_retrieve_key_mgr_prop_from_policy(rampart_context_t *rampart_context, const axutil_env_t *env) { axis2_char_t *value = NULL; rp_rampart_config_t *config = NULL; oxs_key_mgr_t *key_mgr = NULL; rp_secpolicy_t *secpolicy = NULL; secpolicy = rampart_context_get_secpolicy(rampart_context, env); config = rp_secpolicy_get_rampart_config(secpolicy, env); if (!config) return AXIS2_FAILURE; key_mgr = rampart_context_get_key_mgr(rampart_context, env); value = rp_rampart_config_get_certificate_file(config, env); if (value) { oxs_key_mgr_set_certificate_file(key_mgr, env, value); } value = rp_rampart_config_get_private_key_file(config, env); if (value) { oxs_key_mgr_set_private_key_file(key_mgr, env, value); } value = rp_rampart_config_get_receiver_certificate_file(config, env); if (value) { oxs_key_mgr_set_reciever_certificate_file(key_mgr, env, value); } return AXIS2_SUCCESS; } rampartc-src-1.3.0/src/util/rampart_handler_util.c0000644000076500007650000002175011202453425022076 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include #include /** * Get the security header from the header block * @param env pointer to environment struct * @param msg_ctx message context * @param soap_header header block * @return security soap header node */ axiom_node_t *AXIS2_CALL rampart_get_security_header( const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axiom_soap_header_t *soap_header) { axutil_hash_index_t *hash_index = NULL; axutil_hash_t *header_block_ht = NULL; axiom_element_t *header_block_ele = NULL; axiom_node_t *header_block_node = NULL; header_block_ht = axiom_soap_header_get_all_header_blocks(soap_header, env); if(!header_block_ht) { return NULL; } /* BETTER IF : If there are multiple security header elements, get the one with @role=rampart */ for(hash_index = axutil_hash_first(header_block_ht, env); hash_index; hash_index = axutil_hash_next(env, hash_index)) { void *hb = NULL; axiom_soap_header_block_t *header_block = NULL; axis2_char_t *ele_localname = NULL; axutil_hash_this(hash_index, NULL, NULL, &hb); header_block = (axiom_soap_header_block_t *)hb; header_block_node = axiom_soap_header_block_get_base_node(header_block, env); header_block_ele = (axiom_element_t*)axiom_node_get_data_element(header_block_node, env); ele_localname = axiom_element_get_localname(header_block_ele, env); if(!axutil_strcmp(ele_localname, RAMPART_SECURITY)) { /* Set mustUnderstand = 0 since we are going to process the header */ axiom_soap_header_block_set_must_understand_with_bool(header_block, env, AXIS2_FALSE); AXIS2_FREE(env->allocator, hash_index); return header_block_node; } }/* End of for */ return NULL; } /** * Creates a SOAP fault based on params described below and store in msg_ctx * @param env pointer to environment struct * @param sub_code the text of the Subcode element of a SOAP fault message * @param reason_text the text in soapenv:Reason element * @param detail_node_text the text in the soapenv:Detail element * @param msg_ctx the msg_ctx * @return void */ AXIS2_EXTERN void AXIS2_CALL rampart_create_fault_envelope( const axutil_env_t *env, const axis2_char_t *sub_code, const axis2_char_t *reason_text, const axis2_char_t *detail_node_text, axis2_msg_ctx_t *msg_ctx) { axiom_soap_envelope_t *envelope = NULL; int soap_version = AXIOM_SOAP12; axiom_node_t* text_om_node = NULL; axiom_element_t * text_om_ele = NULL; axiom_namespace_t *ns1 = NULL; axutil_array_list_t *sub_codes = NULL; axiom_soap_body_t *body = NULL; /* Creating the detailed node in the fault envelope */ ns1 = axiom_namespace_create(env, RAMPART_WSSE_XMLNS, RAMPART_WSSE); text_om_ele = axiom_element_create( env, NULL, RAMPART_FAULT_ELEMENT_LOCAL_NAME, ns1, &text_om_node); axiom_element_set_text(text_om_ele, env, detail_node_text, text_om_node); if(axis2_msg_ctx_get_is_soap_11(msg_ctx, env)) { /* In SOAP11 sub code is the faultcode and no soapenv:sender */ soap_version = AXIOM_SOAP11; envelope = axiom_soap_envelope_create_default_soap_fault_envelope( env, sub_code, reason_text,soap_version, NULL, text_om_node); } else { /* In SOAP12 we need to create subcodes. subcode/value is the faultcode in SOAP12 and fault/code/value is soapenv:Sender */ sub_codes = axutil_array_list_create(env, 1); axutil_array_list_add(sub_codes, env, sub_code); envelope = axiom_soap_envelope_create_default_soap_fault_envelope( env, "soapenv:Sender", reason_text, soap_version, sub_codes, text_om_node); if(envelope) { body = axiom_soap_envelope_get_body(envelope, env); if(body) { axiom_node_t *body_node = NULL; body_node = axiom_soap_body_get_base_node(body, env); if(body_node) { axiom_node_t *subcode_node = NULL; subcode_node = oxs_axiom_get_node_by_local_name( env, body_node, AXIOM_SOAP12_SOAP_FAULT_SUB_CODE_LOCAL_NAME); if(subcode_node) { axiom_element_t *subcode_ele = NULL; subcode_ele = axiom_node_get_data_element(subcode_node, env); if(subcode_ele) { axiom_element_declare_namespace(subcode_ele, env, subcode_node, ns1); } } } } } } if(envelope) { axis2_msg_ctx_set_fault_soap_envelope(msg_ctx, env, envelope); } if(sub_codes) { axutil_array_list_free(sub_codes, env); } } /** * Get rampart configurations from the message context * @param env pointer to environment struct * @param msg_ctx message context * @param param_name name of the parameter of the configuration * @return the loaded configuration params */ AXIS2_EXTERN void *AXIS2_CALL rampart_get_rampart_configuration( const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axis2_char_t *param_name) { axutil_param_t *param = NULL; void *value = NULL; param = axis2_msg_ctx_get_parameter(msg_ctx, env, param_name); if (!param) { return NULL; } value = axutil_param_get_value(param, env); return value; } /** * Check wether rampart is engaged or not * @param env pointer to environment struct * @param msg_ctx message context * @return if engaged returns AXIS2_TRUE, else returns AXIS2_FALSE */ AXIS2_EXTERN axis2_bool_t AXIS2_CALL rampart_is_rampart_engaged( const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx) { struct axis2_svc *svc = NULL; axutil_array_list_t *engaged_modules = NULL; int size = 0; int i = 0; const axutil_qname_t *qname = NULL; axis2_char_t *local_name = NULL; axis2_conf_t *conf = NULL; struct axis2_conf_ctx *conf_ctx = NULL; conf_ctx = axis2_msg_ctx_get_conf_ctx(msg_ctx,env); if(!conf_ctx) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Conf context is NULL "); return AXIS2_FALSE; } conf = axis2_conf_ctx_get_conf(conf_ctx, env); if(!conf) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Cannot get the axis2 conf from conf context. "); return AXIS2_FALSE; } /* checked for globally engaged modules */ engaged_modules = axis2_conf_get_all_engaged_modules(conf, env); if(engaged_modules) { size = axutil_array_list_size(engaged_modules,env); for(i=0; ilog, AXIS2_LOG_SI, "[rampart][rhu] Service is NULL. Check if the security is enabled in the Conf "); return axis2_conf_get_enable_security(conf,env); } engaged_modules = axis2_svc_get_all_module_qnames(svc,env); if(engaged_modules) { size = axutil_array_list_size(engaged_modules,env); for(i=0; i #include #include #include /** * Calculate the hash of concatenated string of nonce+created+password * @param env pointer to environment variable * @param nonce randomly created bytes * @param created created time * @param password password to be hashed * @return calculated hash on success. NULL otherwise */ AXIS2_EXTERN axis2_char_t* AXIS2_CALL rampart_crypto_sha1( const axutil_env_t *env, const axis2_char_t *nonce, const axis2_char_t *created, const axis2_char_t *password) { char* input = NULL; axis2_char_t* digest = NULL; axis2_char_t* decoded_nonce = NULL; int decoded_nonce_length = 0; int created_length = 0; int password_length = 0; /* Decode the nonce first */ if(nonce) { int ret; decoded_nonce_length = axutil_base64_decode_len(nonce); decoded_nonce = AXIS2_MALLOC(env->allocator, decoded_nonce_length); ret = axutil_base64_decode_binary((unsigned char *)decoded_nonce, nonce); } if ((!nonce) && (!created)) { /* If both nonce and created are omitted, string to be hashed is only password */ password_length = axutil_strlen(password); input = AXIS2_MALLOC(env->allocator, password_length); memcpy(input, password, password_length); } else if (!nonce) { /* If nonce is omitted, but created is given. * So, string to be hashed is created + password */ created_length = axutil_strlen(created); password_length = axutil_strlen(password); input = AXIS2_MALLOC(env->allocator, created_length + password_length); memcpy(input, created, created_length); memcpy(input + created_length, password, password_length); } else if (!created) { /* If created is omitted, but nonce is given. * So, string to be hased is nonce + password */ password_length = axutil_strlen(password); input = AXIS2_MALLOC(env->allocator, decoded_nonce_length + password_length); memcpy(input, decoded_nonce, decoded_nonce_length); memcpy(input + decoded_nonce_length, password, password_length); } else { /* If all nonce, created and password are present */ created_length = axutil_strlen(created); password_length = axutil_strlen(password); input = AXIS2_MALLOC( env->allocator, decoded_nonce_length + created_length + password_length); memcpy(input, decoded_nonce, decoded_nonce_length); memcpy(input + decoded_nonce_length, created, created_length); memcpy(input + decoded_nonce_length + created_length, password, password_length); } digest = openssl_sha1(env, input, decoded_nonce_length + created_length + password_length); AXIS2_FREE(env->allocator, input); AXIS2_FREE(env->allocator, decoded_nonce); return digest; } rampartc-src-1.3.0/src/util/Makefile.am0000644000076500007650000000212611202453425017562 0ustar shankarshankarTESTS = prglibdir=$(prefix)/lib prglib_LTLIBRARIES = librampart.la librampart_la_SOURCES = rampart_crypto_util.c \ rampart_util.c rampart_handler_util.c rampart_username_token.c rampart_timestamp_token.c \ rampart_encryption.c rampart_sec_header_processor.c rampart_sec_processed_result.c \ rampart_sec_header_builder.c rampart_context.c rampart_token_processor.c rampart_signature.c \ rampart_token_builder.c rampart_replay_detector.c rampart_engine.c \ rampart_policy_validator.c rampart_error.c rampart_config.c rampart_saml.c rampart_saml_token.c \ rampart_issued.c rampart_issued_token.c librampart_la_LDFLAGS = -version-info $(VERSION_NO) librampart_la_LIBADD = ../omxmlsec/libomxmlsec.la \ ../secconv/libsecconv.la \ ../trust/libtrust.la \ @OPENSSLLIB@ \ @AXIS2LIB@ \ -lcrypto INCLUDES = -I$(top_builddir)/include \ -I ../../include \ @OPENSSLINC@ \ @AXIOMINC@ \ @UTILINC@ \ @NEETHIINC@ \ @AXIS2INC@ rampartc-src-1.3.0/src/util/rampart_context.c0000644000076500007650000032672211202453425021117 0ustar shankarshankar/* * 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. */ #include "oxs_key_mgr.h" #include #include #include #include #include #include #include #include #include #include #include #include struct rampart_context_t { /*****************************/ axiom_node_t *policy_node; axis2_char_t *user; axis2_char_t *password; axis2_char_t *password_type; axis2_char_t *prv_key_password; password_callback_fn pwcb_function; rampart_is_replayed_fn is_replayed_function; int ttl; axis2_bool_t need_millisecond_precision; int clock_skew_buffer; axis2_char_t *rd_val; int ref; oxs_key_mgr_t *key_mgr; /****************************/ /* Set true when the issued token is aquired and set to the rampart conext*/ issued_token_callback_func aquire_issued_token; /* SAML tokens. */ axutil_array_list_t *saml_tokens; /* Custom tokens. */ axutil_array_list_t *custom_tokens; /*Rampart specific members*/ rp_secpolicy_t *secpolicy; rampart_callback_t *password_callback_module; rampart_authn_provider_t *authn_provider; rampart_replay_detector_t *replay_detector; rampart_sct_provider_t *sct_provider; auth_password_func authenticate_with_password; auth_digest_func authenticate_with_digest; axis2_char_t *encryption_token_id; axis2_char_t *signature_token_id; axis2_bool_t require_timestamp; axis2_bool_t require_ut; axutil_array_list_t *key_list; /* This is used in callback functions. * Used to store password callback user parameters. */ void *pwcb_user_params; /* This is used in replay detector functions. * Used to store replay detector user parameters. */ void *rd_user_params; /* Used to store and track whether we found the clients certificate while processing * the security headers key info element. found_cert_in_shp is used to track the status. */ axis2_bool_t found_cert_in_shp; oxs_x509_cert_t *receiver_cert; /* Security Context token operation related objects */ store_security_context_token_fn store_sct_funtion; obtain_security_context_token_fn obtain_sct_function; delete_security_context_token_fn delete_sct_function; validate_security_context_token_fn validate_sct_function; void *sct_user_params; }; /*void rampart_context_set_callback_fn(axutil_env_t *env, axis2_char_t *(*callback)( axutil_env_t *env, axis2_char_t *user , void *ctx), void *ctx); */ /*private functions*/ rp_symmetric_asymmetric_binding_commons_t *rampart_context_get_symmetric_asymmetric_binding_commons( rampart_context_t *rampart_context, const axutil_env_t *env); rp_binding_commons_t *rampart_context_get_binding_commons( rampart_context_t *rampart_context, const axutil_env_t *env); axis2_bool_t rampart_context_use_username_token( rp_supporting_tokens_t *signed_supporting, const axutil_env_t *env); axis2_bool_t rampart_context_validate_ut( rp_username_token_t *username_token, const axutil_env_t *env); rp_supporting_tokens_t *rampart_context_get_signed_supporting_from_binding( rampart_context_t *rampart_context, const axutil_env_t *env); /* axis2_status_t rampart_context_set_nodes_to_encrypt( rp_header_t *header, const axutil_env_t *env, axiom_soap_envelope_t *soap_envelope, axutil_array_list_t *nodes_to_encrypt); */ axis2_status_t rampart_context_set_nodes_to_encrypt_or_sign( rp_header_t *header, const axutil_env_t *env, axiom_soap_envelope_t *soap_envelope, axutil_array_list_t *nodes_to_encrypt_or_sign); axis2_status_t rampart_context_set_elements_to_encrypt_or_sign( rp_element_t *element, const axutil_env_t *env, axiom_soap_envelope_t *soap_envelope, axutil_array_list_t *nodes_to_encrypt_or_sign); axis2_status_t AXIS2_CALL rampart_context_get_nodes_to_protect( rampart_context_t *rampart_context, const axutil_env_t *env, axiom_soap_envelope_t *soap_envelope, axutil_array_list_t *nodes_to_sign_or_encrypt, axis2_bool_t is_sign); axis2_status_t AXIS2_CALL rampart_context_get_elements_to_protect( rampart_context_t *rampart_context, const axutil_env_t *env, axiom_soap_envelope_t *soap_envelope, axutil_array_list_t *nodes_to_sign_or_encrypt, axis2_bool_t is_sign); axis2_char_t *AXIS2_CALL rampart_context_get_key_identifier_from_wss( rampart_context_t *rampart_context, const axutil_env_t *env); AXIS2_EXTERN rampart_context_t *AXIS2_CALL rampart_context_create(const axutil_env_t *env) { rampart_context_t *rampart_context = NULL; AXIS2_ENV_CHECK(env, NULL); rampart_context = (rampart_context_t *) AXIS2_MALLOC (env->allocator, sizeof (rampart_context_t)); if(rampart_context == NULL) { AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE); return NULL; } rampart_context->policy_node = NULL; rampart_context->user = 0; rampart_context->password = NULL; rampart_context->pwcb_function = NULL; rampart_context->is_replayed_function = NULL; rampart_context->ttl = 300; rampart_context->clock_skew_buffer = 0; rampart_context->need_millisecond_precision = AXIS2_TRUE; rampart_context->rd_val = NULL; rampart_context->password_type = NULL; rampart_context->saml_tokens = NULL; rampart_context->custom_tokens = NULL; rampart_context->aquire_issued_token = NULL; rampart_context->secpolicy = NULL; rampart_context->password_callback_module = NULL; rampart_context->authn_provider = NULL; rampart_context->replay_detector = NULL; rampart_context->sct_provider = NULL; rampart_context->authenticate_with_password = NULL; rampart_context->authenticate_with_digest = NULL; rampart_context->require_ut = AXIS2_FALSE; rampart_context->require_timestamp = AXIS2_FALSE; rampart_context->rd_user_params = NULL; rampart_context->pwcb_user_params = NULL; rampart_context->ref = 0; rampart_context->encryption_token_id = NULL; rampart_context->signature_token_id = NULL; rampart_context->key_list = axutil_array_list_create(env, 2); rampart_context->key_mgr = oxs_key_mgr_create(env); rampart_context->found_cert_in_shp = AXIS2_FALSE; rampart_context->receiver_cert = NULL; rampart_context->store_sct_funtion = NULL; rampart_context->obtain_sct_function = NULL; rampart_context->delete_sct_function = NULL; rampart_context->validate_sct_function = NULL; rampart_context->sct_user_params = NULL; return rampart_context; } AXIS2_EXTERN void AXIS2_CALL rampart_context_free(rampart_context_t *rampart_context, const axutil_env_t *env) { AXIS2_ENV_CHECK(env, AXIS2_FAILURE); if(rampart_context) { if ((rampart_context->ref) > 0) { rampart_context->ref--; return; } if(rampart_context->secpolicy) { rp_secpolicy_free(rampart_context->secpolicy,env); rampart_context->secpolicy = NULL; } if(rampart_context->password_callback_module) { axutil_param_t *param = NULL; param = rampart_context->password_callback_module->param; /*User specific free logic*/ RAMPART_CALLBACK_FREE(rampart_context->password_callback_module , env); rampart_context->password_callback_module = NULL; if(param){ /*We actually free the dll_desc, which is set as the value of the axutil parameter.*/ axutil_param_free(param, env); /*axutil_dll_desc_t *dll_desc_l = NULL; dll_desc_l = axutil_param_get_value(param, env); status = axutil_class_loader_delete_dll(env, dll_desc_l); dll_desc_l = NULL;*/ } } if(rampart_context->authn_provider) { axutil_param_t *param = NULL; param = rampart_context->authn_provider->param; /*User specific free logic*/ RAMPART_AUTHN_PROVIDER_FREE(rampart_context->authn_provider, env); rampart_context->authn_provider = NULL; if(param){ /*We actually free the dll_desc, which is set as the value of the axutil parameter.*/ axutil_param_free(param, env); /*axutil_dll_desc_t *dll_desc_l = NULL; dll_desc_l = axutil_param_get_value(param, env); status = axutil_class_loader_delete_dll(env, dll_desc_l); dll_desc_l = NULL;*/ } } if(rampart_context->replay_detector) { axutil_param_t *param = NULL; param = rampart_context->replay_detector->param; /*User specific free logic*/ RAMPART_REPLAY_DETECTOR_FREE(rampart_context->replay_detector, env); rampart_context->replay_detector = NULL; if(param){ /*We actually free the dll_desc, which is set as the value of the axutil parameter.*/ axutil_param_free(param, env); /*axutil_dll_desc_t *dll_desc_l = NULL; dll_desc_l = axutil_param_get_value(param, env); status = axutil_class_loader_delete_dll(env, dll_desc_l); dll_desc_l = NULL;*/ } } if(rampart_context->sct_provider) { axutil_param_t *param = NULL; param = rampart_context->sct_provider->param; /*User specific free logic*/ RAMPART_SCT_PROVIDER_FREE(rampart_context->sct_provider, env); rampart_context->sct_provider = NULL; if(param){ /*We actually free the dll_desc, which is set as the value of the axutil parameter.*/ axutil_param_free(param, env); /*axutil_dll_desc_t *dll_desc_l = NULL; dll_desc_l = axutil_param_get_value(param, env); status = axutil_class_loader_delete_dll(env, dll_desc_l); dll_desc_l = NULL;*/ } } /*Free derived key list*/ if (rampart_context->key_list) { int i; for(i=0 ; i < axutil_array_list_size(rampart_context->key_list, env); i++) { oxs_key_t* dk = NULL; dk = (oxs_key_t*)axutil_array_list_get(rampart_context->key_list, env, i); oxs_key_free(dk, env); } axutil_array_list_free(rampart_context->key_list, env); rampart_context->key_list = NULL; } if(rampart_context->key_list){ /*Need to free data of the list*/ int size = 0; int j = 0; size = axutil_array_list_size(rampart_context->key_list, env); for (j = 0; j < size; j++) { oxs_key_t *key = NULL; key = axutil_array_list_get(rampart_context->key_list, env, j); oxs_key_free(key , env); key = NULL; } axutil_array_list_free(rampart_context->key_list, env); rampart_context->key_list = NULL; } /*Free custom tokens list*/ if(rampart_context->custom_tokens){ /*No need to free the contents*/ axutil_array_list_free(rampart_context->custom_tokens, env); rampart_context->custom_tokens = NULL; } /* Free receiver certificate we found when processing incoming security header */ /*if(rampart_context->receiver_cert && rampart_context->found_cert_in_shp) { oxs_x509_cert_free(rampart_context->receiver_cert, env); rampart_context->receiver_cert = NULL; }*/ if(rampart_context->key_mgr) { oxs_key_mgr_free(rampart_context->key_mgr, env); } AXIS2_FREE(env->allocator,rampart_context); rampart_context = NULL; } return; } /* Implementations */ 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) { AXIS2_PARAM_CHECK(env->error,policy_node,AXIS2_FAILURE); rampart_context->policy_node = policy_node; return AXIS2_SUCCESS; } 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_PARAM_CHECK(env->error,prv_key,AXIS2_FAILURE); if (rampart_context->key_mgr) { oxs_key_mgr_set_prv_key(rampart_context->key_mgr, env, prv_key); return AXIS2_SUCCESS; } return AXIS2_FAILURE; } 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_PARAM_CHECK(env->error,type,AXIS2_FAILURE); if (rampart_context->key_mgr) { oxs_key_mgr_set_prv_key_type(rampart_context->key_mgr, env, type); return AXIS2_SUCCESS; } return AXIS2_FAILURE; } AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_set_certificate(rampart_context_t *rampart_context, const axutil_env_t *env, void *certificate) { AXIS2_PARAM_CHECK(env->error,certificate,AXIS2_FAILURE); if (rampart_context->key_mgr) { oxs_key_mgr_set_certificate(rampart_context->key_mgr, env, certificate); return AXIS2_SUCCESS; } return AXIS2_FAILURE; } 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_PARAM_CHECK(env->error,type,AXIS2_FAILURE); if (rampart_context->key_mgr) { oxs_key_mgr_set_certificate_type(rampart_context->key_mgr, env, type); return AXIS2_SUCCESS; } return AXIS2_FAILURE; } 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_PARAM_CHECK(env->error,receiver_certificate,AXIS2_FAILURE); if (rampart_context->key_mgr) { oxs_key_mgr_set_receiver_certificate(rampart_context->key_mgr, env, receiver_certificate); return AXIS2_SUCCESS; } return AXIS2_FAILURE; } 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_PARAM_CHECK(env->error,type,AXIS2_FAILURE); if (rampart_context->key_mgr) { oxs_key_mgr_set_receiver_certificate_type(rampart_context->key_mgr, env, type); return AXIS2_SUCCESS; } return AXIS2_FAILURE; } 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_PARAM_CHECK(env->error,user,AXIS2_FAILURE); rampart_context->user = user; return AXIS2_SUCCESS; } 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_PARAM_CHECK(env->error,password,AXIS2_FAILURE); rampart_context->password = password; return AXIS2_SUCCESS; } 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_PARAM_CHECK(env->error,prv_key_password,AXIS2_FAILURE); if (rampart_context->key_mgr) { oxs_key_mgr_set_prv_key_password(rampart_context->key_mgr, env, prv_key_password); return AXIS2_SUCCESS; } return AXIS2_FAILURE; } 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 *user_params) { AXIS2_PARAM_CHECK(env->error,pwcb_function,AXIS2_FAILURE); rampart_context->pwcb_function = pwcb_function; rampart_context->pwcb_user_params = user_params; return AXIS2_SUCCESS; } 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, void *user_params) { AXIS2_PARAM_CHECK(env->error, is_replayed_function, AXIS2_FAILURE); rampart_context->is_replayed_function = is_replayed_function; rampart_context->rd_user_params = user_params; return AXIS2_SUCCESS; } AXIS2_EXTERN void * AXIS2_CALL rampart_context_get_rd_user_params( rampart_context_t *rampart_context, const axutil_env_t *env) { return rampart_context->rd_user_params; } 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_PARAM_CHECK(env->error,password_type,AXIS2_FAILURE); rampart_context->password_type = password_type; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_set_ttl(rampart_context_t *rampart_context, const axutil_env_t *env, int ttl) { AXIS2_PARAM_CHECK(env->error,ttl,AXIS2_FAILURE); rampart_context->ttl = ttl; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_bool_t AXIS2_CALL rampart_context_get_need_millisecond_precision( rampart_context_t *rampart_context, const axutil_env_t *env) { return rampart_context->need_millisecond_precision; } AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_set_need_millisecond_precision( rampart_context_t *rampart_context, const axutil_env_t *env, axis2_bool_t need_millisecond_precision) { rampart_context->need_millisecond_precision = need_millisecond_precision; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_set_clock_skew_buffer( rampart_context_t *rampart_context, const axutil_env_t *env, int skew_buffer) { rampart_context->clock_skew_buffer = skew_buffer; return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL rampart_context_get_clock_skew_buffer( rampart_context_t *rampart_context, const axutil_env_t *env) { return rampart_context->clock_skew_buffer; } 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_PARAM_CHECK(env->error, rd_val, AXIS2_FAILURE); rampart_context->rd_val = rd_val; return AXIS2_SUCCESS; } 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) { if (rampart_context->key_mgr) { oxs_key_mgr_set_private_key_file(rampart_context->key_mgr, env, private_key_file); return AXIS2_SUCCESS; } return AXIS2_FAILURE; } 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) { if (rampart_context->key_mgr) { oxs_key_mgr_set_certificate_file(rampart_context->key_mgr, env, certificate_file); return AXIS2_SUCCESS; } return AXIS2_FAILURE; } /*End of implementation*/ /*Getters of the PHP-RAMPART interface*/ AXIS2_EXTERN axiom_node_t *AXIS2_CALL rampart_context_get_policy_node( rampart_context_t *rampart_context, const axutil_env_t *env) { return rampart_context->policy_node; } AXIS2_EXTERN void *AXIS2_CALL rampart_context_get_prv_key( rampart_context_t *rampart_context, const axutil_env_t *env) { if (rampart_context->key_mgr) { return oxs_key_mgr_get_prv_key(rampart_context->key_mgr, env); } return NULL; } AXIS2_EXTERN axis2_key_type_t AXIS2_CALL rampart_context_get_prv_key_type( rampart_context_t *rampart_context, const axutil_env_t *env) { if (rampart_context->key_mgr) { return oxs_key_mgr_get_prv_key_type(rampart_context->key_mgr, env); } return AXIS2_KEY_TYPE_UNKNOWN; } AXIS2_EXTERN void *AXIS2_CALL rampart_context_get_certificate( rampart_context_t *rampart_context, const axutil_env_t *env) { if (rampart_context->key_mgr) { return oxs_key_mgr_get_certificate(rampart_context->key_mgr, env); } return NULL; } AXIS2_EXTERN axis2_key_type_t AXIS2_CALL rampart_context_get_certificate_type( rampart_context_t *rampart_context, const axutil_env_t *env) { if (rampart_context->key_mgr) { return oxs_key_mgr_get_certificate_type(rampart_context->key_mgr, env); } return AXIS2_KEY_TYPE_UNKNOWN; } AXIS2_EXTERN void *AXIS2_CALL rampart_context_get_receiver_certificate( rampart_context_t *rampart_context, const axutil_env_t *env) { if (rampart_context->key_mgr) { return oxs_key_mgr_get_receiver_certificate(rampart_context->key_mgr, env); } return NULL; } AXIS2_EXTERN axis2_key_type_t AXIS2_CALL rampart_context_get_receiver_certificate_type( rampart_context_t *rampart_context, const axutil_env_t *env) { if (rampart_context->key_mgr) { return oxs_key_mgr_get_receiver_certificate_type(rampart_context->key_mgr, env); } return AXIS2_KEY_TYPE_UNKNOWN; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL rampart_context_get_user( rampart_context_t *rampart_context, const axutil_env_t *env) { return rampart_context->user; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL rampart_context_get_password( rampart_context_t *rampart_context, const axutil_env_t *env) { return rampart_context->password; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL rampart_context_get_prv_key_password( rampart_context_t *rampart_context, const axutil_env_t *env) { if (rampart_context->key_mgr) { return oxs_key_mgr_get_prv_key_password(rampart_context->key_mgr, env); } return NULL; } AXIS2_EXTERN password_callback_fn AXIS2_CALL rampart_context_get_pwcb_function( rampart_context_t *rampart_context, const axutil_env_t *env) { return rampart_context->pwcb_function; } AXIS2_EXTERN rampart_is_replayed_fn AXIS2_CALL rampart_context_get_replay_detect_function( rampart_context_t *rampart_context, const axutil_env_t *env) { return rampart_context->is_replayed_function; } AXIS2_EXTERN void * AXIS2_CALL rampart_context_get_pwcb_user_params( rampart_context_t *rampart_context, const axutil_env_t *env) { return rampart_context->pwcb_user_params; } AXIS2_EXTERN int AXIS2_CALL rampart_context_get_ttl( rampart_context_t *rampart_context, const axutil_env_t *env) { return rampart_context->ttl; } AXIS2_EXTERN axis2_char_t* AXIS2_CALL rampart_context_get_rd_val( rampart_context_t *rampart_context, const axutil_env_t *env) { return rampart_context->rd_val; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL rampart_context_get_password_type( rampart_context_t *rampart_context, const axutil_env_t *env) { return rampart_context->password_type; } /*End of getters*/ AXIS2_EXTERN rp_secpolicy_t *AXIS2_CALL rampart_context_get_secpolicy( rampart_context_t *rampart_context, const axutil_env_t *env) { return rampart_context->secpolicy; } 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_PARAM_CHECK(env->error,secpolicy,AXIS2_FAILURE); rampart_context->secpolicy = secpolicy; return AXIS2_SUCCESS; } AXIS2_EXTERN rampart_callback_t *AXIS2_CALL rampart_context_get_password_callback( rampart_context_t *rampart_context, const axutil_env_t *env) { return rampart_context->password_callback_module; } 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_PARAM_CHECK(env->error,password_callback_module,AXIS2_FAILURE); rampart_context->password_callback_module = password_callback_module; return AXIS2_SUCCESS; } /*The 4 functions below deals with setting and getting authentication *module function pointers */ AXIS2_EXTERN auth_password_func AXIS2_CALL rampart_context_get_auth_password_function( rampart_context_t *rampart_context, const axutil_env_t *env) { return rampart_context->authenticate_with_password; } 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_PARAM_CHECK(env->error,authenticate_with_password,AXIS2_FAILURE); rampart_context->authenticate_with_password = authenticate_with_password; return AXIS2_SUCCESS; } AXIS2_EXTERN auth_digest_func AXIS2_CALL rampart_context_get_auth_digest_function( rampart_context_t *rampart_context, const axutil_env_t *env) { return rampart_context->authenticate_with_digest; } 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_PARAM_CHECK(env->error,authenticate_with_digest,AXIS2_FAILURE); rampart_context->authenticate_with_digest = authenticate_with_digest; return AXIS2_SUCCESS; } AXIS2_EXTERN rampart_authn_provider_t *AXIS2_CALL rampart_context_get_authn_provider( rampart_context_t *rampart_context, const axutil_env_t *env) { return rampart_context->authn_provider; } 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_PARAM_CHECK(env->error,authn_provider,AXIS2_FAILURE); rampart_context->authn_provider = authn_provider; return AXIS2_SUCCESS; } AXIS2_EXTERN void *AXIS2_CALL rampart_context_get_replay_detector( rampart_context_t *rampart_context, const axutil_env_t *env) { return (void*)rampart_context->replay_detector; } AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_set_replay_detector(rampart_context_t *rampart_context, const axutil_env_t *env, void *replay_detector) { AXIS2_PARAM_CHECK(env->error,replay_detector,AXIS2_FAILURE); rampart_context->replay_detector = (rampart_replay_detector_t*)replay_detector; return AXIS2_SUCCESS; } AXIS2_EXTERN void *AXIS2_CALL rampart_context_get_sct_provider( rampart_context_t *rampart_context, const axutil_env_t *env) { return (void*)rampart_context->sct_provider; } AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_set_sct_provider(rampart_context_t *rampart_context, const axutil_env_t *env, void *sct_provider) { AXIS2_PARAM_CHECK(env->error,sct_provider,AXIS2_FAILURE); rampart_context->sct_provider= (rampart_sct_provider_t*)sct_provider; return AXIS2_SUCCESS; } AXIS2_EXTERN oxs_key_t *AXIS2_CALL rampart_context_get_encryption_session_key(rampart_context_t *rampart_context, const axutil_env_t *env) { oxs_key_t* key = NULL; int i = 0; /*Repeat thru all the keys and find the matching one*/ for(i=0 ; i < axutil_array_list_size(rampart_context->key_list, env); i++) { key = (oxs_key_t*)axutil_array_list_get(rampart_context->key_list, env, i); if(OXS_KEY_USAGE_SESSION == oxs_key_get_usage(key, env)) { return key; } } return NULL; } AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_set_encryption_session_key(rampart_context_t *rampart_context, const axutil_env_t *env, oxs_key_t *session_key) { if(rampart_context->key_list) { oxs_key_set_usage(session_key, env, OXS_KEY_USAGE_SESSION); axutil_array_list_add(rampart_context->key_list, env, session_key); return AXIS2_SUCCESS; } return AXIS2_FALSE; } AXIS2_EXTERN oxs_key_t *AXIS2_CALL rampart_context_get_signature_session_key(rampart_context_t *rampart_context, const axutil_env_t *env) { oxs_key_t* key = NULL; int i = 0; int key_usage = OXS_KEY_USAGE_SESSION; if(rampart_context_is_different_session_key_for_enc_and_sign(env, rampart_context)) key_usage = OXS_KEY_USAGE_SIGNATURE_SESSION; /*Repeat thru all the keys and find the matching one*/ for(i=0 ; i < axutil_array_list_size(rampart_context->key_list, env); i++) { key = (oxs_key_t*)axutil_array_list_get(rampart_context->key_list, env, i); if(key_usage == oxs_key_get_usage(key, env)) { return key; } } return NULL; } AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_set_signature_session_key(rampart_context_t *rampart_context, const axutil_env_t *env, oxs_key_t *session_key) { if(rampart_context->key_list) { int key_usage = OXS_KEY_USAGE_SESSION; if(rampart_context_is_different_session_key_for_enc_and_sign(env, rampart_context)) key_usage = OXS_KEY_USAGE_SIGNATURE_SESSION; oxs_key_set_usage(session_key, env, key_usage); axutil_array_list_add(rampart_context->key_list, env, session_key); return AXIS2_SUCCESS; } return AXIS2_FALSE; } AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_add_key(rampart_context_t *rampart_context, const axutil_env_t *env, oxs_key_t *key) { if(rampart_context->key_list){ axutil_array_list_add(rampart_context->key_list, env, key); }else{ return AXIS2_FALSE; } return AXIS2_SUCCESS; } AXIS2_EXTERN axutil_array_list_t* AXIS2_CALL rampart_context_get_keys(rampart_context_t *rampart_context, const axutil_env_t *env) { return rampart_context->key_list; } AXIS2_EXTERN oxs_key_t* AXIS2_CALL rampart_context_get_key(rampart_context_t *rampart_context, const axutil_env_t *env, axis2_char_t* key_id) { oxs_key_t* key = NULL; int i = 0; /*Repeat thru all the derived keys and find the matching one*/ for(i=0 ; i < axutil_array_list_size(rampart_context->key_list, env); i++) { axis2_char_t *key_name = NULL; key = (oxs_key_t*)axutil_array_list_get(rampart_context->key_list, env, i); key_name = oxs_key_get_name(key, env); if(0 == axutil_strcmp(key_name, key_id)){ return key; } } return NULL; } AXIS2_EXTERN oxs_key_t* AXIS2_CALL rampart_context_get_key_using_hash(rampart_context_t *rampart_context, const axutil_env_t *env, axis2_char_t* hash) { oxs_key_t* key = NULL; int i = 0; /*Repeat thru all the derived keys and find the matching one*/ for(i=0 ; i < axutil_array_list_size(rampart_context->key_list, env); i++) { axis2_char_t *key_hash = NULL; key = (oxs_key_t*)axutil_array_list_get(rampart_context->key_list, env, i); key_hash = oxs_key_get_key_sha(key, env); if(0 == axutil_strcmp(key_hash, hash)) { return key; } } return NULL; } AXIS2_EXTERN axis2_bool_t AXIS2_CALL rampart_context_get_require_timestamp( rampart_context_t *rampart_context, const axutil_env_t *env) { return rampart_context->require_timestamp; } AXIS2_EXTERN axis2_bool_t AXIS2_CALL rampart_context_get_require_ut( rampart_context_t *rampart_context, const axutil_env_t *env) { return rampart_context->require_ut; } AXIS2_EXTERN rp_property_type_t AXIS2_CALL rampart_context_get_binding_type( rampart_context_t *rampart_context, const axutil_env_t *env) { rp_property_t *property = NULL; property = rp_secpolicy_get_binding(rampart_context->secpolicy,env); if(!property) return -1; return rp_property_get_type(property,env); } rp_symmetric_asymmetric_binding_commons_t *rampart_context_get_symmetric_asymmetric_binding_commons( rampart_context_t *rampart_context, const axutil_env_t *env) { rp_property_t *property = NULL; property = rp_secpolicy_get_binding(rampart_context->secpolicy,env); if(!property) return NULL; if(rp_property_get_type(property,env) == RP_PROPERTY_ASYMMETRIC_BINDING) { rp_asymmetric_binding_t *asymmetric_binding = NULL; asymmetric_binding = (rp_asymmetric_binding_t*)rp_property_get_value(property,env); if(!asymmetric_binding) return NULL; return rp_asymmetric_binding_get_symmetric_asymmetric_binding_commons(asymmetric_binding,env); } else if(rp_property_get_type(property,env) == RP_PROPERTY_SYMMETRIC_BINDING) { rp_symmetric_binding_t *symmetric_binding = NULL; symmetric_binding = (rp_symmetric_binding_t*)rp_property_get_value(property,env); if(!symmetric_binding) return NULL; return rp_symmetric_binding_get_symmetric_asymmetric_binding_commons(symmetric_binding,env); } else return NULL; } rp_binding_commons_t *rampart_context_get_binding_commons( rampart_context_t *rampart_context, const axutil_env_t *env) { rp_property_t *property = NULL; property = rp_secpolicy_get_binding(rampart_context->secpolicy,env); if(!property) return NULL; if(rp_property_get_type(property,env) == RP_PROPERTY_ASYMMETRIC_BINDING) { rp_asymmetric_binding_t *asymmetric_binding = NULL; rp_symmetric_asymmetric_binding_commons_t *sym_asym_commons = NULL; asymmetric_binding = (rp_asymmetric_binding_t*)rp_property_get_value(property, env); if(!asymmetric_binding) return NULL; sym_asym_commons = rp_asymmetric_binding_get_symmetric_asymmetric_binding_commons(asymmetric_binding,env); if(!sym_asym_commons) return NULL; return rp_symmetric_asymmetric_binding_commons_get_binding_commons(sym_asym_commons,env); } else if(rp_property_get_type(property,env) == RP_PROPERTY_SYMMETRIC_BINDING) { rp_symmetric_binding_t *symmetric_binding = NULL; rp_symmetric_asymmetric_binding_commons_t *sym_asym_commons = NULL; symmetric_binding = (rp_symmetric_binding_t*)rp_property_get_value(property,env); if(!symmetric_binding) return NULL; sym_asym_commons = rp_symmetric_binding_get_symmetric_asymmetric_binding_commons(symmetric_binding,env); if(!sym_asym_commons) return NULL; return rp_symmetric_asymmetric_binding_commons_get_binding_commons(sym_asym_commons,env); } else if(rp_property_get_type(property,env) == RP_PROPERTY_TRANSPORT_BINDING) { rp_transport_binding_t *transport_binding = NULL; transport_binding = (rp_transport_binding_t*)rp_property_get_value(property,env); if(!transport_binding) return NULL; return rp_transport_binding_get_binding_commons(transport_binding,env); } else return NULL; } /*supporting tokens may contain under binding*/ rp_supporting_tokens_t *rampart_context_get_signed_supporting_from_binding( rampart_context_t *rampart_context, const axutil_env_t *env) { rp_binding_commons_t *commons = NULL; commons = rampart_context_get_binding_commons(rampart_context,env); if(!commons) return NULL; return rp_binding_commons_get_signed_supporting_tokens(commons,env); } axis2_bool_t rampart_context_validate_ut( rp_username_token_t *username_token, const axutil_env_t *env) { axis2_char_t *inclusion = NULL; axis2_bool_t bval = AXIS2_FALSE; bval = rp_username_token_get_useUTprofile10(username_token,env); if(bval) { inclusion = rp_username_token_get_inclusion(username_token,env); if((axutil_strcmp(inclusion,RP_INCLUDE_ALWAYS)==0)|| (axutil_strcmp(inclusion,RP_INCLUDE_ONCE)==0)|| (axutil_strcmp(inclusion,RP_INCLUDE_ALWAYS_TO_RECIPIENT)==0) || (axutil_strcmp(inclusion,RP_INCLUDE_ALWAYS_SP12)==0) || (axutil_strcmp(inclusion,RP_INCLUDE_ONCE_SP12)==0)|| (axutil_strcmp(inclusion,RP_INCLUDE_ALWAYS_TO_RECIPIENT_SP12)==0)) return bval; else bval = AXIS2_FALSE; } return bval; } axis2_bool_t rampart_context_use_username_token( rp_supporting_tokens_t *signed_supporting, const axutil_env_t *env) { axutil_array_list_t *array_list = NULL; axis2_bool_t bvalidate = AXIS2_FALSE; array_list = rp_supporting_tokens_get_tokens(signed_supporting,env); if(!array_list) return AXIS2_FALSE; else { int i = 0; for (i = 0; i < axutil_array_list_size(array_list,env); i++) { rp_property_t *token = NULL; token = (rp_property_t *) axutil_array_list_get(array_list,env, i); if (token) { if(rp_property_get_type(token,env) == RP_PROPERTY_USERNAME_TOKEN) { rp_username_token_t *username_token = (rp_username_token_t *)rp_property_get_value(token,env); bvalidate = rampart_context_validate_ut(username_token,env); break; } } } } return bvalidate; } axis2_status_t rampart_context_set_nodes_to_encrypt_or_sign( rp_header_t *header, const axutil_env_t *env, axiom_soap_envelope_t *soap_envelope, axutil_array_list_t *nodes_to_encrypt_or_sign) { axis2_char_t *nspace = NULL; axis2_char_t *local_name = NULL; axiom_soap_header_t *soap_header = NULL; axiom_node_t *header_node = NULL; soap_header = axiom_soap_envelope_get_header(soap_envelope, env); if(!soap_header) return AXIS2_FAILURE; nspace = (axis2_char_t *) rp_header_get_namespace(header, env); if(!nspace) return AXIS2_FAILURE; local_name = (axis2_char_t*) rp_header_get_name(header, env); /*if(axutil_strcmp(nspace, RP_SECURITY_NS)==0)*/ if((axutil_strcmp(nspace, RP_SECURITY_NS)==0) && (!local_name)) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_context] We do not sign or encrypt security namespace headers"); return AXIS2_FAILURE; } if(!local_name) { axutil_array_list_t *soap_header_blocks = NULL; int i = 0; soap_header_blocks = axiom_soap_header_get_header_blocks_with_namespace_uri(soap_header, env, nspace); if(!soap_header_blocks){ AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[rampart][rampart_context] Header cannot find with namespace %s", nspace); return AXIS2_SUCCESS; } for(i=0 ; ilog, AXIS2_LOG_SI, "[rampart][rampart_context] We do not sign or encrypt %s", local_name); return AXIS2_FAILURE; } else { axiom_node_t *ret_node = NULL; header_node = axiom_soap_header_get_base_node(soap_header, env); if(header_node) { ret_node = oxs_axiom_get_node_by_local_name(env, header_node, local_name); if(ret_node) { axiom_element_t *ret_node_ele = NULL; ret_node_ele = (axiom_element_t *) axiom_node_get_data_element(ret_node, env); if(ret_node_ele) { axiom_namespace_t *ns = NULL; axis2_char_t *namespace_uri = NULL; ns = axiom_element_get_namespace(ret_node_ele, env, ret_node); if(ns) { namespace_uri = axiom_namespace_get_uri(ns, env); if (axutil_strcmp(namespace_uri, nspace) == 0) { axutil_array_list_add(nodes_to_encrypt_or_sign, env, ret_node); return AXIS2_SUCCESS; } } } } else { AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[rampart][rampart_context] Cannot find the header with name %s", local_name); return AXIS2_SUCCESS; } } } return AXIS2_SUCCESS; } axis2_status_t rampart_context_set_elements_to_encrypt_or_sign( rp_element_t *element, const axutil_env_t *env, axiom_soap_envelope_t *soap_envelope, axutil_array_list_t *nodes_to_encrypt_or_sign) { axis2_char_t *nspace = NULL; axis2_char_t *local_name = NULL; axiom_node_t *envelope_node = NULL; nspace = (axis2_char_t *) rp_element_get_namespace(element, env); if(!nspace) return AXIS2_FAILURE; if(axutil_strcmp(nspace, RP_SECURITY_NS)==0) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_context] We do not sign or encrypt security namespace elements"); return AXIS2_FAILURE; } local_name = (axis2_char_t*)rp_element_get_name(element,env); /* if(!local_name) { axutil_array_list_t *soap_header_blocks = NULL; int i = 0; soap_header_blocks = axiom_soap_header_get_header_blocks_with_namespace_uri(soap_header,env,namespace); if(!soap_header_blocks) return AXIS2_FAILURE; for(i=0 ; ilog, AXIS2_LOG_SI, "[rampart][rampart_context] We do not sign or encrypt %s", local_name); return AXIS2_FAILURE; } else { axiom_node_t *ret_node = NULL; envelope_node = axiom_soap_envelope_get_base_node(soap_envelope, env); if(envelope_node) { ret_node = oxs_axiom_get_node_by_local_name(env, envelope_node, local_name); if(ret_node) { axiom_element_t *ret_node_ele = NULL; ret_node_ele = (axiom_element_t *) axiom_node_get_data_element(ret_node, env); if(ret_node_ele) { axiom_namespace_t *ns = NULL; axis2_char_t *namespace_uri = NULL; ns = axiom_element_get_namespace(ret_node_ele, env,ret_node); if(ns) { namespace_uri = axiom_namespace_get_uri(ns, env); if (axutil_strcmp(namespace_uri, nspace) == 0) { axutil_array_list_add(nodes_to_encrypt_or_sign, env, ret_node); return AXIS2_SUCCESS; } } } } } } } return AXIS2_FAILURE; } AXIS2_EXTERN rp_algorithmsuite_t *AXIS2_CALL rampart_context_get_algorithmsuite( rampart_context_t *rampart_context, const axutil_env_t *env) { rp_binding_commons_t *binding_commons = NULL; binding_commons = rampart_context_get_binding_commons(rampart_context,env); if(!binding_commons) return AXIS2_FALSE; return rp_binding_commons_get_algorithmsuite(binding_commons,env); } AXIS2_EXTERN axis2_bool_t AXIS2_CALL rampart_context_is_sig_confirmation_reqd(rampart_context_t *rampart_context, const axutil_env_t *env) { rp_property_t *wss = NULL; rp_wss11_t *wss11 = NULL; wss = rp_secpolicy_get_wss(rampart_context->secpolicy,env); if(!wss){ return AXIS2_FALSE; } if(rp_property_get_type(wss,env) == RP_PROPERTY_WSS11) { wss11 = rp_property_get_value(wss,env); if(wss11){ return rp_wss11_get_require_signature_confirmation(wss11, env); }else{ return AXIS2_FALSE; } } else return AXIS2_FALSE; } axis2_char_t *AXIS2_CALL rampart_context_get_key_identifier_from_wss( rampart_context_t *rampart_context, const axutil_env_t *env) { rp_property_t *wss = NULL; axis2_char_t *identifier = NULL; wss = rp_secpolicy_get_wss(rampart_context->secpolicy,env); if(!wss) { AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI,"Problem identifying the key Identifier." ); return identifier; } if(rp_property_get_type(wss,env) == RP_PROPERTY_WSS10) { rp_wss10_t *wss10 = NULL; wss10 = rp_property_get_value(wss,env); if(!wss10) return NULL; if(rp_wss10_get_must_support_ref_key_identifier(wss10,env)) identifier = RAMPART_STR_KEY_IDENTIFIER; else if(rp_wss10_get_must_support_ref_issuer_serial(wss10,env)) identifier = RAMPART_STR_ISSUER_SERIAL; else if(rp_wss10_get_must_support_ref_external_uri(wss10,env)) identifier = RAMPART_STR_EXTERNAL_URI; else if(rp_wss10_get_must_support_ref_embedded_token(wss10,env)) identifier = RAMPART_STR_EMBEDDED; else identifier = NULL; return identifier; } else if(rp_property_get_type(wss,env) == RP_PROPERTY_WSS11) { rp_wss11_t *wss11 = NULL; wss11 = rp_property_get_value(wss,env); if(!wss11) return NULL; if(rp_wss11_get_must_support_ref_key_identifier(wss11,env)) identifier = RAMPART_STR_KEY_IDENTIFIER; else if(rp_wss11_get_must_support_ref_issuer_serial(wss11,env)) identifier = RAMPART_STR_ISSUER_SERIAL; else if(rp_wss11_get_must_support_ref_external_uri(wss11,env)) identifier = RAMPART_STR_EXTERNAL_URI; else if(rp_wss11_get_must_support_ref_embedded_token(wss11,env)) identifier = RAMPART_STR_EMBEDDED; else if(rp_wss11_get_must_support_ref_thumbprint(wss11,env)) identifier = RAMPART_STR_THUMB_PRINT; else if(rp_wss11_get_must_support_ref_encryptedkey(wss11,env)) identifier = RAMPART_STR_ENCRYPTED_KEY; else identifier = NULL; return identifier; } else return NULL; } axis2_bool_t AXIS2_CALL rampart_context_is_key_identifier_supported( rp_property_t *token, rampart_context_t *rampart_context, const axutil_env_t *env) { rp_property_t *wss = NULL; rp_wss10_t *wss10 = NULL; rp_wss11_t *wss11 = NULL; wss = rp_secpolicy_get_wss(rampart_context->secpolicy,env); if(!wss) { /*TODO error*/ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "wss properties are not set" ); return AXIS2_FALSE; } if(rp_property_get_type(wss,env) == RP_PROPERTY_WSS10) { wss10 = (rp_wss10_t *)rp_property_get_value(wss,env); } else if(rp_property_get_type(wss,env) == RP_PROPERTY_WSS11) { wss11 = (rp_wss11_t *)rp_property_get_value(wss,env); } if(rp_property_get_type(token,env)== RP_PROPERTY_X509_TOKEN) { rp_x509_token_t *x509_token = NULL; x509_token = (rp_x509_token_t *)rp_property_get_value(token,env); if(!x509_token) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Cannot get the token value from policy."); return AXIS2_FALSE; } if(rp_x509_token_get_require_key_identifier_reference(x509_token,env)) return AXIS2_TRUE; } else if(rp_property_get_type(token, env) == RP_PROPERTY_SECURITY_CONTEXT_TOKEN) { rp_security_context_token_t *security_context_token; security_context_token = (rp_security_context_token_t *)rp_property_get_value(token, env); if(security_context_token) { return AXIS2_TRUE; } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Cannot get the token value from policy."); return AXIS2_FALSE; } } else return AXIS2_FALSE; if(wss10) return rp_wss10_get_must_support_ref_key_identifier(wss10,env); else if(wss11) return rp_wss11_get_must_support_ref_key_identifier(wss11,env); else return AXIS2_FALSE; } axis2_bool_t AXIS2_CALL rampart_context_is_issuer_serial_supported( rp_property_t *token, rampart_context_t *rampart_context, const axutil_env_t *env) { rp_property_t *wss = NULL; rp_wss10_t *wss10 = NULL; rp_wss11_t *wss11 = NULL; wss = rp_secpolicy_get_wss(rampart_context->secpolicy,env); if(!wss) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,"wss properties are not set.." ); return AXIS2_FALSE; } if(rp_property_get_type(wss,env)== RP_PROPERTY_WSS10) { wss10 = (rp_wss10_t *)rp_property_get_value(wss,env); } else if(rp_property_get_type(wss,env)== RP_PROPERTY_WSS11) { wss11 = (rp_wss11_t *)rp_property_get_value(wss,env); } if(rp_property_get_type(token,env) == RP_PROPERTY_X509_TOKEN) { rp_x509_token_t *x509_token = NULL; x509_token = (rp_x509_token_t *)rp_property_get_value(token,env); if(!x509_token) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Cannot get the token value from policy."); return AXIS2_FALSE; } if(rp_x509_token_get_require_issuer_serial_reference(x509_token,env)) return AXIS2_TRUE; } else return AXIS2_FALSE; if(wss10) return rp_wss10_get_must_support_ref_issuer_serial(wss10,env); else if(wss11) return rp_wss11_get_must_support_ref_issuer_serial(wss11,env); else return AXIS2_FALSE; } axis2_bool_t AXIS2_CALL rampart_context_is_embedded_token_supported( rp_property_t *token, rampart_context_t *rampart_context, const axutil_env_t *env) { rp_property_t *wss = NULL; rp_wss10_t *wss10 = NULL; rp_wss11_t *wss11 = NULL; wss = rp_secpolicy_get_wss(rampart_context->secpolicy,env); if(!wss) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "wss properties are not set.." ); return AXIS2_FALSE; } if(rp_property_get_type(wss,env) == RP_PROPERTY_WSS10) { wss10 = (rp_wss10_t *)rp_property_get_value(wss,env); } else if(rp_property_get_type(wss,env) == RP_PROPERTY_WSS11) { wss11 = (rp_wss11_t *)rp_property_get_value(wss,env); } if(rp_property_get_type(token,env) == RP_PROPERTY_X509_TOKEN) { rp_x509_token_t *x509_token = NULL; x509_token = (rp_x509_token_t *)rp_property_get_value(token,env); if(!x509_token) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Cannot get the token value from policy."); return AXIS2_FALSE; } if(rp_x509_token_get_require_embedded_token_reference(x509_token,env)) return AXIS2_TRUE; } else return AXIS2_FALSE; if(wss10) return rp_wss10_get_must_support_ref_embedded_token(wss10,env); else if(wss11) return rp_wss11_get_must_support_ref_embedded_token(wss11,env); else return AXIS2_FALSE; } AXIS2_EXTERN axis2_bool_t AXIS2_CALL rampart_context_is_include_timestamp( rampart_context_t *rampart_context, const axutil_env_t *env) { rp_binding_commons_t *binding_commons = NULL; binding_commons = rampart_context_get_binding_commons(rampart_context,env); if(!binding_commons) return AXIS2_FALSE; rampart_context->require_timestamp = rp_binding_commons_get_include_timestamp(binding_commons,env); return rampart_context->require_timestamp; } AXIS2_EXTERN axis2_bool_t AXIS2_CALL rampart_context_is_include_username_token( rampart_context_t *rampart_context, const axutil_env_t *env) { /*Username tokens should be in signed supporting tikens. Otherwise no meaning */ rp_supporting_tokens_t *signed_supporting = NULL; /*First we should check in the direct policy members*/ signed_supporting = rp_secpolicy_get_signed_supporting_tokens(rampart_context->secpolicy,env); /*If not there then we should ckeck in the binding*/ if(!signed_supporting) { signed_supporting = rampart_context_get_signed_supporting_from_binding(rampart_context,env); if(!signed_supporting) return AXIS2_FALSE; } /*Now we have signed supporting tokens*/ /*Get the user name token if available and check the validity*/ rampart_context->require_ut = rampart_context_use_username_token(signed_supporting,env); return rampart_context->require_ut; } AXIS2_EXTERN axis2_bool_t AXIS2_CALL rampart_context_is_include_supporting_token( rampart_context_t *rampart_context, const axutil_env_t *env, axis2_bool_t server_side, axis2_bool_t is_inpath, rp_property_type_t token_type) { axutil_array_list_t *array_list = NULL; axis2_bool_t bvalidate = AXIS2_FALSE; rp_supporting_tokens_t *signed_supporting = NULL; /*First we should check in the direct policy members*/ signed_supporting = rp_secpolicy_get_signed_supporting_tokens(rampart_context->secpolicy,env); /*If not there then we should ckeck in the binding*/ if (!signed_supporting) { signed_supporting = rampart_context_get_signed_supporting_from_binding(rampart_context,env); if (!signed_supporting) return AXIS2_FALSE; } array_list = rp_supporting_tokens_get_tokens(signed_supporting, env); if (!array_list) return AXIS2_FALSE; else { int i = 0; for (i = 0; i < axutil_array_list_size(array_list, env); i++) { rp_property_t *token = NULL; token = (rp_property_t *) axutil_array_list_get(array_list, env, i); if (token) { if(rp_property_get_type(token,env) == token_type) { bvalidate = rampart_context_is_token_include( rampart_context, token, token_type, server_side, is_inpath, env); break; } } } } return bvalidate; } AXIS2_EXTERN axis2_bool_t AXIS2_CALL rampart_context_is_include_protection_saml_token( rampart_context_t *rampart_context, axis2_bool_t server_side, axis2_bool_t is_inpath, const axutil_env_t *env) { rp_property_t *binding = NULL; binding = rp_secpolicy_get_binding(rampart_context->secpolicy,env); if(!binding) return AXIS2_FALSE; if(rp_property_get_type(binding,env) == RP_PROPERTY_ASYMMETRIC_BINDING) { return AXIS2_FALSE; } /*We support SAML tokens as protection tokens only in symmetrc binding*/ else if(rp_property_get_type(binding,env) == RP_PROPERTY_SYMMETRIC_BINDING) { rp_symmetric_binding_t *sym_binding = NULL; rp_property_t *token = NULL; sym_binding = (rp_symmetric_binding_t *)rp_property_get_value(binding,env); if(sym_binding) { /*First check protection tokens have being specified.*/ token = rp_symmetric_binding_get_protection_token(sym_binding,env); if (token && rp_property_get_type(token, env) == RP_PROPERTY_SAML_TOKEN && rampart_context_is_token_include(rampart_context, token, RP_PROPERTY_SAML_TOKEN, server_side, is_inpath, env)) { return AXIS2_TRUE; } token = rp_symmetric_binding_get_encryption_token(sym_binding,env); if (token && rp_property_get_type(token, env) == RP_PROPERTY_SAML_TOKEN && rampart_context_is_token_include(rampart_context, token, RP_PROPERTY_SAML_TOKEN, server_side, is_inpath, env)) { return AXIS2_TRUE; } token = rp_symmetric_binding_get_signature_token(sym_binding, env); if (token && rp_property_get_type(token, env) == RP_PROPERTY_SAML_TOKEN && rampart_context_is_token_include(rampart_context, token, RP_PROPERTY_SAML_TOKEN, server_side, is_inpath, env)) { return AXIS2_TRUE; } return AXIS2_FALSE; } else return AXIS2_FALSE; } else if(rp_property_get_type(binding,env) == RP_PROPERTY_TRANSPORT_BINDING) { return AXIS2_FALSE; } else return AXIS2_FALSE; } AXIS2_EXTERN rp_property_t * AXIS2_CALL rampart_context_get_supporting_token( rampart_context_t *rampart_context, const axutil_env_t *env, rp_property_type_t token_type) { axutil_array_list_t *array_list = NULL; rp_supporting_tokens_t *signed_supporting = NULL; /*First we should check in the direct policy members*/ signed_supporting = rp_secpolicy_get_signed_supporting_tokens(rampart_context->secpolicy,env); /*If not there then we should ckeck in the binding*/ if (!signed_supporting) { signed_supporting = rampart_context_get_signed_supporting_from_binding(rampart_context,env); if (!signed_supporting) return NULL; } array_list = rp_supporting_tokens_get_tokens(signed_supporting, env); if (!array_list) return NULL; else { int i = 0; for (i = 0; i < axutil_array_list_size(array_list, env); i++) { rp_property_t *token = NULL; token = (rp_property_t *) axutil_array_list_get(array_list, env, i); if (token) { if(rp_property_get_type(token,env) == token_type) { return token; } } } } return NULL; } AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_set_user_from_file( rampart_context_t *rampart_context, const axutil_env_t *env) { rp_rampart_config_t *config = NULL; config = rp_secpolicy_get_rampart_config(rampart_context->secpolicy,env); if(!config) return AXIS2_FAILURE; rampart_context->user = rp_rampart_config_get_user(config,env); return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL rampart_context_get_password_callback_class( rampart_context_t *rampart_context, const axutil_env_t *env) { rp_rampart_config_t *config = NULL; config = rp_secpolicy_get_rampart_config(rampart_context->secpolicy,env); if(!config) return NULL; return rp_rampart_config_get_password_callback_class(config,env); } AXIS2_EXTERN axis2_char_t *AXIS2_CALL rampart_context_get_authn_module_name( rampart_context_t *rampart_context, const axutil_env_t *env) { rp_rampart_config_t *config = NULL; config = rp_secpolicy_get_rampart_config(rampart_context->secpolicy,env); if(!config) return NULL; return rp_rampart_config_get_authenticate_module(config,env); } AXIS2_EXTERN axis2_char_t *AXIS2_CALL rampart_context_get_replay_detector_name( rampart_context_t *rampart_context, const axutil_env_t *env) { rp_rampart_config_t *config = NULL; config = rp_secpolicy_get_rampart_config(rampart_context->secpolicy,env); if(!config) return NULL; return rp_rampart_config_get_replay_detector(config,env); } AXIS2_EXTERN axis2_char_t *AXIS2_CALL rampart_context_get_sct_provider_name( rampart_context_t *rampart_context, const axutil_env_t *env) { rp_rampart_config_t *config = NULL; config = rp_secpolicy_get_rampart_config(rampart_context->secpolicy,env); if(!config) return NULL; return rp_rampart_config_get_sct_provider(config,env); } AXIS2_EXTERN axis2_char_t *AXIS2_CALL rampart_context_get_pkcs12_file_name( rampart_context_t *rampart_context, const axutil_env_t *env) { rp_rampart_config_t *config = NULL; config = rp_secpolicy_get_rampart_config(rampart_context->secpolicy,env); if(!config) return NULL; return rp_rampart_config_get_pkcs12_file(config,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) { rp_rampart_config_t *config = NULL; config = rp_secpolicy_get_rampart_config(rampart_context->secpolicy,env); if(!config) return AXIS2_FAILURE; rampart_context->password_type = rp_rampart_config_get_password_type(config,env); return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_set_ttl_from_file( rampart_context_t *rampart_context, const axutil_env_t *env) { rp_rampart_config_t *config = NULL; axis2_char_t *time_to_live = NULL; config = rp_secpolicy_get_rampart_config(rampart_context->secpolicy,env); if(!config) return AXIS2_FAILURE; time_to_live = rp_rampart_config_get_time_to_live(config,env); if(time_to_live) rampart_context->ttl = axutil_atoi(time_to_live); return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_set_clock_skew_buffer_from_file( rampart_context_t *rampart_context, const axutil_env_t *env) { rp_rampart_config_t *config = NULL; axis2_char_t *clock_skew_buffer = NULL; config = rp_secpolicy_get_rampart_config(rampart_context->secpolicy,env); if(!config) return AXIS2_FAILURE; clock_skew_buffer = rp_rampart_config_get_clock_skew_buffer(config,env); if(clock_skew_buffer) rampart_context->clock_skew_buffer = axutil_atoi(clock_skew_buffer); return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_set_need_millisecond_precision_from_file( rampart_context_t *rampart_context, const axutil_env_t *env) { rp_rampart_config_t *config = NULL; axis2_char_t *need_millisecond = NULL; config = rp_secpolicy_get_rampart_config(rampart_context->secpolicy,env); if(!config) return AXIS2_FAILURE; need_millisecond = rp_rampart_config_get_need_millisecond_precision(config,env); if(need_millisecond) { if(!axutil_strcasecmp(need_millisecond, "TRUE")) rampart_context->need_millisecond_precision = AXIS2_TRUE; else rampart_context->need_millisecond_precision = AXIS2_FALSE; } return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_set_rd_val_from_file( rampart_context_t *rampart_context, const axutil_env_t *env) { rp_rampart_config_t *config = NULL; axis2_char_t *rd_val = NULL; config = rp_secpolicy_get_rampart_config(rampart_context->secpolicy,env); if(!config) return AXIS2_FAILURE; rd_val = rp_rampart_config_get_rd_val(config,env); rampart_context->rd_val = rd_val; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_bool_t AXIS2_CALL rampart_context_is_encrypt_before_sign( rampart_context_t *rampart_context, const axutil_env_t *env) { axis2_char_t *protection_order = NULL; rp_symmetric_asymmetric_binding_commons_t *sym_asym_commons = NULL; sym_asym_commons = rampart_context_get_symmetric_asymmetric_binding_commons(rampart_context,env); if(!sym_asym_commons) return AXIS2_FALSE; else { protection_order = rp_symmetric_asymmetric_binding_commons_get_protection_order(sym_asym_commons,env); if(!protection_order || axutil_strcmp(protection_order,RP_SIGN_BEFORE_ENCRYPTING)==0) return AXIS2_FALSE; else if(axutil_strcmp(protection_order,RP_ENCRYPT_BEFORE_SIGNING)==0) return AXIS2_TRUE; } return AXIS2_FALSE; } AXIS2_EXTERN axis2_bool_t AXIS2_CALL rampart_context_is_encrypt_signature( rampart_context_t *rampart_context, const axutil_env_t *env) { rp_symmetric_asymmetric_binding_commons_t *sym_asym_commons = NULL; sym_asym_commons = rampart_context_get_symmetric_asymmetric_binding_commons(rampart_context, env); if(!sym_asym_commons) return AXIS2_FALSE; else { return rp_symmetric_asymmetric_binding_commons_get_signature_protection(sym_asym_commons, env); } } /*Following methods will return all the parts in the soap message outside the security header which needs to be encrypted or signed.*/ 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) { return rampart_context_get_nodes_to_protect(rampart_context,env,soap_envelope,nodes_to_encrypt,AXIS2_FALSE); } 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) { return rampart_context_get_nodes_to_protect(rampart_context,env,soap_envelope,nodes_to_sign,AXIS2_TRUE); } 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) { return rampart_context_get_elements_to_protect(rampart_context,env,soap_envelope,nodes_to_encrypt,AXIS2_FALSE); } 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) { return rampart_context_get_elements_to_protect(rampart_context,env,soap_envelope,nodes_to_sign,AXIS2_TRUE); } axis2_status_t AXIS2_CALL rampart_context_get_nodes_to_protect( rampart_context_t *rampart_context, const axutil_env_t *env, axiom_soap_envelope_t *soap_envelope, axutil_array_list_t *nodes_to_sign_or_encrypt, axis2_bool_t is_sign) { rp_signed_encrypted_parts_t *signed_encrypted_parts = NULL; axutil_array_list_t *parts = NULL; axis2_status_t status = AXIS2_FAILURE; if(is_sign) signed_encrypted_parts = rp_secpolicy_get_signed_parts(rampart_context->secpolicy,env); else signed_encrypted_parts = rp_secpolicy_get_encrypted_parts(rampart_context->secpolicy,env); if(!signed_encrypted_parts) { if(is_sign) { AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[rampart][rampart_context] Nothing to sign outside Secyrity header."); } else { AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[rampart][rampart_context] Nothing to encrypt outside Secyrity header."); } return AXIS2_SUCCESS; } parts = rp_signed_encrypted_parts_get_headers(signed_encrypted_parts,env); if(parts && (axutil_array_list_size(parts,env)!=0)) { int i = 0; for(i=0; ilog, AXIS2_LOG_SI, "[rampart][rampart_context] Including the body for encryption/sign."); body = axiom_soap_envelope_get_body(soap_envelope, env); body_node = axiom_soap_body_get_base_node(body, env); body_child_node = axiom_node_get_first_element(body_node, env); if(is_sign) { axutil_array_list_add(nodes_to_sign_or_encrypt, env, body_node); } else { if(body_child_node) { axutil_array_list_add(nodes_to_sign_or_encrypt, env, body_child_node); } } return AXIS2_SUCCESS; } return status; } axis2_status_t AXIS2_CALL rampart_context_get_elements_to_protect( rampart_context_t *rampart_context, const axutil_env_t *env, axiom_soap_envelope_t *soap_envelope, axutil_array_list_t *nodes_to_sign_or_encrypt, axis2_bool_t is_sign) { rp_signed_encrypted_items_t *signed_encrypted_items = NULL; axutil_array_list_t *items = NULL; axis2_status_t status = AXIS2_FAILURE; if(is_sign) signed_encrypted_items = rp_secpolicy_get_signed_items(rampart_context->secpolicy,env); else signed_encrypted_items = rp_secpolicy_get_encrypted_items(rampart_context->secpolicy,env); if(!signed_encrypted_items) return AXIS2_FAILURE; items = rp_signed_encrypted_items_get_elements(signed_encrypted_items,env); if(!items || (axutil_array_list_size(items,env)==0)) { if(is_sign){ AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[rampart][rampart_context] Nothing to sign outside Secyrity header."); }else{ AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[rampart][rampart_context] Nothing to encrypt outside Secyrity header."); } return AXIS2_FAILURE; } else { int i = 0; for(i=0; isecpolicy,env); if(!encrypted_parts) { encrypted_items = rp_secpolicy_get_encrypted_items(rampart_context->secpolicy,env); if(!encrypted_items) return AXIS2_FALSE; else { parts = rp_signed_encrypted_items_get_elements(encrypted_items,env); if(!parts||(axutil_array_list_size(parts,env)==0)) { AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[rampart][rampart_context] No Signed parts specified Nothing to Verify"); return AXIS2_FALSE; } else{ return AXIS2_TRUE; } } } parts = rp_signed_encrypted_parts_get_headers(encrypted_parts,env); if(!parts || (axutil_array_list_size(parts,env)==0)) { if(rp_signed_encrypted_parts_get_body(encrypted_parts,env)) return AXIS2_TRUE; else { AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[rampart][rampart_context]No encryption parts specified Nothing to decrypt"); return AXIS2_FALSE; } } return AXIS2_TRUE; } AXIS2_EXTERN axis2_bool_t AXIS2_CALL rampart_context_check_whether_to_sign( rampart_context_t *rampart_context, const axutil_env_t *env) { rp_signed_encrypted_parts_t *signed_parts = NULL; rp_signed_encrypted_items_t *signed_items = NULL; axutil_array_list_t *parts = NULL; signed_parts = rp_secpolicy_get_signed_parts(rampart_context->secpolicy,env); if(!signed_parts) { signed_items = rp_secpolicy_get_signed_items(rampart_context->secpolicy,env); if(!signed_items) return AXIS2_FALSE; else { parts = rp_signed_encrypted_items_get_elements(signed_items,env); if(!parts||(axutil_array_list_size(parts,env)==0)) { AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[rampart][rampart_context]No Signed parts specified Nothing to Verify"); return AXIS2_FALSE; } else return AXIS2_TRUE; } } parts = rp_signed_encrypted_parts_get_headers(signed_parts,env); if(!parts || (axutil_array_list_size(parts,env)==0)) { if(rp_signed_encrypted_parts_get_body(signed_parts,env)) return AXIS2_TRUE; else { AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[rampart][rampart_context]No Signed parts specified Nothing to Verify"); return AXIS2_FALSE; } } return AXIS2_TRUE; } 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) { rp_property_t *binding = NULL; binding = rp_secpolicy_get_binding(rampart_context->secpolicy,env); if(!binding) return NULL; if(rp_property_get_type(binding,env) == RP_PROPERTY_ASYMMETRIC_BINDING) { rp_asymmetric_binding_t *asym_binding = NULL; asym_binding = (rp_asymmetric_binding_t *)rp_property_get_value(binding,env); if(asym_binding) { if(is_inpath) { if((for_encryption && server_side) || (!for_encryption && !server_side)) { return rp_asymmetric_binding_get_recipient_token(asym_binding,env); } else if((for_encryption && !server_side) || (!for_encryption && server_side)) { return rp_asymmetric_binding_get_initiator_token(asym_binding,env); } else return NULL; } else { if((server_side && for_encryption) || (!for_encryption && !server_side)) { return rp_asymmetric_binding_get_initiator_token(asym_binding,env); } else if((server_side && !for_encryption)|| (for_encryption && !server_side)) { return rp_asymmetric_binding_get_recipient_token(asym_binding,env); } else return NULL; } } else return NULL; } /*In symmetric binding same tokens are used in the client and server sides.*/ else if(rp_property_get_type(binding,env) == RP_PROPERTY_SYMMETRIC_BINDING) { rp_symmetric_binding_t *sym_binding = NULL; rp_property_t *token = NULL; sym_binding = (rp_symmetric_binding_t *)rp_property_get_value(binding,env); if(sym_binding) { /*First check protection tokens have being specified.*/ token = rp_symmetric_binding_get_protection_token(sym_binding,env); if(token) return token; else { if(for_encryption) { return rp_symmetric_binding_get_encryption_token(sym_binding,env); } else { return rp_symmetric_binding_get_signature_token(sym_binding,env); } } } else return NULL; } else if(rp_property_get_type(binding,env) == RP_PROPERTY_TRANSPORT_BINDING) { rp_transport_binding_t *transport_binding = NULL; transport_binding = (rp_transport_binding_t *)rp_property_get_value(binding,env); if(transport_binding) { return rp_transport_binding_get_transport_token(transport_binding,env); } else return NULL; } else return NULL; } AXIS2_EXTERN axis2_bool_t AXIS2_CALL rampart_context_check_is_derived_keys( const axutil_env_t *env, rp_property_t *token) { derive_key_type_t key_type = DERIVEKEY_NONE; if(rp_property_get_type(token,env) == RP_PROPERTY_X509_TOKEN) { rp_x509_token_t *x509_token = NULL; x509_token = (rp_x509_token_t *)rp_property_get_value(token,env); key_type = rp_x509_token_get_derivedkey(x509_token,env); } else if(rp_property_get_type(token, env) == RP_PROPERTY_SECURITY_CONTEXT_TOKEN) { rp_security_context_token_t *security_context_token = NULL; security_context_token = (rp_security_context_token_t *)rp_property_get_value(token, env); key_type = rp_security_context_token_get_derivedkey(security_context_token, env); } /*This can be extended when we are supporting other token types.*/ else { return AXIS2_FALSE; } if(key_type == DERIVEKEY_NONE) { return AXIS2_FALSE; } else { return AXIS2_TRUE; } } AXIS2_EXTERN axis2_char_t *AXIS2_CALL rampart_context_get_derived_key_version( const axutil_env_t *env, rp_property_t *token) { derive_key_version_t key_version = DERIVEKEY_VERSION_SC13; if(rp_property_get_type(token,env) == RP_PROPERTY_X509_TOKEN) { rp_x509_token_t *x509_token = NULL; x509_token = (rp_x509_token_t *)rp_property_get_value(token,env); key_version = rp_x509_token_get_derivedkey_version(x509_token,env); } else if(rp_property_get_type(token, env) == RP_PROPERTY_SECURITY_CONTEXT_TOKEN) { rp_security_context_token_t *security_context_token = NULL; security_context_token = (rp_security_context_token_t *)rp_property_get_value(token, env); key_version = rp_security_context_token_get_derivedkey_version(security_context_token, env); } /*This can be extended when we are supporting other token types.*/ else { return NULL; } if(key_version == DERIVEKEY_VERSION_SC13) { return OXS_WSC_NS_05_12; } else { return OXS_WSC_NS_05_02; } } AXIS2_EXTERN int AXIS2_CALL rampart_context_get_encryption_derived_key_len( rampart_context_t *rampart_context, const axutil_env_t *env) { rp_algorithmsuite_t *algosuite = NULL; algosuite = rampart_context_get_algorithmsuite(rampart_context,env); if(algosuite) { return rp_algorithmsuite_get_encryption_derivation_keylength(algosuite,env)/8; } else return 0; } AXIS2_EXTERN int AXIS2_CALL rampart_context_get_signature_derived_key_len( rampart_context_t *rampart_context, const axutil_env_t *env) { rp_algorithmsuite_t *algosuite = NULL; algosuite = rampart_context_get_algorithmsuite(rampart_context,env); if(algosuite) { return rp_algorithmsuite_get_signature_derivation_keylength(algosuite,env)/8; } else return 0; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL rampart_context_get_enc_sym_algo( rampart_context_t *rampart_context, const axutil_env_t *env) { rp_algorithmsuite_t *algosuite = NULL; algosuite = rampart_context_get_algorithmsuite(rampart_context,env); if(algosuite) { return rp_algorithmsuite_get_encryption(algosuite,env); } else return NULL; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL rampart_context_get_enc_asym_algo( rampart_context_t *rampart_context, const axutil_env_t *env) { rp_algorithmsuite_t *algosuite = NULL; algosuite = rampart_context_get_algorithmsuite(rampart_context,env); if(algosuite) { return rp_algorithmsuite_get_asymmetrickeywrap(algosuite,env); } else return NULL; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL rampart_context_get_asym_sig_algo( rampart_context_t *rampart_context, const axutil_env_t *env) { rp_algorithmsuite_t *algosuite = NULL; algosuite = rampart_context_get_algorithmsuite(rampart_context,env); if(algosuite) { return rp_algorithmsuite_get_asymmetric_signature(algosuite,env); } else return NULL; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL rampart_context_get_digest_mtd( rampart_context_t *rampart_context, const axutil_env_t *env) { rp_algorithmsuite_t *algosuite = NULL; algosuite = rampart_context_get_algorithmsuite(rampart_context,env); if(algosuite) { return rp_algorithmsuite_get_digest(algosuite,env); } else return NULL; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL rampart_context_get_certificate_file( rampart_context_t *rampart_context, const axutil_env_t *env) { rp_rampart_config_t *rampart_config = NULL; if(rampart_context->key_mgr && oxs_key_mgr_get_certificate_file(rampart_context->key_mgr, env)) { return oxs_key_mgr_get_certificate_file(rampart_context->key_mgr, env); } rampart_config = rp_secpolicy_get_rampart_config(rampart_context->secpolicy,env); if(rampart_config) { return rp_rampart_config_get_certificate_file(rampart_config,env); } else return NULL; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL rampart_context_get_receiver_certificate_file( rampart_context_t *rampart_context, const axutil_env_t *env) { rp_rampart_config_t *rampart_config = NULL; if(rampart_context->key_mgr && oxs_key_mgr_get_reciever_certificate_file(rampart_context->key_mgr, env)) { return oxs_key_mgr_get_reciever_certificate_file(rampart_context->key_mgr, env); } rampart_config = rp_secpolicy_get_rampart_config(rampart_context->secpolicy,env); if(rampart_config) { return rp_rampart_config_get_receiver_certificate_file(rampart_config,env); } else return NULL; } AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_set_receiver_certificate_file( rampart_context_t *rampart_context, const axutil_env_t *env, axis2_char_t *receiver_certificate_file) { AXIS2_PARAM_CHECK(env->error, receiver_certificate_file, AXIS2_FAILURE); return oxs_key_mgr_set_reciever_certificate_file(rampart_context->key_mgr, env, receiver_certificate_file); } AXIS2_EXTERN axis2_char_t *AXIS2_CALL rampart_context_get_private_key_file( rampart_context_t *rampart_context, const axutil_env_t *env) { rp_rampart_config_t *rampart_config = NULL; if(rampart_context->key_mgr && oxs_key_mgr_get_private_key_file(rampart_context->key_mgr, env)) { return oxs_key_mgr_get_private_key_file(rampart_context->key_mgr, env); } rampart_config = rp_secpolicy_get_rampart_config(rampart_context->secpolicy,env); if(rampart_config) { return rp_rampart_config_get_private_key_file(rampart_config,env); } else return NULL; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL rampart_context_get_encryption_user( rampart_context_t *rampart_context, const axutil_env_t *env) { rp_rampart_config_t *config = NULL; config = rp_secpolicy_get_rampart_config(rampart_context->secpolicy,env); if(!config) return NULL; return rp_rampart_config_get_encryption_user(config,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) { if(token_type == RP_PROPERTY_X509_TOKEN) return AXIS2_TRUE; else if (token_type == RP_PROPERTY_SECURITY_CONTEXT_TOKEN) return AXIS2_TRUE; else if (token_type == RP_PROPERTY_SAML_TOKEN) return AXIS2_TRUE; else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "We still only suppport X509 Tokens and security context tokens."); return AXIS2_FALSE; } /*This method will be extended when we are supporting other types of tokens.*/ } 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_char_t *inclusion = NULL; axis2_bool_t include = AXIS2_FALSE; if(token_type == RP_PROPERTY_X509_TOKEN) { rp_x509_token_t *x509_token = NULL; x509_token = (rp_x509_token_t *)rp_property_get_value(token,env); inclusion = rp_x509_token_get_inclusion(x509_token,env); } else if (token_type == RP_PROPERTY_ISSUED_TOKEN) { rp_issued_token_t *issued_token = NULL; issued_token = (rp_issued_token_t *)rp_property_get_value(token, env); inclusion = rp_issued_token_get_inclusion(issued_token,env); } else if (token_type == RP_PROPERTY_SAML_TOKEN) { rp_saml_token_t *saml_token = NULL; saml_token = (rp_saml_token_t *)rp_property_get_value(token, env); inclusion = rp_saml_token_get_inclusion(saml_token, env); } else if (token_type == RP_PROPERTY_SECURITY_CONTEXT_TOKEN) { rp_security_context_token_t *security_context_token = NULL; security_context_token = (rp_security_context_token_t *)rp_property_get_value(token, env); inclusion = rp_security_context_token_get_inclusion(security_context_token, env); } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "We still only support x509 tokens and security context tokens"); return AXIS2_FALSE; } if(server_side) { if(is_inpath) { include = ((axutil_strcmp(inclusion,RP_INCLUDE_ALWAYS)==0)|| (axutil_strcmp(inclusion,RP_INCLUDE_ONCE)==0)|| (axutil_strcmp(inclusion,RP_INCLUDE_ONCE_SP12)==0)|| (axutil_strcmp(inclusion,RP_INCLUDE_ALWAYS_SP12)==0)|| (axutil_strcmp(inclusion,RP_INCLUDE_ALWAYS_TO_RECIPIENT_SP12)==0)|| (axutil_strcmp(inclusion,RP_INCLUDE_ALWAYS_TO_RECIPIENT)==0)); } else include = ((axutil_strcmp(inclusion,RP_INCLUDE_ALWAYS)==0) || (axutil_strcmp(inclusion,RP_INCLUDE_ALWAYS_SP12)==0)); } else { if(!is_inpath) { include = ((axutil_strcmp(inclusion,RP_INCLUDE_ALWAYS)==0)|| (axutil_strcmp(inclusion,RP_INCLUDE_ONCE)==0)|| (axutil_strcmp(inclusion,RP_INCLUDE_ONCE_SP12)==0)|| (axutil_strcmp(inclusion,RP_INCLUDE_ALWAYS_SP12)==0)|| (axutil_strcmp(inclusion,RP_INCLUDE_ALWAYS_TO_RECIPIENT_SP12)==0)|| (axutil_strcmp(inclusion,RP_INCLUDE_ALWAYS_TO_RECIPIENT)==0)); } else include = ((axutil_strcmp(inclusion,RP_INCLUDE_ALWAYS)==0) || (axutil_strcmp(inclusion,RP_INCLUDE_ALWAYS_SP12)==0)); } return include; } 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_char_t *identifier = NULL; if(rp_property_get_type(token,env) == RP_PROPERTY_X509_TOKEN) { rp_x509_token_t *x509_token = NULL; x509_token = (rp_x509_token_t *)rp_property_get_value(token,env); if(!x509_token) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Cannot get the token value from policy."); return NULL; } else { if(rp_x509_token_get_require_key_identifier_reference(x509_token,env)) identifier = RAMPART_STR_KEY_IDENTIFIER; else if(rp_x509_token_get_require_issuer_serial_reference(x509_token,env)) identifier = RAMPART_STR_ISSUER_SERIAL; else if(rp_x509_token_get_require_embedded_token_reference(x509_token,env)) identifier = RAMPART_STR_EMBEDDED; else if(rp_x509_token_get_require_thumb_print_reference(x509_token,env)) identifier = RAMPART_STR_THUMB_PRINT; else return rampart_context_get_key_identifier_from_wss(rampart_context,env); return identifier; } } /*This can be extended when we are supporting other token types.*/ else return NULL; } 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) { if(axutil_strcmp(identifier, RAMPART_STR_KEY_IDENTIFIER)==0) return rampart_context_is_key_identifier_supported(token,rampart_context,env); else if(axutil_strcmp(identifier, RAMPART_STR_ISSUER_SERIAL)==0) return rampart_context_is_issuer_serial_supported(token,rampart_context,env); else if(axutil_strcmp(identifier, RAMPART_STR_EMBEDDED)==0) return rampart_context_is_embedded_token_supported(token,rampart_context,env); else return AXIS2_FALSE; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL rampart_context_get_layout( rampart_context_t *rampart_context, const axutil_env_t *env) { rp_binding_commons_t *binding_commons = NULL; rp_layout_t *layout = NULL; binding_commons = rampart_context_get_binding_commons(rampart_context,env); if(!binding_commons) return NULL; layout = rp_binding_commons_get_layout(binding_commons,env); if(!layout) return RP_LAYOUT_STRICT; return rp_layout_get_value(layout,env); } AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_increment_ref(rampart_context_t *rampart_context, const axutil_env_t *env) { rampart_context->ref++; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL rampart_context_get_encryption_token_id( rampart_context_t *rampart_context, const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx) { if((!rampart_context->encryption_token_id) && (!axis2_msg_ctx_get_server_side(msg_ctx, env))) { /* used by scripting bindings */ axis2_conf_ctx_t *conf_ctx = NULL; axis2_ctx_t *ctx = NULL; axutil_property_t *property = NULL; /* Get the conf ctx */ conf_ctx = axis2_msg_ctx_get_conf_ctx(msg_ctx, env); if(!conf_ctx) { AXIS2_LOG_ERROR(env->log,AXIS2_LOG_SI, "[rampart]Conf context is NULL. Cannot get encryption token id."); return NULL; } ctx = axis2_conf_ctx_get_base(conf_ctx,env); if(!ctx) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Axis2 context is NULL. Cannot get encryption token id."); return NULL; } /* Get the hash store property */ property = axis2_ctx_get_property(ctx, env, RAMPART_ENC_TOKEN_ID); if(property) { /* Get the store */ rampart_context->encryption_token_id = (axis2_char_t*)axutil_property_get_value(property, env); } } return rampart_context->encryption_token_id; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL rampart_context_get_signature_token_id( rampart_context_t *rampart_context, const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx) { if((!rampart_context->signature_token_id)&& (!axis2_msg_ctx_get_server_side(msg_ctx, env))) { /* used by scripting bindings */ axis2_conf_ctx_t *conf_ctx = NULL; axis2_ctx_t *ctx = NULL; axutil_property_t *property = NULL; /* Get the conf ctx */ conf_ctx = axis2_msg_ctx_get_conf_ctx(msg_ctx, env); if(!conf_ctx) { AXIS2_LOG_ERROR(env->log,AXIS2_LOG_SI, "[rampart]Conf context is NULL. Cannot get signature token id."); return NULL; } ctx = axis2_conf_ctx_get_base(conf_ctx,env); if(!ctx) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Axis2 context is NULL. Cannot get signature token id."); return NULL; } /* Get the hash store property */ property = axis2_ctx_get_property(ctx, env, RAMPART_SIG_TOKEN_ID); if(property) { /* Get the store */ rampart_context->signature_token_id = (axis2_char_t*)axutil_property_get_value(property, env); } } return rampart_context->signature_token_id; } AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_set_encryption_token_id( rampart_context_t *rampart_context, const axutil_env_t *env, axis2_char_t *sct_id, axis2_msg_ctx_t *msg_ctx) { if (!axis2_msg_ctx_get_server_side(msg_ctx, env)) { /* used by scripting bindings */ axis2_conf_ctx_t *conf_ctx = NULL; axis2_ctx_t *ctx = NULL; axutil_property_t *property = NULL; /* Get the conf ctx */ conf_ctx = axis2_msg_ctx_get_conf_ctx(msg_ctx, env); if(!conf_ctx) { AXIS2_LOG_ERROR(env->log,AXIS2_LOG_SI, "[rampart]Conf context is NULL. Cannot store encryption token id."); return AXIS2_FAILURE; } ctx = axis2_conf_ctx_get_base(conf_ctx,env); if(!ctx) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Axis2 context is NULL. Cannot store encryption token id."); return AXIS2_FAILURE; } /* Get the hash store property */ property = axis2_ctx_get_property(ctx, env, RAMPART_ENC_TOKEN_ID); if(property) { axutil_property_set_value(property, env, sct_id); } else { property = axutil_property_create_with_args(env, AXIS2_SCOPE_APPLICATION, AXIS2_TRUE, (void *)NULL, sct_id); axis2_ctx_set_property(ctx, env, RAMPART_ENC_TOKEN_ID, property); } } rampart_context->encryption_token_id = sct_id; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_set_signature_token_id( rampart_context_t *rampart_context, const axutil_env_t *env, axis2_char_t *sct_id, axis2_msg_ctx_t *msg_ctx) { if (!axis2_msg_ctx_get_server_side(msg_ctx, env)) { /* used by scripting bindings */ axis2_conf_ctx_t *conf_ctx = NULL; axis2_ctx_t *ctx = NULL; axutil_property_t *property = NULL; /* Get the op ctx */ conf_ctx = axis2_msg_ctx_get_conf_ctx(msg_ctx, env); if(!conf_ctx) { AXIS2_LOG_ERROR(env->log,AXIS2_LOG_SI, "[rampart]Conf context is NULL. Cannot store signature token id."); return AXIS2_FAILURE; } ctx = axis2_conf_ctx_get_base(conf_ctx,env); if(!ctx) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Axis2 context is NULL. Cannot store signature token id."); return AXIS2_FAILURE; } /* Get the hash store property */ property = axis2_ctx_get_property(ctx, env, RAMPART_SIG_TOKEN_ID); if(property) { axutil_property_set_value(property, env, sct_id); } else { property = axutil_property_create_with_args(env, AXIS2_SCOPE_APPLICATION, AXIS2_TRUE, (void *)NULL, sct_id); axis2_ctx_set_property(ctx, env, RAMPART_SIG_TOKEN_ID, property); } } rampart_context->signature_token_id = sct_id; return AXIS2_SUCCESS; } AXIS2_EXTERN rampart_saml_token_t * AXIS2_CALL rampart_context_get_saml_token(rampart_context_t *rampart_context, const axutil_env_t *env, rampart_st_type_t token_type) { rampart_saml_token_t *saml = NULL; int i = 0, size = 0; if (rampart_context->saml_tokens) { size = axutil_array_list_size(rampart_context->saml_tokens, env); for (i = 0; i < size; i++) { saml = axutil_array_list_get(rampart_context->saml_tokens, env, i); if (saml && rampart_saml_token_get_token_type(saml, env) == token_type) { return saml; } } } return NULL; } AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_add_saml_token(rampart_context_t *rampart_context, const axutil_env_t *env, rampart_saml_token_t *token) { if (!rampart_context->saml_tokens) { rampart_context->saml_tokens = axutil_array_list_create(env, 3); } if (token) { axutil_array_list_add(rampart_context->saml_tokens, env, token); return AXIS2_SUCCESS; } return AXIS2_FAILURE; } AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_set_custom_tokens(rampart_context_t *rampart_context, const axutil_env_t *env, axutil_array_list_t *tokens) { rampart_context->custom_tokens = tokens; return AXIS2_SUCCESS; } AXIS2_EXTERN axutil_array_list_t* AXIS2_CALL rampart_context_get_custom_tokens(rampart_context_t *rampart_context, const axutil_env_t *env) { return rampart_context->custom_tokens; } AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_set_saml_tokens(rampart_context_t *rampart_context, const axutil_env_t *env, axutil_array_list_t *tokens) { rampart_saml_token_t *saml = NULL; int i = 0, size = 0; if (rampart_context->saml_tokens) { size = axutil_array_list_size(rampart_context->saml_tokens, env); for (i = 0; i < size; i++) { saml = axutil_array_list_get(rampart_context->saml_tokens, env, i); if (saml) { rampart_saml_token_free(saml, env); } } axutil_array_list_free(rampart_context->saml_tokens, env); } rampart_context->saml_tokens = tokens; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_set_issued_token_aquire_function(rampart_context_t *rampart_context, const axutil_env_t *env, issued_token_callback_func issued_token_aquire) { rampart_context->aquire_issued_token = issued_token_aquire; return AXIS2_SUCCESS; } AXIS2_EXTERN issued_token_callback_func AXIS2_CALL rampart_context_get_issued_token_aquire_function(rampart_context_t *rampart_context, const axutil_env_t *env) { return rampart_context->aquire_issued_token; } AXIS2_EXTERN rp_property_t *AXIS2_CALL rampart_context_get_endorsing_token(rampart_context_t *rampart_context, const axutil_env_t *env) { axutil_array_list_t *array_list = NULL; rp_supporting_tokens_t *endorsing_supporting = NULL; /*First we should check in the direct policy members*/ endorsing_supporting = rp_secpolicy_get_endorsing_supporting_tokens(rampart_context->secpolicy,env); /*If not there then we should check in the binding*/ if (!endorsing_supporting) { rp_binding_commons_t *commons = NULL; commons = rampart_context_get_binding_commons(rampart_context,env); if(!commons) return NULL; endorsing_supporting = rp_binding_commons_get_endorsing_supporting_tokens(commons,env); if (!endorsing_supporting) return NULL; } array_list = rp_supporting_tokens_get_tokens(endorsing_supporting, env); if (!array_list) return NULL; else { int i = 0; for (i = 0; i < axutil_array_list_size(array_list, env); i++) { rp_property_t *token = NULL; token = (rp_property_t *) axutil_array_list_get(array_list, env, i); if (token) { return token; } } } return NULL; } AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_set_key_mgr(rampart_context_t *rampart_context, const axutil_env_t *env, oxs_key_mgr_t *key_mgr) { if (rampart_context->key_mgr) oxs_key_mgr_free(rampart_context->key_mgr, env); rampart_context->key_mgr = key_mgr; return AXIS2_SUCCESS; } AXIS2_EXTERN oxs_key_mgr_t * AXIS2_CALL rampart_context_get_key_mgr( rampart_context_t *rampart_context, const axutil_env_t *env) { return rampart_context->key_mgr; } AXIS2_EXTERN void * AXIS2_CALL rampart_context_get_key_store_buff( rampart_context_t *rampart_context, const axutil_env_t *env) { return oxs_key_mgr_get_key_store_buff(rampart_context->key_mgr, env); } AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_set_key_store_buff( rampart_context_t *rampart_context, const axutil_env_t *env, void *key_store_buf, int len) { AXIS2_PARAM_CHECK(env->error, key_store_buf, AXIS2_FAILURE); oxs_key_mgr_set_key_store_buff(rampart_context->key_mgr, env, key_store_buf, len); return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_bool_t AXIS2_CALL rampart_context_get_found_cert_in_shp( rampart_context_t *rampart_context, const axutil_env_t *env) { return rampart_context->found_cert_in_shp; } AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_set_found_cert_in_shp( rampart_context_t *rampart_context, const axutil_env_t *env, axis2_bool_t found_cert_in_shp) { rampart_context->found_cert_in_shp = found_cert_in_shp; return AXIS2_SUCCESS; } /* This certificate is set to rampart context when we process the incoming security header * with key info */ AXIS2_EXTERN oxs_x509_cert_t *AXIS2_CALL rampart_context_get_receiver_cert_found_in_shp( rampart_context_t *rampart_context, const axutil_env_t *env) { return rampart_context->receiver_cert; } AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_set_receiver_cert_found_in_shp( rampart_context_t *rampart_context, const axutil_env_t *env, oxs_x509_cert_t *cert) { AXIS2_PARAM_CHECK(env->error, cert, AXIS2_FAILURE); rampart_context->receiver_cert = cert; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_set_store_security_context_token_fn( rampart_context_t *rampart_context, const axutil_env_t *env, store_security_context_token_fn store_fn) { rampart_context->store_sct_funtion = store_fn; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_set_obtain_security_context_token_fn( rampart_context_t *rampart_context, const axutil_env_t *env, obtain_security_context_token_fn get_fn) { rampart_context->obtain_sct_function = get_fn; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_set_delete_security_context_token_fn( rampart_context_t *rampart_context, const axutil_env_t *env, delete_security_context_token_fn delete_fn) { rampart_context->delete_sct_function = delete_fn; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_set_security_context_token_user_params( rampart_context_t *rampart_context, const axutil_env_t *env, void* user_params) { rampart_context->sct_user_params = user_params; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_context_set_validate_security_context_token_fn( rampart_context_t *rampart_context, const axutil_env_t *env, validate_security_context_token_fn validate_fn) { rampart_context->validate_sct_function = validate_fn; return AXIS2_SUCCESS; } AXIS2_EXTERN store_security_context_token_fn AXIS2_CALL rampart_context_get_store_security_context_token_fn( rampart_context_t *rampart_context, const axutil_env_t *env) { return rampart_context->store_sct_funtion; } AXIS2_EXTERN obtain_security_context_token_fn AXIS2_CALL rampart_context_get_obtain_security_context_token_fn( rampart_context_t *rampart_context, const axutil_env_t *env) { return rampart_context->obtain_sct_function; } AXIS2_EXTERN delete_security_context_token_fn AXIS2_CALL rampart_context_get_delete_security_context_token_fn( rampart_context_t *rampart_context, const axutil_env_t *env) { return rampart_context->delete_sct_function; } AXIS2_EXTERN void* AXIS2_CALL rampart_context_get_security_context_token_user_params( rampart_context_t *rampart_context, const axutil_env_t *env) { return rampart_context->sct_user_params; } AXIS2_EXTERN validate_security_context_token_fn AXIS2_CALL rampart_context_get_validate_security_context_token_fn( rampart_context_t *rampart_context, const axutil_env_t *env) { return rampart_context->validate_sct_function; } AXIS2_EXTERN axis2_bool_t AXIS2_CALL rampart_context_is_different_session_key_for_enc_and_sign( const axutil_env_t *env, rampart_context_t *rampart_context) { rp_property_t *binding = NULL; axis2_bool_t use_different_key = AXIS2_FALSE; if(rampart_context) { binding = rp_secpolicy_get_binding(rampart_context_get_secpolicy(rampart_context, env),env); if(binding) { if(rp_property_get_type(binding,env) == RP_PROPERTY_SYMMETRIC_BINDING) { rp_symmetric_binding_t *sym_binding = NULL; rp_property_t *token = NULL; sym_binding = (rp_symmetric_binding_t *)rp_property_get_value(binding,env); if(sym_binding) { /* check protection tokens have being specified. If not (means encryption token and signature token is specified), use different session key for encryption and signature */ token = rp_symmetric_binding_get_protection_token(sym_binding,env); if(!token) use_different_key = AXIS2_TRUE; } } } } return use_different_key; } rampartc-src-1.3.0/src/util/rampart_util.c0000644000076500007650000002666711202453425020415 0ustar shankarshankar/* * 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. */ #include /* Load a .dll or .so module */ static void* rampart_load_module( const axutil_env_t *env, axis2_char_t *module_name, axutil_param_t **param) { axutil_dll_desc_t *dll_desc = NULL; axutil_param_t *impl_info_param = NULL; void *ptr = NULL; AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[rampart]Trying to load module %s", module_name); dll_desc = axutil_dll_desc_create(env); axutil_dll_desc_set_name(dll_desc, env, module_name); impl_info_param = axutil_param_create(env, NULL, dll_desc); axutil_param_set_value_free(impl_info_param, env, axutil_dll_desc_free_void_arg); axutil_class_loader_init(env); ptr = axutil_class_loader_create_dll(env, impl_info_param); if (!ptr) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart] Unable to load the module %s.", module_name); axutil_param_free(impl_info_param, env); } else { AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[rampart]Successfully loaded module %s", module_name); *param = impl_info_param; } return ptr; } /** * Load the credentials module * User MUST free memory * @param env pointer to environment struct * @param cred_module_name name of the credentails module to be loaded * @return the loaded credentails module */ AXIS2_EXTERN rampart_credentials_t* AXIS2_CALL rampart_load_credentials_module( const axutil_env_t *env, axis2_char_t *cred_module_name) { rampart_credentials_t *cred = NULL; axutil_param_t *param = NULL; cred = (rampart_credentials_t*)rampart_load_module(env, cred_module_name, ¶m); if(!cred) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Unable to identify the credentials module %s.", cred_module_name); } else if(param) { cred->param = param; } return cred; } /** * Call credentials module * User MUST free memory of username and password * @param env pointer to environment struct * @param cred_module the credentails module * @param ctx the message context * @param username reference to the returned username * @param password reference to the returned password * @return the status of the operation */ AXIS2_EXTERN rampart_credentials_status_t AXIS2_CALL rampart_call_credentials( const axutil_env_t *env, rampart_credentials_t *cred_module, axis2_msg_ctx_t *msg_ctx, axis2_char_t **username, axis2_char_t **password) { rampart_credentials_status_t cred_status = RAMPART_CREDENTIALS_GENERAL_ERROR; cred_status = RAMPART_CREDENTIALS_USERNAME_GET(cred_module, env, msg_ctx, username, password); return cred_status; } /** * Load authentication module * User MUST free memory * @param env pointer to environment struct * @param auth_module_name name of the authentication module * @return created athenticaiton module */ AXIS2_EXTERN rampart_authn_provider_t* AXIS2_CALL rampart_load_auth_module( const axutil_env_t *env, axis2_char_t *auth_module_name) { rampart_authn_provider_t *authp = NULL; axutil_param_t *param = NULL; authp = (rampart_authn_provider_t*)rampart_load_module(env, auth_module_name, ¶m); if(!authp) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Unable to identify the authentication module %s.", auth_module_name); } else if(param) { authp->param = param; } return authp; } /** * Load replay detection module * User MUST free memory * @param env pointer to environment struct * @param replay_detector_name name of the replay detection module * @return created replay detection module */ AXIS2_EXTERN rampart_replay_detector_t* AXIS2_CALL rampart_load_replay_detector( const axutil_env_t *env, axis2_char_t *replay_detector_name) { rampart_replay_detector_t *rd = NULL; axutil_param_t *param = NULL; rd = (rampart_replay_detector_t*)rampart_load_module(env, replay_detector_name, ¶m); if(!rd) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Unable to identify the replay detection module %s.", replay_detector_name); } else if(param) { rd->param = param; } return rd; } /** * Load security context token provider * User MUST free memory * @param env pointer to environment struct * @param sct_provider_name name of the security context token provider * @return created security context token provider module */ AXIS2_EXTERN rampart_sct_provider_t* AXIS2_CALL rampart_load_sct_provider( const axutil_env_t *env, axis2_char_t *sct_provider_name) { rampart_sct_provider_t *sct_provider = NULL; axutil_param_t *param = NULL; sct_provider = (rampart_sct_provider_t*)rampart_load_module(env, sct_provider_name, ¶m); if(!sct_provider) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Unable to identify security context token provider module %s.", sct_provider_name); } else if(param) { sct_provider->param = param; } return sct_provider; } /** * Load the password callback module * User MUST free memory * @param env pointer to environment struct * @callback_module_name the name of the callback module * @return the loaded callback module */ AXIS2_EXTERN rampart_callback_t* AXIS2_CALL rampart_load_pwcb_module( const axutil_env_t *env, axis2_char_t *callback_module_name) { rampart_callback_t *cb = NULL; axutil_param_t *param = NULL; cb = (rampart_callback_t*)rampart_load_module(env, callback_module_name, ¶m); if(!cb) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Unable to identify the callback module %s.", callback_module_name); } else if(param) { cb->param = param; } return cb; } /** * Call auth module * @param env pointer to environment struct * @param authp the authentication module * @param username the username in the UsernameToken * @param password the password in the UsernameToken * @param nonce the nonce in the UsernameToken. Can be NULL if plain text password is used. * @param created created time in UsernameToken. Can be NULL if plain text password is used. * @param password_type the type of the password. either plain text of digest * @param msg_ctx the message context * @return status of the operation */ AXIS2_EXTERN rampart_authn_provider_status_t AXIS2_CALL rampart_authenticate_un_pw( const axutil_env_t *env, rampart_authn_provider_t *authp, const axis2_char_t *username, const axis2_char_t *password, const axis2_char_t *nonce, const axis2_char_t *created, const axis2_char_t *password_type, axis2_msg_ctx_t *msg_ctx) { rampart_authn_provider_status_t auth_status = RAMPART_AUTHN_PROVIDER_GENERAL_ERROR; if(authp) { if(!axutil_strcmp(password_type, RAMPART_PASSWORD_DIGEST_URI)) { auth_status = RAMPART_AUTHN_PROVIDER_CHECK_PASSWORD_DIGEST( authp, env, msg_ctx, username, nonce, created, password); } else { auth_status = RAMPART_AUTHN_PROVIDER_CHECK_PASSWORD( authp, env, msg_ctx, username, password); } } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Cannot authenticate user. Authentication module is not valid"); } return auth_status; } /** * Gets the password of given user. * @env the environment * @callback_module callback module structure * @username the name of the user to get the password * @return the password for the user or NULL if failed */ AXIS2_EXTERN axis2_char_t* AXIS2_CALL rampart_callback_password( const axutil_env_t *env, rampart_callback_t *callback_module, const axis2_char_t *username) { axis2_char_t *password = NULL; void *cb_prop_val= NULL; /*Get the password thru the callback*/ password = RAMPART_CALLBACK_CALLBACK_PASSWORD(callback_module, env, username, cb_prop_val); return password; } /** * Get the password for pkcs12 key store. * @env pointer to environment struct * @callback pointer to rampart callback module * @username name of the pkcs12 owner * @return the password for the user or NULL if username is incorrect */ AXIS2_EXTERN axis2_char_t * AXIS2_CALL rampart_callback_pkcs12_password( const axutil_env_t *env, rampart_callback_t *callback_module, const axis2_char_t *username) { axis2_char_t *password = NULL; void *cb_prop_val = NULL; /*Get the password through the callback module*/ password = RAMPART_CALLBACK_CALLBACK_PKCS12_PASSWORD(callback_module, env, username, cb_prop_val); return password; } /** * Generates time. * User MUST free memory * @param ttl Time to live. The time difference between created and expired in mili seconds. * @param with_millisecond shows whether millisecond precision is needed or not * @return generated time **/ AXIS2_EXTERN axis2_char_t* AXIS2_CALL rampart_generate_time( const axutil_env_t *env, int ttl, axis2_bool_t with_millisecond) { axutil_date_time_t *dt = NULL; axis2_char_t *dt_str = NULL; dt = axutil_date_time_create_with_offset(env, ttl); if(with_millisecond) { dt_str = axutil_date_time_serialize_date_time(dt, env); } else { dt_str = axutil_date_time_serialize_date_time_without_millisecond(dt, env); } axutil_date_time_free(dt, env); return dt_str; } /** * Check if @dt1 < @dt2. if not returns a false * @param env pointer to environment struct * @param dt1 date time 1. * @param dt2 date time 2. * @return AXIS2_SUCCESS if dt1 < dt2. AXIS2_FALSE otherwise */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_compare_date_time( const axutil_env_t *env, axis2_char_t *dt1_str, axis2_char_t *dt2_str) { axis2_status_t status = AXIS2_FAILURE; axutil_date_time_t *dt1 = NULL; axutil_date_time_t *dt2 = NULL; axutil_date_time_comp_result_t res = AXIS2_DATE_TIME_COMP_RES_UNKNOWN; dt1 = axutil_date_time_create(env); status = axutil_date_time_deserialize_date_time(dt1, env, dt1_str); if(status != AXIS2_SUCCESS) { axutil_date_time_free(dt1, env); return AXIS2_FAILURE; } dt2 = axutil_date_time_create(env); status = axutil_date_time_deserialize_date_time(dt2, env, dt2_str); if (status != AXIS2_SUCCESS) { axutil_date_time_free(dt1, env); axutil_date_time_free(dt2, env); return AXIS2_FAILURE; } /* dt1 #include #include #include #include /** * validates whether timestamp is added according to the policy */ static axis2_status_t rampart_pv_validate_ts( const axutil_env_t *env, rampart_context_t *rampart_context, axis2_msg_ctx_t *msg_ctx) { if(rampart_context_is_include_timestamp(rampart_context, env)) { axis2_char_t *ts_found = NULL; ts_found = (axis2_char_t*)rampart_get_security_processed_result( env, msg_ctx, RAMPART_SPR_TS_CHECKED); if(axutil_strcmp(RAMPART_YES, ts_found)) { /* Timestamp is not send in the message, but needed by policy */ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,"[rampart]Timestamp token required. Not found"); rampart_create_fault_envelope(env, RAMPART_FAULT_FAILED_CHECK, "Timestamp token required. Cannot find in the security header", RAMPART_FAULT_INVALID_SECURITY, msg_ctx); return AXIS2_FAILURE; } } return AXIS2_SUCCESS; } /** * validates whether username token is added according to the policy. Needed by server side */ static axis2_status_t rampart_pv_validate_ut( const axutil_env_t *env, rampart_context_t *rampart_context, axis2_msg_ctx_t *msg_ctx) { if(axis2_msg_ctx_get_server_side(msg_ctx,env)) { /* user name is verified only by server side. For client side, it is not needed */ if(rampart_context_is_include_username_token(rampart_context, env)) { axis2_char_t *ut_found = NULL; ut_found = (axis2_char_t*)rampart_get_security_processed_result( env, msg_ctx, RAMPART_SPR_UT_CHECKED); if(axutil_strcmp(RAMPART_YES, ut_found)) { /* UsernameToken is not send in the message, but needed by policy */ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]UsernameToken required. Not found"); rampart_create_fault_envelope(env, RAMPART_FAULT_FAILED_CHECK, "Username token required. Cannot find in the security header", RAMPART_FAULT_INVALID_SECURITY, msg_ctx); return AXIS2_FAILURE; } } } return AXIS2_SUCCESS; } /** * validates whether signature confirmation is added according to the policy. Needed by client side */ static axis2_status_t rampart_pv_validate_signature_confirmation( const axutil_env_t *env, rampart_context_t *rampart_context, axis2_msg_ctx_t *msg_ctx) { if(!axis2_msg_ctx_get_server_side(msg_ctx,env)) { /* signature confirmation is verified only by client side. Not needed for server side */ axis2_bool_t sig_conf_reqd = AXIS2_FALSE; sig_conf_reqd = rampart_context_is_sig_confirmation_reqd(rampart_context, env); if(sig_conf_reqd) { axis2_char_t* sig_conf_found = NULL; sig_conf_found = (axis2_char_t*)rampart_get_security_processed_result( env, msg_ctx, RAMPART_SPR_SIG_CONFIRM_FOUND); if(axutil_strcmp(RAMPART_YES, sig_conf_found)) { /* Signature confirmation is not send in the message, but needed by policy */ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,"[rampart]Signature confirmation required."); rampart_create_fault_envelope(env, RAMPART_FAULT_FAILED_CHECK, "SignatureConfirmation is not found", RAMPART_FAULT_INVALID_SECURITY, msg_ctx); return AXIS2_FAILURE; } } } return AXIS2_SUCCESS; } /** * validates whether Signature is encrypted */ static axis2_status_t rampart_pv_validate_signature_encryption( const axutil_env_t *env, rampart_context_t *rampart_context, axis2_msg_ctx_t *msg_ctx) { axis2_bool_t signature_protection = AXIS2_FALSE; signature_protection = rampart_context_is_encrypt_signature(rampart_context, env); if(signature_protection) { axis2_char_t* sig_encrypted = NULL; sig_encrypted = (axis2_char_t*)rampart_get_security_processed_result( env, msg_ctx, RAMPART_SPR_SIG_ENCRYPTED); if(axutil_strcmp(RAMPART_YES, sig_encrypted)) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,"[rampart]Signature need to be encrypted."); rampart_create_fault_envelope(env, RAMPART_FAULT_FAILED_CHECK, "Signature need to be encrypted", RAMPART_FAULT_INVALID_SECURITY, msg_ctx); return AXIS2_FAILURE; } } return AXIS2_SUCCESS; } /** * validates whether body is encrypted */ static axis2_status_t rampart_pv_validate_encryption( const axutil_env_t *env, rampart_context_t *rampart_context, axis2_msg_ctx_t *msg_ctx) { axis2_bool_t body_encryption = AXIS2_FALSE; axis2_status_t status = AXIS2_SUCCESS; axutil_array_list_t *nodes_to_encrypt = NULL; axiom_soap_envelope_t *soap_envelope = NULL; int i = 0; nodes_to_encrypt = axutil_array_list_create(env, 0); soap_envelope = axis2_msg_ctx_get_soap_envelope(msg_ctx, env); status = rampart_context_get_nodes_to_encrypt( rampart_context, env, soap_envelope, nodes_to_encrypt); status = rampart_context_get_elements_to_encrypt( rampart_context, env, soap_envelope, nodes_to_encrypt); /* See if the body need to be encrypted */ if(nodes_to_encrypt && (axutil_array_list_size(nodes_to_encrypt, env) > 0)) { for(i=0 ; i < axutil_array_list_size(nodes_to_encrypt, env); i++) { axiom_node_t *node_to_enc = NULL; /* Get the node to be encrypted */ node_to_enc = (axiom_node_t *)axutil_array_list_get(nodes_to_encrypt, env, i); if(node_to_enc) { if(!axutil_strcmp(OXS_NODE_BODY , axiom_util_get_localname(axiom_node_get_parent(node_to_enc,env), env))) { body_encryption = AXIS2_TRUE; break; } } }/* Eof loop */ } else { axutil_array_list_free(nodes_to_encrypt, env); return AXIS2_SUCCESS; } axutil_array_list_free(nodes_to_encrypt, env); if(body_encryption) { axis2_char_t* body_encrypted = NULL; body_encrypted = (axis2_char_t*)rampart_get_security_processed_result( env, msg_ctx, RAMPART_SPR_BODY_ENCRYPTED); if(axutil_strcmp(RAMPART_YES, body_encrypted)) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,"[rampart]Body need to be encrypted."); rampart_create_fault_envelope(env, RAMPART_FAULT_FAILED_CHECK, "Body need to be encrypted", RAMPART_FAULT_INVALID_SECURITY, msg_ctx); return AXIS2_FAILURE; } } return AXIS2_SUCCESS; } /** * validates whether message is signed */ static axis2_status_t rampart_pv_validate_signature( const axutil_env_t *env, rampart_context_t *rampart_context, axis2_msg_ctx_t *msg_ctx) { axis2_status_t status = AXIS2_SUCCESS; axutil_array_list_t *nodes_to_sign = NULL; axiom_soap_envelope_t *soap_envelope = NULL; axis2_char_t* signature_verified = NULL; nodes_to_sign = axutil_array_list_create(env, 0); soap_envelope = axis2_msg_ctx_get_soap_envelope(msg_ctx, env); status = rampart_context_get_nodes_to_sign(rampart_context, env, soap_envelope, nodes_to_sign); status = rampart_context_get_elements_to_sign( rampart_context, env, soap_envelope, nodes_to_sign); signature_verified = (axis2_char_t*)rampart_get_security_processed_result( env, msg_ctx, RAMPART_SPR_SIG_VERIFIED); if(!axutil_strcmp(RAMPART_YES, signature_verified)) { if(axutil_array_list_size(nodes_to_sign, env) <= 0) { axutil_array_list_free(nodes_to_sign, env); AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,"[rampart]Signature is not expected."); rampart_create_fault_envelope(env, RAMPART_FAULT_FAILED_CHECK, "Signature is not expected", RAMPART_FAULT_INVALID_SECURITY, msg_ctx); return AXIS2_FAILURE; } } else { if(axutil_array_list_size(nodes_to_sign, env) > 0) { axutil_array_list_free(nodes_to_sign, env); AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,"[rampart]Could not find signature."); rampart_create_fault_envelope(env, RAMPART_FAULT_FAILED_CHECK, "Could not find signature", RAMPART_FAULT_INVALID_SECURITY, msg_ctx); return AXIS2_FAILURE; } } axutil_array_list_free(nodes_to_sign, env); return AXIS2_SUCCESS; } /** * Validate security policies, those cannot be checked on the fly * @param env pointer to environment struct * @param rampart_context the Rampart Context * @param sec_node The security element * @param msg_ctx message context * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_pv_validate_sec_header( const axutil_env_t *env, rampart_context_t *rampart_context, axiom_node_t *sec_node, axis2_msg_ctx_t *msg_ctx) { /* Check if the signature needed to be encrypted */ if(!rampart_pv_validate_signature_encryption(env, rampart_context, msg_ctx)) { return AXIS2_FAILURE; } /* Check if the Signature Confirmation is set */ if(!rampart_pv_validate_signature_confirmation(env, rampart_context, msg_ctx)) { return AXIS2_FAILURE; } /* Check if Usernametoken found */ if(!rampart_pv_validate_ut(env, rampart_context, msg_ctx)) { return AXIS2_FAILURE; } /* Check if Timestamp found */ if(!rampart_pv_validate_ts(env, rampart_context, msg_ctx)) { return AXIS2_FAILURE; } /* Check if encryption is valid found */ if(!rampart_pv_validate_encryption(env, rampart_context, msg_ctx)) { return AXIS2_FAILURE; } /* Check if signature is valid found */ if(!rampart_pv_validate_signature(env, rampart_context, msg_ctx)) { return AXIS2_FAILURE; } /* All the policy reqmnts are met. We are good to go */ return AXIS2_SUCCESS; } rampartc-src-1.3.0/src/util/rampart_username_token.c0000644000076500007650000005576311202453425022456 0ustar shankarshankar/* * 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. */ #include #include #include #include #include /* * builds username token * @param env pointer to environment struct * @param rampart_context pointer to rampart context structure * @param sec_node Security header node * @param sec_ns_obj security namespace object * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ axis2_status_t AXIS2_CALL rampart_username_token_build( const axutil_env_t *env, rampart_context_t *rampart_context, axiom_node_t *sec_node, axiom_namespace_t *sec_ns_obj) { axiom_node_t *ut_node = NULL; axiom_node_t *un_node = NULL; axiom_node_t *pw_node = NULL; axiom_element_t *ut_ele = NULL; axiom_element_t *un_ele = NULL; axiom_element_t *pw_ele = NULL; axiom_namespace_t *wsu_ns_obj = NULL; axis2_char_t *password = NULL; axis2_char_t *username = NULL; axis2_char_t *password_type = NULL; axiom_attribute_t *om_attr = NULL; username = rampart_context_get_user(rampart_context, env); if(!username) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart] User name is not specified."); return AXIS2_FAILURE; } /* check whether password is given in the configuration. If it is given, we should use it */ password = rampart_context_get_password(rampart_context, env); if(!password) { /* password is not given. So have to check whether call back function is given, or call back * module is given */ password_callback_fn password_function = NULL; password_function = rampart_context_get_pwcb_function(rampart_context, env); if(password_function) { /* We can use the callback function to get the password */ void *param = NULL; param = rampart_context_get_pwcb_user_params(rampart_context, env); if(!param) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Callback parameter needed password callback function is not set."); return AXIS2_FAILURE; } password = (*password_function)(env, username, param); } else { /* callback function is not set. Check for password callback module */ rampart_callback_t *password_callback = NULL; password_callback = rampart_context_get_password_callback(rampart_context, env); if(!password_callback) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Password callback module is not loaded."); return AXIS2_FAILURE; } password = rampart_callback_password(env, password_callback, username); } /* check whether the password is valid */ if(!password) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Cannot find the password for user %s.", username); return AXIS2_FAILURE; } } /* we have valid username and password. Can start to build UsernameToken */ axiom_namespace_increment_ref(sec_ns_obj, env); ut_ele = axiom_element_create( env, sec_node, RAMPART_SECURITY_USERNAMETOKEN, sec_ns_obj, &ut_node); if(!ut_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]UsernameToken element creation failed."); return AXIS2_FAILURE; } wsu_ns_obj = axiom_namespace_create(env, RAMPART_WSU_XMLNS, RAMPART_WSU); axiom_element_declare_namespace(ut_ele, env, ut_node, wsu_ns_obj); /* Build Username element */ axiom_namespace_increment_ref(sec_ns_obj, env); un_ele = axiom_element_create( env, ut_node, RAMPART_SECURITY_USERNAMETOKEN_USERNAME, sec_ns_obj, &un_node); if(un_ele) { axiom_element_set_text(un_ele, env, username, un_node); } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Username element creation failed."); return AXIS2_FAILURE; } /* build remaining token based on password type */ password_type = rampart_context_get_password_type(rampart_context, env); if(!password_type) { password_type = RAMPART_PASSWORD_TEXT; } if (!axutil_strcmp(password_type, RAMPART_PASSWORD_DIGEST)) { axis2_char_t *nonce_val = NULL; axis2_char_t *created_val = NULL; axis2_char_t *digest_val = NULL; axis2_bool_t need_millisecond = AXIS2_TRUE; axiom_node_t *nonce_node = NULL; axiom_node_t *created_node = NULL; axiom_element_t *nonce_ele = NULL; axiom_element_t *created_ele = NULL; need_millisecond = rampart_context_get_need_millisecond_precision(rampart_context, env); nonce_val = oxs_util_generate_nonce(env, RAMPART_USERNAME_TOKEN_NONCE_LENGTH) ; created_val = rampart_generate_time(env, 0, need_millisecond); /* current time */ digest_val = rampart_crypto_sha1(env, nonce_val, created_val, password); /* create password element */ axiom_namespace_increment_ref(sec_ns_obj, env); pw_ele = axiom_element_create( env, ut_node, RAMPART_SECURITY_USERNAMETOKEN_PASSWORD, sec_ns_obj, &pw_node); if(pw_ele) { axiom_element_set_text(pw_ele, env, digest_val, pw_node); om_attr = axiom_attribute_create(env, RAMPART_SECURITY_USERNAMETOKEN_PASSWORD_ATTR_TYPE, RAMPART_PASSWORD_DIGEST_URI, NULL); axiom_element_add_attribute(pw_ele, env, om_attr, pw_node); } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Password element creation failed."); return AXIS2_FAILURE; } /* create Nonce element */ axiom_namespace_increment_ref(sec_ns_obj, env); nonce_ele = axiom_element_create( env, ut_node, RAMPART_SECURITY_USERNAMETOKEN_NONCE, sec_ns_obj, &nonce_node); if (nonce_ele) { axiom_element_set_text(nonce_ele, env, nonce_val , nonce_node); } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Nonce element creation failed."); return AXIS2_FAILURE; } /* create Created element */ created_ele = axiom_element_create( env, ut_node, RAMPART_SECURITY_USERNAMETOKEN_CREATED, wsu_ns_obj, &created_node); if (created_ele) { axiom_element_set_text(created_ele, env, created_val, created_node); } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Created element creation failed."); return AXIS2_FAILURE; } if(nonce_val) { AXIS2_FREE(env->allocator, nonce_val); nonce_val = NULL; } if(created_val) { AXIS2_FREE(env->allocator, created_val); created_val = NULL; } if(digest_val) { AXIS2_FREE(env->allocator, digest_val); digest_val = NULL; } } else { /* default is passwordText */ axiom_namespace_increment_ref(sec_ns_obj, env); pw_ele = axiom_element_create( env, ut_node, RAMPART_SECURITY_USERNAMETOKEN_PASSWORD, sec_ns_obj, &pw_node); if (pw_ele) { axiom_element_set_text(pw_ele, env, password, pw_node); om_attr = axiom_attribute_create(env, RAMPART_SECURITY_USERNAMETOKEN_PASSWORD_ATTR_TYPE, RAMPART_PASSWORD_TEXT_URI, NULL); axiom_element_add_attribute(pw_ele, env, om_attr, pw_node); } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Password element creation failed."); return AXIS2_FAILURE; } } return AXIS2_SUCCESS; } /* * Validates the given username token * @param env pointer to environment struct * @param msg_ctx axis2 message context * @param ut_node User name token node * @param rampart_context pointer to rampart context structure * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ axis2_status_t AXIS2_CALL rampart_username_token_validate( const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axiom_node_t *ut_node, rampart_context_t *rampart_context) { axiom_child_element_iterator_t *children = NULL; axis2_char_t *username = NULL; axis2_char_t *password = NULL; axis2_char_t *nonce = NULL; axis2_char_t *created = NULL; axis2_char_t *password_type = NULL; rampart_authn_provider_t *authn_provider = NULL; axis2_char_t *password_from_svr = NULL; axis2_char_t *password_to_compare = NULL; axis2_bool_t free_password_to_compare = AXIS2_FALSE; rampart_authn_provider_status_t auth_status= RAMPART_AUTHN_PROVIDER_GENERAL_ERROR ; axiom_element_t *ut_ele = NULL; ut_ele = axiom_node_get_data_element(ut_node, env); if(!ut_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]UsernameToken element could not be retrieved from the node."); return AXIS2_FAILURE; } /* Check: Any USERNAME_TOKEN MUST NOT have more than one PASSWORD */ if(1 < oxs_axiom_get_number_of_children_with_qname( env, ut_node, RAMPART_SECURITY_USERNAMETOKEN_PASSWORD, RAMPART_WSSE_XMLNS, RAMPART_WSSE)) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Username token must not have more than one password"); return AXIS2_FAILURE; } /* Check: Any USERNAME_TOKEN MUST NOT have more than one CREATED */ if(1 < oxs_axiom_get_number_of_children_with_qname( env, ut_node, RAMPART_SECURITY_USERNAMETOKEN_CREATED, RAMPART_WSSE_XMLNS, RAMPART_WSSE)) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Username token must not have more than one creted element"); return AXIS2_FAILURE; } /* Check: Any USERNAME_TOKEN MUST NOT have more than one NONCE */ if(1 < oxs_axiom_get_number_of_children_with_qname( env, ut_node, RAMPART_SECURITY_USERNAMETOKEN_NONCE, RAMPART_WSSE_XMLNS, RAMPART_WSSE)) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Username token must not have more than one nonce element"); return AXIS2_FAILURE; } /* Go thru children of UsernameToken element and validate */ children = axiom_element_get_child_elements(ut_ele, env, ut_node); if(!children) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Cannot find child elements of UsernameToken"); return AXIS2_FAILURE; } /*Go thru children and find username token parameters*/ while(axiom_child_element_iterator_has_next(children, env)) { axiom_node_t *node = NULL; axiom_element_t *element = NULL; axis2_char_t *localname = NULL; node = axiom_child_element_iterator_next(children, env); element = axiom_node_get_data_element(node, env); localname = axiom_element_get_localname(element, env); if(!axutil_strcmp(localname, RAMPART_SECURITY_USERNAMETOKEN_USERNAME)) { username = axiom_element_get_text(element, env, node); } else if(!axutil_strcmp(localname, RAMPART_SECURITY_USERNAMETOKEN_PASSWORD)) { axis2_char_t *password_type_pol = NULL; password_type = axiom_element_get_attribute_value_by_name( element, env, RAMPART_SECURITY_USERNAMETOKEN_PASSWORD_ATTR_TYPE); if(!password_type) { password_type = RAMPART_PASSWORD_TEXT_URI; } /* Then we must check the password type with policy */ password_type_pol = rampart_context_get_password_type(rampart_context, env); if(!password_type_pol) { password_type_pol = RP_PLAINTEXT; } if(!axutil_strcmp(password_type_pol, RP_DIGEST)) { if(axutil_strcmp(password_type, RAMPART_PASSWORD_DIGEST_URI)) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Password Type is wrong"); rampart_create_fault_envelope(env, RAMPART_FAULT_FAILED_AUTHENTICATION, "Password Type is Wrong. Should be Digested.", RAMPART_FAULT_IN_USERNAMETOKEN, msg_ctx); return AXIS2_FAILURE; } } else if(!axutil_strcmp(password_type_pol, RP_PLAINTEXT)) { if(!axutil_strcmp(password_type, RAMPART_PASSWORD_DIGEST_URI)) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Password Type is Wrong "); rampart_create_fault_envelope(env, RAMPART_FAULT_FAILED_AUTHENTICATION, "Password Type is Wrong. Should be PlainText.", RAMPART_FAULT_IN_USERNAMETOKEN, msg_ctx); return AXIS2_FAILURE; } } password = axiom_element_get_text(element, env, node); } else if(!axutil_strcmp(localname, RAMPART_SECURITY_USERNAMETOKEN_NONCE)) { nonce = axiom_element_get_text(element, env, node); rampart_set_security_processed_result(env, msg_ctx, RAMPART_SPR_UT_NONCE, nonce); } else if (!axutil_strcmp(localname , RAMPART_SECURITY_USERNAMETOKEN_CREATED)) { created = axiom_element_get_text(element, env, node); rampart_set_security_processed_result(env, msg_ctx, RAMPART_SPR_UT_CREATED, created); } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Unknown element found %s -> %s", localname, axiom_element_get_text(element, env, node)); rampart_create_fault_envelope(env, RAMPART_FAULT_FAILED_AUTHENTICATION, "Unknown element found in UsernameToken.", RAMPART_FAULT_IN_USERNAMETOKEN, msg_ctx); return AXIS2_FAILURE; } }/* end of while */ /* Now we process collected usernametoken parameters */ if(!username) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart] Username is not specified in the UsernameToken."); rampart_create_fault_envelope(env, RAMPART_FAULT_FAILED_AUTHENTICATION, "Username is not specified in UsernameToken.", RAMPART_FAULT_IN_USERNAMETOKEN, msg_ctx); return AXIS2_FAILURE; } /* Set the username to the SPR */ rampart_set_security_processed_result(env, msg_ctx, RAMPART_SPR_UT_USERNAME, username); /** * NOTE: Here we will try following apraoches to get the UT validated * 1. Authentication function (will get username, password and verify them) * 2. Authentication module (will get username, password and verify them) * 3. Direct username and password set in rampart context. * 4. Password callback function (will get username and return password) * 5. Password callback module (will get username and return password) * * If authentication module is defined use it. * Else try the usual approach to get password from the callback and compare **/ /* We should first try to use function pointers. Function pointers will be different for digest * password and plain password. */ if (!axutil_strcmp(password_type, RAMPART_PASSWORD_DIGEST_URI)) { auth_digest_func authenticate_with_digest = NULL; authenticate_with_digest = rampart_context_get_auth_digest_function( rampart_context, env); if(authenticate_with_digest) { auth_status = authenticate_with_digest(env, username, nonce, created, password, NULL); if(RAMPART_AUTHN_PROVIDER_GRANTED == auth_status) { AXIS2_LOG_INFO(env->log, "[rampart]User authenticated"); rampart_set_security_processed_result( env, msg_ctx,RAMPART_SPR_UT_CHECKED, RAMPART_YES); return AXIS2_SUCCESS; } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Password is not valid for user %s : status %d", username, auth_status); return AXIS2_FAILURE; } } } else { auth_password_func auth_with_password = NULL; auth_with_password = rampart_context_get_auth_password_function(rampart_context, env); if(auth_with_password) { auth_status = auth_with_password(env, username, password, NULL); if(RAMPART_AUTHN_PROVIDER_GRANTED == auth_status) { AXIS2_LOG_INFO(env->log, "[rampart]User authenticated"); rampart_set_security_processed_result( env, msg_ctx, RAMPART_SPR_UT_CHECKED, RAMPART_YES); return AXIS2_SUCCESS; } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Password is not valid for user %s : status %d", username, auth_status); return AXIS2_FAILURE; } } } /* password function is not given. so check authentication provider module */ authn_provider = rampart_context_get_authn_provider(rampart_context, env); if(authn_provider) { AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[rampart]Password authentication using AUTH MODULE"); auth_status = rampart_authenticate_un_pw( env, authn_provider, username, password, nonce, created, password_type, msg_ctx); if(RAMPART_AUTHN_PROVIDER_GRANTED == auth_status) { AXIS2_LOG_INFO(env->log, "[rampart]User authenticated"); rampart_set_security_processed_result( env, msg_ctx, RAMPART_SPR_UT_CHECKED, RAMPART_YES); return AXIS2_SUCCESS; } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Password is not valid for user %s : status %d", username, auth_status); return AXIS2_FAILURE; } } /* Authentication provider module is not given. Then we must check the direct password. */ password_from_svr = rampart_context_get_password( rampart_context, env); if(password_from_svr) { /* If the direct passowrd is available, then chk for the username too in the context. * We need to compare it with the message's username. The reason is here we do not use * callbacks. Thus there will be no failure if the username is wrong and the password is * correct */ axis2_char_t *context_usr = NULL; context_usr = rampart_context_get_user(rampart_context, env); if(axutil_strcmp(context_usr, username)) { rampart_create_fault_envelope(env, RAMPART_FAULT_FAILED_CHECK, "Username is not valid.", RAMPART_FAULT_IN_USERNAMETOKEN, msg_ctx); AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Username given in UsernameToken is not valid"); return AXIS2_FAILURE; } } else { /* direct password is not given. so have to check whether password callback function is * available. If so, use it to get the password */ password_callback_fn password_function = NULL; password_function = rampart_context_get_pwcb_function(rampart_context, env); if(password_function) { void *param = NULL; param = rampart_context_get_pwcb_user_params(rampart_context, env); if(!param) { rampart_create_fault_envelope(env, RAMPART_FAULT_FAILED_CHECK, "Error in the Internal configuration.", RAMPART_FAULT_IN_USERNAMETOKEN, msg_ctx); AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]User parameter needed by password callback function is not given."); return AXIS2_FAILURE; } password_from_svr = (*password_function)(env, username, param); } else { /* password callback function is not given. so have to check password callback module */ rampart_callback_t *password_callback = NULL; password_callback = rampart_context_get_password_callback(rampart_context, env); if(!password_callback) { rampart_create_fault_envelope(env, RAMPART_FAULT_FAILED_CHECK, "Error in the Internal configuration.", RAMPART_FAULT_IN_USERNAMETOKEN, msg_ctx); AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Password callback module is not specified"); return AXIS2_FAILURE; } password_from_svr = rampart_callback_password(env, password_callback, username); } if(!password_from_svr) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Cannot get the password for user %s", username); return AXIS2_FAILURE; } } /* NOW we have the password. Is digest needed? */ if (!axutil_strcmp(password_type, RAMPART_PASSWORD_DIGEST_URI)) { password_to_compare = rampart_crypto_sha1(env, nonce, created, password_from_svr); rampart_set_security_processed_result( env, msg_ctx, RAMPART_SPR_UT_PASSWORD_TYPE, RAMPART_PASSWORD_DIGEST_URI); free_password_to_compare = AXIS2_TRUE; } else { password_to_compare = password_from_svr; rampart_set_security_processed_result( env, msg_ctx, RAMPART_SPR_UT_PASSWORD_TYPE, RAMPART_PASSWORD_TEXT_URI); } /* The BIG moment. Compare passwords */ if (!axutil_strcmp(password_to_compare , password)) { AXIS2_LOG_INFO(env->log, "[rampart]Password comparison SUCCESS"); rampart_set_security_processed_result(env, msg_ctx, RAMPART_SPR_UT_CHECKED, RAMPART_YES); if(free_password_to_compare) { AXIS2_FREE(env->allocator, password_to_compare); } return AXIS2_SUCCESS; } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Password is not valid for user %s", username); if(free_password_to_compare) { AXIS2_FREE(env->allocator, password_to_compare); } return AXIS2_FAILURE; } } rampartc-src-1.3.0/src/util/rampart_config.c0000644000076500007650000001117411202453425020670 0ustar shankarshankar/* * 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. */ #include struct rampart_config_t { axis2_char_t *username; axis2_char_t *password; axis2_char_t *password_type; axutil_array_list_t *saml_tokens; issued_token_callback_func issued_token_aquire; int ttl; }; AXIS2_EXTERN rampart_config_t *AXIS2_CALL rampart_config_create( const axutil_env_t *env) { rampart_config_t *rampart_config = NULL; rampart_config = (rampart_config_t *) AXIS2_MALLOC (env->allocator, sizeof (rampart_config_t)); if(!rampart_config) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart] Unable to create rampart configuration. Insufficient memory."); AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE); return NULL; } rampart_config->username = NULL; rampart_config->password = NULL; rampart_config->password_type = NULL; rampart_config->ttl = 0; rampart_config->saml_tokens = NULL; rampart_config->issued_token_aquire = NULL; return rampart_config; } AXIS2_EXTERN void AXIS2_CALL rampart_config_free( rampart_config_t *rampart_config, const axutil_env_t *env) { AXIS2_FREE(env->allocator,rampart_config); } AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_config_set_username( rampart_config_t *rampart_config, const axutil_env_t *env, axis2_char_t *username) { rampart_config->username = username; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_config_set_password( rampart_config_t *rampart_config, const axutil_env_t *env, axis2_char_t *password) { rampart_config->password = password; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_config_set_password_type( rampart_config_t *rampart_config, const axutil_env_t *env, axis2_char_t *password_type) { rampart_config->password_type = password_type; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_config_set_ttl( rampart_config_t *rampart_config, const axutil_env_t *env, int ttl) { rampart_config->ttl = ttl; return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL rampart_config_get_username( rampart_config_t *rampart_config, const axutil_env_t *env) { return rampart_config->username; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL rampart_config_get_password( rampart_config_t *rampart_config, const axutil_env_t *env) { return rampart_config->password; } AXIS2_EXTERN axis2_char_t *AXIS2_CALL rampart_config_get_password_type( rampart_config_t *rampart_config, const axutil_env_t *env) { return rampart_config->password_type; } AXIS2_EXTERN int AXIS2_CALL rampart_config_get_ttl( rampart_config_t *rampart_config, const axutil_env_t *env) { return rampart_config->ttl; } AXIS2_EXTERN int AXIS2_CALL rampart_config_add_saml_token( rampart_config_t *rampart_config, const axutil_env_t *env, rampart_saml_token_t *saml) { if (!rampart_config->saml_tokens) { rampart_config->saml_tokens = axutil_array_list_create(env, 3); } if (saml) { axutil_array_list_add(rampart_config->saml_tokens, env, saml); return AXIS2_SUCCESS; } return AXIS2_FAILURE; } AXIS2_EXTERN axutil_array_list_t * AXIS2_CALL rampart_config_get_saml_tokens( rampart_config_t *rampart_config, const axutil_env_t *env) { return rampart_config->saml_tokens; } AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_config_set_issued_token_aquire_function( rampart_config_t *rampart_config, const axutil_env_t *env, issued_token_callback_func issued_token_aquire) { rampart_config->issued_token_aquire = issued_token_aquire; return AXIS2_SUCCESS; } AXIS2_EXTERN issued_token_callback_func AXIS2_CALL rampart_config_get_issued_token_aquire_function( rampart_config_t *rampart_config, const axutil_env_t *env) { return rampart_config->issued_token_aquire; } rampartc-src-1.3.0/src/util/rampart_timestamp_token.c0000644000076500007650000002134111202453425022623 0ustar shankarshankar/* * 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. */ #include #include #include #include #include /** * Builds timestamp token. * @param env pointer to environment struct * @param sec_node security node * @param ttl Time to live. The time difference btwn Created and Expired. If it is zero or less * than zero, then Expired element will not be created. * @param with_millisecond shows whether millisecond precision is needed * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ axis2_status_t AXIS2_CALL rampart_timestamp_token_build( const axutil_env_t *env, axiom_node_t *sec_node, int ttl, axis2_bool_t with_millisecond) { axiom_node_t *ts_node = NULL; axiom_node_t *created_node = NULL; axiom_node_t *expires_node = NULL; axiom_element_t *ts_ele = NULL; axiom_element_t *created_ele = NULL; axiom_element_t *expires_ele = NULL; axis2_char_t *created_val = NULL; axis2_char_t *expires_val = NULL; axiom_namespace_t *wsu_ns_obj = NULL; wsu_ns_obj = axiom_namespace_create(env, RAMPART_WSU_XMLNS, RAMPART_WSU); if(!wsu_ns_obj) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Unable to create %s namespace.", RAMPART_WSU); return AXIS2_FAILURE; } ts_ele = axiom_element_create(env, sec_node, RAMPART_SECURITY_TIMESTAMP, wsu_ns_obj, &ts_node); if(!ts_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Timestamp element creation failed."); axiom_namespace_free(wsu_ns_obj, env); return AXIS2_FAILURE; } /* First we build Created element */ created_ele = axiom_element_create( env, ts_node, RAMPART_SECURITY_TIMESTAMP_CREATED, wsu_ns_obj, &created_node); if(!created_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Unable to build 'Created' child element of timestamp."); return AXIS2_FAILURE; } created_val = rampart_generate_time(env, 0, with_millisecond); /* Current time */ axiom_element_set_text(created_ele, env, created_val, created_node); AXIS2_FREE(env->allocator, created_val); created_val = NULL; /* Then we build Expires element */ /* TIP: If ttl<0 then we don't build the expires element. */ if(ttl <= 0) { AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, " [rampart]ttl is %d which is less then zero. " "Thus we do not need to build the expires element.", ttl); return AXIS2_SUCCESS; } expires_ele = axiom_element_create( env, ts_node, RAMPART_SECURITY_TIMESTAMP_EXPIRES, wsu_ns_obj, &expires_node); if (!expires_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Unable to build 'Expires' child element of timestamp."); return AXIS2_FAILURE; } expires_val = rampart_generate_time(env, ttl, with_millisecond); axiom_element_set_text(expires_ele, env, expires_val, expires_node); AXIS2_FREE(env->allocator, expires_val); expires_val = NULL; return AXIS2_SUCCESS; } /** * Validates time stamp token. Validation is based in expiration time of the Expired element. * @param env pointer to environment struct * @param msg_ctx pointer to message context structure * @param ts_node Timestamp node * @param clock_skew_buffer buffer of allowable skew of time between sender and receiver * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ axis2_status_t AXIS2_CALL rampart_timestamp_token_validate( const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axiom_node_t *ts_node, int clock_skew_buffer) { axis2_status_t validity = AXIS2_FAILURE; axiom_element_t *created_ele = NULL; axiom_element_t *expires_ele = NULL; axiom_element_t *ts_ele = NULL; axiom_node_t *created_node = NULL; axiom_node_t *expires_node = NULL; axis2_char_t *created_val = NULL; axis2_char_t *expires_val = NULL; axis2_char_t *current_val = NULL; /* Check: TIMESTAMP MUST contain exactly one CREATED */ if(1 != oxs_axiom_get_number_of_children_with_qname( env, ts_node, RAMPART_SECURITY_TIMESTAMP_CREATED, RAMPART_WSU_XMLNS, RAMPART_WSU)) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Timestamp not valid: Timestamp must contain exactly one Created element"); return AXIS2_FAILURE; } /* Check: TIMESTAMP MUST NOT contain more than one EXPIRES */ if(1 < oxs_axiom_get_number_of_children_with_qname( env, ts_node, RAMPART_SECURITY_TIMESTAMP_EXPIRES, RAMPART_WSU_XMLNS, RAMPART_WSU)) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Timestamp not valid: " "Timestamp must not contain more than one Expires element"); return AXIS2_FAILURE; } ts_ele = axiom_node_get_data_element(ts_node, env); if (!ts_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Timestamp not valid: Cannot find timestamp element."); return AXIS2_FAILURE; } /* First child MUST be the Created element */ created_node = axiom_node_get_first_element(ts_node, env); created_ele = (axiom_element_t*)axiom_node_get_data_element(created_node, env); if (axutil_strcmp(RAMPART_SECURITY_TIMESTAMP_CREATED, axiom_element_get_localname(created_ele, env))) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Timestamp not valid: " "Cannot find Created element in timestamp element. The first element MUST be CREATED"); return AXIS2_FAILURE; } created_val = axiom_element_get_text(created_ele, env, created_node); rampart_set_security_processed_result(env, msg_ctx,RAMPART_SPR_TS_CREATED, created_val); /* Check whether created is less than current time or not */ current_val = rampart_generate_time(env, clock_skew_buffer, AXIS2_TRUE); validity = rampart_compare_date_time(env, current_val, created_val); AXIS2_FREE(env->allocator, current_val); if (validity == AXIS2_SUCCESS) { /* this means current_val < created_val. Which is not a valid case */ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Timestamp not valid: Created time is not valid"); return AXIS2_FAILURE; } /* Any TIMESTAMP containing an EXPIRES MUST contain a CREATED that preceeds its sibling * EXPIRES. */ expires_node = axiom_node_get_next_sibling(created_node, env); if (!expires_node) { /* If the expire element is not present, it means that the message will not be expired. */ AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI,"[rampart]Cannot find expires in timestamp element." " This is not critical. Assume that the message is not expiring"); return AXIS2_SUCCESS; } expires_ele = (axiom_element_t*)axiom_node_get_data_element(expires_node, env); if (axutil_strcmp(RAMPART_SECURITY_TIMESTAMP_EXPIRES , axiom_element_get_localname(expires_ele, env))) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Timestamp not valid: " "The second element of timestamp token (if any) MUST be EXPIRES"); return AXIS2_FAILURE; } /* Now the expires element is present. So check whether this has a valid timestamp. * If not it's a failure */ expires_val = axiom_element_get_text(expires_ele, env, expires_node); rampart_set_security_processed_result(env, msg_ctx,RAMPART_SPR_TS_EXPIRES, expires_val); /* Check whether time has expired or not */ validity = rampart_compare_date_time(env, created_val, expires_val); if (validity == AXIS2_FAILURE) { /* this means created_value > expires_value. Which is not valid */ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Timestamp not valid: Timestamp token has expired"); return AXIS2_FAILURE; } AXIS2_LOG_INFO(env->log, "[rampart]Timstamp is valid"); rampart_set_security_processed_result(env, msg_ctx,RAMPART_SPR_TS_CHECKED, RAMPART_YES); return AXIS2_SUCCESS; } rampartc-src-1.3.0/src/util/rampart_sec_header_processor.c0000644000076500007650000023222511202453425023606 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include /*Private functions*/ /*Get the security context token and store it in key array*/ static axis2_status_t rampart_shp_add_security_context_token(const axutil_env_t* env, axis2_char_t* identifier, axis2_char_t* key_name, rampart_context_t* rampart_context, axis2_msg_ctx_t* msg_ctx) { oxs_buffer_t *key_buf = NULL; oxs_key_t* key = NULL; /*get the shared secret and create the key*/ key_buf = sct_provider_get_secret_using_id(env, identifier, rampart_context, msg_ctx); if(!key_buf) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shp]Cannot get shared secret of security context token"); return AXIS2_FAILURE; } key = oxs_key_create(env); oxs_key_populate(key, env, oxs_buffer_get_data(key_buf, env), key_name, oxs_buffer_get_size(key_buf, env), OXS_KEY_USAGE_NONE); rampart_context_add_key(rampart_context, env, key); return AXIS2_SUCCESS; } /* Get the client certificaate from key manager by giving * subject key identifier */ static oxs_x509_cert_t * get_certificate_by_key_identifier( const axutil_env_t *env, rampart_context_t *rampart_ctx, axiom_node_t *key_id_node) { oxs_x509_cert_t *cert = NULL; axis2_char_t *value_type = NULL; axiom_element_t *key_id_element = NULL; axis2_char_t *ski = NULL; oxs_key_mgr_t *key_mgr = NULL; if((cert = rampart_context_get_receiver_certificate(rampart_ctx, env))) { /* In the client side, it is prefered to use certificate files instead * of key store, because one client normally interact with only one * service. To handle this scenario, if we found reciever certificate file * specified in rampart_context we directly call the get_reciever_certificate. */ return cert; } key_id_element = axiom_node_get_data_element(key_id_node, env); value_type = axiom_element_get_attribute_value_by_name(key_id_element, env, "ValueType"); key_mgr = rampart_context_get_key_mgr(rampart_ctx, env); if(strcmp(value_type, OXS_X509_SUBJ_KI) == 0) { ski = axiom_element_get_text(key_id_element, env, key_id_node); cert = oxs_key_mgr_get_receiver_certificate_from_ski(key_mgr, env, ski); } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shp] Other KeyIdentifier ValueTypes are not supported."); return NULL; } return cert; } /* Get the client certificaate from key manager by giving * issuer and serial number of the certificate */ static oxs_x509_cert_t * get_certificate_by_issuer_serial( const axutil_env_t *env, rampart_context_t *rampart_ctx, axiom_node_t *x509_data_node) { oxs_x509_cert_t *cert = NULL; axiom_node_t *issuer_serial_node = NULL; axiom_element_t *issuer_serial_ele = NULL; axiom_child_element_iterator_t *child_itr = NULL; axiom_node_t *child_node = NULL; axiom_element_t *child_ele = NULL; axis2_char_t *ele_name = NULL; axis2_char_t *issuer_name_str = NULL; axis2_char_t *serial_num_str = NULL; int serial_num = -1; oxs_key_mgr_t *key_mgr = NULL; if((cert = rampart_context_get_receiver_certificate(rampart_ctx, env))) { /* In the client side, it is prefered to use certificate files instead * of key store, because one client normally interact with only one * service. To handle this scenario, if we found reciever certificate file * specified in rampart_context we directly call the get_reciever_certificate. */ return cert; } issuer_serial_node = axiom_node_get_first_child(x509_data_node, env); issuer_serial_ele = axiom_node_get_data_element(issuer_serial_node, env); child_itr = axiom_element_get_child_elements(issuer_serial_ele, env, issuer_serial_node); while(axiom_child_element_iterator_has_next(child_itr, env)) { child_node = axiom_child_element_iterator_next(child_itr,env); child_ele = axiom_node_get_data_element(child_node, env); ele_name = axiom_element_get_localname(child_ele, env); if(axutil_strcmp(ele_name, OXS_NODE_X509_ISSUER_NAME) == 0) { issuer_name_str = axiom_element_get_text(child_ele, env, child_node); if(!issuer_name_str) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shp]Issuer Name cannot be NULL."); return NULL; } AXIS2_LOG_INFO(env->log, AXIS2_LOG_SI, "[rampart][shp]X509 Certificate Issuer Name Found: %s", issuer_name_str); } else if(axutil_strcmp(ele_name, OXS_NODE_X509_SERIAL_NUMBER) == 0) { serial_num_str = axiom_element_get_text(child_ele, env, child_node); if(!serial_num_str) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shp]Serial number cannot be null."); } AXIS2_LOG_INFO(env->log, AXIS2_LOG_SI, "[rampart][shp]X509 Certificate Serial Number Found: %s", serial_num_str); } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shp]Error in incoming key info. These types not supported: %", ele_name); return NULL; } } serial_num = atoi(serial_num_str); key_mgr = rampart_context_get_key_mgr(rampart_ctx, env); cert = oxs_key_mgr_get_receiver_certificate_from_issuer_serial(key_mgr, env, issuer_name_str, serial_num); return cert; } static void rampart_shp_store_token_id(const axutil_env_t *env, axiom_node_t *key_info_node, rampart_context_t *rampart_context, axiom_node_t *sec_node, axis2_bool_t is_encryption, axis2_msg_ctx_t* msg_ctx) { axis2_char_t *token_id = NULL; axiom_node_t* key_node = NULL; rp_property_t *token = NULL; rp_property_type_t token_type; rp_security_context_token_t *security_context_token = NULL; axis2_char_t *needed_value_type = NULL; axis2_char_t *wsc_ns_uri = NULL; if(is_encryption) token_id = rampart_context_get_encryption_token_id(rampart_context, env, msg_ctx); else token_id = rampart_context_get_signature_token_id(rampart_context, env, msg_ctx); /*if already stored, then can return*/ if(token_id) return; /*if not symmetric binding, then return*/ if (rampart_context_get_binding_type(rampart_context,env) != RP_PROPERTY_SYMMETRIC_BINDING) return; /*if not server side, then return*/ if(!axis2_msg_ctx_get_server_side(msg_ctx,env)) return; /*if the token to be used is not security context token, then return*/ token = rampart_context_get_token(rampart_context, env, is_encryption, AXIS2_TRUE, AXIS2_TRUE); token_type = rp_property_get_type(token, env); if((token_type != RP_PROPERTY_SECURITY_CONTEXT_TOKEN) && (token_type != RP_PROPERTY_X509_TOKEN)) return; /* Get the version of security context token */ security_context_token = (rp_security_context_token_t *)rp_property_get_value(token, env); if(rp_security_context_token_get_sc10_security_context_token(security_context_token, env)) { needed_value_type = OXS_VALUE_TYPE_SECURITY_CONTEXT_TOKEN_05_02; wsc_ns_uri = OXS_WSC_NS_05_02; } else { needed_value_type = OXS_VALUE_TYPE_SECURITY_CONTEXT_TOKEN_05_12; wsc_ns_uri = OXS_WSC_NS_05_12; } key_node = key_info_node; while(!token_id) { axis2_char_t* id = NULL; axis2_char_t *cur_local_name = NULL; axiom_node_t *str_node = NULL; axiom_node_t *ref_node = NULL; axis2_char_t *ref_val = NULL; /*Get the STR*/ str_node = oxs_axiom_get_first_child_node_by_name(env, key_node, OXS_NODE_SECURITY_TOKEN_REFRENCE, OXS_WSSE_XMLNS, NULL); if(!str_node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shp] Failed to get security token reference node"); break; } /*Get Reference element*/ ref_node = oxs_axiom_get_first_child_node_by_name(env, str_node, OXS_NODE_REFERENCE, OXS_WSSE_XMLNS, NULL); if(!ref_node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shp]Failed to get reference node from security token reference"); break; } /*Get the reference value in the @URI*/ ref_val = oxs_token_get_reference(env, ref_node); if(ref_val[0] != '#') { axis2_char_t* value_type = NULL; value_type = oxs_token_get_reference_value_type(env, ref_node); if(!axutil_strcmp(value_type, needed_value_type)) { token_id = axutil_strdup(env, ref_val); break; } } id = axutil_string_substring_starting_at(axutil_strdup(env, ref_val), 1); key_node = oxs_axiom_get_node_by_id(env, sec_node, OXS_ATTR_ID, id, OXS_WSU_XMLNS); if(!key_node) break; cur_local_name = axiom_util_get_localname(key_node, env); if(0 == axutil_strcmp(cur_local_name, OXS_NODE_SECURITY_CONTEXT_TOKEN)) { axiom_node_t *identifier_node = NULL; /*Get the identifier node*/ identifier_node = oxs_axiom_get_first_child_node_by_name( env, key_node, OXS_NODE_IDENTIFIER, wsc_ns_uri, NULL); if(!identifier_node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shp] Cannot find identifier node in security context token"); break; } token_id = oxs_axiom_get_node_content(env, identifier_node); break; } else if(0 == axutil_strcmp(cur_local_name, OXS_NODE_ENCRYPTED_KEY)) { token_id = oxs_axiom_get_attribute_value_of_node_by_name(env, key_node, OXS_ATTR_ID, NULL); break; } } /*if same key is used for encryption and signature, then store it at both place*/ if(rampart_context_is_different_session_key_for_enc_and_sign(env, rampart_context)) { if(is_encryption) rampart_context_set_encryption_token_id(rampart_context, env, token_id, msg_ctx); else rampart_context_set_signature_token_id(rampart_context, env, token_id, msg_ctx); } else { rampart_context_set_encryption_token_id(rampart_context, env, token_id, msg_ctx); rampart_context_set_signature_token_id(rampart_context, env, token_id, msg_ctx); } } /*Process a KeyInfo and return the key*/ static oxs_key_t* rampart_shp_get_key_for_key_info(const axutil_env_t* env, axiom_node_t* key_info_node, rampart_context_t* rampart_context, axis2_msg_ctx_t *msg_ctx, axis2_bool_t is_signature) { oxs_key_t *key = NULL; axiom_node_t *str_node = NULL; axiom_node_t *ref_node = NULL; axis2_char_t *ref_val = NULL; axis2_char_t *id = NULL; axis2_bool_t external_reference = AXIS2_TRUE; /*Get the STR*/ str_node = oxs_axiom_get_first_child_node_by_name(env, key_info_node, OXS_NODE_SECURITY_TOKEN_REFRENCE, OXS_WSSE_XMLNS, NULL); if(!str_node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shp] Failed to get security token reference node"); return NULL; } /*Get Reference element*/ ref_node = oxs_axiom_get_first_child_node_by_name(env, str_node, OXS_NODE_REFERENCE, OXS_WSSE_XMLNS, NULL); if(!ref_node) { axis2_char_t *value_type = NULL; axis2_char_t *value = NULL; oxs_key_t *key = NULL; ref_node = oxs_axiom_get_first_child_node_by_name(env, str_node, OXS_NODE_KEY_IDENTIFIER, OXS_WSSE_XMLNS, NULL); if(!ref_node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shp]Failed to get reference node from security token reference"); return NULL; } value_type = oxs_axiom_get_attribute_value_of_node_by_name(env, ref_node, OXS_ATTR_VALUE_TYPE, NULL); if(axutil_strcmp(value_type, OXS_X509_ENCRYPTED_KEY_SHA1) == 0) { value = oxs_axiom_get_node_content(env, ref_node); if(!value) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shp]Failed to get value of EncryptedKeySHA1"); return NULL; } key = rampart_context_get_key_using_hash(rampart_context, env, value); if(!key) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shp]Cannot get key corresponding to EncryptedKeySHA1"); } } /* SAML token reference */ else if(axutil_strcmp(value_type, OXS_ST_KEY_ID_VALUE_TYPE) == 0) { axiom_node_t *assertion = NULL; rampart_saml_token_t *saml = NULL; rampart_st_type_t tok_type; oxs_key_mgr_t *key_mgr = NULL; openssl_pkey_t *pvt_key = NULL; key_mgr = rampart_context_get_key_mgr(rampart_context, env); pvt_key = oxs_key_mgr_get_prv_key(key_mgr, env); if (!pvt_key) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shp]Cannot load private key"); return NULL; } assertion = oxs_saml_token_get_from_key_identifer_reference(env, ref_node, NULL); if (!assertion) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shp]Cannot get key SAML Assertion"); return NULL; } if (is_signature) { tok_type = RAMPART_ST_TYPE_SIGNATURE_TOKEN; } else { tok_type = RAMPART_ST_TYPE_ENCRYPTION_TOKEN; } saml = rampart_saml_add_token(rampart_context, env, assertion, str_node, tok_type); key = rampart_saml_token_get_session_key(saml, env); if (!key) { key = saml_assertion_get_session_key(env, assertion, pvt_key); rampart_saml_token_set_session_key(saml, env, key); oxs_key_set_name(key, env, "for-algo"); } if(!key) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shp]Cannot get key corresponding to EncryptedKeySHA1"); } } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shp]Failed to identify Key Identifier %s", value_type); return NULL; } return key; } else { /*Get the reference value in the @URI*/ ref_val = oxs_token_get_reference(env, ref_node); if(ref_val[0] == '#') { /*Need to remove # sign from the ID*/ id = axutil_string_substring_starting_at(axutil_strdup(env, ref_val), 1); external_reference = AXIS2_FALSE; } else { id = axutil_strdup(env, ref_val); } } if(!id) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shp]Failed to get key name from reference node"); return NULL; } key = rampart_context_get_key(rampart_context, env, id); if(!key && external_reference) { axis2_char_t* value_type = NULL; value_type = oxs_token_get_reference_value_type(env, ref_node); if((0 == axutil_strcmp(value_type, OXS_VALUE_TYPE_SECURITY_CONTEXT_TOKEN_05_02))|| (0 == axutil_strcmp(value_type, OXS_VALUE_TYPE_SECURITY_CONTEXT_TOKEN_05_12))) { rampart_shp_add_security_context_token(env, id, id, rampart_context, msg_ctx); } key = rampart_context_get_key(rampart_context, env, id); } AXIS2_FREE(env->allocator, id); return key; } static axis2_bool_t rampart_shp_validate_qnames( const axutil_env_t *env, axiom_node_t *node) { axiom_element_t *node_ele = NULL; axutil_qname_t *qname = NULL; axutil_qname_t *node_qname = NULL; axis2_char_t *local_name = NULL; node_ele = axiom_node_get_data_element(node, env); if(!node_ele) return AXIS2_FALSE; local_name = axiom_element_get_localname(node_ele,env); if(!local_name){ return AXIS2_FALSE; } if(axutil_strcmp(local_name, RAMPART_SECURITY_TIMESTAMP) == 0) { qname = axutil_qname_create(env, local_name, RAMPART_WSU_XMLNS, NULL/*RAMPART_WSU*/); } else if(axutil_strcmp(local_name, RAMPART_SECURITY_USERNAMETOKEN) ==0) { qname = axutil_qname_create(env, local_name, RAMPART_WSSE_XMLNS, NULL/*RAMPART_WSSE*/); } else if(axutil_strcmp(local_name,OXS_NODE_ENCRYPTED_KEY)==0) { qname = axutil_qname_create(env, local_name, OXS_ENC_NS, NULL/*OXS_XENC*/); } else if(axutil_strcmp(local_name, OXS_NODE_ENCRYPTED_DATA)==0) { qname = axutil_qname_create(env, local_name, OXS_ENC_NS, NULL/*OXS_XENC*/); } else if(axutil_strcmp(local_name, OXS_NODE_SIGNATURE)==0) { qname = axutil_qname_create(env, local_name, OXS_DSIG_NS, NULL/*OXS_DS*/); } else if(axutil_strcmp(local_name, OXS_NODE_BINARY_SECURITY_TOKEN) == 0) { return AXIS2_FALSE; } else if(axutil_strcmp(local_name, OXS_NODE_REFERENCE_LIST)==0) { return AXIS2_FALSE; } else { return AXIS2_FALSE; } if(!qname) { return AXIS2_FALSE; } node_qname = axiom_element_get_qname(node_ele, env, node); if(!node_qname) { axutil_qname_free(qname, env); qname = NULL; return AXIS2_FALSE; } if(axutil_qname_equals(qname, env, node_qname)) { axutil_qname_free(qname, env); qname = NULL; return AXIS2_TRUE; } return AXIS2_FALSE; } /*static oxs_x509_cert_t *get_receiver_x509_cert( const axutil_env_t *env, rampart_context_t *rampart_context) { return rampart_context_get_receiver_certificate(rampart_context, env); }*/ static axis2_status_t rampart_shp_process_signature_confirmation(const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_node_t *cur_node) { rampart_set_security_processed_result(env, msg_ctx, RAMPART_SPR_SIG_CONFIRM_FOUND, RAMPART_YES); return AXIS2_SUCCESS; } static axis2_status_t rampart_shp_process_timestamptoken( const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_node_t *ts_node) { axis2_status_t valid_ts = AXIS2_FAILURE; if(!rampart_context_is_include_timestamp(rampart_context, env)) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Timestamp should not be in the message."); rampart_create_fault_envelope(env, RAMPART_FAULT_INVALID_SECURITY_TOKEN, "Timestamp should not be in the message ", RAMPART_FAULT_IN_TIMESTAMP, msg_ctx); return AXIS2_FAILURE; } else { if(!rampart_shp_validate_qnames(env, ts_node)) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]QName for given timestamp is not valid."); rampart_create_fault_envelope(env, RAMPART_FAULT_INVALID_SECURITY_TOKEN, "Error in the Timestamp Element. ", RAMPART_FAULT_IN_TIMESTAMP, msg_ctx); return AXIS2_FAILURE; } valid_ts = rampart_timestamp_token_validate( env, msg_ctx, ts_node, rampart_context_get_clock_skew_buffer(rampart_context, env)); if (valid_ts) { AXIS2_LOG_INFO(env->log, "[rampart]Succesfully validated the timestamp "); return AXIS2_SUCCESS; } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Timestamp is not valid"); rampart_create_fault_envelope(env, RAMPART_FAULT_FAILED_CHECK, "Timestamp is not valid", RAMPART_FAULT_IN_TIMESTAMP, msg_ctx); return AXIS2_FAILURE; } } } static axis2_status_t rampart_shp_process_usernametoken( const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_node_t *ut_node) { axis2_status_t valid_user = AXIS2_FAILURE; if(!rampart_context_is_include_username_token(rampart_context, env)) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Username token should not be in the message."); rampart_create_fault_envelope(env, RAMPART_FAULT_INVALID_SECURITY_TOKEN, "Username Token not expected", RAMPART_FAULT_IN_USERNAMETOKEN, msg_ctx); return AXIS2_FAILURE; } else { if(!rampart_shp_validate_qnames(env, ut_node)) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error in validating qnames for the username token"); rampart_create_fault_envelope(env, RAMPART_FAULT_INVALID_SECURITY_TOKEN, "Error in the Username token.", RAMPART_FAULT_IN_USERNAMETOKEN, msg_ctx); return AXIS2_FAILURE; } AXIS2_LOG_INFO(env->log, "[rampart]Validating UsernameToken"); valid_user = rampart_username_token_validate(env, msg_ctx, ut_node, rampart_context); } if (valid_user) { AXIS2_LOG_INFO(env->log, "[rampart]Validating UsernameToken SUCCESS"); return AXIS2_SUCCESS; } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Validating UsernameToken FAILED"); if(!axis2_msg_ctx_get_fault_soap_envelope(msg_ctx, env)) { rampart_create_fault_envelope(env, RAMPART_FAULT_FAILED_AUTHENTICATION, "UsernameToken validation failed.", RAMPART_FAULT_IN_USERNAMETOKEN, msg_ctx); } return AXIS2_FAILURE; } } static axis2_status_t rampart_shp_process_security_context_token( const axutil_env_t *env, axiom_node_t *token_node, rampart_context_t* rampart_context, axis2_msg_ctx_t *msg_ctx) { axiom_node_t *identifier_node = NULL; axis2_char_t *identifier = NULL; axis2_char_t *key_name = NULL; /*Check whether security context token is valid */ if(sct_provider_validate_security_context_token(env, token_node, rampart_context, msg_ctx) != AXIS2_SUCCESS) { rampart_create_fault_envelope(env, RAMPART_FAULT_INVALID_SECURITY_TOKEN, "Security context token validation failed.", RAMPART_FAULT_INVALID_SECURITY_TOKEN, msg_ctx); AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shp] Security context token validation failed."); return AXIS2_FAILURE; } /*Get the identifier node*/ identifier_node = oxs_axiom_get_first_child_node_by_name( env, token_node, OXS_NODE_IDENTIFIER, OXS_WSC_NS_05_02, NULL); if(!identifier_node) { /* check other namespace as well */ identifier_node = oxs_axiom_get_first_child_node_by_name( env, token_node, OXS_NODE_IDENTIFIER, OXS_WSC_NS_05_12, NULL); } if(!identifier_node) { rampart_create_fault_envelope(env, RAMPART_FAULT_INVALID_SECURITY_TOKEN, "Cannot find identifier node in security context token", RAMPART_FAULT_INVALID_SECURITY_TOKEN, msg_ctx); AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shp] Cannot find identifier node in security context token"); return AXIS2_FAILURE; } identifier = oxs_axiom_get_node_content(env, identifier_node); if(!identifier) { rampart_create_fault_envelope(env, RAMPART_FAULT_INVALID_SECURITY_TOKEN, "Cannot find identifier content in security context token", RAMPART_FAULT_INVALID_SECURITY_TOKEN, msg_ctx); AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shp] Cannot find identifier content in security context token"); return AXIS2_FAILURE; } key_name = oxs_axiom_get_attribute_value_of_node_by_name( env, token_node, OXS_ATTR_ID, OXS_WSU_XMLNS); return rampart_shp_add_security_context_token( env, identifier, key_name, rampart_context, msg_ctx); } static axis2_status_t rampart_shp_process_encrypted_key(const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_soap_envelope_t *soap_envelope, axiom_node_t *sec_node, axiom_node_t *encrypted_key_node) { axiom_node_t *ref_list_node = NULL; axiom_node_t *enc_mtd_node = NULL; axutil_array_list_t *reference_list = NULL; axis2_char_t *enc_asym_algo = NULL; axis2_status_t status = AXIS2_FAILURE; oxs_asym_ctx_t *asym_ctx = NULL; oxs_key_t *decrypted_sym_key = NULL; oxs_key_mgr_t *key_mgr = NULL; axis2_char_t *enc_asym_algo_in_pol = NULL; axis2_char_t *enc_sym_algo_in_pol = NULL; openssl_pkey_t *open_prvkey = NULL; int i = 0; /*void *key_buf = NULL;*/ axis2_char_t *prv_key_file = NULL; /*Get EncryptedData references */ ref_list_node = oxs_axiom_get_first_child_node_by_name( env, encrypted_key_node, OXS_NODE_REFERENCE_LIST, OXS_ENC_NS, NULL); /* reference list is not a mandatory item in encrypted key. */ if(ref_list_node) { reference_list = oxs_token_get_reference_list_data(env, ref_list_node); } /*Get the algorithm to decrypt the sesison key*/ enc_mtd_node = oxs_axiom_get_first_child_node_by_name( env, encrypted_key_node, OXS_NODE_ENCRYPTION_METHOD, OXS_ENC_NS, NULL); enc_asym_algo = oxs_token_get_encryption_method(env, enc_mtd_node); /*If the reference list > 0 then We have nodes to decrypt. Next step is to get the encrypted key*/ /*Obtain the session key which is encrypted*/ /*Create an asym_ctx*/ /*We should verify the algorithm with policy*/ enc_asym_algo_in_pol = rampart_context_get_enc_asym_algo(rampart_context, env); if(!enc_asym_algo_in_pol) { rampart_create_fault_envelope(env, RAMPART_FAULT_FAILED_CHECK, "Error in the policy. No asym algo", RAMPART_FAULT_IN_POLICY, msg_ctx); AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shp] Assymetric enc algorithm not specified in policy."); return AXIS2_FAILURE; } /*If the algo tally with the policy?*/ if(axutil_strcmp(enc_asym_algo_in_pol, enc_asym_algo) != 0) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "The key is encrypted with the wrong algorithm"); rampart_create_fault_envelope(env, RAMPART_FAULT_INVALID_SECURITY, "The key is encrypted with the wrong algorithm", RAMPART_FAULT_IN_ENCRYPTED_KEY, msg_ctx); return AXIS2_FAILURE; } key_mgr = rampart_context_get_key_mgr(rampart_context, env); asym_ctx = oxs_asym_ctx_create(env); oxs_asym_ctx_set_algorithm(asym_ctx, env, enc_asym_algo); /* key_buf = rampart_context_get_prv_key(rampart_context, env); if(key_buf) { axis2_key_type_t type = 0; type = rampart_context_get_prv_key_type(rampart_context, env); if(type == AXIS2_KEY_TYPE_PEM) { oxs_key_mgr_set_format(key_mgr, env, OXS_KEY_MGR_FORMAT_PEM); oxs_key_mgr_set_pem_buf(key_mgr, env, key_buf); } } */ oxs_asym_ctx_set_operation(asym_ctx, env, OXS_ASYM_CTX_OPERATION_PRV_DECRYPT); prv_key_file = rampart_context_get_private_key_file(rampart_context, env); oxs_key_mgr_set_format(key_mgr, env, oxs_util_get_format_by_file_extension(env, prv_key_file)); /* TODO:Populate assymetric context */ open_prvkey = oxs_key_mgr_get_prv_key(key_mgr, env); oxs_asym_ctx_set_private_key(asym_ctx, env, open_prvkey); /*Create an empty key*/ decrypted_sym_key = oxs_key_create(env); /*Call decrypt for the EncryptedKey*/ status = oxs_xml_enc_decrypt_key(env, asym_ctx, sec_node, encrypted_key_node, decrypted_sym_key); if(AXIS2_FAILURE == status) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shp] Cannot decrypt the EncryptedKey"); rampart_create_fault_envelope(env, RAMPART_FAULT_FAILED_CHECK, "Key decryption failed", RAMPART_FAULT_IN_ENCRYPTED_KEY, msg_ctx); oxs_asym_ctx_free(asym_ctx, env); asym_ctx = NULL; return AXIS2_FAILURE; } /*We need to set the session key name= EncryptedKey@Id*/ if(decrypted_sym_key){ axis2_char_t *key_id = NULL; key_id = oxs_axiom_get_attribute_value_of_node_by_name(env, encrypted_key_node, OXS_ATTR_ID, NULL); if(!key_id){ key_id = "SESSION_KEY"; } oxs_key_set_name(decrypted_sym_key, env, key_id); } /*Now we need to set this to the rampart context for future use*/ rampart_context_add_key(rampart_context, env, decrypted_sym_key); /*Alright now we have the key used to encrypt the elements in the reference_list*/ /*Go thru each and every node in the list and decrypt them*/ /*Before decrypt we should get the symmetric algo from policy. So for each encrypted element we can compare the algo. */ enc_sym_algo_in_pol = rampart_context_get_enc_sym_algo(rampart_context, env); if(!enc_sym_algo_in_pol) { rampart_create_fault_envelope(env, RAMPART_FAULT_FAILED_CHECK, "Error in the policy. No summetric algo", RAMPART_FAULT_IN_POLICY, msg_ctx); AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shp] Symetric enc algorithm not specified in policy."); oxs_asym_ctx_free(asym_ctx, env); asym_ctx = NULL; return AXIS2_FAILURE; } /* In some cases there might not be any references in the list. For example when the derived keys are in use. * If there are references, that means those references are encrypted using the session key. So we need to decrypt 'em*/ if(reference_list){ for(i=0 ; i < axutil_array_list_size(reference_list, env); i++ ) { axis2_char_t *id = NULL; axis2_char_t *id2 = NULL; axiom_node_t *enc_data_node = NULL; axiom_node_t *envelope_node = NULL; oxs_ctx_t *ctx = NULL; axiom_node_t *decrypted_node = NULL; axiom_node_t *mtd_node = NULL; axis2_char_t *sym_algo = NULL; axiom_soap_body_t *soap_body = NULL; /*This need to be done in order to build the soap body.Do not remove.*/ soap_body = axiom_soap_envelope_get_body(soap_envelope, env); /*Get the i-th element and decrypt it */ id = (axis2_char_t*)axutil_array_list_get(reference_list, env, i); AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[rampart][shp] Decrypting node, ID=%s", id); /*Need to remove # sign from the ID*/ id2 = axutil_string_substring_starting_at(id, 1); envelope_node = axiom_soap_envelope_get_base_node(soap_envelope, env); /*Search for the node by its ID*/ enc_data_node = oxs_axiom_get_node_by_id(env, envelope_node, OXS_ATTR_ID, id2, NULL); if(!enc_data_node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shp] Node with ID=%s cannot be found", id); rampart_create_fault_envelope(env, RAMPART_FAULT_FAILED_CHECK, "Cannot find EncryptedData element", RAMPART_FAULT_IN_ENCRYPTED_DATA, msg_ctx); oxs_asym_ctx_free(asym_ctx, env); asym_ctx = NULL; return AXIS2_FAILURE; } /*Create an enc_ctx*/ mtd_node = oxs_axiom_get_first_child_node_by_name( env, enc_data_node, OXS_NODE_ENCRYPTION_METHOD, OXS_ENC_NS, NULL); if(!mtd_node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Cannot find EncryptionMethod Element"); rampart_create_fault_envelope(env, RAMPART_FAULT_FAILED_CHECK, "Cannot find EncryptionMethod Element", RAMPART_FAULT_IN_ENCRYPTED_DATA, msg_ctx); oxs_asym_ctx_free(asym_ctx, env); asym_ctx = NULL; return AXIS2_FAILURE; } sym_algo = oxs_token_get_encryption_method(env, mtd_node); if(!sym_algo) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Cannot get the Symmetric Algorithm from Soap message."); rampart_create_fault_envelope(env, RAMPART_FAULT_FAILED_CHECK, "Cannot find EncryptionMethod Element", RAMPART_FAULT_IN_ENCRYPTED_DATA, msg_ctx); oxs_asym_ctx_free(asym_ctx, env); asym_ctx = NULL; return AXIS2_FAILURE; } /*Would the encryption method tally with the policy?*/ if(axutil_strcmp(sym_algo, enc_sym_algo_in_pol)!=0) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "The content is encrypted with the wrong algorithm"); rampart_create_fault_envelope(env, RAMPART_FAULT_INVALID_SECURITY, "The content is encrypted with the wrong algorithm", RAMPART_FAULT_IN_ENCRYPTED_KEY, msg_ctx); oxs_asym_ctx_free(asym_ctx, env); asym_ctx = NULL; return AXIS2_FAILURE; } /*Get ready for the decryption. Create an encryption ctx*/ ctx = oxs_ctx_create(env); oxs_ctx_set_key(ctx, env, decrypted_sym_key); status = oxs_xml_enc_decrypt_node(env, ctx, enc_data_node, &decrypted_node); if(AXIS2_FAILURE == status) { rampart_create_fault_envelope(env, RAMPART_FAULT_FAILED_CHECK, "Data decryption failed", RAMPART_FAULT_IN_ENCRYPTED_DATA, msg_ctx); oxs_asym_ctx_free(asym_ctx, env); asym_ctx = NULL; return AXIS2_FAILURE; } /*Check if the signture is encrypted*/ if(0 == axutil_strcmp( OXS_NODE_SIGNATURE , axiom_util_get_localname(decrypted_node, env))){ rampart_set_security_processed_result(env, msg_ctx, RAMPART_SPR_SIG_ENCRYPTED, RAMPART_YES); } /*Check if the body is encrypted*/ if(0 == axutil_strcmp(OXS_NODE_BODY , axiom_util_get_localname(axiom_node_get_parent(decrypted_node, env), env))){ rampart_set_security_processed_result(env, msg_ctx, RAMPART_SPR_BODY_ENCRYPTED, RAMPART_YES); } /*Free*/ oxs_ctx_free(ctx, env); ctx = NULL; AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[rampart][shp] Node ID=%s decrypted successfuly", id); }/*end of For loop*/ } /*Set the security processed result*/ rampart_set_security_processed_result( env, msg_ctx, RAMPART_SPR_ENC_CHECKED, RAMPART_YES); /*Free*/ if(asym_ctx){ oxs_asym_ctx_free(asym_ctx, env); asym_ctx = NULL; } if(reference_list){ axutil_array_list_free(reference_list, env); reference_list = NULL; } return AXIS2_SUCCESS; } static axis2_status_t rampart_shp_process_reference_list( const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_soap_envelope_t *soap_envelope, axiom_node_t *sec_node, axiom_node_t *ref_list_node) { axutil_array_list_t *reference_list = NULL; axis2_status_t status = AXIS2_FAILURE; int i = 0; reference_list = oxs_token_get_reference_list_data(env, ref_list_node); if((!reference_list) || (0 == axutil_array_list_size(reference_list, env))) { if (reference_list) { axutil_array_list_free(reference_list, env); reference_list = NULL; } AXIS2_LOG_INFO(env->log, "[rampart][shp] Nothing Encrypted Outside security header"); return AXIS2_SUCCESS; } /*Go thru each and every element in the ReferenceList*/ for(i=0 ; i < axutil_array_list_size(reference_list, env); i++ ) { axis2_char_t *id = NULL; axis2_char_t *id2 = NULL; axiom_node_t *enc_data_node = NULL; axiom_node_t *envelope_node = NULL; axiom_soap_body_t *soap_body = NULL; axiom_node_t *key_info_node = NULL; soap_body = axiom_soap_envelope_get_body(soap_envelope, env); id = (axis2_char_t*)axutil_array_list_get(reference_list, env, i); id2 = axutil_string_substring_starting_at(axutil_strdup(env, id), 1); envelope_node = axiom_soap_envelope_get_base_node(soap_envelope, env); /*Search for the node by its ID*/ enc_data_node = oxs_axiom_get_node_by_id(env, envelope_node, OXS_ATTR_ID, id2, NULL); if(!enc_data_node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shp] Node with ID=%s cannot be found", id2); rampart_create_fault_envelope(env, RAMPART_FAULT_FAILED_CHECK, "Cannot find EncryptedData element", RAMPART_FAULT_IN_ENCRYPTED_DATA, msg_ctx); axutil_array_list_free(reference_list, env); reference_list = NULL; AXIS2_FREE(env->allocator, id2); id2 = NULL; return AXIS2_FAILURE; } AXIS2_FREE(env->allocator, id2); id2 = NULL; key_info_node = oxs_axiom_get_first_child_node_by_name(env, enc_data_node, OXS_NODE_KEY_INFO, OXS_DSIG_NS, NULL); if(key_info_node) { oxs_key_t *key_to_decrypt = NULL; /*Get the sesison key*/ key_to_decrypt = rampart_shp_get_key_for_key_info(env, key_info_node, rampart_context, msg_ctx, AXIS2_FALSE); /*if security context token is used, then store it. It will be used by the server to encrypt the message*/ rampart_shp_store_token_id(env, key_info_node, rampart_context, sec_node, AXIS2_TRUE, msg_ctx); if(key_to_decrypt) { /*Now if everything is fine we need to decrypt*/ oxs_ctx_t *ctx = NULL; axiom_node_t *decrypted_node = NULL; ctx = oxs_ctx_create(env); oxs_ctx_set_key(ctx, env, key_to_decrypt); status = oxs_xml_enc_decrypt_node(env, ctx, enc_data_node, &decrypted_node); if(AXIS2_FAILURE == status) { rampart_create_fault_envelope(env, RAMPART_FAULT_FAILED_CHECK, "Data decryption failed", RAMPART_FAULT_IN_ENCRYPTED_DATA, msg_ctx); return AXIS2_FAILURE; } /*Check if the signture is encrypted*/ if(0 == axutil_strcmp( OXS_NODE_SIGNATURE , axiom_util_get_localname(decrypted_node, env))){ rampart_set_security_processed_result(env, msg_ctx, RAMPART_SPR_SIG_ENCRYPTED, RAMPART_YES); } /*Check if the body is encrypted*/ if(0 == axutil_strcmp(OXS_NODE_BODY , axiom_util_get_localname(axiom_node_get_parent(decrypted_node, env), env))){ rampart_set_security_processed_result(env, msg_ctx, RAMPART_SPR_BODY_ENCRYPTED, RAMPART_YES); } /*Free*/ oxs_ctx_free(ctx, env); ctx = NULL; } else { /*Can't help. Error retrieving the key to decrypt the reference. */ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shp] On processing ReferenceList, failed to get the key to decrypt"); return AXIS2_FAILURE; } } } axutil_array_list_free(reference_list, env); reference_list = NULL; return status; } static axis2_status_t rampart_shp_process_sym_binding_signature( const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_soap_envelope_t *soap_envelope, axiom_node_t *sec_node, axiom_node_t *sig_node) { axis2_status_t status = AXIS2_FAILURE; oxs_sign_ctx_t *sign_ctx = NULL; axiom_node_t *envelope_node = NULL; axiom_node_t *key_info_node = NULL; oxs_key_t *key_to_verify = NULL; /*Get the envelope node*/ envelope_node = axiom_soap_envelope_get_base_node(soap_envelope, env); /*Get the KeyInfo node*/ key_info_node = oxs_axiom_get_first_child_node_by_name(env, sig_node, OXS_NODE_KEY_INFO, OXS_DSIG_NS, NULL); if(key_info_node) { key_to_verify = rampart_shp_get_key_for_key_info(env, key_info_node,rampart_context, msg_ctx, AXIS2_TRUE); } if(!key_to_verify) { /*It's an error*/ rampart_create_fault_envelope(env, RAMPART_FAULT_FAILED_CHECK, "Signature Verification failed. Cannot get the key to verify", RAMPART_FAULT_IN_SIGNATURE, msg_ctx); AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[Rampart][shp] Signature Verification failed. Cannot get the key to verify"); return AXIS2_FAILURE; } /*if security context token is used, then store it. It will be used by the server to sign the message*/ rampart_shp_store_token_id(env, key_info_node, rampart_context, sec_node, AXIS2_FALSE, msg_ctx); /*Create sign context*/ sign_ctx = oxs_sign_ctx_create(env); oxs_sign_ctx_set_operation(sign_ctx, env, OXS_SIGN_OPERATION_VERIFY); oxs_sign_ctx_set_secret(sign_ctx, env, key_to_verify); status = oxs_xml_sig_verify(env, sign_ctx, sig_node, envelope_node); if(status != AXIS2_SUCCESS) { if(!axis2_msg_ctx_get_fault_soap_envelope(msg_ctx, env)) { rampart_create_fault_envelope( env, RAMPART_FAULT_INVALID_SECURITY, "Signature Verification failed.", RAMPART_FAULT_IN_SIGNATURE, msg_ctx); } AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[Rampart][shp]Signature Verification failed."); return AXIS2_FAILURE; } /*Free Sign Ctx*/ oxs_sign_ctx_free(sign_ctx, env); sign_ctx = NULL; return status; } static axis2_status_t rampart_shp_process_asym_binding_signature( const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_soap_envelope_t *soap_envelope, axiom_node_t *sec_node, axiom_node_t *sig_node, axis2_bool_t is_endorsing) { oxs_sign_ctx_t *sign_ctx = NULL; axis2_status_t status = AXIS2_FAILURE; axis2_char_t *digest_mtd_pol = NULL; axis2_char_t *sig_mtd_pol = NULL; axiom_node_t *sign_info_node = NULL; axiom_node_t *cur_node = NULL; rp_property_t *token = NULL; axis2_bool_t server_side = AXIS2_FALSE; axis2_char_t *eki = NULL; rp_property_type_t token_type; axiom_node_t *key_info_node = NULL; axiom_node_t *str_node = NULL; axiom_node_t *str_child_node = NULL; axis2_char_t *str_child_name = NULL; oxs_x509_cert_t *cert = NULL; axiom_node_t *key_info_child_node = NULL; axiom_node_t *envelope_node = NULL; axis2_bool_t is_include_token = AXIS2_FALSE; server_side = axis2_msg_ctx_get_server_side(msg_ctx,env); sig_mtd_pol = rampart_context_get_asym_sig_algo(rampart_context,env); digest_mtd_pol = rampart_context_get_digest_mtd(rampart_context,env); if(!sig_mtd_pol || !digest_mtd_pol) { rampart_create_fault_envelope(env, RAMPART_FAULT_FAILED_CHECK, "Error in the policy. No signature algo", RAMPART_FAULT_IN_POLICY, msg_ctx); AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shp] Error in policy, Specifying signature algorithms."); return AXIS2_FAILURE; } sign_info_node = oxs_axiom_get_first_child_node_by_name(env, sig_node, OXS_NODE_SIGNEDINFO, OXS_DSIG_NS, NULL); if(!sign_info_node) { rampart_create_fault_envelope(env, RAMPART_FAULT_INVALID_SECURITY, "Sign info node not found.", RAMPART_FAULT_IN_SIGNATURE, msg_ctx); AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shp] Sign info cannot be found.Verifycation failed"); return AXIS2_FAILURE; } cur_node = axiom_node_get_first_element(sign_info_node, env); while(cur_node) { axis2_char_t *localname = NULL; localname = axiom_util_get_localname(cur_node, env); if(axutil_strcmp(localname, OXS_NODE_SIGNATURE_METHOD)==0) { /*Verify the signature method with policy*/ axis2_char_t *sig_mtd = NULL; sig_mtd = oxs_token_get_signature_method(env, cur_node); if(sig_mtd) { if(axutil_strcmp(sig_mtd_pol, sig_mtd)!=0) { rampart_create_fault_envelope(env, RAMPART_FAULT_INVALID_SECURITY, "Signed with Invalid algorithm", RAMPART_FAULT_IN_SIGNATURE, msg_ctx); AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shp] Signed with Invalid algorithm"); return AXIS2_FAILURE; } } else { rampart_create_fault_envelope(env, RAMPART_FAULT_INVALID_SECURITY, "Signature method element not found .", RAMPART_FAULT_IN_SIGNATURE, msg_ctx); AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shp] Signature method element not found"); return AXIS2_FAILURE; } } else if(axutil_strcmp(localname, OXS_NODE_REFERENCE) == 0) { /*Verify each digest method with policy*/ axiom_node_t *digest_mtd_node = NULL; axis2_char_t *digest_mtd = NULL; digest_mtd_node = oxs_axiom_get_first_child_node_by_name(env, cur_node, OXS_NODE_DIGEST_METHOD, OXS_DSIG_NS, NULL); if(digest_mtd_node) { digest_mtd = oxs_token_get_digest_method(env, digest_mtd_node); if(digest_mtd) { if(axutil_strcmp(digest_mtd_pol, digest_mtd)!=0) { rampart_create_fault_envelope(env, RAMPART_FAULT_INVALID_SECURITY, "Digest created with Invalid algorithm", RAMPART_FAULT_IN_SIGNATURE, msg_ctx); AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shp] Digest Created with Invalid algorithm"); return AXIS2_FAILURE; } } else { return AXIS2_FAILURE; } } else { return AXIS2_FAILURE; } } else { /*we do not need to process at this moment*/ } cur_node = axiom_node_get_next_sibling(cur_node, env); }/*Eof While*/ /*Get the key identifiers and build the certificate*/ /*First we should verify with policy*/ if(is_endorsing) token = rampart_context_get_endorsing_token(rampart_context, env); else token = rampart_context_get_token(rampart_context, env, AXIS2_FALSE, server_side, AXIS2_TRUE); if(!token) { AXIS2_LOG_INFO(env->log, "[rampart][shp] Signature Token is not specified"); return AXIS2_SUCCESS; } token_type = rp_property_get_type(token, env); if(!rampart_context_is_token_type_supported(token_type, env)) { rampart_create_fault_envelope(env, RAMPART_FAULT_UNSUPPORTED_SECURITY_TOKEN, "The token type does not supported", RAMPART_FAULT_IN_SIGNATURE, msg_ctx); AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shp] The token type does not supported"); return AXIS2_FAILURE; } is_include_token = rampart_context_is_token_include( rampart_context, token, token_type, server_side, AXIS2_TRUE, env); key_info_node = oxs_axiom_get_first_child_node_by_name(env, sig_node, OXS_NODE_KEY_INFO, OXS_DSIG_NS, NULL ); if(!key_info_node) { rampart_create_fault_envelope(env, RAMPART_FAULT_INVALID_SECURITY, "Key Info node is not in the message .", RAMPART_FAULT_IN_SIGNATURE, msg_ctx); AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shp]Verify failed. Key Info node is not in the message."); return AXIS2_FAILURE; } str_node = oxs_axiom_get_first_child_node_by_name(env, key_info_node, OXS_NODE_SECURITY_TOKEN_REFRENCE, OXS_WSSE_XMLNS, NULL); if(str_node) { /* A element MAY reference an X.509 token type * by one of the following means: * - Reference to a Subject Key Identifier () * - Reference to a Binary Security Token ( element that * references a local element or a remote data * source that contains the token data itself) * - Reference to an Issuer and Serial Number ( element that * contains a element that uniquely identifies an * end entity certificate) */ str_child_node = axiom_node_get_first_element(str_node,env); if(str_child_node) { str_child_name = axiom_util_get_localname(str_child_node, env); if(str_child_name) { if(is_include_token) { /* The element is used to reference * an X.509 security token value by means of a URI reference. */ if(axutil_strcmp(str_child_name, OXS_NODE_REFERENCE)!=0) { rampart_create_fault_envelope(env, RAMPART_FAULT_INVALID_SECURITY, "Token is not in the message .", RAMPART_FAULT_IN_SIGNATURE, msg_ctx); AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shp] Token is not included in the message "); return AXIS2_FAILURE; } cert = oxs_x509_cert_create(env); status = rampart_token_process_direct_ref(env, str_child_node, sec_node, cert); if(status == AXIS2_FAILURE) { rampart_create_fault_envelope(env, RAMPART_FAULT_INVALID_SECURITY, "Processing Direct Reference Failed .", RAMPART_FAULT_IN_SIGNATURE, msg_ctx); AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[Rampart][shp]Processing Direct Reference Failed."); return AXIS2_FAILURE; } status = rampart_context_set_found_cert_in_shp(rampart_context, env, AXIS2_TRUE); if(status == AXIS2_FAILURE) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[Rampart][shp]Setting Certificate into rmapart context failed."); return AXIS2_FAILURE; } status = rampart_context_set_receiver_cert_found_in_shp(rampart_context, env, cert); } else { if(0 == axutil_strcmp(str_child_name, OXS_NODE_EMBEDDED)) { if(!rampart_context_is_key_identifier_type_supported( rampart_context, token, RAMPART_STR_EMBEDDED, env)) { rampart_create_fault_envelope(env, RAMPART_FAULT_INVALID_SECURITY, "Key Reference Type not supported .", RAMPART_FAULT_IN_SIGNATURE, msg_ctx); AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[Rampart][shp]Key Reference Info mismatch (%s, %s)", str_child_name, OXS_NODE_EMBEDDED); return AXIS2_FAILURE; } cert = oxs_x509_cert_create(env); status = rampart_token_process_embedded(env, str_child_node, cert); if(status == AXIS2_FAILURE) { rampart_create_fault_envelope(env, RAMPART_FAULT_INVALID_SECURITY, "Processing Embedded Token Failed .", RAMPART_FAULT_IN_SIGNATURE, msg_ctx); AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[Rampart][shp]Processing Embedded Token Failed."); return AXIS2_FAILURE; } status = rampart_context_set_found_cert_in_shp(rampart_context, env, AXIS2_TRUE); if(status == AXIS2_FAILURE) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[Rampart][shp]Setting Certificate into rmapart context failed."); return AXIS2_FAILURE; } status = rampart_context_set_receiver_cert_found_in_shp(rampart_context, env, cert); } else if(0 == axutil_strcmp(str_child_name, OXS_NODE_KEY_IDENTIFIER)) { if(!rampart_context_is_key_identifier_type_supported( rampart_context, token, RAMPART_STR_KEY_IDENTIFIER, env)) { rampart_create_fault_envelope(env, RAMPART_FAULT_INVALID_SECURITY, "Key Reference Type not supported .", RAMPART_FAULT_IN_SIGNATURE, msg_ctx); AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[Rampart][shp]Key Reference Info mismatch (%s, %s)", str_child_name, OXS_NODE_KEY_IDENTIFIER); return AXIS2_FAILURE; } cert = get_certificate_by_key_identifier(env, rampart_context, str_child_node); if(!cert) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[Rampart][shp]Couldn't find a certificate which matched given key information."); return AXIS2_FAILURE; } rampart_context_set_found_cert_in_shp(rampart_context, env, AXIS2_TRUE); rampart_context_set_receiver_cert_found_in_shp(rampart_context, env, cert); status = AXIS2_SUCCESS; } else if(0 == axutil_strcmp(str_child_name, OXS_NODE_X509_DATA)) { /* The element is used to specify * a reference to an X.509 security token by means of * the certificate issuer name and serial number. */ if(!rampart_context_is_key_identifier_type_supported( rampart_context, token, RAMPART_STR_ISSUER_SERIAL, env)) { rampart_create_fault_envelope(env, RAMPART_FAULT_INVALID_SECURITY, "Key Reference Type not supported .", RAMPART_FAULT_IN_SIGNATURE, msg_ctx); AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[Rampart][shp]Key Reference Info mismatch (%s, %s)", str_child_name, OXS_NODE_X509_DATA); return AXIS2_FAILURE; } cert = get_certificate_by_issuer_serial(env, rampart_context, str_child_node); if(!cert) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[Rampart][shp]Couldn't find a certificate which matched given key information."); return AXIS2_FAILURE; } rampart_context_set_found_cert_in_shp(rampart_context, env, AXIS2_TRUE); rampart_context_set_receiver_cert_found_in_shp(rampart_context, env, cert); status = AXIS2_SUCCESS; } else { rampart_create_fault_envelope(env, RAMPART_FAULT_INVALID_SECURITY, "Key Reference Type not supported .", RAMPART_FAULT_IN_SIGNATURE, msg_ctx); AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI , "[Rampart][shp]Key Reference %s not supported ", str_child_name); return AXIS2_FAILURE; } } if(status != AXIS2_SUCCESS || !cert) { rampart_create_fault_envelope(env, RAMPART_FAULT_INVALID_SECURITY_TOKEN, "Cannot load the key to verify the message .", RAMPART_FAULT_IN_SIGNATURE, msg_ctx); AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI , "[Rampart][shp] Cannot load the key to verify the message"); return AXIS2_FAILURE; } } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[Rampart][shp]Cannot get the key Reference Type from the message."); return AXIS2_FAILURE; } } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[Rampart][shp]No Child node in the Security Token Reference Element."); return AXIS2_FAILURE; } } /*So there may be scenarios where there is no Security Token Reference Element.*/ else { /*In such case policy support only Isssuer Serial scenario.*/ if(axutil_strcmp(eki, RAMPART_STR_ISSUER_SERIAL)==0) { key_info_child_node = axiom_node_get_first_element(key_info_node, env); if(key_info_child_node) { axis2_char_t *key_info_child_name = NULL; key_info_child_name = axiom_util_get_localname(key_info_child_node, env); if(key_info_child_name) { if(0 == axutil_strcmp(key_info_child_name, OXS_NODE_X509_DATA)) { status = rampart_token_process_x509_data(env, key_info_child_node, cert); if(status != AXIS2_SUCCESS || !cert) { rampart_create_fault_envelope(env, RAMPART_FAULT_INVALID_SECURITY_TOKEN, "Cannot load the key to verify the message .", RAMPART_FAULT_IN_SIGNATURE, msg_ctx); AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI , "[Rampart][shp] Cannot load the key to verify the message"); return AXIS2_FAILURE; } } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[Rampart][shp]Cannot get the key Reference Type from the message."); return AXIS2_FAILURE; } } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[Rampart][shp]Cannot get the key Reference Type from the message."); return AXIS2_FAILURE; } } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[Rampart][shp]Cannot get the key Reference Type from the message."); return AXIS2_FAILURE; } } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[Rampart][shp]Can't be used as a direct child of Key Info"); return AXIS2_FAILURE; } } sign_ctx = oxs_sign_ctx_create(env); if(!sign_ctx) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[Rampart][shp]Sign context creation failed. Out of Memeory."); return AXIS2_FAILURE; } /*Set the required values in sig_ctx*/ oxs_sign_ctx_set_operation(sign_ctx, env, OXS_SIGN_OPERATION_VERIFY); oxs_sign_ctx_set_certificate(sign_ctx, env, cert); envelope_node = axiom_soap_envelope_get_base_node(soap_envelope, env); if(!envelope_node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[Rampart][shp]Cannot get the Envelope node from envelope."); return AXIS2_FAILURE; } /*Verify the signature*/ status = oxs_xml_sig_verify(env, sign_ctx, sig_node, envelope_node); if(status != AXIS2_SUCCESS) { if(!axis2_msg_ctx_get_fault_soap_envelope(msg_ctx, env)) { rampart_create_fault_envelope( env, RAMPART_FAULT_INVALID_SECURITY, "Signature Verification failed.", RAMPART_FAULT_IN_SIGNATURE, msg_ctx); } AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[Rampart][shp]Signature Verification failed."); return AXIS2_FAILURE; } if(sign_ctx) { oxs_sign_ctx_free(sign_ctx, env); sign_ctx = NULL; } return status; } static axis2_status_t rampart_shp_process_signature( const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_soap_envelope_t *soap_envelope, axiom_node_t *sec_node, axiom_node_t *sig_node) { axis2_status_t status = AXIS2_FAILURE; if((rampart_context_get_binding_type(rampart_context,env)) == RP_PROPERTY_ASYMMETRIC_BINDING){ status = rampart_shp_process_asym_binding_signature(env, msg_ctx, rampart_context, soap_envelope, sec_node, sig_node, AXIS2_FALSE); }else if ((rampart_context_get_binding_type(rampart_context,env)) == RP_PROPERTY_SYMMETRIC_BINDING){ status = rampart_shp_process_sym_binding_signature(env, msg_ctx, rampart_context, soap_envelope, sec_node, sig_node); }else if((rampart_context_get_binding_type(rampart_context,env)) == RP_PROPERTY_TRANSPORT_BINDING){ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shp] Transport Binding Not supported" ); /*Not supported*/ }else{ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shp] Binding type not supported"); /*Not supported*/ } /*We need to set the Signature Value in the Security Processed Resultsi. This is required for the Signature Confirmation support*/ if(AXIS2_SUCCESS == status){ axis2_char_t *sig_val = NULL; axiom_node_t *sig_val_node = NULL; sig_val_node = oxs_axiom_get_first_child_node_by_name(env, sig_node, OXS_NODE_SIGNATURE_VALUE, OXS_DSIG_NS, OXS_DS ); sig_val = oxs_token_get_signature_value(env, sig_val_node); rampart_set_security_processed_result(env, msg_ctx, RAMPART_SPR_SIG_VERIFIED, RAMPART_YES); rampart_set_security_processed_result(env, msg_ctx, RAMPART_SPR_SIG_VALUE, sig_val); }else{ rampart_set_security_processed_result(env, msg_ctx, RAMPART_SPR_SIG_VERIFIED, RAMPART_NO); } return status; } /***/ static axis2_status_t rampart_shp_detect_replays(const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_soap_envelope_t *soap_envelope, axiom_node_t *sec_node) { axis2_bool_t need_replay_detection = AXIS2_FALSE; axis2_status_t status = AXIS2_FAILURE; if((NULL == rampart_context_get_rd_val(rampart_context, env)) && (NULL == rampart_context_get_replay_detector_name(rampart_context, env))) { AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[rampart][shp] Replay detection is not specified. Nothing to do"); need_replay_detection = AXIS2_FALSE; } else { AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[rampart][shp] Checking message for replay."); need_replay_detection = AXIS2_TRUE; } if(AXIS2_TRUE == need_replay_detection) { axis2_char_t* replay_detector_name = rampart_context_get_replay_detector_name(rampart_context, env); if (replay_detector_name) { rampart_replay_detector_t* replay_detector = (rampart_replay_detector_t*)rampart_context_get_replay_detector(rampart_context, env); if (!replay_detector) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,"[rampart][shp] Cannot find the replay detector module"); rampart_create_fault_envelope(env, RAMPART_FAULT_INVALID_SECURITY, "Message is replayed", RAMPART_FAULT_MSG_REPLAYED, msg_ctx); return AXIS2_FAILURE; } AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[rampart][shp] Using replay module."); status = RAMPART_REPLAY_DETECTOR_IS_REPLAYED(replay_detector, env, msg_ctx, rampart_context); if(status != AXIS2_SUCCESS) { /*Scream .. replayed*/ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,"[rampart][shp] Message can be replayed"); rampart_create_fault_envelope(env, RAMPART_FAULT_INVALID_SECURITY, "Message is replayed", RAMPART_FAULT_MSG_REPLAYED, msg_ctx); return AXIS2_FAILURE; } else { AXIS2_LOG_INFO(env->log, "[rampart][shp] Checked message for replays. Not a replay."); } } else { rampart_is_replayed_fn rd_fn = NULL; AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[rampart][shp] Replay module not defined. Using replay function."); /*Is replayed*/ rd_fn = rampart_context_get_replay_detect_function(rampart_context, env); if(rd_fn) { status = (*rd_fn)(env, msg_ctx, rampart_context, rampart_context_get_rd_user_params(rampart_context, env)); if(status != AXIS2_SUCCESS) { /*Scream .. replayed*/ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,"[rampart][shp] Message can be replayed"); rampart_create_fault_envelope(env, RAMPART_FAULT_INVALID_SECURITY, "Message is replayed", RAMPART_FAULT_MSG_REPLAYED, msg_ctx); return AXIS2_FAILURE; } else { AXIS2_LOG_INFO(env->log, "[rampart][shp] Checked message for replays. Not a replay."); } } else { AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[rampart][shp] No replay detection function specified. Nothing to do. "); } } } return AXIS2_SUCCESS; } static axis2_status_t rampart_shp_process_derived_key(const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_node_t *sec_node, axiom_node_t *dk_node) { oxs_key_t *session_key = NULL; oxs_key_t *derived_key = NULL; /* Get the session key. */ session_key = rampart_shp_get_key_for_key_info( env, dk_node, rampart_context, msg_ctx, AXIS2_TRUE); if(!session_key) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Failed to get the session key. Cannot derive the key"); return AXIS2_FAILURE; } /*Derive the key*/ derived_key = oxs_derivation_extract_derived_key_from_token(env, dk_node, sec_node, session_key); /*Add to the rampart context*/ rampart_context_add_key(rampart_context, env, derived_key); return AXIS2_SUCCESS; } static axis2_status_t rampart_shp_process_saml_token(const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_node_t *saml_node) { axis2_bool_t server_side = AXIS2_FALSE; rampart_saml_token_t *saml = NULL; axis2_char_t *sub_conf = NULL; server_side = axis2_msg_ctx_get_server_side(msg_ctx, env); if (AXIS2_FAILURE == rampart_saml_token_validate(env, rampart_context, saml_node)) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shp] SAML Signature Verification Failed"); return AXIS2_FAILURE; } sub_conf = rampart_saml_token_get_subject_confirmation(env, saml_node); if (sub_conf && axutil_strcmp(sub_conf, SAML_SUB_CONFIRMATION_SENDER_VOUCHES) == 0) { if (!rampart_context_is_include_supporting_token(rampart_context, env, !server_side, AXIS2_FALSE, RP_PROPERTY_SAML_TOKEN) && !rampart_context_is_include_supporting_token(rampart_context, env, !server_side, AXIS2_FALSE, RP_PROPERTY_ISSUED_TOKEN)) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[Rampart][shp] Unexpected SAML token."); return AXIS2_FAILURE; } } else if (sub_conf && axutil_strcmp(sub_conf, SAML_SUB_CONFIRMATION_HOLDER_OF_KEY) == 0) { if (!rampart_context_is_include_protection_saml_token(rampart_context, !server_side, AXIS2_FALSE, env)) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[Rampart][shp] Unexpected SAML token."); return AXIS2_FAILURE; } } /* Set the SAML token to the rampart context */ saml = rampart_saml_token_create(env, saml_node, RAMPART_ST_CONFIR_TYPE_UNSPECIFIED); rampart_context_add_saml_token(rampart_context, env, saml); return AXIS2_SUCCESS; } /*Public functions*/ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_shp_process_sec_header( const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_soap_envelope_t *soap_envelope, axiom_node_t *sec_node) { axiom_node_t *cur_node = NULL; axis2_status_t status = AXIS2_FAILURE; axis2_bool_t first_signature = AXIS2_TRUE; AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[rampart]Processing security header in Strict layout"); cur_node = axiom_node_get_first_child(sec_node, env); /*Loop all security headers*/ while(cur_node) { axis2_char_t *cur_local_name = NULL; cur_local_name = axiom_util_get_localname(cur_node, env); AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[rampart]Processing security header element %s", cur_local_name); if(!axutil_strcmp(cur_local_name, OXS_NODE_ENCRYPTED_KEY)) { status = rampart_shp_process_encrypted_key( env, msg_ctx, rampart_context, soap_envelope, sec_node, cur_node); } else if(!axutil_strcmp(cur_local_name, OXS_NODE_SECURITY_CONTEXT_TOKEN)) { status = rampart_shp_process_security_context_token( env, cur_node, rampart_context, msg_ctx); } else if(!axutil_strcmp(cur_local_name, RAMPART_SECURITY_TIMESTAMP)) { status = rampart_shp_process_timestamptoken(env, msg_ctx, rampart_context, cur_node); } else if(!axutil_strcmp(cur_local_name, RAMPART_SECURITY_USERNAMETOKEN)) { status = rampart_shp_process_usernametoken(env, msg_ctx, rampart_context, cur_node); } else if(!axutil_strcmp(cur_local_name, OXS_NODE_SIGNATURE)) { if(first_signature) { status = rampart_shp_process_signature( env, msg_ctx, rampart_context, soap_envelope, sec_node, cur_node); first_signature = AXIS2_FALSE; } else /*endorsing*/ { status = rampart_shp_process_asym_binding_signature( env, msg_ctx, rampart_context, soap_envelope, sec_node, cur_node, AXIS2_TRUE); if(AXIS2_SUCCESS == status) { axis2_char_t *sig_val = NULL; axiom_node_t *sig_val_node = NULL; sig_val_node = oxs_axiom_get_first_child_node_by_name( env, cur_node, OXS_NODE_SIGNATURE_VALUE, OXS_DSIG_NS, OXS_DS ); sig_val = oxs_token_get_signature_value(env, sig_val_node); rampart_set_security_processed_result( env, msg_ctx, RAMPART_SPR_ENDORSED_VALUE, sig_val); } } } else if(!axutil_strcmp(cur_local_name, OXS_NODE_REFERENCE_LIST)) { status = rampart_shp_process_reference_list( env, msg_ctx, rampart_context, soap_envelope, sec_node, cur_node); } else if(!axutil_strcmp(cur_local_name, OXS_NODE_DERIVED_KEY_TOKEN)) { /* We need to extract this and store in the rampart context*/ status = rampart_shp_process_derived_key( env, msg_ctx, rampart_context, sec_node, cur_node); } else if(!axutil_strcmp(cur_local_name, OXS_NODE_ENCRYPTED_DATA)) { /* We do nothing. But this is possible when a security header is Encrypted. * But it would be decrypted thru a ref list */ status = AXIS2_SUCCESS; } else if(!axutil_strcmp(cur_local_name, OXS_NODE_SIGNATURE_CONFIRMATION)) { status = rampart_shp_process_signature_confirmation( env, msg_ctx, rampart_context, cur_node); } else if(!axutil_strcmp(cur_local_name, OXS_NODE_BINARY_SECURITY_TOKEN)) { /*We do nothing.*/ status = AXIS2_SUCCESS; } else if(!axutil_strcmp(cur_local_name, OXS_NODE_SAML_ASSERTION)) { status = rampart_shp_process_saml_token(env, msg_ctx, rampart_context, cur_node); } else if(!axutil_strcmp(cur_local_name, OXS_NODE_SECURITY_TOKEN_REFRENCE)) { /*We do nothing.*/ status = AXIS2_SUCCESS; } else { /* if the security header is unknown, we should not continue. */ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Unknown security header %s", cur_local_name); status = AXIS2_FAILURE; } if(status != AXIS2_SUCCESS) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]%s processing failed", cur_local_name); return AXIS2_FAILURE; } /* Get next node */ cur_node = axiom_node_get_next_sibling(cur_node, env); }/*Eof while loop*/ AXIS2_LOG_INFO(env->log, "Security header processing done"); /*Now detect replays*/ status = rampart_shp_detect_replays(env, msg_ctx, rampart_context, soap_envelope, sec_node); if(status != AXIS2_SUCCESS) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Message replay detected."); return AXIS2_FAILURE; } /* Now validate security policies, those cannot be checked on the fly */ status = rampart_pv_validate_sec_header(env, rampart_context, sec_node, msg_ctx); if(status != AXIS2_SUCCESS) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Security policy validation failed."); return AXIS2_FAILURE; } return AXIS2_SUCCESS; } rampartc-src-1.3.0/src/util/rampart_token_processor.c0000644000076500007650000001533411202453425022644 0ustar shankarshankar/* * 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. */ #include #include #include #include #include /** * extract certificate related information using given token_reference node and scope node * @param env Environment structure * @param st_ref_node security token reference node. * @param scope_node node where additional details should be found. Can be NULL for all other * scenarios but the Direct Reference * @param cert certificate where values extracted shuold be populated * @return status of the operation */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_token_process_security_token_reference( const axutil_env_t *env, axiom_node_t *st_ref_node, axiom_node_t *scope_node, oxs_x509_cert_t *cert) { axis2_char_t *child_name = NULL; axiom_node_t *child_node = NULL; axis2_status_t status = AXIS2_FAILURE; child_node = axiom_node_get_first_element(st_ref_node, env); child_name = axiom_util_get_localname(child_node, env); if(!axutil_strcmp(child_name, OXS_NODE_REFERENCE)) { status = rampart_token_process_direct_ref(env, child_node, scope_node, cert); } else if(!axutil_strcmp(child_name, OXS_NODE_EMBEDDED)) { status = rampart_token_process_embedded(env, child_node, cert); } else if(!axutil_strcmp(child_name, OXS_NODE_KEY_IDENTIFIER)) { status = rampart_token_process_key_identifier(env, child_node, cert); } else if(!axutil_strcmp(child_name, OXS_NODE_X509_DATA)) { status = rampart_token_process_x509_data(env, child_node, cert); } else { /* reference method is not supported */ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]%s of wsse:SecurityTokenReference is not supported.", child_name); return AXIS2_FAILURE; } return status; } /** * extract certificate using reference id given in reference node * @param env Environment structure * @param ref_node security token reference node. * @param scope_node node where certificate details should be found using reference id * @param cert certificate where values extracted shuold be populated * @return status of the operation */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_token_process_direct_ref( const axutil_env_t *env, axiom_node_t *ref_node, axiom_node_t *scope_node, oxs_x509_cert_t *cert) { axis2_char_t *ref = NULL; axis2_char_t *ref_id = NULL; axis2_status_t status = AXIS2_FAILURE; axiom_node_t *bst_node = NULL; axis2_char_t *data = NULL; oxs_x509_cert_t *_cert = NULL; /* Select ref using node. Since it is relative reference, we have to remove * first character (which is '#') from the reference */ ref = oxs_token_get_reference(env, ref_node); ref_id = axutil_string_substring_starting_at(axutil_strdup(env, ref), 1); /* Find the token with the id = ref_id within the scope of scope_node */ bst_node = oxs_axiom_get_node_by_id(env, scope_node, OXS_ATTR_ID, ref_id, OXS_WSU_XMLNS); if(!bst_node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error retrieving element with ID = %s", ref_id); return AXIS2_FAILURE; } /* Process data. */ data = oxs_axiom_get_node_content(env, bst_node); _cert = oxs_key_mgr_load_x509_cert_from_string(env, data); if(_cert) { status = AXIS2_SUCCESS; } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Cannot load certificate from string =%s", data); status = AXIS2_FAILURE; } oxs_x509_cert_copy_to(_cert, env, cert); oxs_x509_cert_free(_cert, env); _cert = NULL; return status; } /** * extract embedded certificate from given embed_node * @param env Environment structure * @param embed_node node where certificate is embedded. * @param cert certificate where values extracted shuold be populated * @return status of the operation */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_token_process_embedded( const axutil_env_t *env, axiom_node_t *embed_node, oxs_x509_cert_t *cert) { axis2_status_t status = AXIS2_FAILURE; axis2_char_t *data = NULL; oxs_x509_cert_t *_cert = NULL; axiom_node_t *bst_node = NULL; bst_node = axiom_node_get_first_element(embed_node, env); if(!bst_node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]BST element is not found"); return AXIS2_FAILURE; } /* Process data */ data = oxs_axiom_get_node_content(env, bst_node); _cert = oxs_key_mgr_load_x509_cert_from_string(env, data); if(_cert) { status = AXIS2_SUCCESS; } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Cannot load certificate from string =%s", data); status = AXIS2_FAILURE; } oxs_x509_cert_copy_to(_cert, env, cert); oxs_x509_cert_free(_cert, env); return status; } /** * extract key identifier and populate the certificate * @param env Environment structure * @param ki_node node where key identifier is available. * @param cert certificate where values extracted shuold be populated * @return status of the operation */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_token_process_key_identifier( const axutil_env_t *env, axiom_node_t *ki_node, oxs_x509_cert_t *cert) { axis2_char_t *ki = NULL; ki = oxs_axiom_get_node_content(env, ki_node); oxs_x509_cert_set_key_identifier(cert, env, ki); return AXIS2_SUCCESS; } /** * extract key details from x509data node * @param env Environment structure * @param x509_data_node x509data node. * @param cert certificate where values extracted shuold be populated * @return status of the operation */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_token_process_x509_data( const axutil_env_t *env, axiom_node_t *x509_data_node, oxs_x509_cert_t *cert) { return oxs_xml_key_process_X509Data(env, x509_data_node, cert); } rampartc-src-1.3.0/src/util/rampart_sec_processed_result.c0000644000076500007650000001400211202453425023633 0ustar shankarshankar/* * 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. */ #include #include #include /** * Set a security processed result to the message context * @param env Environment structure * @param msg_ctx message context sttucture * @param key key of the security processed result * @param value value of the security processed result * @return status of the operation */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_set_security_processed_result( const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axis2_char_t *key, void *value) { axutil_hash_t *sec_processed_results = NULL; sec_processed_results = rampart_get_all_security_processed_results(env, msg_ctx); if(!sec_processed_results) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Cannot retrieve security processed results container."); return AXIS2_FAILURE; } axutil_hash_set(sec_processed_results, key, AXIS2_HASH_KEY_STRING, value); AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[rampart]Set %s in Security Processed Results of message context ", key); return AXIS2_SUCCESS; } /** * Get a security processed result from a message context. * A service may use this method to retirieve a particular result by the key * @env the environment * @msg_ctx the message context in which data are extracted * @key as specified in rampart_constants section SPR * @return value of the security processed result corresponding to @key */ AXIS2_EXTERN void *AXIS2_CALL rampart_get_security_processed_result( const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axis2_char_t *key) { axutil_hash_t *sec_processed_results = NULL; sec_processed_results = rampart_get_all_security_processed_results(env, msg_ctx); if(!sec_processed_results) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Cannot retrieve security processed results container."); return NULL; } return axutil_hash_get(sec_processed_results, key, AXIS2_HASH_KEY_STRING); } /** * Set a security processed result property to the message context * @env the environment * @msg_ctx the message context in which data are stored/extracted * @return status of the operation */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_set_security_processed_results_property( const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx) { axutil_hash_t *sec_processed_results = NULL; axutil_property_t *sec_processed_results_prop = NULL; sec_processed_results = axutil_hash_make(env); if(!sec_processed_results) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Security processed result hash container creation failed."); return AXIS2_FAILURE; } sec_processed_results_prop = axutil_property_create_with_args( env, AXIS2_SCOPE_REQUEST , AXIS2_TRUE, (void *)axutil_hash_free, sec_processed_results); if(!sec_processed_results_prop) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Security processed result property creation failed."); return AXIS2_FAILURE; } axis2_msg_ctx_set_property( msg_ctx, env, RAMPART_SECURITY_PROCESSED_RESULTS, sec_processed_results_prop); return AXIS2_SUCCESS; } /** * Get the complete set of security processed results * @env the environment * @msg_ctx the message context in which data are extracted * @return complete set of security processed results. */ AXIS2_EXTERN axutil_hash_t* AXIS2_CALL rampart_get_all_security_processed_results( const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx) { axutil_property_t *sec_processed_results_prop = NULL; axutil_hash_t *sec_processed_results = NULL; sec_processed_results_prop = axis2_msg_ctx_get_property( msg_ctx, env, RAMPART_SECURITY_PROCESSED_RESULTS); if(!sec_processed_results_prop) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Cannot get %s from msg ctx ", RAMPART_SECURITY_PROCESSED_RESULTS); return NULL; } sec_processed_results = (axutil_hash_t*)axutil_property_get_value( sec_processed_results_prop, env); if(!sec_processed_results) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Cannot get Security Processed Results Hash table from the property"); return NULL; } return sec_processed_results; } /** * Prints all ke/val pairs in the security processed results. For debugging purposes * @env the environment * @msg_ctx the message context in which data are extracted * @return void */ AXIS2_EXTERN void AXIS2_CALL rampart_print_security_processed_results_set( const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx) { axutil_hash_t *sec_processed_results = NULL; axutil_hash_index_t *hi = NULL; const void *key = NULL; void *val = NULL; sec_processed_results = rampart_get_all_security_processed_results(env, msg_ctx); if(!sec_processed_results) { return; } for (hi = axutil_hash_first(sec_processed_results, env); hi; hi = axutil_hash_next(env, hi)) { axutil_hash_this(hi, &key, NULL, &val); AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[rampart](key, val) %s = %s\n", (axis2_char_t*)key, (axis2_char_t*)val); } } rampartc-src-1.3.0/src/util/rampart_sec_header_builder.c0000644000076500007650000006336211202453425023221 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include /*Private functions*/ axis2_status_t AXIS2_CALL rampart_shb_do_asymmetric_binding( const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_soap_envelope_t *soap_envelope, axiom_node_t *sec_node, axiom_namespace_t *sec_ns_obj, axutil_array_list_t *sign_parts_list) { axis2_bool_t signature_protection = AXIS2_FALSE; axis2_bool_t is_encrypt_before_sign = AXIS2_FALSE; axis2_status_t status = AXIS2_SUCCESS; axiom_node_t *sig_node = NULL; axiom_node_t *enc_key_node = NULL; /*Do Asymmetric Binding specific things*/ signature_protection = rampart_context_is_encrypt_signature(rampart_context, env); /*Check the encryption and signature order*/ if(rampart_context_is_encrypt_before_sign(rampart_context, env)) { is_encrypt_before_sign = AXIS2_TRUE; /*If signature_protection=> is ON*/ if(signature_protection) { /*First Encrypt the parts specified in encrypted parts*/ status = rampart_enc_encrypt_message(env, msg_ctx, rampart_context, soap_envelope, sec_node); if(status != AXIS2_SUCCESS) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shb] Encryption failed. ERROR"); return AXIS2_FAILURE; } /*Add a key reference in Encrypted Data in the Body*/ status = rampart_enc_add_key_info(env, msg_ctx, rampart_context, soap_envelope, sec_node); if(status != AXIS2_SUCCESS) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shb] Cannot add Key information"); return AXIS2_FAILURE; } /*Then Sign the message*/ status = rampart_sig_sign_message(env, msg_ctx, rampart_context, soap_envelope, sec_node, sign_parts_list); if(status != AXIS2_SUCCESS) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shb] Signing failed. ERROR"); return AXIS2_FAILURE; } /*Then encrypt the signature */ status = rampart_enc_encrypt_signature(env, msg_ctx, rampart_context, soap_envelope, sec_node); if(status != AXIS2_SUCCESS) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shb] Encrypt signature failed. ERROR"); return AXIS2_FAILURE; } } else /*No Signature protection*/ { status = rampart_enc_encrypt_message(env, msg_ctx, rampart_context, soap_envelope, sec_node); if(status != AXIS2_SUCCESS){ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shb] Encryption failed. ERROR"); return AXIS2_FAILURE; } /*Then do signature specific things*/ status = rampart_sig_sign_message(env, msg_ctx, rampart_context, soap_envelope, sec_node, sign_parts_list); if(status != AXIS2_SUCCESS){ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shb] Signature failed. ERROR"); return AXIS2_FAILURE; } } /*Then Handle Supporting token stuff */ } else /*Sign before encrypt*/ { is_encrypt_before_sign = AXIS2_FALSE; /*First do signature specific stuff*/ status = rampart_sig_sign_message(env, msg_ctx, rampart_context, soap_envelope, sec_node, sign_parts_list); if(status != AXIS2_SUCCESS){ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shb] Signing failed. ERROR"); return AXIS2_FAILURE; } /*Then Handle Encryption stuff*/ status = rampart_enc_encrypt_message(env, msg_ctx, rampart_context, soap_envelope, sec_node); if(status!=AXIS2_SUCCESS ){ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shb] Encryption failed. ERROR"); return AXIS2_FAILURE; } } /*If both encryption and signature is done we should interchange them. * because the action done last should appear first in the header. */ sig_node = oxs_axiom_get_node_by_local_name(env,sec_node,OXS_NODE_SIGNATURE); enc_key_node = oxs_axiom_get_node_by_local_name(env,sec_node,OXS_NODE_ENCRYPTED_KEY); if(sig_node && enc_key_node) { if(is_encrypt_before_sign) { status = oxs_axiom_interchange_nodes(env, sig_node, enc_key_node); if(status!=AXIS2_SUCCESS) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shb] Node interchange failed."); return status; } } else /*Sign before encryption*/ { status = oxs_axiom_interchange_nodes(env, enc_key_node, sig_node); if(status!=AXIS2_SUCCESS) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shb] Node interchange failed."); return status; } } }else if(enc_key_node && signature_protection) { if(!is_encrypt_before_sign) { axiom_node_t *enc_data_node = NULL; enc_data_node = oxs_axiom_get_node_by_local_name(env, sec_node, OXS_NODE_ENCRYPTED_DATA); if(!enc_data_node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,"[rampart][shb]Signature is not encrypted,"); return AXIS2_FAILURE; } else { status = oxs_axiom_interchange_nodes(env, enc_key_node, enc_data_node); if(status != AXIS2_SUCCESS) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,"[rampart][shb]Cannot interchange enc_key and enc_data nodes"); return AXIS2_FAILURE; } } } } return AXIS2_SUCCESS; } axis2_status_t AXIS2_CALL rampart_shb_do_symmetric_binding( const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_soap_envelope_t *soap_envelope, axiom_node_t *sec_node, axiom_namespace_t *sec_ns_obj, axutil_array_list_t *sign_parts_list) { axis2_status_t status = AXIS2_FAILURE; /*Check the encryption and signature order*/ if(rampart_context_is_encrypt_before_sign(rampart_context, env)) { axis2_bool_t signature_protection = AXIS2_FALSE; signature_protection = rampart_context_is_encrypt_signature(rampart_context, env); /*Encrypt before sign. Complicated stuff...*/ /** * 1. encrypt parts to be encrypted * 2. sign parts to be signed * 3. encrypt signature if required */ /*1. Encrypt*/ status = rampart_enc_dk_encrypt_message(env, msg_ctx, rampart_context, soap_envelope, sec_node); if (status == AXIS2_FAILURE) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shb] Sym binding, Encryption failed in Symmetric binding. ERROR"); return AXIS2_FAILURE; } /*2. Sign*/ status = rampart_sig_sign_message(env, msg_ctx, rampart_context, soap_envelope, sec_node, sign_parts_list); if(status != AXIS2_SUCCESS) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shb] Signing failed. ERROR"); return AXIS2_FAILURE; } /*3. Encrypt signature*/ if(signature_protection) { status = rampart_enc_encrypt_signature(env, msg_ctx, rampart_context, soap_envelope, sec_node); if(status != AXIS2_SUCCESS) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shb] Encrypt signature failed. ERROR"); return AXIS2_FAILURE; } } } else { /*Sign before encrypt*/ /*First do signature specific stuff using Symmetric key*/ status = rampart_sig_sign_message(env, msg_ctx, rampart_context, soap_envelope, sec_node, sign_parts_list); if(status != AXIS2_SUCCESS) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shb] Signing failed. ERROR"); return AXIS2_FAILURE; } /*Then Handle Encryption stuff*/ status = rampart_enc_dk_encrypt_message(env, msg_ctx, rampart_context, soap_envelope, sec_node); if (status == AXIS2_FAILURE) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shb] Sym binding, Encryption failed in Symmetric binding. ERROR"); return AXIS2_FAILURE; } } /*Finaly we need to make sure that our security header elements are in order*/ status = rampart_shb_ensure_sec_header_order(env, msg_ctx, rampart_context, sec_node); if(status != AXIS2_SUCCESS) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,"[rampart][shb] Security header ordering failed."); return AXIS2_FAILURE; } status = AXIS2_SUCCESS; return status; } /*Public functions*/ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_shb_ensure_sec_header_order(const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_node_t* sec_node) { axis2_bool_t signature_protection = AXIS2_FALSE; axis2_bool_t is_encrypt_before_sign = AXIS2_FALSE; axiom_node_t *sig_node = NULL; axiom_node_t *enc_key_node = NULL; axiom_node_t *ref_list_node = NULL; axiom_node_t *h_node = NULL; axutil_array_list_t *dk_list = NULL; axutil_array_list_t *enc_key_list = NULL; axiom_node_t* first_protection_item = NULL; int i = 0; signature_protection = rampart_context_is_encrypt_signature(rampart_context, env); is_encrypt_before_sign = rampart_context_is_encrypt_before_sign(rampart_context, env); dk_list = axutil_array_list_create(env, 5); enc_key_list = axutil_array_list_create(env, 2); h_node = axiom_node_get_first_child(sec_node, env); while(h_node) { if(0 == axutil_strcmp(OXS_NODE_DERIVED_KEY_TOKEN, axiom_util_get_localname(h_node, env)) || (0 == axutil_strcmp(OXS_NODE_BINARY_SECURITY_TOKEN, axiom_util_get_localname(h_node, env)))) { axutil_array_list_add(dk_list, env, h_node); } else if((0 == axutil_strcmp(OXS_NODE_ENCRYPTED_KEY, axiom_util_get_localname(h_node, env))) || (0 == axutil_strcmp(OXS_NODE_SECURITY_CONTEXT_TOKEN, axiom_util_get_localname(h_node, env)))) { axutil_array_list_add(enc_key_list, env, h_node); } h_node = axiom_node_get_next_sibling(h_node, env); } ref_list_node = oxs_axiom_get_first_child_node_by_name(env, sec_node, OXS_NODE_REFERENCE_LIST, OXS_ENC_NS, NULL); sig_node = oxs_axiom_get_first_child_node_by_name(env, sec_node, OXS_NODE_SIGNATURE, OXS_DSIG_NS, NULL); /*Ensure the protection order in the header*/ if(sig_node && ref_list_node) { if(is_encrypt_before_sign) { int no_of_sig_node = 0; /*Encrypt->Sig */ oxs_axiom_interchange_nodes(env, sig_node, ref_list_node ); first_protection_item = sig_node; no_of_sig_node = oxs_axiom_get_number_of_children_with_qname(env, sec_node, OXS_NODE_SIGNATURE, OXS_DSIG_NS, NULL); if(no_of_sig_node > 1) { axiom_node_t* cur_node = NULL; cur_node = axiom_node_get_first_child(sec_node, env); while(cur_node) { axis2_char_t *cur_local_name = NULL; cur_local_name = axiom_util_get_localname(cur_node, env); if(0 == axutil_strcmp(cur_local_name, OXS_NODE_SIGNATURE)) { oxs_axiom_interchange_nodes(env, cur_node, ref_list_node); } cur_node = axiom_node_get_next_sibling(cur_node, env); } } } else { /*Sig->Encrypt */ oxs_axiom_interchange_nodes(env, ref_list_node, sig_node ); first_protection_item = ref_list_node; } } else if(sig_node) { first_protection_item = sig_node; } else { first_protection_item = ref_list_node; } /*makesure enc_key_node is appearing before first protection item*/ if(first_protection_item) { for(i = 0; i < axutil_array_list_size(enc_key_list, env); i++) { axiom_node_t *tmp_node = NULL; tmp_node = (axiom_node_t*)axutil_array_list_get(enc_key_list, env, i); enc_key_node = axiom_node_detach(tmp_node, env); axiom_node_insert_sibling_before(first_protection_item, env, enc_key_node); } } /* * If there are derived keys, make sure they come after the EncryptedKey/security context token 1. First we get all the derived keys 2. Then we attach after the EncryptedKey(hidden sessionkey)/security context token 3. If key is not available, then attach derived keys before sig_node and ref_list_node (whichever is first) */ if(enc_key_node) { for(i = 0; i < axutil_array_list_size(dk_list, env); i++) { axiom_node_t *dk_node = NULL; axiom_node_t *tmp_node = NULL; dk_node = (axiom_node_t*)axutil_array_list_get(dk_list, env, i); tmp_node = axiom_node_detach(dk_node, env); axiom_node_insert_sibling_after(enc_key_node, env, tmp_node); } } else { if(first_protection_item) { for(i = 0; i < axutil_array_list_size(dk_list, env); i++) { axiom_node_t *dk_node = NULL; axiom_node_t *tmp_node = NULL; dk_node = (axiom_node_t*)axutil_array_list_get(dk_list, env, i); tmp_node = axiom_node_detach(dk_node, env); axiom_node_insert_sibling_before(first_protection_item, env, tmp_node); } } } axutil_array_list_free(dk_list, env); axutil_array_list_free(enc_key_list, env); return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_shb_build_message( const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_soap_envelope_t *soap_envelope) { axis2_status_t status = AXIS2_SUCCESS; axiom_soap_header_t *soap_header = NULL; axiom_node_t *soap_header_node = NULL; axiom_element_t *soap_header_ele = NULL; axiom_soap_header_block_t *sec_header_block = NULL; axiom_namespace_t *sec_ns_obj = NULL; axiom_node_t *sec_node = NULL; axiom_element_t *sec_ele = NULL; axis2_bool_t server_side = AXIS2_FALSE; /* * sign parts list. Moved this up the building process. This was originally * in the rampart_sig_sign_message */ axutil_array_list_t *sign_parts_list = NULL; AXIS2_ENV_CHECK(env,AXIS2_FAILURE); soap_header = axiom_soap_envelope_get_header(soap_envelope, env); soap_header_node = axiom_soap_header_get_base_node(soap_header, env); soap_header_ele = (axiom_element_t *)axiom_node_get_data_element( soap_header_node, env); sec_ns_obj = axiom_namespace_create(env, RAMPART_WSSE_XMLNS, RAMPART_WSSE); axiom_namespace_increment_ref(sec_ns_obj, env); sec_header_block = axiom_soap_header_add_header_block(soap_header, env, RAMPART_SECURITY, sec_ns_obj); server_side = axis2_msg_ctx_get_server_side(msg_ctx, env); if(!sec_header_block) { AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[rampart][shb] Security header block is NULL"); axiom_namespace_free(sec_ns_obj, env); return AXIS2_SUCCESS; } axiom_soap_header_block_set_must_understand_with_bool(sec_header_block, env, AXIS2_TRUE); sec_node = axiom_soap_header_block_get_base_node(sec_header_block, env); sec_ele = (axiom_element_t *) axiom_node_get_data_element(sec_node, env); sign_parts_list = axutil_array_list_create(env, 4); /*Timestamp Inclusion*/ if(rampart_context_is_include_timestamp(rampart_context,env)) { int ttl = -1; axis2_bool_t need_millisecond = AXIS2_TRUE; AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[rampart][shb] Building Timestamp Token"); AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[rampart][shb] Using default timeToLive value %d", RAMPART_TIMESTAMP_TOKEN_DEFAULT_TIME_TO_LIVE); ttl = rampart_context_get_ttl(rampart_context,env); need_millisecond = rampart_context_get_need_millisecond_precision(rampart_context, env); status = rampart_timestamp_token_build(env, sec_node, ttl, need_millisecond); if (status == AXIS2_FAILURE) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shb] Timestamp Token build failed. ERROR"); axiom_namespace_free(sec_ns_obj, env); return AXIS2_FAILURE; } } /*Check whether we need username token*/ /*User name tokens includes in messages sent from client to server*/ if(!axis2_msg_ctx_get_server_side(msg_ctx,env)) { if(rampart_context_is_include_username_token(rampart_context,env)) { /*Now we are passing rampart_context here so inside this method relevant parameters are extracted. */ AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[rampart][shb] Building UsernmaeToken"); status = rampart_username_token_build( env, rampart_context, sec_node, sec_ns_obj); if (status == AXIS2_FAILURE) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shb] UsernmaeToken build failed. ERROR"); axiom_namespace_free(sec_ns_obj, env); return AXIS2_FAILURE; } } } /********************** * Sample node to be added to the security header. This is for testing * TODO: Remove later*/ if(0){ axiom_node_t *my_token = NULL; axutil_array_list_t *token_list = NULL; axis2_char_t *buf = ""; token_list = axutil_array_list_create(env, 1); my_token = oxs_axiom_deserialize_node(env, buf); axutil_array_list_add(token_list, env, my_token); rampart_context_set_custom_tokens(rampart_context,env, token_list); } /***********************/ /*Custom tokens are included if its available in the rampart context*/ if(!axis2_msg_ctx_get_server_side(msg_ctx,env)) { axutil_array_list_t *token_list = NULL; token_list = rampart_context_get_custom_tokens(rampart_context, env); if(token_list){ int size = 0, i = 0; size = axutil_array_list_size(token_list, env); for (i = 0; i < size; i++){ axiom_node_t *token_node = NULL; token_node = (axiom_node_t*)axutil_array_list_get(token_list, env, i); if(token_node){ axis2_status_t status = AXIS2_FAILURE; status = axiom_node_add_child(sec_node, env, token_node); if(status != AXIS2_SUCCESS){ return AXIS2_FAILURE; } } } } } if (rampart_context_is_include_supporting_token(rampart_context, env, server_side, AXIS2_FALSE, RP_PROPERTY_SAML_TOKEN)) { status = rampart_saml_supporting_token_build(env, rampart_context, sec_node, sign_parts_list); if (status == AXIS2_FAILURE) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shb] SAML Supporting token build failed. ERROR"); axutil_array_list_free(sign_parts_list, env); axiom_namespace_free(sec_ns_obj, env); return AXIS2_FAILURE; } } if (rampart_context_is_include_supporting_token(rampart_context, env, server_side, AXIS2_FALSE, RP_PROPERTY_ISSUED_TOKEN)) { status = rampart_issued_supporting_token_build(rampart_context, env, sec_node, sign_parts_list); if (status == AXIS2_FAILURE) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shb] Issued supporting token build failed. ERROR"); axutil_array_list_free(sign_parts_list, env); axiom_namespace_free(sec_ns_obj, env); return AXIS2_FAILURE; } } /*Signature Confirmation support. Only in the server side*/ if(axis2_msg_ctx_get_server_side(msg_ctx,env)){ axis2_bool_t sign_conf_reqd = AXIS2_FALSE; /*Sign_conf_reqd <- Get from context <- policy*/ sign_conf_reqd = rampart_context_is_sig_confirmation_reqd(rampart_context, env); if(sign_conf_reqd){ status = rampart_sig_confirm_signature(env, msg_ctx, rampart_context, sec_node); } } /*check the binding*/ if((rampart_context_get_binding_type(rampart_context,env)) == RP_PROPERTY_ASYMMETRIC_BINDING) { axis2_status_t status = AXIS2_FAILURE; AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[rampart][shb] Asymmetric Binding. "); status = rampart_shb_do_asymmetric_binding(env, msg_ctx, rampart_context, soap_envelope, sec_node, sec_ns_obj, sign_parts_list); axiom_namespace_free(sec_ns_obj, env); if(AXIS2_FAILURE == status){ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shb] Asymmetric Binding failed"); if(axis2_msg_ctx_get_server_side(msg_ctx,env)){ AXIS2_ERROR_SET(env->error, RAMPART_ERROR_INVALID_SECURITY , AXIS2_FAILURE); AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shb] %s", AXIS2_ERROR_GET_MESSAGE(env->error)); rampart_create_fault_envelope(env, RAMPART_FAULT_INVALID_SECURITY, " Asymmetric Binding failed. Check configurations ", RAMPART_FAULT_IN_POLICY, msg_ctx); } axutil_array_list_free(sign_parts_list, env); return AXIS2_FAILURE; }else{ axutil_array_list_free(sign_parts_list, env); return AXIS2_SUCCESS; } } else if((rampart_context_get_binding_type(rampart_context,env)) == RP_PROPERTY_SYMMETRIC_BINDING) { axis2_status_t status = AXIS2_FAILURE; /*Do Symmetric_binding specific things*/ AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[rampart][shb] Symmetric Binding. "); status = rampart_shb_do_symmetric_binding(env, msg_ctx, rampart_context, soap_envelope, sec_node, sec_ns_obj, sign_parts_list); axiom_namespace_free(sec_ns_obj, env); if(AXIS2_FAILURE == status){ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shb] Symmetric Binding failed"); if(axis2_msg_ctx_get_server_side(msg_ctx,env)){ AXIS2_ERROR_SET(env->error, RAMPART_ERROR_INVALID_SECURITY, AXIS2_FAILURE); rampart_create_fault_envelope(env, RAMPART_FAULT_INVALID_SECURITY, " Symmetric Binding failed. Check configurations ", RAMPART_FAULT_IN_POLICY, msg_ctx); } axutil_array_list_free(sign_parts_list, env); return AXIS2_FAILURE; }else{ axutil_array_list_free(sign_parts_list, env); return AXIS2_SUCCESS; } } else if((rampart_context_get_binding_type(rampart_context,env)) == RP_PROPERTY_TRANSPORT_BINDING) { AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[rampart][shb] Using transport binding"); axiom_namespace_free(sec_ns_obj, env); axutil_array_list_free(sign_parts_list, env); return AXIS2_SUCCESS; }else{ axutil_array_list_free(sign_parts_list, env); axiom_namespace_free(sec_ns_obj, env); return AXIS2_FAILURE; } } rampartc-src-1.3.0/src/util/rampart_token_builder.c0000644000076500007650000002224511202453425022252 0ustar shankarshankar/* * 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. */ #include #include #include #include /** * Build a SecurityTokenReference element according to the pattern specified in @pattern. * The token will be attached to the node @parent and relavent data will be extracted from * certificate @cert. * @param env pointer to environment struct * @param parent The parent node * @param cert The X509 certificate * @param pattern The build pattern * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_token_build_security_token_reference( const axutil_env_t *env, axiom_node_t *parent, oxs_x509_cert_t *cert, rampart_token_build_pattern_t pattern) { axis2_status_t status = AXIS2_FAILURE; axiom_node_t *stref_node = NULL; stref_node = oxs_token_build_security_token_reference_element(env, parent); if(RTBP_EMBEDDED == pattern) { status = rampart_token_build_embedded(env, stref_node, cert); } else if(RTBP_KEY_IDENTIFIER == pattern) { status = rampart_token_build_key_identifier(env, stref_node, cert); } else if(RTBP_X509DATA_X509CERTIFICATE == pattern) { status = rampart_token_build_x509_data_x509_certificate(env, stref_node, cert); } else if(RTBP_X509DATA_ISSUER_SERIAL == pattern) { status = rampart_token_build_x509_data_issuer_serial(env, stref_node, cert); } else if(RTBP_THUMBPRINT == pattern) { status = rampart_token_build_thumbprint_reference(env, stref_node, cert); } else { /* reference method is not supported */ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Unsupported pattern %d to build wsse:SecurityTokenReference ", pattern); return AXIS2_FAILURE; } return status; } /** * Build an Embedded token with data available in the certificate. * * * UYISDjsdaousdWEqswOIUsd * * * @param env pointer to environment struct * @param parent The parent node * @param cert The X509 certificate * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_token_build_embedded( const axutil_env_t *env, axiom_node_t *parent, oxs_x509_cert_t *cert) { axis2_char_t *data = NULL; axis2_char_t *bst_id = NULL; axiom_node_t *embedded_node = NULL; axiom_node_t *bst_node = NULL; /* Get data from the certificate */ data = oxs_x509_cert_get_data(cert, env); if(!data) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Cannot get data from the x509 certificate."); return AXIS2_FAILURE; } embedded_node = oxs_token_build_embedded_element(env, parent, RAMPART_EMBED_TOKEN_ID); bst_id = oxs_util_generate_id(env, RAMPART_BST_ID_PREFIX); bst_node = oxs_token_build_binary_security_token_element( env, embedded_node, bst_id ,OXS_ENCODING_BASE64BINARY, OXS_VALUE_X509V3, data); return AXIS2_SUCCESS; } /** * Build a KeyIndentifer token with data available in the certificate. * * WEqswOIUsd * * @param env pointer to environment struct * @param parent The parent node * @param cert The X509 certificate * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_token_build_key_identifier( const axutil_env_t *env, axiom_node_t *parent, oxs_x509_cert_t *cert) { axiom_node_t *ki_node = NULL; axis2_char_t *ki = NULL; ki = oxs_x509_cert_get_key_identifier(cert, env); if(!ki) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Cannot get key identifier from the x509 certificate."); return AXIS2_FAILURE; } ki_node = oxs_token_build_key_identifier_element( env, parent, OXS_ENCODING_BASE64BINARY, OXS_X509_SUBJ_KI, ki); return AXIS2_SUCCESS; } /* * Build an X509Certificate token with data available in the certificate. * * * * MIICzjCCAjegAwIBAgIJANyD+jwekxGuMA...... * * * * @param env pointer to environment struct * @param parent The parent node * @param cert The X509 certificate * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_token_build_x509_data_x509_certificate( const axutil_env_t *env, axiom_node_t *parent, oxs_x509_cert_t *cert) { axiom_node_t *x509_data_node = NULL; axiom_node_t *x509_cert_node = NULL; axis2_char_t *data = NULL; data = oxs_x509_cert_get_data(cert, env); if(!data) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Cannot get data from the x509 certificate."); return AXIS2_FAILURE; } x509_data_node = oxs_token_build_x509_data_element(env, parent); x509_cert_node = oxs_token_build_x509_certificate_element(env, x509_data_node, data); return AXIS2_SUCCESS; } /** * Build an X509IssuerSerial token with data available in the certificate. * * * * C=US, O=VeriSign, Inc., * 93243297328 * * * * @param env pointer to environment struct * @param parent The parent node * @param cert The X509 certificate * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_token_build_x509_data_issuer_serial( const axutil_env_t *env, axiom_node_t *parent, oxs_x509_cert_t *cert) { axiom_node_t *x509_data_node = NULL; axiom_node_t *x509_issuer_serial_node = NULL; axis2_char_t *issuer = NULL; int serial = -1; axis2_char_t serial_no[20]; issuer = oxs_x509_cert_get_issuer(cert, env); serial = oxs_x509_cert_get_serial_number(cert, env); if(!issuer) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Cannot get issuer from the x509 certificate."); return AXIS2_FAILURE; } if(serial == -1) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Cannot get serial from the x509 certificate."); return AXIS2_FAILURE; } sprintf(serial_no, "%d", serial); /* Build tokens */ x509_data_node = oxs_token_build_x509_data_element(env, parent); x509_issuer_serial_node = oxs_token_build_x509_issuer_serial_with_data( env, x509_data_node, issuer, serial_no); return AXIS2_SUCCESS; } /** * Build a Thumbprint Reference of the certificate. bg6I8267h0TUcPYvYE0D6k6+UJQ= * @param env pointer to environment struct * @param parent The parent node * @param cert The X509 certificate * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_token_build_thumbprint_reference( const axutil_env_t *env, axiom_node_t *parent, oxs_x509_cert_t *cert) { axiom_node_t *key_identifier_node = NULL; axis2_char_t *key_identifier = NULL; axis2_char_t *val_type = NULL; key_identifier = oxs_x509_cert_get_fingerprint(cert, env); val_type = OXS_X509_TUMBP_PRINT_SHA1; if(!key_identifier) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart] Cannot create the Thumpprint from Cert."); return AXIS2_FAILURE; } /*Build KeyIdentifier node*/ key_identifier_node = oxs_token_build_key_identifier_element( env, parent, OXS_ENCODING_BASE64BINARY, val_type, key_identifier); if(key_identifier_node) { return AXIS2_SUCCESS; } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Thumbpring node creation failed"); return AXIS2_FAILURE; } } rampartc-src-1.3.0/src/util/rampart_signature.c0000644000076500007650000013177211202453425021433 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include /*Private functions*/ axis2_status_t AXIS2_CALL rampart_sig_add_x509_token(const axutil_env_t *env, rampart_context_t *rampart_context, axiom_node_t *sec_node, axis2_char_t *cert_id); axutil_array_list_t * AXIS2_CALL rampart_sig_create_sign_parts(const axutil_env_t *env, rampart_context_t *rampart_context, axutil_array_list_t *nodes_to_sign, axis2_bool_t server_side, axutil_array_list_t *sign_parts_list); static axis2_status_t rampart_sig_endorse_sign( const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_soap_envelope_t *soap_envelope, axiom_node_t *sec_node); axis2_status_t AXIS2_CALL rampart_sig_prepare_key_info_for_sym_binding(const axutil_env_t *env, rampart_context_t *rampart_context, oxs_sign_ctx_t *sign_ctx, axiom_node_t *sig_node, oxs_key_t *key, axis2_char_t* encrypted_key_id) { axiom_node_t *key_info_node = NULL; axiom_node_t *str_node = NULL; axiom_node_t *reference_node = NULL; axis2_char_t *id_ref = NULL; axis2_char_t *key_id = NULL; axis2_char_t *value_type = NULL; /*Now we must build the Key Info element*/ key_info_node = oxs_token_build_key_info_element(env, sig_node); str_node = oxs_token_build_security_token_reference_element( env, key_info_node); /*Create the reference Id*/ /*There are two ways the key info can be built * 1. If the key used to sign is encrypted using an X509 Certificate, then that EncryptedKey's id will be used * 2. If the key used to sign is derrived from the session key, then the Id of the derived key will be used */ if(encrypted_key_id){ /*Session key in use. Which is encrypted and hidden in the EncryptedKey with Id=encrypted_key_id*/ key_id = encrypted_key_id; value_type = OXS_WSS_11_VALUE_TYPE_ENCRYPTED_KEY; id_ref = axutil_stracat(env, OXS_LOCAL_REFERENCE_PREFIX,key_id); }else{ /*Derived Keys in use.*/ key_id = oxs_key_get_name(key, env); value_type = NULL; id_ref = key_id; } reference_node = oxs_token_build_reference_element(env, str_node, id_ref, value_type ); return AXIS2_SUCCESS; } axis2_status_t AXIS2_CALL rampart_sig_prepare_key_info_for_asym_binding(const axutil_env_t *env, rampart_context_t *rampart_context, oxs_sign_ctx_t *sign_ctx, axiom_node_t *sig_node, axis2_char_t *cert_id, axis2_char_t *eki, axis2_bool_t is_direct_reference) { axiom_node_t *key_info_node = NULL; oxs_key_mgr_t *key_mgr = NULL; /*axis2_bool_t is_direct_reference = AXIS2_TRUE;*/ axis2_status_t status = AXIS2_FAILURE; /*Now we must build the Key Info element*/ key_info_node = oxs_token_build_key_info_element(env, sig_node); if(is_direct_reference) { axiom_node_t *str_node = NULL; axiom_node_t *reference_node = NULL; axis2_char_t *cert_id_ref = NULL; str_node = oxs_token_build_security_token_reference_element( env, key_info_node); if(!str_node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_signature] Security Token element creation failed in Direct reference."); return AXIS2_FAILURE; } cert_id_ref = axutil_stracat(env, OXS_LOCAL_REFERENCE_PREFIX,cert_id); reference_node = oxs_token_build_reference_element( env, str_node, cert_id_ref, OXS_VALUE_X509V3); AXIS2_FREE(env->allocator, cert_id_ref); cert_id_ref = NULL; if(!reference_node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_signature] Security Token element creation failed in Direct reference."); return AXIS2_FAILURE; } } else { oxs_x509_cert_t *cert = NULL; key_mgr = rampart_context_get_key_mgr(rampart_context, env); cert = oxs_key_mgr_get_certificate(key_mgr, env); if(!cert) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_signature] Cannot get the certificate"); return AXIS2_FAILURE; } if(axutil_strcmp(eki, RAMPART_STR_EMBEDDED) == 0) { status = rampart_token_build_security_token_reference( env, key_info_node, cert, RTBP_EMBEDDED); } else if(axutil_strcmp(eki, RAMPART_STR_ISSUER_SERIAL) == 0) { status = rampart_token_build_security_token_reference( env, key_info_node, cert, RTBP_X509DATA_ISSUER_SERIAL); } else if(axutil_strcmp(eki, RAMPART_STR_KEY_IDENTIFIER) == 0) { status = rampart_token_build_security_token_reference( env, key_info_node, cert, RTBP_KEY_IDENTIFIER); } else if(axutil_strcmp(eki, RAMPART_STR_THUMB_PRINT) == 0) { status = rampart_token_build_security_token_reference( env, key_info_node, cert, RTBP_THUMBPRINT); } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_signature] Unknown key Identifier type.Token attaching failed"); status = AXIS2_FAILURE; } oxs_x509_cert_free(cert, env); cert = NULL; } /*FREE*/ if(cert_id) { AXIS2_FREE(env->allocator, cert_id); cert_id = NULL; } return AXIS2_FAILURE; } axis2_status_t AXIS2_CALL rampart_sig_pack_for_sym(const axutil_env_t *env, rampart_context_t *rampart_context, oxs_sign_ctx_t *sign_ctx, axis2_msg_ctx_t *msg_ctx) { oxs_key_t *session_key = NULL; rp_property_t *token = NULL; rp_property_type_t token_type; axis2_bool_t use_derived_keys = AXIS2_FALSE; axis2_bool_t server_side = AXIS2_FALSE; server_side = axis2_msg_ctx_get_server_side(msg_ctx, env); token = rampart_context_get_token(rampart_context, env, AXIS2_FALSE, server_side, AXIS2_FALSE); token_type = rp_property_get_type(token, env); /*We are trying to reuse the same session key which is used for encryption if possible*/ session_key = rampart_context_get_signature_session_key(rampart_context, env); if(!session_key) { /*Create a new key and set to the rampart_context. This usually happens when the SignBeforeEncrypt*/ /*Generate the session key. if security context token, get the shared secret and create the session key.*/ if(token_type == RP_PROPERTY_SECURITY_CONTEXT_TOKEN) { oxs_buffer_t *key_buf = NULL; session_key = oxs_key_create(env); key_buf = sct_provider_get_secret(env, token, AXIS2_FALSE, rampart_context, msg_ctx); if(!key_buf) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_signature]Cannot get shared secret of security context token"); oxs_key_free(session_key, env); return AXIS2_FAILURE; } oxs_key_populate(session_key, env, oxs_buffer_get_data(key_buf, env), "for-algo", oxs_buffer_get_size(key_buf, env), OXS_KEY_USAGE_NONE); rampart_context_set_signature_session_key(rampart_context, env, session_key); } else if(token_type == RP_PROPERTY_SAML_TOKEN) { rampart_saml_token_t *saml = NULL; saml = rampart_context_get_saml_token(rampart_context, env, RAMPART_ST_TYPE_SIGNATURE_TOKEN); if (!saml) { saml = rampart_context_get_saml_token(rampart_context, env, RAMPART_ST_TYPE_PROTECTION_TOKEN); } session_key = rampart_saml_token_get_session_key(saml, env); if (!session_key) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_signature]Session key not specified."); return AXIS2_FAILURE; } rampart_context_set_signature_session_key(rampart_context, env, session_key); } else { axis2_char_t *token_id = NULL; token_id = rampart_context_get_signature_token_id(rampart_context, env, msg_ctx); if(token_id) { int key_usage = OXS_KEY_USAGE_SESSION; if(rampart_context_is_different_session_key_for_enc_and_sign(env, rampart_context)) key_usage = OXS_KEY_USAGE_SIGNATURE_SESSION; session_key = rampart_context_get_key(rampart_context, env, token_id); oxs_key_set_usage(session_key, env, key_usage); } else { session_key = oxs_key_create(env); oxs_key_for_algo(session_key, env, rampart_context_get_algorithmsuite(rampart_context, env)); rampart_context_set_signature_session_key(rampart_context, env, session_key); } } } /*If we need to use derrived keys, we must sign using a derived key of the session key*/ use_derived_keys = rampart_context_check_is_derived_keys (env, token); if(use_derived_keys) { oxs_key_t *derived_key = NULL; /*Derive a new key*/ derived_key = oxs_key_create(env); oxs_key_set_length(derived_key, env, rampart_context_get_signature_derived_key_len(rampart_context, env)); oxs_derivation_derive_key(env, session_key, derived_key, AXIS2_TRUE); oxs_sign_ctx_set_secret(sign_ctx, env, derived_key); } else { /*No need to use derived keys, we use the same session key*/ oxs_sign_ctx_set_secret(sign_ctx, env, rampart_context_get_signature_session_key(rampart_context, env)); } oxs_sign_ctx_set_sign_mtd_algo(sign_ctx, env, OXS_HREF_HMAC_SHA1); oxs_sign_ctx_set_c14n_mtd(sign_ctx, env, OXS_HREF_XML_EXC_C14N); oxs_sign_ctx_set_operation(sign_ctx, env, OXS_SIGN_OPERATION_SIGN); return AXIS2_SUCCESS; } axis2_status_t AXIS2_CALL rampart_sig_pack_for_asym(const axutil_env_t *env, rampart_context_t *rampart_context, oxs_sign_ctx_t *sign_ctx) { openssl_pkey_t *prvkey = NULL; oxs_key_mgr_t *key_mgr = NULL; axis2_char_t *asym_sig_algo = NULL; key_mgr = rampart_context_get_key_mgr(rampart_context, env); prvkey = oxs_key_mgr_get_prv_key(key_mgr, env); if (!prvkey) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_signature]Private key cannot be loaded."); return AXIS2_FAILURE; } /*Get the asymmetric signature algorithm*/ asym_sig_algo = rampart_context_get_asym_sig_algo(rampart_context, env); /*These properties will set for creating signed info element*/ oxs_sign_ctx_set_private_key(sign_ctx, env, prvkey); oxs_sign_ctx_set_sign_mtd_algo(sign_ctx, env, asym_sig_algo); oxs_sign_ctx_set_c14n_mtd(sign_ctx, env, OXS_HREF_XML_EXC_C14N); oxs_sign_ctx_set_operation(sign_ctx, env, OXS_SIGN_OPERATION_SIGN); return AXIS2_SUCCESS; } /*Public functions*/ axis2_status_t AXIS2_CALL rampart_sig_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_status_t status1 = AXIS2_SUCCESS; axis2_status_t status2 = AXIS2_SUCCESS; status1 = rampart_context_get_nodes_to_sign( rampart_context, env, soap_envelope, nodes_to_sign); status2 = rampart_context_get_elements_to_sign( rampart_context, env, soap_envelope, nodes_to_sign); if(status1 == AXIS2_SUCCESS || status2 == AXIS2_SUCCESS) { return AXIS2_SUCCESS; } else { return AXIS2_FAILURE; } } AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_sig_sign_message( const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_soap_envelope_t *soap_envelope, axiom_node_t *sec_node, axutil_array_list_t *sign_parts_list) { axutil_array_list_t *nodes_to_sign = NULL; axis2_status_t status = AXIS2_FAILURE; oxs_sign_ctx_t *sign_ctx = NULL; /*axutil_array_list_t *tr_list = NULL;*/ axis2_bool_t server_side = AXIS2_FALSE; rp_property_type_t token_type; rp_property_type_t binding_type; rp_property_t *token = NULL; axis2_char_t *derived_key_version = NULL; axiom_node_t *sig_node = NULL; axis2_char_t *eki = NULL; axis2_bool_t is_direct_reference = AXIS2_TRUE; axis2_bool_t include = AXIS2_FALSE; axiom_node_t *key_reference_node = NULL; axis2_char_t *cert_id = NULL; /*Get nodes to be signed*/ server_side = axis2_msg_ctx_get_server_side(msg_ctx, env); nodes_to_sign = axutil_array_list_create(env, 0); status = rampart_sig_get_nodes_to_sign( rampart_context, env, soap_envelope, nodes_to_sign); if(status != AXIS2_SUCCESS) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_signature] Error occured in Adding signed parts."); axutil_array_list_free(nodes_to_sign, env); nodes_to_sign = NULL; return AXIS2_FAILURE; } if((axutil_array_list_size(nodes_to_sign, env)==0)) { AXIS2_LOG_INFO(env->log, "[rampart][rampart_signature] No parts specified or specified parts can't be found for Signature."); axutil_array_list_free(nodes_to_sign, env); nodes_to_sign = NULL; return AXIS2_SUCCESS; } /*If Timestamp and usernametoken are in the message we should sign them.*/ if(rampart_context_get_require_timestamp(rampart_context, env)) { axiom_node_t *ts_node = NULL; ts_node = oxs_axiom_get_node_by_local_name(env, sec_node, RAMPART_SECURITY_TIMESTAMP); if(!ts_node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_signature] Required timestamp cannot be found."); axutil_array_list_free(nodes_to_sign, env); nodes_to_sign = NULL; return AXIS2_FAILURE; } axutil_array_list_add(nodes_to_sign, env, ts_node); } if(!server_side) { if(rampart_context_get_require_ut(rampart_context, env)) { axiom_node_t *ut_node = NULL; ut_node = oxs_axiom_get_node_by_local_name( env, sec_node, RAMPART_SECURITY_USERNAMETOKEN); if(!ut_node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_signature] Required username token cannot be found."); axutil_array_list_free(nodes_to_sign, env); nodes_to_sign = NULL; return AXIS2_FAILURE; } axutil_array_list_add(nodes_to_sign, env, ut_node); } } else { if(rampart_context_is_sig_confirmation_reqd(rampart_context, env)) { axiom_node_t* cur_node = NULL; cur_node = axiom_node_get_first_child(sec_node, env); while(cur_node) { axis2_char_t *cur_local_name = NULL; cur_local_name = axiom_util_get_localname(cur_node, env); if(0 == axutil_strcmp(cur_local_name, OXS_NODE_SIGNATURE_CONFIRMATION)) { axutil_array_list_add(nodes_to_sign, env, cur_node); } cur_node = axiom_node_get_next_sibling(cur_node, env); } } } /*Now we have to check whether a token is specified.*/ token = rampart_context_get_token(rampart_context, env, AXIS2_FALSE, server_side, AXIS2_FALSE); if(!token) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_signature] Signature Token is not specified"); axutil_array_list_free(nodes_to_sign, env); nodes_to_sign = NULL; return AXIS2_FAILURE; } token_type = rp_property_get_type(token, env); if(!rampart_context_is_token_type_supported(token_type, env)) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_signature] Token type %d not supported", token_type); axutil_array_list_free(nodes_to_sign, env); nodes_to_sign = NULL; return AXIS2_FAILURE; } /* Determine weather we need to include the token */ include = rampart_context_is_token_include(rampart_context, token, token_type, server_side, AXIS2_FALSE, env); derived_key_version = rampart_context_get_derived_key_version(env, token); if (token_type == RP_PROPERTY_X509_TOKEN) { if (include) { cert_id = oxs_util_generate_id(env,(axis2_char_t*)OXS_CERT_ID); if (!rampart_sig_add_x509_token(env, rampart_context, sec_node, cert_id)) { axutil_array_list_free(nodes_to_sign, env); nodes_to_sign = NULL; return AXIS2_FAILURE; } /*This flag will be useful when creating key Info element.*/ is_direct_reference = AXIS2_TRUE; eki = RAMPART_STR_DIRECT_REFERENCE; } else { eki = rampart_context_get_key_identifier(rampart_context, token, env); if(!eki) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_signature] Cannot attach the token."); axutil_array_list_free(nodes_to_sign, env); nodes_to_sign = NULL; return AXIS2_FAILURE; } is_direct_reference = AXIS2_FALSE; } } else if (token_type == RP_PROPERTY_SECURITY_CONTEXT_TOKEN) { if(include) { axiom_node_t *security_context_token_node = NULL; /*include the security context token and set the AttachedReference to key_reference_node*/ security_context_token_node = oxs_axiom_get_node_by_local_name(env, sec_node, OXS_NODE_SECURITY_CONTEXT_TOKEN); if((!security_context_token_node) || (rampart_context_is_different_session_key_for_enc_and_sign(env, rampart_context))) { security_context_token_node = sct_provider_get_token(env, token, AXIS2_FALSE, rampart_context, msg_ctx); if(!security_context_token_node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_signature] Cannot get security context token"); axutil_array_list_free(nodes_to_sign, env); nodes_to_sign = NULL; return AXIS2_FAILURE; } axiom_node_add_child(sec_node, env, security_context_token_node); } key_reference_node = sct_provider_get_attached_reference(env, token, AXIS2_FALSE, rampart_context, msg_ctx); } else { /*get the unattachedReference and set to key_reference_node*/ key_reference_node = sct_provider_get_unattached_reference(env, token, AXIS2_FALSE, rampart_context, msg_ctx); } } else if (token_type == RP_PROPERTY_SAML_TOKEN) { if (include) { axiom_node_t *assertion = NULL; rampart_saml_token_t *saml = NULL; /* Get the saml info from context.First check weather it is a signature token.*/ saml = rampart_context_get_saml_token(rampart_context, env, RAMPART_ST_TYPE_SIGNATURE_TOKEN); if (!saml) { saml = rampart_context_get_saml_token(rampart_context, env, RAMPART_ST_TYPE_PROTECTION_TOKEN); } if (!saml) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,"[rampart][rampart_signature] SAML token not specified."); return AXIS2_FAILURE; } /* If not already added to the header */ if (!rampart_saml_token_is_added_to_header(saml, env)) { assertion = rampart_saml_token_get_assertion(saml, env); if (!assertion) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,"[rampart][rampart_signature] SAML token not specified."); return AXIS2_FAILURE; } axiom_node_add_child(sec_node, env, assertion); /* we are sure that key reference node is not added to the header */ key_reference_node = rampart_saml_token_get_str(saml, env); if (!key_reference_node) { key_reference_node = oxs_saml_token_build_key_identifier_reference_local(env, NULL, assertion); } } } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,"[rampart][rampart_signature] SAML tokens with unattached reference not supported."); return AXIS2_FAILURE; } } sign_ctx = oxs_sign_ctx_create(env); /* Set which parts to be signed*/ oxs_sign_ctx_set_sign_parts(sign_ctx, env, rampart_sig_create_sign_parts(env, rampart_context, nodes_to_sign, server_side, sign_parts_list)); /*Get the binding type. Either symmetric or asymmetric for signature*/ binding_type = rampart_context_get_binding_type(rampart_context,env); if(RP_PROPERTY_ASYMMETRIC_BINDING == binding_type) { /* Pack for asymmetric signature*/ status = rampart_sig_pack_for_asym(env, rampart_context, sign_ctx); } else if(RP_PROPERTY_SYMMETRIC_BINDING == binding_type) { /* Pack for symmetric signature*/ status = rampart_sig_pack_for_sym(env, rampart_context, sign_ctx, msg_ctx); } else { /*We do not support*/ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,"[rampart][rampart_signature] Signature support only symmetric and asymmetric bindings."); return AXIS2_FAILURE; } /* All the things are ready for signing. So lets try signing*/ status = oxs_xml_sig_sign(env, sign_ctx, sec_node, &sig_node); if(status!=AXIS2_SUCCESS) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_signature] Message signing failed."); return AXIS2_FAILURE; } /*build the key info inside signature node*/ if(RP_PROPERTY_ASYMMETRIC_BINDING == binding_type) { rampart_sig_prepare_key_info_for_asym_binding(env, rampart_context, sign_ctx, sig_node , cert_id, eki, is_direct_reference); } else if(RP_PROPERTY_SYMMETRIC_BINDING == binding_type) { oxs_key_t *signed_key = NULL; oxs_key_t *session_key = NULL; signed_key = oxs_sign_ctx_get_secret(sign_ctx, env); session_key = rampart_context_get_signature_session_key(rampart_context, env); if(token_type == RP_PROPERTY_SECURITY_CONTEXT_TOKEN) { if(0 == axutil_strcmp(oxs_key_get_name(session_key, env), oxs_key_get_name(signed_key, env))) { /*Now then... we have used the security context token to sign*/ axiom_node_t* key_info_node = NULL; key_info_node = oxs_token_build_key_info_element(env, sig_node); axiom_node_add_child(key_info_node, env, key_reference_node); } else { axiom_node_t *dk_token = NULL; /*We have used a derived key to sign. Note the NULL we pass for the enc_key_id*/ rampart_sig_prepare_key_info_for_sym_binding(env, rampart_context, sign_ctx, sig_node, signed_key, NULL); /*In addition we need to add a DerivedKeyToken*/ dk_token = oxs_derivation_build_derived_key_token_with_stre(env, signed_key, sec_node, key_reference_node, derived_key_version); /*We need to make DerivedKeyToken to appear before the sginature node*/ oxs_axiom_interchange_nodes(env, dk_token, sig_node); } } else if(token_type == RP_PROPERTY_SAML_TOKEN) { if(0 == axutil_strcmp(oxs_key_get_name(session_key, env), oxs_key_get_name(signed_key, env))) { /*Now then... we have used the security context token to sign*/ axiom_node_t* key_info_node = NULL; key_info_node = oxs_token_build_key_info_element(env, sig_node); axiom_node_add_child(key_info_node, env, key_reference_node); } else { axiom_node_t *dk_token = NULL; /*We have used a derived key to sign. Note the NULL we pass for the enc_key_id*/ rampart_sig_prepare_key_info_for_sym_binding(env, rampart_context, sign_ctx, sig_node, signed_key, NULL); /*In addition we need to add a DerivedKeyToken*/ dk_token = oxs_derivation_build_derived_key_token_with_stre(env, signed_key, sec_node, key_reference_node, derived_key_version); /*We need to make DerivedKeyToken to appear before the sginature node*/ oxs_axiom_interchange_nodes(env, dk_token, sig_node); } } else { if(server_side) { /*have to send EncryptedKeySHA1*/ axis2_char_t *encrypted_key_hash = NULL; axiom_node_t *identifier_token = NULL; encrypted_key_hash = oxs_key_get_key_sha(session_key, env); key_reference_node = oxs_token_build_security_token_reference_element(env, NULL); identifier_token = oxs_token_build_key_identifier_element(env, key_reference_node, OXS_ENCODING_BASE64BINARY, OXS_X509_ENCRYPTED_KEY_SHA1, encrypted_key_hash); if(0 == axutil_strcmp(oxs_key_get_name(session_key, env), oxs_key_get_name(signed_key, env))) { /*Now then... we have used the session key to sign*/ axiom_node_t* key_info_node = NULL; key_info_node = oxs_token_build_key_info_element(env, sig_node); axiom_node_add_child(key_info_node, env, key_reference_node); } else { axiom_node_t *dk_token = NULL; /*We have used a derived key to sign. Note the NULL we pass for the enc_key_id*/ rampart_sig_prepare_key_info_for_sym_binding(env, rampart_context, sign_ctx, sig_node, signed_key, NULL); /*In addition we need to add a DerivedKeyToken*/ dk_token = oxs_derivation_build_derived_key_token_with_stre(env, signed_key, sec_node, key_reference_node, derived_key_version); /*We need to make DerivedKeyToken to appear before the sginature node*/ oxs_axiom_interchange_nodes(env, dk_token, sig_node); } } else { axiom_node_t *encrypted_key_node = NULL; axis2_char_t *enc_key_id = NULL; axis2_bool_t free_enc_key_id = AXIS2_FALSE; /*If there is an EncryptedKey element use the Id. If not, generate an Id and use it*/ encrypted_key_node = oxs_axiom_get_node_by_local_name(env, sec_node, OXS_NODE_ENCRYPTED_KEY); if(!encrypted_key_node) { /*There is no EncryptedKey so generate one*/ status = rampart_enc_encrypt_session_key(env, session_key, msg_ctx, rampart_context, sec_node, NULL ); if(AXIS2_FAILURE == status) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_signature] Cannot encrypt the session key " ); return AXIS2_FAILURE; } encrypted_key_node = oxs_axiom_get_node_by_local_name(env, sec_node, OXS_NODE_ENCRYPTED_KEY); /*Add Id attribute*/ enc_key_id = oxs_util_generate_id(env, (axis2_char_t*)OXS_ENCKEY_ID); free_enc_key_id = AXIS2_TRUE; oxs_axiom_add_attribute(env, encrypted_key_node, NULL, NULL, OXS_ATTR_ID, enc_key_id); /*And we have to make sure that we place this newly generated EncryptedKey node above the Signature node*/ oxs_axiom_interchange_nodes(env, encrypted_key_node, sig_node); } else { /*There is the encrypted key. May be used by the encryption process. So get the Id and use it*/ enc_key_id = oxs_axiom_get_attribute_value_of_node_by_name(env, encrypted_key_node, OXS_ATTR_ID, NULL); } /* Now if the signed key is the session key. We need to Encrypt it. If it's a derived key, we need to Attach a * DerivedKeyToken and encrypt the session key if not done already */ if(0 == axutil_strcmp(oxs_key_get_name(session_key, env), oxs_key_get_name(signed_key, env))) { /*Now then... we have used the session key to sign*/ rampart_sig_prepare_key_info_for_sym_binding(env, rampart_context, sign_ctx, sig_node, signed_key, enc_key_id); } else { axiom_node_t *dk_token = NULL; /*We have used a derived key to sign. Note the NULL we pass for the enc_key_id*/ rampart_sig_prepare_key_info_for_sym_binding(env, rampart_context, sign_ctx, sig_node, signed_key, NULL ); /*In addition we need to add a DerivedKeyToken after the EncryptedKey*/ dk_token = oxs_derivation_build_derived_key_token(env, signed_key, sec_node, enc_key_id ,OXS_WSS_11_VALUE_TYPE_ENCRYPTED_KEY, derived_key_version); /*We need to make DerivedKeyToken to appear before the sginature node*/ oxs_axiom_interchange_nodes(env, dk_token, sig_node); } if (free_enc_key_id) { AXIS2_FREE(env->allocator, enc_key_id); } } } } /*If we have used derived keys, then we need to free the key in sign_ctx*/ if((RP_PROPERTY_SYMMETRIC_BINDING == binding_type) && (rampart_context_check_is_derived_keys (env, token))) { oxs_key_t *sig_ctx_dk = NULL; sig_ctx_dk = oxs_sign_ctx_get_secret(sign_ctx, env); if(sig_ctx_dk && (OXS_KEY_USAGE_DERIVED == oxs_key_get_usage(sig_ctx_dk, env))) { oxs_key_free(sig_ctx_dk, env); sig_ctx_dk = NULL; } } /*Free sig ctx*/ oxs_sign_ctx_free(sign_ctx, env); sign_ctx = NULL; if(status) { return rampart_sig_endorse_sign(env, msg_ctx, rampart_context, soap_envelope, sec_node); } return status; } AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_sig_confirm_signature(const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_node_t *sec_node) { axis2_char_t *id = NULL; axis2_char_t *sig_val = NULL; /*Check whether the request was signed*/ /*If there is no signature. @Value is not present*/ /*If the request has signed, then the @Value = contents of */ /*Generate an Id*/ /*id = oxs_util_generate_id(env,(axis2_char_t*)OXS_SIG_CONF_ID);*/ /*Get SPR*/ sig_val = (axis2_char_t*)rampart_get_security_processed_result(env, msg_ctx, RAMPART_SPR_SIG_VALUE); /*Build wsse11:SignatureConfirmation element */ oxs_token_build_signature_confirmation_element(env, sec_node, id, sig_val); /*id = oxs_util_generate_id(env,(axis2_char_t*)OXS_SIG_CONF_ID);*/ sig_val = (axis2_char_t*)rampart_get_security_processed_result(env, msg_ctx, RAMPART_SPR_ENDORSED_VALUE); if(sig_val) { oxs_token_build_signature_confirmation_element(env, sec_node, id, sig_val); } return AXIS2_SUCCESS; } axis2_status_t AXIS2_CALL rampart_sig_add_x509_token(const axutil_env_t *env, rampart_context_t *rampart_context, axiom_node_t *sec_node, axis2_char_t *cert_id) { oxs_x509_cert_t *cert = NULL; axiom_node_t *bst_node = NULL; axis2_char_t *bst_data = NULL; oxs_key_mgr_t *key_mgr = NULL; key_mgr = rampart_context_get_key_mgr(rampart_context, env); /* * If the requirement is to include the token we should build the binary security * token element here. */ cert = oxs_key_mgr_get_certificate(key_mgr, env); if (!cert) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_signature] Cannot get certificate"); return AXIS2_FAILURE; } bst_data = oxs_x509_cert_get_data(cert, env); if (!bst_data) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_signature] Certificate data cannot be loaded from the cert."); return AXIS2_FAILURE; } bst_node = oxs_token_build_binary_security_token_element(env, sec_node, cert_id , OXS_ENCODING_BASE64BINARY, OXS_VALUE_X509V3, bst_data); if (!bst_node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_signature] Binary Security Token creation failed."); return AXIS2_FAILURE; } oxs_x509_cert_free(cert, env); cert = NULL; return AXIS2_SUCCESS; } axutil_array_list_t * AXIS2_CALL rampart_sig_create_sign_parts(const axutil_env_t *env, rampart_context_t *rampart_context, axutil_array_list_t *nodes_to_sign, axis2_bool_t server_side, axutil_array_list_t *sign_parts) { int i = 0; axis2_char_t *digest_method = NULL; axiom_node_t *node_to_sign = NULL; axis2_char_t *id = NULL; oxs_sign_part_t *sign_part = NULL; oxs_transform_t *tr = NULL; axutil_array_list_t *tr_list = NULL; /*content of sign_parts + sign parts created from nodes_to_sign will be copied to this list. We can put everything to sign_parts, but hard to keep track of who has to delete sign_parts in case if there is an error. Since it is copied, sign_parts can be deleted in rampart_shb_build_message retardless of return status. Modified due to SAML modifications*/ axutil_array_list_t *new_sign_parts = NULL; new_sign_parts = axutil_array_list_create(env, 0); digest_method = rampart_context_get_digest_mtd(rampart_context, env); /*copy the content of sign_parts to new_sign_parts*/ for(i = 0; i < axutil_array_list_size(sign_parts, env); i++) { sign_part = (oxs_sign_part_t*)axutil_array_list_get(sign_parts, env, i); if(sign_part) { axutil_array_list_add(new_sign_parts, env, sign_part); } } /*Now we should create sign part for each node in the arraylist.*/ for (i=0 ; i < axutil_array_list_size(nodes_to_sign, env); i++) { node_to_sign = (axiom_node_t *)axutil_array_list_get(nodes_to_sign, env, i); if (node_to_sign) { sign_part = oxs_sign_part_create(env); tr_list = axutil_array_list_create(env, 0); id = oxs_util_generate_id(env, (axis2_char_t*)OXS_SIG_ID); tr = oxs_transforms_factory_produce_transform(env, OXS_HREF_TRANSFORM_XML_EXC_C14N); axutil_array_list_add(tr_list, env, tr); oxs_sign_part_set_transforms(sign_part, env, tr_list); /*oxs_axiom_add_attribute(env, node_to_sign, OXS_WSU, RAMPART_WSU_XMLNS,OXS_ATTR_ID,id);*/ oxs_axiom_add_attribute(env, node_to_sign, RAMPART_WSU, RAMPART_WSU_XMLNS,OXS_ATTR_ID, id); oxs_sign_part_set_node(sign_part, env, node_to_sign); oxs_sign_part_set_digest_mtd(sign_part, env, digest_method); axutil_array_list_add(new_sign_parts, env, sign_part); AXIS2_FREE(env->allocator, id); id = NULL; } } /*if (rampart_context_is_include_supporting_token(rampart_context, env, server_side, AXIS2_FALSE, RP_PROPERTY_SAML_TOKEN)) { axiom_element_t *stre = NULL; axiom_node_t *strn = NULL, *assertion = NULL; axutil_qname_t *qname = NULL;*/ /* These properties are guaranteed to exsists. If not we cannot reach this point. */ /*rampart_saml_token_t *saml = rampart_context_get_saml_token(rampart_context, env, RP_PROPERTY_SIGNED_SUPPORTING_TOKEN); strn = rampart_saml_token_get_str(saml, env); assertion = rampart_saml_token_get_assertion(saml, env); stre = axiom_node_get_data_element(strn, env); qname = axutil_qname_create(env, OXS_NODE_SECURITY_TOKEN_REFRENCE, OXS_WSSE_XMLNS, NULL); sign_part = oxs_sign_part_create(env); tr_list = axutil_array_list_create(env, 0);*/ /* If ID is not present we add it */ /*id = axiom_element_get_attribute_value(stre, env, qname); if (!id) { id = oxs_util_generate_id(env, (axis2_char_t*)OXS_SIG_ID); oxs_axiom_add_attribute(env, strn, RAMPART_WSU, RAMPART_WSU_XMLNS, OXS_ATTR_ID, id); } oxs_sign_part_set_id(sign_part, env, id); tr = oxs_transforms_factory_produce_transform(env, OXS_HREF_TRANSFORM_STR_TRANSFORM); axutil_array_list_add(tr_list, env, tr); oxs_sign_part_set_transforms(sign_part, env, tr_list); */ /* Sign the assertion, not the securitytokenreference */ /* oxs_sign_part_set_node(sign_part, env, strn); oxs_sign_part_set_digest_mtd(sign_part, env, digest_method); axutil_array_list_add(sign_parts, env, sign_part); AXIS2_FREE(env->allocator, id); id = NULL; }*/ /*Free array list*/ axutil_array_list_free(nodes_to_sign, env); nodes_to_sign = NULL; return new_sign_parts; } static axis2_status_t rampart_sig_endorse_sign( const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_soap_envelope_t *soap_envelope, axiom_node_t *sec_node) { axis2_bool_t server_side = AXIS2_FALSE; axiom_node_t *node_to_sign = NULL; rp_property_t *token = NULL; rp_property_type_t token_type; axis2_bool_t include = AXIS2_FALSE; axis2_bool_t is_direct_reference = AXIS2_TRUE; oxs_sign_ctx_t *sign_ctx = NULL; axutil_array_list_t *nodes_to_sign = NULL; axis2_char_t *cert_id = NULL; axis2_char_t *eki = NULL; oxs_sign_part_t *sign_part = NULL; axutil_array_list_t *tr_list = NULL; oxs_transform_t *tr = NULL; axis2_char_t *digest_method = NULL; axis2_status_t status = AXIS2_FAILURE; axiom_node_t *sig_node = NULL; axiom_namespace_t *sign_ns = NULL; /*endorsing will be only for client*/ server_side = axis2_msg_ctx_get_server_side(msg_ctx, env); if(server_side) return AXIS2_SUCCESS; /*if signature is not found, can't continue*/ node_to_sign = oxs_axiom_get_node_by_local_name(env, sec_node, OXS_NODE_SIGNATURE); if(!node_to_sign) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_signature]Endorsing signature, Sigature Not found"); return AXIS2_FAILURE; } /*Now we have to check whether a token is specified. If not specified then no need to endorse*/ token = rampart_context_get_endorsing_token(rampart_context, env); if(!token) { AXIS2_LOG_INFO(env->log, "[rampart][rampart_signature] Endorsing Token is not specified. No need to endorse"); return AXIS2_SUCCESS; } token_type = rp_property_get_type(token, env); if(!rampart_context_is_token_type_supported(token_type, env)) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_signature] Token type %d not supported", token_type); return AXIS2_FAILURE; } /*this implementaion supports only x509 to endorse signature*/ if(token_type != RP_PROPERTY_X509_TOKEN) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_signature] Token type %d not supported for endorsing", token_type); return AXIS2_FAILURE; } /* Determine weather we need to include the token */ include = rampart_context_is_token_include(rampart_context, token, token_type, server_side, AXIS2_FALSE, env); if (token_type == RP_PROPERTY_X509_TOKEN) { if (include) { cert_id = oxs_util_generate_id(env,(axis2_char_t*)OXS_CERT_ID); if (!rampart_sig_add_x509_token(env, rampart_context, sec_node, cert_id)) { return AXIS2_FAILURE; } /*This flag will be useful when creating key Info element.*/ is_direct_reference = AXIS2_TRUE; eki = RAMPART_STR_DIRECT_REFERENCE; } else { eki = rampart_context_get_key_identifier(rampart_context, token, env); if(!eki) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_signature] Cannot attach the token."); axutil_array_list_free(nodes_to_sign, env); nodes_to_sign = NULL; return AXIS2_FAILURE; } is_direct_reference = AXIS2_FALSE; } } sign_ctx = oxs_sign_ctx_create(env); /* Set signatures to be endorsed*/ nodes_to_sign = axutil_array_list_create(env, 0); digest_method = rampart_context_get_digest_mtd(rampart_context, env); sign_part = oxs_sign_part_create(env); sign_ns = axiom_namespace_create(env, NULL, NULL); /*we have to get the id from "Id" of signature, not from "wsu:Id"*/ oxs_sign_part_set_sign_namespace(sign_part, env, sign_ns); tr_list = axutil_array_list_create(env, 0); tr = oxs_transforms_factory_produce_transform(env, OXS_HREF_TRANSFORM_XML_EXC_C14N); axutil_array_list_add(tr_list, env, tr); oxs_sign_part_set_transforms(sign_part, env, tr_list); oxs_sign_part_set_node(sign_part, env, node_to_sign); oxs_sign_part_set_digest_mtd(sign_part, env, digest_method); axutil_array_list_add(nodes_to_sign, env, sign_part); oxs_sign_ctx_set_sign_parts(sign_ctx, env, nodes_to_sign); /* We support asymmetric endorsing only for this release. So, pack for asymmetric signature*/ status = rampart_sig_pack_for_asym(env, rampart_context, sign_ctx); /* All the things are ready for signing. So lets try signing*/ status = oxs_xml_sig_sign(env, sign_ctx, sec_node, &sig_node); if(status!=AXIS2_SUCCESS) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_signature] Message endorsing failed."); return AXIS2_FAILURE; } /* We support asymmetric endorsing only for this release. * So, build the key info inside signature node for asymmetric signature */ rampart_sig_prepare_key_info_for_asym_binding(env, rampart_context, sign_ctx, sig_node , cert_id, eki, is_direct_reference); /*Free sig ctx*/ oxs_sign_ctx_free(sign_ctx, env); sign_ctx = NULL; return status; } rampartc-src-1.3.0/src/util/rampart_replay_detector.c0000644000076500007650000001665411202453425022620 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include #define RAMPART_RD_LL_PROP "Rampart_RD_LL_Prop" /** * Get replay detector storage from msg_ctx. If it is not yet created, it will create a new one and * store it in conf_context. */ static axutil_linked_list_t * rampart_replay_detector_get_linked_list( const axutil_env_t *env, axis2_msg_ctx_t* msg_ctx) { axis2_conf_ctx_t *conf_ctx = NULL; axis2_ctx_t *ctx = NULL; axutil_property_t *property = NULL; axutil_linked_list_t *ll = NULL; conf_ctx = axis2_msg_ctx_get_conf_ctx(msg_ctx, env); if(!conf_ctx) { AXIS2_LOG_ERROR(env->log,AXIS2_LOG_SI, "[rampart]Conf context is not valid. Could not get replay detector store."); return NULL; } ctx = axis2_conf_ctx_get_base(conf_ctx,env); if(!ctx) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Axis2 context is not valid. Could not get replay detector store."); return NULL; } /* Get the Linked list property */ property = axis2_ctx_get_property(ctx, env, RAMPART_RD_LL_PROP); if(property) { ll = (axutil_linked_list_t*)axutil_property_get_value(property, env); return ll; } else { /* not found. Can create new */ ll = axutil_linked_list_create(env); property = axutil_property_create(env); axutil_property_set_value(property, env, ll); axis2_ctx_set_property(ctx, env, RAMPART_RD_LL_PROP, property); return ll; } } /** * Checks whether given id is available in the linked list */ static axis2_bool_t rampart_replay_detector_linked_list_contains( axutil_linked_list_t *linked_list, const axutil_env_t *env, const axis2_char_t *id) { int count = 0; int i = 0; count = axutil_linked_list_size(linked_list, env); for(i=0; iallocator); /* By using just Timestamps we dont need addressing. But there is a chance that * two messages might generated exactly at the same time */ /* get the timestamp from security processed results */ ts = rampart_get_security_processed_result(env, msg_ctx, RAMPART_SPR_TS_CREATED); addr_msg_id = axis2_msg_ctx_get_wsa_message_id(msg_ctx, env); if(!ts && addr_msg_id) { msg_id = addr_msg_id; } else if(ts && !addr_msg_id) { msg_id = ts; } else if(ts && addr_msg_id) { msg_id = axutil_stracat(env, addr_msg_id, ts); } else { msg_id = NULL; } if(!msg_id) { msg_id = "RAMPART-DEFAULT-TS"; AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[rampart]NO msg_id specified, using default = %s", msg_id); } ll = rampart_replay_detector_get_linked_list(env, msg_ctx); if(!ll) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Cannot get the linked list storage for replay detection from msg_ctx"); axutil_allocator_switch_to_local_pool(env->allocator); return AXIS2_FAILURE; } else { AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[rampart][rrd] Number of records =%d", axutil_linked_list_size(ll, env)); /* Get the number of records to be stored */ if(rampart_context_get_rd_val(rampart_context, env)) { max_rcds = axutil_atoi(rampart_context_get_rd_val(rampart_context, env)); AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[rampart]Using the specified max_rcds %d\n", max_rcds ); } else { AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[rampart]Using the default max_rcds %d\n", max_rcds ); } /* If the table already have the same key it's a replay */ if(rampart_replay_detector_linked_list_contains(ll, env, msg_id)) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,"[rampart]For ID=%s, a replay detected", msg_id); axutil_allocator_switch_to_local_pool(env->allocator); return AXIS2_FAILURE; } /* If the number of records are more than allowed, delete old records */ while(axutil_linked_list_size(ll, env) > max_rcds) { axis2_char_t *tmp_msg_id = NULL; tmp_msg_id = (axis2_char_t*)axutil_linked_list_remove_first(ll, env); AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[rampart]Deleting record %s\n", tmp_msg_id ); AXIS2_FREE(env->allocator, tmp_msg_id); tmp_msg_id = NULL; } /* Add current record */ status = axutil_linked_list_add(ll, env, (void*)axutil_strdup(env,msg_id)); axutil_allocator_switch_to_local_pool(env->allocator); if(AXIS2_SUCCESS == status) { AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[rampart]Adding record %s\n", msg_id ); return AXIS2_SUCCESS; } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Cannot add record %s\n", msg_id); return AXIS2_FAILURE; } } } rampartc-src-1.3.0/src/util/rampart_saml_token.c0000644000076500007650000001227511202453425021562 0ustar shankarshankar/* * 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 */ #include #include #include #include #include #include #include struct rampart_saml_token_t { /* Actual assertion */ axiom_node_t *assertion; /* Confirmation type */ rampart_st_confir_type_t type; /* Confirmation key material*/ oxs_key_t *key; /* Security token reference for this saml token */ axiom_node_t *str; /* Set weather the token is added to the header or not */ axis2_bool_t is_token_added; /* specify weather this is a protection token, supporting token, encryption token or signature token */ /*rp_property_type_t token_type;*/ rampart_st_type_t tok_type; }; AXIS2_EXTERN rampart_saml_token_t *AXIS2_CALL rampart_saml_token_create(const axutil_env_t *env, axiom_node_t *assertion, rampart_st_confir_type_t type) { rampart_saml_token_t *tok = AXIS2_MALLOC(env->allocator, sizeof(rampart_saml_token_t)); if (tok) { tok->assertion = assertion; tok->type = type; tok->is_token_added = AXIS2_FALSE; tok->key = NULL; tok->str = NULL; tok->type = type; tok->tok_type = RAMPART_ST_TYPE_UNSPECIFIED; } return tok; } AXIS2_EXTERN int AXIS2_CALL rampart_saml_token_free(rampart_saml_token_t *tok, const axutil_env_t *env) { if (tok->key) { oxs_key_free(tok->key, env); } AXIS2_FREE(env->allocator, tok); return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL rampart_saml_token_set_assertion(rampart_saml_token_t *tok, const axutil_env_t *env, axiom_node_t *assertion) { tok->assertion = assertion; return AXIS2_SUCCESS; } AXIS2_EXTERN axiom_node_t* AXIS2_CALL rampart_saml_token_get_assertion(rampart_saml_token_t *tok, const axutil_env_t *env) { return tok->assertion; } AXIS2_EXTERN int AXIS2_CALL rampart_saml_token_set_type(rampart_saml_token_t *tok, const axutil_env_t *env, rampart_st_confir_type_t type) { tok->type = type; return AXIS2_SUCCESS; } AXIS2_EXTERN rampart_st_confir_type_t AXIS2_CALL rampart_saml_token_get_type(rampart_saml_token_t *tok, const axutil_env_t *env) { return tok->type; } AXIS2_EXTERN int AXIS2_CALL rampart_saml_token_set_key_value(rampart_saml_token_t *tok, const axutil_env_t *env, oxs_key_t *key) { if (tok->key) { oxs_key_free(tok->key, env); } tok->key = key; return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL rampart_saml_token_set_str(rampart_saml_token_t *tok, const axutil_env_t *env, axiom_node_t *str) { if (str) { tok->str = oxs_axiom_clone_node(env, str); } return AXIS2_SUCCESS; } AXIS2_EXTERN axiom_node_t * AXIS2_CALL rampart_saml_token_get_str(rampart_saml_token_t *tok, const axutil_env_t *env) { if (tok->str) { return oxs_axiom_clone_node(env, tok->str); } return NULL; } AXIS2_EXTERN axis2_bool_t AXIS2_CALL rampart_saml_token_is_added_to_header(rampart_saml_token_t *tok, const axutil_env_t *env) { return tok->is_token_added; } AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_saml_token_set_is_added_to_header(rampart_saml_token_t *tok, const axutil_env_t *env, axis2_bool_t is_token_added) { tok->is_token_added = is_token_added; return AXIS2_SUCCESS; } AXIS2_EXTERN rampart_st_type_t AXIS2_CALL rampart_saml_token_get_token_type(rampart_saml_token_t *tok, const axutil_env_t *env) { return tok->tok_type; } AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_saml_token_set_token_type(rampart_saml_token_t *tok, const axutil_env_t *env, rampart_st_type_t token_type) { tok->tok_type = token_type; return AXIS2_SUCCESS; } AXIS2_EXTERN oxs_key_t * AXIS2_CALL rampart_saml_token_get_session_key(rampart_saml_token_t *tok, const axutil_env_t *env) { return tok->key; } AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_saml_token_set_session_key(rampart_saml_token_t *tok, const axutil_env_t *env, oxs_key_t *key) { if (tok->key) { oxs_key_free(tok->key, env); } tok->key = key; return AXIS2_SUCCESS; } rampartc-src-1.3.0/src/util/Makefile.in0000644000076500007650000005026111202453550017575 0ustar shankarshankar# Makefile.in generated by automake 1.10.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ TESTS = subdir = src/util DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(prglibdir)" prglibLTLIBRARIES_INSTALL = $(INSTALL) LTLIBRARIES = $(prglib_LTLIBRARIES) librampart_la_DEPENDENCIES = ../omxmlsec/libomxmlsec.la \ ../secconv/libsecconv.la ../trust/libtrust.la am_librampart_la_OBJECTS = rampart_crypto_util.lo rampart_util.lo \ rampart_handler_util.lo rampart_username_token.lo \ rampart_timestamp_token.lo rampart_encryption.lo \ rampart_sec_header_processor.lo \ rampart_sec_processed_result.lo rampart_sec_header_builder.lo \ rampart_context.lo rampart_token_processor.lo \ rampart_signature.lo rampart_token_builder.lo \ rampart_replay_detector.lo rampart_engine.lo \ rampart_policy_validator.lo rampart_error.lo rampart_config.lo \ rampart_saml.lo rampart_saml_token.lo rampart_issued.lo \ rampart_issued_token.lo librampart_la_OBJECTS = $(am_librampart_la_OBJECTS) librampart_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(librampart_la_LDFLAGS) $(LDFLAGS) -o $@ DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = $(librampart_la_SOURCES) DIST_SOURCES = $(librampart_la_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ AXIOMINC = @AXIOMINC@ AXIS2INC = @AXIS2INC@ AXIS2LIB = @AXIS2LIB@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NEETHIINC = @NEETHIINC@ OBJEXT = @OBJEXT@ OPENSSLINC = @OPENSSLINC@ OPENSSLLIB = @OPENSSLLIB@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UTILINC = @UTILINC@ VERSION = @VERSION@ VERSION_NO = @VERSION_NO@ XMLSCHEMAINC = @XMLSCHEMAINC@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ prglibdir = $(prefix)/lib prglib_LTLIBRARIES = librampart.la librampart_la_SOURCES = rampart_crypto_util.c \ rampart_util.c rampart_handler_util.c rampart_username_token.c rampart_timestamp_token.c \ rampart_encryption.c rampart_sec_header_processor.c rampart_sec_processed_result.c \ rampart_sec_header_builder.c rampart_context.c rampart_token_processor.c rampart_signature.c \ rampart_token_builder.c rampart_replay_detector.c rampart_engine.c \ rampart_policy_validator.c rampart_error.c rampart_config.c rampart_saml.c rampart_saml_token.c \ rampart_issued.c rampart_issued_token.c librampart_la_LDFLAGS = -version-info $(VERSION_NO) librampart_la_LIBADD = ../omxmlsec/libomxmlsec.la \ ../secconv/libsecconv.la \ ../trust/libtrust.la \ @OPENSSLLIB@ \ @AXIS2LIB@ \ -lcrypto INCLUDES = -I$(top_builddir)/include \ -I ../../include \ @OPENSSLINC@ \ @AXIOMINC@ \ @UTILINC@ \ @NEETHIINC@ \ @AXIS2INC@ all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/util/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu src/util/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh install-prglibLTLIBRARIES: $(prglib_LTLIBRARIES) @$(NORMAL_INSTALL) test -z "$(prglibdir)" || $(MKDIR_P) "$(DESTDIR)$(prglibdir)" @list='$(prglib_LTLIBRARIES)'; for p in $$list; do \ if test -f $$p; then \ f=$(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(prglibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(prglibdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(prglibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(prglibdir)/$$f"; \ else :; fi; \ done uninstall-prglibLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(prglib_LTLIBRARIES)'; for p in $$list; do \ p=$(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(prglibdir)/$$p'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(prglibdir)/$$p"; \ done clean-prglibLTLIBRARIES: -test -z "$(prglib_LTLIBRARIES)" || rm -f $(prglib_LTLIBRARIES) @list='$(prglib_LTLIBRARIES)'; for p in $$list; do \ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ test "$$dir" != "$$p" || dir=.; \ echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done librampart.la: $(librampart_la_OBJECTS) $(librampart_la_DEPENDENCIES) $(librampart_la_LINK) -rpath $(prglibdir) $(librampart_la_OBJECTS) $(librampart_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rampart_config.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rampart_context.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rampart_crypto_util.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rampart_encryption.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rampart_engine.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rampart_error.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rampart_handler_util.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rampart_issued.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rampart_issued_token.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rampart_policy_validator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rampart_replay_detector.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rampart_saml.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rampart_saml_token.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rampart_sec_header_builder.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rampart_sec_header_processor.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rampart_sec_processed_result.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rampart_signature.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rampart_timestamp_token.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rampart_token_builder.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rampart_token_processor.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rampart_username_token.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rampart_util.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags check-TESTS: $(TESTS) @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \ srcdir=$(srcdir); export srcdir; \ list=' $(TESTS) '; \ if test -n "$$list"; then \ for tst in $$list; do \ if test -f ./$$tst; then dir=./; \ elif test -f $$tst; then dir=; \ else dir="$(srcdir)/"; fi; \ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ all=`expr $$all + 1`; \ case " $(XFAIL_TESTS) " in \ *$$ws$$tst$$ws*) \ xpass=`expr $$xpass + 1`; \ failed=`expr $$failed + 1`; \ echo "XPASS: $$tst"; \ ;; \ *) \ echo "PASS: $$tst"; \ ;; \ esac; \ elif test $$? -ne 77; then \ all=`expr $$all + 1`; \ case " $(XFAIL_TESTS) " in \ *$$ws$$tst$$ws*) \ xfail=`expr $$xfail + 1`; \ echo "XFAIL: $$tst"; \ ;; \ *) \ failed=`expr $$failed + 1`; \ echo "FAIL: $$tst"; \ ;; \ esac; \ else \ skip=`expr $$skip + 1`; \ echo "SKIP: $$tst"; \ fi; \ done; \ if test "$$failed" -eq 0; then \ if test "$$xfail" -eq 0; then \ banner="All $$all tests passed"; \ else \ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ fi; \ else \ if test "$$xpass" -eq 0; then \ banner="$$failed of $$all tests failed"; \ else \ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ fi; \ fi; \ dashes="$$banner"; \ skipped=""; \ if test "$$skip" -ne 0; then \ skipped="($$skip tests were not run)"; \ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ dashes="$$skipped"; \ fi; \ report=""; \ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ report="Please report to $(PACKAGE_BUGREPORT)"; \ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ dashes="$$report"; \ fi; \ dashes=`echo "$$dashes" | sed s/./=/g`; \ echo "$$dashes"; \ echo "$$banner"; \ test -z "$$skipped" || echo "$$skipped"; \ test -z "$$report" || echo "$$report"; \ echo "$$dashes"; \ test "$$failed" -eq 0; \ else :; fi distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: for dir in "$(DESTDIR)$(prglibdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-prglibLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-prglibLTLIBRARIES install-dvi: install-dvi-am install-exec-am: install-html: install-html-am install-info: install-info-am install-man: install-pdf: install-pdf-am install-ps: install-ps-am installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-prglibLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ clean-generic clean-libtool clean-prglibLTLIBRARIES ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-prglibLTLIBRARIES install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am \ uninstall-prglibLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: rampartc-src-1.3.0/src/util/rampart_error.c0000644000076500007650000000436111202453425020554 0ustar shankarshankar/* * 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. */ #include #include #include AXIS2_IMPORT extern const axis2_char_t* axutil_error_messages[]; AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_error_init() { /* A namespace that is not supported by Sandesha2 */ axutil_error_messages[RAMPART_ERROR_NONE] = "Unidentified error in Rampart"; axutil_error_messages[RAMPART_ERROR_UNSUPPORTED_SECURITY_TOKEN] = "Unsupported security token"; axutil_error_messages[RAMPART_ERROR_INVALID_SECURITY]= "Invalid security"; axutil_error_messages[RAMPART_ERROR_INVALID_SECURITY_TOKEN]= "Invalid security token"; axutil_error_messages[RAMPART_ERROR_LAST]= "Last error of the stack in rampart"; axutil_error_messages[RAMPART_ERROR_FAILED_AUTHENTICATION]= "Failed authentication"; axutil_error_messages[RAMPART_ERROR_FAILED_CHECK]= "Failed check"; axutil_error_messages[RAMPART_ERROR_SECURITY_TOKEN_UNAVAILABLE]= "Security token unavailable"; axutil_error_messages[RAMPART_ERROR_IN_TIMESTAMP]= "Error in timestamp"; axutil_error_messages[RAMPART_ERROR_IN_USERNAMETOKEN]= "Error in username token"; axutil_error_messages[RAMPART_ERROR_IN_ENCRYPTED_KEY]= "Error in Encrypted Key"; axutil_error_messages[RAMPART_ERROR_IN_ENCRYPTED_DATA]= "Error in Encrypted Data"; axutil_error_messages[RAMPART_ERROR_IN_SIGNATURE]= "Error in Signature"; axutil_error_messages[RAMPART_ERROR_MSG_REPLAYED]= "Message probarbly be replayed"; axutil_error_messages[RAMPART_ERROR_IN_POLICY]= "Error in security policy"; axutil_error_messages[RAMPART_ERROR_LAST]= "Error last"; return AXIS2_SUCCESS; } rampartc-src-1.3.0/src/util/rampart_issued_token.c0000644000076500007650000000444211202453425022117 0ustar shankarshankar/* * 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 */ #include #include struct rampart_issued_token_t { void *token; /* specify weather this type of the token aquired. security context token, saml token etc */ rp_property_type_t token_type; }; AXIS2_EXTERN rampart_issued_token_t * AXIS2_CALL rampart_issued_token_create(const axutil_env_t *env) { rampart_issued_token_t *issued_token = AXIS2_MALLOC(env-> allocator, sizeof(rampart_issued_token_t)); if (issued_token) { issued_token->token = NULL; issued_token->token_type = RP_PROPERTY_UNKNOWN; } return issued_token; } AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_issued_token_free(rampart_issued_token_t *token, const axutil_env_t *env) { if (token->token_type == RP_PROPERTY_SAML_TOKEN) { if (token->token) { rampart_saml_token_free(token->token, env); } } AXIS2_FREE(env->allocator, token->token); return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_issued_token_set_token(rampart_issued_token_t *issued_token, const axutil_env_t *env, void *token, rp_property_type_t token_type) { issued_token->token = token; issued_token->token_type = token_type; return AXIS2_SUCCESS; } AXIS2_EXTERN rp_property_type_t AXIS2_CALL rampart_issued_token_get_token_type(rampart_issued_token_t *token, const axutil_env_t *env) { return token->token_type; } AXIS2_EXTERN void * AXIS2_CALL rampart_issued_token_get_token(rampart_issued_token_t *token, const axutil_env_t *env) { return token->token; } rampartc-src-1.3.0/src/util/rampart_saml.c0000644000076500007650000003420511202453425020357 0ustar shankarshankar/* * Copyright 2003-2004 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. */ #include #include #include #include #include #include #include #include #include #include oxs_sign_part_t * AXIS2_CALL rampart_saml_token_create_sign_part(const axutil_env_t *env, rampart_context_t *rampart_context, rampart_saml_token_t *saml, axiom_node_t *str); AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_saml_token_validate(const axutil_env_t *env, rampart_context_t *rampart_context, axiom_node_t *assertion); AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_saml_supporting_token_build(const axutil_env_t *env, rampart_context_t *rampart_context, axiom_node_t *sec_node, axutil_array_list_t *sign_parts) { axiom_node_t *strn = NULL, *assertion = NULL; oxs_sign_part_t *sign_part = NULL; rampart_saml_token_t *saml = rampart_context_get_saml_token(rampart_context, env, RAMPART_ST_TYPE_SIGNED_SUPPORTING_TOKEN); if (!saml) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rs] SAML token not set in the rampart context. ERROR"); return AXIS2_FAILURE; } assertion = rampart_saml_token_get_assertion(saml, env); if (!assertion) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rs] SAML assertion not set in the rampart_saml_token. ERROR"); return AXIS2_FAILURE; } axiom_node_add_child(sec_node, env, assertion); strn = rampart_saml_token_get_str(saml, env); if (!strn) { strn = oxs_saml_token_build_key_identifier_reference_local(env, NULL, assertion); /*rampart_saml_token_set_str(saml, env, strn);*/ } axiom_node_add_child(sec_node, env, strn); sign_part = rampart_saml_token_create_sign_part(env, rampart_context, saml, strn); if (!sign_part) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rs] Sign part creation failed. ERROR"); return AXIS2_FAILURE; } axutil_array_list_add(sign_parts, env, sign_part); return AXIS2_SUCCESS; } oxs_sign_part_t * AXIS2_CALL rampart_saml_token_create_sign_part(const axutil_env_t *env, rampart_context_t *rampart_context, rampart_saml_token_t *saml, axiom_node_t *strn) { axiom_element_t *stre = NULL; /*axiom_node_t *strn = NULL;*/ axutil_qname_t *qname = NULL; axis2_char_t *id = NULL; oxs_sign_part_t *sign_part = NULL; oxs_transform_t *tr = NULL; axutil_array_list_t *tr_list = NULL; axis2_char_t * digest_method = rampart_context_get_digest_mtd(rampart_context, env); stre = axiom_node_get_data_element(strn, env); qname = axutil_qname_create(env, OXS_NODE_SECURITY_TOKEN_REFRENCE, OXS_WSSE_XMLNS, NULL); sign_part = oxs_sign_part_create(env); tr_list = axutil_array_list_create(env, 0); /* If ID is not present we add it */ id = axiom_element_get_attribute_value(stre, env, qname); if (!id) { id = oxs_util_generate_id(env, (axis2_char_t*)OXS_SIG_ID); oxs_axiom_add_attribute(env, strn, RAMPART_WSU, RAMPART_WSU_XMLNS, OXS_ATTR_ID, id); } oxs_sign_part_set_id(sign_part, env, id); tr = oxs_transforms_factory_produce_transform(env, OXS_HREF_TRANSFORM_STR_TRANSFORM); axutil_array_list_add(tr_list, env, tr); oxs_sign_part_set_transforms(sign_part, env, tr_list); /* Sign the assertion, not the securitytokenreference */ oxs_sign_part_set_node(sign_part, env, strn); oxs_sign_part_set_digest_mtd(sign_part, env, digest_method); axutil_qname_free(qname, env); AXIS2_FREE(env->allocator, id); return sign_part; } AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_saml_token_validate(const axutil_env_t *env, rampart_context_t *rampart_context, axiom_node_t *assertion) { axis2_status_t status = AXIS2_FAILURE; oxs_sign_ctx_t *sign_ctx = NULL; oxs_x509_cert_t *certificate = NULL; axiom_node_t *sig_node = NULL; rp_rampart_config_t *rampart_config = NULL; rp_secpolicy_t *secpolicy; axis2_char_t *cert_file = NULL; secpolicy = rampart_context_get_secpolicy(rampart_context, env); if (!secpolicy) { return AXIS2_SUCCESS; } rampart_config = rp_secpolicy_get_rampart_config(secpolicy, env); if(!rampart_config) { return AXIS2_SUCCESS; } /* Still we don't have a mechanism to get the SAML signing key */ /* cert_file = rp_rampart_config_get_sts_certificate_file(rampart_config, env); */ if (!cert_file) { return AXIS2_SUCCESS; } certificate = oxs_key_mgr_load_x509_cert_from_pem_file(env, cert_file); /* Need to get the certificate of the STS */ if (!certificate) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rs] Certificate cannot be found for the STS"); return AXIS2_FAILURE; } /*Create sign context*/ sign_ctx = oxs_sign_ctx_create(env); /*Set the Certificate*/ oxs_sign_ctx_set_certificate(sign_ctx, env, certificate); sig_node = oxs_axiom_get_node_by_local_name(env, assertion, OXS_NODE_SIGNATURE); if (!sig_node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rs] No Signature node in the SAML Assertion"); return AXIS2_FAILURE; } status = oxs_xml_sig_verify(env, sign_ctx, sig_node, assertion); if (status == AXIS2_SUCCESS) { AXIS2_LOG_INFO(env->log, "SAML Signature Verification Successfull"); } return status; } AXIS2_EXTERN rampart_saml_token_t * AXIS2_CALL rampart_saml_add_token(rampart_context_t *rampart_context, const axutil_env_t *env, axiom_node_t *assertion, axiom_node_t *str, rampart_st_type_t type) { rampart_saml_token_t *saml = NULL; rp_property_t *binding = NULL; rp_secpolicy_t *secpolicy = NULL; if (AXIS2_FAILURE == rampart_saml_token_validate(env, rampart_context, assertion)) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rs] SAML Signature Verification Failed"); return NULL; } if (type == RAMPART_ST_TYPE_SIGNED_SUPPORTING_TOKEN) { saml = rampart_saml_token_create(env, assertion, RAMPART_ST_CONFIR_TYPE_SENDER_VOUCHES); rampart_saml_token_set_token_type(saml, env, RAMPART_ST_TYPE_SIGNED_SUPPORTING_TOKEN); if (str) rampart_saml_token_set_str(saml, env, str); rampart_context_add_saml_token(rampart_context, env, saml); return saml; } secpolicy = rampart_context_get_secpolicy(rampart_context, env); binding = rp_secpolicy_get_binding(secpolicy,env); if(rp_property_get_type(binding,env) == RP_PROPERTY_SYMMETRIC_BINDING) { rp_symmetric_binding_t *sym_binding = NULL; sym_binding = (rp_symmetric_binding_t *)rp_property_get_value(binding,env); if(sym_binding) { /*First check protection tokens have being specified.*/ if(rp_symmetric_binding_get_protection_token(sym_binding,env)) { saml = rampart_context_get_saml_token(rampart_context, env, RAMPART_ST_TYPE_PROTECTION_TOKEN); if (!saml) { saml = rampart_saml_token_create(env, assertion, RAMPART_ST_CONFIR_TYPE_HOLDER_OF_KEY); rampart_saml_token_set_token_type(saml, env, RAMPART_ST_TYPE_PROTECTION_TOKEN); if (str) rampart_saml_token_set_str(saml, env, str); rampart_context_add_saml_token(rampart_context, env, saml); } return saml; } else if (type == RAMPART_ST_TYPE_ENCRYPTION_TOKEN && rp_symmetric_binding_get_encryption_token(sym_binding,env)) { saml = rampart_context_get_saml_token(rampart_context, env, RAMPART_ST_TYPE_ENCRYPTION_TOKEN); if (!saml) { saml = rampart_saml_token_create(env, assertion, RAMPART_ST_CONFIR_TYPE_HOLDER_OF_KEY); rampart_saml_token_set_token_type(saml, env, RAMPART_ST_TYPE_ENCRYPTION_TOKEN); if (str) rampart_saml_token_set_str(saml, env, str); rampart_context_add_saml_token(rampart_context, env, saml); } return saml; } else if (type == RAMPART_ST_TYPE_SIGNATURE_TOKEN && rp_symmetric_binding_get_signature_token(sym_binding,env)) { saml = rampart_context_get_saml_token(rampart_context, env, RAMPART_ST_TYPE_SIGNATURE_TOKEN); if (!saml) { saml = rampart_saml_token_create(env, assertion, RAMPART_ST_CONFIR_TYPE_HOLDER_OF_KEY); rampart_saml_token_set_token_type(saml, env, RAMPART_ST_TYPE_SIGNATURE_TOKEN); if (str) rampart_saml_token_set_str(saml, env, str); rampart_context_add_saml_token(rampart_context, env, saml); } return saml; } } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rs] SAML tokens as protection tokens, supported only in symmetric binding"); return NULL; } } return NULL; } AXIS2_EXTERN char * AXIS2_CALL rampart_saml_token_get_subject_confirmation(const axutil_env_t *env, axiom_node_t *assertion) { axiom_node_t *node = oxs_axiom_get_node_by_local_name(env, assertion, OXS_NODE_SAML_SUBJECT_CONFIRMATION_METHOD); if (node) { return oxs_axiom_get_node_content(env, node); } return NULL; } /** Faults Defined by the specification **/ AXIS2_EXTERN int AXIS2_CALL rampart_saml_token_fault_securitytokenunavailable(axutil_env_t *env, axis2_msg_ctx_t *ctx) { axiom_soap_envelope_t *envelope = NULL; int soap_version = AXIOM_SOAP12; axutil_array_list_t *sub_codes = NULL; sub_codes = axutil_array_list_create(env, 1); axutil_array_list_add(sub_codes, env, axutil_strdup(env, RAMPART_ST_FAULT_SECURITYTOKENUNAVAILABLE_CODE)); envelope = axiom_soap_envelope_create_default_soap_fault_envelope(env, RAMPART_SAML_FAULT_CODE, RAMPART_ST_FAULT_SECURITYTOKENUNAVAILABLE_STR, soap_version, sub_codes, NULL); if (!envelope) { axutil_array_list_free(sub_codes, env); return AXIS2_FAILURE; } axis2_msg_ctx_set_fault_soap_envelope(ctx, env, envelope); axutil_array_list_free(sub_codes, env); return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL rampart_saml_token_fault_unsupportedsecuritytoken(axutil_env_t *env, axis2_msg_ctx_t *ctx) { axiom_soap_envelope_t *envelope = NULL; int soap_version = AXIOM_SOAP12; axutil_array_list_t *sub_codes = NULL; sub_codes = axutil_array_list_create(env, 1); axutil_array_list_add(sub_codes, env, axutil_strdup(env, RAMPART_ST_FAULT_UNSUPPORTEDSECURITYTOKEN_CODE)); envelope = axiom_soap_envelope_create_default_soap_fault_envelope(env, RAMPART_SAML_FAULT_CODE, RAMPART_ST_FAULT_UNSUPPORTEDSECURITYTOKEN_STR, soap_version, sub_codes, NULL); if (!envelope) { axutil_array_list_free(sub_codes, env); return AXIS2_FAILURE; } axis2_msg_ctx_set_fault_soap_envelope(ctx, env, envelope); axutil_array_list_free(sub_codes, env); return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL rampart_saml_token_fault_failedcheck(axutil_env_t *env, axis2_msg_ctx_t *ctx) { axiom_soap_envelope_t *envelope = NULL; int soap_version = AXIOM_SOAP12; axutil_array_list_t *sub_codes = NULL; sub_codes = axutil_array_list_create(env, 1); axutil_array_list_add(sub_codes, env, axutil_strdup(env, RAMPART_ST_FAULT_FAILEDCHECK_CODE)); envelope = axiom_soap_envelope_create_default_soap_fault_envelope(env, RAMPART_SAML_FAULT_CODE, RAMPART_ST_FAULT_FAILEDCHECK_STR, soap_version, sub_codes, NULL); if (!envelope) { axutil_array_list_free(sub_codes, env); return AXIS2_FAILURE; } axis2_msg_ctx_set_fault_soap_envelope(ctx, env, envelope); axutil_array_list_free(sub_codes, env); return AXIS2_SUCCESS; } AXIS2_EXTERN int AXIS2_CALL rampart_saml_token_fault_invalidsecuritytoken(axutil_env_t *env, axis2_msg_ctx_t *ctx) { axiom_soap_envelope_t *envelope = NULL; int soap_version = AXIOM_SOAP12; axutil_array_list_t *sub_codes = NULL; sub_codes = axutil_array_list_create(env, 1); axutil_array_list_add(sub_codes, env, axutil_strdup(env, RAMPART_ST_FAULT_INVALIDSECURITYTOKEN_CODE)); envelope = axiom_soap_envelope_create_default_soap_fault_envelope(env, RAMPART_SAML_FAULT_CODE, RAMPART_ST_FAULT_INVALIDSECURITYTOKEN_STR, soap_version, sub_codes, NULL); if (!envelope) { axutil_array_list_free(sub_codes, env); return AXIS2_FAILURE; } axis2_msg_ctx_set_fault_soap_envelope(ctx, env, envelope); axutil_array_list_free(sub_codes, env); return AXIS2_SUCCESS; } rampartc-src-1.3.0/src/util/rampart_issued.c0000644000076500007650000000550211202453425020715 0ustar shankarshankar/* * 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 */ #include #include AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_issued_supporting_token_build(rampart_context_t *rampart_context, const axutil_env_t *env, axiom_node_t *sec_node, axutil_array_list_t *sign_parts) { rp_property_t *token = NULL; issued_token_callback_func issued_func = NULL; rampart_issued_token_t *issued_token = NULL; void *tok_val = NULL; token = rampart_context_get_supporting_token(rampart_context, env, RP_PROPERTY_ISSUED_TOKEN); if (!token) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][issued] Issued token not specified. ERROR"); return AXIS2_FAILURE; } issued_func = rampart_context_get_issued_token_aquire_function(rampart_context, env); if (!issued_func) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][issued] Issued token call back function not set. ERROR"); return AXIS2_FAILURE; } issued_token = issued_func(env, token, rampart_context); if (!issued_token) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][issued] Issued token call back returned NULL. ERROR"); return AXIS2_FAILURE; } tok_val = rampart_issued_token_get_token(issued_token, env); if (!tok_val) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][issued] Issued token call back returned NULL token value. ERROR"); return AXIS2_FAILURE; } if (rampart_issued_token_get_token_type(issued_token, env) == RP_PROPERTY_SAML_TOKEN) { rampart_context_add_saml_token(rampart_context, env, tok_val); if (rampart_saml_supporting_token_build(env, rampart_context, sec_node, sign_parts)) { return AXIS2_SUCCESS; } } AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][issued] Not supported token type. ERROR"); return AXIS2_FAILURE; } rampartc-src-1.3.0/src/util/rampart_encryption.c0000644000076500007650000015166311202453425021625 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include static axis2_status_t AXIS2_CALL rampart_enc_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_status_t status1 = AXIS2_SUCCESS; axis2_status_t status2 = AXIS2_SUCCESS; status1 = rampart_context_get_nodes_to_encrypt( rampart_context, env, soap_envelope, nodes_to_encrypt); status2 = rampart_context_get_elements_to_encrypt( rampart_context, env, soap_envelope, nodes_to_encrypt); if(status1 == AXIS2_SUCCESS || status2 == AXIS2_SUCCESS) { return AXIS2_SUCCESS; } else { return AXIS2_FAILURE; } } /** * Encrypts the session key using assymmetric encription * @param env pointer to environment struct * @param session_key the session key to be encrypted * @param msg_ctx message context * @param rampart_context the rampart context * @param sec_node The security element * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_enc_encrypt_session_key( const axutil_env_t *env, oxs_key_t *session_key, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_node_t *sec_node, axutil_array_list_t *id_list) { oxs_asym_ctx_t *asym_ctx = NULL; axis2_char_t *enc_asym_algo = NULL; axis2_status_t status = AXIS2_FAILURE; axis2_bool_t server_side = AXIS2_FALSE; rp_property_t *token = NULL; rp_property_type_t token_type; axis2_char_t *eki = NULL; oxs_x509_cert_t *certificate = NULL; server_side = axis2_msg_ctx_get_server_side(msg_ctx, env); token = rampart_context_get_token(rampart_context, env, AXIS2_TRUE, server_side, AXIS2_FALSE); token_type = rp_property_get_type(token, env); if(!rampart_context_is_token_type_supported(token_type, env)) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Specified token type not supported."); return AXIS2_FAILURE; } /* Get the asymmetric key encryption algorithm */ enc_asym_algo = rampart_context_get_enc_asym_algo(rampart_context, env); /* Get encryption key identifier. This identifier depends on whether we include the token in * the message. */ if(rampart_context_is_token_include( rampart_context, token, token_type, server_side, AXIS2_FALSE, env)) { eki = RAMPART_STR_DIRECT_REFERENCE; } else { eki = rampart_context_get_key_identifier(rampart_context, token, env); } if(!eki) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart] No mechanism for attaching the certificate information."); return AXIS2_FAILURE; } /* Receiver certificate can be in the received message. In that case, we should use it. If it is not there, then can get from key manager */ if(rampart_context_get_found_cert_in_shp(rampart_context, env)) { certificate = rampart_context_get_receiver_cert_found_in_shp(rampart_context, env); } else { oxs_key_mgr_t *key_mgr = NULL; key_mgr = rampart_context_get_key_mgr(rampart_context, env); certificate = oxs_key_mgr_get_receiver_certificate(key_mgr, env); } if (!certificate) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart] Receiver certificate cannot be loaded."); return AXIS2_FAILURE; } /* Create asymmetric encryption context and populate algorithm, certificate etc. */ asym_ctx = oxs_asym_ctx_create(env); oxs_asym_ctx_set_algorithm(asym_ctx, env, enc_asym_algo); oxs_asym_ctx_set_certificate(asym_ctx, env, certificate); oxs_asym_ctx_set_operation(asym_ctx, env,OXS_ASYM_CTX_OPERATION_PUB_ENCRYPT); oxs_asym_ctx_set_st_ref_pattern(asym_ctx, env, eki); /* Encrypt the session key */ status = oxs_xml_enc_encrypt_key(env, asym_ctx, sec_node, session_key, id_list); oxs_asym_ctx_free(asym_ctx, env); asym_ctx = NULL; if(status != AXIS2_SUCCESS) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart] Session key encryption failed."); return AXIS2_FAILURE; } return AXIS2_SUCCESS; } /** * Encrypt the message using derived keys. Uses symmetric encryption * @param env pointer to environment struct * @param msg_ctx message context * @param rampart_context rampart context * @param soap_envelope the SOAP envelope * @param sec_node The security element * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_enc_dk_encrypt_message( const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_soap_envelope_t *soap_envelope, axiom_node_t *sec_node) { axis2_status_t status = AXIS2_FAILURE; oxs_key_t *session_key = NULL; axutil_array_list_t *nodes_to_encrypt = NULL; axutil_array_list_t *id_list = NULL; axutil_array_list_t *dk_list = NULL; axis2_char_t *enc_sym_algo = NULL; axis2_char_t *asym_key_id = NULL; axis2_bool_t free_asym_key_id = AXIS2_FALSE; axiom_node_t *encrypted_key_node = NULL; axiom_node_t *key_reference_node = NULL; axiom_node_t *sig_node = NULL; axiom_node_t *data_ref_list_node = NULL; axis2_bool_t use_derived_keys = AXIS2_TRUE; axis2_char_t *derived_key_version = NULL; axis2_bool_t server_side = AXIS2_FALSE; rp_property_t *token = NULL; rp_property_type_t token_type; rampart_saml_token_t *saml = NULL; oxs_key_t *derived_key = NULL; axiom_soap_body_t *body = NULL; axiom_node_t *body_node = NULL; axiom_node_t *body_child_node = NULL; axis2_bool_t signature_protection = AXIS2_FALSE; int i = 0; int j = 0; body = axiom_soap_envelope_get_body(soap_envelope, env); body_node = axiom_soap_body_get_base_node(body, env); body_child_node = axiom_node_get_first_element(body_node, env); /* Get nodes to be encrypted */ nodes_to_encrypt = axutil_array_list_create(env, 0); status = rampart_enc_get_nodes_to_encrypt( rampart_context, env, soap_envelope, nodes_to_encrypt); if(status != AXIS2_SUCCESS) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error occured in Adding Encrypted parts."); axutil_array_list_free(nodes_to_encrypt, env); nodes_to_encrypt = NULL; return AXIS2_FAILURE; } /* If the sp:EncryptSignature is ON && We sign before the encryption, * we need to add signature node too. */ signature_protection = rampart_context_is_encrypt_signature(rampart_context, env); /* if nothing to encrypt, then we can return successfully */ if((axutil_array_list_size(nodes_to_encrypt, env)==0)) { if(!signature_protection) { AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[rampart]No parts specified or specified parts can't be found for encryprion."); axutil_array_list_free(nodes_to_encrypt, env); nodes_to_encrypt = NULL; return AXIS2_SUCCESS; } } if(signature_protection) { if(!(rampart_context_is_encrypt_before_sign(rampart_context, env))) { /*Sign->Encrypt. Easy. just add the signature node to the list*/ sig_node = oxs_axiom_get_node_by_local_name(env, sec_node, OXS_NODE_SIGNATURE); if(!sig_node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_encryption]Encrypting signature, Sigature Not found"); return AXIS2_FAILURE; } axutil_array_list_add(nodes_to_encrypt, env, sig_node); if(rampart_context_is_sig_confirmation_reqd(rampart_context, env)) { axiom_node_t* cur_node = NULL; cur_node = axiom_node_get_first_child(sec_node, env); while(cur_node) { axis2_char_t *cur_local_name = NULL; cur_local_name = axiom_util_get_localname(cur_node, env); if(0 == axutil_strcmp(cur_local_name, OXS_NODE_SIGNATURE_CONFIRMATION)) { axutil_array_list_add(nodes_to_encrypt, env, cur_node); } cur_node = axiom_node_get_next_sibling(cur_node, env); } } } } /*Get the symmetric encryption algorithm*/ enc_sym_algo = rampart_context_get_enc_sym_algo(rampart_context, env); /*If not specified set the default*/ if(!enc_sym_algo || (0 == axutil_strcmp(enc_sym_algo, ""))) { AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[rampart][rampart_encryption] No symmetric algorithm is specified for encryption. Using the default"); enc_sym_algo = OXS_DEFAULT_SYM_ALGO; } /*We need to take the decision whether to use derived keys or not*/ server_side = axis2_msg_ctx_get_server_side(msg_ctx, env); token = rampart_context_get_token(rampart_context, env, AXIS2_TRUE, server_side, AXIS2_FALSE); token_type = rp_property_get_type(token, env); use_derived_keys = rampart_context_check_is_derived_keys (env, token); derived_key_version = rampart_context_get_derived_key_version(env, token); if(token_type == RP_PROPERTY_SAML_TOKEN) { /* We need to obtain the saml here because it is used in many parts of the code*/ saml = rampart_context_get_saml_token(rampart_context, env, RAMPART_ST_TYPE_ENCRYPTION_TOKEN); if (!saml) { saml = rampart_context_get_saml_token(rampart_context, env, RAMPART_ST_TYPE_PROTECTION_TOKEN); } if (!saml) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_encryption] SAML not set."); return AXIS2_FAILURE; } } session_key = rampart_context_get_encryption_session_key(rampart_context, env); if(!session_key) { /*Generate the session key. if security context token, get the shared secret and create the session key.*/ if(token_type == RP_PROPERTY_SECURITY_CONTEXT_TOKEN) { oxs_buffer_t *key_buf = NULL; session_key = oxs_key_create(env); key_buf = sct_provider_get_secret(env, token, AXIS2_TRUE, rampart_context, msg_ctx); if(!key_buf) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_encryption]Cannot get shared secret of security context token"); oxs_key_free(session_key, env); return AXIS2_FAILURE; } oxs_key_populate(session_key, env, oxs_buffer_get_data(key_buf, env), "for-algo", oxs_buffer_get_size(key_buf, env), OXS_KEY_USAGE_NONE); rampart_context_set_encryption_session_key(rampart_context, env, session_key); } else if(token_type == RP_PROPERTY_SAML_TOKEN) { session_key = rampart_saml_token_get_session_key(saml, env); if (!session_key) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_encryption] SAML session key not specified."); return AXIS2_FAILURE; } rampart_context_set_encryption_session_key(rampart_context, env, session_key); } else { axis2_char_t *token_id = NULL; token_id = rampart_context_get_encryption_token_id(rampart_context, env, msg_ctx); if(token_id) { session_key = rampart_context_get_key(rampart_context, env, token_id); oxs_key_set_usage(session_key, env, OXS_KEY_USAGE_SESSION); } else { session_key = oxs_key_create(env); status = oxs_key_for_algo(session_key, env, rampart_context_get_algorithmsuite(rampart_context, env)); rampart_context_set_encryption_session_key(rampart_context, env, session_key); } } } id_list = axutil_array_list_create(env, 5); dk_list = axutil_array_list_create(env, 5); /* For each and every encryption part. 1. Derive a new key if key derivation is enabled. Or else use the same session key 2. Encrypt using that key */ /*Add ReferenceList element to the Security header. Note that we pass the sec_node. Not the EncryptedKey*/ data_ref_list_node = oxs_token_build_reference_list_element(env, sec_node); /*create derived key. */ if(AXIS2_TRUE == use_derived_keys) { /*Derive a new key*/ derived_key = oxs_key_create(env); oxs_key_set_length(derived_key, env, rampart_context_get_encryption_derived_key_len(rampart_context, env)); status = oxs_derivation_derive_key(env, session_key, derived_key, AXIS2_TRUE); /*Add derived key to the list. We will create tokens*/ axutil_array_list_add(dk_list, env, derived_key); key_reference_node = NULL; } /*Repeat until all encryption parts are encrypted*/ for(i=0 ; i < axutil_array_list_size(nodes_to_encrypt, env); i++) { axiom_node_t *node_to_enc = NULL; oxs_ctx_t *enc_ctx = NULL; #if 0 oxs_key_t *derived_key = NULL; #endif axis2_char_t *enc_data_id = NULL; axiom_node_t *parent_of_node_to_enc = NULL; axiom_node_t *enc_data_node = NULL; /*Get the node to be encrypted*/ node_to_enc = (axiom_node_t *)axutil_array_list_get (nodes_to_encrypt, env, i); /*Create the encryption context for OMXMLSEC*/ enc_ctx = oxs_ctx_create(env); if(AXIS2_TRUE == use_derived_keys) { #if 0 /*Derive a new key*/ derived_key = oxs_key_create(env); oxs_key_set_length(derived_key, env, rampart_context_get_encryption_derived_key_len(rampart_context, env)); status = oxs_derivation_derive_key(env, session_key, derived_key, AXIS2_TRUE); #endif /*Set the derived key for the encryption*/ oxs_ctx_set_key(enc_ctx, env, derived_key); /*Set the ref key name to build KeyInfo element. Here the key name is the derived key id*/ oxs_ctx_set_ref_key_name(enc_ctx, env, oxs_key_get_name(derived_key, env)); #if 0 /*Add derived key to the list. We will create tokens*/ axutil_array_list_add(dk_list, env, derived_key); key_reference_node = NULL; #endif } else { /*No key derivation. We use the same session key*/ oxs_ctx_set_key(enc_ctx, env, session_key); oxs_ctx_set_ref_key_name(enc_ctx, env, oxs_key_get_name(session_key, env)); if (token_type == RP_PROPERTY_SECURITY_CONTEXT_TOKEN) { if(rampart_context_is_token_include(rampart_context, token, token_type, server_side, AXIS2_FALSE, env)) { /*set the AttachedReference to key_reference_node*/ key_reference_node = sct_provider_get_attached_reference(env, token, AXIS2_TRUE, rampart_context, msg_ctx); } else { /*get the unattachedReference and set to key_reference_node*/ key_reference_node = sct_provider_get_unattached_reference(env, token, AXIS2_TRUE, rampart_context, msg_ctx); } } else if (token_type == RP_PROPERTY_SAML_TOKEN) { if(rampart_context_is_token_include(rampart_context, token, token_type, server_side, AXIS2_FALSE, env)) { axiom_node_t *assertion = NULL; /*set the AttachedReference to key_reference_node*/ key_reference_node = rampart_saml_token_get_str(saml, env); if (!key_reference_node) { assertion = rampart_saml_token_get_assertion(saml, env); key_reference_node = oxs_saml_token_build_key_identifier_reference_local(env, NULL, assertion); } } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_encryption] SAML session key not specified."); return AXIS2_FAILURE; } } else { if(server_side) { axis2_char_t *encrypted_key_hash = NULL; axiom_node_t *identifier_token = NULL; encrypted_key_hash = oxs_key_get_key_sha(session_key, env); key_reference_node = oxs_token_build_security_token_reference_element(env, NULL); identifier_token = oxs_token_build_key_identifier_element(env, key_reference_node, OXS_ENCODING_BASE64BINARY, OXS_X509_ENCRYPTED_KEY_SHA1, encrypted_key_hash); } else { key_reference_node = NULL; } } } /*Set the algorithm*/ oxs_ctx_set_enc_mtd_algorithm(enc_ctx, env, enc_sym_algo); /*Generate ID for the encrypted data ielement*/ parent_of_node_to_enc = axiom_node_get_parent(node_to_enc, env); enc_data_id = oxs_util_generate_id(env, (axis2_char_t*)OXS_ENCDATA_ID); if(parent_of_node_to_enc || enc_data_id) { axis2_char_t *enc_type = OXS_TYPE_ENC_ELEMENT; if(body_child_node == node_to_enc) { /* we have to use #Content for body encryption */ enc_type = OXS_TYPE_ENC_CONTENT; } enc_data_node = oxs_token_build_encrypted_data_element(env, parent_of_node_to_enc, enc_type, enc_data_id ); status = oxs_xml_enc_encrypt_node(env, enc_ctx, node_to_enc, &enc_data_node, key_reference_node); /*Add Ids to the list. We will create reference list*/ axutil_array_list_add(id_list, env, enc_data_id); if(AXIS2_FAILURE == status) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_encryption] Cannot encrypt the node " ); for(j=0 ; j < axutil_array_list_size(id_list, env); j++) { axis2_char_t *id = NULL; id = (axis2_char_t *)axutil_array_list_get(id_list, env, j); AXIS2_FREE(env->allocator, id); } axutil_array_list_free(id_list, env); id_list = NULL; return AXIS2_FAILURE; } } oxs_ctx_free(enc_ctx, env); enc_ctx = NULL; }/*End of for loop. Iterating nodes_to_encrypt list*/ /*Free node list*/ axutil_array_list_free(nodes_to_encrypt, env); nodes_to_encrypt = NULL; if (token_type == RP_PROPERTY_SECURITY_CONTEXT_TOKEN) { if(rampart_context_is_token_include(rampart_context, token, token_type, server_side, AXIS2_FALSE, env)) { axiom_node_t *security_context_token_node = NULL; /*include the security context token*/ security_context_token_node = oxs_axiom_get_node_by_local_name(env, sec_node, OXS_NODE_SECURITY_CONTEXT_TOKEN); if((!security_context_token_node) || (rampart_context_is_different_session_key_for_enc_and_sign(env, rampart_context))) { security_context_token_node = sct_provider_get_token(env, token, AXIS2_TRUE, rampart_context, msg_ctx); if(!security_context_token_node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_encryption] Cannot get security context token"); for(j=0 ; j < axutil_array_list_size(id_list, env); j++) { axis2_char_t *id = NULL; id = (axis2_char_t *)axutil_array_list_get(id_list, env, j); AXIS2_FREE(env->allocator, id); } axutil_array_list_free(id_list, env); id_list = NULL; return AXIS2_FAILURE; } axiom_node_add_child(sec_node, env, security_context_token_node); } } } else if (token_type == RP_PROPERTY_SAML_TOKEN) { if(rampart_context_is_token_include(rampart_context, token, token_type, server_side, AXIS2_FALSE, env)) { axiom_node_t *assertion = NULL; /*include the security context token*/ if (!rampart_saml_token_is_added_to_header(saml, env)) assertion = rampart_saml_token_get_assertion(saml, env); if(!assertion) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_encryption] Cannot get SAML token"); for(j=0 ; j < axutil_array_list_size(id_list, env); j++) { axis2_char_t *id = NULL; id = (axis2_char_t *)axutil_array_list_get(id_list, env, j); AXIS2_FREE(env->allocator, id); } axutil_array_list_free(id_list, env); id_list = NULL; return AXIS2_FAILURE; } axiom_node_add_child(sec_node, env, assertion); } } else { /* If not done already, Encrypt the session key using the Public Key of the recipient*/ /* Note: Here we do not send the id_list to create a ReferenceList inside the encrypted key. Instead we create the * ReferenceList as a child of Security element */ if(!server_side) { encrypted_key_node = oxs_axiom_get_node_by_local_name(env, sec_node, OXS_NODE_ENCRYPTED_KEY); if(!encrypted_key_node) { /*Create EncryptedKey element*/ status = rampart_enc_encrypt_session_key(env, session_key, msg_ctx, rampart_context, sec_node, NULL ); if(AXIS2_FAILURE == status) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_encryption] Cannot encrypt the session key " ); for(j=0 ; j < axutil_array_list_size(id_list, env); j++) { axis2_char_t *id = NULL; id = (axis2_char_t *)axutil_array_list_get(id_list, env, j); AXIS2_FREE(env->allocator, id); } axutil_array_list_free(id_list, env); id_list = NULL; return AXIS2_FAILURE; } /*Now we have en EncryptedKey Node*/ encrypted_key_node = oxs_axiom_get_node_by_local_name(env, sec_node, OXS_NODE_ENCRYPTED_KEY); /*Get the asym key Id*/ if(!encrypted_key_node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_encryption]Encrypting signature, EncryptedKey Not found"); for(j=0 ; j < axutil_array_list_size(id_list, env); j++) { axis2_char_t *id = NULL; id = (axis2_char_t *)axutil_array_list_get(id_list, env, j); AXIS2_FREE(env->allocator, id); } axutil_array_list_free(id_list, env); id_list = NULL; return AXIS2_FAILURE; } asym_key_id = oxs_util_generate_id(env, (axis2_char_t*)OXS_ENCKEY_ID); free_asym_key_id = AXIS2_TRUE; if(asym_key_id) { oxs_axiom_add_attribute(env, encrypted_key_node, NULL, NULL, OXS_ATTR_ID, asym_key_id); } } else { /*OK Buddy we have already created EncryptedKey node. Get the Id */ asym_key_id = oxs_axiom_get_attribute_value_of_node_by_name(env, encrypted_key_node, OXS_ATTR_ID, NULL); } } } /*Add used elements to the header*/ for(j=0 ; j < axutil_array_list_size(dk_list, env); j++){ oxs_key_t *dk = NULL; dk = (oxs_key_t *)axutil_array_list_get(dk_list, env, j); /*Build the element*/ if(dk) { axiom_node_t *dk_node = NULL; if (token_type == RP_PROPERTY_SECURITY_CONTEXT_TOKEN) { if(rampart_context_is_token_include(rampart_context, token, token_type, server_side, AXIS2_FALSE, env)) { /*set the AttachedReference to key_reference_node*/ key_reference_node = sct_provider_get_attached_reference(env, token, AXIS2_TRUE, rampart_context, msg_ctx); } else { /*get the unattachedReference and set to key_reference_node*/ key_reference_node = sct_provider_get_unattached_reference(env, token, AXIS2_TRUE, rampart_context, msg_ctx); } dk_node = oxs_derivation_build_derived_key_token_with_stre(env, dk, sec_node, key_reference_node, derived_key_version); } else { if(server_side) { axis2_char_t *encrypted_key_hash = NULL; axiom_node_t *identifier_token = NULL; encrypted_key_hash = oxs_key_get_key_sha(session_key, env); key_reference_node = oxs_token_build_security_token_reference_element(env, NULL); identifier_token = oxs_token_build_key_identifier_element(env, key_reference_node, OXS_ENCODING_BASE64BINARY, OXS_X509_ENCRYPTED_KEY_SHA1, encrypted_key_hash); dk_node = oxs_derivation_build_derived_key_token_with_stre(env, dk, sec_node, key_reference_node, derived_key_version); } else { dk_node = oxs_derivation_build_derived_key_token(env, dk, sec_node, asym_key_id, OXS_WSS_11_VALUE_TYPE_ENCRYPTED_KEY, derived_key_version); } } /*derived key should appear before ReferenceList*/ oxs_axiom_interchange_nodes(env, dk_node, data_ref_list_node); } /*We will free DK here*/ oxs_key_free(dk, env); dk = NULL; }/*End of For loop of dk_list iteration*/ /*Free derrived key list*/ axutil_array_list_free(dk_list, env); dk_list = NULL; /*Free derrived Id list*/ for(j=0 ; j < axutil_array_list_size(id_list, env); j++) { axis2_char_t *id = NULL; axis2_char_t* mod_id = NULL; id = (axis2_char_t *)axutil_array_list_get(id_list, env, j); mod_id = axutil_stracat(env, OXS_LOCAL_REFERENCE_PREFIX,id); oxs_token_build_data_reference_element(env, data_ref_list_node, mod_id); /*if x509 is used and no-derived keys, then we have to modify security token reference*/ if((token_type == RP_PROPERTY_X509_TOKEN) && (!use_derived_keys) && (asym_key_id)) { axiom_node_t *enc_data_node = NULL; axiom_node_t *envelope_node = NULL; axiom_node_t *str_node = NULL; axiom_node_t *reference_node = NULL; axis2_char_t *id_ref = NULL; envelope_node = axiom_soap_envelope_get_base_node(soap_envelope, env); enc_data_node = oxs_axiom_get_node_by_id(env, envelope_node, OXS_ATTR_ID, id, NULL); str_node = oxs_axiom_get_node_by_local_name(env, enc_data_node, OXS_NODE_SECURITY_TOKEN_REFRENCE); reference_node = oxs_axiom_get_node_by_local_name(env, str_node, OXS_NODE_REFERENCE); reference_node = axiom_node_detach(reference_node, env); axiom_node_free_tree(reference_node, env); id_ref = axutil_stracat(env, OXS_LOCAL_REFERENCE_PREFIX,asym_key_id); reference_node = oxs_token_build_reference_element(env, str_node, id_ref, OXS_WSS_11_VALUE_TYPE_ENCRYPTED_KEY); AXIS2_FREE(env->allocator, id_ref); } AXIS2_FREE(env->allocator, id); AXIS2_FREE(env->allocator, mod_id); } axutil_array_list_free(id_list, env); id_list = NULL; if(free_asym_key_id && asym_key_id) { AXIS2_FREE(env->allocator, asym_key_id); } return status; } AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_enc_encrypt_message( const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_soap_envelope_t *soap_envelope, axiom_node_t *sec_node) { axutil_array_list_t *nodes_to_encrypt = NULL; axutil_array_list_t *id_list = NULL; axis2_status_t status = AXIS2_FAILURE; axis2_char_t *enc_sym_algo = NULL; oxs_key_t *session_key = NULL; axis2_bool_t server_side = AXIS2_FALSE; rp_property_type_t token_type; rp_property_t *token = NULL; int i = 0; axis2_bool_t signature_protection = AXIS2_FALSE; axiom_node_t *sig_node = NULL; axiom_soap_body_t *body = NULL; axiom_node_t *body_node = NULL; axiom_node_t *body_child_node = NULL; body = axiom_soap_envelope_get_body(soap_envelope, env); body_node = axiom_soap_body_get_base_node(body, env); body_child_node = axiom_node_get_first_element(body_node, env); /*Get nodes to be encrypted*/ server_side = axis2_msg_ctx_get_server_side(msg_ctx, env); nodes_to_encrypt = axutil_array_list_create(env, 0); signature_protection = rampart_context_is_encrypt_signature( rampart_context, env); status = rampart_enc_get_nodes_to_encrypt( rampart_context, env, soap_envelope, nodes_to_encrypt); if(status != AXIS2_SUCCESS) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_signature]Error occured in Adding Encrypted parts.."); axutil_array_list_free(nodes_to_encrypt, env); nodes_to_encrypt = NULL; return AXIS2_FAILURE; } if((axutil_array_list_size(nodes_to_encrypt, env)==0)) { if(!signature_protection) { AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[rampart][rampart_encryption] No parts specified or specified parts can't be found for encryprion."); axutil_array_list_free(nodes_to_encrypt, env); nodes_to_encrypt = NULL; return AXIS2_SUCCESS; } } if(signature_protection) { if(!(rampart_context_is_encrypt_before_sign(rampart_context, env))) { sig_node = oxs_axiom_get_node_by_local_name(env, sec_node, OXS_NODE_SIGNATURE); if(!sig_node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_encryption]Encrypting signature, Sigature Not found"); axutil_array_list_free(nodes_to_encrypt, env); nodes_to_encrypt = NULL; return AXIS2_FAILURE; } axutil_array_list_add(nodes_to_encrypt, env, sig_node); } } /*Now we have to check whether a token is specified.*/ token = rampart_context_get_token(rampart_context, env, AXIS2_TRUE, server_side, AXIS2_FALSE); if(!token) { AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[rampart][rampart_encryption]Encryption Token is not specified"); axutil_array_list_free(nodes_to_encrypt, env); nodes_to_encrypt = NULL; return AXIS2_SUCCESS; } token_type = rp_property_get_type(token, env); if(!rampart_context_is_token_type_supported(token_type, env)) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_encryption]Specified token type not supported."); axutil_array_list_free(nodes_to_encrypt, env); nodes_to_encrypt = NULL; return AXIS2_FAILURE; } if(rampart_context_check_is_derived_keys(env,token)) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_encryption]We still do not support derived keys"); axutil_array_list_free(nodes_to_encrypt, env); nodes_to_encrypt = NULL; return AXIS2_FAILURE; } /*Get the symmetric encryption algorithm*/ enc_sym_algo = rampart_context_get_enc_sym_algo(rampart_context, env); /*If not specified set the default*/ if(!enc_sym_algo || (0 == axutil_strcmp(enc_sym_algo, ""))) { AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[rampart][rampart_encryption]No symmetric algorithm is specified for encryption. Using the default"); enc_sym_algo = OXS_DEFAULT_SYM_ALGO; } session_key = rampart_context_get_encryption_session_key(rampart_context, env); if(!session_key){ /*Generate the session key*/ session_key = oxs_key_create(env); status = oxs_key_for_algo(session_key, env, rampart_context_get_algorithmsuite(rampart_context, env)); rampart_context_set_encryption_session_key(rampart_context, env, session_key); } if(AXIS2_FAILURE == status) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_encryption] Cannot generate the key for the algorithm %s, ", enc_sym_algo); axutil_array_list_free(nodes_to_encrypt, env); nodes_to_encrypt = NULL; return AXIS2_FAILURE; } /*Key will be duplicated inside the function. So no worries freeing it here*/ /*if(rampart_context_is_encrypt_before_sign(rampart_context, env) && signature_protection) { rampart_context_set_session_key(rampart_context, env, session_key); }*/ /*Create a list to store EncDataIds. This will be used in building the ReferenceList*/ id_list = axutil_array_list_create(env, 5); /*Repeat until all encryption parts are encrypted*/ for(i=0 ; i < axutil_array_list_size(nodes_to_encrypt, env); i++) { axiom_node_t *node_to_enc = NULL; axiom_node_t *parent_of_node_to_enc = NULL; axiom_node_t *enc_data_node = NULL; oxs_ctx_t *enc_ctx = NULL; axis2_char_t *id = NULL; axis2_status_t enc_status = AXIS2_FAILURE; /*Get the node to be encrypted*/ node_to_enc = (axiom_node_t *)axutil_array_list_get (nodes_to_encrypt, env, i); if(!node_to_enc) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_encryption] Cannot get the node from the list to encrypt"); axutil_array_list_free(nodes_to_encrypt, env); nodes_to_encrypt = NULL; return AXIS2_FAILURE; } /*Create the encryption context for OMXMLSEC*/ enc_ctx = oxs_ctx_create(env); /*Set the key*/ oxs_ctx_set_key(enc_ctx, env, session_key); /*Set the algorithm*/ oxs_ctx_set_enc_mtd_algorithm(enc_ctx, env, enc_sym_algo); /*Create an empty EncryptedDataNode*/ parent_of_node_to_enc = axiom_node_get_parent(node_to_enc, env); id = oxs_util_generate_id(env, (axis2_char_t*)OXS_ENCDATA_ID); if(parent_of_node_to_enc || id) { axis2_char_t *enc_type = OXS_TYPE_ENC_ELEMENT; if(body_child_node == node_to_enc) { /* we have to use #Content for body encryption */ enc_type = OXS_TYPE_ENC_CONTENT; } enc_data_node = oxs_token_build_encrypted_data_element(env, parent_of_node_to_enc, enc_type, id ); enc_status = oxs_xml_enc_encrypt_node(env, enc_ctx, node_to_enc, &enc_data_node, NULL); axutil_array_list_add(id_list, env, id); if(AXIS2_FAILURE == enc_status) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_encryption] Cannot encrypt the node " ); axutil_array_list_free(nodes_to_encrypt, env); nodes_to_encrypt = NULL; return AXIS2_FAILURE; } } oxs_ctx_free(enc_ctx, env); enc_ctx = NULL; }/*Eof For loop*/ /*free nodes_to_encrypt list*/ axutil_array_list_free(nodes_to_encrypt, env); nodes_to_encrypt = NULL; /*We need to encrypt the session key.*/ status = rampart_enc_encrypt_session_key(env, session_key, msg_ctx, rampart_context, sec_node, id_list); if(AXIS2_FAILURE == status){ return AXIS2_FAILURE; } /*Free id_list*/ if(id_list) { int size = 0; int j = 0; size = axutil_array_list_size(id_list, env); for (j = 0; j < size; j++) { axis2_char_t *id = NULL; id = axutil_array_list_get(id_list, env, j); AXIS2_FREE(env->allocator, id); id = NULL; } axutil_array_list_free(id_list, env); id_list = NULL; } return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_enc_add_key_info( const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_soap_envelope_t *soap_envelope, axiom_node_t *sec_node) { axis2_char_t *key_id = NULL; axiom_node_t *key_info_node = NULL; axiom_node_t *str_node = NULL; axiom_node_t *reference_node = NULL; axiom_node_t *encrypted_data_node = NULL; axiom_node_t *encrypted_key_node = NULL; axiom_node_t *body_node = NULL; axiom_soap_body_t *body = NULL; axiom_element_t *body_ele = NULL; axiom_element_t *encrypted_data_ele = NULL; encrypted_key_node = oxs_axiom_get_node_by_local_name( env, sec_node, OXS_NODE_ENCRYPTED_KEY); if(!encrypted_key_node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_encryption]Encrypting signature, EncryptedKey Not found"); return AXIS2_FAILURE; } key_id = oxs_util_generate_id(env, (axis2_char_t*)OXS_ENCKEY_ID); if(key_id) { oxs_axiom_add_attribute(env, encrypted_key_node, NULL/*OXS_WSU*/, NULL/*RAMPART_WSU_XMLNS*/, OXS_ATTR_ID, key_id); } body = axiom_soap_envelope_get_body(soap_envelope, env); body_node = axiom_soap_body_get_base_node(body, env); body_ele = (axiom_element_t *) axiom_node_get_data_element(body_node, env); encrypted_data_ele = axiom_util_get_first_child_element_with_localname( body_ele, env, body_node, OXS_NODE_ENCRYPTED_DATA, &encrypted_data_node); if(encrypted_data_ele) { key_info_node = oxs_token_build_key_info_element( env, encrypted_data_node); if(key_info_node) { str_node = oxs_token_build_security_token_reference_element( env, key_info_node); if(str_node) { axis2_char_t *key_id_ref = NULL; key_id_ref = axutil_stracat(env, OXS_LOCAL_REFERENCE_PREFIX,key_id); reference_node = oxs_token_build_reference_element( env, str_node, key_id_ref, NULL); AXIS2_FREE(env->allocator, key_id_ref); key_id_ref = NULL; AXIS2_FREE(env->allocator, key_id); key_id = NULL; if(!reference_node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_encryption]Encrypting signature, Reference Node build failed"); return AXIS2_FAILURE; } else { return AXIS2_SUCCESS; } } else{ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_encryption]Encrypting signature, Cannot build the STR node"); AXIS2_FREE(env->allocator, key_id); key_id = NULL; return AXIS2_FAILURE; } } else{ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_encryption] Encrypting signature, cannot build the key indfo node"); AXIS2_FREE(env->allocator, key_id); key_id = NULL; return AXIS2_FAILURE; } } else{ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_encryption]Encrypting signature, Cannot get the encryption data element"); AXIS2_FREE(env->allocator, key_id); key_id = NULL; return AXIS2_FAILURE; } } AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_enc_encrypt_signature( const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, axiom_soap_envelope_t *soap_envelope, axiom_node_t *sec_node) { oxs_key_t *session_key = NULL; oxs_key_t *derived_key = NULL; axiom_node_t *node_to_enc = NULL; axiom_node_t *enc_data_node = NULL; oxs_ctx_t *enc_ctx = NULL; axis2_char_t *id = NULL; axis2_status_t enc_status = AXIS2_FAILURE; axis2_char_t *enc_sym_algo = NULL; axutil_array_list_t *id_list = NULL; axiom_node_t *encrypted_key_node = NULL; axiom_node_t *temp_node = NULL; axiom_node_t *node_to_move = NULL; axis2_bool_t use_derived_keys = AXIS2_TRUE; axis2_char_t *derived_key_version = NULL; axis2_bool_t server_side = AXIS2_FALSE; rp_property_t *token = NULL; rp_property_type_t token_type; axis2_status_t status = AXIS2_FAILURE; axiom_node_t *key_reference_node = NULL; axiom_node_t *key_reference_for_encrypted_data = NULL; rampart_saml_token_t *saml = NULL; session_key = rampart_context_get_encryption_session_key(rampart_context, env); if(!session_key) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_encryption]Encrypting Signature.Session key not found"); return AXIS2_FAILURE; } /*Get node*/ node_to_enc = oxs_axiom_get_node_by_local_name( env, sec_node, OXS_NODE_SIGNATURE); if(!node_to_enc) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_encryption]Encrypting Signature. Signature node not found"); return AXIS2_FAILURE; } server_side = axis2_msg_ctx_get_server_side(msg_ctx, env); token = rampart_context_get_token(rampart_context, env, AXIS2_TRUE, server_side, AXIS2_FALSE); token_type = rp_property_get_type(token, env); if(token_type == RP_PROPERTY_SECURITY_CONTEXT_TOKEN) { if(rampart_context_is_token_include(rampart_context, token, token_type, server_side, AXIS2_FALSE, env)) { /*set the AttachedReference to key_reference_node*/ key_reference_node = sct_provider_get_attached_reference(env, token, AXIS2_TRUE, rampart_context, msg_ctx); } else { /*get the unattachedReference and set to key_reference_node*/ key_reference_node = sct_provider_get_unattached_reference(env, token, AXIS2_TRUE, rampart_context, msg_ctx); } } else if(token_type == RP_PROPERTY_SAML_TOKEN) { saml = rampart_context_get_saml_token(rampart_context, env, RAMPART_ST_TYPE_ENCRYPTION_TOKEN); if (!saml) { saml = rampart_context_get_saml_token(rampart_context, env, RAMPART_ST_TYPE_PROTECTION_TOKEN); } if (!saml) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_encryption] SAML not set."); return AXIS2_FAILURE; } if(rampart_context_is_token_include(rampart_context, token, token_type, server_side, AXIS2_FALSE, env)) { /*set the AttachedReference to key_reference_node*/ key_reference_node = rampart_saml_token_get_str(saml, env); } else { /*get the unattachedReference and set to key_reference_node*/ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_encryption] SAML not set."); return AXIS2_FAILURE; } } else { if((server_side) && (rampart_context_get_binding_type(rampart_context,env) == RP_PROPERTY_SYMMETRIC_BINDING)) { axis2_char_t *encrypted_key_hash = NULL; axiom_node_t *identifier_token = NULL; encrypted_key_hash = oxs_key_get_key_sha(session_key, env); key_reference_node = oxs_token_build_security_token_reference_element(env, NULL); identifier_token = oxs_token_build_key_identifier_element(env, key_reference_node, OXS_ENCODING_BASE64BINARY, OXS_X509_ENCRYPTED_KEY_SHA1, encrypted_key_hash); } else { encrypted_key_node = oxs_axiom_get_node_by_local_name( env, sec_node, OXS_NODE_ENCRYPTED_KEY); if(!encrypted_key_node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_encryption]Encrypting signature, EncryptedKey Not found"); return AXIS2_FAILURE; } } } enc_ctx = oxs_ctx_create(env); /*We need to take the decision whether to use derived keys or not*/ use_derived_keys = rampart_context_check_is_derived_keys (env, token); derived_key_version = rampart_context_get_derived_key_version(env, token); if(AXIS2_TRUE == use_derived_keys) { /*Derive a new key*/ derived_key = oxs_key_create(env); oxs_key_set_length(derived_key, env, rampart_context_get_encryption_derived_key_len(rampart_context, env)); status = oxs_derivation_derive_key(env, session_key, derived_key, AXIS2_TRUE); /*Set the derived key for the encryption*/ oxs_ctx_set_key(enc_ctx, env, derived_key); /*Set the ref key name to build KeyInfo element. Here the key name is the derived key id*/ oxs_ctx_set_ref_key_name(enc_ctx, env, oxs_key_get_name(derived_key, env)); } else { /*No Key derivation is needed we will proceed with the same session key*/ oxs_ctx_set_key(enc_ctx, env, session_key); key_reference_for_encrypted_data = key_reference_node; } enc_sym_algo = rampart_context_get_enc_sym_algo(rampart_context, env); oxs_ctx_set_enc_mtd_algorithm(enc_ctx, env, enc_sym_algo); id = oxs_util_generate_id(env, (axis2_char_t*)OXS_ENCDATA_ID); /*Manage the reference list*/ id_list = axutil_array_list_create(env, 0); axutil_array_list_add(id_list, env, id); if((rampart_context_get_binding_type(rampart_context,env)) == RP_PROPERTY_ASYMMETRIC_BINDING) { /*We append IDs to the EncryptedKey node*/ axiom_node_t *ref_list_node = NULL; ref_list_node = oxs_token_build_data_reference_list( env, encrypted_key_node, id_list); if(!ref_list_node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_encryption]Asym Encrypting signature," "Building reference list failed"); return AXIS2_FAILURE; } } else if((rampart_context_get_binding_type(rampart_context,env)) == RP_PROPERTY_SYMMETRIC_BINDING) { if((AXIS2_TRUE == use_derived_keys) || (token_type == RP_PROPERTY_SECURITY_CONTEXT_TOKEN) || (server_side) || (token_type == RP_PROPERTY_SAML_TOKEN)) { /*We need to create a new reference list and then attach it before the EncryptedData(signature)*/ axiom_node_t *ref_list_node = NULL; ref_list_node = oxs_token_build_data_reference_list(env, sec_node, id_list); if(!ref_list_node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_encryption]Sym Encrypting signature," "Building reference list failed"); return AXIS2_FAILURE; } } else { /*The session key is in use. Add a ref to the EncryptedKey's ref list*/ axiom_node_t *ref_list_node = NULL; ref_list_node = oxs_axiom_get_first_child_node_by_name( env, encrypted_key_node, OXS_NODE_REFERENCE_LIST, OXS_ENC_NS, NULL); if(ref_list_node) { /*There is a ref list node in EncryptedKey. So append*/ axiom_node_t *data_ref_node = NULL; axis2_char_t *mod_id = NULL; /*We need to prepend # to the id in the list to create the reference*/ mod_id = axutil_stracat(env, OXS_LOCAL_REFERENCE_PREFIX,id); data_ref_node = oxs_token_build_data_reference_element(env, ref_list_node, mod_id); } else { /*There is NO ref list node in EncryptedKey. So create a new one */ ref_list_node = oxs_token_build_data_reference_list(env, encrypted_key_node, id_list); } } } else { /*Nothing to do*/ } /*Encrypt the signature*/ enc_data_node = oxs_token_build_encrypted_data_element( env, sec_node, OXS_TYPE_ENC_ELEMENT, id ); enc_status = oxs_xml_enc_encrypt_node( env, enc_ctx, node_to_enc, &enc_data_node, key_reference_for_encrypted_data); /*FREE*/ oxs_ctx_free(enc_ctx, env); enc_ctx = NULL; if(enc_status != AXIS2_SUCCESS) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_encryption] Encrypting node failed"); return AXIS2_FAILURE; } /*If we have used a derrived key, we need to attach it to the Securuty Header*/ if(AXIS2_TRUE == use_derived_keys) { if((token_type == RP_PROPERTY_SECURITY_CONTEXT_TOKEN) || token_type == RP_PROPERTY_SAML_TOKEN || (server_side && (rampart_context_get_binding_type(rampart_context,env) == RP_PROPERTY_SYMMETRIC_BINDING))) { oxs_derivation_build_derived_key_token_with_stre(env, derived_key, sec_node, key_reference_node, derived_key_version); } else { axis2_char_t *asym_key_id = NULL; asym_key_id = oxs_axiom_get_attribute_value_of_node_by_name(env, encrypted_key_node, OXS_ATTR_ID, NULL); oxs_derivation_build_derived_key_token(env, derived_key, sec_node, asym_key_id, OXS_WSS_11_VALUE_TYPE_ENCRYPTED_KEY, derived_key_version); } /*now we can free the derived key*/ oxs_key_free(derived_key, env); derived_key = NULL; } node_to_move = oxs_axiom_get_node_by_local_name( env, sec_node, OXS_NODE_REFERENCE_LIST); if(node_to_move) { temp_node = axiom_node_detach(node_to_move, env); if(temp_node) { enc_status = axiom_node_insert_sibling_after( enc_data_node, env, temp_node); if(enc_status != AXIS2_SUCCESS) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_encryption]Encrypting signature, Node moving failed."); return AXIS2_FAILURE; } } } if(id_list) { /*Need to free data of the list*/ int size = 0; int j = 0; size = axutil_array_list_size(id_list, env); for (j = 0; j < size; j++) { axis2_char_t *id_temp = NULL; id_temp = axutil_array_list_get(id_list, env, j); AXIS2_FREE(env->allocator, id_temp); id_temp = NULL; } axutil_array_list_free(id_list, env); id_list = NULL; } return AXIS2_SUCCESS; } rampartc-src-1.3.0/src/rahas/0000755000076500007650000000000011202454500015641 5ustar shankarshankarrampartc-src-1.3.0/src/rahas/Makefile.am0000644000076500007650000000114011202453426017677 0ustar shankarshankarTESTS = prglibdir=$(prefix)/modules/rahas prglib_LTLIBRARIES = libmod_rahas.la prglib_DATA= ../data/rahas_module.xml libmod_rahas_la_SOURCES = mod_rahas.c rahas_in_handler.c rahas_request_processor.c libmod_rahas_la_LDFLAGS = -version-info $(VERSION_NO) libmod_rahas_la_LIBADD = ../util/librampart.la \ @OPENSSLLIB@ \ @AXIS2LIB@ \ -lcrypto INCLUDES = -I$(top_builddir)/include \ -I ../../include \ @OPENSSLINC@ \ @AXIS2INC@ \ @UTILINC@ \ @NEETHIINC@ \ @AXIOMINC@ install-data-hook: mv $(prefix)/modules/rahas/rahas_module.xml $(prefix)/modules/rahas/module.xml rampartc-src-1.3.0/src/rahas/rahas_request_processor.c0000644000076500007650000005124711202453426022771 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include #include #include #include #include #include #include static security_context_token_t * rahas_create_security_context_token( const axutil_env_t *env, axis2_bool_t server_entropy_needed, trust_entropy_t *requester_entropy, int key_size, oxs_buffer_t **server_secret); static axis2_status_t rahas_store_security_context_token( const axutil_env_t *env, security_context_token_t *sct, axis2_msg_ctx_t *msg_ctx); static axis2_status_t rahas_validate_issue_request_parameters( const axutil_env_t *env, trust_rst_t *rst, trust_rstr_t *rstr, axis2_msg_ctx_t *msg_ctx, int trust_version, axis2_bool_t client_entropy_needed, trust_entropy_t** requester_entropy); static axis2_status_t rahas_populate_rstr_for_issue_request( const axutil_env_t *env, trust_rstr_t *rstr, int trust_version, axis2_bool_t client_entropy_needed, oxs_buffer_t *server_secret, security_context_token_t *sct, int key_size); static axis2_status_t rahas_get_sts_policy_parameters( const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axis2_bool_t *client_entropy_needed, axis2_bool_t *server_entropy_needed); /** * Processes issue request * @param env pointer to environment struct * @param rst request security token struct * @param rstr request security token response struct * @param msg_ctx message context structure * @param trust_version Trust specification. Can be TRUST_VERSION_05_02 or TRUST_VERSION_05_12 * @return AXIS2_SUCCESS if processed successfully. AXIS2_FAILURE otherwise. */ AXIS2_EXTERN axis2_status_t AXIS2_CALL rahas_process_issue_request( const axutil_env_t *env, trust_rst_t *rst, trust_rstr_t *rstr, axis2_msg_ctx_t *msg_ctx, int trust_version) { trust_entropy_t* requester_entropy = NULL; oxs_buffer_t *server_secret = NULL; security_context_token_t *sct = NULL; axis2_bool_t client_entropy_needed = AXIS2_FALSE; axis2_bool_t server_entropy_needed = AXIS2_FALSE; int key_size = TRUST_DEFAULT_KEY_SIZE; /* check whether client entropy and server entropy are needed */ if (rahas_get_sts_policy_parameters( env, msg_ctx, &client_entropy_needed, &server_entropy_needed) != AXIS2_SUCCESS) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rahas]Cannot issue SecurityContextToken because security token service policy " "could not be found."); rampart_create_fault_envelope(env, RAMPART_FAULT_TRUST_REQUEST_FAILED, "The specified request failed", RAMPART_FAULT_TRUST_REQUEST_FAILED, msg_ctx); return AXIS2_FAILURE; } /* validate whether given parameters are ok to proceed */ if(rahas_validate_issue_request_parameters(env, rst, rstr, msg_ctx, trust_version, client_entropy_needed, &requester_entropy) != AXIS2_SUCCESS) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rahas]Cannot issue SecurityContextToken because parameter validation failed."); rampart_create_fault_envelope(env, RAMPART_FAULT_TRUST_REQUEST_INVALID, "The request was invalid or malformed", RAMPART_FAULT_TRUST_REQUEST_INVALID, msg_ctx); return AXIS2_FAILURE; } /* Get the size of the key*/ key_size = trust_rst_get_key_size(rst, env); /* size is not a compulsary field. If missing, we can use default size */ if(key_size <= 0) { key_size = TRUST_DEFAULT_KEY_SIZE; } /* Create sct and populate it */ sct = rahas_create_security_context_token( env, server_entropy_needed, requester_entropy, key_size, &server_secret); if(!sct) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rahas]Cannot issue SecurityContextToken because SCT creation failed."); rampart_create_fault_envelope(env, RAMPART_FAULT_TRUST_REQUEST_FAILED, "The specified request failed", RAMPART_FAULT_TRUST_REQUEST_FAILED, msg_ctx); return AXIS2_FAILURE; } /* set sct version */ if(trust_version == TRUST_VERSION_05_02) { security_context_token_set_is_sc10(sct, env, AXIS2_TRUE); } else if(trust_version == TRUST_VERSION_05_12) { security_context_token_set_is_sc10(sct, env, AXIS2_FALSE); } /* store SCT so that when server needs it, can be extracted. It is the responsibility of the * storing implementer to switch to global pool if needed */ if(rahas_store_security_context_token(env, sct, msg_ctx) != AXIS2_SUCCESS) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rahas]Cannot store SecurityContextToken."); rampart_create_fault_envelope(env, RAMPART_FAULT_TRUST_REQUEST_FAILED, "The specified request failed", RAMPART_FAULT_TRUST_REQUEST_FAILED, msg_ctx); security_context_token_free(sct, env); return AXIS2_FAILURE; } /* Populate rstr structure */ if (rahas_populate_rstr_for_issue_request(env, rstr, trust_version, client_entropy_needed, server_secret, sct, key_size) != AXIS2_SUCCESS) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rahas]Cannot issue SecurityContextToken because response createion failed."); rampart_create_fault_envelope(env, RAMPART_FAULT_TRUST_REQUEST_FAILED, "The specified request failed", RAMPART_FAULT_TRUST_REQUEST_FAILED, msg_ctx); security_context_token_free(sct, env); return AXIS2_FAILURE; } return AXIS2_SUCCESS; } /* this method validates whether rst, rstr, msg_ctx, trust_version are correct. If they are ok, * it will populate requester_entropy. requester_entropy will be output parameter */ static axis2_status_t rahas_validate_issue_request_parameters( const axutil_env_t *env, trust_rst_t *rst, trust_rstr_t *rstr, axis2_msg_ctx_t *msg_ctx, int trust_version, axis2_bool_t client_entropy_needed, trust_entropy_t** requester_entropy) { axis2_char_t *token_type = NULL; axis2_char_t *expected_token_type = NULL; if(!rst) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rahas]Given RequestSecurityToken structure is not valid."); return AXIS2_FAILURE; } if(!rstr) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rahas]Given RequestSecurityTokenResponse structure is not valid."); return AXIS2_FAILURE; } if(!msg_ctx) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rahas]Given Message context structure is not valid."); return AXIS2_FAILURE; } /* check whether trust version is valid, and if so, get trust version specific constants */ if(trust_version == TRUST_VERSION_05_02) { expected_token_type = OXS_VALUE_TYPE_SECURITY_CONTEXT_TOKEN_05_02; } else if(trust_version == TRUST_VERSION_05_12) { expected_token_type = OXS_VALUE_TYPE_SECURITY_CONTEXT_TOKEN_05_12; } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rahas]Given trust specification version is not valid or not supported."); return AXIS2_FAILURE; } /* check whether token type is valid and can be processed */ token_type = trust_rst_get_token_type(rst, env); if(!token_type) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rahas]Token type is not given."); return AXIS2_FAILURE; } if(axutil_strcmp(token_type, expected_token_type)) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rahas]Given token type [%s] is not valid. Expected token type is [%s]", token_type, expected_token_type); return AXIS2_FAILURE; } /* check whether client entropy is needed according to policy and whether it is provided */ *requester_entropy = trust_rst_get_entropy(rst, env); if(client_entropy_needed) { if(!*requester_entropy) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rahas]Client entropy is expected, but not given by client."); return AXIS2_FAILURE; } } else { if(*requester_entropy) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rahas]Client entropy is not expected, but it is given by client."); return AXIS2_FAILURE; } } return AXIS2_SUCCESS; } static security_context_token_t * rahas_create_security_context_token( const axutil_env_t *env, axis2_bool_t server_entropy_needed, trust_entropy_t *requester_entropy, int key_size, oxs_buffer_t **server_secret) { axis2_char_t *global_id = NULL; axis2_char_t *local_id = NULL; security_context_token_t *sct = NULL; /* given key size will be in bits. Convert into bytes */ int key_size_in_byte = key_size / 8; /* we are going to create objects which will be shared among multiple requests. So we have to * create in global pool */ axutil_allocator_switch_to_global_pool(env->allocator); /* create security context token */ sct = security_context_token_create(env); if(!sct) { axutil_allocator_switch_to_local_pool(env->allocator); AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rahas]Cannot create security context token. Insufficient memory."); return NULL; } /* create global id, local id */ global_id = oxs_util_generate_id(env, SECCONV_GLOBAL_ID_PREFIX); local_id = axutil_stracat( env, OXS_LOCAL_REFERENCE_PREFIX, oxs_util_generate_id(env, SECCONV_LOCAL_ID_PREFIX)); /* check whether server secret is needed. If specifically said "server entropy needed" then * no problem. If not said specifically, and if client entropy is not there, then again we have * to provide a shared secret */ if((server_entropy_needed) || (!requester_entropy)) { int server_secret_size = key_size_in_byte; /* if client entropy is given, our entropy should be half of the size given */ if(requester_entropy) { server_secret_size = server_secret_size / 2; } *server_secret = oxs_buffer_create(env); openssl_generate_random_data(env, *server_secret, server_secret_size); } /* populate security context token */ security_context_token_set_global_identifier(sct, env, global_id); security_context_token_set_local_identifier(sct, env, local_id); if(requester_entropy) { axis2_char_t *requester_nonce = NULL; int requester_entropy_len = 0; axis2_char_t *decoded_requester_entropy = NULL; oxs_buffer_t *buffer = NULL; /* client entropy will be in base64 format. should decode it */ requester_nonce = trust_entropy_get_binary_secret(requester_entropy, env); requester_entropy_len = axutil_base64_decode_len(requester_nonce); decoded_requester_entropy = AXIS2_MALLOC(env->allocator, requester_entropy_len); axutil_base64_decode_binary((unsigned char*)decoded_requester_entropy, requester_nonce); buffer = oxs_buffer_create(env); if(server_entropy_needed) { /* we have client entropy and server entropy. so shared secret will be combined key */ axis2_char_t *output = NULL; output = AXIS2_MALLOC(env->allocator, key_size); openssl_p_hash(env, (unsigned char*)decoded_requester_entropy, requester_entropy_len, oxs_buffer_get_data(*server_secret, env), oxs_buffer_get_size(*server_secret, env), (unsigned char*)output, key_size_in_byte); oxs_buffer_populate(buffer, env, (unsigned char*)output, key_size_in_byte); } else { /* we have to use client entropy as the sct shared secret */ oxs_buffer_populate( buffer, env, (unsigned char*)decoded_requester_entropy, requester_entropy_len); } security_context_token_set_secret(sct, env, buffer); } else { /* we have to use server entropy as the sct shared secret */ security_context_token_set_secret(sct, env, *server_secret); } /* we are done with creating the SCT. Now we can switch back to local pool */ axutil_allocator_switch_to_local_pool(env->allocator); return sct; } static axis2_status_t rahas_populate_rstr_for_issue_request( const axutil_env_t *env, trust_rstr_t *rstr, int trust_version, axis2_bool_t client_entropy_needed, oxs_buffer_t *server_secret, security_context_token_t *sct, int key_size) { axis2_char_t *token_type = NULL; axis2_char_t *trust_ns_uri = NULL; axis2_char_t *computed_key_algo = NULL; /* Get trust version specific constants */ if(trust_version == TRUST_VERSION_05_02) { trust_ns_uri = TRUST_WST_XMLNS_05_02; token_type = OXS_VALUE_TYPE_SECURITY_CONTEXT_TOKEN_05_02; computed_key_algo = TRUST_COMPUTED_KEY_PSHA1; security_context_token_set_is_sc10(sct, env, AXIS2_TRUE); } else if(trust_version == TRUST_VERSION_05_12) { trust_ns_uri = TRUST_WST_XMLNS_05_12; token_type = OXS_VALUE_TYPE_SECURITY_CONTEXT_TOKEN_05_12; computed_key_algo = TRUST_COMPUTED_KEY_PSHA1_05_12; security_context_token_set_is_sc10(sct, env, AXIS2_FALSE); } /* We have to populate issue request specific items. * (1) Token Type * (2) Attached reference * (3) Unattached reference * (4) SCT representation * (5) Shared secret. * We are assuming request_type, namespace, etc. are already populated. */ trust_rstr_set_token_type(rstr, env, token_type); trust_rstr_set_requested_unattached_reference(rstr, env, security_context_token_get_unattached_reference(sct, env)); trust_rstr_set_requested_attached_reference(rstr, env, security_context_token_get_attached_reference(sct, env)); trust_rstr_set_requested_security_token(rstr, env, security_context_token_get_token(sct, env)); /* we have to send the key detail to client. * (1) If client entropy and server entropy is used, we have to send server entropy and computed key * (2) If only server entropy is used, then we have to send entropy as proof token * (3) If only client entropy is used, then we don't have to send anything. */ if((client_entropy_needed) && (server_secret)) { /* we have to send computed key and entropy */ axis2_char_t *nonce = NULL; trust_entropy_t* entropy = NULL; axiom_node_t *computed_key = NULL; axiom_element_t *computed_key_element = NULL; axiom_node_t *requested_proof = NULL; /* if client and server entropy are there, then server entropy will be half the key_size. * Also, key size is in bits. So, actual server_entropy size is key_size / 16 */ int size = key_size / 16; trust_rstr_set_key_size(rstr, env, key_size); nonce = AXIS2_MALLOC(env->allocator, sizeof(char) * (axutil_base64_encode_len(size)+1)); axutil_base64_encode(nonce, (char*)oxs_buffer_get_data(server_secret, env), size); entropy = trust_entropy_create(env); trust_entropy_set_binary_secret(entropy, env, nonce); trust_entropy_set_ns_uri(entropy, env, trust_ns_uri); trust_entropy_set_binary_secret_type(entropy, env, NONCE); trust_rstr_set_entropy(rstr, env, entropy); computed_key = trust_util_computed_key_element(env, trust_ns_uri, NULL); computed_key_element = axiom_node_get_data_element(computed_key, env); axiom_element_set_text(computed_key_element, env, computed_key_algo, computed_key); requested_proof = trust_util_create_requsted_proof_token_element( env, trust_ns_uri, NULL, computed_key); trust_rstr_set_requested_proof_token(rstr, env, requested_proof); } else if(!client_entropy_needed) { /* server key only. so have to send proof token */ trust_rstr_set_requested_proof_token( rstr, env, security_context_token_get_requested_proof_token(sct, env)); } return AXIS2_SUCCESS; } /* this method uses store_method defined in rampart context to store sct */ static axis2_status_t rahas_store_security_context_token( const axutil_env_t *env, security_context_token_t *sct, axis2_msg_ctx_t *msg_ctx) { axutil_property_t *property = NULL; axis2_status_t status = AXIS2_SUCCESS; property = axis2_msg_ctx_get_property(msg_ctx, env, RAMPART_CONTEXT); if(property) { rampart_context_t *rampart_context = NULL; rampart_context = (rampart_context_t *)axutil_property_get_value(property, env); if(rampart_context) { store_security_context_token_fn store_fn = NULL; void *user_param = NULL; store_fn = rampart_context_get_store_security_context_token_fn(rampart_context, env); user_param = rampart_context_get_security_context_token_user_params( rampart_context, env); status = store_fn(env, msg_ctx, security_context_token_get_global_identifier(sct, env), security_context_token_get_local_identifier(sct, env), sct, user_param); } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rahas]Cannot find rampart context. Cannot store security context token."); status = AXIS2_FAILURE; } } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rahas]Cannot find rampart context property. Cannot store security context token."); status = AXIS2_FAILURE; } return status; } /* This method checks whether rampart policy has STS related parameters. If so, will extract it */ static axis2_status_t rahas_get_sts_policy_parameters( const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, axis2_bool_t *client_entropy_needed, axis2_bool_t *server_entropy_needed) { axutil_property_t *property = NULL; axis2_status_t status = AXIS2_SUCCESS; property = axis2_msg_ctx_get_property(msg_ctx, env, RAMPART_CONTEXT); if(property) { rampart_context_t *rampart_context = NULL; rampart_context = (rampart_context_t *)axutil_property_get_value(property, env); if(rampart_context) { rp_secpolicy_t *sec_policy = NULL; sec_policy = rampart_context_get_secpolicy(rampart_context, env); if(sec_policy) { rp_trust10_t *trust_policy = NULL; trust_policy = rp_secpolicy_get_trust10(sec_policy, env); if(trust_policy) { *client_entropy_needed = rp_trust10_get_require_client_entropy(trust_policy, env); *server_entropy_needed = rp_trust10_get_require_server_entropy(trust_policy, env); } else { *client_entropy_needed = AXIS2_FALSE; *server_entropy_needed = AXIS2_FALSE; } } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rahas]Cannot find security policy related to security context token service " "from rampart context."); status = AXIS2_FAILURE; } } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rahas]Cannot find rampart context. " "Cannot find policy related to security context token service."); status = AXIS2_FAILURE; } } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rahas]Cannot find rampart context property. " "Cannot find policy related to security context token service."); status = AXIS2_FAILURE; } return status; } rampartc-src-1.3.0/src/rahas/rahas_in_handler.c0000644000076500007650000003474111202453426021305 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include #include #include #include #include #include static axis2_status_t rahas_send_reply( axiom_node_t *body_node, const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx); static void rahas_find_trust_version_specific_details( const axutil_env_t *env, axis2_char_t *action, int *trust_version, int *request_type, axis2_char_t **reply_action); static axiom_node_t * rahas_request_security_token( const axutil_env_t *env, axiom_node_t *node, axis2_msg_ctx_t *msg_ctx, int trust_version, int request_type); axis2_status_t AXIS2_CALL rahas_in_handler_invoke( struct axis2_handler *handler, const axutil_env_t *env, struct axis2_msg_ctx *msg_ctx); AXIS2_EXTERN axis2_handler_t *AXIS2_CALL rahas_in_handler_create( const axutil_env_t *env, axutil_string_t *name) { axis2_handler_t *handler = NULL; AXIS2_ENV_CHECK(env, NULL); handler = axis2_handler_create(env); if (!handler) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rahas] Cannot create in-handler."); return NULL; } /*Set the function to invoke*/ axis2_handler_set_invoke(handler, env, rahas_in_handler_invoke); return handler; } axis2_status_t AXIS2_CALL rahas_in_handler_invoke( struct axis2_handler *handler, const axutil_env_t *env, struct axis2_msg_ctx *msg_ctx) { axutil_string_t *soap_action = NULL; axis2_char_t *action = NULL; axiom_soap_envelope_t *soap_envelope = NULL; axiom_soap_body_t *soap_body = NULL; axiom_node_t *body_node = NULL; axiom_node_t *body_child_node = NULL; axiom_node_t *reply_body_child_node = NULL; int trust_version = TRUST_VERSION_INVALID; int request_type = SECCONV_ACTION_INVALID; axis2_char_t *reply_action = NULL; AXIS2_PARAM_CHECK(env->error, msg_ctx, AXIS2_FAILURE); AXIS2_LOG_INFO(env->log, "[rahas]Rahas in handler is called. "); /* check whether this is server side. Rahas is not needed in client side */ if(!axis2_msg_ctx_get_server_side(msg_ctx, env)) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rahas]Rahas is engaged in client side. It is not supported in client side."); return AXIS2_FAILURE; } /* check whether the action is valid secure conversation related action. First check soap action * and if it is not valid, check for wsa action. To proceed, either should be valid. * If neither of them are valid, then it is not a secure conversation request. It could be * application message. So return success. If action is valid secure conversation action, then * we can find trust version using action */ soap_action = axis2_msg_ctx_get_soap_action(msg_ctx, env); if(soap_action) { action = (axis2_char_t *)axutil_string_get_buffer(soap_action, env); } if(!action) { action = (axis2_char_t *)axis2_msg_ctx_get_wsa_action(msg_ctx, env); } if(action) { rahas_find_trust_version_specific_details( env, action, &trust_version, &request_type, &reply_action); } if(!trust_version) { /* this is not a secure conversation related message. So can return without proceeding */ AXIS2_LOG_INFO(env->log, "[rahas] Message with action %s will not be processed by rahas.", action); return AXIS2_SUCCESS; } soap_envelope = axis2_msg_ctx_get_soap_envelope(msg_ctx, env); if(!soap_envelope) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rahas]SOAP envelope cannot be found."); rampart_create_fault_envelope(env, RAMPART_FAULT_TRUST_REQUEST_INVALID, "The request was invalid or malformed", RAMPART_FAULT_TRUST_REQUEST_INVALID, msg_ctx); return AXIS2_FAILURE; } soap_body = axiom_soap_envelope_get_body(soap_envelope, env); if(!soap_body) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rahas]SOAP body cannot be found."); rampart_create_fault_envelope(env, RAMPART_FAULT_TRUST_REQUEST_INVALID, "The request was invalid or malformed", RAMPART_FAULT_TRUST_REQUEST_INVALID, msg_ctx); return AXIS2_FAILURE; } body_node = axiom_soap_body_get_base_node(soap_body, env); if(!body_node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rahas]SOAP body node cannot be found."); rampart_create_fault_envelope(env, RAMPART_FAULT_TRUST_REQUEST_INVALID, "The request was invalid or malformed", RAMPART_FAULT_TRUST_REQUEST_INVALID, msg_ctx); return AXIS2_FAILURE; } body_child_node = axiom_node_get_first_element(body_node, env); if(!body_child_node) { /* body node is empty. Secure conversation related messages should have a non empty body */ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rahas]SOAP body node is empty."); rampart_create_fault_envelope(env, RAMPART_FAULT_TRUST_REQUEST_INVALID, "The request was invalid or malformed", RAMPART_FAULT_TRUST_REQUEST_INVALID, msg_ctx); return AXIS2_FAILURE; } /* We got a valid secure conversation related message. Check the request and build the reply */ reply_body_child_node = rahas_request_security_token( env, body_child_node, msg_ctx, trust_version, request_type); if(!reply_body_child_node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rahas]Cannot process SecureConversation request."); return AXIS2_FAILURE; } /* set the reply action in to message context */ axis2_msg_ctx_set_wsa_action(msg_ctx, env, reply_action); /* no need to proceed in in_flow. We can send above node as response. When axis2 get the * control from here, it should continue to out_flow and send the reply */ if(rahas_send_reply(reply_body_child_node, env, msg_ctx) != AXIS2_SUCCESS) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rahas]Cannot send reply from rahas."); return AXIS2_FAILURE; } return AXIS2_SUCCESS; } static axis2_status_t rahas_send_reply( axiom_node_t *body_node, const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx) { axis2_msg_ctx_t *out_msg_ctx = NULL; axiom_soap_envelope_t *soap_envelope = NULL; axiom_soap_body_t *soap_body = NULL; axiom_node_t *body_parent_node = NULL; axis2_engine_t *engine = NULL; /* find soap envelop and set the body node */ out_msg_ctx = axis2_core_utils_create_out_msg_ctx(env, msg_ctx); if(!out_msg_ctx) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rahas]Cannot create out message context."); return AXIS2_FAILURE; } soap_envelope = axis2_msg_ctx_get_soap_envelope(out_msg_ctx, env); if(!soap_envelope) { int soap_version = AXIOM_SOAP12; if(axis2_msg_ctx_get_is_soap_11(msg_ctx, env)) { soap_version = AXIOM_SOAP11; } soap_envelope = axiom_soap_envelope_create_default_soap_envelope(env, soap_version); axis2_msg_ctx_set_soap_envelope(out_msg_ctx, env, soap_envelope); } soap_body = axiom_soap_envelope_get_body(soap_envelope, env); if(!soap_body) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rahas]SOAP body cannot be found from out message context."); return AXIS2_FAILURE; } body_parent_node = axiom_soap_body_get_base_node(soap_body, env); if(!body_parent_node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rahas]SOAP body node cannot be found from out message context."); return AXIS2_FAILURE; } axiom_node_add_child(body_parent_node, env, body_node); /* Now we have to tell axis2 not to continue in in_flow, go to out_flow */ axis2_msg_ctx_set_paused(msg_ctx, env, AXIS2_TRUE); axis2_msg_ctx_set_flow(out_msg_ctx, env, AXIS2_OUT_FLOW); /* Send the reply */ engine = axis2_engine_create(env, axis2_msg_ctx_get_conf_ctx(out_msg_ctx, env)); axis2_engine_send(engine, env, out_msg_ctx); if(engine) { axis2_engine_free(engine, env); } return AXIS2_SUCCESS; } static axiom_node_t * rahas_request_security_token( const axutil_env_t *env, axiom_node_t *node, axis2_msg_ctx_t *msg_ctx, int trust_version, int request_type) { axis2_char_t *trust_xml_ns = NULL; trust_rst_t* rst = NULL; trust_rstr_t* rstr = NULL; axiom_node_t* rstr_node = NULL; axis2_status_t status = AXIS2_SUCCESS; /* Get trust version specific values */ if(trust_version == TRUST_VERSION_05_02) { trust_xml_ns = TRUST_WST_XMLNS_05_02; } else { trust_xml_ns = TRUST_WST_XMLNS_05_12; } /* create rst and set trust version. Trust version is needed to populate rst structure with * given node. After setting them, populate rst structure */ rst = trust_rst_create(env); if(!rst) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rahas]Cannot create RequestSecurityToken structure. Insufficient memory."); rampart_create_fault_envelope(env, RAMPART_FAULT_TRUST_REQUEST_FAILED, "The specified request failed", RAMPART_FAULT_TRUST_REQUEST_FAILED, msg_ctx); return NULL; } trust_rst_set_wst_ns_uri(rst, env, trust_xml_ns); status = trust_rst_populate_rst(rst, env, node); if(status != AXIS2_SUCCESS) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rahas]Cannot populate RequestSecurityToken structure. Given message might not " "be a valid security token request. "); rampart_create_fault_envelope(env, RAMPART_FAULT_TRUST_REQUEST_FAILED, "The specified request failed", RAMPART_FAULT_TRUST_REQUEST_FAILED, msg_ctx); trust_rst_free(rst, env); return NULL; } /*create rstr and populate*/ rstr = trust_rstr_create(env); if(!rstr) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rahas]Cannot create RequestSecurityTokenResponse structure."); rampart_create_fault_envelope(env, RAMPART_FAULT_TRUST_REQUEST_FAILED, "The specified request failed", RAMPART_FAULT_TRUST_REQUEST_FAILED, msg_ctx); trust_rst_free(rst, env); return NULL; } /* set request type and namespace */ trust_rstr_set_wst_ns_uri(rstr, env, trust_xml_ns); trust_rstr_set_request_type(rstr, env, trust_rst_get_request_type(rst, env)); /* call request processor */ if(request_type == SECCONV_ACTION_ISSUE) { status = rahas_process_issue_request(env, rst, rstr, msg_ctx, trust_version); } else if(request_type == SECCONV_ACTION_CANCEL) { /* TODO implement cancel method */ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rahas]Inidentified security context token request type. " "Only 'issue' is supported."); rampart_create_fault_envelope(env, RAMPART_FAULT_TRUST_REQUEST_INVALID, "The request was invalid or malformed", RAMPART_FAULT_TRUST_REQUEST_INVALID, msg_ctx); status = AXIS2_FAILURE; } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rahas]Inidentified security context token request type. " "Only 'issue' and 'cancel' are supported."); rampart_create_fault_envelope(env, RAMPART_FAULT_TRUST_REQUEST_INVALID, "The request was invalid or malformed", RAMPART_FAULT_TRUST_REQUEST_INVALID, msg_ctx); status = AXIS2_FAILURE; } if(status != AXIS2_SUCCESS) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rahas]Cannot Process security context token request."); trust_rst_free(rst, env); trust_rstr_free(rstr, env); return NULL; } /* build the rstr node */ rstr_node = trust_rstr_build_rstr(rstr, env, NULL); if(!rstr_node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rahas]Creation of RequestSecurityTokenResponse node failed."); rampart_create_fault_envelope(env, RAMPART_FAULT_TRUST_REQUEST_FAILED, "The specified request failed", RAMPART_FAULT_TRUST_REQUEST_FAILED, msg_ctx); } /* clear stuff */ trust_rstr_free(rstr, env); trust_rst_free(rst, env); return rstr_node; } /* This method will find trust_version, request_type and reply_action based on given action. * trust_version, request_type, reply_action are output parameters. action is input parameter */ static void rahas_find_trust_version_specific_details( const axutil_env_t *env, axis2_char_t *action, int *trust_version, int *request_type, axis2_char_t **reply_action) { if(!axutil_strcmp(action, SECCONV_200502_REQUEST_ISSUE_ACTION)) { *trust_version = TRUST_VERSION_05_02; *request_type = SECCONV_ACTION_ISSUE; *reply_action = SECCONV_200502_REPLY_ISSUE_ACTION; } else if(!axutil_strcmp(action, SECCONV_200502_REQUEST_CANCEL_ACTION)) { *trust_version = TRUST_VERSION_05_02; *request_type = SECCONV_ACTION_CANCEL; *reply_action = SECCONV_200502_REPLY_CANCEL_ACTION; } else if(!axutil_strcmp(action, SECCONV_200512_REQUEST_ISSUE_ACTION)) { *trust_version = TRUST_VERSION_05_12; *request_type = SECCONV_ACTION_ISSUE; *reply_action = SECCONV_200512_REPLY_ISSUE_ACTION; } else if(!axutil_strcmp(action, SECCONV_200512_REQUEST_CANCEL_ACTION)) { *trust_version = TRUST_VERSION_05_12; *request_type = SECCONV_ACTION_CANCEL; *reply_action = SECCONV_200512_REPLY_CANCEL_ACTION; } /* TODO: we still don't support amend and renew. Implement them */ } rampartc-src-1.3.0/src/rahas/Makefile.in0000644000076500007650000004502711202453550017722 0ustar shankarshankar# Makefile.in generated by automake 1.10.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ TESTS = subdir = src/rahas DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(prglibdir)" "$(DESTDIR)$(prglibdir)" prglibLTLIBRARIES_INSTALL = $(INSTALL) LTLIBRARIES = $(prglib_LTLIBRARIES) libmod_rahas_la_DEPENDENCIES = ../util/librampart.la am_libmod_rahas_la_OBJECTS = mod_rahas.lo rahas_in_handler.lo \ rahas_request_processor.lo libmod_rahas_la_OBJECTS = $(am_libmod_rahas_la_OBJECTS) libmod_rahas_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(libmod_rahas_la_LDFLAGS) $(LDFLAGS) -o $@ DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = $(libmod_rahas_la_SOURCES) DIST_SOURCES = $(libmod_rahas_la_SOURCES) prglibDATA_INSTALL = $(INSTALL_DATA) DATA = $(prglib_DATA) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ AXIOMINC = @AXIOMINC@ AXIS2INC = @AXIS2INC@ AXIS2LIB = @AXIS2LIB@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NEETHIINC = @NEETHIINC@ OBJEXT = @OBJEXT@ OPENSSLINC = @OPENSSLINC@ OPENSSLLIB = @OPENSSLLIB@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UTILINC = @UTILINC@ VERSION = @VERSION@ VERSION_NO = @VERSION_NO@ XMLSCHEMAINC = @XMLSCHEMAINC@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ prglibdir = $(prefix)/modules/rahas prglib_LTLIBRARIES = libmod_rahas.la prglib_DATA = ../data/rahas_module.xml libmod_rahas_la_SOURCES = mod_rahas.c rahas_in_handler.c rahas_request_processor.c libmod_rahas_la_LDFLAGS = -version-info $(VERSION_NO) libmod_rahas_la_LIBADD = ../util/librampart.la \ @OPENSSLLIB@ \ @AXIS2LIB@ \ -lcrypto INCLUDES = -I$(top_builddir)/include \ -I ../../include \ @OPENSSLINC@ \ @AXIS2INC@ \ @UTILINC@ \ @NEETHIINC@ \ @AXIOMINC@ all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/rahas/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu src/rahas/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh install-prglibLTLIBRARIES: $(prglib_LTLIBRARIES) @$(NORMAL_INSTALL) test -z "$(prglibdir)" || $(MKDIR_P) "$(DESTDIR)$(prglibdir)" @list='$(prglib_LTLIBRARIES)'; for p in $$list; do \ if test -f $$p; then \ f=$(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(prglibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(prglibdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(prglibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(prglibdir)/$$f"; \ else :; fi; \ done uninstall-prglibLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(prglib_LTLIBRARIES)'; for p in $$list; do \ p=$(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(prglibdir)/$$p'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(prglibdir)/$$p"; \ done clean-prglibLTLIBRARIES: -test -z "$(prglib_LTLIBRARIES)" || rm -f $(prglib_LTLIBRARIES) @list='$(prglib_LTLIBRARIES)'; for p in $$list; do \ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ test "$$dir" != "$$p" || dir=.; \ echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done libmod_rahas.la: $(libmod_rahas_la_OBJECTS) $(libmod_rahas_la_DEPENDENCIES) $(libmod_rahas_la_LINK) -rpath $(prglibdir) $(libmod_rahas_la_OBJECTS) $(libmod_rahas_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mod_rahas.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rahas_in_handler.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rahas_request_processor.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-prglibDATA: $(prglib_DATA) @$(NORMAL_INSTALL) test -z "$(prglibdir)" || $(MKDIR_P) "$(DESTDIR)$(prglibdir)" @list='$(prglib_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(prglibDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(prglibdir)/$$f'"; \ $(prglibDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(prglibdir)/$$f"; \ done uninstall-prglibDATA: @$(NORMAL_UNINSTALL) @list='$(prglib_DATA)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(prglibdir)/$$f'"; \ rm -f "$(DESTDIR)$(prglibdir)/$$f"; \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags check-TESTS: $(TESTS) @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \ srcdir=$(srcdir); export srcdir; \ list=' $(TESTS) '; \ if test -n "$$list"; then \ for tst in $$list; do \ if test -f ./$$tst; then dir=./; \ elif test -f $$tst; then dir=; \ else dir="$(srcdir)/"; fi; \ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ all=`expr $$all + 1`; \ case " $(XFAIL_TESTS) " in \ *$$ws$$tst$$ws*) \ xpass=`expr $$xpass + 1`; \ failed=`expr $$failed + 1`; \ echo "XPASS: $$tst"; \ ;; \ *) \ echo "PASS: $$tst"; \ ;; \ esac; \ elif test $$? -ne 77; then \ all=`expr $$all + 1`; \ case " $(XFAIL_TESTS) " in \ *$$ws$$tst$$ws*) \ xfail=`expr $$xfail + 1`; \ echo "XFAIL: $$tst"; \ ;; \ *) \ failed=`expr $$failed + 1`; \ echo "FAIL: $$tst"; \ ;; \ esac; \ else \ skip=`expr $$skip + 1`; \ echo "SKIP: $$tst"; \ fi; \ done; \ if test "$$failed" -eq 0; then \ if test "$$xfail" -eq 0; then \ banner="All $$all tests passed"; \ else \ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ fi; \ else \ if test "$$xpass" -eq 0; then \ banner="$$failed of $$all tests failed"; \ else \ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ fi; \ fi; \ dashes="$$banner"; \ skipped=""; \ if test "$$skip" -ne 0; then \ skipped="($$skip tests were not run)"; \ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ dashes="$$skipped"; \ fi; \ report=""; \ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ report="Please report to $(PACKAGE_BUGREPORT)"; \ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ dashes="$$report"; \ fi; \ dashes=`echo "$$dashes" | sed s/./=/g`; \ echo "$$dashes"; \ echo "$$banner"; \ test -z "$$skipped" || echo "$$skipped"; \ test -z "$$report" || echo "$$report"; \ echo "$$dashes"; \ test "$$failed" -eq 0; \ else :; fi distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am all-am: Makefile $(LTLIBRARIES) $(DATA) installdirs: for dir in "$(DESTDIR)$(prglibdir)" "$(DESTDIR)$(prglibdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-prglibLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-prglibDATA install-prglibLTLIBRARIES @$(NORMAL_INSTALL) $(MAKE) $(AM_MAKEFLAGS) install-data-hook install-dvi: install-dvi-am install-exec-am: install-html: install-html-am install-info: install-info-am install-man: install-pdf: install-pdf-am install-ps: install-ps-am installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-prglibDATA uninstall-prglibLTLIBRARIES .MAKE: install-am install-data-am install-strip .PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ clean-generic clean-libtool clean-prglibLTLIBRARIES ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-data-hook install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-prglibDATA install-prglibLTLIBRARIES \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags uninstall uninstall-am uninstall-prglibDATA \ uninstall-prglibLTLIBRARIES install-data-hook: mv $(prefix)/modules/rahas/rahas_module.xml $(prefix)/modules/rahas/module.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: rampartc-src-1.3.0/src/rahas/mod_rahas.c0000644000076500007650000001013211202453426017745 0ustar shankarshankar/* * 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. */ #include #include #include #include axis2_status_t AXIS2_CALL rahas_mod_shutdown( axis2_module_t *module, const axutil_env_t *env); axis2_status_t AXIS2_CALL rahas_mod_init( axis2_module_t *module, const axutil_env_t *env, axis2_conf_ctx_t *conf_ctx, axis2_module_desc_t *module_desc); axis2_status_t AXIS2_CALL rahas_mod_fill_handler_create_func_map( axis2_module_t *module, const axutil_env_t *env); static const axis2_module_ops_t addr_module_ops_var = { rahas_mod_init, rahas_mod_shutdown, rahas_mod_fill_handler_create_func_map }; axis2_module_t * rahas_mod_create( const axutil_env_t *env) { axis2_module_t *module = NULL; module = AXIS2_MALLOC(env->allocator, sizeof(axis2_module_t)); if (!module) { AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE); AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rahas]Not enough memory. Cannot create module."); return NULL; } module->ops = &addr_module_ops_var; return module; } axis2_status_t AXIS2_CALL rahas_mod_init( axis2_module_t *module, const axutil_env_t *env, axis2_conf_ctx_t *conf_ctx, axis2_module_desc_t *module_desc) { /* * Any initialization stuff of Rahas module goes here. At the moment we have NONE. * Intialization happens in handlers depending on the message flow and policies */ AXIS2_LOG_INFO(env->log, "[rahas]Rahas module initialized"); return AXIS2_SUCCESS; } axis2_status_t AXIS2_CALL rahas_mod_shutdown( axis2_module_t *module, const axutil_env_t *env) { AXIS2_LOG_INFO(env->log, "[rahas] Rahas module shutdown"); if (module) { if (module->handler_create_func_map) { axutil_hash_free(module->handler_create_func_map, env); module->handler_create_func_map = NULL; } AXIS2_FREE(env->allocator, module); module = NULL; } return AXIS2_SUCCESS; } axis2_status_t AXIS2_CALL rahas_mod_fill_handler_create_func_map( axis2_module_t *module, const axutil_env_t *env) { module->handler_create_func_map = axutil_hash_make(env); if (!module->handler_create_func_map) { AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE); AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rahas] Cannot create function map."); return AXIS2_FAILURE; } /* * Set Rahas Handlers * 1. Rahas In Handler to process message * 2. No out handler for rahas */ axutil_hash_set(module->handler_create_func_map, RAHAS_IN_HANDLER, AXIS2_HASH_KEY_STRING, rahas_in_handler_create); return AXIS2_SUCCESS; } /** * Following block distinguish the exposed part of the dll. */ AXIS2_EXPORT int axis2_get_instance( axis2_module_t **inst, const axutil_env_t *env) { *inst = rahas_mod_create(env); if (!(*inst)) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rahas] Rahas module creation failed"); return AXIS2_FAILURE; } return AXIS2_SUCCESS; } AXIS2_EXPORT int axis2_remove_instance( axis2_module_t *inst, const axutil_env_t *env) { axis2_status_t status = AXIS2_FAILURE; if (inst) { status = rahas_mod_shutdown(inst, env); } return status; } rampartc-src-1.3.0/src/data/0000755000076500007650000000000011202454500015454 5ustar shankarshankarrampartc-src-1.3.0/src/data/Makefile.am0000644000076500007650000000014211202453422017507 0ustar shankarshankardatadir=$(prefix)/modules/rampart/ data_DATA=module.xml EXTRA_DIST = module.xml rahas_module.xml rampartc-src-1.3.0/src/data/rahas_module.xml0000644000076500007650000000563511202453422020654 0ustar shankarshankar http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT 360 http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/SCT 360 rampartc-src-1.3.0/src/data/module.xml0000644000076500007650000000100011202453422017454 0ustar shankarshankar rampartc-src-1.3.0/src/data/Makefile.in0000644000076500007650000002354611202453550017537 0ustar shankarshankar# Makefile.in generated by automake 1.10.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = src/data DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(datadir)" dataDATA_INSTALL = $(INSTALL_DATA) DATA = $(data_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ AXIOMINC = @AXIOMINC@ AXIS2INC = @AXIS2INC@ AXIS2LIB = @AXIS2LIB@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NEETHIINC = @NEETHIINC@ OBJEXT = @OBJEXT@ OPENSSLINC = @OPENSSLINC@ OPENSSLLIB = @OPENSSLLIB@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UTILINC = @UTILINC@ VERSION = @VERSION@ VERSION_NO = @VERSION_NO@ XMLSCHEMAINC = @XMLSCHEMAINC@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = $(prefix)/modules/rampart/ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ data_DATA = module.xml EXTRA_DIST = module.xml rahas_module.xml all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/data/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu src/data/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dataDATA: $(data_DATA) @$(NORMAL_INSTALL) test -z "$(datadir)" || $(MKDIR_P) "$(DESTDIR)$(datadir)" @list='$(data_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(dataDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(datadir)/$$f'"; \ $(dataDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(datadir)/$$f"; \ done uninstall-dataDATA: @$(NORMAL_UNINSTALL) @list='$(data_DATA)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(datadir)/$$f'"; \ rm -f "$(DESTDIR)$(datadir)/$$f"; \ done tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(datadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-dataDATA install-dvi: install-dvi-am install-exec-am: install-html: install-html-am install-info: install-info-am install-man: install-pdf: install-pdf-am install-ps: install-ps-am installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dataDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dataDATA install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ uninstall uninstall-am uninstall-dataDATA # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: rampartc-src-1.3.0/src/Makefile.in0000644000076500007650000003442311202453547016630 0ustar shankarshankar# Makefile.in generated by automake 1.10.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = src DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ AXIOMINC = @AXIOMINC@ AXIS2INC = @AXIS2INC@ AXIS2LIB = @AXIS2LIB@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NEETHIINC = @NEETHIINC@ OBJEXT = @OBJEXT@ OPENSSLINC = @OPENSSLINC@ OPENSSLLIB = @OPENSSLLIB@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UTILINC = @UTILINC@ VERSION = @VERSION@ VERSION_NO = @VERSION_NO@ XMLSCHEMAINC = @XMLSCHEMAINC@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = omxmlsec trust secconv util handlers core rahas data all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu src/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ distdir=`$(am__cd) $(distdir) && pwd`; \ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ (cd $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$top_distdir" \ distdir="$$distdir/$$subdir" \ am__remove_distdir=: \ am__skip_length_check=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-exec-am: install-html: install-html-recursive install-info: install-info-recursive install-man: install-pdf: install-pdf-recursive install-ps: install-ps-recursive installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ install-strip .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic clean-libtool \ ctags ctags-recursive distclean distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: rampartc-src-1.3.0/src/handlers/0000755000076500007650000000000011202454500016343 5ustar shankarshankarrampartc-src-1.3.0/src/handlers/Makefile.am0000644000076500007650000000042711202453412020403 0ustar shankarshankarTESTS = noinst_LTLIBRARIES = librampart_handlers.la librampart_handlers_la_SOURCES = rampart_out_handler.c\ rampart_in_handler.c INCLUDES = -I$(top_builddir)/include \ -I ../../include \ @OPENSSLINC@ \ @AXIOMINC@ \ @UTILINC@ \ @NEETHIINC@ \ @AXIS2INC@ rampartc-src-1.3.0/src/handlers/rampart_in_handler.c0000644000076500007650000001156511202453412022351 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include axis2_status_t AXIS2_CALL rampart_in_handler_invoke( struct axis2_handler *handler, const axutil_env_t *env, struct axis2_msg_ctx *msg_ctx); AXIS2_EXTERN axis2_handler_t *AXIS2_CALL rampart_in_handler_create( const axutil_env_t *env, axutil_string_t *name) { axis2_handler_t *handler = NULL; AXIS2_ENV_CHECK(env, NULL); handler = axis2_handler_create(env); if (!handler) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_in_handler] Cannot create in-handler."); return NULL; } /*Set the function to invoke*/ axis2_handler_set_invoke(handler, env, rampart_in_handler_invoke); return handler; } axis2_status_t AXIS2_CALL rampart_in_handler_invoke( struct axis2_handler *handler, const axutil_env_t *env, struct axis2_msg_ctx *msg_ctx) { axiom_soap_envelope_t *soap_envelope = NULL; axiom_soap_header_t *soap_header = NULL; axis2_status_t status = AXIS2_FAILURE; axiom_node_t *sec_node = NULL; rampart_context_t *rampart_context = NULL; AXIS2_PARAM_CHECK(env->error, msg_ctx, AXIS2_FAILURE); /* * since rampart in_handler is a global handler we should * first check whether the rampart module is engaged.If not engaged we * should not process the message but return success. */ if(!rampart_is_rampart_engaged(env, msg_ctx)) { AXIS2_LOG_INFO(env->log, "[rampart][rampart_in_handler] Rampart is not engaged. No security checks needed. "); return AXIS2_SUCCESS; } soap_envelope = axis2_msg_ctx_get_soap_envelope(msg_ctx, env); if(!soap_envelope) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_in_handler] SOAP envelope cannot be found."); return AXIS2_FAILURE; } soap_header = axiom_soap_envelope_get_header(soap_envelope, env); if (!soap_header) { /*No SOAP header, so no point of proceeding. FAIL*/ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_in_handler] SOAP header cannot be found."); return AXIS2_FAILURE; } rampart_context = rampart_engine_build_configuration(env, msg_ctx, AXIS2_TRUE); if(!rampart_context) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_in_handler] rampart_context creation failed."); return AXIS2_FAILURE; } sec_node = rampart_get_security_header(env, msg_ctx, soap_header); /*We do not check for the security header in Transport binding */ if(rampart_context_get_binding_type(rampart_context, env) != RP_PROPERTY_TRANSPORT_BINDING) { if(!sec_node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_in_handler] Security header cannot be found."); return AXIS2_FAILURE; } } status = rampart_set_security_processed_results_property(env, msg_ctx); if(status != AXIS2_SUCCESS) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_in_handler] Unable to set the security processed results."); return status; } status = rampart_shp_process_sec_header(env, msg_ctx, rampart_context, soap_envelope, sec_node); if(status != AXIS2_SUCCESS) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_in_handler] Security Header processing failed."); return status; } return AXIS2_SUCCESS; } rampartc-src-1.3.0/src/handlers/Makefile.in0000644000076500007650000003726511202453550020431 0ustar shankarshankar# Makefile.in generated by automake 1.10.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ TESTS = subdir = src/handlers DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) librampart_handlers_la_LIBADD = am_librampart_handlers_la_OBJECTS = rampart_out_handler.lo \ rampart_in_handler.lo librampart_handlers_la_OBJECTS = $(am_librampart_handlers_la_OBJECTS) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = $(librampart_handlers_la_SOURCES) DIST_SOURCES = $(librampart_handlers_la_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ AXIOMINC = @AXIOMINC@ AXIS2INC = @AXIS2INC@ AXIS2LIB = @AXIS2LIB@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NEETHIINC = @NEETHIINC@ OBJEXT = @OBJEXT@ OPENSSLINC = @OPENSSLINC@ OPENSSLLIB = @OPENSSLLIB@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UTILINC = @UTILINC@ VERSION = @VERSION@ VERSION_NO = @VERSION_NO@ XMLSCHEMAINC = @XMLSCHEMAINC@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ noinst_LTLIBRARIES = librampart_handlers.la librampart_handlers_la_SOURCES = rampart_out_handler.c\ rampart_in_handler.c INCLUDES = -I$(top_builddir)/include \ -I ../../include \ @OPENSSLINC@ \ @AXIOMINC@ \ @UTILINC@ \ @NEETHIINC@ \ @AXIS2INC@ all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/handlers/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu src/handlers/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ test "$$dir" != "$$p" || dir=.; \ echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done librampart_handlers.la: $(librampart_handlers_la_OBJECTS) $(librampart_handlers_la_DEPENDENCIES) $(LINK) $(librampart_handlers_la_OBJECTS) $(librampart_handlers_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rampart_in_handler.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rampart_out_handler.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags check-TESTS: $(TESTS) @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \ srcdir=$(srcdir); export srcdir; \ list=' $(TESTS) '; \ if test -n "$$list"; then \ for tst in $$list; do \ if test -f ./$$tst; then dir=./; \ elif test -f $$tst; then dir=; \ else dir="$(srcdir)/"; fi; \ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ all=`expr $$all + 1`; \ case " $(XFAIL_TESTS) " in \ *$$ws$$tst$$ws*) \ xpass=`expr $$xpass + 1`; \ failed=`expr $$failed + 1`; \ echo "XPASS: $$tst"; \ ;; \ *) \ echo "PASS: $$tst"; \ ;; \ esac; \ elif test $$? -ne 77; then \ all=`expr $$all + 1`; \ case " $(XFAIL_TESTS) " in \ *$$ws$$tst$$ws*) \ xfail=`expr $$xfail + 1`; \ echo "XFAIL: $$tst"; \ ;; \ *) \ failed=`expr $$failed + 1`; \ echo "FAIL: $$tst"; \ ;; \ esac; \ else \ skip=`expr $$skip + 1`; \ echo "SKIP: $$tst"; \ fi; \ done; \ if test "$$failed" -eq 0; then \ if test "$$xfail" -eq 0; then \ banner="All $$all tests passed"; \ else \ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ fi; \ else \ if test "$$xpass" -eq 0; then \ banner="$$failed of $$all tests failed"; \ else \ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ fi; \ fi; \ dashes="$$banner"; \ skipped=""; \ if test "$$skip" -ne 0; then \ skipped="($$skip tests were not run)"; \ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ dashes="$$skipped"; \ fi; \ report=""; \ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ report="Please report to $(PACKAGE_BUGREPORT)"; \ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ dashes="$$report"; \ fi; \ dashes=`echo "$$dashes" | sed s/./=/g`; \ echo "$$dashes"; \ echo "$$banner"; \ test -z "$$skipped" || echo "$$skipped"; \ test -z "$$report" || echo "$$report"; \ echo "$$dashes"; \ test "$$failed" -eq 0; \ else :; fi distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-exec-am: install-html: install-html-am install-info: install-info-am install-man: install-pdf: install-pdf-am install-ps: install-ps-am installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ clean-generic clean-libtool clean-noinstLTLIBRARIES ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: rampartc-src-1.3.0/src/handlers/rampart_out_handler.c0000644000076500007650000001144211202453412022544 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_out_handler_invoke( struct axis2_handler *handler, const axutil_env_t * env, struct axis2_msg_ctx *msg_ctx); /** * Creates Out handler * @param env pointer to environment struct * @param name handler name * @return Created Out handler */ AXIS2_EXTERN axis2_handler_t *AXIS2_CALL rampart_out_handler_create( const axutil_env_t *env, axutil_string_t *name) { axis2_handler_t *handler = NULL; AXIS2_ENV_CHECK(env, NULL); handler = axis2_handler_create(env); if (!handler) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Cannot create out-handler."); return NULL; } /* Set the base struct's invoke op */ axis2_handler_set_invoke(handler, env, rampart_out_handler_invoke); return handler; } /** * Invokes out handler logic. This will build security headers for out going message * @param handler rampart out handler * @param env pointer to environment struct * @param msg_ctx message context */ axis2_status_t AXIS2_CALL rampart_out_handler_invoke( struct axis2_handler * handler, const axutil_env_t * env, axis2_msg_ctx_t * msg_ctx) { axiom_soap_envelope_t *soap_envelope = NULL; axiom_soap_header_t *soap_header = NULL; axiom_node_t *soap_header_node = NULL; axiom_element_t *soap_header_ele = NULL; axis2_status_t status = AXIS2_FAILURE; rampart_context_t *rampart_context = NULL; AXIS2_PARAM_CHECK(env->error, msg_ctx, AXIS2_FAILURE); /* * Since rampart out_handler is a global handler we should * first check whether the rampart module is engaged.If not we * should not process the message and return success. */ if(!rampart_is_rampart_engaged(env,msg_ctx)) { AXIS2_LOG_INFO(env->log, "[rampart] Rampart is not engaged. No security support is needed."); return AXIS2_SUCCESS; } soap_envelope = axis2_msg_ctx_get_soap_envelope(msg_ctx, env); if (!soap_envelope) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_out_handler] SOAP envelope cannot be found."); return AXIS2_FAILURE; } soap_header = axiom_soap_envelope_get_header(soap_envelope, env); if (!soap_header) { /*No SOAP header, so no point of proceeding. FAIL*/ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_out_handler] SOAP header cannot be found."); return AXIS2_FAILURE; } soap_header_node = axiom_soap_header_get_base_node(soap_header, env); if(!soap_header_node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_out_handler] Cannot get soap header node."); return AXIS2_FAILURE; } soap_header_ele = (axiom_element_t *)axiom_node_get_data_element(soap_header_node,env); if(!soap_header_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_out_handler] Cannot get soap header element."); return AXIS2_FAILURE; } rampart_context = rampart_engine_build_configuration(env, msg_ctx, AXIS2_FALSE); if(!rampart_context) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_out_handler] ramaprt_context creation failed."); return AXIS2_FAILURE; } status = rampart_shb_build_message(env, msg_ctx, rampart_context, soap_envelope); if(status != AXIS2_SUCCESS) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_out_handler] Security header building failed."); } return status; } rampartc-src-1.3.0/src/secconv/0000755000076500007650000000000011202454477016220 5ustar shankarshankarrampartc-src-1.3.0/src/secconv/Makefile.am0000644000076500007650000000053211202453413020241 0ustar shankarshankarnoinst_LTLIBRARIES = libsecconv.la libsecconv_la_SOURCES = sct_provider_utility.c \ security_context_token.c INCLUDES = -I$(top_builddir)/include \ -I ../../../../util/include \ -I ../../../../include \ -I ../../../../axiom/include \ @OPENSSLINC@ \ @UTILINC@ \ @AXIOMINC@ \ @AXIS2INC@ rampartc-src-1.3.0/src/secconv/security_context_token.c0000644000076500007650000007516011202453413023175 0ustar shankarshankar/* * 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. */ #include #include #include #include #include struct security_context_token_t { oxs_buffer_t *buffer; axis2_char_t *global_id; axis2_char_t *local_id; axiom_node_t *sct_node; axiom_node_t *attached_reference; axiom_node_t *unattached_reference; axis2_bool_t is_sc10; int ref; }; /** * Creates security context token * @param env Pointer to environment struct * @returns Security context token if success. NULL otherwise. */ AXIS2_EXTERN security_context_token_t *AXIS2_CALL security_context_token_create( const axutil_env_t * env) { security_context_token_t *sct = NULL; AXIS2_ENV_CHECK(env, NULL); sct = (security_context_token_t *) AXIS2_MALLOC ( env->allocator, sizeof (security_context_token_t)); if(!sct) { AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE); AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Cannot create Security context token. Insufficient memory."); } else { sct->buffer = NULL; sct->global_id = NULL; sct->local_id = NULL; sct->sct_node = NULL; sct->attached_reference = NULL; sct->unattached_reference = NULL; sct->is_sc10 = AXIS2_FALSE; sct->ref = 1; } return sct; } /** * Free security context token * @param sct Pointer to secuirty context token struct * @param env Pointer to environment struct * @returns AXIS2_SUCCESS if success. AXIS2_FAILURE otherwise. */ AXIS2_EXTERN axis2_status_t AXIS2_CALL security_context_token_free( security_context_token_t *sct, const axutil_env_t *env) { if (--sct->ref <= 0) { if(sct->buffer) { oxs_buffer_free(sct->buffer, env); } if(sct->local_id) { AXIS2_FREE(env->allocator, sct->local_id); } if(sct->global_id) { AXIS2_FREE(env->allocator, sct->global_id); } if(sct->sct_node) { axiom_node_free_tree(sct->sct_node, env); } if(sct->attached_reference) { axiom_node_free_tree(sct->attached_reference, env); } if(sct->unattached_reference) { axiom_node_free_tree(sct->unattached_reference, env); } AXIS2_FREE(env->allocator, sct); } return AXIS2_SUCCESS; } /** * Get shared secret from security context token. Callers should not free returned buffer * @param sct Pointer to secuirty context token struct * @param env Pointer to environment struct * @returns shared secret if success. NULL otherwise. */ AXIS2_EXTERN oxs_buffer_t *AXIS2_CALL security_context_token_get_secret( security_context_token_t * sct, const axutil_env_t * env) { return sct->buffer; } /** * Get global id of security context token. * This id will be used when token is not included in the message * @param sct Pointer to secuirty context token struct * @param env Pointer to environment struct * @returns global id if success. NULL otherwise. */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL security_context_token_get_global_identifier( security_context_token_t * sct, const axutil_env_t * env) { return sct->global_id; } /** * Get local id of security context token. * This id will be used when token is included in the message * @param sct Pointer to secuirty context token struct * @param env Pointer to environment struct * @returns local id if success. NULL otherwise. */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL security_context_token_get_local_identifier( security_context_token_t * sct, const axutil_env_t * env) { return sct->local_id; } /** * Set shared secret of security context token. After this method is called, ownership of * the buffer will be with security context token. Users should not free it. * @param sct Pointer to secuirty context token struct * @param env Pointer to environment struct * @param buffer Pointer to shared secret * @returns AXIS2_SUCCESS if success. AXIS2_FAILURE otherwise. */ AXIS2_EXTERN axis2_status_t AXIS2_CALL security_context_token_set_secret( security_context_token_t * sct, const axutil_env_t * env, oxs_buffer_t *buffer) { if(sct->buffer) { oxs_buffer_free(sct->buffer, env); } sct->buffer = buffer; return AXIS2_SUCCESS; } /** * Set WS-SecureConversation version * @param sct Pointer to secuirty context token struct * @param env Pointer to environment struct * @param is_sc10 Boolean denoting whether we need security context token as in WS-SecConv 1.0 * @returns AXIS2_SUCCESS if success. AXIS2_FAILURE otherwise. */ AXIS2_EXTERN axis2_status_t AXIS2_CALL security_context_token_set_is_sc10( security_context_token_t *sct, const axutil_env_t * env, axis2_bool_t is_sc10) { sct->is_sc10 = is_sc10; return AXIS2_SUCCESS; } /** * Set global identifier of security context token. After this method is called, ownership of * global_id will be with security context token. Users should not free it. * @param sct Pointer to secuirty context token struct * @param env Pointer to environment struct * @param global_id Global identifier of security context token * @returns AXIS2_SUCCESS if success. AXIS2_FAILURE otherwise. */ AXIS2_EXTERN axis2_status_t AXIS2_CALL security_context_token_set_global_identifier( security_context_token_t * sct, const axutil_env_t * env, axis2_char_t *global_id) { if(sct->global_id) { AXIS2_FREE(env->allocator, sct->global_id); } sct->global_id = global_id; return AXIS2_SUCCESS; } /** * Set local identifier of security context token. After this method is called, ownership of * local_id will be with security context token. Users should not free it. * @param sct Pointer to secuirty context token struct * @param env Pointer to environment struct * @param local_id Local identifier of securiy context token * @returns AXIS2_SUCCESS if success. AXIS2_FAILURE otherwise. */ AXIS2_EXTERN axis2_status_t AXIS2_CALL security_context_token_set_local_identifier( security_context_token_t * sct, const axutil_env_t * env, axis2_char_t *local_id) { if(sct->local_id) { AXIS2_FREE(env->allocator, sct->local_id); } sct->local_id = local_id; return AXIS2_SUCCESS; } /** * Get shared secret as axiom_node. Shared secret will be included inside * 'RequestedProofToken' node. This is acording to WS-Trust specification * * Base64EncodedSharedSecret * * @param sct Pointer to secuirty context token struct * @param env Pointer to environment struct * @returns valid axiom_node if success. NULL otherwise. */ AXIS2_EXTERN axiom_node_t *AXIS2_CALL security_context_token_get_requested_proof_token( security_context_token_t *sct, const axutil_env_t * env) { int encodedlen; axis2_char_t *encoded_str = NULL; axiom_node_t* proof_token = NULL; axiom_element_t *proof_token_ele = NULL; axiom_node_t* secret_node = NULL; axiom_element_t *secret_ele = NULL; axiom_namespace_t *ns_obj_wst = NULL; if(!sct->buffer) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Security context token does not have a shared secret"); return NULL; } if(sct->is_sc10) { ns_obj_wst = axiom_namespace_create(env, TRUST_WST_XMLNS_05_02, TRUST_WST); } else { ns_obj_wst = axiom_namespace_create(env, TRUST_WST_XMLNS_05_12, TRUST_WST); } proof_token_ele = axiom_element_create( env, NULL, TRUST_REQUESTED_PROOF_TOKEN, ns_obj_wst, &proof_token); if (!proof_token_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Cannot create requested proof token"); return NULL; } secret_ele = axiom_element_create( env, proof_token, TRUST_BINARY_SECRET, ns_obj_wst, &secret_node); if(!secret_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Cannot create binary secret token"); return NULL; } encodedlen = axutil_base64_encode_len(oxs_buffer_get_size(sct->buffer, env)); encoded_str = AXIS2_MALLOC(env->allocator, encodedlen); axutil_base64_encode(encoded_str, (const char *)oxs_buffer_get_data(sct->buffer, env), oxs_buffer_get_size(sct->buffer, env)); axiom_element_set_text(secret_ele, env, encoded_str, secret_node); AXIS2_FREE(env->allocator, encoded_str); return proof_token; } /** * Get local id of security context token as axiom node. * This id will be used when token is included in the message * * AttachedReference * * @param sct Pointer to secuirty context token struct * @param env Pointer to environment struct * @returns valid axiom node if success. NULL otherwise. */ AXIS2_EXTERN axiom_node_t *AXIS2_CALL security_context_token_get_attached_reference( security_context_token_t *sct, const axutil_env_t * env) { axiom_node_t *str_token = NULL; if(sct->attached_reference) { /* If attached reference is given by STS, then we have to return same reference */ str_token = oxs_axiom_clone_node(env, sct->attached_reference); } else { /* If attached reference is not given by STS, then we have to create it */ if(sct->local_id) { axiom_node_t *ref_token = NULL; axis2_char_t *value_type; if(sct->is_sc10) { value_type = OXS_VALUE_TYPE_SECURITY_CONTEXT_TOKEN_05_02; } else { value_type = OXS_VALUE_TYPE_SECURITY_CONTEXT_TOKEN_05_12; } str_token = oxs_token_build_security_token_reference_element(env, NULL); ref_token = oxs_token_build_reference_element( env, str_token, sct->local_id, value_type); } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Security context token does not have a local identifier"); } } return str_token; } /** * Get global id of security context token as axiom node. * This id will be used when token is not included in the message * * UnattachedReference * * @param sct Pointer to secuirty context token struct * @param env Pointer to environment struct * @returns valid axiom node if success. NULL otherwise. */ AXIS2_EXTERN axiom_node_t *AXIS2_CALL security_context_token_get_unattached_reference( security_context_token_t *sct, const axutil_env_t * env) { axiom_node_t *str_token = NULL; if(sct->unattached_reference) { /* If unattached reference is given by STS, then we have to return same reference */ str_token = oxs_axiom_clone_node(env, sct->unattached_reference); } else { /* If unattached reference is not given by STS, then we have to create it */ if(sct->global_id) { axiom_node_t *ref_token = NULL; axis2_char_t *value_type; if(sct->is_sc10) { value_type = OXS_VALUE_TYPE_SECURITY_CONTEXT_TOKEN_05_02; } else { value_type = OXS_VALUE_TYPE_SECURITY_CONTEXT_TOKEN_05_12; } str_token = oxs_token_build_security_token_reference_element(env, NULL); ref_token = oxs_token_build_reference_element( env, str_token, sct->global_id, value_type); } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Security context token does not have a global identifier"); } } return str_token; } /** * Get axiom node representation of security context token. * This will be included in the message if the token needs to be sent in the message * * global_id * * @param sct Pointer to secuirty context token struct * @param env Pointer to environment struct * @returns valid axiom node if success. NULL otherwise. */ AXIS2_EXTERN axiom_node_t *AXIS2_CALL security_context_token_get_token( security_context_token_t *sct, const axutil_env_t * env) { axiom_node_t* sct_token = NULL; axiom_element_t *token_ele = NULL; axiom_node_t* identifier_node = NULL; axiom_element_t *identifier_ele = NULL; axiom_namespace_t *ns_obj_sc = NULL; axiom_namespace_t *ns_obj_wsu = NULL; axiom_attribute_t *id_attr = NULL; if(sct->sct_node) return oxs_axiom_clone_node(env, sct->sct_node); if(!sct->global_id) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Security context token does not have an identifier."); return NULL; } if(sct->is_sc10) { ns_obj_sc = axiom_namespace_create(env, OXS_WSC_NS_05_02, OXS_WSC); } else { ns_obj_sc = axiom_namespace_create(env, OXS_WSC_NS_05_12, OXS_WSC); } token_ele = axiom_element_create( env, NULL, OXS_NODE_SECURITY_CONTEXT_TOKEN, ns_obj_sc, &sct_token); if (!token_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error creating SecurityContextToken element."); return NULL; } if(sct->local_id) { axis2_char_t *id = NULL; /* local id is in the format of '#sct2343443'. When including it in the axiom representation * of the token, we should remove first '#' */ id = axutil_string_substring_starting_at(axutil_strdup(env, sct->local_id), 1); ns_obj_wsu = axiom_namespace_create(env, OXS_WSU_XMLNS, OXS_WSU); id_attr = axiom_attribute_create(env, OXS_ATTR_ID, id, ns_obj_wsu); axiom_element_add_attribute(token_ele, env, id_attr, sct_token); AXIS2_FREE(env->allocator, id); } identifier_ele = axiom_element_create( env, sct_token, OXS_NODE_IDENTIFIER, ns_obj_sc, &identifier_node); if(!identifier_ele) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Error creating Identifier element of security context token."); return NULL; } axiom_element_set_text(identifier_ele, env, sct->global_id, identifier_node); return sct_token; } /** * Set shared secret of security context token from proof token. This proof token will be given * by STS. * Base64EncodedSharedSecret * @param sct Pointer to secuirty context token struct * @param env Pointer to environment struct * @param node Pointer to proof token axiom node * @returns AXIS2_SUCCESS if success. AXIS2_FAILURE otherwise. */ AXIS2_EXTERN axis2_status_t AXIS2_CALL security_context_token_set_requested_proof_token( security_context_token_t *sct, const axutil_env_t * env, axiom_node_t *node) { axis2_char_t *shared_secret = NULL; int decoded_len = 0; axis2_char_t *decoded_shared_secret = NULL; oxs_buffer_t *buffer = NULL; AXIS2_PARAM_CHECK(env->error, node, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, sct, AXIS2_FAILURE); shared_secret = oxs_axiom_get_node_content(env, node); if(!shared_secret) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart] Cannot get content of binary secret node"); return AXIS2_FAILURE; } decoded_len = axutil_base64_decode_len(shared_secret); decoded_shared_secret = AXIS2_MALLOC(env->allocator, decoded_len); axutil_base64_decode_binary((unsigned char*)decoded_shared_secret, shared_secret); buffer = oxs_buffer_create(env); oxs_buffer_populate(buffer, env, (unsigned char*)decoded_shared_secret, decoded_len); AXIS2_FREE(env->allocator, decoded_shared_secret); return security_context_token_set_secret(sct, env, buffer); } /** * Set local identifier of security context token from attached reference node. * * AttachedReference * * @param sct Pointer to secuirty context token struct * @param env Pointer to environment struct * @param node Pointer to attached reference axiom node * @returns AXIS2_SUCCESS if success. AXIS2_FAILURE otherwise. */ AXIS2_EXTERN axis2_status_t AXIS2_CALL security_context_token_set_attached_reference( security_context_token_t *sct, const axutil_env_t * env, axiom_node_t *node) { axiom_node_t *ref_token = NULL; axis2_char_t *local_id = NULL; AXIS2_PARAM_CHECK(env->error, node, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, sct, AXIS2_FAILURE); ref_token = oxs_axiom_get_first_child_node_by_name( env, node, OXS_NODE_REFERENCE, OXS_WSSE_XMLNS, NULL); if(!ref_token) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Cannot get reference node from attached reference"); return AXIS2_FAILURE; } local_id = oxs_token_get_reference(env, ref_token); if(!local_id) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Cannot get attached reference"); return AXIS2_FAILURE; } sct->attached_reference = oxs_axiom_clone_node(env, node); return security_context_token_set_local_identifier(sct, env, axutil_strdup(env, local_id)); } /** * Set global identifier of security context token from unattached reference node. * * AttachedReference * * @param sct Pointer to secuirty context token struct * @param env Pointer to environment struct * @param node Pointer to unattached reference axiom node * @returns AXIS2_SUCCESS if success. AXIS2_FAILURE otherwise. */ AXIS2_EXTERN axis2_status_t AXIS2_CALL security_context_token_set_unattached_reference( security_context_token_t *sct, const axutil_env_t * env, axiom_node_t *node) { axiom_node_t *ref_token = NULL; axis2_char_t *reference_id = NULL; AXIS2_PARAM_CHECK(env->error, node, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, sct, AXIS2_FAILURE); ref_token = oxs_axiom_get_first_child_node_by_name( env, node, OXS_NODE_REFERENCE, OXS_WSSE_XMLNS, NULL); if(!ref_token) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Cannot get reference node from unattached reference"); return AXIS2_FAILURE; } reference_id = oxs_token_get_reference(env, ref_token); if(!reference_id) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Cannot get unattached reference"); return AXIS2_FAILURE; } sct->unattached_reference = oxs_axiom_clone_node(env, node); return security_context_token_set_global_identifier(sct, env, axutil_strdup(env, reference_id)); } /** * Set axiom representation of security context token. We don't need to understand the details of it * @param sct Pointer to secuirty context token struct * @param env Pointer to environment struct * @param node Pointer to security context token axiom node * @returns AXIS2_SUCCESS if success. AXIS2_FAILURE otherwise. */ AXIS2_EXTERN axis2_status_t AXIS2_CALL security_context_token_set_token( security_context_token_t *sct, const axutil_env_t * env, axiom_node_t *node) { sct->sct_node = oxs_axiom_clone_node(env, node); return AXIS2_SUCCESS; } /** * Increment the reference of security context token * @param sct Pointer to secuirty context token struct * @param env Pointer to environment struct * @returns AXIS2_SUCCESS if success. AXIS2_FAILURE otherwise. */ AXIS2_EXTERN axis2_status_t AXIS2_CALL security_context_token_increment_ref( security_context_token_t *sct, const axutil_env_t * env) { sct->ref++; return AXIS2_SUCCESS; } /** * Serializes the security context token. Caller should take the ownership of returned value. * Serialized value will be of format * * global_id * * Base64EncodedSharedSecret * * * * AttachedReference * * * * * AttachedReference * * * * @param sct Pointer to secuirty context token struct * @param env Pointer to environment struct * @returns serialized security context token if success. NULL otherwise */ AXIS2_EXTERN axis2_char_t * AXIS2_CALL security_context_token_serialize( security_context_token_t *sct, const axutil_env_t *env) { axiom_node_t *sct_node = NULL; axiom_node_t *proof_node = NULL; axiom_node_t *attached_ref_node = NULL; axiom_node_t *unattached_ref_node = NULL; axiom_node_t *parent_attached_ref_node = NULL; axiom_node_t *parent_unattached_ref_node = NULL; axis2_char_t *serialised_node = NULL; axis2_char_t *wst_uri = NULL; sct_node = security_context_token_get_token(sct, env); if(!sct_node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Cannot serialise security context token."); return NULL; } proof_node = security_context_token_get_requested_proof_token(sct, env); attached_ref_node = security_context_token_get_attached_reference(sct, env); unattached_ref_node = security_context_token_get_unattached_reference(sct, env); if(!proof_node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Cannot serialise proof token of security context token."); axiom_node_free_tree(sct_node, env); return NULL; } axiom_node_add_child(sct_node, env, proof_node); /* get trust namespace based on version */ if(sct->is_sc10) { wst_uri = TRUST_WST_XMLNS_05_02; } else { wst_uri = TRUST_WST_XMLNS_05_12; } /* attached reference is optional */ if(attached_ref_node) { parent_attached_ref_node = trust_util_create_req_attached_reference_element( env, wst_uri, sct_node); if(!parent_attached_ref_node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Cannot serialise attached reference of security context token."); axiom_node_free_tree(sct_node, env); return NULL; } axiom_node_add_child(parent_attached_ref_node, env, attached_ref_node); } /* unattached reference is optional */ if(unattached_ref_node) { parent_unattached_ref_node = trust_util_create_req_unattached_reference_element( env, wst_uri, sct_node); if(!parent_unattached_ref_node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Cannot serialise unattached reference of security context token."); axiom_node_free_tree(sct_node, env); return NULL; } axiom_node_add_child(parent_unattached_ref_node, env, unattached_ref_node); } serialised_node = axiom_node_sub_tree_to_string(sct_node, env); axiom_node_free_tree(sct_node, env); return serialised_node; } /** * Deserializes the security context token. * * global_id * * Base64EncodedSharedSecret * * * * AttachedReference * * * * * AttachedReference * * * * @param sct Pointer to secuirty context token struct * @param env Pointer to environment struct * @param serialised_node serialised string representation of security context token * @returns serialized security context token if success. NULL otherwise */ AXIS2_EXTERN axis2_status_t AXIS2_CALL security_context_token_deserialize( security_context_token_t *sct, const axutil_env_t *env, axis2_char_t *serialised_node) { axiom_node_t *sct_node = NULL; axiom_node_t *proof_node = NULL; axiom_node_t *attached_ref_node = NULL; axiom_node_t *unattached_ref_node = NULL; axiom_node_t *parent_attached_ref_node = NULL; axiom_node_t *parent_unattached_ref_node = NULL; axiom_node_t *parent_proof_node = NULL; axis2_char_t *ns = NULL; axutil_qname_t *node_qname = NULL; axiom_element_t *element = NULL; sct_node = oxs_axiom_deserialize_node(env, serialised_node); if(!sct_node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Security context token deserialize failed."); return AXIS2_FAILURE; } /* get the namespace of root node and decide the sct version */ element = (axiom_element_t *) axiom_node_get_data_element(sct_node, env); node_qname = axiom_element_get_qname(element, env, sct_node); if(!node_qname) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart] Cannot get qname from SecurityContextToken element."); return AXIS2_FAILURE; } ns = axutil_qname_get_uri(node_qname, env); if(!ns) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart] Cannot get namespace from SecurityContextToken element."); return AXIS2_FAILURE; } if(!axutil_strcmp(ns, OXS_WSC_NS_05_02)) { sct->is_sc10 = AXIS2_TRUE; } parent_proof_node = oxs_axiom_get_node_by_local_name( env, sct_node, TRUST_REQUESTED_PROOF_TOKEN); if(!parent_proof_node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Proof not could not be found. Security context token deserialize failed."); return AXIS2_FAILURE; } axiom_node_detach(parent_proof_node, env); proof_node = oxs_axiom_get_node_by_local_name(env, parent_proof_node, TRUST_BINARY_SECRET); if(!proof_node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Proof not could not be found. Security context token deserialize failed."); return AXIS2_FAILURE; } if(security_context_token_set_requested_proof_token(sct, env, proof_node) != AXIS2_SUCCESS) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Deserializing proof token node failed. " "Security context token deserialize failed."); return AXIS2_FAILURE; } parent_attached_ref_node = oxs_axiom_get_node_by_local_name( env, sct_node, TRUST_REQUESTED_ATTACHED_REFERENCE); if(parent_attached_ref_node) { axiom_node_detach(parent_attached_ref_node, env); attached_ref_node = oxs_axiom_get_node_by_local_name( env, parent_attached_ref_node, OXS_NODE_SECURITY_TOKEN_REFRENCE); if(!attached_ref_node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Attached reference node could not be found. " "Security context token deserialize failed."); return AXIS2_FAILURE; } if (security_context_token_set_attached_reference(sct, env, attached_ref_node) != AXIS2_SUCCESS) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Deserializing attached reference node failed. " "Security context token deserialize failed."); return AXIS2_FAILURE; } } parent_unattached_ref_node = oxs_axiom_get_node_by_local_name( env, sct_node, TRUST_REQUESTED_UNATTACHED_REFERENCE); if(parent_unattached_ref_node) { axiom_node_detach(parent_unattached_ref_node, env); unattached_ref_node = oxs_axiom_get_node_by_local_name( env, parent_unattached_ref_node, OXS_NODE_SECURITY_TOKEN_REFRENCE); if(!unattached_ref_node) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Unattached reference node could not be found. " "Security context token deserialize failed."); return AXIS2_FAILURE; } if (security_context_token_set_unattached_reference(sct, env, unattached_ref_node) != AXIS2_SUCCESS) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Deserializing unattached reference node failed. " "Security context token deserialize failed."); return AXIS2_FAILURE; } } if(security_context_token_set_token(sct, env, sct_node) != AXIS2_SUCCESS) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Deserializing security context token failed." ); return AXIS2_FAILURE; } return AXIS2_SUCCESS; } rampartc-src-1.3.0/src/secconv/sct_provider_utility.c0000644000076500007650000007470511202453413022654 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include #include #include #include #define RAMPART_SCT_PROVIDER_HASH_PROB "Rampart_SCT_Prov_DB_Prop" static security_context_token_t* sct_provider_obtain_token_from_sts( const axutil_env_t* env, rp_security_context_token_t* rp_sct, axis2_msg_ctx_t* msg_ctx, rampart_context_t *rampart_context); static rampart_context_t * get_new_rampart_context( const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx); /* This method finds security context token using given parameters. If it is called without sct_id, * it will request from STS/Stored context */ static security_context_token_t* sct_provider_get_sct( const axutil_env_t* env, rp_property_t *token, axis2_bool_t is_encryption, axis2_char_t *sct_id, rampart_context_t* rampart_context, axis2_msg_ctx_t* msg_ctx) { security_context_token_t* sct = NULL; /* if sct id is not given, check whether it is stored in rampart context */ if(!sct_id) { if(is_encryption) sct_id = rampart_context_get_encryption_token_id(rampart_context, env, msg_ctx); else sct_id = rampart_context_get_signature_token_id(rampart_context, env, msg_ctx); } if(!sct_id) { /* if sct id is not there in rampart context, then it is not created. * (1) If it is secure conversation token * (a) If server side, we can't do anything. We have to fail. * (b) If client side, we can request from STS * (2) If it is security context token - sct agreed by server and client offline * (a) If server side, can call get_sct method and if returned successfully, store it * (b) If client side, same as server_side */ void* user_params = NULL; rp_security_context_token_t* rp_sct = NULL; /* to check whether security context token or secure conversation token, rp_property (token) * should be valid. If valid, we can extract the security context token property */ if(!token) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]rampart policy property 'token' is not valid. Could not find whether " "token is SecureConversationToken or SecurityContextToken."); return NULL; } rp_sct = (rp_security_context_token_t*)rp_property_get_value(token, env); if(!rp_sct) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]value of rampart policy property 'token' is not valid. Could not find " "whether token is SecureConversationToken or SecurityContextToken."); return NULL; } user_params = rampart_context_get_security_context_token_user_params(rampart_context, env); if(rp_security_context_token_get_is_secure_conversation_token(rp_sct, env)) { /* this is a secure conversation token */ axis2_bool_t is_server_side = AXIS2_FALSE; is_server_side = axis2_msg_ctx_get_server_side(msg_ctx, env); if(!is_server_side) { /* we can request sct from sts */ sct = sct_provider_obtain_token_from_sts(env, rp_sct, msg_ctx, rampart_context); } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart] Secure conversation token is requested without giving ID of SCT. " "This cannot be done in server side."); } } else { /* this is a security context token */ obtain_security_context_token_fn fn_get_sct = NULL; fn_get_sct = rampart_context_get_obtain_security_context_token_fn(rampart_context, env); sct = (security_context_token_t*)fn_get_sct( env, is_encryption, msg_ctx, sct_id, RAMPART_SCT_ID_TYPE_UNKNOWN, user_params); } /* if valid sct, then we have to store it */ if(sct) { axis2_char_t *local_id = NULL; axis2_char_t *global_id = NULL; store_security_context_token_fn fn_store_sct = NULL; local_id = security_context_token_get_local_identifier(sct, env); global_id = security_context_token_get_global_identifier(sct, env); fn_store_sct = rampart_context_get_store_security_context_token_fn( rampart_context, env); if(fn_store_sct(env, msg_ctx, global_id, local_id, (void*)sct, user_params) != AXIS2_SUCCESS) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart] Cannot store newly created security context token."); security_context_token_free(sct, env); sct = NULL; } /* store the global id as encryption/signature id. if same key is used for encryption * and signature, then store it at both place*/ if(rampart_context_is_different_session_key_for_enc_and_sign(env, rampart_context)) { if(is_encryption) rampart_context_set_encryption_token_id(rampart_context, env, global_id, msg_ctx); else rampart_context_set_signature_token_id(rampart_context, env, global_id, msg_ctx); } else { rampart_context_set_encryption_token_id(rampart_context, env, global_id, msg_ctx); rampart_context_set_signature_token_id(rampart_context, env, global_id, msg_ctx); } } } else { /* sct_id is given. So get it from sct provider function. */ void* user_params = NULL; obtain_security_context_token_fn fn_get_sct = NULL; int id_type = RAMPART_SCT_ID_TYPE_GLOBAL; user_params = rampart_context_get_security_context_token_user_params(rampart_context, env); fn_get_sct = rampart_context_get_obtain_security_context_token_fn(rampart_context, env); /* by looking at the first character of sct_id, we can say whether it is local id or global * id. If first character is '#' then it is a local id */ if(*sct_id == '#') { id_type = RAMPART_SCT_ID_TYPE_LOCAL; } sct = fn_get_sct(env, is_encryption, msg_ctx, sct_id, id_type, user_params); } if(!sct) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart] Cannot find security context token for id [%s]", sct_id); } return sct; } /** * Finds security context token and gets shared secret. * returned buffer should NOT be cleared by the caller * @param env Pointer to environment struct * @param token rampart policy property of the token * @param is_encryption boolean showing whether the token is needed for encryption or signature * @param rampart_context pointer to rampart context structure * @param msg_ctx pointer to message context structure * @returns shared secret of the security context token. returned buffer should NOT be freed */ AXIS2_EXTERN oxs_buffer_t *AXIS2_CALL sct_provider_get_secret( const axutil_env_t* env, rp_property_t *token, axis2_bool_t is_encryption, rampart_context_t* rampart_context, axis2_msg_ctx_t* msg_ctx) { security_context_token_t* sct = NULL; sct = sct_provider_get_sct(env, token, is_encryption, NULL, rampart_context, msg_ctx); if(!sct) return NULL; return security_context_token_get_secret(sct, env); } /** * Finds security context token and gets shared secret. * returned buffer should NOT be cleared by the caller * @param env Pointer to environment struct * @param sct_id id of security context token * @param rampart_context pointer to rampart context structure * @param msg_ctx pointer to message context structure * @returns shared secret of the security context token. returned buffer should NOT be freed */ AXIS2_EXTERN oxs_buffer_t *AXIS2_CALL sct_provider_get_secret_using_id( const axutil_env_t* env, axis2_char_t* sct_id, rampart_context_t* rampart_context, axis2_msg_ctx_t* msg_ctx) { security_context_token_t* sct = NULL; /* since we are getting secret using id, we don't need to specify whether encryption or * signature. Also we don't need to care about policy property of token */ sct = sct_provider_get_sct(env, NULL, AXIS2_TRUE, sct_id, rampart_context, msg_ctx); if(!sct) return NULL; return security_context_token_get_secret(sct, env); } /** * Finds security context token and gets the xml representation of token * @param env Pointer to environment struct * @param token rampart policy property of the token * @param is_encryption boolean showing whether the token is needed for encryption or signature * @param rampart_context pointer to rampart context structure * @param msg_ctx pointer to message context structure * @returns shared secret of the security context token. returned buffer should NOT be freed */ AXIS2_EXTERN axiom_node_t *AXIS2_CALL sct_provider_get_token( const axutil_env_t* env, rp_property_t *token, axis2_bool_t is_encryption, rampart_context_t* rampart_context, axis2_msg_ctx_t* msg_ctx) { security_context_token_t* sct = NULL; sct = sct_provider_get_sct(env, token, is_encryption, NULL, rampart_context, msg_ctx); if(!sct) return NULL; return security_context_token_get_token(sct, env); } /** * Finds security context token and gets the xml representation of key reference. This reference * is used when security context token is included in the message * @param env Pointer to environment struct * @param token rampart policy property of the token * @param is_encryption boolean showing whether the token is needed for encryption or signature * @param rampart_context pointer to rampart context structure * @param msg_ctx pointer to message context structure * @returns shared secret of the security context token. returned buffer should NOT be freed */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL sct_provider_get_attached_reference( const axutil_env_t* env, rp_property_t *token, axis2_bool_t is_encryption, rampart_context_t* rampart_context, axis2_msg_ctx_t* msg_ctx) { security_context_token_t* sct = NULL; sct = sct_provider_get_sct(env, token, is_encryption, NULL, rampart_context, msg_ctx); if(!sct) return NULL; return security_context_token_get_attached_reference(sct, env); } /** * Finds security context token and gets the xml representation of key reference. This reference * is used when security context token is NOT included in the message * @param env Pointer to environment struct * @param token rampart policy property of the token * @param is_encryption boolean showing whether the token is needed for encryption or signature * @param rampart_context pointer to rampart context structure * @param msg_ctx pointer to message context structure * @returns shared secret of the security context token. returned buffer should NOT be freed */ AXIS2_EXTERN axiom_node_t* AXIS2_CALL sct_provider_get_unattached_reference( const axutil_env_t* env, rp_property_t *token, axis2_bool_t is_encryption, rampart_context_t* rampart_context, axis2_msg_ctx_t* msg_ctx) { security_context_token_t* sct = NULL; sct = sct_provider_get_sct(env, token, is_encryption, NULL, rampart_context, msg_ctx); if(!sct) return NULL; return security_context_token_get_unattached_reference(sct, env); } /** * 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. * @param env Pointer to environment struct * @param sct_node axiom node representation of security context token. * @param rampart_context pointer to rampart context structure * @param msg_ctx pointer to message context structure * @returns AXIS2_TRUE is sct is valid. AXIS2_FALSE otherwise. */ AXIS2_EXTERN axis2_status_t AXIS2_CALL sct_provider_validate_security_context_token( const axutil_env_t *env, axiom_node_t *sct_node, rampart_context_t *rampart_context, axis2_msg_ctx_t *msg_ctx) { validate_security_context_token_fn validate_fn = NULL; void *user_param = NULL; validate_fn = rampart_context_get_validate_security_context_token_fn(rampart_context, env); user_param = rampart_context_get_security_context_token_user_params(rampart_context, env); return validate_fn(env, sct_node, msg_ctx, user_param); } /* This method will request security context token from STS */ static security_context_token_t* sct_provider_obtain_token_from_sts( const axutil_env_t* env, rp_security_context_token_t* rp_sct, axis2_msg_ctx_t* msg_ctx, rampart_context_t *rampart_context) { axis2_char_t* issuer_address = NULL; axis2_char_t* client_home = NULL; axis2_conf_ctx_t* conf_ctx = NULL; axis2_ctx_t *ctx = NULL; axutil_property_t *property = NULL; axis2_char_t *addressing_version_from_msg_ctx = NULL; axis2_bool_t is_soap11 = AXIS2_FALSE; trust_sts_client_t* sts_client = NULL; trust_context_t* trust_context = NULL; trust_rst_t* rst = NULL; trust_rstr_t* rstr = NULL; security_context_token_t *sct = NULL; neethi_policy_t *sts_policy = NULL; neethi_policy_t *cloned_policy = NULL; oxs_buffer_t *buffer = NULL; axis2_bool_t is_sc10 = AXIS2_FALSE; /* Get the token issuer address. If the address is not valid, then issuer should be same as the service. So get the service end point */ issuer_address = rp_security_context_token_get_issuer(rp_sct, env); if(!issuer_address) { axis2_endpoint_ref_t *endpoint = NULL; endpoint = axis2_msg_ctx_get_to(msg_ctx, env); if(endpoint) { issuer_address = (axis2_char_t*)axis2_endpoint_ref_get_address(endpoint, env); } if(!issuer_address) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Token issuer address is not valid."); return NULL; } } is_sc10 = rp_security_context_token_get_sc10_security_context_token(rp_sct, env); /* Get the client home from msg_ctx */ conf_ctx = axis2_msg_ctx_get_conf_ctx(msg_ctx, env); if(conf_ctx) { axis2_conf_t *conf = NULL; conf = axis2_conf_ctx_get_conf(conf_ctx, env); if(conf) { client_home = (axis2_char_t*)axis2_conf_get_repo(conf, env); } } if(!client_home) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Cannot get client home. Unable to send request to Security Token Service."); return NULL; } /* Get the addressing namespace to be used from msg_ctx */ ctx = axis2_msg_ctx_get_base(msg_ctx, env); property = axis2_ctx_get_property(ctx, env, AXIS2_WSA_VERSION); if(property) { addressing_version_from_msg_ctx = axutil_property_get_value(property, env); } /* get the soap version */ is_soap11 = axis2_msg_ctx_get_is_soap_11(msg_ctx, env); /* Create sts client and set the values (client home, issuer_address, etc.) */ sts_client = trust_sts_client_create(env); if(!sts_client) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Cannot create client to Security Token Service."); return NULL; } trust_sts_client_set_home_dir(sts_client, env, client_home); trust_sts_client_set_issuer_address(sts_client, env, issuer_address); /* create trust context and populate it */ trust_context = trust_context_create(env); if(!trust_context) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Cannot create trust context. Cannot communicate with Token Service."); return NULL; } rst = trust_rst_create(env); if(!trust_context) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Cannot create token request. Cannot communicate with Token Service."); return NULL; } trust_rst_set_request_type(rst, env, TRUST_REQ_TYPE_ISSUE); if(is_sc10) { trust_rst_set_token_type(rst, env, OXS_VALUE_TYPE_SECURITY_CONTEXT_TOKEN_05_02); trust_rst_set_wst_ns_uri(rst, env, TRUST_WST_XMLNS_05_02); trust_rst_set_wsa_action(rst, env, SECCONV_200502_REQUEST_ISSUE_ACTION); } else { trust_rst_set_token_type(rst, env, OXS_VALUE_TYPE_SECURITY_CONTEXT_TOKEN_05_12); trust_rst_set_wst_ns_uri(rst, env, TRUST_WST_XMLNS_05_12); trust_rst_set_wsa_action(rst, env, SECCONV_200512_REQUEST_ISSUE_ACTION); } trust_context_set_rst(trust_context, env, rst); /* call sts_client to get the token from sts. We should create a clone of that policy */ sts_policy = rp_security_context_token_get_bootstrap_policy(rp_sct, env); if(sts_policy) { cloned_policy = neethi_engine_get_normalize(env, AXIS2_FALSE, sts_policy); } buffer = trust_sts_client_request_security_token_using_policy( sts_client, env, trust_context, cloned_policy, addressing_version_from_msg_ctx, is_soap11, get_new_rampart_context(env, msg_ctx)); /* Obtain the reply from sts */ rstr = trust_context_get_rstr(trust_context, env); if(!rstr) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Cannot get token response from Token Service. RSTR is invalid."); return NULL; } /* Create security context token and populate it with details given */ sct = security_context_token_create(env); if(is_sc10) { security_context_token_set_is_sc10(sct, env, AXIS2_TRUE); } else { security_context_token_set_is_sc10(sct, env, AXIS2_FALSE); } security_context_token_set_token(sct, env, trust_rstr_get_requested_security_token(rstr, env)); security_context_token_set_attached_reference( sct, env, trust_rstr_get_requested_attached_reference(rstr, env)); security_context_token_set_unattached_reference( sct, env, trust_rstr_get_requested_unattached_reference(rstr, env)); if(buffer) { security_context_token_set_secret(sct, env, buffer); } else { security_context_token_set_requested_proof_token( sct, env, trust_rstr_get_requested_proof_token(rstr, env)); } /* Now we can clear unwanted stuff */ trust_context_free(trust_context, env); trust_sts_client_free(sts_client, env); return sct; } /* Default place to store sct will be in a hash map. This will be the free method for that hash map. * It will be called when hash map is destroyed */ static void sct_provider_sct_hash_store_free( axutil_hash_t *sct_hash_store, const axutil_env_t *env) { axutil_hash_index_t *hi = NULL; for (hi = axutil_hash_first(sct_hash_store, env); hi != NULL; hi = axutil_hash_next(env, hi)) { void *v = NULL; axutil_hash_this(hi, NULL, NULL, &v); if (v) { security_context_token_free((security_context_token_t*)v, env); } } axutil_hash_free(sct_hash_store, env); } /* Default place to store sct will be in a hash map. This method creates the hash map and store it * in context hierarchy. If it is already created, will get it from context hierarchy */ static axutil_hash_t * sct_provider_get_sct_hash_store( const axutil_env_t *env, axis2_msg_ctx_t* msg_ctx) { axis2_conf_ctx_t *conf_ctx = NULL; axis2_ctx_t *ctx = NULL; axutil_property_t *property = NULL; axutil_hash_t *hash_store = NULL; /* Get the conf ctx */ conf_ctx = axis2_msg_ctx_get_conf_ctx(msg_ctx, env); if(!conf_ctx) { AXIS2_LOG_ERROR(env->log,AXIS2_LOG_SI, "[rampart]Config context is NULL. Cannot get security context token hash store."); return NULL; } ctx = axis2_conf_ctx_get_base(conf_ctx,env); if(!ctx) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Axis2 context is NULL. Cannot get security context token hash store."); return NULL; } /* Get the hash store property */ property = axis2_ctx_get_property(ctx, env, RAMPART_SCT_PROVIDER_HASH_PROB); if(property) { /* Get the store */ hash_store = (axutil_hash_t*)axutil_property_get_value(property, env); } else { axutil_property_t *hash_store_prop = NULL; hash_store = axutil_hash_make(env); hash_store_prop = axutil_property_create_with_args(env, AXIS2_SCOPE_APPLICATION, AXIS2_TRUE, (void *)sct_provider_sct_hash_store_free, hash_store); axis2_ctx_set_property(ctx, env, RAMPART_SCT_PROVIDER_HASH_PROB, hash_store_prop); } return hash_store; } /** * Default implementation of obtain sct function. If neither sct_provider nor user defined * obtain function is given, this function will be used. (obtain_security_context_token_fn) * @param env pointer to environment struct * @param is_encryption boolean denotes sct is needed for encryption or signature * @param msg_ctx pointer to message context structure * @param sct_id identifier of security context token. Can be NULL * @param sct_id_type type of sct id. can be global, local or unknown * @param user_params parameter provided by user (not used in this method) * return security context token if found. NULL otherwise. */ AXIS2_EXTERN void* AXIS2_CALL sct_provider_obtain_sct_default( const axutil_env_t *env, axis2_bool_t is_encryption, axis2_msg_ctx_t* msg_ctx, axis2_char_t *sct_id, int sct_id_type, void* user_params) { axutil_hash_t *hash_store = NULL; security_context_token_t *sct = NULL; AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[rampart]Using default sct provider obtain function."); /* sct should be get from global pool */ axutil_allocator_switch_to_global_pool(env->allocator); /* Get sct hash store */ hash_store = sct_provider_get_sct_hash_store(env, msg_ctx); if(!hash_store) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Cannot find security context token storage."); return NULL; } /* get the sct if sct_id is given */ if(sct_id) { /* set env */ axutil_hash_set_env(hash_store, env); sct = (security_context_token_t *)axutil_hash_get( hash_store, sct_id, AXIS2_HASH_KEY_STRING); } else { /* we don't support stored security context token in default implementation. * Otherwise, it will be a security hole. */ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Default implementation does not support stored security context token." " Please provide sct_provider module."); } axutil_allocator_switch_to_local_pool(env->allocator); return sct; } /** * Default implementation of store sct function. If neither sct_provider nor user defined * store function is given, this function will be used. (store_security_context_token_fn) * @param env pointer to environment struct * @param msg_ctx pointer to message context structure * @param sct_global_id global identifier of security context token. Can be NULL * @param sct_local_id local identifier of security context token. Can be NULL * @param sct security context token to be stored * @param user_params parameter provided by user (not used in this method) * return AXIS2_SUCCESS if stored. AXIS2_FAILURE otherwise. */ AXIS2_EXTERN axis2_status_t AXIS2_CALL sct_provider_store_sct_default( const axutil_env_t *env, axis2_msg_ctx_t* msg_ctx, axis2_char_t *sct_global_id, axis2_char_t *sct_local_id, void *sct, void *user_params) { axutil_hash_t *hash_store = NULL; axis2_status_t status = AXIS2_SUCCESS; AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[rampart]Using default sct provider store function."); /* if given sct is null, then we can't store it */ if(!sct) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Security context token to be stored in not valid."); return AXIS2_FAILURE; } /* sct should be stored in global pool */ axutil_allocator_switch_to_global_pool(env->allocator); /* Get sct hash store */ hash_store = sct_provider_get_sct_hash_store(env, msg_ctx); if(hash_store) { /* set env */ axutil_hash_set_env(hash_store, env); /* store sct */ if(sct_global_id) { axutil_hash_set(hash_store, sct_global_id, AXIS2_HASH_KEY_STRING, sct); if(sct_local_id) { security_context_token_increment_ref(sct, env); axutil_hash_set(hash_store, sct_local_id, AXIS2_HASH_KEY_STRING, sct); } } else { if(sct_local_id) { axutil_hash_set(hash_store, sct_local_id, AXIS2_HASH_KEY_STRING, sct); } else { /* if both local_id and global_id are NULL, then we can't store it */ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Security context token identifiers are not valid. " "Cannot store security context token. "); status = AXIS2_FAILURE; } } } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Cannot find security context token storage."); status = AXIS2_FAILURE; } axutil_allocator_switch_to_local_pool(env->allocator); return status; } /** * Default implementation of delete sct function. If neither sct_provider nor user defined * store function is given, this function will be used. (delete_security_context_token_fn) * @param env pointer to environment struct * @param msg_ctx pointer to message context structure * @param sct_id identifier of security context token. Should not be NULL. * @param sct_id_type type of sct id. can be global or local. * @param user_params parameter provided by user (not used in this method) * @return AXIS2_SUCCESS if deleted. AXIS2_FAILURE otherwise. */ AXIS2_EXTERN axis2_status_t AXIS2_CALL sct_provider_delete_sct_default( const axutil_env_t *env, axis2_msg_ctx_t* msg_ctx, axis2_char_t *sct_id, int sct_id_type, void* user_params) { /* delete method is not implemented, because we are still not supporting sct cancel function */ AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[rampart]Using default sct provider delete function."); return AXIS2_SUCCESS; } /** * Default implementation of validate sct function. If neither sct_provider nor user defined * store function is given, this function will be used. (validate_security_context_token_fn) * @param env pointer to environment struct * @param sct_node axiom representation of security context token * @param user_params parameter provided by user (not used in this method) * @return AXIS2_SUCCESS if valid. AXIS2_FAILURE otherwise. */ AXIS2_EXTERN axis2_status_t AXIS2_CALL sct_provider_validate_sct_default( const axutil_env_t *env, axiom_node_t *sct_node, axis2_msg_ctx_t *msg_ctx, void *user_params) { /* default implementation does not need to validate anything. We haven't extended the * functionality of sct */ AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[rampart]Using default sct provider validate function."); return AXIS2_SUCCESS; } /* this is used to create a new rampart context and copy details given by rampart specific * assertions. */ static rampart_context_t * get_new_rampart_context( const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx) { rampart_context_t *in_rampart_ctx = NULL; rampart_context_t *out_rampart_ctx = NULL; oxs_key_mgr_t *key_mgr = NULL; in_rampart_ctx = (rampart_context_t*)rampart_get_rampart_configuration( env, msg_ctx, RAMPART_CONFIGURATION); /* rampart context is not given by user. It was built by policy */ if(!in_rampart_ctx) { return NULL; } out_rampart_ctx = rampart_context_create(env); if(!out_rampart_ctx) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Cannot create new rampart context. Insufficient memory."); return NULL; } rampart_context_set_ttl(out_rampart_ctx, env, rampart_context_get_ttl(in_rampart_ctx, env)); rampart_context_set_user(out_rampart_ctx, env, axutil_strdup(env, rampart_context_get_user(in_rampart_ctx, env))); rampart_context_set_password_type(out_rampart_ctx, env, rampart_context_get_password_type(in_rampart_ctx, env)); rampart_context_set_password(out_rampart_ctx, env, rampart_context_get_password(in_rampart_ctx, env)); rampart_context_set_pwcb_function(out_rampart_ctx, env, rampart_context_get_pwcb_function(in_rampart_ctx, env), rampart_context_get_pwcb_user_params(in_rampart_ctx, env)); rampart_context_set_replay_detect_function(out_rampart_ctx, env, rampart_context_get_replay_detect_function(in_rampart_ctx, env), rampart_context_get_rd_user_params(in_rampart_ctx, env)); rampart_context_set_rd_val(out_rampart_ctx, env, rampart_context_get_rd_val(in_rampart_ctx, env)); /* set key manager as well */ key_mgr = rampart_context_get_key_mgr(in_rampart_ctx, env); if(key_mgr) { oxs_key_mgr_increment_ref(key_mgr, env); rampart_context_set_key_mgr(out_rampart_ctx, env, key_mgr); } return out_rampart_ctx; } rampartc-src-1.3.0/src/secconv/Makefile.in0000644000076500007650000003276111202453550020265 0ustar shankarshankar# Makefile.in generated by automake 1.10.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = src/secconv DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libsecconv_la_LIBADD = am_libsecconv_la_OBJECTS = sct_provider_utility.lo \ security_context_token.lo libsecconv_la_OBJECTS = $(am_libsecconv_la_OBJECTS) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = $(libsecconv_la_SOURCES) DIST_SOURCES = $(libsecconv_la_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ AXIOMINC = @AXIOMINC@ AXIS2INC = @AXIS2INC@ AXIS2LIB = @AXIS2LIB@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NEETHIINC = @NEETHIINC@ OBJEXT = @OBJEXT@ OPENSSLINC = @OPENSSLINC@ OPENSSLLIB = @OPENSSLLIB@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UTILINC = @UTILINC@ VERSION = @VERSION@ VERSION_NO = @VERSION_NO@ XMLSCHEMAINC = @XMLSCHEMAINC@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ noinst_LTLIBRARIES = libsecconv.la libsecconv_la_SOURCES = sct_provider_utility.c \ security_context_token.c INCLUDES = -I$(top_builddir)/include \ -I ../../../../util/include \ -I ../../../../include \ -I ../../../../axiom/include \ @OPENSSLINC@ \ @UTILINC@ \ @AXIOMINC@ \ @AXIS2INC@ all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/secconv/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu src/secconv/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ test "$$dir" != "$$p" || dir=.; \ echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done libsecconv.la: $(libsecconv_la_OBJECTS) $(libsecconv_la_DEPENDENCIES) $(LINK) $(libsecconv_la_OBJECTS) $(libsecconv_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sct_provider_utility.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/security_context_token.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-exec-am: install-html: install-html-am install-info: install-info-am install-man: install-pdf: install-pdf-am install-ps: install-ps-am installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: rampartc-src-1.3.0/COPYING0000644000076500007650000002613711202453435015026 0ustar shankarshankar Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] 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. rampartc-src-1.3.0/test/0000755000076500007650000000000011202454512014736 5ustar shankarshankarrampartc-src-1.3.0/test/openssl/0000755000076500007650000000000011202454512016421 5ustar shankarshankarrampartc-src-1.3.0/test/openssl/Makefile.am0000644000076500007650000000002311202453356020455 0ustar shankarshankarSUBDIRS = sign rampartc-src-1.3.0/test/openssl/deskey.bin0000644000076500007650000000002111202453356020375 0ustar shankarshankar0123456701234567 rampartc-src-1.3.0/test/openssl/block_cipher_test.c0000644000076500007650000001320311202453356022254 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include #include #include #include #include axutil_env_t *test_init() { axutil_allocator_t *allocator = axutil_allocator_init(NULL); axutil_error_t *error = (axutil_error_t*)axis2_error_create(allocator); axutil_env_t *env = axutil_env_create_with_error(allocator, error); return env; } #if 0 int decrypt(axutil_env_t *env, oxs_buffer_ptr in, unsigned char *key, unsigned char *iv) { openssl_evp_block_cipher_ctx_ptr bc_ctx = NULL; oxs_buffer_ptr out = NULL; oxs_buffer_ptr decoded_buf = NULL; int ret; printf("--Decrypt started--------------------------------------------\n"); out = oxs_create_buffer(env, OXS_BUFFER_INITIAL_SIZE); bc_ctx = openssl_evp_block_cipher_ctx_create(env); if (!bc_ctx) return(-1); /*Set the key*/ bc_ctx->key = key; bc_ctx->key_initialized = 1; /*Set the IV*/ bc_ctx->iv = iv; ret = openssl_evp_block_cipher_ctx_init(env, bc_ctx, OPENSSL_DECRYPT, (unsigned char*)OPENSSL_EVP_aes_128_cbc); if (ret < 0) { return -1; } /*Now Decode */ decoded_buf = oxs_base64_decode(env, in); if (!decoded_buf) return -1; ret = openssl_block_cipher_crypt(env, bc_ctx, decoded_buf, out, OPENSSL_DECRYPT); if (ret < 0) { return -1; } printf("\nOut Size =\n %d ", out->size); printf("\nOut Data =\n %s ", out->data); return (0); } #endif int main() { FILE *outf; /*FILE *outf2; oxs_buffer_ptr encoded_buf = NULL; oxs_buffer_ptr out = NULL; */ axutil_env_t *env = NULL; oxs_buffer_ptr in = NULL; axis2_char_t *plain_text = NULL; unsigned char *out_main_buf = NULL , *out_main_buf2 = NULL; unsigned char key[EVP_MAX_KEY_LENGTH] = "012345670123456701234567"; unsigned char iv[EVP_MAX_IV_LENGTH] = "01234567"; unsigned char *cipher_name = NULL; openssl_evp_block_cipher_ctx_ptr bc1_ctx = NULL; openssl_evp_block_cipher_ctx_ptr bc2_ctx = NULL; int ret, encrypted_len, decrypted_len; env = test_init(); printf("--Testing started Openssl Block Cipher--------------------------------------------\n"); #if 0 plain_text = "Upon successful completion, fread() returns the number of ...END" "Upon successful completion, fread() returns the number of ...END"; /*"This is an additional block :)";*/ #else plain_text = "PLAINTEXT"; #endif in = oxs_string_to_buffer(env, plain_text); cipher_name = (unsigned char*)OPENSSL_EVP_des_ede3_cbc; bc1_ctx = openssl_evp_block_cipher_ctx_create(env); if (!bc1_ctx) return(-1); /*Set the key*/ bc1_ctx->key = key; /*axutil_strdup(key, env);*/ bc1_ctx->key_initialized = 1; /*Set the IV*/ bc1_ctx->iv = axutil_strdup(env, iv); ret = openssl_evp_block_cipher_ctx_init(env, bc1_ctx, OPENSSL_ENCRYPT, cipher_name); if (ret < 0) { printf("openssl_evp_block_cipher_ctx_init failed\n"); return -1; } ret = openssl_block_cipher_crypt(env, bc1_ctx, in->data, strlen((char*)in->data), &out_main_buf, OPENSSL_ENCRYPT); if (ret < 0) { printf("openssl_block_cipher_crypt OPENSSL_ENCRYPT failed\n"); return -1; } encrypted_len = ret; printf("\nEncrypted data size =%d \n ", ret); outf = fopen("outbuf", "wb"); fwrite(out_main_buf, 1, ret, outf); /* out = oxs_create_buffer(env, ret);*/ /*********************Decrypt***********************/ bc2_ctx = openssl_evp_block_cipher_ctx_create(env); if (!bc2_ctx) return(-1); /*Set the key*/ bc2_ctx->key = key; /*axutil_strdup(key, env);*/ bc2_ctx->key_initialized = 1; /*Set the IV*/ bc2_ctx->iv = axutil_strdup(env, iv); ret = openssl_evp_block_cipher_ctx_init(env, bc2_ctx, OPENSSL_DECRYPT, cipher_name); if (ret < 0) { printf("openssl_evp_block_cipher_ctx_init failed\n"); return -1; } ret = openssl_block_cipher_crypt(env, bc2_ctx, out_main_buf, encrypted_len, &out_main_buf, OPENSSL_DECRYPT); if (ret < 0) { printf("openssl_block_cipher_crypt OPENSSL_DECRYPT failed\n"); return -1; } decrypted_len = ret; printf("\nDecrypted data[%d] %s\n ", ret, out_main_buf2); #if 0 /*Now Encode */ encoded_buf = oxs_base64_encode(env, out); if (!encoded_buf) return -1; printf("\nencrypted_encoded_buf Size =\n %d ", encoded_buf->size); printf("\nencrypted_encoded_buf Data =\n %s ", encoded_buf->data); /*Now we need to decrypt*/ /*===============================================================*/ ret = decrypt(env, encoded_buf, key, iv); if (ret < 0) return -1; #endif return (0); } rampartc-src-1.3.0/test/openssl/sign/0000755000076500007650000000000011202454513017362 5ustar shankarshankarrampartc-src-1.3.0/test/openssl/sign/test.c0000644000076500007650000001242511202453356020515 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include axiom_node_t* load_sample_xml(const axutil_env_t *env, axis2_char_t* filename ) { axiom_document_t *doc = NULL; axiom_stax_builder_t *builder = NULL; axiom_xml_reader_t *reader = NULL; /*axiom_xml_writer_t *writer = NULL;*/ axiom_node_t *tmpl = NULL; reader = axiom_xml_reader_create_for_file(env, filename, NULL); if (!reader) printf("\n Reader is NULL"); builder = axiom_stax_builder_create(env, reader); if (!builder) printf("\n builder is NULL"); doc = axiom_document_create(env, NULL, builder); if (!doc) printf("\n doc is NULL"); tmpl = axiom_document_build_all(doc, env); /* tmpl = axiom_document_get_root_element(doc, env);*/ if (!tmpl) printf("\n tmpl is NULL"); return tmpl; } axis2_char_t * c14n(axutil_env_t *env, axis2_char_t* filename) { axiom_document_t *doc = NULL; axis2_char_t *algo = NULL; axis2_char_t *c14nized = NULL; axiom_node_t *input = NULL; FILE *outf = NULL; input = load_sample_xml(env, filename); doc = axiom_node_get_document(input, env); algo = OXS_HREF_TRANSFORM_XML_EXC_C14N; oxs_c14n_apply_algo(env, doc, &c14nized, NULL, (axiom_node_t*)input, algo); outf = fopen("c14n.txt", "w"); fwrite(c14nized, 1, strlen(c14nized), outf); return c14nized; } axis2_char_t* digest(axutil_env_t *env, axis2_char_t *in){ axis2_char_t *dg = NULL; FILE *outf = NULL; dg = openssl_sha1(env, in, strlen(in)); outf = fopen("digest.txt", "w"); fwrite(dg, 1, strlen(dg), outf); printf("DIGEST = %s", dg); return dg; } int main() { axutil_env_t *env = NULL; axis2_status_t status = AXIS2_FAILURE; oxs_buffer_t *inbuf = NULL; oxs_buffer_t *outbuf = NULL; openssl_pkey_t *prvkey = NULL; openssl_pkey_t *pubkey = NULL; oxs_x509_cert_t *cert = NULL; char *data = "Winners in good times and survivors in hard times"; int len = -1; env = axutil_env_create_all("./openssl.log", AXIS2_LOG_LEVEL_TRACE); #if 0 /*new code*/ { axis2_char_t *c14op = NULL; axis2_char_t *digestop = NULL; /*FILE *inf = NULL;*/ /*c14op = c14n(env, "input.xml");*/ /*inf = fopen("c14n.txt", "r"); c14op = malloc(2000); fread(c14op, 1, 1999, inf);*/ c14op = "Testing Rampart with WS-SecPolicy"; digestop = digest(env, c14op); return 0; } /*eof new code*/ #endif /*Load private key*/ prvkey = oxs_key_mgr_load_private_key_from_pem_file(env, "key.pem", ""); if(!prvkey){ printf("Cannot load private key"); return 0; } /*Load certificate*/ cert = oxs_key_mgr_load_x509_cert_from_pem_file(env, "cert.pem"); if(!cert){ printf("Cannot load certificate"); return 0; } inbuf = oxs_buffer_create(env); oxs_buffer_populate(inbuf, env, (unsigned char *)data, strlen(data)); outbuf = oxs_buffer_create(env); /*Sign*/ printf("Signing\n"); len = openssl_sig_sign(env, prvkey, inbuf, outbuf); if(len < 0 ){ printf("Signing failed\n"); return 0; }else{ printf("Signing OK. Sig len = %d\n", len); } /*Verify*/ printf("Verifying\n"); pubkey = oxs_x509_cert_get_public_key(cert, env); status = openssl_sig_verify(env, pubkey, inbuf, outbuf); if(AXIS2_SUCCESS != status){ printf("Sign verification failed\n"); }else{ printf("Sign verification success\n"); } return 0; } rampartc-src-1.3.0/test/openssl/sign/cert.pem0000644000076500007650000000613611202453356021034 0ustar shankarshankarCertificate: Data: Version: 3 (0x2) Serial Number: dc:83:fa:3c:1e:93:11:ae Signature Algorithm: sha1WithRSAEncryption Issuer: C=SL, ST=WP, O=WS, OU=C, CN=Kaushalye/emailAddress=kaus@wso2.com Validity Not Before: Dec 6 10:27:18 2006 GMT Not After : Dec 6 10:27:18 2007 GMT Subject: C=SL, ST=WP, L=Katubedda, O=WS, OU=C, CN=Aaa/emailAddress=aaa@ws.com Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public Key: (1024 bit) Modulus (1024 bit): 00:c7:e1:d8:5c:ef:16:dd:5d:05:95:c8:16:7c:2f: f5:13:15:b4:7a:0c:c8:fb:95:c8:03:db:3d:a8:41: 5d:70:75:ce:27:15:e2:a3:ef:87:24:38:5a:ee:72: ea:70:c2:45:44:b5:dd:46:ca:51:60:15:ac:51:c3: 59:af:a8:17:85:af:cd:77:74:87:b2:4b:ab:13:e0: 00:82:2f:2a:d0:6b:12:7d:09:dc:52:dc:16:10:58: 46:38:74:c7:cf:98:96:e3:58:ce:8a:c8:31:fa:77: 6c:69:65:dc:a1:4c:38:e7:b0:9e:dc:64:06:ae:aa: 13:90:23:62:84:14:c0:9e:31 Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Basic Constraints: CA:FALSE Netscape Comment: OpenSSL Generated Certificate X509v3 Subject Key Identifier: 67:B7:BC:8C:22:29:1E:17:58:C6:43:91:A6:FB:82:E7:11:77:62:D6 X509v3 Authority Key Identifier: keyid:D7:27:10:74:4B:F8:2F:44:0B:BC:C7:9E:04:EF:22:5B:15:18:21:CC Signature Algorithm: sha1WithRSAEncryption 4d:36:00:f0:51:10:44:72:73:5f:09:e4:fe:ad:f4:5b:a0:48: 5f:50:50:d7:bb:bb:2a:98:b3:b7:d7:54:9e:57:6d:d2:cd:de: d5:d5:30:4d:c7:03:09:b4:7d:d8:72:17:f7:c6:e8:72:69:89: b9:bc:91:5a:a8:c8:9e:ee:76:0b:c2:ae:c2:65:59:94:5b:fe: a2:30:bf:aa:49:25:b1:42:bc:6d:c4:0a:99:aa:2d:17:14:d8: 8d:19:cd:75:22:84:51:22:55:4e:e1:9e:50:1f:c6:c2:57:e1: 4b:58:87:d5:73:c1:69:fd:25:dd:3d:50:ee:0e:9f:6a:9a:13: 52:45 -----BEGIN CERTIFICATE----- MIICzjCCAjegAwIBAgIJANyD+jwekxGuMA0GCSqGSIb3DQEBBQUAMGUxCzAJBgNV BAYTAlNMMQswCQYDVQQIEwJXUDELMAkGA1UEChMCV1MxCjAIBgNVBAsTAUMxEjAQ BgNVBAMTCUthdXNoYWx5ZTEcMBoGCSqGSIb3DQEJARYNa2F1c0B3c28yLmNvbTAe Fw0wNjEyMDYxMDI3MThaFw0wNzEyMDYxMDI3MThaMHAxCzAJBgNVBAYTAlNMMQsw CQYDVQQIEwJXUDESMBAGA1UEBxMJS2F0dWJlZGRhMQswCQYDVQQKEwJXUzEKMAgG A1UECxMBQzEMMAoGA1UEAxMDQWFhMRkwFwYJKoZIhvcNAQkBFgphYWFAd3MuY29t MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDH4dhc7xbdXQWVyBZ8L/UTFbR6 DMj7lcgD2z2oQV1wdc4nFeKj74ckOFrucupwwkVEtd1GylFgFaxRw1mvqBeFr813 dIeyS6sT4ACCLyrQaxJ9CdxS3BYQWEY4dMfPmJbjWM6KyDH6d2xpZdyhTDjnsJ7c ZAauqhOQI2KEFMCeMQIDAQABo3sweTAJBgNVHRMEAjAAMCwGCWCGSAGG+EIBDQQf Fh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUZ7e8jCIp HhdYxkORpvuC5xF3YtYwHwYDVR0jBBgwFoAU1ycQdEv4L0QLvMeeBO8iWxUYIcww DQYJKoZIhvcNAQEFBQADgYEATTYA8FEQRHJzXwnk/q30W6BIX1BQ17u7Kpizt9dU nldt0s3e1dUwTccDCbR92HIX98bocmmJubyRWqjInu52C8KuwmVZlFv+ojC/qkkl sUK8bcQKmaotFxTYjRnNdSKEUSJVTuGeUB/GwlfhS1iH1XPBaf0l3T1Q7g6fapoT UkU= -----END CERTIFICATE----- rampartc-src-1.3.0/test/openssl/sign/Makefile.am0000644000076500007650000000132511202453356021423 0ustar shankarshankarTESTS = test noinst_PROGRAMS = test SUBDIRS = AM_CFLAGS = -g -pthread #test_SOURCES = des_test.c test_SOURCES = test.c INCLUDES = -I$(top_builddir)/include \ -I ../../../include \ @OPENSSLINC@ \ @UTILINC@ \ @AXIOMINC@ \ @AXIS2INC@ test_LDADD = $(top_builddir)/src/util/librampart_util.la \ $(top_builddir)/src/omxmlsec/libomxmlsec.la \ $(top_builddir)/src/omxmlsec/openssl/libomopenssl.la \ $(top_builddir)/src/omxmlsec/tokens/liboxstokens.la \ ${AXIS2C_HOME}/lib/libaxis2_parser.la \ ${AXIS2C_HOME}/lib/libaxis2_axiom.la \ ${AXIS2C_HOME}/lib/libaxutil.la \ @OPENSSLLIB@\ -lxml2 \ -lssl rampartc-src-1.3.0/test/openssl/sign/key.pem0000644000076500007650000000156711202453356020672 0ustar shankarshankar-----BEGIN RSA PRIVATE KEY----- MIICWwIBAAKBgQDH4dhc7xbdXQWVyBZ8L/UTFbR6DMj7lcgD2z2oQV1wdc4nFeKj 74ckOFrucupwwkVEtd1GylFgFaxRw1mvqBeFr813dIeyS6sT4ACCLyrQaxJ9CdxS 3BYQWEY4dMfPmJbjWM6KyDH6d2xpZdyhTDjnsJ7cZAauqhOQI2KEFMCeMQIDAQAB AoGAQIrSvJ+PeIdTCFyFtjAeKL13e3mpZGOnJGek7zG8JFZF7SUJ+/maX726zwhY X3S7vUYkX3lw8V/ONtCnoyrZ/QQBqvUPUGg2XJI+NDYDrc3RR9YHTBFiYt791iXX 2/hpQJV7Fj2K40AxAgcDmOmsjhMROhc52cERXNUTvqo+sIECQQD+WbS0NQL4kcRZ kELonmCHNAFA+vYvfB82RCspctNbfoZUAUPn/BMWTf9jZms89mDGfzaWKP5xd9aB Hi7sTp4JAkEAyS204Q36vnbDh5Dzz5YkJNFTdgyrLTBIQ5r4ax+K1i6V/Mwq07Zw SCvdDaTiBHOSaVJSHE38iwZZxUsWAs6I6QJADGFlcFgcOukte4aQGy6KWEppvTX6 Abmy8ztCNpRGQW/ZLgGZwpL8gtttEPONSLxdXYwXpht8tx00LbjAY/Q3sQJAHqEg 2ur/9COs3WUKWd6oHhrotB51qWmidviPPfANeVKab2S+WIF8UuCqxTsHVloqPnLU IY8WFiyfWlR2Q3MikQJASXg8KPM8C8Jp17iBbF5f09V18iA1fAbQSaLk3Lcbp1/h 0VsiOHjW05LvI8zIHMX2Ops7qAjxixK1T/2ec9qhuQ== -----END RSA PRIVATE KEY----- rampartc-src-1.3.0/test/openssl/sign/Makefile.in0000644000076500007650000004762211202453551021443 0ustar shankarshankar# Makefile.in generated by automake 1.10.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ TESTS = test$(EXEEXT) noinst_PROGRAMS = test$(EXEEXT) subdir = test/openssl/sign DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = PROGRAMS = $(noinst_PROGRAMS) am_test_OBJECTS = test.$(OBJEXT) test_OBJECTS = $(am_test_OBJECTS) test_DEPENDENCIES = $(top_builddir)/src/util/librampart_util.la \ $(top_builddir)/src/omxmlsec/libomxmlsec.la \ $(top_builddir)/src/omxmlsec/openssl/libomopenssl.la \ $(top_builddir)/src/omxmlsec/tokens/liboxstokens.la \ ${AXIS2C_HOME}/lib/libaxis2_parser.la \ ${AXIS2C_HOME}/lib/libaxis2_axiom.la \ ${AXIS2C_HOME}/lib/libaxutil.la DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = $(test_SOURCES) DIST_SOURCES = $(test_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ AXIOMINC = @AXIOMINC@ AXIS2INC = @AXIS2INC@ AXIS2LIB = @AXIS2LIB@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NEETHIINC = @NEETHIINC@ OBJEXT = @OBJEXT@ OPENSSLINC = @OPENSSLINC@ OPENSSLLIB = @OPENSSLLIB@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UTILINC = @UTILINC@ VERSION = @VERSION@ VERSION_NO = @VERSION_NO@ XMLSCHEMAINC = @XMLSCHEMAINC@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = AM_CFLAGS = -g -pthread #test_SOURCES = des_test.c test_SOURCES = test.c INCLUDES = -I$(top_builddir)/include \ -I ../../../include \ @OPENSSLINC@ \ @UTILINC@ \ @AXIOMINC@ \ @AXIS2INC@ test_LDADD = $(top_builddir)/src/util/librampart_util.la \ $(top_builddir)/src/omxmlsec/libomxmlsec.la \ $(top_builddir)/src/omxmlsec/openssl/libomopenssl.la \ $(top_builddir)/src/omxmlsec/tokens/liboxstokens.la \ ${AXIS2C_HOME}/lib/libaxis2_parser.la \ ${AXIS2C_HOME}/lib/libaxis2_axiom.la \ ${AXIS2C_HOME}/lib/libaxutil.la \ @OPENSSLLIB@\ -lxml2 \ -lssl all: all-recursive .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/openssl/sign/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu test/openssl/sign/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh clean-noinstPROGRAMS: @list='$(noinst_PROGRAMS)'; for p in $$list; do \ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ echo " rm -f $$p $$f"; \ rm -f $$p $$f ; \ done test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) @rm -f test$(EXEEXT) $(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags check-TESTS: $(TESTS) @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \ srcdir=$(srcdir); export srcdir; \ list=' $(TESTS) '; \ if test -n "$$list"; then \ for tst in $$list; do \ if test -f ./$$tst; then dir=./; \ elif test -f $$tst; then dir=; \ else dir="$(srcdir)/"; fi; \ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ all=`expr $$all + 1`; \ case " $(XFAIL_TESTS) " in \ *$$ws$$tst$$ws*) \ xpass=`expr $$xpass + 1`; \ failed=`expr $$failed + 1`; \ echo "XPASS: $$tst"; \ ;; \ *) \ echo "PASS: $$tst"; \ ;; \ esac; \ elif test $$? -ne 77; then \ all=`expr $$all + 1`; \ case " $(XFAIL_TESTS) " in \ *$$ws$$tst$$ws*) \ xfail=`expr $$xfail + 1`; \ echo "XFAIL: $$tst"; \ ;; \ *) \ failed=`expr $$failed + 1`; \ echo "FAIL: $$tst"; \ ;; \ esac; \ else \ skip=`expr $$skip + 1`; \ echo "SKIP: $$tst"; \ fi; \ done; \ if test "$$failed" -eq 0; then \ if test "$$xfail" -eq 0; then \ banner="All $$all tests passed"; \ else \ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ fi; \ else \ if test "$$xpass" -eq 0; then \ banner="$$failed of $$all tests failed"; \ else \ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ fi; \ fi; \ dashes="$$banner"; \ skipped=""; \ if test "$$skip" -ne 0; then \ skipped="($$skip tests were not run)"; \ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ dashes="$$skipped"; \ fi; \ report=""; \ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ report="Please report to $(PACKAGE_BUGREPORT)"; \ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ dashes="$$report"; \ fi; \ dashes=`echo "$$dashes" | sed s/./=/g`; \ echo "$$dashes"; \ echo "$$banner"; \ test -z "$$skipped" || echo "$$skipped"; \ test -z "$$report" || echo "$$report"; \ echo "$$dashes"; \ test "$$failed" -eq 0; \ else :; fi distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ distdir=`$(am__cd) $(distdir) && pwd`; \ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ (cd $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$top_distdir" \ distdir="$$distdir/$$subdir" \ am__remove_distdir=: \ am__skip_length_check=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-recursive all-am: Makefile $(PROGRAMS) installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ mostlyclean-am distclean: distclean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-exec-am: install-html: install-html-recursive install-info: install-info-recursive install-man: install-pdf: install-pdf-recursive install-ps: install-ps-recursive installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ install-strip .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-TESTS check-am clean clean-generic \ clean-libtool clean-noinstPROGRAMS ctags ctags-recursive \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-recursive uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: rampartc-src-1.3.0/test/openssl/rsa/0000755000076500007650000000000011202454512017206 5ustar shankarshankarrampartc-src-1.3.0/test/openssl/rsa/test_rsa.c0000644000076500007650000000531111202453356021203 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include #include #include #include #include axutil_env_t *test_init() { axutil_allocator_t *allocator = axutil_allocator_init(NULL); axutil_error_t *error = (axutil_error_t*)axis2_error_create(allocator); axutil_env_t *env = axutil_env_create_with_error(allocator, error); return env; } int md5(){ axutil_env_t *env = NULL; axis2_char_t *plaintext = NULL; env = test_init(); plaintxt = (unsigned char *)"We will we will rock ya..."; openssl_md5(env, plaintxt , axutil_strlen(plaintxt)); printf("Finish md5() \n"); return 0; } int encdec() { axutil_env_t *env = NULL; evp_pkey_ptr pubk, prvk = NULL; unsigned char *plaintxt = NULL, *encrypted = NULL, *decrypted = NULL; oxs_buffer_ptr randkey = NULL; int ret; env = test_init(); plaintxt = (unsigned char *)"We will we will rock ya..."; /******************/ /* ret = generate_random_key(env, randkey, 24 ); if(ret < 0 ){ printf("Error generating random key \n"); return ret; }else{ printf("Generated random key is %s", randkey->data); }*/ /******************/ pubk = evp_pkey_load(env, "rsapub.pem", ""); ret = openssl_rsa_pub_encrypt(env, pubk, plaintxt, &encrypted); if (ret < 0) { printf("Encryption error \n"); return ret; } printf("Encrypted text = [%d]\n", ret); prvk = evp_pkey_load(env, "rsakey.pem", ""); ret = openssl_rsa_prv_decrypt(env, prvk, encrypted, &decrypted); if (ret < 0) { printf("Decryption error \n"); return ret; } printf("Decrypted text = [%d]\n%s\n", ret, decrypted); return 0; } int main() { /* return encdec();*/ return md5(); } rampartc-src-1.3.0/test/openssl/rsa/Makefile.am0000644000076500007650000000103311202453356021244 0ustar shankarshankarTESTS = test noinst_PROGRAMS = test SUBDIRS = AM_CFLAGS = -g -O2 -pthread #test_SOURCES = des_test.c test_SOURCES = test_rsa.c INCLUDES = -I$(top_builddir)/include \ @UTILINC@ \ @AXIOMINC@\ @OPENSSLINC@ test_LDADD = $(top_builddir)/src/util/librampart_util.la \ $(top_builddir)/src/omxmlsec/libomxmlsec.la \ $(top_builddir)/src/omxmlsec/openssl/libomopenssl.la \ -laxis2_util \ -laxis2_axiom \ @OPENSSLLIB@\ -laxis2_libxml2 \ -lxml2 rampartc-src-1.3.0/test/openssl/rsa/rsapub.pem0000644000076500007650000000042011202453356021206 0ustar shankarshankar-----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDC5sM/WS61ejcjwy67l+TviK7o 03g3KdJ6ZCktIKMADQOkARbg+KTPs33qcn3djqtcD4l+u/+JMKShVRD6Td7ELmeV uYcrPZWSrfH/gyD394bJE2gCHEMBj9UJ9xMRagcsqUouDt/UV5I/4KeMMpc0igTO 4Wo7SSYEVzIscBUXtwIDAQAB -----END PUBLIC KEY----- rampartc-src-1.3.0/test/openssl/rsa/rsakey.pem0000644000076500007650000000156711202453356021225 0ustar shankarshankar-----BEGIN RSA PRIVATE KEY----- MIICXAIBAAKBgQDC5sM/WS61ejcjwy67l+TviK7o03g3KdJ6ZCktIKMADQOkARbg +KTPs33qcn3djqtcD4l+u/+JMKShVRD6Td7ELmeVuYcrPZWSrfH/gyD394bJE2gC HEMBj9UJ9xMRagcsqUouDt/UV5I/4KeMMpc0igTO4Wo7SSYEVzIscBUXtwIDAQAB AoGAB7z1v4wg6J+jlM3pCxWqxz/cAe5zdW05qBZV9C65igT6QgaxC9mTYZO0yhwl lyhU8WDEir2YFbBSuP0RoX55+6pGP23I4wG0cEujZ2OZ8W0vNCwFL0gp15cLUxL2 8xVrJ24o1k4xVf6P85wLkfNeFTR3DqssIEMbu++pxiaIVKECQQDkK4pAASencmJa SzjECJxGiG+jpVEKwRFLHgvAKmdb8aY7n/awJchH/i92WmpE5C2Fc4xNRf3wo6VO Zjfgzsu5AkEA2qxuQDtcE1a+MQyaX7oA3mLEKcXon0T2rLeSWupuM0AkHCzTs8R1 JZ9DYSI8mOMuHxsV448kblnuJY3LNRsW7wJATZGfxnKeEIcKeLfp7Hsg5bmsem3R R16rimYEiKfhy5gzc0HGk8vEcvUvHYVPa2xHLX9Cy2JoGk8H+8c0Z/DlwQJAQ8fS 3MIJhk0K4vU/HJDxF/2RREl+E3Ay7dJw4RFtWyF0j+8tJ7mrfh/hqMgN9G3mq+mf XUvPRQ1HDgjnheyBrQJBAMS4TJlJ65ZC0yLtmcrBh8mWzW47qRjrqdybL2YNQvLw RskEXwTc127gJeOwiQFAfNyQzlN4do/fzcDztmiMgbI= -----END RSA PRIVATE KEY----- rampartc-src-1.3.0/test/openssl/Makefile.in0000644000076500007650000003437511202453551020504 0ustar shankarshankar# Makefile.in generated by automake 1.10.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = test/openssl DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ AXIOMINC = @AXIOMINC@ AXIS2INC = @AXIS2INC@ AXIS2LIB = @AXIS2LIB@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NEETHIINC = @NEETHIINC@ OBJEXT = @OBJEXT@ OPENSSLINC = @OPENSSLINC@ OPENSSLLIB = @OPENSSLLIB@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UTILINC = @UTILINC@ VERSION = @VERSION@ VERSION_NO = @VERSION_NO@ XMLSCHEMAINC = @XMLSCHEMAINC@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = sign all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/openssl/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu test/openssl/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ distdir=`$(am__cd) $(distdir) && pwd`; \ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ (cd $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$top_distdir" \ distdir="$$distdir/$$subdir" \ am__remove_distdir=: \ am__skip_length_check=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-exec-am: install-html: install-html-recursive install-info: install-info-recursive install-man: install-pdf: install-pdf-recursive install-ps: install-ps-recursive installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ install-strip .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic clean-libtool \ ctags ctags-recursive distclean distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: rampartc-src-1.3.0/test/Makefile.am0000644000076500007650000000004111202453357016773 0ustar shankarshankarSUBDIRS = openssl omxmlsec c14n rampartc-src-1.3.0/test/c14n/0000755000076500007650000000000011202454513015504 5ustar shankarshankarrampartc-src-1.3.0/test/c14n/test.c0000644000076500007650000000766311202453356016647 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include #include "oxs_c14n.h" int test(int argc, char **argv); void p_fail() { printf ("File cannot be processed. \n"); } int main(int argc, char **argv) { return test(argc, argv); /* return test2();*/ } /*int test2() { axutil_allocator_t *allocator = NULL; axutil_env_t *env = NULL; allocator = axutil_allocator_init(NULL); env = axutil_env_create(allocator); axiom_namespace_t *ns1 = axiom_namespace_create(env, "urn:ns1", "ns1"); axiom_namespace_t *ns2 = axiom_namespace_create(env, "urn:ns2", "ns2"); axiom_namespace_t *ns3 = axiom_namespace_create(env, "urn:ns3", "ns3"); return 0; }*/ int test(int argc, char **argv) { axutil_allocator_t *allocator = NULL; axutil_env_t *env = NULL; axis2_char_t *file = NULL; axiom_xml_reader_t *xml_reader = NULL; axiom_stax_builder_t *om_builder = NULL; axiom_document_t *doc = NULL; axutil_stream_t *stream = NULL; axis2_char_t *c14n_doc = NULL; int len; axis2_status_t res = AXIS2_SUCCESS; axiom_node_t *c14n_node = NULL; if (argc < 2) { printf("Usage: test_c14n filename [exclusive]\n"); return 1; } allocator = axutil_allocator_init(NULL); env = axutil_env_create(allocator); file = argv[1]; xml_reader = axiom_xml_reader_create_for_file(env, file, "UTF-8"); /*"ISO-8859-1")*/ if (!xml_reader) { p_fail(); return 1; } om_builder = axiom_stax_builder_create(env, xml_reader); if (!om_builder) { p_fail(); return 1; } doc = axiom_stax_builder_get_document(om_builder, env); axiom_document_build_all(doc, env); if (!doc) { p_fail(); return 1; } axis2_char_t *txt = NULL; /*res = oxs_c14n_apply(env, doc, AXIS2_TRUE, &txt, AXIS2_FALSE, NULL); printf("%s", txt);*/ /*printf("\n--------------stream:\n");*/ /*removed for xml_pp*/ stream = axutil_stream_create_basic(env); axiom_node_t *root_node = axiom_document_get_root_element(doc, env); c14n_node = axiom_node_get_first_element(root_node, env); if (argc>2 && !(argv[2][0]-'e')) res = oxs_c14n_apply_stream(env, doc, AXIS2_TRUE, stream, AXIS2_TRUE , NULL, c14n_node); else res = oxs_c14n_apply_stream(env, doc, AXIS2_TRUE, stream, AXIS2_FALSE , NULL, c14n_node); if (!res) return -1; /*error occured!*/ len = axutil_stream_get_len(stream, env) + 1; c14n_doc = (axis2_char_t*)AXIS2_MALLOC(env->allocator, len); axutil_stream_read(stream, env, c14n_doc, len); printf("%s",c14n_doc); if (txt) { AXIS2_FREE(env->allocator, txt); txt = NULL; } if (stream) { axutil_stream_free(stream, env); stream = NULL; } if (c14n_doc) { AXIS2_FREE(env->allocator, c14n_doc); c14n_doc = NULL; } if (om_builder) { axiom_stax_builder_free(om_builder, env); om_builder = NULL; } if (env) { axutil_env_free(env); env = NULL; } /*printf("\n");*/ return 0; } rampartc-src-1.3.0/test/c14n/Makefile.am0000644000076500007650000000070011202453356017541 0ustar shankarshankarTESTS = test_c14n noinst_PROGRAMS = test_c14n #AM_CFLAGS = -g -O2 -pthread test_c14n_SOURCES = test.c INCLUDES = -I$(top_builddir)/include \ @OPENSSLINC@ \ @AXIS2INC@ \ @UTILINC@ \ @AXIOMINC@ test_c14n_LDADD = ${AXIS2C_HOME}/lib/libaxutil.la \ ${AXIS2C_HOME}/lib/libaxis2_axiom.la \ ${AXIS2C_HOME}/lib/libaxis2_libxml2.la \ $(top_builddir)/src/omxmlsec/c14n/liboxsc14n.la \ @OPENSSLLIB@ rampartc-src-1.3.0/test/c14n/res/0000755000076500007650000000000011202454512016274 5ustar shankarshankarrampartc-src-1.3.0/test/c14n/res/ex5.xml0000644000076500007650000000012111202453356017516 0ustar shankarshankar rampartc-src-1.3.0/test/c14n/res/ex2.xml0000644000076500007650000000014311202453356017517 0ustar shankarshankar rampartc-src-1.3.0/test/c14n/res/ex3.xml0000644000076500007650000000016611202453356017525 0ustar shankarshankar rampartc-src-1.3.0/test/c14n/res/ex1.xml0000644000076500007650000000005311202453356017516 0ustar shankarshankar rampartc-src-1.3.0/test/c14n/res/g.xml0000644000076500007650000000035511202453356017254 0ustar shankarshankar rampartc-src-1.3.0/test/c14n/res/d.xml0000644000076500007650000000062711202453356017253 0ustar shankarshankar ' & ' rampartc-src-1.3.0/test/c14n/res/b.xml0000644000076500007650000000026711202453356017251 0ustar shankarshankar tex t rampartc-src-1.3.0/test/c14n/res/f.xml0000644000076500007650000000054611202453356017255 0ustar shankarshankar rampartc-src-1.3.0/test/c14n/res/a.xml0000644000076500007650000000053311202453356017244 0ustar shankarshankar rampartc-src-1.3.0/test/c14n/res/null.xml0000644000076500007650000000054111202453356017775 0ustar shankarshankar rampartc-src-1.3.0/test/c14n/res/e.xml0000644000076500007650000000015611202453356017251 0ustar shankarshankar © © more data some more 2 "0"]]> rampartc-src-1.3.0/test/c14n/res/ex4.xml0000644000076500007650000000020411202453356017517 0ustar shankarshankar rampartc-src-1.3.0/test/c14n/res/unicode.xml0000644000076500007650000000052611202453356020454 0ustar shankarshankar ]> UTF-8 character. numeric ref. entity ref. rampartc-src-1.3.0/test/c14n/res/ns1.xml0000644000076500007650000000025611202453356017527 0ustar shankarshankar rampartc-src-1.3.0/test/c14n/res/c.xml0000644000076500007650000000062311202453356017246 0ustar shankarshankar ' & ' rampartc-src-1.3.0/test/c14n/Makefile.in0000644000076500007650000003717611202453550017567 0ustar shankarshankar# Makefile.in generated by automake 1.10.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ TESTS = test_c14n$(EXEEXT) noinst_PROGRAMS = test_c14n$(EXEEXT) subdir = test/c14n DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = PROGRAMS = $(noinst_PROGRAMS) am_test_c14n_OBJECTS = test.$(OBJEXT) test_c14n_OBJECTS = $(am_test_c14n_OBJECTS) test_c14n_DEPENDENCIES = ${AXIS2C_HOME}/lib/libaxutil.la \ ${AXIS2C_HOME}/lib/libaxis2_axiom.la \ ${AXIS2C_HOME}/lib/libaxis2_libxml2.la \ $(top_builddir)/src/omxmlsec/c14n/liboxsc14n.la DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = $(test_c14n_SOURCES) DIST_SOURCES = $(test_c14n_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ AXIOMINC = @AXIOMINC@ AXIS2INC = @AXIS2INC@ AXIS2LIB = @AXIS2LIB@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NEETHIINC = @NEETHIINC@ OBJEXT = @OBJEXT@ OPENSSLINC = @OPENSSLINC@ OPENSSLLIB = @OPENSSLLIB@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UTILINC = @UTILINC@ VERSION = @VERSION@ VERSION_NO = @VERSION_NO@ XMLSCHEMAINC = @XMLSCHEMAINC@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ #AM_CFLAGS = -g -O2 -pthread test_c14n_SOURCES = test.c INCLUDES = -I$(top_builddir)/include \ @OPENSSLINC@ \ @AXIS2INC@ \ @UTILINC@ \ @AXIOMINC@ test_c14n_LDADD = ${AXIS2C_HOME}/lib/libaxutil.la \ ${AXIS2C_HOME}/lib/libaxis2_axiom.la \ ${AXIS2C_HOME}/lib/libaxis2_libxml2.la \ $(top_builddir)/src/omxmlsec/c14n/liboxsc14n.la \ @OPENSSLLIB@ all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/c14n/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu test/c14n/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh clean-noinstPROGRAMS: @list='$(noinst_PROGRAMS)'; for p in $$list; do \ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ echo " rm -f $$p $$f"; \ rm -f $$p $$f ; \ done test_c14n$(EXEEXT): $(test_c14n_OBJECTS) $(test_c14n_DEPENDENCIES) @rm -f test_c14n$(EXEEXT) $(LINK) $(test_c14n_OBJECTS) $(test_c14n_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags check-TESTS: $(TESTS) @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \ srcdir=$(srcdir); export srcdir; \ list=' $(TESTS) '; \ if test -n "$$list"; then \ for tst in $$list; do \ if test -f ./$$tst; then dir=./; \ elif test -f $$tst; then dir=; \ else dir="$(srcdir)/"; fi; \ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ all=`expr $$all + 1`; \ case " $(XFAIL_TESTS) " in \ *$$ws$$tst$$ws*) \ xpass=`expr $$xpass + 1`; \ failed=`expr $$failed + 1`; \ echo "XPASS: $$tst"; \ ;; \ *) \ echo "PASS: $$tst"; \ ;; \ esac; \ elif test $$? -ne 77; then \ all=`expr $$all + 1`; \ case " $(XFAIL_TESTS) " in \ *$$ws$$tst$$ws*) \ xfail=`expr $$xfail + 1`; \ echo "XFAIL: $$tst"; \ ;; \ *) \ failed=`expr $$failed + 1`; \ echo "FAIL: $$tst"; \ ;; \ esac; \ else \ skip=`expr $$skip + 1`; \ echo "SKIP: $$tst"; \ fi; \ done; \ if test "$$failed" -eq 0; then \ if test "$$xfail" -eq 0; then \ banner="All $$all tests passed"; \ else \ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ fi; \ else \ if test "$$xpass" -eq 0; then \ banner="$$failed of $$all tests failed"; \ else \ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ fi; \ fi; \ dashes="$$banner"; \ skipped=""; \ if test "$$skip" -ne 0; then \ skipped="($$skip tests were not run)"; \ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ dashes="$$skipped"; \ fi; \ report=""; \ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ report="Please report to $(PACKAGE_BUGREPORT)"; \ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ dashes="$$report"; \ fi; \ dashes=`echo "$$dashes" | sed s/./=/g`; \ echo "$$dashes"; \ echo "$$banner"; \ test -z "$$skipped" || echo "$$skipped"; \ test -z "$$report" || echo "$$report"; \ echo "$$dashes"; \ test "$$failed" -eq 0; \ else :; fi distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-exec-am: install-html: install-html-am install-info: install-info-am install-man: install-pdf: install-pdf-am install-ps: install-ps-am installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ clean-generic clean-libtool clean-noinstPROGRAMS ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: rampartc-src-1.3.0/test/omxmlsec/0000755000076500007650000000000011202454513016566 5ustar shankarshankarrampartc-src-1.3.0/test/omxmlsec/test.c0000644000076500007650000002011111202453356017710 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include AXIS2_EXTERN axiom_node_t* AXIS2_CALL load_sample_xml(const axutil_env_t *env, axiom_node_t* tmpl, axis2_char_t* filename ) { axiom_document_t *doc = NULL; axiom_stax_builder_t *builder = NULL; axiom_xml_reader_t *reader = NULL; /*axiom_xml_writer_t *writer = NULL;*/ reader = axiom_xml_reader_create_for_file(env, filename, NULL); if (!reader) printf("\n Reader is NULL"); builder = axiom_stax_builder_create(env, reader); if (!builder) printf("\n builder is NULL"); doc = axiom_document_create(env, NULL, builder); if (!doc) printf("\n doc is NULL"); tmpl = axiom_document_build_all(doc, env); axiom_stax_builder_free_self(builder, env); builder = NULL; /* tmpl = axiom_document_get_root_element(doc, env);*/ if (!tmpl) printf("\n tmpl is NULL"); return tmpl; } axis2_status_t sign(axutil_env_t *env, axis2_char_t *filename, openssl_pkey_t *prvkey , oxs_x509_cert_t *cert) { axis2_char_t *signed_result = NULL; axis2_char_t *signed_filename = "result-sign.xml"; axiom_node_t *node = NULL; axiom_node_t *tmpl = NULL; oxs_sign_part_t *sign_part = NULL; oxs_sign_ctx_t *sign_ctx = NULL; oxs_transform_t *tr = NULL; axutil_array_list_t *sign_parts = NULL; axutil_array_list_t *tr_list = NULL; axis2_char_t *id = NULL; axis2_status_t status = AXIS2_FAILURE; FILE *outf; tmpl = load_sample_xml(env , tmpl, filename); if (tmpl) { printf("load_sample_xml SUCCESS\n"); } else { printf("load_sample_xml FAILED"); return -1; } /*Sign specific*/ sign_part = oxs_sign_part_create(env); tr_list = axutil_array_list_create(env, 1); /*We need C14N transform*/ tr = oxs_transforms_factory_produce_transform(env, OXS_HREF_TRANSFORM_XML_EXC_C14N); axutil_array_list_add(tr_list, env, tr); oxs_sign_part_set_transforms(sign_part, env, tr_list); /*We need to sign this node add an ID to it*/ node = axiom_node_get_first_element(tmpl, env); id = /*"Sig-ID-EFG";*/ oxs_util_generate_id(env,(axis2_char_t*)OXS_SIG_ID); oxs_axiom_add_attribute(env, node, OXS_WSU, OXS_WSSE_XMLNS, OXS_ATTR_ID, id); status = oxs_sign_part_set_node(sign_part, env,node); status = oxs_sign_part_set_digest_mtd(sign_part, env, OXS_HREF_SHA1); sign_parts = axutil_array_list_create(env, 1); axutil_array_list_add(sign_parts, env, sign_part); sign_ctx = oxs_sign_ctx_create(env); if(sign_ctx){ axiom_node_t *sig_node = NULL; oxs_sign_ctx_set_private_key(sign_ctx, env, prvkey); oxs_sign_ctx_set_certificate(sign_ctx, env, cert); /*Set sig algo*/ oxs_sign_ctx_set_sign_mtd_algo(sign_ctx, env, OXS_HREF_RSA_SHA1); /*Set C14N method*/ oxs_sign_ctx_set_c14n_mtd(sign_ctx, env, OXS_HREF_XML_EXC_C14N); /*Set sig parts*/ oxs_sign_ctx_set_sign_parts(sign_ctx, env, sign_parts); /*Set the operation*/ oxs_sign_ctx_set_operation(sign_ctx, env, OXS_SIGN_OPERATION_SIGN); /*Sign*/ oxs_xml_sig_sign(env, sign_ctx, tmpl, &sig_node); /*Finally build KeyInfo*/ oxs_xml_key_info_build(env, sig_node, cert, OXS_KIBP_X509DATA_X509CERTIFICATE); }else{ printf("Sign ctx creation failed"); } signed_result = axiom_node_to_string(tmpl, env) ; outf = fopen(signed_filename, "wb"); fwrite(signed_result, 1, axutil_strlen(signed_result), outf); return AXIS2_SUCCESS; } axis2_status_t verify(axutil_env_t *env, axis2_char_t *filename, openssl_pkey_t *prvkey , oxs_x509_cert_t *cert) { oxs_sign_ctx_t *sign_ctx = NULL; axiom_node_t *tmpl = NULL; axis2_status_t status = AXIS2_FAILURE; tmpl = load_sample_xml(env , tmpl, filename); printf("File : \n%s\n", axiom_node_to_string(tmpl, env)); sign_ctx = oxs_sign_ctx_create(env); if(sign_ctx){ axiom_node_t *sig_node = NULL; /*Set the operation*/ oxs_sign_ctx_set_operation(sign_ctx, env, OXS_SIGN_OPERATION_VERIFY); sig_node = oxs_axiom_get_first_child_node_by_name(env, tmpl, OXS_NODE_SIGNATURE, OXS_DSIG_NS, OXS_DS ); if(!sig_node){ printf("Verification : Cannot find ds:Signature node\n"); return AXIS2_FAILURE; } /**If the certificate is not given check key information*/ if(!cert){ axiom_node_t *ki_node = NULL; axiom_node_t *x509_node = NULL; ki_node = oxs_axiom_get_first_child_node_by_name(env, sig_node, OXS_NODE_KEY_INFO, OXS_DSIG_NS, OXS_DS); x509_node = oxs_axiom_get_first_child_node_by_name(env, ki_node, OXS_NODE_X509_DATA, OXS_DSIG_NS, OXS_DS); cert = oxs_x509_cert_create(env); printf("No certificate is given. Fetching certificate from the KeyInfo\n"); status = oxs_xml_key_process_X509Data(env, x509_node, cert); if(AXIS2_FAILURE == status){ printf("Error reading KeyInfo\n"); return AXIS2_FAILURE; } } /*Set certificate*/ if(cert){ oxs_sign_ctx_set_certificate(sign_ctx, env, cert); }else{ printf("Certificate is NULL\n"); return AXIS2_FAILURE; } /*Verify*/ status = oxs_xml_sig_verify(env, sign_ctx, sig_node, tmpl); if(AXIS2_SUCCESS != status){ printf("\nSignature Failed :-(\n"); }else{ printf("\nSignature Verified :-)\n"); } } return status; } int main(int argc, char *argv[]) { axutil_env_t *env = NULL; axis2_char_t *filename = NULL; axis2_char_t *certfile = NULL; axis2_char_t *prvkeyfile = NULL; axis2_char_t *operation = NULL; openssl_pkey_t *prvkey = NULL; oxs_x509_cert_t *cert = NULL; if (argc > 2){ filename = argv[1]; operation = argv[2]; certfile = argv[3]; prvkeyfile = argv[4]; }else{ printf("Usage ./test inputfile operation[S/V] certificate prvkey \n"); return -1; } env = axutil_env_create_all("./oxs.log", AXIS2_LOG_LEVEL_TRACE); printf("--Testing started--------------------------------------------\n"); /*Load private key*/ prvkey = oxs_key_mgr_load_private_key_from_pem_file(env, prvkeyfile, ""); if(!prvkey){ printf("Cannot load private key"); } /*Load certificate*/ cert = oxs_key_mgr_load_x509_cert_from_pem_file(env, certfile); if(!cert){ printf("Cannot load certificate"); } if(0 == axutil_strcmp(operation, "S")){ sign(env, filename, prvkey, cert); }else{ verify(env, filename, prvkey, cert); } printf("\nDONE\n"); return 0; } rampartc-src-1.3.0/test/omxmlsec/Makefile.am0000644000076500007650000000127211202453356020630 0ustar shankarshankarTESTS = test_oxs noinst_PROGRAMS = test_oxs #AM_CFLAGS = -g -O2 -pthread test_oxs_SOURCES = test.c INCLUDES = -I$(top_builddir)/include \ -I ../../include \ @OPENSSLINC@ \ @AXIS2INC@ \ @UTILINC@ \ @AXIOMINC@ test_oxs_LDADD = $(top_builddir)/src/util/librampart_util.la \ $(top_builddir)/src/omxmlsec/libomxmlsec.la \ $(top_builddir)/src/omxmlsec/openssl/libomopenssl.la \ $(top_builddir)/src/omxmlsec/tokens/liboxstokens.la \ ${AXIS2C_HOME}/lib/libaxutil.la \ ${AXIS2C_HOME}/lib/libaxis2_axiom.la \ ${AXIS2C_HOME}/lib/libaxis2_parser.la \ @OPENSSLLIB@\ -lxml2 rampartc-src-1.3.0/test/omxmlsec/deskey.bin0000644000076500007650000000003111202453356020542 0ustar shankarshankar012345670123456701234567 rampartc-src-1.3.0/test/omxmlsec/b.xml0000644000076500007650000000055711202453356017544 0ustar shankarshankar Axis2C OM HOWTO 1748491379

This is vey good book on OM!

rampartc-src-1.3.0/test/omxmlsec/a.xml0000644000076500007650000000052311202453356017534 0ustar shankarshankar rampartc-src-1.3.0/test/omxmlsec/Makefile.in0000644000076500007650000004002011202453551020630 0ustar shankarshankar# Makefile.in generated by automake 1.10.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ TESTS = test_oxs$(EXEEXT) noinst_PROGRAMS = test_oxs$(EXEEXT) subdir = test/omxmlsec DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = PROGRAMS = $(noinst_PROGRAMS) am_test_oxs_OBJECTS = test.$(OBJEXT) test_oxs_OBJECTS = $(am_test_oxs_OBJECTS) test_oxs_DEPENDENCIES = $(top_builddir)/src/util/librampart_util.la \ $(top_builddir)/src/omxmlsec/libomxmlsec.la \ $(top_builddir)/src/omxmlsec/openssl/libomopenssl.la \ $(top_builddir)/src/omxmlsec/tokens/liboxstokens.la \ ${AXIS2C_HOME}/lib/libaxutil.la \ ${AXIS2C_HOME}/lib/libaxis2_axiom.la \ ${AXIS2C_HOME}/lib/libaxis2_parser.la DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = $(test_oxs_SOURCES) DIST_SOURCES = $(test_oxs_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ AXIOMINC = @AXIOMINC@ AXIS2INC = @AXIS2INC@ AXIS2LIB = @AXIS2LIB@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NEETHIINC = @NEETHIINC@ OBJEXT = @OBJEXT@ OPENSSLINC = @OPENSSLINC@ OPENSSLLIB = @OPENSSLLIB@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UTILINC = @UTILINC@ VERSION = @VERSION@ VERSION_NO = @VERSION_NO@ XMLSCHEMAINC = @XMLSCHEMAINC@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ #AM_CFLAGS = -g -O2 -pthread test_oxs_SOURCES = test.c INCLUDES = -I$(top_builddir)/include \ -I ../../include \ @OPENSSLINC@ \ @AXIS2INC@ \ @UTILINC@ \ @AXIOMINC@ test_oxs_LDADD = $(top_builddir)/src/util/librampart_util.la \ $(top_builddir)/src/omxmlsec/libomxmlsec.la \ $(top_builddir)/src/omxmlsec/openssl/libomopenssl.la \ $(top_builddir)/src/omxmlsec/tokens/liboxstokens.la \ ${AXIS2C_HOME}/lib/libaxutil.la \ ${AXIS2C_HOME}/lib/libaxis2_axiom.la \ ${AXIS2C_HOME}/lib/libaxis2_parser.la \ @OPENSSLLIB@\ -lxml2 all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/omxmlsec/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu test/omxmlsec/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh clean-noinstPROGRAMS: @list='$(noinst_PROGRAMS)'; for p in $$list; do \ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ echo " rm -f $$p $$f"; \ rm -f $$p $$f ; \ done test_oxs$(EXEEXT): $(test_oxs_OBJECTS) $(test_oxs_DEPENDENCIES) @rm -f test_oxs$(EXEEXT) $(LINK) $(test_oxs_OBJECTS) $(test_oxs_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags check-TESTS: $(TESTS) @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \ srcdir=$(srcdir); export srcdir; \ list=' $(TESTS) '; \ if test -n "$$list"; then \ for tst in $$list; do \ if test -f ./$$tst; then dir=./; \ elif test -f $$tst; then dir=; \ else dir="$(srcdir)/"; fi; \ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ all=`expr $$all + 1`; \ case " $(XFAIL_TESTS) " in \ *$$ws$$tst$$ws*) \ xpass=`expr $$xpass + 1`; \ failed=`expr $$failed + 1`; \ echo "XPASS: $$tst"; \ ;; \ *) \ echo "PASS: $$tst"; \ ;; \ esac; \ elif test $$? -ne 77; then \ all=`expr $$all + 1`; \ case " $(XFAIL_TESTS) " in \ *$$ws$$tst$$ws*) \ xfail=`expr $$xfail + 1`; \ echo "XFAIL: $$tst"; \ ;; \ *) \ failed=`expr $$failed + 1`; \ echo "FAIL: $$tst"; \ ;; \ esac; \ else \ skip=`expr $$skip + 1`; \ echo "SKIP: $$tst"; \ fi; \ done; \ if test "$$failed" -eq 0; then \ if test "$$xfail" -eq 0; then \ banner="All $$all tests passed"; \ else \ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ fi; \ else \ if test "$$xpass" -eq 0; then \ banner="$$failed of $$all tests failed"; \ else \ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ fi; \ fi; \ dashes="$$banner"; \ skipped=""; \ if test "$$skip" -ne 0; then \ skipped="($$skip tests were not run)"; \ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ dashes="$$skipped"; \ fi; \ report=""; \ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ report="Please report to $(PACKAGE_BUGREPORT)"; \ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ dashes="$$report"; \ fi; \ dashes=`echo "$$dashes" | sed s/./=/g`; \ echo "$$dashes"; \ echo "$$banner"; \ test -z "$$skipped" || echo "$$skipped"; \ test -z "$$report" || echo "$$report"; \ echo "$$dashes"; \ test "$$failed" -eq 0; \ else :; fi distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-exec-am: install-html: install-html-am install-info: install-info-am install-man: install-pdf: install-pdf-am install-ps: install-ps-am installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ clean-generic clean-libtool clean-noinstPROGRAMS ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: rampartc-src-1.3.0/test/util/0000755000076500007650000000000011202454512015713 5ustar shankarshankarrampartc-src-1.3.0/test/util/test_util.c0000644000076500007650000000163211202453357020103 0ustar shankarshankar#include #include #include #include #include #include axutil_env_t *test_init() { axutil_allocator_t *allocator = axutil_allocator_init(NULL); axutil_error_t *error = (axutil_error_t*)axis2_error_create(allocator); axutil_env_t *env = axutil_env_create_with_error(allocator, error); return env; } int main() { axis2_char_t* date_str1 = "2007-08-21T12:14:42Z"; axis2_char_t* date_str2 = "2006-08-21T12:15:42Z"; axutil_env_t *env = NULL; axis2_status_t status = AXIS2_FAILURE; env = test_init(); printf("--Testing started--------------------------------------------\n"); status = rampart_compare_date_time(env, date_str1, date_str2); printf("Status = %d", status); printf("\n----End of testings----------------------------------------\n"); return 0; } rampartc-src-1.3.0/test/util/Makefile.am0000644000076500007650000000060611202453357017757 0ustar shankarshankarTESTS = test_sha test_util bin_PROGRAMS = test_sha test_util SUBDIRS = AM_CFLAGS = -g -O2 -pthread test_sha_SOURCES = test_sha.c test_util_SOURCES = test_util.c test_sha_LDADD = $(top_builddir)/src/util/librampart_util.la\ -laxis2_util test_util_LDADD = $(top_builddir)/src/util/librampart_util.la\ -laxis2_util INCLUDES = -I$(top_builddir)/include \ @UTILINC@ rampartc-src-1.3.0/test/util/test_sha.c0000644000076500007650000000302311202453357017675 0ustar shankarshankar#include #include #include #include #include axutil_env_t *test_init() { axutil_allocator_t *allocator = axutil_allocator_init(NULL); axutil_error_t *error = (axutil_error_t*)axis2_error_create(allocator); axutil_env_t *env = axutil_env_create_with_error(allocator, error); return env; } int main() { axis2_char_t* hash = NULL; axutil_env_t *env = NULL; axis2_char_t* nonce = NULL; axis2_char_t* created = NULL; env = test_init(); printf("--Testing started--------------------------------------------\n"); printf("\n--Testing hash-----------------------------------------------\n"); hash = rampart_crypto_sha1(env, "WScqanjCEAC4mQoBE07sAQ==", "2003-07-16T01:24:32Z", "IloveDogs"); if (!hash) { printf("No hash generated :( ...\n"); } printf("Hash = %s", hash); #if 0 /*encode Base64*/ axis2_char_t* encodedStr = NULL; encodedStr = AXIS2_MALLOC(env->allocator, 20); axutil_base64_encode_binary(encodedStr, hash, 20); printf("Hash = %s \n", encodedStr); #endif printf("\n----Testing nonce------------------------------------------\n"); nonce = rampart_generate_nonce(env); printf("NONCE: %s", nonce); printf("\n----Testing created----------------------------------------\n"); created = rampart_generate_time(env, 300); printf("CREATED: %s", created); printf("\n----End of testings----------------------------------------\n"); return 0; } rampartc-src-1.3.0/test/Makefile.in0000644000076500007650000003436711202453550017021 0ustar shankarshankar# Makefile.in generated by automake 1.10.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = test DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ AXIOMINC = @AXIOMINC@ AXIS2INC = @AXIS2INC@ AXIS2LIB = @AXIS2LIB@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NEETHIINC = @NEETHIINC@ OBJEXT = @OBJEXT@ OPENSSLINC = @OPENSSLINC@ OPENSSLLIB = @OPENSSLLIB@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UTILINC = @UTILINC@ VERSION = @VERSION@ VERSION_NO = @VERSION_NO@ XMLSCHEMAINC = @XMLSCHEMAINC@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = openssl omxmlsec c14n all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu test/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ distdir=`$(am__cd) $(distdir) && pwd`; \ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ (cd $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$top_distdir" \ distdir="$$distdir/$$subdir" \ am__remove_distdir=: \ am__skip_length_check=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-exec-am: install-html: install-html-recursive install-info: install-info-recursive install-man: install-pdf: install-pdf-recursive install-ps: install-ps-recursive installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ install-strip .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic clean-libtool \ ctags ctags-recursive distclean distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: rampartc-src-1.3.0/ltmain.sh0000755000076500007650000060446510750156617015635 0ustar shankarshankar# ltmain.sh - Provide generalized library-building support services. # NOTE: Changing this file will not affect anything until you rerun configure. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, # 2007 Free Software Foundation, Inc. # Originally by Gordon Matzigkeit , 1996 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. basename="s,^.*/,,g" # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh # is ksh but when the shell is invoked as "sh" and the current value of # the _XPG environment variable is not equal to 1 (one), the special # positional parameter $0, within a function call, is the name of the # function. progpath="$0" # The name of this program: progname=`echo "$progpath" | $SED $basename` modename="$progname" # Global variables: EXIT_SUCCESS=0 EXIT_FAILURE=1 PROGRAM=ltmain.sh PACKAGE=libtool VERSION=1.5.24 TIMESTAMP=" (1.1220.2.456 2007/06/24 02:25:32)" # Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE). if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # Check that we have a working $echo. if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then # Yippee, $echo works! : else # Restart under the correct shell, and then maybe $echo will work. exec $SHELL "$progpath" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat <&2 $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 exit $EXIT_FAILURE fi # Global variables. mode=$default_mode nonopt= prev= prevopt= run= show="$echo" show_help= execute_dlfiles= duplicate_deps=no preserve_args= lo2o="s/\\.lo\$/.${objext}/" o2lo="s/\\.${objext}\$/.lo/" extracted_archives= extracted_serial=0 ##################################### # Shell function definitions: # This seems to be the best place for them # func_mktempdir [string] # Make a temporary directory that won't clash with other running # libtool processes, and avoids race conditions if possible. If # given, STRING is the basename for that directory. func_mktempdir () { my_template="${TMPDIR-/tmp}/${1-$progname}" if test "$run" = ":"; then # Return a directory name, but don't create it in dry-run mode my_tmpdir="${my_template}-$$" else # If mktemp works, use that first and foremost my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` if test ! -d "$my_tmpdir"; then # Failing that, at least try and use $RANDOM to avoid a race my_tmpdir="${my_template}-${RANDOM-0}$$" save_mktempdir_umask=`umask` umask 0077 $mkdir "$my_tmpdir" umask $save_mktempdir_umask fi # If we're not in dry-run mode, bomb out on failure test -d "$my_tmpdir" || { $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2 exit $EXIT_FAILURE } fi $echo "X$my_tmpdir" | $Xsed } # func_win32_libid arg # return the library type of file 'arg' # # Need a lot of goo to handle *both* DLLs and import libs # Has to be a shell function in order to 'eat' the argument # that is supplied when $file_magic_command is called. func_win32_libid () { win32_libid_type="unknown" win32_fileres=`file -L $1 2>/dev/null` case $win32_fileres in *ar\ archive\ import\ library*) # definitely import win32_libid_type="x86 archive import" ;; *ar\ archive*) # could be an import, or static if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \ $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then win32_nmres=`eval $NM -f posix -A $1 | \ $SED -n -e '1,100{ / I /{ s,.*,import, p q } }'` case $win32_nmres in import*) win32_libid_type="x86 archive import";; *) win32_libid_type="x86 archive static";; esac fi ;; *DLL*) win32_libid_type="x86 DLL" ;; *executable*) # but shell scripts are "executable" too... case $win32_fileres in *MS\ Windows\ PE\ Intel*) win32_libid_type="x86 DLL" ;; esac ;; esac $echo $win32_libid_type } # func_infer_tag arg # Infer tagged configuration to use if any are available and # if one wasn't chosen via the "--tag" command line option. # Only attempt this if the compiler in the base compile # command doesn't match the default compiler. # arg is usually of the form 'gcc ...' func_infer_tag () { if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac CC_quoted="$CC_quoted $arg" done case $@ in # Blanks in the command may have been stripped by the calling shell, # but not from the CC environment variable when configure was run. " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;; # Blanks at the start of $base_compile will cause this to fail # if we don't check for them as well. *) for z in $available_tags; do if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then # Evaluate the configuration. eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" CC_quoted= for arg in $CC; do # Double-quote args containing other shell metacharacters. case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac CC_quoted="$CC_quoted $arg" done case "$@ " in " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) # The compiler in the base compile command matches # the one in the tagged configuration. # Assume this is the tagged configuration we want. tagname=$z break ;; esac fi done # If $tagname still isn't set, then no tagged configuration # was found and let the user know that the "--tag" command # line option must be used. if test -z "$tagname"; then $echo "$modename: unable to infer tagged configuration" $echo "$modename: specify a tag with \`--tag'" 1>&2 exit $EXIT_FAILURE # else # $echo "$modename: using $tagname tagged configuration" fi ;; esac fi } # func_extract_an_archive dir oldlib func_extract_an_archive () { f_ex_an_ar_dir="$1"; shift f_ex_an_ar_oldlib="$1" $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)" $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $? if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then : else $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2 exit $EXIT_FAILURE fi } # func_extract_archives gentop oldlib ... func_extract_archives () { my_gentop="$1"; shift my_oldlibs=${1+"$@"} my_oldobjs="" my_xlib="" my_xabs="" my_xdir="" my_status="" $show "${rm}r $my_gentop" $run ${rm}r "$my_gentop" $show "$mkdir $my_gentop" $run $mkdir "$my_gentop" my_status=$? if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then exit $my_status fi for my_xlib in $my_oldlibs; do # Extract the objects. case $my_xlib in [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; *) my_xabs=`pwd`"/$my_xlib" ;; esac my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'` my_xlib_u=$my_xlib while :; do case " $extracted_archives " in *" $my_xlib_u "*) extracted_serial=`expr $extracted_serial + 1` my_xlib_u=lt$extracted_serial-$my_xlib ;; *) break ;; esac done extracted_archives="$extracted_archives $my_xlib_u" my_xdir="$my_gentop/$my_xlib_u" $show "${rm}r $my_xdir" $run ${rm}r "$my_xdir" $show "$mkdir $my_xdir" $run $mkdir "$my_xdir" exit_status=$? if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then exit $exit_status fi case $host in *-darwin*) $show "Extracting $my_xabs" # Do not bother doing anything if just a dry run if test -z "$run"; then darwin_orig_dir=`pwd` cd $my_xdir || exit $? darwin_archive=$my_xabs darwin_curdir=`pwd` darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'` darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null` if test -n "$darwin_arches"; then darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'` darwin_arch= $show "$darwin_base_archive has multiple architectures $darwin_arches" for darwin_arch in $darwin_arches ; do mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}" lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" func_extract_an_archive "`pwd`" "${darwin_base_archive}" cd "$darwin_curdir" $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" done # $darwin_arches ## Okay now we have a bunch of thin objects, gotta fatten them up :) darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP` darwin_file= darwin_files= for darwin_file in $darwin_filelist; do darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` lipo -create -output "$darwin_file" $darwin_files done # $darwin_filelist ${rm}r unfat-$$ cd "$darwin_orig_dir" else cd "$darwin_orig_dir" func_extract_an_archive "$my_xdir" "$my_xabs" fi # $darwin_arches fi # $run ;; *) func_extract_an_archive "$my_xdir" "$my_xabs" ;; esac my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` done func_extract_archives_result="$my_oldobjs" } # End of Shell function definitions ##################################### # Darwin sucks eval std_shrext=\"$shrext_cmds\" disable_libs=no # Parse our command line options once, thoroughly. while test "$#" -gt 0 do arg="$1" shift case $arg in -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; *) optarg= ;; esac # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in execute_dlfiles) execute_dlfiles="$execute_dlfiles $arg" ;; tag) tagname="$arg" preserve_args="${preserve_args}=$arg" # Check whether tagname contains only valid characters case $tagname in *[!-_A-Za-z0-9,/]*) $echo "$progname: invalid tag name: $tagname" 1>&2 exit $EXIT_FAILURE ;; esac case $tagname in CC) # Don't test for the "default" C tag, as we know, it's there, but # not specially marked. ;; *) if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then taglist="$taglist $tagname" # Evaluate the configuration. eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`" else $echo "$progname: ignoring unknown tag $tagname" 1>&2 fi ;; esac ;; *) eval "$prev=\$arg" ;; esac prev= prevopt= continue fi # Have we seen a non-optional argument yet? case $arg in --help) show_help=yes ;; --version) echo "\ $PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP Copyright (C) 2007 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." exit $? ;; --config) ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath # Now print the configurations for the tags. for tagname in $taglist; do ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath" done exit $? ;; --debug) $echo "$progname: enabling shell trace mode" set -x preserve_args="$preserve_args $arg" ;; --dry-run | -n) run=: ;; --features) $echo "host: $host" if test "$build_libtool_libs" = yes; then $echo "enable shared libraries" else $echo "disable shared libraries" fi if test "$build_old_libs" = yes; then $echo "enable static libraries" else $echo "disable static libraries" fi exit $? ;; --finish) mode="finish" ;; --mode) prevopt="--mode" prev=mode ;; --mode=*) mode="$optarg" ;; --preserve-dup-deps) duplicate_deps="yes" ;; --quiet | --silent) show=: preserve_args="$preserve_args $arg" ;; --tag) prevopt="--tag" prev=tag preserve_args="$preserve_args --tag" ;; --tag=*) set tag "$optarg" ${1+"$@"} shift prev=tag preserve_args="$preserve_args --tag" ;; -dlopen) prevopt="-dlopen" prev=execute_dlfiles ;; -*) $echo "$modename: unrecognized option \`$arg'" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE ;; *) nonopt="$arg" break ;; esac done if test -n "$prevopt"; then $echo "$modename: option \`$prevopt' requires an argument" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi case $disable_libs in no) ;; shared) build_libtool_libs=no build_old_libs=yes ;; static) build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` ;; esac # If this variable is set in any of the actions, the command in it # will be execed at the end. This prevents here-documents from being # left over by shells. exec_cmd= if test -z "$show_help"; then # Infer the operation mode. if test -z "$mode"; then $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2 $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2 case $nonopt in *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*) mode=link for arg do case $arg in -c) mode=compile break ;; esac done ;; *db | *dbx | *strace | *truss) mode=execute ;; *install*|cp|mv) mode=install ;; *rm) mode=uninstall ;; *) # If we have no mode, but dlfiles were specified, then do execute mode. test -n "$execute_dlfiles" && mode=execute # Just use the default operation mode. if test -z "$mode"; then if test -n "$nonopt"; then $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 else $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 fi fi ;; esac fi # Only execute mode is allowed to have -dlopen flags. if test -n "$execute_dlfiles" && test "$mode" != execute; then $echo "$modename: unrecognized option \`-dlopen'" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi # Change the help message to a mode-specific one. generic_help="$help" help="Try \`$modename --help --mode=$mode' for more information." # These modes are in order of execution frequency so that they run quickly. case $mode in # libtool compile mode compile) modename="$modename: compile" # Get the compilation command and the source file. base_compile= srcfile="$nonopt" # always keep a non-empty value in "srcfile" suppress_opt=yes suppress_output= arg_mode=normal libobj= later= for arg do case $arg_mode in arg ) # do not "continue". Instead, add this to base_compile lastarg="$arg" arg_mode=normal ;; target ) libobj="$arg" arg_mode=normal continue ;; normal ) # Accept any command-line options. case $arg in -o) if test -n "$libobj" ; then $echo "$modename: you cannot specify \`-o' more than once" 1>&2 exit $EXIT_FAILURE fi arg_mode=target continue ;; -static | -prefer-pic | -prefer-non-pic) later="$later $arg" continue ;; -no-suppress) suppress_opt=no continue ;; -Xcompiler) arg_mode=arg # the next one goes into the "base_compile" arg list continue # The current "srcfile" will either be retained or ;; # replaced later. I would guess that would be a bug. -Wc,*) args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` lastarg= save_ifs="$IFS"; IFS=',' for arg in $args; do IFS="$save_ifs" # Double-quote args containing other shell metacharacters. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac lastarg="$lastarg $arg" done IFS="$save_ifs" lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` # Add the arguments to base_compile. base_compile="$base_compile $lastarg" continue ;; * ) # Accept the current argument as the source file. # The previous "srcfile" becomes the current argument. # lastarg="$srcfile" srcfile="$arg" ;; esac # case $arg ;; esac # case $arg_mode # Aesthetically quote the previous argument. lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` case $lastarg in # Double-quote args containing other shell metacharacters. # Many Bourne shells cannot handle close brackets correctly # in scan sets, and some SunOS ksh mistreat backslash-escaping # in scan sets (worked around with variable expansion), # and furthermore cannot handle '|' '&' '(' ')' in scan sets # at all, so we specify them separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") lastarg="\"$lastarg\"" ;; esac base_compile="$base_compile $lastarg" done # for arg case $arg_mode in arg) $echo "$modename: you must specify an argument for -Xcompile" exit $EXIT_FAILURE ;; target) $echo "$modename: you must specify a target with \`-o'" 1>&2 exit $EXIT_FAILURE ;; *) # Get the name of the library object. [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` ;; esac # Recognize several different file suffixes. # If the user specifies -o file.o, it is replaced with file.lo xform='[cCFSifmso]' case $libobj in *.ada) xform=ada ;; *.adb) xform=adb ;; *.ads) xform=ads ;; *.asm) xform=asm ;; *.c++) xform=c++ ;; *.cc) xform=cc ;; *.ii) xform=ii ;; *.class) xform=class ;; *.cpp) xform=cpp ;; *.cxx) xform=cxx ;; *.[fF][09]?) xform=[fF][09]. ;; *.for) xform=for ;; *.java) xform=java ;; *.obj) xform=obj ;; esac libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` case $libobj in *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; *) $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 exit $EXIT_FAILURE ;; esac func_infer_tag $base_compile for arg in $later; do case $arg in -static) build_old_libs=yes continue ;; -prefer-pic) pic_mode=yes continue ;; -prefer-non-pic) pic_mode=no continue ;; esac done qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"` case $qlibobj in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") qlibobj="\"$qlibobj\"" ;; esac test "X$libobj" != "X$qlibobj" \ && $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' &()|`$[]' \ && $echo "$modename: libobj name \`$libobj' may not contain shell special characters." objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$obj"; then xdir= else xdir=$xdir/ fi lobj=${xdir}$objdir/$objname if test -z "$base_compile"; then $echo "$modename: you must specify a compilation command" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi # Delete any leftover library objects. if test "$build_old_libs" = yes; then removelist="$obj $lobj $libobj ${libobj}T" else removelist="$lobj $libobj ${libobj}T" fi $run $rm $removelist trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in cygwin* | mingw* | pw32* | os2*) pic_mode=default ;; esac if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then # non-PIC code in shared libraries is not supported pic_mode=default fi # Calculate the filename of the output object if compiler does # not support -o with -c if test "$compiler_c_o" = no; then output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} lockfile="$output_obj.lock" removelist="$removelist $output_obj $lockfile" trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 else output_obj= need_locks=no lockfile= fi # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test "$need_locks" = yes; then until $run ln "$progpath" "$lockfile" 2>/dev/null; do $show "Waiting for $lockfile to be removed" sleep 2 done elif test "$need_locks" = warn; then if test -f "$lockfile"; then $echo "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $run $rm $removelist exit $EXIT_FAILURE fi $echo "$srcfile" > "$lockfile" fi if test -n "$fix_srcfile_path"; then eval srcfile=\"$fix_srcfile_path\" fi qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"` case $qsrcfile in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") qsrcfile="\"$qsrcfile\"" ;; esac $run $rm "$libobj" "${libobj}T" # Create a libtool object file (analogous to a ".la" file), # but don't create it if we're doing a dry run. test -z "$run" && cat > ${libobj}T </dev/null`" != "X$srcfile"; then $echo "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $run $rm $removelist exit $EXIT_FAILURE fi # Just move the object if needed, then go on to compile the next one if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then $show "$mv $output_obj $lobj" if $run $mv $output_obj $lobj; then : else error=$? $run $rm $removelist exit $error fi fi # Append the name of the PIC object to the libtool object file. test -z "$run" && cat >> ${libobj}T <> ${libobj}T </dev/null`" != "X$srcfile"; then $echo "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $run $rm $removelist exit $EXIT_FAILURE fi # Just move the object if needed if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then $show "$mv $output_obj $obj" if $run $mv $output_obj $obj; then : else error=$? $run $rm $removelist exit $error fi fi # Append the name of the non-PIC object the libtool object file. # Only append if the libtool object file exists. test -z "$run" && cat >> ${libobj}T <> ${libobj}T <&2 fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; -static) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=built ;; -static-libtool-libs) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; esac build_libtool_libs=no build_old_libs=yes break ;; esac done # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. while test "$#" -gt 0; do arg="$1" shift case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test ;; *) qarg=$arg ;; esac libtool_args="$libtool_args $qarg" # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in output) compile_command="$compile_command @OUTPUT@" finalize_command="$finalize_command @OUTPUT@" ;; esac case $prev in dlfiles|dlprefiles) if test "$preload" = no; then # Add the symbol object into the linking commands. compile_command="$compile_command @SYMFILE@" finalize_command="$finalize_command @SYMFILE@" preload=yes fi case $arg in *.la | *.lo) ;; # We handle these cases below. force) if test "$dlself" = no; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test "$prev" = dlprefiles; then dlself=yes elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test "$prev" = dlfiles; then dlfiles="$dlfiles $arg" else dlprefiles="$dlprefiles $arg" fi prev= continue ;; esac ;; expsyms) export_symbols="$arg" if test ! -f "$arg"; then $echo "$modename: symbol file \`$arg' does not exist" exit $EXIT_FAILURE fi prev= continue ;; expsyms_regex) export_symbols_regex="$arg" prev= continue ;; inst_prefix) inst_prefix_dir="$arg" prev= continue ;; precious_regex) precious_files_regex="$arg" prev= continue ;; release) release="-$arg" prev= continue ;; objectlist) if test -f "$arg"; then save_arg=$arg moreargs= for fil in `cat $save_arg` do # moreargs="$moreargs $fil" arg=$fil # A libtool-controlled object. # Check to see that this really is a libtool object. if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then pic_object= non_pic_object= # Read the .lo file # If there is no directory component, then add one. case $arg in */* | *\\*) . $arg ;; *) . ./$arg ;; esac if test -z "$pic_object" || \ test -z "$non_pic_object" || test "$pic_object" = none && \ test "$non_pic_object" = none; then $echo "$modename: cannot find name of object for \`$arg'" 1>&2 exit $EXIT_FAILURE fi # Extract subdirectory from the argument. xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$arg"; then xdir= else xdir="$xdir/" fi if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then dlfiles="$dlfiles $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. dlprefiles="$dlprefiles $pic_object" prev= fi # A PIC object. libobjs="$libobjs $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object non_pic_objects="$non_pic_objects $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object="$pic_object" non_pic_objects="$non_pic_objects $non_pic_object" fi else # Only an error if not doing a dry-run. if test -z "$run"; then $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 exit $EXIT_FAILURE else # Dry-run case. # Extract subdirectory from the argument. xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$arg"; then xdir= else xdir="$xdir/" fi pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` libobjs="$libobjs $pic_object" non_pic_objects="$non_pic_objects $non_pic_object" fi fi done else $echo "$modename: link input file \`$save_arg' does not exist" exit $EXIT_FAILURE fi arg=$save_arg prev= continue ;; rpath | xrpath) # We need an absolute path. case $arg in [\\/]* | [A-Za-z]:[\\/]*) ;; *) $echo "$modename: only absolute run-paths are allowed" 1>&2 exit $EXIT_FAILURE ;; esac if test "$prev" = rpath; then case "$rpath " in *" $arg "*) ;; *) rpath="$rpath $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) xrpath="$xrpath $arg" ;; esac fi prev= continue ;; xcompiler) compiler_flags="$compiler_flags $qarg" prev= compile_command="$compile_command $qarg" finalize_command="$finalize_command $qarg" continue ;; xlinker) linker_flags="$linker_flags $qarg" compiler_flags="$compiler_flags $wl$qarg" prev= compile_command="$compile_command $wl$qarg" finalize_command="$finalize_command $wl$qarg" continue ;; xcclinker) linker_flags="$linker_flags $qarg" compiler_flags="$compiler_flags $qarg" prev= compile_command="$compile_command $qarg" finalize_command="$finalize_command $qarg" continue ;; shrext) shrext_cmds="$arg" prev= continue ;; darwin_framework|darwin_framework_skip) test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg" compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" prev= continue ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac fi # test -n "$prev" prevarg="$arg" case $arg in -all-static) if test -n "$link_static_flag"; then compile_command="$compile_command $link_static_flag" finalize_command="$finalize_command $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 continue ;; -avoid-version) avoid_version=yes continue ;; -dlopen) prev=dlfiles continue ;; -dlpreopen) prev=dlprefiles continue ;; -export-dynamic) export_dynamic=yes continue ;; -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then $echo "$modename: more than one -exported-symbols argument is not allowed" exit $EXIT_FAILURE fi if test "X$arg" = "X-export-symbols"; then prev=expsyms else prev=expsyms_regex fi continue ;; -framework|-arch|-isysroot) case " $CC " in *" ${arg} ${1} "* | *" ${arg} ${1} "*) prev=darwin_framework_skip ;; *) compiler_flags="$compiler_flags $arg" prev=darwin_framework ;; esac compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" continue ;; -inst-prefix-dir) prev=inst_prefix continue ;; # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* # so, if we see these flags be careful not to treat them like -L -L[A-Z][A-Z]*:*) case $with_gcc/$host in no/*-*-irix* | /*-*-irix*) compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" ;; esac continue ;; -L*) dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 absdir="$dir" notinst_path="$notinst_path $dir" fi dir="$absdir" ;; esac case "$deplibs " in *" -L$dir "*) ;; *) deplibs="$deplibs -L$dir" lib_search_path="$lib_search_path $dir" ;; esac case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$dir:"*) ;; *) dllsearchpath="$dllsearchpath:$dir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; *) dllsearchpath="$dllsearchpath:$testbindir";; esac ;; esac continue ;; -l*) if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*) # These systems don't actually have a C or math library (as such) continue ;; *-*-os2*) # These systems don't actually have a C library (as such) test "X$arg" = "X-lc" && continue ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. test "X$arg" = "X-lc" && continue ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework deplibs="$deplibs -framework System" continue ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype test "X$arg" = "X-lc" && continue ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work test "X$arg" = "X-lc" && continue ;; esac elif test "X$arg" = "X-lc_r"; then case $host in *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc_r directly, use -pthread flag. continue ;; esac fi deplibs="$deplibs $arg" continue ;; # Tru64 UNIX uses -model [arg] to determine the layout of C++ # classes, name mangling, and exception handling. -model) compile_command="$compile_command $arg" compiler_flags="$compiler_flags $arg" finalize_command="$finalize_command $arg" prev=xcompiler continue ;; -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) compiler_flags="$compiler_flags $arg" compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" continue ;; -module) module=yes continue ;; # -64, -mips[0-9] enable 64-bit mode on the SGI compiler # -r[0-9][0-9]* specifies the processor on the SGI compiler # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler # +DA*, +DD* enable 64-bit mode on the HP compiler # -q* pass through compiler args for the IBM compiler # -m* pass through architecture-specific compiler args for GCC # -m*, -t[45]*, -txscale* pass through architecture-specific # compiler args for GCC # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC # -F/path gives path to uninstalled frameworks, gcc on darwin # @file GCC response files -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" compiler_flags="$compiler_flags $arg" continue ;; -shrext) prev=shrext continue ;; -no-fast-install) fast_install=no continue ;; -no-install) case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin*) # The PATH hackery in wrapper scripts is required on Windows # and Darwin in order for the loader to find any dlls it needs. $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 fast_install=no ;; *) no_install=yes ;; esac continue ;; -no-undefined) allow_undefined=no continue ;; -objectlist) prev=objectlist continue ;; -o) prev=output ;; -precious-files-regex) prev=precious_regex continue ;; -release) prev=release continue ;; -rpath) prev=rpath continue ;; -R) prev=xrpath continue ;; -R*) dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) $echo "$modename: only absolute run-paths are allowed" 1>&2 exit $EXIT_FAILURE ;; esac case "$xrpath " in *" $dir "*) ;; *) xrpath="$xrpath $dir" ;; esac continue ;; -static | -static-libtool-libs) # The effects of -static are defined in a previous loop. # We used to do the same as -all-static on platforms that # didn't have a PIC flag, but the assumption that the effects # would be equivalent was wrong. It would break on at least # Digital Unix and AIX. continue ;; -thread-safe) thread_safe=yes continue ;; -version-info) prev=vinfo continue ;; -version-number) prev=vinfo vinfo_number=yes continue ;; -Wc,*) args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" case $flag in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") flag="\"$flag\"" ;; esac arg="$arg $wl$flag" compiler_flags="$compiler_flags $flag" done IFS="$save_ifs" arg=`$echo "X$arg" | $Xsed -e "s/^ //"` ;; -Wl,*) args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" case $flag in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") flag="\"$flag\"" ;; esac arg="$arg $wl$flag" compiler_flags="$compiler_flags $wl$flag" linker_flags="$linker_flags $flag" done IFS="$save_ifs" arg=`$echo "X$arg" | $Xsed -e "s/^ //"` ;; -Xcompiler) prev=xcompiler continue ;; -Xlinker) prev=xlinker continue ;; -XCClinker) prev=xcclinker continue ;; # Some other compiler flag. -* | +*) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac ;; *.$objext) # A standard object. objs="$objs $arg" ;; *.lo) # A libtool-controlled object. # Check to see that this really is a libtool object. if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then pic_object= non_pic_object= # Read the .lo file # If there is no directory component, then add one. case $arg in */* | *\\*) . $arg ;; *) . ./$arg ;; esac if test -z "$pic_object" || \ test -z "$non_pic_object" || test "$pic_object" = none && \ test "$non_pic_object" = none; then $echo "$modename: cannot find name of object for \`$arg'" 1>&2 exit $EXIT_FAILURE fi # Extract subdirectory from the argument. xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$arg"; then xdir= else xdir="$xdir/" fi if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then dlfiles="$dlfiles $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. dlprefiles="$dlprefiles $pic_object" prev= fi # A PIC object. libobjs="$libobjs $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object non_pic_objects="$non_pic_objects $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object="$pic_object" non_pic_objects="$non_pic_objects $non_pic_object" fi else # Only an error if not doing a dry-run. if test -z "$run"; then $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 exit $EXIT_FAILURE else # Dry-run case. # Extract subdirectory from the argument. xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$arg"; then xdir= else xdir="$xdir/" fi pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` libobjs="$libobjs $pic_object" non_pic_objects="$non_pic_objects $non_pic_object" fi fi ;; *.$libext) # An archive. deplibs="$deplibs $arg" old_deplibs="$old_deplibs $arg" continue ;; *.la) # A libtool-controlled library. if test "$prev" = dlfiles; then # This library was specified with -dlopen. dlfiles="$dlfiles $arg" prev= elif test "$prev" = dlprefiles; then # The library was specified with -dlpreopen. dlprefiles="$dlprefiles $arg" prev= else deplibs="$deplibs $arg" fi continue ;; # Some other compiler argument. *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac ;; esac # arg # Now actually substitute the argument into the commands. if test -n "$arg"; then compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" fi done # argument parsing loop if test -n "$prev"; then $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" fi oldlibs= # calculate the name of the file, without its directory outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` libobjs_save="$libobjs" if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` else shlib_search_path= fi eval sys_lib_search_path=\"$sys_lib_search_path_spec\" eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` if test "X$output_objdir" = "X$output"; then output_objdir="$objdir" else output_objdir="$output_objdir/$objdir" fi # Create the object directory. if test ! -d "$output_objdir"; then $show "$mkdir $output_objdir" $run $mkdir $output_objdir exit_status=$? if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then exit $exit_status fi fi # Determine the type of output case $output in "") $echo "$modename: you must specify an output file" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE ;; *.$libext) linkmode=oldlib ;; *.lo | *.$objext) linkmode=obj ;; *.la) linkmode=lib ;; *) linkmode=prog ;; # Anything else should be a program. esac case $host in *cygwin* | *mingw* | *pw32*) # don't eliminate duplications in $postdeps and $predeps duplicate_compiler_generated_deps=yes ;; *) duplicate_compiler_generated_deps=$duplicate_deps ;; esac specialdeplibs= libs= # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do if test "X$duplicate_deps" = "Xyes" ; then case "$libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi libs="$libs $deplib" done if test "$linkmode" = lib; then libs="$predeps $libs $compiler_lib_search_path $postdeps" # Compute libraries that are listed more than once in $predeps # $postdeps and mark them as special (i.e., whose duplicates are # not to be eliminated). pre_post_deps= if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then for pre_post_dep in $predeps $postdeps; do case "$pre_post_deps " in *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; esac pre_post_deps="$pre_post_deps $pre_post_dep" done fi pre_post_deps= fi deplibs= newdependency_libs= newlib_search_path= need_relink=no # whether we're linking any uninstalled libtool libraries notinst_deplibs= # not-installed libtool libraries case $linkmode in lib) passes="conv link" for file in $dlfiles $dlprefiles; do case $file in *.la) ;; *) $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 exit $EXIT_FAILURE ;; esac done ;; prog) compile_deplibs= finalize_deplibs= alldeplibs=no newdlfiles= newdlprefiles= passes="conv scan dlopen dlpreopen link" ;; *) passes="conv" ;; esac for pass in $passes; do if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan"; then libs="$deplibs" deplibs= fi if test "$linkmode" = prog; then case $pass in dlopen) libs="$dlfiles" ;; dlpreopen) libs="$dlprefiles" ;; link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; esac fi if test "$pass" = dlopen; then # Collect dlpreopened libraries save_deplibs="$deplibs" deplibs= fi for deplib in $libs; do lib= found=no case $deplib in -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else compiler_flags="$compiler_flags $deplib" fi continue ;; -l*) if test "$linkmode" != lib && test "$linkmode" != prog; then $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2 continue fi name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do for search_ext in .la $std_shrext .so .a; do # Search the libtool library lib="$searchdir/lib${name}${search_ext}" if test -f "$lib"; then if test "$search_ext" = ".la"; then found=yes else found=no fi break 2 fi done done if test "$found" != yes; then # deplib doesn't seem to be a libtool library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue else # deplib is a libtool library # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, # We need to do some special things here, and not later. if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $deplib "*) if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then library_names= old_library= case $lib in */* | *\\*) . $lib ;; *) . ./$lib ;; esac for l in $old_library $library_names; do ll="$l" done if test "X$ll" = "X$old_library" ; then # only static version available found=no ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` test "X$ladir" = "X$lib" && ladir="." lib=$ladir/$old_library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue fi fi ;; *) ;; esac fi fi ;; # -l -L*) case $linkmode in lib) deplibs="$deplib $deplibs" test "$pass" = conv && continue newdependency_libs="$deplib $newdependency_libs" newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` ;; prog) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi if test "$pass" = scan; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` ;; *) $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2 ;; esac # linkmode continue ;; # -L -R*) if test "$pass" = link; then dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` # Make sure the xrpath contains only unique directories. case "$xrpath " in *" $dir "*) ;; *) xrpath="$xrpath $dir" ;; esac fi deplibs="$deplib $deplibs" continue ;; *.la) lib="$deplib" ;; *.$libext) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi case $linkmode in lib) valid_a_lib=no case $deplibs_check_method in match_pattern*) set dummy $deplibs_check_method match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` if eval $echo \"$deplib\" 2>/dev/null \ | $SED 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then valid_a_lib=yes fi ;; pass_all) valid_a_lib=yes ;; esac if test "$valid_a_lib" != yes; then $echo $echo "*** Warning: Trying to link with static lib archive $deplib." $echo "*** I have the capability to make that library automatically link in when" $echo "*** you link to this library. But I can only do this if you have a" $echo "*** shared version of the library, which you do not appear to have" $echo "*** because the file extensions .$libext of this argument makes me believe" $echo "*** that it is just a static archive that I should not used here." else $echo $echo "*** Warning: Linking the shared library $output against the" $echo "*** static library $deplib is not portable!" deplibs="$deplib $deplibs" fi continue ;; prog) if test "$pass" != link; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi continue ;; esac # linkmode ;; # *.$libext *.lo | *.$objext) if test "$pass" = conv; then deplibs="$deplib $deplibs" elif test "$linkmode" = prog; then if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlopen support or we're linking statically, # we need to preload. newdlprefiles="$newdlprefiles $deplib" compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else newdlfiles="$newdlfiles $deplib" fi fi continue ;; %DEPLIBS%) alldeplibs=yes continue ;; esac # case $deplib if test "$found" = yes || test -f "$lib"; then : else $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2 exit $EXIT_FAILURE fi # Check to see that this really is a libtool archive. if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : else $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 exit $EXIT_FAILURE fi ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` test "X$ladir" = "X$lib" && ladir="." dlname= dlopen= dlpreopen= libdir= library_names= old_library= # If the library was installed with an old release of libtool, # it will not redefine variables installed, or shouldnotlink installed=yes shouldnotlink=no avoidtemprpath= # Read the .la file case $lib in */* | *\\*) . $lib ;; *) . ./$lib ;; esac if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan" || { test "$linkmode" != prog && test "$linkmode" != lib; }; then test -n "$dlopen" && dlfiles="$dlfiles $dlopen" test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" fi if test "$pass" = conv; then # Only check for convenience libraries deplibs="$lib $deplibs" if test -z "$libdir"; then if test -z "$old_library"; then $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 exit $EXIT_FAILURE fi # It is a libtool convenience library, so add in its objects. convenience="$convenience $ladir/$objdir/$old_library" old_convenience="$old_convenience $ladir/$objdir/$old_library" tmp_libs= for deplib in $dependency_libs; do deplibs="$deplib $deplibs" if test "X$duplicate_deps" = "Xyes" ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done elif test "$linkmode" != prog && test "$linkmode" != lib; then $echo "$modename: \`$lib' is not a convenience library" 1>&2 exit $EXIT_FAILURE fi continue fi # $pass = conv # Get the name of the library we link against. linklib= for l in $old_library $library_names; do linklib="$l" done if test -z "$linklib"; then $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 exit $EXIT_FAILURE fi # This library was specified with -dlopen. if test "$pass" = dlopen; then if test -z "$libdir"; then $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 exit $EXIT_FAILURE fi if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlname, no dlopen support or we're linking # statically, we need to preload. We also need to preload any # dependent libraries so libltdl's deplib preloader doesn't # bomb out in the load deplibs phase. dlprefiles="$dlprefiles $lib $dependency_libs" else newdlfiles="$newdlfiles $lib" fi continue fi # $pass = dlopen # We need an absolute path. case $ladir in [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; *) abs_ladir=`cd "$ladir" && pwd` if test -z "$abs_ladir"; then $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2 $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 abs_ladir="$ladir" fi ;; esac laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` # Find the relevant object directory and library name. if test "X$installed" = Xyes; then if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then $echo "$modename: warning: library \`$lib' was moved." 1>&2 dir="$ladir" absdir="$abs_ladir" libdir="$abs_ladir" else dir="$libdir" absdir="$libdir" fi test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes else if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then dir="$ladir" absdir="$abs_ladir" # Remove this search path later notinst_path="$notinst_path $abs_ladir" else dir="$ladir/$objdir" absdir="$abs_ladir/$objdir" # Remove this search path later notinst_path="$notinst_path $abs_ladir" fi fi # $installed = yes name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` # This library was specified with -dlpreopen. if test "$pass" = dlpreopen; then if test -z "$libdir"; then $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 exit $EXIT_FAILURE fi # Prefer using a static library (so that no silly _DYNAMIC symbols # are required to link). if test -n "$old_library"; then newdlprefiles="$newdlprefiles $dir/$old_library" # Otherwise, use the dlname, so that lt_dlopen finds it. elif test -n "$dlname"; then newdlprefiles="$newdlprefiles $dir/$dlname" else newdlprefiles="$newdlprefiles $dir/$linklib" fi fi # $pass = dlpreopen if test -z "$libdir"; then # Link the convenience library if test "$linkmode" = lib; then deplibs="$dir/$old_library $deplibs" elif test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$dir/$old_library $compile_deplibs" finalize_deplibs="$dir/$old_library $finalize_deplibs" else deplibs="$lib $deplibs" # used for prog,scan pass fi continue fi if test "$linkmode" = prog && test "$pass" != link; then newlib_search_path="$newlib_search_path $ladir" deplibs="$lib $deplibs" linkalldeplibs=no if test "$link_all_deplibs" != no || test -z "$library_names" || test "$build_libtool_libs" = no; then linkalldeplibs=yes fi tmp_libs= for deplib in $dependency_libs; do case $deplib in -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test esac # Need to link against all dependency_libs? if test "$linkalldeplibs" = yes; then deplibs="$deplib $deplibs" else # Need to hardcode shared library paths # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi if test "X$duplicate_deps" = "Xyes" ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done # for deplib continue fi # $linkmode = prog... if test "$linkmode,$pass" = "prog,link"; then if test -n "$library_names" && { { test "$prefer_static_libs" = no || test "$prefer_static_libs,$installed" = "built,yes"; } || test -z "$old_library"; }; then # We need to hardcode the library path if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then # Make sure the rpath contains only unique directories. case "$temp_rpath " in *" $dir "*) ;; *" $absdir "*) ;; *) temp_rpath="$temp_rpath $absdir" ;; esac fi # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) compile_rpath="$compile_rpath $absdir" esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" esac ;; esac fi # $linkmode,$pass = prog,link... if test "$alldeplibs" = yes && { test "$deplibs_check_method" = pass_all || { test "$build_libtool_libs" = yes && test -n "$library_names"; }; }; then # We only need to search for static libraries continue fi fi link_static=no # Whether the deplib will be linked statically use_static_libs=$prefer_static_libs if test "$use_static_libs" = built && test "$installed" = yes ; then use_static_libs=no fi if test -n "$library_names" && { test "$use_static_libs" = no || test -z "$old_library"; }; then if test "$installed" = no; then notinst_deplibs="$notinst_deplibs $lib" need_relink=yes fi # This is a shared library # Warn about portability, can't link against -module's on # some systems (darwin) if test "$shouldnotlink" = yes && test "$pass" = link ; then $echo if test "$linkmode" = prog; then $echo "*** Warning: Linking the executable $output against the loadable module" else $echo "*** Warning: Linking the shared library $output against the loadable module" fi $echo "*** $linklib is not portable!" fi if test "$linkmode" = lib && test "$hardcode_into_libs" = yes; then # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) compile_rpath="$compile_rpath $absdir" esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" esac ;; esac fi if test -n "$old_archive_from_expsyms_cmds"; then # figure out the soname set dummy $library_names realname="$2" shift; shift libname=`eval \\$echo \"$libname_spec\"` # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then soname="$dlname" elif test -n "$soname_spec"; then # bleh windows case $host in *cygwin* | mingw*) major=`expr $current - $age` versuffix="-$major" ;; esac eval soname=\"$soname_spec\" else soname="$realname" fi # Make a new name for the extract_expsyms_cmds to use soroot="$soname" soname=`$echo $soroot | ${SED} -e 's/^.*\///'` newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a" # If the library has no export list, then create one now if test -f "$output_objdir/$soname-def"; then : else $show "extracting exported symbol list from \`$soname'" save_ifs="$IFS"; IFS='~' cmds=$extract_expsyms_cmds for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" fi # Create $newlib if test -f "$output_objdir/$newlib"; then :; else $show "generating import library for \`$soname'" save_ifs="$IFS"; IFS='~' cmds=$old_archive_from_expsyms_cmds for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" fi # make sure the library variables are pointing to the new library dir=$output_objdir linklib=$newlib fi # test -n "$old_archive_from_expsyms_cmds" if test "$linkmode" = prog || test "$mode" != relink; then add_shlibpath= add_dir= add= lib_linked=yes case $hardcode_action in immediate | unsupported) if test "$hardcode_direct" = no; then add="$dir/$linklib" case $host in *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; *-*-sysv4*uw2*) add_dir="-L$dir" ;; *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ *-*-unixware7*) add_dir="-L$dir" ;; *-*-darwin* ) # if the lib is a module then we can not link against # it, someone is ignoring the new warnings I added if /usr/bin/file -L $add 2> /dev/null | $EGREP ": [^:]* bundle" >/dev/null ; then $echo "** Warning, lib $linklib is a module, not a shared library" if test -z "$old_library" ; then $echo $echo "** And there doesn't seem to be a static archive available" $echo "** The link will probably fail, sorry" else add="$dir/$old_library" fi fi esac elif test "$hardcode_minus_L" = no; then case $host in *-*-sunos*) add_shlibpath="$dir" ;; esac add_dir="-L$dir" add="-l$name" elif test "$hardcode_shlibpath_var" = no; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; relink) if test "$hardcode_direct" = yes; then add="$dir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$dir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) add_dir="$add_dir -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; *) lib_linked=no ;; esac if test "$lib_linked" != yes; then $echo "$modename: configuration error: unsupported hardcode properties" exit $EXIT_FAILURE fi if test -n "$add_shlibpath"; then case :$compile_shlibpath: in *":$add_shlibpath:"*) ;; *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; esac fi if test "$linkmode" = prog; then test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" test -n "$add" && compile_deplibs="$add $compile_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" if test "$hardcode_direct" != yes && \ test "$hardcode_minus_L" != yes && \ test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; esac fi fi fi if test "$linkmode" = prog || test "$mode" = relink; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. if test "$hardcode_direct" = yes; then add="$libdir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$libdir" add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; esac add="-l$name" elif test "$hardcode_automatic" = yes; then if test -n "$inst_prefix_dir" && test -f "$inst_prefix_dir$libdir/$linklib" ; then add="$inst_prefix_dir$libdir/$linklib" else add="$libdir/$linklib" fi else # We cannot seem to hardcode it, guess we'll fake it. add_dir="-L$libdir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) add_dir="$add_dir -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" fi if test "$linkmode" = prog; then test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" test -n "$add" && finalize_deplibs="$add $finalize_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" fi fi elif test "$linkmode" = prog; then # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. if test "$hardcode_direct" != unsupported; then test -n "$old_library" && linklib="$old_library" compile_deplibs="$dir/$linklib $compile_deplibs" finalize_deplibs="$dir/$linklib $finalize_deplibs" else compile_deplibs="-l$name -L$dir $compile_deplibs" finalize_deplibs="-l$name -L$dir $finalize_deplibs" fi elif test "$build_libtool_libs" = yes; then # Not a shared library if test "$deplibs_check_method" != pass_all; then # We're trying link a shared library against a static one # but the system doesn't support it. # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. $echo $echo "*** Warning: This system can not link to static lib archive $lib." $echo "*** I have the capability to make that library automatically link in when" $echo "*** you link to this library. But I can only do this if you have a" $echo "*** shared version of the library, which you do not appear to have." if test "$module" = yes; then $echo "*** But as you try to build a module library, libtool will still create " $echo "*** a static module, that should work as long as the dlopening application" $echo "*** is linked with the -dlopen flag to resolve symbols at runtime." if test -z "$global_symbol_pipe"; then $echo $echo "*** However, this would only work if libtool was able to extract symbol" $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" $echo "*** not find such a program. So, this module is probably useless." $echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi else deplibs="$dir/$old_library $deplibs" link_static=yes fi fi # link shared/static library? if test "$linkmode" = lib; then if test -n "$dependency_libs" && { test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes || test "$link_static" = yes; }; then # Extract -R from dependency_libs temp_deplibs= for libdir in $dependency_libs; do case $libdir in -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'` case " $xrpath " in *" $temp_xrpath "*) ;; *) xrpath="$xrpath $temp_xrpath";; esac;; *) temp_deplibs="$temp_deplibs $libdir";; esac done dependency_libs="$temp_deplibs" fi newlib_search_path="$newlib_search_path $absdir" # Link against this library test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do newdependency_libs="$deplib $newdependency_libs" if test "X$duplicate_deps" = "Xyes" ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done if test "$link_all_deplibs" != no; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do case $deplib in -L*) path="$deplib" ;; *.la) dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'` test "X$dir" = "X$deplib" && dir="." # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 absdir="$dir" fi ;; esac if grep "^installed=no" $deplib > /dev/null; then path="$absdir/$objdir" else eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` if test -z "$libdir"; then $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 exit $EXIT_FAILURE fi if test "$absdir" != "$libdir"; then $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 fi path="$absdir" fi depdepl= case $host in *-*-darwin*) # we do not want to link against static libs, # but need to link against shared eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` if test -n "$deplibrary_names" ; then for tmp in $deplibrary_names ; do depdepl=$tmp done if test -f "$path/$depdepl" ; then depdepl="$path/$depdepl" fi # do not add paths which are already there case " $newlib_search_path " in *" $path "*) ;; *) newlib_search_path="$newlib_search_path $path";; esac fi path="" ;; *) path="-L$path" ;; esac ;; -l*) case $host in *-*-darwin*) # Again, we only want to link against shared libraries eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"` for tmp in $newlib_search_path ; do if test -f "$tmp/lib$tmp_libs.dylib" ; then eval depdepl="$tmp/lib$tmp_libs.dylib" break fi done path="" ;; *) continue ;; esac ;; *) continue ;; esac case " $deplibs " in *" $path "*) ;; *) deplibs="$path $deplibs" ;; esac case " $deplibs " in *" $depdepl "*) ;; *) deplibs="$depdepl $deplibs" ;; esac done fi # link_all_deplibs != no fi # linkmode = lib done # for deplib in $libs dependency_libs="$newdependency_libs" if test "$pass" = dlpreopen; then # Link the dlpreopened libraries before other libraries for deplib in $save_deplibs; do deplibs="$deplib $deplibs" done fi if test "$pass" != dlopen; then if test "$pass" != conv; then # Make sure lib_search_path contains only unique directories. lib_search_path= for dir in $newlib_search_path; do case "$lib_search_path " in *" $dir "*) ;; *) lib_search_path="$lib_search_path $dir" ;; esac done newlib_search_path= fi if test "$linkmode,$pass" != "prog,link"; then vars="deplibs" else vars="compile_deplibs finalize_deplibs" fi for var in $vars dependency_libs; do # Add libraries to $var in reverse order eval tmp_libs=\"\$$var\" new_libs= for deplib in $tmp_libs; do # FIXME: Pedantically, this is the right thing to do, so # that some nasty dependency loop isn't accidentally # broken: #new_libs="$deplib $new_libs" # Pragmatically, this seems to cause very few problems in # practice: case $deplib in -L*) new_libs="$deplib $new_libs" ;; -R*) ;; *) # And here is the reason: when a library appears more # than once as an explicit dependence of a library, or # is implicitly linked in more than once by the # compiler, it is considered special, and multiple # occurrences thereof are not removed. Compare this # with having the same library being listed as a # dependency of multiple other libraries: in this case, # we know (pedantically, we assume) the library does not # need to be listed more than once, so we keep only the # last copy. This is not always right, but it is rare # enough that we require users that really mean to play # such unportable linking tricks to link the library # using -Wl,-lname, so that libtool does not consider it # for duplicate removal. case " $specialdeplibs " in *" $deplib "*) new_libs="$deplib $new_libs" ;; *) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$deplib $new_libs" ;; esac ;; esac ;; esac done tmp_libs= for deplib in $new_libs; do case $deplib in -L*) case " $tmp_libs " in *" $deplib "*) ;; *) tmp_libs="$tmp_libs $deplib" ;; esac ;; *) tmp_libs="$tmp_libs $deplib" ;; esac done eval $var=\"$tmp_libs\" done # for var fi # Last step: remove runtime libs from dependency_libs # (they stay in deplibs) tmp_libs= for i in $dependency_libs ; do case " $predeps $postdeps $compiler_lib_search_path " in *" $i "*) i="" ;; esac if test -n "$i" ; then tmp_libs="$tmp_libs $i" fi done dependency_libs=$tmp_libs done # for pass if test "$linkmode" = prog; then dlfiles="$newdlfiles" dlprefiles="$newdlprefiles" fi case $linkmode in oldlib) if test -n "$deplibs"; then $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 fi if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 fi if test -n "$rpath"; then $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 fi if test -n "$xrpath"; then $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 fi if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 fi if test -n "$export_symbols" || test -n "$export_symbols_regex"; then $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 fi # Now set the variables for building old libraries. build_libtool_libs=no oldlibs="$output" objs="$objs$old_deplibs" ;; lib) # Make sure we only generate libraries of the form `libNAME.la'. case $outputname in lib*) name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" ;; *) if test "$module" = no; then $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi if test "$need_lib_prefix" != no; then # Add the "lib" prefix for modules if required name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" else libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` fi ;; esac if test -n "$objs"; then if test "$deplibs_check_method" != pass_all; then $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 exit $EXIT_FAILURE else $echo $echo "*** Warning: Linking the shared library $output against the non-libtool" $echo "*** objects $objs is not portable!" libobjs="$libobjs $objs" fi fi if test "$dlself" != no; then $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2 fi set dummy $rpath if test "$#" -gt 2; then $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 fi install_libdir="$2" oldlibs= if test -z "$rpath"; then if test "$build_libtool_libs" = yes; then # Building a libtool convenience library. # Some compilers have problems with a `.al' extension so # convenience libraries should have the same extension an # archive normally would. oldlibs="$output_objdir/$libname.$libext $oldlibs" build_libtool_libs=convenience build_old_libs=yes fi if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 fi else # Parse the version information argument. save_ifs="$IFS"; IFS=':' set dummy $vinfo 0 0 0 IFS="$save_ifs" if test -n "$8"; then $echo "$modename: too many parameters to \`-version-info'" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi # convert absolute version numbers to libtool ages # this retains compatibility with .la files and attempts # to make the code below a bit more comprehensible case $vinfo_number in yes) number_major="$2" number_minor="$3" number_revision="$4" # # There are really only two kinds -- those that # use the current revision as the major version # and those that subtract age and use age as # a minor version. But, then there is irix # which has an extra 1 added just for fun # case $version_type in darwin|linux|osf|windows|none) current=`expr $number_major + $number_minor` age="$number_minor" revision="$number_revision" ;; freebsd-aout|freebsd-elf|sunos) current="$number_major" revision="$number_minor" age="0" ;; irix|nonstopux) current=`expr $number_major + $number_minor` age="$number_minor" revision="$number_minor" lt_irix_increment=no ;; esac ;; no) current="$2" revision="$3" age="$4" ;; esac # Check that each of the things are valid numbers. case $current in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit $EXIT_FAILURE ;; esac case $revision in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit $EXIT_FAILURE ;; esac case $age in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit $EXIT_FAILURE ;; esac if test "$age" -gt "$current"; then $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit $EXIT_FAILURE fi # Calculate the version variables. major= versuffix= verstring= case $version_type in none) ;; darwin) # Like Linux, but with the current version available in # verstring for coding it into the library header major=.`expr $current - $age` versuffix="$major.$age.$revision" # Darwin ld doesn't like 0 for these options... minor_current=`expr $current + 1` xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" ;; freebsd-aout) major=".$current" versuffix=".$current.$revision"; ;; freebsd-elf) major=".$current" versuffix=".$current"; ;; irix | nonstopux) if test "X$lt_irix_increment" = "Xno"; then major=`expr $current - $age` else major=`expr $current - $age + 1` fi case $version_type in nonstopux) verstring_prefix=nonstopux ;; *) verstring_prefix=sgi ;; esac verstring="$verstring_prefix$major.$revision" # Add in all the interfaces that we are compatible with. loop=$revision while test "$loop" -ne 0; do iface=`expr $revision - $loop` loop=`expr $loop - 1` verstring="$verstring_prefix$major.$iface:$verstring" done # Before this point, $major must not contain `.'. major=.$major versuffix="$major.$revision" ;; linux) major=.`expr $current - $age` versuffix="$major.$age.$revision" ;; osf) major=.`expr $current - $age` versuffix=".$current.$age.$revision" verstring="$current.$age.$revision" # Add in all the interfaces that we are compatible with. loop=$age while test "$loop" -ne 0; do iface=`expr $current - $loop` loop=`expr $loop - 1` verstring="$verstring:${iface}.0" done # Make executables depend on our current version. verstring="$verstring:${current}.0" ;; sunos) major=".$current" versuffix=".$current.$revision" ;; windows) # Use '-' rather than '.', since we only want one # extension on DOS 8.3 filesystems. major=`expr $current - $age` versuffix="-$major" ;; *) $echo "$modename: unknown library version type \`$version_type'" 1>&2 $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 exit $EXIT_FAILURE ;; esac # Clear the version info if we defaulted, and they specified a release. if test -z "$vinfo" && test -n "$release"; then major= case $version_type in darwin) # we can't check for "0.0" in archive_cmds due to quoting # problems, so we reset it completely verstring= ;; *) verstring="0.0" ;; esac if test "$need_version" = no; then versuffix= else versuffix=".0.0" fi fi # Remove version info from name if versioning should be avoided if test "$avoid_version" = yes && test "$need_version" = no; then major= versuffix= verstring="" fi # Check to see if the archive will have undefined symbols. if test "$allow_undefined" = yes; then if test "$allow_undefined_flag" = unsupported; then $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 build_libtool_libs=no build_old_libs=yes fi else # Don't allow undefined symbols. allow_undefined_flag="$no_undefined_flag" fi fi if test "$mode" != relink; then # Remove our outputs, but don't remove object files since they # may have been created when compiling PIC objects. removelist= tempremovelist=`$echo "$output_objdir/*"` for p in $tempremovelist; do case $p in *.$objext) ;; $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) if test "X$precious_files_regex" != "X"; then if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 then continue fi fi removelist="$removelist $p" ;; *) ;; esac done if test -n "$removelist"; then $show "${rm}r $removelist" $run ${rm}r $removelist fi fi # Now set the variables for building old libraries. if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then oldlibs="$oldlibs $output_objdir/$libname.$libext" # Transform .lo files to .o files. oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` fi # Eliminate all temporary directories. #for path in $notinst_path; do # lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"` # deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"` # dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"` #done if test -n "$xrpath"; then # If the user specified any rpath flags, then add them. temp_xrpath= for libdir in $xrpath; do temp_xrpath="$temp_xrpath -R$libdir" case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" ;; esac done if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then dependency_libs="$temp_xrpath $dependency_libs" fi fi # Make sure dlfiles contains only unique files that won't be dlpreopened old_dlfiles="$dlfiles" dlfiles= for lib in $old_dlfiles; do case " $dlprefiles $dlfiles " in *" $lib "*) ;; *) dlfiles="$dlfiles $lib" ;; esac done # Make sure dlprefiles contains only unique files old_dlprefiles="$dlprefiles" dlprefiles= for lib in $old_dlprefiles; do case "$dlprefiles " in *" $lib "*) ;; *) dlprefiles="$dlprefiles $lib" ;; esac done if test "$build_libtool_libs" = yes; then if test -n "$rpath"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C library is in the System framework deplibs="$deplibs -framework System" ;; *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work ;; *) # Add libc to deplibs on all other systems if necessary. if test "$build_libtool_need_lc" = "yes"; then deplibs="$deplibs -lc" fi ;; esac fi # Transform deplibs into only deplibs that can be linked in shared. name_save=$name libname_save=$libname release_save=$release versuffix_save=$versuffix major_save=$major # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? release="" versuffix="" major="" newdeplibs= droppeddeps=no case $deplibs_check_method in pass_all) # Don't check for shared/static. Everything works. # This might be a little naive. We might want to check # whether the library exists or not. But this is on # osf3 & osf4 and I'm not really sure... Just # implementing what was already the behavior. newdeplibs=$deplibs ;; test_compile) # This code stresses the "libraries are programs" paradigm to its # limits. Maybe even breaks it. We compile a program, linking it # against the deplibs as a proxy for the library. Then we can check # whether they linked in statically or dynamically with ldd. $rm conftest.c cat > conftest.c </dev/null` for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null \ | grep " -> " >/dev/null; then continue fi # The statement above tries to avoid entering an # endless loop below, in case of cyclic links. # We might still enter an endless loop, since a link # loop can be closed while we follow links, # but so what? potlib="$potent_lib" while test -h "$potlib" 2>/dev/null; do potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` case $potliblink in [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ | ${SED} 10q \ | $EGREP "$file_magic_regex" > /dev/null; then newdeplibs="$newdeplibs $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes $echo $echo "*** Warning: linker path does not have real file for library $a_deplib." $echo "*** I have the capability to make that library automatically link in when" $echo "*** you link to this library. But I can only do this if you have a" $echo "*** shared version of the library, which you do not appear to have" $echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $echo "*** with $libname but no candidates were found. (...for file magic test)" else $echo "*** with $libname and none of the candidates passed a file format test" $echo "*** using a file magic. Last file checked: $potlib" fi fi else # Add a -L argument. newdeplibs="$newdeplibs $a_deplib" fi done # Gone through all deplibs. ;; match_pattern*) set dummy $deplibs_check_method match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` for a_deplib in $deplibs; do name=`expr $a_deplib : '-l\(.*\)'` # If $name is empty we are operating on a -L argument. if test -n "$name" && test "$name" != "0"; then if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $a_deplib "*) newdeplibs="$newdeplibs $a_deplib" a_deplib="" ;; esac fi if test -n "$a_deplib" ; then libname=`eval \\$echo \"$libname_spec\"` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do potlib="$potent_lib" # see symlink-check above in file_magic test if eval $echo \"$potent_lib\" 2>/dev/null \ | ${SED} 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then newdeplibs="$newdeplibs $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes $echo $echo "*** Warning: linker path does not have real file for library $a_deplib." $echo "*** I have the capability to make that library automatically link in when" $echo "*** you link to this library. But I can only do this if you have a" $echo "*** shared version of the library, which you do not appear to have" $echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $echo "*** with $libname but no candidates were found. (...for regex pattern test)" else $echo "*** with $libname and none of the candidates passed a file format test" $echo "*** using a regex pattern. Last file checked: $potlib" fi fi else # Add a -L argument. newdeplibs="$newdeplibs $a_deplib" fi done # Gone through all deplibs. ;; none | unknown | *) newdeplibs="" tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ -e 's/ -[LR][^ ]*//g'` if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then for i in $predeps $postdeps ; do # can't use Xsed below, because $i might contain '/' tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"` done fi if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \ | grep . >/dev/null; then $echo if test "X$deplibs_check_method" = "Xnone"; then $echo "*** Warning: inter-library dependencies are not supported in this platform." else $echo "*** Warning: inter-library dependencies are not known to be supported." fi $echo "*** All declared inter-library dependencies are being dropped." droppeddeps=yes fi ;; esac versuffix=$versuffix_save major=$major_save release=$release_save libname=$libname_save name=$name_save case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` ;; esac if test "$droppeddeps" = yes; then if test "$module" = yes; then $echo $echo "*** Warning: libtool could not satisfy all declared inter-library" $echo "*** dependencies of module $libname. Therefore, libtool will create" $echo "*** a static module, that should work as long as the dlopening" $echo "*** application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then $echo $echo "*** However, this would only work if libtool was able to extract symbol" $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" $echo "*** not find such a program. So, this module is probably useless." $echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi else $echo "*** The inter-library dependencies that have been dropped here will be" $echo "*** automatically added whenever a program is linked with this library" $echo "*** or is declared to -dlopen it." if test "$allow_undefined" = no; then $echo $echo "*** Since this library must not contain undefined symbols," $echo "*** because either the platform does not support them or" $echo "*** it was explicitly requested with -no-undefined," $echo "*** libtool will only create a static version of it." if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi fi fi # Done checking deplibs! deplibs=$newdeplibs fi # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $deplibs " in *" -L$path/$objdir "*) new_libs="$new_libs -L$path/$objdir" ;; esac ;; esac done for deplib in $deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$new_libs $deplib" ;; esac ;; *) new_libs="$new_libs $deplib" ;; esac done deplibs="$new_libs" # All the library-specific variables (install_libdir is set above). library_names= old_library= dlname= # Test again, we may have decided not to build it any more if test "$build_libtool_libs" = yes; then if test "$hardcode_into_libs" = yes; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath="$finalize_rpath" test "$mode" != relink && rpath="$compile_rpath$rpath" for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" dep_rpath="$dep_rpath $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) perm_rpath="$perm_rpath $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" if test -n "$hardcode_libdir_flag_spec_ld"; then case $archive_cmds in *\$LD*) eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" ;; *) eval dep_rpath=\"$hardcode_libdir_flag_spec\" ;; esac else eval dep_rpath=\"$hardcode_libdir_flag_spec\" fi fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do rpath="$rpath$dir:" done eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" fi test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" fi shlibpath="$finalize_shlibpath" test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi # Get the real and link names of the library. eval shared_ext=\"$shrext_cmds\" eval library_names=\"$library_names_spec\" set dummy $library_names realname="$2" shift; shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else soname="$realname" fi if test -z "$dlname"; then dlname=$soname fi lib="$output_objdir/$realname" linknames= for link do linknames="$linknames $link" done # Use standard objects if they are pic test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` # Prepare the list of exported symbols if test -z "$export_symbols"; then if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then $show "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $run $rm $export_symbols cmds=$export_symbols_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" if len=`expr "X$cmd" : ".*"` && test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then $show "$cmd" $run eval "$cmd" || exit $? skipped_export=false else # The command line is too long to execute in one step. $show "using reloadable object file for export list..." skipped_export=: # Break out early, otherwise skipped_export may be # set to false by a later but shorter cmd. break fi done IFS="$save_ifs" if test -n "$export_symbols_regex"; then $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' $show "$mv \"${export_symbols}T\" \"$export_symbols\"" $run eval '$mv "${export_symbols}T" "$export_symbols"' fi fi fi if test -n "$export_symbols" && test -n "$include_expsyms"; then $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' fi tmp_deplibs= for test_deplib in $deplibs; do case " $convenience " in *" $test_deplib "*) ;; *) tmp_deplibs="$tmp_deplibs $test_deplib" ;; esac done deplibs="$tmp_deplibs" if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then save_libobjs=$libobjs eval libobjs=\"\$libobjs $whole_archive_flag_spec\" else gentop="$output_objdir/${outputname}x" generated="$generated $gentop" func_extract_archives $gentop $convenience libobjs="$libobjs $func_extract_archives_result" fi fi if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" linker_flags="$linker_flags $flag" fi # Make a backup of the uninstalled library when relinking if test "$mode" = relink; then $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? fi # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then eval test_cmds=\"$module_expsym_cmds\" cmds=$module_expsym_cmds else eval test_cmds=\"$module_cmds\" cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then eval test_cmds=\"$archive_expsym_cmds\" cmds=$archive_expsym_cmds else eval test_cmds=\"$archive_cmds\" cmds=$archive_cmds fi fi if test "X$skipped_export" != "X:" && len=`expr "X$test_cmds" : ".*" 2>/dev/null` && test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then : else # The command line is too long to link in one step, link piecewise. $echo "creating reloadable object files..." # Save the value of $output and $libobjs because we want to # use them later. If we have whole_archive_flag_spec, we # want to use save_libobjs as it was before # whole_archive_flag_spec was expanded, because we can't # assume the linker understands whole_archive_flag_spec. # This may have to be revisited, in case too many # convenience libraries get linked in and end up exceeding # the spec. if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then save_libobjs=$libobjs fi save_output=$output output_la=`$echo "X$output" | $Xsed -e "$basename"` # Clear the reloadable object creation command queue and # initialize k to one. test_cmds= concat_cmds= objlist= delfiles= last_robj= k=1 output=$output_objdir/$output_la-${k}.$objext # Loop over the list of objects to be linked. for obj in $save_libobjs do eval test_cmds=\"$reload_cmds $objlist $last_robj\" if test "X$objlist" = X || { len=`expr "X$test_cmds" : ".*" 2>/dev/null` && test "$len" -le "$max_cmd_len"; }; then objlist="$objlist $obj" else # The command $test_cmds is almost too long, add a # command to the queue. if test "$k" -eq 1 ; then # The first file doesn't have a previous command to add. eval concat_cmds=\"$reload_cmds $objlist $last_robj\" else # All subsequent reloadable object files will link in # the last one created. eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\" fi last_robj=$output_objdir/$output_la-${k}.$objext k=`expr $k + 1` output=$output_objdir/$output_la-${k}.$objext objlist=$obj len=1 fi done # Handle the remaining objects by creating one last # reloadable object file. All subsequent reloadable object # files will link in the last one created. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" if ${skipped_export-false}; then $show "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $run $rm $export_symbols libobjs=$output # Append the command to create the export file. eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\" fi # Set up a command to remove the reloadable object files # after they are used. i=0 while test "$i" -lt "$k" do i=`expr $i + 1` delfiles="$delfiles $output_objdir/$output_la-${i}.$objext" done $echo "creating a temporary reloadable object file: $output" # Loop through the commands generated above and execute them. save_ifs="$IFS"; IFS='~' for cmd in $concat_cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" libobjs=$output # Restore the value of output. output=$save_output if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then eval libobjs=\"\$libobjs $whole_archive_flag_spec\" fi # Expand the library linking commands again to reset the # value of $libobjs for piecewise linking. # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then cmds=$module_expsym_cmds else cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then cmds=$archive_expsym_cmds else cmds=$archive_cmds fi fi # Append the command to remove the reloadable object files # to the just-reset $cmds. eval cmds=\"\$cmds~\$rm $delfiles\" fi save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test "$mode" = relink; then $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' fi exit $lt_exit } done IFS="$save_ifs" # Restore the uninstalled library and exit if test "$mode" = relink; then $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? if test -n "$convenience"; then if test -z "$whole_archive_flag_spec"; then $show "${rm}r $gentop" $run ${rm}r "$gentop" fi fi exit $EXIT_SUCCESS fi # Create links to the real library. for linkname in $linknames; do if test "$realname" != "$linkname"; then $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? fi done # If -module or -export-dynamic was specified, set the dlname. if test "$module" = yes || test "$export_dynamic" = yes; then # On all known operating systems, these are identical. dlname="$soname" fi fi ;; obj) if test -n "$deplibs"; then $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 fi if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 fi if test -n "$rpath"; then $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 fi if test -n "$xrpath"; then $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 fi if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 fi case $output in *.lo) if test -n "$objs$old_deplibs"; then $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 exit $EXIT_FAILURE fi libobj="$output" obj=`$echo "X$output" | $Xsed -e "$lo2o"` ;; *) libobj= obj="$output" ;; esac # Delete the old objects. $run $rm $obj $libobj # Objects from convenience libraries. This assumes # single-version convenience libraries. Whenever we create # different ones for PIC/non-PIC, this we'll have to duplicate # the extraction. reload_conv_objs= gentop= # reload_cmds runs $LD directly, so let us get rid of # -Wl from whole_archive_flag_spec and hope we can get by with # turning comma into space.. wl= if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" reload_conv_objs=$reload_objs\ `$echo "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` else gentop="$output_objdir/${obj}x" generated="$generated $gentop" func_extract_archives $gentop $convenience reload_conv_objs="$reload_objs $func_extract_archives_result" fi fi # Create the old-style object. reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test output="$obj" cmds=$reload_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" # Exit if we aren't doing a library object file. if test -z "$libobj"; then if test -n "$gentop"; then $show "${rm}r $gentop" $run ${rm}r $gentop fi exit $EXIT_SUCCESS fi if test "$build_libtool_libs" != yes; then if test -n "$gentop"; then $show "${rm}r $gentop" $run ${rm}r $gentop fi # Create an invalid libtool object if no PIC, so that we don't # accidentally link it into a program. # $show "echo timestamp > $libobj" # $run eval "echo timestamp > $libobj" || exit $? exit $EXIT_SUCCESS fi if test -n "$pic_flag" || test "$pic_mode" != default; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" output="$libobj" cmds=$reload_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" fi if test -n "$gentop"; then $show "${rm}r $gentop" $run ${rm}r $gentop fi exit $EXIT_SUCCESS ;; prog) case $host in *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;; esac if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 fi if test "$preload" = yes; then if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown && test "$dlopen_self_static" = unknown; then $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." fi fi case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` ;; esac case $host in *darwin*) # Don't allow lazy linking, it breaks C++ global constructors if test "$tagname" = CXX ; then compile_command="$compile_command ${wl}-bind_at_load" finalize_command="$finalize_command ${wl}-bind_at_load" fi ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $compile_deplibs " in *" -L$path/$objdir "*) new_libs="$new_libs -L$path/$objdir" ;; esac ;; esac done for deplib in $compile_deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$new_libs $deplib" ;; esac ;; *) new_libs="$new_libs $deplib" ;; esac done compile_deplibs="$new_libs" compile_command="$compile_command $compile_deplibs" finalize_command="$finalize_command $finalize_deplibs" if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. for libdir in $rpath $xrpath; do # This is the magic to use -rpath. case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" ;; esac done fi # Now hardcode the library paths rpath= hardcode_libdirs= for libdir in $compile_rpath $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" rpath="$rpath $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) perm_rpath="$perm_rpath $libdir" ;; esac fi case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$libdir:"*) ;; *) dllsearchpath="$dllsearchpath:$libdir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; *) dllsearchpath="$dllsearchpath:$testbindir";; esac ;; esac done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi compile_rpath="$rpath" rpath= hardcode_libdirs= for libdir in $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" rpath="$rpath $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi finalize_rpath="$rpath" if test -n "$libobjs" && test "$build_old_libs" = yes; then # Transform all the library objects into standard objects. compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` fi dlsyms= if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then if test -n "$NM" && test -n "$global_symbol_pipe"; then dlsyms="${outputname}S.c" else $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 fi fi if test -n "$dlsyms"; then case $dlsyms in "") ;; *.c) # Discover the nlist of each of the dlfiles. nlist="$output_objdir/${outputname}.nm" $show "$rm $nlist ${nlist}S ${nlist}T" $run $rm "$nlist" "${nlist}S" "${nlist}T" # Parse the name list into a source file. $show "creating $output_objdir/$dlsyms" test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ /* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ /* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ #ifdef __cplusplus extern \"C\" { #endif /* Prevent the only kind of declaration conflicts we can make. */ #define lt_preloaded_symbols some_other_symbol /* External symbol declarations for the compiler. */\ " if test "$dlself" = yes; then $show "generating symbol list for \`$output'" test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` for arg in $progfiles; do $show "extracting global C symbols from \`$arg'" $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' $run eval '$mv "$nlist"T "$nlist"' fi if test -n "$export_symbols_regex"; then $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' $run eval '$mv "$nlist"T "$nlist"' fi # Prepare the list of exported symbols if test -z "$export_symbols"; then export_symbols="$output_objdir/$outputname.exp" $run $rm $export_symbols $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' case $host in *cygwin* | *mingw* ) $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' $run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' ;; esac else $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' $run eval 'mv "$nlist"T "$nlist"' case $host in *cygwin* | *mingw* ) $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' $run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' ;; esac fi fi for arg in $dlprefiles; do $show "extracting global C symbols from \`$arg'" name=`$echo "$arg" | ${SED} -e 's%^.*/%%'` $run eval '$echo ": $name " >> "$nlist"' $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" done if test -z "$run"; then # Make sure we have at least an empty file. test -f "$nlist" || : > "$nlist" if test -n "$exclude_expsyms"; then $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T $mv "$nlist"T "$nlist" fi # Try sorting and uniquifying the output. if grep -v "^: " < "$nlist" | if sort -k 3 /dev/null 2>&1; then sort -k 3 else sort +2 fi | uniq > "$nlist"S; then : else grep -v "^: " < "$nlist" > "$nlist"S fi if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' else $echo '/* NONE */' >> "$output_objdir/$dlsyms" fi $echo >> "$output_objdir/$dlsyms" "\ #undef lt_preloaded_symbols #if defined (__STDC__) && __STDC__ # define lt_ptr void * #else # define lt_ptr char * # define const #endif /* The mapping between symbol names and symbols. */ " case $host in *cygwin* | *mingw* ) $echo >> "$output_objdir/$dlsyms" "\ /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs */ struct { " ;; * ) $echo >> "$output_objdir/$dlsyms" "\ const struct { " ;; esac $echo >> "$output_objdir/$dlsyms" "\ const char *name; lt_ptr address; } lt_preloaded_symbols[] = {\ " eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms" $echo >> "$output_objdir/$dlsyms" "\ {0, (lt_ptr) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt_preloaded_symbols; } #endif #ifdef __cplusplus } #endif\ " fi pic_flag_for_symtable= case $host in # compiling the symbol table file with pic_flag works around # a FreeBSD bug that causes programs to crash when -lm is # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) case "$compile_command " in *" -static "*) ;; *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";; esac;; *-*-hpux*) case "$compile_command " in *" -static "*) ;; *) pic_flag_for_symtable=" $pic_flag";; esac esac # Now compile the dynamic symbol file. $show "(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" $run eval '(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? # Clean up the generated files. $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" # Transform the symbol file into the correct name. case $host in *cygwin* | *mingw* ) if test -f "$output_objdir/${outputname}.def" ; then compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP` finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP` else compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` fi ;; * ) compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` ;; esac ;; *) $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 exit $EXIT_FAILURE ;; esac else # We keep going just in case the user didn't refer to # lt_preloaded_symbols. The linker will fail if global_symbol_pipe # really was required. # Nullify the symbol file. compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP` finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP` fi if test "$need_relink" = no || test "$build_libtool_libs" != yes; then # Replace the output file specification. compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$output"'%g' | $NL2SP` link_command="$compile_command$compile_rpath" # We have no uninstalled library dependencies, so finalize right now. $show "$link_command" $run eval "$link_command" exit_status=$? # Delete the generated files. if test -n "$dlsyms"; then $show "$rm $output_objdir/${outputname}S.${objext}" $run $rm "$output_objdir/${outputname}S.${objext}" fi exit $exit_status fi if test -n "$shlibpath_var"; then # We should set the shlibpath_var rpath= for dir in $temp_rpath; do case $dir in [\\/]* | [A-Za-z]:[\\/]*) # Absolute path. rpath="$rpath$dir:" ;; *) # Relative path: add a thisdir entry. rpath="$rpath\$thisdir/$dir:" ;; esac done temp_rpath="$rpath" fi if test -n "$compile_shlibpath$finalize_shlibpath"; then compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" fi if test -n "$finalize_shlibpath"; then finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" fi compile_var= finalize_var= if test -n "$runpath_var"; then if test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do rpath="$rpath$dir:" done compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi if test -n "$finalize_perm_rpath"; then # We should set the runpath_var. rpath= for dir in $finalize_perm_rpath; do rpath="$rpath$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi fi if test "$no_install" = yes; then # We don't need to create a wrapper script. link_command="$compile_var$compile_command$compile_rpath" # Replace the output file specification. link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. $run $rm $output # Link the executable and exit $show "$link_command" $run eval "$link_command" || exit $? exit $EXIT_SUCCESS fi if test "$hardcode_action" = relink; then # Fast installation is not supported link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 $echo "$modename: \`$output' will be relinked during installation" 1>&2 else if test "$fast_install" != no; then link_command="$finalize_var$compile_command$finalize_rpath" if test "$fast_install" = yes; then relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $SP2NL | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g' | $NL2SP` else # fast_install is set to needless relink_command= fi else link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" fi fi # Replace the output file specification. link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname $show "$link_command" $run eval "$link_command" || exit $? # Now create the wrapper script. $show "creating $output" # Quote the relink command for shipping. if test -n "$relink_command"; then # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` relink_command="$var=\"$var_value\"; export $var; $relink_command" fi done relink_command="(cd `pwd`; $relink_command)" relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP` fi # Quote $echo for shipping. if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then case $progpath in [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; esac qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` else qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` fi # Only actually do things if our run command is non-null. if test -z "$run"; then # win32 will think the script is a binary if it has # a .exe suffix, so we strip it off here. case $output in *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;; esac # test for cygwin because mv fails w/o .exe extensions case $host in *cygwin*) exeext=.exe outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;; *) exeext= ;; esac case $host in *cygwin* | *mingw* ) output_name=`basename $output` output_path=`dirname $output` cwrappersource="$output_path/$objdir/lt-$output_name.c" cwrapper="$output_path/$output_name.exe" $rm $cwrappersource $cwrapper trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 cat > $cwrappersource <> $cwrappersource<<"EOF" #include #include #include #include #include #include #include #include #include #if defined(PATH_MAX) # define LT_PATHMAX PATH_MAX #elif defined(MAXPATHLEN) # define LT_PATHMAX MAXPATHLEN #else # define LT_PATHMAX 1024 #endif #ifndef DIR_SEPARATOR # define DIR_SEPARATOR '/' # define PATH_SEPARATOR ':' #endif #if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ defined (__OS2__) # define HAVE_DOS_BASED_FILE_SYSTEM # ifndef DIR_SEPARATOR_2 # define DIR_SEPARATOR_2 '\\' # endif # ifndef PATH_SEPARATOR_2 # define PATH_SEPARATOR_2 ';' # endif #endif #ifndef DIR_SEPARATOR_2 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) #else /* DIR_SEPARATOR_2 */ # define IS_DIR_SEPARATOR(ch) \ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) #endif /* DIR_SEPARATOR_2 */ #ifndef PATH_SEPARATOR_2 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) #else /* PATH_SEPARATOR_2 */ # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) #endif /* PATH_SEPARATOR_2 */ #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) #define XFREE(stale) do { \ if (stale) { free ((void *) stale); stale = 0; } \ } while (0) /* -DDEBUG is fairly common in CFLAGS. */ #undef DEBUG #if defined DEBUGWRAPPER # define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__) #else # define DEBUG(format, ...) #endif const char *program_name = NULL; void * xmalloc (size_t num); char * xstrdup (const char *string); const char * base_name (const char *name); char * find_executable(const char *wrapper); int check_executable(const char *path); char * strendzap(char *str, const char *pat); void lt_fatal (const char *message, ...); int main (int argc, char *argv[]) { char **newargz; int i; program_name = (char *) xstrdup (base_name (argv[0])); DEBUG("(main) argv[0] : %s\n",argv[0]); DEBUG("(main) program_name : %s\n",program_name); newargz = XMALLOC(char *, argc+2); EOF cat >> $cwrappersource <> $cwrappersource <<"EOF" newargz[1] = find_executable(argv[0]); if (newargz[1] == NULL) lt_fatal("Couldn't find %s", argv[0]); DEBUG("(main) found exe at : %s\n",newargz[1]); /* we know the script has the same name, without the .exe */ /* so make sure newargz[1] doesn't end in .exe */ strendzap(newargz[1],".exe"); for (i = 1; i < argc; i++) newargz[i+1] = xstrdup(argv[i]); newargz[argc+1] = NULL; for (i=0; i> $cwrappersource <> $cwrappersource <> $cwrappersource <<"EOF" return 127; } void * xmalloc (size_t num) { void * p = (void *) malloc (num); if (!p) lt_fatal ("Memory exhausted"); return p; } char * xstrdup (const char *string) { return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL ; } const char * base_name (const char *name) { const char *base; #if defined (HAVE_DOS_BASED_FILE_SYSTEM) /* Skip over the disk name in MSDOS pathnames. */ if (isalpha ((unsigned char)name[0]) && name[1] == ':') name += 2; #endif for (base = name; *name; name++) if (IS_DIR_SEPARATOR (*name)) base = name + 1; return base; } int check_executable(const char * path) { struct stat st; DEBUG("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!"); if ((!path) || (!*path)) return 0; if ((stat (path, &st) >= 0) && ( /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */ #if defined (S_IXOTH) ((st.st_mode & S_IXOTH) == S_IXOTH) || #endif #if defined (S_IXGRP) ((st.st_mode & S_IXGRP) == S_IXGRP) || #endif ((st.st_mode & S_IXUSR) == S_IXUSR)) ) return 1; else return 0; } /* Searches for the full path of the wrapper. Returns newly allocated full path name if found, NULL otherwise */ char * find_executable (const char* wrapper) { int has_slash = 0; const char* p; const char* p_next; /* static buffer for getcwd */ char tmp[LT_PATHMAX + 1]; int tmp_len; char* concat_name; DEBUG("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"); if ((wrapper == NULL) || (*wrapper == '\0')) return NULL; /* Absolute path? */ #if defined (HAVE_DOS_BASED_FILE_SYSTEM) if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':') { concat_name = xstrdup (wrapper); if (check_executable(concat_name)) return concat_name; XFREE(concat_name); } else { #endif if (IS_DIR_SEPARATOR (wrapper[0])) { concat_name = xstrdup (wrapper); if (check_executable(concat_name)) return concat_name; XFREE(concat_name); } #if defined (HAVE_DOS_BASED_FILE_SYSTEM) } #endif for (p = wrapper; *p; p++) if (*p == '/') { has_slash = 1; break; } if (!has_slash) { /* no slashes; search PATH */ const char* path = getenv ("PATH"); if (path != NULL) { for (p = path; *p; p = p_next) { const char* q; size_t p_len; for (q = p; *q; q++) if (IS_PATH_SEPARATOR(*q)) break; p_len = q - p; p_next = (*q == '\0' ? q : q + 1); if (p_len == 0) { /* empty path: current directory */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal ("getcwd failed"); tmp_len = strlen(tmp); concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); } else { concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1); memcpy (concat_name, p, p_len); concat_name[p_len] = '/'; strcpy (concat_name + p_len + 1, wrapper); } if (check_executable(concat_name)) return concat_name; XFREE(concat_name); } } /* not found in PATH; assume curdir */ } /* Relative path | not found in path: prepend cwd */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal ("getcwd failed"); tmp_len = strlen(tmp); concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); if (check_executable(concat_name)) return concat_name; XFREE(concat_name); return NULL; } char * strendzap(char *str, const char *pat) { size_t len, patlen; assert(str != NULL); assert(pat != NULL); len = strlen(str); patlen = strlen(pat); if (patlen <= len) { str += len - patlen; if (strcmp(str, pat) == 0) *str = '\0'; } return str; } static void lt_error_core (int exit_status, const char * mode, const char * message, va_list ap) { fprintf (stderr, "%s: %s: ", program_name, mode); vfprintf (stderr, message, ap); fprintf (stderr, ".\n"); if (exit_status >= 0) exit (exit_status); } void lt_fatal (const char *message, ...) { va_list ap; va_start (ap, message); lt_error_core (EXIT_FAILURE, "FATAL", message, ap); va_end (ap); } EOF # we should really use a build-platform specific compiler # here, but OTOH, the wrappers (shell script and this C one) # are only useful if you want to execute the "real" binary. # Since the "real" binary is built for $host, then this # wrapper might as well be built for $host, too. $run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource ;; esac $rm $output trap "$rm $output; exit $EXIT_FAILURE" 1 2 15 $echo > $output "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='${SED} -e 1s/^X//' sed_quote_subst='$sed_quote_subst' # Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE). if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH relink_command=\"$relink_command\" # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variable: notinst_deplibs='$notinst_deplibs' else # When we are sourced in execute mode, \$file and \$echo are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then echo=\"$qecho\" file=\"\$0\" # Make sure echo works. if test \"X\$1\" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then # Yippee, \$echo works! : else # Restart under the correct shell, and then maybe \$echo will work. exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} fi fi\ " $echo >> $output "\ # Find the directory that this script lives in. thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` while test -n \"\$file\"; do destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` done # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test "$fast_install" = yes; then $echo >> $output "\ program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || \\ { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" if test ! -d \"\$progdir\"; then $mkdir \"\$progdir\" else $rm \"\$progdir/\$file\" fi" $echo >> $output "\ # relink executable if necessary if test -n \"\$relink_command\"; then if relink_command_output=\`eval \$relink_command 2>&1\`; then : else $echo \"\$relink_command_output\" >&2 $rm \"\$progdir/\$file\" exit $EXIT_FAILURE fi fi $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || { $rm \"\$progdir/\$program\"; $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } $rm \"\$progdir/\$file\" fi" else $echo >> $output "\ program='$outputname' progdir=\"\$thisdir/$objdir\" " fi $echo >> $output "\ if test -f \"\$progdir/\$program\"; then" # Export our shlibpath_var if we have one. if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $echo >> $output "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` export $shlibpath_var " fi # fixup the dll searchpath if we need to. if test -n "$dllsearchpath"; then $echo >> $output "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi $echo >> $output "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. " case $host in # Backslashes separate directories on plain windows *-*-mingw | *-*-os2*) $echo >> $output "\ exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} " ;; *) $echo >> $output "\ exec \"\$progdir/\$program\" \${1+\"\$@\"} " ;; esac $echo >> $output "\ \$echo \"\$0: cannot exec \$program \$*\" exit $EXIT_FAILURE fi else # The program doesn't exist. \$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 \$echo \"This script is just a wrapper for \$program.\" 1>&2 $echo \"See the $PACKAGE documentation for more information.\" 1>&2 exit $EXIT_FAILURE fi fi\ " chmod +x $output fi exit $EXIT_SUCCESS ;; esac # See if we need to build an old-fashioned archive. for oldlib in $oldlibs; do if test "$build_libtool_libs" = convenience; then oldobjs="$libobjs_save" addlibs="$convenience" build_libtool_libs=no else if test "$build_libtool_libs" = module; then oldobjs="$libobjs_save" build_libtool_libs=no else oldobjs="$old_deplibs $non_pic_objects" fi addlibs="$old_convenience" fi if test -n "$addlibs"; then gentop="$output_objdir/${outputname}x" generated="$generated $gentop" func_extract_archives $gentop $addlibs oldobjs="$oldobjs $func_extract_archives_result" fi # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then cmds=$old_archive_from_new_cmds else # POSIX demands no paths to be encoded in archives. We have # to avoid creating archives with duplicate basenames if we # might have to extract them afterwards, e.g., when creating a # static archive out of a convenience library, or when linking # the entirety of a libtool archive into another (currently # not supported by libtool). if (for obj in $oldobjs do $echo "X$obj" | $Xsed -e 's%^.*/%%' done | sort | sort -uc >/dev/null 2>&1); then : else $echo "copying selected object files to avoid basename conflicts..." if test -z "$gentop"; then gentop="$output_objdir/${outputname}x" generated="$generated $gentop" $show "${rm}r $gentop" $run ${rm}r "$gentop" $show "$mkdir $gentop" $run $mkdir "$gentop" exit_status=$? if test "$exit_status" -ne 0 && test ! -d "$gentop"; then exit $exit_status fi fi save_oldobjs=$oldobjs oldobjs= counter=1 for obj in $save_oldobjs do objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` case " $oldobjs " in " ") oldobjs=$obj ;; *[\ /]"$objbase "*) while :; do # Make sure we don't pick an alternate name that also # overlaps. newobj=lt$counter-$objbase counter=`expr $counter + 1` case " $oldobjs " in *[\ /]"$newobj "*) ;; *) if test ! -f "$gentop/$newobj"; then break; fi ;; esac done $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" $run ln "$obj" "$gentop/$newobj" || $run cp "$obj" "$gentop/$newobj" oldobjs="$oldobjs $gentop/$newobj" ;; *) oldobjs="$oldobjs $obj" ;; esac done fi eval cmds=\"$old_archive_cmds\" if len=`expr "X$cmds" : ".*"` && test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then cmds=$old_archive_cmds else # the command line is too long to link in one step, link in parts $echo "using piecewise archive linking..." save_RANLIB=$RANLIB RANLIB=: objlist= concat_cmds= save_oldobjs=$oldobjs # Is there a better way of finding the last object in the list? for obj in $save_oldobjs do last_oldobj=$obj done for obj in $save_oldobjs do oldobjs="$objlist $obj" objlist="$objlist $obj" eval test_cmds=\"$old_archive_cmds\" if len=`expr "X$test_cmds" : ".*" 2>/dev/null` && test "$len" -le "$max_cmd_len"; then : else # the above command should be used before it gets too long oldobjs=$objlist if test "$obj" = "$last_oldobj" ; then RANLIB=$save_RANLIB fi test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" objlist= fi done RANLIB=$save_RANLIB oldobjs=$objlist if test "X$oldobjs" = "X" ; then eval cmds=\"\$concat_cmds\" else eval cmds=\"\$concat_cmds~\$old_archive_cmds\" fi fi fi save_ifs="$IFS"; IFS='~' for cmd in $cmds; do eval cmd=\"$cmd\" IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" done if test -n "$generated"; then $show "${rm}r$generated" $run ${rm}r$generated fi # Now create the libtool archive. case $output in *.la) old_library= test "$build_old_libs" = yes && old_library="$libname.$libext" $show "creating $output" # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` relink_command="$var=\"$var_value\"; export $var; $relink_command" fi done # Quote the link command for shipping. relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP` if test "$hardcode_automatic" = yes ; then relink_command= fi # Only create the output if not a dry run. if test -z "$run"; then for installed in no yes; do if test "$installed" = yes; then if test -z "$install_libdir"; then break fi output="$output_objdir/$outputname"i # Replace all uninstalled libtool libraries with the installed ones newdependency_libs= for deplib in $dependency_libs; do case $deplib in *.la) name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` if test -z "$libdir"; then $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 exit $EXIT_FAILURE fi newdependency_libs="$newdependency_libs $libdir/$name" ;; *) newdependency_libs="$newdependency_libs $deplib" ;; esac done dependency_libs="$newdependency_libs" newdlfiles= for lib in $dlfiles; do name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` if test -z "$libdir"; then $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 exit $EXIT_FAILURE fi newdlfiles="$newdlfiles $libdir/$name" done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` if test -z "$libdir"; then $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 exit $EXIT_FAILURE fi newdlprefiles="$newdlprefiles $libdir/$name" done dlprefiles="$newdlprefiles" else newdlfiles= for lib in $dlfiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac newdlfiles="$newdlfiles $abs" done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac newdlprefiles="$newdlprefiles $abs" done dlprefiles="$newdlprefiles" fi $rm $output # place dlname in correct position for cygwin tdlname=$dlname case $host,$output,$installed,$module,$dlname in *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; esac $echo > $output "\ # $outputname - a libtool library file # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='$tdlname' # Names of this library. library_names='$library_names' # The name of the static archive. old_library='$old_library' # Libraries that this one depends upon. dependency_libs='$dependency_libs' # Version information for $libname. current=$current age=$age revision=$revision # Is this an already installed library? installed=$installed # Should we warn about portability when linking against -modules? shouldnotlink=$module # Files to dlopen/dlpreopen dlopen='$dlfiles' dlpreopen='$dlprefiles' # Directory that this library needs to be installed in: libdir='$install_libdir'" if test "$installed" = no && test "$need_relink" = yes; then $echo >> $output "\ relink_command=\"$relink_command\"" fi done fi # Do a symbolic link so that the libtool archive can be found in # LD_LIBRARY_PATH before the program is installed. $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? ;; esac exit $EXIT_SUCCESS ;; # libtool install mode install) modename="$modename: install" # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || # Allow the use of GNU shtool's install command. $echo "X$nonopt" | grep shtool > /dev/null; then # Aesthetically quote it. arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac install_prog="$arg " arg="$1" shift else install_prog= arg=$nonopt fi # The real first argument should be the name of the installation program. # Aesthetically quote it. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac install_prog="$install_prog$arg" # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=no stripme= for arg do if test -n "$dest"; then files="$files $dest" dest=$arg continue fi case $arg in -d) isdir=yes ;; -f) case " $install_prog " in *[\\\ /]cp\ *) ;; *) prev=$arg ;; esac ;; -g | -m | -o) prev=$arg ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then prev= else dest=$arg continue fi ;; esac # Aesthetically quote the argument. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac install_prog="$install_prog $arg" done if test -z "$install_prog"; then $echo "$modename: you must specify an install program" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi if test -n "$prev"; then $echo "$modename: the \`$prev' option requires an argument" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi if test -z "$files"; then if test -z "$dest"; then $echo "$modename: no file or destination specified" 1>&2 else $echo "$modename: you must specify a destination" 1>&2 fi $echo "$help" 1>&2 exit $EXIT_FAILURE fi # Strip any trailing slash from the destination. dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` # Check to see that the destination is a directory. test -d "$dest" && isdir=yes if test "$isdir" = yes; then destdir="$dest" destname= else destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` test "X$destdir" = "X$dest" && destdir=. destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` # Not a directory, so check to see that there is only one file specified. set dummy $files if test "$#" -gt 2; then $echo "$modename: \`$dest' is not a directory" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi fi case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) for file in $files; do case $file in *.lo) ;; *) $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE ;; esac done ;; esac # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" staticlibs= future_libdirs= current_libdirs= for file in $files; do # Do each installation. case $file in *.$libext) # Do the static libraries later. staticlibs="$staticlibs $file" ;; *.la) # Check to see that this really is a libtool archive. if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : else $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi library_names= old_library= relink_command= # If there is no directory component, then add one. case $file in */* | *\\*) . $file ;; *) . ./$file ;; esac # Add the libdir to current_libdirs if it is the destination. if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; *) current_libdirs="$current_libdirs $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) future_libdirs="$future_libdirs $libdir" ;; esac fi dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/ test "X$dir" = "X$file/" && dir= dir="$dir$objdir" if test -n "$relink_command"; then # Determine the prefix the user has applied to our future dir. inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"` # Don't allow the user to place us outside of our expected # location b/c this prevents finding dependent libraries that # are installed to the same prefix. # At present, this check doesn't affect windows .dll's that # are installed into $libdir/../bin (currently, that works fine) # but it's something to keep an eye on. if test "$inst_prefix_dir" = "$destdir"; then $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 exit $EXIT_FAILURE fi if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%" | $NL2SP` else relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%%" | $NL2SP` fi $echo "$modename: warning: relinking \`$file'" 1>&2 $show "$relink_command" if $run eval "$relink_command"; then : else $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 exit $EXIT_FAILURE fi fi # See the names of the shared library. set dummy $library_names if test -n "$2"; then realname="$2" shift shift srcname="$realname" test -n "$relink_command" && srcname="$realname"T # Install the shared library and build the symlinks. $show "$install_prog $dir/$srcname $destdir/$realname" $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $? if test -n "$stripme" && test -n "$striplib"; then $show "$striplib $destdir/$realname" $run eval "$striplib $destdir/$realname" || exit $? fi if test "$#" -gt 0; then # Delete the old symlinks, and create new ones. # Try `ln -sf' first, because the `ln' binary might depend on # the symlink we replace! Solaris /bin/ln does not understand -f, # so we also need to try rm && ln -s. for linkname do if test "$linkname" != "$realname"; then $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" fi done fi # Do each command in the postinstall commands. lib="$destdir/$realname" cmds=$postinstall_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test "$mode" = relink; then $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' fi exit $lt_exit } done IFS="$save_ifs" fi # Install the pseudo-library for information purposes. name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` instname="$dir/$name"i $show "$install_prog $instname $destdir/$name" $run eval "$install_prog $instname $destdir/$name" || exit $? # Maybe install the static library, too. test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` destfile="$destdir/$destfile" fi # Deduce the name of the destination old-style object file. case $destfile in *.lo) staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` ;; *.$objext) staticdest="$destfile" destfile= ;; *) $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE ;; esac # Install the libtool object if requested. if test -n "$destfile"; then $show "$install_prog $file $destfile" $run eval "$install_prog $file $destfile" || exit $? fi # Install the old object if enabled. if test "$build_old_libs" = yes; then # Deduce the name of the old-style object file. staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` $show "$install_prog $staticobj $staticdest" $run eval "$install_prog \$staticobj \$staticdest" || exit $? fi exit $EXIT_SUCCESS ;; *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` destfile="$destdir/$destfile" fi # If the file is missing, and there is a .exe on the end, strip it # because it is most likely a libtool script we actually want to # install stripped_ext="" case $file in *.exe) if test ! -f "$file"; then file=`$echo $file|${SED} 's,.exe$,,'` stripped_ext=".exe" fi ;; esac # Do a test to see if this is really a libtool program. case $host in *cygwin*|*mingw*) wrapper=`$echo $file | ${SED} -e 's,.exe$,,'` ;; *) wrapper=$file ;; esac if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then notinst_deplibs= relink_command= # Note that it is not necessary on cygwin/mingw to append a dot to # foo even if both foo and FILE.exe exist: automatic-append-.exe # behavior happens only for exec(3), not for open(2)! Also, sourcing # `FILE.' does not work on cygwin managed mounts. # # If there is no directory component, then add one. case $wrapper in */* | *\\*) . ${wrapper} ;; *) . ./${wrapper} ;; esac # Check the variables that should have been set. if test -z "$notinst_deplibs"; then $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 exit $EXIT_FAILURE fi finalize=yes for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then # If there is no directory component, then add one. case $lib in */* | *\\*) . $lib ;; *) . ./$lib ;; esac fi libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test if test -n "$libdir" && test ! -f "$libfile"; then $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 finalize=no fi done relink_command= # Note that it is not necessary on cygwin/mingw to append a dot to # foo even if both foo and FILE.exe exist: automatic-append-.exe # behavior happens only for exec(3), not for open(2)! Also, sourcing # `FILE.' does not work on cygwin managed mounts. # # If there is no directory component, then add one. case $wrapper in */* | *\\*) . ${wrapper} ;; *) . ./${wrapper} ;; esac outputname= if test "$fast_install" = no && test -n "$relink_command"; then if test "$finalize" = yes && test -z "$run"; then tmpdir=`func_mktempdir` file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` outputname="$tmpdir/$file" # Replace the output file specification. relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g' | $NL2SP` $show "$relink_command" if $run eval "$relink_command"; then : else $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 ${rm}r "$tmpdir" continue fi file="$outputname" else $echo "$modename: warning: cannot relink \`$file'" 1>&2 fi else # Install the binary that we compiled earlier. file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` fi fi # remove .exe since cygwin /usr/bin/install will append another # one anyway case $install_prog,$host in */usr/bin/install*,*cygwin*) case $file:$destfile in *.exe:*.exe) # this is ok ;; *.exe:*) destfile=$destfile.exe ;; *:*.exe) destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'` ;; esac ;; esac $show "$install_prog$stripme $file $destfile" $run eval "$install_prog\$stripme \$file \$destfile" || exit $? test -n "$outputname" && ${rm}r "$tmpdir" ;; esac done for file in $staticlibs; do name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` # Set up the ranlib parameters. oldlib="$destdir/$name" $show "$install_prog $file $oldlib" $run eval "$install_prog \$file \$oldlib" || exit $? if test -n "$stripme" && test -n "$old_striplib"; then $show "$old_striplib $oldlib" $run eval "$old_striplib $oldlib" || exit $? fi # Do each command in the postinstall commands. cmds=$old_postinstall_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" done if test -n "$future_libdirs"; then $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 fi if test -n "$current_libdirs"; then # Maybe just do a dry run. test -n "$run" && current_libdirs=" -n$current_libdirs" exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' else exit $EXIT_SUCCESS fi ;; # libtool finish mode finish) modename="$modename: finish" libdirs="$nonopt" admincmds= if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for dir do libdirs="$libdirs $dir" done for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. cmds=$finish_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || admincmds="$admincmds $cmd" done IFS="$save_ifs" fi if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" $run eval "$cmds" || admincmds="$admincmds $cmds" fi done fi # Exit here if they wanted silent mode. test "$show" = : && exit $EXIT_SUCCESS $echo "X----------------------------------------------------------------------" | $Xsed $echo "Libraries have been installed in:" for libdir in $libdirs; do $echo " $libdir" done $echo $echo "If you ever happen to want to link against installed libraries" $echo "in a given directory, LIBDIR, you must either use libtool, and" $echo "specify the full pathname of the library, or use the \`-LLIBDIR'" $echo "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then $echo " - add LIBDIR to the \`$shlibpath_var' environment variable" $echo " during execution" fi if test -n "$runpath_var"; then $echo " - add LIBDIR to the \`$runpath_var' environment variable" $echo " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" $echo " - use the \`$flag' linker flag" fi if test -n "$admincmds"; then $echo " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then $echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" fi $echo $echo "See any operating system documentation about shared libraries for" $echo "more information, such as the ld(1) and ld.so(8) manual pages." $echo "X----------------------------------------------------------------------" | $Xsed exit $EXIT_SUCCESS ;; # libtool execute mode execute) modename="$modename: execute" # The first argument is the command name. cmd="$nonopt" if test -z "$cmd"; then $echo "$modename: you must specify a COMMAND" 1>&2 $echo "$help" exit $EXIT_FAILURE fi # Handle -dlopen flags immediately. for file in $execute_dlfiles; do if test ! -f "$file"; then $echo "$modename: \`$file' is not a file" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi dir= case $file in *.la) # Check to see that this really is a libtool archive. if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : else $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi # Read the libtool library. dlname= library_names= # If there is no directory component, then add one. case $file in */* | *\\*) . $file ;; *) . ./$file ;; esac # Skip this library if it cannot be dlopened. if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" continue fi dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` test "X$dir" = "X$file" && dir=. if test -f "$dir/$objdir/$dlname"; then dir="$dir/$objdir" else if test ! -f "$dir/$dlname"; then $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 exit $EXIT_FAILURE fi fi ;; *.lo) # Just add the directory containing the .lo file. dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` test "X$dir" = "X$file" && dir=. ;; *) $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` test -n "$absdir" && dir="$absdir" # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then eval "$shlibpath_var=\"\$dir\"" else eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. libtool_execute_magic="$magic" # Check if any of the arguments is a wrapper script. args= for file do case $file in -*) ;; *) # Do a test to see if this is really a libtool program. if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then # If there is no directory component, then add one. case $file in */* | *\\*) . $file ;; *) . ./$file ;; esac # Transform arg to wrapped name. file="$progdir/$program" fi ;; esac # Quote arguments (to preserve shell metacharacters). file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` args="$args \"$file\"" done if test -z "$run"; then if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" fi # Restore saved environment variables for lt_var in LANG LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${save_$lt_var+set}\" = set; then $lt_var=\$save_$lt_var; export $lt_var fi" done # Now prepare to actually exec the command. exec_cmd="\$cmd$args" else # Display what would be done. if test -n "$shlibpath_var"; then eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" $echo "export $shlibpath_var" fi $echo "$cmd$args" exit $EXIT_SUCCESS fi ;; # libtool clean and uninstall mode clean | uninstall) modename="$modename: $mode" rm="$nonopt" files= rmforce= exit_status=0 # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" for arg do case $arg in -f) rm="$rm $arg"; rmforce=yes ;; -*) rm="$rm $arg" ;; *) files="$files $arg" ;; esac done if test -z "$rm"; then $echo "$modename: you must specify an RM program" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi rmdirs= origobjdir="$objdir" for file in $files; do dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` if test "X$dir" = "X$file"; then dir=. objdir="$origobjdir" else objdir="$dir/$origobjdir" fi name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` test "$mode" = uninstall && objdir="$dir" # Remember objdir for removal later, being careful to avoid duplicates if test "$mode" = clean; then case " $rmdirs " in *" $objdir "*) ;; *) rmdirs="$rmdirs $objdir" ;; esac fi # Don't error if the file doesn't exist and rm -f was used. if (test -L "$file") >/dev/null 2>&1 \ || (test -h "$file") >/dev/null 2>&1 \ || test -f "$file"; then : elif test -d "$file"; then exit_status=1 continue elif test "$rmforce" = yes; then continue fi rmfiles="$file" case $name in *.la) # Possibly a libtool archive, so verify it. if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then . $dir/$name # Delete the libtool libraries and symlinks. for n in $library_names; do rmfiles="$rmfiles $objdir/$n" done test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" case "$mode" in clean) case " $library_names " in # " " in the beginning catches empty $dlname *" $dlname "*) ;; *) rmfiles="$rmfiles $objdir/$dlname" ;; esac test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" ;; uninstall) if test -n "$library_names"; then # Do each command in the postuninstall commands. cmds=$postuninstall_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" if test "$?" -ne 0 && test "$rmforce" != yes; then exit_status=1 fi done IFS="$save_ifs" fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. cmds=$old_postuninstall_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" if test "$?" -ne 0 && test "$rmforce" != yes; then exit_status=1 fi done IFS="$save_ifs" fi # FIXME: should reinstall the best remaining shared library. ;; esac fi ;; *.lo) # Possibly a libtool object, so verify it. if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then # Read the .lo file . $dir/$name # Add PIC object to the list of files to remove. if test -n "$pic_object" \ && test "$pic_object" != none; then rmfiles="$rmfiles $dir/$pic_object" fi # Add non-PIC object to the list of files to remove. if test -n "$non_pic_object" \ && test "$non_pic_object" != none; then rmfiles="$rmfiles $dir/$non_pic_object" fi fi ;; *) if test "$mode" = clean ; then noexename=$name case $file in *.exe) file=`$echo $file|${SED} 's,.exe$,,'` noexename=`$echo $name|${SED} 's,.exe$,,'` # $file with .exe has already been added to rmfiles, # add $file without .exe rmfiles="$rmfiles $file" ;; esac # Do a test to see if this is a libtool program. if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then relink_command= . $dir/$noexename # note $name still contains .exe if it was in $file originally # as does the version of $file that was added into $rmfiles rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" if test "$fast_install" = yes && test -n "$relink_command"; then rmfiles="$rmfiles $objdir/lt-$name" fi if test "X$noexename" != "X$name" ; then rmfiles="$rmfiles $objdir/lt-${noexename}.c" fi fi fi ;; esac $show "$rm $rmfiles" $run $rm $rmfiles || exit_status=1 done objdir="$origobjdir" # Try to remove the ${objdir}s in the directories where we deleted files for dir in $rmdirs; do if test -d "$dir"; then $show "rmdir $dir" $run rmdir $dir >/dev/null 2>&1 fi done exit $exit_status ;; "") $echo "$modename: you must specify a MODE" 1>&2 $echo "$generic_help" 1>&2 exit $EXIT_FAILURE ;; esac if test -z "$exec_cmd"; then $echo "$modename: invalid operation mode \`$mode'" 1>&2 $echo "$generic_help" 1>&2 exit $EXIT_FAILURE fi fi # test -z "$show_help" if test -n "$exec_cmd"; then eval exec $exec_cmd exit $EXIT_FAILURE fi # We need to display help for each of the modes. case $mode in "") $echo \ "Usage: $modename [OPTION]... [MODE-ARG]... Provide generalized library-building support services. --config show all configuration variables --debug enable verbose shell tracing -n, --dry-run display commands without modifying any files --features display basic configuration information and exit --finish same as \`--mode=finish' --help display this help message and exit --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] --quiet same as \`--silent' --silent don't print informational messages --tag=TAG use configuration variables from tag TAG --version print version information MODE must be one of the following: clean remove files from the build directory compile compile a source file into a libtool object execute automatically set library path, then run a program finish complete the installation of libtool libraries install install libraries or executables link create a library or an executable uninstall remove libraries from an installed directory MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for a more detailed description of MODE. Report bugs to ." exit $EXIT_SUCCESS ;; clean) $echo \ "Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE... Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; compile) $echo \ "Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE Compile a source file into a libtool library object. This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -prefer-pic try to building PIC objects only -prefer-non-pic try to building non-PIC objects only -static always build a \`.o' file suitable for static linking COMPILE-COMMAND is a command to be used in creating a \`standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from SOURCEFILE, then substituting the C source code suffix \`.c' with the library object suffix, \`.lo'." ;; execute) $echo \ "Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... Automatically set library path, then run a program. This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path This mode sets the library path environment variable according to \`-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated into their corresponding uninstalled binary, and any of their required library directories are added to the library path. Then, COMMAND is executed, with ARGS as arguments." ;; finish) $echo \ "Usage: $modename [OPTION]... --mode=finish [LIBDIR]... Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use the \`--dry-run' option if you just want to see what would be executed." ;; install) $echo \ "Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be either the \`install' or \`cp' program. The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." ;; link) $echo \ "Usage: $modename [OPTION]... --mode=link LINK-COMMAND... Link object files or libraries together to form another library, or to create an executable program. LINK-COMMAND is a command using the C compiler that you would use to create a program from several object files. The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened -no-fast-install disable the fast-install mode -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -objectlist FILE Use a list of object files found in FILE to specify objects -precious-files-regex REGEX don't remove output files matching REGEX -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -static do not do any dynamic linking of uninstalled libtool libraries -static-libtool-libs do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] All other options (arguments beginning with \`-') are ignored. Every other argument is treated as a filename. Files ending in \`.la' are treated as uninstalled libtool libraries, other files are standard or library object files. If the OUTPUT-FILE ends in \`.la', then a libtool library is created, only library objects (\`.lo' files) may be specified, and \`-rpath' is required, except when creating a convenience library. If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created using \`ar' and \`ranlib', or on Windows using \`lib'. If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file is created, otherwise an executable program is created." ;; uninstall) $echo \ "Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; *) $echo "$modename: invalid operation mode \`$mode'" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE ;; esac $echo $echo "Try \`$modename --help' for more information about other modes." exit $? # The TAGs below are defined such that we never get into a situation # in which we disable both kinds of libraries. Given conflicting # choices, we go for a static library, that is the most portable, # since we can't tell whether shared libraries were disabled because # the user asked for that or because the platform doesn't support # them. This is particularly important on AIX, because we don't # support having both static and shared libraries enabled at the same # time on that platform, so we default to a shared-only configuration. # If a disable-shared tag is given, we'll fallback to a static-only # configuration. But we'll never go from static-only to shared-only. # ### BEGIN LIBTOOL TAG CONFIG: disable-shared disable_libs=shared # ### END LIBTOOL TAG CONFIG: disable-shared # ### BEGIN LIBTOOL TAG CONFIG: disable-static disable_libs=static # ### END LIBTOOL TAG CONFIG: disable-static # Local Variables: # mode:shell-script # sh-indentation:2 # End: rampartc-src-1.3.0/README0000644000076500007650000000577111202453435014654 0ustar shankarshankar Apache Rampart/C What is it? ----------- Apache Rampart/C is the security module of the Apache Axis2/C. Rampart/C is an effort to implement WS-Security sepcification in C language. In addition Apache Rampart/C configurations are based on security policy assertions as per WS-Security Policy specificatoin. Please have a look at http://ws.apache.org/rampart/c/ for more information. As a project of the Apache Software Foundation, the developers aim to collaboratively develop and maintain a robust, commercial-grade, standards-based Web Services stack implementation with freely available source code. The Latest Version ------------------ You can get the latest svn checkout of Apache RampartC module from https://svn.apache.org/repos/asf/webservices/rampart/trunk/c Installation ------------ Please see the file called INSTALL. Licensing --------- Please see the file called LICENSE. Contacts -------- o If you want freely available support for using Apache Rampart/C please join the Apache Axis2/C user community by subscribing to users mailing list, axis-c-user@ws.apache.org' as described at http://ws.apache.org/axis2/c/mail-lists.html o If you have a bug report for Apache Rampart/C please go log a Jira issue at http://issues.apache.org/jira/browse/RAMPARTC o If you want to participate in actively developing Apache Rampart/C please subscribe to the `rampart-c-dev@ws.apache.org' mailing list as described at http://ws.apache.org/rampart/c/lists_issues.html Acknowledgments ---------------- Apache Rampart/C relies heavily on the use of autoconf and libtool to provide a build environment. And also it uses openssl. TSU NOTIFICATION - Encryption -------------------------------- This distribution includes cryptographic software. The country in which you currently reside may have restrictions on the import, possession, use, and/or re-export to another country, of encryption software. BEFORE using any encryption software, please check your country's laws, regulations and policies concerning the import, possession, or use, and re-export of encryption software, to see if this is permitted. See for more information. The U.S. Government Department of Commerce, Bureau of Industry and Security (BIS), has classified this software as Export Commodity Control Number (ECCN) 5D002.C.1, which includes information security software using or performing cryptographic functions with asymmetric algorithms. The form and manner of this Apache Software Foundation distribution makes it eligible for export under the License Exception ENC Technology Software Unrestricted (TSU) exception (see the BIS Export Administration Regulations, Section 740.13) for both object code and source code. The following provides more details on the included cryptographic software: http://www.openssl.org/ rampartc-src-1.3.0/configure.ac0000644000076500007650000000750311202453435016255 0ustar shankarshankardnl run autogen.sh to generate the configure script. AC_PREREQ(2.59) AC_INIT(rampartc-src, 1.3.0) AC_CANONICAL_SYSTEM AM_CONFIG_HEADER(config.h) dnl AM_INIT_AUTOMAKE([tar-ustar]) AM_INIT_AUTOMAKE m4_ifdef([_A][M_PROG_TAR],[_A][M_SET_OPTION([tar-ustar])]) AC_PREFIX_DEFAULT(/usr/local/rampartc) dnl Checks for programs. AC_PROG_CC AC_PROG_CXX AC_PROG_CPP AC_PROG_LIBTOOL AC_PROG_INSTALL AC_PROG_LN_S AC_PROG_MAKE_SET dnl check for flavours of varargs macros (test from GLib) AC_MSG_CHECKING(for ISO C99 varargs macros in C) AC_TRY_COMPILE([],[ int a(int p1, int p2, int p3); #define call_a(...) a(1,__VA_ARGS__) call_a(2,3); ],axis2c_have_iso_c_varargs=yes,axis2c_have_iso_c_varargs=no) AC_MSG_RESULT($axis2c_have_iso_c_varargs) AC_MSG_CHECKING(for GNUC varargs macros) AC_TRY_COMPILE([],[ int a(int p1, int p2, int p3); #define call_a(params...) a(1,params) call_a(2,3); ],axis2c_have_gnuc_varargs=yes,axis2c_have_gnuc_varargs=no) AC_MSG_RESULT($axis2c_have_gnuc_varargs) dnl Output varargs tests if test x$axis2c_have_iso_c_varargs = xyes; then AC_DEFINE(HAVE_ISO_VARARGS,1,[Have ISO C99 varargs macros]) fi if test x$axis2c_have_gnuc_varargs = xyes; then AC_DEFINE(HAVE_GNUC_VARARGS,1,[Have GNU-style varargs macros]) fi dnl Checks for libraries. AC_CHECK_LIB(dl, dlopen) CFLAGS="$CFLAGS -D_LARGEFILE64_SOURCE -g3" if test "$GCC" = "yes"; then CFLAGS="$CFLAGS -ansi -Wall -Werror -ggdb -Wno-implicit-function-declaration" #CFLAGS="$CFLAGS -ansi -Wall -Wno-implicit-function-declaration" fi LDFLAGS="$LDFLAGS -lpthread" dnl Checks for header files. AC_HEADER_STDC AC_CHECK_HEADERS([stdio.h stdlib.h string.h]) dnl Checks for typedefs, structures, and compiler characteristics. dnl AC_C_CONST dnl Checks for library functions. AC_FUNC_MALLOC AC_FUNC_REALLOC #AC_CHECK_FUNCS([memmove]) AC_MSG_CHECKING(path to use Axis2C . This is a compulsory to build Rampart-C) AC_ARG_WITH(axis2, [ --with-axis2[=PATH] use axis2c.], [ case "$withval" in no) AC_MSG_RESULT(no) ;; *) AC_MSG_RESULT($withval) dnl Find axis2 include dir in the path if test -d $withval; then axis2inc="-I$withval" dnl else find the axis2inc include dir in $(AXIS2C_HOME)/include elif test -d '$(AXIS2C_HOME)/include/axis2-1.6.0'; then axis2inc="-I$(AXIS2C_HOME)/include/axis2-1.6.0" else AC_MSG_ERROR(could not find axis2inc. stop) fi ;; esac ], AC_MSG_RESULT(no) ) AC_MSG_CHECKING(path to use openssl . This is a compulsory to build Rampart-C) AC_ARG_WITH(openssl, [ --with-openssl[=PATH] use openssl.], [ case "$withval" in no) AC_MSG_RESULT(no) ;; *) AC_MSG_RESULT($withval) dnl Find oprnssl dir in the path if test -d $withval; then opensslinc="-I$withval/include" openssllib="-L$withval/lib" elif test -d '/usr/include/openssl'; then opensslinc="-I/usr/include/openssl" openssllib="" else AC_MSG_ERROR(could not find openssl. stop) fi ;; esac ], AC_MSG_RESULT(no) ) AXIS2INC=$axis2inc AXIS2LIB='-L$(AXIS2C_HOME)/lib' AXIOMINC=$axiominc NEETHIINC=$neethiinc OPENSSLINC=$opensslinc OPENSSLLIB=$openssllib UTILINC=$axis2_utilinc VERSION_NO="3:0:3" AC_SUBST(AXIS2INC) AC_SUBST(AXIS2LIB) AC_SUBST(AXIOMINC) AC_SUBST(OPENSSLINC) AC_SUBST(OPENSSLLIB) AC_SUBST(NEETHIINC) AC_SUBST(UTILINC) AC_SUBST(XMLSCHEMAINC) AC_SUBST(VERSION_NO) AC_CONFIG_FILES([Makefile \ src/Makefile \ src/omxmlsec/Makefile \ src/omxmlsec/tokens/Makefile \ src/omxmlsec/openssl/Makefile \ src/omxmlsec/c14n/Makefile \ src/data/Makefile \ src/handlers/Makefile \ src/core/Makefile \ src/trust/Makefile \ src/util/Makefile \ src/secconv/Makefile \ src/rahas/Makefile \ test/Makefile \ test/omxmlsec/Makefile \ test/c14n/Makefile \ test/openssl/Makefile test/openssl/sign/Makefile ]) AC_OUTPUT rampartc-src-1.3.0/samples/0000755000076500007650000000000011202454512015423 5ustar shankarshankarrampartc-src-1.3.0/samples/ChangeLog0000644000076500007650000000000011202453434017165 0ustar shankarshankarrampartc-src-1.3.0/samples/keys/0000755000076500007650000000000011202454512016376 5ustar shankarshankarrampartc-src-1.3.0/samples/keys/Makefile.am0000644000076500007650000000004111202453434020427 0ustar shankarshankarSUBDIRS=ahome bhome xhome yhome rampartc-src-1.3.0/samples/keys/xhome/0000755000076500007650000000000011202454512017516 5ustar shankarshankarrampartc-src-1.3.0/samples/keys/xhome/Makefile.am0000644000076500007650000000017611202453433021557 0ustar shankarshankarresdir=$(prefix)/samples/src/rampartc/data/keys/xhome res_DATA= x_store.pfx y_cert.cert EXTRA_DIST= x_store.pfx y_cert.cert rampartc-src-1.3.0/samples/keys/xhome/y_cert.cert0000644000076500007650000000352711202453433021672 0ustar shankarshankar-----BEGIN CERTIFICATE----- MIIFPzCCBCegAwIBAgIQecM4mKvroZ4lLH8b3YR7cjANBgkqhkiG9w0BAQUFADCB yzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTAwLgYDVQQL EydGb3IgVGVzdCBQdXJwb3NlcyBPbmx5LiAgTm8gYXNzdXJhbmNlcy4xQjBABgNV BAsTOVRlcm1zIG9mIHVzZSBhdCBodHRwczovL3d3dy52ZXJpc2lnbi5jb20vY3Bz L3Rlc3RjYSAoYykwNTEtMCsGA1UEAxMkVmVyaVNpZ24gVHJpYWwgU2VjdXJlIFNl cnZlciBUZXN0IENBMB4XDTA2MTEyOTAwMDAwMFoXDTA2MTIxMzIzNTk1OVowgZQx CzAJBgNVBAYTAlNMMQswCQYDVQQIEwJFUDEQMA4GA1UEBxQHTWFoYW95YTELMAkG A1UEChQCRVUxDDAKBgNVBAsUA0NTRTE6MDgGA1UECxQxVGVybXMgb2YgdXNlIGF0 IHd3dy52ZXJpc2lnbi5jb20vY3BzL3Rlc3RjYSAoYykwNTEPMA0GA1UEAxQGU2Vu aW9yMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC/KWeHWVbliTB0qcJdgPl2 dy1svQ9Tg5fs68O3KZekRdh13ZC/mOMWYeRRXZwog0//VVbBqcO358QjTcr3iAGC Ozc9YOGVXOfcEIL/6SfBuEEGFpkL6IDc5uN8V1Fui0QgdbNqCZwewSlf2fa+5HEp /WzoqrZ4Lcoraen61hnKKQIDAQABo4IB1jCCAdIwCQYDVR0TBAIwADALBgNVHQ8E BAMCBaAwQwYDVR0fBDwwOjA4oDagNIYyaHR0cDovL1NWUlNlY3VyZS1jcmwudmVy aXNpZ24uY29tL1NWUlRyaWFsMjAwNS5jcmwwSgYDVR0gBEMwQTA/BgpghkgBhvhF AQcVMDEwLwYIKwYBBQUHAgEWI2h0dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9jcHMv dGVzdGNhMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAfBgNVHSMEGDAW gBRmIo6B4DFZ3Sp/q0bFNgIGcCeHWjB4BggrBgEFBQcBAQRsMGowJAYIKwYBBQUH MAGGGGh0dHA6Ly9vY3NwLnZlcmlzaWduLmNvbTBCBggrBgEFBQcwAoY2aHR0cDov L1NWUlNlY3VyZS1haWEudmVyaXNpZ24uY29tL1NWUlRyaWFsMjAwNS1haWEuY2Vy MG0GCCsGAQUFBwEMBGEwX6FdoFswWTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4D AhoEFI/l0xqGrI2Oa8PPgGrUSBgsexkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWdu LmNvbS92c2xvZ28uZ2lmMA0GCSqGSIb3DQEBBQUAA4IBAQCBLFjwhLch6N7gKN3J fi42JknMTRWNqmLn81BBFyWa5ZXjWvb+Vbv/E/4RUQecce+o7rxnlbrmYNTKg/S5 wlkkdLhBPq4UDgWJ5kNR6ro2Ilwt5kvKMlzf7ABr3K2PvDRJZjRnkU5x9QrORvNX O5FPTtD2XAoV0cGDVEJuyFBe7Pw2wuBex9RHjw0wJfm35gMOF2UJwyIAJfS8C8e8 GrrxXPAbwvKrocEwDzCqslK7eoRA8HUq4r4ED6Mf+cc3QFbxPhYpuM/6nFAXFXMd hD2eC3U7SwH6lDSEkKFiGEu3vsBpWGnwwPFSQZYl6V0wuM+kAckfU66efuHODSnB cC+4 -----END CERTIFICATE----- rampartc-src-1.3.0/samples/keys/xhome/x_store.pfx0000644000076500007650000000457411202453433021733 0ustar shankarshankar0‚ x0‚ > *†H†÷  ‚ /‚ +0‚ '0‚ *†H†÷  ‚ø0‚ô0‚í *†H†÷ 0 *†H†÷  0*6ê/Ÿá¿€‚ÀòÖô \ò+û˜ßÒp»Îò‹„†šã 5£Oý@¿€N9%K=+3’ƒSQ&M”°}ôï!UHŸîî.?ó°zÍLÖ}k²5iêN6®úï—~l+”°ð»Ôw*OøçB4­ñð9»ÖBnršÊ,pÂî>ÓA°Ç¨VÄï½Ç?I›µÁ4 Y¦jœnŽò  \Öœ­VؽWUæ¼È÷.Fœå÷90Û{ýO`?Û;rÇFžèäÎÕ—<@Œañ>ÑÀß–¦8½ï©9Í­é¸EA’ïÔI!?íð=³à&LœÅŽxÊ,RÓ “õ÷¶¸˜±ëÎrÖ>®ƒ-`ÅNq>œ-;\+?­ªeŽ÷ZCçfbQà‰ JŸô¥t:/gaØ}:·‡W)ºÛiÏ"¾CƒƒÇ “™ì:Îm¶Œâ™fM©‘aÃÚ"zô˜àù}OIvÀ uùRœ,G2£ÅK豉””Èhëån£y)7ìÏÊñŒ„°¦ h´ï¶ñg2Ú@ím³êóäIÃ-áóË€Yg«€ãå¥ôù“/ÞO5yû¡/’£S¡W˜—]¨fJªwñ?³é¬KLŸdòLj&£Á[A¥œ÷†úBã>Þåé2d$ùQå h^<Ò­ü!gº´b¨£å8{÷q‘êÅÌ Ãß¡¼0s ”™yƒPy ¹BçÚ`#Áåƒ@ÄxÔäÈÐüíïž¾ÕO1Ýd¥Çÿ:ú·6R'dK.¤€RÜJs+ìWÄÞˆ9Ý{XåV´Š‹|m›¹À½ͺ/ê‚Ä&ý·Wð«éÏl!í#'Üúþﲬ ;·Æßu÷5ßz[Ä+™ ~0؇nÐXÓº8*Ng˜8ö2ºÌ‰ªºý¹–½¶ŸJ†WâKV@û’m“¶sfº·xL+2Û2X+Ý+i.¾ºðç«U¡qÝÐlˆ¾ Pˆ¿ž.CÜG"¹­ÈHöôÙgkJ­\ƒ¾R•ˆ Äh—OÉ  ÝŒN¼up³mUÊÓjöfµØþk¬êÑ¿Ê"–.G.† ãè¤kjWÛþòG“ã­Á«ùq´ó´eÚawCü•ŸuI‰}pØÔ(ÆÞ«0t57òËÒ4j¬®µòõ¢ˆëâþÄʘÖ×!4X ðso»À#ä…'óü÷¢d„£b[’D÷´ó¼bbÚF$3ŠÓp_3{µ;QSP>És¸…t \îjP½DNNnâ¿C3êux†ck: ö²…XQJŠ"…–ƒ=ƒ'°9x¸ÿYš¨.ÏTF|õlŒoP±²Ik!Î]R:? ŒÇ EÅr¬B‹¡¶#Ëdfuä<xÛð‘(GÔ8TQEó6κT¸›Ÿ¤ßªÒº¢Î_Wác? ’>ò¦>µs)¡"+]µè\prF4ùD‡)å2 —†?/YÖ–¶T$»zöÆió/LÀ`£?…ÉÚ1D0 *†H†÷  1x-alias0# *†H†÷  1ˆ…™xŠRÐE¨B?€˜ìr~010!0 +ÛJº: zyv –JÄÕí÷é‚&¡¢. Ørampartc-src-1.3.0/samples/keys/yhome/0000755000076500007650000000000011202454512017517 5ustar shankarshankarrampartc-src-1.3.0/samples/keys/yhome/Makefile.am0000644000076500007650000000017411202453433021556 0ustar shankarshankarresdir=$(prefix)/samples/src/rampartc/data/keys/yhome res_DATA= x_cert.cert y_store.pfx EXTRA_DIST= x_cert.cert y_store.pfx rampartc-src-1.3.0/samples/keys/yhome/x_cert.cert0000644000076500007650000000353411202453433021670 0ustar shankarshankar-----BEGIN CERTIFICATE----- MIIFQTCCBCmgAwIBAgIQFJlAMzXlBVcps6Y/+8bAbDANBgkqhkiG9w0BAQUFADCB yzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTAwLgYDVQQL EydGb3IgVGVzdCBQdXJwb3NlcyBPbmx5LiAgTm8gYXNzdXJhbmNlcy4xQjBABgNV BAsTOVRlcm1zIG9mIHVzZSBhdCBodHRwczovL3d3dy52ZXJpc2lnbi5jb20vY3Bz L3Rlc3RjYSAoYykwNTEtMCsGA1UEAxMkVmVyaVNpZ24gVHJpYWwgU2VjdXJlIFNl cnZlciBUZXN0IENBMB4XDTA2MTEyOTAwMDAwMFoXDTA2MTIxMzIzNTk1OVowgZYx CzAJBgNVBAYTAlNMMQswCQYDVQQIEwJXRTERMA8GA1UEBxQIRGVoaXdhbGExDDAK BgNVBAoUA1VPTTEMMAoGA1UECxQDQ1NFMTowOAYDVQQLFDFUZXJtcyBvZiB1c2Ug YXQgd3d3LnZlcmlzaWduLmNvbS9jcHMvdGVzdGNhIChjKTA1MQ8wDQYDVQQDFAZK dW5pb3IwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAL1DX5c5/Ho7FMKamBUv wUX8dtXrtEW8iFx/GzquevodlqIxluFuR3pnFOJzlFGZsa/0uKFDfI7T0cjmw6/2 3p4kmUee763Xrc7RZOBNw+f9+EvZnrsqLC0mB5vzS8DCUTe7LcK71gpO2569+p/W 5KKfYppcPH0kdDW+DuAmhcp3AgMBAAGjggHWMIIB0jAJBgNVHRMEAjAAMAsGA1Ud DwQEAwIFoDBDBgNVHR8EPDA6MDigNqA0hjJodHRwOi8vU1ZSU2VjdXJlLWNybC52 ZXJpc2lnbi5jb20vU1ZSVHJpYWwyMDA1LmNybDBKBgNVHSAEQzBBMD8GCmCGSAGG +EUBBxUwMTAvBggrBgEFBQcCARYjaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL2Nw cy90ZXN0Y2EwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMB8GA1UdIwQY MBaAFGYijoHgMVndKn+rRsU2AgZwJ4daMHgGCCsGAQUFBwEBBGwwajAkBggrBgEF BQcwAYYYaHR0cDovL29jc3AudmVyaXNpZ24uY29tMEIGCCsGAQUFBzAChjZodHRw Oi8vU1ZSU2VjdXJlLWFpYS52ZXJpc2lnbi5jb20vU1ZSVHJpYWwyMDA1LWFpYS5j ZXIwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEwHzAHBgUr DgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVyaXNp Z24uY29tL3ZzbG9nby5naWYwDQYJKoZIhvcNAQEFBQADggEBAIYZWxjHA9Ckcoiu myMtA137XIx35ulAO3CRjFE2RydCDklFOMPoAbhORjf81E5asHwezSn39sgJzw3N 740jbq6x24AQr/CuLAO4qVrRA07m7HbFgR8lHe4Wy7MnWCXF402/arnPS9U5cZLQ CfvHABIURBXULII0r2sBGrC3ihLdyUKtuiykHMKYuMwd4664jPh4IU/nmV7Cel42 U9DnxJzJ/Qmxo6SRO9j4vxCy3jYJqwHiPXSOqzkYn9oFpH9dVud1fV0T0gy9dcqm Wdt44U4cecdmNTKZqLuNT4m7F+CEAKwyUf+Pm6TpV3rAXQP7orNiHZHlO0Npvq98 fPwhaMU= -----END CERTIFICATE----- rampartc-src-1.3.0/samples/keys/yhome/y_store.pfx0000644000076500007650000000447511202453433021735 0ustar shankarshankar0‚ 90‚ÿ *†H†÷  ‚ð‚ì0‚è0‚ç *†H†÷  ‚Ø0‚Ô0‚Í *†H†÷ 0 *†H†÷  0®Ò’Ccœ€‚ Èúf€Ÿb?:B¸,cL4œJR;]×â³1Ù]ªpDÉUB“]êâ-R UÌ?KJ'<´†×嶨LuŠ=º  ßOc-9£&)og¶Æ] ÿ#(€õÐC¸¬”g•"‰÷ÆûÃh÷×ópm-ž™vn X¸$Òñ]XtÙ 6æ߀7PÄUÎ|¨‘¾záT%æÞ4à`˜8'Eb‚ý 3ÂÛýíßûÿ ‰™¯…¡¦“x¹Z”¿¯[íŠßVù>ñæÙcÿä?ËZÅ H)ö,èÒ…jv½¦ÓËQ󳃒Öðä'pÐ$4%CXù>‚—Û$iŽíŒ”ŠÖ²PÐÎ7•±‹j ĸ;Ïòi'¡ ?4Iþ­r½êØýñGíÕœ•Þ‰r• ‘UvòUpuÊ bbu˜pã¯Y>.SähKxg:B}8Ø áÍ¢ Bœ¬0¬>P[]ÒÜ嬭?ÏË Œ×Ù,mT½N_’%ÈGTÍձΠð*ç y¨‰Rçcý¥b=éJ«eq hÌ< õe YÛ] +Ý!‡‚)XC0ŽQ²G a2§1hHôË“ çדPiØ/fW/)4+"ÄÙÏie7t5H‚Ú6×wÎñ’ϵ\§X¦iÈnZD.±bNtz¥Ü|è†ñ@©êì?õsI!˜·ä ¦;#t/³èÜÉúèg Jÿ^ ?N¢B¢G78Ðy{*ûøPlwÈ‹•+Rðw« øÏ´¬&ƒ!p§¸Õ% ƒ9 ÿ€ ¯,3nw+mté;ùø(rÏgx›–%Ô⃭.,¾f8c…ê9Ów\Oý8ÍÓîÊe$óÜõ¸XÙSà:\8͹Œú#^ôøÝÛ Ô-,ÓS;±“]2ÅØW†´…T‘?ZƒïšËÛQxQ#-Ž"·Ž£hÜ/5ï\.vªÍ{øˆ§èD¾ãÂcYà?˜¢–Œqô^“\5²ÓQ5i"TasEá›éføZ9™fß[7ݼªy¾Mšþ xFŒ^*vÌQŒ¨ŸxÒû‡#,l!Û'ÜßîÞÁŠxµŠ9éÅ3Å2L}[´îÈT÷HK®ÍÏÿÒÂu=!r°%êh3zvÄ`¦=¤‡ TG "ˆÓZ;`C’D%ú:vhýPKJ:õ„¡î*Šá®\ M”gëç˜Pò½´ê<>*™} à ñ7Ö€¯Ds?Ð\×û·MôTÍm·OE¸àе8õéšÏtùIe¶³Ð±Òû’œÐNÐc.•Ïe—ýøþOSžD¾ü–ø1Mšà±z`Ysz{2þp!xLcÏÞvÏÑ*ü~~».3I¼Œè¾ËyZ<~xYÒ 3lîûÖEMA^pEç ýIQ%Ê7oŸÚíº/(êÏ{*Ïö¿¯7 KtqwFº•/[к£i9IØâ`DÜŽ*s[EªLízÛ{JèX÷§$o•ÄQ`ß K[Zã÷€âà4Éǘ®Y2Sü9o¨_¢Hqõæ(͈3iÄsº¾¥‚s4(ÿÔÚ^ú å‚ôä&ã8W>+*/½Q¬wQÿL2‰×ó ñþK,ë4ÜÁ±”ê4†ìÙymPMN(½‚Îeì$š¤ä›JVq ȟ㹆5m©÷z¥ç¢|œ4¨ 5ºÎaЉCœ¦"&½4#Ô¨®ƒ_â­‡MEåŵ—N‹±Ç"ˆXNÇž%CN$(X)ëî“ÅŒT Ù'9û”<òíÝpÚÎàjuÖ!3¼O”‹ùpޱ©¯WS0‚ù *†H†÷  ‚ê‚æ0‚â0‚Þ *†H†÷   ‚¦0‚¢0 *†H†÷  0É»î¶7êX‚€¬oNŸU˜µÍ[ÜöĹ1 01p±nÆß·…Ø?cѮƉ@Ÿ¼»y¡)Ñ¡ŽºJLQn;Ò«É­5“àär4Ü1¨äQ¬¡»YÒ½p7tºß!.ê4ÊÛ—Ìí®ì-¯MêiÝÀU]Àƒ`Ž ñVeÈ¥®e9 »ó!ÿá7}7Ê»i¶äH*ŽQLÏŠ“nt¹úú±Ûy(l¹6÷§Jwy-r6rä üMÒS´@üݨ#"ñ¹ÜNñ j.‰l4µcUkãy)Džû4À5ŠD…ÊöÌC¶ýù:ÂN«·3Vœ_òÀ›yÕU˜0SMßµ“dP(„±àÅ~J†Jé!úmí=a‚'JdÛò+²I5šÛÉl³.=Ú“it"ÿržót6¥Ô5”€qP4ñZRë#/) ¸–ñ‡.51W•³µà¨6ÖªÝ;¦T2f¢=oø\mì&_uÀ·p£ÝT~š³õ8ðCØ­ˆbåYZk-b®à(hšíæ¨ÙðÀ’ý3DlÔºðµ"ó†ûó’Tq£½­PŠeçÀD¥·-k5ÂNÒ…×f‹7~~+'ŒÅŒXÜ¢–äÃ÷§ô‡Íz Ú*õò+/ŽS:îa°­õò0 |¥TžŸ€Út¯¹/OÂj×Wm ê7Ëâ¥þˆGpàZ'1ü–ò Aq*Ñxíåú( ЙUÜ]ri^…úäXnŒÞ&»Rq…s°¾ÛÅCG¥ÃO5Åè­J¡1%0# *†H†÷  1+Oº‡j`UåãCâ—^¼…é010!0 +‚@[¹È"šà’HZj?yzAò¦g² a’çs‘rampartc-src-1.3.0/samples/keys/ahome/0000755000076500007650000000000011202454512017467 5ustar shankarshankarrampartc-src-1.3.0/samples/keys/ahome/a_store.pfx0000644000076500007650000000331511202453433021645 0ustar shankarshankar0‚É0‚ *†H†÷  ‚€‚|0‚x0‚w *†H†÷  ‚h0‚d0‚] *†H†÷ 0 *†H†÷  0ØIM›âWNÕ€‚0õPågËé|ä7Ȧ¾ÿX2ës³7#2b´Ú43ž{[Qç?`à "ÛxÏWp>¾Ë…óFA—òiÃG7«|0.ƒ¾b·˜ÒkwB¼¬š¸ßà[ ðl€·|¿X%Ì£x °¡Œ”5aí×¹XtöL·È“áh; YðõÁtôoßüAbi¬#Šf¶ò ?–D\éV¡tâz Î]¬=köSø@eá‰~1¹;M\:ã q\bÂuóÿšë˜• Ó}d«V æ¶Ð°¯R(rÑQaÊr¦ºº¢ù »òý €ÕpFø“]…j ¨ xâ9ÖÞ@ eë’™%ÝtqÇ回Žq3ïxº÷=Q‹GÊÑžlÁñ{ ØGŒâWõ0YG1' 0 ÷E¯ã»öäÏ¢³gH˜°¤Kõ‚牸ði*Ší_f\økP;grmxƒ ߀Z—<ë7“wb›ÜYP‘´Âp‘²¬¢3û½¿,Ùó[D”^•:òKðBð8YY7·Á`ƒßO7±–+Z2+ä•×,°²’èÄ×e¨€ ao½Rå5BÇóÁÍJWÞ¼Šé9>VùSrXV¯&–,ä÷|ñ.O–Elç¿å·I”ïÁª—ûá¦g¥æÑÎ1’h™âÞÖî-;úÏux¶<=-NCrsâÖHÌIHÍ÷m+êÉ“ËOt wLRN‚´!v[ ?’Gȸj²ÕzS yÚ¤ÏÀÔ:pn3&^ lRºœjLUTøLÁ• h³½sP;€æK®n ÿÛ± ÞUÉ‹®UC’‚õh:ø´c¿HˆOÈ~É2 1ãÍpüw™ó³°¦JºZ*lo! kò¾Ô’™8/錆Fª)ýÑoÆ2.æ&L:—…Cjn‘i4¤®u ó&£±Þe§]·ÚÒ\{iÃZ=HÛà×_ni0Ç  ìv!à1sÐT¸ýN–D~Ôÿüš8K¶ÌŸ²œtõŒ c˜b0‚ù *†H†÷  ‚ê‚æ0‚â0‚Þ *†H†÷   ‚¦0‚¢0 *†H†÷  0Á¢©Ö-(‚€¿«º.<‚š“-8Œ¿šSø7×f.($0†×ÅÁÎJ¾­o)à$ €Z ýT:líÍ8ÁG­¥I­âaºò”ï$L¥s'oÈϳ ø:Õ h%X aR*«áº07n!ÅviáfüÝ ^ÚsÜ'ìÝÍzûV?ÜN¥oø” £;,~¨{8Imé„翉Ô(1Ԥ܃CÕœùËÞ å÷F}…¢v¹zO,â öi,d-Í|IÁ¹™š–OÕ2³ ÿ¬Ÿ#ÞÏ#D| Ñ?n1“Úä…EÁþˆïGgDbùu»èÊa`¼Z,wFÌ~ÔÇ1àD™ù£C¼åÔ^W„dB·º–É[§×^rñE®4ë¹kw‚éY€¾áve*µìsÊÞŠòÒp=]Æ=-(£¢ÜëÔM/”ƇD‚åùpŒèÎ%É‘¶F‹ÀSiqV†u¼},Po’BÏ9~X4±RêhÙÑf,¶¬WlǸÄÎGhfw»Xö Ög8ûa±MTF&Oø†Ù|ý‹)¡Ù0þñ„ˆÔ$@n%3eèéœaÀ,‹÷Ç~¡ˆcFö’ Œ÷Ä1Ç™FtÎ/ÿx »…Ó*§™IìÞ­š±;ÍTùû0sšßsbßÙãÖYnXiŽ}Ÿ²¡w2í¼½ûþÂ[b¥15ü·øsš¸ºâøqݾ‡Ið…᯲î q®ÚøžqO1åaÒ «=Æ$õ Àš¯ZŠ“2|²ŠUÀÞ1%0# *†H†÷  1Ál/Þ[™¯p”dm“¯ÐVkÕ010!0 +pÅ¢dúÁV,Õ[ήÎa­ˆÅ-ÿ›ÀŽ×‰ÌNrampartc-src-1.3.0/samples/keys/ahome/a_key.pem0000644000076500007650000000156711202453433021274 0ustar shankarshankar-----BEGIN RSA PRIVATE KEY----- MIICXAIBAAKBgQCiqL30HLVVijRoeuQoI1PgOQiA8v9KBqFt4p0aGtu7crZcbtqt 8P22ogEgox+tfgan3Q0lrzkBXXKI2wTK+r6ZScyk1wqctcs6OROYwKoNhtuR6EmV c+dpYvO976ZbSkl0/G1/etsPg9L9wFAi+2mOasMBTxWxkpPwM3krLP4RmwIDAQAB AoGAY+fazB357rE1YVrh2hlgwh6lr3YRASmzaye+MLOAdNCPW5Sm8iFL5Cn7IU2v /kKi2eW21oeaLtFzsMU9W2LJP6h33caPcMr/1F3wsiHRCBSZiRLgroYnryJ2pWRq B8r6/j1mCKzNkoxwspUS1tPFIT0yJB4L/bQGMIvnoM4v5aECQQDX2hBKRbsQYSgL xZmqx/KJG7+rcpjYXBcztcO09sAsJ+tJe7FPKoKB1CG/KWqj8KQn69blXxhKRDTp rPZLiU7RAkEAwOnfR+dwLbnNGTuafvvbWE1d0CCa3YGooCrrCq4Af7D5jv9TZXDx yOIZsHzQH5U47e9ht2JvYllbTlMhirKsqwJBAKbyAadwRz5j5pU0P6XW/78LtzLj b1Pn5goYi0VrkzaTqWcsQ/b26fmAGJnBbrldZZl6zrqY0jCekE4reFLz4AECQA7Y MEFFMuGh4YFmj73jvX4u/eANEj2nQ4WHp+x7dTheMuXpCc7NgR13IIjvIci8X9QX Toqg/Xcw7xC43uTgWN8CQF2p4WulNa6U64sxyK1gBWOr6kwx6PWU29Ay6MPDPAJP O84lDgb5dlC1SGE+xHUzPPN6E4YFI/ECawOHNrADEsE= -----END RSA PRIVATE KEY----- rampartc-src-1.3.0/samples/keys/ahome/b_cert.cert0000644000076500007650000000213311202453433021604 0ustar shankarshankar-----BEGIN CERTIFICATE----- MIIDCjCCAfKgAwIBAgIQYDju2/6sm77InYfTq65x+DANBgkqhkiG9w0BAQUFADAw MQ4wDAYDVQQKDAVPQVNJUzEeMBwGA1UEAwwVT0FTSVMgSW50ZXJvcCBUZXN0IENB MB4XDTA1MDMxOTAwMDAwMFoXDTE4MDMxOTIzNTk1OVowQDEOMAwGA1UECgwFT0FT SVMxIDAeBgNVBAsMF09BU0lTIEludGVyb3AgVGVzdCBDZXJ0MQwwCgYDVQQDDANC b2IwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMCquMva4lFDrv3fXQnKK8Ck SU7HvVZ0USyJtlL/yhmHH/FQXHyYY+fTcSyWYItWJYiTZ99PAbD+6EKBGbdfuJNU JCGaTWc5ZDUISqM/SGtacYe/PD/4+g3swNPzTUQAIBLRY1pkr2cm3s5Ch/f+mYVN BR41HnBeIxybw25kkoM7AgMBAAGjgZMwgZAwCQYDVR0TBAIwADAzBgNVHR8ELDAq MCiiJoYkaHR0cDovL2ludGVyb3AuYmJ0ZXN0Lm5ldC9jcmwvY2EuY3JsMA4GA1Ud DwEB/wQEAwIEsDAdBgNVHQ4EFgQUXeg55vRyK3ZhAEhEf+YT0z986L0wHwYDVR0j BBgwFoAUwJ0o/MHrNaEd1qqqoBwaTcJJDw8wDQYJKoZIhvcNAQEFBQADggEBAIiV Gv2lGLhRvmMAHSlY7rKLVkv+zEUtSyg08FBT8z/RepUbtUQShcIqwWsemDU8JVts ucQLc+g6GCQXgkCkMiC8qhcLAt3BXzFmLxuCEAQeeFe8IATr4wACmEQE37TEqAuW EIanPYIplbxYgwP0OBWBSjcRpKRAxjEzuwObYjbll6vKdFHYIweWhhWPrefquFp7 TefTkF4D3rcctTfWJ76I5NrEVld+7PBnnJNpdDEuGsoaiJrwTW3Ixm40RXvG3fYS 4hIAPeTCUk3RkYfUkqlaaLQnUrF2hZSgiBNLPe8gGkYORccRIlZCGQDEpcWl1Uf9 OHw6fC+3hkqolFd5CVI= -----END CERTIFICATE----- rampartc-src-1.3.0/samples/keys/ahome/Makefile.am0000644000076500007650000000045411202453433021527 0ustar shankarshankarresdir=$(prefix)/samples/src/rampartc/data/keys/ahome res_DATA= a_key.pem a_req.pem b_cert.cert a_cert.cert alice_key.pem alice_cert.cert bob_cert.cert alice_kstore.p12 bob_key.pem EXTRA_DIST= a_key.pem a_req.pem b_cert.cert a_cert.cert alice_key.pem alice_cert.cert bob_cert.cert alice_kstore.p12 rampartc-src-1.3.0/samples/keys/ahome/a_cert.cert0000644000076500007650000000213711202453433021607 0ustar shankarshankar-----BEGIN CERTIFICATE----- MIIDDDCCAfSgAwIBAgIQM6YEf7FVYx/tZyEXgVComTANBgkqhkiG9w0BAQUFADAw MQ4wDAYDVQQKDAVPQVNJUzEeMBwGA1UEAwwVT0FTSVMgSW50ZXJvcCBUZXN0IENB MB4XDTA1MDMxOTAwMDAwMFoXDTE4MDMxOTIzNTk1OVowQjEOMAwGA1UECgwFT0FT SVMxIDAeBgNVBAsMF09BU0lTIEludGVyb3AgVGVzdCBDZXJ0MQ4wDAYDVQQDDAVB bGljZTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAoqi99By1VYo0aHrkKCNT 4DkIgPL/SgahbeKdGhrbu3K2XG7arfD9tqIBIKMfrX4Gp90NJa85AV1yiNsEyvq+ mUnMpNcKnLXLOjkTmMCqDYbbkehJlXPnaWLzve+mW0pJdPxtf3rbD4PS/cBQIvtp jmrDAU8VsZKT8DN5Kyz+EZsCAwEAAaOBkzCBkDAJBgNVHRMEAjAAMDMGA1UdHwQs MCowKKImhiRodHRwOi8vaW50ZXJvcC5iYnRlc3QubmV0L2NybC9jYS5jcmwwDgYD VR0PAQH/BAQDAgSwMB0GA1UdDgQWBBQK4l0TUHZ1QV3V2QtlLNDm+PoxiDAfBgNV HSMEGDAWgBTAnSj8wes1oR3WqqqgHBpNwkkPDzANBgkqhkiG9w0BAQUFAAOCAQEA BTqpOpvW+6yrLXyUlP2xJbEkohXHI5OWwKWleOb9hlkhWntUalfcFOJAgUyH30TT pHldzx1+vK2LPzhoUFKYHE1IyQvokBN2JjFO64BQukCKnZhldLRPxGhfkTdxQgdf 5rCK/wh3xVsZCNTfuMNmlAM6lOAg8QduDah3WFZpEA0s2nwQaCNQTNMjJC8tav1C Br6+E5FAmwPXP7pJxn9Fw9OXRyqbRA4v2y7YpbGkG2GI9UvOHw6SGvf4FRSthMMO 35YbpikGsLix3vAsXWWi4rwfVOYzQK0OFPNi9RMCUdSH06m9uLWckiCxjos0FQOD ZE9l4ATGy9s9hNVwryOJTw== -----END CERTIFICATE----- rampartc-src-1.3.0/samples/keys/ahome/alice_kstore.p120000644000076500007650000000522411202453433022463 0ustar shankarshankar0‚ 0‚ V *†H†÷  ‚ G‚ C0‚ ?0‚ *†H†÷  ‚0‚0‚ý *†H†÷ 0 *†H†÷  0ÝÔAyN¨³Q…ÆF¯1êX|› d–† køpíÝOK´x·ô x¹ öQ©òÙCüÙö]w×´–×Mè)›ððŸúæùcÊhó§¡úUÜök*°äˆc¾46PœÌ†Aé†CÍ{:NØ.r HÜVf|ˆÓø"?(ª¼MÄÑB.'ëiÓC:b\÷ :³»†ð~›Ay¼ÍÁ^º“]š©¥µ ”Ésªyzî·‰k¢”qö€DYòkÄØèÅ÷ñì$’Y®“ú:C³è¾xô¢C ç+’4‰” Nc”wŽãÀRUámhÀOnlQr~ðÜØj‹—슪ê@‰Û-²ô+—‰”¡ Å_Ì æA èáï&âsC-„«9{á.0„éæèÙ:ƒx‘}o -5ŽT‚ɲÕCÛQͱ æ›(ÙCwÉîÄì^¾ˆ4ErµC7oªÃê+ñj–õ_3ˆqjU?·Ój9oÖ9ÜÓ0¶‘G£\€;ĘLc€ ý R3;-¬œj8z£ÎJwp9"Ùi°×Å”'Grä×$®'oY×dÝ_(]|+"èîR4°þ«Î·õ†qˆ>‰nlckÅâØçŽó "ظÄCîMHyÒýû\ç²­æ»#g¸2Ý Ò†7x¦v à {D‚°LÌ´VÖŸ¾{y‹†TóÉñ\Õ ¯®‰=°Oa£'¹é€ ÌÍèbN¥ÀVÃTNò㊱Ù5hTÜß,s¹l?µ÷:Çú%.ĆK#€b=qpÔ p‘ýHsRÑÀ>ƒ)™Vÿ'¹–^xIßñþî@°©hê´ø,š›ç”úê$9ñY}ñÓðw ðú{R»ÍL½7XÓÞ»‹ ð_ªkËŒ¬†8 ÿØh\“z²*g6Ö=ÂoÚy~‚©‚…Þ²uÌr¿Ù[à÷ëÆßßgAXs/P°"Ýä v;+˳&`‰ë‘4‡ö:n}Œ€ºMrÖN#Ë 䇊qº¢Í ¥ ò^VˆÙhÔ¯ÜJgEt~TBã€HšMI@°4E¢‡Ñ«¥V-½íFDH=£F{¿Ž§’rnzÉòÏ,àüFû=à¨öÙA ñ g‡›uDvÝ–(É‘J,Çã¼· l‡ En5mSæ/ާhJ¯U´^Lê{¤:g¤íI?ÚY¯›Í’6qËií%ÔQÕÝòIJW7V=Y¥qŸ(ðK¾odÂá5s¨­DÙœ$ó•§8Σ˜¾N”éAQ Ô”d4èÔ5Ð@L'Š&Ê—ìþt<Ÿ¸Õù—_ˆîùÅzœ5H4£T]Yi$x„Zz%NJ“ åxhʳÜt¦tãõWyð¸ñ:Æ$ЗùmúÂ,ª†÷ !ÓeÝÈg)ôLÙ^¤°s¾  ËFóôü®*D9ð„â‚D€àoø„ìªf¹SQƒ4ðôƒBLæýnù´òròâדVZY ÷ ±§Žô=vdF{pBë²s@-,¸;áhÊÒÿ¿ÏxÇ:™/л÷qëÓ߽ݴî9•nP_–eª ³¸‘?ÞÝvޏ”Z.àp:–‹NåÛ ”Ž”u•\4-~d2‚P"¶Ÿ|œÓ§2®Î:ƒÂ èïªIu £*ãÁm6.h¡/6;œ¦“q:~AbÕãªL»²Y£íÛ_~»ü¢Œ±‹þ¦©Ú湦ˆŠ5&Ì-+'RIœò¡V/o÷“ªTðüƒ‘}³±Œrü;i4I©‚R ÌRèä§ak=FF‰îç¬à¶CIBI6­,ý²#ÆvZ6ôÅuŒ QU&p3@l¯&tùNí¸-ŸÙ}éù¹ÉéûiéÆ)`fÐÖAÔú«y´8ú.õˆGúU‹L‘P†ãȯBmÉö2‡µüSæ»=ã¼OkÃé½Î8nô‰¸c>ËG@ å3<¥8WÏZs¡m¾ Aøhð>¾™_UgLYM˜ÿ5ìmʤƒ¦ õ72÷2¥‡…˜ŒÊ·&òD»¾ôsÎm=röE´ ñŸŸjŠ?R}ƒYñ³‡U¤›stS P R1þ•ÂÞ`Û‘Ý]ºÄ{T K×uv“™LvhÉC Qc¨Ú¿ñÛKJ¥l ‡*A,Ï}f÷ýk»±6³}òî¬{DŠ6jàIIaË©ÐãÃ6Ø‘í«gW¾oq›ßÄÚ|NÈqA‹}”äg…2ƽ&wd‹î–-°²8é[ à\Õ_ô© #ŠÌoOà°-zi=£Å°»i=¦q6¿¹ƒýx”ñÝõWbj+UÍŸät$xŒ¢o@Vow£@yqªoþñv&,~RÙ¹)uÆ5#v¥ zx‚ÖŒïS§SëóÙ lÿ°ê½Õý2B dêh ¼üM†‚*j`ÎÙ%ÓââБ“¯Kƒ8ؾüï QÆŒÛ_ ‚.Œ+éª5P©E§ö7¬á@¥éYçÕÚ ‰ YR­2äz3tI·Äà yxV&©¾ÛË&ÒÃz¶U•pÒk¢â=hó&ñbLj{ÚS_ÞÏÏä~þHj$HÞ8!Z)FЉg){_¨cÙ?Ù¸ã/²÷Þ,l`£Ã˜]Ô‡OÚ4ÑÙ3oGR—ÜìØÎqp>J|+mÞ˜®ïÛ{æ4ãYñ´¨¿v.XgZù‘1šàgK„—™üêƧ;H(™†mâ3`øŠxóì6z­}ÑÏ‹÷BTÇΘ˜X\Ñ!ìÇ·v_Ü­@ãúA×÷ˆ(‘zNÞ2ß7k”P°Óo´¥1ì\¾@Þ†"ÏÜ¥KÓœ`1L0# *†H†÷  1nˆón»‡DÔpö/`MêN¾P”0% *†H†÷  1Alice_Store010!0 +—ÑîX¶•/c¬ài‡oDÍ[ H¹Yý‚jrampartc-src-1.3.0/samples/keys/ahome/bob_key.pem0000644000076500007650000000157311202453433021613 0ustar shankarshankar-----BEGIN RSA PRIVATE KEY----- MIICXgIBAAKBgQDAqrjL2uJRQ679310JyivApElOx71WdFEsibZS/8oZhx/xUFx8 mGPn03EslmCLViWIk2ffTwGw/uhCgRm3X7iTVCQhmk1nOWQ1CEqjP0hrWnGHvzw/ +PoN7MDT801EACAS0WNaZK9nJt7OQof3/pmFTQUeNR5wXiMcm8NuZJKDOwIDAQAB AoGBAL9MxBAlVXG68pXAonCF/MtaVC+Uw7qD49WFJzNiJxkRwfWpBSvxY8FbgJP0 /Addkgb51bk0iUlk0Ni3twEMWga0j9jOJLkDDoXfpHmH5HGTvNa9m241PGQ+kzAU dFvFzR0qUTDlBjk4pYoeqoJBTgNZGu3b3BHEbz7O7PAJUQEBAkEA8Rwrf7/pSiPH 2pfU5StQ77+1Uva5VHpDoKLC5mgAgiPvQm2yBBSXkwPwXHEeRYEOfHydtCrudQY3 6fVP4Oy1GQJBAMyQsI6CIjEwZzS1KXLb+ulpFBjcK99PydBGKxRue/o0ZpD69siA AL4YqyXl4Ai4hEHHe7FxeJe4Wzp6F0A6kXMCQQCpC8QfzHEHTzDnPP7CMm2LupCp +1wTM6nIrXUS0CZTGFi+7WQbYkinheJ3HcRInOSIOWLkmBkaKWL4gMshezS5AkB8 1G5pCBBFY/wWtdYtOP/MH0scQH6lLtNAPRFczm7pJ8DPB9ZAU5wgZH1MCxLDP5W1 bj2U8mFcdCt3a7l0gEjxAkEAwoWqq6i7ZfFg4LUcKElZhjMeF8tKs1fWHhunO80t 6hQUhBHahc4+AAgoXOMe+KAxa+F6uftjM9eg8rAAZ+6q3g== -----END RSA PRIVATE KEY----- rampartc-src-1.3.0/samples/keys/ahome/alice_key.pem0000644000076500007650000000156711202453433022131 0ustar shankarshankar-----BEGIN RSA PRIVATE KEY----- MIICXAIBAAKBgQCiqL30HLVVijRoeuQoI1PgOQiA8v9KBqFt4p0aGtu7crZcbtqt 8P22ogEgox+tfgan3Q0lrzkBXXKI2wTK+r6ZScyk1wqctcs6OROYwKoNhtuR6EmV c+dpYvO976ZbSkl0/G1/etsPg9L9wFAi+2mOasMBTxWxkpPwM3krLP4RmwIDAQAB AoGAY+fazB357rE1YVrh2hlgwh6lr3YRASmzaye+MLOAdNCPW5Sm8iFL5Cn7IU2v /kKi2eW21oeaLtFzsMU9W2LJP6h33caPcMr/1F3wsiHRCBSZiRLgroYnryJ2pWRq B8r6/j1mCKzNkoxwspUS1tPFIT0yJB4L/bQGMIvnoM4v5aECQQDX2hBKRbsQYSgL xZmqx/KJG7+rcpjYXBcztcO09sAsJ+tJe7FPKoKB1CG/KWqj8KQn69blXxhKRDTp rPZLiU7RAkEAwOnfR+dwLbnNGTuafvvbWE1d0CCa3YGooCrrCq4Af7D5jv9TZXDx yOIZsHzQH5U47e9ht2JvYllbTlMhirKsqwJBAKbyAadwRz5j5pU0P6XW/78LtzLj b1Pn5goYi0VrkzaTqWcsQ/b26fmAGJnBbrldZZl6zrqY0jCekE4reFLz4AECQA7Y MEFFMuGh4YFmj73jvX4u/eANEj2nQ4WHp+x7dTheMuXpCc7NgR13IIjvIci8X9QX Toqg/Xcw7xC43uTgWN8CQF2p4WulNa6U64sxyK1gBWOr6kwx6PWU29Ay6MPDPAJP O84lDgb5dlC1SGE+xHUzPPN6E4YFI/ECawOHNrADEsE= -----END RSA PRIVATE KEY----- rampartc-src-1.3.0/samples/keys/ahome/bob_cert.cert0000644000076500007650000000213311202453433022125 0ustar shankarshankar-----BEGIN CERTIFICATE----- MIIDCjCCAfKgAwIBAgIQYDju2/6sm77InYfTq65x+DANBgkqhkiG9w0BAQUFADAw MQ4wDAYDVQQKDAVPQVNJUzEeMBwGA1UEAwwVT0FTSVMgSW50ZXJvcCBUZXN0IENB MB4XDTA1MDMxOTAwMDAwMFoXDTE4MDMxOTIzNTk1OVowQDEOMAwGA1UECgwFT0FT SVMxIDAeBgNVBAsMF09BU0lTIEludGVyb3AgVGVzdCBDZXJ0MQwwCgYDVQQDDANC b2IwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMCquMva4lFDrv3fXQnKK8Ck SU7HvVZ0USyJtlL/yhmHH/FQXHyYY+fTcSyWYItWJYiTZ99PAbD+6EKBGbdfuJNU JCGaTWc5ZDUISqM/SGtacYe/PD/4+g3swNPzTUQAIBLRY1pkr2cm3s5Ch/f+mYVN BR41HnBeIxybw25kkoM7AgMBAAGjgZMwgZAwCQYDVR0TBAIwADAzBgNVHR8ELDAq MCiiJoYkaHR0cDovL2ludGVyb3AuYmJ0ZXN0Lm5ldC9jcmwvY2EuY3JsMA4GA1Ud DwEB/wQEAwIEsDAdBgNVHQ4EFgQUXeg55vRyK3ZhAEhEf+YT0z986L0wHwYDVR0j BBgwFoAUwJ0o/MHrNaEd1qqqoBwaTcJJDw8wDQYJKoZIhvcNAQEFBQADggEBAIiV Gv2lGLhRvmMAHSlY7rKLVkv+zEUtSyg08FBT8z/RepUbtUQShcIqwWsemDU8JVts ucQLc+g6GCQXgkCkMiC8qhcLAt3BXzFmLxuCEAQeeFe8IATr4wACmEQE37TEqAuW EIanPYIplbxYgwP0OBWBSjcRpKRAxjEzuwObYjbll6vKdFHYIweWhhWPrefquFp7 TefTkF4D3rcctTfWJ76I5NrEVld+7PBnnJNpdDEuGsoaiJrwTW3Ixm40RXvG3fYS 4hIAPeTCUk3RkYfUkqlaaLQnUrF2hZSgiBNLPe8gGkYORccRIlZCGQDEpcWl1Uf9 OHw6fC+3hkqolFd5CVI= -----END CERTIFICATE----- rampartc-src-1.3.0/samples/keys/ahome/alice_cert.cert0000644000076500007650000000213711202453433022444 0ustar shankarshankar-----BEGIN CERTIFICATE----- MIIDDDCCAfSgAwIBAgIQM6YEf7FVYx/tZyEXgVComTANBgkqhkiG9w0BAQUFADAw MQ4wDAYDVQQKDAVPQVNJUzEeMBwGA1UEAwwVT0FTSVMgSW50ZXJvcCBUZXN0IENB MB4XDTA1MDMxOTAwMDAwMFoXDTE4MDMxOTIzNTk1OVowQjEOMAwGA1UECgwFT0FT SVMxIDAeBgNVBAsMF09BU0lTIEludGVyb3AgVGVzdCBDZXJ0MQ4wDAYDVQQDDAVB bGljZTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAoqi99By1VYo0aHrkKCNT 4DkIgPL/SgahbeKdGhrbu3K2XG7arfD9tqIBIKMfrX4Gp90NJa85AV1yiNsEyvq+ mUnMpNcKnLXLOjkTmMCqDYbbkehJlXPnaWLzve+mW0pJdPxtf3rbD4PS/cBQIvtp jmrDAU8VsZKT8DN5Kyz+EZsCAwEAAaOBkzCBkDAJBgNVHRMEAjAAMDMGA1UdHwQs MCowKKImhiRodHRwOi8vaW50ZXJvcC5iYnRlc3QubmV0L2NybC9jYS5jcmwwDgYD VR0PAQH/BAQDAgSwMB0GA1UdDgQWBBQK4l0TUHZ1QV3V2QtlLNDm+PoxiDAfBgNV HSMEGDAWgBTAnSj8wes1oR3WqqqgHBpNwkkPDzANBgkqhkiG9w0BAQUFAAOCAQEA BTqpOpvW+6yrLXyUlP2xJbEkohXHI5OWwKWleOb9hlkhWntUalfcFOJAgUyH30TT pHldzx1+vK2LPzhoUFKYHE1IyQvokBN2JjFO64BQukCKnZhldLRPxGhfkTdxQgdf 5rCK/wh3xVsZCNTfuMNmlAM6lOAg8QduDah3WFZpEA0s2nwQaCNQTNMjJC8tav1C Br6+E5FAmwPXP7pJxn9Fw9OXRyqbRA4v2y7YpbGkG2GI9UvOHw6SGvf4FRSthMMO 35YbpikGsLix3vAsXWWi4rwfVOYzQK0OFPNi9RMCUdSH06m9uLWckiCxjos0FQOD ZE9l4ATGy9s9hNVwryOJTw== -----END CERTIFICATE----- rampartc-src-1.3.0/samples/keys/ahome/a_req.pem0000644000076500007650000000123011202453433021256 0ustar shankarshankar-----BEGIN CERTIFICATE REQUEST----- MIIBsTCCARoCAQAwcTELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNVMQswCQYDVQQH EwJNWTELMAkGA1UEChMCc2QxCzAJBgNVBAsTAnNkMQ4wDAYDVQQDEwVhbGljZTEe MBwGCSqGSIb3DQEJARYPYWxpY2VAYWxpY2UuY29tMIGfMA0GCSqGSIb3DQEBAQUA A4GNADCBiQKBgQCiqL30HLVVijRoeuQoI1PgOQiA8v9KBqFt4p0aGtu7crZcbtqt 8P22ogEgox+tfgan3Q0lrzkBXXKI2wTK+r6ZScyk1wqctcs6OROYwKoNhtuR6EmV c+dpYvO976ZbSkl0/G1/etsPg9L9wFAi+2mOasMBTxWxkpPwM3krLP4RmwIDAQAB oAAwDQYJKoZIhvcNAQEFBQADgYEAFjhD/INN7YoFrIAaj3ESB5c9f/hD0oIhAGAq uQiNwKrdI0yTFWuEUsKo8i4NltXJDZiQpdqGBks7U6sCzlfNmcleuCavojPKd0Ao uHQzWyH3vs5S3hsiisGVIaYhViixoCPczyXkRknDhpHG46mB+A00v2gbj3+ZNWG6 70gp8rM= -----END CERTIFICATE REQUEST----- rampartc-src-1.3.0/samples/keys/bhome/0000755000076500007650000000000011202454512017470 5ustar shankarshankarrampartc-src-1.3.0/samples/keys/bhome/b_cert.cert0000644000076500007650000000213311202453434021606 0ustar shankarshankar-----BEGIN CERTIFICATE----- MIIDCjCCAfKgAwIBAgIQYDju2/6sm77InYfTq65x+DANBgkqhkiG9w0BAQUFADAw MQ4wDAYDVQQKDAVPQVNJUzEeMBwGA1UEAwwVT0FTSVMgSW50ZXJvcCBUZXN0IENB MB4XDTA1MDMxOTAwMDAwMFoXDTE4MDMxOTIzNTk1OVowQDEOMAwGA1UECgwFT0FT SVMxIDAeBgNVBAsMF09BU0lTIEludGVyb3AgVGVzdCBDZXJ0MQwwCgYDVQQDDANC b2IwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMCquMva4lFDrv3fXQnKK8Ck SU7HvVZ0USyJtlL/yhmHH/FQXHyYY+fTcSyWYItWJYiTZ99PAbD+6EKBGbdfuJNU JCGaTWc5ZDUISqM/SGtacYe/PD/4+g3swNPzTUQAIBLRY1pkr2cm3s5Ch/f+mYVN BR41HnBeIxybw25kkoM7AgMBAAGjgZMwgZAwCQYDVR0TBAIwADAzBgNVHR8ELDAq MCiiJoYkaHR0cDovL2ludGVyb3AuYmJ0ZXN0Lm5ldC9jcmwvY2EuY3JsMA4GA1Ud DwEB/wQEAwIEsDAdBgNVHQ4EFgQUXeg55vRyK3ZhAEhEf+YT0z986L0wHwYDVR0j BBgwFoAUwJ0o/MHrNaEd1qqqoBwaTcJJDw8wDQYJKoZIhvcNAQEFBQADggEBAIiV Gv2lGLhRvmMAHSlY7rKLVkv+zEUtSyg08FBT8z/RepUbtUQShcIqwWsemDU8JVts ucQLc+g6GCQXgkCkMiC8qhcLAt3BXzFmLxuCEAQeeFe8IATr4wACmEQE37TEqAuW EIanPYIplbxYgwP0OBWBSjcRpKRAxjEzuwObYjbll6vKdFHYIweWhhWPrefquFp7 TefTkF4D3rcctTfWJ76I5NrEVld+7PBnnJNpdDEuGsoaiJrwTW3Ixm40RXvG3fYS 4hIAPeTCUk3RkYfUkqlaaLQnUrF2hZSgiBNLPe8gGkYORccRIlZCGQDEpcWl1Uf9 OHw6fC+3hkqolFd5CVI= -----END CERTIFICATE----- rampartc-src-1.3.0/samples/keys/bhome/Makefile.am0000644000076500007650000000043411202453434021527 0ustar shankarshankarresdir=$(prefix)/samples/src/rampartc/data/keys/bhome res_DATA= a_cert.cert b_key.pem b_req.pem b_cert.cert alice_cert.cert bob_cert.cert bob_key.pem bob_kstore.p12 EXTRA_DIST= a_cert.cert b_key.pem b_req.pem b_cert.cert alice_cert.cert bob_cert.cert bob_key.pem bob_kstore.p12 rampartc-src-1.3.0/samples/keys/bhome/b_key.pem0000644000076500007650000000157311202453434021274 0ustar shankarshankar-----BEGIN RSA PRIVATE KEY----- MIICXgIBAAKBgQDAqrjL2uJRQ679310JyivApElOx71WdFEsibZS/8oZhx/xUFx8 mGPn03EslmCLViWIk2ffTwGw/uhCgRm3X7iTVCQhmk1nOWQ1CEqjP0hrWnGHvzw/ +PoN7MDT801EACAS0WNaZK9nJt7OQof3/pmFTQUeNR5wXiMcm8NuZJKDOwIDAQAB AoGBAL9MxBAlVXG68pXAonCF/MtaVC+Uw7qD49WFJzNiJxkRwfWpBSvxY8FbgJP0 /Addkgb51bk0iUlk0Ni3twEMWga0j9jOJLkDDoXfpHmH5HGTvNa9m241PGQ+kzAU dFvFzR0qUTDlBjk4pYoeqoJBTgNZGu3b3BHEbz7O7PAJUQEBAkEA8Rwrf7/pSiPH 2pfU5StQ77+1Uva5VHpDoKLC5mgAgiPvQm2yBBSXkwPwXHEeRYEOfHydtCrudQY3 6fVP4Oy1GQJBAMyQsI6CIjEwZzS1KXLb+ulpFBjcK99PydBGKxRue/o0ZpD69siA AL4YqyXl4Ai4hEHHe7FxeJe4Wzp6F0A6kXMCQQCpC8QfzHEHTzDnPP7CMm2LupCp +1wTM6nIrXUS0CZTGFi+7WQbYkinheJ3HcRInOSIOWLkmBkaKWL4gMshezS5AkB8 1G5pCBBFY/wWtdYtOP/MH0scQH6lLtNAPRFczm7pJ8DPB9ZAU5wgZH1MCxLDP5W1 bj2U8mFcdCt3a7l0gEjxAkEAwoWqq6i7ZfFg4LUcKElZhjMeF8tKs1fWHhunO80t 6hQUhBHahc4+AAgoXOMe+KAxa+F6uftjM9eg8rAAZ+6q3g== -----END RSA PRIVATE KEY----- rampartc-src-1.3.0/samples/keys/bhome/a_cert.cert0000644000076500007650000000213711202453434021611 0ustar shankarshankar-----BEGIN CERTIFICATE----- MIIDDDCCAfSgAwIBAgIQM6YEf7FVYx/tZyEXgVComTANBgkqhkiG9w0BAQUFADAw MQ4wDAYDVQQKDAVPQVNJUzEeMBwGA1UEAwwVT0FTSVMgSW50ZXJvcCBUZXN0IENB MB4XDTA1MDMxOTAwMDAwMFoXDTE4MDMxOTIzNTk1OVowQjEOMAwGA1UECgwFT0FT SVMxIDAeBgNVBAsMF09BU0lTIEludGVyb3AgVGVzdCBDZXJ0MQ4wDAYDVQQDDAVB bGljZTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAoqi99By1VYo0aHrkKCNT 4DkIgPL/SgahbeKdGhrbu3K2XG7arfD9tqIBIKMfrX4Gp90NJa85AV1yiNsEyvq+ mUnMpNcKnLXLOjkTmMCqDYbbkehJlXPnaWLzve+mW0pJdPxtf3rbD4PS/cBQIvtp jmrDAU8VsZKT8DN5Kyz+EZsCAwEAAaOBkzCBkDAJBgNVHRMEAjAAMDMGA1UdHwQs MCowKKImhiRodHRwOi8vaW50ZXJvcC5iYnRlc3QubmV0L2NybC9jYS5jcmwwDgYD VR0PAQH/BAQDAgSwMB0GA1UdDgQWBBQK4l0TUHZ1QV3V2QtlLNDm+PoxiDAfBgNV HSMEGDAWgBTAnSj8wes1oR3WqqqgHBpNwkkPDzANBgkqhkiG9w0BAQUFAAOCAQEA BTqpOpvW+6yrLXyUlP2xJbEkohXHI5OWwKWleOb9hlkhWntUalfcFOJAgUyH30TT pHldzx1+vK2LPzhoUFKYHE1IyQvokBN2JjFO64BQukCKnZhldLRPxGhfkTdxQgdf 5rCK/wh3xVsZCNTfuMNmlAM6lOAg8QduDah3WFZpEA0s2nwQaCNQTNMjJC8tav1C Br6+E5FAmwPXP7pJxn9Fw9OXRyqbRA4v2y7YpbGkG2GI9UvOHw6SGvf4FRSthMMO 35YbpikGsLix3vAsXWWi4rwfVOYzQK0OFPNi9RMCUdSH06m9uLWckiCxjos0FQOD ZE9l4ATGy9s9hNVwryOJTw== -----END CERTIFICATE----- rampartc-src-1.3.0/samples/keys/bhome/b_store.pfx0000644000076500007650000000332511202453434021651 0ustar shankarshankar0‚Ñ0‚— *†H†÷  ‚ˆ‚„0‚€0‚ *†H†÷  ‚p0‚l0‚e *†H†÷ 0 *†H†÷  03rô9xcB€‚88kHq÷ƒù®LjÕUI¼a(Új+l`»×ò×”ûßg5õ–°s7¶·àX;&6ïSaصR¹ ‡H‰­ªóöІ‘nÞñ®ò4ev9ß™­|$¹Jâöü´>L´Õ©œmîœÍ©*ÝUŒ#ÚŒ÷UºZ^ ´·ßh2Y«À肤úå¼8]æèzï[níËi¢À.hÆ÷nˆ„¼½å3‰³¢7ôÛ¿6à;/m¼KáŒáž ²©lÔ_ElíßÂF}Žtí—K(Œ2ù'uçÚ` +°FLà }øJ2OiƒmÅY¿R|!%ÉLÙo_¶ÿ‡‰^Þ*é‚ ­™['÷oz]x(U 4d'Н/sm¿ ÞžìCql€¢Zy‘#%ŽÛ¡O‚‰¾Víñòwò.Ÿ“Wز˜ÔÍãFÅŸ“£}ãM‹×c•òëDž¤> ÂÔz„Yqm–ãFm Ö£^¥/ä¶ÿÀôj·©]•ÝЃ é '9”ÖLMm+âpÆê¦é[{wvž=c×ÝÇf6v‡çnü Dø€Füþb0a0ÉØ€ñ&wš…(só®@Àѱ„ÇŸâHtC>ážBìƒa¿·pk(EàG_[ò¬q7xå$ú›dDíȆ,†¿f •â¾³p ±I‚ž¦âóÃ[ƒ€‰´ÅZÉùèÓ¨fé­0vEãì³ÂDß.½ªþº[® öÏŸ/’u§ÆìáY™OÖ€%wáì=‰ vñ¨_õôTÄ9ÿû,XÏ¢#D.ùp~Ç¥;bc}/nDÆ÷e© fñjÜìwÖ˜œ¬u˜l-#Ä1%0# *†H†÷  1â¶‚6¼{ä`ÝãV@qUÐÝPÔ010!0 +{£<›\Ž»Æœ»Yl¡ (笚0*Ø<ðÅ%*rampartc-src-1.3.0/samples/keys/bhome/b_req.pem0000644000076500007650000000106611202453434021270 0ustar shankarshankar-----BEGIN CERTIFICATE REQUEST----- MIIBaTCB0wIBADAqMQwwCgYDVQQDEwNCb2IxGjAYBgkqhkiG9w0BCQEWC2JvYkBi b2IuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDAqrjL2uJRQ679310J yivApElOx71WdFEsibZS/8oZhx/xUFx8mGPn03EslmCLViWIk2ffTwGw/uhCgRm3 X7iTVCQhmk1nOWQ1CEqjP0hrWnGHvzw/+PoN7MDT801EACAS0WNaZK9nJt7OQof3 /pmFTQUeNR5wXiMcm8NuZJKDOwIDAQABoAAwDQYJKoZIhvcNAQEFBQADgYEAKZm/ I258BLCrO2s4Zdc0llCqO4k0ICg+soQZW3zDJmS/y1OBpHGqlg/SmqNvqF5IPkNc yAGnYnsUh+C4L0fgscrWU1vwzydspHMUoko9nVrc2jxscUZEWM1sXe9MS6VSRmJw /WU0DvBHNqVUOsGbHqO8tbxnITnrBxJIwZelI0Y= -----END CERTIFICATE REQUEST----- rampartc-src-1.3.0/samples/keys/bhome/bob_key.pem0000644000076500007650000000157311202453434021615 0ustar shankarshankar-----BEGIN RSA PRIVATE KEY----- MIICXgIBAAKBgQDAqrjL2uJRQ679310JyivApElOx71WdFEsibZS/8oZhx/xUFx8 mGPn03EslmCLViWIk2ffTwGw/uhCgRm3X7iTVCQhmk1nOWQ1CEqjP0hrWnGHvzw/ +PoN7MDT801EACAS0WNaZK9nJt7OQof3/pmFTQUeNR5wXiMcm8NuZJKDOwIDAQAB AoGBAL9MxBAlVXG68pXAonCF/MtaVC+Uw7qD49WFJzNiJxkRwfWpBSvxY8FbgJP0 /Addkgb51bk0iUlk0Ni3twEMWga0j9jOJLkDDoXfpHmH5HGTvNa9m241PGQ+kzAU dFvFzR0qUTDlBjk4pYoeqoJBTgNZGu3b3BHEbz7O7PAJUQEBAkEA8Rwrf7/pSiPH 2pfU5StQ77+1Uva5VHpDoKLC5mgAgiPvQm2yBBSXkwPwXHEeRYEOfHydtCrudQY3 6fVP4Oy1GQJBAMyQsI6CIjEwZzS1KXLb+ulpFBjcK99PydBGKxRue/o0ZpD69siA AL4YqyXl4Ai4hEHHe7FxeJe4Wzp6F0A6kXMCQQCpC8QfzHEHTzDnPP7CMm2LupCp +1wTM6nIrXUS0CZTGFi+7WQbYkinheJ3HcRInOSIOWLkmBkaKWL4gMshezS5AkB8 1G5pCBBFY/wWtdYtOP/MH0scQH6lLtNAPRFczm7pJ8DPB9ZAU5wgZH1MCxLDP5W1 bj2U8mFcdCt3a7l0gEjxAkEAwoWqq6i7ZfFg4LUcKElZhjMeF8tKs1fWHhunO80t 6hQUhBHahc4+AAgoXOMe+KAxa+F6uftjM9eg8rAAZ+6q3g== -----END RSA PRIVATE KEY----- rampartc-src-1.3.0/samples/keys/bhome/alice_key.pem0000644000076500007650000000156711202453434022133 0ustar shankarshankar-----BEGIN RSA PRIVATE KEY----- MIICXAIBAAKBgQCiqL30HLVVijRoeuQoI1PgOQiA8v9KBqFt4p0aGtu7crZcbtqt 8P22ogEgox+tfgan3Q0lrzkBXXKI2wTK+r6ZScyk1wqctcs6OROYwKoNhtuR6EmV c+dpYvO976ZbSkl0/G1/etsPg9L9wFAi+2mOasMBTxWxkpPwM3krLP4RmwIDAQAB AoGAY+fazB357rE1YVrh2hlgwh6lr3YRASmzaye+MLOAdNCPW5Sm8iFL5Cn7IU2v /kKi2eW21oeaLtFzsMU9W2LJP6h33caPcMr/1F3wsiHRCBSZiRLgroYnryJ2pWRq B8r6/j1mCKzNkoxwspUS1tPFIT0yJB4L/bQGMIvnoM4v5aECQQDX2hBKRbsQYSgL xZmqx/KJG7+rcpjYXBcztcO09sAsJ+tJe7FPKoKB1CG/KWqj8KQn69blXxhKRDTp rPZLiU7RAkEAwOnfR+dwLbnNGTuafvvbWE1d0CCa3YGooCrrCq4Af7D5jv9TZXDx yOIZsHzQH5U47e9ht2JvYllbTlMhirKsqwJBAKbyAadwRz5j5pU0P6XW/78LtzLj b1Pn5goYi0VrkzaTqWcsQ/b26fmAGJnBbrldZZl6zrqY0jCekE4reFLz4AECQA7Y MEFFMuGh4YFmj73jvX4u/eANEj2nQ4WHp+x7dTheMuXpCc7NgR13IIjvIci8X9QX Toqg/Xcw7xC43uTgWN8CQF2p4WulNa6U64sxyK1gBWOr6kwx6PWU29Ay6MPDPAJP O84lDgb5dlC1SGE+xHUzPPN6E4YFI/ECawOHNrADEsE= -----END RSA PRIVATE KEY----- rampartc-src-1.3.0/samples/keys/bhome/bob_cert.cert0000644000076500007650000000213311202453434022127 0ustar shankarshankar-----BEGIN CERTIFICATE----- MIIDCjCCAfKgAwIBAgIQYDju2/6sm77InYfTq65x+DANBgkqhkiG9w0BAQUFADAw MQ4wDAYDVQQKDAVPQVNJUzEeMBwGA1UEAwwVT0FTSVMgSW50ZXJvcCBUZXN0IENB MB4XDTA1MDMxOTAwMDAwMFoXDTE4MDMxOTIzNTk1OVowQDEOMAwGA1UECgwFT0FT SVMxIDAeBgNVBAsMF09BU0lTIEludGVyb3AgVGVzdCBDZXJ0MQwwCgYDVQQDDANC b2IwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMCquMva4lFDrv3fXQnKK8Ck SU7HvVZ0USyJtlL/yhmHH/FQXHyYY+fTcSyWYItWJYiTZ99PAbD+6EKBGbdfuJNU JCGaTWc5ZDUISqM/SGtacYe/PD/4+g3swNPzTUQAIBLRY1pkr2cm3s5Ch/f+mYVN BR41HnBeIxybw25kkoM7AgMBAAGjgZMwgZAwCQYDVR0TBAIwADAzBgNVHR8ELDAq MCiiJoYkaHR0cDovL2ludGVyb3AuYmJ0ZXN0Lm5ldC9jcmwvY2EuY3JsMA4GA1Ud DwEB/wQEAwIEsDAdBgNVHQ4EFgQUXeg55vRyK3ZhAEhEf+YT0z986L0wHwYDVR0j BBgwFoAUwJ0o/MHrNaEd1qqqoBwaTcJJDw8wDQYJKoZIhvcNAQEFBQADggEBAIiV Gv2lGLhRvmMAHSlY7rKLVkv+zEUtSyg08FBT8z/RepUbtUQShcIqwWsemDU8JVts ucQLc+g6GCQXgkCkMiC8qhcLAt3BXzFmLxuCEAQeeFe8IATr4wACmEQE37TEqAuW EIanPYIplbxYgwP0OBWBSjcRpKRAxjEzuwObYjbll6vKdFHYIweWhhWPrefquFp7 TefTkF4D3rcctTfWJ76I5NrEVld+7PBnnJNpdDEuGsoaiJrwTW3Ixm40RXvG3fYS 4hIAPeTCUk3RkYfUkqlaaLQnUrF2hZSgiBNLPe8gGkYORccRIlZCGQDEpcWl1Uf9 OHw6fC+3hkqolFd5CVI= -----END CERTIFICATE----- rampartc-src-1.3.0/samples/keys/bhome/alice_cert.cert0000644000076500007650000000213711202453434022446 0ustar shankarshankar-----BEGIN CERTIFICATE----- MIIDDDCCAfSgAwIBAgIQM6YEf7FVYx/tZyEXgVComTANBgkqhkiG9w0BAQUFADAw MQ4wDAYDVQQKDAVPQVNJUzEeMBwGA1UEAwwVT0FTSVMgSW50ZXJvcCBUZXN0IENB MB4XDTA1MDMxOTAwMDAwMFoXDTE4MDMxOTIzNTk1OVowQjEOMAwGA1UECgwFT0FT SVMxIDAeBgNVBAsMF09BU0lTIEludGVyb3AgVGVzdCBDZXJ0MQ4wDAYDVQQDDAVB bGljZTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAoqi99By1VYo0aHrkKCNT 4DkIgPL/SgahbeKdGhrbu3K2XG7arfD9tqIBIKMfrX4Gp90NJa85AV1yiNsEyvq+ mUnMpNcKnLXLOjkTmMCqDYbbkehJlXPnaWLzve+mW0pJdPxtf3rbD4PS/cBQIvtp jmrDAU8VsZKT8DN5Kyz+EZsCAwEAAaOBkzCBkDAJBgNVHRMEAjAAMDMGA1UdHwQs MCowKKImhiRodHRwOi8vaW50ZXJvcC5iYnRlc3QubmV0L2NybC9jYS5jcmwwDgYD VR0PAQH/BAQDAgSwMB0GA1UdDgQWBBQK4l0TUHZ1QV3V2QtlLNDm+PoxiDAfBgNV HSMEGDAWgBTAnSj8wes1oR3WqqqgHBpNwkkPDzANBgkqhkiG9w0BAQUFAAOCAQEA BTqpOpvW+6yrLXyUlP2xJbEkohXHI5OWwKWleOb9hlkhWntUalfcFOJAgUyH30TT pHldzx1+vK2LPzhoUFKYHE1IyQvokBN2JjFO64BQukCKnZhldLRPxGhfkTdxQgdf 5rCK/wh3xVsZCNTfuMNmlAM6lOAg8QduDah3WFZpEA0s2nwQaCNQTNMjJC8tav1C Br6+E5FAmwPXP7pJxn9Fw9OXRyqbRA4v2y7YpbGkG2GI9UvOHw6SGvf4FRSthMMO 35YbpikGsLix3vAsXWWi4rwfVOYzQK0OFPNi9RMCUdSH06m9uLWckiCxjos0FQOD ZE9l4ATGy9s9hNVwryOJTw== -----END CERTIFICATE----- rampartc-src-1.3.0/samples/keys/bhome/bob_kstore.p120000644000076500007650000000521011202453434022145 0ustar shankarshankar0‚ „0‚ J *†H†÷  ‚ ;‚ 70‚ 30‚ *†H†÷  ‚0‚ü0‚õ *†H†÷ 0 *†H†÷  0ZK0ª Îj€‚Ș™w6u)Ò÷Mý‡Z$î› %ø¸þ©6D+¿Ð±Pˆ!þk8;E1Cò‰Ùgj=µ—ýÚ`< ­ž*(|„‹3¤ôñÇ­ù<œ÷ú+(ƒ»Ú½»Ê. xŒF1Ë”Zñâö$úyúç2O–™ÄÒAž·âŠq½„àváÙ“âu-h7ZÙòRšO@6šµòùí¥JeRpégo…[mã*áIƒ`Ö&ozGש@ê³1ªÚ"Ö€«›@ïÚ*¬Ûv°ñÚÉdV‚Ƴ·‹;ahî¬þ›¼$*vÍ/<•"Êu ™ç)–5Imޱ´t >…¯GÛ€øYz›¼,ñœ7JQݧÃÞçp 7¾“[ÛÃàÐô¡›ö1gdáùÜÙÑó"¹+„]íÉî)þ1z¤’½˜äŸ‰Vðœ_ž¨ŸÓÎðÕ¹)XÀ;?Ic  +ì4æÒáÊ»Ë_si…D¦#è«T/€œïÃ.ë›[ÁŠnFHˆ…-¿ÞáiŠD|½Mù`ìyñÖº÷ŒÝ8ÿ:è ßå÷RN Mr/*‚ua|íò寬WpœŸ›(…Y“’åus…Ÿ÷ “$Zu¿¼áiä'Ÿ§‚³Q(…ØzΟ"g8%Uµ€ãš4õ‘•gúæQ²ÓrU!oMixòF^Žjã2®‹úµÒ#èˆéÉ’x/ÃÑÀÀŽt)ûnæ>¹J‡|2‘sõö«®F‹rq;ŸWò{±šsøÈv–£È:Ïï’›Eʼnæ1‚7UTuðg·`–V%¥¤øIÇ^¡Ó"%/ç½üUÐ Ð…7牭ª>qÞ«· #*‚;:í?sQKç‰cØCƒã+þ9ÔÇ?™nÃ\ðŠÞ'š¼jbºCŒVÐn*û*ƒô­Í·gðe«Ë¹¼¶ò¯µÉlx¥øbâ ÷è7{PXAtl–©ªz--Lƒøî”—ÿôár+Cáצq›:»Ë3¹’Î×£mËš?yÓÁÒíÒ ØºwÈëØ÷ôñ·“·tPËœÝ~–i|uÙ¢arÖ‚ã„Eci*¶L­ú¯`¹É®§KÃ2%9Ú-£Ì&±åTú1/3Š®øöZòwŠTÜùaS0þW Ùe½j4­A¢§U_'‘Æ7Ö8 ÷ù«ÔÃô¦; å›@÷»•í¥ú€ÂtÓoI @³—OÝ€šÑie¨´4GeíÞ'‰-ebWŽ”xرøp$[.þbCˆ§óèeóüðãËìx ‹ šÇ«¼põH•ðé3ô¸/¸—hüÑ úÅ»Z$¿†#våÒ–è(Ìë#¤Fw*R‚tDWêÿöFç"—(1•ºnƒšã}ÐWS{¾ä€C—ÕW“ÌqæÇœK˜ë»ZÛl,æ0‚ *†H†÷  ‚ ‚ 0‚0‚ *†H†÷   ‚¦0‚¢0 *†H†÷  0©„»N9T‚€™/2ÞOyM<ÖÊ úıÔ6X :¬0 ²…'ýb½ëlîWÔuíê\ë}u®EGGH–0:†KžÂA=DI±QiᔳxV]oo‘:{úcþ‘é”*í⦖µAÿäeâ¾ÝÍ™¶O(¯§ô}¸,fœ«yøiís&Ϋ¸¥wíDˆB‹¥@«§jÐnÐú,}gªAà@ÆX;}Û{ [¬†(•@n™bC§Òã/ÆW]û&n·„aT¢:TÉ–ë†ê¨JH—Òºôûvä²Y‚‡ù¾€žßEÄ'Œ ó#ßSO)®vw[¡•i3L7fð&αnªÕåbK0YíÛ™Cô'nAèÆiÕÎPýQ2E Wþ9[«QÿA¶µ¤ùÞ4ô”MS<ý”Oˆö!ƒ>¸L;ÚíÌd'î‰b…svª)šúÝÐ’èûBÚGþCsè(²kLɰ8Ø9ŸM¤§ÀÆÛ<ËUF*ûÄ]Ÿ¥Yö¬›‹S/­V%[<Û‹t¦0¿Ò?-˜Ÿ+Nr¤]±Ðhß½„u ŠTÕMשï$Û°­ä,¸¹„ÖïêÊ}áð‰ßÿtIüBÌwàI³ç|u…1é7é°nq…C.ÎFb~XTKàüÓQábXAXЧ·ye“¥då–H¨8ÓÁ˜¡N©ž&J3ڳħ‰Yî½ÝZæ8V–Fàj^áÕ+Ó2Ûß ™d}pV®@¯€?4O3fœÙððWÔBÐešl•‘=9гåð‘”w¬âb„h†ØY.Ž_†¤·³ebÄúD6ä‘5Ãßftå’æqŠ‚L-ب LVq¼ #include #include #include #include #include #include #include #include #include rampart_credentials_status_t AXIS2_CALL rampart_sample_credentials_username_get( rampart_credentials_t *credentials, const axutil_env_t* env, axis2_msg_ctx_t *msg_ctx, axis2_char_t **username, axis2_char_t **password ) { *username = "Gampola"; *password = "GampolaPW"; return RAMPART_CREDENTIALS_PW_FOUND; } /** * Following block distinguishes the exposed part of the dll. */ AXIS2_EXPORT int axis2_get_instance(rampart_credentials_t **inst, const axutil_env_t *env) { rampart_credentials_t* cred_p = NULL; cred_p = AXIS2_MALLOC(env->allocator, sizeof(rampart_credentials_t)); cred_p->ops = AXIS2_MALLOC( env->allocator, sizeof(rampart_credentials_t)); /*assign function pointers*/ cred_p->ops->rampart_credentials_username_get = rampart_sample_credentials_username_get; *inst = cred_p; if (!(*inst)) { return AXIS2_FAILURE; } return AXIS2_SUCCESS; } AXIS2_EXPORT int axis2_remove_instance(rampart_credentials_t *inst, const axutil_env_t *env) { axis2_status_t status = AXIS2_FAILURE; if (inst) { status = AXIS2_SVC_SKELETON_FREE(inst, env); } return status; } rampartc-src-1.3.0/samples/Makefile.am0000644000076500007650000000052411202453434017462 0ustar shankarshankarTESTS = datadir=$(prefix)/samples/src/rampartc/secpolicy SUBDIRS = callback client server keys authn_provider credential_provider data replay_detector sct_provider data_DATA= install-data-hook: cp -rf secpolicy/* $(datadir) find $(datadir) -type d -name ".svn" | xargs rm -rf EXTRA_DIST=secpolicy omxmlsec data ABOUT_SAMPLES build.sh rampartc-src-1.3.0/samples/secpolicy/0000755000076500007650000000000011202454512017415 5ustar shankarshankarrampartc-src-1.3.0/samples/secpolicy/scenario6/0000755000076500007650000000000011202454512021306 5ustar shankarshankarrampartc-src-1.3.0/samples/secpolicy/scenario6/client-policy.xml0000644000076500007650000000722511202453427024615 0ustar shankarshankar Alice 360 a Digest AXIS2C_HOME/samples/lib/rampartc/libpwcb.so AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/bob_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/alice_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/alice_key.pem rampartc-src-1.3.0/samples/secpolicy/scenario6/services.xml0000644000076500007650000001035711202453427023665 0ustar shankarshankar sec_echo This is a testing service , to test the system is working or not http://example.com/ws/2004/09/policy/Test/EchoRequest Bob 360 b Digest AXIS2C_HOME/samples/lib/rampartc/libpwcb.so AXIS2C_HOME/samples/src/rampartc/data/keys/bhome/alice_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/bhome/bob_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/bhome/bob_key.pem rampartc-src-1.3.0/samples/secpolicy/scenario16/0000755000076500007650000000000011202454512021367 5ustar shankarshankarrampartc-src-1.3.0/samples/secpolicy/scenario16/client-policy.xml0000644000076500007650000000620411202453431024665 0ustar shankarshankar Alice 360 Digest AXIS2C_HOME/samples/lib/rampartc/libsctprovider.so AXIS2C_HOME/samples/lib/rampartc/libpwcb.so rampartc-src-1.3.0/samples/secpolicy/scenario16/services.xml0000644000076500007650000000652011202453431023736 0ustar shankarshankar sec_echo This is a testing service , to test the system is working or not http://example.com/ws/2004/09/policy/Test/EchoRequest Bob Digest AXIS2C_HOME/samples/lib/rampartc/libpwcb.so AXIS2C_HOME/samples/lib/rampartc/libsctprovider.so rampartc-src-1.3.0/samples/secpolicy/scenario23/0000755000076500007650000000000011202454512021365 5ustar shankarshankarrampartc-src-1.3.0/samples/secpolicy/scenario23/tcpmon-trace5.txt0000644000076500007650000003557611202453431024626 0ustar shankarshankar ============== Listen Port: 9090 Target Host: 127.0.0.1 Target Port: 8080 ==== Request ==== POST /axis2/services/sec_echo/echoString HTTP/1.1 User-Agent: Axis2/C Content-Length: 8652 Content-Type: application/soap+xml;charset=UTF-8 Host: 127.0.0.1:9090 http://localhost:9090/axis2/services/sec_echo/echoString http://example.com/ws/2004/09/policy/Test/EchoRequest e82f3acc-8dcf-1dc1-3725-0013ce8f2fc7 MIIDDDCCAfSgAwIBAgIQM6YEf7FVYx/tZyEXgVComTANBgkqhkiG9w0BAQUFADAwMQ4wDAYDVQQKDAVPQVNJUzEeMBwGA1UEAwwVT0FTSVMgSW50ZXJvcCBUZXN0IENBMB4XDTA1MDMxOTAwMDAwMFoXDTE4MDMxOTIzNTk1OVowQjEOMAwGA1UECgwFT0FTSVMxIDAeBgNVBAsMF09BU0lTIEludGVyb3AgVGVzdCBDZXJ0MQ4wDAYDVQQDDAVBbGljZTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAoqi99By1VYo0aHrkKCNT4DkIgPL/SgahbeKdGhrbu3K2XG7arfD9tqIBIKMfrX4Gp90NJa85AV1yiNsEyvq+mUnMpNcKnLXLOjkTmMCqDYbbkehJlXPnaWLzve+mW0pJdPxtf3rbD4PS/cBQIvtpjmrDAU8VsZKT8DN5Kyz+EZsCAwEAAaOBkzCBkDAJBgNVHRMEAjAAMDMGA1UdHwQsMCowKKImhiRodHRwOi8vaW50ZXJvcC5iYnRlc3QubmV0L2NybC9jYS5jcmwwDgYDVR0PAQH/BAQDAgSwMB0GA1UdDgQWBBQK4l0TUHZ1QV3V2QtlLNDm+PoxiDAfBgNVHSMEGDAWgBTAnSj8wes1oR3WqqqgHBpNwkkPDzANBgkqhkiG9w0BAQUFAAOCAQEABTqpOpvW+6yrLXyUlP2xJbEkohXHI5OWwKWleOb9hlkhWntUalfcFOJAgUyH30TTpHldzx1+vK2LPzhoUFKYHE1IyQvokBN2JjFO64BQukCKnZhldLRPxGhfkTdxQgdf5rCK/wh3xVsZCNTfuMNmlAM6lOAg8QduDah3WFZpEA0s2nwQaCNQTNMjJC8tav1CBr6+E5FAmwPXP7pJxn9Fw9OXRyqbRA4v2y7YpbGkG2GI9UvOHw6SGvf4FRSthMMO35YbpikGsLix3vAsXWWi4rwfVOYzQK0OFPNi9RMCUdSH06m9uLWckiCxjos0FQODZE9l4ATGy9s9hNVwryOJTw== 2007-11-08T07:55:00.743Z 2007-11-08T08:01:00.743Z Alice my1lzTJs+LBRFaFnsHzl9ZQb3Us= HTgnQbZg240UiOaqYMJvnX07z2YrmFXJ 2007-11-08T07:55:00.744Z Xeg55vRyK3ZhAEhEf+YT0z986L0= VOd9ZfofSqVGkFEoFlD5wiQ8dMVMBjWK9yBl0mfDJD1yC/6i3fJRhHVEH4PcsWcGGXPhN1gYXF/03EWZECNFHWdvK8nltjHS/Gg4eqrXvpzSNNB2JgJPS8I6paCZfLTGH3w+7PYz2JPQjFkAdsr6x2ale7X7Zj8pIQtKnyXp9Ls= +Jxyf5gdd7pOx+I33yeB0VC96uUOuE+mGJ3d2luktXG011B30MglOcPViEldF1ABZvwecoryVEYRwtqdRPORg5IbDpxgzudFPRsGkCs+aXrAKrhtRoUK0ChTeQNZJBI4sok2y8foBzXRZKo5zekMOztfTpQKQosCKVipPKN+FIkCIcKYECArOhVHl+VRNnewAcdmyTsZg6wlwtaSGy9ZDRaHtLqzSwjKMpUBmt/wKDNOLFSBpd3gTay1vAFQe0UKEcuCqLjnO4zDc+caEc1MFutPDwZZRgveFQWfo6N9jyzasMljHzLFB6xsyBs+6wbM2yXORWVf7v6XEshaBxnEXbc0wHafhF7NOAPtbia9dNr1F9/pNa53n8WdyjibCc9hF9HPVkuU6bjo/t80JA2tvNeImDFxzUQA5lv1IwZDsakl/SLgqK4PUwR/GgNVgzdym4Ym3l3YK4aMb6/XUmxMTs+iRoyQvIwHVTjmwNVyPtiGRBS2W8zBM1UVHgP5sZczIpohBoVT0uDxUXQCGGtlWNHy/DSzJn8g2IJgAErGFA1DJgCl6RaCSzkFFDnSKrct09i7FG9ZXsJQrPrR61Uz+olnWEGtyKdNkhsNboMOnjBU50WSr2sBJDATHB0VlHyQ0apFbYyIYS22C+zFyCUQrGDv6TtSp73uiFYzTKkWoutLBXECIXyR3koIzzBZhWjE3IYfFo28l+N+1Hg9SbDxgJFslRCQDjFT2qmJNoGPvyhUzm5gHLLeMIbsP53rXtU1VI+ZduCpvQnEZzsPY53rApOdOmsWA3Pu8k2ECxRmcdYc69X5oyEGGgUGQtWfh0z/lKR9R74+n+FKA3Ef0DkW8F3G4IMkZ7NAZKo/dKaoYl5IsCu3phx5tV9fyQPe+2KhWs3+Yh73qHfxqLM+z0rmm0pUYygLBSXI4yahhjGl2BscLNCianeqPhGqS6BYOOqkZZUTtSk6ALOw6pFJiNrBrNpzICFoO8C0bxKLG8VtdxiiQ1J83XgrSnK7hyrhB1Rdlp3SaC4TU4tkC+L/0OGZVk9v3njsEhQMnJcYUd7fkM7sT7fVmdark7hIWi7+hV37ItuheYbG7gptEUgKVC+axQ7RsseWldagdjVvBkqJ7J5C+pEhmywDQNz8XLVH6OFv9gM4GRhEd0UENtzP95tcpArKG71eWyrv808Ic+JlwEaXK0CBWMAcQT2ymN7+CuX1MAs0VJjvb2O4R0qnrsZZxcRB2sJFC170qCtO4YTVOXbieFOTmTA0FktjhNqk7OxgRQnuXv4/l2cHkJ1groWs/IPBKYJKpUtbkqJlZ4DfmTelZFBGidqu7H0FYtVPH5fSc19iiQ3jkB5ZA5JrSZXi177AXlOQOtC+5zoZZ5gMyzBXzxVmWxYZBVMxa2NxnWG9FNenxnfzeHkcNRJF55FNb8hgvDRGzn7LBlj3AhvhmMb9Jjf0YU60iLBqKHPOvy2PyMb2ETThZPdGGa+TJCs3qVVV1cNcVfcTQug4/aoC6XwedGlsA5yB/jZRWsBPFV3E+LewJEfRTxZet5TI9XU8mUbp9hcZXKVSUyeKiGOVdhFJ4EfN05naer7qj7TD6Uoix/8cUeX2N3Xuz3IcPeo2MEaWMcpZ170RI4LhK0ODjYWL1O8UQF8b+DcCutMGrOKwBjHemIG7njuNA09GXWoS+8sL5BqK847vnJbCx/0IZsVeWPHMCsAIgdTv+eO/izwYdQBDYyQlpI8jZsm+vT9dDPcpXUYzOCDGQ2npqwQNhUOV4KPlWy9EEvZmC2aArERzDMalp79Abf9PDGu5Qq8Ti93D6Eatdr21G/1LtfUjZYMOxYQCt/mAfM6z/FWVsJNhqTdvpo0TFOe24hB35j7/cQinnNyMchpiXGSZjeIaZMt52m9cuEAe2Yo3j6qo0WytkZtfldDyVgvTjZVnErTiLwrZmV+vqrdoY9nxjN9wHx8xmEpF/Ft/QhiPKny8CDZDjwBwaCsPFHK9FfmSKRHafXN4TPly9+zRNiGhl2EK7G3C1ZhQZfxUjiWM7JUZUb30DHXvUUtzM6zk/5smzoosq8aNksZCoF4DrZA+cktxKjDGmkEcvp4WCy0txaD/7E4Bc0KZ+9uKAM/UDVmCHvUKaUf4eZIP7ST+tUQTgmLLBSYo5aQqZ8d0ODwRGzazgODm/yhM+pVeKbi/ckhy7taCNJA8Sba7F+8Ki6Ih9E5hkJ+OyBWrZeYHx+kb79N61t8yKgLEMgMO4d+2hASDPFvCXMYwT5hMKgiWlEJu1V2vqP0PPrRlFnizNjyiIIRFeDY5B5HSmnxeLaA2vNiS2vwDyuzjk4RLfsukW6EyJdGKMTWJnggTs2QDGCAKPxtdLiIw0+zaSNCq1R8fg3ZPajHZ6qDI17gT+enJ8GA4gZMd+2vl4IlSzK7pwVcTrhbMvudazlCYLtK3L3tSq3QNytNXql5XG1niz6rcoZkh0ozLY1THWhQdUSKhOfzyYAldExQJTiYakXm6e23DQPF6RDk/9jrECHkmmvQtqENOEXw7y2UQAzyJZpY67M6yRSdTAuY5wV2HQIBmVmDs+ratS5Waty4qCr9NhQpX4ZYZD0GQEFPKvKz1kNEvlYCnU1I0fAbgiqr8q/HMM66aiqMCB4Y7wq+a1OInA7MeyplddwoYkwY+P2Etu86i731hcaicipFwOoZGcWZNsftBpVC89LnXQBv4/Ie2EWXtEPOBMmJuSkLu5hLRgkBxnJT7Q8XzEja24xitS0/aKX7lvyACUZeekM0BNvf0wuyDM3ocNIs7hqI4kgyfZyiaEa8n9fFxeXuhLLkprd0s8pLdCD5ClWBpSlT+6/+RQNShjFkQhADiE/FBIcnzMyoLlrDe4Y8YiVNsnm9MR2flkOUWahtGYQJoU5GIZtjQgC8ewX7ZhZkXoC5YkJyMSbqlw4eT+PE3ukTfl/m9u1ePk45IVB5VHXVitj1NzBOxB4eJ3v03jVq2PEjGaDoUu3MrTtnQigCh+mUmcw9DW9yqVd9nEZOPZzmd8pkiP60RlsfPK92mqgeqMfg8IlQjaaA7WGKDARIAG80M25oZ1Vyc96Q+ig4ml39x09b5BiltPGMqYUf7GZ2s96kXLFctmGAl3yhenZkVzhT583BaGo+Hnyqs731sVSXrwWXMs0GnJdTqUKS2cG1fRIgByGmR92aPaHAz5CsTlQ55iM8R0oI/kMq+Ex+3BPaZFXZTue6HnouFuBZeGbhtmvAnJ0Gz8bsVinL5VfFIet+KqULPTo+ypxlxrlxObp4+5Xig6n5j5/dEpQEPADGP2W29cbK2omRFdZCE83v8miw6IhdGHO4lVVIris668kapQX1MgJduoKEWJbomNJvTN0zI26UZx6EVGMsrWAPxcFrIH8g7N8Lorryg+zPBvhzIrlBsDbotEfw3IvPUxFCCRa6f8oCLu7HMIEHK2mAxgdtG P0Rp2R2ZKH7MFmucX8fkWjQbEYZO904U50KoVOvqftiXn8PN+Zh1BUjdMRFozcRpArWqb1LY1fcGq1R5XXzCSGdKvbyWCBsMUlXDOwvv0WSF2fAFZpia8qXHlLyLiaXugxn4BSkmO2k8m/5ft5fl8A== ==== Response ==== HTTP/1.1 200 OK Content-Type: application/soap+xml;charset=UTF-8 Content-Length: 5208 http://example.com/ws/2004/09/policy/Test/EchoRequest http://localhost:9090/axis2/services/sec_echo/echoString e8407b70-8dcf-1dc1-3986-0013ce8f2fc7 e82f3acc-8dcf-1dc1-3725-0013ce8f2fc7 2007-11-08T07:55:00.857Z 2007-11-08T08:01:00.857Z CuJdE1B2dUFd1dkLZSzQ5vj6MYg= ZaSwcOY8mo2wLdWaBQOwdIV50UE5kkOI44Kccm3awm7nKoHxjbqAFt18OVnPbj8ZAQpjrjTmzz0j1VhZGR+heLsT7Hof5SzdH4o05bfrZEO94z0ZvqtXXW9zdFmOKLOxqfpd9i5m4NfLgQWlbYFF3KD0KyithJgjCJQSbeetP7s= jY2ve/NqrX4lFQBr2l83FoAq+StQfqWbjY6ut90zEFGOTlhGOu704U2CACVsINR6D5i7rwFJb4eK6+eKEkLx3DTzwqb+HapFn+6WPQdRKSb2HXArbz9gMEoeDy2UHBV1FccmS31p2rVLV51lJ+WyXwYGbkmizocxHHn/mg9n9r9QA+iF2iu/hPaVmdxfu3tkUvNOnvJ2XH3UEmZ0xkWCNW4tYZ+ueVD1WivHIJ8CX219+HpSXWNE3W6hMnW33u1LZkV/T3kITyVNB9+AYRFtGg367m0c9mhJ5i3bvmKA5WNN0t6LPaE3qJVFd7N7YPMpoD9o4Z3Xa3/q42ZGeicDgMCHGYHEafFtsnFl+fdYvz7/Lo4TKvBJXdsZ8ys91E5YRwK+ryyLYyn3PQiKFr7r06KXLHXyXzKZiTKiuKRlkJjcbloUqCalWAkIhfLa8/1mrmNy4oapIyUHgTo7OkWZX2P8Q/1ek6VUQVc77AHPSq3s8xnC0JPc7sz/fB2M33bMi7seLVK/MMjhrM71us7M4X+DXRmtP616tFXJLxhEQnq6wc4U8/8totd89VFNkj7rTcGh/cT71TOnL8rHocj+XL2YV6JUN/FQHXRXnQcHiB7x+aKmAzzXJZwQ0v2V7MA0HU1gbaDUhXHLwCVCf7j4ylvI50pYfPEJmXf2pQGEPaMl5pbnRJNkBNUbQodB8gkyLUqW5eqMNUyr8To2kzbo+r6TCuo6g4abslPfF4pszlGGyggv3qxlbmSxc+4g0sbMuugo1y8IM/HKTkm+q0VyLdF4mC5nrniFMJeX7vzE/gN0ZgOsuqQJai9OZho61Ciizju463Z9fdg4DDIisaBCXWjql1e7JLWmq4cnf7z5i45Naq1rNnEcWZuXa/oLV/u67I50WcobjOA6uI62hA1DDkAs5L+uDOzsWMFUqOfuTrckhKVxxbfN3BXgNEbf3vTlqWiiD4D9v04BHsjdkEB2tUxl/XT26zH44TswUgTqRU2L3FvGTEtssKkFsxgm1CdhzoI77GJ+R6T5BB4FuPK81vr62wHmgbEhQj8ap63hrwyFV/V5jgiK4IXHrp63troLZ8P1aAk5CjECNm5gt5ypMH0kaN7q4ZmDmyoVFA58nOHDUSQhzNTy2yvlEksth3JymL0MRjs0DnR5imOHLFIiIVkcdUCZTzyFZU6isI5x0vWRYovflL0NrjgErVBByUA//zinJ4jnZjy/6RNmaTWNWh+DZxPN+79c+Uqy2ChNIaPcnvxkJ0CRiNZ/KQH2+94G0srQF4uHV5HXN39nnFUaM9jXmmGoYyjCbNiVwYvQpzNPPwTuvdKO0YDcakBlR+QMCPcsym6+1mR0DXvxvGkV317JoAqCsYlKeebCIWDP6/+BXUGOEgvQF09YJz928TCM2/GZSg8YhgVQB7Xcv0GhtmhB/B5kSdKApMiA+Bex3uYZw3zrOZn8aDs3cJ9q+66Jwq7XJh2cHjf8CtsFRp7eJaWFOOpXZrtFDAjUNEEehnKBDoNtPp+azaDoT5c2mveNqFVLIiz71CmDNpH+sQA7w54e+PqCT202YGlJvNdbptrGjq9SL8ysavXIUL1+jdohRd+diI8S2zzouIHXGZeKn4U72+Yfrch7chx0kDOoQSOA9c2RWjKNRh5z2zHJtxcyzry9KH5SyKpZJdsO3/+pI70cqfdHQeK0IMxaADVQCEtuCumbvhPNLd/vD/nH9gUkPAptLyJ+S3zyQslkFHIqgB6SxGJzWie2cElvGUESA1DDTVfKTVeP4NtSSAFOIXn4ZSKCMDaPlxsz3A8W6609Lq/UyElkOQLNr+KzgoZtgNwfEN5VZPoTdZCYZBDQYD90T4XX4VWA6uBvFnYi+jwuBS1v0T81rVnVQEleQo8Ubaf3LydA2ZnvmxftHvHXZKWsXuhIacVR9tc+zXkeSpOrkOHkEOmJZmC8lJPn2+8muaPGLpsvlHJbe4YUWEuO06WWdng5J2qChmXsR7JoZ8Zbwc91xpdjbmQYHm3QLc+u86Ea2Z4eZOmnuehOv7wUUFRPXwhljJf+TqeJ8FGmNG93xdmNtu/OZpBqBLdJlV6RC8KnYRrkPwBdapWWA93N3iag dkq1EUHgg3nFHMlQOPDEMyHASaa4+w7uiX6vhzmFSLPaKT+u3zRLy4oI/ey1eODopxauRIa/OMJcQTkZI7qazi8upZ/XTVmaHixsGLrDu8nLerCuWRUeJdlxpP5f42hB5oQYwrUxTFH+UY3uXGIGZUkbNX35DNscSbZP2zIrEnUF2Zz0PY6fdZ0U8FI8nKHb ============== rampartc-src-1.3.0/samples/secpolicy/scenario23/client-policy.xml0000644000076500007650000000664411202453431024673 0ustar shankarshankar Bob 360 b Digest AXIS2C_HOME/samples/lib/rampartc/libpwcb.so AXIS2C_HOME/samples/src/rampartc/data/keys/bhome/bob_kstore.p12 rampartc-src-1.3.0/samples/secpolicy/scenario23/services.xml0000644000076500007650000000777511202453431023751 0ustar shankarshankar sec_echo This is a testing service , to test the system is working or not http://example.com/ws/2004/09/policy/Test/EchoRequest Alice 360 a Digest AXIS2C_HOME/samples/lib/rampartc/libpwcb.so AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/alice_kstore.p12 rampartc-src-1.3.0/samples/secpolicy/scenario10/0000755000076500007650000000000011202454512021361 5ustar shankarshankarrampartc-src-1.3.0/samples/secpolicy/scenario10/client-policy.xml0000644000076500007650000000703611202453430024662 0ustar shankarshankar Alice 360 a Digest AXIS2C_HOME/samples/lib/rampartc/libpwcb.so AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/bob_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/alice_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/alice_key.pem rampartc-src-1.3.0/samples/secpolicy/scenario10/tcpmon-trace10.txt0000644000076500007650000004466211202453430024671 0ustar shankarshankar ============== Listen Port: 9090 Target Host: 127.0.0.1 Target Port: 8080 ==== Request ==== POST /axis2/services/sec_echo/echoString HTTP/1.1 User-Agent: Axis2/C Content-Length: 9410 Content-Type: application/soap+xml;charset=UTF-8 Host: 127.0.0.1:9090 http://localhost:9090/axis2/services/sec_echo/echoString http://example.com/ws/2004/09/policy/Test/EchoRequest 81e3ec8e-980d-1dc1-208b-0013ce8f2fc7 2007-11-21T08:41:09.547Z 2007-11-21T08:47:09.547Z Alice PX+WBNDmXFn+cloY4M8TP7lf0wU= syBa5Ls17qu/cl3Mb0Xjhe8Rwy/LVoLj 2007-11-21T08:41:09.547Z NQM0IBvuplAtETQvk+6gn8C13wE= TH85IoUJ0CKYqfBvOzpZS2JgLOrkALmVmBVvkvtCd1KgEIzAAP5+pNWtlqeB2nvTWyPUlfqvEysybCN1Zmmklv3PWMcn/hx2nP0HJ38I2eXIk3KXJYnQrLafXL10p3PK2LwuORRFEfZuapURvcnd0DhsC+h46Zu1qPqpJi/UcI4= 0 32 gG6ujTQFJMH2Foz94uAiCg== 0 32 16e7sd+yMIgV835evMgiNw== 0 32 0quMMJ0lks6emrpP4ESsrg== lKX+x8z7sYjdZlSA6Fuq68sOf/CVgHdH/PstGcEmGeh+DAlze+fZudO4IOT6cjayFwiqZqLUrY3Pqp82cSDTyuYUiC+GWoBzqAMVBUAaFBkXUv2lDXZbXzK6m4AqD/7WoY5HOaloArfFAKk6ppiIJbGw+urdLeEG25rSh8I3RkAt3Er1T3rhwTiBVoKPN58VifZXmh6DOOlCg7cjMsVUl61wSQix1ULixyt1JYkiQGGwp0D+V02CWjt4tV6xSzIuVIiG4VzsfEl1yhEbPlBGb8nLcxm8pz35m3qfNiubYloj2UPsNfomUmzVSjGI0jBtEreR07d8GpBVaIG9x0zNZaMjv/RP3YS0ZiBmA1vtpZOGZwa2Jq2tU6uANtnusp8vWqfYHF80V2rM/F8Wo3WVo4vvXF0YS3AFEoU/GYkVeYOu15KgNXchZV+9nqjis2mWZxUWqzeIgUcRdPqZig0EQH/gIZEVPeCaO14VZjTAWDc6Qb1prkyALxGbA+UD0ValwDQvcOfsaIirJTkwDa0m/x4OkWFX9Nx/UcmFgKrMkmnKn+NEa2gli7WnZg8/H6nV/SqKdf8l9iDoryO6TAPvOHeongo9NAfe1OyG9NiePWO0MK2Lv5fG4yIQvJKSI7Xoy5pALT4g92wnDDbYWP1T2j+KjQdE7ImQhU5HoJ9v9xIx5pfXC1ruqESedXdjjNuYj1V6ygEiptNYgz/kgYMJRTZUJiwGKLVX0R8ZQBBXIBRBI95jA1pyEI5zdpcCboIJM3wjYO5qAKIXaAXsBGso94+XW9IaTN/Sw/RgrRJRV2dLqszH+W77eWptoNW4pIGsNUuDu5CdqWxW3YTkTCKt0i+lk8dlyx6AyZJiaAB6wI0BRaQqS0T65HXZQpBhzwzkziHB+OHLDde6pwWYRTKDxrzBZ2NXnBF4pMuecic9u86AtD8iThpoiOY+CwzGDQw27lt97LKZ1khBDczEb567AxzoldUv2+xGJqU/nRnwYU96iFwZTNdoEIYl6piRHKAfSi4dXZAb0gEwUHswIuSgUcU9HjiTbzWzcpC4qAJQalJezH7VbUH19uaoozVrKrTN0x/OF9vEYBmsWUxdCzTYUVZ1LlEbstbKnutk6nEMyJYglpnx7hz0guUGiapEhPaFm9W1Yp9RsQpF/MNYe8UWLYGvHwcNYfhRxaQHuyaH9ezdlmolRgs23gFARO3gDu20ZI4tgN0e40n+DLJwL2i4PtuOjhcr6XyMD92nUVt2sHJlGFGEYgCrATIRiJu5yzm/5Vh6PyjBIw6yMPNWcRRnZX+g7JCyhNHBYXzMpKGX6N5NVCc/0AvPk9SzjJJEYntuno844Jl9P4GpFfpoMn6LGt1+jf7e6xmxAB3fIKfX64lEsmeTCNzTjEffgr9TmHtXV6BFdywfj9/RT29KDBe1UYdOOjn4etQFfR7u03vb4+KNaz8vUJaI7gnjpSnPzkYJMQkxSoZXjscAg9mEEAHJD0l64BxHLS0kd8zMTul5pCDYGVmqA0eVQeveHXvZ39Hc3JlSSWLaPbb8CMjHPmmq1esStY3Z9fsnBET/6Gr0VRwLWYXMcliXqsSBdrP/LAgtYmHPEJzU71/TrYiZIb84NuLZkuszfk8CklpSZct1r3iQ8xqNuuvBM+QSgKXbGkHqKgIf6qA0bcRO4pO7tKE2MiyqVib0Q8PlTVwh0airwmJC7QisdKsicUqUtV/8QJeYbvVe/ZSS1TUPqjPBnTGPpD7Ydo1fZIId6OBSKGyNpEtIqvWJJ0FrAIzV99wprvnRoz8kUEfdbGvpJ8lt68NO8zt84ukhhW+5YRjONXfYFPs1F4EBOOHSgsgfCdtk8yFraYbfjIVpRWRQSHfYAuBRNFsLAr3sp7v9TPmTZ+aw7riwkW1EYpTzwXv4xc5J72Xuf6yan2jTPJRnOI8QXnHPkt1CyT0FzfN5kSPxCs+BB8IDrn4SyArs1ocCXvVHGEonSQJH3I5GR0U7MT8QgCwFc2qgRh2mSz3clNCusw3x5sZqlU94kcjXZMc/SK2MWUTIZhSWbY60vL2WcJ4xKz+W4O+CFGhoOvF2WnHbs8A9knOSp8yb/QiZXZjIq1JwZA2jcvjFZVuZ1sBbDcr3YuIIB8aVDBL/stb+vn2thHexOHpSVAxALPZ3wnqgj3K2Du0Y4WmyYb5d3TBMcVd2J691tGoSAblg6nHQvrXPy3wiDVydWzg2teqB8FCfID5hlh5SX5VvQVVYfGiawpmfepYGSxGjDqFVWWdOcHR9jadetPg/6xdGSGmeLnIOeeEOq+3N5T2SRLTn1DCCcX+wYRviOV1Fgqv4qdqXytewzcuBiZqgYJQmSktV7WT7Eyx74ezNUDWNADPS9hTpcZzxyVjgF7EP9Y19YSZ19vA8RMl4fjFPkLIOWiLskzD2Nxewg/8ovznn+SBehVzxMgMeMra4P48Ig5XqyhKy3hwphJs99OJCSp0+RUzuoqAlxhKFhL3g3d4I8Y7ir+oo3+qW5fUajwkqm1AABAXJv6GHKQtwptTlrbYyoORdDYr98vxnCcClHtimT5Bnzm+FUvuRlBOjutXt1WmceIfNYJJrjWgvqZhezIZssyzP0tyxbzYcMON8m07JqmvYcViwFGbGpTEpgixKomQqjZ9zK/cdL0p4tQRK4dSBkaROoQmrYE+jfz/W9TyR9c4XfdVXlOuV0qsGc0g6+BEn+29BJiuqSBj9d75mHSMlygEHKSRi89DncBcnARcMyw+ZPaLPRqnfyxQKgWP0AXTza6yelc4uVuoVdzoIqMvnDYm0l9Q3zns/TD34eQkYbRh+d3bqz0+mwtd50NNi0OxmfqxLazXHluuRds+ERdjN5Hj9yyo5k3l0a28cWBM5xndlDVYYVq2l1Bq4R58w9fTqg4zYhV1isQLtuDTdHde2KZ6eKQF5m/R2wpe12QxRcjhhbSX4rcLNeACUWas+Msd4TFNCemy3z7g7vwvEhLQFCeU3EADtIjiiIKbH0YS36rqt54FF7BGTR4bwKNkf6SELfVbvtwiIJKFZLFG3CuXWvrXrINyKDXMIGf7P6AJjdUNu0OZz5Lkc35vTHMuXjX7foHBC8apRbMs9FgqLrs6yCtOCSvR+MRD6e8IN DHw7sESy5DcYE1wnI8CedPfncxQmce9Q7Gr2HhPitMc/AgzsAlr073qGpAAUhSDFGLEmbA2YcHNWlgN7TUqGvPgUE7GRQ9j8x2yirOZdw9ZsknTv57gKmGB4dH5KsxUv1cu2gbHauTL8mOC+0IPvJw== ==== Response ==== HTTP/1.1 200 OK Content-Type: application/soap+xml;charset=UTF-8 Content-Length: 7193 http://example.com/ws/2004/09/policy/Test/EchoRequest http://localhost:9090/axis2/services/sec_echo/echoString 81f26fde-980d-1dc1-27c0-0013ce8f2fc7 81e3ec8e-980d-1dc1-208b-0013ce8f2fc7 2007-11-21T08:41:09.643Z 2007-11-21T08:47:09.643Z bg6I8267h0TUcPYvYE0D6k6+UJQ= I/A7gVAt79AkHoxLN9eWBLXZ3D3zBhjRB/gW+cPaou1XsgEfIqGx863qIZ6n61svkQyCiowy3m6nyblLf8QPM8BOWTGoPtstGfpWNQTyXdYPxtiVdCUqQarO6TLc06TVLYizZhqYJfAGi6OYlNyLYmtbuixNNeekjU9JR4D3Rw8= 0 32 Iztfcuut+/B2NIjIaq0I4g== 0 32 2UUM53Nv7ZCjklDPLSg01A== 0 32 ftQdC8m2eHFdXw63A57epA== 38V6ti3XhZmmX+u9DkO1J/E1ZSUi8zteoh8wCPS/NxOzy3Vnbr5w319D8Nl+SWlipwL61h2CMUoi3EkgPmG9V9a87rx9OsQDPUx5rmvrUGPjuLzdaNc7HJbSqb+uWxC8zOcTYbmx3O2tRzoFyYaxt0boa7LShaf/DqMgLISlxydmcXMCxrS3Ow8j1OypTBu+91T1mucuyU4tHm77Mv77cODBSq9tpt8du0xCuW2Lc3TIzlSQ7sFlDc6ufkJHL7f7ayHTvi+ZncGic4AS+EniuGu3A4Fl4ZALQUa2zF1z6g4MfBIyFKoHZsMVL+6hOOMpea2tDVbZIhDqJuMZ33v/dy1XpP0IFM6ax10HYUWUNZN/pJ0M+UyLynOsvwjlPH02jW70EfumaFZ9S25dTTl6xuGhuxhYHJ1q430KQnM8jLg728zUuXdvNonyhbMjBu44GBv/Qvi2vUWJuX67OtxFI55fAviI6CXmgiKMpfu2h8ciUBKoVNi33dBZhIl0KLjL1gofvfZtB/bxQebPIjtxHcWwxYO0vfYiFpjeRvOFHJ5FwQQEnMu1cTVqNMAWZT1y8JqN7/jtzgdlVpO9B5IKbTIA5LMfW+Sxic3cVZDZ3kDZVCSwJQ1n1zydqEY8XisjxS/z0r0fRRINXTz6z9+6cOk693y/tYKqHPPUqjyyH/pBUV3EE0RowxZWMJN/wr+Ok+hUqMr8Cci69XZWP7eixymEbF0mStBSLVZo/H+4F4mZ0Z2GuCIpz2NxQcXQIVEsB8OyG6x7bD3uOZhE2u0kGEZ1T0QZKREl6YfaBbg3amn3B+laP53U9XeLgtqlqm2GvVpbiUDTKq0KMmjNtp82DOsjkDwx+LM2hIz2/VXwMSk93IIRfa+MA1gMqbSDu5zXiiVCdBUNkfZHUbWV/cCvBwkGSZcfOMfZC612IVLrUWGh0DoOqNFL6E5GdedwOv2ilILDSjCTSEZ1hU2AO5Ji5eBdwa+dT8U9sPNIM2S6L+4zYgE9hd5dxVQ9w/vUPN53lz/ywszakRk+SCQ9yUpWxzrWY+SfptsAZDTSk6lGVv3W1DED84qqaQTmahDTlKYSqD4bK0/VAEKqcGGaSIRpA60BxvJmrxIFcoOHHPtsVdpAkPoEWlV5Ege9DR1oPMPamtBNOIFth4XTq9neUmZvarWpItpKKSe4mEstkoiZqRX85crja3eucpRueXB5r3ttc6dlkH0xo8eLcwjXkhBAo8WIHN6ndkw0lSs6NTD9AmjGfNdeL8dcRYUREDdWbBo/MyECYmj9zz6lvJo3vhNIkj9+VV6SBPZBI4wC6rH6T+Pe30zTRhSDDizWeJFOx1nGyYOM75AJYveNa9DnZuqBy7tSFpwmDUbnF9f66NUlgTWQcnLxVlhQ8R5HujnhHobmgI784wKGi6tH4NEGFpPWMItmGwOV0ZdW3ksuZewaatjszzyyQZCG1rOatSppXdVNeRJhnU31j7YdAE8AwLWal908nGnfh2YOyPXLif8RTd1Lzl7j/feF0CA1dPKnGzVPHx5ko4TUmczI1n7mOIkpZCkDl1fx4DoyeWBTzUl17N8= 1nXeNDJC55n10AgTQxzhVOCYulSnfKdwldPS1j65uX/w/41NBEJ8DUWIa0GehcftarulZuZ3uixmpjzcVeoQBwZYtjEijWDY4K7AGGLBudNkRFshiIaBtkwNUo4eRphDiYy+//91X9qtJ293h7KhKpJBOhV8o8R3+PQt4smwSsGjKbKvsFD4HQT5/hwPRxZ/ ============== rampartc-src-1.3.0/samples/secpolicy/scenario10/services.xml0000644000076500007650000000740011202453430023725 0ustar shankarshankar sec_echo This is a testing service , to test the system is working or not http://example.com/ws/2004/09/policy/Test/EchoRequest Bob 360 b Digest AXIS2C_HOME/samples/lib/rampartc/libpwcb.so AXIS2C_HOME/samples/src/rampartc/data/keys/bhome/alice_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/bhome/bob_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/bhome/bob_key.pem rampartc-src-1.3.0/samples/secpolicy/run_all.sh0000755000076500007650000000063311202453432021412 0ustar shankarshankar#!/bin/bash _SCEN="scenario" _SMPL_DIR="$PWD" _PORT=9090 _SLEEP=2 #You may change these to scenarios u need to run _LST="1 2 3 4 5 6 7 8 9 10 11 12 13 15 16 17 18 19 21 22 23 25 26 27 28" if [ $# -eq 1 ] then _PORT=$1 echo "Using port $1 to start the server" fi for i in $_LST do S_i=$_SCEN$i sh test_scen.sh $S_i $_PORT done #SAML Sample #sh saml.sh killall axis2_http_server echo "DONE" rampartc-src-1.3.0/samples/secpolicy/run_all.bat0000644000076500007650000000051711202453432021544 0ustar shankarshankar@echo off set _SCEN=scenario set _PORT=9090 IF NOT "%1" == "" SET _PORT=%1 echo Using port %_PORT% to start the server for %%i in (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 21 22 23 25 26 27 28) do call test_scen.bat %_SCEN%%%i %_PORT% off taskkill /F /IM axis2_http_server.exe echo DONE pause @echo on rampartc-src-1.3.0/samples/secpolicy/scenario28/0000755000076500007650000000000011202454512021372 5ustar shankarshankarrampartc-src-1.3.0/samples/secpolicy/scenario28/client-policy.xml0000644000076500007650000002474611202453432024704 0ustar shankarshankar Alice 360 a Digest AXIS2C_HOME/samples/lib/rampartc/libpwcb.so AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/bob_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/alice_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/alice_key.pem Alice 360 a Digest AXIS2C_HOME/samples/lib/rampartc/libpwcb.so AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/bob_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/alice_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/alice_key.pem Alice 360 Digest AXIS2C_HOME/samples/lib/rampartc/libpwcb.so rampartc-src-1.3.0/samples/secpolicy/scenario28/services.xml0000644000076500007650000002301111202453432023734 0ustar shankarshankar sec_echo This is a testing service , to test the system is working or not http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/SCT Bob 360 b Digest AXIS2C_HOME/samples/lib/rampartc/libpwcb.so AXIS2C_HOME/samples/src/rampartc/data/keys/bhome/alice_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/bhome/bob_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/bhome/bob_key.pem http://example.com/ws/2004/09/policy/Test/EchoRequest 360 360 Bob Digest AXIS2C_HOME/samples/lib/rampartc/libpwcb.so rampartc-src-1.3.0/samples/secpolicy/scenario5/0000755000076500007650000000000011202454512021305 5ustar shankarshankarrampartc-src-1.3.0/samples/secpolicy/scenario5/tcpmon-trace5.txt0000644000076500007650000003557611202453427024553 0ustar shankarshankar ============== Listen Port: 9090 Target Host: 127.0.0.1 Target Port: 8080 ==== Request ==== POST /axis2/services/sec_echo/echoString HTTP/1.1 User-Agent: Axis2/C Content-Length: 8652 Content-Type: application/soap+xml;charset=UTF-8 Host: 127.0.0.1:9090 http://localhost:9090/axis2/services/sec_echo/echoString http://example.com/ws/2004/09/policy/Test/EchoRequest e82f3acc-8dcf-1dc1-3725-0013ce8f2fc7 MIIDDDCCAfSgAwIBAgIQM6YEf7FVYx/tZyEXgVComTANBgkqhkiG9w0BAQUFADAwMQ4wDAYDVQQKDAVPQVNJUzEeMBwGA1UEAwwVT0FTSVMgSW50ZXJvcCBUZXN0IENBMB4XDTA1MDMxOTAwMDAwMFoXDTE4MDMxOTIzNTk1OVowQjEOMAwGA1UECgwFT0FTSVMxIDAeBgNVBAsMF09BU0lTIEludGVyb3AgVGVzdCBDZXJ0MQ4wDAYDVQQDDAVBbGljZTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAoqi99By1VYo0aHrkKCNT4DkIgPL/SgahbeKdGhrbu3K2XG7arfD9tqIBIKMfrX4Gp90NJa85AV1yiNsEyvq+mUnMpNcKnLXLOjkTmMCqDYbbkehJlXPnaWLzve+mW0pJdPxtf3rbD4PS/cBQIvtpjmrDAU8VsZKT8DN5Kyz+EZsCAwEAAaOBkzCBkDAJBgNVHRMEAjAAMDMGA1UdHwQsMCowKKImhiRodHRwOi8vaW50ZXJvcC5iYnRlc3QubmV0L2NybC9jYS5jcmwwDgYDVR0PAQH/BAQDAgSwMB0GA1UdDgQWBBQK4l0TUHZ1QV3V2QtlLNDm+PoxiDAfBgNVHSMEGDAWgBTAnSj8wes1oR3WqqqgHBpNwkkPDzANBgkqhkiG9w0BAQUFAAOCAQEABTqpOpvW+6yrLXyUlP2xJbEkohXHI5OWwKWleOb9hlkhWntUalfcFOJAgUyH30TTpHldzx1+vK2LPzhoUFKYHE1IyQvokBN2JjFO64BQukCKnZhldLRPxGhfkTdxQgdf5rCK/wh3xVsZCNTfuMNmlAM6lOAg8QduDah3WFZpEA0s2nwQaCNQTNMjJC8tav1CBr6+E5FAmwPXP7pJxn9Fw9OXRyqbRA4v2y7YpbGkG2GI9UvOHw6SGvf4FRSthMMO35YbpikGsLix3vAsXWWi4rwfVOYzQK0OFPNi9RMCUdSH06m9uLWckiCxjos0FQODZE9l4ATGy9s9hNVwryOJTw== 2007-11-08T07:55:00.743Z 2007-11-08T08:01:00.743Z Alice my1lzTJs+LBRFaFnsHzl9ZQb3Us= HTgnQbZg240UiOaqYMJvnX07z2YrmFXJ 2007-11-08T07:55:00.744Z Xeg55vRyK3ZhAEhEf+YT0z986L0= VOd9ZfofSqVGkFEoFlD5wiQ8dMVMBjWK9yBl0mfDJD1yC/6i3fJRhHVEH4PcsWcGGXPhN1gYXF/03EWZECNFHWdvK8nltjHS/Gg4eqrXvpzSNNB2JgJPS8I6paCZfLTGH3w+7PYz2JPQjFkAdsr6x2ale7X7Zj8pIQtKnyXp9Ls= +Jxyf5gdd7pOx+I33yeB0VC96uUOuE+mGJ3d2luktXG011B30MglOcPViEldF1ABZvwecoryVEYRwtqdRPORg5IbDpxgzudFPRsGkCs+aXrAKrhtRoUK0ChTeQNZJBI4sok2y8foBzXRZKo5zekMOztfTpQKQosCKVipPKN+FIkCIcKYECArOhVHl+VRNnewAcdmyTsZg6wlwtaSGy9ZDRaHtLqzSwjKMpUBmt/wKDNOLFSBpd3gTay1vAFQe0UKEcuCqLjnO4zDc+caEc1MFutPDwZZRgveFQWfo6N9jyzasMljHzLFB6xsyBs+6wbM2yXORWVf7v6XEshaBxnEXbc0wHafhF7NOAPtbia9dNr1F9/pNa53n8WdyjibCc9hF9HPVkuU6bjo/t80JA2tvNeImDFxzUQA5lv1IwZDsakl/SLgqK4PUwR/GgNVgzdym4Ym3l3YK4aMb6/XUmxMTs+iRoyQvIwHVTjmwNVyPtiGRBS2W8zBM1UVHgP5sZczIpohBoVT0uDxUXQCGGtlWNHy/DSzJn8g2IJgAErGFA1DJgCl6RaCSzkFFDnSKrct09i7FG9ZXsJQrPrR61Uz+olnWEGtyKdNkhsNboMOnjBU50WSr2sBJDATHB0VlHyQ0apFbYyIYS22C+zFyCUQrGDv6TtSp73uiFYzTKkWoutLBXECIXyR3koIzzBZhWjE3IYfFo28l+N+1Hg9SbDxgJFslRCQDjFT2qmJNoGPvyhUzm5gHLLeMIbsP53rXtU1VI+ZduCpvQnEZzsPY53rApOdOmsWA3Pu8k2ECxRmcdYc69X5oyEGGgUGQtWfh0z/lKR9R74+n+FKA3Ef0DkW8F3G4IMkZ7NAZKo/dKaoYl5IsCu3phx5tV9fyQPe+2KhWs3+Yh73qHfxqLM+z0rmm0pUYygLBSXI4yahhjGl2BscLNCianeqPhGqS6BYOOqkZZUTtSk6ALOw6pFJiNrBrNpzICFoO8C0bxKLG8VtdxiiQ1J83XgrSnK7hyrhB1Rdlp3SaC4TU4tkC+L/0OGZVk9v3njsEhQMnJcYUd7fkM7sT7fVmdark7hIWi7+hV37ItuheYbG7gptEUgKVC+axQ7RsseWldagdjVvBkqJ7J5C+pEhmywDQNz8XLVH6OFv9gM4GRhEd0UENtzP95tcpArKG71eWyrv808Ic+JlwEaXK0CBWMAcQT2ymN7+CuX1MAs0VJjvb2O4R0qnrsZZxcRB2sJFC170qCtO4YTVOXbieFOTmTA0FktjhNqk7OxgRQnuXv4/l2cHkJ1groWs/IPBKYJKpUtbkqJlZ4DfmTelZFBGidqu7H0FYtVPH5fSc19iiQ3jkB5ZA5JrSZXi177AXlOQOtC+5zoZZ5gMyzBXzxVmWxYZBVMxa2NxnWG9FNenxnfzeHkcNRJF55FNb8hgvDRGzn7LBlj3AhvhmMb9Jjf0YU60iLBqKHPOvy2PyMb2ETThZPdGGa+TJCs3qVVV1cNcVfcTQug4/aoC6XwedGlsA5yB/jZRWsBPFV3E+LewJEfRTxZet5TI9XU8mUbp9hcZXKVSUyeKiGOVdhFJ4EfN05naer7qj7TD6Uoix/8cUeX2N3Xuz3IcPeo2MEaWMcpZ170RI4LhK0ODjYWL1O8UQF8b+DcCutMGrOKwBjHemIG7njuNA09GXWoS+8sL5BqK847vnJbCx/0IZsVeWPHMCsAIgdTv+eO/izwYdQBDYyQlpI8jZsm+vT9dDPcpXUYzOCDGQ2npqwQNhUOV4KPlWy9EEvZmC2aArERzDMalp79Abf9PDGu5Qq8Ti93D6Eatdr21G/1LtfUjZYMOxYQCt/mAfM6z/FWVsJNhqTdvpo0TFOe24hB35j7/cQinnNyMchpiXGSZjeIaZMt52m9cuEAe2Yo3j6qo0WytkZtfldDyVgvTjZVnErTiLwrZmV+vqrdoY9nxjN9wHx8xmEpF/Ft/QhiPKny8CDZDjwBwaCsPFHK9FfmSKRHafXN4TPly9+zRNiGhl2EK7G3C1ZhQZfxUjiWM7JUZUb30DHXvUUtzM6zk/5smzoosq8aNksZCoF4DrZA+cktxKjDGmkEcvp4WCy0txaD/7E4Bc0KZ+9uKAM/UDVmCHvUKaUf4eZIP7ST+tUQTgmLLBSYo5aQqZ8d0ODwRGzazgODm/yhM+pVeKbi/ckhy7taCNJA8Sba7F+8Ki6Ih9E5hkJ+OyBWrZeYHx+kb79N61t8yKgLEMgMO4d+2hASDPFvCXMYwT5hMKgiWlEJu1V2vqP0PPrRlFnizNjyiIIRFeDY5B5HSmnxeLaA2vNiS2vwDyuzjk4RLfsukW6EyJdGKMTWJnggTs2QDGCAKPxtdLiIw0+zaSNCq1R8fg3ZPajHZ6qDI17gT+enJ8GA4gZMd+2vl4IlSzK7pwVcTrhbMvudazlCYLtK3L3tSq3QNytNXql5XG1niz6rcoZkh0ozLY1THWhQdUSKhOfzyYAldExQJTiYakXm6e23DQPF6RDk/9jrECHkmmvQtqENOEXw7y2UQAzyJZpY67M6yRSdTAuY5wV2HQIBmVmDs+ratS5Waty4qCr9NhQpX4ZYZD0GQEFPKvKz1kNEvlYCnU1I0fAbgiqr8q/HMM66aiqMCB4Y7wq+a1OInA7MeyplddwoYkwY+P2Etu86i731hcaicipFwOoZGcWZNsftBpVC89LnXQBv4/Ie2EWXtEPOBMmJuSkLu5hLRgkBxnJT7Q8XzEja24xitS0/aKX7lvyACUZeekM0BNvf0wuyDM3ocNIs7hqI4kgyfZyiaEa8n9fFxeXuhLLkprd0s8pLdCD5ClWBpSlT+6/+RQNShjFkQhADiE/FBIcnzMyoLlrDe4Y8YiVNsnm9MR2flkOUWahtGYQJoU5GIZtjQgC8ewX7ZhZkXoC5YkJyMSbqlw4eT+PE3ukTfl/m9u1ePk45IVB5VHXVitj1NzBOxB4eJ3v03jVq2PEjGaDoUu3MrTtnQigCh+mUmcw9DW9yqVd9nEZOPZzmd8pkiP60RlsfPK92mqgeqMfg8IlQjaaA7WGKDARIAG80M25oZ1Vyc96Q+ig4ml39x09b5BiltPGMqYUf7GZ2s96kXLFctmGAl3yhenZkVzhT583BaGo+Hnyqs731sVSXrwWXMs0GnJdTqUKS2cG1fRIgByGmR92aPaHAz5CsTlQ55iM8R0oI/kMq+Ex+3BPaZFXZTue6HnouFuBZeGbhtmvAnJ0Gz8bsVinL5VfFIet+KqULPTo+ypxlxrlxObp4+5Xig6n5j5/dEpQEPADGP2W29cbK2omRFdZCE83v8miw6IhdGHO4lVVIris668kapQX1MgJduoKEWJbomNJvTN0zI26UZx6EVGMsrWAPxcFrIH8g7N8Lorryg+zPBvhzIrlBsDbotEfw3IvPUxFCCRa6f8oCLu7HMIEHK2mAxgdtG P0Rp2R2ZKH7MFmucX8fkWjQbEYZO904U50KoVOvqftiXn8PN+Zh1BUjdMRFozcRpArWqb1LY1fcGq1R5XXzCSGdKvbyWCBsMUlXDOwvv0WSF2fAFZpia8qXHlLyLiaXugxn4BSkmO2k8m/5ft5fl8A== ==== Response ==== HTTP/1.1 200 OK Content-Type: application/soap+xml;charset=UTF-8 Content-Length: 5208 http://example.com/ws/2004/09/policy/Test/EchoRequest http://localhost:9090/axis2/services/sec_echo/echoString e8407b70-8dcf-1dc1-3986-0013ce8f2fc7 e82f3acc-8dcf-1dc1-3725-0013ce8f2fc7 2007-11-08T07:55:00.857Z 2007-11-08T08:01:00.857Z CuJdE1B2dUFd1dkLZSzQ5vj6MYg= ZaSwcOY8mo2wLdWaBQOwdIV50UE5kkOI44Kccm3awm7nKoHxjbqAFt18OVnPbj8ZAQpjrjTmzz0j1VhZGR+heLsT7Hof5SzdH4o05bfrZEO94z0ZvqtXXW9zdFmOKLOxqfpd9i5m4NfLgQWlbYFF3KD0KyithJgjCJQSbeetP7s= jY2ve/NqrX4lFQBr2l83FoAq+StQfqWbjY6ut90zEFGOTlhGOu704U2CACVsINR6D5i7rwFJb4eK6+eKEkLx3DTzwqb+HapFn+6WPQdRKSb2HXArbz9gMEoeDy2UHBV1FccmS31p2rVLV51lJ+WyXwYGbkmizocxHHn/mg9n9r9QA+iF2iu/hPaVmdxfu3tkUvNOnvJ2XH3UEmZ0xkWCNW4tYZ+ueVD1WivHIJ8CX219+HpSXWNE3W6hMnW33u1LZkV/T3kITyVNB9+AYRFtGg367m0c9mhJ5i3bvmKA5WNN0t6LPaE3qJVFd7N7YPMpoD9o4Z3Xa3/q42ZGeicDgMCHGYHEafFtsnFl+fdYvz7/Lo4TKvBJXdsZ8ys91E5YRwK+ryyLYyn3PQiKFr7r06KXLHXyXzKZiTKiuKRlkJjcbloUqCalWAkIhfLa8/1mrmNy4oapIyUHgTo7OkWZX2P8Q/1ek6VUQVc77AHPSq3s8xnC0JPc7sz/fB2M33bMi7seLVK/MMjhrM71us7M4X+DXRmtP616tFXJLxhEQnq6wc4U8/8totd89VFNkj7rTcGh/cT71TOnL8rHocj+XL2YV6JUN/FQHXRXnQcHiB7x+aKmAzzXJZwQ0v2V7MA0HU1gbaDUhXHLwCVCf7j4ylvI50pYfPEJmXf2pQGEPaMl5pbnRJNkBNUbQodB8gkyLUqW5eqMNUyr8To2kzbo+r6TCuo6g4abslPfF4pszlGGyggv3qxlbmSxc+4g0sbMuugo1y8IM/HKTkm+q0VyLdF4mC5nrniFMJeX7vzE/gN0ZgOsuqQJai9OZho61Ciizju463Z9fdg4DDIisaBCXWjql1e7JLWmq4cnf7z5i45Naq1rNnEcWZuXa/oLV/u67I50WcobjOA6uI62hA1DDkAs5L+uDOzsWMFUqOfuTrckhKVxxbfN3BXgNEbf3vTlqWiiD4D9v04BHsjdkEB2tUxl/XT26zH44TswUgTqRU2L3FvGTEtssKkFsxgm1CdhzoI77GJ+R6T5BB4FuPK81vr62wHmgbEhQj8ap63hrwyFV/V5jgiK4IXHrp63troLZ8P1aAk5CjECNm5gt5ypMH0kaN7q4ZmDmyoVFA58nOHDUSQhzNTy2yvlEksth3JymL0MRjs0DnR5imOHLFIiIVkcdUCZTzyFZU6isI5x0vWRYovflL0NrjgErVBByUA//zinJ4jnZjy/6RNmaTWNWh+DZxPN+79c+Uqy2ChNIaPcnvxkJ0CRiNZ/KQH2+94G0srQF4uHV5HXN39nnFUaM9jXmmGoYyjCbNiVwYvQpzNPPwTuvdKO0YDcakBlR+QMCPcsym6+1mR0DXvxvGkV317JoAqCsYlKeebCIWDP6/+BXUGOEgvQF09YJz928TCM2/GZSg8YhgVQB7Xcv0GhtmhB/B5kSdKApMiA+Bex3uYZw3zrOZn8aDs3cJ9q+66Jwq7XJh2cHjf8CtsFRp7eJaWFOOpXZrtFDAjUNEEehnKBDoNtPp+azaDoT5c2mveNqFVLIiz71CmDNpH+sQA7w54e+PqCT202YGlJvNdbptrGjq9SL8ysavXIUL1+jdohRd+diI8S2zzouIHXGZeKn4U72+Yfrch7chx0kDOoQSOA9c2RWjKNRh5z2zHJtxcyzry9KH5SyKpZJdsO3/+pI70cqfdHQeK0IMxaADVQCEtuCumbvhPNLd/vD/nH9gUkPAptLyJ+S3zyQslkFHIqgB6SxGJzWie2cElvGUESA1DDTVfKTVeP4NtSSAFOIXn4ZSKCMDaPlxsz3A8W6609Lq/UyElkOQLNr+KzgoZtgNwfEN5VZPoTdZCYZBDQYD90T4XX4VWA6uBvFnYi+jwuBS1v0T81rVnVQEleQo8Ubaf3LydA2ZnvmxftHvHXZKWsXuhIacVR9tc+zXkeSpOrkOHkEOmJZmC8lJPn2+8muaPGLpsvlHJbe4YUWEuO06WWdng5J2qChmXsR7JoZ8Zbwc91xpdjbmQYHm3QLc+u86Ea2Z4eZOmnuehOv7wUUFRPXwhljJf+TqeJ8FGmNG93xdmNtu/OZpBqBLdJlV6RC8KnYRrkPwBdapWWA93N3iag dkq1EUHgg3nFHMlQOPDEMyHASaa4+w7uiX6vhzmFSLPaKT+u3zRLy4oI/ey1eODopxauRIa/OMJcQTkZI7qazi8upZ/XTVmaHixsGLrDu8nLerCuWRUeJdlxpP5f42hB5oQYwrUxTFH+UY3uXGIGZUkbNX35DNscSbZP2zIrEnUF2Zz0PY6fdZ0U8FI8nKHb ============== rampartc-src-1.3.0/samples/secpolicy/scenario5/client-policy.xml0000644000076500007650000000723211202453427024612 0ustar shankarshankar Alice 360 a Digest AXIS2C_HOME/samples/lib/rampartc/libpwcb.so AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/bob_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/alice_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/alice_key.pem rampartc-src-1.3.0/samples/secpolicy/scenario5/services.xml0000644000076500007650000001036411202453427023662 0ustar shankarshankar sec_echo This is a testing service , to test the system is working or not http://example.com/ws/2004/09/policy/Test/EchoRequest Bob 360 b Digest AXIS2C_HOME/samples/lib/rampartc/libpwcb.so AXIS2C_HOME/samples/src/rampartc/data/keys/bhome/alice_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/bhome/bob_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/bhome/bob_key.pem rampartc-src-1.3.0/samples/secpolicy/scenario27/0000755000076500007650000000000011202454512021371 5ustar shankarshankarrampartc-src-1.3.0/samples/secpolicy/scenario27/client-policy.xml0000644000076500007650000001546411202453432024700 0ustar shankarshankar 360 360 Alice 360 Digest AXIS2C_HOME/samples/lib/rampartc/libpwcb.so rampartc-src-1.3.0/samples/secpolicy/scenario27/services.xml0000644000076500007650000000560311202453432023742 0ustar shankarshankar sec_echo This is a testing service , to test the system is working or not http://example.com/ws/2004/09/policy/Test/EchoRequest Bob Digest AXIS2C_HOME/samples/lib/rampartc/libpwcb.so rampartc-src-1.3.0/samples/secpolicy/scenario17/0000755000076500007650000000000011202454512021370 5ustar shankarshankarrampartc-src-1.3.0/samples/secpolicy/scenario17/client-policy.xml0000644000076500007650000001126411202453431024670 0ustar shankarshankar http://localhost:9090/axis2/services/secconv_echo/RequestSecurityToken 360 Alice 360 Digest AXIS2C_HOME/samples/lib/rampartc/libpwcb.so AXIS2C_HOME/samples/lib/rampartc/libsctprovider_hashdb.so rampartc-src-1.3.0/samples/secpolicy/scenario17/services.xml0000644000076500007650000001153711202453431023743 0ustar shankarshankar sec_echo This is a testing service , to test the system is working or not http://example.com/ws/2004/09/policy/Test/EchoRequest http://localhost:9090/axis2/services/secconv_echo/RequestSecurityToken 360 Bob Digest AXIS2C_HOME/samples/lib/rampartc/libpwcb.so AXIS2C_HOME/samples/lib/rampartc/libsctprovider_hashdb.so rampartc-src-1.3.0/samples/secpolicy/scenario20/0000755000076500007650000000000011202454512021362 5ustar shankarshankarrampartc-src-1.3.0/samples/secpolicy/scenario20/sts-services.xml0000644000076500007650000000656011202453431024544 0ustar shankarshankar saml_sts This is a testing service , to test the system is working or not http://example.com/ws/2004/09/policy/Test/EchoRequest AXIS2C_HOME/bin/samples/rampart/callback/libpwcb.so AXIS2C_HOME/bin/samples/rampart/keys/bhome/bob_cert.cert AXIS2C_HOME/bin/samples/rampart/keys/bhome/bob_key.pem rampartc-src-1.3.0/samples/secpolicy/scenario20/sts-client-policy.xml0000644000076500007650000000560011202453431025466 0ustar shankarshankar Digest AXIS2C_HOME/bin/samples/rampart/callback/libpwcb.so AXIS2C_HOME/bin/samples/rampart/keys/ahome/bob_cert.cert AXIS2C_HOME/bin/samples/rampart/keys/ahome/alice_cert.cert AXIS2C_HOME/bin/samples/rampart/keys/ahome/alice_key.pem rampartc-src-1.3.0/samples/secpolicy/scenario20/client-policy.xml0000644000076500007650000000611011202453431024654 0ustar shankarshankar oasis:names:tc:SAML:1.0:assertion http://schemas.xmlsoap.org/ws/2005/02/trust/Issue Digest AXIS2C_HOME/samples/lib/rampartc/libpwcb.so AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/bob_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/alice_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/alice_key.pem rampartc-src-1.3.0/samples/secpolicy/scenario20/services.xml0000644000076500007650000000661611202453431023737 0ustar shankarshankar sec_echo This is a testing service , to test the system is working or not http://example.com/ws/2004/09/policy/Test/EchoRequest oasis:names:tc:SAML:1.0:assertion http://schemas.xmlsoap.org/ws/2005/02/trust/Issue AXIS2C_HOME/samples/lib/rampartc/libpwcb.so AXIS2C_HOME/samples/src/rampartc/data/keys/bhome/bob_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/bhome/bob_key.pem rampartc-src-1.3.0/samples/secpolicy/deploy.bat0000644000076500007650000000054411202453432021404 0ustar shankarshankar@echo off ::Here we have scenario 5 as the default SET scn=scenario5 IF NOT "%1" == "" SET scn=%1 echo Deploying %scn% echo Copying %scn%\client policy file deploy.js %scn%\client-policy.xml %AXIS2C_HOME%\client_repo\policy.xml echo Copying %scn%\services.xml deploy.js %scn%\services.xml %AXIS2C_HOME%\services\sec_echo\services.xml @echo on rampartc-src-1.3.0/samples/secpolicy/deploy.sh0000644000076500007650000000160711202453432021251 0ustar shankarshankar#!/bin/bash if [ $# -ne 1 ] then echo "Usage : $0 scenarioX" exit fi INST_DIR=$AXIS2C_HOME CLIENT_REPO="$INST_DIR/client_repo/" SERVICE_HOME="$INST_DIR/services/sec_echo" echo "Copying server's axis2.xml to " $AXIS2C_HOME cp ../data/server_axis2.xml $AXIS2C_HOME/axis2.xml #COPYING THE RELEVENT POLICY FILES TO CLIENT AND SERVER echo "Replacing settings in policy files." if [ `uname -s` = Darwin ] then sed -e 's,AXIS2C_HOME,'$INST_DIR',g' -e 's,\.so,\.dylib,g' $1/client-policy.xml > $CLIENT_REPO/policy.xml else sed 's,AXIS2C_HOME,'$INST_DIR',g' $1/client-policy.xml > $CLIENT_REPO/policy.xml fi echo "Replacing settings in Configuration files." if [ `uname -s` = Darwin ] then sed -e 's,AXIS2C_HOME,'$INST_DIR',g' -e 's,\.so,\.dylib,g' $1/services.xml > $SERVICE_HOME/services.xml else sed 's,AXIS2C_HOME,'$INST_DIR',g' $1/services.xml > $SERVICE_HOME/services.xml fi rampartc-src-1.3.0/samples/secpolicy/saml.sh0000644000076500007650000000261711202453432020713 0ustar shankarshankar#!/bin/bash _SAML="20" _SCEN="scenario" _SMPL_DIR="$PWD" _PORT=9090 _SLEEP=3 INST_DIR=$AXIS2C_HOME CLIENT_REPO="$INST_DIR/client_repo/" SERVICE_HOME="$INST_DIR/services" echo "------------------------------------------------------------------------------" echo ">Deploying $_SCEN$_SAML" echo "------------------------------------------------------------------------------" sh deploy.sh $_SCEN$_SAML echo "Replacing settings in policy files." if [ `uname -s` = Darwin ] then sed -e 's,AXIS2C_HOME,'$INST_DIR',g' -e 's,\.so,\.dylib,g' $_SCEN$_SAML/sts-client-policy.xml > $CLIENT_REPO/sts_policy.xml else sed 's,AXIS2C_HOME,'$INST_DIR',g' $_SCEN$_SAML/sts-client-policy.xml > $CLIENT_REPO/sts_policy.xml fi echo "Replacing settings in Configuration files." if [ `uname -s` = Darwin ] then sed -e 's,AXIS2C_HOME,'$INST_DIR',g' -e 's,\.so,\.dylib,g' $_SCEN$_SAML/sts-services.xml > $SERVICE_HOME/saml_sts/services.xml else sed 's,AXIS2C_HOME,'$INST_DIR',g' $_SCEN$_SAML/sts-services.xml > $SERVICE_HOME/saml_sts/services.xml fi echo ">Killing server" killall axis2_http_server echo "Sleeping for $_SLEEP seconds" sleep $_SLEEP echo ">Go to $AXIS2CHOME" cd $AXIS2C_HOME/bin echo ">Start server @ $_PORT" ./axis2_http_server -p$_PORT & echo ">Go to client directory" cd $_SMPL_DIR/../client/issued_token echo ">Run the sample" sh update_n_run.sh echo ">Jump back to samples dir : $_SMPL_DIR" cd $_SMPL_DIR rampartc-src-1.3.0/samples/secpolicy/scenario9/0000755000076500007650000000000011202454512021311 5ustar shankarshankarrampartc-src-1.3.0/samples/secpolicy/scenario9/client-policy.xml0000644000076500007650000000642411202453427024620 0ustar shankarshankar Alice 360 Digest AXIS2C_HOME/samples/lib/rampartc/libpwcb.so AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/bob_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/alice_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/alice_key.pem rampartc-src-1.3.0/samples/secpolicy/scenario9/tcpmon-trace9.txt0000644000076500007650000003042111202453427024543 0ustar shankarshankar ============== Listen Port: 9090 Target Host: 127.0.0.1 Target Port: 8080 ==== Request ==== POST /axis2/services/sec_echo/echoString HTTP/1.1 User-Agent: Axis2/C Content-Length: 5881 Content-Type: application/soap+xml;charset=UTF-8 Host: 127.0.0.1:9090 http://localhost:9090/axis2/services/sec_echo/echoString http://example.com/ws/2004/09/policy/Test/EchoRequest 733f4b06-980d-1dc1-27fb-0013ce8f2fc7 2007-11-21T08:40:44.980Z 2007-11-21T08:46:44.980Z Alice eezg/4tMxIXfnhZSAcZH5LxAsF8= FrTfS3PG+OYZ9T1fMQjiBw0A6mI2y4un 2007-11-21T08:40:44.980Z NQM0IBvuplAtETQvk+6gn8C13wE= aYBZb/w+IIWDtWvJUh9AxT4OrQdQ9o6ZvByMmM+g9cjy0gVo6mAGbZt9Hw6GmTjxJO7KdW4EyZngoVCfoHfX47BnoVdDuhhiy5GIDWnStxBTPuMOvXOlhQBkrhn7vLg7CPKvg90AXF2+CQAwNJ/n9q1Z2dbnU0s8iM0L2sSJG84= 0 32 OaLLJCBxErVG1Ydw7/6DRw== AIrCyycuX7MB7mpXNzlQAjz3c7Q= 5Oow0QQ4Wt8b3Y3MySuCZR9PzCo= dMbHsxfv4m1PoOVT7nvo5+B1XQk= iuvW8Z3CFOdRxCIfDo6c+9w4naM= s+6cL8yz6v1B5QyWn3h7yrZHHPo= CwHpj2OHt5sSAecalVwVFHsZE3I= Mb8/Q6rO0GxYDbtmf2d9zX8iVUA= Hello ==== Response ==== HTTP/1.1 200 OK Content-Type: application/soap+xml;charset=UTF-8 Content-Length: 4051 http://example.com/ws/2004/09/policy/Test/EchoRequest http://localhost:9090/axis2/services/sec_echo/echoString 734d10ba-980d-1dc1-3ebf-0013ce8f2fc7 733f4b06-980d-1dc1-27fb-0013ce8f2fc7 2007-11-21T08:40:45.071Z 2007-11-21T08:46:45.071Z bg6I8267h0TUcPYvYE0D6k6+UJQ= b2I5pzNQTJ/pDHXySSycL3h0sHFll1AU5DWQyIuL8B5g92HNbCOES+T+nIKyG5RPn0Htntk/PqMeWtxaTC//NRkGqKOEadU56Q00Awp8+P2hjjn8UY0aIB8x0Es1sjgNM4bQ899/kSf3ODhNncLCLii8kzpKanhX0di/K1foOEo= 0 32 Uu/imeYvlL5wpp0GrhJJZg== SZSp0Q8GgOkeu/+rc1R9tB13ehE= r8yhUGoyEFEsOeZE09qO4yEFPLE= dL5qg3xPzlHYmASkOs+kO+Wx/JI= echoIn ============== rampartc-src-1.3.0/samples/secpolicy/scenario9/services.xml0000644000076500007650000000674611202453427023677 0ustar shankarshankar sec_echo This is a testing service , to test the system is working or not http://example.com/ws/2004/09/policy/Test/EchoRequest Bob 360 Digest AXIS2C_HOME/samples/lib/rampartc/libpwcb.so AXIS2C_HOME/samples/src/rampartc/data/keys/bhome/alice_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/bhome/bob_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/bhome/bob_key.pem rampartc-src-1.3.0/samples/secpolicy/scenario9/sym_sig_enc/0000755000076500007650000000000011202454512023610 5ustar shankarshankarrampartc-src-1.3.0/samples/secpolicy/scenario9/sym_sig_enc/client-policy.xml0000644000076500007650000000674511202453427027125 0ustar shankarshankar Alice 360 a Digest AXIS2C_HOME/bin/samples/rampart/callback/libpwcb.so AXIS2C_HOME/bin/samples/rampart/keys/ahome/bob_cert.cert AXIS2C_HOME/bin/samples/rampart/keys/ahome/alice_cert.cert AXIS2C_HOME/bin/samples/rampart/keys/ahome/alice_key.pem rampartc-src-1.3.0/samples/secpolicy/scenario9/sym_sig_enc/services.xml0000644000076500007650000000730711202453427026170 0ustar shankarshankar sec_echo This is a testing service , to test the system is working or not http://example.com/ws/2004/09/policy/Test/EchoRequest Bob 360 b Digest AXIS2C_HOME/bin/samples/rampart/callback/libpwcb.so AXIS2C_HOME/bin/samples/rampart/keys/bhome/alice_cert.cert AXIS2C_HOME/bin/samples/rampart/keys/bhome/bob_cert.cert AXIS2C_HOME/bin/samples/rampart/keys/bhome/bob_key.pem rampartc-src-1.3.0/samples/secpolicy/scenario13/0000755000076500007650000000000011202454512021364 5ustar shankarshankarrampartc-src-1.3.0/samples/secpolicy/scenario13/tcpmon-trace13.txt0000644000076500007650000004466211202453430024677 0ustar shankarshankar ============== Listen Port: 9090 Target Host: 127.0.0.1 Target Port: 8080 ==== Request ==== POST /axis2/services/sec_echo/echoString HTTP/1.1 User-Agent: Axis2/C Content-Length: 9410 Content-Type: application/soap+xml;charset=UTF-8 Host: 127.0.0.1:9090 http://localhost:9090/axis2/services/sec_echo/echoString http://example.com/ws/2004/09/policy/Test/EchoRequest af4dbcea-980d-1dc1-2a52-0013ce8f2fc7 2007-11-21T08:42:25.738Z 2007-11-21T08:48:25.738Z Alice y4yi17MbbHOodmewIBmy9XUy7y4= 0hJCqTv3qvc9YdgEYPzlCeQLxU2Qe+uI 2007-11-21T08:42:25.738Z NQM0IBvuplAtETQvk+6gn8C13wE= k3ZHhUwedU7GvVFGeZY6mfs8kNzxI1UjQayfPLA6xMAFkbEs/s/dYkz034rTPATF6RVKW9rHB68sq9st3EsoY0xH/VGL7oThYBjaKuAHrAFYwXRrzSARJn5xIP4ugfr+iBUTdlOu9DnyQhFIcz5JE2hlb0DCgq1RV43hDjJyZHw= 0 32 MRT0fr/s9l8VX2W29yNyPQ== 0 32 JiVQPVi+ZLTup4FXj+09nQ== 0 32 Boh4PrB9KV+W2jRru5Vd0g== zc9YC3+/QTz7k/K1sft4dQPkhYuFn4SncKvOK+E99q27HaMjhqnujvbhiGSri4bguvZr0U4M33KU84RI17cJfKy2iV2bC0Xefd43oen9oI5dUvMNN0PVGo4Rwna1BZF2B8QuufFZDhnqFCFcNZqRhCcEmdfJSCyg0i6/9AH6OCFNX254XKhKbpz3+9j3mE4PZreG1DGABLHV65zbBU/C6EmI2olfNRJf7G1EIn9KMzsePoGax3Hbyp9XWCJaCiHWRuFq8g8ZX4QungZ2Dhh58CKGQSKSfOw5598/3CysfUVVSxVuu7nPNWGpIaxiwC3dX+aTj5Xxc6sqK+E8Ub6lGgzpPpLByvOY1q8jXqu3EX9g1gmdaRpzmdnyRMGE0dmwIKSzdGOjrj5JMNoPFiNDume6ZxxDX2SkoalgcwiOnX05xq8vDgaQYvXdXuwIrwCgFIDbjErxywbVpvpYkdPC08gGLjsHhLUzN+kzcOzzCE3zNNq+WbaMJxNK47LcsLVL4WzTJL25Fs4bEaUfzaDUxyXouckytQHNsFKZSniHUpjjvfSKRr4OBhWPC9GLHs4nTmByEeSylI2XFaoAPehXkPJC/Z4Chgm2RNjSi/SmGfgBa0SnzN2FxkHAiWaqCnhbL3utllLJ6IuvUf8eDwEemySBv/GnjT3lrEmie0is575J17SpEh1ukqEkJFvKBeaEp6DmOFsJSiDNpR4u7JQC4rV+VY5zguHSXaPS9L3Sv96DOWNsqsic5bm761y7dIlBhfjcnkDOhbsgnJGAO/4XcA5Cv+TLPMZZN0oxSbch189tJmEeI7LSZCC94CQcps1hQC7OkKWZ86HwntzwtWngQfwA2ImO8bahY/NDHS9n1eiWGLNyyY7+yp7DULbBFOU9uC/pUJFHRDO5tCDbPE8FDiCh2D3Mv6luDMsvW/DdpN5M23ebTwg7NQXQlqbmMeyVmAUZtHYGdMNXn1Or3847FaBBAa8DJQF2+GZgXD7d9aUQSLchGU7V4+jgacLJIIFPoKAWxO0z3yusRwSXF9JVHB4xdtDOYA272plK5gx6nowd4USJ+TyLcVhifmPubCwQmjkild8cZ9qjxZ4A0JEPfizM8BtlQjXsisB5duG+mDao0AkrVnQm6/2FlaKx86xvngYERJgh5fLUdH3U5rDvXxzm4ZkZVgbTg6vyI9L4jFzV3j5sDKgT+ZgW4G4J4Ga7NouFZ4MhmQG2TMlYtW12lE80ix0jJ6MgofHalimxWPcAZv5bGmJZFDZtxkwrkGDYa8q9gj6VXHEW8Ibc3iKo5aukhyYIZgAeU5AV1kZ2mwI57Bvhu4jpIGyirBARkBdr49iVeR2gP4UkAVHKiemOWnDGToUhoeaMjrxn27DOk23r/4vDfSar2D+ISH/UzIZKdsgfrS05LvH0nnfhVs6G44zbgOZ8MG/0k8vVeAuMekJXudMREYdnlLaZue+VEBgXnVtNA+9EwUGfAPXQRkCQ+c/J90xtL/y7v0H6/c7N0Zme6Oj433eeZD0KzQqZTIGYziv+c6DzqiUu/QffJ+DChFqBg5STeAgqQCMxwpnO9Wxb8dlWMAAMDq6FY6AtDwU1q8LluKeCttK8uUwgLuprOzxVR8HjX36dt0rjfMB0XdH7I4hcS6jJgA3OdaP6anQ6/BMl1n7BbIEywLrEaPpH+iKzTjFpY4AvpHYEAFVIhcrVHCVV29Wzb3buZ2fB8U4+IzO7L9rj2i9+p9X8WLRkZIFVhAWdiluLv5hjr4OjE+VMjrES92+xy4itXViYKRTjI+5el5QY+osAi6v9dTXZZfQhYq3x0nleFICaIs/VhjDpTPbNp7ZolmbQ/aeyyGiNRj5PGChMcTrr2v4/N0YcTpt2Z1krnnAoXoUba3wNvT78TJDu0D4BrIVfM7D82hnmWXcn1GE+sksGxLaoPThmwdqkeC+SqGRnDbwniLOSopxkC/A+NLOjvRNPA9OIakZQk2LpdQLbtBEKptcwYhoFBq5kdOSN8iFfWMvBof9lFWi2RJgEV6OVA0nZCdEfcEIH5MLOM1gXMSA5pIUBsv96ZIyGecLvEzPkgAugRHy59ErK4LRkyb1TKw81F/7ckY+TbkFeDzB+3w/DQt2TgEmQohTjITvtL8SCrj8FzqWsVj9mK8saas18iSNn76hxUTBI4q6fvugikUvb6FNXXcwTnVgay3Xq5sGpgfAYynikZoCrLJBGXSaTVXfpgROgejwjZKZVF207b0NHJa0GZFVYvh1MDLBO9rabZ4hHcSlb0V9KlrfqqJT/8lg6b5Dgh7up5Plu2JP9btIq/kJdPQYBM1YVSu/8LgZ1gsfGn4BjF5Azlf49144ElgBwvYyiULNRexpn5bog/oesu4UK4p0vmH9jzsGW1PcdDGG48lIljyR+09DcvJhs1g63A/stJINw59sw1SF26XKGU5bydx37MzKc0KH1Gp277PYPB2UCNegwQukIl0dq9NDWd8n2OCJjFxPzOMfeNRoxBSBMzgBnUf0lgzNmIKLE6ay42/hoKkIC2Ef0zKs53JJEqO1HGESqqqpsVoalZ/CMiqTKvep24hkXrwDkPDwRTOrKXeziILks6e3UDsxt/Cowk7+RGIbkQgxKEncU4xJBP1nOJrnpzfqJpF1hzX+1h2CfcrAT/GOThLw6AKTpxsZaY9ZUR1OZvicGxKfr3AqJ0US2a4qiRkzbkAHEysqz5fpacq2ob96Yaonr6oRbD3D6WZ1L0ZDbSUNCkQhVn4X2l89nsZc6jR39y4Pwx5+Zr62QKKF7R7m7DrAXz40V5Z1Hv0/s5Os1nZa9W9x7jcId0WQxbjW8ybuLcXBeWy5mFboj7YphZXxujnw7YmJ+1r9Bi0q487UOfh/qjrCh266NWdSapB6zJA/qAZmjD4Xvgm1pL4u1P/u0kna1OlyaZXF9CG5mTad1Oo2loc/QWUYozSMhyCjHHTvCYijN0cQ95ldu54BoPTG63CSh9SmGLNk2NYFeLsvLq0oUOTrxqc3AOVMGnni1K5Rp3KAi6g3CZY1ZbwSZsRiuhCyvcOWFJco2q8kQPBepH0OxGRdhfbpsEwmYe/N0JqLgx5ehpo7RwhkvN9kx6cO29thH3l6jOxDTrg6Yn2+l 94jgp4pEtBpN8Fb4NXNIjlXfb2N0XEedEJnp/8CztQ6B6lVOVQ/gh6ol70N6GUOyf8Zke1AwOhKIuQCP+Qsuf3d6/ynxmDtVtrP5GVb3ZXfxDzwqVh3KC5gMRKy3HVn98FpfLPnsVAk5aofxcpCfkg== ==== Response ==== HTTP/1.1 200 OK Content-Type: application/soap+xml;charset=UTF-8 Content-Length: 7193 http://example.com/ws/2004/09/policy/Test/EchoRequest http://localhost:9090/axis2/services/sec_echo/echoString af5e1612-980d-1dc1-395c-0013ce8f2fc7 af4dbcea-980d-1dc1-2a52-0013ce8f2fc7 2007-11-21T08:42:25.845Z 2007-11-21T08:48:25.846Z bg6I8267h0TUcPYvYE0D6k6+UJQ= FQz70p3X//WBYirVCHWvYRmF8YP1I+537fbQmnUPc4b7fB1Vr9zGgzhhqr6UY9KjvTV70vlfnSWVjElWFDWIgMgWCiw5ImFuLeV0JnajUU0rSKGKwTAyvhmNofX+W/jrYCIO7EtAKKvJg165DGynK66SxFoMxz9mHESsovPD8KY= 0 32 k8HJANdmMuCMdwj8SiORuA== 0 32 Auh2Zu6U8y6f17XObQlp4Q== 0 32 C8+imM5I87+aPxYKGpvTVQ== zdK04Va4UvqqGbEx+0oHHUYweD7WDv745Xi847wCQYBgx4p+Yh6jnZHGMWQDXmbTbSSnUT9DRwQgoh8AmviMZqES7/UzQeCVcqE/tipCiuRacUPgvTK6SOIgWXMO9bbA5pCXmn2yI7xmfdbLqx2ID16VhmTAzq+VvPlbSEP5p6DIHVD6tAQ002tdj50Vl9XFaoGdCTk7zs/sjjyY+r9RZNlHeqCCIkq/4l1J57e4xzYS1IGSxGS7vB1sGeBljc9GVHqOsPgD43LQoKNzzU4nHJb89MUDlmEjCQZuWcdHmoDSHGad3s1xYZkJm8zBmfghBcxXESszIfjD9fi82MeogE5aqy3L1kflwInpV/fXtb1RWQ71o1nQfmPb5lFr4aG5CTpgio9zmoqClT45f29/LShs6D4KV3UaedtFWhJRVtkL07Zb8zvUI2ByOwq+Vnhc7RfihCUodHB1BO79CZ5I8KGJgwLuYrj1IPO0DKkRCleTJxH3UR0vZv8YgA8FghlrX4r1ZDep4GHSGFH5wBu+IKtC8Os0fue3hp/kovzuXYepgIxBGHSc8AC+/8lWJ3lBkiagSIjPaC+dvFR5uXh31WbSoTQIFFYzzQD5HEDFb45vDViZeuf02UomvaHUJJxU+vbeflp5SMj1Fpc2OnTXosj/GmaX+4qL6lTtG8tSue/t01OZwURCn2WMyK3BkoYMnT/En6+Vz/JsHHKSPIS/ve4i+7oursBbw+9c9eDn1+XX2JzUbjHj6faIgCUl0F7CLUFqjA+XJW/c+Nm2EAyWdunx8RXgMnPVGZ6D9I22DMX2KNCoDWzEHzI0m9cPQ6yYgf1b54dDUTCJ6ptrGVjPkFCVD6nGC3umeckbpaK4uFGs6T4KIp85nzsu2nW81nsDd4ZT+W3wq2bQl3b9Wr+XXNrenlaaqU5ixJkI7BUS9WfhH9XcCT0FbQq3QTtF57NCHHVDKmpDfjmF5RMfcySTROnndgK1oUTkmaqdyllFJMk7MkfZg44//Scvmlh8gRqUgwLvD19t/bG3bQ9CG/a72UbI37h8WkwGn9dph63uKQ9B0XheJgGT8R1lXuUMsuTOtxP6I077lvLV1//If51HqpGoAgGK06fheL71vfataKEpTSgnRZ72GoM2ilc7Mwk0ltwb9VFIarnD3OBYToi+aSDgxx/TGizdzpHn6Lb0A1vR5JrdXc2wj6mU0OT+uxnCQ+2gR+n4/S97ERKVSiLQ2HuVKQS/aXrdS0CCW6N1cwrHXDzwxDiYZM73RlfyKAWWGTifvJDZPnrP9OlgJZhrkoZ8UHPgQHt2bvBw6MicN5v6FhT5fcrlMji9RwBhYm70SaQRgmFd2R0frTNzSlRZE5TPSb7UWSbq6GyZZ9jC9yCqwNj+qqbBtlC8vLbUHhYioP8qePS7AcpYrhcS72PV/HfeSEXKkDBJqEUhR1OgKr08+RxDUJ2ZlyAZRE0H3yW3e5MG5tm0NKEaAgt9URB9sgVrXBGWGYwNw+oL3vGOlKXms0U6sVMUWqRtcGxklgkAJ5CkuXz7HTMX0Q5oWJhNnf2UShlLvy3K8NAqjqq3P6M= fA4LR6Q7cWuMMf5/333luL2dDeYZX19bYqARxMOBgAYj+dsZEmuw/sebODr8Qs8zz3RSOgT5DPK8hG/QkMPPyJ89h/fUd0M7yasd4UVkMHhEqe0uFxflBONvOCjE2ieRWLXrRaEcEmPIju5kQVdKb/kh+FITSZIifetlBfY4e6XtSFAC8YazLNyafYZ7uZh5 ============== rampartc-src-1.3.0/samples/secpolicy/scenario13/client-policy.xml0000644000076500007650000000711111202453430024657 0ustar shankarshankar Alice 360 a Digest AXIS2C_HOME/samples/lib/rampartc/libpwcb.so AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/bob_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/alice_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/alice_key.pem rampartc-src-1.3.0/samples/secpolicy/scenario13/services.xml0000644000076500007650000000745311202453430023740 0ustar shankarshankar sec_echo This is a testing service , to test the system is working or not http://example.com/ws/2004/09/policy/Test/EchoRequest Bob 360 b Digest AXIS2C_HOME/samples/lib/rampartc/libpwcb.so AXIS2C_HOME/samples/src/rampartc/data/keys/bhome/alice_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/bhome/bob_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/bhome/bob_key.pem rampartc-src-1.3.0/samples/secpolicy/scenario3/0000755000076500007650000000000011202454512021303 5ustar shankarshankarrampartc-src-1.3.0/samples/secpolicy/scenario3/tcpmon-trace3.txt0000644000076500007650000001252611202453427024535 0ustar shankarshankar ============== Listen Port: 9090 Target Host: 127.0.0.1 Target Port: 8080 ==== Request ==== POST /axis2/services/sec_echo/echoString HTTP/1.1 User-Agent: Axis2/C Content-Length: 2122 Content-Type: application/soap+xml;charset=UTF-8 Host: 127.0.0.1:9090 http://localhost:9090/axis2/services/sec_echo/echoString http://example.com/ws/2004/09/policy/Test/EchoRequest 6d6e2b90-5909-1dc1-3126-000000000000 Xeg55vRyK3ZhAEhEf+YT0z986L0= KB05MgYiFAKB9kX6gvRsE3uX3EWJWKxJa8yyTp3OJVQDMYzpBWY3sxuGgmD3rTD5UEs8xTSR6YvdOFnCS0Z18/nvbUrpeRJ/US58BEj9/FEg30qYXd2pk9C4kwsds/UAlAif2MinmwKj0fAnXOnv3qMB7oGRA0EEvCTAwusS8x4= NUmieCaPymk5GsYgP0jwELoeIlanY8yz6bnxbnfTDCfzLnCRBAvogyJoVnFv3llOTFVqhRmAht979JHfTN+L3A34ZywlhJZmQxC4gkd7Bt0zWwloX2ybATy8iZwh+PgPHbL6MgArlCgAj1xiAF8Tew== ==== Response ==== HTTP/1.1 200 OK Content-Type: application/soap+xml;charset=UTF-8 Content-Length: 2326 http://example.com/ws/2004/09/policy/Test/EchoRequest http://localhost:9090/axis2/services/sec_echo/echoString 6d8d8490-5909-1dc1-29ca-000000000000 6d6e2b90-5909-1dc1-3126-000000000000 CuJdE1B2dUFd1dkLZSzQ5vj6MYg= hpA7gXdzhzZEDFETA3ZHW4XrkaZJFfkImpEJPSZMM91Opf8sPvvCG6HYnaJVRoYpUEOBiKS6EMS/c28BGd8zK4omqjhZzOc/tfZOK68btb/d3Yg/8ySzK+lSjNByxMESuusifNO8I9alFYk+Yq/+n7ir1y3crTfS9akFH+JHT3w= cVautFsLrrsG0gzoDE2IK+d0keL0mmKvwozkdujFUJ+v4j61+tpJz0E8OFl2JU6uCEx/3FV4NsxpEx1FlynGj+zkbR9ZMLPRnAHUqkjBSLpb4c0jF1ErhkgZ943LQ2DnREV7WE7UgFm0sOZM4b1cARFuNRF5iZ9TCWGHzBNB8QKgUncqFwxnFbn/Me91BZ4n ============== rampartc-src-1.3.0/samples/secpolicy/scenario3/client-policy.xml0000644000076500007650000000566011202453427024613 0ustar shankarshankar Alice a Digest AXIS2C_HOME/samples/lib/rampartc/libpwcb.so AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/bob_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/alice_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/alice_key.pem rampartc-src-1.3.0/samples/secpolicy/scenario3/services.xml0000644000076500007650000000705111202453427023657 0ustar shankarshankar sec_echo This is a testing service , to test the system is working or not http://example.com/ws/2004/09/policy/Test/EchoRequest Bob b Digest AXIS2C_HOME/samples/lib/rampartc/libpwcb.so AXIS2C_HOME/samples/src/rampartc/data/keys/bhome/alice_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/bhome/bob_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/bhome/bob_key.pem rampartc-src-1.3.0/samples/secpolicy/scenario1/0000755000076500007650000000000011202454512021301 5ustar shankarshankarrampartc-src-1.3.0/samples/secpolicy/scenario1/tcpmon-trace1.txt0000644000076500007650000000511611202453427024526 0ustar shankarshankar ============== Listen Port: 9090 Target Host: 127.0.0.1 Target Port: 8080 ==== Request ==== POST /axis2/services/sec_echo/echoString HTTP/1.1 User-Agent: Axis2/C Content-Length: 897 Content-Type: application/soap+xml;charset=UTF-8 Host: 127.0.0.1:9090 http://localhost:9090/axis2/services/sec_echo/echoString http://example.com/ws/2004/09/policy/Test/EchoRequest 6bbf4cca-5909-1dc1-2ab2-000000000000 2007-09-02T04:03:11.155Z 2007-09-02T04:09:11.155Z Hello ==== Response ==== HTTP/1.1 200 OK Content-Type: application/soap+xml;charset=UTF-8 Content-Length: 1088 http://example.com/ws/2004/09/policy/Test/EchoRequest http://localhost:9090/axis2/services/sec_echo/echoString 6bf6e55e-5909-1dc1-3f9c-000000000000 6bbf4cca-5909-1dc1-2ab2-000000000000 2007-09-02T04:03:11.543Z 2007-09-02T04:09:11.543Z echoIn ============== rampartc-src-1.3.0/samples/secpolicy/scenario1/client-policy.xml0000644000076500007650000000351111202453427024602 0ustar shankarshankar 360 60 False rampartc-src-1.3.0/samples/secpolicy/scenario1/services.xml0000644000076500007650000000457511202453427023665 0ustar shankarshankar sec_echo This is a testing service , to test the system is working or not http://example.com/ws/2004/09/policy/Test/EchoRequest 60 True rampartc-src-1.3.0/samples/secpolicy/scenario11/0000755000076500007650000000000011202454512021362 5ustar shankarshankarrampartc-src-1.3.0/samples/secpolicy/scenario11/tcpmon-trace11.txt0000644000076500007650000003654411202453430024673 0ustar shankarshankar ============== Listen Port: 9090 Target Host: 127.0.0.1 Target Port: 8080 ==== Request ==== POST /axis2/services/sec_echo/echoString HTTP/1.1 User-Agent: Axis2/C Content-Length: 7233 Content-Type: application/soap+xml;charset=UTF-8 Host: 127.0.0.1:9090 http://localhost:9090/axis2/services/sec_echo/echoString http://example.com/ws/2004/09/policy/Test/EchoRequest 956eaca8-980d-1dc1-31ce-0013ce8f2fc7 2007-11-21T08:41:42.333Z 2007-11-21T08:47:42.333Z Alice IeMAh3Dav07rUwGl8fQM2o3msAk= mX3ttE/H89ISAN/PO3DeLTnQTEFHxDkS 2007-11-21T08:41:42.334Z NQM0IBvuplAtETQvk+6gn8C13wE= QHzZAsE1bb8BEoIB4raLa1814AF2RpxoYgAsetwsSdNl14/ItdytRdSMFBNGlaxo7EBxyb9ghbPP2bkJ/wQyjG7umeaUS9WZB3xTPfpAgxvj9kq1CKd5KD5ktcTLaexMv/zeodeeu42FMsGakBlIAFOZfm1yCFg7aaL4/ymnB3Y= 0 32 PY5eAdOqzVpmqxvpkYNEgg== 0 32 tX8ir+dMJq1pU4ywz+L+sQ== dVSIGV8PWylBckvMW4owNjAQ7SM= oNpM6asFnrNMsV9BYrytKFzB0FQ= I64E0J9Aihl1zOdkuoFTPnmwuc0= 6ydaLOkUFk2IzhmGcESp+iVol0w= 5jyble4vyT21cWkqV5eVK0/ddU0= 98qDF6Tf15qCnMAEZZUWdb+yL5E= WCTo83XMQqkOsp1O5khW2zLwTFc= QtFI7Iik8Sofrl0fRnvhoZc2X/FIGUutgXNddDmDf4W4ETRbRfPkGGONITCQacs9lcGsCtRqvE54wctaRWfK+Rc0KJMf/T0qe/FkLdWhlyV1yHw1ia/5G+qFMGV+l0y3dnVkcEdTWCErV/ffw06fIw== ==== Response ==== HTTP/1.1 200 OK Content-Type: application/soap+xml;charset=UTF-8 Content-Length: 5416 http://example.com/ws/2004/09/policy/Test/EchoRequest http://localhost:9090/axis2/services/sec_echo/echoString 957ba62e-980d-1dc1-3b25-0013ce8f2fc7 956eaca8-980d-1dc1-31ce-0013ce8f2fc7 2007-11-21T08:41:42.418Z 2007-11-21T08:47:42.418Z bg6I8267h0TUcPYvYE0D6k6+UJQ= eStJV2Csk7mm004H5125kP2FNAhIbrSvPTLHMZf6EM1X3yYybzg3EmVVNcHZq3FgXhPAF1L+HIJomJMa46inoWv68MZcHxziZ/jApchVR8ykjuOK6+JJomWJjnAecOdCMm19mbxtHbvom6s13r42yAss6Qc+pjYJmudOY7jMo+s= 0 32 iwQ/v1qfHsE5vXHgV5ROCA== 0 32 Gudr95nvuLKJBdmp2Y8eTA== OwqDZI0g9EANdh+J+EQvi528DYg= 5znoVGVeHDAbidwwonlF1OtTkgk= H9J26UvMiYPCpqy5CVckWs4ntOw= JhIbRdHdNHccFGqVKl/IUJBEZekHsyfjRL+PDFfAoKe125Xz4p7eHY3qczVqivvkJ7vm1sdX4gKW30kpacYWu0kq86o0MCol6F0RtHyW9mAZXnhb+Tuis05Tx5yUhBTaiSP0LjLUZLfv7XlQFxxAx/nnRsFtFCsNO8BJyAteUJnBGY5dqUz2Lv8Yc8PJj7bo ============== rampartc-src-1.3.0/samples/secpolicy/scenario11/client-policy.xml0000644000076500007650000000675711202453430024674 0ustar shankarshankar Alice 360 a Digest AXIS2C_HOME/samples/lib/rampartc/libpwcb.so AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/bob_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/alice_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/alice_key.pem rampartc-src-1.3.0/samples/secpolicy/scenario11/services.xml0000644000076500007650000000732111202453430023730 0ustar shankarshankar sec_echo This is a testing service , to test the system is working or not http://example.com/ws/2004/09/policy/Test/EchoRequest Bob 360 b Digest AXIS2C_HOME/samples/lib/rampartc/libpwcb.so AXIS2C_HOME/samples/src/rampartc/data/keys/bhome/alice_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/bhome/bob_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/bhome/bob_key.pem rampartc-src-1.3.0/samples/secpolicy/scenario12/0000755000076500007650000000000011202454512021363 5ustar shankarshankarrampartc-src-1.3.0/samples/secpolicy/scenario12/tcpmon-trace12.txt0000644000076500007650000004433211202453430024667 0ustar shankarshankar ============== Listen Port: 9090 Target Host: 127.0.0.1 Target Port: 8080 ==== Request ==== POST /axis2/services/sec_echo/echoString HTTP/1.1 User-Agent: Axis2/C Content-Length: 9322 Content-Type: application/soap+xml;charset=UTF-8 Host: 127.0.0.1:9090 http://localhost:9090/axis2/services/sec_echo/echoString http://example.com/ws/2004/09/policy/Test/EchoRequest a438ab12-980d-1dc1-33a6-0013ce8f2fc7 2007-11-21T08:42:07.145Z 2007-11-21T08:48:07.145Z Alice T+9ukcUfa8pB1aINclAdcgsTLdc= ZPgdoAqv1fvRQflwamRlExxpblam3iUW 2007-11-21T08:42:07.145Z NQM0IBvuplAtETQvk+6gn8C13wE= JPziXCidKvaEt9XW7o/EJlTlq/7x3Xpn5toKnjcJdXa7sgkeTXv8T6ExMzEcwbcspPpRYUiprYVP1gdOjK22XOnGYgc1fse2KXkyaJF5PB+O4BEAUeAQdHO08M/f+CnJemBPG+Ad8EApp/uESAzWaUXPzdLeqX9HSbERoWLxeAI= 0 32 w2rPNrWfxERea42AZ1LNQQ== 0 32 iVWCHPaSkO4VkGmd02eHaQ== 0 32 pWgOSojCJvhoEbTnafvMzQ== 1uWTKcWT+cvps8PdKpYKRjBavAR2bMyWoa3RXN/ma5QfDXG2l6jEBTQbJoKwaQOK+1erizSUXAycvNT6Ef1u0cDipCtJoHpMkjqXZVdbXRWRkmpyL9m5q5SaywzAQ4HzZ1gauEMaBetzxZ+SyBf6XUMmgaxowq1WTLZKLCYv4HW9Ty76WGhBajeBjfmq5Cl/XYspW96b/Awe7uiO9wcCfnQsC3mg9PgKN0gSWYKN+Zcjq9DpLrTAuxgplGW67RFSxJ2pdzBcLSjAcP1pByAAP8AUl4c5mP1POc3kR7dnkAP2wg/pP4oEUxMWkGZmFJMm2glC3XtVw50g6MFeovv7Ek2ExQppmNK9uGPF1O4zjkGypTW8bRiuyyvbNe8pCVag4zbqei60syhi+H+gWyd+xtlUWX0Mmaq/loQaumDdOt4vpC7aMcdKQWevt3a8BHxrNn8XY93fvbs9rcjEYh09hmyCDQk+qzXFgWxc3USkln37P1z7vag7rLUfvybFBI3Ww9v5lVva5394++hYZaJMKCfGX1+l5H7TNutOgAYS9ZcUr0WwBUvF4SnzBpTZ3i+0lFyj5JkQJjLGoGLl/8ptjUY4B8efPU8CeObJMvUXGF3/9khwmqnzljevGNcGzpGZA/Na2cwDFMHNmL1HfkMzdUbPN386ciBA+v2bNwPhQh45Op0tTqabEKgCBHciJ8pDO2wQPRraonPq0UWLAk1cTt9EXRfXtOOZ1rqOz08+Rhv+hrz7le2o8aoAXXqEz+Kg/u+ovjFWPp4W2o1/FxnILmxj0E402w2EWNeQEks3LsaKnyEBg6+Jza7D6E1q3L7oimB8Lx0yGfpYZNLh/AYYrtaoLRv287HibORnOjK/Tqk9o9FbdR9FNDSpIWXv8e6CKxHLYfVi0HMdP57Tz08Oh4mcKz/KD4a38zmf9BujVVy/pOf3u9G2K8T4nH4E6iIWTbVanN4OsMnlTnygmyfbMZbP34frEdif7BVwC+JpKDbP0HaXhYVh/0i7iEeMwb0sbKOraNqWvifxUAGFREzBBKAqeSff0bpuklGZOJCS7bqeMmHnS6cLTH+GPXueEu908yco6LpaR/g1fEWhHy7Avek906n+hXgwxDX2q+972WRJlTKBlLD0LpGkSg8Z8wVE5tGEgQDKJyXcZSoFFl32eBz71Bup+wpG5gra1HVrPiHgn/50AgJmQIQDJXnXIobaK+yHU2JQe9UbrNAchjQKs0tUah7O8084pHgCPjMPgdLmwZjRtPaUmZZSlqkdKpW2pPrQmUtNIBWjkfkc8zli/kQ0cJp/JqLJazzWfqQc8ihhBTWoZ/z3SCVtZxqSweBnuyvBSAPCNXH1WLWoazr2mUCx7GX4cwE2zugYEt4Xvtn0VuU/dVZk7dUaOZNP8pnv3+KRSKlZRfbWl0cr72nelWVv1mP/gdTAw+Pg5HlU9W9BrYsQ3qRWLT0JMh1YsHyTkVaNpNLeno7QzM+XAhlakaaJz+AEkphnSml8wsA9L4ijLnH/kILheWMlVtVzqO4oAAuUyXWTip0Pczf0LmRF7JP4Wq4FjHUZQcnmkI7N+YErMEMp5q2vGu+bGqqETanIlchcMZMPSXanxFkJL1VFqh3hxGBDhukwTPGi0lilJwuWGij5EzGZUTRsP1khkvKpt2nVnjwnjsZqHOvP8r6bG8Iipcmj/Av6UvTMgo75LGJ0t9xQUoMYnfm5T9M+0JMhRI+igUNQC6YIWa4+YbATr4Bx19whL6iAwTKoHlZWkBcInjDMlhxDsJRLMguE0ZDW56IZJ8sFjPP8WRNqcNwQqkPRiJM/DDoCuGJdbEXeMwCY9o5N/pimpifAjIUkdep3V7UOUyjFQopfTw3QdpMpDQXtFZ+S8s8oaYxtn6qEtCQcr90NhFcNcWpwdsJPFxf38S+QXo6j9JlyHzpVKxVWueyB085/OK9BL4z6VQ1YTzDlDjJRSe6XZvC/RSbjC8XgWjm5+DHcWcKdmOnA/nmrmmYnB6OLY+6ExEodnXXtzj2aDNhxu2BGuxQBFJVGeFj9Xm/rtButlVd5wDh7+GyZoLaTxdgLObBudeezsnDrODhISeZrN7GAyYcbZG4DvtBooS8QSKgysdk+Ub65KxkqcNgCu/XCk17BxfzSBFkkCd4zphOyDPZ1KAYuQopYogcCxPVv44u4ZrpMqLPVmMAhXUc/mmWzstFaETVYas66BE6RAvk+51doYG5DbJ+iJMbtbn5Vq0aELGMuNxMsphrpHBLHXpS9i+6VhMBcmzgRALifcpWkleTD+UK3H8nzfTQV2UPe5U12YI0+pMMMQ4P9sXvxtOwBl62dGCh8icHwXXWN9a/DvkcLh19PaDP8O7kLMXeCCzGQdf1Lt+fGsXQXF2hTRaH2qiakvsYqPCJjbM4dXzqderSLUeZ9LXzVuOYRpbRWHRVQiHkZHwPtwjQ7SNBrr0c7fAEMaPotuvyIH9hkDhk6ZrJfThzmXCrXhVGeJGOvKaz4GgVNTAdjwgv8kmP4JyQCIAkM76G4GBAru43IGVEX8gHkFD0Kpnydh+dYWa417Q3yPKPdvAqv++QDmSLrVGRu3wUxRAu6U1VtghUhMnWUBhfquSJNDL9ICV5W/26LBajICJxNwAbcP+pJe2MZ6jsTQcn1f8FXRX8uiXmO6PjRVz4P+DCAgZziAKfyRJKSYzcuAPOJUlP/gp+K56lLQjU5S5B2fXL4DCktKU22mJAudyX03MOPXzAmc0kxPvhsxAAFtasvUNnV+0wfM2d+vF43NShWXUd2G52G1rfqAlCuG8jk5cr0mYRcJPbgangeA6kblDNlajB/Vbc2jWiGr4o1iT7csyRdliWdLEzPwzV+j3Bn53eER+crW4E0L3kzenjSUt/ws5CHKBZUu61mn44NOVxMEXJunZtIZiuZMy/nAXnjmgRjKQjXFLXjpwMJoZXikwL2MkYlFicBfjiEuRCExiUQzxH/d7Ky2dicDqSDQkXpmJuOOoO3srVbE54Wn10h2Vo3R7ClEVhTAWi52JQA2XgDVcl9aAYGTxlmgVrexuk5p9Ywug/M1Rwzc1hHbubj6z8KykiwkJ6O6cxZDiWcFjTMT3S2vcZd0thZS4GLzTqvQYO/Ie53IUDa xDxkaWy0IpX2F5WvvcSx8eReXQCpfOxVU9qKH2GygY5fcRpS5nfTwoZPA2mOmmBCaTZrqHPsDUqpPDFlxvF/ofSl4QK3g73+4U64X5G2M4MHKHX8ZIzas8xclBIfzMZNkfzEIYCCAyeW58PyDY45Eg== ==== Response ==== HTTP/1.1 200 OK Content-Type: application/soap+xml;charset=UTF-8 Content-Length: 7105 http://example.com/ws/2004/09/policy/Test/EchoRequest http://localhost:9090/axis2/services/sec_echo/echoString a4491506-980d-1dc1-35a3-0013ce8f2fc7 a438ab12-980d-1dc1-33a6-0013ce8f2fc7 2007-11-21T08:42:07.253Z 2007-11-21T08:48:07.253Z bg6I8267h0TUcPYvYE0D6k6+UJQ= mPnHH1yvt8iAyn1QamlJJ368KbdaltkJ8XzZI3POw9LAOIwJcTWPjNQJUxiZtDVx/JBjnNwcKXhtwukbu00sYWioyx7dHUrvYFjoYdtz+CcjmlXvcuDTOzo+RkFIp8HAjJJfgRd2d0V6qk8C6KFziiH/2766z/JTo0+Zl3sgkwc= 0 32 uiLOn/K6HD022yVtr36kbw== 0 32 LQs3oLMiSgXd0I0EEhpE7Q== 0 32 WvRDTJlh5z7DPW7Z3ozerw== sWWWMTwAF9hBAkOuYlrUdIsEVq0ncNiIX6PpbtoeVTX18gnlXe96jbXw+nW2jzalmqF5Rao6SVOGlAQTha7czBDUh/4AeXIDyxDIT4eRvyasoFQbLM5ulSd+UgMnx2fc5QtqnD4lnBjA0BHl0lxBAyakGa1VslhbI2WWpw4RgD6gcj8N+8hCFnC3jMyX21A7N3cGl8OexTkg0BSO6waHvMO12KBeEmSIeBiVcGD45XAVYe2SQWo9RO/FhDjNuEAuuni52bHL0hGjhq1/thYU2to/HyB7qXqZS4rWgqhXj9dyb9rlUU3zpQrYHWDsYEDrxN5prnfKqc+v50zjRxSHc6w5ImFoPzQoX+5O0GCYR+tZBY9V3rgZg9W+ujW74XkD1izbz0R1UOaHvUpGipZLZDp+aKX724BEcu3ZM+h5nmZJMwIIpn9uPbqODsATBxm5jWEERKrXmhz5I4S8oistlSEzEiI42/KTeN7SBwvdBQg3QTN9ucPshVkXZmQ8DxFqUEMddXUfq83r4xZ49gX7tncw/bzUP1zFF83+qkMMjGUdY6zvLdnbSUA6TRG/gVLXnByLm5qsSbO9QHcRYd1LqN3y6ERVhs1Ic2AD1RVu8s44uk1SvqWE/wsTFD9qo4kjSAgpACgosbkcxkyutxwt0kpBGVwQm+QrT+ztEOciGw3JsMx2XW2BIKk/9zp/vZ+YCzWSVABW7tg8Huhi5UmnmYyreJRsleovldBH6OrVDMX2qJYkbadqEfBviZ7VHOJ/U9V0vt6dIINpgu5yqQEhSSWQA0bnyRItSqotXlh++nXt5OuzuxI11OfYubAToQsuAh/5Q59lseEK0lph9/NN4UAllj0ms5XUsUvA+pjhjtnd38dN/KkLgfJkfmJG1uBBEignU1lOJSNBtu8IDcFD028YTA2xd+RMlyfs3Tk/+XL+gJK5lKcqRC1f3+4FunLKqEnBGL8LKh6jD1NGUO3u3RBfUevDCyFSeJLv8QBXPnkzkZDyx3E6gapmG7rptNhpGJm7lcJ664mAnpthORbytkv1Qk7VE0P0ccDCw9cCPz60rjCiwGjJ1HiiyA+A1xXbu+KWb6QH6Qcl4svjnD2yyu61sZ6nfQKyV4hZAkfYAw3j3sAD+CIPEhNf1OeGrcCT50CI6NGQisvQhtzTSoYl1C7I1gBl+IJRonJtKtr5xE+H65gTaf83zQGHINWJD5QUisyVTwTyxsGquDQSJSLovorEMe0cmfCSw/Lf0Brq1prPjK9Ou7gsD4IgXonvRDC12YlZwRC/iAel8VFjwcsgtkJWujVTPPNMAnTEofeSKv62kP00YFOzONi1uI3nClT2MVeLd+k0efEaBdC/CjKDuCHX61nzq3s0iXGIli27IIiMhQIBCdoOegv8aTcS5GH+JszwmtZboBTrCNUiOebt/vF+XsQCzP9PIHZ1SbgCu9iJw7r0JLO/7woba6HGuFpsXeliIilE6kmde2HBVIkENPjveY1nZP3edAF3sqQTNo/ej5W4i7eNSKfyduUzXgEKuNv90TzZxYXwY4J2dLLihEJb7G68Lo882FrL2Q0JbeI= r+74AoELdj7D/eCkvitCUdEfmNgmve1zc/UHcAZOQQeXBLl2rUAHVwojxKCg5RHLZiJZNdk/+DEj7lxDAJSBbC921VdCQSmdsEuL6eHY7CbYJVewm7g00z818F7Q8P1nP3by8smfaNqLuuodTkYsTTCgi81wHZtW6mgmx7EqlvVlT2WaiaIHJrzvGFMdiVna ============== rampartc-src-1.3.0/samples/secpolicy/scenario12/client-policy.xml0000644000076500007650000000703211202453430024660 0ustar shankarshankar Alice 360 a Digest AXIS2C_HOME/samples/lib/rampartc/libpwcb.so AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/bob_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/alice_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/alice_key.pem rampartc-src-1.3.0/samples/secpolicy/scenario12/services.xml0000644000076500007650000000737411202453430023741 0ustar shankarshankar sec_echo This is a testing service , to test the system is working or not http://example.com/ws/2004/09/policy/Test/EchoRequest Bob 360 b Digest AXIS2C_HOME/samples/lib/rampartc/libpwcb.so AXIS2C_HOME/samples/src/rampartc/data/keys/bhome/alice_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/bhome/bob_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/bhome/bob_key.pem rampartc-src-1.3.0/samples/secpolicy/test_scen.bat0000644000076500007650000000176411202453432022104 0ustar shankarshankar@echo off if "%1" == "" goto end if "%2" == "" goto end set _SMPL_DIR=%cd% set _SLEEP=3 echo ------------------------------------------------------------------------- echo Deploying %1 echo ------------------------------------------------------------------------- call deploy.bat %1 @echo off echo Killing server taskkill /F /IM axis2_http_server.exe echo Go to %AXIS2C_HOME% cd %AXIS2C_HOME%/bin echo Start server @ %2 start /min axis2_http_server.exe -p%2 rem echo Sleeping for %_SLEEP% seconds echo waiting....... pause %_SLEEP% echo Go to client directory and run the sample cd %AXIS2C_HOME%/samples/bin/rampartc if not "%1" == "scenario14" goto else call saml_update_n_run.bat goto endif :else call update_n_run.bat :endif @echo off echo Killing server taskkill /F /IM axis2_http_server.exe echo Jump back to samples dir :%_SMPL_DIR% cd %_SMPL_DIR% goto superend :end echo usage %0 scenarioxx server_port :superend if "%3" == "" @echo on rampartc-src-1.3.0/samples/secpolicy/scenario2/0000755000076500007650000000000011202454512021302 5ustar shankarshankarrampartc-src-1.3.0/samples/secpolicy/scenario2/tcpmon-trace2.txt0000644000076500007650000000502011202453427024522 0ustar shankarshankar ============== Listen Port: 9090 Target Host: 127.0.0.1 Target Port: 8080 ==== Request ==== POST /axis2/services/sec_echo/echoString HTTP/1.1 User-Agent: Axis2/C Content-Length: 1105 Content-Type: application/soap+xml;charset=UTF-8 Host: 127.0.0.1:9090 http://localhost:9090/axis2/services/sec_echo/echoString http://example.com/ws/2004/09/policy/Test/EchoRequest 6ca9b846-5909-1dc1-227e-000000000000 Alice YOzgvuwW5n44c6QBdScsoVZO7i0= 2HYF0Rf8D2ZNnNywaHQnRg== 2007-09-02T04:03:12.723Z Hello ==== Response ==== HTTP/1.1 200 OK Content-Type: application/soap+xml;charset=UTF-8 Content-Length: 845 http://example.com/ws/2004/09/policy/Test/EchoRequest http://localhost:9090/axis2/services/sec_echo/echoString 6cb86f3a-5909-1dc1-2cfd-000000000000 6ca9b846-5909-1dc1-227e-000000000000 echoIn ============== rampartc-src-1.3.0/samples/secpolicy/scenario2/client-policy.xml0000644000076500007650000000421711202453427024607 0ustar shankarshankar Alice Digest AXIS2C_HOME/samples/lib/rampartc/libpwcb.so rampartc-src-1.3.0/samples/secpolicy/scenario2/services.xml0000644000076500007650000000544411202453427023662 0ustar shankarshankar sec_echo This is a testing service , to test the system is working or not http://example.com/ws/2004/09/policy/Test/EchoRequest Digest AXIS2C_HOME/samples/lib/rampartc/libpwcb.so rampartc-src-1.3.0/samples/secpolicy/test_scen.sh0000755000076500007650000000142611202453432021746 0ustar shankarshankar#!/bin/bash _SMPL_DIR="$PWD" if [ $# -ne 2 ] then echo "Usage : $0 scenarioX server-port" exit fi S_i=$1 _PORT=$2 echo "-------------------------------------------------------------------------" echo ">Deploying $S_i" sh deploy.sh $S_i echo ">Killing server" killall axis2_http_server echo ">Go to $AXIS2C_HOME" cd $AXIS2C_HOME/bin echo ">Start server @ $_PORT" ./axis2_http_server -p$_PORT & sleep 2 echo ">Go to client directory" cd $AXIS2C_HOME/samples/bin/rampartc echo ">Run the sample" if [ $S_i = 'scenario14' ] then sh saml_echo_update_n_run.sh else sh update_n_run.sh fi echo ">Jump back to samples dir :$_SMPL_DIR" cd $_SMPL_DIR killall axis2_http_server echo "DONE" rampartc-src-1.3.0/samples/secpolicy/scenario21/0000755000076500007650000000000011202454512021363 5ustar shankarshankarrampartc-src-1.3.0/samples/secpolicy/scenario21/tcpmon-trace3.txt0000644000076500007650000001252611202453431024610 0ustar shankarshankar ============== Listen Port: 9090 Target Host: 127.0.0.1 Target Port: 8080 ==== Request ==== POST /axis2/services/sec_echo/echoString HTTP/1.1 User-Agent: Axis2/C Content-Length: 2122 Content-Type: application/soap+xml;charset=UTF-8 Host: 127.0.0.1:9090 http://localhost:9090/axis2/services/sec_echo/echoString http://example.com/ws/2004/09/policy/Test/EchoRequest 6d6e2b90-5909-1dc1-3126-000000000000 Xeg55vRyK3ZhAEhEf+YT0z986L0= KB05MgYiFAKB9kX6gvRsE3uX3EWJWKxJa8yyTp3OJVQDMYzpBWY3sxuGgmD3rTD5UEs8xTSR6YvdOFnCS0Z18/nvbUrpeRJ/US58BEj9/FEg30qYXd2pk9C4kwsds/UAlAif2MinmwKj0fAnXOnv3qMB7oGRA0EEvCTAwusS8x4= NUmieCaPymk5GsYgP0jwELoeIlanY8yz6bnxbnfTDCfzLnCRBAvogyJoVnFv3llOTFVqhRmAht979JHfTN+L3A34ZywlhJZmQxC4gkd7Bt0zWwloX2ybATy8iZwh+PgPHbL6MgArlCgAj1xiAF8Tew== ==== Response ==== HTTP/1.1 200 OK Content-Type: application/soap+xml;charset=UTF-8 Content-Length: 2326 http://example.com/ws/2004/09/policy/Test/EchoRequest http://localhost:9090/axis2/services/sec_echo/echoString 6d8d8490-5909-1dc1-29ca-000000000000 6d6e2b90-5909-1dc1-3126-000000000000 CuJdE1B2dUFd1dkLZSzQ5vj6MYg= hpA7gXdzhzZEDFETA3ZHW4XrkaZJFfkImpEJPSZMM91Opf8sPvvCG6HYnaJVRoYpUEOBiKS6EMS/c28BGd8zK4omqjhZzOc/tfZOK68btb/d3Yg/8ySzK+lSjNByxMESuusifNO8I9alFYk+Yq/+n7ir1y3crTfS9akFH+JHT3w= cVautFsLrrsG0gzoDE2IK+d0keL0mmKvwozkdujFUJ+v4j61+tpJz0E8OFl2JU6uCEx/3FV4NsxpEx1FlynGj+zkbR9ZMLPRnAHUqkjBSLpb4c0jF1ErhkgZ943LQ2DnREV7WE7UgFm0sOZM4b1cARFuNRF5iZ9TCWGHzBNB8QKgUncqFwxnFbn/Me91BZ4n ============== rampartc-src-1.3.0/samples/secpolicy/scenario21/client-policy.xml0000644000076500007650000000527611202453431024671 0ustar shankarshankar Alice a Digest AXIS2C_HOME/samples/lib/rampartc/libpwcb.so AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/alice_kstore.p12 rampartc-src-1.3.0/samples/secpolicy/scenario21/services.xml0000644000076500007650000000645611202453431023742 0ustar shankarshankar sec_echo This is a testing service , to test the system is working or not http://example.com/ws/2004/09/policy/Test/EchoRequest Bob b Digest AXIS2C_HOME/samples/lib/rampartc/libpwcb.so AXIS2C_HOME/samples/src/rampartc/data/keys/bhome/bob_kstore.p12 rampartc-src-1.3.0/samples/secpolicy/scenario24/0000755000076500007650000000000011202454512021366 5ustar shankarshankarrampartc-src-1.3.0/samples/secpolicy/scenario24/client-policy.xml0000644000076500007650000000566711202453431024700 0ustar shankarshankar Alice 360 a Digest AXIS2C_HOME/samples/lib/rampartc/libpwcb.so AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/bob_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/alice_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/alice_key.pem rampartc-src-1.3.0/samples/secpolicy/scenario24/services.xml0000644000076500007650000000706711202453431023744 0ustar shankarshankar sec_echo This is a testing service , to test the system is working or not http://example.com/ws/2004/09/policy/Test/EchoRequest Bob 360 b Digest AXIS2C_HOME/samples/lib/rampartc/libpwcb.so AXIS2C_HOME/samples/src/rampartc/data/keys/bhome/alice_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/bhome/bob_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/bhome/bob_key.pem rampartc-src-1.3.0/samples/secpolicy/scenario4/0000755000076500007650000000000011202454512021304 5ustar shankarshankarrampartc-src-1.3.0/samples/secpolicy/scenario4/tcpmon-trace4.txt0000644000076500007650000002456711202453427024547 0ustar shankarshankar ============== Listen Port: 9090 Target Host: 127.0.0.1 Target Port: 8080 ==== Request ==== POST /axis2/services/sec_echo/echoString HTTP/1.1 User-Agent: Axis2/C Content-Length: 4610 Content-Type: application/soap+xml;charset=UTF-8 Host: 127.0.0.1:9090 http://localhost:9090/axis2/services/sec_echo/echoString http://example.com/ws/2004/09/policy/Test/EchoRequest 6e96831e-5909-1dc1-21bb-000000000000 MIIDDDCCAfSgAwIBAgIQM6YEf7FVYx/tZyEXgVComTANBgkqhkiG9w0BAQUFADAwMQ4wDAYDVQQKDAVPQVNJUzEeMBwGA1UEAwwVT0FTSVMgSW50ZXJvcCBUZXN0IENBMB4XDTA1MDMxOTAwMDAwMFoXDTE4MDMxOTIzNTk1OVowQjEOMAwGA1UECgwFT0FTSVMxIDAeBgNVBAsMF09BU0lTIEludGVyb3AgVGVzdCBDZXJ0MQ4wDAYDVQQDDAVBbGljZTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAoqi99By1VYo0aHrkKCNT4DkIgPL/SgahbeKdGhrbu3K2XG7arfD9tqIBIKMfrX4Gp90NJa85AV1yiNsEyvq+mUnMpNcKnLXLOjkTmMCqDYbbkehJlXPnaWLzve+mW0pJdPxtf3rbD4PS/cBQIvtpjmrDAU8VsZKT8DN5Kyz+EZsCAwEAAaOBkzCBkDAJBgNVHRMEAjAAMDMGA1UdHwQsMCowKKImhiRodHRwOi8vaW50ZXJvcC5iYnRlc3QubmV0L2NybC9jYS5jcmwwDgYDVR0PAQH/BAQDAgSwMB0GA1UdDgQWBBQK4l0TUHZ1QV3V2QtlLNDm+PoxiDAfBgNVHSMEGDAWgBTAnSj8wes1oR3WqqqgHBpNwkkPDzANBgkqhkiG9w0BAQUFAAOCAQEABTqpOpvW+6yrLXyUlP2xJbEkohXHI5OWwKWleOb9hlkhWntUalfcFOJAgUyH30TTpHldzx1+vK2LPzhoUFKYHE1IyQvokBN2JjFO64BQukCKnZhldLRPxGhfkTdxQgdf5rCK/wh3xVsZCNTfuMNmlAM6lOAg8QduDah3WFZpEA0s2nwQaCNQTNMjJC8tav1CBr6+E5FAmwPXP7pJxn9Fw9OXRyqbRA4v2y7YpbGkG2GI9UvOHw6SGvf4FRSthMMO35YbpikGsLix3vAsXWWi4rwfVOYzQK0OFPNi9RMCUdSH06m9uLWckiCxjos0FQODZE9l4ATGy9s9hNVwryOJTw== iGBAYABXvaLHO3c1vWSnvosxDaw= A1sz0XbuHSEowHtJK0C68Aj+e/o= Q8OhlaeE34Ahgr8r97AYiKkKJPM= iPFCg9M9nm8d3ob7swnq2ER5IXI= GdDs/FHF2Xuw0IWW30i1aI+WVnN9WDWtRZi67cRZUTlHRSlb8FgeimMuVODuvrZuVpp2Lvix9WvL95Uvl/KHfbJ/btpwTjrh/Gxl9vWtOtUAYeI39xyLyWA0FvTsrgYbb1HBs3TEla5WSoSr+f7v+4+BOQ/KHiyrjjah4iTcXHY= Hello ==== Response ==== HTTP/1.1 200 OK Content-Type: application/soap+xml;charset=UTF-8 Content-Length: 3928 http://example.com/ws/2004/09/policy/Test/EchoRequest http://localhost:9090/axis2/services/sec_echo/echoString 6ea8dcda-5909-1dc1-2e7f-000000000000 6e96831e-5909-1dc1-21bb-000000000000 fujMpRP6TwjdkNbmfor9wrYqgLc= NhzhAAogdwTYC8XtL5XYX1kJN9M= FiqEZGG+mVi27dMEk6XGO9ULkqM= 9n/o/G0iTmSABKQ1UTpRUa3WRI8= PiQ9q2i68wAeyJyp+CdWwdS2inI= NLwut9i+jI6QxhUDUGYOcM3yUY1xkXyOTB7qSED6j9ZTnKSeq+loSiAwjSU0GiZ9wcePcgqBWmdABMyPChmLRyxPJHEXd9n+gFlFcygjhFbZecGKHeEtTfPexUGzyaO6iRcTxBHN0hHo5xjb32kViTs+WUoF+HdDoLhd7/5hHAQ= Xeg55vRyK3ZhAEhEf+YT0z986L0= echoIn ============== rampartc-src-1.3.0/samples/secpolicy/scenario4/client-policy.xml0000644000076500007650000000561211202453427024611 0ustar shankarshankar Digest AXIS2C_HOME/samples/lib/rampartc/libpwcb.so AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/bob_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/alice_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/alice_key.pem rampartc-src-1.3.0/samples/secpolicy/scenario4/services.xml0000644000076500007650000000646111202453427023664 0ustar shankarshankar sec_echo This is a testing service , to test the system is working or not http://example.com/ws/2004/09/policy/Test/EchoRequest AXIS2C_HOME/samples/lib/rampartc/libpwcb.so AXIS2C_HOME/samples/src/rampartc/data/keys/bhome/bob_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/bhome/bob_key.pem rampartc-src-1.3.0/samples/secpolicy/scenario8/0000755000076500007650000000000011202454512021310 5ustar shankarshankarrampartc-src-1.3.0/samples/secpolicy/scenario8/tcpmon-trace8.txt0000644000076500007650000002072511202453427024547 0ustar shankarshankar ============== Listen Port: 9090 Target Host: 127.0.0.1 Target Port: 8080 ==== Request ==== POST /axis2/services/sec_echo/echoString HTTP/1.1 User-Agent: Axis2/C Content-Length: 3706 Content-Type: application/soap+xml;charset=UTF-8 Host: 127.0.0.1:9090 http://localhost:9090/axis2/services/sec_echo/echoString http://example.com/ws/2004/09/policy/Test/EchoRequest 530c0dec-980d-1dc1-2303-0013ce8f2fc7 2007-11-21T08:39:50.957Z 2007-11-21T08:45:50.957Z Alice dS07UZpRNlgv/MEWC6ARW/sSGF0= nq60u9I/y/V8xtw3P7gC7XwfVu6ByFwW 2007-11-21T08:39:50.958Z NQM0IBvuplAtETQvk+6gn8C13wE= dhprO0xm2KsbfNqBELV81hIdTSwl3jzlP+j8URMDfe55a7S1UIgIAtGkpv/eOgULuVure4bfjm3T28duYp5mJKx3CuDBwHZEhazm3U5QvXeTokUHiKCJnOhJzfHTv1BmQHPs1cFyQ50rw4tujN6uRKPHFWUSQ/jH1bjXjgha6T4= 0 32 TxXo8NKN9kupkWkCA+Pk3g== UwtDma/cHIJIGzgK5umV6PdXik8kmJxwNcXaRu5bhfuKJXGq3g6Gd6AWHjb6Doh7l4ROh1wZhHgeEH0U7HSlL1BNI+p2BGmCRscBwt4jgskJKupYTMy9Wtpq/Wjjs/uoZWgMcNEmdwPXNxEz8tbYlw== ==== Response ==== HTTP/1.1 200 OK Content-Type: application/soap+xml;charset=UTF-8 Content-Length: 3466 http://example.com/ws/2004/09/policy/Test/EchoRequest http://localhost:9090/axis2/services/sec_echo/echoString 531a05dc-980d-1dc1-3282-0013ce8f2fc7 530c0dec-980d-1dc1-2303-0013ce8f2fc7 2007-11-21T08:39:51.049Z 2007-11-21T08:45:51.049Z bg6I8267h0TUcPYvYE0D6k6+UJQ= d+0Jil/Zo7aB9+NaIdxbBe5TfWJAUQljI/WS0AuFTxElElC8b5RkajQ8UmtrNLBS5DoRacf8/YH2+OVy8PPug+VDWOVZ/dDvzrmOPENqDwwKkwePvawecm2WOowLYDaNnh694g/jn2+qZ6Mzo4GoQK9QFgeSZHcR1BQxYkERZVE= 0 32 bjeQm/JU5LY8pddThhxqHg== zBxIzI+i2S4zrVlmgOnp5daWTeea7OMr30uN91JsSL/58UR49pZXSDCSrou4SaVZttomFblHKR3xI3KFQWkb5sTSjwYOlDcysjsdYvLZ4F0TBAc7gcNFUszVI3ikydwO0ggjhymx3xtTKXo6lYGqE2hYUBQZnhOCaL1tTQiyazDhGrdVKcGv3SVrJ1GXWhJ8 ============== rampartc-src-1.3.0/samples/secpolicy/scenario8/client-policy.xml0000644000076500007650000000641311202453427024615 0ustar shankarshankar Alice 360 a Digest AXIS2C_HOME/samples/lib/rampartc/libpwcb.so AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/bob_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/alice_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/alice_key.pem rampartc-src-1.3.0/samples/secpolicy/scenario8/services.xml0000644000076500007650000000705711202453427023672 0ustar shankarshankar sec_echo This is a testing service , to test the system is working or not http://example.com/ws/2004/09/policy/Test/EchoRequest Bob 360 b Digest AXIS2C_HOME/samples/lib/rampartc/libpwcb.so AXIS2C_HOME/samples/src/rampartc/data/keys/bhome/alice_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/bhome/bob_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/bhome/bob_key.pem rampartc-src-1.3.0/samples/secpolicy/scenario18/0000755000076500007650000000000011202454512021371 5ustar shankarshankarrampartc-src-1.3.0/samples/secpolicy/scenario18/client-policy.xml0000644000076500007650000001550211202453431024670 0ustar shankarshankar http://localhost:9090/axis2/services/secconv_echo/RequestSecurityToken 360 http://localhost:9090/axis2/services/secconv_echo/RequestSecurityToken 360 Alice 360 Digest AXIS2C_HOME/samples/lib/rampartc/libpwcb.so AXIS2C_HOME/samples/lib/rampartc/libsctprovider_hashdb.so rampartc-src-1.3.0/samples/secpolicy/scenario18/services.xml0000644000076500007650000001576611202453431023754 0ustar shankarshankar sec_echo This is a testing service , to test the system is working or not http://example.com/ws/2004/09/policy/Test/EchoRequest http://localhost:9090/axis2/services/secconv_echo/RequestSecurityToken 360 http://localhost:9090/axis2/services/secconv_echo/RequestSecurityToken 360 Bob Digest AXIS2C_HOME/samples/lib/rampartc/libpwcb.so AXIS2C_HOME/samples/lib/rampartc/libsctprovider_hashdb.so rampartc-src-1.3.0/samples/secpolicy/scenario25/0000755000076500007650000000000011202454512021367 5ustar shankarshankarrampartc-src-1.3.0/samples/secpolicy/scenario25/client-policy.xml0000644000076500007650000001461211202453431024667 0ustar shankarshankar 360 360 Alice 360 Digest AXIS2C_HOME/samples/lib/rampartc/libpwcb.so rampartc-src-1.3.0/samples/secpolicy/scenario25/services.xml0000644000076500007650000000555111202453431023741 0ustar shankarshankar sec_echo This is a testing service , to test the system is working or not http://example.com/ws/2004/09/policy/Test/EchoRequest Bob Digest AXIS2C_HOME/samples/lib/rampartc/libpwcb.so rampartc-src-1.3.0/samples/secpolicy/scenario15/0000755000076500007650000000000011202454512021366 5ustar shankarshankarrampartc-src-1.3.0/samples/secpolicy/scenario15/client-policy.xml0000644000076500007650000000545311202453430024670 0ustar shankarshankar Alice 360 Digest AXIS2C_HOME/samples/lib/rampartc/libpwcb.so AXIS2C_HOME/samples/lib/rampartc/libsctprovider.so rampartc-src-1.3.0/samples/secpolicy/scenario15/services.xml0000644000076500007650000000600511202453430023732 0ustar shankarshankar sec_echo This is a testing service , to test the system is working or not http://example.com/ws/2004/09/policy/Test/EchoRequest Bob Digest AXIS2C_HOME/samples/lib/rampartc/libpwcb.so AXIS2C_HOME/samples/lib/rampartc/libsctprovider.so rampartc-src-1.3.0/samples/secpolicy/scenario22/0000755000076500007650000000000011202454512021364 5ustar shankarshankarrampartc-src-1.3.0/samples/secpolicy/scenario22/tcpmon-trace4.txt0000644000076500007650000002456711202453431024622 0ustar shankarshankar ============== Listen Port: 9090 Target Host: 127.0.0.1 Target Port: 8080 ==== Request ==== POST /axis2/services/sec_echo/echoString HTTP/1.1 User-Agent: Axis2/C Content-Length: 4610 Content-Type: application/soap+xml;charset=UTF-8 Host: 127.0.0.1:9090 http://localhost:9090/axis2/services/sec_echo/echoString http://example.com/ws/2004/09/policy/Test/EchoRequest 6e96831e-5909-1dc1-21bb-000000000000 MIIDDDCCAfSgAwIBAgIQM6YEf7FVYx/tZyEXgVComTANBgkqhkiG9w0BAQUFADAwMQ4wDAYDVQQKDAVPQVNJUzEeMBwGA1UEAwwVT0FTSVMgSW50ZXJvcCBUZXN0IENBMB4XDTA1MDMxOTAwMDAwMFoXDTE4MDMxOTIzNTk1OVowQjEOMAwGA1UECgwFT0FTSVMxIDAeBgNVBAsMF09BU0lTIEludGVyb3AgVGVzdCBDZXJ0MQ4wDAYDVQQDDAVBbGljZTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAoqi99By1VYo0aHrkKCNT4DkIgPL/SgahbeKdGhrbu3K2XG7arfD9tqIBIKMfrX4Gp90NJa85AV1yiNsEyvq+mUnMpNcKnLXLOjkTmMCqDYbbkehJlXPnaWLzve+mW0pJdPxtf3rbD4PS/cBQIvtpjmrDAU8VsZKT8DN5Kyz+EZsCAwEAAaOBkzCBkDAJBgNVHRMEAjAAMDMGA1UdHwQsMCowKKImhiRodHRwOi8vaW50ZXJvcC5iYnRlc3QubmV0L2NybC9jYS5jcmwwDgYDVR0PAQH/BAQDAgSwMB0GA1UdDgQWBBQK4l0TUHZ1QV3V2QtlLNDm+PoxiDAfBgNVHSMEGDAWgBTAnSj8wes1oR3WqqqgHBpNwkkPDzANBgkqhkiG9w0BAQUFAAOCAQEABTqpOpvW+6yrLXyUlP2xJbEkohXHI5OWwKWleOb9hlkhWntUalfcFOJAgUyH30TTpHldzx1+vK2LPzhoUFKYHE1IyQvokBN2JjFO64BQukCKnZhldLRPxGhfkTdxQgdf5rCK/wh3xVsZCNTfuMNmlAM6lOAg8QduDah3WFZpEA0s2nwQaCNQTNMjJC8tav1CBr6+E5FAmwPXP7pJxn9Fw9OXRyqbRA4v2y7YpbGkG2GI9UvOHw6SGvf4FRSthMMO35YbpikGsLix3vAsXWWi4rwfVOYzQK0OFPNi9RMCUdSH06m9uLWckiCxjos0FQODZE9l4ATGy9s9hNVwryOJTw== iGBAYABXvaLHO3c1vWSnvosxDaw= A1sz0XbuHSEowHtJK0C68Aj+e/o= Q8OhlaeE34Ahgr8r97AYiKkKJPM= iPFCg9M9nm8d3ob7swnq2ER5IXI= GdDs/FHF2Xuw0IWW30i1aI+WVnN9WDWtRZi67cRZUTlHRSlb8FgeimMuVODuvrZuVpp2Lvix9WvL95Uvl/KHfbJ/btpwTjrh/Gxl9vWtOtUAYeI39xyLyWA0FvTsrgYbb1HBs3TEla5WSoSr+f7v+4+BOQ/KHiyrjjah4iTcXHY= Hello ==== Response ==== HTTP/1.1 200 OK Content-Type: application/soap+xml;charset=UTF-8 Content-Length: 3928 http://example.com/ws/2004/09/policy/Test/EchoRequest http://localhost:9090/axis2/services/sec_echo/echoString 6ea8dcda-5909-1dc1-2e7f-000000000000 6e96831e-5909-1dc1-21bb-000000000000 fujMpRP6TwjdkNbmfor9wrYqgLc= NhzhAAogdwTYC8XtL5XYX1kJN9M= FiqEZGG+mVi27dMEk6XGO9ULkqM= 9n/o/G0iTmSABKQ1UTpRUa3WRI8= PiQ9q2i68wAeyJyp+CdWwdS2inI= NLwut9i+jI6QxhUDUGYOcM3yUY1xkXyOTB7qSED6j9ZTnKSeq+loSiAwjSU0GiZ9wcePcgqBWmdABMyPChmLRyxPJHEXd9n+gFlFcygjhFbZecGKHeEtTfPexUGzyaO6iRcTxBHN0hHo5xjb32kViTs+WUoF+HdDoLhd7/5hHAQ= Xeg55vRyK3ZhAEhEf+YT0z986L0= echoIn ============== rampartc-src-1.3.0/samples/secpolicy/scenario22/client-policy.xml0000644000076500007650000000537011202453431024665 0ustar shankarshankar Alice a Digest AXIS2C_HOME/samples/lib/rampartc/libpwcb.so AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/alice_kstore.p12 rampartc-src-1.3.0/samples/secpolicy/scenario22/services.xml0000644000076500007650000000637011202453431023736 0ustar shankarshankar sec_echo This is a testing service , to test the system is working or not http://example.com/ws/2004/09/policy/Test/EchoRequest b AXIS2C_HOME/samples/lib/rampartc/libpwcb.so AXIS2C_HOME/samples/src/rampartc/data/keys/bhome/bob_kstore.p12 rampartc-src-1.3.0/samples/secpolicy/run_all.js0000644000076500007650000000675111202453432021420 0ustar shankarshankarvar WshShell = new ActiveXObject("WScript.Shell"); var fso = new ActiveXObject("Scripting.FileSystemObject"); var server_port = 7070; var f, s, re, ss, r; var ForReading = 1, ForWriting = 2; var axis2c_home = WshShell.ExpandEnvironmentStrings("%AXIS2C_HOME%"); var client_repo = axis2c_home + "\\client_repo"; for (var i = 1; i <= 14; i++) { if (i != 14 && i != 24) { run (i, "\\samples\\bin\\sec_echo.exe") } else if (i == 14) { run(i, "\\samples\\bin\\saml_echo.exe"); } } WScript.Echo("Scenario " + 20 + ":"); deploy(20); deploy_20(); WScript.Echo("services.xml and policy.xml deployed"); var http_server = WshShell.Exec(axis2c_home + "\\bin\\axis2_http_server.exe -p " + server_port + " -r " + axis2c_home); WScript.Sleep(3000); WScript.Echo("Started Axis2C simple HTTP server\n\n"); var client = WshShell.Exec(axis2c_home + "\\samples\\bin\\issued_token_echo.exe http://localhost:9090/axis2/services/sec_echo/echoString " + client_repo); s = client.StdOut.ReadAll(); WScript.Echo(s); http_server.Terminate(); for (var i = 21; i <= 24; i++) { if (i != 14 && i != 24) { run (i, "\\samples\\bin\\sec_echo.exe") } else if (i == 14) { run(i, "\\samples\\bin\\saml_echo.exe"); } else if (i == 24) { run(i, "\\samples\\bin\\saml_protect_echo.exe"); } } function run(i, file) { WScript.Echo("Scenario " + i + ":"); deploy(i); WScript.Echo("services.xml and policy.xml deployed"); var http_server = WshShell.Exec(axis2c_home + "\\bin\\axis2_http_server.exe -p " + server_port + " -r " + axis2c_home); WScript.Sleep(3000); WScript.Echo("Started Axis2C simple HTTP server\n\n"); var client; client = WshShell.Exec(axis2c_home + file + " http://localhost:9090/axis2/services/sec_echo/echoString " + client_repo); s = client.StdOut.ReadAll(); WScript.Echo(s); http_server.Terminate(); } function replace() { while (s.search(/AXIS2C_HOME/) != -1) { r = s.replace(/AXIS2C_HOME/, axis2c_home); s = r; } while (s.search(/libpwcb\.so/) != -1) { r = s.replace(/libpwcb\.so/, "pwcb.dll"); s = r; } while (s.search(/librdflatfile\.so/) != -1) { r = s.replace(/librdflatfile\.so/, "rdflatfile.dll"); s = r; } } function deploy(i) { f = fso.OpenTextFile("scenario" + i + "\\client-policy.xml", ForReading); s = f.ReadAll(); f.Close(); f = fso.OpenTextFile(client_repo + "\\policy.xml", ForWriting, true); replace(); f.write(s); f.close(); // Deploy the servces.xml files f = fso.OpenTextFile("scenario" + i + "\\services.xml", ForReading); s = f.ReadAll(); f.Close(); f = fso.OpenTextFile(axis2c_home + "\\services\\sec_echo\\services.xml", ForWriting, true); replace(); f.write(s); f.close(); } // Additional deployment for scenario 20. This scenario requires a token to be aquired function deploy_20() { f = fso.OpenTextFile("scenario" + 20 + "\\sts-client-policy.xml", ForReading); s = f.ReadAll(); f.Close(); f = fso.OpenTextFile(client_repo + "\\sts_policy.xml", ForWriting, true); replace(); f.write(s); f.close(); f = fso.OpenTextFile("scenario" + 20 + "\\sts-services.xml", ForReading); s = f.ReadAll(); f.Close(); f = fso.OpenTextFile(axis2c_home + "\\services\\saml_sts\\services.xml", ForWriting, true); replace(); f.write(s); f.close(); } rampartc-src-1.3.0/samples/secpolicy/scenario7/0000755000076500007650000000000011202454512021307 5ustar shankarshankarrampartc-src-1.3.0/samples/secpolicy/scenario7/client-policy.xml0000644000076500007650000000322111202453427024606 0ustar shankarshankar rampartc-src-1.3.0/samples/secpolicy/scenario7/services.xml0000644000076500007650000000454311202453427023666 0ustar shankarshankar sec_echo This is a testing service , to test the system is working or not http://example.com/ws/2004/09/policy/Test/EchoRequest 5 AXIS2C_HOME/samples/lib/rampartc/librdflatfile.so rampartc-src-1.3.0/samples/secpolicy/deploy.js0000644000076500007650000000211011202453432021241 0ustar shankarshankarvar WshShell = new ActiveXObject("WScript.Shell"); fso = new ActiveXObject("Scripting.FileSystemObject"); var fso, f, s, r; var ForReading = 1, ForWriting = 2; var axis2c_home = WshShell.ExpandEnvironmentStrings("%AXIS2C_HOME%"); var args = WScript.Arguments; var read_file = args.Item(0); var deploy_file = args.Item(1); // Deploy the client policy file f = fso.OpenTextFile(read_file, ForReading); s = f.ReadAll(); f.Close(); f = fso.OpenTextFile(deploy_file, ForWriting, true); while (s.search(/AXIS2C_HOME/) != -1) { r = s.replace(/AXIS2C_HOME/, axis2c_home); s = r; } while (s.search(/libpwcb\.so/) != -1) { r = s.replace(/libpwcb\.so/, "pwcb.dll"); s = r; } while (s.search(/librdflatfile\.so/) != -1) { r = s.replace(/librdflatfile\.so/, "rdflatfile.dll"); s = r; } while (s.search(/libsctprovider\.so/) != -1) { r = s.replace(/libsctprovider\.so/, "sctprovider.dll"); s = r; } while (s.search(/libsctprovider_hashdb\.so/) != -1) { r = s.replace(/libsctprovider_hashdb\.so/, "sctprovider_hashdb.dll"); s = r; } f.write(s); f.close(); rampartc-src-1.3.0/samples/secpolicy/scenario14/0000755000076500007650000000000011202454512021365 5ustar shankarshankarrampartc-src-1.3.0/samples/secpolicy/scenario14/client-policy.xml0000644000076500007650000000660011202453430024662 0ustar shankarshankar Alice 360 a Digest AXIS2C_HOME/samples/lib/rampartc/libpwcb.so AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/bob_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/alice_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/alice_key.pem rampartc-src-1.3.0/samples/secpolicy/scenario14/services.xml0000644000076500007650000000741311202453430023735 0ustar shankarshankar sec_echo This is a testing service , to test the system is working or not http://example.com/ws/2004/09/policy/Test/EchoRequest Bob 360 b Digest AXIS2C_HOME/samples/lib/rampartc/libpwcb.so AXIS2C_HOME/samples/src/rampartc/data/keys/bhome/alice_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/bhome/bob_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/bhome/bob_key.pem rampartc-src-1.3.0/samples/secpolicy/scenario26/0000755000076500007650000000000011202454513021371 5ustar shankarshankarrampartc-src-1.3.0/samples/secpolicy/scenario26/client-policy.xml0000644000076500007650000002365211202453431024674 0ustar shankarshankar Alice 360 a Digest AXIS2C_HOME/samples/lib/rampartc/libpwcb.so AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/bob_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/alice_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/alice_key.pem Alice 360 a Digest AXIS2C_HOME/samples/lib/rampartc/libpwcb.so AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/bob_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/alice_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/ahome/alice_key.pem Alice 360 Digest AXIS2C_HOME/samples/lib/rampartc/libpwcb.so rampartc-src-1.3.0/samples/secpolicy/scenario26/services.xml0000644000076500007650000002245711202453431023746 0ustar shankarshankar sec_echo This is a testing service , to test the system is working or not http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT Bob 360 b Digest AXIS2C_HOME/samples/lib/rampartc/libpwcb.so AXIS2C_HOME/samples/src/rampartc/data/keys/bhome/alice_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/bhome/bob_cert.cert AXIS2C_HOME/samples/src/rampartc/data/keys/bhome/bob_key.pem http://example.com/ws/2004/09/policy/Test/EchoRequest 360 360 Bob Digest AXIS2C_HOME/samples/lib/rampartc/libpwcb.so rampartc-src-1.3.0/samples/secpolicy/README0000644000076500007650000001253111202453432020277 0ustar shankarshankarThe scenarios available here can be deployed using deploy.sh Simply give the scenario name as an argument to the script. E.g. %sh deploy.sh scenario1 Windows users please use the "deploy.bat". Make sure you have run the ../client/deploy_client_repo.sh on Linux or ..\client\deploy_client_repo.bat in Windows. These scenarios will only copy the security policy (XML) files. Then start the server. (simple_axis_server is in $AXIS2C_HOME/bin) To run the client, use the script "../client/sec_echo/update_n_run.sh" on Linux or "..\client\sec_echo\update_n_run.bat" on Windows. Following is a summary of scenarios available. Scenario Summary ------------------- 1. Timestamp 2. UsernameToken 3. Encryption 4. Signature 5. A complete scenario to show: Timestamp, UsernameToken, Encrypt, The protection order is Sign->Encrypt Signature is Encrypted 6. A complete scenario to show: Timestamp, UsernameToken, Encrypt, The protection order is Encrypt->Sign Signature is Encrypted 7. Replay detection 8. Symmetric binding. Encryption using derived keys. 9. Symmetric binding. Signature 10. Symmetric binding. Both encryption and sign. The protection order is Encrypt->Sign 11. Symmetric binding. Both encryption and sign. The protection order is Sign->Encrypt 12. Symmetric binding. Both encryption and sign. The protection order is Sign->Encrypt Signature is Encrypted 13. Symmetric binding. Both encryption and sign. The protection order is Encrypt->Sign Signature is Encrypted 14. SAML Signed supporting token inclution. This scenario uses the saml_echo client. 15. Symmetric binding with security context token. Encryption only. 16. Symmetric binding with security context token. Both encryption and sign. The protection order is Encrypt->Sign 17. Symmetric binding with secure conversation token. Using derived keys. Both encryption and sign The protection token is Sign->Encrypt 18. Symmetric binding with secure conversation token. Using different tokens for encryption and signature.Using DerivedKeys The protection token is Encrypt->Sign. Signature is Encrypted. 19. Symmetric binding with secure conversation token. Using different tokens for encryption and signature. The protection token is Sign->Encrypt. Signature is Encrypted. 20. SAML Scenario. Get a SAML token from samlsts and give the saml token to sec_echo service to access the service. Cannot be run with test_scen.sh. Please use saml.sh script 21. Asymetric binding encryption with PKCS12 as the key store. 22. Asymetric binding signature with PKCS12 as the key store. 23. Symmetric binding signature and encryption with PKCS12 key store. 24. SAML as a protection token for signing and encrypting a message. 25. SecureConversation using Rahas module. Issue operation is defined in rahas 26. SecureConversation using Rahas module. Issue operation is defined in service 27. Same as 25. With WS-SecurityPolicy1.2, WS-Trust1.3 and WS-SecConv 1.3 28. Same as 26. With WS-SecurityPolicy1.2, WS-Trust1.3 and WS-SecConv 1.3 FAQ: --- * I am NOT on LINUX. Are there any changes to be done in samples. ---------------------------------------------------------------- YES. You have to change file names accordingly. For example your password callback module might have "*.so" as the extension. This might be different in WIN32 and Mac OS. * I am in a HURRY and I need to try a scenario -------------------------------------------- If you are in a real hurry and need to try a scenario please use "test_scen.sh". Usage : %sh test_scen.sh scenarioX server-port E.g. %sh test_scen.sh scenario3 8080 test_scen.bat scenario3 8080 * I need to try all the scenarios ------------------------------- In this case please use the script run_all.sh. Usage: %sh run_all.sh server-port E.g. %sh run_all.sh 8080 run_all.bat 8080 * I need to see messages exchanged -------------------------------------- You may use the TCP Monitor utility: http://ws.apache.org/commons/tcpmon/ Make sure that you give the correct port that you have configured in TCPMon while running the scripts. * I cannot run samples and log says keys cannot be loaded --------------------------------------------------------- Check your policy files. Make sure that you have correct paths specified for key/certificate files. * My client sends a secured SOAP request. But the server throws me SOAP faults. ------------------------------------------------------------------------------ Well. You are on it. Check whether the server's policy configurations are satisfied by the client's policies. There is a element carrying the information you need in the SOAP fault. Misconfigurations in the server also can be resulted in a SOAP fault. *Hmm... I'm still in a trouble. Can I contact you guys? ------------------------------------------------------- Indeed you can. Please check here. http://ws.apache.org/rampart/c/lists_issues.html Err... if you can attach log files under AXIS2C_HOME/logs, a trace of SOAP message, plus anything that you think relavent, that'll help the troubleshooting process. rampartc-src-1.3.0/samples/secpolicy/scenario19/0000755000076500007650000000000011202454513021373 5ustar shankarshankarrampartc-src-1.3.0/samples/secpolicy/scenario19/client-policy.xml0000644000076500007650000001533511202453431024675 0ustar shankarshankar http://localhost:9090/axis2/services/secconv_echo/RequestSecurityToken 360 http://localhost:9090/axis2/services/secconv_echo/RequestSecurityToken 360 Alice 360 Digest AXIS2C_HOME/samples/lib/rampartc/libpwcb.so AXIS2C_HOME/samples/lib/rampartc/libsctprovider_hashdb.so rampartc-src-1.3.0/samples/secpolicy/scenario19/services.xml0000644000076500007650000001572311202453431023746 0ustar shankarshankar sec_echo This is a testing service , to test the system is working or not http://example.com/ws/2004/09/policy/Test/EchoRequest http://localhost:9090/axis2/services/secconv_echo/RequestSecurityToken 360 http://localhost:9090/axis2/services/secconv_echo/RequestSecurityToken 360 Bob Digest AXIS2C_HOME/samples/lib/rampartc/libpwcb.so AXIS2C_HOME/samples/lib/rampartc/libsctprovider_hashdb.so rampartc-src-1.3.0/samples/NEWS0000644000076500007650000000000011202453434016112 0ustar shankarshankarrampartc-src-1.3.0/samples/client/0000755000076500007650000000000011202454513016702 5ustar shankarshankarrampartc-src-1.3.0/samples/client/issued_token/0000755000076500007650000000000011202454513021376 5ustar shankarshankarrampartc-src-1.3.0/samples/client/issued_token/update_n_run.sh0000755000076500007650000000057611202453434024431 0ustar shankarshankar#!/bin/bash #If your client repository is different, change the value. CLIENT_REPO="$AXIS2C_HOME/client_repo" #INSTALL MODULE to make sure that both server and client have the same module. echo "Copying latest module to client_repo" cp -r $AXIS2C_HOME/modules/rampart $CLIENT_REPO/modules #RUN ./issued_token http://localhost:9090/axis2/services/sec_echo/echoString $CLIENT_REPO rampartc-src-1.3.0/samples/client/issued_token/Makefile.am0000644000076500007650000000143611202453434023437 0ustar shankarshankarprgbindir=$(prefix)/samples/bin/rampartc prgbin_PROGRAMS = issued_token_echo issued_token_echo_SOURCES = echo.c issued_token_echo_LDADD = $(LDFLAGS) \ -L$(AXIS2C_HOME)/lib \ -L$(prefix)/lib \ -lrampart \ -laxutil \ -laxis2_axiom \ -lneethi \ -laxis2_engine \ -laxis2_parser \ -lpthread \ -laxis2_http_sender \ -laxis2_http_receiver \ $(GUTHTHILA_LIBS) \ $(LIBXML2_LIBS) INCLUDES = @AXIS2INC@ \ -I$(AXIS2C_HOME)/include \ -I ../../../include EXTRA_DIST = update_n_run.sh install-data-hook: cp update_n_run.sh $(prefix)/samples/bin/rampartc/issues_token_update_n_run.sh rampartc-src-1.3.0/samples/client/issued_token/echo.c0000644000076500007650000002561211202453434022467 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include axiom_node_t * build_om_payload_for_echo_svc(const axutil_env_t *env); rampart_issued_token_t * AXIS2_CALL get_issued_token(const axutil_env_t *env, rp_property_t *issued_token, rampart_context_t *rampart_context); axis2_char_t *policy_file = NULL; axis2_char_t *sts_ploicy = NULL; const axis2_char_t *client_home = NULL; int main(int argc, char** argv) { const axutil_env_t *env = NULL; const axis2_char_t *address = NULL; axis2_char_t *file_name = NULL; axis2_endpoint_ref_t* endpoint_ref = NULL; axis2_options_t *options = NULL; axis2_svc_client_t* svc_client = NULL; axiom_node_t *payload = NULL; axiom_node_t *ret_node = NULL; axis2_status_t status = AXIS2_FAILURE; neethi_policy_t *policy = NULL; rampart_config_t* client_config = NULL; axutil_property_t *property = NULL; /* Set up the environment */ env = axutil_env_create_all("echo.log", AXIS2_LOG_LEVEL_TRACE); /* Set end-point-reference of echo service */ address = "http://localhost:9090/axis2/services/echo"; if (argc > 2) { address = argv[1]; client_home = argv[2]; printf("Using endpoint : %s\n", address); printf("Using client_home : %s\n", client_home); } if ((axutil_strcmp(argv[1], "-h") == 0) || (axutil_strcmp(argv[1], "--help") == 0)) { printf("Usage : %s [endpoint_url] [client_home]\n", argv[0]); printf("use -h for help\n"); return 0; } /* Create end-point-reference with given address */ endpoint_ref = axis2_endpoint_ref_create(env, address); /* Setup options */ options = axis2_options_create(env); axis2_options_set_to(options, env, endpoint_ref); axis2_options_set_action(options, env, "http://example.com/ws/2004/09/policy/Test/EchoRequest"); /*axis2_options_set_action(options, env, "urn:echo");*/ /*If the client home is not specified, use the AXIS2C_HOME*/ if (!client_home) { client_home = AXIS2_GETENV("AXIS2C_HOME"); printf("\nNo client_home specified. Using default %s", client_home); } /* Create service client */ printf("client_home= %s", client_home); svc_client = axis2_svc_client_create(env, client_home); if (!svc_client) { printf("Error creating service client\n"); return -1; } client_config = rampart_config_create(env); if(!client_config) { printf("Cannot create rampart config\n"); return 0; } rampart_config_set_issued_token_aquire_function(client_config, env, (rampart_issued_token_t*)get_issued_token); property = axutil_property_create_with_args(env, AXIS2_SCOPE_REQUEST , AXIS2_TRUE, (void *)rampart_config_free, client_config); axis2_options_set_property(options, env, RAMPART_CLIENT_CONFIGURATION, property); /* Set service client options */ axis2_svc_client_set_options(svc_client, env, options); /*We need to specify the client's policy file location*/ if(client_home) { file_name = axutil_stracat(env, client_home, AXIS2_PATH_SEP_STR); policy_file = axutil_stracat(env, file_name, "policy.xml"); sts_ploicy = axutil_stracat(env, file_name, "sts_policy.xml"); AXIS2_FREE(env->allocator, file_name); file_name = NULL; }else{ printf("Client Home not Specified\n"); printf("echo client invoke FAILED!\n"); return 0; } /*Create the policy, from file*/ policy = neethi_util_create_policy_from_file(env, policy_file); if(policy_file){ AXIS2_FREE(env->allocator, policy_file); policy_file = NULL; } if(!policy) { printf("\nPolicy creation failed from the file. %s\n", policy_file); } status = axis2_svc_client_set_policy(svc_client, env, policy); if(status == AXIS2_FAILURE) { printf("Policy setting failed\n"); } /* Build the SOAP request message payload using OM API.*/ payload = build_om_payload_for_echo_svc(env); /*If not engaged in the client's axis2.xml, uncomment this line*/ /*axis2_svc_client_engage_module(svc_client, env, "rampart");*/ /* Send request */ ret_node = axis2_svc_client_send_receive(svc_client, env, payload); if (axis2_svc_client_get_last_response_has_fault(svc_client, env)) { axiom_soap_envelope_t *soap_envelope = NULL; axiom_soap_body_t *soap_body = NULL; axiom_soap_fault_t *soap_fault = NULL; printf ("\nResponse has a SOAP fault\n"); soap_envelope = axis2_svc_client_get_last_response_soap_envelope(svc_client, env); if (soap_envelope) soap_body = axiom_soap_envelope_get_body(soap_envelope, env); if (soap_body) soap_fault = axiom_soap_body_get_fault(soap_body, env); if (soap_fault) { printf("\nReturned SOAP fault: %s\n", axiom_node_to_string(axiom_soap_fault_get_base_node(soap_fault,env), env)); } printf("echo client invoke FAILED!\n"); return -1; } if (ret_node) { axis2_char_t *om_str = NULL; om_str = axiom_node_to_string(ret_node, env); if (om_str) { printf("\nReceived OM : %s\n", om_str); } printf("\necho client invoke SUCCESSFUL!\n"); AXIS2_FREE(env->allocator, om_str); ret_node = NULL; } else { printf("echo client invoke FAILED!\n"); return -1; } if (svc_client) { axis2_svc_client_free(svc_client, env); svc_client = NULL; } if (env) { axutil_env_free((axutil_env_t *) env); env = NULL; } return 0; } /* build SOAP request message content using OM */ axiom_node_t * build_om_payload_for_echo_svc(const axutil_env_t *env) { axiom_node_t *echo_om_node = NULL; axiom_element_t* echo_om_ele = NULL; axiom_node_t* text_om_node = NULL; axiom_element_t * text_om_ele = NULL; axiom_namespace_t *ns1 = NULL; axis2_char_t *om_str = NULL; ns1 = axiom_namespace_create(env, "http://ws.apache.org/rampart/c/samples", "ns1"); echo_om_ele = axiom_element_create(env, NULL, "echoIn", ns1, &echo_om_node); text_om_ele = axiom_element_create(env, echo_om_node, "text", NULL, &text_om_node); axiom_element_set_text(text_om_ele, env, "Hello", text_om_node); om_str = axiom_node_to_string(echo_om_node, env); if (om_str){ printf("\nSending OM : %s\n", om_str); AXIS2_FREE(env->allocator, om_str); om_str = NULL; } return echo_om_node; } rampart_issued_token_t * AXIS2_CALL get_issued_token(const axutil_env_t *env, rp_property_t *issued_token, rampart_context_t *rampart_context) { axis2_endpoint_ref_t *endpoint_ref = NULL; axis2_options_t *options = NULL; axis2_svc_client_t *svc_client = NULL; axiom_node_t *rst_node = NULL; axiom_node_t *return_rstr_node = NULL; trust_rstr_t *rstr = NULL; axiom_node_t *assertion = NULL; rampart_saml_token_t *saml = NULL; rampart_issued_token_t *token = NULL; axis2_op_client_t* op_client = NULL; axis2_msg_ctx_t *in_msg_ctx = NULL; axis2_status_t status = AXIS2_SUCCESS; neethi_policy_t *issuer_policy = NULL; trust_rst_t *rst = NULL; rp_issued_token_t *it = (rp_issued_token_t *)rp_property_get_value(issued_token, env); /*Setting Issuer's EPR*/ endpoint_ref = endpoint_ref = axis2_endpoint_ref_create(env, "http://127.0.0.1:9090/axis2/services/saml_sts"); options = axis2_options_create(env); axis2_options_set_to(options, env, endpoint_ref); /*Create the policy, from file*/ issuer_policy = neethi_util_create_policy_from_file(env, sts_ploicy); if(!issuer_policy) { printf("\nPolicy creation failed from the file. %s\n", policy_file); } /*axis2_options_set_action(options, env, action); WSA Action*/ svc_client = axis2_svc_client_create(env, client_home); if (!svc_client) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Stub invoke FAILED: Error code:" " %d :: %s", env->error->error_number, AXIS2_ERROR_GET_MESSAGE(env->error)); return NULL; } axis2_options_set_action(options, env, "http://example.com/ws/2004/09/policy/Test/EchoRequest"); /* Set service client options */ axis2_svc_client_set_options(svc_client, env, options); rst = trust_rst_create(env); trust_rst_set_wst_ns_uri(rst, env, "http://schemas.xmlsoap.org/ws/2005/02/trust"); rst_node = trust_rst_build_rst_with_issued_token_assertion(rst, env, it); if (status == AXIS2_SUCCESS) { status = axis2_svc_client_set_policy(svc_client, env, issuer_policy); if (status == AXIS2_FAILURE) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Policy setting failed."); } /*Building the RST */ if(rst_node) { return_rstr_node = axis2_svc_client_send_receive(svc_client, env, rst_node); rstr = trust_rstr_create(env); trust_rstr_set_wst_ns_uri(rstr, env, "http://schemas.xmlsoap.org/ws/2005/02/trust"); trust_rstr_populate_rstr(rstr, env, return_rstr_node); assertion = trust_rstr_get_requested_security_token(rstr, env); } } saml = rampart_saml_token_create(env, assertion, RAMPART_ST_CONFIR_TYPE_SENDER_VOUCHES); rampart_saml_token_set_token_type(saml, env, RAMPART_ST_TYPE_SIGNED_SUPPORTING_TOKEN); token = rampart_issued_token_create(env); rampart_issued_token_set_token(token, env, saml, RP_PROPERTY_SAML_TOKEN); return token; } rampartc-src-1.3.0/samples/client/Makefile.am0000644000076500007650000000020411202453434020733 0ustar shankarshankarTESTS = SUBDIRS = sec_echo sts_client saml_echo issued_token saml_protect EXTRA_DIST = deploy_client_repo.bat deploy_client_repo.sh rampartc-src-1.3.0/samples/client/sts_client/0000755000076500007650000000000011202454513021051 5ustar shankarshankarrampartc-src-1.3.0/samples/client/sts_client/Makefile.am0000644000076500007650000000137011202453434023107 0ustar shankarshankarprgbindir=$(prefix)/samples/bin/rampartc prgbin_PROGRAMS = sts_client datadir=$(prefix)/samples/bin/rampartc #data_DATA= client.xml service.xml sts_client_SOURCES = client.c sts_client_LDADD = $(LDFLAGS) \ -L$(AXIS2C_HOME)/lib \ -L$(prefix)/lib \ -lrampart \ -laxutil \ -laxis2_axiom \ -lneethi \ -laxis2_engine \ -laxis2_parser \ -lpthread \ -laxis2_http_sender \ -laxis2_http_receiver \ $(GUTHTHILA_LIBS) \ $(LIBXML2_LIBS) INCLUDES = @AXIS2INC@ \ -I$(AXIS2C_HOME)/include \ -I ../../../include #EXTRA_DIST = client.xml service.xml rampartc-src-1.3.0/samples/client/sts_client/client.c0000644000076500007650000000561311202453434022501 0ustar shankarshankar#include #include #include #include #include #include #include #include #include int main( int argc, char **argv) { trust_sts_client_t *sts_client = NULL; const axutil_env_t *env = NULL; const axis2_char_t *address = NULL; const axis2_char_t *client_home = NULL; axis2_char_t *file_name = NULL; axis2_char_t *file_name2 = NULL; axis2_char_t *appliesto = "http://oasis.open.org"; axis2_char_t *token = "oasis:names:tc:SAML:1.0:assertion"; axis2_char_t *request_type = "http://schemas.xmlsoap.org/ws/2005/02/RST/Issue"; axis2_char_t *action = "http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Issue"; trust_context_t *trust_ctx = NULL; trust_rst_t *rst = NULL; /* Set up the environment */ env = axutil_env_create_all("sts.log", AXIS2_LOG_LEVEL_TRACE); /* Set end point reference of echo service */ address = "http://localhost:9090/axis2/services/saml_sts"; if(argc > 2) { address = argv[2]; client_home = argv[1]; } else if(argc == 2) { client_home = argv[1]; printf("Client Home : %s\n", client_home); if(!(axutil_strcmp(client_home, "-h"))) { printf("STS Client Usage:\n"); printf("\t./sts_client [client home] [end point]\n"); printf("\tUse ./sts_client -h for help\n"); return -1; } } else if(argc < 2) { printf("Insufficient Arguments.\n"); printf("Use ./sts_client -h for help\n"); return -1; } file_name = "./client.xml"; file_name2 = "./service.xml"; sts_client = trust_sts_client_create(env); trust_sts_client_set_home_dir(sts_client, env, client_home); trust_sts_client_set_issuer_address(sts_client, env, address); trust_sts_client_set_issuer_policy_location(sts_client, env, file_name); trust_sts_client_set_service_policy_location(sts_client, env, file_name2); trust_ctx = trust_context_create(env); rst = trust_rst_create(env); trust_rst_set_wst_ns_uri(rst, env, "http://schemas.xmlsoap.org/ws/2005/02/trust"); trust_rst_set_token_type(rst, env, token); trust_rst_set_appliesto(rst, env, appliesto); trust_rst_set_request_type(rst, env, request_type); trust_rst_set_wsa_action(rst, env, action); trust_context_set_rst(trust_ctx, env, rst); trust_sts_client_request_security_token(sts_client, env, trust_ctx); /*Acquire Sec Token*/ if(trust_context_get_rstr(trust_ctx, env)) { if(trust_rstr_get_requested_security_token( trust_context_get_rstr(trust_ctx, env), env)) { printf("\n\nReceived Sec Token : %s\n", axiom_node_to_string(trust_rstr_get_requested_security_token( trust_context_get_rstr(trust_ctx, env), env), env) ); } } trust_sts_client_free(sts_client, env); return 0; } rampartc-src-1.3.0/samples/client/sts_client/client.xml0000644000076500007650000000357011202453434023057 0ustar shankarshankar 360 rampartc-src-1.3.0/samples/client/sts_client/service.xml0000644000076500007650000000756211202453434023246 0ustar shankarshankar Alice 360 a Digest AXIS2C_HOME/bin/samples/rampart/callback/libpwcb.so AXIS2C_HOME/bin/samples/rampart/keys/ahome/bob_cert.cert AXIS2C_HOME/bin/samples/rampart/keys/ahome/alice_cert.cert AXIS2C_HOME/bin/samples/rampart/keys/ahome/alice_key.pem rampartc-src-1.3.0/samples/client/sec_echo/0000755000076500007650000000000011202454513020452 5ustar shankarshankarrampartc-src-1.3.0/samples/client/sec_echo/update_n_run.sh0000755000076500007650000000055711202453434023504 0ustar shankarshankar#!/bin/bash #If your client repository is different, change the value. CLIENT_REPO="$AXIS2C_HOME/client_repo" #INSTALL MODULE to make sure that both server and client have the same module. echo "Copying latest module to client_repo" cp -r $AXIS2C_HOME/modules/rampart $CLIENT_REPO/modules #RUN ./sec_echo http://localhost:9090/axis2/services/sec_echo $CLIENT_REPO rampartc-src-1.3.0/samples/client/sec_echo/update_n_run.bat0000644000076500007650000000070211202453434023625 0ustar shankarshankar@echo off rem if your client repository is different, change the value. set CLIENT_REPO=%AXIS2C_HOME%\client_repo rem INSTALL MODULE to make sure that both server and client have the same module. echo "Copying latest module to client_repo" xcopy /E /Y /I "%AXIS2C_HOME%\modules\rampart" "%CLIENT_REPO%\modules\rampart" %AXIS2C_HOME%\samples\bin\rampartc\sec_echo.exe http://localhost:9090/axis2/services/sec_echo %CLIENT_REPO% @echo on rampartc-src-1.3.0/samples/client/sec_echo/Makefile.am0000644000076500007650000000130711202453434022510 0ustar shankarshankarprgbindir=$(prefix)/samples/bin/rampartc prgbin_PROGRAMS = sec_echo datadir=$(prefix)/samples/bin/rampartc data_DATA= update_n_run.sh sec_echo_SOURCES = echo.c sec_echo_LDADD = $(LDFLAGS) \ -L$(AXIS2C_HOME)/lib \ -laxutil \ -laxis2_axiom \ -lneethi \ -laxis2_engine \ -laxis2_parser \ -lpthread \ -laxis2_http_sender \ -laxis2_http_receiver \ $(GUTHTHILA_LIBS) \ $(LIBXML2_LIBS) INCLUDES = @AXIS2INC@ \ -I$(AXIS2C_HOME)/include \ -I ../../../include EXTRA_DIST = update_n_run.sh update_n_run.bat rampartc-src-1.3.0/samples/client/sec_echo/echo.c0000644000076500007650000002735111202453434021545 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include #include #include #include axiom_node_t * build_om_payload_for_echo_svc(const axutil_env_t *env); axiom_node_t * build_om_payload_for_echo_svc_interop(const axutil_env_t *env); axiom_node_t * build_om_programatically_mtom(const axutil_env_t * env); int main(int argc, char** argv) { const axutil_env_t *env = NULL; const axis2_char_t *address = NULL; const axis2_char_t *client_home = NULL; axis2_char_t *file_name = NULL; axis2_char_t *policy_file = NULL; axis2_endpoint_ref_t* endpoint_ref = NULL; axis2_options_t *options = NULL; axis2_svc_client_t* svc_client = NULL; axiom_node_t *payload = NULL; axiom_node_t *ret_node = NULL; axis2_status_t status = AXIS2_FAILURE; neethi_policy_t *policy = NULL; /*axutil_property_t *property = NULL; int i = 0;*/ /* Set up the environment */ env = axutil_env_create_all("echo.log", AXIS2_LOG_LEVEL_TRACE); /*if (argc == 4) AXIS2_SLEEP(10); */ /* Set end-point-reference of echo service */ address = "http://localhost:9090/axis2/services/echo"; if (argc > 2) { address = argv[1]; client_home = argv[2]; printf("Using endpoint : %s\n", address); printf("Using client_home : %s\n", client_home); } if ((axutil_strcmp(argv[1], "-h") == 0) || (axutil_strcmp(argv[1], "--help") == 0)) { printf("Usage : %s [endpoint_url] [client_home]\n", argv[0]); printf("use -h for help\n"); return 0; } /* Create end-point-reference with given address */ endpoint_ref = axis2_endpoint_ref_create(env, address); /* Setup options */ options = axis2_options_create(env); axis2_options_set_to(options, env, endpoint_ref); axis2_options_set_action(options, env, "http://example.com/ws/2004/09/policy/Test/EchoRequest"); /*axis2_options_set_action(options, env, "http://xmlsoap.org/Ping");*/ /*axis2_options_set_action(options, env, "urn:echoString");*/ /*axis2_options_set_soap_action(options, env, axutil_string_create(env, "http://xmlsoap.org/Ping")); axis2_options_set_soap_version(options, env, AXIOM_SOAP11);*/ axis2_options_set_soap_version(options, env, AXIOM_SOAP12); /*If the client home is not specified, use the AXIS2C_HOME*/ if (!client_home) { client_home = AXIS2_GETENV("AXIS2C_HOME"); printf("\nNo client_home specified. Using default %s", client_home); } /* Create service client */ printf("client_home= %s", client_home); svc_client = axis2_svc_client_create(env, client_home); if (!svc_client) { printf("Error creating service client\n"); return -1; } /* Set service client options */ axis2_svc_client_set_options(svc_client, env, options); /* property = axutil_property_create(env); axutil_property_set_scope(property, env, AXIS2_SCOPE_APPLICATION); axutil_property_set_value(property, env, AXIS2_WSA_NAMESPACE_SUBMISSION); axis2_options_set_property(options, env, AXIS2_WSA_VERSION, property); */ /*We need to specify the client's policy file location*/ if(client_home) { file_name = axutil_stracat(env, client_home, AXIS2_PATH_SEP_STR); policy_file = axutil_stracat(env, file_name, "policy.xml" ); AXIS2_FREE(env->allocator, file_name); file_name = NULL; }else{ printf("Client Home not Specified\n"); printf("echo client invoke FAILED!\n"); return 0; } /*Create the policy, from file*/ policy = neethi_util_create_policy_from_file(env, policy_file); if(policy_file){ AXIS2_FREE(env->allocator, policy_file); policy_file = NULL; } if(!policy) { printf("\nPolicy creation failed from the file. %s\n", policy_file); } status = axis2_svc_client_set_policy(svc_client, env, policy); if(status == AXIS2_FAILURE) { printf("Policy setting failed\n"); } /* Build the SOAP request message payload using OM API.*/ payload = build_om_payload_for_echo_svc(env); /*axis2_options_set_enable_mtom(options, env, AXIS2_TRUE);*/ /*If not engaged in the client's axis2.xml, uncomment this line*/ /*axis2_svc_client_engage_module(svc_client, env, "rampart");*/ /* Send request */ ret_node = axis2_svc_client_send_receive(svc_client, env, payload); if (axis2_svc_client_get_last_response_has_fault(svc_client, env)) { axiom_soap_envelope_t *soap_envelope = NULL; axiom_soap_body_t *soap_body = NULL; axiom_soap_fault_t *soap_fault = NULL; printf ("\nResponse has a SOAP fault\n"); soap_envelope = axis2_svc_client_get_last_response_soap_envelope(svc_client, env); if (soap_envelope) soap_body = axiom_soap_envelope_get_body(soap_envelope, env); if (soap_body) soap_fault = axiom_soap_body_get_fault(soap_body, env); if (soap_fault) { printf("\nReturned SOAP fault: %s\n", axiom_node_to_string(axiom_soap_fault_get_base_node(soap_fault,env), env)); } printf("echo client invoke FAILED!\n"); return -1; } if (ret_node) { axis2_char_t *om_str = NULL; om_str = axiom_node_to_string(ret_node, env); if (om_str) { printf("\nReceived OM : %s\n", om_str); } printf("\necho client invoke SUCCESSFUL!\n"); AXIS2_FREE(env->allocator, om_str); ret_node = NULL; } else { printf("echo client invoke FAILED!\n"); return -1; } if (svc_client) { axis2_svc_client_free(svc_client, env); svc_client = NULL; } if (env) { axutil_env_free((axutil_env_t *) env); env = NULL; } return 0; } /* build SOAP request message content using OM */ axiom_node_t * build_om_payload_for_echo_svc(const axutil_env_t *env) { axiom_node_t *echo_om_node = NULL; axiom_element_t* echo_om_ele = NULL; axiom_node_t* text_om_node = NULL; axiom_element_t * text_om_ele = NULL; axiom_namespace_t *ns1 = NULL; axis2_char_t *om_str = NULL; ns1 = axiom_namespace_create(env, "http://ws.apache.org/rampart/c/samples", "ns1"); /*ns1 = axiom_namespace_create(env, "http://echo.services.wsas.wso2.org", "ns1");*/ echo_om_ele = axiom_element_create(env, NULL, "echoIn", ns1, &echo_om_node); text_om_ele = axiom_element_create(env, echo_om_node, "text", NULL, &text_om_node); axiom_element_set_text(text_om_ele, env, "Hello", text_om_node); om_str = axiom_node_to_string(echo_om_node, env); if (om_str){ printf("\nSending OM : %s\n", om_str); AXIS2_FREE(env->allocator, om_str); om_str = NULL; } return echo_om_node; } /* build SOAP request message content using OM (for java interop)*/ axiom_node_t * build_om_payload_for_echo_svc_interop(const axutil_env_t *env) { axiom_node_t *ping_request_om_node = NULL; axiom_element_t* ping_request_om_ele = NULL; axiom_node_t *ping_om_node = NULL; axiom_element_t* ping_om_ele = NULL; axiom_node_t* text_om_node = NULL; axiom_element_t * text_om_ele = NULL; axiom_namespace_t *ns1 = NULL; axiom_namespace_t *ns0 = NULL; axis2_char_t *om_str = NULL; ns0 = axiom_namespace_create(env, "http://InteropBaseAddress/interop", "ns0"); ns1 = axiom_namespace_create(env, "http://xmlsoap.org/Ping", "ns1"); ping_request_om_ele = axiom_element_create(env, NULL, "PingRequest", ns0, &ping_request_om_node); ping_om_ele = axiom_element_create(env, ping_request_om_node, "Ping", ns1, &ping_om_node); text_om_ele = axiom_element_create(env, ping_om_node, "scenario", ns1, &text_om_node); axiom_element_set_text(text_om_ele, env, "scenario", text_om_node); text_om_node= NULL; text_om_ele = axiom_element_create(env, ping_om_node, "origin", ns1, &text_om_node); axiom_element_set_text(text_om_ele, env, "origin", text_om_node); text_om_node= NULL; text_om_ele = axiom_element_create(env, ping_om_node, "text", ns1, &text_om_node); axiom_element_set_text(text_om_ele, env, "text", text_om_node); om_str = axiom_node_to_string(ping_request_om_node, env); if (om_str){ printf("\nSending OM : %s\n", om_str); AXIS2_FREE(env->allocator, om_str); om_str = NULL; } return ping_request_om_node; } /* build SOAP request message content using OM */ axiom_node_t * build_om_programatically_mtom( const axutil_env_t * env) { axiom_node_t *mtom_om_node = NULL; axiom_element_t *mtom_om_ele = NULL; axiom_node_t *image_om_node = NULL; axiom_element_t *image_om_ele = NULL; axiom_node_t *file_om_node = NULL; axiom_element_t *file_om_ele = NULL; axiom_node_t *data_om_node = NULL; axiom_text_t *data_text = NULL; axiom_namespace_t *ns1 = NULL; axis2_char_t *om_str = NULL; const axis2_char_t *image_name = "E:/src/C/Axis2C/build/deploy/samples/bin/resources/axis2.jpg"; const axis2_char_t *to_save_name = "test.jpg"; axis2_bool_t optimized = AXIS2_TRUE; axiom_data_handler_t *data_handler = NULL; ns1 = axiom_namespace_create(env, "http://ws.apache.org/axis2/c/samples/mtom", "ns1"); mtom_om_ele = axiom_element_create(env, NULL, "mtomSample", ns1, &mtom_om_node); file_om_ele = axiom_element_create(env, mtom_om_node, "fileName", ns1, &file_om_node); axiom_element_set_text(file_om_ele, env, to_save_name, file_om_node); image_om_ele = axiom_element_create(env, mtom_om_node, "image", ns1, &image_om_node); /* This is when we directly give file name */ data_handler = axiom_data_handler_create(env, image_name, "image/jpeg"); /* Uncomment following to set a callback instead of a file */ /*data_handler = axiom_data_handler_create(env, NULL, "image/jpeg"); axiom_data_handler_set_data_handler_type(data_handler, env, AXIOM_DATA_HANDLER_TYPE_CALLBACK); axiom_data_handler_set_user_param(data_handler, env, (void *)image_name);*/ data_text = axiom_text_create_with_data_handler(env, image_om_node, data_handler, &data_om_node); axiom_text_set_optimize(data_text, env, optimized); /*axiom_text_set_is_swa(data_text, env, AXIS2_TRUE);*/ om_str = axiom_node_to_string(mtom_om_node, env); if (om_str) { printf("%s", om_str); AXIS2_FREE(env->allocator, om_str); } return mtom_om_node; } rampartc-src-1.3.0/samples/client/saml_protect/0000755000076500007650000000000011202454513021376 5ustar shankarshankarrampartc-src-1.3.0/samples/client/saml_protect/update_n_run.sh0000755000076500007650000000057611202453434024431 0ustar shankarshankar#!/bin/bash #If your client repository is different, change the value. CLIENT_REPO="$AXIS2C_HOME/client_repo" #INSTALL MODULE to make sure that both server and client have the same module. echo "Copying latest module to client_repo" cp -r $AXIS2C_HOME/modules/rampart $CLIENT_REPO/modules #RUN ./saml_protect http://localhost:9090/axis2/services/sec_echo/echoString $CLIENT_REPO rampartc-src-1.3.0/samples/client/saml_protect/update_n_run.bat0000644000076500007650000000072611202453434024557 0ustar shankarshankar@echo off rem if your client repository is different, change the value. set CLIENT_REPO=%AXIS2C_HOME%\client_repo rem INSTALL MODULE to make sure that both server and client have the same module. echo "Copying latest module to client_repo" xcopy /E /Y /I "%AXIS2C_HOME%\modules\rampart" "%CLIENT_REPO%\modules\rampart" %AXIS2C_HOME%\samples\bin\rampartc\saml_protect_echo.exe http://localhost:9090/axis2/services/sec_echo/echoString %CLIENT_REPO% @echo on rampartc-src-1.3.0/samples/client/saml_protect/Makefile.am0000644000076500007650000000145711202453434023442 0ustar shankarshankarprgbindir=$(prefix)/samples/bin/rampartc prgbin_PROGRAMS = saml_protect_echo saml_protect_echo_SOURCES = echo.c saml_protect_echo_LDADD = $(LDFLAGS) \ -L$(AXIS2C_HOME)/lib \ -L$(prefix)/lib \ -laxutil \ -laxis2_axiom \ -lneethi \ -laxis2_engine \ -laxis2_parser \ -lpthread \ -laxis2_http_sender \ -laxis2_http_receiver \ -lrampart \ $(GUTHTHILA_LIBS) \ $(LIBXML2_LIBS) INCLUDES = @AXIS2INC@ \ -I$(AXIS2C_HOME)/include \ -I ../../../include EXTRA_DIST = update_n_run.sh update_n_run.bat install-data-hook: cp update_n_run.sh $(prefix)/samples/bin/rampartc/saml_protect_update_n_run.sh rampartc-src-1.3.0/samples/client/saml_protect/echo.c0000644000076500007650000003441511202453434022470 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include axiom_node_t * AXIS2_CALL build_om_payload_for_echo_svc(const axutil_env_t *env); rampart_saml_token_t * AXIS2_CALL create_saml_token(const axutil_env_t *env); oxs_key_t * AXIS2_CALL get_session_key(const axutil_env_t *env, axiom_node_t *assertion); axiom_node_t * AXIS2_CALL create_key_info(const axutil_env_t *env, rampart_saml_token_t *saml); saml_subject_t * AXIS2_CALL create_subject(const axutil_env_t *env, rampart_saml_token_t *saml); saml_auth_binding_t * AXIS2_CALL create_autherity_binding(const axutil_env_t *env); saml_stmt_t * AXIS2_CALL create_auth_statement(const axutil_env_t *env, rampart_saml_token_t *saml); saml_condition_t * AXIS2_CALL create_condition(const axutil_env_t *env); #define PRIVATE_KEY_FILE "/bin/samples/rampart/keys/ahome/alice_key.pem" #define PRIVATE_KEY_PASSWORD "password" #define CERTIFICATE_FILE "/bin/samples/rampart/keys/ahome/alice_cert.cert" #define RECEIVER_CERTIFICATE_FILE "/bin/samples/rampart/keys/ahome/bob_cert.cert" axis2_char_t *axis2c_home; int main(int argc, char** argv) { const axutil_env_t *env = NULL; const axis2_char_t *address = NULL; const axis2_char_t *client_home = NULL; axis2_char_t *file_name = NULL; axis2_char_t *policy_file = NULL; axis2_endpoint_ref_t* endpoint_ref = NULL; axis2_options_t *options = NULL; axis2_svc_client_t* svc_client = NULL; axiom_node_t *payload = NULL; axiom_node_t *ret_node = NULL; axis2_status_t status = AXIS2_FAILURE; neethi_policy_t *policy = NULL; rampart_config_t* client_config = NULL; axutil_property_t *property = NULL; rampart_saml_token_t *saml = NULL; /* Set up the environment */ env = axutil_env_create_all("echo.log", AXIS2_LOG_LEVEL_TRACE); printf("SAML PROOF"); /* Set end-point-reference of echo service */ address = "http://localhost:9090/axis2/services/echo"; if (argc > 2) { address = argv[1]; client_home = argv[2]; printf("Using endpoint : %s\n", address); printf("Using client_home : %s\n", client_home); } if (axutil_strcmp(address, "-h") == 0) { printf("Usage : %s [endpoint_url] [client_home]\n", argv[0]); printf("use -h for help\n"); return 0; } axis2c_home = AXIS2_GETENV("AXIS2C_HOME"); if (!axis2c_home) { printf("AXIS2C_HOME not set. Cannot find the key files"); return -1; } /* Create end-point-reference with given address */ endpoint_ref = axis2_endpoint_ref_create(env, address); /* Setup options */ options = axis2_options_create(env); axis2_options_set_to(options, env, endpoint_ref); axis2_options_set_action(options, env, "http://example.com/ws/2004/09/policy/Test/EchoRequest"); /*axis2_options_set_action(options, env, "urn:echo");*/ /*If the client home is not specified, use the AXIS2C_HOME*/ if (!client_home) { client_home = axutil_strdup(env, axis2c_home); printf("\nNo client_home specified. Using default %s", client_home); } /* Create service client */ printf("client_home= %s", client_home); svc_client = axis2_svc_client_create(env, client_home); if (!svc_client) { printf("Error creating service client\n"); return -1; } client_config = rampart_config_create(env); if(!client_config) { printf("Cannot create rampart config\n"); return 0; } saml = create_saml_token(env); rampart_config_add_saml_token(client_config, env, saml); property = axutil_property_create_with_args(env, AXIS2_SCOPE_REQUEST , AXIS2_TRUE, (void *)rampart_config_free, client_config); axis2_options_set_property(options, env, RAMPART_CLIENT_CONFIGURATION, property); /* Set service client options */ axis2_svc_client_set_options(svc_client, env, options); /*We need to specify the client's policy file location*/ if(client_home) { file_name = axutil_stracat(env, client_home, AXIS2_PATH_SEP_STR); policy_file = axutil_stracat(env, file_name, "policy.xml" ); AXIS2_FREE(env->allocator, file_name); file_name = NULL; }else{ printf("Client Home not Specified\n"); printf("echo client invoke FAILED!\n"); return 0; } /*Create the policy, from file*/ policy = neethi_util_create_policy_from_file(env, policy_file); if(!policy) { printf("\nPolicy creation failed from the file. %s\n", policy_file); } if(policy_file){ AXIS2_FREE(env->allocator, policy_file); policy_file = NULL; } status = axis2_svc_client_set_policy(svc_client, env, policy); if(status == AXIS2_FAILURE) { printf("Policy setting failed\n"); } /* Build the SOAP request message payload using OM API.*/ payload = build_om_payload_for_echo_svc(env); /*If not engaged in the client's axis2.xml, uncomment this line*/ /*axis2_svc_client_engage_module(svc_client, env, "rampart");*/ /* Send request */ ret_node = axis2_svc_client_send_receive(svc_client, env, payload); if (axis2_svc_client_get_last_response_has_fault(svc_client, env)) { axiom_soap_envelope_t *soap_envelope = NULL; axiom_soap_body_t *soap_body = NULL; axiom_soap_fault_t *soap_fault = NULL; printf ("\nResponse has a SOAP fault\n"); soap_envelope = axis2_svc_client_get_last_response_soap_envelope(svc_client, env); if (soap_envelope) soap_body = axiom_soap_envelope_get_body(soap_envelope, env); if (soap_body) soap_fault = axiom_soap_body_get_fault(soap_body, env); if (soap_fault) { printf("\nReturned SOAP fault: %s\n", axiom_node_to_string(axiom_soap_fault_get_base_node(soap_fault,env), env)); } printf("echo client invoke FAILED!\n"); return -1; } if (ret_node) { axis2_char_t *om_str = NULL; om_str = axiom_node_to_string(ret_node, env); if (om_str) { printf("\nReceived OM : %s\n", om_str); } printf("\necho client invoke SUCCESSFUL!\n"); AXIS2_FREE(env->allocator, om_str); ret_node = NULL; } else { printf("echo client invoke FAILED!\n"); return -1; } if (svc_client) { axis2_svc_client_free(svc_client, env); svc_client = NULL; } if (env) { axutil_env_free((axutil_env_t *) env); env = NULL; } return 0; } axiom_node_t * AXIS2_CALL build_om_payload_for_echo_svc(const axutil_env_t *env) { axiom_node_t *echo_om_node = NULL; axiom_element_t* echo_om_ele = NULL; axiom_node_t* text_om_node = NULL; axiom_element_t * text_om_ele = NULL; axiom_namespace_t *ns1 = NULL; axis2_char_t *om_str = NULL; ns1 = axiom_namespace_create(env, "http://ws.apache.org/rampart/c/samples", "ns1"); echo_om_ele = axiom_element_create(env, NULL, "echoIn", ns1, &echo_om_node); text_om_ele = axiom_element_create(env, echo_om_node, "text", NULL, &text_om_node); axiom_element_set_text(text_om_ele, env, "Hello", text_om_node); om_str = axiom_node_to_string(echo_om_node, env); if (om_str){ printf("\nSending OM : %s\n", om_str); AXIS2_FREE(env->allocator, om_str); om_str = NULL; } return echo_om_node; } rampart_saml_token_t * AXIS2_CALL create_saml_token(const axutil_env_t *env) { oxs_sign_ctx_t *sign_ctx = NULL; oxs_x509_cert_t *cert = NULL; openssl_pkey_t *prv_key = NULL; rampart_saml_token_t *saml = NULL; axutil_date_time_t *time = NULL; saml_assertion_t *assertion = NULL; axiom_node_t *node = NULL; axis2_char_t *prv_key_file = NULL; axis2_char_t *certificate_file = NULL; /* * Create a rampart_saml_token_t to give to the Rampart/C * Here the token type is protection token. */ saml = rampart_saml_token_create(env, NULL, RAMPART_ST_CONFIR_TYPE_HOLDER_OF_KEY); time = axutil_date_time_create(env); assertion = saml_assertion_create(env); if (assertion) { saml_assertion_set_minor_version(assertion, env, 1); saml_assertion_set_issue_instant(assertion, env, time); saml_assertion_set_issuer(assertion, env, "http://ws.apache.org/rampart/c"); saml_assertion_add_condition(assertion, env, create_condition(env)); saml_assertion_set_not_before(assertion, env, axutil_date_time_create(env)); saml_assertion_add_statement(assertion, env, create_auth_statement(env, saml)); } /* Load the private key from file*/ prv_key_file = axutil_stracat(env, axis2c_home, PRIVATE_KEY_FILE); certificate_file = axutil_stracat(env, axis2c_home, CERTIFICATE_FILE); prv_key = oxs_key_mgr_load_private_key_from_pem_file(env, prv_key_file, PRIVATE_KEY_PASSWORD); cert = oxs_key_mgr_load_x509_cert_from_pem_file(env, certificate_file); sign_ctx = oxs_sign_ctx_create(env); saml_util_set_sig_ctx_defaults(sign_ctx, env, "AssertionID"); oxs_sign_ctx_set_private_key(sign_ctx, env, prv_key); oxs_sign_ctx_set_certificate(sign_ctx, env, cert); saml_assertion_set_signature(assertion, env, sign_ctx); node = saml_assertion_to_om(assertion, NULL, env); rampart_saml_token_set_assertion(saml, env, node); rampart_saml_token_set_token_type(saml, env, RAMPART_ST_TYPE_PROTECTION_TOKEN); saml_assertion_free(assertion, env); return saml; } saml_condition_t * AXIS2_CALL create_condition(const axutil_env_t *env) { saml_audi_restriction_cond_t *arc = NULL; saml_condition_t *condition = AXIS2_MALLOC(env->allocator, sizeof(saml_condition_t)); arc = saml_audi_restriction_cond_create(env); saml_audi_restriction_cond_add_audience(arc, env, "www.samle.com"); return condition; } saml_stmt_t * AXIS2_CALL create_auth_statement(const axutil_env_t *env, rampart_saml_token_t *saml) { saml_auth_stmt_t *a_stmt = NULL; saml_stmt_t *stmt = saml_stmt_create(env); a_stmt = saml_auth_stmt_create(env); saml_stmt_set_stmt(stmt, env, a_stmt, SAML_STMT_AUTHENTICATIONSTATEMENT); saml_auth_stmt_set_auth_method(a_stmt, env, SAML_AUTH_METHOD_URI_PASSWORD); saml_auth_stmt_set_auth_instant(a_stmt, env, axutil_date_time_create(env)); saml_auth_stmt_set_subject(a_stmt, env, create_subject(env, saml)); saml_auth_stmt_set_subject_dns(a_stmt, env, "192.148.5.8"); saml_auth_stmt_set_subject_ip(a_stmt, env, "128.5.6.4"); saml_auth_stmt_add_auth_binding(a_stmt, env, create_autherity_binding(env)); return stmt; } saml_auth_binding_t * AXIS2_CALL create_autherity_binding(const axutil_env_t *env) { saml_auth_binding_t *bind = NULL; bind = saml_auth_binding_create(env); saml_auth_binding_set_authority_kind(bind, env, "abc:aa:aa"); saml_auth_binding_set_binding(bind, env, "SOAP"); saml_auth_binding_set_location(bind, env, "http://myhome.com/sevices/echo"); return bind; } saml_subject_t * AXIS2_CALL create_subject(const axutil_env_t *env, rampart_saml_token_t *saml) { saml_subject_t *subject = NULL; saml_named_id_t *id = NULL; axiom_node_t *key_info = NULL; subject = saml_subject_create(env); id = saml_named_id_create(env); saml_named_id_set_name(id, env, "Computer Science & Engineering Department"); saml_named_id_set_format(id, env, SAML_EMAIL_ADDRESS); saml_named_id_set_name_qualifier(id, env, "University of Moratuwa"); saml_subject_set_named_id(subject, env, id); saml_subject_add_confirmation(subject, env, SAML_SUB_CONFIRMATION_HOLDER_OF_KEY); key_info = create_key_info(env, saml); saml_subject_set_key_info(subject, env, key_info); return subject; } axiom_node_t * AXIS2_CALL create_key_info(const axutil_env_t *env, rampart_saml_token_t *saml) { axiom_node_t *key_info = NULL; oxs_key_t *session_key = NULL; axis2_status_t status = AXIS2_FAILURE; oxs_asym_ctx_t * asym_ctx = NULL; axis2_char_t *key_info_str = NULL; oxs_x509_cert_t *cert = NULL; /* Set the receiver certificate file. This public key will be used to encrypt the session key.*/ axis2_char_t *certificate_file = axutil_stracat(env, axis2c_home, RECEIVER_CERTIFICATE_FILE); session_key = oxs_key_create(env); status = oxs_key_for_algo(session_key, env, NULL); key_info = oxs_token_build_key_info_element(env, NULL); /* Create the asym_ctx_t and populate it.*/ asym_ctx = oxs_asym_ctx_create(env); oxs_asym_ctx_set_algorithm(asym_ctx, env, OXS_HREF_RSA_PKCS1); oxs_asym_ctx_set_operation(asym_ctx, env, OXS_ASYM_CTX_OPERATION_PUB_ENCRYPT); cert = oxs_key_mgr_load_x509_cert_from_pem_file(env, certificate_file); if (!cert) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Certificate cannot be loaded"); return NULL; } oxs_asym_ctx_set_certificate(asym_ctx, env, cert); status = oxs_xml_enc_encrypt_key(env, asym_ctx, key_info, session_key, NULL); rampart_saml_token_set_session_key(saml, env, session_key); key_info_str = axiom_node_to_string(key_info, env); return key_info; } rampartc-src-1.3.0/samples/client/deploy_client_repo.bat0000644000076500007650000000213711202453434023255 0ustar shankarshankarecho off echo ------------------------------------------------------------------------- echo deploying client repository .... echo ------------------------------------------------------------------------- rem if your client repository is different, change the value. set CLIENT_REPO=%AXIS2C_HOME%\client_repo echo Start creating a client repository at %CLIENT_REPO% if exist "%CLIENT_REPO%" ( echo %CLIENT_REPO% exists. ) else ( echo Creating a new directory for client repo mkdir "%CLIENT_REPO%" ) @echo Copying axis2.xml to client_repo copy /Y "..\data\client_axis2.xml" "%CLIENT_REPO%\axis2.xml" @cd ..\secpolicy\ call deploy.bat echo off @echo Copying libraries to client_repo xcopy /S/I/Q/Y "%AXIS2C_HOME%\lib" "%CLIENT_REPO%\lib" @echo Copying latest modules to client_repo xcopy /S/I/Q/Y "%AXIS2C_HOME%\modules" "%CLIENT_REPO%\modules" echo ------------------------------------------------------------------------- echo Client repository deployed to %CLIENT_REPO% echo ------------------------------------------------------------------------- echo on rampartc-src-1.3.0/samples/client/deploy_client_repo.sh0000644000076500007650000000145111202453434023117 0ustar shankarshankar#!/bin/bash CLIENT_REPO="$AXIS2C_HOME/client_repo" echo "Start creating a client repository at $CLIENT_REPO" if [ -d $CLIENT_REPO ]; then echo "$CLIENT_REPO exists. " else #Create client repo echo "Creating a new directory for client repo" mkdir $CLIENT_REPO fi #copy [client]axis2.xml to CLIENT_REPO echo "Copying axis2.xml to $CLIENT_REPO" cp ../data/client_axis2.xml $CLIENT_REPO/axis2.xml #copy libs to client_repo echo "Copying libraries to $CLIENT_REPO" cp -r $AXIS2C_HOME/lib $CLIENT_REPO/ #INSTALL MODULES to make sure that both server and client have the same module. echo "Copying latest modules to $CLIENT_REPO" cp -r $AXIS2C_HOME/modules $CLIENT_REPO/ echo "WARNING: Make sure that you have correct configurations in sec_echo/services.xml and $CLIENT_REPO/axis2.xml file." rampartc-src-1.3.0/samples/client/saml_echo/0000755000076500007650000000000011202454513020634 5ustar shankarshankarrampartc-src-1.3.0/samples/client/saml_echo/update_n_run.sh0000755000076500007650000000057311202453434023664 0ustar shankarshankar#!/bin/bash #If your client repository is different, change the value. CLIENT_REPO="$AXIS2C_HOME/client_repo" #INSTALL MODULE to make sure that both server and client have the same module. echo "Copying latest module to client_repo" cp -r $AXIS2C_HOME/modules/rampart $CLIENT_REPO/modules #RUN ./saml_echo http://localhost:9090/axis2/services/sec_echo/echoString $CLIENT_REPO rampartc-src-1.3.0/samples/client/saml_echo/update_n_run.bat0000644000076500007650000000071611202453434024014 0ustar shankarshankar@echo off rem if your client repository is different, change the value. set CLIENT_REPO=%AXIS2C_HOME%\client_repo rem INSTALL MODULE to make sure that both server and client have the same module. echo "Copying latest module to client_repo" xcopy /E /Y /I "%AXIS2C_HOME%\modules\rampart" "%CLIENT_REPO%\modules\rampart" %AXIS2C_HOME%\samples\bin\rampartc\saml_echo.exe http://localhost:9090/axis2/services/sec_echo/echoString %CLIENT_REPO% @echo on rampartc-src-1.3.0/samples/client/saml_echo/Makefile.am0000644000076500007650000000142511202453434022673 0ustar shankarshankarprgbindir=$(prefix)/samples/bin/rampartc prgbin_PROGRAMS = saml_echo saml_echo_SOURCES = echo.c saml_echo_LDADD = $(LDFLAGS) \ -L$(AXIS2C_HOME)/lib \ -L$(prefix)/lib \ -lrampart \ -laxutil \ -laxis2_axiom \ -lneethi \ -laxis2_engine \ -laxis2_parser \ -lpthread \ -laxis2_http_sender \ -laxis2_http_receiver \ $(GUTHTHILA_LIBS) \ $(LIBXML2_LIBS) INCLUDES = @AXIS2INC@ \ -I$(AXIS2C_HOME)/include \ -I ../../../include EXTRA_DIST = update_n_run.sh update_n_run.bat install-data-hook: cp update_n_run.sh $(prefix)/samples/bin/rampartc/saml_echo_update_n_run.sh rampartc-src-1.3.0/samples/client/saml_echo/echo.c0000644000076500007650000002233611202453434021725 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include #include #include #include #include #include axiom_node_t * build_om_payload_for_echo_svc(const axutil_env_t *env); axiom_node_t * AXIS2_CALL create_saml_assertion(const axutil_env_t *env); int main(int argc, char** argv) { const axutil_env_t *env = NULL; const axis2_char_t *address = NULL; const axis2_char_t *client_home = NULL; axis2_char_t *file_name = NULL; axis2_char_t *policy_file = NULL; axis2_endpoint_ref_t* endpoint_ref = NULL; axis2_options_t *options = NULL; axis2_svc_client_t* svc_client = NULL; axiom_node_t *payload = NULL; axiom_node_t *ret_node = NULL; axis2_status_t status = AXIS2_FAILURE; neethi_policy_t *policy = NULL; rampart_config_t* client_config = NULL; axutil_property_t *property = NULL; rampart_saml_token_t *saml = NULL; axiom_node_t *assertion = NULL; /* Set up the environment */ env = axutil_env_create_all("echo.log", AXIS2_LOG_LEVEL_TRACE); /* Set end-point-reference of echo service */ address = "http://localhost:9090/axis2/services/echo"; if (argc > 2) { address = argv[1]; client_home = argv[2]; printf("Using endpoint : %s\n", address); printf("Using client_home : %s\n", client_home); } if ((axutil_strcmp(argv[1], "-h") == 0) || (axutil_strcmp(argv[1], "--help") == 0)) { printf("Usage : %s [endpoint_url] [client_home]\n", argv[0]); printf("use -h for help\n"); return 0; } /* Create end-point-reference with given address */ endpoint_ref = axis2_endpoint_ref_create(env, address); /* Setup options */ options = axis2_options_create(env); axis2_options_set_to(options, env, endpoint_ref); axis2_options_set_action(options, env, "http://example.com/ws/2004/09/policy/Test/EchoRequest"); /*axis2_options_set_action(options, env, "urn:echo");*/ /*If the client home is not specified, use the AXIS2C_HOME*/ if (!client_home) { client_home = AXIS2_GETENV("AXIS2C_HOME"); printf("\nNo client_home specified. Using default %s", client_home); } /* Create service client */ printf("client_home= %s", client_home); svc_client = axis2_svc_client_create(env, client_home); if (!svc_client) { printf("Error creating service client\n"); return -1; } client_config = rampart_config_create(env); if(!client_config) { printf("Cannot create rampart config\n"); return 0; } assertion = create_saml_assertion(env); saml = rampart_saml_token_create(env, assertion, RAMPART_ST_CONFIR_TYPE_SENDER_VOUCHES); rampart_saml_token_set_token_type(saml, env, RAMPART_ST_TYPE_SIGNED_SUPPORTING_TOKEN); rampart_config_add_saml_token(client_config, env, saml); property = axutil_property_create_with_args(env, AXIS2_SCOPE_REQUEST , AXIS2_TRUE, (void *)rampart_config_free, client_config); axis2_options_set_property(options, env, RAMPART_CLIENT_CONFIGURATION, property); /* Set service client options */ axis2_svc_client_set_options(svc_client, env, options); /*We need to specify the client's policy file location*/ if(client_home) { file_name = axutil_stracat(env, client_home, AXIS2_PATH_SEP_STR); policy_file = axutil_stracat(env, file_name, "policy.xml" ); AXIS2_FREE(env->allocator, file_name); file_name = NULL; }else{ printf("Client Home not Specified\n"); printf("echo client invoke FAILED!\n"); return 0; } /*Create the policy, from file*/ policy = neethi_util_create_policy_from_file(env, policy_file); if(!policy) { printf("\nPolicy creation failed from the file. %s\n", policy_file); } if(policy_file){ AXIS2_FREE(env->allocator, policy_file); policy_file = NULL; } status = axis2_svc_client_set_policy(svc_client, env, policy); if(status == AXIS2_FAILURE) { printf("Policy setting failed\n"); } /* Build the SOAP request message payload using OM API.*/ payload = build_om_payload_for_echo_svc(env); /*If not engaged in the client's axis2.xml, uncomment this line*/ /*axis2_svc_client_engage_module(svc_client, env, "rampart");*/ /* Send request */ ret_node = axis2_svc_client_send_receive(svc_client, env, payload); if (axis2_svc_client_get_last_response_has_fault(svc_client, env)) { axiom_soap_envelope_t *soap_envelope = NULL; axiom_soap_body_t *soap_body = NULL; axiom_soap_fault_t *soap_fault = NULL; printf ("\nResponse has a SOAP fault\n"); soap_envelope = axis2_svc_client_get_last_response_soap_envelope(svc_client, env); if (soap_envelope) soap_body = axiom_soap_envelope_get_body(soap_envelope, env); if (soap_body) soap_fault = axiom_soap_body_get_fault(soap_body, env); if (soap_fault) { printf("\nReturned SOAP fault: %s\n", axiom_node_to_string(axiom_soap_fault_get_base_node(soap_fault,env), env)); } printf("echo client invoke FAILED!\n"); return -1; } if (ret_node) { axis2_char_t *om_str = NULL; om_str = axiom_node_to_string(ret_node, env); if (om_str) { printf("\nReceived OM : %s\n", om_str); } printf("\necho client invoke SUCCESSFUL!\n"); AXIS2_FREE(env->allocator, om_str); ret_node = NULL; } else { printf("echo client invoke FAILED!\n"); return -1; } if (svc_client) { axis2_svc_client_free(svc_client, env); svc_client = NULL; } if (env) { axutil_env_free((axutil_env_t *) env); env = NULL; } return 0; } /* build SOAP request message content using OM */ axiom_node_t * build_om_payload_for_echo_svc(const axutil_env_t *env) { axiom_node_t *echo_om_node = NULL; axiom_element_t* echo_om_ele = NULL; axiom_node_t* text_om_node = NULL; axiom_element_t * text_om_ele = NULL; axiom_namespace_t *ns1 = NULL; axis2_char_t *om_str = NULL; ns1 = axiom_namespace_create(env, "http://ws.apache.org/rampart/c/samples", "ns1"); echo_om_ele = axiom_element_create(env, NULL, "echoIn", ns1, &echo_om_node); text_om_ele = axiom_element_create(env, echo_om_node, "text", NULL, &text_om_node); axiom_element_set_text(text_om_ele, env, "Hello", text_om_node); om_str = axiom_node_to_string(echo_om_node, env); if (om_str){ printf("\nSending OM : %s\n", om_str); AXIS2_FREE(env->allocator, om_str); om_str = NULL; } return echo_om_node; } axiom_node_t * AXIS2_CALL create_saml_assertion(const axutil_env_t *env) { saml_assertion_t *assertion = NULL; saml_attr_stmt_t *attr_stmt = NULL; saml_subject_t *subject = NULL; saml_named_id_t *named_id = NULL; saml_attr_t *attr = NULL; axiom_node_t *attr_val = NULL; axiom_element_t *e = NULL; saml_stmt_t *stmt = NULL; assertion = saml_assertion_create(env); attr_stmt = saml_attr_stmt_create(env); subject = saml_subject_create(env); saml_assertion_set_issue_instant(assertion, env, axutil_date_time_create(env)); saml_assertion_set_issuer(assertion, env, "www.mrt.ac.lk"); saml_assertion_set_minor_version(assertion, env, 1); saml_subject_add_confirmation(subject, env, SAML_SUB_CONFIRMATION_SENDER_VOUCHES); named_id = saml_named_id_create(env); saml_named_id_set_name(named_id, env, "cse07"); saml_subject_set_named_id(subject, env, named_id); attr = saml_attr_create(env); saml_attr_set_name(attr, env, "csestudent"); saml_attr_set_namespace(attr, env, "www.mrt.ac.lk/cse"); e = axiom_element_create(env, NULL, "noofstudent", NULL, &attr_val); axiom_element_set_text(e, env, "10", attr_val); saml_attr_add_value(attr, env, attr_val); saml_attr_stmt_set_subject(attr_stmt, env, subject); saml_attr_stmt_add_attribute(attr_stmt, env, attr); stmt = saml_stmt_create(env); saml_stmt_set_stmt(stmt, env, attr_stmt, SAML_STMT_ATTRIBUTESTATEMENT); saml_assertion_add_statement(assertion, env, stmt); return saml_assertion_to_om(assertion, NULL, env); } rampartc-src-1.3.0/samples/build.sh0000755000076500007650000000065311202453434017067 0ustar shankarshankar#!/bin/bash ./autogen.sh ./configure --prefix=${AXIS2C_HOME} --enable-static=no --with-axis2=${AXIS2C_HOME}/include/axis2-1.6.0 make make install cd client sh deploy_client_repo.sh cd ../secpolicy sh deploy.sh scenario5 cd ../ echo "Copying server's axis2.xml to " $AXIS2C_HOME cp ./data/server_axis2.xml $AXIS2C_HOME/axis2.xml echo "samples successfuly build. To run echo client cd to client/sec_echo and run update_n_run.sh" rampartc-src-1.3.0/samples/server/0000755000076500007650000000000011202454513016732 5ustar shankarshankarrampartc-src-1.3.0/samples/server/saml_sts/0000755000076500007650000000000011202454513020557 5ustar shankarshankarrampartc-src-1.3.0/samples/server/saml_sts/Makefile.am0000644000076500007650000000107111202453432022611 0ustar shankarshankarprglibdir=$(prefix)/services/saml_sts #samplesdir=$(prefix)/samples/src/server/saml_sts prglib_LTLIBRARIES = libsaml_sts.la #samples_DATA=issuer.c saml_skeleton.c saml_issuer.h services.xml Makefile.am prglib_DATA= services.xml EXTRA_DIST = services.xml saml_issuer.h noinst_HEADERS = saml_issuer.h SUBDIRS = libsaml_sts_la_SOURCES = issuer.c saml_skeleton.c libsaml_sts_la_LIBADD = $(LDFLAGS) \ -L$(AXIS2C_HOME)/lib \ -L$(prefix)/lib \ -lrampart INCLUDES = @AXIS2INC@ \ -I$(AXIS2C_HOME)/include \ -I ../../../include rampartc-src-1.3.0/samples/server/saml_sts/issuer.c0000644000076500007650000001224311202453432022236 0ustar shankarshankar/* * 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. */ #include "saml_issuer.h" #include #include axiom_node_t * create_saml_token(axutil_env_t *env); saml_condition_t * create_condition(axutil_env_t *env); saml_stmt_t * create_auth_statement(axutil_env_t *env); saml_auth_binding_t * create_autherity_binding(axutil_env_t *env); saml_subject_t * create_subject(axutil_env_t *env); axiom_node_t *axis2_saml_issuer_issue( const axutil_env_t * env, trust_context_t *trust_ctx) { axis2_char_t *token_type = NULL; axiom_node_t *issued_saml_token = NULL; axiom_node_t *rstr_node = NULL; axiom_node_t *requested_sec_token_node = NULL; trust_rst_t *rst = NULL; /*Created RST Context*/ trust_rstr_t *rstr = NULL; /*Used for Creating RSTR*/ rst = trust_context_get_rst(trust_ctx, env); token_type = trust_rst_get_token_type(rst, env); if(token_type) AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[sts] token type: %s !", token_type); else return NULL; if (axutil_strcmp(token_type, SAML_TOKEN)) { AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[sts] token type not equal..!"); return NULL; } rstr = trust_rstr_create(env); issued_saml_token = create_saml_token(env); trust_rstr_set_requested_security_token(rstr, env, issued_saml_token); trust_rstr_set_wst_ns_uri(rstr, env, "http://schemas.xmlsoap.org/ws/2005/02/trust"); trust_rstr_set_requested_proof_token(rstr, env, trust_util_create_random_session_key_proof_token_element(env, "http://schemas.xmlsoap.org/ws/2005/02/trust") ); trust_context_set_rstr(trust_ctx, env, rstr); rstr_node = trust_context_build_rstr_node(trust_ctx, env); return rstr_node; } axiom_node_t * create_saml_token(axutil_env_t *env) { axutil_date_time_t *time = NULL; saml_assertion_t *assertion = NULL; axiom_node_t *node = NULL; time = axutil_date_time_create(env); assertion = saml_assertion_create(env); if (assertion) { saml_assertion_set_minor_version(assertion, env, 1); saml_assertion_set_issue_instant(assertion, env, time); saml_assertion_set_issuer(assertion, env, "http://ws.apache.org/rampart/c"); saml_assertion_add_condition(assertion, env, create_condition(env)); saml_assertion_set_not_before(assertion, env, axutil_date_time_create(env)); saml_assertion_add_statement(assertion, env, create_auth_statement(env)); } node = saml_assertion_to_om(assertion, NULL, env); saml_assertion_free(assertion, env); return node; } saml_condition_t * create_condition(axutil_env_t *env) { saml_audi_restriction_cond_t *arc = NULL; saml_condition_t *condition = AXIS2_MALLOC(env->allocator, sizeof(saml_condition_t)); arc = saml_audi_restriction_cond_create(env); saml_audi_restriction_cond_add_audience(arc, env, "www.samle.com"); return condition; } saml_stmt_t * create_auth_statement(axutil_env_t *env) { saml_auth_stmt_t *a_stmt = NULL; saml_stmt_t *stmt = saml_stmt_create(env); a_stmt = saml_auth_stmt_create(env); saml_stmt_set_stmt(stmt, env, a_stmt, SAML_STMT_AUTHENTICATIONSTATEMENT); saml_auth_stmt_set_auth_method(a_stmt, env, SAML_AUTH_METHOD_URI_PASSWORD); saml_auth_stmt_set_auth_instant(a_stmt, env, axutil_date_time_create(env)); saml_auth_stmt_set_subject(a_stmt, env, create_subject(env)); saml_auth_stmt_set_subject_dns(a_stmt, env, "192.148.5.8"); saml_auth_stmt_set_subject_ip(a_stmt, env, "128.5.6.4"); saml_auth_stmt_add_auth_binding(a_stmt, env, create_autherity_binding(env)); return stmt; } saml_auth_binding_t * create_autherity_binding(axutil_env_t *env) { saml_auth_binding_t *bind = NULL; bind = saml_auth_binding_create(env); saml_auth_binding_set_authority_kind(bind, env, "abc:aa:aa"); saml_auth_binding_set_binding(bind, env, "SOAP"); saml_auth_binding_set_location(bind, env, "http://myhome.com/sevices/echo"); return bind; } saml_subject_t * create_subject(axutil_env_t *env) { saml_subject_t *subject = NULL; saml_named_id_t *id = NULL; subject = saml_subject_create(env); id = saml_named_id_create(env); saml_named_id_set_name(id, env, "Computer Science & Engineering Department"); saml_named_id_set_format(id, env, SAML_EMAIL_ADDRESS); saml_named_id_set_name_qualifier(id, env, "University of Moratuwa"); saml_subject_set_named_id(subject, env, id); saml_subject_add_confirmation(subject, env, SAML_SUB_CONFIRMATION_ARTIFACT); saml_subject_add_confirmation(subject, env, SAML_SUB_CONFIRMATION_BEARER); return subject; } rampartc-src-1.3.0/samples/server/saml_sts/saml_issuer.h0000644000076500007650000000243411202453432023260 0ustar shankarshankar/* * 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 SAML_ISSUER_H #define SAML_ISSUER_H #include #include #include #include #include #include #include #include #include #include #define SAML_TOKEN "oasis:names:tc:SAML:1.0:assertion" axiom_node_t *axis2_saml_issuer_issue( const axutil_env_t * env, trust_context_t *trust_ctx); #endif rampartc-src-1.3.0/samples/server/saml_sts/services.xml0000644000076500007650000000656011202453432023132 0ustar shankarshankar saml_sts This is a testing service , to test the system is working or not http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Issue AXIS2C_HOME/bin/samples/rampart/callback/libpwcb.so AXIS2C_HOME/bin/samples/rampart/keys/bhome/bob_cert.cert AXIS2C_HOME/bin/samples/rampart/keys/bhome/bob_key.pem rampartc-src-1.3.0/samples/server/saml_sts/saml_skeleton.c0000644000076500007650000000756611202453432023600 0ustar shankarshankar/* * 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. */ #include #include "saml_issuer.h" #include #include #include #include #include #include #include #include int AXIS2_CALL saml_issuer_free( axis2_svc_skeleton_t *svc_skeleton, const axutil_env_t *env); axiom_node_t *AXIS2_CALL saml_issuer_invoke( axis2_svc_skeleton_t *svc_skeleton, const axutil_env_t *env, axiom_node_t *node, axis2_msg_ctx_t *msg_ctx); int AXIS2_CALL saml_issuer_init( axis2_svc_skeleton_t *svc_skeleton, const axutil_env_t *env); axiom_node_t * AXIS2_CALL saml_issuer_on_fault( axis2_svc_skeleton_t *svc_skel, const axutil_env_t *env, axiom_node_t *node); static const axis2_svc_skeleton_ops_t saml_issuer_svc_skeleton_ops_var = { saml_issuer_init, saml_issuer_invoke, saml_issuer_on_fault, saml_issuer_free }; AXIS2_EXTERN axis2_svc_skeleton_t *AXIS2_CALL axis2_saml_issuer_create( const axutil_env_t *env) { axis2_svc_skeleton_t *svc_skeleton = NULL; svc_skeleton = AXIS2_MALLOC(env->allocator, sizeof(axis2_svc_skeleton_t)); svc_skeleton->ops = &saml_issuer_svc_skeleton_ops_var; svc_skeleton->func_array = NULL; return svc_skeleton; } int AXIS2_CALL saml_issuer_init( axis2_svc_skeleton_t *svc_skeleton, const axutil_env_t *env) { return AXIS2_SUCCESS; } int AXIS2_CALL saml_issuer_free( axis2_svc_skeleton_t *svc_skeleton, const axutil_env_t *env) { if (svc_skeleton) { AXIS2_FREE(env->allocator, svc_skeleton); svc_skeleton = NULL; } return AXIS2_SUCCESS; } axiom_node_t *AXIS2_CALL saml_issuer_invoke( axis2_svc_skeleton_t *svc_skeleton, const axutil_env_t *env, axiom_node_t *node, axis2_msg_ctx_t *msg_ctx) { axis2_msg_ctx_t *in_msg_ctx = NULL; axis2_op_ctx_t *op_ctx = NULL; trust_context_t *trust_ctx = NULL; printf("RST Received\n"); op_ctx = axis2_msg_ctx_get_op_ctx(msg_ctx, env); in_msg_ctx = axis2_op_ctx_get_msg_ctx(op_ctx, env, AXIS2_WSDL_MESSAGE_LABEL_IN); AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[sts] create data..!"); trust_ctx = trust_context_create(env);/*Trust Version is passed */ /*Populating RST*/ if(AXIS2_FAILURE == trust_context_process_rst(trust_ctx, env, in_msg_ctx)) { printf("RST Processing Failed!\n"); } return axis2_saml_issuer_issue(env, trust_ctx); } axiom_node_t * AXIS2_CALL saml_issuer_on_fault( axis2_svc_skeleton_t *svc_skel, const axutil_env_t *env, axiom_node_t *node) { return NULL; } AXIS2_EXPORT int axis2_get_instance( struct axis2_svc_skeleton **inst, const axutil_env_t * env) { *inst = axis2_saml_issuer_create(env); if (!(*inst)) { return AXIS2_FAILURE; } return AXIS2_SUCCESS; } AXIS2_EXPORT int axis2_remove_instance( axis2_svc_skeleton_t *inst, const axutil_env_t *env) { axis2_status_t status = AXIS2_FAILURE; if (inst) { status = AXIS2_SVC_SKELETON_FREE(inst, env); } return status; } rampartc-src-1.3.0/samples/server/Makefile.am0000644000076500007650000000026111202453433020765 0ustar shankarshankarsamplesdir=$(prefix)/samples/server #SUBDIRS = sec_echo manuf SUBDIRS = sec_echo saml_sts secconv_echo #EXTRA_DIST = axis2.xml axis2.log #samples_DATA= Makefile.am Makefile.in rampartc-src-1.3.0/samples/server/sec_echo/0000755000076500007650000000000011202454513020502 5ustar shankarshankarrampartc-src-1.3.0/samples/server/sec_echo/echo.h0000644000076500007650000000215311202453432021571 0ustar shankarshankar/* * 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 CALC_H #define CALC_H #include #include #include #include #include #include axiom_node_t *axis2_echo_echo(const axutil_env_t *env, axiom_node_t *node, axis2_msg_ctx_t *msg_ctx); #endif /* CALC_H*/ rampartc-src-1.3.0/samples/server/sec_echo/Makefile.am0000644000076500007650000000105211202453432022533 0ustar shankarshankarprglibdir=$(prefix)/services/sec_echo #samplesdir=$(prefix)/samples/src/server/sec_echo prglib_LTLIBRARIES = libsec_echo.la #samples_DATA=echo.c echo_skeleton.c echo.h services.xml Makefile.am Makefile.in prglib_DATA= services.xml EXTRA_DIST = services.xml echo.h noinst_HEADERS = echo.h SUBDIRS = libsec_echo_la_SOURCES = echo.c echo_skeleton.c libsec_echo_la_LIBADD = $(LDFLAGS) \ -L$(AXIS2C_HOME)/lib \ -L$(prefix)/lib \ -lrampart INCLUDES = @AXIS2INC@ \ -I$(AXIS2C_HOME)/include \ -I ../../../include rampartc-src-1.3.0/samples/server/sec_echo/echo_skeleton.c0000644000076500007650000001132711202453432023473 0ustar shankarshankar/* * 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. */ #include #include "echo.h" #include #include #include int AXIS2_CALL echo_free(axis2_svc_skeleton_t *svc_skeleton, const axutil_env_t *env); /* * This method invokes the right service method */ axiom_node_t* AXIS2_CALL echo_invoke(axis2_svc_skeleton_t *svc_skeleton, const axutil_env_t *env, axiom_node_t *node, axis2_msg_ctx_t *msg_ctx); int AXIS2_CALL echo_init(axis2_svc_skeleton_t *svc_skeleton, const axutil_env_t *env); axiom_node_t* AXIS2_CALL echo_on_fault(axis2_svc_skeleton_t *svc_skeli, const axutil_env_t *env, axiom_node_t *node); static const axis2_svc_skeleton_ops_t echo_svc_skeleton_ops_var = { echo_init, echo_invoke, echo_on_fault, echo_free }; /*Create function */ axis2_svc_skeleton_t * axis2_echo_create(const axutil_env_t *env) { axis2_svc_skeleton_t *svc_skeleton = NULL; /* Allocate memory for the structs */ svc_skeleton = AXIS2_MALLOC(env->allocator, sizeof(axis2_svc_skeleton_t)); svc_skeleton->ops = AXIS2_MALLOC( env->allocator, sizeof(axis2_svc_skeleton_ops_t)); svc_skeleton->ops = &echo_svc_skeleton_ops_var; svc_skeleton->func_array = NULL; /* Assign function pointers */ return svc_skeleton; } /* Initialize the service */ int AXIS2_CALL echo_init(axis2_svc_skeleton_t *svc_skeleton, const axutil_env_t *env) { svc_skeleton->func_array = axutil_array_list_create(env, 0); /* Add the implemented operation names of the service to * the array list of functions */ axutil_array_list_add(svc_skeleton->func_array, env, "echoString"); /* Any initialization stuff of echo service should go here */ return AXIS2_SUCCESS; } /* * This method invokes the right service method */ axiom_node_t* AXIS2_CALL echo_invoke(axis2_svc_skeleton_t *svc_skeleton, const axutil_env_t *env, axiom_node_t *node, axis2_msg_ctx_t *msg_ctx) { /* Invoke the business logic. * Depending on the function name invoke the correct impl method. * We have only echo in this sample, hence invoke echo method. * To see how to deal with multiple impl methods, have a look at the * math sample. */ AXIS2_LOG_INFO(env->log,"%s:%d",__FILE__, __LINE__); return axis2_echo_echo(env, node, msg_ctx); } /* On fault, handle the fault */ axiom_node_t* AXIS2_CALL echo_on_fault(axis2_svc_skeleton_t *svc_skeli, const axutil_env_t *env, axiom_node_t *node) { /* Here we are just setting a simple error message inside an element * called 'EchoServiceError' */ axiom_node_t *error_node = NULL; axiom_node_t *text_node = NULL; axiom_element_t *error_ele = NULL; error_ele = axiom_element_create(env, NULL, "EchoServiceError", NULL, &error_node); axiom_element_set_text(error_ele, env, "Echo service failed ", text_node); return error_node; } /* Free the resources used */ int AXIS2_CALL echo_free(axis2_svc_skeleton_t *svc_skeleton, const axutil_env_t *env) { /* Free the function array */ if (svc_skeleton->func_array) { axutil_array_list_free(svc_skeleton->func_array, env); svc_skeleton->func_array = NULL; } /* Free the service skeleton */ if (svc_skeleton) { AXIS2_FREE(env->allocator, svc_skeleton); svc_skeleton = NULL; } return AXIS2_SUCCESS; } /** * Following block distinguish the exposed part of the dll. */ AXIS2_EXPORT int axis2_get_instance(axis2_svc_skeleton_t **inst, const axutil_env_t *env) { *inst = axis2_echo_create(env); if (!(*inst)) { return AXIS2_FAILURE; } return AXIS2_SUCCESS; } AXIS2_EXPORT int axis2_remove_instance(axis2_svc_skeleton_t *inst, const axutil_env_t *env) { axis2_status_t status = AXIS2_FAILURE; if (inst) { status = AXIS2_SVC_SKELETON_FREE(inst, env); } return status; } rampartc-src-1.3.0/samples/server/sec_echo/echo.c0000644000076500007650000000611311202453432021564 0ustar shankarshankar/* * 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. */ #include "echo.h" #include #include #include axiom_node_t * build_om_programatically(const axutil_env_t *env, axis2_char_t *text); axiom_node_t * build_om_payload_for_echo_svc_interop(const axutil_env_t *env, axis2_char_t *text); axiom_node_t * axis2_echo_echo(const axutil_env_t *env, axiom_node_t *node, axis2_msg_ctx_t *msg_ctx) { axiom_node_t *ret_node = NULL; axis2_char_t *name = NULL; AXIS2_ENV_CHECK(env, NULL); name = axiom_util_get_localname(node, env); AXIS2_LOG_INFO(env->log, "[rampart][sec_echo_service] Recieved node %s", name); /* * This shows how to acces the security processed results from the message context { axis2_char_t *username = NULL; username = (axis2_char_t*)rampart_get_security_processed_result(env, msg_ctx, "SPR_UT_username"); printf("Username of the Token is = %s ", username); } */ ret_node = build_om_programatically(env, name); return ret_node; } /* Builds the response content */ axiom_node_t * build_om_programatically(const axutil_env_t *env, axis2_char_t *text) { axiom_node_t *echo_om_node = NULL; axiom_element_t* echo_om_ele = NULL; axiom_node_t* text_om_node = NULL; axiom_element_t * text_om_ele = NULL; axiom_namespace_t *ns1 = NULL; ns1 = axiom_namespace_create(env, "http://ws.apache.org/axis2/rampart/samples", "ns1"); echo_om_ele = axiom_element_create(env, NULL, "RecievedNode", ns1, &echo_om_node); text_om_ele = axiom_element_create(env, echo_om_node, "LocalName", NULL, &text_om_node); axiom_element_set_text(text_om_ele, env, text, text_om_node); return echo_om_node; } axiom_node_t * build_om_payload_for_echo_svc_interop(const axutil_env_t *env, axis2_char_t *text) { axiom_node_t *echo_om_node = NULL; axiom_element_t* echo_om_ele = NULL; axiom_node_t* text_om_node = NULL; axiom_element_t * text_om_ele = NULL; axiom_namespace_t *ns1 = NULL; ns1 = axiom_namespace_create(env, "http://InteropBaseAddress/interop", "ns1"); echo_om_ele = axiom_element_create(env, NULL, "echoResponse", ns1, &echo_om_node); text_om_ele = axiom_element_create(env, echo_om_node, "LocalName", NULL, &text_om_node); axiom_element_set_text(text_om_ele, env, text, text_om_node); return echo_om_node; } rampartc-src-1.3.0/samples/server/sec_echo/services.xml0000644000076500007650000001053311202453432023050 0ustar shankarshankar sec_echo This is a testing service , to test Rampart/C [Security] functionalities. http://example.com/ws/2004/09/policy/Test/EchoRequest Alice 360 b Digest AXIS2C_HOME/bin/samples/rampart/callback/libpwcb.so AXIS2C_HOME/bin/samples/rampart/keys/bhome/alice_cert.cert AXIS2C_HOME/bin/samples/rampart/keys/bhome/bob_cert.cert AXIS2C_HOME/bin/samples/rampart/keys/bhome/bob_key.pem rampartc-src-1.3.0/samples/server/sec_echo/README0000644000076500007650000000053311202453432021362 0ustar shankarshankarHOW TO CONFIGURE SERVER? ----------------------- Make sure that you have Go to rampart/samples/server/sec_echo and Run %make install This will deploy a sec_echo service and copy security enabled services.xml file. Note: You may change the services.xml file to adjust it to your environment. E.g. Changing the passwordCallbackClass parameter. rampartc-src-1.3.0/samples/server/secconv_echo/0000755000076500007650000000000011202454513021370 5ustar shankarshankarrampartc-src-1.3.0/samples/server/secconv_echo/echo.h0000644000076500007650000000244311202453433022462 0ustar shankarshankar/* * 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 SECCONV_ECHO_H #define SECCONV_ECHO_H #include #include #include #include #include #include axiom_node_t * axis2_echo_echo( const axutil_env_t *env, axiom_node_t *node, axis2_msg_ctx_t *msg_ctx); axiom_node_t * secconv_echo_sts_request_security_token( const axutil_env_t *env, axiom_node_t *node, axis2_msg_ctx_t *msg_ctx); #endif /* SECCONV_ECHO_H*/ rampartc-src-1.3.0/samples/server/secconv_echo/Makefile.am0000644000076500007650000000110711202453433023423 0ustar shankarshankarprglibdir=$(prefix)/services/secconv_echo #samplesdir=$(prefix)/samples/src/server/secconv_echo prglib_LTLIBRARIES = libsecconv_echo.la #samples_DATA=echo.c echo_skeleton.c echo.h services.xml Makefile.am Makefile.in prglib_DATA= services.xml EXTRA_DIST = services.xml echo.h noinst_HEADERS = echo.h SUBDIRS = libsecconv_echo_la_SOURCES = echo.c echo_skeleton.c libsecconv_echo_la_LIBADD = $(LDFLAGS) \ -L$(prefix)/lib \ -L$(AXIS2C_HOME)/lib \ -lrampart INCLUDES = @AXIS2INC@ \ -I$(AXIS2C_HOME)/include \ -I ../../../include rampartc-src-1.3.0/samples/server/secconv_echo/echo_skeleton.c0000644000076500007650000001315011202453433024356 0ustar shankarshankar/* * 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. */ #include #include "echo.h" #include #include #include int AXIS2_CALL echo_free(axis2_svc_skeleton_t *svc_skeleton, const axutil_env_t *env); /* * This method invokes the right service method */ axiom_node_t* AXIS2_CALL echo_invoke(axis2_svc_skeleton_t *svc_skeleton, const axutil_env_t *env, axiom_node_t *node, axis2_msg_ctx_t *msg_ctx); int AXIS2_CALL echo_init(axis2_svc_skeleton_t *svc_skeleton, const axutil_env_t *env); axiom_node_t* AXIS2_CALL echo_on_fault(axis2_svc_skeleton_t *svc_skeli, const axutil_env_t *env, axiom_node_t *node); static const axis2_svc_skeleton_ops_t echo_svc_skeleton_ops_var = { echo_init, echo_invoke, echo_on_fault, echo_free }; /*Create function */ axis2_svc_skeleton_t * axis2_echo_create(const axutil_env_t *env) { axis2_svc_skeleton_t *svc_skeleton = NULL; /* Allocate memory for the structs */ svc_skeleton = AXIS2_MALLOC(env->allocator, sizeof(axis2_svc_skeleton_t)); svc_skeleton->ops = AXIS2_MALLOC( env->allocator, sizeof(axis2_svc_skeleton_ops_t)); svc_skeleton->ops = &echo_svc_skeleton_ops_var; svc_skeleton->func_array = NULL; /* Assign function pointers */ return svc_skeleton; } /* Initialize the service */ int AXIS2_CALL echo_init(axis2_svc_skeleton_t *svc_skeleton, const axutil_env_t *env) { svc_skeleton->func_array = axutil_array_list_create(env, 0); /* Add the implemented operation names of the service to * the array list of functions */ axutil_array_list_add(svc_skeleton->func_array, env, "echoString"); /* Any initialization stuff of echo service should go here */ return AXIS2_SUCCESS; } /* * This method invokes the right service method */ axiom_node_t* AXIS2_CALL echo_invoke(axis2_svc_skeleton_t *svc_skeleton, const axutil_env_t *env, axiom_node_t *node, axis2_msg_ctx_t *msg_ctx) { /* Invoke the business logic. * Depending on the function name invoke the correct impl method. */ if (node) { if (axiom_node_get_node_type(node, env) == AXIOM_ELEMENT) { axiom_element_t *element = NULL; element = (axiom_element_t *) axiom_node_get_data_element(node, env); if (element) { axis2_char_t *op_name = axiom_element_get_localname(element, env); if (op_name) { if (axutil_strcmp(op_name, "RequestSecurityToken") == 0) { axiom_node_t* return_node = NULL; return_node = secconv_echo_sts_request_security_token(env, node, msg_ctx); if(return_node) return return_node; else echo_on_fault(svc_skeleton, env, node); } else return axis2_echo_echo(env, node, msg_ctx); } } } } printf("secure conversation service ERROR: invalid OM parameters in request\n"); return echo_on_fault(svc_skeleton, env, node); } /* On fault, handle the fault */ axiom_node_t* AXIS2_CALL echo_on_fault(axis2_svc_skeleton_t *svc_skeli, const axutil_env_t *env, axiom_node_t *node) { /* Here we are just setting a simple error message inside an element * called 'EchoServiceError' */ axiom_node_t *error_node = NULL; axiom_node_t *text_node = NULL; axiom_element_t *error_ele = NULL; error_ele = axiom_element_create(env, NULL, "EchoServiceError", NULL, &error_node); axiom_element_set_text(error_ele, env, "Echo service failed ", text_node); return error_node; } /* Free the resources used */ int AXIS2_CALL echo_free(axis2_svc_skeleton_t *svc_skeleton, const axutil_env_t *env) { /* Free the function array */ if (svc_skeleton->func_array) { axutil_array_list_free(svc_skeleton->func_array, env); svc_skeleton->func_array = NULL; } /* Free the service skeleton */ if (svc_skeleton) { AXIS2_FREE(env->allocator, svc_skeleton); svc_skeleton = NULL; } return AXIS2_SUCCESS; } /** * Following block distinguish the exposed part of the dll. */ AXIS2_EXPORT int axis2_get_instance(axis2_svc_skeleton_t **inst, const axutil_env_t *env) { *inst = axis2_echo_create(env); if (!(*inst)) { return AXIS2_FAILURE; } return AXIS2_SUCCESS; } AXIS2_EXPORT int axis2_remove_instance(axis2_svc_skeleton_t *inst, const axutil_env_t *env) { axis2_status_t status = AXIS2_FAILURE; if (inst) { status = AXIS2_SVC_SKELETON_FREE(inst, env); } return status; } rampartc-src-1.3.0/samples/server/secconv_echo/echo.c0000644000076500007650000002761111202453433022461 0ustar shankarshankar/* * 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. */ #include "echo.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define RAMPART_SCT_PROVIDER_HASH_PROB "Rampart_SCT_Prov_DB_Prop" axiom_node_t * build_om_programatically(const axutil_env_t *env, axis2_char_t *text); axiom_node_t * build_om_payload_for_echo_svc_interop(const axutil_env_t *env, axis2_char_t *text); axiom_node_t * axis2_echo_echo(const axutil_env_t *env, axiom_node_t *node, axis2_msg_ctx_t *msg_ctx) { axiom_node_t *ret_node = NULL; axis2_char_t *name = NULL; AXIS2_ENV_CHECK(env, NULL); name = axiom_util_get_localname(node, env); AXIS2_LOG_INFO(env->log, "[rampart][sec_echo_service] Recieved node %s", name); /* * This shows how to acces the security processed results from the message context { axis2_char_t *username = NULL; username = (axis2_char_t*)rampart_get_security_processed_result(env, msg_ctx, "SPR_UT_username"); printf("Username of the Token is = %s ", username); } */ ret_node = build_om_payload_for_echo_svc_interop(env, name); return ret_node; } /* Builds the response content */ axiom_node_t * build_om_programatically(const axutil_env_t *env, axis2_char_t *text) { axiom_node_t *echo_om_node = NULL; axiom_element_t* echo_om_ele = NULL; axiom_node_t* text_om_node = NULL; axiom_element_t * text_om_ele = NULL; axiom_namespace_t *ns1 = NULL; ns1 = axiom_namespace_create(env, "http://ws.apache.org/axis2/rampart/samples", "ns1"); echo_om_ele = axiom_element_create(env, NULL, "RecievedNode", ns1, &echo_om_node); text_om_ele = axiom_element_create(env, echo_om_node, "LocalName", NULL, &text_om_node); axiom_element_set_text(text_om_ele, env, text, text_om_node); return echo_om_node; } static void sct_hash_store_free( axutil_hash_t *sct_hash_store, const axutil_env_t *env) { axutil_hash_index_t *hi = NULL; for (hi = axutil_hash_first(sct_hash_store, env); hi != NULL; hi = axutil_hash_next(env, hi)) { void *v = NULL; axutil_hash_this(hi, NULL, NULL, &v); if (v) { security_context_token_free((security_context_token_t*)v, env); } } axutil_hash_free(sct_hash_store, env); } static axutil_hash_t * get_sct_hash_store( const axutil_env_t *env, axis2_msg_ctx_t* msg_ctx) { axis2_conf_ctx_t *conf_ctx = NULL; axis2_ctx_t *ctx = NULL; axutil_property_t *property = NULL; axutil_hash_t *hash_store = NULL; /* Get the conf ctx */ conf_ctx = axis2_msg_ctx_get_conf_ctx(msg_ctx, env); if(!conf_ctx) { AXIS2_LOG_ERROR(env->log,AXIS2_LOG_SI, "[rampart]Config context is NULL. Cannot get security context token hash store."); return NULL; } ctx = axis2_conf_ctx_get_base(conf_ctx,env); if(!ctx) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Axis2 context is NULL. Cannot get security context token hash store."); return NULL; } /* Get the hash store property */ property = axis2_ctx_get_property(ctx, env, RAMPART_SCT_PROVIDER_HASH_PROB); if(property) { /* Get the store */ hash_store = (axutil_hash_t*)axutil_property_get_value(property, env); } else { axutil_property_t *hash_store_prop = NULL; hash_store = axutil_hash_make(env); hash_store_prop = axutil_property_create_with_args(env, AXIS2_SCOPE_APPLICATION, AXIS2_TRUE, (void *)sct_hash_store_free, hash_store); axis2_ctx_set_property(ctx, env, RAMPART_SCT_PROVIDER_HASH_PROB, hash_store_prop); } return hash_store; } axiom_node_t * secconv_echo_sts_request_security_token( const axutil_env_t *env, axiom_node_t *node, axis2_msg_ctx_t *msg_ctx) { trust_rst_t* rst = NULL; trust_rstr_t* rstr = NULL; axis2_status_t status; axis2_char_t *token_type = NULL; axis2_char_t *request_type = NULL; axis2_char_t *global_id = NULL; axis2_char_t *local_id = NULL; oxs_buffer_t *shared_secret = NULL; security_context_token_t *sct = NULL; axiom_node_t* rstr_node = NULL; int size = 32; axutil_hash_t* db = NULL; trust_entropy_t* requester_entropy = NULL; /*create and populate rst using node given*/ rst = trust_rst_create(env); trust_rst_set_wst_ns_uri(rst, env, TRUST_WST_XMLNS_05_02); status = trust_rst_populate_rst(rst, env, node); if(status == AXIS2_FAILURE) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][secconv_service] cannot populate rst"); return NULL; } /*check whether rst is valid and can be processed*/ token_type = trust_rst_get_token_type(rst, env); if((!token_type) || (0 != axutil_strcmp(token_type, OXS_VALUE_TYPE_SECURITY_CONTEXT_TOKEN_05_02))) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][secconv_service] token type is not valid"); return NULL; } request_type = trust_rst_get_request_type(rst, env); if(!request_type) /*|| (0 != axutil_strcmp(request_type, TRUST_REQ_TYPE_ISSUE)))*/ { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][secconv_service] request type is not valid"); return NULL; } requester_entropy = trust_rst_get_entropy(rst, env);; axutil_allocator_switch_to_global_pool(env->allocator); /*create global id, local id, and shared secret*/ global_id = oxs_util_generate_id(env,"urn:uuid:"); local_id = axutil_stracat(env, OXS_LOCAL_REFERENCE_PREFIX, oxs_util_generate_id(env, "sctId")); shared_secret = oxs_buffer_create(env); if(requester_entropy) { size = trust_rst_get_key_size(rst, env)/16; } openssl_generate_random_data(env, shared_secret, size); /*create security context token and populate it*/ sct = security_context_token_create(env); security_context_token_set_is_sc10(sct, env, AXIS2_TRUE); security_context_token_set_global_identifier(sct, env, global_id); security_context_token_set_local_identifier(sct, env, local_id); if(requester_entropy) { oxs_buffer_t *buffer = NULL; int requester_entropy_len = 0; axis2_char_t *decoded_requester_entropy = NULL; axis2_char_t *requester_nonce = NULL; int issuer_entropy_len = 0; axis2_char_t *decoded_issuer_entropy = NULL; int key_size = 0; axis2_char_t *output = NULL; buffer = oxs_buffer_create(env); requester_nonce = trust_entropy_get_binary_secret(requester_entropy, env); requester_entropy_len = axutil_base64_decode_len(requester_nonce); decoded_requester_entropy = AXIS2_MALLOC(env->allocator, requester_entropy_len); axutil_base64_decode_binary((unsigned char*)decoded_requester_entropy, requester_nonce); issuer_entropy_len = oxs_buffer_get_size(shared_secret, env); decoded_issuer_entropy = oxs_buffer_get_data(shared_secret, env); key_size = size * 2; output = AXIS2_MALLOC(env->allocator, key_size); openssl_p_hash(env, (unsigned char*)decoded_requester_entropy, requester_entropy_len, (unsigned char*)decoded_issuer_entropy, issuer_entropy_len, (unsigned char*)output, key_size); oxs_buffer_populate(buffer, env, (unsigned char*)output, key_size); security_context_token_set_secret(sct, env, buffer); } else { security_context_token_set_secret(sct, env, shared_secret); } /*store SCT so that when server needs it, can be extracted*/ db = get_sct_hash_store(env, msg_ctx); if(!db) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][secconv_service] Cannot get sct datastore"); security_context_token_free(sct, env); return NULL; } axutil_hash_set_env(db, env); axutil_hash_set(db, global_id, AXIS2_HASH_KEY_STRING, sct); axutil_allocator_switch_to_local_pool(env->allocator); /*create rstr and populate*/ rstr = trust_rstr_create(env); trust_rstr_set_token_type(rstr, env, token_type); trust_rstr_set_request_type(rstr, env, request_type); trust_rstr_set_wst_ns_uri(rstr, env, TRUST_WST_XMLNS_05_02); trust_rstr_set_requested_unattached_reference(rstr, env, security_context_token_get_unattached_reference(sct, env)); trust_rstr_set_requested_attached_reference(rstr, env, security_context_token_get_attached_reference(sct, env)); trust_rstr_set_requested_security_token(rstr, env, security_context_token_get_token(sct, env)); if(requester_entropy) { axis2_char_t *nonce = NULL; trust_entropy_t* entropy = NULL; axiom_node_t *computed_key = NULL; axiom_element_t *computed_key_element = NULL; axiom_node_t *requested_proof = NULL; trust_rstr_set_key_size(rstr, env, size * 16); nonce = AXIS2_MALLOC(env->allocator, sizeof(char) * (axutil_base64_encode_len(size)+1)); axutil_base64_encode(nonce, (char*)oxs_buffer_get_data(shared_secret, env), size); entropy = trust_entropy_create(env); trust_entropy_set_binary_secret(entropy, env, nonce); trust_entropy_set_ns_uri(entropy, env, TRUST_WST_XMLNS_05_02); trust_entropy_set_binary_secret_type(entropy, env, NONCE); trust_rstr_set_entropy(rstr, env, entropy); computed_key = trust_util_computed_key_element(env, TRUST_WST_XMLNS_05_02, NULL); computed_key_element = axiom_node_get_data_element(computed_key, env); axiom_element_set_text(computed_key_element, env, TRUST_COMPUTED_KEY_PSHA1, computed_key); requested_proof = trust_util_create_requsted_proof_token_element(env, TRUST_WST_XMLNS_05_02, NULL, computed_key); trust_rstr_set_requested_proof_token(rstr, env, requested_proof); } else { trust_rstr_set_requested_proof_token(rstr, env, security_context_token_get_requested_proof_token(sct, env)); } /*build the rstr node*/ rstr_node = trust_rstr_build_rstr(rstr, env, NULL); /*clear stuff*/ trust_rstr_free(rstr, env); /*set the action*/ axis2_msg_ctx_set_wsa_action(msg_ctx, env, SECCONV_200502_REQUEST_ISSUE_ACTION); /*return the node*/ return rstr_node; } axiom_node_t * build_om_payload_for_echo_svc_interop(const axutil_env_t *env, axis2_char_t *text) { axiom_node_t *echo_om_node = NULL; axiom_element_t* echo_om_ele = NULL; axiom_node_t* text_om_node = NULL; axiom_element_t * text_om_ele = NULL; axiom_namespace_t *ns1 = NULL; ns1 = axiom_namespace_create(env, "http://InteropBaseAddress/interop", "ns1"); echo_om_ele = axiom_element_create(env, NULL, "echoResponse", ns1, &echo_om_node); text_om_ele = axiom_element_create(env, echo_om_node, "LocalName", NULL, &text_om_node); axiom_element_set_text(text_om_ele, env, text, text_om_node); return echo_om_node; } rampartc-src-1.3.0/samples/server/secconv_echo/services.xml0000644000076500007650000000355711202453433023747 0ustar shankarshankar secconv_echo This is a testing service , to test Rampart/C [Security] functionalities. http://example.com/ws/2004/09/policy/Test/EchoRequest 360 rampartc-src-1.3.0/samples/autogen.sh0000755000076500007650000000131611202453434017427 0ustar shankarshankar#!/bin/bash echo -n 'Running libtoolize...' if [ `uname -s` = Darwin ] then LIBTOOLIZE=glibtoolize else LIBTOOLIZE=libtoolize fi if $LIBTOOLIZE --force > /dev/null 2>&1; then echo 'done.' else echo 'failed.' exit 1 fi echo -n 'Running aclocal...' if aclocal > /dev/null 2>&1; then echo 'done.' else echo 'failed.' exit 1 fi echo -n 'Running autoheader...' if autoheader > /dev/null 2>&1; then echo 'done.' else echo 'failed.' exit 1 fi echo -n 'Running autoconf...' if autoconf > /dev/null 2>&1; then echo 'done.' else echo 'failed.' exit 1 fi echo -n 'Running automake...' if automake --add-missing > /dev/null 2>&1; then echo 'done.' else echo 'failed.' exit 1 fi echo 'done' rampartc-src-1.3.0/samples/INSTALL0000644000076500007650000000057611202453434016466 0ustar shankarshankarGetting Rampart/C samples source working on Linux ============================================= Build the source This can be done using the following command sequence: ./configure make make install use './configure --help' for options Trying samples ============================================= Please refer the ../INSTALL for more information rampartc-src-1.3.0/samples/omxmlsec/0000755000076500007650000000000011202454513017253 5ustar shankarshankarrampartc-src-1.3.0/samples/omxmlsec/Makefile.am0000644000076500007650000000007711202453426021315 0ustar shankarshankarsamplesdir=$(prefix)/samples/omxmlsec SUBDIRS = xmlsig xmlenc rampartc-src-1.3.0/samples/omxmlsec/xmlenc/0000755000076500007650000000000011202454513020541 5ustar shankarshankarrampartc-src-1.3.0/samples/omxmlsec/xmlenc/Makefile.am0000644000076500007650000000047511202453426022605 0ustar shankarshankarprgbindir=$(prefix)/bin/samples/rampart/omxmlsec/xmlenc prgbin_PROGRAMS = enc enc_SOURCES = enc.c INCLUDES = @AXIS2INC@ \ -I ../../../include enc_LDADD = -laxutil \ -laxis2_axiom \ -lxml2 \ ../../src/core/libmod_rampart.la EXTRA_DIST = input.xml rampartc-src-1.3.0/samples/omxmlsec/xmlenc/input.xml0000644000076500007650000000010311202453426022416 0ustar shankarshankar Sample text rampartc-src-1.3.0/samples/omxmlsec/xmlenc/enc.c0000644000076500007650000001416411202453426021462 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include AXIS2_EXTERN axiom_node_t* AXIS2_CALL load_sample_xml(const axutil_env_t *env, axiom_node_t* tmpl, axis2_char_t* filename) { axiom_document_t *doc = NULL; axiom_stax_builder_t *builder = NULL; axiom_xml_reader_t *reader = NULL; /*axiom_xml_writer_t *writer = NULL;*/ reader = axiom_xml_reader_create_for_file(env, filename, NULL); if (!reader) printf("\n Reader is NULL"); builder = axiom_stax_builder_create(env, reader); if (!builder) printf("\n builder is NULL"); doc = axiom_document_create(env, NULL, builder); if (!doc) printf("\n doc is NULL"); tmpl = axiom_document_build_all(doc, env); axiom_xml_reader_xml_free(reader, env, NULL); /* tmpl = axiom_document_get_root_element(doc, env);*/ if (!tmpl) printf("\n tmpl is NULL"); return tmpl; } oxs_key_t *create_key(axutil_env_t *env) { oxs_key_t *key = NULL; oxs_key_t *derived_key = NULL; key = oxs_key_create(env); oxs_key_populate(key, env, (unsigned char*)"012345670123456701234444", "session_key", 32, OXS_KEY_USAGE_SESSION); derived_key = oxs_key_create(env); oxs_derivation_derive_key(env, key, derived_key, AXIS2_TRUE); return derived_key; } oxs_key_t *get_key(axutil_env_t *env, axiom_node_t *dk_token_node) { oxs_key_t *key = NULL; oxs_key_t *derived_key = NULL; key = oxs_key_create(env); oxs_key_populate(key, env, (unsigned char*)"012345670123456701234444", "session_key", 32, OXS_KEY_USAGE_SESSION); derived_key = oxs_derivation_extract_derived_key_from_token(env, dk_token_node, NULL, key); return derived_key; } axis2_status_t decrypt(axutil_env_t *env, axis2_char_t *filename) { oxs_ctx_t *ctx = NULL; axiom_node_t *tmpl = NULL; axiom_node_t *enc_data_node = NULL; axiom_node_t *decrypted_node = NULL; axiom_node_t *derived_key = NULL; oxs_key_t *key = NULL; tmpl = load_sample_xml(env , tmpl, filename); axis2_status_t temp_status = AXIS2_FAILURE; axis2_char_t *serialized_data = NULL; FILE *outf; derived_key = axiom_node_get_last_child(tmpl, env); /*Create key*/ key = get_key (env, derived_key); /*Create ctx*/ ctx = oxs_ctx_create(env); oxs_ctx_set_key(ctx, env, key); /*Get the EncryptedData node*/ enc_data_node = axiom_node_get_first_element(tmpl, env); temp_status = oxs_xml_enc_decrypt_node(env, ctx, enc_data_node, &decrypted_node); if (temp_status){ printf("\nooxs_xml_enc_decrypt_node SUCCESS\n"); }else{ printf("\noxs_xml_enc_decrypt_node FAILURE\n"); } axiom_node_detach(derived_key, env); axiom_node_free_tree(derived_key, env); serialized_data = axiom_node_to_string(tmpl, env); outf = fopen("decrypted-result.xml", "wb"); fwrite(serialized_data, 1, axutil_strlen(serialized_data), outf); fclose(outf); printf("Node decrypted successfully. Result is written to decrypted-result.xml\n"); return AXIS2_SUCCESS; } axis2_status_t encrypt(axutil_env_t *env, axis2_char_t *filename) { oxs_ctx_t *ctx = NULL; oxs_key_t *key = NULL; axis2_status_t temp_status = AXIS2_FAILURE; axiom_node_t *tmpl = NULL, *enc_node = NULL, *enc_data_node = NULL; axis2_char_t *encrypted_result = NULL; axis2_char_t *id = NULL; FILE *outf; tmpl = load_sample_xml(env , tmpl, filename); /*Create key*/ key = create_key(env); /*Create ctx*/ ctx = oxs_ctx_create(env); oxs_ctx_set_key(ctx, env, key); /*Set algorithm*/ oxs_ctx_set_enc_mtd_algorithm(ctx, env, OXS_HREF_DES3_CBC); /*Get the node to be encrypted*/ enc_node = axiom_node_get_first_element(tmpl, env); /*Create a reference to encrypted node*/ id = oxs_util_generate_id(env, OXS_ENCDATA_ID); enc_data_node = oxs_token_build_encrypted_data_element(env, tmpl, OXS_TYPE_ENC_ELEMENT, id); temp_status = oxs_xml_enc_encrypt_node(env, ctx, enc_node, &enc_data_node); oxs_derivation_build_derived_key_token(env, key, tmpl, "A", "A"); oxs_ctx_free( ctx, env); if (temp_status){ printf("\noxs_enc_encrypt_template SUCCESS\n"); }else{ printf("\noxs_enc_encrypt_template FAILURE\n"); } encrypted_result = axiom_node_to_string(tmpl, env) ; outf = fopen("result.xml", "wb"); fwrite(encrypted_result, 1, axutil_strlen(encrypted_result), outf); fclose(outf); printf("Node encrypted successfully. Result is written to result.xml\n"); axiom_document_free( axiom_node_get_document(tmpl, env), env); return temp_status; } int main(int argc, char *argv[]) { axutil_env_t *env = NULL; axis2_char_t *filename = NULL; axis2_char_t *operation = NULL; env = axutil_env_create_all("enc.log", AXIS2_LOG_LEVEL_TRACE); if (argc > 2){ filename = argv[1]; operation = argv[2]; }else{ printf("Usage ./enc inputfile operation[E/D]\n"); return -1; } if( 0 == axutil_strcmp(operation, "D")){ decrypt(env, filename); }else{ encrypt(env, filename); } return 0; } rampartc-src-1.3.0/samples/omxmlsec/xmlsig/0000755000076500007650000000000011202454513020556 5ustar shankarshankarrampartc-src-1.3.0/samples/omxmlsec/xmlsig/cert.pem0000644000076500007650000000613611202453426022226 0ustar shankarshankarCertificate: Data: Version: 3 (0x2) Serial Number: dc:83:fa:3c:1e:93:11:ae Signature Algorithm: sha1WithRSAEncryption Issuer: C=SL, ST=WP, O=WS, OU=C, CN=Kaushalye/emailAddress=kaus@wso2.com Validity Not Before: Dec 6 10:27:18 2006 GMT Not After : Dec 6 10:27:18 2007 GMT Subject: C=SL, ST=WP, L=Katubedda, O=WS, OU=C, CN=Aaa/emailAddress=aaa@ws.com Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public Key: (1024 bit) Modulus (1024 bit): 00:c7:e1:d8:5c:ef:16:dd:5d:05:95:c8:16:7c:2f: f5:13:15:b4:7a:0c:c8:fb:95:c8:03:db:3d:a8:41: 5d:70:75:ce:27:15:e2:a3:ef:87:24:38:5a:ee:72: ea:70:c2:45:44:b5:dd:46:ca:51:60:15:ac:51:c3: 59:af:a8:17:85:af:cd:77:74:87:b2:4b:ab:13:e0: 00:82:2f:2a:d0:6b:12:7d:09:dc:52:dc:16:10:58: 46:38:74:c7:cf:98:96:e3:58:ce:8a:c8:31:fa:77: 6c:69:65:dc:a1:4c:38:e7:b0:9e:dc:64:06:ae:aa: 13:90:23:62:84:14:c0:9e:31 Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Basic Constraints: CA:FALSE Netscape Comment: OpenSSL Generated Certificate X509v3 Subject Key Identifier: 67:B7:BC:8C:22:29:1E:17:58:C6:43:91:A6:FB:82:E7:11:77:62:D6 X509v3 Authority Key Identifier: keyid:D7:27:10:74:4B:F8:2F:44:0B:BC:C7:9E:04:EF:22:5B:15:18:21:CC Signature Algorithm: sha1WithRSAEncryption 4d:36:00:f0:51:10:44:72:73:5f:09:e4:fe:ad:f4:5b:a0:48: 5f:50:50:d7:bb:bb:2a:98:b3:b7:d7:54:9e:57:6d:d2:cd:de: d5:d5:30:4d:c7:03:09:b4:7d:d8:72:17:f7:c6:e8:72:69:89: b9:bc:91:5a:a8:c8:9e:ee:76:0b:c2:ae:c2:65:59:94:5b:fe: a2:30:bf:aa:49:25:b1:42:bc:6d:c4:0a:99:aa:2d:17:14:d8: 8d:19:cd:75:22:84:51:22:55:4e:e1:9e:50:1f:c6:c2:57:e1: 4b:58:87:d5:73:c1:69:fd:25:dd:3d:50:ee:0e:9f:6a:9a:13: 52:45 -----BEGIN CERTIFICATE----- MIICzjCCAjegAwIBAgIJANyD+jwekxGuMA0GCSqGSIb3DQEBBQUAMGUxCzAJBgNV BAYTAlNMMQswCQYDVQQIEwJXUDELMAkGA1UEChMCV1MxCjAIBgNVBAsTAUMxEjAQ BgNVBAMTCUthdXNoYWx5ZTEcMBoGCSqGSIb3DQEJARYNa2F1c0B3c28yLmNvbTAe Fw0wNjEyMDYxMDI3MThaFw0wNzEyMDYxMDI3MThaMHAxCzAJBgNVBAYTAlNMMQsw CQYDVQQIEwJXUDESMBAGA1UEBxMJS2F0dWJlZGRhMQswCQYDVQQKEwJXUzEKMAgG A1UECxMBQzEMMAoGA1UEAxMDQWFhMRkwFwYJKoZIhvcNAQkBFgphYWFAd3MuY29t MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDH4dhc7xbdXQWVyBZ8L/UTFbR6 DMj7lcgD2z2oQV1wdc4nFeKj74ckOFrucupwwkVEtd1GylFgFaxRw1mvqBeFr813 dIeyS6sT4ACCLyrQaxJ9CdxS3BYQWEY4dMfPmJbjWM6KyDH6d2xpZdyhTDjnsJ7c ZAauqhOQI2KEFMCeMQIDAQABo3sweTAJBgNVHRMEAjAAMCwGCWCGSAGG+EIBDQQf Fh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUZ7e8jCIp HhdYxkORpvuC5xF3YtYwHwYDVR0jBBgwFoAU1ycQdEv4L0QLvMeeBO8iWxUYIcww DQYJKoZIhvcNAQEFBQADgYEATTYA8FEQRHJzXwnk/q30W6BIX1BQ17u7Kpizt9dU nldt0s3e1dUwTccDCbR92HIX98bocmmJubyRWqjInu52C8KuwmVZlFv+ojC/qkkl sUK8bcQKmaotFxTYjRnNdSKEUSJVTuGeUB/GwlfhS1iH1XPBaf0l3T1Q7g6fapoT UkU= -----END CERTIFICATE----- rampartc-src-1.3.0/samples/omxmlsec/xmlsig/Makefile.am0000644000076500007650000000046211202453426022616 0ustar shankarshankarprgbindir=$(prefix)/bin/samples/rampart/omxmlsec/xmlsig prgbin_PROGRAMS = sign sign_SOURCES = sign.c INCLUDES = @AXIS2INC@ \ -I ../../../include sign_LDADD = -laxutil \ -laxis2_axiom \ -lxml2 \ ../../src/core/libmod_rampart.la EXTRA_DIST = input.xml rampartc-src-1.3.0/samples/omxmlsec/xmlsig/input.xml0000644000076500007650000000015211202453426022437 0ustar shankarshankar Sample text rampartc-src-1.3.0/samples/omxmlsec/xmlsig/README.txt0000644000076500007650000000035411202453426022260 0ustar shankarshankarThis example shows how to sign/verify an XML document using OMXMLSecurity. SYNTAX: ./sign e.g. TO SIGN %./sign input.xml S cert.pem key.pem TO VERIFY %s./sign result-sign.xml V rampartc-src-1.3.0/samples/omxmlsec/xmlsig/key.pem0000644000076500007650000000156711202453426022064 0ustar shankarshankar-----BEGIN RSA PRIVATE KEY----- MIICWwIBAAKBgQDH4dhc7xbdXQWVyBZ8L/UTFbR6DMj7lcgD2z2oQV1wdc4nFeKj 74ckOFrucupwwkVEtd1GylFgFaxRw1mvqBeFr813dIeyS6sT4ACCLyrQaxJ9CdxS 3BYQWEY4dMfPmJbjWM6KyDH6d2xpZdyhTDjnsJ7cZAauqhOQI2KEFMCeMQIDAQAB AoGAQIrSvJ+PeIdTCFyFtjAeKL13e3mpZGOnJGek7zG8JFZF7SUJ+/maX726zwhY X3S7vUYkX3lw8V/ONtCnoyrZ/QQBqvUPUGg2XJI+NDYDrc3RR9YHTBFiYt791iXX 2/hpQJV7Fj2K40AxAgcDmOmsjhMROhc52cERXNUTvqo+sIECQQD+WbS0NQL4kcRZ kELonmCHNAFA+vYvfB82RCspctNbfoZUAUPn/BMWTf9jZms89mDGfzaWKP5xd9aB Hi7sTp4JAkEAyS204Q36vnbDh5Dzz5YkJNFTdgyrLTBIQ5r4ax+K1i6V/Mwq07Zw SCvdDaTiBHOSaVJSHE38iwZZxUsWAs6I6QJADGFlcFgcOukte4aQGy6KWEppvTX6 Abmy8ztCNpRGQW/ZLgGZwpL8gtttEPONSLxdXYwXpht8tx00LbjAY/Q3sQJAHqEg 2ur/9COs3WUKWd6oHhrotB51qWmidviPPfANeVKab2S+WIF8UuCqxTsHVloqPnLU IY8WFiyfWlR2Q3MikQJASXg8KPM8C8Jp17iBbF5f09V18iA1fAbQSaLk3Lcbp1/h 0VsiOHjW05LvI8zIHMX2Ops7qAjxixK1T/2ec9qhuQ== -----END RSA PRIVATE KEY----- rampartc-src-1.3.0/samples/omxmlsec/xmlsig/sign.c0000644000076500007650000002013711202453426021667 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include AXIS2_EXTERN axiom_node_t* AXIS2_CALL load_sample_xml(const axutil_env_t *env, axiom_node_t* tmpl, axis2_char_t* filename ) { axiom_document_t *doc = NULL; axiom_stax_builder_t *builder = NULL; axiom_xml_reader_t *reader = NULL; /*axiom_xml_writer_t *writer = NULL;*/ reader = axiom_xml_reader_create_for_file(env, filename, NULL); if (!reader) printf("\n Reader is NULL"); builder = axiom_stax_builder_create(env, reader); if (!builder) printf("\n builder is NULL"); doc = axiom_document_create(env, NULL, builder); if (!doc) printf("\n doc is NULL"); tmpl = axiom_document_build_all(doc, env); /* tmpl = axiom_document_get_root_element(doc, env);*/ if (!tmpl) printf("\n tmpl is NULL"); return tmpl; } axis2_status_t sign(axutil_env_t *env, axis2_char_t *filename, openssl_pkey_t *prvkey , oxs_x509_cert_t *cert) { axis2_char_t *signed_result = NULL; axis2_char_t *signed_filename = "result-sign.xml"; axiom_node_t *node = NULL; axiom_node_t *tmpl = NULL; oxs_sign_part_t *sign_part = NULL; oxs_sign_ctx_t *sign_ctx = NULL; oxs_transform_t *tr = NULL; axutil_array_list_t *sign_parts = NULL; axutil_array_list_t *tr_list = NULL; axis2_char_t *id = NULL; axis2_status_t status = AXIS2_FAILURE; FILE *outf; tmpl = load_sample_xml(env , tmpl, filename); if (tmpl) { printf("load_sample_xml SUCCESS\n"); } else { printf("load_sample_xml FAILED"); return -1; } /*Sign specific*/ sign_part = oxs_sign_part_create(env); tr_list = axutil_array_list_create(env, 1); /*We need C14N transform*/ tr = oxs_transforms_factory_produce_transform(env, OXS_HREF_TRANSFORM_XML_EXC_C14N); axutil_array_list_add(tr_list, env, tr); oxs_sign_part_set_transforms(sign_part, env, tr_list); /*We need to sign this node add an ID to it*/ node = axiom_node_get_first_element(tmpl, env); id = /*"Sig-ID-EFG";*/ oxs_util_generate_id(env,(axis2_char_t*)OXS_SIG_ID); oxs_axiom_add_attribute(env, node, OXS_WSU, OXS_WSSE_XMLNS, OXS_ATTR_ID, id); status = oxs_sign_part_set_node(sign_part, env,node); status = oxs_sign_part_set_digest_mtd(sign_part, env, OXS_HREF_SHA1); sign_parts = axutil_array_list_create(env, 1); axutil_array_list_add(sign_parts, env, sign_part); sign_ctx = oxs_sign_ctx_create(env); if(sign_ctx){ axiom_node_t *sig_node = NULL; oxs_sign_ctx_set_private_key(sign_ctx, env, prvkey); oxs_sign_ctx_set_certificate(sign_ctx, env, cert); /*Set sig algo*/ oxs_sign_ctx_set_sign_mtd_algo(sign_ctx, env, OXS_HREF_RSA_SHA1); /*Set C14N method*/ oxs_sign_ctx_set_c14n_mtd(sign_ctx, env, OXS_HREF_XML_EXC_C14N); /*Set sig parts*/ oxs_sign_ctx_set_sign_parts(sign_ctx, env, sign_parts); /*Set the operation*/ oxs_sign_ctx_set_operation(sign_ctx, env, OXS_SIGN_OPERATION_SIGN); /*Sign*/ oxs_xml_sig_sign(env, sign_ctx, tmpl, &sig_node); /*Finally build KeyInfo*/ oxs_xml_key_info_build(env, sig_node, cert, OXS_KIBP_X509DATA_X509CERTIFICATE); }else{ printf("Sign ctx creation failed"); } signed_result = axiom_node_to_string(tmpl, env) ; outf = fopen(signed_filename, "wb"); fwrite(signed_result, 1, axutil_strlen(signed_result), outf); return AXIS2_SUCCESS; } axis2_status_t verify(axutil_env_t *env, axis2_char_t *filename, openssl_pkey_t *prvkey , oxs_x509_cert_t *cert) { oxs_sign_ctx_t *sign_ctx = NULL; axiom_node_t *tmpl = NULL; axis2_status_t status = AXIS2_FAILURE; tmpl = load_sample_xml(env , tmpl, filename); printf("File : \n%s\n", axiom_node_to_string(tmpl, env)); sign_ctx = oxs_sign_ctx_create(env); if(sign_ctx){ axiom_node_t *sig_node = NULL; /*Set the operation*/ oxs_sign_ctx_set_operation(sign_ctx, env, OXS_SIGN_OPERATION_VERIFY); sig_node = oxs_axiom_get_first_child_node_by_name(env, tmpl, OXS_NODE_SIGNATURE, OXS_DSIG_NS, OXS_DS ); if(!sig_node){ printf("Verification : Cannot find ds:Signature node\n"); return AXIS2_FAILURE; } /**If the certificate is not given check key information*/ if(!cert){ axiom_node_t *ki_node = NULL; axiom_node_t *x509_node = NULL; ki_node = oxs_axiom_get_first_child_node_by_name(env, sig_node, OXS_NODE_KEY_INFO, OXS_DSIG_NS, OXS_DS); x509_node = oxs_axiom_get_first_child_node_by_name(env, ki_node, OXS_NODE_X509_DATA, OXS_DSIG_NS, OXS_DS); cert = oxs_x509_cert_create(env); printf("No certificate is given. Fetching certificate from the KeyInfo\n"); status = oxs_xml_key_process_X509Data(env, x509_node, cert); if(AXIS2_FAILURE == status){ printf("Error reading KeyInfo\n"); return AXIS2_FAILURE; } } /*Set certificate*/ if(cert){ oxs_sign_ctx_set_certificate(sign_ctx, env, cert); }else{ printf("Certificate is NULL\n"); return AXIS2_FAILURE; } /*Verify*/ status = oxs_xml_sig_verify(env, sign_ctx, sig_node, tmpl); if(AXIS2_SUCCESS != status){ printf("\nSignature Failed :-(\n"); }else{ printf("\nSignature Verified :-)\n"); } } return status; } int main(int argc, char *argv[]) { axutil_env_t *env = NULL; axis2_char_t *filename = NULL; axis2_char_t *certfile = NULL; axis2_char_t *prvkeyfile = NULL; axis2_char_t *operation = NULL; openssl_pkey_t *prvkey = NULL; oxs_x509_cert_t *cert = NULL; int s =-1; if (argc > 2){ filename = argv[1]; operation = argv[2]; certfile = argv[3]; prvkeyfile = argv[4]; }else{ printf("Usage ./test inputfile operation[S/V] certificate prvkey \n"); return -1; } env = axutil_env_create_all("./oxs.log", AXIS2_LOG_LEVEL_TRACE); printf("--Testing started--------------------------------------------\n"); /*Load private key*/ prvkey = oxs_key_mgr_load_private_key_from_pem_file(env, prvkeyfile, ""); if(!prvkey){ printf("Cannot load private key"); } /*Load certificate*/ cert = oxs_key_mgr_load_x509_cert_from_pem_file(env, certfile); if(!cert){ printf("Cannot load certificate"); } s = oxs_x509_cert_get_serial_number(cert, env); printf("\n%d\n", s); if(0 == axutil_strcmp(operation, "S")){ sign(env, filename, prvkey, cert); }else{ verify(env, filename, prvkey, cert); } printf("\nDONE\n"); return 0; } rampartc-src-1.3.0/samples/LICENSE0000644000076500007650000002613711202453434016443 0ustar shankarshankar Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] 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. rampartc-src-1.3.0/samples/callback/0000755000076500007650000000000011202454513017160 5ustar shankarshankarrampartc-src-1.3.0/samples/callback/Makefile.am0000644000076500007650000000027711202453432021221 0ustar shankarshankarSUBDIRS=htpasswd_callback prglibdir=$(prefix)/samples/lib/rampartc prglib_LTLIBRARIES = libpwcb.la libpwcb_la_SOURCES = pwcb.c libpwcb_la_LIBADD = INCLUDES = -I ../../include\ @AXIS2INC@ rampartc-src-1.3.0/samples/callback/pwcb.c0000644000076500007650000000765511202453432020273 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include #include #include #include axis2_status_t AXIS2_CALL my_free_function(rampart_callback_t *rcb, const axutil_env_t *env) { AXIS2_FREE(env->allocator, rcb->ops); AXIS2_FREE(env->allocator, rcb); return AXIS2_SUCCESS; } axis2_char_t* AXIS2_CALL get_sample_password(rampart_callback_t *rcb, const axutil_env_t *env, const axis2_char_t *username, void *param) { /*First set pf password are for sample usernames*/ axis2_char_t * pw = NULL; if (0 == axutil_strcmp(username, "Raigama")) { pw = "RaigamaPW" ; } else if (0 == axutil_strcmp(username, "Gampola")) { pw = "GampolaPW"; } else if (0 == axutil_strcmp(username, "alice")) { pw = "password"; } else if (0 == axutil_strcmp(username, "bob")) { pw = "bobPW"; } else if (0 == axutil_strcmp(username, "Bob")) { pw = "boB"; } else if (0 == axutil_strcmp(username, "Alice")) { pw = "abcd!1234"; /*pw = "ecilA";*/ } /*These are for sample keystores*/ else if (0 == axutil_strcmp(username, "a")) { pw = "a12345"; } else if (0 == axutil_strcmp(username, "b")) { pw = "b12345"; } else if (0 == axutil_strcmp(username, "x")) { pw = "x12345"; } else if (0 == axutil_strcmp(username, "abcd")) { pw = "dcba"; } else if (0 == axutil_strcmp(username, "y")) { pw = "y12345"; } else { /*Append 12345 for any name not specified above*/ /*sprintf(pw, "%s%s", username, "12345");*/ } return pw; } axis2_char_t * AXIS2_CALL get_pkcs12_sample_password( rampart_callback_t *rcb, const axutil_env_t *env, const axis2_char_t *username, const void *param) { axis2_char_t *pw = NULL; if(0 == axutil_strcmp(username, "a")) { pw = "a12345"; } else if (0 == axutil_strcmp(username, "b")) { pw = "b12345"; } return pw; } /** * Following block distinguish the exposed part of the dll. */ AXIS2_EXPORT int axis2_get_instance(rampart_callback_t **inst, const axutil_env_t *env) { rampart_callback_t* rcb = NULL; rcb = AXIS2_MALLOC(env->allocator, sizeof(rampart_callback_t)); rcb->ops = AXIS2_MALLOC( env->allocator, sizeof(rampart_callback_ops_t)); /*assign function pointers*/ rcb->ops->callback_password = get_sample_password; rcb->ops->free = my_free_function; rcb->ops->callback_pkcs12_password = get_pkcs12_sample_password; *inst = rcb; if (!(*inst)) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][pwcb_sample] Cannot initialize the PWCB module"); return AXIS2_FAILURE; } return AXIS2_SUCCESS; } AXIS2_EXPORT int axis2_remove_instance(rampart_callback_t *inst, const axutil_env_t *env) { axis2_status_t status = AXIS2_FAILURE; if (inst) { status = my_free_function(inst, env); } return status; } rampartc-src-1.3.0/samples/callback/htpasswd_callback/0000755000076500007650000000000011202454513022631 5ustar shankarshankarrampartc-src-1.3.0/samples/callback/htpasswd_callback/Makefile.am0000644000076500007650000000026211202453432024664 0ustar shankarshankarprglibdir=$(prefix)/samples/lib/rampartc prglib_LTLIBRARIES = libhtpwcb.la libhtpwcb_la_SOURCES = htpwcb.c libhtpwcb_la_LIBADD = INCLUDES = -I ../../../include \ @AXIS2INC@ rampartc-src-1.3.0/samples/callback/htpasswd_callback/htpwcb.c0000644000076500007650000000660611202453432024273 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include #include #include #include axis2_char_t* AXIS2_CALL get_ht_password(rampart_callback_t *rcb, const axutil_env_t *env, const axis2_char_t *username, void *param) { axis2_char_t * password = NULL; FILE *file = NULL; /*The default location is the following. But this will be overridden by the property values set in the msg_ctx*/ axis2_char_t *filename = "/usr/local/apache2/passwd/passwords"; if(param){ filename = (axis2_char_t *)param; }else{ AXIS2_LOG_INFO(env->log, "Using the default password file location %s", filename); } file = fopen ( filename, "r" ); if ( file != NULL ) { axis2_char_t line [ 128 ]; axis2_char_t ch = 0; axis2_char_t *res = NULL; axis2_char_t *un = NULL; axis2_char_t *pw = NULL; while ( fgets ( line, sizeof line, file ) != NULL ) { res = axutil_strstr(line, ":"); ch = res[0]; res[0] = '\0'; un = (axis2_char_t *) axutil_strdup(env, line); res[0] = ch; if(0 == axutil_strcmp(un, username)){ pw = (axis2_char_t *) axutil_strdup( env, &(res[1])); password = axutil_strndup(env, pw, axutil_strlen(pw)-1); /*We need to remove the end of line character*/ break; } } AXIS2_FREE(env->allocator, un); AXIS2_FREE(env->allocator, pw); fclose ( file ); }else { AXIS2_LOG_INFO(env->log, "Cannot load the password file %s in the callback module", filename); perror ( filename ); } return password; }; /** * Following block distinguish the exposed part of the dll. */ AXIS2_EXPORT int axis2_get_instance(rampart_callback_t **inst, const axutil_env_t *env) { rampart_callback_t* rcb = NULL; rcb = AXIS2_MALLOC(env->allocator, sizeof(rampart_callback_t)); rcb->ops = AXIS2_MALLOC( env->allocator, sizeof(rampart_callback_ops_t)); /*assign function pointers*/ rcb->ops->callback_password = get_ht_password; *inst = rcb; if (!(*inst)) { return AXIS2_FAILURE; } return AXIS2_SUCCESS; } AXIS2_EXPORT int axis2_remove_instance(rampart_callback_t *inst, const axutil_env_t *env) { axis2_status_t status = AXIS2_FAILURE; if (inst) { status = AXIS2_SVC_SKELETON_FREE(inst, env); } return status; } rampartc-src-1.3.0/samples/authn_provider/0000755000076500007650000000000011202454513020455 5ustar shankarshankarrampartc-src-1.3.0/samples/authn_provider/Makefile.am0000644000076500007650000000032111202453427022510 0ustar shankarshankarprglibdir=$(prefix)/samples/lib/rampartc prglib_LTLIBRARIES = libauthn.la libauthn_la_SOURCES = authn_provider.c libauthn_la_LIBADD = ../../src/util/librampart.la INCLUDES = -I ../../include\ @AXIS2INC@ rampartc-src-1.3.0/samples/authn_provider/authn_provider.c0000644000076500007650000001234411202453427023661 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include #include #include #include #include axis2_char_t* AXIS2_CALL rampart_authn_get_sample_password(const axutil_env_t *env, const axis2_char_t *username) { /*First set pf password are for sample usernames*/ axis2_char_t * pw = NULL; if (0 == axutil_strcmp(username, "Raigama")) { pw = "RaigamaPW" ; } else if (0 == axutil_strcmp(username, "Gampola")) { pw = "GampolaPW"; } else if (0 == axutil_strcmp(username, "alice")) { pw = "password"; } else if (0 == axutil_strcmp(username, "Alice")) { pw = "abcd!1234"; } else if (0 == axutil_strcmp(username, "bob")) { pw = "bobPW"; } /*These are for sample keystores*/ else if (0 == axutil_strcmp(username, "a")) { pw = "a12345"; } else if (0 == axutil_strcmp(username, "b")) { pw = "b12345"; } else if (0 == axutil_strcmp(username, "x")) { pw = "x12345"; } else if (0 == axutil_strcmp(username, "y")) { pw = "y12345"; } else { /*Append 12345 for any name not specified above*/ /*sprintf(pw, "%s%s", username, "12345");*/ } return pw; }; /*Two sample implementations*/ rampart_authn_provider_status_t AXIS2_CALL rampart_sample_authn_provider_check_password(rampart_authn_provider_t *authn_provider, const axutil_env_t* env, axis2_msg_ctx_t *msg_ctx, const axis2_char_t *username, const axis2_char_t *password) { axis2_char_t *local_pw = NULL; local_pw = rampart_authn_get_sample_password(env, username); AXIS2_LOG_INFO(env->log, "[rampart][authn_provider_sample] Load the password - default impl"); if(local_pw){ /*Compare passwords*/ if(0 == axutil_strcmp(password, local_pw)){ AXIS2_LOG_INFO(env->log, "[rampart][authn_provider_sample] Access granted"); return RAMPART_AUTHN_PROVIDER_GRANTED; }else{ AXIS2_LOG_INFO(env->log, "[rampart][authn_provider_sample] Access denied"); return RAMPART_AUTHN_PROVIDER_DENIED; } }else{ AXIS2_LOG_INFO(env->log, "[rampart][authn_provider_sample] User not found"); return RAMPART_AUTHN_PROVIDER_USER_NOT_FOUND; } } rampart_authn_provider_status_t AXIS2_CALL rampart_sample_authn_provider_check_password_digest(rampart_authn_provider_t *authn_provider, const axutil_env_t* env, axis2_msg_ctx_t *msg_ctx, const axis2_char_t *username, const axis2_char_t *nonce, const axis2_char_t *created, const axis2_char_t *digest) { axis2_char_t *local_pw = NULL; local_pw = rampart_authn_get_sample_password(env, username); if(local_pw){ axis2_char_t *local_digest = NULL; /*Generate the digest*/ local_digest = rampart_crypto_sha1(env, nonce, created, local_pw); /*Compare digest*/ if(0 == axutil_strcmp(digest, local_digest)){ return RAMPART_AUTHN_PROVIDER_GRANTED; }else{ return RAMPART_AUTHN_PROVIDER_DENIED; } }else{ return RAMPART_AUTHN_PROVIDER_USER_NOT_FOUND; } } /** * Following block distinguishes the exposed part of the dll. */ AXIS2_EXPORT int axis2_get_instance(rampart_authn_provider_t **inst, const axutil_env_t *env) { rampart_authn_provider_t* authn_p = NULL; authn_p = AXIS2_MALLOC(env->allocator, sizeof(rampart_authn_provider_t)); authn_p->ops = AXIS2_MALLOC( env->allocator, sizeof(rampart_authn_provider_ops_t)); /*assign function pointers*/ authn_p->ops->rampart_authn_provider_check_password = rampart_sample_authn_provider_check_password; authn_p->ops->rampart_authn_provider_check_password_digest = rampart_sample_authn_provider_check_password_digest; *inst = authn_p; if (!(*inst)) { return AXIS2_FAILURE; } return AXIS2_SUCCESS; } AXIS2_EXPORT int axis2_remove_instance(rampart_authn_provider_t *inst, const axutil_env_t *env) { if (inst) { AXIS2_FREE(env->allocator, inst->ops); AXIS2_FREE(env->allocator, inst); } return AXIS2_SUCCESS; } rampartc-src-1.3.0/samples/data/0000755000076500007650000000000011202454513016335 5ustar shankarshankarrampartc-src-1.3.0/samples/data/Makefile.am0000644000076500007650000000014611202453433020372 0ustar shankarshankarresdir=$(prefix)/samples/src/rampartc/data res_DATA= passwords.txt server_axis2.xml client_axis2.xml rampartc-src-1.3.0/samples/data/server_axis2.xml0000644000076500007650000001417011202453433021476 0ustar shankarshankar true 6060 false HTTP/1.1 rampartc-src-1.3.0/samples/data/passwords.txt0000644000076500007650000000017311202453433021124 0ustar shankarshankarbob:bobPW Bob:bobPW Raigama:RaigamaPW Gampola:GampolaPW alice:password Alice:abcd!1234 a:a12345 b:b12345 c:c12345 d:d12345 rampartc-src-1.3.0/samples/data/client_axis2.xml0000644000076500007650000001424211202453433021446 0ustar shankarshankar true 6060 false HTTP/1.1 rampartc-src-1.3.0/samples/ABOUT_SAMPLES0000644000076500007650000000534511202453434017415 0ustar shankarshankarFollowing is a brief description of Rampart/C samples Service : ./server/sec_echo --------------------------- The security enabled service. Depends on deployed security policy scenario. Service : ./server/secconv_echo --------------------------- The service act as the Security Token Service (STS). Depends on deployed security policy scenario. Service : ./server/saml_sts --------------------------- The service act as STS for SAML tokens. Client: ./client/sec_echo --------------------------- The client to send secured SOAP messages. Depends on deployed security policy scenario. Client: ./client/saml_echo --------------------------- Client uses SAML token as sign supporting token. Client: ./client/saml_protect ------------------------------ Client uses SAML token to encrypt and sign the message Security policies: ./secpolicy/scenarioX -------------------------------------- Provides several identified scenarios to demonstrate features of RampartC. Please read the README file under ./secpolicy to learn more about them. Callbacks : ./callback --------------------------- To retrieve passwords for a particular user, Rampart/C uses password callback mechanism. Such callback modules can be plugged into Rampart/C by defining them in the policy assertions. The sample shows how to write a simple password callback module. Credential Provider: ./credential_provider ------------------------------------------------ In the client side it's possible to give a username/password pair to the client, using a credential_provider. Similar to Callbacks, these can too plugged into Rampart/C by defining them in the policy assertions. The sample shows how to write a simple credentials provider. Authentication Provider : ./authn_provider ---------------------------------------------- In the server side, in order to validate a usernametoken in more application specific way, an authentication module can be used. The authentication module gets both the username and the password and returns a status code back to Rampart/C. The sample shows how to write a simple authentication provider. Replay Detector : ./replay_detector --------------------------------------------- Replay attacks can be identified and removed from the server side. Replay detector module shows one such implementation where it stores last 5 message IDs and check whether there are any replays. Security Context Token Provider : ./sct_provider -------------------------------------------------- To store and retrieve Security Context Token. Can be used in server side as well as in client side. Keys : ./keys ------------------ All the certificates, private keys and key stores are used by samples are placed here. Data : ./data ------------------- Data files that are used by samples, placed here. rampartc-src-1.3.0/samples/COPYING0000644000076500007650000002613711202453434016471 0ustar shankarshankar Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] 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. rampartc-src-1.3.0/samples/replay_detector/0000755000076500007650000000000011202454513020611 5ustar shankarshankarrampartc-src-1.3.0/samples/replay_detector/Makefile.am0000644000076500007650000000047411202453426022654 0ustar shankarshankarprglibdir=$(prefix)/samples/lib/rampartc prglib_LTLIBRARIES = librdflatfile.la librdflatfile_la_SOURCES = rampart_replay_detector_flat_file.c librdflatfile_la_LIBADD = $(LDFLAGS) \ -L$(AXIS2C_HOME)/lib \ -laxutil \ ../../src/util/librampart.la INCLUDES = -I ../../include\ @AXIS2INC@ rampartc-src-1.3.0/samples/replay_detector/rampart_replay_detector_flat_file.c0000644000076500007650000002574711202453426027716 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include #include #include #include #define BUFFER_LEN 10000 #define DELIMIT 16 #define INDICATOR_FILE "/indicator" #define REPLAY_FILE "/replay.content" static axis2_char_t * rampart_replay_detector_file_dir( const axutil_env_t* env) { #ifdef WIN32 char* axis_home = getenv("AXIS2C_HOME"); if (axis_home) return axutil_strdup(env, axis_home); else return axutil_strdup(env, "c:\\logs\\"); #else return axutil_strdup(env, "/tmp/"); #endif } AXIS2_EXTERN axis2_status_t AXIS2_CALL rampart_replay_detector_free( rampart_replay_detector_t *rrd, const axutil_env_t* env) { if (rrd) { if (rrd->ops) { AXIS2_FREE(env->allocator, rrd->ops); } AXIS2_FREE(env->allocator, rrd); } return AXIS2_SUCCESS; } static axis2_status_t rampart_replay_detector_read_file( const axutil_env_t *env, axutil_linked_list_t* ll) { FILE* temp_file = NULL; FILE* file = NULL; axis2_char_t buffer[sizeof(axis2_char_t) * (BUFFER_LEN + 1)]; int ch_read = 0; char* key = NULL; axis2_char_t *file_dir = NULL; axis2_char_t *file_name = NULL; char dilim[2]; dilim[0] = DELIMIT; dilim[1] = 0; /* * check whether some other threads are using the file. In that case, the indicator file will * not be empty. If no other threads are using it, then the file will not available */ file_dir = rampart_replay_detector_file_dir(env); file_name = axutil_stracat(env, file_dir, INDICATOR_FILE); temp_file = fopen(file_name, "r"); while (temp_file) { fclose (temp_file); #ifdef WIN32 Sleep (5000); #else sleep (5); #endif temp_file = fopen(file_name, "r"); } temp_file = fopen(file_name, "w+"); AXIS2_FREE(env->allocator, file_name); if (!temp_file) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Creating indicator file failed" ); AXIS2_FREE(env->allocator, file_dir); return AXIS2_FAILURE; } fclose (temp_file); /* * now we can safely read the actual replay content file */ file_name = axutil_stracat(env, file_dir, REPLAY_FILE); file = fopen (file_name, "r"); AXIS2_FREE(env->allocator, file_dir); AXIS2_FREE(env->allocator, file_name); if (file) { axis2_char_t* whole_buffer = NULL; do { ch_read = fread (buffer, sizeof(axis2_char_t), BUFFER_LEN, file); buffer[ch_read] = 0; if (!ch_read) break; if (whole_buffer) { axis2_char_t* temp_str = whole_buffer; whole_buffer = axutil_stracat(env, temp_str, buffer); AXIS2_FREE(env->allocator, temp_str); } else { whole_buffer = axutil_strdup(env, buffer); } }while (!feof(file)); fclose(file); if (whole_buffer) { key = strtok(whole_buffer, dilim); while (key) { axutil_linked_list_add(ll, env, (void*)axutil_strdup(env,key)); key = strtok(NULL, dilim); } AXIS2_FREE(env->allocator, whole_buffer); } } return AXIS2_SUCCESS; } static axis2_status_t rampart_replay_detector_write_file( const axutil_env_t *env, axutil_linked_list_t* ll, axis2_bool_t write_content) { FILE* file = NULL; axis2_char_t *file_dir = NULL; axis2_char_t *file_name = NULL; file_dir = rampart_replay_detector_file_dir(env); if (write_content) { file_name = axutil_stracat(env, file_dir, REPLAY_FILE); file = fopen (file_name, "w+"); if (!file) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Creating replay file failed" ); AXIS2_FREE(env->allocator, file_name); file_name = axutil_stracat(env, file_dir, INDICATOR_FILE); remove(file_name); AXIS2_FREE(env->allocator, file_name); AXIS2_FREE(env->allocator, file_dir); return AXIS2_FAILURE; } #ifndef WIN32 else { axis2_char_t *command = NULL; command = axutil_stracat(env, "chmod 666 ", file_name); system(command); AXIS2_FREE(env->allocator, command); } #endif AXIS2_FREE(env->allocator, file_name); } while(axutil_linked_list_size(ll, env) > 0) { axis2_char_t *tmp_msg_id = NULL; tmp_msg_id = (axis2_char_t*)axutil_linked_list_remove_first(ll, env); if (file) { fwrite(tmp_msg_id, sizeof(axis2_char_t), axutil_strlen(tmp_msg_id), file); fputc(DELIMIT, file); } AXIS2_FREE(env->allocator, tmp_msg_id); tmp_msg_id = NULL; } if (file) { fclose(file); } file_name = axutil_stracat(env, file_dir, INDICATOR_FILE); remove(file_name); AXIS2_FREE(env->allocator, file_name); AXIS2_FREE(env->allocator, file_dir); return AXIS2_SUCCESS; } static axis2_bool_t rampart_replay_detector_check_in_linked_list( axutil_linked_list_t *linked_list, const axutil_env_t *env, axis2_char_t *id) { int count = 0; int i = 0; count = axutil_linked_list_size(linked_list, env); for(i=0; ilog, AXIS2_LOG_SI, "[rampart]No msg_id specified, using default = %s", msg_id); } ll = axutil_linked_list_create(env); if(!ll) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Linked list creation failed."); return AXIS2_FAILURE; } status = rampart_replay_detector_read_file(env, ll); if(status != AXIS2_SUCCESS) { /* we have to clear linked list. We don't need to write the contents. So pass false to * denote whether to write the content */ rampart_replay_detector_write_file(env, ll, AXIS2_FALSE); return AXIS2_FAILURE; } else { /* Get the number of records to be kept */ if(rampart_context_get_rd_val(rampart_context, env)) { max_rcds = axutil_atoi(rampart_context_get_rd_val(rampart_context, env)); AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[rampart]Using the specified max_rcds %d\n", max_rcds ); } else { AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[rampart]Using the default max_rcds %d\n", max_rcds ); } /* If the table already have the same key it's a replay */ if(rampart_replay_detector_check_in_linked_list(ll, env, (void*)msg_id)) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]For ID=%s, a replay detected", msg_id); rampart_replay_detector_write_file(env, ll, AXIS2_FALSE); return AXIS2_FAILURE; } /* if number of records saved are more than allowed, we have to remove them */ while(axutil_linked_list_size(ll, env) >= max_rcds) { axis2_char_t *tmp_msg_id = NULL; tmp_msg_id = (axis2_char_t*)axutil_linked_list_remove_first(ll, env); AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[rampart]Deleting record %s\n", tmp_msg_id ); AXIS2_FREE(env->allocator, tmp_msg_id); tmp_msg_id = NULL; } /* Add current record */ status = axutil_linked_list_add(ll, env, (void*)axutil_strdup(env,msg_id)); if(status == AXIS2_SUCCESS) { AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[rampart]Adding record %s\n", msg_id ); } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,"[rampart]Cannot add record %s\n", msg_id); rampart_replay_detector_write_file(env, ll, AXIS2_FALSE); return AXIS2_FAILURE; } status = rampart_replay_detector_write_file(env, ll, AXIS2_TRUE); axutil_linked_list_free(ll, env); if(status == AXIS2_SUCCESS) { AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[rampart]Writing records to file succeed." ); return AXIS2_SUCCESS; } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,"[rampart]Writing records to file failed"); return AXIS2_FAILURE; } } } /** * Following block distinguish the exposed part of the dll. */ AXIS2_EXPORT int axis2_get_instance( rampart_replay_detector_t **inst, const axutil_env_t *env) { rampart_replay_detector_t* rd = NULL; rd = AXIS2_MALLOC(env->allocator, sizeof(rampart_replay_detector_t)); if (!rd) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Cannot create replay detector module. Insufficient memory."); return AXIS2_FAILURE; } rd->ops = AXIS2_MALLOC(env->allocator, sizeof(rampart_replay_detector_ops_t)); if (!rd->ops) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Cannot create replay detector module operations. Insufficient memory."); return AXIS2_FAILURE; } /* assign function pointers */ rd->ops->is_replayed = rampart_replay_detector_with_flat_file; rd->ops->free = rampart_replay_detector_free; *inst = rd; return AXIS2_SUCCESS; } AXIS2_EXPORT int axis2_remove_instance( rampart_replay_detector_t *inst, const axutil_env_t *env) { axis2_status_t status = AXIS2_FAILURE; if (inst) { status = RAMPART_REPLAY_DETECTOR_FREE(inst, env); } return status; } rampartc-src-1.3.0/samples/sct_provider/0000755000076500007650000000000011202454513020127 5ustar shankarshankarrampartc-src-1.3.0/samples/sct_provider/Makefile.am0000644000076500007650000000103511202453432022161 0ustar shankarshankarprglibdir=$(prefix)/samples/lib/rampartc prglib_LTLIBRARIES = libsctprovider.la libsctprovider_hashdb.la libsctprovider_la_SOURCES = sct_provider_stored_key.c libsctprovider_la_LIBADD = $(LDFLAGS) \ -L$(AXIS2C_HOME)/lib \ -laxutil \ ../../src/util/librampart.la libsctprovider_hashdb_la_SOURCES = sct_provider_hash_map.c libsctprovider_hashdb_la_LIBADD = $(LDFLAGS) \ -L$(AXIS2C_HOME)/lib \ -laxutil \ ../../src/util/librampart.la INCLUDES = -I ../../include\ @AXIS2INC@ rampartc-src-1.3.0/samples/sct_provider/sct_provider_stored_key.c0000644000076500007650000002326311202453432025233 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include #include #include #define RAMPART_SCT_PROVIDER_HASH_PROB "Rampart_SCT_Prov_DB_Prop" AXIS2_EXTERN axis2_status_t AXIS2_CALL sct_provider_free( rampart_sct_provider_t *sct_provider, const axutil_env_t* env) { if (sct_provider) { if (sct_provider->ops) { AXIS2_FREE(env->allocator, sct_provider->ops); } AXIS2_FREE(env->allocator, sct_provider); } return AXIS2_SUCCESS; } static void sct_provider_stored_key_sct_hash_store_free( axutil_hash_t *sct_hash_store, const axutil_env_t *env) { axutil_hash_index_t *hi = NULL; for (hi = axutil_hash_first(sct_hash_store, env); hi != NULL; hi = axutil_hash_next(env, hi)) { void *v = NULL; axutil_hash_this(hi, NULL, NULL, &v); if (v) { security_context_token_free((security_context_token_t*)v, env); } } axutil_hash_free(sct_hash_store, env); } static axutil_hash_t * sct_provider_stored_key_get_sct_hash_store( const axutil_env_t *env, axis2_msg_ctx_t* msg_ctx) { axis2_conf_ctx_t *conf_ctx = NULL; axis2_ctx_t *ctx = NULL; axutil_property_t *property = NULL; axutil_hash_t *hash_store = NULL; /* Get the conf ctx */ conf_ctx = axis2_msg_ctx_get_conf_ctx(msg_ctx, env); if(!conf_ctx) { AXIS2_LOG_ERROR(env->log,AXIS2_LOG_SI, "[rampart]Config context is NULL. Cannot get security context token hash store."); return NULL; } ctx = axis2_conf_ctx_get_base(conf_ctx,env); if(!ctx) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Axis2 context is NULL. Cannot get security context token hash store."); return NULL; } /* Get the hash store property */ property = axis2_ctx_get_property(ctx, env, RAMPART_SCT_PROVIDER_HASH_PROB); if(property) { /* Get the store */ hash_store = (axutil_hash_t*)axutil_property_get_value(property, env); } else { axutil_property_t *hash_store_prop = NULL; hash_store = axutil_hash_make(env); hash_store_prop = axutil_property_create_with_args(env, AXIS2_SCOPE_APPLICATION, AXIS2_TRUE, (void *)sct_provider_stored_key_sct_hash_store_free, hash_store); axis2_ctx_set_property(ctx, env, RAMPART_SCT_PROVIDER_HASH_PROB, hash_store_prop); } return hash_store; } AXIS2_EXTERN void* AXIS2_CALL sct_provider_stored_key_obtain_token( const axutil_env_t *env, axis2_bool_t is_encryption, axis2_msg_ctx_t* msg_ctx, axis2_char_t *sct_id, int sct_id_type, void* user_params) { axutil_hash_t *hash_store = NULL; security_context_token_t *sct = NULL; /* sct should be get from global pool */ axutil_allocator_switch_to_global_pool(env->allocator); /* Get sct hash store */ hash_store = sct_provider_stored_key_get_sct_hash_store(env, msg_ctx); if(!hash_store) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Cannot find security context token storage."); return NULL; } /* get the sct if sct_id is given */ if(sct_id) { /* set env */ axutil_hash_set_env(hash_store, env); sct = (security_context_token_t *)axutil_hash_get( hash_store, sct_id, AXIS2_HASH_KEY_STRING); } if(!sct) { /* we can create an sct and send it */ sct = security_context_token_create(env); if(sct) { oxs_buffer_t* key_buffer = NULL; axis2_bool_t free_sctid = AXIS2_FALSE; key_buffer = oxs_buffer_create(env); oxs_buffer_populate( key_buffer, env, (unsigned char*)"01234567012345670123456701234567", 32); security_context_token_set_secret(sct, env, key_buffer); if(!sct_id) { sct_id = oxs_util_generate_id(env,"urn:uuid:"); free_sctid = AXIS2_TRUE; } security_context_token_set_global_identifier(sct, env, axutil_strdup(env, sct_id)); security_context_token_set_local_identifier( sct, env, axutil_strdup(env, "#sctId-29530019")); security_context_token_set_is_sc10(sct, env, AXIS2_TRUE); if(free_sctid) { AXIS2_FREE(env->allocator, sct_id); } } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Cannot create security context token. Insufficient memory."); } } axutil_allocator_switch_to_local_pool(env->allocator); return sct; } AXIS2_EXTERN axis2_status_t AXIS2_CALL sct_provider_stored_key_store_token( const axutil_env_t *env, axis2_msg_ctx_t* msg_ctx, axis2_char_t *sct_global_id, axis2_char_t *sct_local_id, void *sct, void *user_params) { axutil_hash_t *hash_store = NULL; axis2_status_t status = AXIS2_SUCCESS; /* if given sct is null, then we can't store it */ if(!sct) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Security context token to be stored in not valid."); return AXIS2_FAILURE; } /* sct should be stored in global pool */ axutil_allocator_switch_to_global_pool(env->allocator); /* Get sct hash store */ hash_store = sct_provider_stored_key_get_sct_hash_store(env, msg_ctx); if(hash_store) { /* set env */ axutil_hash_set_env(hash_store, env); /* store sct */ if(sct_global_id) { axutil_hash_set(hash_store, sct_global_id, AXIS2_HASH_KEY_STRING, sct); if(sct_local_id) { security_context_token_increment_ref(sct, env); axutil_hash_set(hash_store, sct_local_id, AXIS2_HASH_KEY_STRING, sct); } } else { if(sct_local_id) { axutil_hash_set(hash_store, sct_local_id, AXIS2_HASH_KEY_STRING, sct); } else { /* if both local_id and global_id are NULL, then we can't store it */ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Security context token identifiers are not valid. " "Cannot store security context token. "); status = AXIS2_FAILURE; } } } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Cannot find security context token storage."); status = AXIS2_FAILURE; } axutil_allocator_switch_to_local_pool(env->allocator); return status; } AXIS2_EXTERN axis2_status_t AXIS2_CALL sct_provider_stored_key_delete_token( const axutil_env_t *env, axis2_msg_ctx_t* msg_ctx, axis2_char_t *sct_id, int sct_id_type, void* user_params) { /* delete method is not implemented, because we are still not supporting sct cancel function */ return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL sct_provider_stored_key_validate_token( const axutil_env_t *env, axiom_node_t *sct_node, axis2_msg_ctx_t *msg_ctx, void *user_params) { /* default implementation does not need to validate anything. We haven't extended the * functionality of sct */ return AXIS2_SUCCESS; } AXIS2_EXTERN void* AXIS2_CALL sct_provider_stored_key_get_user_params( const axutil_env_t *env) { return NULL; } /** * Following block distinguish the exposed part of the dll. */ AXIS2_EXPORT int axis2_get_instance( rampart_sct_provider_t **inst, const axutil_env_t *env) { rampart_sct_provider_t* sct_provider = NULL; sct_provider = AXIS2_MALLOC(env->allocator, sizeof(rampart_sct_provider_t)); sct_provider->ops = AXIS2_MALLOC( env->allocator, sizeof(rampart_sct_provider_ops_t)); /*assign function pointers*/ sct_provider->ops->obtain_security_context_token = sct_provider_stored_key_obtain_token; sct_provider->ops->store_security_context_token = sct_provider_stored_key_store_token; sct_provider->ops->delete_security_context_token = sct_provider_stored_key_delete_token; sct_provider->ops->validate_security_context_token = sct_provider_stored_key_validate_token; sct_provider->ops->get_user_params = sct_provider_stored_key_get_user_params; sct_provider->ops->free = sct_provider_free; *inst = sct_provider; if (!(*inst)) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Cannot initialize the sct provider module"); return AXIS2_FAILURE; } return AXIS2_SUCCESS; } AXIS2_EXPORT int axis2_remove_instance( rampart_sct_provider_t *inst, const axutil_env_t *env) { axis2_status_t status = AXIS2_FAILURE; if (inst) { status = RAMPART_SCT_PROVIDER_FREE(inst, env); } return status; } rampartc-src-1.3.0/samples/sct_provider/sct_provider_hash_map.c0000644000076500007650000002111711202453432024637 0ustar shankarshankar/* * 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. */ #include #include #include #include #include #include #include #include #define RAMPART_SCT_PROVIDER_HASH_PROB "Rampart_SCT_Prov_DB_Prop" AXIS2_EXTERN axis2_status_t AXIS2_CALL sct_provider_free( rampart_sct_provider_t *sct_provider, const axutil_env_t* env) { if (sct_provider) { if (sct_provider->ops) { AXIS2_FREE(env->allocator, sct_provider->ops); } AXIS2_FREE(env->allocator, sct_provider); } return AXIS2_SUCCESS; } static void sct_provider_hash_map_sct_hash_store_free( axutil_hash_t *sct_hash_store, const axutil_env_t *env) { axutil_hash_index_t *hi = NULL; for (hi = axutil_hash_first(sct_hash_store, env); hi != NULL; hi = axutil_hash_next(env, hi)) { void *v = NULL; axutil_hash_this(hi, NULL, NULL, &v); if (v) { security_context_token_free((security_context_token_t*)v, env); } } axutil_hash_free(sct_hash_store, env); } static axutil_hash_t * sct_provider_hash_map_get_sct_hash_store( const axutil_env_t *env, axis2_msg_ctx_t* msg_ctx) { axis2_conf_ctx_t *conf_ctx = NULL; axis2_ctx_t *ctx = NULL; axutil_property_t *property = NULL; axutil_hash_t *hash_store = NULL; /* Get the conf ctx */ conf_ctx = axis2_msg_ctx_get_conf_ctx(msg_ctx, env); if(!conf_ctx) { AXIS2_LOG_ERROR(env->log,AXIS2_LOG_SI, "[rampart]Config context is NULL. Cannot get security context token hash store."); return NULL; } ctx = axis2_conf_ctx_get_base(conf_ctx,env); if(!ctx) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Axis2 context is NULL. Cannot get security context token hash store."); return NULL; } /* Get the hash store property */ property = axis2_ctx_get_property(ctx, env, RAMPART_SCT_PROVIDER_HASH_PROB); if(property) { /* Get the store */ hash_store = (axutil_hash_t*)axutil_property_get_value(property, env); } else { axutil_property_t *hash_store_prop = NULL; hash_store = axutil_hash_make(env); hash_store_prop = axutil_property_create_with_args(env, AXIS2_SCOPE_APPLICATION, AXIS2_TRUE, (void *)sct_provider_hash_map_sct_hash_store_free, hash_store); axis2_ctx_set_property(ctx, env, RAMPART_SCT_PROVIDER_HASH_PROB, hash_store_prop); } return hash_store; } AXIS2_EXTERN void* AXIS2_CALL sct_provider_hash_map_obtain_token( const axutil_env_t *env, axis2_bool_t is_encryption, axis2_msg_ctx_t* msg_ctx, axis2_char_t *sct_id, int sct_id_type, void* user_params) { axutil_hash_t *hash_store = NULL; security_context_token_t *sct = NULL; /* sct should be get from global pool */ axutil_allocator_switch_to_global_pool(env->allocator); /* Get sct hash store */ hash_store = sct_provider_hash_map_get_sct_hash_store(env, msg_ctx); if(!hash_store) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Cannot find security context token storage."); return NULL; } /* get the sct if sct_id is given */ if(sct_id) { /* set env */ axutil_hash_set_env(hash_store, env); sct = (security_context_token_t *)axutil_hash_get( hash_store, sct_id, AXIS2_HASH_KEY_STRING); } if(!sct) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Cannot find security context token."); } axutil_allocator_switch_to_local_pool(env->allocator); return sct; } AXIS2_EXTERN axis2_status_t AXIS2_CALL sct_provider_hash_map_store_token( const axutil_env_t *env, axis2_msg_ctx_t* msg_ctx, axis2_char_t *sct_global_id, axis2_char_t *sct_local_id, void *sct, void *user_params) { axutil_hash_t *hash_store = NULL; axis2_status_t status = AXIS2_SUCCESS; /* if given sct is null, then we can't store it */ if(!sct) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Security context token to be stored in not valid."); return AXIS2_FAILURE; } /* sct should be stored in global pool */ axutil_allocator_switch_to_global_pool(env->allocator); /* Get sct hash store */ hash_store = sct_provider_hash_map_get_sct_hash_store(env, msg_ctx); if(hash_store) { /* set env */ axutil_hash_set_env(hash_store, env); /* store sct */ if(sct_global_id) { axutil_hash_set(hash_store, sct_global_id, AXIS2_HASH_KEY_STRING, sct); if(sct_local_id) { security_context_token_increment_ref(sct, env); axutil_hash_set(hash_store, sct_local_id, AXIS2_HASH_KEY_STRING, sct); } } else { if(sct_local_id) { axutil_hash_set(hash_store, sct_local_id, AXIS2_HASH_KEY_STRING, sct); } else { /* if both local_id and global_id are NULL, then we can't store it */ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Security context token identifiers are not valid. " "Cannot store security context token. "); status = AXIS2_FAILURE; } } } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Cannot find security context token storage."); status = AXIS2_FAILURE; } axutil_allocator_switch_to_local_pool(env->allocator); return status; } AXIS2_EXTERN axis2_status_t AXIS2_CALL sct_provider_hash_map_delete_token( const axutil_env_t *env, axis2_msg_ctx_t* msg_ctx, axis2_char_t *sct_id, int sct_id_type, void* user_params) { /* delete method is not implemented, because we are still not supporting sct cancel function */ return AXIS2_SUCCESS; } AXIS2_EXTERN axis2_status_t AXIS2_CALL sct_provider_hash_map_validate_token( const axutil_env_t *env, axiom_node_t *sct_node, axis2_msg_ctx_t *msg_ctx, void *user_params) { /* default implementation does not need to validate anything. We haven't extended the * functionality of sct */ return AXIS2_SUCCESS; } AXIS2_EXTERN void* AXIS2_CALL sct_provider_hash_map_get_user_params( const axutil_env_t *env) { return NULL; } /** * Following block distinguish the exposed part of the dll. */ AXIS2_EXPORT int axis2_get_instance( rampart_sct_provider_t **inst, const axutil_env_t *env) { rampart_sct_provider_t* sct_provider = NULL; sct_provider = AXIS2_MALLOC(env->allocator, sizeof(rampart_sct_provider_t)); sct_provider->ops = AXIS2_MALLOC( env->allocator, sizeof(rampart_sct_provider_ops_t)); /*assign function pointers*/ sct_provider->ops->obtain_security_context_token = sct_provider_hash_map_obtain_token; sct_provider->ops->store_security_context_token = sct_provider_hash_map_store_token; sct_provider->ops->delete_security_context_token = sct_provider_hash_map_delete_token; sct_provider->ops->validate_security_context_token = sct_provider_hash_map_validate_token; sct_provider->ops->get_user_params = sct_provider_hash_map_get_user_params; sct_provider->ops->free = sct_provider_free; *inst = sct_provider; if (!(*inst)) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart]Cannot initialize the sct provider module"); return AXIS2_FAILURE; } return AXIS2_SUCCESS; } AXIS2_EXPORT int axis2_remove_instance( rampart_sct_provider_t *inst, const axutil_env_t *env) { axis2_status_t status = AXIS2_FAILURE; if (inst) { status = RAMPART_SCT_PROVIDER_FREE(inst, env); } return status; } rampartc-src-1.3.0/samples/README0000644000076500007650000000041111202453434016301 0ustar shankarshankar Apache Rampart/C samples What are the samples available? ------------------------------ Please have a look at the ABOUT_SAMPLES file How to Run Samples? ------------------- Please have a look at the secpolicy/README file. rampartc-src-1.3.0/samples/configure.ac0000644000076500007650000000663311202453434017723 0ustar shankarshankardnl run autogen.sh to generate the configure script. AC_PREREQ(2.59) AC_INIT(rampart-samples-src, 1.3.0) AC_CANONICAL_SYSTEM AM_CONFIG_HEADER(config.h) dnl AM_INIT_AUTOMAKE([tar-ustar]) AM_INIT_AUTOMAKE m4_ifdef([_A][M_PROG_TAR],[_A][M_SET_OPTION([tar-ustar])]) AC_PREFIX_DEFAULT(/usr/local/rampart/samples) dnl Checks for programs. AC_PROG_CC AC_PROG_CXX AC_PROG_CPP AC_PROG_LIBTOOL AC_PROG_INSTALL AC_PROG_LN_S AC_PROG_MAKE_SET dnl check for flavours of varargs macros (test from GLib) AC_MSG_CHECKING(for ISO C99 varargs macros in C) AC_TRY_COMPILE([],[ int a(int p1, int p2, int p3); #define call_a(...) a(1,__VA_ARGS__) call_a(2,3); ],axis2c_have_iso_c_varargs=yes,axis2c_have_iso_c_varargs=no) AC_MSG_RESULT($axis2c_have_iso_c_varargs) AC_MSG_CHECKING(for GNUC varargs macros) AC_TRY_COMPILE([],[ int a(int p1, int p2, int p3); #define call_a(params...) a(1,params) call_a(2,3); ],axis2c_have_gnuc_varargs=yes,axis2c_have_gnuc_varargs=no) AC_MSG_RESULT($axis2c_have_gnuc_varargs) dnl Output varargs tests if test x$axis2c_have_iso_c_varargs = xyes; then AC_DEFINE(HAVE_ISO_VARARGS,1,[Have ISO C99 varargs macros]) fi if test x$axis2c_have_gnuc_varargs = xyes; then AC_DEFINE(HAVE_GNUC_VARARGS,1,[Have GNU-style varargs macros]) fi dnl Checks for libraries. AC_CHECK_LIB(dl, dlopen) CFLAGS="$CFLAGS -D_LARGEFILE64_SOURCE -g3 -O0" if test "$GCC" = "yes"; then CFLAGS="$CFLAGS -ansi -Wall -Wno-implicit-function-declaration" fi LDFLAGS="$LDFLAGS -lpthread" dnl Checks for header files. AC_HEADER_STDC AC_CHECK_HEADERS([stdio.h stdlib.h string.h]) dnl Checks for typedefs, structures, and compiler characteristics. dnl AC_C_CONST dnl Checks for library functions. AC_FUNC_MALLOC AC_FUNC_REALLOC #AC_CHECK_FUNCS([memmove]) AC_MSG_CHECKING(To Use Axis2 C . This is a compulsory module to build Axis2 C samples) AC_ARG_WITH(axis2, [ --with-axis2[=PATH] Find the AXIS2 header files in 'PATH'. 'PATH' should point to AXIS2 include files location. If you omit the '=PATH' part completely, the configure script will search '$(AXIS2C_HOME)/include/axis2-1.6' for AXIS2 headers.], [ case "$withval" in no) AC_MSG_RESULT(no) ;; *) AC_MSG_RESULT(yes) dnl Find axiom include dir in the path if test -d $withval; then axis2inc="-I$withval" dnl else find the axiom include dir in $(AXIS2C_HOME)/include elif test -d '$(AXIS2C_HOME)/include'; then axiominc="-I$(AXIS2C_HOME)/include/axis2-1.6" else AC_MSG_ERROR(could not find axis2. stop) fi ;; esac ], AC_MSG_RESULT(no) ) AXIS2INC=$axis2inc UTILINC=$axis2_utilinc XMLSCHEMAINC=$axis2_xml_schemainc AC_SUBST(AXIS2INC) AC_SUBST(UTILINC) AC_SUBST(XMLSCHEMAINC) AC_SUBST(TESTDIR) AC_SUBST(PARSER_DIR) AC_CONFIG_FILES([Makefile \ data/Makefile \ callback/Makefile \ callback/htpasswd_callback/Makefile \ authn_provider/Makefile \ replay_detector/Makefile \ sct_provider/Makefile \ credential_provider/Makefile \ server/Makefile \ server/sec_echo/Makefile \ server/saml_sts/Makefile \ server/secconv_echo/Makefile \ client/Makefile client/sec_echo/Makefile \ client/saml_echo/Makefile \ client/saml_protect/Makefile \ client/sts_client/Makefile \ client/issued_token/Makefile \ keys/Makefile \ keys/ahome/Makefile \ keys/bhome/Makefile \ keys/xhome/Makefile \ keys/yhome/Makefile ]) AC_OUTPUT rampartc-src-1.3.0/samples/AUTHORS0000644000076500007650000000000011202453434016463 0ustar shankarshankarrampartc-src-1.3.0/AUTHORS0000644000076500007650000000031011202453435015024 0ustar shankarshankarDevelopers ---------- Samisa Abeysinghe Dushshantha Chandradasa Supun Kamburugamuva Kaushalye Kapuruge Manjula Peiris Dumindu Pallewela Milinda Pathirage Sanjaya Ratnaweera Selvaratnam Uthaiyashankar