--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/webservices/wsidentitymanager/inc/msenidentitymanager.h Thu Jan 07 16:19:19 2010 +0200
@@ -0,0 +1,214 @@
+/*
+* 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 M_SEN_IDENTITY_MANAGER_H
+#define M_SEN_IDENTITY_MANAGER_H
+
+// INCLUDES
+#include <e32base.h>
+#include <e32des8.h> // HBufC8
+#include <badesca.h> // CDesC8Array
+
+#include <SenIdentityProvider.h>
+#include <MSenServiceDescription.h>
+
+#include "msenidentity.h"
+
+// FORWARD DECLARATIONS
+class CSenSecurityMechanism;
+
+/**
+* An MSenIdentityManager knows about the various Identitities
+* of the user(s) of the system. Components use this interface
+* to register identities and query for identities in various
+* situations.
+*
+* An Identity can contain all kinds of information and is not
+* further specified here. For maximum flexibility an identity
+* is modelled as an XML Element that can have arbitrary children
+* elements.
+*
+* The IdentityManager can have a rather complex list of Identities,
+* the Identity that it returns is based upon:
+* - the currently active user identity (set)
+* - a URL (Endpoint) or ProviderID given in the request
+*
+* An IdentityManager can return a full Identity (which can contain a
+* lot of information); but also offer methods to only return an
+* IdentityProvider that can be used to obtain access to a particular service.
+*/
+class MSenIdentityManager
+ {
+ public: // New functions
+
+ /**
+ * This method is not intended for the developer API and is for internal
+ * use only. It may be exposed the developers of
+ * ServiceInvocationFrameworks.
+ * @return the currently active default identity.
+ */
+ virtual MSenIdentity& IdentityL() = 0;
+
+ /**
+ * This method is not intended for the developer API and is for internal
+ * use only. It may be exposed the developers of
+ * ServiceInvocationFrameworks.
+ * @param 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) = 0;
+
+ /**
+ * This method is not intended for the developer API and is for internal
+ * use only. It may be exposed the developers of
+ * ServiceInvocationFrameworks.
+ * @return the default IdentityProvider of the currently active Identity
+ * or NULL if not found(!)
+ */
+ virtual CSenIdentityProvider* IdentityProviderL() = 0;
+
+ /**
+ * This method is not intended for the developer API and is for internal
+ * use only. It may be exposed the developers of
+ * ServiceInvocationFrameworks.
+ * @param aServiceDescription
+ * @return the IdentityProvider of the currently active
+ * Identity that has the ServiceID that best mathces the
+ * endpoint or providerID of the given ServiceDescription.
+ */
+ virtual CSenIdentityProvider* IdentityProviderL(
+ MSenServiceDescription& aServiceDescription ) = 0;
+
+ /**
+ * This method is not intended for the developer API and is for internal
+ * use only. It may be exposed the developers of
+ * ServiceInvocationFrameworks.
+ * @param aURI
+ * @return the IdentityProvider of the currently active
+ * Identity that has the ServiceID that best mathces the
+ * given URI or NULL if not found(!).
+ */
+ virtual CSenIdentityProvider* IdentityProviderL( const TDesC8& aURI ) = 0;
+
+ /**
+ * This method is not intended for the developer API and is for internal
+ * use only. It may be exposed the developers of
+ * ServiceInvocationFrameworks.
+ * @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
+ * from within the given List with ProviderIDs.
+ */
+ virtual CSenIdentityProvider* IdentityProviderL(
+ const CDesC8Array& aIdpList,
+ TBool aStrict) = 0;
+
+ /**
+ * This method is not intended for the developer API and is for internal
+ * use only. It may be exposed the developers of
+ * ServiceInvocationFrameworks.
+ * @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
+ * from within the given List with ProviderIDs.
+ */
+ virtual CSenIdentityProvider* IdentityProviderL(
+ MSenServiceDescription& aServiceDescription,
+ const CDesC8Array& aIdpList,
+ TBool aStrict) = 0;
+
+ /**
+ * Register an IdentityProvider for the current active Identity.
+ * @param aIdp a registered IdentityProvider
+ * @return true if succesful.
+ */
+ virtual TInt RegisterIdentityProviderL( CSenIdentityProvider* aIdp ) = 0;
+
+ /**
+ * Unregister an IdentityProvider for the current active Identity.
+ * @param aIdp an unregistered IdentityProvider
+ * @return true if succesful.
+ */
+ virtual TInt UnregisterIdentityProviderL( CSenIdentityProvider& aIdp) = 0;
+
+ /**
+ * Associate a service to an IdentityProvider.
+ * @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& providerID ) = 0;
+
+ /**
+ * Dissociate a service from an IdentityProvider.
+ * @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 ) = 0;
+
+ /**
+ * This method is not intended for the developer API and is for internal
+ * use only. It may be exposed the developers of
+ * ServiceInvocationFrameworks.
+ * 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 ) = 0;
+
+ virtual TInt AuthenticationForL(CSenIdentityProvider& aAccount, TPckgBuf<TSenAuthentication>& aResponse) = 0;
+ virtual TPtrC8 SenSecurityMechanismNames8L() = 0;
+ virtual CSenSecurityMechanism* MechanismNamedL(const TDesC8& aName) = 0;
+
+ /**
+ * For encoding and decoding base 64:
+ */
+ virtual HBufC8* EncodeToBase64LC(const TDesC8& aSource) = 0;
+ virtual HBufC8* DecodeFromBase64LC(const TDesC8& aSource) = 0;
+
+ virtual void SetShowPasswordDialog(const TBool aState) = 0;
+
+ virtual TInt FindMatchingIdentityProviderL(CSenIdentityProvider &aIdp,
+ CSenIdentityProvider*& apMatch) = 0;
+
+ virtual TInt UpdateIdentityProviderL(CSenIdentityProvider& aIdp) = 0;
+ virtual const RPointerArray<CSenIdentityProvider>& IdentityProvidersL() = 0;
+ };
+
+#endif // M_SEN_IDENTITY_MANAGER_H
+
+// End of File