--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptomgmtlibs/cryptotokenfw/source/ctframework/CRefSecurityDialog.h Wed Jul 08 11:25:26 2009 +0100
@@ -0,0 +1,146 @@
+/*
+* Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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:
+* CRefSecurityDialog class implementation
+*
+*/
+
+
+
+
+/**
+ @file
+ @internalTechnology
+*/
+
+#ifndef __CREFSECURITYDIALOG_H__
+#define __CREFSECURITYDIALOG_H__
+
+#include "secdlgimpldefs.h"
+
+class CDialogRequester;
+
+/**
+ * Reference implementation of the MSecurityDialog API. It wraps the arguments into
+ * a form suitable for use with the RNotifier dialog framework.
+ */
+NONSHARABLE_CLASS(CRefSecurityDialog) : public CBase, public MSecurityDialog
+ {
+public:
+ ~CRefSecurityDialog();
+ static CRefSecurityDialog* NewL();
+
+public: // from MSecurityDialog
+ void ServerAuthenticationFailure(const TDesC8& aServerName,const TValidationError& aFailureReason,const TDesC8& aEncodedCert,TRequestStatus& aStatus );
+ void Release();
+ void EnterPIN( const TPINParams& aPINParams, TBool aRetry, TPINValue& aPINValue,
+ TRequestStatus& aStatus );
+ void EnablePIN( const TPINParams& aPINParams, TBool aRetry, TPINValue& aPINValue,
+ TRequestStatus& aStatus );
+ void DisablePIN( const TPINParams& aPINParams, TBool aRetry, TPINValue& aPINValue,
+ TRequestStatus& aStatus );
+ void ChangePIN( const TPINParams& aPINParams, TBool aRetry,
+ TPINValue& aOldPINValue, TPINValue& aNewPINValue,
+ TRequestStatus& aStatus );
+ void UnblockPIN( const TPINParams& aBlockedPINParams,
+ const TPINParams& aUnblockingPINParams, TBool aRetry,
+ TPINValue& aUnblockingPINValue, TPINValue& aNewPINValue,
+ TRequestStatus& aStatus );
+ void UnblockPINInClear( const TPINParams& aBlockedPINParams,
+ const TPINParams& aUnblockingPINParams, TBool aRetry,
+ TUnblockPINValue& aUnblockingPINValue, TPINValue& aNewPINValue,
+ TRequestStatus& aStatus );
+ void Cancel();
+ void PINBlocked( const TPINParams& aPINParams, TRequestStatus& aStatus );
+ void TotalBlocked( const TPINParams& aPINParams, TRequestStatus& aStatus );
+ void EstablishSecureConnection( const TDesC8& aCertData,
+ const RArray<TCTTokenObjectHandle>& aCertHandleList,
+ MSecurityDialog::TConnectionType aConnectionType,
+ TBool& aDoClientAuthentication, TCTTokenObjectHandle& aCertId,
+ TRequestStatus& aStatus );
+ void SignText( const TDesC& aText,
+ const RArray<TCTTokenObjectHandle>& aCertIdList,
+ TCTTokenObjectHandle& aCertId,
+ TRequestStatus& aStatus );
+
+ void HandleResponse( TInt aResult );
+
+private:
+ void ConstructL();
+ void DoBasicPINOperation( TSecurityDialogOperation aOperation,
+ const TPINParams& aPINParams, TBool aRetry, TDes8& aPINValue,
+ TRequestStatus& aStatus );
+ void InitClientStatus( TRequestStatus& aStatus );
+
+private:
+ CDialogRequester* iRequester;
+ TSecurityDialogOperation iCurrentOperation;
+ TRequestStatus* iClientStatus;
+ TPINValue* iClientPINValuePtr;
+ TUnblockPINValue* iClientUnblockPINValuePtr;
+ TPINValue* iClientSecondPINValuePtr;
+ TPINValueBuf iPINValueBuf;
+ TTwoPINOutputBuf iTwoPINOutputBuf;
+ TUnblockPINInClearOutputBuf iUnblockPINInClearOutputBuf;
+ TSignInputBuf iSignInputBuf;
+ TPtrC8 iVariableDataPtr;
+ TCTTokenObjectHandle* iClientCertInfoHandlePtr;
+ TBool* iClientDoClientAuthenticationPtr;
+ TCTTokenObjectHandleBuf iCertInfoHandleBuf;
+ TUnblockPINInputBuf iUnblockPINInputBuf;
+ TPINInputBuf iPINInputBuf;
+ TServerAuthenticationFailureOutputBuf iServerAuthenticationOutputBuf;
+ };
+
+/**
+ * An AO used to call the notifier, which allows packaging and unpackaging of the
+ * arguments and return values for the client.
+ */
+NONSHARABLE_CLASS(CDialogRequester) : public CActive
+ {
+private:
+ enum TState { KFillingVariableInputBuffer, KMakingRequest };
+
+public:
+ static CDialogRequester* NewL( CRefSecurityDialog& aSecDialog );
+ ~CDialogRequester();
+ void RequestDialog( const TDesC8& aData, TDes8& aResponse );
+ void RequestVariableBufferDialog( const TDesC8& aOperationData,
+ const TDesC8& aVariableData,
+ const RArray<TCTTokenObjectHandle>& aCertHandleList,
+ TDes8& aResponse );
+
+ void RequestDialog(HBufC8* iInputBuffer, TDes8& aResponse);
+
+private:
+ CDialogRequester( CRefSecurityDialog& aSecDialog );
+ void ConstructL();
+
+private: // from CActive
+ void RunL();
+ void DoCancel();
+ TInt RunError( TInt aError );
+
+private:
+ TState iState;
+ RNotifier iNotifier;
+ CRefSecurityDialog& iSecDialog;
+ const TDesC8* iOperationDataPtr;
+ const TDesC8* iVariableDataPtr;
+ const RArray<TCTTokenObjectHandle>* iCertHandleListPtr;
+ HBufC8* iInputBuffer;
+ TDes8* iResponsePtr;
+ };
+
+#endif