--- a/linklayercontrol/networkinterfacemgr/agentprcore/src/agentscpractivities.cpp Fri Mar 12 15:50:43 2010 +0200
+++ b/linklayercontrol/networkinterfacemgr/agentprcore/src/agentscpractivities.cpp Mon Mar 15 12:46:10 2010 +0200
@@ -24,6 +24,7 @@
//#include <comms-infras/corescprstates.h>
#include <comms-infras/corescpractivities.h>
#include <comms-infras/ss_nodemessages_dataclient.h>
+#include <elements/nm_messages_child.h>
#include "agentscprstates.h"
#include "agentscpractivities.h"
@@ -94,17 +95,51 @@
NODEACTIVITY_END()
}
+#ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
+namespace AgentSCprParamRequestActivity
+{
+DECLARE_DEFINE_NODEACTIVITY(ECFActivityParamRequest, AgentSCprParamRequest, TCFScpr::TSetParamsRequest)
+ FIRST_NODEACTIVITY_ENTRY(PRStates::TAwaitingParamRequest, CoreNetStates::TNoTagOrBearerPresent)
+ NODEACTIVITY_ENTRY(CoreNetStates::KBearerPresent, PRStates::TPassToServiceProvider, CoreNetStates::TAwaitingParamResponse, MeshMachine::TTag<CoreNetStates::KBearerPresent>)
+ LAST_NODEACTIVITY_ENTRY(CoreNetStates::KBearerPresent, PRStates::TStoreParamsAndPostToOriginators)
+ LAST_NODEACTIVITY_ENTRY(KNoTag, PRStates::TRespondWithCurrentParams)
+NODEACTIVITY_END()
+}
+#endif //#ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
+namespace AgentSCprDestroyActivity
+{
+//Overridden destroy for cleaning up the agent if its still about
+DECLARE_DEFINE_CUSTOM_NODEACTIVITY(ECFActivityDestroy, AgentSCprDestroy, Messages::TEChild::TDestroy, CoreActivities::CDestroyActivity::New)
+ FIRST_NODEACTIVITY_ENTRY(MeshMachine::TAwaitingDestroy, CoreActivities::CDestroyActivity::TNoTagBlockedByActivitiesOrLeavingDataClient)
+
+ ROUTING_NODEACTIVITY_ENTRY(KNoTag, AgentSCprStates::TNoTagOrProviderStopped)
+ NODEACTIVITY_ENTRY(KNoTag, AgentSCprStates::TStopAgent, AgentSCprStates::TAwaitingAgentDown, MeshMachine::TTag<CoreNetStates::KProviderStopped>)
+ ROUTING_NODEACTIVITY_ENTRY(CoreNetStates::KProviderStopped, CoreStates::TNoTagOrNoClients)
+
+ //The node mustn't go out of scope with clients present. The node must get rid of them first.
+ NODEACTIVITY_ENTRY(KNoTag, CoreActivities::CDestroyActivity::TMakeClientsLeaveOrProcessClientLeave, CoreStates::TAwaitingClientLeave, CoreActivities::CDestroyActivity::TNoTagOrNoTagBackwards)
+ THROUGH_NODEACTIVITY_ENTRY(KNoTag, CoreActivities::CDestroyActivity::TProcessClientLeave, TTag<CoreNetStates::KNoClients>)
+
+ THROUGH_NODEACTIVITY_ENTRY(CoreNetStates::KNoClients, PRStates::TProcessDestroy, MeshMachine::TNoTag)
+ NODEACTIVITY_ENTRY(KNoTag, MeshMachine::TDoNothing, MeshMachine::TAwaitingLeaveComplete, CoreActivities::CDestroyActivity::TNoTagOrNoTagBackwards)
+ LAST_NODEACTIVITY_ENTRY(KNoTag, CoreNetStates::TSendClientLeavingAndRemoveControlProvider)
+NODEACTIVITY_END()
+}
// Activity Map
namespace AgentSCprActivities
{
DEFINE_EXPORT_ACTIVITY_MAP(agentSCprActivities)
+ ACTIVITY_MAP_ENTRY(AgentSCprDestroyActivity, AgentSCprDestroy)
ACTIVITY_MAP_ENTRY(AgentSCprNotificationFromFlowActivity, AgentSCprNotificationFromFlow)
ACTIVITY_MAP_ENTRY(AgentSCprAuthenticationActivity, AgentSCprAuthentication)
ACTIVITY_MAP_ENTRY(AgentSCprDataClientGoneDownActivity, AgentSCprDataClientGoneDown)
ACTIVITY_MAP_ENTRY(AgentSCprStartActivity, AgentSCprStart)
ACTIVITY_MAP_ENTRY(AgentSCprStopActivity, AgentSCprStop)
ACTIVITY_MAP_ENTRY(AgentSCprDataClientStoppedActivity, AgentSCprDataClientStopped)
+#ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
+ ACTIVITY_MAP_ENTRY(AgentSCprParamRequestActivity, AgentSCprParamRequest)
+#endif //#ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
ACTIVITY_MAP_END_BASE(SCprActivities, coreSCprActivities)
}
--- a/linklayercontrol/networkinterfacemgr/agentprcore/src/agentscprstates.cpp Fri Mar 12 15:50:43 2010 +0200
+++ b/linklayercontrol/networkinterfacemgr/agentprcore/src/agentscprstates.cpp Mon Mar 15 12:46:10 2010 +0200
@@ -235,7 +235,8 @@
}
else
{
- // TODO: SCpr Panic - unexpected message
+ // coming from destroy
+ reason = KErrAbort;
}
iContext.Node().SetActivityIdForAdapter(iContext.iNodeActivity->ActivityId());
--- a/linklayercontrol/networkinterfacemgr/group/agentpr.mmp Fri Mar 12 15:50:43 2010 +0200
+++ b/linklayercontrol/networkinterfacemgr/group/agentpr.mmp Mon Mar 15 12:46:10 2010 +0200
@@ -44,7 +44,6 @@
USERINCLUDE ../agentpr/inc
USERINCLUDE ../agentprcore/inc
-USERINCLUDE ../../../../commsfw/datacommsserver/esockserver/inc
OS_LAYER_SYSTEMINCLUDE_SYMBIAN
--- a/linklayercontrol/networkinterfacemgr/group/agentprcore.mmp Fri Mar 12 15:50:43 2010 +0200
+++ b/linklayercontrol/networkinterfacemgr/group/agentprcore.mmp Mon Mar 15 12:46:10 2010 +0200
@@ -47,8 +47,6 @@
USERINCLUDE ../inc
USERINCLUDE ../agentprcore/inc
-USERINCLUDE ../../../../commsfw/datacommsserver/esockserver/inc
-
OS_LAYER_SYSTEMINCLUDE_SYMBIAN
--- a/networkcontrol/ipnetworklayer/inc/IPProtoCPR.h Fri Mar 12 15:50:43 2010 +0200
+++ b/networkcontrol/ipnetworklayer/inc/IPProtoCPR.h Mon Mar 15 12:46:10 2010 +0200
@@ -47,7 +47,7 @@
class TLinkDown;
class TLinkUp;
class TStoreAndForwardStateChange;
-
+ class TSendStoppedAndGoneDown;
}
namespace ESock
@@ -91,6 +91,7 @@
friend class IpProtoCpr::TLinkDown;
friend class IpProtoCpr::TLinkUp;
friend class IpProtoCpr::TStoreAndForwardStateChange;
+friend class IpProtoCpr::TSendStoppedAndGoneDown;
friend class CLinkCprExtensionApi;
@@ -125,6 +126,9 @@
virtual void EnumerateSubConnections(ESock::CLegacyEnumerateSubConnectionsResponder*& aResponder);
virtual void GetSubConnectionInfo(TSubConnectionInfo &aInfo);
+ TInt iProvisionError;
+ ESock::TDataMonitoringSubConnProvisioningInfo* iSubConnProvisioningInfo;
+
protected:
enum TTimerType { ETimerUnknown, ETimerShort, ETimerMedium, ETimerLong, ETimerImmediate, ETimerMax };
--- a/networkcontrol/ipnetworklayer/inc/IPProtoCprStates.h Fri Mar 12 15:50:43 2010 +0200
+++ b/networkcontrol/ipnetworklayer/inc/IPProtoCprStates.h Mon Mar 15 12:46:10 2010 +0200
@@ -41,9 +41,17 @@
virtual void DoL();
DECLARE_SMELEMENT_FOOTER( TStoreProvision )
-
+DECLARE_SMELEMENT_HEADER( TSendStoppedAndGoneDown, MeshMachine::TStateTransition<IpProtoCpr::TContext>, NetStateMachine::MStateTransition, IpProtoCpr::TContext )
+ virtual void DoL();
+DECLARE_SMELEMENT_FOOTER( TSendStoppedAndGoneDown )
+DECLARE_SMELEMENT_HEADER( TProvisionActivation, MeshMachine::TStateTransition<IpProtoCpr::TContext>, NetStateMachine::MStateTransition, IpProtoCpr::TContext )
+ virtual void DoL();
+DECLARE_SMELEMENT_FOOTER( TProvisionActivation )
+DECLARE_SMELEMENT_HEADER( THandleProvisionError, MeshMachine::TStateTransition<IpProtoCpr::TContext>, NetStateMachine::MStateTransition, IpProtoCpr::TContext )
+ virtual void DoL();
+DECLARE_SMELEMENT_FOOTER( THandleProvisionError )
DECLARE_SMELEMENT_HEADER( TStoreAndFilterDeprecatedAndForwardStateChange, MeshMachine::TStateTransition<IpProtoCpr::TContext>, NetStateMachine::MStateTransition, IpProtoCpr::TContext )
--- a/networkcontrol/ipnetworklayer/src/IPProtoCPR.cpp Fri Mar 12 15:50:43 2010 +0200
+++ b/networkcontrol/ipnetworklayer/src/IPProtoCPR.cpp Mon Mar 15 12:46:10 2010 +0200
@@ -75,7 +75,9 @@
{
DECLARE_DEFINE_NODEACTIVITY(ECFActivityStoreProvision, IPProtoCprProvision, TCFDataClient::TProvisionConfig)
FIRST_NODEACTIVITY_ENTRY(CoreNetStates::TAwaitingProvision, MeshMachine::TNoTag)
+ THROUGH_NODEACTIVITY_ENTRY(KNoTag, IpProtoCpr::TProvisionActivation, MeshMachine::TNoTagOrErrorTag)
LAST_NODEACTIVITY_ENTRY(KNoTag, IpProtoCpr::TStoreProvision)
+ LAST_NODEACTIVITY_ENTRY(KErrorTag, IpProtoCpr::THandleProvisionError)
NODEACTIVITY_END()
}
@@ -220,6 +222,18 @@
NODEACTIVITY_END()
}
+namespace IPProtoCprStopActivity
+{
+DECLARE_DEFINE_CUSTOM_NODEACTIVITY(ECFActivityStop, IPProtoCprStop, TCFServiceProvider::TStop, MeshMachine::CNodeRetryActivity::NewL)
+ FIRST_NODEACTIVITY_ENTRY(CoreNetStates::TAwaitingStop, CoreNetStates::TActiveOrNoTagBlockedByBindTo)
+ THROUGH_NODEACTIVITY_ENTRY(KActiveTag, CoreNetStates::TCancelDataClientStart, MeshMachine::TNoTag)
+ NODEACTIVITY_ENTRY(KNoTag, CoreNetStates::TStopSelf, CoreNetStates::TAwaitingDataClientStopped, CoreNetStates::TNoTagOrNoBearer)
+ NODEACTIVITY_ENTRY(KNoTag, CoreNetStates::TSendStop, CoreNetStates::TAwaitingStopped, MeshMachine::TNoTag)
+ NODEACTIVITY_ENTRY(KNoTag, CoreNetStates::TSendClientLeavingRequestToServiceProvider, MeshMachine::TAwaitingLeaveComplete, TTag<CoreNetStates::KNoBearer>)
+ LAST_NODEACTIVITY_ENTRY(CoreNetStates::KNoBearer, IpProtoCpr::TSendStoppedAndGoneDown)
+NODEACTIVITY_END()
+}
+
namespace IPProtoCprActivities
{
DECLARE_DEFINE_ACTIVITY_MAP(activityMap)
@@ -235,6 +249,7 @@
ACTIVITY_MAP_ENTRY(PRDataClientIdleActivity, PRDataClientIdle)
ACTIVITY_MAP_ENTRY(IPProtoCprClientLeaveActivity, IPProtoCprClientLeave)
ACTIVITY_MAP_ENTRY(IPProtoCprIoctlActivity, IPProtoCprIoctl)
+ ACTIVITY_MAP_ENTRY(IPProtoCprStopActivity, IPProtoCprStop)
#ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
ACTIVITY_MAP_ENTRY(IPProtoCprNotificationActivity, IPProtoCprNotification)
#endif // SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
--- a/networkcontrol/ipnetworklayer/src/IPProtoCprStates.cpp Fri Mar 12 15:50:43 2010 +0200
+++ b/networkcontrol/ipnetworklayer/src/IPProtoCprStates.cpp Mon Mar 15 12:46:10 2010 +0200
@@ -37,12 +37,29 @@
#include <comms-infras/simpleselectorbase.h>
#include <commsdattypesv1_1_partner.h>
#include <es_prot_internal.h>
+#include <elements/nm_messages_errorrecovery.h>
using namespace Messages;
using namespace MeshMachine;
using namespace IpProtoCpr;
using namespace ESock;
+DEFINE_SMELEMENT(TProvisionActivation, NetStateMachine::MStateTransition, IpProtoCpr::TContext)
+void TProvisionActivation::DoL()
+ {
+ CIPProtoConnectionProvider& node = iContext.Node();
+
+ //Trap if memory allocation fails
+ TRAP( node.iProvisionError, node.iSubConnProvisioningInfo = new (ELeave) TDataMonitoringSubConnProvisioningInfo(NULL, NULL));
+ }
+
+DEFINE_SMELEMENT(THandleProvisionError, NetStateMachine::MStateTransition, IpProtoCpr::TContext)
+void THandleProvisionError::DoL()
+ {
+ //Set node error
+ iContext.iNodeActivity->SetError(iContext.Node().iProvisionError);
+ }
+
DEFINE_SMELEMENT(TStoreProvision, NetStateMachine::MStateTransition, IpProtoCpr::TContext)
void TStoreProvision::DoL()
{
@@ -83,10 +100,13 @@
// state and one in an active state. The access point config cannot presently hold provisioning information
// specific to an SCPR instance, so it is allocated and managed here in the CPR as a shared entity. Only
// one SCPR instance should be using this at a time, however.
- TDataMonitoringSubConnProvisioningInfo* subConnProvisioningInfo = new (ELeave) TDataMonitoringSubConnProvisioningInfo(NULL, NULL);
- CleanupStack::PushL(subConnProvisioningInfo);
- node.iNodeLocalExtensions.AppendExtensionL(subConnProvisioningInfo);
- CleanupStack::Pop(subConnProvisioningInfo);
+
+ //this allocation taken care in previous activity entry
+ //just append here
+ //TDataMonitoringSubConnProvisioningInfo* subConnProvisioningInfo = new (ELeave) TDataMonitoringSubConnProvisioningInfo(NULL, NULL);
+ CleanupStack::PushL(node.iSubConnProvisioningInfo);
+ node.iNodeLocalExtensions.AppendExtensionL(node.iSubConnProvisioningInfo);
+ CleanupStack::Pop(node.iSubConnProvisioningInfo);
// The CLinkCprExtensionApi may have been added previously if this is a reconnect scenario
// We add it again in this new override of the extensions, if the old container is fully superceded
@@ -122,6 +142,85 @@
}
}
+DEFINE_SMELEMENT(TSendStoppedAndGoneDown, NetStateMachine::MStateTransition, IpProtoCpr::TContext)
+void TSendStoppedAndGoneDown::DoL()
+ {
+ ASSERT(iContext.iNodeActivity);
+
+ // stop has been caused by timer expiry, remove self from originators list, because we
+ // are not waiting for TStopped and in certain situations it would arrive after the node has been
+ // destroyed
+ if (iContext.Node().iTimerExpired)
+ {
+ TInt selfidx = iContext.iNodeActivity->FindOriginator(iContext.Node().SelfInterface());
+ ASSERT(selfidx != KErrNotFound);
+ iContext.iNodeActivity->RemoveOriginator(selfidx);
+ }
+
+ TInt stopCode = KErrCancel;
+ MeshMachine::CNodeActivityBase* activity = iContext.iNodeActivity;
+
+ if (activity && activity->Error() != KErrNone)
+ {
+ stopCode = activity->Error();
+ activity->SetError(KErrNone);
+ }
+
+ // Could be TStop, TStopped or TDataClientStopped (usually TStopped)
+ if ( (iContext.iMessage.IsMessage<TCFServiceProvider::TStopped>()) ||
+ (iContext.iMessage.IsMessage<TCFServiceProvider::TStop>()) ||
+ (iContext.iMessage.IsMessage<TCFDataClient::TStopped>()) ||
+ (iContext.iMessage.IsMessage<TCFDataClient::TStop>()) )
+ {
+ stopCode = static_cast<const Messages::TSigNumber&>(iContext.iMessage).iValue;
+ }
+ else if ( (iContext.iMessage.IsMessage<TCFControlClient::TGoneDown>()) ||
+ (iContext.iMessage.IsMessage<TCFControlProvider::TDataClientGoneDown>()) )
+ {
+ stopCode = static_cast<const Messages::TSigNumberNumber&>(iContext.iMessage).iValue1;
+ }
+ else if ( iContext.iMessage.IsMessage<TEErrorRecovery::TErrorRecoveryResponse>() )
+ {
+ // Action must be propagate or there is no error code (your activity flow is faulty)!
+ const Messages::TSigErrResponse& sig = static_cast<const Messages::TSigErrResponse&>(iContext.iMessage);
+ __ASSERT_DEBUG(sig.iErrResponse.iAction == Messages::TErrResponse::EPropagate, User::Invariant());
+ stopCode = sig.iErrResponse.iError;
+ }
+
+ TCFServiceProvider::TStopped msg(stopCode);
+ iContext.iNodeActivity->PostToOriginators(msg);
+
+ const TProviderInfo& providerInfo = static_cast<const TProviderInfoExt&>(iContext.Node().AccessPointConfig().FindExtensionL(
+ STypeId::CreateSTypeId(TProviderInfoExt::EUid, TProviderInfoExt::ETypeId))).iProviderInfo;
+
+ TCFControlClient::TGoneDown goneDown(stopCode, providerInfo.APId());
+ TClientIter<TDefaultClientMatchPolicy> iter = iContext.Node().GetClientIter<TDefaultClientMatchPolicy>(TClientType(TCFClientType::ECtrl));
+ CNodeActivityBase* startActivity = iContext.Node().FindActivityById(ECFActivityStart);
+
+ for (TInt i = 0; iter[i]; i++)
+ {
+ //Send TGoneDown to every Ctrl client except
+ // * the originator (who would be recieving TStopped)
+ // * originators of the start activity (these will be errored separately)
+ if (iContext.iNodeActivity && iContext.iNodeActivity->FindOriginator(*iter[i]) >= 0)
+ {
+ continue; // ControlClient is a Stop originator
+ }
+
+ // So far the control client is not a Stop originator
+ if (startActivity == NULL || startActivity->FindOriginator(*iter[i]) == KErrNotFound)
+ {
+ // ControlClient is not a Start originator
+ iter[i]->PostMessage(TNodeCtxId(iContext.ActivityId(), iContext.NodeId()), goneDown);
+ }
+ }
+
+ if (iContext.iNodeActivity)
+ {
+ iContext.iNodeActivity->SetError(KErrNone);
+ }
+ }
+
DEFINE_SMELEMENT(TAwaitingDataMonitoringNotification, NetStateMachine::MState, IpProtoCpr::TContext)
TBool TAwaitingDataMonitoringNotification::Accept()
{
--- a/networkcontrol/iptransportlayer/src/policyrequeststates.cpp Fri Mar 12 15:50:43 2010 +0200
+++ b/networkcontrol/iptransportlayer/src/policyrequeststates.cpp Mon Mar 15 12:46:10 2010 +0200
@@ -21,6 +21,7 @@
#include <comms-infras/ss_coreprstates.h>
#include <comms-infras/ss_nodemessages_dataclient.h>
+#include <comms-infras/ss_nodemessages_serviceprovider.h>
#include <comms-infras/ss_nodemessages_rejoiningprovider.h>
#include <comms-infras/ss_nodemessages_subconn.h>
#include <comms-infras/ss_nodemessages_scpr.h>
@@ -152,7 +153,7 @@
if(cpr)
{
iContext.iNodeActivity->PostRequestTo(*cpr,
- TCFDataClient::TBindToComplete(iContext.iNodeActivity->Error()).CRef());
+ TCFServiceProvider::TBindToComplete(iContext.iNodeActivity->Error()).CRef());
}
}
--- a/networksecurity/ipsec/ipsec6/include/crypto.h Fri Mar 12 15:50:43 2010 +0200
+++ b/networksecurity/ipsec/ipsec6/include/crypto.h Mon Mar 15 12:46:10 2010 +0200
@@ -84,9 +84,9 @@
#include <e32base.h>
#include <es_prot.h>
-#include "cryptospidef.h"
+#include <cryptospi/cryptospidef.h>
#include "cryptosymmetriccipherapi.h"
-#include "cryptomacapi.h"
+#include <cryptospi/cryptomacapi.h>
/**
// The protocol number for a library.
--- a/networksecurity/ipsec/ipsec6/src/sa_crypt.cpp Fri Mar 12 15:50:43 2010 +0200
+++ b/networksecurity/ipsec/ipsec6/src/sa_crypt.cpp Mon Mar 15 12:46:10 2010 +0200
@@ -27,9 +27,10 @@
#include <networking/ipsecerr.h>
#include "ipseccrypto.h"
#include "keys.h"
-#include "cryptospidef.h"
+#include <cryptospi/cryptospidef.h>
+
#ifdef SYMBIAN_IPSEC_VOIP_SUPPORT
-#include "cryptomacapi.h"
+#include <cryptospi/cryptomacapi.h>
#endif //SYMBIAN_IPSEC_VOIP_SUPPORT
class TLibraryPtr
--- a/networksecurity/ipsec/ipseccrypto/inc/ipseccrypto.h Fri Mar 12 15:50:43 2010 +0200
+++ b/networksecurity/ipsec/ipseccrypto/inc/ipseccrypto.h Mon Mar 15 12:46:10 2010 +0200
@@ -24,7 +24,7 @@
#include <networking/crypto.h>
#ifdef SYMBIAN_IPSEC_VOIP_SUPPORT
#include "cryptosymmetriccipherapi.h"
-#include "cryptomacapi.h"
+#include <cryptospi/cryptomacapi.h>
#endif // SYMBIAN_IPSEC_VOIP_SUPPORT
typedef enum
--- a/networksecurity/ipsec/ipseccrypto/src/ipseccrypto_prt.cpp Fri Mar 12 15:50:43 2010 +0200
+++ b/networksecurity/ipsec/ipseccrypto/src/ipseccrypto_prt.cpp Mon Mar 15 12:46:10 2010 +0200
@@ -24,14 +24,15 @@
#include <hash.h>
#include "keys.h"
-#include "cryptospidef.h"
+#include <cryptospi/cryptospidef.h>
+
#include "cryptosymmetriccipherapi.h"
#ifdef SYMBIAN_IPSEC_VOIP_SUPPORT
#include "ruleselector.h"
#include "plugincharacteristics.h"
#include "cryptospistateapi.h"
#include "cryptoparams.h"
-#include "cryptomacapi.h"
+#include <cryptospi/cryptomacapi.h>
using namespace CryptoSpi;
#endif // SYMBIAN_IPSEC_VOIP_SUPPORT
--- a/networksecurity/tlsprovider/Test/group/TlsProvtestServer.mmp Fri Mar 12 15:50:43 2010 +0200
+++ b/networksecurity/tlsprovider/Test/group/TlsProvtestServer.mmp Mon Mar 15 12:46:10 2010 +0200
@@ -47,9 +47,6 @@
SYSTEMINCLUDE /epoc32/include/mw
#endif
-USERINCLUDE ../../../../../security/crypto/weakcrypto/inc
-
-
LIBRARY euser.lib
LIBRARY testexecuteutils.lib
LIBRARY efsrv.lib
--- a/networksecurity/tlsprovider/group/swtlstokentypeplugin.mmp Fri Mar 12 15:50:43 2010 +0200
+++ b/networksecurity/tlsprovider/group/swtlstokentypeplugin.mmp Mon Mar 15 12:46:10 2010 +0200
@@ -33,7 +33,7 @@
SOURCE swtlstokenprovider.cpp swtlssessioncache.cpp swtlstoken_log.cpp
USERINCLUDE ../inc
-USERINCLUDE ../../../../security/crypto/weakcrypto/inc
+
OS_LAYER_SYSTEMINCLUDE_SYMBIAN
--- a/networksecurity/tlsprovider/group/tlsprovider.mmp Fri Mar 12 15:50:43 2010 +0200
+++ b/networksecurity/tlsprovider/group/tlsprovider.mmp Mon Mar 15 12:46:10 2010 +0200
@@ -1,4 +1,4 @@
-// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2001-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"
@@ -33,7 +33,7 @@
SOURCE tlsprovider_log.cpp tlsproviderpolicy.cpp
USERINCLUDE ../inc
-USERINCLUDE ../../../../security/crypto/weakcrypto/inc
+
OS_LAYER_SYSTEMINCLUDE_SYMBIAN
LIBRARY euser.lib pkixcert.lib
@@ -42,7 +42,8 @@
LIBRARY crypto.lib
LIBRARY ctframework.lib
LIBRARY certstore.lib
-//LIBRARY estor.lib x500.lib asn1.lib
+LIBRARY asn1.lib
+//LIBRARY estor.lib x500.lib
//LIBRARY bigint.lib
LIBRARY hash.lib
LIBRARY random.lib
--- a/networksecurity/tlsprovider/inc/tlsprovider.h Fri Mar 12 15:50:43 2010 +0200
+++ b/networksecurity/tlsprovider/inc/tlsprovider.h Mon Mar 15 12:46:10 2010 +0200
@@ -430,6 +430,7 @@
void ShowUntrustedDialogL(const TValidationStatus aResult);
void HandleBadCertificateL(const TValidationStatus aResult);
TBool CheckExtendedKeyUsageL(const CX509Certificate& aSource);
+ HBufC* ExtractCertFieldL(const TDesC& aFieldName, const CX500DistinguishedName& aDistinguishedName);
//Active Handlers
void OnEGetSession();
--- a/networksecurity/tlsprovider/source/tlsprovider/CTlsProvider.cpp Fri Mar 12 15:50:43 2010 +0200
+++ b/networksecurity/tlsprovider/source/tlsprovider/CTlsProvider.cpp Mon Mar 15 12:46:10 2010 +0200
@@ -1,4 +1,4 @@
-// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2003-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"
@@ -18,6 +18,7 @@
#include <ecom/ecom.h>
#include <securitydefsconst.h>
#include <x520ava.h>
+#include <asn1dec.h>
#include "tlsprovider.h"
#include "cryptostrength.h"
@@ -480,6 +481,44 @@
return;
}
+// This patch is to fix-up the Common Name component of the Subject field.
+// This is due to a bug in TASN1DecBMPString::DecodeContentsL which is incorrectly decoding the BMP String contents.
+// Since fixing TASN1DecBMPString would cause a major break in public API, this fix-up is being done here locally.
+// This patch is active only if the encoding is in BMP String. If TASN1DecBMPString::DecodeContentsL is ever fixed (which
+// means CX500DistinguishedName::DisplayNameL is also automatically fixed) then this patch MUST to be removed.
+
+HBufC* CTlsProviderImpl::ExtractCertFieldL(const TDesC& aFieldName, const CX500DistinguishedName& aDistinguishedName)
+ {
+ TInt count = aDistinguishedName.Count();
+ for (TInt i = 0; i < count; i++)
+ {
+ const CX520AttributeTypeAndValue& ava = aDistinguishedName.Element(i);
+ if (ava.Type() == aFieldName)
+ {
+ HBufC* res = ava.ValueL();
+ CleanupStack::PushL(res);
+ TPtr pRes = res->Des();
+ TUint8* data = const_cast<TUint8 *>(reinterpret_cast<const TUint8 *>(res->Ptr()));
+ TUint len = pRes.Length()*2;
+ TASN1DecGeneric gen(ava.EncodedValue());
+ gen.InitL();
+ if (gen.Tag() == EASN1BMPString)
+ {
+ // Bmp String internally store them as little endian, as a string we want it big
+ // endian interchange least and most significent byte
+ for(TUint i=0; i<len; i+=2)
+ {
+ TUint8 temp = data[i];
+ data[i] = data[i+1];
+ data[i+1] = temp;
+ }
+ }
+ CleanupStack::Pop();
+ return res;
+ }
+ }
+ return NULL;
+ }
TBool CTlsProviderImpl::VerifySignatureL(
@@ -1526,7 +1565,8 @@
if(!hasAltNameExt)
{
// no name yet lets try common name from Subject
- HBufC* commonName = aSource.SubjectName().ExtractFieldL(KX520CommonName);
+ //HBufC* commonName = aSource.SubjectName().ExtractFieldL(KX520CommonName);
+ HBufC* commonName = ExtractCertFieldL(KX520CommonName, aSource.SubjectName());
if(commonName)
{
CleanupStack::PushL(commonName);
--- a/tcpiputils/dhcp/te_unittest/dhcpservtest.mmp Fri Mar 12 15:50:43 2010 +0200
+++ b/tcpiputils/dhcp/te_unittest/dhcpservtest.mmp Mon Mar 15 12:46:10 2010 +0200
@@ -23,10 +23,9 @@
SOURCE dhcpservtest.cpp
USERINCLUDE ..\include
#ifdef SYMBIAN_OLD_EXPORT_LOCATION
-SYSTEMINCLUDE \epoc32\include \epoc32\include\TechView \epoc32\include\Networking
+SYSTEMINCLUDE \epoc32\include \epoc32\include\Networking
#else
OS_LAYER_SYSTEMINCLUDE_SYMBIAN
-SYSTEMINCLUDE \epoc32\include\TechView
SYSTEMINCLUDE \epoc32\include\platform\Networking
SYSTEMINCLUDE ..\..\networkaddressandporttranslation\inc
#endif