diff -r 000000000000 -r 164170e6151a pkiutilities/ocsp/test/tcertutils.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pkiutilities/ocsp/test/tcertutils.h Tue Jan 26 15:20:08 2010 +0200 @@ -0,0 +1,241 @@ +// Copyright (c) 2005-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: +// tcertuils.h +// +// + +/** + @file + @internalTechnology +*/ + + +#ifndef __TCERTUTILS_H__ +#define __TCERTUTILS_H__ + +#include +#include +#include +#include +#include "t_output.h" + +/** +CCertUtils provides various functions often used in tests. +This class has changed because the functions are asynchronous now. +The function are no longer static as we need an instance to serve as +an active object. +*/ +class CCertUtils : public CActive + { +public: + /** + * This enumeration enumerates all the states used for the + * RunL function. + */ + enum TState + { + EAddCACerts, + + EAddCert, + EAddCACertGetCAEntry, + EAddCACertSetApplications, + EAddCACertSetTrust, + EAddCACertFinished, + + ERemoveCertsGetCACerts, + ERemoveCertsCACertsRetrieved, + ERemoveCertsRemoveCACerts, + ERemoveCertsGetUserCerts, + ERemoveCertsUserCertsRetrieved, + ERemoveCertsRemoveUserCerts, + ERemoveCertsFinished + }; + +public: + IMPORT_C static CCertUtils* NewL(RFs& aFs); + IMPORT_C static CCertUtils* NewLC(RFs& aFs); + /** + The destructor destroys all the members of CCertUtils but only destroys + iStoreManager if the CCertStoreManager instance was created by this CCertUtils + instance. It doesn't destroy it if it was passed as an argument in the + constructor. + */ + IMPORT_C virtual ~CCertUtils(); + + + /** + Certificate handling functions + */ + IMPORT_C void AddCertL(const TDesC& aLabel, + TCertificateFormat aFormat, + TCertificateOwnerType aCertificateOwnerType, + TInt aTrustedUsage, + const TDesC& aCertificatePath, + const TDesC& aCertificateFileName, + TRequestStatus& aStatus); + + IMPORT_C void AddCert(const TDesC& aLabel, + TCertificateFormat aFormat, + TCertificateOwnerType aCertificateOwnerType, + TInt aTrustedUsage, + const TDesC& aCertificatePath, + const TDesC& aCertificateFileName, + CUnifiedCertStore& aUnifiedCertStore, + TRequestStatus& aStatus); + + IMPORT_C void AddCACertsL(const CDesCArray& aRoots, + const CDesCArray& aLabels, + TCertificateFormat aFormat, + TInt aTrustedUsage, + const TDesC& aPath, + TRequestStatus& aStatus); + + IMPORT_C void AddCACertsL(const CDesCArray& aRoots, + const CDesCArray& aLabels, + TCertificateFormat aFormat, + TInt aTrustedUsage, + const TDesC& aPath, + CUnifiedCertStore& aUnifiedCertStore, + TRequestStatus& aStatus); + + IMPORT_C void RemoveCertsL(TRequestStatus& aStatus); + IMPORT_C void RemoveCertsL(CUnifiedCertStore& aUnifiedCertStore, + TRequestStatus& aStatus); + + IMPORT_C static CCertificate* CertFromFileLC(const TDesC& aFilename, + const TDesC& aPathname, + RFs& aFs, + TCertificateFormat aFormat); + + IMPORT_C static CCertificate* CertFromFileL(const TDesC& aFilename, + const TDesC& aPathname, + RFs& aFs, + TCertificateFormat aFormat); + + IMPORT_C static void WriteError(TValidationError aError, Output& aOut); + IMPORT_C static TPtrC MapError(TValidationError aError); + IMPORT_C static TValidationError MapError(const TDesC& aError); + IMPORT_C static TPtrC ParseElement(const TDesC& aBuf, const TDesC& aStart, const TDesC& aEnd, TInt& aPos, TInt& aError); + + IMPORT_C HBufC* DiagnosticLC() const; + IMPORT_C void AddApplicationL(const TDesC& aName, TUid aUid) const; + IMPORT_C void RemoveApplicationL(TUid aUid) const; + +private: + /** + This constructor constructs a CCertUtils instance without initializing + iStoreManager. A store manager will be created if one is needed and + will be destroyed by the destructor. + @param aFs A file server session. The file server session must have opened. + */ + CCertUtils(RFs& aFs); + void ConstructL(); + + //Virtual from CActive + void RunL(); + void DoCancel(); + TInt RunError(TInt aError); + + +private: + // The following functions handle the different RunL states + void HandleEAddCACertsL(); + + void HandleEAddCACertL(); + void HandleEAddCACertGetCAEntry(); + void HandleEAddCACertSetApplicationsL(); + void HandleEAddCACertSetTrust(); + void HandleEAddCACertFinishedL(); + + void HandleERemoveCertsGetCACerts(); + void HandleERemoveCertsCACertsRetrieved(); + void HandleERemoveCertsRemoveCACerts(); + void HandleERemoveCertsGetUserCerts(); + void HandleERemoveCertsUserCertsRetrieved(); + void HandleERemoveCertsRemoveUserCerts(); + void HandleERemoveCertsFinished(); + + +private: + /** + File Server Sessioin + */ + RFs& iFs; + + /** + The state used to know what RunL should do + */ + TState iState; + + /** + The store managers will be used for certificate store operations, + */ + CUnifiedCertStore* iUnifiedCertStore; + CUnifiedCertStore* iCreatedUnifiedCertStore; + + /** + These members are used to store the arguments of the functions + because most of the things are handled in a RunL. + */ + const CDesCArray* iRoots; // Used by AddCertsL + const CDesCArray* iLabels; // Used by AddCertsL + TCertificateFormat iFormat; + TInt iTrustedUsage; // Used by AddCertsL, AddCert + RArray iTrusters; // Used by AddCertsL, AddCert + const TDesC* iPath; // Used by AddCertsL, AddCert + TRequestStatus* iOriginalRequestStatus; // Used by AddCertsL, AddCert + TInt iIndex; // Used by AddCertsL to know + // which certificate to add next + // Used by RemoveCerts + CCertUtils* iSecondCertUtils; // Used by AddCertsL to add each individual + // certificate + const TDesC* iLabel; // Used by AddCert + TCertificateOwnerType iCertificateOwnerType; + const TDesC* iCertificateFileName; // Used by AddCert + CCertificate* iCertificate; // Used by AddCACert + MCTWritableCertStore *iStore; // Used by AddCACert + TPtrC8 iEncoding; // Used by AddCACert + + HBufC* iCertData; + HBufC* iLabelData; + + /** + This is a filter used by the GetCACerts function. We use the filter constructed + by the constructor with no argument, the filter doesn't filter anything. + */ + CCertAttributeFilter* iCAFilter; // Used by RemoveCerts + RMPointerArray iCACertStoreEntries; // Used by RemoveCerts + + /** + This is a filter used by the GetUserCerts function. We use the filter constructed + by the constructot with no argument, the filter doesn't filter anything. + */ + CCertAttributeFilter* iUserFilter; // Used by RemoveCerts + RMPointerArray iUserCertStoreEntries; // Used by RemoveCerts + +public: + /** + A diagnostic variable for when an error occurs. It stores the state at which + the error occurred. + */ + TState iDiagnosticState; + + /** + A diagnostic variable for when an error occurs. It is an info message set + to whatever is relevant for the error. + */ + TBuf<400> iDiagnosticMessage; + }; + +#endif