diff -r 7cee158cb8cd -r 26b2b12093af javatools/javacontrolpanel/controlpanel/src.s60/security.cpp --- a/javatools/javacontrolpanel/controlpanel/src.s60/security.cpp Wed Sep 15 12:05:25 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,220 +0,0 @@ -/* -* Copyright (c) 2010 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: -* -*/ - - -#include -#include - -#include "security.h" -#include "logger.h" -#include "javastoragenames.h" -#include "securitystoragedatadefs.h" - -using namespace java::storage; -using namespace std; - -_LIT(KS60SecurityPolicy, "s60"); -_LIT(KMSASecurityPolicy, "msa"); -_LIT(KATTSecurityPolicy, "att"); -// Java Security Policy Central Repository UID -static const TUid KCRUidJavaSecurity = { 0x2001B289 }; -// IDs for security folder and file keys -static const TUint32 KPolicy = 0x03; -static const TUint32 KSecurityWarnings = 0x04; - -const int S60_SECURITY_POLICY_ID = 1; -const int MSA_SECURITY_POLICY_ID = 2; -const int ATT_SECURITY_POLICY_ID = 3; - - -Security::Security() -{ - try - { - iStorage.reset(JavaStorage::createInstance()); - iStorage->open(); - } - catch (JavaStorageException& e) - { - ELOG1(EUtils, "open storage connection failed, %s", e.toString().c_str()); - } -} - -Security::~Security() -{ -} - -std::wstring Security::getSecurityWarningsMode() -{ - try - { - JavaStorageApplicationEntry_t query; - JavaStorageApplicationList_t queryResult; - JavaStorageEntry attr; - attr.setEntry(ID, L""); - query.insert(attr); - attr.setEntry(SECURITY_WARNINGS, L""); - query.insert(attr); - iStorage->search(MIDP_PACKAGE_TABLE, query, queryResult); - JavaStorageApplicationList_t::const_iterator iterator; - JavaStorageApplicationList_t domainQueryResult; - for (iterator = queryResult.begin(); iterator != queryResult.end(); iterator++) - { - std::wstring securityWarnings = L""; - JavaStorageApplicationEntry_t entry = (*iterator); - findColumn(entry, SECURITY_WARNINGS, securityWarnings); - if (securityWarnings == SECURITY_WARNINGS_USER_DEFINED_MODE) - { - // make them all USER - setSecurityWarningsMode(SECURITY_WARNINGS_USER_DEFINED_MODE); - return SECURITY_WARNINGS_USER_DEFINED_MODE; - } - } - } - catch (JavaStorageException& aJse) - { - } - // one more check: central repository - std::wstring securityWarningsMode = SECURITY_WARNINGS_DEFAULT_MODE; - TRAP_IGNORE - ( - CRepository* repository = CRepository::NewLC(KCRUidJavaSecurity); - TInt warningsMode; - User::LeaveIfError(repository->Get(KSecurityWarnings, warningsMode)); - switch (warningsMode) - { - case 1: - securityWarningsMode = SECURITY_WARNINGS_USER_DEFINED_MODE; - break; - case 2: - securityWarningsMode = SECURITY_WARNINGS_DEFAULT_MODE; - break; - } - CleanupStack::PopAndDestroy(repository); - ); - return securityWarningsMode; -} - -void Security::setSecurityWarningsMode(const std::wstring& aSecurityWarningsMode) -{ - try - { - JavaStorageApplicationEntry_t query; - JavaStorageApplicationList_t queryResult; - JavaStorageEntry attr; - attr.setEntry(ID, L""); - query.insert(attr); - iStorage->search(MIDP_PACKAGE_TABLE, query, queryResult); - JavaStorageApplicationList_t::const_iterator iterator; - JavaStorageApplicationList_t domainQueryResult; - for (iterator = queryResult.begin(); iterator != queryResult.end(); iterator++) - { - std::wstring uid = L""; - JavaStorageApplicationEntry_t entry = (*iterator); - findColumn(entry, ID, uid); - JavaStorageApplicationEntry_t oldEntry; - JavaStorageEntry oldAttr; - oldAttr.setEntry(ID, uid); - oldEntry.insert(oldAttr); - attr.setEntry(SECURITY_WARNINGS, aSecurityWarningsMode); - entry.clear(); - entry.insert(attr); - iStorage->update(MIDP_PACKAGE_TABLE, entry, oldEntry); - } - } - catch (JavaStorageException& aJse) - { - } - // set the cenRep key as well - TRAP_IGNORE - ( - CRepository* repository = CRepository::NewLC(KCRUidJavaSecurity); - if (aSecurityWarningsMode == SECURITY_WARNINGS_USER_DEFINED_MODE) - { - repository->Set(KSecurityWarnings, 1); - } - else - { - repository->Set(KSecurityWarnings, 2); - } - CleanupStack::PopAndDestroy(repository); - ); -} - -void Security::findColumn(const JavaStorageApplicationEntry_t& aEntry, - const wstring& aColName, wstring& aColValue) -{ - JavaStorageEntry findPattern; - findPattern.setEntry(aColName, L""); - JavaStorageApplicationEntry_t::const_iterator findIterator = - aEntry.find(findPattern); - if (findIterator != aEntry.end()) - { - aColValue = findIterator->entryValue(); - } -} - -int Security::getSecurityPolicy() -{ - int securityPolicyId = S60_SECURITY_POLICY_ID; - TRAP_IGNORE - ( - CRepository* repository = CRepository::NewLC(KCRUidJavaSecurity); - HBufC* buf = HBufC::NewLC(NCentralRepositoryConstants::KMaxUnicodeStringLength); - TPtr policy(buf->Des()); - User::LeaveIfError(repository->Get(KPolicy, policy)); - if (policy.Compare(KS60SecurityPolicy) == 0) - { - securityPolicyId = S60_SECURITY_POLICY_ID; - } - else if (policy.Compare(KMSASecurityPolicy) == 0) - { - securityPolicyId = MSA_SECURITY_POLICY_ID; - } - else if (policy.Compare(KATTSecurityPolicy) == 0) - { - securityPolicyId = ATT_SECURITY_POLICY_ID; - } - CleanupStack::PopAndDestroy(buf); - CleanupStack::PopAndDestroy(repository); - ); - return securityPolicyId; - -} - -void Security::setSecurityPolicy(int aSecurityPolicyId) -{ - TRAP_IGNORE - ( - CRepository* repository = CRepository::NewLC(KCRUidJavaSecurity); - switch (aSecurityPolicyId) - { - case S60_SECURITY_POLICY_ID: - User::LeaveIfError(repository->Set(KPolicy, KS60SecurityPolicy)); - break; - case MSA_SECURITY_POLICY_ID: - User::LeaveIfError(repository->Set(KPolicy, KMSASecurityPolicy)); - break; - case ATT_SECURITY_POLICY_ID: - User::LeaveIfError(repository->Set(KPolicy, KATTSecurityPolicy)); - break; - } - CleanupStack::PopAndDestroy(repository); - ); -} - -