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