You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by ka...@apache.org on 2006/12/13 09:49:57 UTC
svn commit: r486550 - in /webservices/axis2/trunk/c/rampart: include/
samples/ samples/client/enc_echo/ samples/server/ samples/server/sec_echo/
src/omxmlsec/ src/omxmlsec/tokens/ src/util/ test/omxmlsec/
Author: kaushalye
Date: Wed Dec 13 00:49:56 2006
New Revision: 486550
URL: http://svn.apache.org/viewvc?view=rev&rev=486550
Log:
Adding sample service for rampart
Modified xml encryption
Added:
webservices/axis2/trunk/c/rampart/samples/server/
webservices/axis2/trunk/c/rampart/samples/server/Makefile.am
webservices/axis2/trunk/c/rampart/samples/server/sec_echo/
webservices/axis2/trunk/c/rampart/samples/server/sec_echo/Makefile.am
webservices/axis2/trunk/c/rampart/samples/server/sec_echo/echo.c
webservices/axis2/trunk/c/rampart/samples/server/sec_echo/echo.h
webservices/axis2/trunk/c/rampart/samples/server/sec_echo/echo_skeleton.c
webservices/axis2/trunk/c/rampart/samples/server/sec_echo/services.xml
Modified:
webservices/axis2/trunk/c/rampart/include/oxs_axiom.h
webservices/axis2/trunk/c/rampart/samples/Makefile.am
webservices/axis2/trunk/c/rampart/samples/client/enc_echo/README.txt
webservices/axis2/trunk/c/rampart/samples/client/enc_echo/deploy_client_repo.sh
webservices/axis2/trunk/c/rampart/samples/client/enc_echo/update_n_run.sh
webservices/axis2/trunk/c/rampart/samples/configure.ac
webservices/axis2/trunk/c/rampart/src/omxmlsec/axiom.c
webservices/axis2/trunk/c/rampart/src/omxmlsec/tokens/token_binary_security_token.c
webservices/axis2/trunk/c/rampart/src/omxmlsec/tokens/token_reference_list.c
webservices/axis2/trunk/c/rampart/src/omxmlsec/xml_encryption.c
webservices/axis2/trunk/c/rampart/src/util/rampart_encryption.c
webservices/axis2/trunk/c/rampart/src/util/rampart_sec_header_processor.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=486550&r1=486549&r2=486550
==============================================================================
--- webservices/axis2/trunk/c/rampart/include/oxs_axiom.h (original)
+++ webservices/axis2/trunk/c/rampart/include/oxs_axiom.h Wed Dec 13 00:49:56 2006
@@ -45,6 +45,14 @@
axis2_char_t* ns_uri,
axis2_char_t* prefix);
+/**
+ * Traverse thru the node and its children. Check if the localname is equal to the given name
+ * */
+AXIS2_EXTERN axiom_node_t* AXIS2_CALL
+oxs_axiom_get_node_by_local_name(const axis2_env_t *env,
+ axiom_node_t *node,
+ axis2_char_t *local_name);
+
AXIS2_EXTERN axiom_node_t* AXIS2_CALL
oxs_axiom_get_node_by_id(const axis2_env_t *env,
axiom_node_t *node,
Modified: webservices/axis2/trunk/c/rampart/samples/Makefile.am
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/samples/Makefile.am?view=diff&rev=486550&r1=486549&r2=486550
==============================================================================
--- webservices/axis2/trunk/c/rampart/samples/Makefile.am (original)
+++ webservices/axis2/trunk/c/rampart/samples/Makefile.am Wed Dec 13 00:49:56 2006
@@ -1,3 +1,3 @@
TESTS =
-SUBDIRS = callback client
+SUBDIRS = callback client server
Modified: webservices/axis2/trunk/c/rampart/samples/client/enc_echo/README.txt
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/samples/client/enc_echo/README.txt?view=diff&rev=486550&r1=486549&r2=486550
==============================================================================
--- webservices/axis2/trunk/c/rampart/samples/client/enc_echo/README.txt (original)
+++ webservices/axis2/trunk/c/rampart/samples/client/enc_echo/README.txt Wed Dec 13 00:49:56 2006
@@ -9,25 +9,25 @@
2. Create client repository
e.g. ~/client_home [CLIENT_HOME]
- NOTE: You may use the AXIS2_HOME as the common repository for server and
+ NOTE: You may use the AXIS2C_HOME as the common repository for server and
client. If so skip steps 3-5.
3. Copy rampart/samples/client/enc_echo/data/axis2.xml to CLIENT_REPO
-4. Copy AXIS2_HOME/lib to CLIENT_HOME
+4. Copy AXIS2C_HOME/lib to CLIENT_HOME
-5. Copy AXIS2_HOME/modules to CLIENT_HOME
+5. Copy AXIS2C_HOME/modules to CLIENT_HOME
-6. Enable rampart in axis2.xml in the AXIS2_HOME and add In/Outflow parameters as
+6. Enable rampart in axis2.xml in the AXIS2C_HOME and add In/Outflow parameters as
in rampart/samples/client/enc_eco/data/server.axis2.xml. (Or copy the
- server.axis2.xml file to AXIS2_HOME/ directory and rename it as axis2.xml)
+ server.axis2.xml file to AXIS2C_HOME/ directory and rename it as axis2.xml)
Before proceed check followings.
(*) The rampart module should be in the module directory of both
- client(CLIENT_HOME/modules) and the server side(AXIS2_HOME/deploy/modules).
- (*) AXIS2_HOME/axis2.xml and CLIENT_HOME/axis2.xml files should be configred to enable rampart.
+ client(CLIENT_HOME/modules) and the server side(AXIS2C_HOME/deploy/modules).
+ (*) AXIS2C_HOME/axis2.xml and CLIENT_HOME/axis2.xml files should be configred to enable rampart.
8. To view the message flow use TCPMonitor
Listen port: 9090 [specified as in the client argumanet]
@@ -38,7 +38,7 @@
10. Run the echo sample
Syntax : ./echo [service_address] [client_home]
- e.g. : ./echo http://localhost:9090/axis2/services/echo /home/kau/client_home
+ e.g. : ./echo http://localhost:9090/axis2/services/echo ~/client_home
11. You should be able to see the security token is attached to the header of
the SOAP message in the TCP Monitor.
Modified: webservices/axis2/trunk/c/rampart/samples/client/enc_echo/deploy_client_repo.sh
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/samples/client/enc_echo/deploy_client_repo.sh?view=diff&rev=486550&r1=486549&r2=486550
==============================================================================
--- webservices/axis2/trunk/c/rampart/samples/client/enc_echo/deploy_client_repo.sh (original)
+++ webservices/axis2/trunk/c/rampart/samples/client/enc_echo/deploy_client_repo.sh Wed Dec 13 00:49:56 2006
@@ -14,8 +14,9 @@
#copy [client]axis2.xml to CLIENT_REPO
-echo "Copying axis2.xml to client_repo"
-cp data/client.enc.axis2.xml $CLIENT_REPO/axis2.xml
+#Removed: We are using our own service. So no need to replace the axis2.xml in the server
+#echo "Copying axis2.xml to client_repo"
+#cp data/client.enc.axis2.xml $CLIENT_REPO/axis2.xml
#copy [server]axis2.xml to AXIS2C_HOME
echo "Copying axis2.xml to AXIS2C_HOME"
@@ -29,4 +30,4 @@
echo "Copying latest modules to client_repo"
cp -r $AXIS2C_HOME/modules $CLIENT_REPO/
-echo "WARNING: Make sure that you have correct configurations in server/client axis2.xml files"
+echo "WARNING: Make sure that you have correct configurations in sec_echo/services.xml file"
Modified: webservices/axis2/trunk/c/rampart/samples/client/enc_echo/update_n_run.sh
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/samples/client/enc_echo/update_n_run.sh?view=diff&rev=486550&r1=486549&r2=486550
==============================================================================
--- webservices/axis2/trunk/c/rampart/samples/client/enc_echo/update_n_run.sh (original)
+++ webservices/axis2/trunk/c/rampart/samples/client/enc_echo/update_n_run.sh Wed Dec 13 00:49:56 2006
@@ -7,4 +7,4 @@
cp -r $AXIS2C_HOME/modules/rampart $CLIENT_REPO/modules
#RUN
-./echo http://localhost:9090/axis2/services/echo $CLIENT_REPO
+./echo http://localhost:9090/axis2/services/sec_echo $CLIENT_REPO
Modified: webservices/axis2/trunk/c/rampart/samples/configure.ac
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/samples/configure.ac?view=diff&rev=486550&r1=486549&r2=486550
==============================================================================
--- webservices/axis2/trunk/c/rampart/samples/configure.ac (original)
+++ webservices/axis2/trunk/c/rampart/samples/configure.ac Wed Dec 13 00:49:56 2006
@@ -78,6 +78,8 @@
AC_CONFIG_FILES([Makefile \
callback/Makefile \
callback/htpasswd_callback/Makefile \
+ server/Makefile \
+ server/sec_echo/Makefile \
client/Makefile
client/enc_echo/Makefile \
client/enc_echo/data/Makefile \
Added: webservices/axis2/trunk/c/rampart/samples/server/Makefile.am
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/samples/server/Makefile.am?view=auto&rev=486550
==============================================================================
--- webservices/axis2/trunk/c/rampart/samples/server/Makefile.am (added)
+++ webservices/axis2/trunk/c/rampart/samples/server/Makefile.am Wed Dec 13 00:49:56 2006
@@ -0,0 +1,4 @@
+samplesdir=$(prefix)/samples/server
+SUBDIRS = sec_echo
+#EXTRA_DIST = axis2.xml axis2.log
+#samples_DATA= Makefile.am Makefile.in
Added: webservices/axis2/trunk/c/rampart/samples/server/sec_echo/Makefile.am
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/samples/server/sec_echo/Makefile.am?view=auto&rev=486550
==============================================================================
--- webservices/axis2/trunk/c/rampart/samples/server/sec_echo/Makefile.am (added)
+++ webservices/axis2/trunk/c/rampart/samples/server/sec_echo/Makefile.am Wed Dec 13 00:49:56 2006
@@ -0,0 +1,13 @@
+prglibdir=$(prefix)/services/sec_echo
+samplesdir=$(prefix)/samples/server/sec_echo
+prglib_LTLIBRARIES = libecho.la
+samples_DATA=echo.c echo_skeleton.c echo.h services.xml Makefile.am Makefile.in
+prglib_DATA= services.xml
+EXTRA_DIST = services.xml
+noinst_HEADERS = echo.h
+SUBDIRS =
+libecho_la_SOURCES = echo.c echo_skeleton.c
+libecho_la_LIBADD =
+INCLUDES = -I$(AXIS2C_HOME)/include \
+ @UTILINC@ \
+ @AXIOMINC@
Added: webservices/axis2/trunk/c/rampart/samples/server/sec_echo/echo.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/samples/server/sec_echo/echo.c?view=auto&rev=486550
==============================================================================
--- webservices/axis2/trunk/c/rampart/samples/server/sec_echo/echo.c (added)
+++ webservices/axis2/trunk/c/rampart/samples/server/sec_echo/echo.c Wed Dec 13 00:49:56 2006
@@ -0,0 +1,58 @@
+/*
+ * 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 <axiom_xml_writer.h>
+#include <axiom_util.h>
+#include <stdio.h>
+
+axiom_node_t *
+build_om_programatically(const axis2_env_t *env, axis2_char_t *text);
+
+axiom_node_t *
+axis2_echo_echo(const axis2_env_t *env, axiom_node_t *node)
+{
+ axiom_node_t *ret_node = NULL;
+ axis2_char_t *name = NULL;
+ AXIS2_ENV_CHECK(env, NULL);
+
+ name = axiom_util_get_localname(node, env);
+
+ ret_node = build_om_programatically(env, name);
+ return ret_node;
+}
+
+/* Builds the response content */
+axiom_node_t *
+build_om_programatically(const axis2_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;
+}
+
Added: webservices/axis2/trunk/c/rampart/samples/server/sec_echo/echo.h
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/samples/server/sec_echo/echo.h?view=auto&rev=486550
==============================================================================
--- webservices/axis2/trunk/c/rampart/samples/server/sec_echo/echo.h (added)
+++ webservices/axis2/trunk/c/rampart/samples/server/sec_echo/echo.h Wed Dec 13 00:49:56 2006
@@ -0,0 +1,30 @@
+/*
+ * 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 <axis2_svc_skeleton.h>
+#include <axis2_log_default.h>
+#include <axis2_error_default.h>
+#include <axiom_text.h>
+#include <axiom_node.h>
+#include <axiom_element.h>
+
+axiom_node_t *axis2_echo_echo(const axis2_env_t *env, axiom_node_t *node);
+
+#endif /* CALC_H*/
Added: webservices/axis2/trunk/c/rampart/samples/server/sec_echo/echo_skeleton.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/samples/server/sec_echo/echo_skeleton.c?view=auto&rev=486550
==============================================================================
--- webservices/axis2/trunk/c/rampart/samples/server/sec_echo/echo_skeleton.c (added)
+++ webservices/axis2/trunk/c/rampart/samples/server/sec_echo/echo_skeleton.c Wed Dec 13 00:49:56 2006
@@ -0,0 +1,174 @@
+/*
+ * 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_svc_skeleton.h>
+#include "echo.h"
+#include <axis2_array_list.h>
+#include <axis2_msg_ctx.h>
+#include <stdio.h>
+
+int AXIS2_CALL
+echo_free(axis2_svc_skeleton_t *svc_skeleton,
+ const axis2_env_t *env);
+
+/*
+ * This method invokes the right service method
+ */
+axiom_node_t* AXIS2_CALL
+echo_invoke(axis2_svc_skeleton_t *svc_skeleton,
+ const axis2_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 axis2_env_t *env);
+
+axiom_node_t* AXIS2_CALL
+echo_on_fault(axis2_svc_skeleton_t *svc_skeli,
+ const axis2_env_t *env, axiom_node_t *node);
+
+/*Create function */
+axis2_svc_skeleton_t *
+axis2_echo_create(const axis2_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->func_array = NULL;
+ /* Assign function pointers */
+ svc_skeleton->ops->free = echo_free;
+ svc_skeleton->ops->init = echo_init;
+ svc_skeleton->ops->invoke = echo_invoke;
+ svc_skeleton->ops->on_fault = echo_on_fault;
+
+ return svc_skeleton;
+}
+
+/* Initialize the service */
+int AXIS2_CALL
+echo_init(axis2_svc_skeleton_t *svc_skeleton,
+ const axis2_env_t *env)
+{
+ svc_skeleton->func_array = axis2_array_list_create(env, 0);
+ /* Add the implemented operation names of the service to
+ * the array list of functions
+ */
+ AXIS2_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 axis2_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.
+ */
+
+ return axis2_echo_echo(env, node);
+}
+
+/* On fault, handle the fault */
+axiom_node_t* AXIS2_CALL
+echo_on_fault(axis2_svc_skeleton_t *svc_skeli,
+ const axis2_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 axis2_env_t *env)
+{
+ /* Free the function array */
+ if (svc_skeleton->func_array)
+ {
+ AXIS2_ARRAY_LIST_FREE(svc_skeleton->func_array, env);
+ svc_skeleton->func_array = NULL;
+ }
+
+ /* Free the function array */
+ if (svc_skeleton->ops)
+ {
+ AXIS2_FREE(env->allocator, svc_skeleton->ops);
+ svc_skeleton->ops = 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 axis2_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 axis2_env_t *env)
+{
+ axis2_status_t status = AXIS2_FAILURE;
+ if (inst)
+ {
+ status = AXIS2_SVC_SKELETON_FREE(inst, env);
+ }
+ return status;
+}
+
Added: webservices/axis2/trunk/c/rampart/samples/server/sec_echo/services.xml
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/samples/server/sec_echo/services.xml?view=auto&rev=486550
==============================================================================
--- webservices/axis2/trunk/c/rampart/samples/server/sec_echo/services.xml (added)
+++ webservices/axis2/trunk/c/rampart/samples/server/sec_echo/services.xml Wed Dec 13 00:49:56 2006
@@ -0,0 +1,43 @@
+<service name="echo">
+ <parameter name="ServiceClass" locked="xsd:false">echo</parameter>
+
+ <description>
+ This is a testing service , to test the system is working or not
+ </description>
+ <!--Rampart configurations START -->
+ <module ref="rampart"/>
+
+ <parameter name="OutflowSecurity">
+ <action>
+ <items>Timestamp</items>
+ <user>Gampola</user>
+ <passwordType>passwordDigest</passwordType>
+ <!--Following should be changed with your DLL or SO path-->
+ <passwordCallbackClass>/home/kau/axis2/c/deploy/bin/samples/rampart/callback/libpwcb.so</passwordCallbackClass>
+ <timeToLive>360</timeToLive>
+ <encryptionKeyTransportAlgorithm>http://www.w3.org/2001/04/xmlenc#rsa-1_5</encryptionKeyTransportAlgorithm>
+ <encryptionSymAlgorithm>http://www.w3.org/2001/04/xmlenc#aes256-cbc</encryptionSymAlgorithm>
+ <encryptionPropFile>/home/kau/axis2/c/rampart/samples/keys/bhome/a_cert.cert</encryptionPropFile>
+ <!--encryptionKeyIdentifier options : Embedded IssuerSerial DirectReference KeyIdentifier-->
+ <encryptionKeyIdentifier>IssuerSerial</encryptionKeyIdentifier>
+ </action>
+ </parameter>
+
+
+ <!--passwordCallbackClass should be changed with your DLL or SO path-->
+ <parameter name="InflowSecurity">
+ <action>
+ <items>Encrypt</items>
+ <passwordCallbackClass>/home/kau/axis2/c/deploy/bin/samples/rampart/callback/libpwcb.so</passwordCallbackClass>
+ <decryptionPropFile>/home/kau/axis2/c/rampart/samples/keys/bhome/b_store.pfx</decryptionPropFile>
+ <encryptionUser>b</encryptionUser>
+ </action>
+ </parameter>
+ <!--Rampart configurations END -->
+
+ <operation name="echoString">
+ <!--messageReceiver class="axis2_receivers" /-->
+ <parameter name="wsamapping" >http://ws.apache.org/axis2/c/samples/sec_echo</parameter>
+ </operation>
+
+</service>
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=486550&r1=486549&r2=486550
==============================================================================
--- webservices/axis2/trunk/c/rampart/src/omxmlsec/axiom.c (original)
+++ webservices/axis2/trunk/c/rampart/src/omxmlsec/axiom.c Wed Dec 13 00:49:56 2006
@@ -62,6 +62,46 @@
return counter;
}
+
+/**
+ * Traverse thru the node and its children. Check if the localname is equal to the given name
+ * */
+AXIS2_EXTERN axiom_node_t* AXIS2_CALL
+oxs_axiom_get_node_by_local_name(const axis2_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_INFO(env->log, "[rampart][axiom] Checking node %s for %s", temp_name, local_name );
+
+ if(0 == AXIS2_STRCMP(temp_name, local_name) ){
+ /*Gottcha.. return this node*/
+ return node;
+ }else{
+ /*Doesn't match? Get the first child*/
+ axiom_node_t *temp_node = NULL;
+
+ temp_node = AXIOM_NODE_GET_FIRST_CHILD(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 children. Check if the id attribute is equal to the given value
* */
@@ -103,6 +143,8 @@
}
return NULL;
}
+
+
AXIS2_EXTERN axis2_char_t* AXIS2_CALL
oxs_axiom_get_attribute_value_of_node_by_name(const axis2_env_t *env,
axiom_node_t *node,
Modified: webservices/axis2/trunk/c/rampart/src/omxmlsec/tokens/token_binary_security_token.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/src/omxmlsec/tokens/token_binary_security_token.c?view=diff&rev=486550&r1=486549&r2=486550
==============================================================================
--- webservices/axis2/trunk/c/rampart/src/omxmlsec/tokens/token_binary_security_token.c (original)
+++ webservices/axis2/trunk/c/rampart/src/omxmlsec/tokens/token_binary_security_token.c Wed Dec 13 00:49:56 2006
@@ -32,6 +32,7 @@
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;
@@ -50,6 +51,16 @@
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_CHILD(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);
@@ -67,6 +78,7 @@
if(data){
ret = AXIOM_ELEMENT_SET_TEXT(binary_security_token_ele, env, data, binary_security_token_node);
}
+
return binary_security_token_node;
}
Modified: webservices/axis2/trunk/c/rampart/src/omxmlsec/tokens/token_reference_list.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/src/omxmlsec/tokens/token_reference_list.c?view=diff&rev=486550&r1=486549&r2=486550
==============================================================================
--- webservices/axis2/trunk/c/rampart/src/omxmlsec/tokens/token_reference_list.c (original)
+++ webservices/axis2/trunk/c/rampart/src/omxmlsec/tokens/token_reference_list.c Wed Dec 13 00:49:56 2006
@@ -94,6 +94,12 @@
iter = AXIOM_ELEMENT_GET_CHILDREN_WITH_QNAME(ref_list_ele, env, qname, ref_list_node);
AXIS2_QNAME_FREE(qname, env);
qname = NULL;
+
+ if(!iter){
+ oxs_error(ERROR_LOCATION, OXS_ERROR_INVALID_DATA,
+ "There are no children for %s", OXS_NODE_DATA_REFERENCE);
+ return NULL;
+ }
list = axis2_array_list_create(env, 0);
Modified: webservices/axis2/trunk/c/rampart/src/omxmlsec/xml_encryption.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/src/omxmlsec/xml_encryption.c?view=diff&rev=486550&r1=486549&r2=486550
==============================================================================
--- webservices/axis2/trunk/c/rampart/src/omxmlsec/xml_encryption.c (original)
+++ webservices/axis2/trunk/c/rampart/src/omxmlsec/xml_encryption.c Wed Dec 13 00:49:56 2006
@@ -82,7 +82,7 @@
/**
*
-* <BinarySecurityToken ID="CertID">KJDSsdlDJjsd</BinarySecurityToken>
+* <BinarySecurityToken ID="CertID">KJDSsdlDJjsd=</BinarySecurityToken>
* <KeyInfo>
* <SecurityTokenReference>
* <Reference URI="CertID"/>
Modified: webservices/axis2/trunk/c/rampart/src/util/rampart_encryption.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/src/util/rampart_encryption.c?view=diff&rev=486550&r1=486549&r2=486550
==============================================================================
--- webservices/axis2/trunk/c/rampart/src/util/rampart_encryption.c (original)
+++ webservices/axis2/trunk/c/rampart/src/util/rampart_encryption.c Wed Dec 13 00:49:56 2006
@@ -53,15 +53,13 @@
axiom_soap_envelope_t *soap_envelope,
axis2_array_list_t *nodes_to_encrypt)
{
- axis2_array_list_t *str_list = NULL;
axis2_char_t *encryption_parts = NULL;
- int size, i = 0;
/*Get encryption parts*/
encryption_parts = AXIS2_STRDUP(RAMPART_ACTIONS_GET_ENCRYPTION_PARTS(actions, env), env);
/*If no encryption parts are specified use body as default...
* Well...hmmm.. the child of the body infact*/
- if((!encryption_parts) || (0 == AXIS2_STRCMP(encryption_parts, " "))){
+ if((!encryption_parts) || (0 == AXIS2_STRCMP(encryption_parts, "") || (0 == AXIS2_STRCMP(encryption_parts, "Body")))){
axiom_soap_body_t *body = NULL;
axiom_node_t *body_node = NULL;
axiom_node_t *body_child_node = NULL;
@@ -72,15 +70,33 @@
body_child_node = AXIOM_NODE_GET_FIRST_CHILD(body_node, env);
AXIS2_ARRAY_LIST_ADD(nodes_to_encrypt, env, body_child_node);
return AXIS2_SUCCESS;
+ }else if(0 == AXIS2_STRCMP(encryption_parts, "Header")){
+ AXIS2_LOG_INFO(env->log, "[rampart][rampart_encryption] We do not encrypt SOAP headers");
+ return AXIS2_SUCCESS;
+ }else{
+ axis2_array_list_t *str_list = NULL;
+ axiom_node_t *envelope_node = NULL;
+ axiom_node_t *node = NULL;
+ axis2_char_t *local_name = NULL;
+ int size, i = 0;
+
+ AXIS2_LOG_INFO(env->log, "[rampart][rampart_encryption] EncryptionParts specified = %s", encryption_parts);
+ envelope_node = AXIOM_SOAP_ENVELOPE_GET_BASE_NODE(soap_envelope, env);
+ /*Tokenize*/
+ str_list = axis2_tokenize(env, encryption_parts, ' ');
+ size = AXIS2_ARRAY_LIST_SIZE(str_list, env);
+ for(i=0 ; i < size ; i++ ){
+ local_name = AXIS2_ARRAY_LIST_GET(str_list, env, i);
+ if(0 == AXIS2_STRCMP(local_name, "Security")){
+ AXIS2_LOG_INFO(env->log, "[rampart][rampart_encryption] We do not encrypt %s", local_name);
+ continue;
+ }
+ node = oxs_axiom_get_node_by_local_name(env, envelope_node, local_name);
+ AXIS2_ARRAY_LIST_ADD(nodes_to_encrypt, env, node);
+ }
+ return AXIS2_SUCCESS;
}
- /*Tokenize*/
- str_list = axis2_tokenize(env, encryption_parts, ' ');
- size = AXIS2_ARRAY_LIST_SIZE(str_list, env);
- /*Find the node and add to the list*/
- for(i=0 ; i < size ; i++ ){
- /*TODO*/
- }
return AXIS2_SUCCESS;
}
@@ -170,11 +186,9 @@
oxs_asym_ctx_set_password(asym_ctx, env, password);
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);
- /*TODO This should be taken from the configurations*/
- /*oxs_asym_ctx_set_format(asym_ctx, env, OXS_ASYM_CTX_FORMAT_PEM);*/
oxs_asym_ctx_set_format(asym_ctx, env, oxs_util_get_format_by_file_extension(env, certificate_file));
/*Encrypt the session key*/
- status = oxs_xml_enc_encrypt_key(env, asym_ctx, sec_node,session_key, id_list);
+ status = oxs_xml_enc_encrypt_key(env, asym_ctx, sec_node, session_key, id_list);
if(AXIS2_FAILURE == status){
return AXIS2_FAILURE;
}
Modified: webservices/axis2/trunk/c/rampart/src/util/rampart_sec_header_processor.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/src/util/rampart_sec_header_processor.c?view=diff&rev=486550&r1=486549&r2=486550
==============================================================================
--- webservices/axis2/trunk/c/rampart/src/util/rampart_sec_header_processor.c (original)
+++ webservices/axis2/trunk/c/rampart/src/util/rampart_sec_header_processor.c Wed Dec 13 00:49:56 2006
@@ -121,7 +121,7 @@
ref_list_node = oxs_axiom_get_first_child_node_by_name(env, encrypted_key_node, OXS_NODE_REFERENCE_LIST, NULL, NULL);
reference_list = oxs_token_get_reference_list_data(env, ref_list_node);
/*If there are no references. Nothing to do. Return success*/
- if(0 == AXIS2_ARRAY_LIST_SIZE(reference_list, env)){
+ if((!reference_list) || (0 == AXIS2_ARRAY_LIST_SIZE(reference_list, env))){
AXIS2_LOG_INFO(env->log, "[rampart][shp] Reference List is empty");
return AXIS2_SUCCESS;
}
@@ -177,7 +177,10 @@
enc_data_node = oxs_axiom_get_node_by_id(env, envelope_node, OXS_ATTR_ID, id2);
if(!enc_data_node){
AXIS2_LOG_INFO(env->log, "[rampart][shp] Node with ID=%s cannot be found", id);
- continue;
+ /*continue;*/
+ rampart_create_fault_envelope(env, RAMPART_FAULT_FAILED_CHECK,
+ "Cannot find EncryptedData element", RAMPART_FAULT_IN_ENCRYPTED_DATA, msg_ctx);
+ return AXIS2_FAILURE;
}
/*Create an enc_ctx*/
ctx = oxs_ctx_create(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=486550&r1=486549&r2=486550
==============================================================================
--- webservices/axis2/trunk/c/rampart/test/omxmlsec/test.c (original)
+++ webservices/axis2/trunk/c/rampart/test/omxmlsec/test.c Wed Dec 13 00:49:56 2006
@@ -69,7 +69,7 @@
{
oxs_key_t *key = NULL;
key = oxs_key_create(env);
- OXS_KEY_POPULATE(key, env, (unsigned char*)"12345678123456781234567812345678", "session_key", 32, OXS_KEY_USAGE_DECRYPT);
+ OXS_KEY_POPULATE(key, env, (unsigned char*)"012345670123456701234567", "session_key", 32, OXS_KEY_USAGE_DECRYPT);
return key;
}
@@ -146,7 +146,7 @@
OXS_CTX_SET_KEY(ctx, env, key);
/*Set algorithm*/
- OXS_CTX_SET_ENC_MTD_ALGORITHM(ctx, env, OXS_HREF_AES_256_CBC);
+ OXS_CTX_SET_ENC_MTD_ALGORITHM(ctx, env, OXS_HREF_DES3_CBC);
/*Get the node to be encrypted*/
enc_node = AXIOM_NODE_GET_FIRST_CHILD(tmpl, env);
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org