cpsecplugins/cpadvancedsecplugin/src/advsecsettingscertdetailsbuilder_symbian.cpp
author hgs
Thu, 14 Oct 2010 13:56:11 +0300
changeset 63 989397f9511c
permissions -rw-r--r--
201039_03
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
63
989397f9511c 201039_03
hgs
parents:
diff changeset
     1
/*
989397f9511c 201039_03
hgs
parents:
diff changeset
     2
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
989397f9511c 201039_03
hgs
parents:
diff changeset
     3
* All rights reserved.
989397f9511c 201039_03
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
989397f9511c 201039_03
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0""
989397f9511c 201039_03
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
989397f9511c 201039_03
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
989397f9511c 201039_03
hgs
parents:
diff changeset
     8
*
989397f9511c 201039_03
hgs
parents:
diff changeset
     9
* Initial Contributors:
989397f9511c 201039_03
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
989397f9511c 201039_03
hgs
parents:
diff changeset
    11
*
989397f9511c 201039_03
hgs
parents:
diff changeset
    12
* Contributors:
989397f9511c 201039_03
hgs
parents:
diff changeset
    13
*
989397f9511c 201039_03
hgs
parents:
diff changeset
    14
* Description:  Helper class to construct certificate details
989397f9511c 201039_03
hgs
parents:
diff changeset
    15
*
989397f9511c 201039_03
hgs
parents:
diff changeset
    16
*/
989397f9511c 201039_03
hgs
parents:
diff changeset
    17
989397f9511c 201039_03
hgs
parents:
diff changeset
    18
#include "advsecsettingscertdetailsbuilder_symbian.h"
989397f9511c 201039_03
hgs
parents:
diff changeset
    19
#include "advsecsettingscertificatemodel.h"
989397f9511c 201039_03
hgs
parents:
diff changeset
    20
#include "advsecsettingstrustedcertusageuids.h"
989397f9511c 201039_03
hgs
parents:
diff changeset
    21
#include "advsecsettingsstoreuids.h"
989397f9511c 201039_03
hgs
parents:
diff changeset
    22
#include <unifiedkeystore.h>            // CUnifiedKeyStore
989397f9511c 201039_03
hgs
parents:
diff changeset
    23
#include <mctkeystore.h>                // CCTKeyInfo
989397f9511c 201039_03
hgs
parents:
diff changeset
    24
#include <cctcertinfo.h>                // CCTCertInfo
989397f9511c 201039_03
hgs
parents:
diff changeset
    25
#include <x509cert.h>                   // CX509Certificate
989397f9511c 201039_03
hgs
parents:
diff changeset
    26
#include <X509CertNameParser.h>         // X509CertNameParser
989397f9511c 201039_03
hgs
parents:
diff changeset
    27
#include <hash.h>                       // MD5 fingerprint
989397f9511c 201039_03
hgs
parents:
diff changeset
    28
#include <QString>
989397f9511c 201039_03
hgs
parents:
diff changeset
    29
#include <QStringList>
989397f9511c 201039_03
hgs
parents:
diff changeset
    30
#include <QDateTime>
989397f9511c 201039_03
hgs
parents:
diff changeset
    31
#include <HbTextResolverSymbian>
989397f9511c 201039_03
hgs
parents:
diff changeset
    32
989397f9511c 201039_03
hgs
parents:
diff changeset
    33
// TODO: fix this
989397f9511c 201039_03
hgs
parents:
diff changeset
    34
#include "../../../pkiutilities/DeviceToken/inc/TrustedSitesStore.h"    // CTrustSitesStore
989397f9511c 201039_03
hgs
parents:
diff changeset
    35
989397f9511c 201039_03
hgs
parents:
diff changeset
    36
_LIT(KLocAlgorithmRSA, "txt_certificate_list_rsa");
989397f9511c 201039_03
hgs
parents:
diff changeset
    37
_LIT(KLocAlgorithmDSA, "txt_certificate_list_dsa");
989397f9511c 201039_03
hgs
parents:
diff changeset
    38
_LIT(KLocAlgorithmDH, "txt_certificate_list_dh");
989397f9511c 201039_03
hgs
parents:
diff changeset
    39
_LIT(KLocAlgorithmMD2, "txt_certificate_list_md2");
989397f9511c 201039_03
hgs
parents:
diff changeset
    40
_LIT(KLocAlgorithmMD5, "txt_certificate_list_md5");
989397f9511c 201039_03
hgs
parents:
diff changeset
    41
_LIT(KLocAlgorithmSHA1, "txt_certificate_list_sha1");
989397f9511c 201039_03
hgs
parents:
diff changeset
    42
_LIT(KLocAlgorithmSHA2, "txt_certificate_list_sha2");
989397f9511c 201039_03
hgs
parents:
diff changeset
    43
_LIT(KLocAlgorithmUnknown, "txt_certificate_list_unknown");
989397f9511c 201039_03
hgs
parents:
diff changeset
    44
_LIT(KLocCertTypeX509, "txt_certificate_list_x509");
989397f9511c 201039_03
hgs
parents:
diff changeset
    45
_LIT(KLocCertTypeUnknown, "txt_certificate_list_unknown");
989397f9511c 201039_03
hgs
parents:
diff changeset
    46
989397f9511c 201039_03
hgs
parents:
diff changeset
    47
const QString KFormatForAlgorithmNames = "%1%2";
989397f9511c 201039_03
hgs
parents:
diff changeset
    48
const QString KTrustedSitesSeparator = ", ";
989397f9511c 201039_03
hgs
parents:
diff changeset
    49
989397f9511c 201039_03
hgs
parents:
diff changeset
    50
const int KCertManUiContinuousHexString = 0;
989397f9511c 201039_03
hgs
parents:
diff changeset
    51
const int KCertManUiTwoDigitsInBlock = 2;
989397f9511c 201039_03
hgs
parents:
diff changeset
    52
989397f9511c 201039_03
hgs
parents:
diff changeset
    53
// implemented in advsecsettingssecuritymodulemodel_symbian_p.cpp
989397f9511c 201039_03
hgs
parents:
diff changeset
    54
QString CopyStringL(const TDesC16 &aDes16);
989397f9511c 201039_03
hgs
parents:
diff changeset
    55
QString CopyStringL(const TDesC8 &aDes8);
989397f9511c 201039_03
hgs
parents:
diff changeset
    56
989397f9511c 201039_03
hgs
parents:
diff changeset
    57
989397f9511c 201039_03
hgs
parents:
diff changeset
    58
// ======== LOCAL FUNCTIONS ========
989397f9511c 201039_03
hgs
parents:
diff changeset
    59
989397f9511c 201039_03
hgs
parents:
diff changeset
    60
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
    61
// CopyDateL()
989397f9511c 201039_03
hgs
parents:
diff changeset
    62
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
    63
//
989397f9511c 201039_03
hgs
parents:
diff changeset
    64
void CopyDateL(const TDateTime& aFromDateTime, QDateTime& aToDateTime)
989397f9511c 201039_03
hgs
parents:
diff changeset
    65
{
989397f9511c 201039_03
hgs
parents:
diff changeset
    66
    QT_TRYCATCH_LEAVING(
989397f9511c 201039_03
hgs
parents:
diff changeset
    67
        QDate date(aFromDateTime.Year(), aFromDateTime.Month()+1, aFromDateTime.Day()+1);
989397f9511c 201039_03
hgs
parents:
diff changeset
    68
        aToDateTime.setDate(date));
989397f9511c 201039_03
hgs
parents:
diff changeset
    69
}
989397f9511c 201039_03
hgs
parents:
diff changeset
    70
989397f9511c 201039_03
hgs
parents:
diff changeset
    71
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
    72
// HexFormattedStringL()
989397f9511c 201039_03
hgs
parents:
diff changeset
    73
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
    74
//
989397f9511c 201039_03
hgs
parents:
diff changeset
    75
QString HexFormattedStringL(const TDesC8& aDes, int blockSize = KCertManUiContinuousHexString)
989397f9511c 201039_03
hgs
parents:
diff changeset
    76
{
989397f9511c 201039_03
hgs
parents:
diff changeset
    77
    QString string;
989397f9511c 201039_03
hgs
parents:
diff changeset
    78
    int blockIndex = 1;
989397f9511c 201039_03
hgs
parents:
diff changeset
    79
    for (TInt index = 0; index < aDes.Length(); ++index) {
989397f9511c 201039_03
hgs
parents:
diff changeset
    80
        QString number;
989397f9511c 201039_03
hgs
parents:
diff changeset
    81
        QT_TRYCATCH_LEAVING(
989397f9511c 201039_03
hgs
parents:
diff changeset
    82
            number.sprintf("%02X", aDes[ index ]);
989397f9511c 201039_03
hgs
parents:
diff changeset
    83
            string.append(number));
989397f9511c 201039_03
hgs
parents:
diff changeset
    84
        if (blockIndex == blockSize) {
989397f9511c 201039_03
hgs
parents:
diff changeset
    85
            string.append(" ");
989397f9511c 201039_03
hgs
parents:
diff changeset
    86
            blockIndex = 1;
989397f9511c 201039_03
hgs
parents:
diff changeset
    87
        } else {
989397f9511c 201039_03
hgs
parents:
diff changeset
    88
            ++blockIndex;
989397f9511c 201039_03
hgs
parents:
diff changeset
    89
        }
989397f9511c 201039_03
hgs
parents:
diff changeset
    90
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
    91
    return string;
989397f9511c 201039_03
hgs
parents:
diff changeset
    92
}
989397f9511c 201039_03
hgs
parents:
diff changeset
    93
989397f9511c 201039_03
hgs
parents:
diff changeset
    94
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
    95
// ResetAndDestroyCleanup()
989397f9511c 201039_03
hgs
parents:
diff changeset
    96
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
    97
//
989397f9511c 201039_03
hgs
parents:
diff changeset
    98
QString Location(const TUid &aTokenType)
989397f9511c 201039_03
hgs
parents:
diff changeset
    99
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   100
    QString location;
989397f9511c 201039_03
hgs
parents:
diff changeset
   101
    switch (aTokenType.iUid) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   102
    // TODO: localized UI strings needed
989397f9511c 201039_03
hgs
parents:
diff changeset
   103
    case KAdvSecSettingsFileCertStore:
989397f9511c 201039_03
hgs
parents:
diff changeset
   104
    case KAdvSecSettingsFileKeyStore:
989397f9511c 201039_03
hgs
parents:
diff changeset
   105
    case KAdvSecSettingsTrustedServerCertStore:
989397f9511c 201039_03
hgs
parents:
diff changeset
   106
    case KAdvSecSettingsDeviceCertStore:
989397f9511c 201039_03
hgs
parents:
diff changeset
   107
    case KAdvSecSettingsDeviceKeyStore:
989397f9511c 201039_03
hgs
parents:
diff changeset
   108
    case KAdvSecSettingsSWICertStore:
989397f9511c 201039_03
hgs
parents:
diff changeset
   109
        //: Certificate details location, phone memory
989397f9511c 201039_03
hgs
parents:
diff changeset
   110
        location = QObject::tr("Phone memory");
989397f9511c 201039_03
hgs
parents:
diff changeset
   111
        break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   112
    case KAdvSecSettingsWIMCertAndKeyStore:
989397f9511c 201039_03
hgs
parents:
diff changeset
   113
        //: Certificate details location, SIM or WIM card
989397f9511c 201039_03
hgs
parents:
diff changeset
   114
        location = QObject::tr("Smart card");
989397f9511c 201039_03
hgs
parents:
diff changeset
   115
        break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   116
    default:
989397f9511c 201039_03
hgs
parents:
diff changeset
   117
        break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   118
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
   119
    return location;
989397f9511c 201039_03
hgs
parents:
diff changeset
   120
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   121
989397f9511c 201039_03
hgs
parents:
diff changeset
   122
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   123
// ResetAndDestroyCleanup()
989397f9511c 201039_03
hgs
parents:
diff changeset
   124
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   125
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   126
void ResetAndDestroyCleanup( TAny* aAny )
989397f9511c 201039_03
hgs
parents:
diff changeset
   127
    {
989397f9511c 201039_03
hgs
parents:
diff changeset
   128
    RPointerArray<HBufC>* array = reinterpret_cast<RPointerArray<HBufC> *>( aAny );
989397f9511c 201039_03
hgs
parents:
diff changeset
   129
    array->ResetAndDestroy();
989397f9511c 201039_03
hgs
parents:
diff changeset
   130
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
   131
989397f9511c 201039_03
hgs
parents:
diff changeset
   132
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   133
// CleanupResetAndDestroyPushL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   134
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   135
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   136
void CleanupResetAndDestroyPushL( RPointerArray<HBufC>& aArray )
989397f9511c 201039_03
hgs
parents:
diff changeset
   137
    {
989397f9511c 201039_03
hgs
parents:
diff changeset
   138
    TCleanupItem item( &ResetAndDestroyCleanup, &aArray );
989397f9511c 201039_03
hgs
parents:
diff changeset
   139
    CleanupStack::PushL( item );
989397f9511c 201039_03
hgs
parents:
diff changeset
   140
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
   141
989397f9511c 201039_03
hgs
parents:
diff changeset
   142
989397f9511c 201039_03
hgs
parents:
diff changeset
   143
// ======== MEMBER FUNCTIONS ========
989397f9511c 201039_03
hgs
parents:
diff changeset
   144
989397f9511c 201039_03
hgs
parents:
diff changeset
   145
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   146
// CAdvSecSettingsCertDetailsBuilder::NewL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   147
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   148
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   149
CAdvSecSettingsCertDetailsBuilder *CAdvSecSettingsCertDetailsBuilder::NewL(
989397f9511c 201039_03
hgs
parents:
diff changeset
   150
    RFs &aFs, CUnifiedCertStore &aCertStore)
989397f9511c 201039_03
hgs
parents:
diff changeset
   151
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   152
    CAdvSecSettingsCertDetailsBuilder *self = new(ELeave) CAdvSecSettingsCertDetailsBuilder(
989397f9511c 201039_03
hgs
parents:
diff changeset
   153
        aFs, aCertStore);
989397f9511c 201039_03
hgs
parents:
diff changeset
   154
    CleanupStack::PushL(self);
989397f9511c 201039_03
hgs
parents:
diff changeset
   155
    self->ConstructL();
989397f9511c 201039_03
hgs
parents:
diff changeset
   156
    CleanupStack::Pop(self);
989397f9511c 201039_03
hgs
parents:
diff changeset
   157
    return self;
989397f9511c 201039_03
hgs
parents:
diff changeset
   158
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   159
989397f9511c 201039_03
hgs
parents:
diff changeset
   160
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   161
// CAdvSecSettingsCertDetailsBuilder::~CAdvSecSettingsCertDetailsBuilder()
989397f9511c 201039_03
hgs
parents:
diff changeset
   162
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   163
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   164
CAdvSecSettingsCertDetailsBuilder::~CAdvSecSettingsCertDetailsBuilder()
989397f9511c 201039_03
hgs
parents:
diff changeset
   165
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   166
    Cancel();
989397f9511c 201039_03
hgs
parents:
diff changeset
   167
    delete iCertificate;
989397f9511c 201039_03
hgs
parents:
diff changeset
   168
    delete iCertificateUrl;
989397f9511c 201039_03
hgs
parents:
diff changeset
   169
    iKeys.Close();
989397f9511c 201039_03
hgs
parents:
diff changeset
   170
    delete iKeyFilter;
989397f9511c 201039_03
hgs
parents:
diff changeset
   171
    delete iKeyStore;
989397f9511c 201039_03
hgs
parents:
diff changeset
   172
989397f9511c 201039_03
hgs
parents:
diff changeset
   173
    // not owned
989397f9511c 201039_03
hgs
parents:
diff changeset
   174
    iDetails = NULL;
989397f9511c 201039_03
hgs
parents:
diff changeset
   175
    iClientStatus = NULL;
989397f9511c 201039_03
hgs
parents:
diff changeset
   176
    iCertInfo = NULL;
989397f9511c 201039_03
hgs
parents:
diff changeset
   177
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   178
989397f9511c 201039_03
hgs
parents:
diff changeset
   179
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   180
// CAdvSecSettingsCertDetailsBuilder::GetDetailsL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   181
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   182
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   183
void CAdvSecSettingsCertDetailsBuilder::GetDetailsL(const CCTCertInfo &aCert,
989397f9511c 201039_03
hgs
parents:
diff changeset
   184
    QMap<int,QString> &aDetails, TRequestStatus &aStatus)
989397f9511c 201039_03
hgs
parents:
diff changeset
   185
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   186
    if (!iClientStatus && (iState == ENotInitialized ||
989397f9511c 201039_03
hgs
parents:
diff changeset
   187
        iState == EInitializingKeyStore || iState == EIdle)) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   188
        iCertInfo = &aCert;
989397f9511c 201039_03
hgs
parents:
diff changeset
   189
        iDetails = &aDetails;
989397f9511c 201039_03
hgs
parents:
diff changeset
   190
        iClientStatus = &aStatus;
989397f9511c 201039_03
hgs
parents:
diff changeset
   191
        aStatus = KRequestPending;
989397f9511c 201039_03
hgs
parents:
diff changeset
   192
989397f9511c 201039_03
hgs
parents:
diff changeset
   193
        if (!iKeyStore) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   194
            InitializeKeyStoreL();  // Retrieving starts after initialization is complete
989397f9511c 201039_03
hgs
parents:
diff changeset
   195
        } else {
989397f9511c 201039_03
hgs
parents:
diff changeset
   196
            RetrieveCertificateL();
989397f9511c 201039_03
hgs
parents:
diff changeset
   197
        }
989397f9511c 201039_03
hgs
parents:
diff changeset
   198
    } else {
989397f9511c 201039_03
hgs
parents:
diff changeset
   199
        TRequestStatus *status = &aStatus;
989397f9511c 201039_03
hgs
parents:
diff changeset
   200
        User::RequestComplete(status, KErrGeneral);
989397f9511c 201039_03
hgs
parents:
diff changeset
   201
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
   202
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   203
989397f9511c 201039_03
hgs
parents:
diff changeset
   204
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   205
// CAdvSecSettingsCertDetailsBuilder::DoCancel()
989397f9511c 201039_03
hgs
parents:
diff changeset
   206
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   207
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   208
void CAdvSecSettingsCertDetailsBuilder::DoCancel()
989397f9511c 201039_03
hgs
parents:
diff changeset
   209
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   210
    switch (iState) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   211
    case EInitializingKeyStore:
989397f9511c 201039_03
hgs
parents:
diff changeset
   212
        iKeyStore->CancelInitialize();
989397f9511c 201039_03
hgs
parents:
diff changeset
   213
        iState = ENotInitialized;
989397f9511c 201039_03
hgs
parents:
diff changeset
   214
        break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   215
    case ERetrievingCertificate:
989397f9511c 201039_03
hgs
parents:
diff changeset
   216
        iCertStore.CancelRetrieve();
989397f9511c 201039_03
hgs
parents:
diff changeset
   217
        iState = EIdle;
989397f9511c 201039_03
hgs
parents:
diff changeset
   218
        break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   219
    case EListingKeys:
989397f9511c 201039_03
hgs
parents:
diff changeset
   220
        iKeyStore->CancelList();
989397f9511c 201039_03
hgs
parents:
diff changeset
   221
        iState = EIdle;
989397f9511c 201039_03
hgs
parents:
diff changeset
   222
        break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   223
    default:
989397f9511c 201039_03
hgs
parents:
diff changeset
   224
        break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   225
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
   226
    User::RequestComplete(iClientStatus, KErrCancel);
989397f9511c 201039_03
hgs
parents:
diff changeset
   227
    iClientStatus = NULL;
989397f9511c 201039_03
hgs
parents:
diff changeset
   228
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   229
989397f9511c 201039_03
hgs
parents:
diff changeset
   230
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   231
// CAdvSecSettingsCertDetailsBuilder::RunL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   232
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   233
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   234
void CAdvSecSettingsCertDetailsBuilder::RunL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   235
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   236
    User::LeaveIfError(iStatus.Int());
989397f9511c 201039_03
hgs
parents:
diff changeset
   237
989397f9511c 201039_03
hgs
parents:
diff changeset
   238
    switch (iState) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   239
    case EInitializingKeyStore:
989397f9511c 201039_03
hgs
parents:
diff changeset
   240
        RetrieveCertificateL();
989397f9511c 201039_03
hgs
parents:
diff changeset
   241
        break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   242
    case ERetrievingCertificate:
989397f9511c 201039_03
hgs
parents:
diff changeset
   243
        ListKeysL();
989397f9511c 201039_03
hgs
parents:
diff changeset
   244
        break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   245
    case EListingKeys:
989397f9511c 201039_03
hgs
parents:
diff changeset
   246
        ReturnCertificateDetailsL();
989397f9511c 201039_03
hgs
parents:
diff changeset
   247
        break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   248
    default:
989397f9511c 201039_03
hgs
parents:
diff changeset
   249
        ASSERT(EFalse);
989397f9511c 201039_03
hgs
parents:
diff changeset
   250
        break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   251
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
   252
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   253
989397f9511c 201039_03
hgs
parents:
diff changeset
   254
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   255
// CAdvSecSettingsCertDetailsBuilder::RunError()
989397f9511c 201039_03
hgs
parents:
diff changeset
   256
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   257
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   258
TInt CAdvSecSettingsCertDetailsBuilder::RunError(TInt aError)
989397f9511c 201039_03
hgs
parents:
diff changeset
   259
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   260
    User::RequestComplete(iClientStatus, aError);
989397f9511c 201039_03
hgs
parents:
diff changeset
   261
    if (iState != EInitializingKeyStore) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   262
        iState = EIdle;
989397f9511c 201039_03
hgs
parents:
diff changeset
   263
    } else {
989397f9511c 201039_03
hgs
parents:
diff changeset
   264
        iState = EFailed;
989397f9511c 201039_03
hgs
parents:
diff changeset
   265
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
   266
    return KErrNone;
989397f9511c 201039_03
hgs
parents:
diff changeset
   267
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   268
989397f9511c 201039_03
hgs
parents:
diff changeset
   269
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   270
// CAdvSecSettingsCertDetailsBuilder::()
989397f9511c 201039_03
hgs
parents:
diff changeset
   271
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   272
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   273
CAdvSecSettingsCertDetailsBuilder::CAdvSecSettingsCertDetailsBuilder(RFs &aFs,
989397f9511c 201039_03
hgs
parents:
diff changeset
   274
    CUnifiedCertStore &aCertStore) : CActive(CActive::EPriorityLow), iFs(aFs),
989397f9511c 201039_03
hgs
parents:
diff changeset
   275
    iCertStore(aCertStore), iCertUrlPtr(0, 0)
989397f9511c 201039_03
hgs
parents:
diff changeset
   276
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   277
    CActiveScheduler::Add(this);
989397f9511c 201039_03
hgs
parents:
diff changeset
   278
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   279
989397f9511c 201039_03
hgs
parents:
diff changeset
   280
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   281
// CAdvSecSettingsCertDetailsBuilder::ConstructL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   282
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   283
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   284
void CAdvSecSettingsCertDetailsBuilder::ConstructL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   285
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   286
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   287
989397f9511c 201039_03
hgs
parents:
diff changeset
   288
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   289
// CAdvSecSettingsCertDetailsBuilder::InitializeKeyStoreL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   290
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   291
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   292
void CAdvSecSettingsCertDetailsBuilder::InitializeKeyStoreL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   293
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   294
    ASSERT(!iKeyStore);
989397f9511c 201039_03
hgs
parents:
diff changeset
   295
    iKeyStore = CUnifiedKeyStore::NewL(iFs);
989397f9511c 201039_03
hgs
parents:
diff changeset
   296
    iKeyStore->Initialize(iStatus);
989397f9511c 201039_03
hgs
parents:
diff changeset
   297
    iState = EInitializingKeyStore;
989397f9511c 201039_03
hgs
parents:
diff changeset
   298
    SetActive();
989397f9511c 201039_03
hgs
parents:
diff changeset
   299
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   300
989397f9511c 201039_03
hgs
parents:
diff changeset
   301
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   302
// CAdvSecSettingsCertDetailsBuilder::RetrieveCertificateL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   303
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   304
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   305
void CAdvSecSettingsCertDetailsBuilder::RetrieveCertificateL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   306
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   307
    ASSERT(iCertInfo);
989397f9511c 201039_03
hgs
parents:
diff changeset
   308
    if (iCertificate) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   309
        delete iCertificate;
989397f9511c 201039_03
hgs
parents:
diff changeset
   310
        iCertificate = NULL;
989397f9511c 201039_03
hgs
parents:
diff changeset
   311
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
   312
    if (iCertificateUrl) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   313
        delete iCertificateUrl;
989397f9511c 201039_03
hgs
parents:
diff changeset
   314
        iCertificateUrl = NULL;
989397f9511c 201039_03
hgs
parents:
diff changeset
   315
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
   316
989397f9511c 201039_03
hgs
parents:
diff changeset
   317
    if (iCertInfo->CertificateFormat() == EX509Certificate) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   318
        iCertStore.Retrieve(*iCertInfo, iCertificate, iStatus);
989397f9511c 201039_03
hgs
parents:
diff changeset
   319
    } else {
989397f9511c 201039_03
hgs
parents:
diff changeset
   320
        iCertificateUrl = HBufC8::NewL(iCertInfo->Size());
989397f9511c 201039_03
hgs
parents:
diff changeset
   321
        iCertUrlPtr.Set(iCertificateUrl->Des());
989397f9511c 201039_03
hgs
parents:
diff changeset
   322
        iCertStore.Retrieve(*iCertInfo, iCertUrlPtr, iStatus);
989397f9511c 201039_03
hgs
parents:
diff changeset
   323
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
   324
    iState = ERetrievingCertificate;
989397f9511c 201039_03
hgs
parents:
diff changeset
   325
    SetActive();
989397f9511c 201039_03
hgs
parents:
diff changeset
   326
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   327
989397f9511c 201039_03
hgs
parents:
diff changeset
   328
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   329
// CAdvSecSettingsCertDetailsBuilder::ListKeysL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   330
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   331
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   332
void CAdvSecSettingsCertDetailsBuilder::ListKeysL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   333
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   334
    ASSERT(iKeyStore);
989397f9511c 201039_03
hgs
parents:
diff changeset
   335
    if (!iKeyFilter) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   336
        iKeyFilter = new TCTKeyAttributeFilter;
989397f9511c 201039_03
hgs
parents:
diff changeset
   337
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
   338
    iKeyFilter->iKeyId = iCertInfo->SubjectKeyId();
989397f9511c 201039_03
hgs
parents:
diff changeset
   339
    iKeys.Close();
989397f9511c 201039_03
hgs
parents:
diff changeset
   340
    iKeyStore->List(iKeys, *iKeyFilter, iStatus);
989397f9511c 201039_03
hgs
parents:
diff changeset
   341
    iState = EListingKeys;
989397f9511c 201039_03
hgs
parents:
diff changeset
   342
    SetActive();
989397f9511c 201039_03
hgs
parents:
diff changeset
   343
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   344
989397f9511c 201039_03
hgs
parents:
diff changeset
   345
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   346
// CAdvSecSettingsCertDetailsBuilder::ReturnCertificateDetailsL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   347
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   348
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   349
void CAdvSecSettingsCertDetailsBuilder::ReturnCertificateDetailsL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   350
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   351
    AppendLabelL();
989397f9511c 201039_03
hgs
parents:
diff changeset
   352
    AppendIssuerL();
989397f9511c 201039_03
hgs
parents:
diff changeset
   353
    AppendSubjectL();
989397f9511c 201039_03
hgs
parents:
diff changeset
   354
    AppendValidityPeriodL();
989397f9511c 201039_03
hgs
parents:
diff changeset
   355
    AppendLocationL();
989397f9511c 201039_03
hgs
parents:
diff changeset
   356
    AppendFormatL();
989397f9511c 201039_03
hgs
parents:
diff changeset
   357
    AppendKeyUsageL();
989397f9511c 201039_03
hgs
parents:
diff changeset
   358
    AppendAlgorithmL();
989397f9511c 201039_03
hgs
parents:
diff changeset
   359
    AppendSerialNumberL();
989397f9511c 201039_03
hgs
parents:
diff changeset
   360
    AppendFingerprintsL();
989397f9511c 201039_03
hgs
parents:
diff changeset
   361
    AppendPublicKeyL();
989397f9511c 201039_03
hgs
parents:
diff changeset
   362
    AppendTrustedSitesL();
989397f9511c 201039_03
hgs
parents:
diff changeset
   363
989397f9511c 201039_03
hgs
parents:
diff changeset
   364
    User::RequestComplete(iClientStatus, KErrNone);
989397f9511c 201039_03
hgs
parents:
diff changeset
   365
    iClientStatus = NULL;
989397f9511c 201039_03
hgs
parents:
diff changeset
   366
    iState = EIdle;
989397f9511c 201039_03
hgs
parents:
diff changeset
   367
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   368
989397f9511c 201039_03
hgs
parents:
diff changeset
   369
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   370
// CAdvSecSettingsCertDetailsBuilder::CertificateFormatStringL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   371
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   372
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   373
QString CAdvSecSettingsCertDetailsBuilder::CertificateFormatStringL(
989397f9511c 201039_03
hgs
parents:
diff changeset
   374
    const TCertificateFormat aFormat) const
989397f9511c 201039_03
hgs
parents:
diff changeset
   375
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   376
    HBufC* format = NULL;
989397f9511c 201039_03
hgs
parents:
diff changeset
   377
989397f9511c 201039_03
hgs
parents:
diff changeset
   378
    switch (aFormat) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   379
    case EX509Certificate:
989397f9511c 201039_03
hgs
parents:
diff changeset
   380
        format = HbTextResolverSymbian::LoadLC(KLocCertTypeX509);
989397f9511c 201039_03
hgs
parents:
diff changeset
   381
        break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   382
    case EWTLSCertificate:
989397f9511c 201039_03
hgs
parents:
diff changeset
   383
        // TODO: localized UI strings needed
989397f9511c 201039_03
hgs
parents:
diff changeset
   384
        format = _L("WTLS").AllocLC();
989397f9511c 201039_03
hgs
parents:
diff changeset
   385
        break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   386
    case EX968Certificate:
989397f9511c 201039_03
hgs
parents:
diff changeset
   387
        // TODO: localized UI strings needed
989397f9511c 201039_03
hgs
parents:
diff changeset
   388
        format = _L("X968").AllocLC();
989397f9511c 201039_03
hgs
parents:
diff changeset
   389
        break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   390
    case EX509CertificateUrl:
989397f9511c 201039_03
hgs
parents:
diff changeset
   391
        // TODO: localized UI strings needed
989397f9511c 201039_03
hgs
parents:
diff changeset
   392
        format = _L("X509 URL").AllocLC();
989397f9511c 201039_03
hgs
parents:
diff changeset
   393
        break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   394
    case EWTLSCertificateUrl:
989397f9511c 201039_03
hgs
parents:
diff changeset
   395
        // TODO: localized UI strings needed
989397f9511c 201039_03
hgs
parents:
diff changeset
   396
        format = _L("WTLS URL").AllocLC();
989397f9511c 201039_03
hgs
parents:
diff changeset
   397
        break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   398
    case EX968CertificateUrl:
989397f9511c 201039_03
hgs
parents:
diff changeset
   399
        // TODO: localized UI strings needed
989397f9511c 201039_03
hgs
parents:
diff changeset
   400
        format = _L("X968 URL").AllocLC();
989397f9511c 201039_03
hgs
parents:
diff changeset
   401
        break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   402
    case EUnknownCertificate:
989397f9511c 201039_03
hgs
parents:
diff changeset
   403
    default:
989397f9511c 201039_03
hgs
parents:
diff changeset
   404
        //: Unknown certificate format type
989397f9511c 201039_03
hgs
parents:
diff changeset
   405
        format = HbTextResolverSymbian::LoadLC(KLocCertTypeUnknown);
989397f9511c 201039_03
hgs
parents:
diff changeset
   406
        break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   407
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
   408
989397f9511c 201039_03
hgs
parents:
diff changeset
   409
    QString formatString = CopyStringL(*format);
989397f9511c 201039_03
hgs
parents:
diff changeset
   410
    CleanupStack::PopAndDestroy(format);
989397f9511c 201039_03
hgs
parents:
diff changeset
   411
    return formatString;
989397f9511c 201039_03
hgs
parents:
diff changeset
   412
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   413
989397f9511c 201039_03
hgs
parents:
diff changeset
   414
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   415
// CAdvSecSettingsCertDetailsBuilder::AlgorithmNameStringL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   416
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   417
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   418
QString CAdvSecSettingsCertDetailsBuilder::AlgorithmNameStringL(
989397f9511c 201039_03
hgs
parents:
diff changeset
   419
    TAlgorithmId aAlgorithmId) const
989397f9511c 201039_03
hgs
parents:
diff changeset
   420
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   421
    HBufC* algorithm = NULL;
989397f9511c 201039_03
hgs
parents:
diff changeset
   422
989397f9511c 201039_03
hgs
parents:
diff changeset
   423
    switch (aAlgorithmId) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   424
    case ERSA:
989397f9511c 201039_03
hgs
parents:
diff changeset
   425
        algorithm = HbTextResolverSymbian::LoadLC(KLocAlgorithmRSA);
989397f9511c 201039_03
hgs
parents:
diff changeset
   426
        break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   427
    case EDSA:
989397f9511c 201039_03
hgs
parents:
diff changeset
   428
        algorithm = HbTextResolverSymbian::LoadLC(KLocAlgorithmDSA);
989397f9511c 201039_03
hgs
parents:
diff changeset
   429
        break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   430
    case EDH:
989397f9511c 201039_03
hgs
parents:
diff changeset
   431
        algorithm = HbTextResolverSymbian::LoadLC(KLocAlgorithmDH);
989397f9511c 201039_03
hgs
parents:
diff changeset
   432
        break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   433
    case EMD2:
989397f9511c 201039_03
hgs
parents:
diff changeset
   434
        algorithm = HbTextResolverSymbian::LoadLC(KLocAlgorithmMD2);
989397f9511c 201039_03
hgs
parents:
diff changeset
   435
        break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   436
    case EMD5:
989397f9511c 201039_03
hgs
parents:
diff changeset
   437
        algorithm = HbTextResolverSymbian::LoadLC(KLocAlgorithmMD5);
989397f9511c 201039_03
hgs
parents:
diff changeset
   438
        break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   439
    case ESHA1:
989397f9511c 201039_03
hgs
parents:
diff changeset
   440
        algorithm = HbTextResolverSymbian::LoadLC(KLocAlgorithmSHA1);
989397f9511c 201039_03
hgs
parents:
diff changeset
   441
        break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   442
    case ESHA224:
989397f9511c 201039_03
hgs
parents:
diff changeset
   443
    case ESHA256:
989397f9511c 201039_03
hgs
parents:
diff changeset
   444
    case ESHA384:
989397f9511c 201039_03
hgs
parents:
diff changeset
   445
    case ESHA512:
989397f9511c 201039_03
hgs
parents:
diff changeset
   446
        algorithm = HbTextResolverSymbian::LoadLC(KLocAlgorithmSHA2);
989397f9511c 201039_03
hgs
parents:
diff changeset
   447
        break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   448
    default:
989397f9511c 201039_03
hgs
parents:
diff changeset
   449
        break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   450
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
   451
989397f9511c 201039_03
hgs
parents:
diff changeset
   452
    QString algorithmName;
989397f9511c 201039_03
hgs
parents:
diff changeset
   453
    if (algorithm) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   454
        algorithmName = CopyStringL(*algorithm);
989397f9511c 201039_03
hgs
parents:
diff changeset
   455
        CleanupStack::PopAndDestroy(algorithm);
989397f9511c 201039_03
hgs
parents:
diff changeset
   456
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
   457
    return algorithmName;
989397f9511c 201039_03
hgs
parents:
diff changeset
   458
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   459
989397f9511c 201039_03
hgs
parents:
diff changeset
   460
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   461
// CAdvSecSettingsCertDetailsBuilder::AppendLabelL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   462
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   463
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   464
void CAdvSecSettingsCertDetailsBuilder::AppendLabelL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   465
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   466
    ASSERT(iCertInfo);
989397f9511c 201039_03
hgs
parents:
diff changeset
   467
    HBufC *label = NULL;
989397f9511c 201039_03
hgs
parents:
diff changeset
   468
    if (iCertInfo->CertificateFormat() == EX509Certificate) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   469
        CX509Certificate *cert = static_cast<CX509Certificate*>(iCertificate);
989397f9511c 201039_03
hgs
parents:
diff changeset
   470
        HBufC* secondaryName = NULL;
989397f9511c 201039_03
hgs
parents:
diff changeset
   471
        X509CertNameParser::PrimaryAndSecondaryNameL(*cert, label, secondaryName);
989397f9511c 201039_03
hgs
parents:
diff changeset
   472
        delete secondaryName;
989397f9511c 201039_03
hgs
parents:
diff changeset
   473
    } else {
989397f9511c 201039_03
hgs
parents:
diff changeset
   474
        label = iCertInfo->Label().AllocL();
989397f9511c 201039_03
hgs
parents:
diff changeset
   475
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
   476
    CleanupStack::PushL(label);
989397f9511c 201039_03
hgs
parents:
diff changeset
   477
    iDetails->insert(AdvSecSettingsCertificateModel::Label, CopyStringL(*label));
989397f9511c 201039_03
hgs
parents:
diff changeset
   478
    CleanupStack::PopAndDestroy(label);
989397f9511c 201039_03
hgs
parents:
diff changeset
   479
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   480
989397f9511c 201039_03
hgs
parents:
diff changeset
   481
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   482
// CAdvSecSettingsCertDetailsBuilder::AppendIssuerL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   483
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   484
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   485
void CAdvSecSettingsCertDetailsBuilder::AppendIssuerL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   486
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   487
    if (iCertificate) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   488
        HBufC *issuer = NULL;
989397f9511c 201039_03
hgs
parents:
diff changeset
   489
        ASSERT(iCertInfo);
989397f9511c 201039_03
hgs
parents:
diff changeset
   490
        if (iCertInfo->CertificateFormat() == EX509Certificate) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   491
            CX509Certificate* cert = static_cast<CX509Certificate*>( iCertificate );
989397f9511c 201039_03
hgs
parents:
diff changeset
   492
            X509CertNameParser::IssuerFullNameL(*cert, issuer);
989397f9511c 201039_03
hgs
parents:
diff changeset
   493
        } else {
989397f9511c 201039_03
hgs
parents:
diff changeset
   494
            issuer = iCertificate->IssuerL();
989397f9511c 201039_03
hgs
parents:
diff changeset
   495
        }
989397f9511c 201039_03
hgs
parents:
diff changeset
   496
        CleanupStack::PushL(issuer);
989397f9511c 201039_03
hgs
parents:
diff changeset
   497
        iDetails->insert(AdvSecSettingsCertificateModel::Issuer, CopyStringL(*issuer));
989397f9511c 201039_03
hgs
parents:
diff changeset
   498
        CleanupStack::PopAndDestroy(issuer);
989397f9511c 201039_03
hgs
parents:
diff changeset
   499
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
   500
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   501
989397f9511c 201039_03
hgs
parents:
diff changeset
   502
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   503
// CAdvSecSettingsCertDetailsBuilder::AppendSubjectL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   504
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   505
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   506
void CAdvSecSettingsCertDetailsBuilder::AppendSubjectL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   507
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   508
    if (iCertificate) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   509
        HBufC *subject = NULL;
989397f9511c 201039_03
hgs
parents:
diff changeset
   510
        ASSERT(iCertInfo);
989397f9511c 201039_03
hgs
parents:
diff changeset
   511
        if (iCertInfo->CertificateFormat() == EX509Certificate) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   512
            CX509Certificate* cert = static_cast<CX509Certificate*>( iCertificate );
989397f9511c 201039_03
hgs
parents:
diff changeset
   513
            X509CertNameParser::SubjectFullNameL(*cert, subject);
989397f9511c 201039_03
hgs
parents:
diff changeset
   514
        } else {
989397f9511c 201039_03
hgs
parents:
diff changeset
   515
            subject = iCertificate->SubjectL();
989397f9511c 201039_03
hgs
parents:
diff changeset
   516
        }
989397f9511c 201039_03
hgs
parents:
diff changeset
   517
        CleanupStack::PushL(subject);
989397f9511c 201039_03
hgs
parents:
diff changeset
   518
        iDetails->insert(AdvSecSettingsCertificateModel::Subject, CopyStringL(*subject));
989397f9511c 201039_03
hgs
parents:
diff changeset
   519
        CleanupStack::PopAndDestroy(subject);
989397f9511c 201039_03
hgs
parents:
diff changeset
   520
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
   521
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   522
989397f9511c 201039_03
hgs
parents:
diff changeset
   523
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   524
// CAdvSecSettingsCertDetailsBuilder::AppendValidityPeriodL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   525
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   526
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   527
void CAdvSecSettingsCertDetailsBuilder::AppendValidityPeriodL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   528
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   529
    if (iCertificate) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   530
        CValidityPeriod validityPeriod(iCertificate->ValidityPeriod());
989397f9511c 201039_03
hgs
parents:
diff changeset
   531
989397f9511c 201039_03
hgs
parents:
diff changeset
   532
        TDateTime sValidFrom(validityPeriod.Start().DateTime());
989397f9511c 201039_03
hgs
parents:
diff changeset
   533
        QDateTime qValidFrom;
989397f9511c 201039_03
hgs
parents:
diff changeset
   534
        CopyDateL(sValidFrom, qValidFrom);
989397f9511c 201039_03
hgs
parents:
diff changeset
   535
        QString validFrom(qValidFrom.toString(Qt::DefaultLocaleShortDate));
989397f9511c 201039_03
hgs
parents:
diff changeset
   536
        iDetails->insert(AdvSecSettingsCertificateModel::ValidFrom, validFrom);
989397f9511c 201039_03
hgs
parents:
diff changeset
   537
989397f9511c 201039_03
hgs
parents:
diff changeset
   538
        TDateTime sValidTo(validityPeriod.Finish().DateTime());
989397f9511c 201039_03
hgs
parents:
diff changeset
   539
        QDateTime qValidTo;
989397f9511c 201039_03
hgs
parents:
diff changeset
   540
        CopyDateL(sValidTo, qValidTo);
989397f9511c 201039_03
hgs
parents:
diff changeset
   541
        QString validTo(qValidTo.toString(Qt::DefaultLocaleShortDate));
989397f9511c 201039_03
hgs
parents:
diff changeset
   542
        iDetails->insert(AdvSecSettingsCertificateModel::ValidTo, validTo);
989397f9511c 201039_03
hgs
parents:
diff changeset
   543
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
   544
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   545
989397f9511c 201039_03
hgs
parents:
diff changeset
   546
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   547
// CAdvSecSettingsCertDetailsBuilder::()
989397f9511c 201039_03
hgs
parents:
diff changeset
   548
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   549
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   550
void CAdvSecSettingsCertDetailsBuilder::AppendLocationL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   551
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   552
    ASSERT(iCertInfo);
989397f9511c 201039_03
hgs
parents:
diff changeset
   553
    QString location;
989397f9511c 201039_03
hgs
parents:
diff changeset
   554
    if (iCertificateUrl) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   555
        if (iCertInfo->CertificateFormat() == EX509CertificateUrl) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   556
            location = CopyStringL(*iCertificateUrl);
989397f9511c 201039_03
hgs
parents:
diff changeset
   557
        }
989397f9511c 201039_03
hgs
parents:
diff changeset
   558
    } else {
989397f9511c 201039_03
hgs
parents:
diff changeset
   559
        location = Location(iCertInfo->Token().TokenType().Type());
989397f9511c 201039_03
hgs
parents:
diff changeset
   560
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
   561
    if (!location.isEmpty()) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   562
        iDetails->insert(AdvSecSettingsCertificateModel::Location, location);
989397f9511c 201039_03
hgs
parents:
diff changeset
   563
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
   564
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   565
989397f9511c 201039_03
hgs
parents:
diff changeset
   566
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   567
// CAdvSecSettingsCertDetailsBuilder::AppendFormatL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   568
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   569
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   570
void CAdvSecSettingsCertDetailsBuilder::AppendFormatL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   571
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   572
    ASSERT(iCertInfo);
989397f9511c 201039_03
hgs
parents:
diff changeset
   573
    QString certFormat = CertificateFormatStringL(iCertInfo->CertificateFormat());
989397f9511c 201039_03
hgs
parents:
diff changeset
   574
    iDetails->insert(AdvSecSettingsCertificateModel::Format, certFormat);
989397f9511c 201039_03
hgs
parents:
diff changeset
   575
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   576
989397f9511c 201039_03
hgs
parents:
diff changeset
   577
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   578
// CAdvSecSettingsCertDetailsBuilder::AppendKeyUsageL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   579
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   580
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   581
void CAdvSecSettingsCertDetailsBuilder::AppendKeyUsageL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   582
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   583
    // TODO: should be displayed only for user and device certicates
989397f9511c 201039_03
hgs
parents:
diff changeset
   584
    if (iKeys.Count()) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   585
        const TInt KFirstKeyIndex = 0;
989397f9511c 201039_03
hgs
parents:
diff changeset
   586
        // TODO: localized UI strings needed
989397f9511c 201039_03
hgs
parents:
diff changeset
   587
989397f9511c 201039_03
hgs
parents:
diff changeset
   588
        // Key Usage
989397f9511c 201039_03
hgs
parents:
diff changeset
   589
        QString keyUsage;
989397f9511c 201039_03
hgs
parents:
diff changeset
   590
        TKeyUsagePKCS15 usage = iKeys[KFirstKeyIndex]->Usage();
989397f9511c 201039_03
hgs
parents:
diff changeset
   591
        if ((usage & EPKCS15UsageSign) || (usage & EPKCS15UsageSignRecover)) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   592
            keyUsage = QObject::tr("Client authentication");
989397f9511c 201039_03
hgs
parents:
diff changeset
   593
        }
989397f9511c 201039_03
hgs
parents:
diff changeset
   594
        if (usage & EPKCS15UsageNonRepudiation) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   595
            keyUsage = QObject::tr("Digital signing");
989397f9511c 201039_03
hgs
parents:
diff changeset
   596
        }
989397f9511c 201039_03
hgs
parents:
diff changeset
   597
        if (!keyUsage.isEmpty()) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   598
            iDetails->insert(AdvSecSettingsCertificateModel::KeyUsage, keyUsage);
989397f9511c 201039_03
hgs
parents:
diff changeset
   599
        }
989397f9511c 201039_03
hgs
parents:
diff changeset
   600
989397f9511c 201039_03
hgs
parents:
diff changeset
   601
        // Key Location
989397f9511c 201039_03
hgs
parents:
diff changeset
   602
        QString keyLocation;
989397f9511c 201039_03
hgs
parents:
diff changeset
   603
        keyLocation = Location(iKeys[KFirstKeyIndex]->Token().TokenType().Type());
989397f9511c 201039_03
hgs
parents:
diff changeset
   604
        if (!keyLocation.isEmpty()) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   605
            iDetails->insert(AdvSecSettingsCertificateModel::KeyLocation, keyLocation);
989397f9511c 201039_03
hgs
parents:
diff changeset
   606
        }
989397f9511c 201039_03
hgs
parents:
diff changeset
   607
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
   608
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   609
989397f9511c 201039_03
hgs
parents:
diff changeset
   610
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   611
// CAdvSecSettingsCertDetailsBuilder::AppendAlgorithmL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   612
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   613
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   614
void CAdvSecSettingsCertDetailsBuilder::AppendAlgorithmL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   615
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   616
    if (iCertificate) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   617
        QString digestAlg = AlgorithmNameStringL(
989397f9511c 201039_03
hgs
parents:
diff changeset
   618
            iCertificate->SigningAlgorithm().DigestAlgorithm().Algorithm());
989397f9511c 201039_03
hgs
parents:
diff changeset
   619
        QString asymmerticAlg = AlgorithmNameStringL(
989397f9511c 201039_03
hgs
parents:
diff changeset
   620
            iCertificate->SigningAlgorithm().AsymmetricAlgorithm().Algorithm());
989397f9511c 201039_03
hgs
parents:
diff changeset
   621
        if (digestAlg.isNull() || asymmerticAlg.isNull()) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   622
            HBufC* unknownAlg = HbTextResolverSymbian::LoadLC(KLocAlgorithmUnknown);
989397f9511c 201039_03
hgs
parents:
diff changeset
   623
            iDetails->insert(AdvSecSettingsCertificateModel::Algorithm, CopyStringL(*unknownAlg));
989397f9511c 201039_03
hgs
parents:
diff changeset
   624
            CleanupStack::PopAndDestroy(unknownAlg);
989397f9511c 201039_03
hgs
parents:
diff changeset
   625
        } else {
989397f9511c 201039_03
hgs
parents:
diff changeset
   626
            QString algorithm(KFormatForAlgorithmNames.arg(digestAlg, asymmerticAlg));
989397f9511c 201039_03
hgs
parents:
diff changeset
   627
            iDetails->insert(AdvSecSettingsCertificateModel::Algorithm, algorithm);
989397f9511c 201039_03
hgs
parents:
diff changeset
   628
        }
989397f9511c 201039_03
hgs
parents:
diff changeset
   629
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
   630
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   631
989397f9511c 201039_03
hgs
parents:
diff changeset
   632
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   633
// CAdvSecSettingsCertDetailsBuilder::AppendSerialNumberL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   634
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   635
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   636
void CAdvSecSettingsCertDetailsBuilder::AppendSerialNumberL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   637
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   638
    if (iCertificate) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   639
        TPtrC8 serialNumber = iCertificate->SerialNumber();
989397f9511c 201039_03
hgs
parents:
diff changeset
   640
        iDetails->insert(AdvSecSettingsCertificateModel::SerialNumber,
989397f9511c 201039_03
hgs
parents:
diff changeset
   641
                HexFormattedStringL(serialNumber));
989397f9511c 201039_03
hgs
parents:
diff changeset
   642
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
   643
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   644
989397f9511c 201039_03
hgs
parents:
diff changeset
   645
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   646
// CAdvSecSettingsCertDetailsBuilder::AppendFingerprintsL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   647
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   648
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   649
void CAdvSecSettingsCertDetailsBuilder::AppendFingerprintsL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   650
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   651
    if (iCertificate) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   652
        // Fingerprint (SHA1)
989397f9511c 201039_03
hgs
parents:
diff changeset
   653
        TPtrC8 sha1Fingerprint = iCertificate->Fingerprint();
989397f9511c 201039_03
hgs
parents:
diff changeset
   654
        iDetails->insert(AdvSecSettingsCertificateModel::FingerprintSHA1,
989397f9511c 201039_03
hgs
parents:
diff changeset
   655
                HexFormattedStringL(sha1Fingerprint, KCertManUiTwoDigitsInBlock));
989397f9511c 201039_03
hgs
parents:
diff changeset
   656
989397f9511c 201039_03
hgs
parents:
diff changeset
   657
        // Fingerprint (MD5)
989397f9511c 201039_03
hgs
parents:
diff changeset
   658
        CMD5* md5 = CMD5::NewL();
989397f9511c 201039_03
hgs
parents:
diff changeset
   659
        CleanupStack::PushL(md5);
989397f9511c 201039_03
hgs
parents:
diff changeset
   660
        const TInt KRsaFingerprintLength = 20;
989397f9511c 201039_03
hgs
parents:
diff changeset
   661
        TBuf8<KRsaFingerprintLength> rsaFingerprint = md5->Hash(iCertificate->Encoding());
989397f9511c 201039_03
hgs
parents:
diff changeset
   662
        iDetails->insert(AdvSecSettingsCertificateModel::FingerprintMD5,
989397f9511c 201039_03
hgs
parents:
diff changeset
   663
                HexFormattedStringL(rsaFingerprint, KCertManUiTwoDigitsInBlock));
989397f9511c 201039_03
hgs
parents:
diff changeset
   664
        CleanupStack::PopAndDestroy(md5);
989397f9511c 201039_03
hgs
parents:
diff changeset
   665
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
   666
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   667
989397f9511c 201039_03
hgs
parents:
diff changeset
   668
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   669
// CAdvSecSettingsCertDetailsBuilder::AppendPublicKeyL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   670
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   671
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   672
void CAdvSecSettingsCertDetailsBuilder::AppendPublicKeyL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   673
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   674
    if (iCertificate) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   675
        TPtrC8 publicKey = iCertificate->PublicKey().KeyData();
989397f9511c 201039_03
hgs
parents:
diff changeset
   676
        iDetails->insert(AdvSecSettingsCertificateModel::PublicKey,
989397f9511c 201039_03
hgs
parents:
diff changeset
   677
                HexFormattedStringL(publicKey, KCertManUiTwoDigitsInBlock));
989397f9511c 201039_03
hgs
parents:
diff changeset
   678
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
   679
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   680
989397f9511c 201039_03
hgs
parents:
diff changeset
   681
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   682
// CAdvSecSettingsCertDetailsBuilder::AppendTrustedSitesL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   683
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   684
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   685
void CAdvSecSettingsCertDetailsBuilder::AppendTrustedSitesL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   686
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   687
    if (iCertificate) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   688
        CTrustSitesStore* trustedSitesStore = CTrustSitesStore::NewL();
989397f9511c 201039_03
hgs
parents:
diff changeset
   689
        CleanupStack::PushL(trustedSitesStore);
989397f9511c 201039_03
hgs
parents:
diff changeset
   690
989397f9511c 201039_03
hgs
parents:
diff changeset
   691
        QStringList trustedSitesList;
989397f9511c 201039_03
hgs
parents:
diff changeset
   692
        RPointerArray<HBufC> trustedSitesArray;
989397f9511c 201039_03
hgs
parents:
diff changeset
   693
        CleanupResetAndDestroyPushL(trustedSitesArray);
989397f9511c 201039_03
hgs
parents:
diff changeset
   694
        trustedSitesStore->GetTrustedSitesL(iCertificate->Encoding(), trustedSitesArray);
989397f9511c 201039_03
hgs
parents:
diff changeset
   695
        TInt count = trustedSitesArray.Count();
989397f9511c 201039_03
hgs
parents:
diff changeset
   696
        if (count) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   697
            for (TInt index = 0; index < trustedSitesArray.Count(); index++) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   698
                trustedSitesList.append(CopyStringL(*(trustedSitesArray[index])));
989397f9511c 201039_03
hgs
parents:
diff changeset
   699
            }
989397f9511c 201039_03
hgs
parents:
diff changeset
   700
            // TODO: might be better to return trusted sites as a QStringList (in QVariant)
989397f9511c 201039_03
hgs
parents:
diff changeset
   701
            iDetails->insert(AdvSecSettingsCertificateModel::TrustedSites,
989397f9511c 201039_03
hgs
parents:
diff changeset
   702
                trustedSitesList.join(KTrustedSitesSeparator));
989397f9511c 201039_03
hgs
parents:
diff changeset
   703
        }
989397f9511c 201039_03
hgs
parents:
diff changeset
   704
        CleanupStack::PopAndDestroy(2, trustedSitesStore); // trustedSitesArray, trustedSitesStore
989397f9511c 201039_03
hgs
parents:
diff changeset
   705
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
   706
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   707