Author: kaushalye Date: Sun Apr 22 22:32:35 2007 New Revision: 531338 URL: http://svn.apache.org/viewvc?view=rev&rev=531338 Log: Fixing header signing problem in Rampart. Changing scenario9 to depict more detailed signing approaches.
Modified: webservices/rampart/trunk/c/include/rampart_constants.h 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/src/secpolicy/model/algorithmsuite.c webservices/rampart/trunk/c/src/util/rampart_context.c webservices/rampart/trunk/c/src/util/rampart_sec_header_processor.c webservices/rampart/trunk/c/src/util/rampart_signature.c Modified: webservices/rampart/trunk/c/include/rampart_constants.h URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/c/include/rampart_constants.h?view=diff&rev=531338&r1=531337&r2=531338 ============================================================================== --- webservices/rampart/trunk/c/include/rampart_constants.h (original) +++ webservices/rampart/trunk/c/include/rampart_constants.h Sun Apr 22 22:32:35 2007 @@ -84,6 +84,7 @@ #define RAMPART_FAULT_IN_USERNAMETOKEN "wsse:UsernameToken" #define RAMPART_FAULT_IN_ENCRYPTED_KEY "xenc:EncryptedKey" #define RAMPART_FAULT_IN_ENCRYPTED_DATA "xenc:EncryptedData" +#define RAMPART_FAULT_IN_SIGNATURE "ds:Signature" /*Dynamically set values*/ #define RAMPART_ACTION_PASSWORD "password" Modified: 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=diff&rev=531338&r1=531337&r2=531338 ============================================================================== --- webservices/rampart/trunk/c/samples/secpolicy/scenario9/client-outgoing-secpolicy.xml (original) +++ webservices/rampart/trunk/c/samples/secpolicy/scenario9/client-outgoing-secpolicy.xml Sun Apr 22 22:32:35 2007 @@ -23,7 +23,7 @@ </sp:RecipientToken> <sp:AlgorithmSuite> <wsp:Policy> - <sp:Basic256Rsa15/> + <sp:Basic256Rsa15/> </wsp:Policy> </sp:AlgorithmSuite> <sp:Layout> @@ -35,10 +35,11 @@ </sp:AsymmetricBinding> <sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"> <sp:Body/> + <sp:Header Namespace="http://www.w3.org/2005/08/addressing"/> </sp:SignedParts> - <rampc:SignedItems xmlns:rampc="http://ws.apache.org/rampart/c/policy"> + <!--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: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> Modified: 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=diff&rev=531338&r1=531337&r2=531338 ============================================================================== --- webservices/rampart/trunk/c/samples/secpolicy/scenario9/service-incoming-secpolicy.xml (original) +++ webservices/rampart/trunk/c/samples/secpolicy/scenario9/service-incoming-secpolicy.xml Sun Apr 22 22:32:35 2007 @@ -35,6 +35,7 @@ </sp:AsymmetricBinding> <sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"> <sp:Body/> + <sp:Header Namespace="http://www.w3.org/2005/08/addressing"/> </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"/> Modified: webservices/rampart/trunk/c/src/secpolicy/model/algorithmsuite.c URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/c/src/secpolicy/model/algorithmsuite.c?view=diff&rev=531338&r1=531337&r2=531338 ============================================================================== --- webservices/rampart/trunk/c/src/secpolicy/model/algorithmsuite.c (original) +++ webservices/rampart/trunk/c/src/secpolicy/model/algorithmsuite.c Sun Apr 22 22:32:35 2007 @@ -107,6 +107,26 @@ return algorithmsuite->algosuite_string; } +/* Set different algorithm for enryption and signing etc. depending on the algorithm suite. + * The suites are defined in section 7.1 of WS-Security Policy specification + * Algorithm Suite [Dig] [Enc] [Sym KW] [Asym KW] [Enc KD] [Sig KD] [Min SKL] + * Basic256 Sha1 Aes256 KwAes256 KwRsaOaep PSha1L256 PSha1L192 256 + * Basic192 Sha1 Aes192 KwAes192 KwRsaOaep PSha1L192 PSha1L192 192 + * Basic128 Sha1 Aes128 KwAes128 KwRsaOaep PSha1L128 PSha1L128 128 + * TripleDes Sha1 TripleDes KwTripleDes KwRsaOaep PSha1L192 PSha1L192 192 + * Basic256Rsa15 Sha1 Aes256 KwAes256 KwRsa15 PSha1L256 PSha1L192 256 + * Basic192Rsa15 Sha1 Aes192 KwAes192 KwRsa15 PSha1L192 PSha1L192 192 + * Basic128Rsa15 Sha1 Aes128 KwAes128 KwRsa15 PSha1L128 PSha1L128 128 + * TripleDesRsa15 Sha1 TripleDes KwTripleDes KwRsa15 PSha1L192 PSha1L192 192 + * Basic256Sha256 Sha256 Aes256 KwAes256 KwRsaOaep PSha1L256 PSha1L192 256 + * Basic192Sha256 Sha256 Aes192 KwAes192 KwRsaOaep PSha1L192 PSha1L192 192 + * Basic128Sha256 Sha256 Aes128 KwAes128 KwRsaOaep PSha1L128 PSha1L128 128 + * TripleDesSha256 Sha256 TripleDes KwTripleDes KwRsaOaep PSha1L192 PSha1L192 192 + * Basic256Sha256Rsa15 Sha256 Aes256 KwAes256 KwRsa15 PSha1L256 PSha1L192 256 + * Basic192Sha256Rsa15 Sha256 Aes192 KwAes192 KwRsa15 PSha1L192 PSha1L192 192 + * Basic128Sha256Rsa15 Sha256 Aes128 KwAes128 KwRsa15 PSha1L128 PSha1L128 128 + * TripleDesSha256Rsa15 Sha256 TripleDes KwTripleDes KwRsa15 PSha1L192 PSha1L192 192 + **/ AXIS2_EXTERN axis2_status_t AXIS2_CALL rp_algorithmsuite_set_algosuite(rp_algorithmsuite_t *algorithmsuite, @@ -118,7 +138,7 @@ algorithmsuite->algosuite_string = algosuite_string; - if(axutil_strcmp(algosuite_string,RP_ALGO_SUITE_BASIC256)==0) + if(axutil_strcmp(algosuite_string, RP_ALGO_SUITE_BASIC256)==0) { algorithmsuite->digest = RP_SHA1; algorithmsuite->encryption = RP_AES256; 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=531338&r1=531337&r2=531338 ============================================================================== --- webservices/rampart/trunk/c/src/util/rampart_context.c (original) +++ webservices/rampart/trunk/c/src/util/rampart_context.c Sun Apr 22 22:32:35 2007 @@ -887,11 +887,11 @@ if(node) { axutil_array_list_add(nodes_to_encrypt_or_sign,env,node); - return AXIS2_SUCCESS; } } - } + }/*eof for*/ + return AXIS2_SUCCESS; } else if(axutil_strcmp(local_name,"Security")==0) { @@ -1511,8 +1511,9 @@ if(header) { status = rampart_context_set_nodes_to_encrypt_or_sign(header,env,soap_envelope,nodes_to_sign_or_encrypt); - if(status!=AXIS2_FAILURE) + if(status == AXIS2_FAILURE){ return AXIS2_FAILURE; + } } } 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=531338&r1=531337&r2=531338 ============================================================================== --- webservices/rampart/trunk/c/src/util/rampart_sec_header_processor.c (original) +++ webservices/rampart/trunk/c/src/util/rampart_sec_header_processor.c Sun Apr 22 22:32:35 2007 @@ -770,9 +770,13 @@ return AXIS2_FAILURE; } AXIS2_LOG_INFO(env->log, "[rampart][shp] Processing Signature element."); + status = rampart_shp_process_signature(env,msg_ctx,rampart_context,soap_envelope,sec_node,cur_node); - if(status!=AXIS2_SUCCESS) + + if(status!=AXIS2_SUCCESS){ + rampart_create_fault_envelope(env, RAMPART_FAULT_INVALID_SECURITY, "Signature is not valid", RAMPART_FAULT_IN_SIGNATURE, msg_ctx); return status; + } } else { @@ -868,8 +872,10 @@ } AXIS2_LOG_INFO(env->log, "[rampart][shp] Processing Signature element."); status = rampart_shp_process_signature(env,msg_ctx,rampart_context,soap_envelope,sec_node,cur_node); - if(status!=AXIS2_SUCCESS) + if(status!=AXIS2_SUCCESS){ + rampart_create_fault_envelope(env, RAMPART_FAULT_INVALID_SECURITY, "Signature is not valid", RAMPART_FAULT_IN_SIGNATURE, msg_ctx); return status; + } } else { 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=531338&r1=531337&r2=531338 ============================================================================== --- webservices/rampart/trunk/c/src/util/rampart_signature.c (original) +++ webservices/rampart/trunk/c/src/util/rampart_signature.c Sun Apr 22 22:32:35 2007 @@ -105,12 +105,11 @@ status2 = rampart_context_get_elements_to_sign(rampart_context,env,soap_envelope,nodes_to_sign); - if(status1 == AXIS2_SUCCESS || status2 == AXIS2_SUCCESS) + if(status1 == AXIS2_SUCCESS || status2 == AXIS2_SUCCESS){ return AXIS2_SUCCESS; - - else + }else{ return AXIS2_FAILURE; - + } }