diff -r 000000000000 -r 164170e6151a secsrv_plat/java_utils_api/inc/JavaUtils.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/secsrv_plat/java_utils_api/inc/JavaUtils.h Tue Jan 26 15:20:08 2010 +0200 @@ -0,0 +1,379 @@ +/* +* 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: +* +*/ + + +#ifndef JAVAUTILS_H +#define JAVAUTILS_H + +//INCLUDES +#include + +const TInt KPathMaxLength = 8; +const TInt KLabelMaxLength = 24; +const TInt KPINMaxLabelLength = 64; + +typedef TBuf TPINLabel; + +//FORWARD DECLARATIONS +class RWimCertMgmt; +class RWimMgmt; + + +struct TJavaPINParams + { + TPINLabel iPINLabel; + TInt iFlags; + TInt iAuthId; + TInt iPinNumber; + TInt iMinLength; + TInt iMaxLength; + TInt iPinType; + TInt iStoredLength; + TInt iPinReference; + TInt iPadChar; + }; + +/** +* Reads Java provisioning information from Smart Card +* +* @lib WimClient.lib +* @since S60 3.2 +*/ +class CWimJavaUtils : public CActive + { + public: + + /** + * Two-phased constructor. + * + * @param + * @return + */ + IMPORT_C static CWimJavaUtils* NewL(); + + /** + * Destructor + */ + IMPORT_C virtual ~CWimJavaUtils(); + + /** + * Initializes the WIM Server cache. This is the most time consuming call. + * + * @param aStatus Indicates the result of this call. Values: + * KErrNone, call was successull + * KErrNotFound, no WIM was found + * KErrNoMemory, no memory + * KErrGeneral, any other error + * @return void + */ + IMPORT_C void Initialize( TRequestStatus& aStatus ); + + /** + * Cancels outgoing Initialize operation. + * + * @param + * @return void + */ + IMPORT_C void CancelInitialize(); + + /** + * Fetches the size of ACIF. + * This information can be used as a notification of existing of provisioning + * information. If the size is not included in Smart Card's + * DODF-JavaPROV file then the full length of the file containing the + * provisioning information is returned. + * + * @param aSize The length of ACIF + * @param aStatus Indicates the result of this call. + * KErrNone, no errors. NOTE: size can still be 0 indicating + * that no provisioning information was found. + * If aSize > 0 it means that provisioning information + * was found. + * KErrNoMemory, No memory + * KErrGeneral, any other error + * @return void + */ + IMPORT_C void GetACIFSize( TInt& aSize, + TRequestStatus& aStatus ); + + /** + * Fetches the size of ACF + * + * @param aSize The lenght of ACF + * @param aACFPath The path of ACF on smart card + * @param aStatus Indicates the result of this call. + * @return void + */ + IMPORT_C void GetACFSize( TInt& aSize, + const TDesC8& aACFPath, + TRequestStatus& aStatus ); + + /** + * Get the Authobj information + * + * @param aAuthIdList List of AuthObject ID + * @param aAuthObjsInfoList List of AuthObject Info + * @param aStatus Indicates the result of this call. + * @return void + */ + IMPORT_C void GetAuthObjsInfo( const RArray& aAuthIdList, + RArray& aAuthObjsInfoList, + TRequestStatus& aStatus ); + + /** + * Cancels outgoing GetACIFSize operation. + * + * @param + * @return void + */ + IMPORT_C void CancelGetACIFSize(); + + /** + * Cancels outgoing GetACFSize operation. + * + * @param + * @return void + */ + IMPORT_C void CancelGetACFSize(); + + /** + * Cancel outgoing GetAuthObjsInfo + * + * @param + * @return void + */ + IMPORT_C void CancelGetAuthObjsInfo(); + + /** + * Fetches the whole data of ACIF file. + * + * @param aACIFData ACIF binary data from smart card + * @param aStatus Indicates the result of this call. + * KErrNone, no errors. + * KErrNoMemory, No memory + * KErrGeneral, any other error + * @return void + */ + IMPORT_C void RetrieveACIFContent( TDes8& aACIFData, + TRequestStatus& aStatus ); + + + /** + * Fetches the whole data of ACF file + * + * @param aACFData ACF binary data from smart card + * @param aACFPath ACF file path on smart card + * @param aStatus Indicates the result of this call. + * @return void + */ + IMPORT_C void RetrieveACFContent( TDes8& aACFData, + const TDesC8& aACFPath, + TRequestStatus& aStatus ); + + /** + * Fetches the wim label and path + * + * @param aWimLabel + * @param aPath + * @param aStatus Indicates the result of this call. + * @return void + */ + IMPORT_C void RetrieveWimLabelAndPath( TDes8& aWimLabel, + TDes8& aPath, + TRequestStatus& aStatus ); + + + /** + * Cancels outgoing Retrieve operation. + * + * @return void + */ + IMPORT_C void CancelRetrieveACIFContent(); + + /** + * Cancels outgoing Retrieve operation. + * + * @return void + */ + IMPORT_C void CancelRetrieveACFContent(); + + /** + * Cancel outgoing Retrieve operation + * + * @return void + */ + IMPORT_C void CancelRetrieveWimLabelAndPath(); + + private: + + /** + * Symbian constructor + * @return void + */ + void ConstructL(); + + /** + * C++ default constructor. + */ + CWimJavaUtils(); + + private: //from CActive + + /** + * Different phases are handled here. + * @return void + */ + void RunL(); + + /** + * Cancellation function + * Deallocates member variables and completes client status with + * KErrCancel error code. + * @return void + */ + void DoCancel(); + + /** + * The active scheduler calls this function if this active + * object's RunL() function leaves. + * Handles necessary cleanup and completes request with + * received error code. + * @param aError -The error code which caused this function call. + * @return TInt -Error code to active scheduler, is always KErrNone. + */ + TInt RunError( TInt aError ); + + private: + + /** + * Sets own iStatus to KRequestPending, and signals it + * with User::RequestComplete() -request. This gives chance + * active scheduler to run other active objects. After a quick + * visit in active scheduler, signal returns to RunL() and starts next + * phase of operation. + * @return void + */ + void SignalOwnStatusAndComplete(); + + /** + * Allocates memory for member variables, which are needed + * in Java Provisioning struct. + * @param aDataLength -The length of the data to be allocated + * @return void + */ + void AllocMemoryForJavaProvStructL( const TInt aDataLength ); + + /** + * Allocates memory for path and label + * @return void + */ + void AllocMemoryForPathAndLabelL(); + /** + * Deallocates memory from member variables + * @return void + */ + void DeallocMemoryFromJavaProvStruct(); + + /** + * Deallocates memory from path and label + * @return void + */ + void DeallocMemoryFromPathAndLabel(); + + private: + + enum TJavaUtilPhase + { + EInitialize, + EConnectClientSession, + EInitializeWim, + EInitializeDone, + EGetACIFSize, + EGetACIFSizeDone, + ERetrieveACIFContent, + ERetrieveACIFContentDone, + EGetACFSize, + EGetACFSizeDone, + ERetrieveACFContent, + ERetrieveACFContentDone, + EGetAuthObjsInfo, + EGetAuthObjsInfoDone, + ERetrieveWimLabelAndPath, + ERetrieveWimLabelAndPathDone + }; + + //Indicator for different phases + TJavaUtilPhase iPhase; + + //Client status is stored here while operation + //on the server side is done. + TRequestStatus* iClientStatus; + + //Handle to connection with server. Owned. + RWimCertMgmt* iConnectionHandle; + + // Pointer to Client Session. Owned. + RWimMgmt* iClientSession; + + //Informs the size of provisioning string. Not owned. + TInt* iSize; + + //Descriptor to hold provisioning data. Not owned. + TDes8* iData; + + //Buffer to hold Java provisioning data for server. Owned. + HBufC8* iJavaProvBuf; + + //Pointer to iJavaProvBuf. Owned. + TPtr8* iJavaProvBufPtr; + + //Flag to indicate errors during WIM -initialization. + TInt iWimStartErr; + + TBuf8 iACFPath; + + RArray* iAuthIdList; //owed + + //saves pointer to user's array + RArray* iClientsAuthObjsInfoList;//not owned + + //Array to hold authOjbectInfo data + RArray* iAuthObjsInfoList; //owed + + TDes8* iLabel; + + TDes8* iPath; + + //Buffer to hold Label. Owned. + HBufC8* iLabelBuf; + + //Pointer to Label. Owned. + TPtr8* iLabelBufPtr; + + //Buffer to hold path. Owned. + HBufC8* iPathBuf; + + //Pointer to path. Owned. + TPtr8* iPathBufPtr; + + + }; + + +#endif // JAVAUTILS_H + +// End of File