--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/webservices/wscredentialmanager/inc/sencredentialmanager.h Thu Jan 07 16:19:19 2010 +0200
@@ -0,0 +1,268 @@
+/*
+* 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_CREDENTIAL_MANAGER_H
+#define SEN_CREDENTIAL_MANAGER_H
+
+// INCLUDES
+#include "msencredentialmanager.h"
+
+#include <e32std.h>
+#include <flogger.h> // RFileLogger
+
+#include <SenFragmentBase.h>
+#include <MSenServiceDescription.h>
+
+// FORWARD DECLARATIONS
+class MSenCoreServiceManager;
+class CSenCredentialIdentifier;
+class CSenCredentialProperties;
+class CSenParser;
+
+// CLASS DECLARATION
+class CSenCredentialManager : public CSenFragmentBase , public MSenCredentialManager
+ {
+ public: // Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ */
+ IMPORT_C static CSenCredentialManager* NewL(MSenCoreServiceManager& aManager);
+
+ IMPORT_C static CSenCredentialManager* NewLC(MSenCoreServiceManager& aManager);
+
+ IMPORT_C virtual ~CSenCredentialManager();
+
+ /**
+ * Load and parse SenCredentialManager from the file.
+ * Statuscodes:
+ * KErrNone Ok
+ * Other codes are system error codes.
+ * @return status code.
+ */
+ TInt LoadDB();
+
+ /**
+ * Save SenCredentialManager as an XML document into
+ * the file.
+ * Statuscodes:
+ * KErrNone Ok
+ * Other codes are system error codes.
+ * @return status code.
+ */
+ TInt SaveCredentialDB();
+
+ // From CSenBaseFragment
+ virtual void OnStartElementL(const RTagInfo& aElement,
+ const RAttributeArray& aAttributes,
+ TInt aErrorCode);
+
+ virtual void OnEndElementL(const RTagInfo& aElement,
+ TInt aErrorCode);
+
+ // from MSenCredentialManager
+ virtual TInt CredentialsL(const CSenWSDescription& aPattern,
+ RSenCredentialArray& aCredentials);
+
+ virtual TInt CredentialsL(const CSenWSDescription& aPattern,
+ const CSenIdentityProvider& aIdP,
+ RSenCredentialArray& aCredentials);
+
+ virtual TInt CredentialsL(const CSenWSDescription& aPattern,
+ RSenCredentialPtrArray& aCredentials);
+
+ virtual TInt CredentialsL(const CSenWSDescription& aPattern,
+ const CSenIdentityProvider& aIdP,
+ RSenCredentialPtrArray& aCredentials);
+
+ virtual RSenCredentialPtr AddCredentialL(CSenInternalCredential* apCredential,
+ TInt& aErrorTo);
+
+ virtual RSenCredentialPtr AddCredentialL(CSenIdentityProvider* apIdP,
+ CSenInternalCredential* apCredential,
+ TInt& aErrorTo);
+
+ virtual RSenCredentialPtr AddCredentialL(const TDesC8& aCredential,
+ TInt& aErrorTo);
+
+ virtual RSenCredentialPtr AddCredentialL(CSenIdentityProvider* apIdP,
+ const TDesC8& aCredential,
+ TInt& aErrorTo);
+
+ virtual TInt RemoveCredentialsL(const CSenWSDescription& aPattern);
+
+ virtual TInt RemoveCredentialsL(const CSenWSDescription& aPattern,
+ const CSenIdentityProvider& aIdP);
+
+ virtual TInt RemoveCredentialsL(const TDesC8& aProviderId);
+
+ virtual TInt RemoveCredentialL(TInt aInternalCredentialId); //codescannerwarnings
+
+ virtual RSenCredentialPtr CredentialL(TInt aInternalCredentialId,
+ TInt& aErrorTo);
+
+ virtual RSenCredentialPtr UpdateCredentialL(TInt aInternalCredentialId,
+ CSenInternalCredential* apCredential,
+ TInt& aErrorTo);
+
+ virtual RSenCredentialPtr UpdateCredentialL(TInt aInternalCredentialId,
+ const TDesC8& aCredential,
+ TInt& aErrorTo);
+ /** Improved heuristics from credential DB removal / cleanups
+ *
+ * It finds the matching CredentialContainer child elements of Credentials
+ * element using the service description and add the touch attribute to all
+ * matched credential container 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 virtual void UpdateTouchCredDBL(MSenServiceDescription& asd);
+
+ protected:
+ RFileLogger* Log();
+
+ private:
+
+ /**
+ * C++ default constructor.
+ */
+ CSenCredentialManager(MSenCoreServiceManager& aManager);
+
+ /**
+ * By default Symbian 2nd phase constructor is private.
+ */
+ void ConstructL();
+
+ // New functions
+
+ /**
+ * Initialize this SenCredentialManager 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(const TDesC& aFile);
+
+ /**
+ * Save the current state of the SenCredentialManager as an XML
+ * document into a file.
+ * Status codes:
+ * KErrNone Ok
+ * Other codes are system error codes.
+ * @return status code.
+ */
+ TInt SaveToL( const TDesC& aFile );
+
+ virtual TInt NextCredentialIdL(); //codescannerwarnings
+
+ virtual void UpdateMaxCredentialIdL(); //codescannerwarnings
+ TBool IsApplicableOrShareableL(const CSenWSDescription& aPattern,CSenInternalCredential* aCredential);
+ TInt RefreshMTL(const CSenWSDescription& aPattern);
+ /** Improved heuristics from credential DB removal / cleanups
+ *
+ * Checks touch attribute value for all CredentialContainer child elements of
+ * Credentials element if that exceeds the the tick counts for two weeks
+ * (Max tick count) or if it is greater than current tick count it removes the
+ * corresponding CredentialContainer child element from the Credentials
+ * 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 CleanupUnusedCredDBL()
+ * <Credentials CredentialsMaxID="3">
+ * <CredentialContainer>
+ * <Identifier>
+ * <CredentialId>1</CredentialId>
+ * ..........
+ * ..........
+ * </CredentialContainer>
+ * <CredentialContainer touch="1000">
+ * <Identifier>
+ * <CredentialId>2</CredentialId>
+ * ..........
+ * .........
+ * </CredentialContainer touch="1309600000">
+ * <CredentialContainer>
+ * <Identifier>
+ * <CredentialId>3</CredentialId>
+ * ...........
+ * ...........
+ * </CredentialContainer>
+ * </Credentials>
+ *
+ * After call to CleanupUnusedCredDBL()
+ * <Credentials CredentialsMaxID="3">
+ * <CredentialContainer>
+ * <Identifier>
+ * <CredentialId>1</CredentialId>
+ * .........
+ *..........
+ * </CredentialContainer>
+ * <CredentialContainer touch="1000">
+ * <Identifier>
+ * <CredentialId>2</CredentialId>
+ * ..........
+ * ..........
+ * </CredentialContainer>
+ * </Credentials>
+ *
+ * Leave codes: Symbian system-wide error codes.
+ */
+ void CleanupUnusedCredDBL();
+ TBool IsAuto(CSenIdentityProvider& aIdp);
+#ifdef __CRYPTO_HW__
+ void EncryptPasswordL(const TDesC8& aData, TDes8& aCipherText);
+
+ void DecryptPasswordL(const TDesC8& aData, TDes8& aCipherText);
+
+#endif // __CRYPTO_HW__
+
+ private: // Data
+ MSenCoreServiceManager& iManager;
+ RFileLogger* iLog; // not owned (no create/close)
+ CSenParser* ipParser; // owned
+ RSenCredentialPtrArray iCredentialArray; // owned
+
+ CSenFragmentBase* ipCredentialContainer; // owned
+ CSenCredentialIdentifier* ipCredentialIdentifier; // owned
+ CSenCredentialProperties* ipCredentialProperties; // owned
+ CSenInternalCredential* ipCredential; // owned
+
+ TInt iMaxCredentialID;
+ };
+
+#endif // SEN_BASE_CREDENTIAL_MANAGER_H
+
+// End of File