pkiutilities/DeviceToken/Inc/DevandTruSrvCertStore.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 26 Jan 2010 15:20:08 +0200
changeset 0 164170e6151a
permissions -rw-r--r--
Revision: 201004

/*
* Copyright (c) 2006 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:   The header file of DevandTruSrvCertStore
*
*/



#ifndef __DEVANDTRUSRVCERTSTORE_H__
#define __DEVANDTRUSRVCERTSTORE_H__

#include <mctwritablecertstore.h>
#include "DevTokenMarshaller.h"
#include "DevTokenDataTypes.h"
#include "DTClient.h"


/**
 * The device tokens Certstore client interface.
 * 
 * Implements the MCTWritableCertStore interface, with inheritance from
 * CFSClient.  Instances of this class are created by CClientInterfaceFactory.
 * Marshals client data for server requests and unpacks returned parameter data
 * across IPC boundary.
 * Note that although this class is derived from CActive (via CDTClient) is does
 * not act an active object, or use CActive functionality.
 *
 *  @lib DevTokenClient.dll
 *  @since S60 v3.2
 */
class CDevandTruSrvCertStore : public CDTClient, public MCTWritableCertStore
    {
    public:
        
        static MCTTokenInterface* NewWritableInterfaceL(MCTToken& aToken, RDevTokenClientSession& aClient);
        
        static MCTTokenInterface* NewReadableInterfaceL(MCTToken& aToken, RDevTokenClientSession& aClient);
        
    public:
        
        virtual ~CDevandTruSrvCertStore();
        
    public: 
        
        // From MCTTokenInterface
        virtual MCTToken& Token();
        
        virtual void DoRelease();
        
    public:
        
        // From MCTCertStore
        virtual void List(RMPointerArray<CCTCertInfo>& aCerts, 
                          const CCertAttributeFilter& aFilter, 
                          TRequestStatus& aStatus);
        
        virtual void CancelList();  
        
        virtual void GetCert(CCTCertInfo*& aCertInfo, const TCTTokenObjectHandle& aHandle,
                             TRequestStatus& aStatus);
        
        virtual void CancelGetCert(); 
        
        virtual void Applications(const CCTCertInfo& aCertInfo, RArray<TUid>& aApplications,
                                  TRequestStatus& aStatus); 
                                  
        virtual void CancelApplications();  
        
        virtual void IsApplicable(const CCTCertInfo& aCertInfo, TUid aApplication, 
                                  TBool& aIsApplicable, TRequestStatus& aStatus);
        
        virtual void CancelIsApplicable();  
        
        virtual void Trusted(const CCTCertInfo& aCertInfo, TBool& aTrusted, 
                             TRequestStatus& aStatus);
        
        virtual void CancelTrusted(); 
        
        virtual void Retrieve(const CCTCertInfo& aCertInfo, TDes8& aEncodedCert,
                              TRequestStatus& aStatus);
        
        virtual void CancelRetrieve();
        
        // From MCTWritableCertStore
        virtual void Add(const TDesC& aLabel, TCertificateFormat aFormat,
                         TCertificateOwnerType aCertificateOwnerType, 
                         const TKeyIdentifier* aSubjectKeyId, const TKeyIdentifier* aIssuerKeyId,
                         const TDesC8& aCert, TRequestStatus& aStatus);
        
        virtual void Add(const TDesC& aLabel, TCertificateFormat aFormat,
                         TCertificateOwnerType aCertificateOwnerType, 
                         const TKeyIdentifier* aSubjectKeyId, const TKeyIdentifier* aIssuerKeyId,
                         const TDesC8& aCert, const TBool aDeletable,
                         TRequestStatus& aStatus);
        
        virtual void CancelAdd(); 
        
        virtual void Remove(const CCTCertInfo& aCertInfo, TRequestStatus& aStatus);
        
        virtual void CancelRemove();  
        
        virtual void SetApplicability(const CCTCertInfo& aCertInfo, 
        
        const RArray<TUid>& aApplications, TRequestStatus &aStatus);
        
        virtual void CancelSetApplicability();
        
        virtual void SetTrust(const CCTCertInfo& aCertInfo, TBool aTrusted, 
                              TRequestStatus& aStatus);
        
        virtual void CancelSetTrust();  

    protected:
        
        // From CActive
        virtual void RunL();

    private:
        
        CDevandTruSrvCertStore(TInt aUID, MCTToken& aToken, RDevTokenClientSession& aClient);
        
        void ConstructL();
        
        void DoListL(RMPointerArray<CCTCertInfo>& aCerts, const CCertAttributeFilter& aFilter);
        
        void DoGetCertL(CCTCertInfo*& aCertInfo, const TCTTokenObjectHandle& aHandle);
        
        void DoApplicationsL(const CCTCertInfo& aCertInfo, RArray<TUid>& aApplications);
        
        TInt DoRetrieve(const CCTCertInfo& aCertInfo, TDes8& aEncodedCert);
        
        void CopyFilter( CCertAttributeFilter* aDesFilter, const CCertAttributeFilter& aSrcFilter);
        
    private:
        
        CCertAttributeFilter* iFilter;    
    };

#endif  //__DEVANDTRUSRVCERTSTORE_H__

//EOF