diff -r 000000000000 -r 164170e6151a wim/WimServer/inc/WimCertHandler.h --- /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 iCertRefLst; + }; + +#endif // CWIMCERTHANDLER_H + +//End of File