xmlsecurityengine/xmlseccertman/inc/xmlsecmsymbiancertstore.h
changeset 0 e35f40988205
child 8 e65204f75c47
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xmlsecurityengine/xmlseccertman/inc/xmlsecmsymbiancertstore.h	Thu Dec 17 09:29:21 2009 +0200
@@ -0,0 +1,276 @@
+/*
+* Copyright (c) 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: An XmlSec interface to the Symbian Unified Certificate Store.       
+*
+*/
+
+#ifndef __XMLSECCERTMAN_SYMBIANCERTSTORE_H_
+#define __XMLSECCERTMAN_SYMBIANCERTSTORE_H__
+
+#include <e32base.h>
+#include <unifiedcertstore.h>
+#include <e32std.h>
+#include <signed.h>
+#include <mctwritablecertstore.h>
+
+class CSymbianCertStore : public CActive
+    {
+public:        
+  
+    /**
+     * Create new object.
+     *
+     * @since S60 v3.2
+     * @return pointer to new object
+     */
+    IMPORT_C static CSymbianCertStore* NewL();
+    
+    /**
+     * Create new object and put it on clean stack.
+     *
+     * @since S60 v3.2
+     * @return pointer to new object
+     */    
+     IMPORT_C static CSymbianCertStore* NewLC();
+        
+    /**
+     * Destructor.
+     */
+    virtual ~CSymbianCertStore();
+        
+    /**
+     * Create Unified Cert Store
+     *
+     * @since  S60 v3.2
+     */
+    void CreateUnifiedCertStoreL();
+            
+    /**
+     * Find a cert in the Unified Cert Store
+     *
+     * @since S60 v3.2 
+     * @param aLabel The name of the cert to be found
+     */
+    IMPORT_C void FindCertL(const TDesC8 &aLabel);
+        
+    /**
+     * List certs from the Unified Cert Store
+     *
+     * @since S60 v3.2 
+     * @param aLabel The name of the cert to be found
+     */
+    IMPORT_C void ListCertL();
+    
+    /**
+     * Get list of certs from SymbianCertStore
+     *
+     * @since  S60 v3.2
+     * @return RMPointerArray<CCTCertInfo> list
+     */            
+    IMPORT_C RMPointerArray<CCTCertInfo> GetCertList();
+  
+    /**
+     * Check if a cert is found in the Unified Cert Store
+     *
+     * @since  S60 v3.2
+     * @return KErrNone if the cert is found
+     * @return KErrNotFound if the cert is not found
+     */     
+    IMPORT_C TInt CSymbianCertStore::hasCert();
+         
+    /**
+     * Sets iCert
+     *
+     * @since  S60 v3.2
+     */  
+    IMPORT_C void SetCert(CCTCertInfo* cert);
+
+    /**
+     * Get the size of the cert stored
+     *
+     * @since  S60 v3.2
+     * @return TUint Size of the cert
+     */            
+    IMPORT_C TUint GetCertSize();
+        
+    /**
+     * AddCert
+     *
+     * @since  S60 v3.2
+     * @param aCertData The cert data
+     * @param aCertName Name of the cert 
+     */
+    IMPORT_C void AddCert (const TDesC8 &aCertData, const TDesC8 &aCertName);
+ 
+     /**
+     * Retrieve Cert Data. Sets iCertData from iCert
+     *
+     * @since  S60 v3.2 
+     */
+    IMPORT_C void RetrieveCertDataL();
+    
+    /**
+     * Get Cert Data.
+     *
+     * @since  S60 v3.2
+     * @return the buffer with cert data 
+     */      
+    IMPORT_C HBufC8* GetRetrieveCertData();
+     
+     /**
+     * Retrieve Cert Object. Sets iCertObject from iCert
+     *
+     * @since  S60 v3.2 
+     */        
+    IMPORT_C void RetrieveCertObjectL();
+    
+    /**
+     * Get Cert Object.
+     *
+     * @since  S60 v3.2
+     * @return reference to object type CCertificate 
+     */            
+    IMPORT_C CCertificate* GetRetrieveCertObject();
+        
+     /**
+     * Get the error flag
+     *
+     * @since S60 v3.2
+     * @return error code
+     */           
+    IMPORT_C TInt CSymbianCertStore::GetError();
+
+protected:
+    /**
+     * From CActive Callback function, invoked to handle responses from the server
+     */
+    void RunL();
+    
+    /**
+     * This function is called as part of the active object's Cancel().
+     */         
+    void DoCancel();
+    
+    /**
+     * Handles Leaves from RunL function.
+     */        
+    TInt RunError(TInt aError);
+
+private:
+    /**
+     * C++ default constructor.
+     */
+    CSymbianCertStore();
+
+    /**
+     * By default Symbian 2nd phase constructor is private.
+     */
+    void ConstructL();
+    
+    /**
+     * Release all resources kept in iCerts array (exept for iCert
+     * which is released separetly) and empty iCerts array
+     */
+    void ResetAndDestroyCertsArray();
+    
+    /**
+     * Release all resources kept in iCerts array and empty iCerts array
+     */
+    void ResetCertsList();
+
+    /**
+     * To find matched key in the phase EFindingKeys
+     */        
+    void FindMatchedCert();
+
+private:
+    /** 
+     * State of active object. 
+     * EUnitialized standard state
+     * EInitializingCertStore during initialize certstore
+     * EFindingCerts during finding cert
+     * EListCerts during listing certs
+     * EAddingCert during adding cert
+     * ERetrievingCertData during retrieving cert data
+     * ERetrievingCertObject during retrieving cert object
+     */ 	
+    enum TState
+        {
+            EUnitialized,
+            EInitializingCertStore,
+            EFindingCerts,  
+            EListCerts,
+            EAddingCert,
+            ERetrievingCertData,
+            ERetrievingCertObject
+            };
+
+private:
+    /**
+     * A reference to the CUnifiedCertStore class
+     */
+    CUnifiedCertStore *iCertStore;
+    
+    /**
+     * A reference to the WritableCertStore
+     */
+    MCTWritableCertStore *iWritableCertStore;
+  
+    /**
+     * Store the retrived cert
+     */
+    CCTCertInfo *iCert;
+
+    /** 
+     * An internal state
+     */
+    TState iState;
+
+    /** 
+     * Store filter to search in SymbianCertStore
+     */ 
+   CCertAttributeFilter* iCertFilter; 
+    
+    /** 
+     * To store the cert label
+     */ 
+    HBufC* iCertLabel;
+   
+    /** 
+     * To store the cert data
+     */ 
+    HBufC8* iCertData;
+    
+    /** 
+     * store the retrived parsed representation, derived object
+     */
+    CCertificate* iCertObject;
+             
+    /** 
+     * Store the certs found
+     */
+    RMPointerArray< CCTCertInfo > iCerts;         
+    
+    /** 
+     * A reference to the File Server Client
+     */
+    RFs iFs;
+    
+    /**
+     * Error flag
+     */ 
+    TInt iError;
+    };
+
+#endif      // __XMLSECCERTMAN_SYMBIANCERTSTORE_H__