--- a/cryptoservices/filebasedcertificateandkeystores/source/keystore/Client/CKeyStoreAuthObject.cpp Tue Jul 21 01:04:32 2009 +0100
+++ b/cryptoservices/filebasedcertificateandkeystores/source/keystore/Client/CKeyStoreAuthObject.cpp Thu Sep 10 14:01:51 2009 +0300
@@ -1,259 +1,262 @@
-/*
-* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the License "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 "CKeyStoreAuthObject.h"
-#include "cfskeystoreclient.h"
-#include <ct/logger.h>
-
-_LIT(KAuthObjectName, "Software key store authentication object");
-
-CKeyStoreAuthObject* CKeyStoreAuthObject::NewL(CFSKeyStoreClient& aClient)
- {
- return new (ELeave) CKeyStoreAuthObject(aClient);
- }
-
-CKeyStoreAuthObject::CKeyStoreAuthObject(CFSKeyStoreClient& aClient) :
- MCTAuthenticationObject(aClient.Token()),
- iClient(aClient),
- iRefCount(0)
- {
- LOG1(_L("keystore auth object created, ref count == %d"), iRefCount);
- }
-
-void CKeyStoreAuthObject::AddRef()
- {
- ++iRefCount;
-
- LOG1(_L("keystore auth object referenced, ref count == %d"), iRefCount);
- LOG_INC_INDENT();
-
- // The first reference is from the client object: don't reference the token
- // (it gets one reference "for free" when this object is created), or
- // reference the client (this would lead to circular reference)
- if (iRefCount != 1)
- {
- // Need to increment the token's reference count here as well as this is
- // automatically decremented by Release()
- AddTokenRef();
-
- // This object depends on the client
- iClient.AddRef();
- }
-
- LOG_DEC_INDENT();
- }
-
-/**
- * Implementation of reference counting. The superclass automatically calls
- * Release() on the token for us.
- */
-void CKeyStoreAuthObject::DoRelease()
- {
- --iRefCount;
-
- LOG1(_L("keystore auth object released, ref count == %d"), iRefCount);
- LOG_INC_INDENT();
-
- ASSERT(iRefCount >= 0);
-
- // The first reference is from the client, and didn't result in a call to
- // iClient.AddRef(), so don't try and release this
- if (iRefCount != 0)
- {
- iClient.Release();
- }
-
- // No more references, call superclass to delete the object
- if (iRefCount == 0)
- {
- MCTTokenObject::DoRelease();
- }
-
- LOG_DEC_INDENT();
- }
-
-/**
- * Returns the object's human-readable label.
- */
-const TDesC& CKeyStoreAuthObject::Label() const
- {
- return KAuthObjectName;
- }
-
-/**
- * Returns a reference to the associated token.
- */
-MCTToken& CKeyStoreAuthObject::Token() const
- {
- return iClient.Token();
- }
-
-/**
- * Gets the UID representing the type of the token object.
- */
-TUid CKeyStoreAuthObject::Type() const
- {
- return KKeyStoreAuthObjectUID;
- }
-
-/**
- * Gets a handle for the object.
- */
-TCTTokenObjectHandle CKeyStoreAuthObject::Handle() const
- {
- return TCTTokenObjectHandle(Token().Handle(), 0);
- }
-
-/**
- * Lists all keys useable or manageable by the calling process.
- */
-void CKeyStoreAuthObject::ListProtectedObjects(RMPointerArray<MCTTokenObject>& aObjects, TRequestStatus& aStatus)
- {
- iClient.ListProtectedObjects(aObjects, aStatus);
- }
-
-void CKeyStoreAuthObject::CancelListProtectedObjects()
- {
- // Synchronous, no cancel
- }
-
-/**
- * Prompt the user to change the passphrase for all keys in the keystore.
- */
-void CKeyStoreAuthObject::ChangeReferenceData(TRequestStatus &aStatus)
- {
- iClient.ChangeReferenceData(aStatus);
- }
-
-void CKeyStoreAuthObject::CancelChangeReferenceData()
- {
- iClient.CancelChangeReferenceData();
- }
-
-/**
- * Prompt the user to enter the unblocking passphrase and unblock the store.
- */
-void CKeyStoreAuthObject::Unblock(TRequestStatus &aStatus)
- {
- // Not supported
- TRequestStatus* status = &aStatus;
- User::RequestComplete(status, KErrNotSupported);
- }
-
-void CKeyStoreAuthObject::CancelUnblock()
- {
- // not supported, nothing to do
- }
-
-/**
- * Get the status of this auth object.
- */
-TUint32 CKeyStoreAuthObject::Status() const
- {
- return iClient.AuthStatus();
- }
-
-/**
- * Disabling this authentication object is not allowed, Disable() and
- * Enable() complete with KErrNotSupported.
- */
-void CKeyStoreAuthObject::Disable(TRequestStatus &aStatus)
- {
- TRequestStatus* status = &aStatus;
- User::RequestComplete(status, KErrNotSupported);
- }
-
-void CKeyStoreAuthObject::CancelDisable()
- {
- }
-
-void CKeyStoreAuthObject::Enable(TRequestStatus &aStatus)
- {
- TRequestStatus* status = &aStatus;
- User::RequestComplete(status, KErrNotSupported);
- }
-
-void CKeyStoreAuthObject::CancelEnable()
- {
- }
-
-/**
- * Prompt the user to enter the passphrase and open the keystore for this
- * process.
- */
-void CKeyStoreAuthObject::Open(TRequestStatus& aStatus)
- {
- iClient.AuthOpen(aStatus);
- }
-
-void CKeyStoreAuthObject::CancelOpen()
- {
- iClient.CancelAuthOpen();
- }
-
-/**
- * Close the keystore.
- */
-void CKeyStoreAuthObject::Close(TRequestStatus& aStatus)
- {
- iClient.AuthClose(aStatus);
- }
-
-void CKeyStoreAuthObject::CancelClose()
- {
- // Synchronous, no cancel
- }
-
-/**
- * Get time remaining for the keystore.
- */
-void CKeyStoreAuthObject::TimeRemaining(TInt& aTime, TRequestStatus& aStatus)
- {
- iClient.TimeRemaining(aTime, aStatus);
- }
-
-void CKeyStoreAuthObject::CancelTimeRemaining()
- {
- // Synchronous, no cancel
- }
-
-/**
- * Set the timeout for the keystore.
- */
-void CKeyStoreAuthObject::SetTimeout(TInt aTime, TRequestStatus& aStatus)
- {
- iClient.SetTimeout(aTime, aStatus);
- }
-
-void CKeyStoreAuthObject::CancelSetTimeout()
- {
- // Synchronous, no cancel
- }
-
-/**
- * Get the current timeout for the keystore.
- */
-void CKeyStoreAuthObject::Timeout(TInt& aTime, TRequestStatus& aStatus)
- {
- iClient.Timeout(aTime, aStatus);
- }
-
-void CKeyStoreAuthObject::CancelTimeout()
- {
- // Synchronous, no cancel
- }
+/*
+* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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 "CKeyStoreAuthObject.h"
+#include "cfskeystoreclient.h"
+#include <ct/logger.h>
+#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
+const TUid KKeyStoreAuthObjectUID = {0x101FE681};
+#endif
+
+_LIT(KAuthObjectName, "Software key store authentication object");
+
+CKeyStoreAuthObject* CKeyStoreAuthObject::NewL(CFSKeyStoreClient& aClient)
+ {
+ return new (ELeave) CKeyStoreAuthObject(aClient);
+ }
+
+CKeyStoreAuthObject::CKeyStoreAuthObject(CFSKeyStoreClient& aClient) :
+ MCTAuthenticationObject(aClient.Token()),
+ iClient(aClient),
+ iRefCount(0)
+ {
+ LOG1(_L("keystore auth object created, ref count == %d"), iRefCount);
+ }
+
+void CKeyStoreAuthObject::AddRef()
+ {
+ ++iRefCount;
+
+ LOG1(_L("keystore auth object referenced, ref count == %d"), iRefCount);
+ LOG_INC_INDENT();
+
+ // The first reference is from the client object: don't reference the token
+ // (it gets one reference "for free" when this object is created), or
+ // reference the client (this would lead to circular reference)
+ if (iRefCount != 1)
+ {
+ // Need to increment the token's reference count here as well as this is
+ // automatically decremented by Release()
+ AddTokenRef();
+
+ // This object depends on the client
+ iClient.AddRef();
+ }
+
+ LOG_DEC_INDENT();
+ }
+
+/**
+ * Implementation of reference counting. The superclass automatically calls
+ * Release() on the token for us.
+ */
+void CKeyStoreAuthObject::DoRelease()
+ {
+ --iRefCount;
+
+ LOG1(_L("keystore auth object released, ref count == %d"), iRefCount);
+ LOG_INC_INDENT();
+
+ ASSERT(iRefCount >= 0);
+
+ // The first reference is from the client, and didn't result in a call to
+ // iClient.AddRef(), so don't try and release this
+ if (iRefCount != 0)
+ {
+ iClient.Release();
+ }
+
+ // No more references, call superclass to delete the object
+ if (iRefCount == 0)
+ {
+ MCTTokenObject::DoRelease();
+ }
+
+ LOG_DEC_INDENT();
+ }
+
+/**
+ * Returns the object's human-readable label.
+ */
+const TDesC& CKeyStoreAuthObject::Label() const
+ {
+ return KAuthObjectName;
+ }
+
+/**
+ * Returns a reference to the associated token.
+ */
+MCTToken& CKeyStoreAuthObject::Token() const
+ {
+ return iClient.Token();
+ }
+
+/**
+ * Gets the UID representing the type of the token object.
+ */
+TUid CKeyStoreAuthObject::Type() const
+ {
+ return KKeyStoreAuthObjectUID;
+ }
+
+/**
+ * Gets a handle for the object.
+ */
+TCTTokenObjectHandle CKeyStoreAuthObject::Handle() const
+ {
+ return TCTTokenObjectHandle(Token().Handle(), 0);
+ }
+
+/**
+ * Lists all keys useable or manageable by the calling process.
+ */
+void CKeyStoreAuthObject::ListProtectedObjects(RMPointerArray<MCTTokenObject>& aObjects, TRequestStatus& aStatus)
+ {
+ iClient.ListProtectedObjects(aObjects, aStatus);
+ }
+
+void CKeyStoreAuthObject::CancelListProtectedObjects()
+ {
+ // Synchronous, no cancel
+ }
+
+/**
+ * Prompt the user to change the passphrase for all keys in the keystore.
+ */
+void CKeyStoreAuthObject::ChangeReferenceData(TRequestStatus &aStatus)
+ {
+ iClient.ChangeReferenceData(aStatus);
+ }
+
+void CKeyStoreAuthObject::CancelChangeReferenceData()
+ {
+ iClient.CancelChangeReferenceData();
+ }
+
+/**
+ * Prompt the user to enter the unblocking passphrase and unblock the store.
+ */
+void CKeyStoreAuthObject::Unblock(TRequestStatus &aStatus)
+ {
+ // Not supported
+ TRequestStatus* status = &aStatus;
+ User::RequestComplete(status, KErrNotSupported);
+ }
+
+void CKeyStoreAuthObject::CancelUnblock()
+ {
+ // not supported, nothing to do
+ }
+
+/**
+ * Get the status of this auth object.
+ */
+TUint32 CKeyStoreAuthObject::Status() const
+ {
+ return iClient.AuthStatus();
+ }
+
+/**
+ * Disabling this authentication object is not allowed, Disable() and
+ * Enable() complete with KErrNotSupported.
+ */
+void CKeyStoreAuthObject::Disable(TRequestStatus &aStatus)
+ {
+ TRequestStatus* status = &aStatus;
+ User::RequestComplete(status, KErrNotSupported);
+ }
+
+void CKeyStoreAuthObject::CancelDisable()
+ {
+ }
+
+void CKeyStoreAuthObject::Enable(TRequestStatus &aStatus)
+ {
+ TRequestStatus* status = &aStatus;
+ User::RequestComplete(status, KErrNotSupported);
+ }
+
+void CKeyStoreAuthObject::CancelEnable()
+ {
+ }
+
+/**
+ * Prompt the user to enter the passphrase and open the keystore for this
+ * process.
+ */
+void CKeyStoreAuthObject::Open(TRequestStatus& aStatus)
+ {
+ iClient.AuthOpen(aStatus);
+ }
+
+void CKeyStoreAuthObject::CancelOpen()
+ {
+ iClient.CancelAuthOpen();
+ }
+
+/**
+ * Close the keystore.
+ */
+void CKeyStoreAuthObject::Close(TRequestStatus& aStatus)
+ {
+ iClient.AuthClose(aStatus);
+ }
+
+void CKeyStoreAuthObject::CancelClose()
+ {
+ // Synchronous, no cancel
+ }
+
+/**
+ * Get time remaining for the keystore.
+ */
+void CKeyStoreAuthObject::TimeRemaining(TInt& aTime, TRequestStatus& aStatus)
+ {
+ iClient.TimeRemaining(aTime, aStatus);
+ }
+
+void CKeyStoreAuthObject::CancelTimeRemaining()
+ {
+ // Synchronous, no cancel
+ }
+
+/**
+ * Set the timeout for the keystore.
+ */
+void CKeyStoreAuthObject::SetTimeout(TInt aTime, TRequestStatus& aStatus)
+ {
+ iClient.SetTimeout(aTime, aStatus);
+ }
+
+void CKeyStoreAuthObject::CancelSetTimeout()
+ {
+ // Synchronous, no cancel
+ }
+
+/**
+ * Get the current timeout for the keystore.
+ */
+void CKeyStoreAuthObject::Timeout(TInt& aTime, TRequestStatus& aStatus)
+ {
+ iClient.Timeout(aTime, aStatus);
+ }
+
+void CKeyStoreAuthObject::CancelTimeout()
+ {
+ // Synchronous, no cancel
+ }