--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/authenticationservices/authenticationserver/source/common/identity.cpp Tue Aug 31 17:00:08 2010 +0300
@@ -0,0 +1,125 @@
+/*
+* Copyright (c) 2005-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:
+* CIdentity implementation
+*
+*/
+
+
+/**
+ @file
+*/
+
+#include "authcommon_impl.h"
+
+using namespace AuthServer;
+
+EXPORT_C CIdentity* CIdentity::NewL(TIdentityId aId,
+ CProtectionKey* aKey,
+ HBufC* aString)
+ {
+ CIdentity* me = CIdentity::NewLC(aId, aKey, aString);
+ CleanupStack::Pop();
+ return me;
+ }
+
+EXPORT_C CIdentity* CIdentity::NewLC(TIdentityId aId,
+ CProtectionKey* aKey,
+ HBufC* aString)
+ {
+ CIdentity* me = new (ELeave) CIdentity(aId);
+ CleanupStack::PushL(me);
+ me->ConstructL(aKey, aString);
+ return me;
+ }
+
+void CIdentity::ConstructL(CProtectionKey* aKey,
+ HBufC* aString)
+ {
+ iString = aString;
+ iKey = aKey;
+ }
+
+CIdentity::CIdentity(TIdentityId aId)
+ : iId(aId)
+ {
+ }
+
+CIdentity::~CIdentity()
+ {
+ delete iKey;
+ delete iString;
+ }
+
+/**
+ * Returns the id number for the identity.
+ *
+ * @return KUnknown if the identity of the device holder could not be
+ * determined.
+ **/
+EXPORT_C TIdentityId CIdentity::Id() const
+ {
+ return iId;
+ }
+
+/**
+ * Returns the protecion key associated with the returned identity. The
+ * key will only be valid if the identity is not unknown.
+ *
+ * @return the protection key of
+ * the method specified to the RAuthClient::Authenticate method.
+ **/
+EXPORT_C const CProtectionKey& CIdentity::Key() const
+ {
+ return *iKey;
+ }
+
+/**
+ * Returns the string associated with the returned identity. The string will
+ * only be valid if a) the identity is not unknown and b) the identity was
+ * retrieved using the withString parameter of RAuthClient::AuthenticateL set
+ * to true. If this is not the case then an empty string is returned.
+ *
+ * @return the protection key of
+ * the method specified to the RAuthClient::Authenticate method.
+ **/
+EXPORT_C TDesC& CIdentity::String() const
+ {
+ return *iString;
+ }
+
+EXPORT_C void CIdentity::ExternalizeL(RWriteStream& aWriteStream) const
+ {
+ aWriteStream.WriteInt32L(iId);
+ aWriteStream.WriteInt32L(iKey->KeyData().Length());
+ aWriteStream << iKey->KeyData();
+ aWriteStream<< *iString;
+ }
+
+EXPORT_C CIdentity* CIdentity::InternalizeL(RReadStream& aReadStream)
+ {
+ TIdentityId id;
+ id = aReadStream.ReadInt32L();
+ TInt keyLength = aReadStream.ReadInt32L();
+ HBufC8* keydata = HBufC8::NewLC(aReadStream, keyLength);
+ CProtectionKey* prot = CProtectionKey::NewL(keydata);
+ CleanupStack::Pop(keydata);
+ CleanupStack::PushL(prot);
+
+ HBufC* stringdata = HBufC::NewLC(aReadStream, KMaxDescLen );
+ CIdentity* identity = CIdentity::NewL(id, prot, stringdata);
+ CleanupStack::Pop(2, prot);
+ return identity;
+ }
+