diff -r 675a964f4eb5 -r 35751d3474b7 cryptoservices/certificateandkeymgmt/wtlscert/wtlscertchainao.h --- a/cryptoservices/certificateandkeymgmt/wtlscert/wtlscertchainao.h Tue Jul 21 01:04:32 2009 +0100 +++ b/cryptoservices/certificateandkeymgmt/wtlscert/wtlscertchainao.h Thu Sep 10 14:01:51 2009 +0300 @@ -1,178 +1,176 @@ -/* -* Copyright (c) 1998-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: -* CWTLSCertChainAO class implementation -* -*/ - - - - -/** - @file - @internalTechnology -*/ - -#ifndef __WTLSCERTCHAINAO_H__ -#define __WTLSCERTCHAINAO_H__ - -#include -#include -#include -#include - - -class CWTLSCertChain; -class CWTLSValidationResult; -class CWTLSCertificate; - -/** - * This class handles the asynchronous part of the wtls chain validation. It - * is an active object which handles the asynchronous certificate store operations. - */ -class CWTLSCertChainAO : public CActive -{ -public: - static CWTLSCertChainAO* NewL(RFs& aFs, CWTLSCertChain &aWTLSCertChain, - const CArrayPtr& aRootCerts); - static CWTLSCertChainAO* NewL(RFs& aFs, CWTLSCertChain &aWTLSCertChain, - const TUid aClient); - virtual ~CWTLSCertChainAO(); - virtual TInt RunError(TInt aError); - -private: - CWTLSCertChainAO(RFs& aFs, CWTLSCertChain &aWTLSCertChain); - CWTLSCertChainAO(RFs& aFs, CWTLSCertChain &aWTLSCertChain, const TUid aClient); - void ConstructL(const CArrayPtr& aRootCerts); - -public: - void RunL(); - void DoCancel(); - -private: - /** - * This function creates a CCertStoreManager, - * calls CCertStoreManager initialise and sets the state - * to EStoreManagerInitialized - */ - void HandleEStoreManagerInitializationL(); - void HandleEStoreManagerInitializedL(); - void HandleEGetCertHashesL(); - void HandleEPruneListL(); - void HandleEPruneListDoneL(); - void HandleECheckTCAL(); - void HandleEIsChainSelfSignedL(); - void HandleERetrieveRootsL(); - void HandleEAddRootToListL(); - void HandleEFindRootL(); - void HandleEValidateEndL(); - - // Request functions -public: - void Validate(CWTLSValidationResult& aValidationResult, const TTime& aValidationTime, - TRequestStatus& aStatus); - -private: - TBool CheckSignatureAndNameL(const CWTLSCertificate& aCert, - CWTLSValidationResult& aResult, TInt aPos) const; - TBool CheckValidityPeriod(const CWTLSCertificate& aCert, - CWTLSValidationResult& aResult, const TTime aTime, TInt aPos) const; - HBufC8& GeneratePublicKeyHashL(const CWTLSCertificate& aCert) const; - - enum TState - { - EStoreManagerInitialization = 0, - EStoreManagerInitialized, - EGetCertHashes, - EPruneList, - EPruneListDone, - ECheckTCA, - EIsChainSelfSigned, - ERetrieveRoots, - EAddRootToList, - EFindRoot, - EValidateEnd - }; - -private: - RFs& iFs; - CUnifiedCertStore* iCertStoreManager; - /** - * List of the subject hashes from the cert store - * The elements remained owned by the CCTCertInfo - */ - RPointerArray< TBuf8<20> > iRootSubjectStoreHashList; - /** - * List of the subject hashes from the passed in certs - * We own this object and all its elements - */ - RPointerArray< HBufC8 > iRootSubjectClientHashList; - CCertAttributeFilter* iFilter; - /** - * Stores info on the certs in the cert store - * We own this object and all its elements - */ - RMPointerArray iCertInfos; - /** - * Indicates whether iWTLSCertChain.iChain was pruned or not - */ - TBool iPruned; - /** - * The index within iChain that the chain was pruned - */ - TInt iPrunedChainLength; - - CWTLSCertChain& iWTLSCertChain; - TUid iClient; - TPtr8 iEncodedCert; - HBufC8* iEncodedCertTemp; - - TState iState; - - TRequestStatus* iOriginalRequestStatus; - - /** - * Roots passed in from the client that we trust - * We own this object and all its elements - */ - RPointerArray iRootsFromClient; - /** - * Roots from the specified cert store that we trust. - * We own this object and all its elements - */ - RPointerArray iRootsFromStore; - - /** - * A counter used to carry counter information between AO states - */ - TInt iIndex; - - /** - * Indicates if a root cert has been found for this particular chain - */ - TBool iFoundRoot; - - /** - * To store the parameters passed to CWTLSCertChain::Validate - */ - CWTLSValidationResult* iValidationResult; - /** - * To store the parameters passed to CWTLSCertChain::Validate - */ - const TTime* iValidationTime; -}; - -#include - -#endif +/* +* Copyright (c) 1998-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: +* CWTLSCertChainAO class implementation +* +*/ + + +/** + @file + @internalTechnology +*/ + +#ifndef __WTLSCERTCHAINAO_H__ +#define __WTLSCERTCHAINAO_H__ + +#include +#include +#include +#include + + +class CWTLSCertChain; +class CWTLSValidationResult; +class CWTLSCertificate; + +/** + * This class handles the asynchronous part of the wtls chain validation. It + * is an active object which handles the asynchronous certificate store operations. + */ +class CWTLSCertChainAO : public CActive +{ +public: + static CWTLSCertChainAO* NewL(RFs& aFs, CWTLSCertChain &aWTLSCertChain, + const CArrayPtr& aRootCerts); + static CWTLSCertChainAO* NewL(RFs& aFs, CWTLSCertChain &aWTLSCertChain, + const TUid aClient); + virtual ~CWTLSCertChainAO(); + virtual TInt RunError(TInt aError); + +private: + CWTLSCertChainAO(RFs& aFs, CWTLSCertChain &aWTLSCertChain); + CWTLSCertChainAO(RFs& aFs, CWTLSCertChain &aWTLSCertChain, const TUid aClient); + void ConstructL(const CArrayPtr& aRootCerts); + +public: + void RunL(); + void DoCancel(); + +private: + /** + * This function creates a CCertStoreManager, + * calls CCertStoreManager initialise and sets the state + * to EStoreManagerInitialized + */ + void HandleEStoreManagerInitializationL(); + void HandleEStoreManagerInitializedL(); + void HandleEGetCertHashesL(); + void HandleEPruneListL(); + void HandleEPruneListDoneL(); + void HandleECheckTCAL(); + void HandleEIsChainSelfSignedL(); + void HandleERetrieveRootsL(); + void HandleEAddRootToListL(); + void HandleEFindRootL(); + void HandleEValidateEndL(); + + // Request functions +public: + void Validate(CWTLSValidationResult& aValidationResult, const TTime& aValidationTime, + TRequestStatus& aStatus); + +private: + TBool CheckSignatureAndNameL(const CWTLSCertificate& aCert, + CWTLSValidationResult& aResult, TInt aPos) const; + TBool CheckValidityPeriod(const CWTLSCertificate& aCert, + CWTLSValidationResult& aResult, const TTime aTime, TInt aPos) const; + HBufC8& GeneratePublicKeyHashL(const CWTLSCertificate& aCert) const; + + enum TState + { + EStoreManagerInitialization = 0, + EStoreManagerInitialized, + EGetCertHashes, + EPruneList, + EPruneListDone, + ECheckTCA, + EIsChainSelfSigned, + ERetrieveRoots, + EAddRootToList, + EFindRoot, + EValidateEnd + }; + +private: + RFs& iFs; + CUnifiedCertStore* iCertStoreManager; + /** + * List of the subject hashes from the cert store + * The elements remained owned by the CCTCertInfo + */ + RPointerArray< TBuf8<20> > iRootSubjectStoreHashList; + /** + * List of the subject hashes from the passed in certs + * We own this object and all its elements + */ + RPointerArray< HBufC8 > iRootSubjectClientHashList; + CCertAttributeFilter* iFilter; + /** + * Stores info on the certs in the cert store + * We own this object and all its elements + */ + RMPointerArray iCertInfos; + /** + * Indicates whether iWTLSCertChain.iChain was pruned or not + */ + TBool iPruned; + /** + * The index within iChain that the chain was pruned + */ + TInt iPrunedChainLength; + + CWTLSCertChain& iWTLSCertChain; + TUid iClient; + TPtr8 iEncodedCert; + HBufC8* iEncodedCertTemp; + + TState iState; + + TRequestStatus* iOriginalRequestStatus; + + /** + * Roots passed in from the client that we trust + * We own this object and all its elements + */ + RPointerArray iRootsFromClient; + /** + * Roots from the specified cert store that we trust. + * We own this object and all its elements + */ + RPointerArray iRootsFromStore; + + /** + * A counter used to carry counter information between AO states + */ + TInt iIndex; + + /** + * Indicates if a root cert has been found for this particular chain + */ + TBool iFoundRoot; + + /** + * To store the parameters passed to CWTLSCertChain::Validate + */ + CWTLSValidationResult* iValidationResult; + /** + * To store the parameters passed to CWTLSCertChain::Validate + */ + const TTime* iValidationTime; +}; + +#include + +#endif