webservices/wsstar/wsstarplugin/inc/wsstarpolicy.h
changeset 0 62f9d29f7211
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/webservices/wsstar/wsstarplugin/inc/wsstarpolicy.h	Thu Jan 07 16:19:19 2010 +0200
@@ -0,0 +1,268 @@
+/*
+* Copyright (c) 2006-2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:    Header declaration
+*
+*/
+
+
+
+
+
+
+
+
+
+ 
+
+#ifndef WS_STAR_POLICY_H
+#define WS_STAR_POLICY_H
+
+// INCLUDES
+#include <e32std.h>
+#include "MSenServiceDescription.h"
+#include "wsstarservicesession.h"
+#include "MSenServicePolicy.h"
+// CONSTANTS
+namespace WSPolicy
+    {
+    // Common
+    
+    // Enveloper layer
+    _LIT8( KSoap12, "SOAP12");
+    
+    // Addressing layer
+    _LIT8( KAddressing, "Addressing");
+
+    // Trust layer
+    _LIT8( KClientEntropy , "ClientEntropy");
+    _LIT8( KTokenType,          "TokenType");
+    _LIT8( KPassportExtensions , "PassportExtensions");
+    // Way of authentication with STS
+    _LIT8( KUsernameTokenOverTLS , "UsernameTokenOverTLS");
+    _LIT8( KSAMLTokenTypeValue, "http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV1.1");
+    
+    // Serializer layer
+    _LIT8( KMTOM , "MTOM");
+    _LIT8( KCluster, "Cluster");
+    
+    _LIT8(KIssuedToken, "IssuedToken");
+    _LIT8( KRPSCluster, "RPSCluster");
+    _LIT8(KRequestSecurityTokenTemplate, "RequestSecurityTokenTemplate");
+    _LIT8(KAddress, "Address");
+    
+    _LIT8(KSignedParts, "SignedParts");
+    _LIT8(KName, "Name");
+    _LIT8(KDictionaries, "Dictionaries");
+    _LIT8(KDictionary, "Dictionary");
+    _LIT8(KMobileService, "MobileService");
+    _LIT8(KMwsType, "mws:Type");
+    _LIT8(KMwsId, "mws:Id");
+    _LIT8( KAppInfo,"AppInfo" );
+    _LIT8( KClientPolicy,"ClientPolicy" );
+    }
+
+
+/**
+ * Class:       
+ */
+class CWSStarPolicy : public CBase
+    {
+    public:
+        /*
+        static CWSStarPolicy* NewL();
+        static CWSStarPolicy* NewLC();
+        ~CWSStarPolicy();
+        void SetPolicy(CSenElement* aPolicy);
+        */
+
+        /**
+        *   static TBool CheckL(const TDesC8& aKey, MSenServiceDescription* aSD);
+        *   
+        *   This method can be used to find the Client policy elements.
+        *   it simply try to find an element in the policy and if the element is found
+        *   then return the ETrue else EFalse.
+        *   @param: aKey is the name of property/element 
+        *   @param: aSD, The ServiceDescription from which this element should be checked
+
+        *   @return TBool
+        */
+        static TBool CheckPolicyValueL(const TDesC8& aKey, MSenServiceDescription* aSD);
+
+            
+        /**
+        *   static HBufC8* GetValueL(const TDesC8& aKey, MSenServiceDescription* aSD);
+        *   
+        *   This method can be used to find the Client policy elements and their properties.
+        *   It simply try to find an element in the policy and if the element is found
+        *   then return the Element's contents.
+        *   
+        *   @param: aKey is the name of property/element 
+        *   @param: aSD, The ServiceDescription from which this element should be checked
+        *   
+        *   @return HBufC*: Ownership is transferred
+        */
+
+
+        static HBufC8* GetPolicyValueL(const TDesC8& aKey, MSenServiceDescription* aSD);
+        /**
+        *   static HBufC8* GetValueL(const TDesC8& aKey, const TDesC8& aSubKey, MSenHandlerContext& aCtx);
+        *   
+        *   This method can be used to find the "Service Policy" assertions and their properties.
+        *   It simply try to find an element in the Policy and if the element is found
+        *   then return the Element's contents. If element has no contents then return the whole Element
+        *   excluding the element name 
+        *   
+        *   @param: aKey is the name of property/element 
+        *   @param: aSubKey is the name of property/element present in "aKey" Element
+        *   @param: aCtx, The Context of PolicyHanlder which owns the Policy
+        *   
+        *   @return HBufC*: Ownership is transferred
+        */    
+        static HBufC8* GetPolicyValueL(const TDesC8& aKey, const TDesC8& aSubKey, MSenHandlerContext& aCtx, MSenServiceDescription* aSD);
+        static HBufC8* GetPolicyValueL(const TDesC8& aTokenType, const TDesC8& aKey, const TDesC8& aSubKey, MSenHandlerContext& aCtx, MSenServiceDescription* aSD, RPointerArray<CSenElement>& aElements);
+        static HBufC8* GetPolicyValueL(const TDesC8& aTokenType, const TDesC8& aKey, const TDesC8& aSubKey, MSenHandlerContext& aCtx, MSenServiceDescription* aSD);
+        static HBufC8* GetPolicyValueL(const TDesC8& aKey, const TDesC8& aSubKey, MSenHandlerContext& aCtx, MSenServiceDescription* aSD, RPointerArray<CSenElement>& aElements);
+        static HBufC8* GetPolicyValueL(const TDesC8& aKey, const TDesC8& aSubKey, CWSStarPlugin& aWSStarPlugin, MSenServiceDescription* aSD);
+        /**
+        *   static void GetValueL(const TDesC8& aKey, const TDesC8& aSubKey, MSenHandlerContext& aCtx, RArray<TPtrC8>& aList);
+        *   
+        *   This method can be used to find the "Service Policy" assertions and their properties.
+        *   It simply try to find an element in the Policy and if the element is found
+        *   then return the Element's contents in form of list
+        *   
+        *   @param: aKey is the name of property/element 
+        *   @param: aSubKey is the name of property/element present in "aKey" Element
+        *   @param: aCtx, The Context of PolicyHanlder which owns the Policy
+        *   @param: aList, The list of properties for which the Elements will be searched
+        *   one example of this method is to get the list of SignedElements/EncryptedElements  
+        */    
+
+
+        static void GetPolicyValueL(const TDesC8& aKey, const TDesC8& aSubKey, MSenHandlerContext& aCtx, MSenServiceDescription* aSD, RPointerArray<HBufC8>& aList);
+        
+        
+        /**
+        *   static void GetValueL(const TDesC8& aKey, const TDesC8& aSubKey, MSenHandlerContext& aCtx, RArray<TPtrC8>& aList);
+        *   
+        *   This method can be used to find the "Service Policy" assertions and their properties.
+        *   It simply try to find an element in the Policy and if the element is found
+        *   then return the Element's contents in form of list
+        *   
+        *   @param: aKey is the name of property/element 
+        *   @param: aSubKey is the name of property/element present in "aKey" Element
+        *   @param: aPolicyHandler, PolicyHanlder which owns the Policy
+        *   @param: aList, The list of properties for which the Elements will be searched
+        *
+        *   one example of this method is to get the list of SignedElements/EncryptedElements  
+        *   Attetntion: in case (signed/encrypted elements) array is list of pairs [localname, namespace]
+        */    
+        
+        static void GetPolicyValueL(const TDesC8& aKey, const TDesC8& aSubKey, CWSStarPolicyHandler* aPolicyHandler, MSenServiceDescription* aSD, RPointerArray<HBufC8>& aList);
+        
+        
+        /**
+        *   static TPtrC8 GetAttributeValueL(const TDesC8& aAttribute, CSenElement* aElement);
+        *   
+        *   This method can be used to find the attribute value of an Attibute from any Elements
+        *   It simply try to find the attribute in an element and then return the value of the Attirbute
+        *   
+        *   @param: aAttribute is the name of property
+        *   @param: aElement is the element where the attribute will eb searched
+        *   
+        *   @return TPtrC8: return pointer to the Value of attribute
+        *                    KNullDesC8() if no value is found   
+        */    
+
+
+        static TPtrC8 GetAttributeValueL(const TDesC8& aAttribute, CSenElement* aElement);
+        /**
+        *   static TPtrC8 GetNSPrefixL(const TDesC8& aNamespaceUri, CSenElement* aElement);
+        *   
+        *   This method can be used to find the namespace prefix for a namespace URi from the element
+        *   
+        *   @param: aNamespaceUri is the nameSpace URI
+        *   @param: aElement is the element where the NsURI will be searched
+        *   
+        *   @return TPtrC8: return pointer to the Prefix of namespace URI
+        *                    KNullDesC8() if no value is found   
+        */    
+
+        static TPtrC8 GetNSPrefixL(const TDesC8& aNamespaceUri, CSenElement* aElement);
+        static CSenElement* SearchForElementL(CSenElement* aPolicy, TPtrC8 aKey);	//codescannerwarnings
+        static TInt SearchForElementsL(CSenElement* aPolicy, TPtrC8 aKey, RPointerArray<CSenElement>& aElements);
+        static CSenElement* GetElementL(const TDesC8& aKey, const TDesC8& aSubKey, MSenHandlerContext& aCtx, MSenServiceDescription* aSD);
+        static void GetPolicyValueL(const TDesC8& aKey, const TDesC8& aSubKey,MSenServiceDescription* aSD,RPointerArray<CSenElement>& aElements);
+
+        
+    protected:
+        static TInt ChildCountL(CSenElement* aTerm);	//codescannerwarnings
+        
+        
+        static CSenElement* GetPolicyL(MSenHandlerContext& aCtx, MSenServiceDescription* aSD);	//codescannerwarnings
+
+    private:
+        /**
+        * Hide default C++ constructor.
+        */
+        CWSStarPolicy() { }
+
+        /**
+        * Prohibit copy constructor if not deriving from CBase.
+        */
+        CWSStarPolicy( const CWSStarPolicy& );
+
+        /**
+        * Prohibit assignment operator if not deriving from CBase.
+        */
+        CWSStarPolicy& operator=( const CWSStarPolicy& );
+        
+        static void GetValueL(const TDesC8& aKey, const TDesC8& aSubKey, CSenElement* aPolicy, RPointerArray<HBufC8>& aList);
+
+    };
+    
+    
+struct SoapHeader
+    {
+	TPtrC8 iName;
+	TPtrC8 iNsUri;
+	TPtrC8 iNsPrefix;
+    };
+
+class CEncryptedSignedPartsI : public CBase
+    {
+    public:
+        static CEncryptedSignedPartsI* NewL(CSenElement* aAssertion);
+        static CEncryptedSignedPartsI* NewLC(CSenElement*  aAssertion);
+        virtual ~CEncryptedSignedPartsI();
+
+        TBool IsEqualEncryptedSignedParts(CEncryptedSignedPartsI* aAssertion);
+        
+        void  ElementsL(RPointerArray<HBufC8>& aElements);	//codescannerwarnings
+        TBool Header();
+        TBool Body();
+    private:
+        void ConstructL(CSenElement*  aAssertion);
+        CEncryptedSignedPartsI(); 
+
+    private: // Data
+        TBool iHeader;
+        TBool iBody;
+        RArray<SoapHeader> iHeaders;  
+        
+    };
+#endif // WS_STAR_POLICY_H
+
+// END OF FILE
+
+