diff --git a/zircon/system/utest/crypto/BUILD.gn b/zircon/system/ulib/crypto/test/BUILD.gn
similarity index 87%
rename from zircon/system/utest/crypto/BUILD.gn
rename to zircon/system/ulib/crypto/test/BUILD.gn
index bea76c0cfd70b55878782914e3853e1d78506582..464a8389d0d9cf2e6039c94a9fa321117fff24d3 100644
--- a/zircon/system/utest/crypto/BUILD.gn
+++ b/zircon/system/ulib/crypto/test/BUILD.gn
@@ -2,6 +2,13 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+group("test") {
+  testonly = true
+  deps = [
+    ":crypto",
+  ]
+}
+
 test("crypto") {
   sources = [
     "aead.cpp",
diff --git a/zircon/system/utest/crypto/aead.cpp b/zircon/system/ulib/crypto/test/aead.cpp
similarity index 100%
rename from zircon/system/utest/crypto/aead.cpp
rename to zircon/system/ulib/crypto/test/aead.cpp
diff --git a/zircon/system/utest/crypto/bytes.cpp b/zircon/system/ulib/crypto/test/bytes.cpp
similarity index 100%
rename from zircon/system/utest/crypto/bytes.cpp
rename to zircon/system/ulib/crypto/test/bytes.cpp
diff --git a/zircon/system/utest/crypto/cipher.cpp b/zircon/system/ulib/crypto/test/cipher.cpp
similarity index 100%
rename from zircon/system/utest/crypto/cipher.cpp
rename to zircon/system/ulib/crypto/test/cipher.cpp
diff --git a/zircon/system/utest/crypto/hkdf.cpp b/zircon/system/ulib/crypto/test/hkdf.cpp
similarity index 100%
rename from zircon/system/utest/crypto/hkdf.cpp
rename to zircon/system/ulib/crypto/test/hkdf.cpp
diff --git a/zircon/system/utest/crypto/hmac.cpp b/zircon/system/ulib/crypto/test/hmac.cpp
similarity index 100%
rename from zircon/system/utest/crypto/hmac.cpp
rename to zircon/system/ulib/crypto/test/hmac.cpp
diff --git a/zircon/system/utest/crypto/secret.cpp b/zircon/system/ulib/crypto/test/secret.cpp
similarity index 100%
rename from zircon/system/utest/crypto/secret.cpp
rename to zircon/system/ulib/crypto/test/secret.cpp
diff --git a/zircon/system/utest/crypto/utils.cpp b/zircon/system/ulib/crypto/test/utils.cpp
similarity index 100%
rename from zircon/system/utest/crypto/utils.cpp
rename to zircon/system/ulib/crypto/test/utils.cpp
diff --git a/zircon/system/utest/crypto/utils.h b/zircon/system/ulib/crypto/test/utils.h
similarity index 100%
rename from zircon/system/utest/crypto/utils.h
rename to zircon/system/ulib/crypto/test/utils.h
diff --git a/zircon/system/utest/BUILD.gn b/zircon/system/utest/BUILD.gn
index d64f70d26737fed43721e321da5f8fac1c9c8ec3..5bef23e95b59d8f2f25066426345a1bc83258149 100644
--- a/zircon/system/utest/BUILD.gn
+++ b/zircon/system/utest/BUILD.gn
@@ -65,6 +65,7 @@ if (current_cpu != "") {
       "$zx/system/ulib/blobfs/test",
       "$zx/system/ulib/bootfs:bootfs-test",
       "$zx/system/ulib/c:tests",
+      "$zx/system/ulib/crypto/test",
       "$zx/system/ulib/cobalt-client/test",
       "$zx/system/ulib/ddk:ddk-unittest",
       "$zx/system/ulib/digest/test",
@@ -102,7 +103,6 @@ if (current_cpu != "") {
       "compiler",
       "core",
       "cprng",
-      "crypto",
       "ctor",
       "debugger",
       "devfs",
diff --git a/zircon/system/utest/zxcrypt/BUILD.gn b/zircon/system/utest/zxcrypt/BUILD.gn
index 38674e1488702ea126c2cfd777e29383c65fdca4..5b9d8fa16598811228abd2d5c44d9d223eb9dc1c 100644
--- a/zircon/system/utest/zxcrypt/BUILD.gn
+++ b/zircon/system/utest/zxcrypt/BUILD.gn
@@ -10,9 +10,9 @@ test("zxcrypt") {
     "zxcrypt.cpp",
   ]
 
-  # This code does #include "crypto/foo.h" to reuse headers from
-  # $zx/system/utest/crypto.
-  include_dirs = [ "$zx/system/utest" ]
+  # This code does #include "crypto/test/foo.h" to reuse headers from
+  # $zx/system/ulib/crypto/test.
+  include_dirs = [ "$zx/system/ulib" ]
 
   deps = [
     "$zx/system/fidl/fuchsia-device:c",
diff --git a/zircon/system/utest/zxcrypt/test-device.h b/zircon/system/utest/zxcrypt/test-device.h
index 4fcbedead085c3bbc2cd1b6af23500c710b302c8..4cdb9a7462f82fc118d2e741e3db876d715a0388 100644
--- a/zircon/system/utest/zxcrypt/test-device.h
+++ b/zircon/system/utest/zxcrypt/test-device.h
@@ -24,7 +24,7 @@
 #include <zircon/types.h>
 #include <zxcrypt/fdio-volume.h>
 
-#include "crypto/utils.h"
+#include "crypto/test/utils.h"
 
 #define DEFINE_EACH_DEVICE(Test)                                                                   \
     bool Test##Raw(Volume::Version version) { return Test(version, false /* not FVM */); }         \