diff --git a/include/cryptsetupInterface.hpp b/include/cryptsetupInterface.hpp
index 9e26da9..25c69d0 100644
--- a/include/cryptsetupInterface.hpp
+++ b/include/cryptsetupInterface.hpp
@@ -154,27 +154,32 @@
   public:
     /** @brief Constructor for CryptHandle
      *
-     *  @param[out] cd - pointer to crypt_device*, to be allocated
      *  @param[in] device - path to device file
      */
-    CryptHandle(struct crypt_device** cd, const char* device) :
-        handle(init(cd, device))
+    explicit CryptHandle(const char* device) : handle(init(device))
     {}
 
+    /** @brief Get a pointer to the crypt_device struct. */
+    struct crypt_device* get()
+    {
+        return *handle;
+    }
+
+  private:
     /** @brief Allocate and initialize the crypt_device struct
      *
-     *  @param[out] cd - pointer to crypt_device*, to be allocated
      *  @param[in] device - path to device file
      */
-    struct crypt_device* init(struct crypt_device** cd, const char* device)
+    struct crypt_device* init(const char* device)
     {
-        int retval = crypt_init(cd, device);
+        struct crypt_device* cryptDev;
+        int retval = crypt_init(&cryptDev, device);
         if (retval < 0)
         {
             return nullptr;
         }
 
-        return *cd;
+        return cryptDev;
     }
 
     /** @brief Free the crypt_device struct
diff --git a/src/estoraged.cpp b/src/estoraged.cpp
index 4e64ca6..18e4248 100644
--- a/src/estoraged.cpp
+++ b/src/estoraged.cpp
@@ -29,17 +29,16 @@
     std::string msg = "OpenBMC.0.1.DriveFormat";
     lg2::info("Starting format", "REDFISH_MESSAGE_ID", msg);
 
-    struct crypt_device* cryptDev;
-    CryptHandle cryptHandle(&cryptDev, devPath.c_str());
-    if (*cryptHandle.handle == nullptr)
+    CryptHandle cryptHandle(devPath.c_str());
+    if (cryptHandle.get() == nullptr)
     {
         lg2::error("Failed to initialize crypt device", "REDFISH_MESSAGE_ID",
                    std::string("OpenBMC.0.1.FormatFail"));
         throw EncryptionError();
     }
 
-    formatLuksDev(cryptDev, password);
-    activateLuksDev(cryptDev, password);
+    formatLuksDev(cryptHandle.get(), password);
+    activateLuksDev(cryptHandle.get(), password);
 
     createFilesystem();
     mountFilesystem();
@@ -104,16 +103,15 @@
     std::string msg = "OpenBMC.0.1.DriveUnlock";
     lg2::info("Starting unlock", "REDFISH_MESSAGE_ID", msg);
 
-    struct crypt_device* cryptDev;
-    CryptHandle cryptHandle(&cryptDev, devPath.c_str());
-    if (*cryptHandle.handle == nullptr)
+    CryptHandle cryptHandle(devPath.c_str());
+    if (cryptHandle.get() == nullptr)
     {
         lg2::error("Failed to initialize crypt device", "REDFISH_MESSAGE_ID",
                    std::string("OpenBMC.0.1.UnlockFail"));
         throw EncryptionError();
     }
 
-    activateLuksDev(cryptDev, password);
+    activateLuksDev(cryptHandle.get(), password);
     mountFilesystem();
 }
 
