From fe0fb3081e5c24f79229af354bf3e7f86bef6a1b Mon Sep 17 00:00:00 2001 From: Yang Sun Date: Sun, 29 Sep 2024 04:07:02 +0000 Subject: [PATCH] Change OtDaemonState ephemeralKeyExpiryMillis to ephemeralKeyLifetimeMillis Bug: 372598146 Test: atest CtsThreadNetworkTestCases Change-Id: I634ca0c22b5d80411df2b53493659c27ea07d2f2 --- .../framework/java/android/net/thread/IStateCallback.aidl | 2 +- .../java/android/net/thread/ThreadNetworkController.java | 6 ++++-- .../server/thread/ThreadNetworkControllerService.java | 4 ++-- .../android/net/thread/cts/ThreadNetworkControllerTest.java | 4 +++- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/thread/framework/java/android/net/thread/IStateCallback.aidl b/thread/framework/java/android/net/thread/IStateCallback.aidl index 57c365b554..d074b01ecd 100644 --- a/thread/framework/java/android/net/thread/IStateCallback.aidl +++ b/thread/framework/java/android/net/thread/IStateCallback.aidl @@ -24,5 +24,5 @@ oneway interface IStateCallback { void onPartitionIdChanged(long partitionId); void onThreadEnableStateChanged(int enabledState); void onEphemeralKeyStateChanged( - int ephemeralKeyState, @nullable String ephemeralKey, long expiryMillis); + int ephemeralKeyState, @nullable String ephemeralKey, long lifetimeMillis); } diff --git a/thread/framework/java/android/net/thread/ThreadNetworkController.java b/thread/framework/java/android/net/thread/ThreadNetworkController.java index f716f9864d..f82d211868 100644 --- a/thread/framework/java/android/net/thread/ThreadNetworkController.java +++ b/thread/framework/java/android/net/thread/ThreadNetworkController.java @@ -420,7 +420,9 @@ public final class ThreadNetworkController { @Override public void onEphemeralKeyStateChanged( - @EphemeralKeyState int ephemeralKeyState, String ephemeralKey, long expiryMillis) { + @EphemeralKeyState int ephemeralKeyState, + String ephemeralKey, + long lifetimeMillis) { if (!Flags.epskcEnabled()) { throw new IllegalStateException( "This should not be called when Ephemeral key API is disabled"); @@ -430,7 +432,7 @@ public final class ThreadNetworkController { final Instant expiry = ephemeralKeyState == EPHEMERAL_KEY_DISABLED ? null - : Instant.ofEpochMilli(expiryMillis); + : Instant.now().plusMillis(lifetimeMillis); try { mExecutor.execute( diff --git a/thread/service/java/com/android/server/thread/ThreadNetworkControllerService.java b/thread/service/java/com/android/server/thread/ThreadNetworkControllerService.java index 3d854d7963..dbcea783f1 100644 --- a/thread/service/java/com/android/server/thread/ThreadNetworkControllerService.java +++ b/thread/service/java/com/android/server/thread/ThreadNetworkControllerService.java @@ -1787,7 +1787,7 @@ final class ThreadNetworkControllerService extends IThreadNetworkController.Stub .onEphemeralKeyStateChanged( newState.ephemeralKeyState, passcode, - newState.ephemeralKeyExpiryMillis); + newState.ephemeralKeyLifetimeMillis); } catch (RemoteException ignored) { // do nothing if the client is dead } @@ -1800,7 +1800,7 @@ final class ThreadNetworkControllerService extends IThreadNetworkController.Stub if (oldState.ephemeralKeyState != newState.ephemeralKeyState) return true; if (oldState.ephemeralKeyState == EPHEMERAL_KEY_DISABLED) return false; return (!Objects.equals(oldState.ephemeralKeyPasscode, newState.ephemeralKeyPasscode) - || oldState.ephemeralKeyExpiryMillis != newState.ephemeralKeyExpiryMillis); + || oldState.ephemeralKeyLifetimeMillis != newState.ephemeralKeyLifetimeMillis); } private void onActiveOperationalDatasetChanged( diff --git a/thread/tests/cts/src/android/net/thread/cts/ThreadNetworkControllerTest.java b/thread/tests/cts/src/android/net/thread/cts/ThreadNetworkControllerTest.java index 1792bfb37a..1074609070 100644 --- a/thread/tests/cts/src/android/net/thread/cts/ThreadNetworkControllerTest.java +++ b/thread/tests/cts/src/android/net/thread/cts/ThreadNetworkControllerTest.java @@ -1042,7 +1042,9 @@ public class ThreadNetworkControllerTest { listener2.expectThreadEphemeralKeyMode(EPHEMERAL_KEY_ENABLED); assertThat(epskc2.getSecond()).isEqualTo(epskc1.getSecond()); - assertThat(epskc2.getThird()).isEqualTo(epskc1.getThird()); + // allow time precision loss of a second since the value is passed via IPC + assertThat(epskc2.getThird()).isGreaterThan(epskc1.getThird().minusSeconds(1)); + assertThat(epskc2.getThird()).isLessThan(epskc1.getThird().plusSeconds(1)); } finally { listener2.unregisterStateCallback(); }