diff --git a/service_vm/test_apk/aidl/com/android/virt/vm_attestation/testservice/IAttestationService.aidl b/service_vm/test_apk/aidl/com/android/virt/vm_attestation/testservice/IAttestationService.aidl
index 18df572..b139d44 100644
--- a/service_vm/test_apk/aidl/com/android/virt/vm_attestation/testservice/IAttestationService.aidl
+++ b/service_vm/test_apk/aidl/com/android/virt/vm_attestation/testservice/IAttestationService.aidl
@@ -29,16 +29,16 @@
     @Backing(type="int")
     enum AttestationStatus {
         /** The remote attestation completes successfully. */
-        ATTESTATION_OK = 0,
+        OK = 0,
 
         /** The challenge size is not between 0 and 64. */
-        ATTESTATION_ERROR_INVALID_CHALLENGE = 1,
+        ERROR_INVALID_CHALLENGE = 1,
 
         /** Failed to attest the VM. Please retry at a later time. */
-        ATTESTATION_ERROR_ATTESTATION_FAILED = 2,
+        ERROR_ATTESTATION_FAILED = 2,
 
         /** Remote attestation is not supported in the current environment. */
-        ATTESTATION_ERROR_UNSUPPORTED = 3,
+        ERROR_UNSUPPORTED = 3,
     }
 
     /**
diff --git a/service_vm/test_apk/src/native/main.rs b/service_vm/test_apk/src/native/main.rs
index ff21bd8..00ddff8 100644
--- a/service_vm/test_apk/src/native/main.rs
+++ b/service_vm/test_apk/src/native/main.rs
@@ -113,7 +113,7 @@
         };
         let certificate_chain =
             res.certificate_chain().with_log().or_service_specific_exception(-1)?;
-        let status = AttestationStatus::ATTESTATION_OK;
+        let status = AttestationStatus::OK;
         let signature = res.sign(message).with_log().or_service_specific_exception(-1)?;
         Ok(SigningResult { certificateChain: certificate_chain, signature, status })
     }
@@ -126,16 +126,14 @@
 
 fn to_attestation_status(status: AVmAttestationStatus) -> AttestationStatus {
     match status {
-        AVmAttestationStatus::ATTESTATION_OK => AttestationStatus::ATTESTATION_OK,
+        AVmAttestationStatus::ATTESTATION_OK => AttestationStatus::OK,
         AVmAttestationStatus::ATTESTATION_ERROR_INVALID_CHALLENGE => {
-            AttestationStatus::ATTESTATION_ERROR_INVALID_CHALLENGE
+            AttestationStatus::ERROR_INVALID_CHALLENGE
         }
         AVmAttestationStatus::ATTESTATION_ERROR_ATTESTATION_FAILED => {
-            AttestationStatus::ATTESTATION_ERROR_ATTESTATION_FAILED
+            AttestationStatus::ERROR_ATTESTATION_FAILED
         }
-        AVmAttestationStatus::ATTESTATION_ERROR_UNSUPPORTED => {
-            AttestationStatus::ATTESTATION_ERROR_UNSUPPORTED
-        }
+        AVmAttestationStatus::ATTESTATION_ERROR_UNSUPPORTED => AttestationStatus::ERROR_UNSUPPORTED,
     }
 }
 
diff --git a/tests/testapk/src/java/com/android/microdroid/test/MicrodroidTests.java b/tests/testapk/src/java/com/android/microdroid/test/MicrodroidTests.java
index 1195cd3..8f4df63 100644
--- a/tests/testapk/src/java/com/android/microdroid/test/MicrodroidTests.java
+++ b/tests/testapk/src/java/com/android/microdroid/test/MicrodroidTests.java
@@ -240,7 +240,7 @@
                 runVmAttestationService(TAG, vm, challenge, VM_ATTESTATION_MESSAGE.getBytes());
 
         // Assert.
-        assertThat(signingResult.status).isEqualTo(AttestationStatus.ATTESTATION_ERROR_UNSUPPORTED);
+        assertThat(signingResult.status).isEqualTo(AttestationStatus.ERROR_UNSUPPORTED);
     }
 
     @Test
@@ -267,7 +267,7 @@
                 runVmAttestationService(
                         TAG, vm, invalidChallenge, VM_ATTESTATION_MESSAGE.getBytes());
         assertThat(signingResultInvalidChallenge.status)
-                .isEqualTo(AttestationStatus.ATTESTATION_ERROR_INVALID_CHALLENGE);
+                .isEqualTo(AttestationStatus.ERROR_INVALID_CHALLENGE);
 
         // Check with a valid challenge.
         byte[] challenge = new byte[32];
@@ -277,10 +277,8 @@
         assertWithMessage(
                         "VM attestation should either succeed or fail when the network is unstable")
                 .that(signingResult.status)
-                .isAnyOf(
-                        AttestationStatus.ATTESTATION_OK,
-                        AttestationStatus.ATTESTATION_ERROR_ATTESTATION_FAILED);
-        if (signingResult.status == AttestationStatus.ATTESTATION_OK) {
+                .isAnyOf(AttestationStatus.OK, AttestationStatus.ERROR_ATTESTATION_FAILED);
+        if (signingResult.status == AttestationStatus.OK) {
             X509Certificate[] certs =
                     X509Utils.validateAndParseX509CertChain(signingResult.certificateChain);
             X509Utils.verifyAvfRelatedCerts(certs, challenge, TEST_APP_PACKAGE_NAME);
