wim/WimPlugin/inc/WimCertStore.h
changeset 0 164170e6151a
equal deleted inserted replaced
-1:000000000000 0:164170e6151a
       
     1 /*
       
     2 * Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). 
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  An implementation of certificate store interface
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 #ifndef CWIMCERTSTORE_H
       
    20 #define CWIMCERTSTORE_H
       
    21 
       
    22 //  INCLUDES
       
    23 
       
    24 #include "WimCertStoreMappings.h"
       
    25 #include <mctkeystore.h>
       
    26 #include <mctwritablecertstore.h>
       
    27 #include <unifiedkeystore.h>
       
    28 
       
    29 // FORWARD DECLARATION
       
    30 
       
    31 class CWimCertConverter;
       
    32 class CWimCertInfo;
       
    33 class CWimTrustSettingsAPI;
       
    34 class CWimToken;
       
    35 
       
    36 
       
    37 // CLASS DECLARATION
       
    38 
       
    39 /**
       
    40 *  Represents read only and writable certificate store.
       
    41 *
       
    42 *  @lib   WimPlugin
       
    43 *  @since Series60 2.1
       
    44 */
       
    45 
       
    46 class CWimCertStore : public CActive, public MCTWritableCertStore   
       
    47     {
       
    48     public: 
       
    49 
       
    50         /**
       
    51         * Two-phased constructor
       
    52         * @param  aToken (IN) A refernece to curren token
       
    53         * @return An instance of this class
       
    54         */
       
    55         static CWimCertStore* NewL( CWimToken& aToken );
       
    56 
       
    57         /**
       
    58         * Destructor.
       
    59         */
       
    60         virtual ~CWimCertStore();
       
    61 
       
    62     public: // A function from base class MCTTokenInterface
       
    63         
       
    64         /**
       
    65         * Returns a reference to current token.
       
    66         * @return A reference to current token.
       
    67         */
       
    68         MCTToken& Token();
       
    69 
       
    70     public: // Functions from base class MCertStore
       
    71 
       
    72         /**
       
    73         * Lists certificates from the store. 
       
    74         * The caller of this function owns all its parameters.
       
    75         * @param  aCerts (OUT) An array into which the returned certificates 
       
    76         *         are placed.
       
    77         * @param  aFilter (IN) A filter to select which certificates should 
       
    78         *         be included.
       
    79         * @param  aStatus (IN/OUT) A Request status that will be completed when
       
    80         *         the operation completes.
       
    81         *         KErrNone, if no errors detected. Note: if certificates not
       
    82         *         found, it is also KErrNone
       
    83         *         KErrCancel, if call is canceled
       
    84         *         KErrHardwareNotAvailable, if Wim card suddenly removed
       
    85         *         Any other system wide error code (e.g. KErrNoMemory)
       
    86         * @return void
       
    87         */
       
    88         void List( RMPointerArray<CCTCertInfo>& aCerts, 
       
    89                    const CCertAttributeFilter& aFilter,
       
    90                    TRequestStatus& aStatus );
       
    91     
       
    92         /**
       
    93         * Cancels ongoing list operation.
       
    94         * @return void
       
    95         */
       
    96         void CancelList();
       
    97 
       
    98         /**
       
    99         * Gets a certificate info according to given handle. 
       
   100         * The caller of this function owns all its parameters.
       
   101         * @param  aCertInfo (OUT) The returned certificate info.
       
   102         * @param  aHandle   (IN) The handle of the certificate info to return.
       
   103         * @param  aStatus   (IN/OUT) A request status that is completed when 
       
   104         *         the operation has finished.
       
   105         *         KErrNone, if no errors detected. 
       
   106         *         KErrNotFound, if certificate with given handle not found
       
   107         *         KErrHardwareNotAvailable, if Wim card suddenly removed
       
   108         *         Any other system wide error code (e.g. KErrNoMemory)
       
   109         * @return void
       
   110         */
       
   111         void GetCert( CCTCertInfo*& aCertInfo, 
       
   112                       const TCTTokenObjectHandle& aHandle, 
       
   113                       TRequestStatus& aStatus );
       
   114 
       
   115         /**
       
   116         * Cancels an ongoing GetCert operation. No influence.
       
   117         * @return void
       
   118         */
       
   119         void CancelGetCert();
       
   120 
       
   121         /**
       
   122         * Queries the applications that given certificate supports.
       
   123         * The caller of this function owns all its parameters.
       
   124         * @param  aCertInfo (IN) The certificate to return applications for.
       
   125         * @param  aApplications (OUT) An array where applications are added in.
       
   126         * @param  aStatus       A request status that is completed when the 
       
   127         *         operation has finished.
       
   128         *         KErrNone, if no errors detected
       
   129         *         KErrNotFound, if aCertInfo not found
       
   130         *         KErrHardwareNotAvailable, if Wim card suddenly removed
       
   131         *         Any other system wide error code (e.g. KErrNoMemory)
       
   132         * @return void
       
   133         */
       
   134         void Applications( const CCTCertInfo& aCertInfo, 
       
   135                            RArray<TUid>& aApplications,
       
   136                            TRequestStatus& aStatus );
       
   137 
       
   138         /**
       
   139         * Cancels an ongoing Applications operation. No influence.
       
   140         * @return void
       
   141         */
       
   142         void CancelApplications();
       
   143 
       
   144         /**
       
   145         * Indicates if a particular certificate is applicable to a particular 
       
   146         * application. 
       
   147         * The caller of this function owns all its parameters.
       
   148         * @param  aCertInfo (IN) The certificate in question.
       
   149         * @param  aApplication (IN) The application.
       
   150         * @param  aIsApplicable (OUT) Set to ETrue or EFalse by the function 
       
   151         *         to return the result.
       
   152         * @param  aStatus (IN/OUT) A request status that is completed when the 
       
   153         *         operation has finished.
       
   154         *         KErrNone, if no errors detected.
       
   155         *         KErrNotFound, if aCertInfo not found
       
   156         *         KErrHardwareNotAvailable, if Wim card suddenly removed
       
   157         *         Any other system wide error code (e.g. KErrNoMemory)
       
   158         * @return void
       
   159         */
       
   160         void IsApplicable( const CCTCertInfo& aCertInfo, 
       
   161                            TUid aApplication, 
       
   162                            TBool& aIsApplicable, 
       
   163                            TRequestStatus& aStatus );
       
   164 
       
   165         /**
       
   166         * Cancels an IsApplicable operation. No influence.
       
   167         * @return void
       
   168         */
       
   169         void CancelIsApplicable();
       
   170 
       
   171         /**
       
   172         * Returns true value if given certificate is trusted. 
       
   173         * The caller of this function owns all its parameters.
       
   174         * @param  aCertInfo (IN) The certificate we're interested in.
       
   175         * @param  aTrusted (OUT) Used to return the trust status.
       
   176         * @param  aStatus (IN/OUT) A request status that is completed when the 
       
   177         *         operation has finished.
       
   178         *         KErrNone, if no errors detected.
       
   179         *         KErrNotFound, if aCertInfo not found
       
   180         *         KErrHardwareNotAvailable, if Wim card suddenly removed
       
   181         *         Any other system wide error code (e.g. KErrNoMemory)
       
   182         * @return void
       
   183         */
       
   184         void Trusted( const CCTCertInfo& aCertInfo, 
       
   185                       TBool& aTrusted, 
       
   186                       TRequestStatus& aStatus );
       
   187 
       
   188         /**
       
   189         * Cancels an ongoing Trusted operation. No influence.
       
   190         * @return void
       
   191         */
       
   192         void CancelTrusted();
       
   193 
       
   194         /**
       
   195         * Retrieves the actual certificate.
       
   196         * The caller of this function owns all its parameters.
       
   197         * @param  aCertInfo (IN) The certificate to retrieve.
       
   198         * @param  aEncodedCert (OUT) A buffer to put the certificate in. 
       
   199         *         It must be big enough. The size is stored in aCertInfo.
       
   200         * @param  aStatus (IN/OUT) A request status that is completed when the 
       
   201         *         operation has finished.
       
   202         *         KErrNone, if no errors detected.
       
   203         *         KErrNotFound, if aCertInfo not found
       
   204         *         KErrHardwareNotAvailable, if Wim card suddenly removed
       
   205         *         Any other system wide error code (e.g. KErrNoMemory)
       
   206         * @return void
       
   207         */
       
   208         void Retrieve( const CCTCertInfo& aCertInfo, 
       
   209                        TDes8& aEncodedCert, 
       
   210                        TRequestStatus& aStatus );
       
   211 
       
   212         /**
       
   213         * Cancels an ongoing Retrieve operation.
       
   214         * @return void
       
   215         */
       
   216         void CancelRetrieve();
       
   217 
       
   218     public: // From base class MCTWritableCertStore
       
   219 
       
   220         /** 
       
   221         * CURRENTLY NOT SUPPORTED. Adds a certificate to the cert store.
       
   222         * The caller of this function owns all its parameters.
       
   223         * @param  aLabel (IN) The label of the certificate to add
       
   224         * @param  aFormat (IN) the format of the certificate
       
   225         * @param  aCertificateOwnerType (IN) The owner type
       
   226         * @param  aSubjectKeyId (IN) The Subject key ID
       
   227         * @param  aIssuerKeyId (IN) The issuer key ID
       
   228         * @param  aCert (IN) The certificate to add
       
   229         * @param  aStatus (IN/OUT) This is completed with the return result 
       
   230         *         when the add has completed 
       
   231         *         KErrNone, if no errors detected.
       
   232         *         KErrArgument, 
       
   233         *           - if label length is zero, or
       
   234         *           - certificate owner type is unknown, or
       
   235         *           - certificate is X509 or WTLS and computed subject key id 
       
   236         *             is not as given subject key id
       
   237         *           - X509 and Url, and subject key is not given
       
   238         *         KErrNotSupported, if certificate format not supported.
       
   239         *         (Supported formats are: X509, WTLS and URL)
       
   240         *         KErrHardwareNotAvailable, if Wim card suddenly removed
       
   241         *         Any other system wide error code (e.g. KErrNoMemory)
       
   242         * return  void
       
   243         */
       
   244         void Add( const TDesC& aLabel, 
       
   245                   TCertificateFormat aFormat,
       
   246                   TCertificateOwnerType aCertificateOwnerType, 
       
   247                   const TKeyIdentifier* aSubjectKeyId,
       
   248                   const TKeyIdentifier* aIssuerKeyId,
       
   249                   const TDesC8& aCert, 
       
   250                   TRequestStatus& aStatus );
       
   251 
       
   252         /**
       
   253         * Cancels an ongoing add operation.
       
   254         * @return void
       
   255         */
       
   256         void CancelAdd();
       
   257 
       
   258         /** 
       
   259         * CURRENTLY NOT SUPPORTED. Removes a certificate from Wim cert store.
       
   260         * The caller of this function owns all its parameters.
       
   261         * @param  aCertInfo (IN) The certificate to remove.
       
   262         * @param  aStatus (IN/OUT) This is completed with the return result 
       
   263         *         when the remove has completed.
       
   264         *         KErrNone, if no errors detected.
       
   265         *         KErrNotFound, if aCertInfo not found
       
   266         *         KErrNotSupported, if certificate format not supported.
       
   267         *         (Supported formats are: X509, WTLS and URL)
       
   268         *         KErrHardwareNotAvailable, if Wim card suddenly removed
       
   269         *         Any other system wide error code (e.g. KErrNoMemory)
       
   270         */
       
   271         void Remove( const CCTCertInfo& aCertInfo, 
       
   272                      TRequestStatus& aStatus );
       
   273 
       
   274         /** 
       
   275         * Cancels an ongoing remove operation.
       
   276         * @return  void
       
   277         */
       
   278         void CancelRemove();
       
   279 
       
   280         /** 
       
   281         * Replaces the current applicability settings with the settings
       
   282         * in the supplied array. 
       
   283         * The caller of this function owns all its parameters except aApplications 
       
   284         * which ownership is transferred to this class
       
   285         * @param  aCertInfo (IN) The certificate whose applicability should 
       
   286         *         be updated.
       
   287         * @param  aApplications (IN) The new applications. 
       
   288         * @param  aStatus (IN/OUT) This is completed with the return result 
       
   289         *         when the operation has completed.
       
   290         *         KErrNone, if no errors detected.
       
   291         *         KErrNotFound, if aCertInfo not found
       
   292         *         KErrArgument, if some of the given applications is not 
       
   293         *         found from system file (certclients.dat)
       
   294         *         KErrHardwareNotAvailable, if Wim card suddenly removed
       
   295         *         Any other system wide error code (e.g. KErrNoMemory)
       
   296         */
       
   297         void SetApplicability( const CCTCertInfo& aCertInfo,
       
   298 #ifdef __SECURITY_PLATSEC_ARCH__        
       
   299                                const RArray<TUid>& aApplications, 
       
   300 #else
       
   301                                RArray<TUid>* aApplications,
       
   302 #endif                               
       
   303                                TRequestStatus &aStatus );
       
   304 
       
   305         /** 
       
   306         * Cancels an ongoing operation. No influence.
       
   307         * @return void
       
   308         */
       
   309         void CancelSetApplicability();
       
   310     
       
   311         /** 
       
   312         * Changes the trust settings. CA certificate is 
       
   313         * trusted if the user is willing to use it for authenticating servers. 
       
   314         * It has no meaning with other types of certificates. 
       
   315         * The caller of this function owns all its parameters.
       
   316         * @param  aCertInfo (IN) The certificate to update.
       
   317         * @param  aTrusted (IN) Whether or not it is trusted
       
   318         * @param  aStatus (IN/OUT) This is completed with the return result 
       
   319         *         when the operation has completed.
       
   320         *         KErrNone, if no errors detected.
       
   321         *         KErrNotFound, if aCertInfo not found
       
   322         *         KErrArgument, if given aTrusted parameter is not true or false.
       
   323         *         KErrHardwareNotAvailable, if Wim card suddenly removed
       
   324         *         Any other system wide error code (e.g. KErrNoMemory)
       
   325         * @return void
       
   326         */
       
   327         void SetTrust( const CCTCertInfo& aCertInfo, 
       
   328                        TBool aTrusted, 
       
   329                        TRequestStatus& aStatus );
       
   330 
       
   331         /** 
       
   332         * Cancels an ongoing operation. No influence.
       
   333         * @return void
       
   334         */
       
   335         void CancelSetTrust();
       
   336 
       
   337     private: // New functions
       
   338 
       
   339         /** 
       
   340         * Makes some initializations.
       
   341         * @return void
       
   342         */
       
   343         void Initialize();
       
   344 
       
   345         /** 
       
   346         * Sets trusted and appliaction info on certificate mapping.
       
   347         * @param  aTrusted   (IN) True or false value
       
   348         * @param  aCertificateApps  (IN) An array of application uids for 
       
   349         *         certificate
       
   350         * @return void
       
   351         */
       
   352         void SetTrustSettingsOnMappingL( TBool aTrusted,
       
   353                                          RArray<TUid>* aCertificateApps );
       
   354 
       
   355     protected:  // From base class MCTTokenInterface
       
   356         
       
   357         virtual void DoRelease();
       
   358 
       
   359     protected:  // From base class CActive
       
   360 
       
   361         void RunL();
       
   362         
       
   363         TInt RunError(TInt aError);
       
   364         
       
   365         void DoCancel();
       
   366 
       
   367     private: // New functions
       
   368 
       
   369         /** 
       
   370         * Creates iCerts array and loads certificate infos into it.
       
   371         * @return void
       
   372         */
       
   373         void LoadMappingsL();
       
   374 
       
   375         // Computes and checks subject key in add operation
       
   376         void ComputeAndCheckSubjectKeyIdL();
       
   377 
       
   378         /** 
       
   379         * Checks if given application is known by system
       
   380         * @param  aCertInfo   (IN) The certificate that the update concern
       
   381         * @param  aApplications  (IN) An array of application uids for the
       
   382         *         certificate
       
   383         * @param  aStatus (IN/OUT) This is completed with the return result 
       
   384         *         when the operation has completed.
       
   385         * @return void
       
   386         */
       
   387 
       
   388         void CheckApplicabilityL(
       
   389 #ifdef __SECURITY_PLATSEC_ARCH__        
       
   390                                   const RArray<TUid>& aTrusters );
       
   391 #else
       
   392                                   RArray<TUid>* aTrusters );
       
   393 #endif         
       
   394 
       
   395         /** 
       
   396         * Starts applicability updates and completes the message
       
   397         * @return void
       
   398         */
       
   399 
       
   400         void DoSetApplicability();
       
   401 
       
   402         /** 
       
   403         * Contains actual functions to update applicability
       
   404         * @return void
       
   405         */
       
   406 
       
   407         void DoSetApplicabilityL();
       
   408 
       
   409         /** 
       
   410         * Sets trust information for a certificate
       
   411         * @param  aCertInfo   (IN) The certificate that the update concern
       
   412         * @param  aTrusted  (IN) Trusted info for the certificate, values
       
   413         *         are true (trusted) or false (not trusted)
       
   414         * @param  aStatus (IN/OUT) This is completed with the return result 
       
   415         *         when the operation has completed.
       
   416         * @return void
       
   417         */
       
   418         void DoSetTrustL();
       
   419 
       
   420         // General function to free unified key storage objects
       
   421         void FreeUnifiedKeyStore();
       
   422         
       
   423         // RunL phase where LoadMappingsL is called
       
   424         void DoInitializeLoadMappingsL();
       
   425 
       
   426         // RunL phase where trust settings are loaded
       
   427         void DoInitializeLoadTrustSettingsStartL();
       
   428 
       
   429         // RunL phase where trust settings call are waited
       
   430         void DoInitializeLoadTrustSettingsWaitL();
       
   431 
       
   432         // RunL phase where key infos are fetched
       
   433         void DoGetKeyInfos();
       
   434 
       
   435         // RunL phase where list operation is actually done
       
   436         void DoListGoL();
       
   437 
       
   438         // RunL phase where list operation is actually started
       
   439         void DoInitializeGetCertListL();
       
   440 
       
   441         // RunL phase where list operation is started
       
   442         void DoList();
       
   443 
       
   444         // RunL phase where private key is checked
       
   445         void DoCheckCorrespondingPrivateKey();
       
   446 
       
   447         // RunL phase where delete from wim is checked
       
   448         void DoCheckDeleteFromWim();
       
   449 
       
   450         // Returns the status of token
       
   451         TBool TokenRemoved();
       
   452 
       
   453         /** 
       
   454         * Checks if token is removed or is this object active
       
   455         * @param  aStatus (IN/OUT) This is completed with the return result 
       
   456         *         when the operation has completed.
       
   457         * @return TBool
       
   458         */
       
   459         TBool EnteringAllowed( TRequestStatus& aStatus );
       
   460 
       
   461         // RunL phase for getting a certificate info
       
   462         void DoGetCert();
       
   463 
       
   464         // RunL phase for getting a certificate applications
       
   465         void DoApplications();
       
   466 
       
   467         // RunL phase for checking application applicability
       
   468         void DoIsApplicable();
       
   469 
       
   470         // RunL phase for checking certificate's trust info
       
   471         void DoTrusted();
       
   472 
       
   473         // RunL phase for retrieving certificate binary data
       
   474         void DoRetrieve();
       
   475 
       
   476         // RunL phase for adding a certificate
       
   477         void DoAdd();
       
   478 
       
   479         // RunL phase for certificate removal
       
   480         void DoRemove();
       
   481 
       
   482         // RunL phase for certificate trusted info
       
   483         void DoSetTrust();
       
   484 
       
   485         /** 
       
   486         * Cleans trusters array if leave occurs
       
   487         * @param  aTrusters (IN) An array of applications (trusters)
       
   488         * @return void
       
   489         */
       
   490         static void CleanTrustersArray( TAny* aTrusters );
       
   491 
       
   492     private: // Constructors
       
   493         
       
   494         /** 
       
   495         * The default constructor
       
   496         * @param  aToken   (IN) A reference of current token
       
   497         * @return None
       
   498         */
       
   499         CWimCertStore( CWimToken& aToken );
       
   500 
       
   501         // Second phase constructor
       
   502         void ConstructL();
       
   503 
       
   504     private: // Data
       
   505 
       
   506         // Reference to current token of this cert store interface. 
       
   507 
       
   508         CWimToken& iToken;
       
   509 
       
   510         // State flag for RunL
       
   511 
       
   512         enum TPhase
       
   513             {
       
   514             EInitializeGetCertList = 0,
       
   515             EInitializeLoadMappings,
       
   516             EInitializeLoadTrustSettingsStart,
       
   517             EInitializeLoadTrustSettingsWait,
       
   518             EList,
       
   519             EListGo,
       
   520             EGetKeyInfos,
       
   521             EGetCert,
       
   522             EApplications,
       
   523             EIsApplicable,
       
   524             ETrusted,
       
   525             ERetrieve,
       
   526             ERetrieveFromWim,
       
   527             ERetrieveWait,
       
   528             EGetCorrespondingPrivateKey,
       
   529             ECheckCorrespondingPrivateKey,
       
   530             EAdd,
       
   531             EAddToWim,
       
   532             ECheckAddToWim,
       
   533             ERemove,
       
   534             EWaitRemoveTrustSettings,
       
   535             EDeleteFromWim,
       
   536             ECheckDeleteFromWim,
       
   537             ESetApplicability,
       
   538             EWaitSetApplicability,
       
   539             ESetTrust,
       
   540             EWaitSetTrust,
       
   541             ECompleteMessage,
       
   542             EIdle
       
   543             };
       
   544 
       
   545         // Flag for internal state machine
       
   546         TPhase iPhase;
       
   547 
       
   548         // Save place for original state
       
   549         TPhase iPhaseOriginal;
       
   550 
       
   551         // Used for saving caller status 
       
   552         // This class don't own the pointed object
       
   553         TRequestStatus* iOriginalRequestStatus;
       
   554 
       
   555         // The list of certificates (mapping objects) contained in the 
       
   556         // trust store.
       
   557         // This class owns the pointed objects and is responsible
       
   558         // to release them in the end of this class life cycle.
       
   559         CWimCertStoreMappings* iCerts;
       
   560 
       
   561         // Temporal array for certificate infos. 
       
   562         // This array is used to fetch certificate infos from WimClient.
       
   563         // At first this class owns the pointed objects. Ownership is 
       
   564         // transferred to iCerts. See iCerts above.
       
   565         RPointerArray<CWimCertInfo> iCertInfos;
       
   566 
       
   567         // Temporal array for certificate info pointers
       
   568         // This array is used to append certificate infos in List operation
       
   569         // This class don't own the pointed objects
       
   570         RPointerArray<CCTCertInfo>* iCertsList;
       
   571 
       
   572         // Array for adding certificate applications to trust store
       
   573         // This class don't own the pointed objects
       
   574         RArray<TUid>* iCertificateApps;
       
   575 
       
   576         // Index for going through all certificates
       
   577         TInt iCertIndex;
       
   578 
       
   579         // Used for fetching and updating trust settings
       
   580         TBool iTrusted;
       
   581     
       
   582         // Used in List operation in order to use in RunL
       
   583         // This class don't own the pointed object.
       
   584         const CCertAttributeFilter* iFilter;
       
   585 
       
   586         // Used with unified key store to filter keys
       
   587         TCTKeyAttributeFilter iKeyFilter;   
       
   588 
       
   589         // Used with unified key store to save keys for a while
       
   590         RMPointerArray<CCTKeyInfo> iKeyInfos;
       
   591 
       
   592         // A pointer to unified key store
       
   593         // This class owns also the pointed object
       
   594         CUnifiedKeyStore* iUnifiedKeyStore;
       
   595 
       
   596         // Used in Retrieve operation in order to use in RunL
       
   597         // Points to whole certificate data string
       
   598         // This class don't own the pointed data
       
   599         TDes8* iEncodedCert;
       
   600 
       
   601         // The pointed object acts as a converter between
       
   602         // CWimCertStore interface and WimClient
       
   603         // This class owns the pointed object
       
   604         CWimCertConverter* iCWimCertConverter;
       
   605 
       
   606         // The pointed object acts as a database store for trust settings
       
   607         // This class owns the pointed object
       
   608         CWimTrustSettingsAPI* iCWimTrustSettingsStore;
       
   609 
       
   610         // A pointer to label of certificate to be added
       
   611         // This class don't own the pointed object
       
   612         const TDesC* iLabel;
       
   613 
       
   614         // A pointer to format of certificate to be added
       
   615         TCertificateFormat iFormat;
       
   616 
       
   617         // Owner type  of certificate to be added
       
   618         TCertificateOwnerType iCertificateOwnerType;
       
   619 
       
   620         // A pointer to subject key id of certificate to be added
       
   621         // This class don't own the pointed object
       
   622         const TKeyIdentifier* iSubjectKeyId;
       
   623 
       
   624         // A pointer to issuer key id of certificate to be added
       
   625         // This class don't own the pointed object
       
   626         const TKeyIdentifier* iIssuerKeyId;
       
   627 
       
   628         // A pointer to binary data of certificate to be added
       
   629         // This class don't own the pointed object
       
   630         const TDesC8* iCert;
       
   631 
       
   632         // A hash of subject key id of certificate to be added
       
   633         TKeyIdentifier iComputedSubjectKeyId;   
       
   634 
       
   635         // For the call of unified keystore.
       
   636         RFs iFs;
       
   637 
       
   638         // A pointer to user's certificate data area. Used during 
       
   639         // set active object. Not owned.
       
   640         CCTCertInfo** iCertInfo;
       
   641 
       
   642         // A pointer to user given certificate handle. Not owned.
       
   643         const TCTTokenObjectHandle* iHandle;
       
   644 
       
   645         // A pointer to user's certificate data area. Used during 
       
   646         // set active object. Not owned.
       
   647         const CCTCertInfo* iCertInfoReadOnly;
       
   648 
       
   649         // A pointer array application Uids
       
   650         RArray<TUid>* iApplications;
       
   651 
       
   652         // A place holder to application Uid
       
   653         TUid iApplication;
       
   654 
       
   655         // A pointer to boolean variable in user area. Not owned.
       
   656         TBool* iIsApplicable;
       
   657 
       
   658         // A pointer to boolean variable in user area. Not owned.
       
   659         TBool* iTrustedCert;
       
   660 
       
   661         // Place holder for certificate trusted info update
       
   662         TBool iTrustedValue;
       
   663 
       
   664         // Save old trust value for back up reason
       
   665         TBool iOldTrusted;
       
   666 
       
   667         // Pointer array for old applications. Ownership moved to mapping
       
   668         // if setting new applications fails.
       
   669         RArray<TUid>* iOldTrusters;
       
   670 
       
   671 };
       
   672 
       
   673 #endif      // CWIMCERTSTORE_H   
       
   674             
       
   675 // End of File