wim/WimClient/src/WimTrustSettingsAPI.cpp
changeset 0 164170e6151a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wim/WimClient/src/WimTrustSettingsAPI.cpp	Tue Jan 26 15:20:08 2010 +0200
@@ -0,0 +1,282 @@
+/*
+* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Interface for WIM Trust Settings Store
+*
+*/
+
+
+
+// INCLUDE FILES
+#include "WimTrustSettingsAPI.h"
+#include "WimCertInfo.h"
+#include "WimTrustSettingsMgmt.h"
+#include "WimTrace.h"
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CWimTrustSettingsAPI::CWimTrustSettingsAPI()
+// Default constructor.
+// -----------------------------------------------------------------------------
+//
+CWimTrustSettingsAPI::CWimTrustSettingsAPI() : CActive( EPriorityNormal )
+    {
+    CActiveScheduler::Add( this );
+    }
+
+// -----------------------------------------------------------------------------
+// CWimTrustSettingsAPI::ConstructL()
+// Second phase constructor.
+// -----------------------------------------------------------------------------
+//
+void CWimTrustSettingsAPI::ConstructL()
+    {
+    _WIMTRACE ( _L( "CWimTrustSettingsAPI::ConstructL()" ) );
+    iConnectionHandle = RWimTrustSettingsMgmt::ClientSessionL();  
+    }
+
+// -----------------------------------------------------------------------------
+// CWimTrustSettingsAPI::NewL()
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CWimTrustSettingsAPI* CWimTrustSettingsAPI::NewL()
+    {
+    _WIMTRACE ( _L( "CWimTrustSettingsAPI::NewL()" ) );
+    CWimTrustSettingsAPI* self = new( ELeave ) CWimTrustSettingsAPI;
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CWimTrustSettingsAPI::~CWimTrustSettingsAPI()
+// Destructor. If updates has been done, compact databse.
+// -----------------------------------------------------------------------------
+
+EXPORT_C CWimTrustSettingsAPI::~CWimTrustSettingsAPI()
+    {
+    _WIMTRACE ( _L( "CWimTrustSettingsAPI::~CWimTrustSettingsAPI()" ) );
+    iConnectionHandle->Close();
+    delete iConnectionHandle;
+    }
+
+// -----------------------------------------------------------------------------
+// CWimTrustSettingsAPI::Close()
+// Closes all open resources and deletes this instance of the TrustSettingsStore
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CWimTrustSettingsAPI::Close()
+    {
+    _WIMTRACE ( _L( "CWimTrustSettingsAPI::Close()" ) );
+    delete ( this );
+    }
+
+// -----------------------------------------------------------------------------
+// CWimTrustSettingsAPI::GetTrustSettings()
+// Return trust settings for given certificate.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CWimTrustSettingsAPI::GetTrustSettings( 
+    const CWimCertInfo& aCert,
+    TBool& aTrusted,
+    RArray<TUid>& aApplications, 
+    TRequestStatus& aStatus )
+    {
+    _WIMTRACE ( _L( "CWimTrustSettingsAPI::GetTrustSettings()" ) );
+    
+    iApplications = &aApplications;
+    iTrusted = &aTrusted;
+
+    iClientStatus = &aStatus;
+    iStatus = KRequestPending;
+    iPhase = EGetTrustSettings;
+
+    TRAPD( error, iConnectionHandle->GetTrustSettingsL( aCert,
+                                                        iStatus ) );
+    SetActive();
+
+    HandleLeaveError( error );
+    }
+
+// -----------------------------------------------------------------------------
+// CWimTrustSettingsAPI::SetApplicability()
+// Set applicability for certificate.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CWimTrustSettingsAPI::SetApplicability(
+    const CWimCertInfo& aCert,
+    const RArray<TUid>& aApplications,
+    TRequestStatus& aStatus )
+    {
+    _WIMTRACE ( _L( "CWimTrustSettingsAPI::SetApplicability()" ) );
+    iClientStatus = &aStatus;
+    iStatus = KRequestPending;
+    iPhase = ESetApplicability;
+
+    SetActive();
+    
+    TRAPD( error,
+        iConnectionHandle->SetApplicabilityL( aCert, aApplications, iStatus ) );
+
+    HandleLeaveError( error );
+    }
+
+// -----------------------------------------------------------------------------
+// CWimTrustSettingsAPI::SetTrust()
+// Set trust flag for certificate.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CWimTrustSettingsAPI::SetTrust(
+    const CWimCertInfo& aCert,
+    TBool aTrusted,
+    TRequestStatus& aStatus )
+    {
+    _WIMTRACE ( _L( "CWimTrustSettingsAPI::SetTrust()" ) );
+    iClientStatus = &aStatus;
+    iStatus = KRequestPending;
+    iPhase = ESetTrust;
+
+    TRAPD( error, iConnectionHandle->SetTrustL( aCert, aTrusted, iStatus ) );
+    SetActive();
+    HandleLeaveError( error );
+    }
+
+// -----------------------------------------------------------------------------
+// CWimTrustSettingsAPI::SetDefaultTrustSettings()
+// Set default trust settings for certificate.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CWimTrustSettingsAPI::SetDefaultTrustSettings(
+    const CWimCertInfo& aCert,
+    TBool aAddApps,
+    TRequestStatus& aStatus )
+    {
+    _WIMTRACE ( _L( "CWimTrustSettingsAPI::SetDefaultTrustSettings()" ) );
+
+    iClientStatus = &aStatus;
+    iStatus = KRequestPending;
+    iPhase = ESetDefaultTrustSettings;
+
+    TRAPD( error, iConnectionHandle->SetDefaultTrustSettingsL( aCert,
+                                                               aAddApps,
+                                                               iStatus ) );
+    SetActive();   
+    HandleLeaveError( error );
+    }
+
+// -----------------------------------------------------------------------------
+// CWimTrustSettingsAPI::RemoveTrustSettings()
+// Remove trust settings of given certificate
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CWimTrustSettingsAPI::RemoveTrustSettings(
+    const CWimCertInfo& aCert,
+    TRequestStatus& aStatus )
+    {
+    _WIMTRACE( _L( "CWimTrustSettingsAPI::RemoveTrustSettings()" ) );
+    
+    iClientStatus = &aStatus;
+    iStatus = KRequestPending;
+    iPhase = ERemoveTrustSettings;
+
+    TRAPD( error,
+        iConnectionHandle->RemoveTrustSettingsL( aCert, iStatus ) );
+    SetActive();
+    HandleLeaveError( error );
+    }
+
+// -----------------------------------------------------------------------------
+// CWimTrustSettingsAPI::CancelDoing()
+// Cancel ongoing operation
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CWimTrustSettingsAPI::CancelDoing()
+    {
+    _WIMTRACE( _L( "CWimTrustSettingsAPI::CancelDoing()" ) );
+    iConnectionHandle->CancelDoing();
+    }
+
+// -----------------------------------------------------------------------------
+// CWimTrustSettingsAPI::RunL()
+// Handle result of asynchronous Trust Settings Store operation.
+// -----------------------------------------------------------------------------
+//
+void CWimTrustSettingsAPI::RunL()
+    {
+    _WIMTRACE2( _L( "CWimTrustSettingsAPI::RunL(), iStatus=%d" ),
+               iStatus.Int() );
+
+    switch ( iPhase )
+        {
+        case EGetTrustSettings:
+            {
+            if ( iStatus.Int() == KErrNone )
+                {
+                TPckgBuf<TTrustSettings> trustSettingsPckgBuf;
+    
+                trustSettingsPckgBuf = 
+                    ( *iConnectionHandle->TrustSettingsPckg()->PckgBuf() );
+
+                TUid uid;
+
+                for ( TInt i = 0;
+                    i < trustSettingsPckgBuf().iApplicationCount; i++ )
+                    {
+                    uid.iUid = trustSettingsPckgBuf().iUids[i];
+
+                    iApplications->Append( uid );
+                    }
+                *iTrusted = trustSettingsPckgBuf().iTrusted;
+                }
+
+            break;
+            }
+
+        default:
+            {
+            break;
+            }
+        }
+    User::RequestComplete( iClientStatus, iStatus.Int() );
+    }
+
+// -----------------------------------------------------------------------------
+// CWimTrustSettingsAPI::DoCancel()
+// 
+// -----------------------------------------------------------------------------
+//
+void CWimTrustSettingsAPI::DoCancel()
+    {
+
+    }
+
+// -----------------------------------------------------------------------------
+// CWimTrustSettingsAPI::HandleLeaveError()
+// Handle trapped leave. Complete client request with error code.
+// -----------------------------------------------------------------------------
+//
+void CWimTrustSettingsAPI::HandleLeaveError( TInt aError )
+    {
+    _WIMTRACE2( _L( "CWimTrustSettingsAPI::HandleLeaveError(), aError=%d" ),
+                aError );
+    if ( aError != KErrNone )
+        {
+        TRequestStatus* status = &iStatus;
+        User::RequestComplete( status, aError );
+        }
+    }
+
+//  End of File