diff -r 000000000000 -r 62f9d29f7211 webservices/wsidentitymanager/inc/msenidentitymanager.h --- /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 +#include // HBufC8 +#include // CDesC8Array + +#include +#include + +#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& 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& IdentityProvidersL() = 0; + }; + +#endif // M_SEN_IDENTITY_MANAGER_H + +// End of File