diff -r 000000000000 -r 164170e6151a wim/WimClient/inc/WimCertMgmt.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wim/WimClient/inc/WimCertMgmt.h Tue Jan 26 15:20:08 2010 +0200 @@ -0,0 +1,446 @@ +/* +* Copyright (c) 2002 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: Certificate & key -management class. +* +*/ + + +#ifndef WIMCERTMGMT_H +#define WIMCERTMGMT_H + +// INCLUDES +#include "WimClient.h" +#include "WimCertTClassWrappers.h" +#include "JavaUtils.h" + + +// CLASS DECLARATION + +/** +* RWimCertMgmt +* This class handle certificate handling and KeyInformation handling +* related traffic between client and server. +* @lib WimClient +* @since Series 60 2.1 +*/ +class RWimCertMgmt: public RWimClient + { + public: + + /** + * A Static method to get the client Session + * @Return RWimCertMgmt* + */ + static RWimCertMgmt* ClientSessionL(); + + /** + * Destructor. + * Allocated memory is released. + */ + virtual ~RWimCertMgmt(); + + /** + * Returns the count of certificates + * @param aType -The type of certificates to be counted. + * @return TUint8 -The count of certificates + */ + TUint8 CertCount( TWimEntryType aType ); + + /** + * Returns certificate list on the WIM. + * @param aCertAddrLst - to hold references to certificates + * @param aCertInfoArr -address of the certlist address + * @param aCount -the count of certificates + * @param aCertEntryType -What type of certificates is wanted: + * ECrEntryTypeAll, ECrEntryTypeCA or ECrEntryTypePersonal + * @param aStatus -Caller's status + * @return void + */ + void CertRefLst( TCertificateAddressList aCertAddrLst, + TWimCertInfo* aCertInfoArr, + TUint8 aCount, + TWimEntryType aCertEntryType, + TRequestStatus& aStatus ); + + /** + * Returns certificate list on the WIM. + * @param aCertAddrLst - to hold references to certificates + * @param aCertInfoArr -address of the certlist address + * @param aCount -the count of certificates + * @param aCertEntryType -What type of certificates is wanted: + * ECrEntryTypeAll, ECrEntryTypeCA or ECrEntryTypePersonal + * @return TInt -Errorcode from server. + */ + TInt CertRefLst( TCertificateAddressList aCertAddrLst, + TWimCertInfo* aCertInfoArr, + TUint8 aCount, + TWimEntryType aCertEntryType ); + /** + * Stores the certificate to WIM. + * @param aCertificate- certificate + * @param aParams - TWimCertAddParameters params to the certificate + * @param aLocation -Location where we want to store. In this case: + EWimCertLocationWIMCard + * @return void + */ + void StoreCertificateL( const TDes8& aCertificate, + TWimCertAddParameters& aParams, + TWimCertLocation aLocation, + TRequestStatus& aStatus ); + + /** + * Removes a certificate from WIM. + * @param aWimCertRemoveAddr - reference to the certificate + * @param aStatus -Status from caller + * @return void + */ + void RemoveL( TWimCertRemoveAddr aWimCertRemoveAddr, + TRequestStatus& aStatus ); + + /** + * Returns certificate details. + * @param aCertAddr - reference to the certificate + * @param aWimCertDetails -Preallocated structure to hold + * the certificate info + * @param aStatus -Caller's status + * @return void + */ + void CertDetailsL( const TCertificateAddress aCertAddr, + TWimCertDetails& aWimCertDetails, + TRequestStatus& aStatus ); + + /** + * Gets certificate extra information from one certificate + * @param aKeyId - identifies needed certificate + * @param aCertExtrasInfo -Preallocated structure to hold + * the certificate extra info + * @param aUsage -Identifies the usage of certificate, User or CA + * @param aStatus -Caller's status + * @return void + */ + void GetCertExtrasL( const TPtr8* aKeyId, + TCertExtrasInfo& aCertExtrasInfo, + TUint aUsage, + TRequestStatus& aStatus ); + + /** + * Returns KeyList from the WIM. + * @param aKeyList -KeyReferences are listed to this + * @param aKeyCount -The number of keys is put to this + * @param aStatus -Caller's status + */ + void KeyList( TDes8& aKeyList, + TDes8& aKeyCount, + TRequestStatus& aStatus ); + + /** + * Gets keyInfo for single key. + * @param aKeyReference -Unique identifier for key. + * @param aKeyInfo -Struct for other key information. + */ + TInt GetKeyInfo( const TInt32 aKeyReference, + TKeyInfo& aKeyInfo ); + + /** + * Signs some data + * @param aSignParameters -holds data for signing operation + * @param aStatus -Caller's status + */ + void SignL( TKeySignParameters& aSignParameters, + TRequestStatus& aStatus ); + + /** + * Export public key + * @param aPublicKeyParams -struct which holds publickeyPtr and Key + * identifier. + * pointer. + * @param aStatus -Caller's Status. + */ + void ExportPublicKeyL( TExportPublicKey& aPublicKeyParams, + TRequestStatus& aStatus ); + + + /** + * Retrieves data for OMA Provisioning support. Data can be data size, + * type or the actual binary data. + * @param aOmaProvStruct -Struct to hold OMA Provisioning data. + * @param aStatus -Caller's status + * @param aOpCode -Code of operation ( EGetOMAFileSize or + * EGetOMAFile + * + */ + void RetrieveOmaDataL( TOmaProv& aOmaProvStruct, + TRequestStatus& aStatus, + const TWimServRqst aOpCode ); + + /** + * Retrieves ACIF data. + * + * @since S60 3.2 + * @param aJavaProvStruct Struct to hold Java data. + * @param aStatus Caller's status + * @param aOpCode Code of operation + * @return + * + */ + void RetrieveACIFDataL( TJavaProv& aJavaProvStruct, + TRequestStatus& aStatus, + const TWimServRqst aOpCode ); + + /** + * Retrieves ACF data. + * + * @since S60 3.2 + * @param aJavaProvStruct Struct to hold Java data. + * @param aStatus Caller's status + * @param aOpCode Code of operation + * @return + * + */ + void RetrieveACFDataL( TJavaProv& aJavaProvStruct, + TRequestStatus& aStatus, + const TWimServRqst aOpCode ); + + /** + * Retrieves Authtication object data. + * + * @since S60 3.2 + * @param aAuthIdList + * @param aAuthObjsInfoList + * @param aStatus Caller's status + * @param aOpCode Code of operation + * @return + * + */ + void RetrieveAuthObjsInfoL(const RArray& aAuthIdList, + RArray& aAuthObjsInfoList, + TRequestStatus& aStatus, + const TWimServRqst aOpCode ); + + + /** + * Retrieves Label and Path. + * + * @since S60 3.2 + * @param aLabel + * @param aPath + * @param aStatus Caller's status + * @param aOpCode Code of operation + * @return + * + */ + void RetrieveLabelAndPathL( TDes8& aLabel, + TDes8& aPath, + TRequestStatus& aStatus, + const TWimServRqst aOpCode ); + + /** + * Deallocates memory from iPckgCertDetails. + * @return void + */ + void DeallocWimCertPckgBuf(); + + /** + * Deallocates memory from iPckgAddCerts. + * @return void + */ + void DeallocCertAddParametersPckgBuf(); + + /** + * Deallocates memory from iPckgRemoveCert. + * @return void + */ + void DeallocRemoveCertPckgBuf(); + + /** + * Deallocates memory from iPckgGetExtrasAllocated. + * @return void + */ + void DeallocGetExtrasPckgBuf(); + + /** + * Deallocates memory from iPckgKeySignParameters. + * @return void + */ + void DeallocKeySignPckgBuf(); + + /** + * Deallocates memory from iPckgBufExportPublicKey. + * @return void + */ + void DeallocExportPublicKeyPckgBuf(); + + /** + * Deallocates memory from iPckgBufOmaProv + * @return void + */ + void DeallocOmaDataPckgBuf(); + + /** + * Deallocates memory from iPckgBufJavaProv + * @return void + */ + void DeallocJavaDataPckgBuf(); + + /** + * Return CWimCertPckgBuf pointer to caller + * @return CWimCertPckgBuf* + */ + CWimCertPckgBuf* CertExtrasPckgBuf(); + + /** + * Return CWimCertPckgBuf pointer to caller + * @return CWimCertPckgBuf* + */ + CWimCertPckgBuf* TOmaProvPckgBuf(); + + /** + * Return CWimCertPckgBuf pointer to caller + * @return CWimCertPckgBuf* + */ + CWimCertPckgBuf* TJavaProvPckgBuf(); + + private: + + /** + * Constructor + */ + RWimCertMgmt(); + + /** + * Copy constructor + * @param aSource -Reference to class object. + */ + RWimCertMgmt( const RWimCertMgmt& aSource ); + + /** + * Assignment operator + * @param aParam -Reference to class object. + */ + RWimCertMgmt& operator = ( const RWimCertMgmt& aParam ); + + private: + + //Used to point data when listing every certificate from WIM. + TPtr8 iCertLst; + + //Used to point data when listing every certificate from WIM. + TPtr8 iCertInfoLst; + + //PckgBuffer wrapper which is used when retrieving certificate.Owned. + CWimCertPckgBuf* iPckgBufCertDetails; + + //PckgBuffer wrapper which is used when adding a certificate.Owned. + CWimCertPckgBuf* iPckgBufAddCerts; + + //PckgBuffer wrapper which is used when removing a certificate.Owned. + CWimCertPckgBuf* iPckgBufRemoveCert; + + //PckgBuffer wrapper which is used when getting certificate extra + //information from server.Owned. + CWimCertPckgBuf* iPckgBufGetExtras; + + //Pckgbuffer wrapper which is used when signing data.Owned. + CWimCertPckgBuf* iPckgBufKeySignParameters; + + //Pckgbuffer wrapper which is used when exporting public key.Owned. + CWimCertPckgBuf* iPckgBufExportPublicKey; + + //Pckgbuffer wrapper which is used when getting data for + //OMA Provisioning.Owned. + CWimCertPckgBuf* iPckgBufOmaProv; + + //Pckgbuffer wrapper which is used when getting data for + //Java Provisioning.Owned. + CWimCertPckgBuf* iPckgBufJavaProv; + + //Flag to indicate whether certificate details package is allocated or + //not. + TBool iPckgBufCertDetailsAllocated; + + //Flag to indicate whether add certificate package is allocated or not. + TBool iPckgBufAddCertsAllocated; + + //Flag to indicate whether remove certificate package is allocated or + //not. + TBool iPckgBufRemoveCertAllocated; + + //Flag to indicate whether extra information package is allocated or + //not + TBool iPckgBufGetExtrasAllocated; + + //Flag to indicate whether signing package is allocated or not. + TBool iPckgBufKeySignAllocated; + + //Flag to indicate whether export public key package is allocated or + //not + TBool iPckgBufExportPublicKeyAllocated; + + //Flag to indicate whether OMA Provisioning package is allocated or + //not + TBool iPckgBufOmaProvAllocated; + + //Flag to indicate whether Java Provisioning package is allocated or + //not + TBool iPckgBufJavaProvAllocated; + + TPtr8* iAuthObjsInfoLstPtr; + + TPtrC8* iAuthIdLstPtr; + + }; + +#endif //WIMCERTMGMT_H + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +