--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/wlansecuritysettings/wapisecuritysettingsui/inc/wapisecuritysettingsimpl.h Fri Mar 19 09:29:58 2010 +0200
@@ -0,0 +1,258 @@
+/*
+* ============================================================================
+* Name : wapisecuritysettingsimpl.h
+* Part of : WAPI Security Settings UI
+*
+* Description:
+* Declaration of class CWAPISecuritySettingsImpl.
+*
+* Version: %version: 11.1.1 %
+*
+* Copyright (C) 2008 Nokia Corporation.
+* This material, including documentation and any related
+* computer programs, is protected by copyright controlled by
+* Nokia Corporation. All rights are reserved. Copying,
+* including reproducing, storing, adapting or translating, any
+* or all of this material requires the prior written consent of
+* Nokia Corporation. This material also contains confidential
+* information which may not be disclosed to others without the
+* prior written consent of Nokia Corporation.
+*
+* ============================================================================
+*/
+
+#ifndef WAPISECURITYSETTINGSIMPL_H
+#define WAPISECURITYSETTINGSIMPL_H
+
+// INCLUDES
+#include <e32base.h>
+#include <cmmanagerext.h>
+
+#include <wapisecuritysettingsui.h>
+#include "wapisecuritysettingsdefs.h"
+#include <WapiCertificates.h>
+
+#include <metadatabase.h>
+#include <commsdattypesv1_1.h>
+
+// FORWARD DECLARATIONS
+
+// CLASS DECLARATION
+
+/**
+* WAPI Security Settings.
+* Implementation behind proxy class CWAPISecuritySettings.
+*/
+NONSHARABLE_CLASS( CWAPISecuritySettingsImpl ) : public CBase
+ {
+
+ public: // Constructors and destructor
+
+ /**
+ * Two-phased constructor. Leaves on failure.
+ * @return The constructed CWAPISecuritySettings object.
+ */
+ static CWAPISecuritySettingsImpl* NewL();
+
+
+ /**
+ * Destructor.
+ */
+ virtual ~CWAPISecuritySettingsImpl();
+
+ protected: // Constructors
+
+ /**
+ * Constructor.
+ * @param aEikEnv Eikon environment.
+ */
+ CWAPISecuritySettingsImpl();
+
+
+ /**
+ * Second-phase constructor.
+ */
+ void ConstructL();
+
+ public: // New methods
+
+
+ /**
+ * Load from database.
+ * @param aIapRecordId Iap record
+ * @param aSession Commsdat session
+ */
+ void LoadL( TUint32 aIapRecordId, CommsDat::CMDBSession& aSession );
+
+
+ /**
+ * Save to database.
+ * @param aIapRecordId Iap record
+ * @param aSession Commsdat session
+ */
+ void SaveL( TUint32 aIapRecordId, CommsDat::CMDBSession& aSession ) const;
+
+
+ /**
+ * Resets certificate store from C drive
+ */
+ void ResetCertificateStoreL();
+
+ /**
+ * Load certificates. This was implemented for performance issues.
+ */
+ void LoadCertificatesL();
+
+
+ /**
+ * Delete AP related data from certificate database tables
+ *
+ * @param aId Service table id
+ */
+ void DeleteAPSpecificDataL( const TInt aId );
+
+
+ /**
+ * Fetches table index by certificate label name
+ * @param aCertificates Pointer to certificate array
+ * @param aCert Certificate label
+ * @return Index to corresponding certificate label
+ */
+ TInt GetIndexByCertLabel(
+ RArray<TBuf<KMaxLabelLength> >* aCertificates,
+ const TDesC& aCert);
+
+
+ /**
+ * Read the value of the current user certificate label
+ * @param aUserCertInUse Fetched certificate label
+ */
+ inline void GetUserCertInUse( TInt& aUserCertInUse );
+
+
+ /**
+ * Read the value of the current CA certificate label
+ * @param aCACertInUse Fetched certificate label
+ */
+ inline void GetCACertInUse( TInt& aCACertInUse );
+
+
+ /**
+ * Sets the value of the current user certificate in use
+ * @param aSelectedCert The new value for user certificate
+ */
+ inline void SetUserCertInUse( const TInt aSelectedCert );
+
+
+ /**
+ * Sets the value of the current CA certificate in use
+ * @param aSelectedCert The new value for CA certificate
+ */
+ inline void SetCACertInUse( const TInt aSelectedCert );
+
+
+ /**
+ * Fetches pointers to RARRAYS where user and CA certificates are
+ * stored.
+ * @param aUserCertificates Pointer reference to user certificates
+ * @param aCACertificates Pointer reference to CA certificates
+ */
+ inline void GetCertificateLabels (
+ RArray<TBuf<KMaxLabelLength> >*& aUserCertificates,
+ RArray<TBuf<KMaxLabelLength> >*& aCACertificates );
+ /**
+ * Sets preshared key format, key, and wapi to PSK mode.
+ */
+ void SetPreSharedKeyL( const CWAPISecuritySettings::TWapiKeyFormat aKeyFormat, const TDesC& aPreSharedKey );
+
+ /**
+ * Read the value of the current authentication
+ */
+ TWapiAuth GetAuthentication( );
+
+ /**
+ * Sets the value of authentication in use
+ * @param aWapiAuth Authentication
+ */
+ void SetAuthentication( TWapiAuth aWapiAuth );
+
+ /**
+ * Read the value of current key format
+ */
+ CWAPISecuritySettings::TWapiKeyFormat GetKeyFormat();
+
+ /**
+ * Sets the value of key format
+ * @param aWapiKeyFormat Key format
+ */
+ void SetKeyFormat( CWAPISecuritySettings::TWapiKeyFormat aWapiKeyFormat );
+
+ /**
+ * Returns true if psk key is set
+ */
+ TBool hasWapiPSKKey();
+
+ /**
+ * Set the value of pre-shared wapi key
+ * @param aWapiPSKKey Pre-shared key
+ */
+ TInt SetWapiPSKKeyL( const TDesC& aWapiPSKKey );
+
+ /**
+ * Checks if current settings are valid.
+ */
+ TBool IsValid();
+
+ private:
+ /**
+ * Checks whether the given string is a valid for current format
+ * @param aPsk The string to be checked
+ * @return ETrue if the string is a valid PSK, EFalse otherwise.
+ */
+ TBool IsValidPsk( const TDesC8& aPsk );
+
+ /**
+ * Checks whether the given string is a valid for given format
+ * @param aWapiKeyFormat Format (ascii/hex)
+ * @param aPsk The string to be checked
+ * @return ETrue if the string is a valid PSK, EFalse otherwise.
+ */
+ TBool IsValidPsk( const CWAPISecuritySettings::TWapiKeyFormat aWapiKeyFormat,
+ const TDesC8& aPsk );
+
+ private: // Data
+
+ CWapiCertificates* iCertificateStore; //owned
+
+ // Certificate label, identity and selected certificate.
+ RArray<TBuf<KMaxLabelLength> >* iUserCertificates; //owned
+ RArray<TBuf8<KMaxIdentityLength> >* iUserCertificateData; //owned
+ TInt iUserCertInUse; // Index of certificate data
+ RArray<TBuf<KMaxLabelLength> >* iCACertificates; //owned
+ RArray<TBuf8<KMaxIdentityLength> >* iCACertificateData; //owned
+ TInt iCACertInUse; // Index of certificate data
+
+ // Stores authentication method.
+ TWapiAuth iWapiAuth;
+
+ // True if PSK key is set
+ TBool iWapiPSKKeySet;
+
+ // PSK key format
+ CWAPISecuritySettings::TWapiKeyFormat iWapiKeyFormat;
+
+ // Stores PSK key.
+ TBuf8<KWapiMaxKeyLength> iWapiPSKKey;
+
+ // Caches wlan service id to allow later loading of certificates
+ // (solves performance issue)
+ TUint32 iWlanServiceId;
+
+ // True if certificates have been loaded.
+ TBool iCertificatesLoaded;
+ };
+
+// Include inline functions
+#include "wapisecuritysettingsimpl.inl"
+
+#endif