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 6d20e13f5d..bcef76c66d 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 99fa7c94ae..4e812fbfcb 100644 --- a/thread/service/java/com/android/server/thread/ThreadNetworkControllerService.java +++ b/thread/service/java/com/android/server/thread/ThreadNetworkControllerService.java @@ -1785,7 +1785,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 } @@ -1798,7 +1798,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 07438e9a9c..d9ce9e14b0 100644 --- a/thread/tests/cts/src/android/net/thread/cts/ThreadNetworkControllerTest.java +++ b/thread/tests/cts/src/android/net/thread/cts/ThreadNetworkControllerTest.java @@ -1043,7 +1043,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(); }