diff -r f5050f1da672 -r 04becd199f91 javacommons/security/javaunicertstoreplugin/src.s60/javacertstoreimpl.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javacommons/security/javaunicertstoreplugin/src.s60/javacertstoreimpl.h Tue Apr 27 16:30:29 2010 +0300 @@ -0,0 +1,179 @@ +/* +* 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 JAVACERTSTOREIMPL_H +#define JAVACERTSTOREIMPL_H + +#include +#include +#include "commslistener.h" +#include "commsclientendpoint.h" +#include "commsmessage.h" + +class CAknGlobalConfirmationQuery; + +namespace java +{ +namespace security +{ + +class CJavaCertStoreToken; + +class CJavaCertData: public CBase +{ +public: + + /** + * @param aEncodedState First bit indicates whether cert is already disabled. + * Second bit indicates whether cert can be disabled. + * Third bit indicates whether cert can be deleted. + */ + CJavaCertData(const std::string& aCertContent, const long long aCertSize, + const std::string& aId,TInt aEncodedState); + + virtual ~CJavaCertData(); + + std::string mCertContent; + std::string mId; + //This flag is used to indicate that cert has been deleted from cert store. + //I.e. Remove() operation has been called in this session. + TBool mDeleted; + //These three boolean values has been read from aEncodeState argument. + TBool mIsDisabled; + TBool mCanDisable; + TBool mCanDelete; + //This datamember tells size of the certificate. + long long mSizeOfCert; + +private: + + //Not implemented. + CJavaCertData(const CJavaCertData &x); + CJavaCertData &operator=(const CJavaCertData &x); + +}; + +class CJavaCertStoreImpl: public CActive, public MCTWritableCertStore, + public java::comms::CommsListener, + public java::comms::CommsClientEndpoint +{ +public: + + static CJavaCertStoreImpl* NewL(CJavaCertStoreToken& aToken); + + virtual ~CJavaCertStoreImpl(); + + virtual MCTToken& Token(); + + //CommsListener + virtual void processMessage(java::comms::CommsMessage& aMessage); + + //CActive + virtual void RunL(); + virtual void DoCancel(); + virtual TInt RunError(TInt aError); + + //MCTWritableCertStore + virtual void Add(const TDesC& aLabel, TCertificateFormat aFormat, + TCertificateOwnerType aCertificateOwnerType, + const TKeyIdentifier* aSubjectKeyId, + const TKeyIdentifier* aIssuerKeyId, + const TDesC8& aCert, TRequestStatus& aStatus); + virtual void CancelAdd(); + virtual void Remove(const CCTCertInfo& aCertInfo, TRequestStatus& aStatus); + virtual void CancelRemove(); + virtual void SetApplicability(const CCTCertInfo& aCertInfo, + const RArray& aApplications, + TRequestStatus &aStatus); + virtual void CancelSetApplicability(); + virtual void SetTrust(const CCTCertInfo& aCertInfo, TBool aTrusted, + TRequestStatus& aStatus); + virtual void CancelSetTrust(); + virtual void List(RMPointerArray& aCerts, + const CCertAttributeFilter& aFilter, TRequestStatus& aStatus); + virtual void CancelList(); + virtual void GetCert(CCTCertInfo*& aCertInfo, const TCTTokenObjectHandle& aHandle, + TRequestStatus& aStatus); + virtual void CancelGetCert(); + virtual void Applications(const CCTCertInfo& aCertInfo, RArray& aApplications, + TRequestStatus& aStatus); + virtual void CancelApplications(); + virtual void IsApplicable(const CCTCertInfo& aCertInfo, TUid aApplication, + TBool& aIsApplicable, TRequestStatus& aStatus); + virtual void CancelIsApplicable(); + virtual void Trusted(const CCTCertInfo& aCertInfo, TBool& aTrusted, + TRequestStatus& aStatus); + virtual void CancelTrusted(); + virtual void Retrieve(const CCTCertInfo& aCertInfo, TDes8& aEncodedCert, + TRequestStatus& aStatus); + virtual void CancelRetrieve(); + +private: + + enum TState + { + EInitial, + EListing, + EPreDisabling, + EPreEnabling + }; + + //Datamembers. + CJavaCertStoreToken& mToken; + java::comms::CommsClientEndpoint mComms; + TRequestStatus* mClientStatus; + //This class does not have ownership into this object. + RMPointerArray* mClientList; + java::comms::CommsMessage mReceivedCommsMsg; + RPointerArray mCertsData; + TState mState; + RThread mUiThread; + std::auto_ptr mQuery; + //This class does not have ownership into this object. + CJavaCertData* mTempCertData; + + //Internal operations. + CJavaCertStoreImpl(CJavaCertStoreToken& aToken); + void ConstructL(); + TBool validateCertAttrFilter(const CCertAttributeFilter& aFilter) const; + void FillCertificateInfos(RMPointerArray& aInfoArray); + void FillCertInfoFromCacheL(RMPointerArray& aInfoArray); + TInt GetIndexToCertData(const TCTTokenObjectHandle& aCertInfo); + TBool GetCertDataObj(const CCTCertInfo& aCertInfo, + TRequestStatus* aRequestStatus, + CJavaCertData*& aOutCertDataObj); + TBool SendDisableEnableCommsMsg(const std::string& aId, + TState aState, + TRequestStatus* aRequestStatus); + TBool CheckCapability(const TCapability& aCapability,TRequestStatus* aRequestStatus); + void HandleDisableQuery(TRequestStatus &aRequestStatus); + void ShowQueryL(); + void SendDisableMsg(TInt aStatus); + void HandleSendingEnableDisableMsg(TRequestStatus* aRequestStatus, + TState aState,CJavaCertData& aCertDataObj); + + //Not implemented. + CJavaCertStoreImpl(const CJavaCertStoreImpl &x); + CJavaCertStoreImpl &operator=(const CJavaCertStoreImpl &x); + +}; + + +} // end namespace security +} // end namespace java + +#endif // JAVACERTSTOREIMPL_H