diff -r 000000000000 -r 164170e6151a pkiutilities/CTSecurityDialogs/NotifInc/CTSecurityDialogsAO.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pkiutilities/CTSecurityDialogs/NotifInc/CTSecurityDialogsAO.h Tue Jan 26 15:20:08 2010 +0200 @@ -0,0 +1,337 @@ +/* +* Copyright (c) 2006-2009 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: Definition of the CCTSecurityDialogsAO class +* +*/ + + +#ifndef CTSECURITYDIALOGSAO_H +#define CTSECURITYDIALOGSAO_H + +// INCLUDES +#include "CTSecurityDialogDefs.h" +#include +#include +#include + +// FORWARD DECLARATIONS +class CCTSecurityDialogNotifier; +class CUnifiedCertStore; +class CUnifiedKeyStore; +class CCertAttributeFilter; +class CCTCertInfo; +class CCTKeyInfo; +class CX509Certificate; +class CX500DistinguishedName; +class MCTWritableCertStore; +class CAknQueryDialog; +class CCTPinQueryDialog; + + +// CLASS DECLARATION + +/** +* Active object class of CT Security Dialogs +* Calls from client side are handled in this class. +* +* @lib CTSecDlgNotifier.dll +* @since Series 60 2.8 +*/ +NONSHARABLE_CLASS( CCTSecurityDialogsAO ): public CActive + { + public: // Constructors and destructor + + /** + * Two-phased constructor. + */ + static CCTSecurityDialogsAO* NewL( CCTSecurityDialogNotifier* aNotifier, TBool& aDeleted ); + + /** + * Destructor. + */ + virtual ~CCTSecurityDialogsAO(); + + public: // New functions + + /** + * Starts handling of the message + * @param aBuffer Data passed from client RNotifier::StartNotifierAndGetResponse() call + * @param aReplySlot Identifies which message argument to use for the reply + * @param aMessage Encapsulates the client request + */ + void StartLD( const TDesC8& aBuffer, TInt aReplySlot, const RMessagePtr2& aMessage ); + + + // For server authentication failure + /** + * Creates the message to be shown in the certificate details query. + * + * @return message text + */ + HBufC* CreateMessageL(); + + protected: // Functions from CActive + + /** + * RunL is called after modeless dialog is dismissed. + */ + void RunL(); + + /** + * Does nothing. + */ + void DoCancel(); + + /** + * If RunL leaves, error is handled here. + */ + TInt RunError(TInt aError); + + private: + + enum TOperationStatus + { + EOperationCompleted = 0xFFF0, + EOperationCancel, + EOperationSignTextShown, + EOperationInitCertStore, + EOperationRetrieveCertInfos, + EOperationSelectCert, + EGetCertInfo, + EGetCertificate, + EInitKeyStore, + EGetKeyInfos, + EGetKeyInfoByHandle, + EShowCertDialog, + EShowCSRDialog, + EEnterNewPIN, + EEnterUnblockPIN, + EVerifyNewPin, + EVerifyPINs, + EServerCertCheckUserResp, + ESaveServerCert, + EAddTrustedSite, + ERetrieveServerCerts, + ECheckServerCerts, + EProcessTrustedSite, + EUnknownError + }; + + /** + * C++ default constructor. + */ + CCTSecurityDialogsAO( CCTSecurityDialogNotifier* aNotifier, TBool& aDeleted ); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL(); + + void InitCertStoreL(); + + void InitKeyStoreL(); + + void GetKeyInfosL(); + + void GetKeyInfoByHandleL(); + + void DoHandlePinOperationL(); + + void DoHandleUnblockPinOperationL(); + + void DoHandleMultilinePinQueryL(const TInt& aDlgType); + + void DoHandleSignTextL(const TDesC8& aBuffer); + + void DoHandleCSRL(const TDesC8& aBuffer); + + void DoHandleCertDetailsL(const TDesC8& aBuffer); + + void DoHandleSaveCertL(const TDesC8& aBuffer); + + void DoHandleSaveServerCertL(); + + void DoHandleServerAuthFailL(const TDesC8& aBuffer); + + void ShowCertDialogL(); + + void ShowNoTrustDialogL(); + + void ShowCSRDialogL(); + + /** + * Saves digital signature receipt + */ + void SaveReceiptL(const TDesC8& aBuffer); + + void DoHandleSelectCertificateL(); + + void DoHandleMessageL( + const TInt& aDlgType, + const TDesC& aDynamicText, + const TDesC& aPinQueryHeading, + const TInt aMinLength, + const TInt aMaxLength); + + ///////////////////////////////// + // Certificate details functions + + HBufC* MessageQueryCertDetailsL( + const TDesC8& aCert, + const CCTCertInfo* aCertInfo, + TCertificateFormat aCertFormat, + const CCTKeyInfo* aKeyInfo); + + void AddSiteL( TDes& aMessage ); + + void AddIssuerAndSubjectL( + TDes& aMessage, + const CX509Certificate& aCert); + + void AddKeyUsageL( + TDes& aMessage, + const CCTKeyInfo* aKeyInfo ); + + void AddKeyUsageL( + TDes& aMessage, + const CX509Certificate& aCert); + + void AddKeyLocationL( + TDes& aMessage, + const CCTKeyInfo* aKeyInfo ); + + void AddKeySizeL( + TDes& aMessage, + const CCTKeyInfo* aKeyInfo ); + + void AddKeyAlgorithmL( + TDes& aMessage, + const CCTKeyInfo* aKeyInfo ); + + void AddCertLocationL( + TDes& aMessage, + const CCTCertInfo* aCertInfo ); + + void AddLocationInfoL( + TDes& aMessage, + TUid aUid, + TBool aCertificate ); + + void AddValidityPeriodL( + TDes& aMessage, const CX509Certificate& aCert); + + void AddCertFormatL( + TDes& aMessage, TCertificateFormat aCertFormat); + + void AddCertAlgorithmsL( + TDes& aMessage, const CX509Certificate& aCert); + + void AddCertSerialNumberL( + TDes& aMessage, const CX509Certificate& aCert); + + void AddCertFingerprintsL( + TDes& aMessage, const CX509Certificate& aCert); + + void DevideToBlocks( const TDesC8& aInput, TDes& aOutput); + + void DetailsFieldDynamicL( + TDes& aMessage, + const TDesC& aValue, + TInt aResourceOne, + TInt aResourceTwo); + + void DetailsFieldResourceL( + TDes& aMessage, TInt aResourceOne, + TInt aResourceTwo); + + void DetailsResourceL(TDes& aMessage, TInt aResource); + + void DetailsDynamicL( + TDes& aMessage, + const TDesC& aValue, + TInt aResource); + + void MapTlsProviderOperation( TUint aOperation ); + + TPtrC CutCertificateField(const TDesC& aField); + + /** + * Completes client's request + */ + void HandleResponseAndCompleteL(); + + /** + * Checks that are two PINs the same + */ + void VerifyPinsL(); + + private: // Data + RMessagePtr2 iMessagePtr; + TSecurityDialogNotification iOperation; + TBool iRetry; + TSignInput iSignInput; + TPINParams iPIN; + TPINParams iUnblockPIN; + TInt iReplySlot; + TPINValue iPINValue1; + TPINValue iPINValue2; + TPINValue iPINValueVerify; + RArray iCertHandleList; + TBool iRetValue; + TCTTokenObjectHandle iTokenHandle; + + TServerAuthenticationFailureInput iServerAuthenticationFailureInput; + + CCTSecurityDialogNotifier* iNotifier; + TInt iNextStep; + TInt iMultiLineDlgType; + + // For retrieving signText dialog + CUnifiedCertStore* iCertStore; + CCertAttributeFilter* iFilter; + RFs iFs; + CCTCertInfo* iCertInfo; + CDesCArrayFlat* iCertArray; + RMPointerArray iCertInfos; + HBufC8* iCertBuf; + MCTWritableCertStore *iTrustedSiteCertStore; + HBufC* iCertLabel; + HBufC8* iServerCert; + RMPointerArray iServerCerts; + HBufC* iServerName; + TBool iTrustedSite; + TInt iHandleIndex; + TPtr8 iCertPtr; + + CUnifiedKeyStore* iKeyStore; + CCTKeyInfo* iKeyInfo; + RMPointerArray iKeyInfos; + TCTKeyAttributeFilter iKeyFilter; + HBufC* iText; + + TSaveCertInput iSaveCertInput; + TValidationError iAuthFailReason; + + TBool& iDeleted; + + CAknQueryDialog* iQueryDialog; + TBool iQueryDialogDeleted; + + CCTPinQueryDialog* iPinQueryDialog; + TBool iPinQueryDialogDeleted; + }; + +#endif // CTSECURITYDIALOGSAO_H + +// End of File