/*+ −
* 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: + −
* CSWICertStoreImpl class implementation+ −
*+ −
*/+ −
+ −
+ −
/**+ −
@file + −
@internalTechnology+ −
*/+ −
+ −
#ifndef __CSWICERTSTOREIMPL_H__+ −
#define __CSWICERTSTOREIMPL_H__+ −
+ −
#include <e32std.h>+ −
#include <e32base.h>+ −
#include <s32file.h>+ −
#include <ct/rmpointerarray.h>+ −
#include <e32property.h>+ −
+ −
class MCTToken;+ −
class CCTCertInfo;+ −
class CSWICertStoreEntryList;+ −
class CCertAttributeFilter;+ −
class TCTTokenObjectHandle;+ −
class CSWICertStoreEntry;+ −
class TCertMetaInfo;+ −
+ −
/**+ −
* This class implements the guts of the SWI cert store. It is mainly a cut+ −
* down version of the filetokens cert store server.+ −
*/+ −
NONSHARABLE_CLASS(CSWICertStoreImpl) : public CActive+ −
{+ −
public:+ −
static CSWICertStoreImpl* NewL(MCTToken& aToken, RFs& aFs);+ −
virtual ~CSWICertStoreImpl();+ −
+ −
public:+ −
// For MCTCertStore+ −
void ListL(RMPointerArray<CCTCertInfo>& aCerts,+ −
const CCertAttributeFilter& aFilter);+ −
CCTCertInfo* GetCertL(const TCTTokenObjectHandle& aHandle); + −
void ApplicationsL(const TCTTokenObjectHandle& aHandle, RArray<TUid>& aAplications);+ −
TBool IsApplicableL(const TCTTokenObjectHandle& aHandle, TUid aApplication);+ −
TBool TrustedL(const TCTTokenObjectHandle& aHandle);+ −
void RetrieveL(const TCTTokenObjectHandle& aHandle, TDes8& aEncodedCert);+ −
+ −
// Addtional meta-data accessors+ −
const TCertMetaInfo& CertMetaInfoL(const TCTTokenObjectHandle& aHandle) const; + −
+ −
private:+ −
CSWICertStoreImpl(MCTToken& aToken, RFs& aFs);+ −
void ConstructL();+ −
+ −
// Open the Writable certstore and setup the iCEntryList+ −
void SetupWritableCertStoreL();+ −
+ −
// Open the ROM certstore and setup the iZEntryList+ −
void SetupROMCertStoreL();+ −
void SetupCompositeROMCertStoreL();+ −
static void FilterCertificateListL(RMPointerArray<CCTCertInfo>& aCerts,+ −
const CCertAttributeFilter& aFilter, const CSWICertStoreEntryList& aEntryList);+ −
static void AddIfMatchesFilterL(RMPointerArray<CCTCertInfo>& aCerts,+ −
const CCertAttributeFilter& aFilter, const CSWICertStoreEntry& aEntry);+ −
const CSWICertStoreEntry* GetCSWICertStoreEntryL(const TCTTokenObjectHandle& aHandle, TBool& aCEntryHandle) const;+ −
void MergeCertificateEntryListsL(const CSWICertStoreEntryList& aSourceList, TBool aIsZEntryList = EFalse );+ −
+ −
protected: // From CActive+ −
void DoCancel();+ −
void RunL();+ −
+ −
private:+ −
/// Cert store token+ −
MCTToken& iToken;+ −
+ −
/// File server session+ −
RFs& iFs;+ −
+ −
/// Persistent store containg the certs+ −
CPermanentFileStore* iCStore;+ −
CPermanentFileStore* iZStore;+ −
+ −
/// The list of certificates contained in the store.+ −
CSWICertStoreEntryList* iCEntryList;+ −
CSWICertStoreEntryList* iZEntryList;+ −
+ −
TInt iCertIndex;+ −
RProperty iSwicertstoreProperty;+ −
RPointerArray<CPermanentFileStore> iZArrayOfStores;+ −
/// Used to distinguish variant specific feature from the default. + −
TUint8 iPatchableConst;+ −
};+ −
+ −
#endif+ −