First public contribution.
2 * Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
4 * This component and the accompanying materials are made available
5 * under the terms of the License "Eclipse Public License v1.0"
6 * which accompanies this distribution, and is available
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
9 * Initial Contributors:
10 * Nokia Corporation - initial contribution.
15 * CRefSecurityDialog class implementation
25 #ifndef __CREFSECURITYDIALOG_H__
26 #define __CREFSECURITYDIALOG_H__
28 #include "secdlgImplDefs.h"
30 class CDialogRequester;
33 * Reference implementation of the MSecurityDialog API. It wraps the arguments into
34 * a form suitable for use with the RNotifier dialog framework.
36 NONSHARABLE_CLASS(CRefSecurityDialog) : public CBase, public MSecurityDialog
39 ~CRefSecurityDialog();
40 static CRefSecurityDialog* NewL();
42 public: // from MSecurityDialog
43 void ServerAuthenticationFailure(const TDesC8& aServerName,const TValidationError& aFailureReason,const TDesC8& aEncodedCert,TRequestStatus& aStatus );
45 void EnterPIN( const TPINParams& aPINParams, TBool aRetry, TPINValue& aPINValue,
46 TRequestStatus& aStatus );
47 void EnablePIN( const TPINParams& aPINParams, TBool aRetry, TPINValue& aPINValue,
48 TRequestStatus& aStatus );
49 void DisablePIN( const TPINParams& aPINParams, TBool aRetry, TPINValue& aPINValue,
50 TRequestStatus& aStatus );
51 void ChangePIN( const TPINParams& aPINParams, TBool aRetry,
52 TPINValue& aOldPINValue, TPINValue& aNewPINValue,
53 TRequestStatus& aStatus );
54 void UnblockPIN( const TPINParams& aBlockedPINParams,
55 const TPINParams& aUnblockingPINParams, TBool aRetry,
56 TPINValue& aUnblockingPINValue, TPINValue& aNewPINValue,
57 TRequestStatus& aStatus );
58 void UnblockPINInClear( const TPINParams& aBlockedPINParams,
59 const TPINParams& aUnblockingPINParams, TBool aRetry,
60 TUnblockPINValue& aUnblockingPINValue, TPINValue& aNewPINValue,
61 TRequestStatus& aStatus );
63 void PINBlocked( const TPINParams& aPINParams, TRequestStatus& aStatus );
64 void TotalBlocked( const TPINParams& aPINParams, TRequestStatus& aStatus );
65 void EstablishSecureConnection( const TDesC8& aCertData,
66 const RArray<TCTTokenObjectHandle>& aCertHandleList,
67 MSecurityDialog::TConnectionType aConnectionType,
68 TBool& aDoClientAuthentication, TCTTokenObjectHandle& aCertId,
69 TRequestStatus& aStatus );
70 void SignText( const TDesC& aText,
71 const RArray<TCTTokenObjectHandle>& aCertIdList,
72 TCTTokenObjectHandle& aCertId,
73 TRequestStatus& aStatus );
75 void HandleResponse( TInt aResult );
79 void DoBasicPINOperation( TSecurityDialogOperation aOperation,
80 const TPINParams& aPINParams, TBool aRetry, TDes8& aPINValue,
81 TRequestStatus& aStatus );
82 void InitClientStatus( TRequestStatus& aStatus );
85 CDialogRequester* iRequester;
86 TSecurityDialogOperation iCurrentOperation;
87 TRequestStatus* iClientStatus;
88 TPINValue* iClientPINValuePtr;
89 TUnblockPINValue* iClientUnblockPINValuePtr;
90 TPINValue* iClientSecondPINValuePtr;
91 TPINValueBuf iPINValueBuf;
92 TTwoPINOutputBuf iTwoPINOutputBuf;
93 TUnblockPINInClearOutputBuf iUnblockPINInClearOutputBuf;
94 TSignInputBuf iSignInputBuf;
95 TPtrC8 iVariableDataPtr;
96 TCTTokenObjectHandle* iClientCertInfoHandlePtr;
97 TBool* iClientDoClientAuthenticationPtr;
98 TCTTokenObjectHandleBuf iCertInfoHandleBuf;
99 TUnblockPINInputBuf iUnblockPINInputBuf;
100 TPINInputBuf iPINInputBuf;
101 TServerAuthenticationFailureOutputBuf iServerAuthenticationOutputBuf;
105 * An AO used to call the notifier, which allows packaging and unpackaging of the
106 * arguments and return values for the client.
108 NONSHARABLE_CLASS(CDialogRequester) : public CActive
111 enum TState { KFillingVariableInputBuffer, KMakingRequest };
114 static CDialogRequester* NewL( CRefSecurityDialog& aSecDialog );
116 void RequestDialog( const TDesC8& aData, TDes8& aResponse );
117 void RequestVariableBufferDialog( const TDesC8& aOperationData,
118 const TDesC8& aVariableData,
119 const RArray<TCTTokenObjectHandle>& aCertHandleList,
122 void RequestDialog(HBufC8* iInputBuffer, TDes8& aResponse);
125 CDialogRequester( CRefSecurityDialog& aSecDialog );
128 private: // from CActive
131 TInt RunError( TInt aError );
136 CRefSecurityDialog& iSecDialog;
137 const TDesC8* iOperationDataPtr;
138 const TDesC8* iVariableDataPtr;
139 const RArray<TCTTokenObjectHandle>* iCertHandleListPtr;
140 HBufC8* iInputBuffer;