javacommons/security/javaunicertstoreplugin/src.s60/javacertstoreimpl.h
changeset 21 2a9601315dfc
child 23 98ccebc37403
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/javacommons/security/javaunicertstoreplugin/src.s60/javacertstoreimpl.h	Mon May 03 12:27:20 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 <e32base.h>
+#include <mctwritablecertstore.h>
+#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<TUid>& aApplications,
+                                  TRequestStatus &aStatus);
+    virtual void CancelSetApplicability();
+    virtual void SetTrust(const CCTCertInfo& aCertInfo, TBool aTrusted,
+                          TRequestStatus& aStatus);
+    virtual void CancelSetTrust();
+    virtual void List(RMPointerArray<CCTCertInfo>& 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<TUid>& 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<CCTCertInfo>* mClientList;
+    java::comms::CommsMessage mReceivedCommsMsg;
+    RPointerArray<CJavaCertData> mCertsData;
+    TState mState;
+    RThread mUiThread;
+    std::auto_ptr<CAknGlobalConfirmationQuery> 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<CCTCertInfo>& aInfoArray);
+    void FillCertInfoFromCacheL(RMPointerArray<CCTCertInfo>& 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