pkiutilities/securitydialognotifiersrv/src/untrustedcertquery.cpp
author hgs
Fri, 20 Aug 2010 11:27:50 +0300
changeset 48 6ed68423b759
permissions -rw-r--r--
201033_01
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
48
6ed68423b759 201033_01
hgs
parents:
diff changeset
     1
/*
6ed68423b759 201033_01
hgs
parents:
diff changeset
     2
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
6ed68423b759 201033_01
hgs
parents:
diff changeset
     3
* All rights reserved.
6ed68423b759 201033_01
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
6ed68423b759 201033_01
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
6ed68423b759 201033_01
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
6ed68423b759 201033_01
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
6ed68423b759 201033_01
hgs
parents:
diff changeset
     8
*
6ed68423b759 201033_01
hgs
parents:
diff changeset
     9
* Initial Contributors:
6ed68423b759 201033_01
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
6ed68423b759 201033_01
hgs
parents:
diff changeset
    11
*
6ed68423b759 201033_01
hgs
parents:
diff changeset
    12
* Contributors:
6ed68423b759 201033_01
hgs
parents:
diff changeset
    13
*
6ed68423b759 201033_01
hgs
parents:
diff changeset
    14
* Description:  Displays untrusted certificate dialog
6ed68423b759 201033_01
hgs
parents:
diff changeset
    15
*
6ed68423b759 201033_01
hgs
parents:
diff changeset
    16
*/
6ed68423b759 201033_01
hgs
parents:
diff changeset
    17
6ed68423b759 201033_01
hgs
parents:
diff changeset
    18
#include "untrustedcertquery.h"             // CUntrustedCertQuery
6ed68423b759 201033_01
hgs
parents:
diff changeset
    19
#include <hb/hbcore/hbsymbianvariant.h>     // CHbSymbianVariantMap
6ed68423b759 201033_01
hgs
parents:
diff changeset
    20
#include "securitydialogstrace.h"           // TRACE macro
6ed68423b759 201033_01
hgs
parents:
diff changeset
    21
6ed68423b759 201033_01
hgs
parents:
diff changeset
    22
// Note that the dialog type string, the parameters name strings, and the return code
6ed68423b759 201033_01
hgs
parents:
diff changeset
    23
// name string and values must match to those defined in Qt-side untrusted certificate
6ed68423b759 201033_01
hgs
parents:
diff changeset
    24
// dialog (in untrustedcertificatedefinitions.h file).
6ed68423b759 201033_01
hgs
parents:
diff changeset
    25
6ed68423b759 201033_01
hgs
parents:
diff changeset
    26
// Device dialog type for untrusted certificate dialog
6ed68423b759 201033_01
hgs
parents:
diff changeset
    27
_LIT( KUntrustedCertificateDialog, "com.nokia.untrustedcert/1.0" );
6ed68423b759 201033_01
hgs
parents:
diff changeset
    28
6ed68423b759 201033_01
hgs
parents:
diff changeset
    29
// Variant map parameter names for untrusted certificate dialog
6ed68423b759 201033_01
hgs
parents:
diff changeset
    30
_LIT( KUntrustedCertEncodedCertificate, "cert" );   // bytearray, mandatory
6ed68423b759 201033_01
hgs
parents:
diff changeset
    31
_LIT( KUntrustedCertServerName, "host" );           // string, mandatory
6ed68423b759 201033_01
hgs
parents:
diff changeset
    32
_LIT( KUntrustedCertValidationError, "err" );       // int (TValidationError), mandatory
6ed68423b759 201033_01
hgs
parents:
diff changeset
    33
_LIT( KUntrustedCertTrustedSiteStoreFail, "tss" );  // any, prevents permanent acceptance
6ed68423b759 201033_01
hgs
parents:
diff changeset
    34
6ed68423b759 201033_01
hgs
parents:
diff changeset
    35
// Dialog return code name and values
6ed68423b759 201033_01
hgs
parents:
diff changeset
    36
_LIT( KUntrustedCertDialogResult, "result" );       // int
6ed68423b759 201033_01
hgs
parents:
diff changeset
    37
const TInt KUntrustedCertDialogRejected = 0;
6ed68423b759 201033_01
hgs
parents:
diff changeset
    38
const TInt KUntrustedCertDialogAccepted = 1;
6ed68423b759 201033_01
hgs
parents:
diff changeset
    39
const TInt KUntrustedCertDialogAcceptedPermanently = 2;
6ed68423b759 201033_01
hgs
parents:
diff changeset
    40
6ed68423b759 201033_01
hgs
parents:
diff changeset
    41
6ed68423b759 201033_01
hgs
parents:
diff changeset
    42
// ======== MEMBER FUNCTIONS ========
6ed68423b759 201033_01
hgs
parents:
diff changeset
    43
6ed68423b759 201033_01
hgs
parents:
diff changeset
    44
// ---------------------------------------------------------------------------
6ed68423b759 201033_01
hgs
parents:
diff changeset
    45
// CUntrustedCertQuery::NewL()
6ed68423b759 201033_01
hgs
parents:
diff changeset
    46
// ---------------------------------------------------------------------------
6ed68423b759 201033_01
hgs
parents:
diff changeset
    47
//
6ed68423b759 201033_01
hgs
parents:
diff changeset
    48
CUntrustedCertQuery* CUntrustedCertQuery::NewL(
6ed68423b759 201033_01
hgs
parents:
diff changeset
    49
        TValidationError aValidationError, const TDesC8& aCertificate,
6ed68423b759 201033_01
hgs
parents:
diff changeset
    50
        const TDesC& aServerName, TBool aCanHandlePermanentAccept )
6ed68423b759 201033_01
hgs
parents:
diff changeset
    51
    {
6ed68423b759 201033_01
hgs
parents:
diff changeset
    52
    TRACE( "CUntrustedCertQuery::NewL" );
6ed68423b759 201033_01
hgs
parents:
diff changeset
    53
    CUntrustedCertQuery* self = new ( ELeave ) CUntrustedCertQuery(
6ed68423b759 201033_01
hgs
parents:
diff changeset
    54
            aValidationError, aCertificate, aServerName,
6ed68423b759 201033_01
hgs
parents:
diff changeset
    55
            aCanHandlePermanentAccept );
6ed68423b759 201033_01
hgs
parents:
diff changeset
    56
    CleanupStack::PushL( self );
6ed68423b759 201033_01
hgs
parents:
diff changeset
    57
    self->ConstructL();
6ed68423b759 201033_01
hgs
parents:
diff changeset
    58
    CleanupStack::Pop( self );
6ed68423b759 201033_01
hgs
parents:
diff changeset
    59
    return self;
6ed68423b759 201033_01
hgs
parents:
diff changeset
    60
    }
6ed68423b759 201033_01
hgs
parents:
diff changeset
    61
6ed68423b759 201033_01
hgs
parents:
diff changeset
    62
// ---------------------------------------------------------------------------
6ed68423b759 201033_01
hgs
parents:
diff changeset
    63
// CUntrustedCertQuery::~CUntrustedCertQuery()
6ed68423b759 201033_01
hgs
parents:
diff changeset
    64
// ---------------------------------------------------------------------------
6ed68423b759 201033_01
hgs
parents:
diff changeset
    65
//
6ed68423b759 201033_01
hgs
parents:
diff changeset
    66
CUntrustedCertQuery::~CUntrustedCertQuery()
6ed68423b759 201033_01
hgs
parents:
diff changeset
    67
    {
6ed68423b759 201033_01
hgs
parents:
diff changeset
    68
    TRACE( "CUntrustedCertQuery::~CUntrustedCertQuery, begin" );
6ed68423b759 201033_01
hgs
parents:
diff changeset
    69
    Cancel();
6ed68423b759 201033_01
hgs
parents:
diff changeset
    70
    delete iWait;
6ed68423b759 201033_01
hgs
parents:
diff changeset
    71
    iWait = NULL;
6ed68423b759 201033_01
hgs
parents:
diff changeset
    72
    delete iDeviceDialog;
6ed68423b759 201033_01
hgs
parents:
diff changeset
    73
    iDeviceDialog = NULL;
6ed68423b759 201033_01
hgs
parents:
diff changeset
    74
    delete iVariantMap;
6ed68423b759 201033_01
hgs
parents:
diff changeset
    75
    iVariantMap = NULL;
6ed68423b759 201033_01
hgs
parents:
diff changeset
    76
    TRACE( "CUntrustedCertQuery::~CUntrustedCertQuery, end" );
6ed68423b759 201033_01
hgs
parents:
diff changeset
    77
    }
6ed68423b759 201033_01
hgs
parents:
diff changeset
    78
6ed68423b759 201033_01
hgs
parents:
diff changeset
    79
// ---------------------------------------------------------------------------
6ed68423b759 201033_01
hgs
parents:
diff changeset
    80
// CUntrustedCertQuery::ShowQueryAndWaitForResponseL()
6ed68423b759 201033_01
hgs
parents:
diff changeset
    81
// ---------------------------------------------------------------------------
6ed68423b759 201033_01
hgs
parents:
diff changeset
    82
//
6ed68423b759 201033_01
hgs
parents:
diff changeset
    83
void CUntrustedCertQuery::ShowQueryAndWaitForResponseL( TResponse& aResponse )
6ed68423b759 201033_01
hgs
parents:
diff changeset
    84
    {
6ed68423b759 201033_01
hgs
parents:
diff changeset
    85
    TRACE( "CUntrustedCertQuery::ShowQueryAndWaitForResponseL, begin" );
6ed68423b759 201033_01
hgs
parents:
diff changeset
    86
    if( !iDeviceDialog )
6ed68423b759 201033_01
hgs
parents:
diff changeset
    87
        {
6ed68423b759 201033_01
hgs
parents:
diff changeset
    88
        iDeviceDialog = CHbDeviceDialogSymbian::NewL();
6ed68423b759 201033_01
hgs
parents:
diff changeset
    89
        }
6ed68423b759 201033_01
hgs
parents:
diff changeset
    90
    if( !iVariantMap )
6ed68423b759 201033_01
hgs
parents:
diff changeset
    91
        {
6ed68423b759 201033_01
hgs
parents:
diff changeset
    92
        iVariantMap = CHbSymbianVariantMap::NewL();
6ed68423b759 201033_01
hgs
parents:
diff changeset
    93
        }
6ed68423b759 201033_01
hgs
parents:
diff changeset
    94
6ed68423b759 201033_01
hgs
parents:
diff changeset
    95
    CHbSymbianVariant *variant = NULL;
6ed68423b759 201033_01
hgs
parents:
diff changeset
    96
    variant = CHbSymbianVariant::NewL( &iCertificate, CHbSymbianVariant::EBinary );
6ed68423b759 201033_01
hgs
parents:
diff changeset
    97
    User::LeaveIfError( iVariantMap->Add( KUntrustedCertEncodedCertificate, variant ) );
6ed68423b759 201033_01
hgs
parents:
diff changeset
    98
    variant = CHbSymbianVariant::NewL( &iValidationError, CHbSymbianVariant::EInt );
6ed68423b759 201033_01
hgs
parents:
diff changeset
    99
    User::LeaveIfError( iVariantMap->Add( KUntrustedCertValidationError, variant ) );
6ed68423b759 201033_01
hgs
parents:
diff changeset
   100
    variant = CHbSymbianVariant::NewL( &iServerName, CHbSymbianVariant::EDes );
6ed68423b759 201033_01
hgs
parents:
diff changeset
   101
    User::LeaveIfError( iVariantMap->Add( KUntrustedCertServerName, variant ) );
6ed68423b759 201033_01
hgs
parents:
diff changeset
   102
    if( !iCanHandlePermanentAccept )
6ed68423b759 201033_01
hgs
parents:
diff changeset
   103
        {
6ed68423b759 201033_01
hgs
parents:
diff changeset
   104
        variant = CHbSymbianVariant::NewL( &iCanHandlePermanentAccept, CHbSymbianVariant::EBool );
6ed68423b759 201033_01
hgs
parents:
diff changeset
   105
        User::LeaveIfError( iVariantMap->Add( KUntrustedCertTrustedSiteStoreFail, variant ) );
6ed68423b759 201033_01
hgs
parents:
diff changeset
   106
        }
6ed68423b759 201033_01
hgs
parents:
diff changeset
   107
6ed68423b759 201033_01
hgs
parents:
diff changeset
   108
    User::LeaveIfError( iDeviceDialog->Show( KUntrustedCertificateDialog, *iVariantMap, this ) );
6ed68423b759 201033_01
hgs
parents:
diff changeset
   109
    iStatus = KRequestPending;
6ed68423b759 201033_01
hgs
parents:
diff changeset
   110
    SetActive();
6ed68423b759 201033_01
hgs
parents:
diff changeset
   111
6ed68423b759 201033_01
hgs
parents:
diff changeset
   112
    TRACE( "CUntrustedCertQuery::ShowQueryAndWaitForResponseL, iWait start" );
6ed68423b759 201033_01
hgs
parents:
diff changeset
   113
    iWait->Start();
6ed68423b759 201033_01
hgs
parents:
diff changeset
   114
    TRACE( "CUntrustedCertQuery::ShowQueryAndWaitForResponseL, iWaitCompletionCode=%d",
6ed68423b759 201033_01
hgs
parents:
diff changeset
   115
            iWaitCompletionCode );
6ed68423b759 201033_01
hgs
parents:
diff changeset
   116
    User::LeaveIfError( iWaitCompletionCode );
6ed68423b759 201033_01
hgs
parents:
diff changeset
   117
    TRACE( "CUntrustedCertQuery::ShowQueryAndWaitForResponseL, iResponse=%d", iResponse );
6ed68423b759 201033_01
hgs
parents:
diff changeset
   118
    aResponse = iResponse;
6ed68423b759 201033_01
hgs
parents:
diff changeset
   119
    }
6ed68423b759 201033_01
hgs
parents:
diff changeset
   120
6ed68423b759 201033_01
hgs
parents:
diff changeset
   121
// ---------------------------------------------------------------------------
6ed68423b759 201033_01
hgs
parents:
diff changeset
   122
// CUntrustedCertQuery::DoCancel()
6ed68423b759 201033_01
hgs
parents:
diff changeset
   123
// ---------------------------------------------------------------------------
6ed68423b759 201033_01
hgs
parents:
diff changeset
   124
//
6ed68423b759 201033_01
hgs
parents:
diff changeset
   125
void CUntrustedCertQuery::DoCancel()
6ed68423b759 201033_01
hgs
parents:
diff changeset
   126
    {
6ed68423b759 201033_01
hgs
parents:
diff changeset
   127
    TRACE( "CUntrustedCertQuery::DoCancel, begin" );
6ed68423b759 201033_01
hgs
parents:
diff changeset
   128
    if( iDeviceDialog )
6ed68423b759 201033_01
hgs
parents:
diff changeset
   129
        {
6ed68423b759 201033_01
hgs
parents:
diff changeset
   130
        TRACE( "CUntrustedCertQuery::DoCancel, cancelling device dialog" );
6ed68423b759 201033_01
hgs
parents:
diff changeset
   131
        iDeviceDialog->Cancel();
6ed68423b759 201033_01
hgs
parents:
diff changeset
   132
        }
6ed68423b759 201033_01
hgs
parents:
diff changeset
   133
6ed68423b759 201033_01
hgs
parents:
diff changeset
   134
    // Have to complete the request here, because cancelled device dialog does not
6ed68423b759 201033_01
hgs
parents:
diff changeset
   135
    // call DeviceDialogClosed() that normally completes it. The request needs to
6ed68423b759 201033_01
hgs
parents:
diff changeset
   136
    // be completed since CActive::Cancel() waits until the request is completed.
6ed68423b759 201033_01
hgs
parents:
diff changeset
   137
    TRACE( "CUntrustedCertQuery::DoCancel, completing self with KErrCancel" );
6ed68423b759 201033_01
hgs
parents:
diff changeset
   138
    TRequestStatus* status( &iStatus );
6ed68423b759 201033_01
hgs
parents:
diff changeset
   139
    User::RequestComplete( status, KErrCancel );
6ed68423b759 201033_01
hgs
parents:
diff changeset
   140
6ed68423b759 201033_01
hgs
parents:
diff changeset
   141
    // Normally the above request complete would trigger running RunL(). Now RunL()
6ed68423b759 201033_01
hgs
parents:
diff changeset
   142
    // is not run since the active object is already cancelled. Hence, have to stop
6ed68423b759 201033_01
hgs
parents:
diff changeset
   143
    // the waiting here so that iWait->Start() returns.
6ed68423b759 201033_01
hgs
parents:
diff changeset
   144
    iWaitCompletionCode = KErrCancel;
6ed68423b759 201033_01
hgs
parents:
diff changeset
   145
    if( iWait && iWait->IsStarted() )
6ed68423b759 201033_01
hgs
parents:
diff changeset
   146
        {
6ed68423b759 201033_01
hgs
parents:
diff changeset
   147
        TRACE( "CUntrustedCertQuery::DoCancel, stopping iWait" );
6ed68423b759 201033_01
hgs
parents:
diff changeset
   148
        iWait->AsyncStop();
6ed68423b759 201033_01
hgs
parents:
diff changeset
   149
        }
6ed68423b759 201033_01
hgs
parents:
diff changeset
   150
    TRACE( "CUntrustedCertQuery::DoCancel, end" );
6ed68423b759 201033_01
hgs
parents:
diff changeset
   151
    }
6ed68423b759 201033_01
hgs
parents:
diff changeset
   152
6ed68423b759 201033_01
hgs
parents:
diff changeset
   153
// ---------------------------------------------------------------------------
6ed68423b759 201033_01
hgs
parents:
diff changeset
   154
// CUntrustedCertQuery::RunL()
6ed68423b759 201033_01
hgs
parents:
diff changeset
   155
// ---------------------------------------------------------------------------
6ed68423b759 201033_01
hgs
parents:
diff changeset
   156
//
6ed68423b759 201033_01
hgs
parents:
diff changeset
   157
void CUntrustedCertQuery::RunL()
6ed68423b759 201033_01
hgs
parents:
diff changeset
   158
    {
6ed68423b759 201033_01
hgs
parents:
diff changeset
   159
    TRACE( "CUntrustedCertQuery::RunL, iStatus.Int()=%d", iStatus.Int() );
6ed68423b759 201033_01
hgs
parents:
diff changeset
   160
    iWaitCompletionCode = iStatus.Int();
6ed68423b759 201033_01
hgs
parents:
diff changeset
   161
    if( iWait && iWait->IsStarted() )
6ed68423b759 201033_01
hgs
parents:
diff changeset
   162
        {
6ed68423b759 201033_01
hgs
parents:
diff changeset
   163
        TRACE( "CUntrustedCertQuery::RunL, stopping iWait" );
6ed68423b759 201033_01
hgs
parents:
diff changeset
   164
        iWait->AsyncStop();
6ed68423b759 201033_01
hgs
parents:
diff changeset
   165
        }
6ed68423b759 201033_01
hgs
parents:
diff changeset
   166
    }
6ed68423b759 201033_01
hgs
parents:
diff changeset
   167
6ed68423b759 201033_01
hgs
parents:
diff changeset
   168
// ---------------------------------------------------------------------------
6ed68423b759 201033_01
hgs
parents:
diff changeset
   169
// CUntrustedCertQuery::DataReceived()
6ed68423b759 201033_01
hgs
parents:
diff changeset
   170
// ---------------------------------------------------------------------------
6ed68423b759 201033_01
hgs
parents:
diff changeset
   171
//
6ed68423b759 201033_01
hgs
parents:
diff changeset
   172
void CUntrustedCertQuery::DataReceived( CHbSymbianVariantMap& aData )
6ed68423b759 201033_01
hgs
parents:
diff changeset
   173
    {
6ed68423b759 201033_01
hgs
parents:
diff changeset
   174
    TRACE( "CUntrustedCertQuery::DataReceived" );
6ed68423b759 201033_01
hgs
parents:
diff changeset
   175
    const CHbSymbianVariant* variant = aData.Get( KUntrustedCertDialogResult );
6ed68423b759 201033_01
hgs
parents:
diff changeset
   176
    if( variant )
6ed68423b759 201033_01
hgs
parents:
diff changeset
   177
        {
6ed68423b759 201033_01
hgs
parents:
diff changeset
   178
        TInt* value = variant->Value<TInt>();
6ed68423b759 201033_01
hgs
parents:
diff changeset
   179
        if( value )
6ed68423b759 201033_01
hgs
parents:
diff changeset
   180
            {
6ed68423b759 201033_01
hgs
parents:
diff changeset
   181
            switch( *value )
6ed68423b759 201033_01
hgs
parents:
diff changeset
   182
                {
6ed68423b759 201033_01
hgs
parents:
diff changeset
   183
                case KUntrustedCertDialogRejected:
6ed68423b759 201033_01
hgs
parents:
diff changeset
   184
                    TRACE( "CUntrustedCertQuery::DataReceived, rejected" );
6ed68423b759 201033_01
hgs
parents:
diff changeset
   185
                    iResponse = EQueryRejected;
6ed68423b759 201033_01
hgs
parents:
diff changeset
   186
                    break;
6ed68423b759 201033_01
hgs
parents:
diff changeset
   187
                case KUntrustedCertDialogAccepted:
6ed68423b759 201033_01
hgs
parents:
diff changeset
   188
                    TRACE( "CUntrustedCertQuery::DataReceived, accepted" );
6ed68423b759 201033_01
hgs
parents:
diff changeset
   189
                    iResponse = EQueryAccepted;
6ed68423b759 201033_01
hgs
parents:
diff changeset
   190
                    break;
6ed68423b759 201033_01
hgs
parents:
diff changeset
   191
                case KUntrustedCertDialogAcceptedPermanently:
6ed68423b759 201033_01
hgs
parents:
diff changeset
   192
                    TRACE( "CUntrustedCertQuery::DataReceived, accepted permanently" );
6ed68423b759 201033_01
hgs
parents:
diff changeset
   193
                    iResponse = EQueryAcceptedPermanently;
6ed68423b759 201033_01
hgs
parents:
diff changeset
   194
                    break;
6ed68423b759 201033_01
hgs
parents:
diff changeset
   195
                default:
6ed68423b759 201033_01
hgs
parents:
diff changeset
   196
                    __ASSERT_DEBUG( EFalse, User::Invariant() );
6ed68423b759 201033_01
hgs
parents:
diff changeset
   197
                    break;
6ed68423b759 201033_01
hgs
parents:
diff changeset
   198
                }
6ed68423b759 201033_01
hgs
parents:
diff changeset
   199
            }
6ed68423b759 201033_01
hgs
parents:
diff changeset
   200
        else
6ed68423b759 201033_01
hgs
parents:
diff changeset
   201
            {
6ed68423b759 201033_01
hgs
parents:
diff changeset
   202
            __ASSERT_DEBUG( EFalse, User::Invariant() );
6ed68423b759 201033_01
hgs
parents:
diff changeset
   203
            }
6ed68423b759 201033_01
hgs
parents:
diff changeset
   204
        }
6ed68423b759 201033_01
hgs
parents:
diff changeset
   205
    else
6ed68423b759 201033_01
hgs
parents:
diff changeset
   206
        {
6ed68423b759 201033_01
hgs
parents:
diff changeset
   207
        __ASSERT_DEBUG( EFalse, User::Invariant() );
6ed68423b759 201033_01
hgs
parents:
diff changeset
   208
        }
6ed68423b759 201033_01
hgs
parents:
diff changeset
   209
    }
6ed68423b759 201033_01
hgs
parents:
diff changeset
   210
6ed68423b759 201033_01
hgs
parents:
diff changeset
   211
// ---------------------------------------------------------------------------
6ed68423b759 201033_01
hgs
parents:
diff changeset
   212
// CUntrustedCertQuery::DeviceDialogClosed()
6ed68423b759 201033_01
hgs
parents:
diff changeset
   213
// ---------------------------------------------------------------------------
6ed68423b759 201033_01
hgs
parents:
diff changeset
   214
//
6ed68423b759 201033_01
hgs
parents:
diff changeset
   215
void CUntrustedCertQuery::DeviceDialogClosed( TInt aCompletionCode )
6ed68423b759 201033_01
hgs
parents:
diff changeset
   216
    {
6ed68423b759 201033_01
hgs
parents:
diff changeset
   217
    TRACE( "CUntrustedCertQuery::DeviceDialogClosed, aCompletionCode=%d", aCompletionCode );
6ed68423b759 201033_01
hgs
parents:
diff changeset
   218
    if( IsActive() )
6ed68423b759 201033_01
hgs
parents:
diff changeset
   219
        {
6ed68423b759 201033_01
hgs
parents:
diff changeset
   220
        TRACE( "CUntrustedCertQuery::DeviceDialogClosed, request complete" );
6ed68423b759 201033_01
hgs
parents:
diff changeset
   221
        TRequestStatus* status( &iStatus );
6ed68423b759 201033_01
hgs
parents:
diff changeset
   222
        User::RequestComplete( status, aCompletionCode );
6ed68423b759 201033_01
hgs
parents:
diff changeset
   223
        }
6ed68423b759 201033_01
hgs
parents:
diff changeset
   224
    }
6ed68423b759 201033_01
hgs
parents:
diff changeset
   225
6ed68423b759 201033_01
hgs
parents:
diff changeset
   226
// ---------------------------------------------------------------------------
6ed68423b759 201033_01
hgs
parents:
diff changeset
   227
// CUntrustedCertQuery::CUntrustedCertQuery()
6ed68423b759 201033_01
hgs
parents:
diff changeset
   228
// ---------------------------------------------------------------------------
6ed68423b759 201033_01
hgs
parents:
diff changeset
   229
//
6ed68423b759 201033_01
hgs
parents:
diff changeset
   230
CUntrustedCertQuery::CUntrustedCertQuery(
6ed68423b759 201033_01
hgs
parents:
diff changeset
   231
        TValidationError aValidationError, const TDesC8& aCertificate,
6ed68423b759 201033_01
hgs
parents:
diff changeset
   232
        const TDesC& aServerName, TBool aCanHandlePermanentAccept ) :
6ed68423b759 201033_01
hgs
parents:
diff changeset
   233
        CActive( CActive::EPriorityStandard ), iValidationError( aValidationError ),
6ed68423b759 201033_01
hgs
parents:
diff changeset
   234
        iCertificate( aCertificate ), iServerName( aServerName ),
6ed68423b759 201033_01
hgs
parents:
diff changeset
   235
        iCanHandlePermanentAccept( aCanHandlePermanentAccept ),
6ed68423b759 201033_01
hgs
parents:
diff changeset
   236
        iResponse( EQueryRejected )
6ed68423b759 201033_01
hgs
parents:
diff changeset
   237
    {
6ed68423b759 201033_01
hgs
parents:
diff changeset
   238
    CActiveScheduler::Add( this );
6ed68423b759 201033_01
hgs
parents:
diff changeset
   239
    }
6ed68423b759 201033_01
hgs
parents:
diff changeset
   240
6ed68423b759 201033_01
hgs
parents:
diff changeset
   241
// ---------------------------------------------------------------------------
6ed68423b759 201033_01
hgs
parents:
diff changeset
   242
// CUntrustedCertQuery::ConstructL()
6ed68423b759 201033_01
hgs
parents:
diff changeset
   243
// ---------------------------------------------------------------------------
6ed68423b759 201033_01
hgs
parents:
diff changeset
   244
//
6ed68423b759 201033_01
hgs
parents:
diff changeset
   245
void CUntrustedCertQuery::ConstructL()
6ed68423b759 201033_01
hgs
parents:
diff changeset
   246
    {
6ed68423b759 201033_01
hgs
parents:
diff changeset
   247
    TRACE( "CUntrustedCertQuery::ConstructL" );
6ed68423b759 201033_01
hgs
parents:
diff changeset
   248
    iWait = new( ELeave ) CActiveSchedulerWait;
6ed68423b759 201033_01
hgs
parents:
diff changeset
   249
    }
6ed68423b759 201033_01
hgs
parents:
diff changeset
   250