wim/WimServer/inc/WimCertHandler.h
changeset 0 164170e6151a
child 5 3b17fc5c9564
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wim/WimServer/inc/WimCertHandler.h	Tue Jan 26 15:20:08 2010 +0200
@@ -0,0 +1,213 @@
+/*
+* Copyright (c) 2002-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:  WIM Certificate handler
+*
+*/
+
+
+
+#ifndef CWIMCERTHANDLER_H
+#define CWIMCERTHANDLER_H
+
+//  INCLUDES
+#include "WimClsv.h"
+
+// FORWARD DECLARATIONS
+class CWimMemMgmt;
+class CWimUtilityFuncs;
+
+// CLASS DECLARATION
+
+/**
+*  Class for handling certificates in WIM card
+*  
+*  @since Series60 2.1
+*/
+class CWimCertHandler : public CBase
+    {
+    public:  // Constructors and destructor
+        
+        /**
+        * Two-phased constructor.
+        */
+        static CWimCertHandler* NewL();
+        
+        /**
+        * Destructor.
+        */
+        virtual ~CWimCertHandler();
+
+    public: // New functions
+        
+        /**
+        * Fetches certificates from WIM card.
+        * @param aMessage Encapsulates a client request.
+        * @param aWimMgmt Pointer to WIM reference management class.
+        */
+        void GetCertificatesFromWimL( const RMessage2& aMessage, 
+                                      CWimMemMgmt* aWimMgmt );
+        
+        /**
+        * Fetches certificate extra information from WIM card.
+        * Extra information includes trusted usage and CDF referense
+        * information.
+        * @param aMessage Encapsulates a client request.
+        * @param aWimMgmt Pointer to WIM reference management class.
+        */
+        void GetExtrasFromWimL( const RMessage2& aMessage, 
+                                CWimMemMgmt* aWimMgmt );
+        
+        /**
+        * Fetches count of certicates in certain WIM card.
+        * @param aMessage Encapsulates a client request.
+        * @param aWimMgmt Pointer to WIM reference management class.
+        */
+        void GetCerticateCountL( const RMessage2& aMessage, 
+                                 CWimMemMgmt* aWimMgmt ) const;
+
+
+        /**
+        * Stores certificate to the WIM card.
+        * @since Series60 2.6
+        * @param aRequest Enumerator used in message 
+                          passing between client and server.   
+        * @param aMessage Encapsulates a client request.
+        */
+        void StoreCertificateL( TWimServRqst aRequest,
+                                const RMessage2& aMessage ) const;
+
+        /**
+        * Removes certificate from a WIM card.
+        * @since Series60 2.6
+        * @param aMessage Encapsulates a client request.
+        * @param aWimMgmt Pointer to WIM reference management class.
+        */
+        void RemoveCertificateL( const RMessage2& aMessage,
+                                 CWimMemMgmt* aWimMgmt ) const;
+        
+        /**
+        * Fetches certificate details.
+        * @param aOpCode Enumerator used in message 
+                          passing between client and server.   
+        * @param aMessage Encapsulates a client request.
+        */
+        void GetCertificateDetailsL( TWimServRqst aOpCode,
+                                      const RMessage2& aMessage ) ;
+
+        /**
+        * Exports Public Key of certificate
+        * @since Series60 2.6
+        * @param aMessage Encapsulates a client request.
+        */
+        void ExportPublicKeyL( const RMessage2& aMessage ) const;
+        
+        
+        TBool SanityCheck( TUint32 aCertRef );
+        
+        TBool CheckReadCapsForUsage( const RMessage2& aMsg,
+                                       TUint8 aUsage );
+        
+        
+        WIMI_STAT ResolveCertUsage( const RMessage2& aMsg,
+                                                TUint8& aUsage );
+
+        WIMI_STAT GetCertificateInfo( WIMI_Ref_pt aCertRef,
+                                                  TUint8& aUsage );
+    private:
+
+        CWimCertHandler();
+        void ConstructL();
+
+        /**
+        * Fetches certificate from the WIM card.
+        * @param aTmpWimRef Reference(id) of certain WIM card.
+        * @param aUsage     Certificate usage. Client/CA.
+        * @param aCertNum   Certificate number.
+        * @param aCertRefLst    Pointer to certificate reference list.
+        * @param aCertInfoLst   Pointer to certificate info list.
+        * @param aMessage   Encapsulates a client request.
+        * @return Status returned by WIMI. See in wimclsv.h.
+        */
+        WIMI_STAT GetCertificateFromWimRefL( WIMI_Ref_t* aTmpWimRef,
+                                             TInt8 aUsage,
+                                             TUint8& aCertNum,
+                                             TUint32* aCertRefLst,
+                                             TWimCertInfo* aCertInfoLst,  
+                                             const RMessage2& aMessage );
+
+        /**
+        * Copies certificate information to client's allocated memory area.
+        * @param aCertInfo  Certificate information to be copied.
+        * @param aCert      Certificate reference.
+        * @param aMessage   Encapsulates a client request.
+        * @return TInt      KErrNone or KErrArgument
+        */
+        TInt CopyCertificateInfo( TWimCertInfo& aCertInfo,
+                                   WIMI_Ref_t* aCert,  
+                                   const RMessage2& aMessage );
+
+        /**
+        * Fetches certificate extra information from the WIM card.
+        * @param aTmpWimRef Reference(id) of certain WIM card.
+        * @param aUsage     Certificate usage. Client/CA.
+        * @param aKeyHash   Certificate key hash.
+        * @param aMessage   Encapsulates a client request.
+        * @return Status returned by WIMI. See in WimClsv.h.
+        */
+        WIMI_STAT GetExtrasFromWimRefL( WIMI_Ref_t* aTmpWimRef,                                  
+                                        TInt8 aUsage,
+                                        TDesC8& aKeyHash,
+                                        const RMessage2& aMessage );
+
+        /**
+        * Copies certificate extra information to client's allocated
+        * memory area. Extra information includes trusted usage OID's
+        * and certificate location information.
+        * @param aCert            Certificate reference.
+        * @param aMessage         Encapsulates a client request.
+        */
+        void CopyCertExtrasInfoL( WIMI_Ref_t* aCert,
+                                  const RMessage2& aMessage );
+
+        /**
+        * Get count of certificates in WIM
+        * @param aRef       WIM card reference pointer.
+        * @param aCertCount Count of certificates in WIM card pointed by aRef
+        * @param aUsage     Certificate usage.
+        * @return Status returned by WIMI. See in wimclsv.h.
+        */
+        WIMI_STAT GetCertificateCountByWIM( WIMI_Ref_t* aRef, 
+                                            TUint8& aCertCount, 
+                                            TUint8 aUsage ) const;
+
+        /**
+        * Parse Public Key from certificate.
+        * @since Series60 2.6
+        * @param aCertData   Certificate binary data
+        * @param aPublicKey  Public Key
+        * @param aCertType   Certificate type (X509/WTLS)
+        */
+        void ParseCertPublicKeyL( const TDesC8& aCertData,
+                                  TDes8& aPublicKey,
+                                  const TUint8 aCertType ) const;
+
+
+    private:    // Data
+        CWimUtilityFuncs* iWimUtilFuncs;
+        RArray<TUint32> iCertRefLst;
+    };
+
+#endif      // CWIMCERTHANDLER_H
+    
+//End of File