webservices/wsframework/src/saslmechanism.cpp
changeset 0 62f9d29f7211
child 17 48e9d43c1d7f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/webservices/wsframework/src/saslmechanism.cpp	Thu Jan 07 16:19:19 2010 +0200
@@ -0,0 +1,130 @@
+/*
+* 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:        
+*
+*/
+
+
+
+
+
+
+
+
+// INCLUDE FILES
+#include "saslmechanism.h" 
+
+#include <SenIdentityProvider.h>
+
+EXPORT_C CSaslMechanism* CSaslMechanism::NewL()
+    {
+    CSaslMechanism* pNew = NewLC();
+    CleanupStack::Pop();
+    return pNew;
+    }
+
+EXPORT_C CSaslMechanism* CSaslMechanism::NewLC()
+    {
+    CSaslMechanism* pNew = new (ELeave) CSaslMechanism();
+    CleanupStack::PushL(pNew);
+    return pNew;
+    }
+
+EXPORT_C CSaslMechanism::CSaslMechanism()
+:   ipAccount(NULL),
+    ipIdentityManager(NULL)
+    {
+    }
+
+EXPORT_C CSaslMechanism::~CSaslMechanism()
+    {
+    iTransforms.ResetAndDestroy(); // were owned
+    }
+
+EXPORT_C void CSaslMechanism::ClearPasswordL()
+    {
+    //subclasses should implement this.
+    }
+
+EXPORT_C HBufC8* CSaslMechanism::Password8L()
+    {
+	HBufC8* pPassWd = NULL;
+	TSenAuthentication output;
+	TPckgBuf<TSenAuthentication> outputPair(output);
+	if(ipAccount)
+		{
+	    TInt error = ipIdentityManager->AuthenticationForL(*ipAccount, outputPair);
+	    if (error == KErrNone)
+		    {
+		    pPassWd = outputPair().iPassword.AllocL();
+		    }
+		}
+    return pPassWd;
+    }
+
+EXPORT_C void CSaslMechanism::InitFrom(CSaslMechanism aSaslMechanism)
+    {
+    ipIdentityManager = aSaslMechanism.ipIdentityManager;
+    ipAccount = aSaslMechanism.ipAccount;
+    iTransforms = aSaslMechanism.iTransforms;
+    }
+
+EXPORT_C HBufC8* CSaslMechanism::TransformL(TPtrC8 aPassphrase) const
+    {
+    HBufC8* pPassword = aPassphrase.AllocL();
+    HBufC8* pTransformed = NULL;
+    for(TInt i=0; i<iTransforms.Count(); i++)
+        {
+        if(pPassword)
+            {
+            CleanupStack::PushL(pPassword);
+            pTransformed = iTransforms[i]->TransformL(*pPassword);
+            CleanupStack::PopAndDestroy(); // pPassword
+            pPassword = pTransformed;
+            pTransformed = NULL;
+            }
+        }
+    return pPassword;
+    }
+
+EXPORT_C TInt CSaslMechanism::MaxAttempts()
+    {
+    return 0; // 0 means that the system default can be applied
+    }
+
+EXPORT_C void CSaslMechanism::SetIdentity(
+                                      CSenIdentityProvider* aIdentityProvider,
+                                      MSenIdentityManager* aIdentityManager)
+    {
+    ipIdentityManager = aIdentityManager;
+    ipAccount = aIdentityProvider;
+    }
+
+EXPORT_C TBool CSaslMechanism::IsPasswordFromUser()
+    {
+    return EFalse;
+    }
+
+EXPORT_C CSenIdentityProvider& CSaslMechanism::Account()
+    {
+    return *ipAccount;
+    }
+
+EXPORT_C void CSaslMechanism::SetTransforms(
+                        RPointerArray<CSenPasswordTransform> aList)
+    {
+    iTransforms = aList;
+    }
+
+// End of File