diff --git a/core/api/current.txt b/core/api/current.txt
index e003624..4d93e15 100644
--- a/core/api/current.txt
+++ b/core/api/current.txt
@@ -39351,10 +39351,10 @@
   }
 
   public final class FileIntegrityManager {
-    method @FlaggedApi(Flags.FLAG_FSVERITY_API) @Nullable public byte[] getFsverityDigest(@NonNull java.io.File) throws java.io.IOException;
+    method @FlaggedApi(Flags.FLAG_FSVERITY_API) @Nullable public byte[] getFsVerityDigest(@NonNull java.io.File) throws java.io.IOException;
     method public boolean isApkVeritySupported();
     method @RequiresPermission(anyOf={android.Manifest.permission.INSTALL_PACKAGES, android.Manifest.permission.REQUEST_INSTALL_PACKAGES}) public boolean isAppSourceCertificateTrusted(@NonNull java.security.cert.X509Certificate) throws java.security.cert.CertificateEncodingException;
-    method @FlaggedApi(Flags.FLAG_FSVERITY_API) public void setupFsverity(@NonNull java.io.File) throws java.io.IOException;
+    method @FlaggedApi(Flags.FLAG_FSVERITY_API) public void setupFsVerity(@NonNull java.io.File) throws java.io.IOException;
   }
 
   public final class KeyChain {
diff --git a/core/java/android/security/FileIntegrityManager.java b/core/java/android/security/FileIntegrityManager.java
index 7869404..132700d 100644
--- a/core/java/android/security/FileIntegrityManager.java
+++ b/core/java/android/security/FileIntegrityManager.java
@@ -78,7 +78,7 @@
      * as a separate file and stored next to the targeting file in the filesystem. The public key of
      * the signer (normally the same app developer) can be put in the APK, and the app can use the
      * public key to verify the signature to the file's actual fs-verity digest (from {@link
-     * #getFsverityDigest}) before using the file. The exact format is not prescribed by the
+     * #getFsVerityDigest}) before using the file. The exact format is not prescribed by the
      * framework. App developers may choose to use common practices like JCA for the signing and
      * verification, or their own preferred approach.
      *
@@ -87,7 +87,7 @@
      * @see <a href="https://www.kernel.org/doc/html/next/filesystems/fsverity.html">Kernel doc</a>
      */
     @FlaggedApi(Flags.FLAG_FSVERITY_API)
-    public void setupFsverity(@NonNull File file) throws IOException {
+    public void setupFsVerity(@NonNull File file) throws IOException {
         if (!file.isAbsolute()) {
             throw new IllegalArgumentException("Expect an absolute path");
         }
@@ -104,7 +104,7 @@
             int errno = mService.setupFsverity(authToken, file.getPath(),
                     mContext.getPackageName());
             if (errno != 0) {
-                new ErrnoException("setupFsverity", errno).rethrowAsIOException();
+                new ErrnoException("setupFsVerity", errno).rethrowAsIOException();
             }
         } catch (RemoteException e) {
             throw e.rethrowFromSystemServer();
@@ -120,7 +120,7 @@
      * @see <a href="https://www.kernel.org/doc/html/next/filesystems/fsverity.html">Kernel doc</a>
      */
     @FlaggedApi(Flags.FLAG_FSVERITY_API)
-    public @Nullable byte[] getFsverityDigest(@NonNull File file) throws IOException {
+    public @Nullable byte[] getFsVerityDigest(@NonNull File file) throws IOException {
         return VerityUtils.getFsverityDigest(file.getPath());
     }
 
