[key-manager] only start guard timer on switch to next key index (#4296)

This commit is contained in:
Rongli Sun
2019-11-04 00:04:39 -08:00
committed by Jonathan Hui
parent 16c01d58c0
commit cde2b1ce4f
+9 -10
View File
@@ -162,11 +162,16 @@ void KeyManager::SetCurrentKeySequence(uint32_t aKeySequence)
{
VerifyOrExit(aKeySequence != mKeySequence, Get<Notifier>().SignalIfFirst(OT_CHANGED_THREAD_KEY_SEQUENCE_COUNTER));
// Check if the guard timer has expired if key rotation is requested.
if ((aKeySequence == (mKeySequence + 1)) && (mKeySwitchGuardTime != 0) && mKeyRotationTimer.IsRunning() &&
mKeySwitchGuardEnabled)
if ((aKeySequence == (mKeySequence + 1)) && mKeyRotationTimer.IsRunning())
{
VerifyOrExit(mHoursSinceKeyRotation >= mKeySwitchGuardTime);
if (mKeySwitchGuardEnabled)
{
// Check if the guard timer has expired if key rotation is requested.
VerifyOrExit(mHoursSinceKeyRotation >= mKeySwitchGuardTime);
StartKeyRotationTimer();
}
mKeySwitchGuardEnabled = true;
}
mKeySequence = aKeySequence;
@@ -175,12 +180,6 @@ void KeyManager::SetCurrentKeySequence(uint32_t aKeySequence)
mMacFrameCounter = 0;
mMleFrameCounter = 0;
if (mKeyRotationTimer.IsRunning())
{
mKeySwitchGuardEnabled = true;
StartKeyRotationTimer();
}
Get<Notifier>().Signal(OT_CHANGED_THREAD_KEY_SEQUENCE_COUNTER);
exit: