diff --git a/core/fpdfapi/edit/cpdf_creator.cpp b/core/fpdfapi/edit/cpdf_creator.cpp
index 3915c1b..c815f8f 100644
--- a/core/fpdfapi/edit/cpdf_creator.cpp
+++ b/core/fpdfapi/edit/cpdf_creator.cpp
@@ -620,7 +620,7 @@
     if (m_pEncryptDict->GetStringFor("Filter") == "Standard") {
       m_pNewEncryptDict = ToDictionary(m_pEncryptDict->Clone());
       m_pEncryptDict = m_pNewEncryptDict.get();
-      m_pSecurityHandler = pdfium::MakeUnique<CPDF_SecurityHandler>();
+      m_pSecurityHandler = pdfium::MakeRetain<CPDF_SecurityHandler>();
       m_pSecurityHandler->OnCreate(m_pNewEncryptDict.get(), m_pIDArray.get(),
                                    m_pParser->GetPassword());
       m_bSecurityChanged = true;
diff --git a/core/fpdfapi/edit/cpdf_creator.h b/core/fpdfapi/edit/cpdf_creator.h
index ef81805..64b2e4d 100644
--- a/core/fpdfapi/edit/cpdf_creator.h
+++ b/core/fpdfapi/edit/cpdf_creator.h
@@ -12,7 +12,6 @@
 #include <vector>
 
 #include "core/fxcrt/fx_stream.h"
-#include "core/fxcrt/maybe_owned.h"
 #include "core/fxcrt/retain_ptr.h"
 #include "core/fxcrt/unowned_ptr.h"
 
@@ -77,7 +76,7 @@
   UnownedPtr<const CPDF_Parser> const m_pParser;
   UnownedPtr<const CPDF_Dictionary> m_pEncryptDict;
   std::unique_ptr<CPDF_Dictionary> m_pNewEncryptDict;
-  fxcrt::MaybeOwned<CPDF_SecurityHandler> m_pSecurityHandler;
+  RetainPtr<CPDF_SecurityHandler> m_pSecurityHandler;
   UnownedPtr<const CPDF_Object> m_pMetadata;
   uint32_t m_dwLastObjNum;
   std::unique_ptr<IFX_ArchiveStream> m_Archive;
diff --git a/core/fpdfapi/parser/cpdf_parser.cpp b/core/fpdfapi/parser/cpdf_parser.cpp
index 02cb08e..2a7852c 100644
--- a/core/fpdfapi/parser/cpdf_parser.cpp
+++ b/core/fpdfapi/parser/cpdf_parser.cpp
@@ -251,8 +251,7 @@
   if (pEncryptDict->GetStringFor("Filter") != "Standard")
     return HANDLER_ERROR;
 
-  std::unique_ptr<CPDF_SecurityHandler> pSecurityHandler =
-      pdfium::MakeUnique<CPDF_SecurityHandler>();
+  auto pSecurityHandler = pdfium::MakeRetain<CPDF_SecurityHandler>();
   if (!pSecurityHandler->OnInit(pEncryptDict, GetIDArray(), m_Password))
     return PASSWORD_ERROR;
 
@@ -261,7 +260,7 @@
 }
 
 void CPDF_Parser::ReleaseEncryptHandler() {
-  m_pSecurityHandler.reset();
+  m_pSecurityHandler.Reset();
 }
 
 // Ideally, all the cross reference entries should be verified.
diff --git a/core/fpdfapi/parser/cpdf_parser.h b/core/fpdfapi/parser/cpdf_parser.h
index 74b6717..b7b63e4 100644
--- a/core/fpdfapi/parser/cpdf_parser.h
+++ b/core/fpdfapi/parser/cpdf_parser.h
@@ -90,8 +90,8 @@
   FX_FILESIZE GetObjectPositionOrZero(uint32_t objnum) const;
   uint16_t GetObjectGenNum(uint32_t objnum) const;
   bool IsObjectFreeOrNull(uint32_t objnum) const;
-  CPDF_SecurityHandler* GetSecurityHandler() const {
-    return m_pSecurityHandler.get();
+  const RetainPtr<CPDF_SecurityHandler>& GetSecurityHandler() const {
+    return m_pSecurityHandler;
   }
   bool IsObjectFree(uint32_t objnum) const;
 
@@ -183,7 +183,7 @@
   // ownership of the ID array data.
   std::unique_ptr<CPDF_CrossRefTable> m_CrossRefTable;
   FX_FILESIZE m_LastXRefOffset;
-  std::unique_ptr<CPDF_SecurityHandler> m_pSecurityHandler;
+  RetainPtr<CPDF_SecurityHandler> m_pSecurityHandler;
   ByteString m_Password;
   std::unique_ptr<CPDF_LinearizedHeader> m_pLinearized;
 
diff --git a/core/fpdfapi/parser/cpdf_security_handler.h b/core/fpdfapi/parser/cpdf_security_handler.h
index 8dcf009..cbb8b15 100644
--- a/core/fpdfapi/parser/cpdf_security_handler.h
+++ b/core/fpdfapi/parser/cpdf_security_handler.h
@@ -11,6 +11,7 @@
 
 #include "core/fxcrt/fx_string.h"
 #include "core/fxcrt/fx_system.h"
+#include "core/fxcrt/retain_ptr.h"
 
 #define FXCIPHER_NONE 0
 #define FXCIPHER_RC4 1
@@ -22,10 +23,10 @@
 class CPDF_Dictionary;
 class CPDF_Parser;
 
-class CPDF_SecurityHandler {
+class CPDF_SecurityHandler : public Retainable {
  public:
-  CPDF_SecurityHandler();
-  ~CPDF_SecurityHandler();
+  template <typename T, typename... Args>
+  friend RetainPtr<T> pdfium::MakeRetain(Args&&... args);
 
   bool OnInit(const CPDF_Dictionary* pEncryptDict,
               const CPDF_Array* pIdArray,
@@ -46,6 +47,9 @@
   }
 
  private:
+  CPDF_SecurityHandler();
+  ~CPDF_SecurityHandler() override;
+
   bool LoadDict(const CPDF_Dictionary* pEncryptDict);
   bool LoadDict(const CPDF_Dictionary* pEncryptDict,
                 int& cipher,
