Return-Path: Delivered-To: apmail-ws-axis-dev-archive@www.apache.org Received: (qmail 12147 invoked from network); 23 Feb 2007 06:09:17 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 23 Feb 2007 06:09:16 -0000 Received: (qmail 37357 invoked by uid 500); 23 Feb 2007 06:09:24 -0000 Delivered-To: apmail-ws-axis-dev-archive@ws.apache.org Received: (qmail 37242 invoked by uid 500); 23 Feb 2007 06:09:23 -0000 Mailing-List: contact axis-cvs-help@ws.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: List-Id: Delivered-To: mailing list axis-cvs@ws.apache.org Received: (qmail 37231 invoked by uid 500); 23 Feb 2007 06:09:23 -0000 Delivered-To: apmail-ws-axis2-cvs@ws.apache.org Received: (qmail 37227 invoked by uid 99); 23 Feb 2007 06:09:23 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 22 Feb 2007 22:09:23 -0800 X-ASF-Spam-Status: No, hits=-99.5 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 22 Feb 2007 22:09:14 -0800 Received: by eris.apache.org (Postfix, from userid 65534) id C56831A981A; Thu, 22 Feb 2007 22:08:53 -0800 (PST) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r510844 - in /webservices/axis2/trunk/c/rampart: include/ src/omxmlsec/ test/omxmlsec/ Date: Fri, 23 Feb 2007 06:08:53 -0000 To: axis2-cvs@ws.apache.org From: kaushalye@apache.org X-Mailer: svnmailer-1.1.0 Message-Id: <20070223060853.C56831A981A@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: kaushalye Date: Thu Feb 22 22:08:52 2007 New Revision: 510844 URL: http://svn.apache.org/viewvc?view=rev&rev=510844 Log: Implementig XML Signature in OMXMLSecurity Modified: webservices/axis2/trunk/c/rampart/include/oxs_axiom.h webservices/axis2/trunk/c/rampart/include/oxs_constants.h webservices/axis2/trunk/c/rampart/include/oxs_sign_ctx.h webservices/axis2/trunk/c/rampart/include/oxs_token_transform.h webservices/axis2/trunk/c/rampart/src/omxmlsec/axiom.c webservices/axis2/trunk/c/rampart/src/omxmlsec/sign_ctx.c webservices/axis2/trunk/c/rampart/src/omxmlsec/transforms_factory.c webservices/axis2/trunk/c/rampart/src/omxmlsec/xml_signature.c webservices/axis2/trunk/c/rampart/test/omxmlsec/test.c Modified: webservices/axis2/trunk/c/rampart/include/oxs_axiom.h URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/include/oxs_axiom.h?view=diff&rev=510844&r1=510843&r2=510844 ============================================================================== --- webservices/axis2/trunk/c/rampart/include/oxs_axiom.h (original) +++ webservices/axis2/trunk/c/rampart/include/oxs_axiom.h Thu Feb 22 22:08:52 2007 @@ -36,7 +36,13 @@ { #endif - +AXIS2_EXTERN axis2_status_t AXIS2_CALL +oxs_axiom_add_attribute(const axis2_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 AXIS2_CALL oxs_axiom_get_number_of_children_with_qname(const axis2_env_t *env, Modified: webservices/axis2/trunk/c/rampart/include/oxs_constants.h URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/include/oxs_constants.h?view=diff&rev=510844&r1=510843&r2=510844 ============================================================================== --- webservices/axis2/trunk/c/rampart/include/oxs_constants.h (original) +++ webservices/axis2/trunk/c/rampart/include/oxs_constants.h Thu Feb 22 22:08:52 2007 @@ -36,12 +36,14 @@ #define OXS_XENC "xenc" #define OXS_DS "ds" #define OXS_WSSE "wsse" - +#define OXS_WSSE_XMLNS "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" +#define OXS_WSU "wsu" /**************************************************************** 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" Modified: webservices/axis2/trunk/c/rampart/include/oxs_sign_ctx.h URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/include/oxs_sign_ctx.h?view=diff&rev=510844&r1=510843&r2=510844 ============================================================================== --- webservices/axis2/trunk/c/rampart/include/oxs_sign_ctx.h (original) +++ webservices/axis2/trunk/c/rampart/include/oxs_sign_ctx.h Thu Feb 22 22:08:52 2007 @@ -34,6 +34,13 @@ 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; @@ -79,6 +86,11 @@ const oxs_sign_ctx_t *sign_ctx, const axis2_env_t *env); +AXIS2_EXTERN oxs_sign_operation_t AXIS2_CALL +oxs_sign_ctx_get_operation( + const oxs_sign_ctx_t *sign_ctx, + const axis2_env_t *env); + /**********************Setter functions******************************************/ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sign_ctx_set_sign_mtd_algo( @@ -116,7 +128,11 @@ const axis2_env_t *env, openssl_pkey_t *pub_key); - +AXIS2_EXTERN axis2_status_t AXIS2_CALL +oxs_sign_ctx_set_operation( + oxs_sign_ctx_t *sign_ctx, + const axis2_env_t *env, + oxs_sign_operation_t operation); /** @} */ #ifdef __cplusplus } Modified: webservices/axis2/trunk/c/rampart/include/oxs_token_transform.h URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/include/oxs_token_transform.h?view=diff&rev=510844&r1=510843&r2=510844 ============================================================================== --- webservices/axis2/trunk/c/rampart/include/oxs_token_transform.h (original) +++ webservices/axis2/trunk/c/rampart/include/oxs_token_transform.h Thu Feb 22 22:08:52 2007 @@ -20,7 +20,7 @@ /** - * @file oxs_token_c14n_method.h + * @file oxs_token_transform.h * @brief */ Modified: webservices/axis2/trunk/c/rampart/src/omxmlsec/axiom.c URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/src/omxmlsec/axiom.c?view=diff&rev=510844&r1=510843&r2=510844 ============================================================================== --- webservices/axis2/trunk/c/rampart/src/omxmlsec/axiom.c (original) +++ webservices/axis2/trunk/c/rampart/src/omxmlsec/axiom.c Thu Feb 22 22:08:52 2007 @@ -29,6 +29,28 @@ #include #include +AXIS2_EXTERN axis2_status_t AXIS2_CALL +oxs_axiom_add_attribute(const axis2_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; + + 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); + status = AXIOM_ELEMENT_ADD_ATTRIBUTE(ele, env, attr, node); + + return status; +} + AXIS2_EXTERN int AXIS2_CALL oxs_axiom_get_number_of_children_with_qname(const axis2_env_t *env, axiom_node_t* parent, Modified: webservices/axis2/trunk/c/rampart/src/omxmlsec/sign_ctx.c URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/src/omxmlsec/sign_ctx.c?view=diff&rev=510844&r1=510843&r2=510844 ============================================================================== --- webservices/axis2/trunk/c/rampart/src/omxmlsec/sign_ctx.c (original) +++ webservices/axis2/trunk/c/rampart/src/omxmlsec/sign_ctx.c Thu Feb 22 22:08:52 2007 @@ -28,6 +28,7 @@ oxs_x509_cert_t *certificate ; openssl_pkey_t *prv_key ; openssl_pkey_t *pub_key ; + oxs_sign_operation_t operation; }; /*Public functions*/ @@ -82,6 +83,13 @@ return sign_ctx->pub_key ; } +AXIS2_EXTERN oxs_sign_operation_t AXIS2_CALL +oxs_sign_ctx_get_operation( + const oxs_sign_ctx_t *sign_ctx, + const axis2_env_t *env) +{ + return sign_ctx->operation; +} AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sign_ctx_set_certificate( @@ -171,6 +179,17 @@ return AXIS2_SUCCESS; } +AXIS2_EXTERN axis2_status_t AXIS2_CALL +oxs_sign_ctx_set_operation( + oxs_sign_ctx_t *sign_ctx, + const axis2_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 axis2_env_t *env) { @@ -191,7 +210,7 @@ sign_ctx->certificate = NULL; sign_ctx->prv_key = NULL; sign_ctx->pub_key = NULL; - + sign_ctx->operation = OXS_SIGN_OPERATION_NONE; return sign_ctx; } @@ -219,6 +238,7 @@ sign_ctx->certificate = NULL; sign_ctx->prv_key = NULL; sign_ctx->pub_key = NULL; + sign_ctx->operation = OXS_SIGN_OPERATION_NONE; AXIS2_FREE(env->allocator, sign_ctx); sign_ctx = NULL; Modified: webservices/axis2/trunk/c/rampart/src/omxmlsec/transforms_factory.c URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/src/omxmlsec/transforms_factory.c?view=diff&rev=510844&r1=510843&r2=510844 ============================================================================== --- webservices/axis2/trunk/c/rampart/src/omxmlsec/transforms_factory.c (original) +++ webservices/axis2/trunk/c/rampart/src/omxmlsec/transforms_factory.c Thu Feb 22 22:08:52 2007 @@ -33,6 +33,7 @@ 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; @@ -40,9 +41,10 @@ oxs_error(env, ERROR_LOCATION, OXS_ERROR_TRANSFORM_FAILED,"Transform expects a NODE."); return OXS_TRANSFORM_TYPE_UNKNOWN; } - doc = axiom_node_get_document((axiom_node_t*)input, env); - oxs_c14n_apply(env, doc, AXIS2_FALSE, &c14nized, AXIS2_TRUE, NULL, (axiom_node_t*)input); + algo = OXS_HREF_TRANSFORM_XML_EXC_C14N; + oxs_c14n_apply_algo(env, doc, &c14nized, NULL, (axiom_node_t*)input, algo); + /*oxs_c14n_apply(env, doc, AXIS2_FALSE, &c14nized, AXIS2_TRUE, NULL, (axiom_node_t*)input);*/ *output= c14nized; output_dtype = OXS_TRANSFORM_TYPE_CHAR; Modified: webservices/axis2/trunk/c/rampart/src/omxmlsec/xml_signature.c URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/src/omxmlsec/xml_signature.c?view=diff&rev=510844&r1=510843&r2=510844 ============================================================================== --- webservices/axis2/trunk/c/rampart/src/omxmlsec/xml_signature.c (original) +++ webservices/axis2/trunk/c/rampart/src/omxmlsec/xml_signature.c Thu Feb 22 22:08:52 2007 @@ -22,6 +22,8 @@ #include #include #include +#include +#include #include #include #include @@ -83,10 +85,11 @@ axiom_node_t *parent, oxs_sign_part_t *sign_part) { - axis2_char_t *uri = NULL; axis2_char_t *serialized_node = NULL; axis2_char_t *digest = NULL; axis2_char_t *digest_mtd = NULL; + axis2_char_t *ref_id = NULL; + axis2_char_t *id = NULL; axis2_array_list_t *transforms = NULL; axiom_node_t *node = NULL; axiom_node_t *reference_node = NULL; @@ -97,9 +100,11 @@ /*Get the node to digest*/ node = oxs_sign_part_get_node(sign_part, env); - /*Add the reference ID to the node and hence to the ds:Reference node*/ - - reference_node = oxs_token_build_ds_reference_element(env, parent ,NULL, uri, NULL); + /*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, "wsu:Id"); + + ref_id = AXIS2_STRACAT("#", id, env);/* */ + reference_node = oxs_token_build_ds_reference_element(env, parent ,NULL, ref_id, NULL); /*Get transforms if any*/ transforms = oxs_sign_part_get_transforms(sign_part, env); Modified: webservices/axis2/trunk/c/rampart/test/omxmlsec/test.c URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/test/omxmlsec/test.c?view=diff&rev=510844&r1=510843&r2=510844 ============================================================================== --- webservices/axis2/trunk/c/rampart/test/omxmlsec/test.c (original) +++ webservices/axis2/trunk/c/rampart/test/omxmlsec/test.c Thu Feb 22 22:08:52 2007 @@ -77,19 +77,29 @@ axis2_char_t *signed_result = NULL; axis2_status_t status = AXIS2_FAILURE; axiom_node_t *tmpl = NULL; + axiom_node_t *node = NULL; oxs_sign_part_t *sign_part = NULL; oxs_sign_ctx_t *sign_ctx = NULL; oxs_transform_t *tr = NULL; axis2_array_list_t *sign_parts = NULL; axis2_array_list_t *tr_list = NULL; + axis2_char_t *id = NULL; FILE *outf; - env = axis2_env_create_all("echo.log", AXIS2_LOG_LEVEL_TRACE); - printf("--Testing started--------------------------------------------\n"); - if (argc > 1) + if (argc > 3){ filename = argv[1]; - + prvkeyfile = argv[2]; + certfile = argv[3]; + printf("Signing %s with %s. Certificate file is %s", filename, prvkeyfile, certfile); + }else{ + printf("Usage ./test inputfile prvkey certificate\n"); + return -1; + } + + env = axis2_env_create_all("echo.log", AXIS2_LOG_LEVEL_TRACE); + printf("--Testing started--------------------------------------------\n"); + tmpl = load_sample_xml(env , tmpl, filename); if (tmpl) @@ -110,10 +120,13 @@ /*We need C14N transform*/ tr = oxs_transforms_factory_produce_transform(env, OXS_HREF_TRANSFORM_XML_EXC_C14N); axis2_array_list_add(tr_list, env, tr); - /*oxs_sign_part_set_transforms(sign_part, env, tr_list);*/ + oxs_sign_part_set_transforms(sign_part, env, tr_list); - /*We need to sign this node*/ - status = oxs_sign_part_set_node(sign_part, env, axiom_node_get_first_element(tmpl, env)); + /*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); sign_parts = axis2_array_list_create(env, 1); --------------------------------------------------------------------- To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org For additional commands, e-mail: axis-cvs-help@ws.apache.org