You are viewing a plain text version of this content. The canonical link for it is here.
Posted to rampart-dev@ws.apache.org by ma...@apache.org on 2007/04/03 07:50:06 UTC

svn commit: r525040 - in /webservices/rampart/trunk/c: include/ samples/secpolicy/scenario6/ samples/secpolicy/scenario9/ src/secpolicy/builder/ src/secpolicy/model/ src/util/

Author: manjula
Date: Mon Apr  2 22:50:04 2007
New Revision: 525040

URL: http://svn.apache.org/viewvc?view=rev&rev=525040
Log:
Adding sign and encrypting elements inside a header or
body.

Added:
    webservices/rampart/trunk/c/include/rp_element.h
    webservices/rampart/trunk/c/include/rp_signed_encrypted_items.h
    webservices/rampart/trunk/c/include/rp_signed_encrypted_items_builder.h
    webservices/rampart/trunk/c/samples/secpolicy/scenario9/
    webservices/rampart/trunk/c/samples/secpolicy/scenario9/README.txt
    webservices/rampart/trunk/c/samples/secpolicy/scenario9/client-incoming-secpolicy.xml
    webservices/rampart/trunk/c/samples/secpolicy/scenario9/client-outgoing-secpolicy.xml
    webservices/rampart/trunk/c/samples/secpolicy/scenario9/service-incoming-secpolicy.xml
    webservices/rampart/trunk/c/samples/secpolicy/scenario9/service-outgoing-secpolicy.xml
    webservices/rampart/trunk/c/src/secpolicy/builder/signed_encrypted_items_builder.c
    webservices/rampart/trunk/c/src/secpolicy/model/element.c
    webservices/rampart/trunk/c/src/secpolicy/model/signed_encrypted_items.c
Modified:
    webservices/rampart/trunk/c/include/rampart_context.h
    webservices/rampart/trunk/c/include/rp_defines.h
    webservices/rampart/trunk/c/include/rp_secpolicy.h
    webservices/rampart/trunk/c/include/rp_secpolicy_builder.h
    webservices/rampart/trunk/c/include/rp_signed_encrypted_parts.h
    webservices/rampart/trunk/c/include/rp_signed_encrypted_parts_builder.h
    webservices/rampart/trunk/c/samples/secpolicy/scenario6/client-outgoing-secpolicy.xml
    webservices/rampart/trunk/c/src/secpolicy/builder/Makefile.am
    webservices/rampart/trunk/c/src/secpolicy/builder/qname_matcher.c
    webservices/rampart/trunk/c/src/secpolicy/builder/secpolicy_builder.c
    webservices/rampart/trunk/c/src/secpolicy/model/Makefile.am
    webservices/rampart/trunk/c/src/secpolicy/model/secpolicy.c
    webservices/rampart/trunk/c/src/util/rampart_context.c
    webservices/rampart/trunk/c/src/util/rampart_encryption.c
    webservices/rampart/trunk/c/src/util/rampart_sec_header_processor.c
    webservices/rampart/trunk/c/src/util/rampart_signature.c
    webservices/rampart/trunk/c/src/util/timestamp_token.c
    webservices/rampart/trunk/c/src/util/username_token.c

Modified: webservices/rampart/trunk/c/include/rampart_context.h
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/c/include/rampart_context.h?view=diff&rev=525040&r1=525039&r2=525040
==============================================================================
--- webservices/rampart/trunk/c/include/rampart_context.h (original)
+++ webservices/rampart/trunk/c/include/rampart_context.h Mon Apr  2 22:50:04 2007
@@ -347,6 +347,20 @@
         axiom_soap_envelope_t *soap_envelope,
         axutil_array_list_t *nodes_to_sign);
 
+    AXIS2_EXTERN axis2_status_t AXIS2_CALL
+    rampart_context_get_elements_to_encrypt(
+        rampart_context_t *rampart_context,
+        const axutil_env_t *env,
+        axiom_soap_envelope_t *soap_envelope,
+        axutil_array_list_t *nodes_to_encrypt);
+
+    AXIS2_EXTERN axis2_status_t AXIS2_CALL
+    rampart_context_get_elements_to_sign(
+        rampart_context_t *rampart_context,
+        const axutil_env_t *env,
+        axiom_soap_envelope_t *soap_envelope,
+        axutil_array_list_t *nodes_to_sign);
+
     AXIS2_EXTERN rp_property_t *AXIS2_CALL
     rampart_context_get_token(
         rampart_context_t *rampart_context,

Modified: webservices/rampart/trunk/c/include/rp_defines.h
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/c/include/rp_defines.h?view=diff&rev=525040&r1=525039&r2=525040
==============================================================================
--- webservices/rampart/trunk/c/include/rp_defines.h (original)
+++ webservices/rampart/trunk/c/include/rp_defines.h Mon Apr  2 22:50:04 2007
@@ -62,11 +62,14 @@
 #define RP_SIGNED_ELEMENTS "SignedElements"
 #define RP_ENCRYPTED_PARTS "EncryptedParts"
 #define RP_ENCRYPTED_ELEMENTS "EncryptedElements"
+#define RP_SIGNED_ITEMS "SignedItems"
+#define RP_ENCRYPTED_ITEMS "EncryptedItems"    
 
 #define RP_BODY "Body"
 #define RP_HEADER "Header"
 #define RP_NAME "Name"
 #define RP_NAMESPACE "Namespace"
+#define RP_ELEMENT "Element"    
 
 #define RP_XPATH "XPath"
 #define RP_XPATH_VERSION "XPathVersion"

Added: webservices/rampart/trunk/c/include/rp_element.h
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/c/include/rp_element.h?view=auto&rev=525040
==============================================================================
--- webservices/rampart/trunk/c/include/rp_element.h (added)
+++ webservices/rampart/trunk/c/include/rp_element.h Mon Apr  2 22:50:04 2007
@@ -0,0 +1,62 @@
+/*
+ * 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 RP_ELEMENT_H
+#define RP_ELEMENT_H
+
+/** @defgroup rp_element
+ * @ingroup rp_element
+ * @{
+ */
+
+#include <rp_includes.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+    typedef struct rp_element_t rp_element_t;
+
+    AXIS2_EXTERN rp_element_t *AXIS2_CALL
+    rp_element_create(const axutil_env_t *env);
+
+    AXIS2_EXTERN axis2_status_t AXIS2_CALL
+    rp_element_free(rp_element_t *element,
+                   const axutil_env_t *env);
+
+    AXIS2_EXTERN axis2_char_t *AXIS2_CALL
+    rp_element_get_name(rp_element_t *element,
+                       const axutil_env_t *env);
+
+    AXIS2_EXTERN axis2_status_t AXIS2_CALL
+    rp_element_set_name(rp_element_t *element,
+                       const axutil_env_t *env,
+                       axis2_char_t *name);
+
+    AXIS2_EXTERN axis2_char_t *AXIS2_CALL
+    rp_element_get_namespace(rp_element_t *element,
+                            const axutil_env_t *env);
+
+    AXIS2_EXTERN axis2_status_t AXIS2_CALL
+    rp_element_set_namespace(rp_element_t *element,
+                            const axutil_env_t *env,
+                            axis2_char_t *namespace);
+
+#ifdef __cplusplus
+}
+#endif
+#endif

Modified: webservices/rampart/trunk/c/include/rp_secpolicy.h
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/c/include/rp_secpolicy.h?view=diff&rev=525040&r1=525039&r2=525040
==============================================================================
--- webservices/rampart/trunk/c/include/rp_secpolicy.h (original)
+++ webservices/rampart/trunk/c/include/rp_secpolicy.h Mon Apr  2 22:50:04 2007
@@ -29,6 +29,7 @@
 #include <rp_transport_binding.h>
 #include <rp_signed_encrypted_parts.h>
 #include <rp_signed_encrypted_elements.h>
+#include <rp_signed_encrypted_items.h>
 #include <rp_supporting_tokens.h>
 #include <rp_rampart_config.h>
 #include <rp_wss10.h>
@@ -145,6 +146,28 @@
 
     AXIS2_EXTERN rp_signed_encrypted_elements_t *AXIS2_CALL
     rp_secpolicy_get_encrypted_elements(
+        rp_secpolicy_t *secpolicy,
+        const axutil_env_t *env);
+
+    AXIS2_EXTERN axis2_status_t AXIS2_CALL
+    rp_secpolicy_set_signed_items(
+        rp_secpolicy_t *secpolicy,
+        const axutil_env_t *env,
+        rp_signed_encrypted_items_t *signed_items);
+
+    AXIS2_EXTERN rp_signed_encrypted_items_t *AXIS2_CALL
+        rp_secpolicy_get_signed_items(
+        rp_secpolicy_t *secpolicy,
+        const axutil_env_t *env);
+
+    AXIS2_EXTERN axis2_status_t AXIS2_CALL
+    rp_secpolicy_set_encrypted_items(
+        rp_secpolicy_t *secpolicy,
+        const axutil_env_t *env,
+        rp_signed_encrypted_items_t *encrypted_items);
+    
+    AXIS2_EXTERN rp_signed_encrypted_items_t *AXIS2_CALL
+    rp_secpolicy_get_encrypted_items(
         rp_secpolicy_t *secpolicy,
         const axutil_env_t *env);
 

Modified: webservices/rampart/trunk/c/include/rp_secpolicy_builder.h
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/c/include/rp_secpolicy_builder.h?view=diff&rev=525040&r1=525039&r2=525040
==============================================================================
--- webservices/rampart/trunk/c/include/rp_secpolicy_builder.h (original)
+++ webservices/rampart/trunk/c/include/rp_secpolicy_builder.h Mon Apr  2 22:50:04 2007
@@ -32,6 +32,7 @@
 #include <rp_wss10_builder.h>
 #include <rp_wss11_builder.h>
 #include <rp_rampart_config_builder.h>
+#include <rp_signed_encrypted_items_builder.h>
 
 #ifdef __cplusplus
 extern "C"

Added: webservices/rampart/trunk/c/include/rp_signed_encrypted_items.h
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/c/include/rp_signed_encrypted_items.h?view=auto&rev=525040
==============================================================================
--- webservices/rampart/trunk/c/include/rp_signed_encrypted_items.h (added)
+++ webservices/rampart/trunk/c/include/rp_signed_encrypted_items.h Mon Apr  2 22:50:04 2007
@@ -0,0 +1,67 @@
+/*
+ * 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 RP_SIGNED_ENCRYPTED_ITEMS_H
+#define RP_SIGNED_ENCRYPTED_ITEMS_H
+
+/** @defgroup rp_signed_encrypted_items
+ * @ingroup rp_signed_encrypted_itemss
+ * @{
+ */
+
+#include <rp_includes.h>
+#include <rp_element.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+    typedef struct rp_signed_encrypted_items_t rp_signed_encrypted_items_t;
+
+    AXIS2_EXTERN rp_signed_encrypted_items_t *AXIS2_CALL
+    rp_signed_encrypted_items_create(const axutil_env_t *env);
+
+    AXIS2_EXTERN axis2_status_t AXIS2_CALL
+    rp_signed_encrypted_items_free(rp_signed_encrypted_items_t *signed_encrypted_items,
+                                   const axutil_env_t *env);
+
+
+    AXIS2_EXTERN axis2_bool_t AXIS2_CALL
+    rp_signed_encrypted_items_get_signeditems(rp_signed_encrypted_items_t *signed_encrypted_items,
+            const axutil_env_t *env);
+
+    AXIS2_EXTERN axis2_status_t AXIS2_CALL
+    rp_signed_encrypted_items_set_signeditems(rp_signed_encrypted_items_t *signed_encrypted_items,
+            const axutil_env_t *env,
+            axis2_bool_t signeditems);
+
+    AXIS2_EXTERN axutil_array_list_t *AXIS2_CALL
+    rp_signed_encrypted_items_get_elements(
+        rp_signed_encrypted_items_t *signed_encrypted_items,
+        const axutil_env_t *env);
+
+    AXIS2_EXTERN axis2_status_t AXIS2_CALL
+    rp_signed_encrypted_items_add_element(
+        rp_signed_encrypted_items_t *signed_encrypted_items,
+        const axutil_env_t *env,
+        rp_element_t *element);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
+

Added: webservices/rampart/trunk/c/include/rp_signed_encrypted_items_builder.h
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/c/include/rp_signed_encrypted_items_builder.h?view=auto&rev=525040
==============================================================================
--- webservices/rampart/trunk/c/include/rp_signed_encrypted_items_builder.h (added)
+++ webservices/rampart/trunk/c/include/rp_signed_encrypted_items_builder.h Mon Apr  2 22:50:04 2007
@@ -0,0 +1,55 @@
+/*
+ * 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 RP_SIGNED_ENCRYPTED_ITEMS_BUILDER_H
+#define RP_SIGNED_ENCRYPTED_ITEMS_BUILDER_H
+
+/** @defgroup rp_signed_encrypted_items_builder
+ * @ingroup rp_signed_encrypted_items_builder
+ * @{
+ */
+
+#include <rp_includes.h>
+#include <rp_signed_encrypted_items.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+
+    AXIS2_EXTERN rp_signed_encrypted_items_t *AXIS2_CALL
+    rp_signed_encrypted_items_builder_build(
+        const axutil_env_t *env,
+        axiom_node_t *items);
+
+    AXIS2_EXTERN axis2_status_t AXIS2_CALL
+    rp_signed_encrypted_items_builder_set_properties(
+        axiom_node_t *node,
+        axiom_element_t *element,
+        axis2_char_t *local_name,
+        rp_signed_encrypted_items_t *signed_encrypted_items,
+        const axutil_env_t *env);
+
+    AXIS2_EXTERN rp_element_t *AXIS2_CALL
+    rp_signed_encrypted_items_builder_build_element(
+        axiom_element_t *element,
+        const axutil_env_t *env);
+
+#ifdef __cplusplus
+}
+#endif
+#endif

Modified: webservices/rampart/trunk/c/include/rp_signed_encrypted_parts.h
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/c/include/rp_signed_encrypted_parts.h?view=diff&rev=525040&r1=525039&r2=525040
==============================================================================
--- webservices/rampart/trunk/c/include/rp_signed_encrypted_parts.h (original)
+++ webservices/rampart/trunk/c/include/rp_signed_encrypted_parts.h Mon Apr  2 22:50:04 2007
@@ -31,7 +31,6 @@
 #endif
 
     typedef struct rp_signed_encrypted_parts_t rp_signed_encrypted_parts_t;
-    struct rp_header_t;
 
     AXIS2_EXTERN rp_signed_encrypted_parts_t *AXIS2_CALL
     rp_signed_encrypted_parts_create(const axutil_env_t *env);
@@ -67,7 +66,7 @@
     rp_signed_encrypted_parts_add_header(
         rp_signed_encrypted_parts_t *signed_encrypted_parts,
         const axutil_env_t *env,
-        struct rp_header_t *header);
+        rp_header_t *header);
 
 #ifdef __cplusplus
 }

Modified: webservices/rampart/trunk/c/include/rp_signed_encrypted_parts_builder.h
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/c/include/rp_signed_encrypted_parts_builder.h?view=diff&rev=525040&r1=525039&r2=525040
==============================================================================
--- webservices/rampart/trunk/c/include/rp_signed_encrypted_parts_builder.h (original)
+++ webservices/rampart/trunk/c/include/rp_signed_encrypted_parts_builder.h Mon Apr  2 22:50:04 2007
@@ -44,7 +44,7 @@
         rp_signed_encrypted_parts_t *signed_encrypted_parts,
         const axutil_env_t *env);
 
-    AXIS2_EXTERN struct rp_header_t *AXIS2_CALL
+    AXIS2_EXTERN rp_header_t *AXIS2_CALL
                 rp_signed_encrypted_parts_builder_build_header(
                     axiom_element_t *element,
                     const axutil_env_t *env);

Modified: webservices/rampart/trunk/c/samples/secpolicy/scenario6/client-outgoing-secpolicy.xml
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/c/samples/secpolicy/scenario6/client-outgoing-secpolicy.xml?view=diff&rev=525040&r1=525039&r2=525040
==============================================================================
--- webservices/rampart/trunk/c/samples/secpolicy/scenario6/client-outgoing-secpolicy.xml (original)
+++ webservices/rampart/trunk/c/samples/secpolicy/scenario6/client-outgoing-secpolicy.xml Mon Apr  2 22:50:04 2007
@@ -48,7 +48,7 @@
                 <rampc:EncryptionUser>a</rampc:EncryptionUser>
                 <rampc:PasswordCallbackClass>/home/AXIS2_USER/axis2/c/deploy/bin/samples/rampart/callback/libpwcb.so</rampc:PasswordCallbackClass>
             <rampc:Certificate>/home/AXIS2_USER/axis2/c/deploy/bin/samples/rampart/keys/ahome/a_cert.cert</rampc:Certificate>
-            <rampc:PrivateKey>/home/AXIS2_USER/axis2/c/deploy/bin/samples/rampart/keys/ahome/a_key.pem</rampc:PrivateKey>
+            <rampc:PrivateKey>/home/AXIS2_USER/axis2/c/deploy/bin/samples/rampart/keys/ahome/a_store.pfx</rampc:PrivateKey>
             </rampc:RampartConfig>
 		</wsp:All>
 	</wsp:ExactlyOne>

Added: webservices/rampart/trunk/c/samples/secpolicy/scenario9/README.txt
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/c/samples/secpolicy/scenario9/README.txt?view=auto&rev=525040
==============================================================================
--- webservices/rampart/trunk/c/samples/secpolicy/scenario9/README.txt (added)
+++ webservices/rampart/trunk/c/samples/secpolicy/scenario9/README.txt Mon Apr  2 22:50:04 2007
@@ -0,0 +1,2 @@
+Client send Body encrypted.Server response with the plain text body.
+Keyidentifier:- Embedded 

Added: webservices/rampart/trunk/c/samples/secpolicy/scenario9/client-incoming-secpolicy.xml
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/c/samples/secpolicy/scenario9/client-incoming-secpolicy.xml?view=auto&rev=525040
==============================================================================
--- webservices/rampart/trunk/c/samples/secpolicy/scenario9/client-incoming-secpolicy.xml (added)
+++ webservices/rampart/trunk/c/samples/secpolicy/scenario9/client-incoming-secpolicy.xml Mon Apr  2 22:50:04 2007
@@ -0,0 +1,32 @@
+<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/Always">
+								<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/Always">
+								<wsp:Policy>
+									<sp:WssX509V3Token10/>
+								</wsp:Policy>
+							</sp:X509Token>
+						</wsp:Policy>
+					</sp:RecipientToken>
+                    <sp:IncludeTimestamp/>
+				</wsp:Policy>
+            </sp:AsymmetricBinding>
+            <rampc:RampartConfig xmlns:rampc="http://ws.apache.org/rampart/c/policy">
+                <rampc:TimeToLive>360</rampc:TimeToLive>
+            </rampc:RampartConfig>
+		</wsp:All>
+	</wsp:ExactlyOne>
+</wsp:Policy>

Added: webservices/rampart/trunk/c/samples/secpolicy/scenario9/client-outgoing-secpolicy.xml
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/c/samples/secpolicy/scenario9/client-outgoing-secpolicy.xml?view=auto&rev=525040
==============================================================================
--- webservices/rampart/trunk/c/samples/secpolicy/scenario9/client-outgoing-secpolicy.xml (added)
+++ webservices/rampart/trunk/c/samples/secpolicy/scenario9/client-outgoing-secpolicy.xml Mon Apr  2 22:50:04 2007
@@ -0,0 +1,50 @@
+<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/Always">
+								<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/Always">
+								<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:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+                <sp:Body/>
+            </sp:SignedParts>
+            <rampc:SignedItems xmlns:rampc="http://ws.apache.org/rampart/c/policy">
+                <rampc:Element Name="To" Namespace="http://www.w3.org/2005/08/addressing"/>
+            </rampc:SignedItems>                
+            <rampc:RampartConfig xmlns:rampc="http://ws.apache.org/rampart/c/policy">
+                <rampc:EncryptionUser>a</rampc:EncryptionUser>
+                <rampc:PasswordCallbackClass>/home/AXIS2_USER/axis2/c/deploy/bin/samples/rampart/callback/libpwcb.so</rampc:PasswordCallbackClass>
+            <rampc:Certificate>/home/AXIS2_USER/axis2/c/deploy/bin/samples/rampart/keys/ahome/a_cert.cert</rampc:Certificate>
+            <rampc:PrivateKey>/home/AXIS2_USER/axis2/c/deploy/bin/samples/rampart/keys/ahome/a_key.pem</rampc:PrivateKey>
+            </rampc:RampartConfig>
+		</wsp:All>
+	</wsp:ExactlyOne>
+</wsp:Policy>

Added: webservices/rampart/trunk/c/samples/secpolicy/scenario9/service-incoming-secpolicy.xml
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/c/samples/secpolicy/scenario9/service-incoming-secpolicy.xml?view=auto&rev=525040
==============================================================================
--- webservices/rampart/trunk/c/samples/secpolicy/scenario9/service-incoming-secpolicy.xml (added)
+++ webservices/rampart/trunk/c/samples/secpolicy/scenario9/service-incoming-secpolicy.xml Mon Apr  2 22:50:04 2007
@@ -0,0 +1,50 @@
+<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/Always">
+								<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/Always">
+								<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:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+                <sp:Body/>
+            </sp:SignedParts>
+            <rampc:SignedItems xmlns:rampc="http://ws.apache.org/rampart/c/policy">
+                <rampc:Element Name="To" Namespace="http://www.w3.org/2005/08/addressing"/>
+            </rampc:SignedItems>
+            <rampc:RampartConfig xmlns:rampc="http://ws.apache.org/rampart/c/policy">
+                <rampc:EncryptionUser>b</rampc:EncryptionUser>
+                <rampc:PasswordCallbackClass>/home/AXIS2_USER/axis2/c/deploy/bin/samples/rampart/callback/libpwcb.so</rampc:PasswordCallbackClass>
+                <rampc:Certificate>/home/AXIS2_USER/axis2/c/deploy/bin/samples/rampart/keys/bhome/b_cert.cert</rampc:Certificate>
+                <rampc:PrivateKey>/home/AXIS2_USER/axis2/c/deploy/bin/samples/rampart/keys/bhome/b_store.pfx</rampc:PrivateKey>
+            </rampc:RampartConfig>
+		</wsp:All>
+	</wsp:ExactlyOne>
+</wsp:Policy>

Added: webservices/rampart/trunk/c/samples/secpolicy/scenario9/service-outgoing-secpolicy.xml
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/c/samples/secpolicy/scenario9/service-outgoing-secpolicy.xml?view=auto&rev=525040
==============================================================================
--- webservices/rampart/trunk/c/samples/secpolicy/scenario9/service-outgoing-secpolicy.xml (added)
+++ webservices/rampart/trunk/c/samples/secpolicy/scenario9/service-outgoing-secpolicy.xml Mon Apr  2 22:50:04 2007
@@ -0,0 +1,32 @@
+<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/Always">
+								<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/Always">
+								<wsp:Policy>
+									<sp:WssX509V3Token10/>
+								</wsp:Policy>
+							</sp:X509Token>
+						</wsp:Policy>
+					</sp:RecipientToken>
+                    <sp:IncludeTimestamp/>
+				</wsp:Policy>
+            </sp:AsymmetricBinding>
+            <rampc:RampartConfig xmlns:rampc="http://ws.apache.org/rampart/c/policy">
+                <rampc:TimeToLive>360</rampc:TimeToLive>
+            </rampc:RampartConfig>
+		</wsp:All>
+	</wsp:ExactlyOne>
+</wsp:Policy>

Modified: webservices/rampart/trunk/c/src/secpolicy/builder/Makefile.am
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/c/src/secpolicy/builder/Makefile.am?view=diff&rev=525040&r1=525039&r2=525040
==============================================================================
--- webservices/rampart/trunk/c/src/secpolicy/builder/Makefile.am (original)
+++ webservices/rampart/trunk/c/src/secpolicy/builder/Makefile.am Mon Apr  2 22:50:04 2007
@@ -5,7 +5,8 @@
 librp_builder_la_SOURCES = algorithmsuite_builder.c asymmetric_binding_builder.c binding_commons_builder.c \
 						   https_token_builder.c layout_builder.c qname_matcher.c rampart_config_builder.c secpolicy_builder.c \
 						   security_context_token_builder.c signed_encrypted_elements_builder.c \
-						   signed_encrypted_parts_builder.c supporting_tokens_builder.c symmetric_asymmetric_commons_builder.c \
+						   signed_encrypted_parts_builder.c signed_encrypted_items_builder.c \
+						   supporting_tokens_builder.c symmetric_asymmetric_commons_builder.c \
 						   symmetric_binding_builder.c token_builder.c transport_binding_builder.c username_token_builder.c \
 						   wss10_builder.c wss11_builder.c x509_token_builder.c policy_creator.c
 

Modified: webservices/rampart/trunk/c/src/secpolicy/builder/qname_matcher.c
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/c/src/secpolicy/builder/qname_matcher.c?view=diff&rev=525040&r1=525039&r2=525040
==============================================================================
--- webservices/rampart/trunk/c/src/secpolicy/builder/qname_matcher.c (original)
+++ webservices/rampart/trunk/c/src/secpolicy/builder/qname_matcher.c Mon Apr  2 22:50:04 2007
@@ -31,23 +31,30 @@
 	
 	AXIS2_ENV_CHECK(env,AXIS2_FALSE);
 
-    qname = axutil_qname_create(env,local_name,RP_SP_NS,RP_SP_PREFIX);
-    if(!qname)
-        return AXIS2_FALSE;
-
     node_qname = axiom_element_get_qname(element,env,node);
 
     if(!node_qname)
     {
         axutil_qname_free(qname,env);
-        qname = NULL;
-        return AXIS2_FALSE;
     }
-
+    else
+    {
+        qname = axutil_qname_create(env,local_name,RP_SP_NS,RP_SP_PREFIX);
+        if(!qname)
+            return AXIS2_FALSE;
+    }
     if(axutil_qname_equals(qname,env,node_qname))
+    {
+        axutil_qname_free(qname,env);
+        qname = NULL;        
         return AXIS2_TRUE;
-    
-    return AXIS2_FALSE;
+    }
+    else
+    {
+        axutil_qname_free(qname,env);
+        qname = NULL;
+        return AXIS2_FALSE;
+    }
 }
 
 AXIS2_EXTERN axis2_bool_t AXIS2_CALL
@@ -71,19 +78,26 @@
 
     if(!node_qname)
     {
-        axutil_qname_free(qname,env);
-        qname = NULL;
         return AXIS2_FALSE;
     }
-
+    else
+    {
+        qname = axutil_qname_create(env,local_name,RP_POLICY_NS,RP_POLICY_PREFIX);
+        if(!qname)
+            return AXIS2_FALSE;
+    }
     if(axutil_qname_equals(qname,env,node_qname))
     {        
         axutil_qname_free(qname,env);
         qname = NULL;
         return AXIS2_TRUE;
     }
-
-    return AXIS2_FALSE;
+    else
+    {
+        axutil_qname_free(qname,env);
+        qname = NULL;
+        return AXIS2_FALSE;
+    }
 }
 
 
@@ -100,21 +114,28 @@
 
 	AXIS2_ENV_CHECK(env,AXIS2_FALSE);
 
-    qname = axutil_qname_create(env,local_name,RP_RAMPART_NS,RP_RAMPART_PREFIX);
-    if(!qname)
-        return AXIS2_FALSE;
-
     node_qname = axiom_element_get_qname(element,env,node);
 
     if(!node_qname)
     {
-        axutil_qname_free(qname,env);
-        qname = NULL;
         return AXIS2_FALSE;
     }
-
+    else
+    {
+        qname = axutil_qname_create(env,local_name,RP_RAMPART_NS,RP_RAMPART_PREFIX);
+        if(!qname)
+            return AXIS2_FALSE;
+    }        
     if(axutil_qname_equals(qname,env,node_qname))
+    {        
+        axutil_qname_free(qname,env);
+        qname = NULL;
         return AXIS2_TRUE;
-    
-    return AXIS2_FALSE;
+    }
+    else
+    {        
+        axutil_qname_free(qname,env);
+        qname = NULL;
+        return AXIS2_FALSE;
+    }
 }

Modified: webservices/rampart/trunk/c/src/secpolicy/builder/secpolicy_builder.c
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/c/src/secpolicy/builder/secpolicy_builder.c?view=diff&rev=525040&r1=525039&r2=525040
==============================================================================
--- webservices/rampart/trunk/c/src/secpolicy/builder/secpolicy_builder.c (original)
+++ webservices/rampart/trunk/c/src/secpolicy/builder/secpolicy_builder.c Mon Apr  2 22:50:04 2007
@@ -299,8 +299,41 @@
         }
         else
             return AXIS2_FAILURE;
-    }        
+    }
 
+    else if(axis2_strcmp(local_name,RP_SIGNED_ITEMS)==0)
+    {
+        if( rp_match_rampart_config_qname(env,RP_SIGNED_ITEMS,node,element))
+        {
+            rp_signed_encrypted_items_t *signed_items = NULL;
+            signed_items = rp_signed_encrypted_items_builder_build(env,node);
+            if(!signed_items)
+                return AXIS2_FAILURE;
+
+            rp_signed_encrypted_items_set_signeditems(signed_items,env,AXIS2_TRUE);
+
+            return rp_secpolicy_set_signed_items(secpolicy,env,signed_items);
+        }
+        else
+            return AXIS2_FAILURE;
+    }
+    
+    else if(axis2_strcmp(local_name,RP_ENCRYPTED_ITEMS)==0)
+    {
+        if(rp_match_secpolicy_qname(env,RP_ENCRYPTED_ITEMS,node,element))
+        {
+            rp_signed_encrypted_items_t *encrypted_items = NULL;
+            encrypted_items = rp_signed_encrypted_items_builder_build(env,node);
+            if(!encrypted_items)
+                return AXIS2_FAILURE;
+
+            rp_signed_encrypted_items_set_signeditems(encrypted_items,env,AXIS2_FALSE);
+
+            return rp_secpolicy_set_encrypted_items(secpolicy,env,encrypted_items);
+        }
+        else return AXIS2_FAILURE;
+    }
+    
     else if(axis2_strcmp(local_name,RP_WSS10)==0)
     {
         if(rp_match_secpolicy_qname(env,RP_WSS10,node,element)) 

Added: webservices/rampart/trunk/c/src/secpolicy/builder/signed_encrypted_items_builder.c
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/c/src/secpolicy/builder/signed_encrypted_items_builder.c?view=auto&rev=525040
==============================================================================
--- webservices/rampart/trunk/c/src/secpolicy/builder/signed_encrypted_items_builder.c (added)
+++ webservices/rampart/trunk/c/src/secpolicy/builder/signed_encrypted_items_builder.c Mon Apr  2 22:50:04 2007
@@ -0,0 +1,144 @@
+/*
+ * 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 <rp_signed_encrypted_items_builder.h>
+#include <rp_qname_matcher.h>
+/*
+AXIS2_EXTERN rp_header_t *AXIS2_CALL
+rp_signed_encrypted_items_builder_build_header(
+    axiom_element_t *element,
+    const axutil_env_t *env);
+*/
+
+AXIS2_EXTERN rp_signed_encrypted_items_t *AXIS2_CALL
+rp_signed_encrypted_items_builder_build(
+            const axutil_env_t *env,
+            axiom_node_t *items)
+{
+    rp_signed_encrypted_items_t *signed_encrypted_items = NULL;
+    axis2_status_t status = AXIS2_SUCCESS;
+    axiom_element_t *items_ele = NULL;
+
+    AXIS2_ENV_CHECK(env,NULL);
+
+    signed_encrypted_items = rp_signed_encrypted_items_create(env);
+    if(!signed_encrypted_items)
+        return NULL;
+
+    if(AXIOM_NODE_GET_NODE_TYPE(items, env) == AXIOM_ELEMENT)
+    {
+        items_ele = (axiom_element_t*)AXIOM_NODE_GET_DATA_ELEMENT(items, env);
+        if(items_ele)
+        {
+            axiom_children_iterator_t *children_iter = NULL;
+            children_iter = axiom_element_get_children(items_ele, env, items);
+            if(children_iter )
+            {
+                while(axiom_children_iterator_has_next(children_iter, env))
+                {
+                    axiom_node_t *node = NULL;
+                    axiom_element_t *ele = NULL;
+                    axis2_char_t *local_name = NULL;
+                    node = axiom_children_iterator_next(children_iter, env);
+                    if(node)
+                    {
+                        if(AXIOM_NODE_GET_NODE_TYPE(node, env) == AXIOM_ELEMENT)
+                        {
+                            ele = (axiom_element_t*)AXIOM_NODE_GET_DATA_ELEMENT(node, env);
+                            if(ele)
+                            {
+                                local_name = axiom_element_get_localname(ele,env);
+                                if(local_name)
+                                {
+                                    status = rp_signed_encrypted_items_builder_set_properties(node,ele,local_name,signed_encrypted_items,env);
+                                    if(status!=AXIS2_SUCCESS)
+                                    {
+                                        rp_signed_encrypted_items_free(signed_encrypted_items,env);
+                                        signed_encrypted_items = NULL;
+                                    }                           
+                                }
+                            }
+                            
+                        }
+                    }
+                }
+            }
+        }
+    }
+    return signed_encrypted_items;
+}            
+
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+rp_signed_encrypted_items_builder_set_properties(
+        axiom_node_t *node,
+        axiom_element_t *ele,
+        axis2_char_t *local_name,
+        rp_signed_encrypted_items_t *signed_encrypted_items,
+        const axutil_env_t *env)
+{
+    AXIS2_ENV_CHECK(env,AXIS2_FAILURE);
+
+    if(strcmp(local_name,RP_ELEMENT)==0)
+    {
+        if(rp_match_rampart_config_qname(env,RP_ELEMENT,node,ele))
+        {
+            rp_element_t *element = NULL;
+            element = rp_signed_encrypted_items_builder_build_element(ele,env);
+            if(!element)
+                return AXIS2_FAILURE;
+            
+            return rp_signed_encrypted_items_add_element(signed_encrypted_items,env,element);    
+        }
+        else 
+            return AXIS2_FAILURE;
+    }
+    else
+        return AXIS2_FAILURE;
+}
+
+AXIS2_EXTERN rp_element_t *AXIS2_CALL 
+rp_signed_encrypted_items_builder_build_element(
+    axiom_element_t *ele,
+    const axutil_env_t *env)
+{
+    rp_element_t *element = NULL;
+    axis2_char_t *name = NULL;
+    axis2_char_t *namespace = NULL;    
+
+    AXIS2_ENV_CHECK(env,NULL);
+
+    element = rp_element_create(env);    
+    if(!element)
+        return NULL;
+
+    name = axiom_element_get_attribute_value_by_name(ele,env,RP_NAME);
+    namespace = axiom_element_get_attribute_value_by_name(ele,env,RP_NAMESPACE);
+    if(!namespace)
+    {
+        rp_element_free(element,env);
+        element = NULL;
+        return NULL;    
+    }     
+    if(name)
+        rp_element_set_name(element,env,name); 
+    
+    rp_header_set_namespace(element,env,namespace);    
+    
+    return element;
+}

Modified: webservices/rampart/trunk/c/src/secpolicy/model/Makefile.am
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/c/src/secpolicy/model/Makefile.am?view=diff&rev=525040&r1=525039&r2=525040
==============================================================================
--- webservices/rampart/trunk/c/src/secpolicy/model/Makefile.am (original)
+++ webservices/rampart/trunk/c/src/secpolicy/model/Makefile.am Mon Apr  2 22:50:04 2007
@@ -3,9 +3,10 @@
 noinst_LTLIBRARIES = librp_model.la
 
 librp_model_la_SOURCES = algorithmsuite.c asymmetric_binding.c \
-							binding_commons.c header.c https_token.c layout.c \
+							binding_commons.c header.c element.c https_token.c layout.c \
 							property.c rampart_config.c secpolicy.c security_context_token.c \
-							signed_encrypted_elements.c signed_encrypted_parts.c supporting_tokens.c symmetric_asymmetric_binding_commons.c \
+							signed_encrypted_elements.c signed_encrypted_parts.c signed_encrypted_items.c \
+							supporting_tokens.c symmetric_asymmetric_binding_commons.c \
 							symmetric_binding.c transport_binding.c ut.c wss10.c wss11.c x509_token.c
 
 

Added: webservices/rampart/trunk/c/src/secpolicy/model/element.c
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/c/src/secpolicy/model/element.c?view=auto&rev=525040
==============================================================================
--- webservices/rampart/trunk/c/src/secpolicy/model/element.c (added)
+++ webservices/rampart/trunk/c/src/secpolicy/model/element.c Mon Apr  2 22:50:04 2007
@@ -0,0 +1,112 @@
+/*
+ * 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 <rp_element.h>
+
+struct rp_element_t
+{
+    axis2_char_t *name;
+    axis2_char_t *namespace;
+};
+
+AXIS2_EXTERN rp_element_t *AXIS2_CALL 
+rp_element_create(const axutil_env_t *env)
+{
+    rp_element_t *element = NULL;
+
+    AXIS2_ENV_CHECK(env, NULL);
+
+    element =  (rp_element_t *) AXIS2_MALLOC (env->allocator,
+    sizeof (rp_element_t));
+
+    if(element == NULL)
+    {
+        AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+        return NULL;
+    }
+    element->name = NULL;
+    element->namespace = NULL;
+    
+    return element;
+
+}
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL 
+rp_element_free(rp_element_t *element,
+        const axutil_env_t *env)
+{
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    
+    if(element)
+    {
+        AXIS2_FREE(env->allocator, element);
+        element = NULL;
+    }
+    return AXIS2_SUCCESS;
+}
+
+
+/* Implementations */
+
+AXIS2_EXTERN axis2_char_t *AXIS2_CALL 
+rp_element_get_name(rp_element_t *element,
+            const axutil_env_t *env)
+{
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+   
+    return element->name;
+}
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL 
+rp_element_set_name(rp_element_t *element,
+            const axutil_env_t *env,
+            axis2_char_t *name)
+{
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK(env->error,name,AXIS2_FAILURE);   
+    
+    element->name = name;
+    return AXIS2_SUCCESS;
+}
+
+
+AXIS2_EXTERN axis2_char_t *AXIS2_CALL 
+rp_element_get_namespace(rp_element_t *element,
+            const axutil_env_t *env)
+{
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    
+    return element->namespace;
+    
+}
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL 
+rp_element_set_namespace(rp_element_t *element,
+            const axutil_env_t *env,
+            axis2_char_t *namespace)
+{
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK(env->error,namespace,AXIS2_FAILURE);   
+
+    element->namespace = namespace;
+
+    return AXIS2_SUCCESS;
+
+}
+
+

Modified: webservices/rampart/trunk/c/src/secpolicy/model/secpolicy.c
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/c/src/secpolicy/model/secpolicy.c?view=diff&rev=525040&r1=525039&r2=525040
==============================================================================
--- webservices/rampart/trunk/c/src/secpolicy/model/secpolicy.c (original)
+++ webservices/rampart/trunk/c/src/secpolicy/model/secpolicy.c Mon Apr  2 22:50:04 2007
@@ -31,6 +31,8 @@
     rp_signed_encrypted_parts_t *encrypted_parts;
     rp_signed_encrypted_elements_t *signed_elements;
     rp_signed_encrypted_elements_t *encrypted_elements;
+    rp_signed_encrypted_items_t *signed_items;
+    rp_signed_encrypted_items_t *encrypted_items;    
     rp_rampart_config_t *rampart_config;
     
 };
@@ -60,6 +62,8 @@
     secpolicy->encrypted_parts = NULL;
     secpolicy->signed_elements = NULL;
     secpolicy->encrypted_elements = NULL;
+    secpolicy->signed_items = NULL;
+    secpolicy->encrypted_items = NULL;
     secpolicy->rampart_config = NULL;
 
     return secpolicy;
@@ -123,7 +127,17 @@
         {
             rp_signed_encrypted_elements_free(secpolicy->encrypted_elements,env);
             secpolicy->encrypted_elements = NULL;
+        }
+        if(secpolicy->signed_items)
+        {
+            rp_signed_encrypted_items_free(secpolicy->signed_items,env);
+            secpolicy->signed_items = NULL;
         }            
+        if(secpolicy->encrypted_items)
+        {
+            rp_signed_encrypted_items_free(secpolicy->encrypted_items,env);
+            secpolicy->encrypted_items = NULL;
+        }
         if(secpolicy->rampart_config)
         {
             rp_rampart_config_free(secpolicy->rampart_config,env);
@@ -345,6 +359,53 @@
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     
     return secpolicy->encrypted_elements;
+}
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL 
+rp_secpolicy_set_signed_items(
+    rp_secpolicy_t *secpolicy,
+    const axutil_env_t *env,
+    rp_signed_encrypted_items_t *signed_items)
+{
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK(env->error,signed_items,AXIS2_FAILURE);
+
+    secpolicy->signed_items = signed_items; 
+    return AXIS2_SUCCESS;
+    
+}
+
+AXIS2_EXTERN rp_signed_encrypted_items_t *AXIS2_CALL
+rp_secpolicy_get_signed_items(
+    rp_secpolicy_t *secpolicy,
+    const axutil_env_t *env)
+{
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    
+    return secpolicy->signed_items;
+}
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL 
+rp_secpolicy_set_encrypted_items(
+    rp_secpolicy_t *secpolicy,
+    const axutil_env_t *env,
+    rp_signed_encrypted_items_t *encrypted_items)
+{
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK(env->error,encrypted_items,AXIS2_FAILURE);   
+
+    secpolicy->encrypted_items = encrypted_items; 
+    return AXIS2_SUCCESS;
+}
+
+AXIS2_EXTERN rp_signed_encrypted_items_t *AXIS2_CALL
+rp_secpolicy_get_encrypted_items(
+    rp_secpolicy_t *secpolicy,
+    const axutil_env_t *env)
+{
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    
+    return secpolicy->encrypted_items;
 }
 
 AXIS2_EXTERN axis2_status_t AXIS2_CALL 

Added: webservices/rampart/trunk/c/src/secpolicy/model/signed_encrypted_items.c
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/c/src/secpolicy/model/signed_encrypted_items.c?view=auto&rev=525040
==============================================================================
--- webservices/rampart/trunk/c/src/secpolicy/model/signed_encrypted_items.c (added)
+++ webservices/rampart/trunk/c/src/secpolicy/model/signed_encrypted_items.c Mon Apr  2 22:50:04 2007
@@ -0,0 +1,136 @@
+/*
+ * 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 <rp_signed_encrypted_items.h>
+
+struct rp_signed_encrypted_items_t
+{
+    axis2_bool_t signeditems;
+    axutil_array_list_t *elements;
+
+};
+
+AXIS2_EXTERN rp_signed_encrypted_items_t *AXIS2_CALL 
+rp_signed_encrypted_items_create(const axutil_env_t *env)
+{
+    rp_signed_encrypted_items_t *signed_encrypted_items = NULL;
+
+    AXIS2_ENV_CHECK(env, NULL);
+
+    signed_encrypted_items =  (rp_signed_encrypted_items_t *) AXIS2_MALLOC (env->allocator,
+    sizeof (rp_signed_encrypted_items_t));
+
+    if(signed_encrypted_items == NULL)
+    {
+        AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+        return NULL;
+    }
+    signed_encrypted_items->elements = NULL;
+
+    signed_encrypted_items->elements = axutil_array_list_create(env, 0);
+    if (!(signed_encrypted_items->elements) )
+    {
+        rp_signed_encrypted_items_free(signed_encrypted_items, env);
+        AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+        return NULL;
+    }
+
+    return signed_encrypted_items;
+
+}
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL 
+rp_signed_encrypted_items_free(rp_signed_encrypted_items_t *signed_encrypted_items,
+        const axutil_env_t *env)
+{
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    
+    if(signed_encrypted_items)
+    {
+        
+        if(signed_encrypted_items->elements)
+        {
+            int i = 0;
+            for (i = 0; i < axutil_array_list_size(signed_encrypted_items->elements,
+                env); i++)
+            {
+                rp_element_t *element = NULL;
+                element = (rp_element_t *)
+                    axutil_array_list_get(signed_encrypted_items->elements,env, i);
+                if (element)
+                    rp_element_free(element, env);
+
+                element = NULL;
+            }
+            axutil_array_list_free(signed_encrypted_items->elements, env);
+            signed_encrypted_items->elements = NULL;
+
+        }
+        AXIS2_FREE(env->allocator,signed_encrypted_items);
+        signed_encrypted_items = NULL;
+    }
+    return AXIS2_SUCCESS;
+}
+
+
+/* Implementations */
+
+AXIS2_EXTERN axis2_bool_t AXIS2_CALL 
+rp_signed_encrypted_items_get_signeditems(rp_signed_encrypted_items_t *signed_encrypted_items,
+            const axutil_env_t *env)
+{
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+        
+    return signed_encrypted_items->signeditems;
+}
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL 
+rp_signed_encrypted_items_set_signeditems(rp_signed_encrypted_items_t *signed_encrypted_items,
+            const axutil_env_t *env,
+            axis2_bool_t signeditems)
+{
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK(env->error,signeditems,AXIS2_FAILURE);
+    signed_encrypted_items->signeditems = signeditems;
+
+    return AXIS2_SUCCESS;
+}
+
+AXIS2_EXTERN axutil_array_list_t *AXIS2_CALL
+rp_signed_encrypted_items_get_elements(
+    rp_signed_encrypted_items_t *signed_encrypted_items,
+    const axutil_env_t *env)
+{
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    
+    return signed_encrypted_items->elements;
+}
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL 
+rp_signed_encrypted_items_add_element(rp_signed_encrypted_items_t *signed_encrypted_items,
+            const axutil_env_t *env,
+            rp_element_t *element)
+{
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK(env->error,element,AXIS2_FAILURE);
+        
+    axutil_array_list_add(signed_encrypted_items->elements,env,element);    
+    return AXIS2_SUCCESS;
+}
+

Modified: webservices/rampart/trunk/c/src/util/rampart_context.c
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/c/src/util/rampart_context.c?view=diff&rev=525040&r1=525039&r2=525040
==============================================================================
--- webservices/rampart/trunk/c/src/util/rampart_context.c (original)
+++ webservices/rampart/trunk/c/src/util/rampart_context.c Mon Apr  2 22:50:04 2007
@@ -99,6 +99,12 @@
     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,
@@ -107,13 +113,20 @@
     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)
 {
@@ -896,6 +909,92 @@
     return AXIS2_FAILURE;
 }
 
+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 *namespace = NULL;
+    axis2_char_t *local_name = NULL;
+    axiom_node_t *envelope_node = NULL;
+
+    namespace = (axis2_char_t *) rp_element_get_namespace(element,env);
+    if(!namespace)
+        return AXIS2_FAILURE;
+
+    if(axis2_strcmp(namespace,RP_SECURITY_NS)==0)
+    {
+        AXIS2_LOG_INFO(env->log, "[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 ; i<axutil_array_list_size(soap_header_blocks,env); i++)
+        {
+            axiom_soap_header_block_t *header_block = NULL;
+            axiom_node_t *node = NULL;
+            header_block = (axiom_soap_header_block_t *)axutil_array_list_get(soap_header_blocks,env,i);
+            if(header_block)
+            {
+                node = axiom_soap_header_block_get_base_node(header_block,env);
+                if(node)
+                {
+                    axutil_array_list_add(nodes_to_encrypt_or_sign,env,node);
+                    return AXIS2_SUCCESS;
+                }
+            }
+
+        }
+    }
+*/  if(local_name)  
+    {
+        if(axis2_strcmp(local_name,"Security")==0)
+        {
+            AXIS2_LOG_INFO(env->log, "[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 (axis2_strcmp(namespace_uri,namespace) == 0)
+                            {
+                                axutil_array_list_add(nodes_to_encrypt_or_sign,env,ret_node);
+                                return AXIS2_SUCCESS;
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+    return AXIS2_FAILURE;
+}
 
 rp_algorithmsuite_t *AXIS2_CALL
 rampart_context_get_algorithmsuite(
@@ -1304,6 +1403,27 @@
     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
@@ -1386,9 +1506,55 @@
         }
 
     }
-    return AXIS2_FAILURE;
+    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_INFO(env->log, "[rampart][rampart_context] Nothing to sign outside Secyrity header.");
+        else
+            AXIS2_LOG_INFO(env->log, "[rampart][rampart_context] Nothing to encrypt outside Secyrity header.");
+        return AXIS2_FAILURE;
+    }
+    else
+    {
+        int i = 0;
+        for(i=0; i<axutil_array_list_size(items,env); i++)
+        {
+            rp_element_t *element = NULL;
+            element = (rp_element_t *)axutil_array_list_get(items,env,i);
+            if(element)
+            {
+                status = rampart_context_set_elements_to_encrypt_or_sign(element,env,soap_envelope,nodes_to_sign_or_encrypt);
+                if(status!=AXIS2_FAILURE)
+                    return status;
+            }
+        }
+    }
+    return status;
+}
 
 AXIS2_EXTERN axis2_bool_t AXIS2_CALL
 rampart_context_check_whether_to_encrypt(
@@ -1396,12 +1562,27 @@
     const axutil_env_t *env)
 {
     rp_signed_encrypted_parts_t *encrypted_parts = NULL;
+    rp_signed_encrypted_items_t *encrypted_items = NULL;
     axutil_array_list_t *parts = NULL;
 
     encrypted_parts = rp_secpolicy_get_encrypted_parts(rampart_context->secpolicy,env);
     if(!encrypted_parts)
-        return AXIS2_FALSE;
-
+    {   
+        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_INFO(env->log, "[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))
     {
@@ -1424,12 +1605,27 @@
     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)
-        return AXIS2_FALSE;
-
+    {        
+        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_INFO(env->log, "[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))
     {

Modified: webservices/rampart/trunk/c/src/util/rampart_encryption.c
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/c/src/util/rampart_encryption.c?view=diff&rev=525040&r1=525039&r2=525040
==============================================================================
--- webservices/rampart/trunk/c/src/util/rampart_encryption.c (original)
+++ webservices/rampart/trunk/c/src/util/rampart_encryption.c Mon Apr  2 22:50:04 2007
@@ -33,6 +33,27 @@
 
 /*Private functions*/
 
+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;
+
+}
 
 
 /*Public functions*/
@@ -66,7 +87,9 @@
     server_side = axis2_msg_ctx_get_server_side(msg_ctx,env);
     nodes_to_encrypt = axutil_array_list_create(env,0);
 
-    status = rampart_context_get_nodes_to_encrypt(rampart_context,env,soap_envelope,nodes_to_encrypt);
+    /*status = rampart_context_get_nodes_to_encrypt(rampart_context,env,soap_envelope,nodes_to_encrypt);*/
+
+    status = rampart_enc_get_nodes_to_encrypt(rampart_context,env,soap_envelope,nodes_to_encrypt);
 
     if((status!=AXIS2_SUCCESS)||(axutil_array_list_size(nodes_to_encrypt,env)==0))
     {

Modified: webservices/rampart/trunk/c/src/util/rampart_sec_header_processor.c
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/c/src/util/rampart_sec_header_processor.c?view=diff&rev=525040&r1=525039&r2=525040
==============================================================================
--- webservices/rampart/trunk/c/src/util/rampart_sec_header_processor.c (original)
+++ webservices/rampart/trunk/c/src/util/rampart_sec_header_processor.c Mon Apr  2 22:50:04 2007
@@ -37,6 +37,7 @@
 #include <rampart_token_processor.h>
 #include <oxs_sign_ctx.h>
 #include <oxs_xml_signature.h>
+#include <oxs_key_mgr.h>
 
 /*Private functions*/
 static axis2_bool_t
@@ -51,7 +52,7 @@
 
     AXIS2_ENV_CHECK(env,AXIS2_FALSE);
 
-    node_ele = AXIOM_NODE_GET_DATA_ELEMENT(node, env);
+    node_ele = axiom_node_get_data_element(node, env);
     if(!node_ele)
         return AXIS2_FALSE;
 
@@ -542,7 +543,7 @@
         {
             /*we do not need to process at this moment*/
         }
-        cur_node = AXIOM_NODE_GET_NEXT_SIBLING(cur_node, env);
+        cur_node = axiom_node_get_next_sibling(cur_node, env);
     }
 
     /*Get the key identifiers and build the certificate*/

Modified: webservices/rampart/trunk/c/src/util/rampart_signature.c
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/c/src/util/rampart_signature.c?view=diff&rev=525040&r1=525039&r2=525040
==============================================================================
--- webservices/rampart/trunk/c/src/util/rampart_signature.c (original)
+++ webservices/rampart/trunk/c/src/util/rampart_signature.c Mon Apr  2 22:50:04 2007
@@ -90,6 +90,30 @@
 
 }
 
+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,
@@ -128,7 +152,8 @@
     server_side = axis2_msg_ctx_get_server_side(msg_ctx,env);
     nodes_to_sign = axutil_array_list_create(env,0);
 
-    status = rampart_context_get_nodes_to_sign(rampart_context,env,soap_envelope,nodes_to_sign);
+/*  status = rampart_context_get_nodes_to_sign(rampart_context,env,soap_envelope,nodes_to_sign);*/
+    status = rampart_sig_get_nodes_to_sign(rampart_context,env,soap_envelope,nodes_to_sign);
 
     if((status!=AXIS2_SUCCESS)||(axutil_array_list_size(nodes_to_sign,env)==0))
     {
@@ -308,12 +333,29 @@
                 }
             }
         }
-        prvkey = oxs_key_mgr_load_private_key_from_pem_file(env, prv_key_file,password);
-        if(!prvkey)
+        if(oxs_util_get_format_by_file_extension(env, prv_key_file)==OXS_ASYM_CTX_FORMAT_PKCS12)
         {
-            AXIS2_LOG_INFO(env->log, "[rampart][rampart_signature] Cannot load the private key from file.");
-            return AXIS2_FAILURE;
+            oxs_x509_cert_t *c = NULL;
+            if((oxs_key_mgr_read_pkcs12_key_store(env,prv_key_file,password,&c,&prvkey)==AXIS2_FAILURE) || !prvkey)
+            {
+                AXIS2_LOG_INFO(env->log, "[rampart][rampart_signature] Cannot load the private key from pfx file.");
+                return AXIS2_FAILURE;
+            }   
+        }            
+        else 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_INFO(env->log, "[rampart][rampart_signature] Cannot load the private key from file.");
+                return AXIS2_FAILURE;
+            }
         }
+        else
+        {
+            AXIS2_LOG_INFO(env->log, "[rampart][rampart_signature] Unknown Private key format.");
+            return AXIS2_FAILURE;
+        }            
     }
     /*These properties will set for creating signed info element*/
     oxs_sign_ctx_set_private_key(sign_ctx, env, prvkey);

Modified: webservices/rampart/trunk/c/src/util/timestamp_token.c
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/c/src/util/timestamp_token.c?view=diff&rev=525040&r1=525039&r2=525040
==============================================================================
--- webservices/rampart/trunk/c/src/util/timestamp_token.c (original)
+++ webservices/rampart/trunk/c/src/util/timestamp_token.c Mon Apr  2 22:50:04 2007
@@ -116,7 +116,7 @@
     }
 
 
-    ts_ele = AXIOM_NODE_GET_DATA_ELEMENT(ts_node, env);
+    ts_ele = axiom_node_get_data_element(ts_node, env);
 
     if (!ts_ele)
     {
@@ -146,7 +146,7 @@
     }
 
     /*Any TIMESTAMP containing an EXPIRES MUST contain a CREATED that preceeds its sibling EXPIRES.*/
-    expires_node =  AXIOM_NODE_GET_NEXT_SIBLING(created_node, env);
+    expires_node =  axiom_node_get_next_sibling(created_node, env);
     if (!expires_node)
     {
         AXIS2_LOG_INFO(env->log, "[rampart][ts]Cannot find expires  in timestamp element...");

Modified: webservices/rampart/trunk/c/src/util/username_token.c
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/c/src/util/username_token.c?view=diff&rev=525040&r1=525039&r2=525040
==============================================================================
--- webservices/rampart/trunk/c/src/util/username_token.c (original)
+++ webservices/rampart/trunk/c/src/util/username_token.c Mon Apr  2 22:50:04 2007
@@ -261,7 +261,7 @@
 
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
 
-    ut_ele = AXIOM_NODE_GET_DATA_ELEMENT(ut_node, env);
+    ut_ele = axiom_node_get_data_element(ut_node, env);
     if(!ut_ele)
         return AXIS2_FAILURE;
 
@@ -291,14 +291,14 @@
     if (children)
     {
         /*Go thru children and find username token parameters*/
-        while (AXIS2_TRUE == AXIOM_CHILD_ELEMENT_ITERATOR_HAS_NEXT(children, env))
+        while (AXIS2_TRUE == 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);
+            node = axiom_child_element_iterator_next(children, env);
+            element = axiom_node_get_data_element(node, env);
             localname =  axiom_element_get_localname(element, env);
 
             if (0 == axis2_strcmp(localname, RAMPART_SECURITY_USERNAMETOKEN_USERNAME))