cpsecplugins/cpadvancedsecplugin/src/advsecsettingssecuritymoduleeraser_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 remove a security module
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
989397f9511c 201039_03
hgs
parents:
diff changeset
    19
#include "advsecsettingssecuritymoduleeraser_symbian.h"
989397f9511c 201039_03
hgs
parents:
diff changeset
    20
#include <unifiedkeystore.h>            // CUnifiedKeyStore
989397f9511c 201039_03
hgs
parents:
diff changeset
    21
#include <ct/tcttokenobjecthandle.h>    // TCTTokenObjectHandle
989397f9511c 201039_03
hgs
parents:
diff changeset
    22
989397f9511c 201039_03
hgs
parents:
diff changeset
    23
989397f9511c 201039_03
hgs
parents:
diff changeset
    24
// ======== MEMBER FUNCTIONS ========
989397f9511c 201039_03
hgs
parents:
diff changeset
    25
989397f9511c 201039_03
hgs
parents:
diff changeset
    26
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
    27
// CAdvSecSettingsSecurityModuleEraser::NewL()
989397f9511c 201039_03
hgs
parents:
diff changeset
    28
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
    29
//
989397f9511c 201039_03
hgs
parents:
diff changeset
    30
CAdvSecSettingsSecurityModuleEraser *CAdvSecSettingsSecurityModuleEraser::NewL(
989397f9511c 201039_03
hgs
parents:
diff changeset
    31
    CUnifiedKeyStore &aKeyStore)
989397f9511c 201039_03
hgs
parents:
diff changeset
    32
{
989397f9511c 201039_03
hgs
parents:
diff changeset
    33
    CAdvSecSettingsSecurityModuleEraser *self = new(ELeave) CAdvSecSettingsSecurityModuleEraser(
989397f9511c 201039_03
hgs
parents:
diff changeset
    34
        aKeyStore);
989397f9511c 201039_03
hgs
parents:
diff changeset
    35
    CleanupStack::PushL(self);
989397f9511c 201039_03
hgs
parents:
diff changeset
    36
    self->ConstructL();
989397f9511c 201039_03
hgs
parents:
diff changeset
    37
    CleanupStack::Pop(self);
989397f9511c 201039_03
hgs
parents:
diff changeset
    38
    return self;
989397f9511c 201039_03
hgs
parents:
diff changeset
    39
}
989397f9511c 201039_03
hgs
parents:
diff changeset
    40
989397f9511c 201039_03
hgs
parents:
diff changeset
    41
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
    42
// CAdvSecSettingsSecurityModuleEraser::~CAdvSecSettingsSecurityModuleEraser()
989397f9511c 201039_03
hgs
parents:
diff changeset
    43
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
    44
//
989397f9511c 201039_03
hgs
parents:
diff changeset
    45
CAdvSecSettingsSecurityModuleEraser::~CAdvSecSettingsSecurityModuleEraser()
989397f9511c 201039_03
hgs
parents:
diff changeset
    46
{
989397f9511c 201039_03
hgs
parents:
diff changeset
    47
    iKeys.Close();
989397f9511c 201039_03
hgs
parents:
diff changeset
    48
    delete iKeyFilter;
989397f9511c 201039_03
hgs
parents:
diff changeset
    49
    iTargetKeyStore = NULL;
989397f9511c 201039_03
hgs
parents:
diff changeset
    50
    iClientStatus = NULL;
989397f9511c 201039_03
hgs
parents:
diff changeset
    51
}
989397f9511c 201039_03
hgs
parents:
diff changeset
    52
989397f9511c 201039_03
hgs
parents:
diff changeset
    53
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
    54
// CAdvSecSettingsSecurityModuleEraser::Erase()
989397f9511c 201039_03
hgs
parents:
diff changeset
    55
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
    56
//
989397f9511c 201039_03
hgs
parents:
diff changeset
    57
void CAdvSecSettingsSecurityModuleEraser::Erase(TInt aKeyStoreIndex, TRequestStatus &aStatus)
989397f9511c 201039_03
hgs
parents:
diff changeset
    58
{
989397f9511c 201039_03
hgs
parents:
diff changeset
    59
    aStatus = KRequestPending;
989397f9511c 201039_03
hgs
parents:
diff changeset
    60
    if (!IsActive() && (iState == EIdle)) {
989397f9511c 201039_03
hgs
parents:
diff changeset
    61
        if (aKeyStoreIndex >= 0 && aKeyStoreIndex < iKeyStore.KeyStoreCount()) {
989397f9511c 201039_03
hgs
parents:
diff changeset
    62
            iTargetKeyStore = &(iKeyStore.KeyStore(aKeyStoreIndex));
989397f9511c 201039_03
hgs
parents:
diff changeset
    63
            iClientStatus = &aStatus;
989397f9511c 201039_03
hgs
parents:
diff changeset
    64
989397f9511c 201039_03
hgs
parents:
diff changeset
    65
            iKeys.Reset();
989397f9511c 201039_03
hgs
parents:
diff changeset
    66
            iTargetKeyStore->List(iKeys, *iKeyFilter, iStatus);
989397f9511c 201039_03
hgs
parents:
diff changeset
    67
            iState = EListingKeys;
989397f9511c 201039_03
hgs
parents:
diff changeset
    68
            SetActive();
989397f9511c 201039_03
hgs
parents:
diff changeset
    69
        } else {
989397f9511c 201039_03
hgs
parents:
diff changeset
    70
            TRequestStatus *status = &aStatus;
989397f9511c 201039_03
hgs
parents:
diff changeset
    71
            User::RequestComplete(status, KErrArgument);
989397f9511c 201039_03
hgs
parents:
diff changeset
    72
        }
989397f9511c 201039_03
hgs
parents:
diff changeset
    73
    } else {
989397f9511c 201039_03
hgs
parents:
diff changeset
    74
        TRequestStatus *status = &aStatus;
989397f9511c 201039_03
hgs
parents:
diff changeset
    75
        User::RequestComplete(status, KErrInUse);
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
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
    80
// CAdvSecSettingsSecurityModuleEraser::DoCancel()
989397f9511c 201039_03
hgs
parents:
diff changeset
    81
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
    82
//
989397f9511c 201039_03
hgs
parents:
diff changeset
    83
void CAdvSecSettingsSecurityModuleEraser::DoCancel()
989397f9511c 201039_03
hgs
parents:
diff changeset
    84
{
989397f9511c 201039_03
hgs
parents:
diff changeset
    85
    switch (iState) {
989397f9511c 201039_03
hgs
parents:
diff changeset
    86
    case EListingKeys:
989397f9511c 201039_03
hgs
parents:
diff changeset
    87
        iTargetKeyStore->CancelList();
989397f9511c 201039_03
hgs
parents:
diff changeset
    88
        break;
989397f9511c 201039_03
hgs
parents:
diff changeset
    89
    case EDeletingKey:
989397f9511c 201039_03
hgs
parents:
diff changeset
    90
        iKeyStore.CancelDeleteKey();
989397f9511c 201039_03
hgs
parents:
diff changeset
    91
        break;
989397f9511c 201039_03
hgs
parents:
diff changeset
    92
    default:
989397f9511c 201039_03
hgs
parents:
diff changeset
    93
        break;
989397f9511c 201039_03
hgs
parents:
diff changeset
    94
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
    95
    iState = EIdle;
989397f9511c 201039_03
hgs
parents:
diff changeset
    96
989397f9511c 201039_03
hgs
parents:
diff changeset
    97
    User::RequestComplete(iClientStatus, KErrCancel);
989397f9511c 201039_03
hgs
parents:
diff changeset
    98
    iClientStatus = NULL;
989397f9511c 201039_03
hgs
parents:
diff changeset
    99
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   100
989397f9511c 201039_03
hgs
parents:
diff changeset
   101
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   102
// CAdvSecSettingsSecurityModuleEraser::RunL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   103
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   104
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   105
void CAdvSecSettingsSecurityModuleEraser::RunL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   106
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   107
    switch (iState) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   108
    case EListingKeys:
989397f9511c 201039_03
hgs
parents:
diff changeset
   109
        DeleteFirstKeyL();
989397f9511c 201039_03
hgs
parents:
diff changeset
   110
        break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   111
    case EDeletingKey:
989397f9511c 201039_03
hgs
parents:
diff changeset
   112
        DeleteNextKeyL();
989397f9511c 201039_03
hgs
parents:
diff changeset
   113
        break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   114
    default:
989397f9511c 201039_03
hgs
parents:
diff changeset
   115
        ASSERT(EFalse);
989397f9511c 201039_03
hgs
parents:
diff changeset
   116
        break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   117
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
   118
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   119
989397f9511c 201039_03
hgs
parents:
diff changeset
   120
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   121
// CAdvSecSettingsSecurityModuleEraser::RunError()
989397f9511c 201039_03
hgs
parents:
diff changeset
   122
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   123
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   124
TInt CAdvSecSettingsSecurityModuleEraser::RunError(TInt aError)
989397f9511c 201039_03
hgs
parents:
diff changeset
   125
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   126
    User::RequestComplete(iClientStatus, aError);
989397f9511c 201039_03
hgs
parents:
diff changeset
   127
    iClientStatus = NULL;
989397f9511c 201039_03
hgs
parents:
diff changeset
   128
    iState = EIdle;
989397f9511c 201039_03
hgs
parents:
diff changeset
   129
    return KErrNone;
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
// CAdvSecSettingsSecurityModuleEraser::CAdvSecSettingsSecurityModuleEraser()
989397f9511c 201039_03
hgs
parents:
diff changeset
   134
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   135
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   136
CAdvSecSettingsSecurityModuleEraser::CAdvSecSettingsSecurityModuleEraser(
989397f9511c 201039_03
hgs
parents:
diff changeset
   137
    CUnifiedKeyStore &aKeyStore) : CActive(CActive::EPriorityStandard),
989397f9511c 201039_03
hgs
parents:
diff changeset
   138
    iKeyStore(aKeyStore)
989397f9511c 201039_03
hgs
parents:
diff changeset
   139
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   140
    CActiveScheduler::Add(this);
989397f9511c 201039_03
hgs
parents:
diff changeset
   141
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   142
989397f9511c 201039_03
hgs
parents:
diff changeset
   143
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   144
// CAdvSecSettingsSecurityModuleEraser::ConstructL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   145
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   146
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   147
void CAdvSecSettingsSecurityModuleEraser::ConstructL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   148
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   149
    iKeyFilter = new(ELeave) TCTKeyAttributeFilter;
989397f9511c 201039_03
hgs
parents:
diff changeset
   150
    iKeyFilter->iPolicyFilter = TCTKeyAttributeFilter::EAllKeys;
989397f9511c 201039_03
hgs
parents:
diff changeset
   151
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   152
989397f9511c 201039_03
hgs
parents:
diff changeset
   153
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   154
// CAdvSecSettingsSecurityModuleEraser::DeleteFirstKeyL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   155
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   156
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   157
void CAdvSecSettingsSecurityModuleEraser::DeleteFirstKeyL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   158
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   159
    iKeyIndex = 0;
989397f9511c 201039_03
hgs
parents:
diff changeset
   160
    DeleteOneKeyL();
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
// CAdvSecSettingsSecurityModuleEraser::DeleteOneKeyL()
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 CAdvSecSettingsSecurityModuleEraser::DeleteOneKeyL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   168
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   169
    if (iKeyIndex < iKeys.Count()) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   170
        iKeyStore.DeleteKey(iKeys[iKeyIndex]->Handle(), iStatus);
989397f9511c 201039_03
hgs
parents:
diff changeset
   171
        iState = EDeletingKey;
989397f9511c 201039_03
hgs
parents:
diff changeset
   172
        SetActive();
989397f9511c 201039_03
hgs
parents:
diff changeset
   173
    } else {
989397f9511c 201039_03
hgs
parents:
diff changeset
   174
        User::RequestComplete(iClientStatus, KErrNone);
989397f9511c 201039_03
hgs
parents:
diff changeset
   175
        iClientStatus = NULL;
989397f9511c 201039_03
hgs
parents:
diff changeset
   176
        iState = EIdle;
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
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   181
// CAdvSecSettingsSecurityModuleEraser::DeleteNextKeyL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   182
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   183
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   184
void CAdvSecSettingsSecurityModuleEraser::DeleteNextKeyL()
989397f9511c 201039_03
hgs
parents:
diff changeset
   185
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   186
    ++iKeyIndex;
989397f9511c 201039_03
hgs
parents:
diff changeset
   187
    DeleteOneKeyL();
989397f9511c 201039_03
hgs
parents:
diff changeset
   188
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   189