Have PairingSession::EncodeSessionParameters require local MRP values (#32324)
* Have PairingSession::EncodeSessionParameters require local MRP values
diff --git a/src/protocols/secure_channel/CASESession.cpp b/src/protocols/secure_channel/CASESession.cpp
index ee8feae..30d1f71 100644
--- a/src/protocols/secure_channel/CASESession.cpp
+++ b/src/protocols/secure_channel/CASESession.cpp
@@ -477,7 +477,7 @@
mFabricsTable = fabricTable;
mRole = CryptoContext::SessionRole::kResponder;
mSessionResumptionStorage = sessionResumptionStorage;
- mLocalMRPConfig = mrpLocalConfig;
+ mLocalMRPConfig = mrpLocalConfig.ValueOr(GetDefaultMRPConfig());
ChipLogDetail(SecureChannel, "Allocated SecureSession (%p) - waiting for Sigma1 msg",
mSecureSessionHolder.Get().Value()->AsSecureSession());
@@ -525,7 +525,7 @@
mFabricsTable = fabricTable;
mFabricIndex = fabricInfo->GetFabricIndex();
mSessionResumptionStorage = sessionResumptionStorage;
- mLocalMRPConfig = mrpLocalConfig;
+ mLocalMRPConfig = mrpLocalConfig.ValueOr(GetDefaultMRPConfig());
mExchangeCtxt->UseSuggestedResponseTimeout(kExpectedSigma1ProcessingTime);
mPeerNodeId = peerScopedNodeId.GetNodeId();
diff --git a/src/protocols/secure_channel/PASESession.cpp b/src/protocols/secure_channel/PASESession.cpp
index ab3007b..50b1861 100644
--- a/src/protocols/secure_channel/PASESession.cpp
+++ b/src/protocols/secure_channel/PASESession.cpp
@@ -195,7 +195,7 @@
mIterationCount = pbkdf2IterCount;
mNextExpectedMsg.SetValue(MsgType::PBKDFParamRequest);
mPairingComplete = false;
- mLocalMRPConfig = mrpLocalConfig;
+ mLocalMRPConfig = mrpLocalConfig.ValueOr(GetDefaultMRPConfig());
ChipLogDetail(SecureChannel, "Waiting for PBKDF param request");
@@ -225,7 +225,7 @@
mExchangeCtxt->UseSuggestedResponseTimeout(kExpectedLowProcessingTime);
- mLocalMRPConfig = mrpLocalConfig;
+ mLocalMRPConfig = mrpLocalConfig.ValueOr(GetDefaultMRPConfig());
err = SendPBKDFParamRequest();
SuccessOrExit(err);
diff --git a/src/protocols/secure_channel/PairingSession.cpp b/src/protocols/secure_channel/PairingSession.cpp
index 80e0485..6a6d03f 100644
--- a/src/protocols/secure_channel/PairingSession.cpp
+++ b/src/protocols/secure_channel/PairingSession.cpp
@@ -90,17 +90,9 @@
}
}
-CHIP_ERROR PairingSession::EncodeSessionParameters(TLV::Tag tag, const Optional<ReliableMessageProtocolConfig> & providedMrpConfig,
+CHIP_ERROR PairingSession::EncodeSessionParameters(TLV::Tag tag, const ReliableMessageProtocolConfig & mrpLocalConfig,
TLV::TLVWriter & tlvWriter)
{
- // TODO: https://github.com/project-chip/connectedhomeip/issues/30456. Based on the spec we need to send values here now,
- // but it is not entirely clear what we should be sending here when `providedMrpConfig.HasValue() == false`. For now we
- // are sending the default MRP config values.
- ReliableMessageProtocolConfig mrpLocalConfig = GetDefaultMRPConfig();
- if (providedMrpConfig.HasValue())
- {
- mrpLocalConfig = providedMrpConfig.Value();
- }
TLV::TLVType mrpParamsContainer;
ReturnErrorOnFailure(tlvWriter.StartContainer(tag, TLV::kTLVType_Structure, mrpParamsContainer));
ReturnErrorOnFailure(
diff --git a/src/protocols/secure_channel/PairingSession.h b/src/protocols/secure_channel/PairingSession.h
index e884982..8ed9f26 100644
--- a/src/protocols/secure_channel/PairingSession.h
+++ b/src/protocols/secure_channel/PairingSession.h
@@ -104,7 +104,7 @@
/**
* Encode the Session Parameters using the provided TLV tag.
*/
- static CHIP_ERROR EncodeSessionParameters(TLV::Tag tag, const Optional<ReliableMessageProtocolConfig> & mrpLocalConfig,
+ static CHIP_ERROR EncodeSessionParameters(TLV::Tag tag, const ReliableMessageProtocolConfig & mrpLocalConfig,
TLV::TLVWriter & tlvWriter);
protected:
@@ -238,7 +238,7 @@
// mLocalMRPConfig is our config which is sent to the other end and used by the peer session.
// mRemoteSessionParams is received from other end and set to our session.
- Optional<ReliableMessageProtocolConfig> mLocalMRPConfig;
+ ReliableMessageProtocolConfig mLocalMRPConfig = GetLocalMRPConfig().ValueOr(GetDefaultMRPConfig());
SessionParameters mRemoteSessionParams;
private:
diff --git a/src/protocols/secure_channel/tests/TestPairingSession.cpp b/src/protocols/secure_channel/tests/TestPairingSession.cpp
index ac1c453..e0e4a7c 100644
--- a/src/protocols/secure_channel/tests/TestPairingSession.cpp
+++ b/src/protocols/secure_channel/tests/TestPairingSession.cpp
@@ -70,8 +70,7 @@
NL_TEST_ASSERT(inSuite,
writer.StartContainer(TLV::AnonymousTag(), TLV::kTLVType_Structure, outerContainerType) == CHIP_NO_ERROR);
- NL_TEST_ASSERT(inSuite,
- PairingSession::EncodeSessionParameters(TLV::ContextTag(1), MakeOptional(config), writer) == CHIP_NO_ERROR);
+ NL_TEST_ASSERT(inSuite, PairingSession::EncodeSessionParameters(TLV::ContextTag(1), config, writer) == CHIP_NO_ERROR);
NL_TEST_ASSERT(inSuite, writer.EndContainer(outerContainerType) == CHIP_NO_ERROR);
NL_TEST_ASSERT(inSuite, writer.Finalize(&buf) == CHIP_NO_ERROR);