diff --git a/src/erase/meson.build b/src/erase/meson.build
index 7dbd727..2265c1a 100644
--- a/src/erase/meson.build
+++ b/src/erase/meson.build
@@ -3,6 +3,7 @@
   'verifyDriveGeometry.cpp',
   'pattern.cpp',
   'erase.cpp',
+  'zero.cpp',
   include_directories : eStoraged_headers,
   implicit_include_directories: false,
   dependencies: [
diff --git a/src/erase/zero.cpp b/src/erase/zero.cpp
new file mode 100644
index 0000000..accb8c8
--- /dev/null
+++ b/src/erase/zero.cpp
@@ -0,0 +1,78 @@
+#include "zero.hpp"
+
+#include "erase.hpp"
+
+#include <phosphor-logging/lg2.hpp>
+#include <stdplus/fd/create.hpp>
+#include <stdplus/fd/managed.hpp>
+#include <xyz/openbmc_project/Common/error.hpp>
+
+#include <array>
+#include <span>
+
+namespace estoraged
+{
+
+using sdbusplus::xyz::openbmc_project::Common::Error::InternalFailure;
+using stdplus::fd::ManagedFd;
+
+void Zero::writeZero(const uint64_t driveSize, ManagedFd& fd)
+{
+
+    uint64_t currentIndex = 0;
+    const std::array<const std::byte, blockSize> blockOfZeros{};
+
+    while (currentIndex < driveSize)
+    {
+        uint32_t writeSize = currentIndex + blockSize < driveSize
+                                 ? blockSize
+                                 : driveSize - currentIndex;
+        try
+        {
+            fd.write({blockOfZeros.data(), writeSize});
+        }
+        catch (...)
+        {
+            lg2::error("Estoraged erase zeros unable to write size",
+                       "REDFISH_MESSAGE_ID",
+                       std::string("eStorageD.1.0.EraseFailure"));
+            throw InternalFailure();
+        }
+        currentIndex += writeSize;
+    }
+}
+
+void Zero::verifyZero(uint64_t driveSize, ManagedFd& fd)
+{
+    uint64_t currentIndex = 0;
+    std::array<std::byte, blockSize> readArr;
+    const std::array<const std::byte, blockSize> blockOfZeros{};
+
+    while (currentIndex < driveSize)
+    {
+        uint32_t readSize = currentIndex + blockSize < driveSize
+                                ? blockSize
+                                : driveSize - currentIndex;
+        try
+        {
+            fd.read({readArr.data(), readSize});
+        }
+        catch (...)
+        {
+            lg2::error("Estoraged erase zeros block unable to read size",
+                       "REDFISH_MESSAGE_ID",
+                       std::string("eStorageD.1.0.EraseFailure"));
+            throw InternalFailure();
+        }
+        if (memcmp(readArr.data(), blockOfZeros.data(), readSize))
+        {
+            lg2::error("Estoraged erase zeros block is not zero",
+                       "REDFISH_MESSAGE_ID",
+                       std::string("eStorageD.1.0.EraseFailure"));
+            throw InternalFailure();
+        }
+        currentIndex += readSize;
+    }
+}
+
+} // namespace estoraged
