Skip to content

Commit 85c5e85

Browse files
authored
Remove unnecessary code from RendezvousSession class (#6213)
1 parent 0719dad commit 85c5e85

File tree

2 files changed

+32
-157
lines changed

2 files changed

+32
-157
lines changed

src/protocols/secure_channel/RendezvousSession.cpp

+29-135
Original file line numberDiff line numberDiff line change
@@ -90,14 +90,6 @@ CHIP_ERROR RendezvousSession::Init(const RendezvousParameters & params, Messagin
9090

9191
RendezvousSession::~RendezvousSession()
9292
{
93-
ReleasePairingSessionHandle();
94-
95-
if (mTransport != nullptr)
96-
{
97-
chip::Platform::Delete(mTransport);
98-
mTransport = nullptr;
99-
}
100-
10193
mDelegate = nullptr;
10294
}
10395

@@ -122,32 +114,45 @@ void RendezvousSession::OnSessionEstablished()
122114

123115
CHIP_ERROR err = mSecureSessionMgr->NewPairing(
124116
Optional<Transport::PeerAddress>::Value(mPairingSession.PeerConnection().GetPeerAddress()),
125-
mPairingSession.PeerConnection().GetPeerNodeId(), &mPairingSession, direction, mAdmin->GetAdminId(), mTransport);
117+
mPairingSession.PeerConnection().GetPeerNodeId(), &mPairingSession, direction, mAdmin->GetAdminId(), nullptr);
126118
if (err != CHIP_NO_ERROR)
127119
{
128120
ChipLogError(Ble, "Failed in setting up secure channel: err %s", ErrorStr(err));
121+
OnRendezvousError(err);
129122
return;
130123
}
131124

132-
InitPairingSessionHandle();
125+
Cleanup();
133126

134-
UpdateState(State::kRendezvousComplete);
135-
if (!mParams.IsController())
127+
if (mParams.HasAdvertisementDelegate())
136128
{
137-
OnRendezvousConnectionClosed();
129+
mParams.GetAdvertisementDelegate()->RendezvousComplete();
138130
}
139-
}
140131

141-
void RendezvousSession::OnNetworkProvisioningError(CHIP_ERROR err)
142-
{
143-
OnRendezvousError(err);
132+
if (mDelegate != nullptr)
133+
{
134+
mDelegate->OnRendezvousStatusUpdate(RendezvousSessionDelegate::SecurePairingSuccess, CHIP_NO_ERROR);
135+
mDelegate->OnRendezvousComplete();
136+
}
144137
}
145138

146-
void RendezvousSession::OnNetworkProvisioningComplete()
139+
void RendezvousSession::Cleanup()
147140
{
148-
UpdateState(State::kRendezvousComplete);
141+
if (!mParams.IsController())
142+
{
143+
mExchangeManager->UnregisterUnsolicitedMessageHandlerForType(Protocols::SecureChannel::MsgType::PBKDFParamRequest);
144+
}
145+
146+
if (mParams.HasAdvertisementDelegate())
147+
{
148+
mParams.GetAdvertisementDelegate()->StopAdvertisement();
149+
}
149150
}
150151

152+
void RendezvousSession::OnNetworkProvisioningError(CHIP_ERROR err) {}
153+
154+
void RendezvousSession::OnNetworkProvisioningComplete() {}
155+
151156
void RendezvousSession::OnRendezvousConnectionOpened()
152157
{
153158
if (!mParams.IsController())
@@ -158,135 +163,36 @@ void RendezvousSession::OnRendezvousConnectionOpened()
158163
CHIP_ERROR err = Pair(mParams.GetSetupPINCode());
159164
if (err != CHIP_NO_ERROR)
160165
{
161-
OnSessionEstablishmentError(err);
166+
OnRendezvousError(err);
162167
}
163168
}
164169

165-
void RendezvousSession::OnRendezvousConnectionClosed()
166-
{
167-
UpdateState(State::kInit, CHIP_NO_ERROR);
168-
}
170+
void RendezvousSession::OnRendezvousConnectionClosed() {}
169171

170172
void RendezvousSession::OnRendezvousError(CHIP_ERROR err)
171173
{
172-
UpdateState(State::kInit, err);
173-
}
174+
Cleanup();
174175

175-
void RendezvousSession::UpdateState(RendezvousSession::State newState, CHIP_ERROR err)
176-
{
177176
if (mDelegate != nullptr)
178177
{
179-
switch (mCurrentState)
180-
{
181-
case State::kSecurePairing:
182-
mExchangeManager->UnregisterUnsolicitedMessageHandlerForType(Protocols::SecureChannel::MsgType::PBKDFParamRequest);
183-
if (CHIP_NO_ERROR == err)
184-
{
185-
mDelegate->OnRendezvousStatusUpdate(RendezvousSessionDelegate::SecurePairingSuccess, err);
186-
}
187-
else
188-
{
189-
mDelegate->OnRendezvousStatusUpdate(RendezvousSessionDelegate::SecurePairingFailed, err);
190-
}
191-
break;
192-
193-
default:
194-
break;
195-
};
178+
mDelegate->OnRendezvousStatusUpdate(RendezvousSessionDelegate::SecurePairingFailed, err);
179+
mDelegate->OnRendezvousError(err);
196180
}
197-
198-
mCurrentState = newState;
199-
200-
switch (mCurrentState)
201-
{
202-
case State::kRendezvousComplete:
203-
if (mParams.HasAdvertisementDelegate())
204-
{
205-
mParams.GetAdvertisementDelegate()->RendezvousComplete();
206-
}
207-
208-
if (mDelegate != nullptr)
209-
{
210-
mDelegate->OnRendezvousComplete();
211-
}
212-
break;
213-
214-
case State::kSecurePairing:
215-
// Release the previous session handle
216-
ReleasePairingSessionHandle();
217-
break;
218-
219-
case State::kInit:
220-
// Release the previous session handle
221-
ReleasePairingSessionHandle();
222-
223-
// Disable rendezvous advertisement
224-
if (mParams.HasAdvertisementDelegate())
225-
{
226-
mParams.GetAdvertisementDelegate()->StopAdvertisement();
227-
}
228-
if (mTransport)
229-
{
230-
// Free the transport
231-
chip::Platform::Delete(mTransport);
232-
mTransport = nullptr;
233-
}
234-
235-
if (CHIP_NO_ERROR != err && mDelegate != nullptr)
236-
{
237-
mDelegate->OnRendezvousError(err);
238-
}
239-
break;
240-
241-
default:
242-
break;
243-
};
244181
}
245182

246183
void RendezvousSession::OnMessageReceived(const PacketHeader & header, const Transport::PeerAddress & source,
247184
System::PacketBufferHandle msgBuf)
248185
{}
249186

250-
void RendezvousSession::InitPairingSessionHandle()
251-
{
252-
ReleasePairingSessionHandle();
253-
mPairingSessionHandle = chip::Platform::New<SecureSessionHandle>(
254-
mPairingSession.PeerConnection().GetPeerNodeId(), mPairingSession.PeerConnection().GetPeerKeyID(), mAdmin->GetAdminId());
255-
}
256-
257-
void RendezvousSession::ReleasePairingSessionHandle()
258-
{
259-
VerifyOrReturn(mPairingSessionHandle != nullptr);
260-
261-
Transport::PeerConnectionState * state = mSecureSessionMgr->GetPeerConnectionState(*mPairingSessionHandle);
262-
if (state != nullptr)
263-
{
264-
// Reset the transport and peer address in the active secure channel
265-
// This will allow the regular transport (e.g. UDP) to take over the existing secure channel
266-
state->SetTransport(nullptr);
267-
state->SetPeerAddress(PeerAddress{});
268-
269-
// When the remote node ID is not specified in the initial rendezvous parameters, the connection state
270-
// is created with undefined peer node ID. Update it now.
271-
if (state->GetPeerNodeId() == kUndefinedNodeId)
272-
state->SetPeerNodeId(mParams.GetRemoteNodeId().ValueOr(kUndefinedNodeId));
273-
}
274-
275-
chip::Platform::Delete(mPairingSessionHandle);
276-
mPairingSessionHandle = nullptr;
277-
}
278-
279187
CHIP_ERROR RendezvousSession::WaitForPairing(uint32_t setupPINCode)
280188
{
281-
UpdateState(State::kSecurePairing);
282189
return mPairingSession.WaitForPairing(setupPINCode, kSpake2p_Iteration_Count,
283190
reinterpret_cast<const unsigned char *>(kSpake2pKeyExchangeSalt),
284191
strlen(kSpake2pKeyExchangeSalt), mNextKeyId++, this);
285192
}
286193

287194
CHIP_ERROR RendezvousSession::WaitForPairing(const PASEVerifier & verifier)
288195
{
289-
UpdateState(State::kSecurePairing);
290196
return mPairingSession.WaitForPairing(verifier, mNextKeyId++, this);
291197
}
292198

@@ -295,21 +201,9 @@ CHIP_ERROR RendezvousSession::Pair(uint32_t setupPINCode)
295201
Messaging::ExchangeContext * ctxt = mExchangeManager->NewContext(SecureSessionHandle(), &mPairingSession);
296202
ReturnErrorCodeIf(ctxt == nullptr, CHIP_ERROR_INTERNAL);
297203

298-
UpdateState(State::kSecurePairing);
299204
CHIP_ERROR err = mPairingSession.Pair(mParams.GetPeerAddress(), setupPINCode, mNextKeyId++, ctxt, this);
300205
ctxt->Release();
301206
return err;
302207
}
303208

304-
void RendezvousSession::SendNetworkCredentials(const char * ssid, const char * passwd)
305-
{
306-
mNetworkProvision.SendNetworkCredentials(ssid, passwd);
307-
}
308-
309-
void RendezvousSession::SendThreadCredentials(ByteSpan threadData)
310-
{
311-
mNetworkProvision.SendThreadCredentials(threadData);
312-
}
313-
314-
void RendezvousSession::SendOperationalCredentials() {}
315209
} // namespace chip

src/protocols/secure_channel/RendezvousSession.h

+3-22
Original file line numberDiff line numberDiff line change
@@ -68,18 +68,10 @@ class SecureSessionHandle;
6868
*/
6969
class RendezvousSession : public SessionEstablishmentDelegate,
7070
public RendezvousSessionDelegate,
71-
public RendezvousDeviceCredentialsDelegate,
7271
public NetworkProvisioningDelegate,
7372
public TransportMgrDelegate
7473
{
7574
public:
76-
enum State : uint8_t
77-
{
78-
kInit = 0,
79-
kSecurePairing,
80-
kRendezvousComplete,
81-
};
82-
8375
RendezvousSession(RendezvousSessionDelegate * delegate) : mDelegate(delegate) {}
8476
~RendezvousSession() override;
8577

@@ -116,11 +108,6 @@ class RendezvousSession : public SessionEstablishmentDelegate,
116108
void OnRendezvousConnectionClosed() override;
117109
void OnRendezvousError(CHIP_ERROR err) override;
118110

119-
//////////// RendezvousDeviceCredentialsDelegate Implementation ///////////////
120-
void SendNetworkCredentials(const char * ssid, const char * passwd) override;
121-
void SendThreadCredentials(ByteSpan threadData) override;
122-
void SendOperationalCredentials() override;
123-
124111
//////////// NetworkProvisioningDelegate Implementation ///////////////
125112
void OnNetworkProvisioningError(CHIP_ERROR error) override;
126113
void OnNetworkProvisioningComplete() override;
@@ -148,25 +135,19 @@ class RendezvousSession : public SessionEstablishmentDelegate,
148135
CHIP_ERROR WaitForPairing(uint32_t setupPINCode);
149136
CHIP_ERROR WaitForPairing(const PASEVerifier & verifier);
150137

151-
Transport::Base * mTransport = nullptr; ///< Underlying transport
152138
RendezvousSessionDelegate * mDelegate = nullptr; ///< Underlying transport events
153139
RendezvousParameters mParams; ///< Rendezvous configuration
154140

155141
PASESession mPairingSession;
156142
NetworkProvisioning mNetworkProvision;
157143
Messaging::ExchangeManager * mExchangeManager = nullptr;
158144
TransportMgrBase * mTransportMgr;
159-
uint16_t mNextKeyId = 0;
160-
SecureSessionMgr * mSecureSessionMgr = nullptr;
161-
SecureSessionHandle * mPairingSessionHandle = nullptr;
145+
uint16_t mNextKeyId = 0;
146+
SecureSessionMgr * mSecureSessionMgr = nullptr;
162147

163148
Transport::AdminPairingInfo * mAdmin = nullptr;
164149

165-
RendezvousSession::State mCurrentState = State::kInit;
166-
void UpdateState(RendezvousSession::State newState, CHIP_ERROR err = CHIP_NO_ERROR);
167-
168-
void InitPairingSessionHandle();
169-
void ReleasePairingSessionHandle();
150+
void Cleanup();
170151
};
171152

172153
} // namespace chip

0 commit comments

Comments
 (0)