installationservices/swi/inc/revocationhandler.h
changeset 0 ba25891c3a9e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/inc/revocationhandler.h	Thu Dec 17 08:51:10 2009 +0200
@@ -0,0 +1,167 @@
+/*
+* Copyright (c) 2004-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: 
+*
+*/
+
+
+/**
+ @file
+ @released
+ @internalTechnology
+*/
+
+#ifndef __REVOCATIONHANDLER_H__
+#define __REVOCATIONHANDLER_H__
+
+#include <ocsp.h>
+#include <e32base.h>
+
+class CPKIXCertChain;
+class MCTCertStore;
+class COCSPParameters;
+class COCSPClient;
+
+namespace Swi
+{
+
+/**
+ * Security Manager helper class to handle certificate revocation checking.
+ * This class <b>requires TCB capabilities</b> to successfully accomplish its task,
+ * Indeed, the OCSP support server calls are policed on TCB.
+ *
+ */
+class CRevocationHandler : public CActive
+	{
+public:
+
+	/**
+	 * Creates a new revocation handler with the given backend certstore
+	 *
+	 * @param aCertStore The backend certstore used by this handler
+	 *
+	 * @return A revocation handler.
+	 */
+	IMPORT_C static CRevocationHandler* NewL(MCTCertStore& aCertStore);
+
+	IMPORT_C ~CRevocationHandler();
+
+	/**
+	 * Set default server URI - calling this is optional
+	 */
+	IMPORT_C void SetDefaultURIL(const TDesC8& aURI);
+
+	/**
+	* Set the retry count - calling this is optional
+	*
+	* @param aRetryCount		The retry count. Default is 1 (no retry)
+	*/
+	IMPORT_C void SetRetryCount(const TUint aRetryCount);
+
+	/**
+	* Set the response timeout - calling this is optional
+	*
+	* @param aTimeout		The response timeout in milliseconds. Default is -1 (no timeout)
+	*/
+	IMPORT_C void SetTimeout(const TInt aTimeout);
+
+	/**
+	 * Executes the OCSP query
+	 *
+	 * @param aCertChainList A list of certificate chains to be checked
+	 * @param aStatus The request status to be completed upon termination
+	 * @param aIap The internet access point to use. May be zero, in which case the user will be asked. Set to the IAP used on completion.
+	 */
+	IMPORT_C void SendRequestL(RPointerArray<CPKIXCertChainBase>& aCertChainList, TUint32& aIap, TRequestStatus& aStatus);
+
+	// Only valid to call these methods after handler's OCSPComplete() method
+	// has been called
+
+	/**
+	 * Get OCSP error code if something went wrong
+	 *
+	 * @return An error code detailing the problem
+	 */
+	IMPORT_C TInt Error() const;
+
+	/**
+	 * Get summary OCSP result
+	 *
+	 * @return A summary of the OCSP results
+	 */
+	IMPORT_C OCSP::TResult SummaryResult() const;
+
+	/**
+	 * Get the number of transactions made
+	 * 
+	 * @return The number of transactions made
+	 */
+	IMPORT_C TInt TransactionCount(void) const;
+
+	/**
+	 * Get the outcome for an individual transaction
+	 *
+	 * @param aIndex The index of the transaction we are interested in
+	 *
+	 * @return The outcome of the given transaction
+	 */
+	IMPORT_C const TOCSPOutcome& Outcome(TInt aIndex) const;
+
+private: // From CActive
+	void RunL();
+	void DoCancel();
+	TInt RunError(TInt aError);
+
+	CRevocationHandler(MCTCertStore& aCertStore);
+	void ConstructL();
+
+private:
+
+	/**
+	 * The list of certificate chains for which OCSP checks are required.
+	 * The class <b> does not </b> own this.
+	 */
+	RPointerArray<CPKIXCertChainBase> iCertChainList; 
+
+	/**
+	 * The client request status. We shall complete this when done.
+	 */
+	TRequestStatus* iClientStatus;
+
+	/**
+	 * The backend certstore from where certificates are retrieved.
+	 */
+	MCTCertStore& iCertStore;
+
+	/**
+	 * The OCSP parameters used by this handler, it includes the OCSP transport 
+	 * object.
+	 */	
+	COCSPParameters* iParams;
+
+	/**
+	 * The client is the entity to which we delegate the OCSP check request
+	 */
+	COCSPClient* iClient;
+
+	enum TState
+		{
+		EChecking,
+		EFinished
+ 		} iState;
+	};
+
+} // namespace Swi
+
+#endif // #ifndef __REVOCATIONHANDLER_H__