diff -r 000000000000 -r 164170e6151a pkiutilities/CTSecurityDialogs/ClientInc/CPKIDlg.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pkiutilities/CTSecurityDialogs/ClientInc/CPKIDlg.h Tue Jan 26 15:20:08 2010 +0200 @@ -0,0 +1,246 @@ +/* +* Copyright (c) 2005 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: Header file of the CPKIDialog +* +*/ + + +#ifndef CPKIDLG_H +#define CPKIDLG_H + +// INCLUDES +#include "SecurityDialogBase.h" +#include // MPKIDialog +#include +#include + +// FORWARD DECLARATIONS +class CCTSecurityDialogRequestor; + +// CLASS DECLARATION + +/** +* This class implements MPKIDialog interface. +* +* +* @lib CTSecDlgs.lib +* @since Series60_3:0 +*/ +NONSHARABLE_CLASS( CPKIDialog ): + public CBase, public MSecurityDialogResponse, public MPKIDialog + { + public: // Constructors and destructor + + /** + * Two-phased constructor. + */ + static CPKIDialog* NewL(); + + + public: // Functions from MPKIDialog + + /** + * User authentication dialogs + * @param aCertHandleList A selection of certificates to display to the user. + * All certificates are displayed if this is empty. + * @param aCertHandle On return, an identifier for the certificate the user selected. + * aStatus - this will be set to KErrNotFound if no certificates + * could be presented to the user. + * @param aStatus This will be set to KErrNotFound if no certificates could + * be presented to the user. + */ + void UserAuthentication( + const RArray& aCertHandleList, + TCTTokenObjectHandle& aCertHandle, + TRequestStatus& aStatus ); + + /** + * User authentication dialogs with text + * + * @param aTextToSign The text to be signed. + * @param aCertHandleList A selection of certificates to display to the user. + * All certificates are displayed if this is empty. + * @param aCertHandle On return, an identifier for the certificate the user selected. + * aStatus - this will be set to KErrNotFound if no certificates + * could be presented to the user. + * @param aStatus This will be set to KErrNotFound if no certificates could + * be presented to the user. + */ + void UserAuthenticationText( + const TDesC& aTextToSign, + const RArray& aCertHandleList, + TCTTokenObjectHandle& aCertHandle, + TRequestStatus& aStatus ); + + /** + * Certificate signing request dialog + * + * @param aSubject Subject of the certificate + * @param aKeyHandle An identifier of the private used in the CSR. + * @param aStatus This will be set to KErrNotFound if no certificates could + * be presented to the user. + */ + void CreateCSR( + const TDesC& aSubject, + const TCTTokenObjectHandle& aKeyHandle, + TRequestStatus& aStatus ); + + + /** + * Shows details of the certificate + * @param aCertHandle An identifier of the certificate + * @param aStatus KErrNone or KErrNotSupported + * KErrNotFound if no certificates could + * be presented to the user. + * @return void + */ + void CertificateDetails( + const TCTTokenObjectHandle& aCertHandle, + TRequestStatus& aStatus ); + /** + * Asks user's approval for certificate saving. + * @param aFormat The format of the certificate. + * @param aCertificateOwnerType The owner type. + * @param aCert The certificate to be added. + * @param aStatus KErrNone, KErrCancel or KErrNotSupported, + * KErrArgument if error in certificate parsing + * @return void + */ + void SaveCertificate( + TCertificateFormat aFormat, + TCertificateOwnerType aCertificateOwnerType, + const TDesC8& aCert, + TRequestStatus& aStatus); + + /** + * Asks user's approval for certificate deleting. + * @param aCertHandle An identifier of the certificate + * @param aStatus KErrNone, KErrCancel or KErrNotSupported, + * KErrNotFound if no certificates could + * be presented to the user. + * @return void + */ + void DeleteCertificate( + const TCTTokenObjectHandle& aCertHandle, + TRequestStatus& aStatus ); + + /** + * Informs the user during digital signing. + * @param aNoteType Identifies the note type. + * @param aStatus KErrNone or KErrNotSupported + * @return void + */ + void Note( MPKIDialog::TNoteType aNoteType, + TRequestStatus& aStatus ); + + /** + * Saves receipt to Notepad if receipt saving is on. + * @param aSignedText Signed text in readable form. + * @param aStatus KErrNone or KErrNotSupported + * @return void + */ + void SaveSignedText( const TDesC& aSignedText, + TRequestStatus& aStatus ); + + /** + * Shows instructions how to unblock PIN. + * @param aLabel Label of the PIN. + * @param aStatus KErrNone or KErrNotSupported + * @return void + */ + void PINBlockedInfo( const TPINLabel& aLabel, + TRequestStatus& aStatus ); + /** + * Release is called to free resources of the MDigSigningNote class + */ + void Release(); + + public: // Functions from MSecurityDialogResponse + + void HandleResponse(TInt aResult); + + + private: + + /** + * C++ default constructor. + */ + CPKIDialog(); + + /** + * Destructor. + */ + ~CPKIDialog(); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL(); + + /** + * + * @param aStatus + */ + void InitClientStatus(TRequestStatus& aStatus); + + /** + * ShowNoteL shows a dialog/note using Notifier API. + * + * @param aStatus Signaled value for async operation. KErrNone if successful, otherwise system error. + * @param aDlgType Dialog type + * @param aReturnValue Return value of a dialog. If aStatus == KErrNone, then the user's response + * is located here. ETrue means positive response (OK, continue etc.), + * EFalse means negative response. + * @param aDynamic Dynamic text for dialog. Effective only if %U is in the localisation resource. + * + * Leaves on: System error before showing the actual dialog + * + * Asserts on: If aDlgType is a PIN/PUK code query. + */ + void ShowNoteL(TRequestStatus& aStatus, + TInt aNoteTypeaDlgType, + const TDesC& aDynamic = KNullDesC); + + void RequestWithTokenHandleL( + const TDesC& aText, + const TCTTokenObjectHandle& aTokenHandle, + TRequestStatus& aStatus ); + + void DoSaveCertificateL( + TCertificateFormat aFormat, + TCertificateOwnerType aCertificateOwnerType, + const TDesC8& aCert, + TRequestStatus& aStatus); + + private: // Data + CCTSecurityDialogRequestor* iRequester; // Owned + TRequestStatus* iClientStatus; // Pointer to client's request status + // We must signal it when dialogrequestor + // RunL is called to signal the completion of a dialog! + + CBufFlat* iSenderBuffer; // Stream buffer for outgoing streams. + HBufC8* iBufferData; // iSenderBuffer help buffer + + TDialogType iCurrentOperation; + + TSignInputBuf iSignInputBuf; + TPtrC8 iVariableDataPtr; + TCTTokenObjectHandle* iClientCertInfoHandlePtr; + TCTTokenObjectHandleBuf iCertInfoHandleBuf; + TBuf8<10> iDlgResponseBuf; + }; + +#endif // CPKIDLG_H + +// End of File