cpsecplugins/cpadvancedsecplugin/src/advsecsettingssecuritymodulemodel_symbian_p.cpp
author hgs
Wed, 20 Oct 2010 14:51:23 +0300
changeset 66 67b3e3c1fc87
parent 63 989397f9511c
permissions -rw-r--r--
201041
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:  Symbian specific private security module model
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 "advsecsettingssecuritymodulemodel_symbian_p.h"
989397f9511c 201039_03
hgs
parents:
diff changeset
    19
#include "advsecsettingssecuritymodulemodel.h"
989397f9511c 201039_03
hgs
parents:
diff changeset
    20
#include "advsecsettingsstoreuids.h"
989397f9511c 201039_03
hgs
parents:
diff changeset
    21
#include "advsecsettingssecuritymoduleeraser_symbian.h"
989397f9511c 201039_03
hgs
parents:
diff changeset
    22
#include <unifiedkeystore.h>            // CUnifiedKeyStore
989397f9511c 201039_03
hgs
parents:
diff changeset
    23
#include <mctauthobject.h>              // MCTAuthenticationObject
989397f9511c 201039_03
hgs
parents:
diff changeset
    24
#include <QDebug>
989397f9511c 201039_03
hgs
parents:
diff changeset
    25
989397f9511c 201039_03
hgs
parents:
diff changeset
    26
// TODO: split implementation into smaller parts, use CAdvSecSettingsSecurityModuleSymbian
989397f9511c 201039_03
hgs
parents:
diff changeset
    27
989397f9511c 201039_03
hgs
parents:
diff changeset
    28
// Local functions in other cpp-files within this project
989397f9511c 201039_03
hgs
parents:
diff changeset
    29
QString CopyStringL(const TDesC16 &aDes16);
989397f9511c 201039_03
hgs
parents:
diff changeset
    30
QString Location(const TUid &aTokenType);
989397f9511c 201039_03
hgs
parents:
diff changeset
    31
989397f9511c 201039_03
hgs
parents:
diff changeset
    32
// TODO: replace with proper logging
989397f9511c 201039_03
hgs
parents:
diff changeset
    33
#ifdef _DEBUG
989397f9511c 201039_03
hgs
parents:
diff changeset
    34
#define TRACE(x)        RDebug::Printf(x)
989397f9511c 201039_03
hgs
parents:
diff changeset
    35
#define TRACE1(x,y)     RDebug::Printf((x),(y))
989397f9511c 201039_03
hgs
parents:
diff changeset
    36
#define TRACE2(x,y,z)   RDebug::Printf((x),(y),(z))
989397f9511c 201039_03
hgs
parents:
diff changeset
    37
#else
989397f9511c 201039_03
hgs
parents:
diff changeset
    38
#define TRACE(x)
989397f9511c 201039_03
hgs
parents:
diff changeset
    39
#define TRACE1(x,y)
989397f9511c 201039_03
hgs
parents:
diff changeset
    40
#define TRACE2(x,y,z)
989397f9511c 201039_03
hgs
parents:
diff changeset
    41
#endif
989397f9511c 201039_03
hgs
parents:
diff changeset
    42
989397f9511c 201039_03
hgs
parents:
diff changeset
    43
989397f9511c 201039_03
hgs
parents:
diff changeset
    44
// ======== MEMBER FUNCTIONS ========
989397f9511c 201039_03
hgs
parents:
diff changeset
    45
989397f9511c 201039_03
hgs
parents:
diff changeset
    46
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
    47
// AdvSecSettingsSecurityModuleModelPrivate::AdvSecSettingsSecurityModuleModelPrivate()
989397f9511c 201039_03
hgs
parents:
diff changeset
    48
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
    49
//
989397f9511c 201039_03
hgs
parents:
diff changeset
    50
AdvSecSettingsSecurityModuleModelPrivate::AdvSecSettingsSecurityModuleModelPrivate(
989397f9511c 201039_03
hgs
parents:
diff changeset
    51
    AdvSecSettingsSecurityModuleModel *q) : CActive(CActive::EPriorityLow), q_ptr(q),
989397f9511c 201039_03
hgs
parents:
diff changeset
    52
    iState(ENotInitialized)
989397f9511c 201039_03
hgs
parents:
diff changeset
    53
{
989397f9511c 201039_03
hgs
parents:
diff changeset
    54
    TRACE("AdvSecSettingsSecurityModuleModelPrivate::AdvSecSettingsSecurityModuleModelPrivate");
989397f9511c 201039_03
hgs
parents:
diff changeset
    55
    CActiveScheduler::Add(this);
989397f9511c 201039_03
hgs
parents:
diff changeset
    56
}
989397f9511c 201039_03
hgs
parents:
diff changeset
    57
989397f9511c 201039_03
hgs
parents:
diff changeset
    58
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
    59
// AdvSecSettingsSecurityModuleModelPrivate::~AdvSecSettingsSecurityModuleModelPrivate()
989397f9511c 201039_03
hgs
parents:
diff changeset
    60
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
    61
//
989397f9511c 201039_03
hgs
parents:
diff changeset
    62
AdvSecSettingsSecurityModuleModelPrivate::~AdvSecSettingsSecurityModuleModelPrivate()
989397f9511c 201039_03
hgs
parents:
diff changeset
    63
{
989397f9511c 201039_03
hgs
parents:
diff changeset
    64
    TRACE("AdvSecSettingsSecurityModuleModelPrivate::~AdvSecSettingsSecurityModuleModelPrivate");
989397f9511c 201039_03
hgs
parents:
diff changeset
    65
    Cancel();
989397f9511c 201039_03
hgs
parents:
diff changeset
    66
    delete iModuleEraser;
989397f9511c 201039_03
hgs
parents:
diff changeset
    67
    iCurrentKeyStore = NULL;
989397f9511c 201039_03
hgs
parents:
diff changeset
    68
    iCurrentAuthObject = NULL;
989397f9511c 201039_03
hgs
parents:
diff changeset
    69
    iProtectedKeyStores.Reset();
989397f9511c 201039_03
hgs
parents:
diff changeset
    70
    iAuthenticationObjects.Reset();
989397f9511c 201039_03
hgs
parents:
diff changeset
    71
    iKeys.Close();
989397f9511c 201039_03
hgs
parents:
diff changeset
    72
    delete iAllKeysFilter;
989397f9511c 201039_03
hgs
parents:
diff changeset
    73
    delete iUnifiedKeyStore;
989397f9511c 201039_03
hgs
parents:
diff changeset
    74
    iFs.Close();
989397f9511c 201039_03
hgs
parents:
diff changeset
    75
    q_ptr = NULL;
989397f9511c 201039_03
hgs
parents:
diff changeset
    76
}
989397f9511c 201039_03
hgs
parents:
diff changeset
    77
989397f9511c 201039_03
hgs
parents:
diff changeset
    78
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
    79
// AdvSecSettingsSecurityModuleModelPrivate::initialize()
989397f9511c 201039_03
hgs
parents:
diff changeset
    80
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
    81
//
989397f9511c 201039_03
hgs
parents:
diff changeset
    82
void AdvSecSettingsSecurityModuleModelPrivate::initialize()
989397f9511c 201039_03
hgs
parents:
diff changeset
    83
{
989397f9511c 201039_03
hgs
parents:
diff changeset
    84
    TRACE("AdvSecSettingsSecurityModuleModelPrivate::initialize");
989397f9511c 201039_03
hgs
parents:
diff changeset
    85
    if ((iState == ENotInitialized) && !IsActive()) {
989397f9511c 201039_03
hgs
parents:
diff changeset
    86
        TRAPD(err, ConstructL());
989397f9511c 201039_03
hgs
parents:
diff changeset
    87
        if (err == KErrNone) {
989397f9511c 201039_03
hgs
parents:
diff changeset
    88
            iUnifiedKeyStore->Initialize(iStatus);
989397f9511c 201039_03
hgs
parents:
diff changeset
    89
            iState = EInitializing;
989397f9511c 201039_03
hgs
parents:
diff changeset
    90
            SetActive();
989397f9511c 201039_03
hgs
parents:
diff changeset
    91
        } else {
989397f9511c 201039_03
hgs
parents:
diff changeset
    92
            q_ptr->handleError(err);
989397f9511c 201039_03
hgs
parents:
diff changeset
    93
        }
989397f9511c 201039_03
hgs
parents:
diff changeset
    94
    } else {
989397f9511c 201039_03
hgs
parents:
diff changeset
    95
        q_ptr->handleError(KErrAlreadyExists);
989397f9511c 201039_03
hgs
parents:
diff changeset
    96
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
    97
}
989397f9511c 201039_03
hgs
parents:
diff changeset
    98
989397f9511c 201039_03
hgs
parents:
diff changeset
    99
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   100
// AdvSecSettingsSecurityModuleModelPrivate::moduleCount()
989397f9511c 201039_03
hgs
parents:
diff changeset
   101
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   102
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   103
int AdvSecSettingsSecurityModuleModelPrivate::moduleCount() const
989397f9511c 201039_03
hgs
parents:
diff changeset
   104
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   105
    TRACE("AdvSecSettingsSecurityModuleModelPrivate::moduleCount");
989397f9511c 201039_03
hgs
parents:
diff changeset
   106
    return iProtectedKeyStores.Count();
989397f9511c 201039_03
hgs
parents:
diff changeset
   107
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   108
989397f9511c 201039_03
hgs
parents:
diff changeset
   109
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   110
// AdvSecSettingsSecurityModuleModelPrivate::moduleLabelsAndLocations()
989397f9511c 201039_03
hgs
parents:
diff changeset
   111
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   112
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   113
QMap<QString,QString> AdvSecSettingsSecurityModuleModelPrivate::moduleLabelsAndLocations() const
989397f9511c 201039_03
hgs
parents:
diff changeset
   114
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   115
    TRACE("AdvSecSettingsSecurityModuleModelPrivate::moduleLabelsAndLocations");
989397f9511c 201039_03
hgs
parents:
diff changeset
   116
    QMap<QString,QString> map;
989397f9511c 201039_03
hgs
parents:
diff changeset
   117
989397f9511c 201039_03
hgs
parents:
diff changeset
   118
    for (TInt index = 0; index < iProtectedKeyStores.Count(); index++) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   119
        MCTToken &keyStoreToken = iProtectedKeyStores[index]->Token();
989397f9511c 201039_03
hgs
parents:
diff changeset
   120
989397f9511c 201039_03
hgs
parents:
diff changeset
   121
        QString label;
989397f9511c 201039_03
hgs
parents:
diff changeset
   122
        if (keyStoreToken.TokenType().Type().iUid == KAdvSecSettingsFileKeyStore) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   123
            // TODO: localized UI string needed
989397f9511c 201039_03
hgs
parents:
diff changeset
   124
            label = CopyStringL(_L("Phone key store"));
989397f9511c 201039_03
hgs
parents:
diff changeset
   125
        } else {
989397f9511c 201039_03
hgs
parents:
diff changeset
   126
            label = CopyStringL(keyStoreToken.Label());
989397f9511c 201039_03
hgs
parents:
diff changeset
   127
        }
989397f9511c 201039_03
hgs
parents:
diff changeset
   128
989397f9511c 201039_03
hgs
parents:
diff changeset
   129
        map[label] = Location(keyStoreToken.TokenType().Type());
989397f9511c 201039_03
hgs
parents:
diff changeset
   130
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
   131
989397f9511c 201039_03
hgs
parents:
diff changeset
   132
    return map;
989397f9511c 201039_03
hgs
parents:
diff changeset
   133
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   134
989397f9511c 201039_03
hgs
parents:
diff changeset
   135
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   136
// AdvSecSettingsSecurityModuleModelPrivate::getModuleStatus()
989397f9511c 201039_03
hgs
parents:
diff changeset
   137
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   138
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   139
void AdvSecSettingsSecurityModuleModelPrivate::getModuleStatus(int moduleIndex)
989397f9511c 201039_03
hgs
parents:
diff changeset
   140
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   141
    TRACE1("AdvSecSettingsSecurityModuleModelPrivate::getModuleStatus, moduleIndex=%d", moduleIndex);
989397f9511c 201039_03
hgs
parents:
diff changeset
   142
    if ((iState == EIdle) && !IsActive()) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   143
        if (moduleIndex >= 0 && moduleIndex < iAuthenticationObjects.Count()) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   144
            // TODO: this does not work yet
989397f9511c 201039_03
hgs
parents:
diff changeset
   145
#if 0
989397f9511c 201039_03
hgs
parents:
diff changeset
   146
            iCurrentAuthObject = iAuthenticationObjects[moduleIndex];
989397f9511c 201039_03
hgs
parents:
diff changeset
   147
            iTimeRemaining = 0;
989397f9511c 201039_03
hgs
parents:
diff changeset
   148
            iCurrentAuthObject->TimeRemaining(iTimeRemaining, iStatus);
989397f9511c 201039_03
hgs
parents:
diff changeset
   149
            iState = EReadingTimeRemaining;
989397f9511c 201039_03
hgs
parents:
diff changeset
   150
            SetActive();
989397f9511c 201039_03
hgs
parents:
diff changeset
   151
#else
989397f9511c 201039_03
hgs
parents:
diff changeset
   152
            TInt tempStatus = AdvSecSettingsSecurityModuleModel::EPinRequested;
989397f9511c 201039_03
hgs
parents:
diff changeset
   153
            q_ptr->handleStatusCompleted(tempStatus);
989397f9511c 201039_03
hgs
parents:
diff changeset
   154
#endif
989397f9511c 201039_03
hgs
parents:
diff changeset
   155
        } else {
989397f9511c 201039_03
hgs
parents:
diff changeset
   156
            q_ptr->handleError(KErrArgument);
989397f9511c 201039_03
hgs
parents:
diff changeset
   157
        }
989397f9511c 201039_03
hgs
parents:
diff changeset
   158
    } else {
989397f9511c 201039_03
hgs
parents:
diff changeset
   159
        q_ptr->handleError(KErrInUse);
989397f9511c 201039_03
hgs
parents:
diff changeset
   160
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
   161
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   162
989397f9511c 201039_03
hgs
parents:
diff changeset
   163
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   164
// AdvSecSettingsSecurityModuleModelPrivate::setPinCodeRequestState()
989397f9511c 201039_03
hgs
parents:
diff changeset
   165
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   166
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   167
void AdvSecSettingsSecurityModuleModelPrivate::setPinCodeRequestState(int moduleIndex,
989397f9511c 201039_03
hgs
parents:
diff changeset
   168
    bool isRequested)
989397f9511c 201039_03
hgs
parents:
diff changeset
   169
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   170
    TRACE2("AdvSecSettingsSecurityModuleModelPrivate::setPinCodeRequestState, moduleIndex=%d isRequested=%d",
989397f9511c 201039_03
hgs
parents:
diff changeset
   171
        moduleIndex, isRequested);
989397f9511c 201039_03
hgs
parents:
diff changeset
   172
    if ((iState == EIdle) && !IsActive()) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   173
        if (moduleIndex >= 0 && moduleIndex < iAuthenticationObjects.Count()) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   174
            iCurrentAuthObject = iAuthenticationObjects[moduleIndex];
989397f9511c 201039_03
hgs
parents:
diff changeset
   175
            if (isRequested) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   176
                iCurrentAuthObject->Enable(iStatus);
989397f9511c 201039_03
hgs
parents:
diff changeset
   177
                iState = EEnablingPinCodeRequest;
989397f9511c 201039_03
hgs
parents:
diff changeset
   178
            } else {
989397f9511c 201039_03
hgs
parents:
diff changeset
   179
                iCurrentAuthObject->Disable(iStatus);
989397f9511c 201039_03
hgs
parents:
diff changeset
   180
                iState = EDisablingPinCodeRequest;
989397f9511c 201039_03
hgs
parents:
diff changeset
   181
            }
989397f9511c 201039_03
hgs
parents:
diff changeset
   182
            SetActive();
989397f9511c 201039_03
hgs
parents:
diff changeset
   183
        } else {
989397f9511c 201039_03
hgs
parents:
diff changeset
   184
            q_ptr->handleError(KErrArgument);
989397f9511c 201039_03
hgs
parents:
diff changeset
   185
        }
989397f9511c 201039_03
hgs
parents:
diff changeset
   186
    } else {
989397f9511c 201039_03
hgs
parents:
diff changeset
   187
        q_ptr->handleError(KErrInUse);
989397f9511c 201039_03
hgs
parents:
diff changeset
   188
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
   189
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   190
989397f9511c 201039_03
hgs
parents:
diff changeset
   191
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   192
// AdvSecSettingsSecurityModuleModelPrivate::changePinCode()
989397f9511c 201039_03
hgs
parents:
diff changeset
   193
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   194
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   195
void AdvSecSettingsSecurityModuleModelPrivate::changePinCode(int moduleIndex)
989397f9511c 201039_03
hgs
parents:
diff changeset
   196
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   197
    TRACE1("AdvSecSettingsSecurityModuleModelPrivate::changePinCode, moduleIndex=%d", moduleIndex);
989397f9511c 201039_03
hgs
parents:
diff changeset
   198
    if ((iState == EIdle) && !IsActive()) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   199
        if (moduleIndex >= 0 && moduleIndex < iAuthenticationObjects.Count()) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   200
            iCurrentAuthObject = iAuthenticationObjects[moduleIndex];
989397f9511c 201039_03
hgs
parents:
diff changeset
   201
            ChangeCurrentAuthObjectPinCode();
989397f9511c 201039_03
hgs
parents:
diff changeset
   202
        } else {
989397f9511c 201039_03
hgs
parents:
diff changeset
   203
            q_ptr->handleError(KErrArgument);
989397f9511c 201039_03
hgs
parents:
diff changeset
   204
        }
989397f9511c 201039_03
hgs
parents:
diff changeset
   205
    } else {
989397f9511c 201039_03
hgs
parents:
diff changeset
   206
        q_ptr->handleError(KErrInUse);
989397f9511c 201039_03
hgs
parents:
diff changeset
   207
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
   208
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   209
989397f9511c 201039_03
hgs
parents:
diff changeset
   210
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   211
// AdvSecSettingsSecurityModuleModelPrivate::closeModule()
989397f9511c 201039_03
hgs
parents:
diff changeset
   212
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   213
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   214
void AdvSecSettingsSecurityModuleModelPrivate::closeModule(int moduleIndex)
989397f9511c 201039_03
hgs
parents:
diff changeset
   215
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   216
    TRACE1("AdvSecSettingsSecurityModuleModelPrivate::closeModule, moduleIndex=%d", moduleIndex);
989397f9511c 201039_03
hgs
parents:
diff changeset
   217
    if ((iState == EIdle) && !IsActive()) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   218
        if (moduleIndex >= 0 && moduleIndex < iAuthenticationObjects.Count()) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   219
            iCurrentAuthObject = iAuthenticationObjects[moduleIndex];
989397f9511c 201039_03
hgs
parents:
diff changeset
   220
            iCurrentAuthObject->Close(iStatus);
989397f9511c 201039_03
hgs
parents:
diff changeset
   221
            iState = EClosingAuthObject;
989397f9511c 201039_03
hgs
parents:
diff changeset
   222
            SetActive();
989397f9511c 201039_03
hgs
parents:
diff changeset
   223
        } else {
989397f9511c 201039_03
hgs
parents:
diff changeset
   224
            q_ptr->handleError(KErrArgument);
989397f9511c 201039_03
hgs
parents:
diff changeset
   225
        }
989397f9511c 201039_03
hgs
parents:
diff changeset
   226
    } else {
989397f9511c 201039_03
hgs
parents:
diff changeset
   227
        q_ptr->handleError(KErrInUse);
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
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   232
// AdvSecSettingsSecurityModuleModelPrivate::isSigningPinSupported()
989397f9511c 201039_03
hgs
parents:
diff changeset
   233
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   234
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   235
bool AdvSecSettingsSecurityModuleModelPrivate::isSigningPinSupported(int moduleIndex) const
989397f9511c 201039_03
hgs
parents:
diff changeset
   236
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   237
    TRACE1("AdvSecSettingsSecurityModuleModelPrivate::isSigningPinSupported, moduleIndex=%d",
989397f9511c 201039_03
hgs
parents:
diff changeset
   238
        moduleIndex);
989397f9511c 201039_03
hgs
parents:
diff changeset
   239
    if (moduleIndex >= 0 && moduleIndex < iProtectedKeyStores.Count()) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   240
        MCTToken &keyStoreToken = iProtectedKeyStores[moduleIndex]->Token();
989397f9511c 201039_03
hgs
parents:
diff changeset
   241
        if (keyStoreToken.TokenType().Type().iUid == KAdvSecSettingsFileKeyStore) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   242
            return false;
989397f9511c 201039_03
hgs
parents:
diff changeset
   243
        } else {
989397f9511c 201039_03
hgs
parents:
diff changeset
   244
            return true;
989397f9511c 201039_03
hgs
parents:
diff changeset
   245
        }
989397f9511c 201039_03
hgs
parents:
diff changeset
   246
    } else {
989397f9511c 201039_03
hgs
parents:
diff changeset
   247
        return false;
989397f9511c 201039_03
hgs
parents:
diff changeset
   248
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
   249
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   250
989397f9511c 201039_03
hgs
parents:
diff changeset
   251
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   252
// AdvSecSettingsSecurityModuleModelPrivate::changeSigningPinCode()
989397f9511c 201039_03
hgs
parents:
diff changeset
   253
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   254
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   255
void AdvSecSettingsSecurityModuleModelPrivate::changeSigningPinCode(int /*moduleIndex*/)
989397f9511c 201039_03
hgs
parents:
diff changeset
   256
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   257
    TRACE("AdvSecSettingsSecurityModuleModelPrivate::changeSigningPinCode" );
989397f9511c 201039_03
hgs
parents:
diff changeset
   258
989397f9511c 201039_03
hgs
parents:
diff changeset
   259
    // TODO: implement
989397f9511c 201039_03
hgs
parents:
diff changeset
   260
    q_ptr->handleError(KErrNotSupported);
989397f9511c 201039_03
hgs
parents:
diff changeset
   261
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   262
989397f9511c 201039_03
hgs
parents:
diff changeset
   263
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   264
// AdvSecSettingsSecurityModuleModelPrivate::isDeletable()
989397f9511c 201039_03
hgs
parents:
diff changeset
   265
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   266
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   267
bool AdvSecSettingsSecurityModuleModelPrivate::isDeletable(int moduleIndex) const
989397f9511c 201039_03
hgs
parents:
diff changeset
   268
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   269
    TRACE1("AdvSecSettingsSecurityModuleModelPrivate::isDeletable, moduleIndex=%d",
989397f9511c 201039_03
hgs
parents:
diff changeset
   270
        moduleIndex);
989397f9511c 201039_03
hgs
parents:
diff changeset
   271
    if (moduleIndex >= 0 && moduleIndex < iProtectedKeyStores.Count()) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   272
        MCTToken &keyStoreToken = iProtectedKeyStores[moduleIndex]->Token();
989397f9511c 201039_03
hgs
parents:
diff changeset
   273
        if (keyStoreToken.TokenType().Type().iUid == KAdvSecSettingsFileKeyStore) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   274
            TRACE("AdvSecSettingsSecurityModuleModelPrivate::isDeletable, true");
989397f9511c 201039_03
hgs
parents:
diff changeset
   275
            return true;
989397f9511c 201039_03
hgs
parents:
diff changeset
   276
        }
989397f9511c 201039_03
hgs
parents:
diff changeset
   277
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
   278
    TRACE("AdvSecSettingsSecurityModuleModelPrivate::isDeletable, false");
989397f9511c 201039_03
hgs
parents:
diff changeset
   279
    return false;
989397f9511c 201039_03
hgs
parents:
diff changeset
   280
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   281
989397f9511c 201039_03
hgs
parents:
diff changeset
   282
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   283
// AdvSecSettingsSecurityModuleModelPrivate::deleteModule()
989397f9511c 201039_03
hgs
parents:
diff changeset
   284
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   285
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   286
void AdvSecSettingsSecurityModuleModelPrivate::deleteModule(int moduleIndex)
989397f9511c 201039_03
hgs
parents:
diff changeset
   287
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   288
    TRACE1("AdvSecSettingsSecurityModuleModelPrivate::deleteModule, moduleIndex=%d",
989397f9511c 201039_03
hgs
parents:
diff changeset
   289
        moduleIndex);
989397f9511c 201039_03
hgs
parents:
diff changeset
   290
    if (moduleIndex >= 0 && moduleIndex < iProtectedKeyStores.Count()) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   291
        MCTToken &keyStoreToken = iProtectedKeyStores[moduleIndex]->Token();
989397f9511c 201039_03
hgs
parents:
diff changeset
   292
        if (keyStoreToken.TokenType().Type().iUid == KAdvSecSettingsFileKeyStore) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   293
            TInt err = DoStartDeletingModule(moduleIndex);
989397f9511c 201039_03
hgs
parents:
diff changeset
   294
            if (err) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   295
                q_ptr->handleError(err);
989397f9511c 201039_03
hgs
parents:
diff changeset
   296
            }
989397f9511c 201039_03
hgs
parents:
diff changeset
   297
        }
989397f9511c 201039_03
hgs
parents:
diff changeset
   298
    } else {
989397f9511c 201039_03
hgs
parents:
diff changeset
   299
        q_ptr->handleError(KErrArgument);
989397f9511c 201039_03
hgs
parents:
diff changeset
   300
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
   301
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   302
989397f9511c 201039_03
hgs
parents:
diff changeset
   303
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   304
// AdvSecSettingsSecurityModuleModelPrivate::DoCancel()
989397f9511c 201039_03
hgs
parents:
diff changeset
   305
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   306
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   307
void AdvSecSettingsSecurityModuleModelPrivate::DoCancel()
989397f9511c 201039_03
hgs
parents:
diff changeset
   308
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   309
    TRACE("AdvSecSettingsSecurityModuleModelPrivate::DoCancel");
989397f9511c 201039_03
hgs
parents:
diff changeset
   310
    switch (iState) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   311
    case EInitializing:
989397f9511c 201039_03
hgs
parents:
diff changeset
   312
        iUnifiedKeyStore->CancelInitialize();
989397f9511c 201039_03
hgs
parents:
diff changeset
   313
        iState = ENotInitialized;
989397f9511c 201039_03
hgs
parents:
diff changeset
   314
        break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   315
    case EListingKeys:
989397f9511c 201039_03
hgs
parents:
diff changeset
   316
        iCurrentKeyStore->CancelList();
989397f9511c 201039_03
hgs
parents:
diff changeset
   317
        iState = ENotInitialized;
989397f9511c 201039_03
hgs
parents:
diff changeset
   318
        break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   319
    case EReadingTimeRemaining:
989397f9511c 201039_03
hgs
parents:
diff changeset
   320
        iCurrentAuthObject->CancelTimeRemaining();
989397f9511c 201039_03
hgs
parents:
diff changeset
   321
        iState = EIdle;
989397f9511c 201039_03
hgs
parents:
diff changeset
   322
        break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   323
    case EChangingPinCode:
989397f9511c 201039_03
hgs
parents:
diff changeset
   324
        iCurrentAuthObject->CancelChangeReferenceData();
989397f9511c 201039_03
hgs
parents:
diff changeset
   325
        iState = EIdle;
989397f9511c 201039_03
hgs
parents:
diff changeset
   326
        break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   327
    case EUnblockingToChangePinCode:
989397f9511c 201039_03
hgs
parents:
diff changeset
   328
        iCurrentAuthObject->CancelUnblock();
989397f9511c 201039_03
hgs
parents:
diff changeset
   329
        iState = EIdle;
989397f9511c 201039_03
hgs
parents:
diff changeset
   330
        break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   331
    case EEnablingPinCodeRequest:
989397f9511c 201039_03
hgs
parents:
diff changeset
   332
        iCurrentAuthObject->CancelEnable();
989397f9511c 201039_03
hgs
parents:
diff changeset
   333
        iState = EIdle;
989397f9511c 201039_03
hgs
parents:
diff changeset
   334
        break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   335
    case EDisablingPinCodeRequest:
989397f9511c 201039_03
hgs
parents:
diff changeset
   336
        iCurrentAuthObject->CancelDisable();
989397f9511c 201039_03
hgs
parents:
diff changeset
   337
        iState = EIdle;
989397f9511c 201039_03
hgs
parents:
diff changeset
   338
        break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   339
    case EClosingAuthObject:
989397f9511c 201039_03
hgs
parents:
diff changeset
   340
        iCurrentAuthObject->CancelClose();
989397f9511c 201039_03
hgs
parents:
diff changeset
   341
        iState = EIdle;
989397f9511c 201039_03
hgs
parents:
diff changeset
   342
        break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   343
    case EDeletingModule:
989397f9511c 201039_03
hgs
parents:
diff changeset
   344
        delete iModuleEraser;
989397f9511c 201039_03
hgs
parents:
diff changeset
   345
        iModuleEraser = NULL;
989397f9511c 201039_03
hgs
parents:
diff changeset
   346
        break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   347
    default:
989397f9511c 201039_03
hgs
parents:
diff changeset
   348
        break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   349
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
   350
    q_ptr->handleError(KErrCancel);
989397f9511c 201039_03
hgs
parents:
diff changeset
   351
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   352
989397f9511c 201039_03
hgs
parents:
diff changeset
   353
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   354
// AdvSecSettingsSecurityModuleModelPrivate::RunL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   355
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   356
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   357
void AdvSecSettingsSecurityModuleModelPrivate::RunL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   358
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   359
    TRACE2("AdvSecSettingsSecurityModuleModelPrivate::RunL, status=%d state=%d", iStatus.Int(), iState);
989397f9511c 201039_03
hgs
parents:
diff changeset
   360
    User::LeaveIfError(iStatus.Int());
989397f9511c 201039_03
hgs
parents:
diff changeset
   361
    switch (iState) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   362
    case EInitializing:
989397f9511c 201039_03
hgs
parents:
diff changeset
   363
        TRACE("AdvSecSettingsSecurityModuleModelPrivate::RunL, EInitializing");
989397f9511c 201039_03
hgs
parents:
diff changeset
   364
        iAuthenticationObjects.Reset();
989397f9511c 201039_03
hgs
parents:
diff changeset
   365
        iProtectedKeyStores.Reset();
989397f9511c 201039_03
hgs
parents:
diff changeset
   366
        ListKeysFromFirstKeyStoreL();
989397f9511c 201039_03
hgs
parents:
diff changeset
   367
        break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   368
    case EListingKeys:
989397f9511c 201039_03
hgs
parents:
diff changeset
   369
        TRACE("AdvSecSettingsSecurityModuleModelPrivate::RunL, EListingKeys");
989397f9511c 201039_03
hgs
parents:
diff changeset
   370
        AppendKeyStoresWithProtectedKeysL();
989397f9511c 201039_03
hgs
parents:
diff changeset
   371
        ListKeysFromNextKeyStoreL();
989397f9511c 201039_03
hgs
parents:
diff changeset
   372
        break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   373
    case EReadingTimeRemaining:
989397f9511c 201039_03
hgs
parents:
diff changeset
   374
        TRACE("AdvSecSettingsSecurityModuleModelPrivate::RunL, EReadingTimeRemaining");
989397f9511c 201039_03
hgs
parents:
diff changeset
   375
        ReturnModuleStatusL();
989397f9511c 201039_03
hgs
parents:
diff changeset
   376
        break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   377
    case EChangingPinCode:
989397f9511c 201039_03
hgs
parents:
diff changeset
   378
        TRACE("AdvSecSettingsSecurityModuleModelPrivate::RunL, EChangingPinCode");
989397f9511c 201039_03
hgs
parents:
diff changeset
   379
        ReturnPinChanged();
989397f9511c 201039_03
hgs
parents:
diff changeset
   380
        break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   381
    case EUnblockingToChangePinCode:
989397f9511c 201039_03
hgs
parents:
diff changeset
   382
        TRACE("AdvSecSettingsSecurityModuleModelPrivate::RunL, EUnblockingToChangePinCode");
989397f9511c 201039_03
hgs
parents:
diff changeset
   383
        ChangeCurrentAuthObjectPinCode();
989397f9511c 201039_03
hgs
parents:
diff changeset
   384
        break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   385
    case EEnablingPinCodeRequest:
989397f9511c 201039_03
hgs
parents:
diff changeset
   386
    case EDisablingPinCodeRequest:
989397f9511c 201039_03
hgs
parents:
diff changeset
   387
        TRACE("AdvSecSettingsSecurityModuleModelPrivate::RunL, EEnabling/DisablingPinCodeRequest");
989397f9511c 201039_03
hgs
parents:
diff changeset
   388
        ReturnPinRequestStateChanged();
989397f9511c 201039_03
hgs
parents:
diff changeset
   389
        break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   390
    case EClosingAuthObject:
989397f9511c 201039_03
hgs
parents:
diff changeset
   391
        TRACE("AdvSecSettingsSecurityModuleModelPrivate::RunL, EClosingAuthObject");
989397f9511c 201039_03
hgs
parents:
diff changeset
   392
        ReturnModuleClosed();
989397f9511c 201039_03
hgs
parents:
diff changeset
   393
        break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   394
    case EDeletingModule:
989397f9511c 201039_03
hgs
parents:
diff changeset
   395
        TRACE("AdvSecSettingsSecurityModuleModelPrivate::RunL, EDeletingModule");
989397f9511c 201039_03
hgs
parents:
diff changeset
   396
        ReturnModuleDeleted();
989397f9511c 201039_03
hgs
parents:
diff changeset
   397
        break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   398
    default:
989397f9511c 201039_03
hgs
parents:
diff changeset
   399
        TRACE("AdvSecSettingsSecurityModuleModelPrivate::RunL, default");
989397f9511c 201039_03
hgs
parents:
diff changeset
   400
        ASSERT(EFalse);
989397f9511c 201039_03
hgs
parents:
diff changeset
   401
        break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   402
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
   403
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   404
989397f9511c 201039_03
hgs
parents:
diff changeset
   405
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   406
// AdvSecSettingsSecurityModuleModelPrivate::RunError()
989397f9511c 201039_03
hgs
parents:
diff changeset
   407
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   408
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   409
TInt AdvSecSettingsSecurityModuleModelPrivate::RunError(TInt aError)
989397f9511c 201039_03
hgs
parents:
diff changeset
   410
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   411
    TRACE1("AdvSecSettingsSecurityModuleModelPrivate::RunError, aError=%d", aError);
989397f9511c 201039_03
hgs
parents:
diff changeset
   412
    q_ptr->handleError(aError);
989397f9511c 201039_03
hgs
parents:
diff changeset
   413
    return KErrNone;
989397f9511c 201039_03
hgs
parents:
diff changeset
   414
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   415
989397f9511c 201039_03
hgs
parents:
diff changeset
   416
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   417
// AdvSecSettingsSecurityModuleModelPrivate::ConstructL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   418
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   419
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   420
void AdvSecSettingsSecurityModuleModelPrivate::ConstructL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   421
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   422
    TRACE("AdvSecSettingsSecurityModuleModelPrivate::ConstructL");
989397f9511c 201039_03
hgs
parents:
diff changeset
   423
    User::LeaveIfError(iFs.Connect());
989397f9511c 201039_03
hgs
parents:
diff changeset
   424
    iUnifiedKeyStore = CUnifiedKeyStore::NewL(iFs);
989397f9511c 201039_03
hgs
parents:
diff changeset
   425
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   426
989397f9511c 201039_03
hgs
parents:
diff changeset
   427
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   428
// AdvSecSettingsSecurityModuleModelPrivate::ListKeysFromFirstKeyStoreL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   429
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   430
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   431
void AdvSecSettingsSecurityModuleModelPrivate::ListKeysFromFirstKeyStoreL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   432
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   433
    TRACE1("AdvSecSettingsSecurityModuleModelPrivate::ListKeysFromFirstKeyStoreL, count=%d",
989397f9511c 201039_03
hgs
parents:
diff changeset
   434
        iUnifiedKeyStore->KeyStoreCount());
989397f9511c 201039_03
hgs
parents:
diff changeset
   435
    iKeyStoreIndex = 0;
989397f9511c 201039_03
hgs
parents:
diff changeset
   436
    ListKeysFromOneKeyStoreL();
989397f9511c 201039_03
hgs
parents:
diff changeset
   437
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   438
989397f9511c 201039_03
hgs
parents:
diff changeset
   439
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   440
// AdvSecSettingsSecurityModuleModelPrivate::ListKeysFromOneKeyStoreL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   441
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   442
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   443
void AdvSecSettingsSecurityModuleModelPrivate::ListKeysFromOneKeyStoreL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   444
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   445
    TRACE1("AdvSecSettingsSecurityModuleModelPrivate::ListKeysFromOneKeyStoreL, index=%d",
989397f9511c 201039_03
hgs
parents:
diff changeset
   446
        iKeyStoreIndex);
989397f9511c 201039_03
hgs
parents:
diff changeset
   447
    if (iKeyStoreIndex < iUnifiedKeyStore->KeyStoreCount()) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   448
        iKeys.Close();
989397f9511c 201039_03
hgs
parents:
diff changeset
   449
        if (!iAllKeysFilter) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   450
            iAllKeysFilter = new( ELeave ) TCTKeyAttributeFilter;
989397f9511c 201039_03
hgs
parents:
diff changeset
   451
            iAllKeysFilter->iPolicyFilter = TCTKeyAttributeFilter::EAllKeys;
989397f9511c 201039_03
hgs
parents:
diff changeset
   452
        }
989397f9511c 201039_03
hgs
parents:
diff changeset
   453
        iCurrentKeyStore = &(iUnifiedKeyStore->KeyStore(iKeyStoreIndex));
989397f9511c 201039_03
hgs
parents:
diff changeset
   454
        iCurrentKeyStore->List(iKeys, *iAllKeysFilter, iStatus);
989397f9511c 201039_03
hgs
parents:
diff changeset
   455
        iState = EListingKeys;
989397f9511c 201039_03
hgs
parents:
diff changeset
   456
        SetActive();
989397f9511c 201039_03
hgs
parents:
diff changeset
   457
    } else {
989397f9511c 201039_03
hgs
parents:
diff changeset
   458
        iState = EIdle;
989397f9511c 201039_03
hgs
parents:
diff changeset
   459
        q_ptr->handleInitializeCompleted();
989397f9511c 201039_03
hgs
parents:
diff changeset
   460
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
   461
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   462
989397f9511c 201039_03
hgs
parents:
diff changeset
   463
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   464
// AdvSecSettingsSecurityModuleModelPrivate::ListKeysFromNextKeyStoreL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   465
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   466
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   467
void AdvSecSettingsSecurityModuleModelPrivate::ListKeysFromNextKeyStoreL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   468
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   469
    TRACE("AdvSecSettingsSecurityModuleModelPrivate::ListKeysFromNextKeyStoreL");
989397f9511c 201039_03
hgs
parents:
diff changeset
   470
    ++iKeyStoreIndex;
989397f9511c 201039_03
hgs
parents:
diff changeset
   471
    ListKeysFromOneKeyStoreL();
989397f9511c 201039_03
hgs
parents:
diff changeset
   472
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   473
989397f9511c 201039_03
hgs
parents:
diff changeset
   474
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   475
// AdvSecSettingsSecurityModuleModelPrivate::AppendKeyStoresWithProtectedKeysL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   476
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   477
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   478
void AdvSecSettingsSecurityModuleModelPrivate::AppendKeyStoresWithProtectedKeysL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   479
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   480
    TRACE("AdvSecSettingsSecurityModuleModelPrivate::AppendKeyStoresWithProtectedKeysL");
989397f9511c 201039_03
hgs
parents:
diff changeset
   481
    for (TInt index = 0; index < iKeys.Count(); index++) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   482
        const CCTKeyInfo &keyInfo = *(iKeys[index]);
989397f9511c 201039_03
hgs
parents:
diff changeset
   483
        if (keyInfo.Protector()) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   484
            TRACE("AdvSecSettingsSecurityModuleModelPrivate::AppendKeyStoresWithProtectedKeysL, added");
989397f9511c 201039_03
hgs
parents:
diff changeset
   485
            iAuthenticationObjects.AppendL(keyInfo.Protector());
989397f9511c 201039_03
hgs
parents:
diff changeset
   486
            iProtectedKeyStores.AppendL(&(iUnifiedKeyStore->KeyStore(iKeyStoreIndex)));
989397f9511c 201039_03
hgs
parents:
diff changeset
   487
        }
989397f9511c 201039_03
hgs
parents:
diff changeset
   488
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
   489
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   490
989397f9511c 201039_03
hgs
parents:
diff changeset
   491
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   492
// AdvSecSettingsSecurityModuleModelPrivate::ChangeCurrentAuthObjectPinCode()
989397f9511c 201039_03
hgs
parents:
diff changeset
   493
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   494
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   495
void AdvSecSettingsSecurityModuleModelPrivate::ChangeCurrentAuthObjectPinCode()
989397f9511c 201039_03
hgs
parents:
diff changeset
   496
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   497
    TRACE("AdvSecSettingsSecurityModuleModelPrivate::ChangeCurrentAuthObjectPinCode");
989397f9511c 201039_03
hgs
parents:
diff changeset
   498
    TInt32 currentAuthObjectStatus = iCurrentAuthObject->Status();
989397f9511c 201039_03
hgs
parents:
diff changeset
   499
    if (currentAuthObjectStatus & EAuthObjectBlocked) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   500
        TRACE("AdvSecSettingsSecurityModuleModelPrivate::ChangeCurrentAuthObjectPinCode, blocked");
989397f9511c 201039_03
hgs
parents:
diff changeset
   501
        if (currentAuthObjectStatus & EUnblockDisabled) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   502
            TRACE("AdvSecSettingsSecurityModuleModelPrivate::ChangeCurrentAuthObjectPinCode, permanently");
989397f9511c 201039_03
hgs
parents:
diff changeset
   503
            iState = EIdle;
989397f9511c 201039_03
hgs
parents:
diff changeset
   504
            q_ptr->handleError(KErrPermissionDenied);
989397f9511c 201039_03
hgs
parents:
diff changeset
   505
        } else {
989397f9511c 201039_03
hgs
parents:
diff changeset
   506
            TRACE("AdvSecSettingsSecurityModuleModelPrivate::ChangeCurrentAuthObjectPinCode, unblocking");
989397f9511c 201039_03
hgs
parents:
diff changeset
   507
            iCurrentAuthObject->Unblock(iStatus);
989397f9511c 201039_03
hgs
parents:
diff changeset
   508
            iState = EUnblockingToChangePinCode;
989397f9511c 201039_03
hgs
parents:
diff changeset
   509
            SetActive();
989397f9511c 201039_03
hgs
parents:
diff changeset
   510
        }
989397f9511c 201039_03
hgs
parents:
diff changeset
   511
    } else {
989397f9511c 201039_03
hgs
parents:
diff changeset
   512
        if (currentAuthObjectStatus & EChangeDisabled) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   513
            TRACE("AdvSecSettingsSecurityModuleModelPrivate::ChangeCurrentAuthObjectPinCode, cannot change");
989397f9511c 201039_03
hgs
parents:
diff changeset
   514
            iState = EIdle;
989397f9511c 201039_03
hgs
parents:
diff changeset
   515
            q_ptr->handleError(KErrPermissionDenied);
989397f9511c 201039_03
hgs
parents:
diff changeset
   516
        } else {
989397f9511c 201039_03
hgs
parents:
diff changeset
   517
            TRACE("AdvSecSettingsSecurityModuleModelPrivate::ChangeCurrentAuthObjectPinCode, changing pin");
989397f9511c 201039_03
hgs
parents:
diff changeset
   518
            iCurrentAuthObject->ChangeReferenceData(iStatus);
989397f9511c 201039_03
hgs
parents:
diff changeset
   519
            iState = EChangingPinCode;
989397f9511c 201039_03
hgs
parents:
diff changeset
   520
            SetActive();
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
989397f9511c 201039_03
hgs
parents:
diff changeset
   525
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   526
// AdvSecSettingsSecurityModuleModelPrivate::DoStartDeletingModule()
989397f9511c 201039_03
hgs
parents:
diff changeset
   527
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   528
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   529
TInt AdvSecSettingsSecurityModuleModelPrivate::DoStartDeletingModule(TInt aModuleIndex)
989397f9511c 201039_03
hgs
parents:
diff changeset
   530
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   531
    if (!iModuleEraser) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   532
        TRAPD(err, iModuleEraser = CAdvSecSettingsSecurityModuleEraser::NewL(*iUnifiedKeyStore));
989397f9511c 201039_03
hgs
parents:
diff changeset
   533
        if (err) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   534
            return err;
989397f9511c 201039_03
hgs
parents:
diff changeset
   535
        }
989397f9511c 201039_03
hgs
parents:
diff changeset
   536
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
   537
    iModuleEraser->Erase(aModuleIndex, iStatus);
989397f9511c 201039_03
hgs
parents:
diff changeset
   538
    iState = EDeletingModule;
989397f9511c 201039_03
hgs
parents:
diff changeset
   539
    SetActive();
989397f9511c 201039_03
hgs
parents:
diff changeset
   540
    return KErrNone;
989397f9511c 201039_03
hgs
parents:
diff changeset
   541
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   542
989397f9511c 201039_03
hgs
parents:
diff changeset
   543
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   544
// AdvSecSettingsSecurityModuleModelPrivate::ReturnModuleStatusL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   545
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   546
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   547
void AdvSecSettingsSecurityModuleModelPrivate::ReturnModuleStatusL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   548
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   549
    int advSecSettingsStatus = 0;
989397f9511c 201039_03
hgs
parents:
diff changeset
   550
989397f9511c 201039_03
hgs
parents:
diff changeset
   551
    TUint32 currentTCTAuthenticationStatus = iCurrentAuthObject->Status();
989397f9511c 201039_03
hgs
parents:
diff changeset
   552
    if (currentTCTAuthenticationStatus & EUnblockDisabled) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   553
        advSecSettingsStatus |= AdvSecSettingsSecurityModuleModel::EBlockedPermanently;
989397f9511c 201039_03
hgs
parents:
diff changeset
   554
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
   555
    if (currentTCTAuthenticationStatus & EAuthObjectBlocked) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   556
        advSecSettingsStatus |= AdvSecSettingsSecurityModuleModel::EPinBlocked;
989397f9511c 201039_03
hgs
parents:
diff changeset
   557
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
   558
    advSecSettingsStatus |= AdvSecSettingsSecurityModuleModel::EPinChangeAllowed;
989397f9511c 201039_03
hgs
parents:
diff changeset
   559
    if (currentTCTAuthenticationStatus & EChangeDisabled) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   560
        advSecSettingsStatus ^= AdvSecSettingsSecurityModuleModel::EPinChangeAllowed;
989397f9511c 201039_03
hgs
parents:
diff changeset
   561
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
   562
    if (currentTCTAuthenticationStatus & EEnabled) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   563
        advSecSettingsStatus |= AdvSecSettingsSecurityModuleModel::EPinRequested;
989397f9511c 201039_03
hgs
parents:
diff changeset
   564
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
   565
    if (iTimeRemaining > 0) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   566
        advSecSettingsStatus |= AdvSecSettingsSecurityModuleModel::EPinEntered;
989397f9511c 201039_03
hgs
parents:
diff changeset
   567
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
   568
989397f9511c 201039_03
hgs
parents:
diff changeset
   569
    TRACE1("AdvSecSettingsSecurityModuleModelPrivate::ReturnModuleStatusL 0x%08x",
989397f9511c 201039_03
hgs
parents:
diff changeset
   570
        advSecSettingsStatus);
989397f9511c 201039_03
hgs
parents:
diff changeset
   571
    iState = EIdle;
989397f9511c 201039_03
hgs
parents:
diff changeset
   572
    q_ptr->handleStatusCompleted(advSecSettingsStatus);
989397f9511c 201039_03
hgs
parents:
diff changeset
   573
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   574
989397f9511c 201039_03
hgs
parents:
diff changeset
   575
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   576
// AdvSecSettingsSecurityModuleModelPrivate::ReturnPinChanged()
989397f9511c 201039_03
hgs
parents:
diff changeset
   577
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   578
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   579
void AdvSecSettingsSecurityModuleModelPrivate::ReturnPinChanged()
989397f9511c 201039_03
hgs
parents:
diff changeset
   580
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   581
    TRACE("AdvSecSettingsSecurityModuleModelPrivate::ReturnPinChanged");
989397f9511c 201039_03
hgs
parents:
diff changeset
   582
    iState = EIdle;
989397f9511c 201039_03
hgs
parents:
diff changeset
   583
    q_ptr->handlePinCodeChanged();
989397f9511c 201039_03
hgs
parents:
diff changeset
   584
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   585
989397f9511c 201039_03
hgs
parents:
diff changeset
   586
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   587
// AdvSecSettingsSecurityModuleModelPrivate::ReturnPinRequestStateChanged()
989397f9511c 201039_03
hgs
parents:
diff changeset
   588
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   589
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   590
void AdvSecSettingsSecurityModuleModelPrivate::ReturnPinRequestStateChanged()
989397f9511c 201039_03
hgs
parents:
diff changeset
   591
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   592
    TRACE("AdvSecSettingsSecurityModuleModelPrivate::ReturnPinRequestStateChanged");
989397f9511c 201039_03
hgs
parents:
diff changeset
   593
    iState = EIdle;
989397f9511c 201039_03
hgs
parents:
diff changeset
   594
    q_ptr->handlePinCodeRequestSet();
989397f9511c 201039_03
hgs
parents:
diff changeset
   595
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   596
989397f9511c 201039_03
hgs
parents:
diff changeset
   597
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   598
// AdvSecSettingsSecurityModuleModelPrivate::ReturnModuleClosed()
989397f9511c 201039_03
hgs
parents:
diff changeset
   599
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   600
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   601
void AdvSecSettingsSecurityModuleModelPrivate::ReturnModuleClosed()
989397f9511c 201039_03
hgs
parents:
diff changeset
   602
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   603
    TRACE("AdvSecSettingsSecurityModuleModelPrivate::ReturnModuleClosed");
989397f9511c 201039_03
hgs
parents:
diff changeset
   604
    iState = EIdle;
989397f9511c 201039_03
hgs
parents:
diff changeset
   605
    q_ptr->handleModuleClosed();
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
// AdvSecSettingsSecurityModuleModelPrivate::ReturnModuleDeleted()
989397f9511c 201039_03
hgs
parents:
diff changeset
   610
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   611
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   612
void AdvSecSettingsSecurityModuleModelPrivate::ReturnModuleDeleted()
989397f9511c 201039_03
hgs
parents:
diff changeset
   613
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   614
    TRACE("AdvSecSettingsSecurityModuleModelPrivate::ReturnModuleDeleted");
989397f9511c 201039_03
hgs
parents:
diff changeset
   615
    iState = EIdle;
989397f9511c 201039_03
hgs
parents:
diff changeset
   616
    q_ptr->handleModuleDeleted();
989397f9511c 201039_03
hgs
parents:
diff changeset
   617
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   618