vpnengine/dmadpki/src/DmAdStore.cpp
changeset 0 33413c0669b9
child 22 9f4e37332ce5
equal deleted inserted replaced
-1:000000000000 0:33413c0669b9
       
     1 /*
       
     2 * Copyright (c) 2002-2008 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:   implementation of DmAdStore
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 
       
    20 #include "DmAdStore.h"
       
    21 #include "DmAdRtNodeData.h"
       
    22 #include "dmadutil.h"
       
    23 #include "vpnlogger.h"
       
    24 
       
    25 #include "pkcs12vpn.h"
       
    26     
       
    27 CDmAdStore* CDmAdStore::NewL(MDmAdCallBack* aDmAdCallBack)
       
    28     {
       
    29     TRACE("CDmAdStore::NewL");
       
    30     
       
    31     CDmAdStore *self = new (ELeave) CDmAdStore();
       
    32     CleanupStack::PushL(self);
       
    33     self->ConstructL(aDmAdCallBack);
       
    34     CleanupStack::Pop(self);
       
    35     return self;
       
    36     }
       
    37 
       
    38 void CDmAdStore::ConstructL(MDmAdCallBack* aDmAdCallBack)
       
    39     {
       
    40     TRACE("CDmAdStore::ConstructL");
       
    41             
       
    42     TInt status = iPkiServiceApi.Connect();
       
    43     DEBUG_LOG1(_L("Connect status: %d"), status);
       
    44     User::LeaveIfError(status);    
       
    45     iCert = CDmAdCert::NewL(iPkiServiceApi);
       
    46     iCertReq = CDmAdCertReq::NewL(iPkiServiceApi, aDmAdCallBack);
       
    47     iPrivKey = CDmAdPrivKey::NewL(iPkiServiceApi);    
       
    48     iPKCS12Obj = CDmAdPKCS12::NewL(iPkiServiceApi);
       
    49     }
       
    50     
       
    51 CDmAdStore::CDmAdStore()
       
    52     {
       
    53     TRACE("CDmAdStore::CDmAdStore");
       
    54     }
       
    55 
       
    56 CDmAdStore::~CDmAdStore()
       
    57     {
       
    58     TRACE("CDmAdStore::~CDmAdStore");
       
    59     
       
    60     iPkiServiceApi.Close();
       
    61     delete iCert;
       
    62     delete iCertReq;
       
    63     delete iPrivKey;
       
    64     delete iPKCS12Obj;
       
    65     }
       
    66     
       
    67 TBool CDmAdStore::FindRtNodeL(const TDesC8& aLuid, const TDesC8& aUri)
       
    68     {
       
    69     TRACE("CDmAdStore::FindRtNodeL");
       
    70     
       
    71     TDmAdUriType uriType = CDmAdRtNodeData::UriTypeL(aUri);
       
    72     switch (uriType)
       
    73         {
       
    74         case EDmAdUriTypeCert:
       
    75             return CertFindRtNodeL(aLuid, aUri);
       
    76         case EDmAdUriTypeCertReq:
       
    77             return CertReqFindRtNodeL(aLuid, aUri);
       
    78         case EDmAdUriTypePrivKey:
       
    79             return PrivKeyFindRtNodeL(aLuid, aUri);
       
    80         case EDmAdUriTypePKCS12:
       
    81             // For PKCS#12, a special case
       
    82             return EFalse;
       
    83         default:
       
    84             DEBUG_LOG(_L("Unexcepted URI type"));
       
    85             User::Leave(KErrGeneral);
       
    86             return EFalse;
       
    87         }
       
    88     }
       
    89 
       
    90 void CDmAdStore::LuidListL(const TDesC8& aUri, const TDesC8& aLuid, RPointerArray<HBufC8>& aLuidList)
       
    91     {
       
    92     TRACE("CDmAdStore::LuidListL");
       
    93     
       
    94     TDmAdUriType uriType = CDmAdRtNodeData::UriTypeL(aUri);
       
    95     switch (uriType)
       
    96         {
       
    97         case EDmAdUriTypeCert:
       
    98             CertLuidListL(aUri, aLuid, aLuidList);
       
    99             break;
       
   100         case EDmAdUriTypeCertReq:
       
   101             CertReqLuidListL(aUri, aLuid, aLuidList);
       
   102             break;
       
   103         case EDmAdUriTypePrivKey:
       
   104             PrivKeyLuidListL(aUri, aLuid, aLuidList);
       
   105             break;
       
   106         case EDmAdUriTypePKCS12:
       
   107             // For PKCS#12, a special case
       
   108             break;
       
   109         default:
       
   110             DEBUG_LOG(_L("CDmAdStore::LuidListLC: Unexcepted URI type"));
       
   111             User::Leave(KErrGeneral);
       
   112             break;
       
   113         }    
       
   114     }
       
   115     
       
   116 void CDmAdStore::FetchRtNodeL(CDmAdRtNode& aRtNode)
       
   117     {
       
   118     TRACE("CDmAdStore::FetchRtNodeL");
       
   119         
       
   120     TDmAdUriType uriType = aRtNode.Data()->UriType();
       
   121     switch (uriType)
       
   122         {
       
   123         case EDmAdUriTypeCert:
       
   124             CertFetchRtNodeL(aRtNode);
       
   125             break;
       
   126         case EDmAdUriTypeCertReq:
       
   127             CertReqFetchRtNodeL(aRtNode);
       
   128             break;
       
   129         case EDmAdUriTypePrivKey:
       
   130             PrivKeyFetchRtNodeL(aRtNode);
       
   131             break;
       
   132         case EDmAdUriTypePKCS12:
       
   133             // For PKCS#12, a special case
       
   134             break;
       
   135         default:
       
   136             DEBUG_LOG(_L("Unexcepted URI type"));
       
   137             User::Leave(KErrGeneral);
       
   138             break;
       
   139         }
       
   140     }
       
   141     
       
   142 void CDmAdStore::SaveTopLevelRtNodeL(CDmAdRtNode& aRtNode, CArrayPtr<CDmAdRtNode>& aChildRtNodes)
       
   143     {
       
   144     TRACE("CDmAdStore::SaveTopLevelRtNodeL");
       
   145     
       
   146     TDmAdUriType uriType = aRtNode.Data()->UriType();
       
   147     switch (uriType)
       
   148         {
       
   149         case EDmAdUriTypeCert:
       
   150             CertSaveTopLevelRtNodeL(aRtNode, aChildRtNodes);
       
   151             break;
       
   152         case EDmAdUriTypeCertReq:
       
   153             CertReqSaveTopLevelRtNodeL(aRtNode, aChildRtNodes);
       
   154             break;
       
   155         case EDmAdUriTypePKCS12:
       
   156             PKCS12SaveTopLevelRtNodeL(aRtNode, aChildRtNodes);
       
   157             break;
       
   158         default:
       
   159             DEBUG_LOG(_L("Unexcepted URI type"));
       
   160             User::Leave(KErrGeneral);
       
   161             break;
       
   162         }
       
   163     }
       
   164 
       
   165 void CDmAdStore::SaveChildLevelRtNodeL(CDmAdRtNode& aRtNode)
       
   166     {
       
   167     TRACE("CDmAdStore::SaveChildLevelRtNodeL");
       
   168     
       
   169     TDmAdUriType uriType = aRtNode.Data()->UriType();
       
   170     switch (uriType)
       
   171         {
       
   172         case EDmAdUriTypeCert:
       
   173             CertSaveChildLevelRtNodeL(aRtNode);
       
   174             break;
       
   175         case EDmAdUriTypeCertReq:
       
   176             CertReqSaveChildLevelRtNodeL(aRtNode);
       
   177             break;
       
   178         case EDmAdUriTypePKCS12:
       
   179             // For PKCS#12, a special case
       
   180             break;
       
   181         default:
       
   182             DEBUG_LOG(_L("Unexcepted URI type"));
       
   183             User::Leave(KErrGeneral);
       
   184             break;
       
   185         }
       
   186     }
       
   187 
       
   188 void CDmAdStore::DeleteRtNodeL(const TDesC8& aLuid, const TDesC8& aUri)
       
   189     {
       
   190     TRACE("CDmAdStore::DeleteRtNodeL");
       
   191     
       
   192     TDmAdUriType uriType = CDmAdRtNodeData::UriTypeL(aUri);
       
   193     switch (uriType)
       
   194         {
       
   195         case EDmAdUriTypeCert:
       
   196             CertDeleteRtNodeL(aLuid, aUri);
       
   197             break;
       
   198         case EDmAdUriTypeCertReq:
       
   199             CertReqDeleteRtNodeL(aLuid, aUri);
       
   200             break;
       
   201         case EDmAdUriTypePrivKey:
       
   202             PrivKeyDeleteRtNodeL(aLuid, aUri);
       
   203             break;
       
   204         case EDmAdUriTypePKCS12:
       
   205             // For PKCS#12, a special case
       
   206             break;
       
   207         default:
       
   208             DEBUG_LOG(_L("Unexcepted URI type"));
       
   209             User::Leave(KErrGeneral);
       
   210             break;
       
   211         }
       
   212     }
       
   213 
       
   214 //=========================================================================
       
   215 //=========================================================================
       
   216 
       
   217 TBool CDmAdStore::CertFindRtNodeL(const TDesC8& aLuid, const TDesC8& /*aUri*/)
       
   218     {
       
   219     TRACE("CDmAdStore::CertFindRtNodeL");
       
   220     
       
   221     TBool ret = EFalse;
       
   222     if (aLuid.Length() > 0)
       
   223         {
       
   224         if (iCert->FindL(aLuid))
       
   225             {
       
   226             ret = ETrue;
       
   227             }
       
   228         }
       
   229     return ret;
       
   230     }
       
   231 
       
   232 void CDmAdStore::CertLuidListL(const TDesC8& /*aUri*/, const TDesC8& /*aLuid*/, RPointerArray<HBufC8>& aLuidList)
       
   233     {
       
   234     TRACE("CDmAdStore::CertLuidListL");
       
   235     
       
   236     iCert->ListL(aLuidList);
       
   237     }
       
   238     
       
   239 void CDmAdStore::CertFetchRtNodeL(CDmAdRtNode& aRtNode)
       
   240     {
       
   241     TRACE("CDmAdStore::CertFetchRtNodeL");
       
   242     
       
   243     TPtrC8 luid(aRtNode.Luid());
       
   244     if (luid.Length() == 0)
       
   245         {
       
   246         DEBUG_LOG(_L("Zero length luid"));
       
   247         User::Leave(KErrNotFound);
       
   248         }
       
   249 
       
   250     CDmAdCertData* data = aRtNode.Data()->CertData();
       
   251     CDmAdCertParms* certParms = CDmAdCertParms::NewL();
       
   252     CleanupStack::PushL(certParms);
       
   253     iCert->FetchL(luid, *certParms);
       
   254     data->RestoreL(*certParms);
       
   255     CleanupStack::PopAndDestroy(certParms);
       
   256     }
       
   257     
       
   258 void CDmAdStore::CertSaveTopLevelRtNodeL(CDmAdRtNode& aRtNode, CArrayPtr<CDmAdRtNode>& aChildRtNodes)
       
   259     {
       
   260     TRACE("CDmAdStore::CertSaveTopLevelRtNodeL");
       
   261     
       
   262     if (aChildRtNodes.Count() > 0)
       
   263         {
       
   264         DEBUG_LOG(_L("ChildRtNode count > 0"));        
       
   265         User::Leave(KErrGeneral);
       
   266         }
       
   267 
       
   268     if (aRtNode.IsJustFetched())
       
   269         {
       
   270         return;
       
   271         }
       
   272     
       
   273     CDmAdCertData* data = aRtNode.Data()->CertData();
       
   274     
       
   275     CDmAdCertParms* certParms = CDmAdCertParms::NewL();
       
   276     CleanupStack::PushL(certParms);
       
   277     
       
   278     data->ToStoreL(*certParms);
       
   279 
       
   280     if (aRtNode.IsSomeLeafAddedToRtNode())
       
   281         {
       
   282         HBufC8* luid = iCert->AddL(*certParms);
       
   283         CleanupStack::PushL(luid);
       
   284         aRtNode.SetLuidL(*luid);
       
   285         CleanupStack::PopAndDestroy(luid); 
       
   286         }
       
   287     else
       
   288         {
       
   289         iCert->UpdateL(aRtNode.Luid(), *certParms);
       
   290         }
       
   291     
       
   292     CleanupStack::PopAndDestroy(certParms);
       
   293     }
       
   294 
       
   295 void CDmAdStore::CertSaveChildLevelRtNodeL(CDmAdRtNode& /*aRtNode*/)
       
   296     {
       
   297     TRACE("CDmAdStore::CertSaveChildLevelRtNodeL");
       
   298     
       
   299     DEBUG_LOG(_L("Method not implemented"));
       
   300     User::Leave(KErrGeneral);
       
   301     }
       
   302 
       
   303 void CDmAdStore::CertDeleteRtNodeL(const TDesC8& aLuid, const TDesC8& /*aUri*/)
       
   304     {
       
   305     TRACE("CDmAdStore::CertDeleteRtNodeL");
       
   306     
       
   307     if (aLuid.Length() == 0)
       
   308         {
       
   309         DEBUG_LOG(_L("aLuid length is 0"));
       
   310         User::Leave(KErrNotFound);
       
   311         }
       
   312 
       
   313     iCert->DeleteL(aLuid);
       
   314     }
       
   315 
       
   316 //=========================================================================
       
   317 //=========================================================================
       
   318 
       
   319 TBool CDmAdStore::CertReqFindRtNodeL(const TDesC8& aLuid, const TDesC8& /*aUri*/)
       
   320     {
       
   321     TRACE("CDmAdStore::CertReqFindRtNodeL");
       
   322     
       
   323     TBool ret = EFalse;
       
   324     if (aLuid.Length() > 0)
       
   325         {
       
   326         if (iCertReq->FindL(aLuid))
       
   327             {
       
   328             ret = ETrue;
       
   329             }
       
   330         }
       
   331     return ret;
       
   332     }
       
   333 
       
   334 void CDmAdStore::CertReqLuidListL(const TDesC8& /*aUri*/, const TDesC8& /*aLuid*/,RPointerArray<HBufC8>& aLuidList)
       
   335     {
       
   336     TRACE("CDmAdStore::CertReqLuidListL");
       
   337     
       
   338     iCertReq->ListL(aLuidList);
       
   339     }
       
   340     
       
   341 void CDmAdStore::CertReqFetchRtNodeL(CDmAdRtNode& aRtNode)
       
   342     {
       
   343     TRACE("CDmAdStore::CertReqFetchRtNodeL");
       
   344     
       
   345     TPtrC8 luid(aRtNode.Luid());
       
   346     if (luid.Length() == 0)
       
   347         {
       
   348         DEBUG_LOG(_L("luid length is 0"));
       
   349         User::Leave(KErrNotFound);
       
   350         }
       
   351 
       
   352     CDmAdCertReqData* data = aRtNode.Data()->CertReqData();
       
   353     CDmAdCertReqParms* CertReqParms = CDmAdCertReqParms::NewL();
       
   354     CleanupStack::PushL(CertReqParms);
       
   355     iCertReq->FetchL(luid, *CertReqParms);
       
   356     data->RestoreL(*CertReqParms);
       
   357     CleanupStack::PopAndDestroy(CertReqParms);
       
   358     }
       
   359     
       
   360 void CDmAdStore::CertReqSaveTopLevelRtNodeL(CDmAdRtNode& aRtNode, CArrayPtr<CDmAdRtNode>& aChildRtNodes)
       
   361     {
       
   362     TRACE("CDmAdStore::CertReqSaveTopLevelRtNodeL");
       
   363     
       
   364     if (aChildRtNodes.Count() > 0)
       
   365         {
       
   366         DEBUG_LOG(_L("aChildRtNodes count > 0"));
       
   367         User::Leave(KErrGeneral);
       
   368         }
       
   369 
       
   370     if (aRtNode.IsJustFetched())
       
   371         {
       
   372         return;
       
   373         }
       
   374     
       
   375     CDmAdCertReqData* data = aRtNode.Data()->CertReqData();
       
   376     
       
   377     CDmAdCertReqParms* CertReqParms = CDmAdCertReqParms::NewL();
       
   378     CleanupStack::PushL(CertReqParms);
       
   379     
       
   380     data->ToStoreL(*CertReqParms);
       
   381 
       
   382     if (aRtNode.IsSomeLeafAddedToRtNode())
       
   383         {
       
   384         HBufC8* luid = iCertReq->AddL(*CertReqParms);
       
   385         CleanupStack::PushL(luid);
       
   386         aRtNode.SetLuidL(*luid);
       
   387         CleanupStack::PopAndDestroy(luid);
       
   388         }
       
   389     else
       
   390         {
       
   391         DEBUG_LOG(_L("aRtNode.IsSomeLeafAddedToRtNode() returned false"));
       
   392         User::Leave(KErrGeneral);
       
   393         /*
       
   394         //iCertReq->UpdateL(aRtNode.Luid(), *CertReqParms);
       
   395         CertReqDeleteRtNodeL(aRtNode.Luid(), aRtNode.Uri());
       
   396         
       
   397         HBufC8* luid = iCertReq->AddL(*CertReqParms);
       
   398         CleanupStack::PushL(luid);
       
   399         aRtNode.SetLuidL(*luid);
       
   400         iCallBack->SetMappingL(aRtNode.Uri(), aRtNode.Luid());
       
   401         CleanupStack::PopAndDestroy(); //luid
       
   402         */
       
   403         }
       
   404     
       
   405     CleanupStack::PopAndDestroy(CertReqParms);
       
   406     }
       
   407 
       
   408 void CDmAdStore::CertReqSaveChildLevelRtNodeL(CDmAdRtNode& /*aRtNode*/)
       
   409     {
       
   410     TRACE("CDmAdStore::CertReqSaveChildLevelRtNodeL");
       
   411     
       
   412     DEBUG_LOG(_L("Method not implemented"));
       
   413     User::Leave(KErrGeneral);
       
   414     }
       
   415 
       
   416 void CDmAdStore::CertReqDeleteRtNodeL(const TDesC8& aLuid, const TDesC8& /*aUri*/)
       
   417     {
       
   418     TRACE("CDmAdStore::CertReqDeleteRtNodeL");
       
   419     
       
   420     if (aLuid.Length() == 0)
       
   421         {
       
   422         DEBUG_LOG(_L("aLuid length is 0"));        
       
   423         User::Leave(KErrNotFound);
       
   424         }
       
   425 
       
   426     iCertReq->DeleteL(aLuid);
       
   427     }
       
   428 
       
   429 //=========================================================================
       
   430 //=========================================================================
       
   431 
       
   432 TBool CDmAdStore::PrivKeyFindRtNodeL(const TDesC8& aLuid, const TDesC8& /*aUri*/)
       
   433     {
       
   434     TRACE("CDmAdStore::PrivKeyFindRtNodeL");
       
   435     
       
   436     TBool ret = EFalse;
       
   437     if (aLuid.Length() > 0)
       
   438         {
       
   439         if (iPrivKey->FindL(aLuid))
       
   440             {
       
   441             ret = ETrue;
       
   442             }
       
   443         }
       
   444     return ret;
       
   445     }
       
   446 
       
   447 void CDmAdStore::PrivKeyLuidListL(const TDesC8& /*aUri*/, const TDesC8& /*aLuid*/, RPointerArray<HBufC8>& aLuidList)
       
   448     {
       
   449     TRACE("CDmAdStore::PrivKeyLuidListL");
       
   450     iPrivKey->ListL(aLuidList);
       
   451     }
       
   452     
       
   453 void CDmAdStore::PrivKeyFetchRtNodeL(CDmAdRtNode& aRtNode)
       
   454     {
       
   455     TRACE("CDmAdStore::PrivKeyFetchRtNodeL");
       
   456     
       
   457     TPtrC8 luid(aRtNode.Luid());
       
   458     if (luid.Length() == 0)
       
   459         {
       
   460         DEBUG_LOG(_L("aLuid length is 0"));        
       
   461         User::Leave(KErrNotFound);
       
   462         }
       
   463 
       
   464     CDmAdPrivKeyData* data = aRtNode.Data()->PrivKeyData();
       
   465     CDmAdPrivKeyParms* PrivKeyParms = CDmAdPrivKeyParms::NewL();
       
   466     CleanupStack::PushL(PrivKeyParms);
       
   467     iPrivKey->FetchL(luid, *PrivKeyParms);
       
   468     data->RestoreL(*PrivKeyParms);
       
   469     CleanupStack::PopAndDestroy(PrivKeyParms);
       
   470     }
       
   471     
       
   472 
       
   473 void CDmAdStore::PrivKeyDeleteRtNodeL(const TDesC8& aLuid, const TDesC8& /*aUri*/)
       
   474     {
       
   475     TRACE("CDmAdStore::PrivKeyDeleteRtNodeL");
       
   476     
       
   477     if (aLuid.Length() == 0)
       
   478         {
       
   479         DEBUG_LOG(_L("aLuid length is 0"));        
       
   480         User::Leave(KErrNotFound);
       
   481         }
       
   482 
       
   483     iPrivKey->DeleteL(aLuid);
       
   484     }
       
   485 
       
   486 //=========================================================================
       
   487 //=========================================================================
       
   488 
       
   489 // PKCS#12 handling
       
   490 void CDmAdStore::PKCS12SaveTopLevelRtNodeL(CDmAdRtNode& aRtNode,
       
   491                                CArrayPtr<CDmAdRtNode>& aChildRtNodes) 
       
   492     {
       
   493     TRACE("CDmAdStore::PKCS12SaveTopLevelRtNodeL");
       
   494 
       
   495     if (aChildRtNodes.Count() > 0)
       
   496         {
       
   497         DEBUG_LOG(_L("ChildRtNode count > 0"));        
       
   498         User::Leave(KErrGeneral);
       
   499         }
       
   500 
       
   501     CDmAdPKCS12Data* data = aRtNode.Data()->PKCS12Data();
       
   502     
       
   503     CDmAdPKCS12Parms* pkcs12Parms = CDmAdPKCS12Parms::NewL();
       
   504     CleanupStack::PushL(pkcs12Parms);
       
   505     
       
   506     // Extract parameters from data
       
   507     data->ToStoreL(*pkcs12Parms);
       
   508 
       
   509     // Store PKCS#12 object contents to PKI
       
   510     iPKCS12Obj->AddL(*pkcs12Parms);
       
   511 
       
   512     TPtrC8 uri = aRtNode.Uri();
       
   513     DEBUG_LOG1(_L8(" Setting LUID to '%S'"), &uri);
       
   514     aRtNode.SetLuidL(uri);
       
   515     
       
   516     CleanupStack::PopAndDestroy(pkcs12Parms);
       
   517     }
       
   518 
       
   519 //=========================================================================
       
   520 //=========================================================================
       
   521 void CDmAdStore::PkiLogonL()
       
   522     {
       
   523     TRACE("CDmAdStore::PkiLogonL");
       
   524     
       
   525     TRequestStatus requestStatus;
       
   526     iPkiServiceApi.Logon(requestStatus);
       
   527     User::WaitForRequest(requestStatus);
       
   528     TInt status = requestStatus.Int();
       
   529     if (status != KErrNone && status != KPKIErrKeyStoreEmpty)
       
   530         {
       
   531         DEBUG_LOG1(_L("status = %d"), status);        
       
   532         User::Leave(status);
       
   533         }
       
   534     }
       
   535 
       
   536 void CDmAdStore::PkiLogoffL()
       
   537     {
       
   538     TRACE("CDmAdStore::PkiLogoffL");
       
   539     
       
   540     TRequestStatus requestStatus;
       
   541     iPkiServiceApi.Logoff(requestStatus);
       
   542     User::WaitForRequest(requestStatus);
       
   543     TInt status = requestStatus.Int();
       
   544     if (status != KErrNone && status != KPKIErrKeyStoreEmpty)
       
   545         {
       
   546         DEBUG_LOG1(_L("status = %d"), status);        
       
   547         User::Leave(status);
       
   548         }
       
   549     }
       
   550 
       
   551 void CDmAdStore::SetStoreTypeL(TInt aStore, TPkiServiceStoreType aStoreType)
       
   552     {
       
   553     TRACE("CDmAdStore::SetStoreTypeL");
       
   554     
       
   555     TInt status = iPkiServiceApi.SetStoreType(aStore, aStoreType);
       
   556     if (status != KErrNone)
       
   557         {
       
   558         DEBUG_LOG1(_L("status = %d"), status);        
       
   559         User::Leave(status);
       
   560         }
       
   561     }