diff -r 000000000000 -r 62f9d29f7211 webservices/wsidentitymanager/inc/senbaseidentitymanager.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/webservices/wsidentitymanager/inc/senbaseidentitymanager.h Thu Jan 07 16:19:19 2010 +0200 @@ -0,0 +1,387 @@ +/* +* Copyright (c) 2002-2005 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 SEN_BASE_IDENTITY_MANAGER_H +#define SEN_BASE_IDENTITY_MANAGER_H + +// INCLUDES +#include +#include +#include // RFileLogger +#include // CDesC8Array + +#include +#include + +#include "senbaseidentity.h" +#include "msenidentitymanager.h" + + + + +// CONSTANTS +#ifndef RD_SEN_COMPILE_SIS_PACKAGE_FILES +const TUid KUidSechMech = {0x101F96FC}; +#else +const TUid KUidSechMech = {0x101F9733}; +#endif +// FORWARD DECLARATIONS +class CSenSenSecurityMechanismObserver; +class MSenCoreServiceManager; + +// CLASS DECLARATION +class CSenBaseIdentityManager : public CSenBaseFragment, + public MSenIdentityManager + { + public: // Constructors and destructor + + /** + * Two-phased constructor. + */ + IMPORT_C static CSenBaseIdentityManager* NewL( + MSenCoreServiceManager& aManager); + IMPORT_C static CSenBaseIdentityManager* NewLC( + MSenCoreServiceManager& aManager); + + IMPORT_C virtual ~CSenBaseIdentityManager(); + + // New functions + + void ReloadSenSecurityMechanismsL(); + + // Functions from base classes + + // from MSenIdentityManager + TPtrC8 SenSecurityMechanismNames8L(); + CSenSecurityMechanism* MechanismNamedL(const TDesC8& aName); + + /** + * Initialize this SenBaseIdentityManager by parsing + * the given file with the given XMLReader. + * The file is expected to contain valid XML that + * follows the example given above. + * @param file + * @param reader + */ + void LoadFromL(TDesC& aFile, CSenXmlReader& aReader); + + + /** + * Save the current state of the SenBaseIdentityManager as an XML + * document into a file. + * Statuscodes: + * KErrNone Ok + * Other codes are system error codes. + * @return status code. + */ + IMPORT_C TInt WriteDatabase(); + + /** + * Creates the element. Overrides CSenBaseFragment + * StartElementL-function + * @param aNsUri name space URI + * @param aLocalName local name + * @param aQName cue name + * @param apAttrs XML attributes + */ + virtual void StartElementL( const TDesC8& aNsUri, + const TDesC8& aLocalName, + const TDesC8& aQName, + const RAttributeArray& aAttributes); + + /** + * Implements MSenIdentityManager + * @return the currently active default identity. + */ + virtual MSenIdentity& IdentityL(); + + /** + * Implements MSenIdentityManager + * @param On the return, contains the (System) userName of the + * currently active user. + * @return KErrNone if no error, or some of the system wide error codes + */ + virtual TInt UserNameL(HBufC8*& aUserName); + + /** + * Implements MSenIdentityManager + * @return the default IdentityProvider of the currently active + * Identity. + */ + virtual CSenIdentityProvider* IdentityProviderL(); + + /** + * Implements MSenIdentityManager + * @param aServiceDescription + * @return the IdentityProvider of the currently active Identity. + */ + virtual CSenIdentityProvider* IdentityProviderL( + MSenServiceDescription& aServiceDescription ); + + /** + * Implements MSenIdentityManager + * @param aURI + * @return the IdentityProvider of the currently active Identity. + */ + virtual CSenIdentityProvider* IdentityProviderL(const TDesC8& aURI ); + + /** + * Implements MSenIdentityManager + * @param aIdpList an array of ProviderIDs + * @param aStrict if set to true only an IdentityProvider from the List + * will be returned, and null if none of the list entries is known to + * the current active Identity. + * @return the currently preferred IdentityProvider. + */ + virtual CSenIdentityProvider* IdentityProviderL( + const CDesC8Array& aIdpList, TBool aStrict); + + /** + * Implements MSenIdentityManager + * @param aServiceDescription + * @param aIdpList an array of ProviderIDs + * @param aStrict if set to true only an IdentityProvider from the List + * will be returned, and null if none of the list entries is known to + * the current active Identity. + * @return the currently preferred IdentityProvider. + */ + virtual CSenIdentityProvider* IdentityProviderL( + MSenServiceDescription& aServiceDescription, + const CDesC8Array& aIdpList, + TBool aStrict); + + /** + * Checks if there already is an identity provider with given data. + * Existing identity provider can still have more data than the pattern. + * @param aContains will contain the boolean value on return. ETrue if + * contains, EFalse otherwise. + * @param aIDP the pattern identity provider. + * @return KErrNone or system-wide error code. + */ + virtual TInt ContainsIdentityProviderL( + TBool& aContains, + CSenIdentityProvider& aIDP); + + /** + * Implements MSenIdentityManager + * Ownerships is transferred + * @param aIdp a registered IdentityProvider + * @return KErrNone if successful. + */ + virtual TInt RegisterIdentityProviderL(CSenIdentityProvider* apIdp ); + + /** + * Implements MSenIdentityManager + * @param aIdp an unregistered IdentityProvider + * @return KErrNone if successful. + * KErrNotFound if IdentityProvider was not found. + * Other return values are symbian system-wide error codes. + */ + virtual TInt UnregisterIdentityProviderL(CSenIdentityProvider& aIdp ); + + /** + * Implements MSenIdentityManager + * @param aServiceID the contract or endpoint of a service + * @param aProviderID the id of an IdentityProvider + * @return true if successful. Failure may be caused by non-existence + * of the IdentityProvider for the current user. + */ + virtual TBool AssociateServiceL(const TDesC8& aServiceID, + const TDesC8& aProviderID ); + + /** + * Implements MSenIdentityManager + * @param aServiceID the contract or endpoint of a service + * @param aProviderID the id of an IdentityProvider + * @return true if successful. Failure may be caused by non-existence + * of the IdentityProvider for the current user. + */ + virtual TBool DissociateServiceL(const TDesC8& aServiceID, + const TDesC8& aProviderID ); + + /** + * Implements MSenIdentityManager + * Status codes: + * KErrNone ok + * KErrNotFound no identities + * Other codes are system error codes + * @param aIdentitiesList an array where the identities can be inserted + * @return status/error code. + */ + virtual TInt IdentitiesL( CDesC8Array& aIdentitiesList ); + + /** + * NOTE! This code does not do as documentation states. + * Only second line text is shown and + * "Ok" button on the left side. + * @return the value of button pressed (OK or CANCEL) + */ + virtual TInt YesNoQueryL(const TDesC& aLine1, + const TDesC& aLine2, + const TDesC& aButton1, + const TDesC& aButton2); + + virtual TInt AuthenticationForL(CSenIdentityProvider& aAccount, TPckgBuf& aResponse); + + /** + * For encoding and decoding base 64: + */ + virtual HBufC8* EncodeToBase64LC(const TDesC8& aSource); + virtual HBufC8* DecodeFromBase64LC(const TDesC8& aSource); + + virtual TInt FindMatchingIdentityProviderL(CSenIdentityProvider &aIdp, + CSenIdentityProvider*& apMatch); + + virtual TInt UpdateIdentityProviderL(CSenIdentityProvider& aIdp); + + /** + * "Enables/disables" -flag which determines if UI interaction with end-user is allowed or not + */ + virtual void SetShowPasswordDialog(const TBool aState); + + RFileLogger* Log(); + /** Improved heuristics from Identity DB removal / cleanups + * + * It finds the matching IdentityProvider child elements of current Identity + * element using the service description and add the touch attribute to all + * matched IdentityProvider elements with current tick count value. + * If touch attribute already there it will be replaced with new current + * tick count value. + * + * @param asd is the new established session service description. + * Leave codes: Symbian system-wide error codes. + */ + IMPORT_C void UpdateTouchIdentityDBL(MSenServiceDescription& asd); + + + /** + * Implements MSenIdentityManager + * @return the default IdentityProvider of the currently active + * Identity. + */ + const virtual RPointerArray& IdentityProvidersL(); + + protected: + + /** + * C++ default constructor. + */ + CSenBaseIdentityManager(MSenCoreServiceManager& aManager); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL(); + + // New functions + + /** + * Save the current state of the SenBaseIdentityManager as an XML + * document into a file. + * Status codes: + * KErrNone Ok + * Other codes are system error codes. + * @return status code. + */ + virtual TInt WriteConfigurationToL( const TDesC& aFile ); + TBool AllowSavePasswordL(); + /** Improved heuristics from Identity DB removal / cleanups : Naga + * + * Checks touch attribute value for all IdentityProvider child elements of + * current Identity element if that exceeds the the tick counts for two weeks + * (Max tick count) or if it is greater than current tick count value it removes + * the corresponding IdentityProvider child element from the Identity element + * child list. + * + * 1 millisec = 1 tick + * 86400 sec = 1 day + * 86400*1000 millisec = 1 day + * 86400*14*1000 = 1209600000 millisec = 2 weeks + * So if attr val >= 1209600000 or > current tick count. + * Note: always attr val should be <= current tick count. + * + * eg; + * Before call to CleanupUnusedIdentityDBL() + * + * + * + * + * http://10.21.32.20/WSStar/CredMan/STS.aspx + * ......... + * .......... + * + * + * http://10.21.32.20/WSStar/CredMan/STS_001.aspx + * .......... + * .......... + * + * + * http://10.21.32.20/WSStar/CredMan/Webservises.aspx + * .......... + * ............ + * + * + * + * + * + * After call to CleanupUnusedIdentityDBL() + * + * + * + * + * http://10.21.32.20/WSStar/CredMan/STS.aspx + * ......... + * .......... + * + * + * http://10.21.32.20/WSStar/CredMan/STS_001.aspx + * .......... + * .......... + * + * + * + * + * + * Leave codes: Symbian system-wide error codes. + */ + void CleanupUnusedIdentityDBL(); + + protected: // Data + CSenBaseIdentity* iIdentity; + CSenIdentityProvider* iProvider; + MSenCoreServiceManager& iManager; + TBool iConfigReadonly; + RFileLogger* iLog; // not owned (no create/close) + CSenSenSecurityMechanismObserver* iObserver; + CBufFlat* ipMechanicsNames; + HBufC8* ipDeviceID; // Owned + RImplInfoPtrArray iEcomInfoArray; + RPointerArray iSechMechNames; + RPointerArray iSechMechCues; + TBool iShowPasswordDialog; + }; + +#endif // SEN_BASE_IDENTITY_MANAGER_H + +// End of File