diff -r f18401adf8e1 -r 641f389e9157 authenticationservices/authenticationserver/source/common/identity.cpp --- /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; + } +