Convert raw pointer members to references.

This is now allowed by the style guide. The benefit is to lock down
reassignment and make nullability clearer.

Test: launch_cvd
Change-Id: I180e5d8ff471306eb63fdae1004b3d329468918a
diff --git a/host/commands/secure_env/encrypted_serializable.cpp b/host/commands/secure_env/encrypted_serializable.cpp
index d18ee97..3845212 100644
--- a/host/commands/secure_env/encrypted_serializable.cpp
+++ b/host/commands/secure_env/encrypted_serializable.cpp
@@ -24,22 +24,22 @@
 #include "host/commands/secure_env/tpm_serialize.h"
 
 EncryptedSerializable::EncryptedSerializable(
-    TpmResourceManager* resource_manager,
-    std::function<TpmObjectSlot(TpmResourceManager*)> parent_key_fn,
-    Serializable* wrapped) :
+    TpmResourceManager& resource_manager,
+    std::function<TpmObjectSlot(TpmResourceManager&)> parent_key_fn,
+    Serializable& wrapped) :
     resource_manager_(resource_manager),
     parent_key_fn_(parent_key_fn),
     wrapped_(wrapped) {
 }
 
 static bool CreateKey(
-    TpmResourceManager* resource_manager, // in
+    TpmResourceManager& resource_manager, // in
     ESYS_TR parent_key, // in
     TPM2B_PUBLIC* key_public_out, // out
     TPM2B_PRIVATE* key_private_out, // out
     TpmObjectSlot* key_slot_out) { // out
   TPM2B_AUTH authValue = {};
-  auto rc = Esys_TR_SetAuth(resource_manager->Esys(), parent_key, &authValue);
+  auto rc = Esys_TR_SetAuth(resource_manager.Esys(), parent_key, &authValue);
   if (rc != TSS2_RC_SUCCESS) {
     LOG(ERROR) << "Esys_TR_SetAuth failed with return code " << rc
                << " (" << Tss2_RC_Decode(rc) << ")";
@@ -76,7 +76,7 @@
 
   TPM2B_SENSITIVE_CREATE in_sensitive = {};
 
-  auto key_slot = resource_manager->ReserveSlot();
+  auto key_slot = resource_manager.ReserveSlot();
   if (!key_slot) {
     LOG(ERROR) << "No slots available";
     return false;
@@ -87,7 +87,7 @@
   TPM2B_PRIVATE* key_private = nullptr;
   // TODO(schuffelen): Use Esys_Create when key_slot is NULL
   rc = Esys_CreateLoaded(
-    /* esysContext */ resource_manager->Esys(),
+    /* esysContext */ resource_manager.Esys(),
     /* primaryHandle */ parent_key,
     /* shandle1 */ ESYS_TR_PASSWORD,
     /* shandle2 */ ESYS_TR_NONE,
@@ -110,7 +110,7 @@
   Esys_Free(key_public);
   Esys_Free(key_private);
   if (key_slot_out) {
-    rc = Esys_TR_SetAuth(resource_manager->Esys(), raw_handle, &authValue);
+    rc = Esys_TR_SetAuth(resource_manager.Esys(), raw_handle, &authValue);
     if (rc != TSS2_RC_SUCCESS) {
       LOG(ERROR) << "Esys_TR_SetAuth failed with return code " << rc
                 << " (" << Tss2_RC_Decode(rc) << ")";
@@ -124,19 +124,19 @@
 }
 
 static TpmObjectSlot LoadKey(
-    TpmResourceManager* resource_manager,
+    TpmResourceManager& resource_manager,
     ESYS_TR parent_key,
     const TPM2B_PUBLIC* key_public,
     const TPM2B_PRIVATE* key_private) {
   // TODO
   ESYS_TR raw_handle;
-  auto key_slot = resource_manager->ReserveSlot();
+  auto key_slot = resource_manager.ReserveSlot();
   if (!key_slot) {
     LOG(ERROR) << "No slots available";
     return {};
   }
   auto rc = Esys_Load(
-      resource_manager->Esys(),
+      resource_manager.Esys(),
       parent_key,
       ESYS_TR_PASSWORD,
       ESYS_TR_NONE,
@@ -171,7 +171,7 @@
   // Assumes all created keys will have the same size.
   SerializeTpmKeyPublic serialize_public(&key_public);
   SerializeTpmKeyPrivate serialize_private(&key_private);
-  auto encrypted_size = RoundUpToBlockSize(wrapped_->SerializedSize());
+  auto encrypted_size = RoundUpToBlockSize(wrapped_.SerializedSize());
   return serialize_public.SerializedSize()
     + serialize_private.SerializedSize()
     + sizeof(uint32_t)
@@ -195,19 +195,19 @@
     return buf;
   }
 
-  auto wrapped_size = wrapped_->SerializedSize();
+  auto wrapped_size = wrapped_.SerializedSize();
   auto encrypted_size = RoundUpToBlockSize(wrapped_size);
   std::vector<uint8_t> unencrypted(encrypted_size + 1, 0);
   auto unencrypted_buf = unencrypted.data();
   auto unencrypted_buf_end = unencrypted_buf + unencrypted.size();
-  auto next_buf = wrapped_->Serialize(unencrypted_buf, unencrypted_buf_end);
+  auto next_buf = wrapped_.Serialize(unencrypted_buf, unencrypted_buf_end);
   if (next_buf - unencrypted_buf != wrapped_size) {
     LOG(ERROR) << "Size mismatch on wrapped data";
     return buf;
   }
   std::vector<uint8_t> encrypted(encrypted_size, 0);
   if (!TpmEncrypt(
-      resource_manager_->Esys(),
+      resource_manager_.Esys(),
       key_slot->get(),
       TpmAuth(ESYS_TR_PASSWORD),
       unencrypted.data(),
@@ -276,7 +276,7 @@
   }
   std::vector<uint8_t> decrypted_data(encrypted_size, 0);
   if (!TpmDecrypt(
-      resource_manager_->Esys(),
+      resource_manager_.Esys(),
       key_slot->get(),
       TpmAuth(ESYS_TR_PASSWORD),
       encrypted_data.data(),
@@ -287,7 +287,7 @@
   }
   auto decrypted_buf = decrypted_data.data();
   auto decrypted_buf_end = decrypted_data.data() + wrapped_size;
-  if (!wrapped_->Deserialize(
+  if (!wrapped_.Deserialize(
       const_cast<const uint8_t **>(&decrypted_buf), decrypted_buf_end)) {
     LOG(ERROR) << "Failed to deserialize wrapped type";
     return false;
diff --git a/host/commands/secure_env/encrypted_serializable.h b/host/commands/secure_env/encrypted_serializable.h
index 14c28d5..c4a2e08 100644
--- a/host/commands/secure_env/encrypted_serializable.h
+++ b/host/commands/secure_env/encrypted_serializable.h
@@ -45,15 +45,15 @@
  */
 class EncryptedSerializable : public keymaster::Serializable {
 public:
-  EncryptedSerializable(TpmResourceManager*,
-                        std::function<TpmObjectSlot(TpmResourceManager*)>,
-                        Serializable*);
+  EncryptedSerializable(TpmResourceManager&,
+                        std::function<TpmObjectSlot(TpmResourceManager&)>,
+                        Serializable&);
 
   size_t SerializedSize() const override;
   uint8_t* Serialize(uint8_t* buf, const uint8_t* end) const override;
   bool Deserialize(const uint8_t** buf_ptr, const uint8_t* end) override;
 private:
-  TpmResourceManager* resource_manager_;
-  std::function<TpmObjectSlot(TpmResourceManager*)> parent_key_fn_;
-  keymaster::Serializable* wrapped_;
+  TpmResourceManager& resource_manager_;
+  std::function<TpmObjectSlot(TpmResourceManager&)> parent_key_fn_;
+  keymaster::Serializable& wrapped_;
 };
diff --git a/host/commands/secure_env/fragile_tpm_storage.cpp b/host/commands/secure_env/fragile_tpm_storage.cpp
index 3c68117..ae66164 100644
--- a/host/commands/secure_env/fragile_tpm_storage.cpp
+++ b/host/commands/secure_env/fragile_tpm_storage.cpp
@@ -28,7 +28,7 @@
 static constexpr char kHandle[] = "handle";
 
 FragileTpmStorage::FragileTpmStorage(
-    TpmResourceManager* resource_manager, const std::string& index_file)
+    TpmResourceManager& resource_manager, const std::string& index_file)
     : resource_manager_(resource_manager), index_file_(index_file) {
   index_ = ReadProtectedJsonFromFile(resource_manager_, index_file);
   if (!index_.isMember(kEntries)
@@ -45,7 +45,7 @@
 }
 
 TPM2_HANDLE FragileTpmStorage::GenerateRandomHandle() {
-  TpmRandomSource random_source{resource_manager_->Esys()};
+  TpmRandomSource random_source{resource_manager_.Esys()};
   TPM2_HANDLE handle = 0;
   random_source.GenerateRandom(
       reinterpret_cast<uint8_t*>(&handle), sizeof(handle));
@@ -79,10 +79,10 @@
       }
     };
     TPM2B_AUTH auth = { .size = 0, .buffer = {} };
-    Esys_TR_SetAuth(resource_manager_->Esys(), ESYS_TR_RH_OWNER, &auth);
+    Esys_TR_SetAuth(resource_manager_.Esys(), ESYS_TR_RH_OWNER, &auth);
     ESYS_TR nv_handle;
     auto rc = Esys_NV_DefineSpace(
-      /* esysContext */ resource_manager_->Esys(),
+      /* esysContext */ resource_manager_.Esys(),
       /* authHandle */ ESYS_TR_RH_OWNER,
       /* shandle1 */ ESYS_TR_PASSWORD,
       /* shandle2 */ ESYS_TR_NONE,
@@ -94,7 +94,7 @@
       LOG(VERBOSE) << "Esys_NV_DefineSpace failed with TPM2_RC_NV_DEFINED";
       continue;
     } else if (rc == TPM2_RC_SUCCESS) {
-      Esys_TR_Close(resource_manager_->Esys(), &nv_handle);
+      Esys_TR_Close(resource_manager_.Esys(), &nv_handle);
       break;
     } else {
       LOG(DEBUG) << "Esys_NV_DefineSpace failed with " << rc << ": "
@@ -143,12 +143,12 @@
     return {};
   }
   auto close_tr = [this](ESYS_TR* handle) {
-    Esys_TR_Close(resource_manager_->Esys(), handle);
+    Esys_TR_Close(resource_manager_.Esys(), handle);
     delete handle;
   };
   std::unique_ptr<ESYS_TR, decltype(close_tr)> nv_handle(new ESYS_TR, close_tr);
   auto rc = Esys_TR_FromTPMPublic(
-      /* esysContext */ resource_manager_->Esys(),
+      /* esysContext */ resource_manager_.Esys(),
       /* tpm_handle */ handle,
       /* optionalSession1 */ ESYS_TR_NONE,
       /* optionalSession2 */ ESYS_TR_NONE,
@@ -160,11 +160,11 @@
     return {};
   }
   TPM2B_AUTH auth = { .size = 0, .buffer = {} };
-  Esys_TR_SetAuth(resource_manager_->Esys(), *nv_handle, &auth);
+  Esys_TR_SetAuth(resource_manager_.Esys(), *nv_handle, &auth);
 
   TPM2B_NV_PUBLIC* public_area;
   rc = Esys_NV_ReadPublic(
-      /* esysContext */ resource_manager_->Esys(),
+      /* esysContext */ resource_manager_.Esys(),
       /* nvIndex */ *nv_handle,
       /* shandle1 */ ESYS_TR_NONE,
       /* shandle2 */ ESYS_TR_NONE,
@@ -180,7 +180,7 @@
       public_deleter(public_area, Esys_Free);
   TPM2B_MAX_NV_BUFFER* buffer = nullptr;
   rc = Esys_NV_Read(
-      /* esysContext */ resource_manager_->Esys(),
+      /* esysContext */ resource_manager_.Esys(),
       /* authHandle */ *nv_handle,
       /* nvIndex */ *nv_handle,
       /* shandle1 */ ESYS_TR_PASSWORD,
@@ -207,7 +207,7 @@
   }
   ESYS_TR nv_handle;
   auto rc = Esys_TR_FromTPMPublic(
-      /* esysContext */ resource_manager_->Esys(),
+      /* esysContext */ resource_manager_.Esys(),
       /* tpm_handle */ handle,
       /* optionalSession1 */ ESYS_TR_NONE,
       /* optionalSession2 */ ESYS_TR_NONE,
@@ -219,10 +219,10 @@
     return false;
   }
   TPM2B_AUTH auth = { .size = 0, .buffer = {} };
-  Esys_TR_SetAuth(resource_manager_->Esys(), nv_handle, &auth);
+  Esys_TR_SetAuth(resource_manager_.Esys(), nv_handle, &auth);
 
   rc = Esys_NV_Write(
-      /* esysContext */ resource_manager_->Esys(),
+      /* esysContext */ resource_manager_.Esys(),
       /* authHandle */ nv_handle,
       /* nvIndex */ nv_handle,
       /* shandle1 */ ESYS_TR_PASSWORD,
@@ -230,7 +230,7 @@
       /* shandle3 */ ESYS_TR_NONE,
       /* data */ &data,
       /* offset */ 0);
-  Esys_TR_Close(resource_manager_->Esys(), &nv_handle);
+  Esys_TR_Close(resource_manager_.Esys(), &nv_handle);
   if (rc != TSS2_RC_SUCCESS) {
     LOG(ERROR) << "Esys_NV_Write failed with return code " << rc
                << " (" << Tss2_RC_Decode(rc) << ")";
diff --git a/host/commands/secure_env/fragile_tpm_storage.h b/host/commands/secure_env/fragile_tpm_storage.h
index 03a17b1..b52b373 100644
--- a/host/commands/secure_env/fragile_tpm_storage.h
+++ b/host/commands/secure_env/fragile_tpm_storage.h
@@ -41,7 +41,7 @@
  */
 class FragileTpmStorage : public GatekeeperStorage {
 public:
-  FragileTpmStorage(TpmResourceManager*, const std::string& index_file);
+  FragileTpmStorage(TpmResourceManager&, const std::string& index_file);
   ~FragileTpmStorage() = default;
 
   bool Allocate(const Json::Value& key, uint16_t size) override;
@@ -54,7 +54,7 @@
   TPM2_HANDLE GetHandle(const Json::Value& key) const;
   TPM2_HANDLE GenerateRandomHandle();
 
-  TpmResourceManager* resource_manager_;
+  TpmResourceManager& resource_manager_;
   std::string index_file_;
   Json::Value index_;
 };
diff --git a/host/commands/secure_env/gatekeeper_responder.cpp b/host/commands/secure_env/gatekeeper_responder.cpp
index 3bfa16e..7d43a18 100644
--- a/host/commands/secure_env/gatekeeper_responder.cpp
+++ b/host/commands/secure_env/gatekeeper_responder.cpp
@@ -19,12 +19,12 @@
 #include <gatekeeper/gatekeeper_messages.h>
 
 GatekeeperResponder::GatekeeperResponder(
-    cuttlefish::GatekeeperChannel* channel, gatekeeper::GateKeeper* gatekeeper)
+    cuttlefish::GatekeeperChannel& channel, gatekeeper::GateKeeper& gatekeeper)
     : channel_(channel), gatekeeper_(gatekeeper) {
 }
 
 bool GatekeeperResponder::ProcessMessage() {
-  auto request = channel_->ReceiveMessage();
+  auto request = channel_.ReceiveMessage();
   if (!request) {
     LOG(ERROR) << "Could not receive message";
     return false;
@@ -41,8 +41,8 @@
         return false;
       }
       EnrollResponse response;
-      gatekeeper_->Enroll(enroll_request, &response);
-      return channel_->SendResponse(ENROLL, response);
+      gatekeeper_.Enroll(enroll_request, &response);
+      return channel_.SendResponse(ENROLL, response);
     }
     case VERIFY: {
       VerifyRequest verify_request;
@@ -52,8 +52,8 @@
         return false;
       }
       VerifyResponse response;
-      gatekeeper_->Verify(verify_request, &response);
-      return channel_->SendResponse(VERIFY, response);
+      gatekeeper_.Verify(verify_request, &response);
+      return channel_.SendResponse(VERIFY, response);
     }
     default:
       LOG(ERROR) << "Unrecognized message id " << request->cmd;
diff --git a/host/commands/secure_env/gatekeeper_responder.h b/host/commands/secure_env/gatekeeper_responder.h
index f1d09d1..bd27955 100644
--- a/host/commands/secure_env/gatekeeper_responder.h
+++ b/host/commands/secure_env/gatekeeper_responder.h
@@ -21,11 +21,11 @@
 
 class GatekeeperResponder {
 private:
-  cuttlefish::GatekeeperChannel* channel_;
-  gatekeeper::GateKeeper* gatekeeper_;
+  cuttlefish::GatekeeperChannel& channel_;
+  gatekeeper::GateKeeper& gatekeeper_;
 public:
-  GatekeeperResponder(cuttlefish::GatekeeperChannel* channel,
-                      gatekeeper::GateKeeper* gatekeeper);
+  GatekeeperResponder(cuttlefish::GatekeeperChannel& channel,
+                      gatekeeper::GateKeeper& gatekeeper);
 
   bool ProcessMessage();
 };
diff --git a/host/commands/secure_env/hmac_serializable.cpp b/host/commands/secure_env/hmac_serializable.cpp
index 127aba0..c40b736 100644
--- a/host/commands/secure_env/hmac_serializable.cpp
+++ b/host/commands/secure_env/hmac_serializable.cpp
@@ -21,8 +21,8 @@
 #include "host/commands/secure_env/tpm_hmac.h"
 
 HmacSerializable::HmacSerializable(
-    TpmResourceManager* resource_manager,
-    std::function<TpmObjectSlot(TpmResourceManager*)> signing_key_fn,
+    TpmResourceManager& resource_manager,
+    std::function<TpmObjectSlot(TpmResourceManager&)> signing_key_fn,
     uint32_t digest_size,
     Serializable* wrapped) :
     resource_manager_(resource_manager),
diff --git a/host/commands/secure_env/hmac_serializable.h b/host/commands/secure_env/hmac_serializable.h
index f86d98c..4b90124 100644
--- a/host/commands/secure_env/hmac_serializable.h
+++ b/host/commands/secure_env/hmac_serializable.h
@@ -38,8 +38,8 @@
  */
 class HmacSerializable : public keymaster::Serializable {
 public:
-  HmacSerializable(TpmResourceManager*,
-                   std::function<TpmObjectSlot(TpmResourceManager*)>,
+  HmacSerializable(TpmResourceManager&,
+                   std::function<TpmObjectSlot(TpmResourceManager&)>,
                    uint32_t digest_size,
                    Serializable*);
 
@@ -47,8 +47,8 @@
   uint8_t* Serialize(uint8_t* buf, const uint8_t* end) const override;
   bool Deserialize(const uint8_t** buf_ptr, const uint8_t* end) override;
 private:
-  TpmResourceManager* resource_manager_;
-  std::function<TpmObjectSlot(TpmResourceManager*)> signing_key_fn_;
+  TpmResourceManager& resource_manager_;
+  std::function<TpmObjectSlot(TpmResourceManager&)> signing_key_fn_;
   uint32_t digest_size_;
   keymaster::Serializable* wrapped_;
 };
diff --git a/host/commands/secure_env/insecure_fallback_storage.cpp b/host/commands/secure_env/insecure_fallback_storage.cpp
index 81e1209..f906bd5 100644
--- a/host/commands/secure_env/insecure_fallback_storage.cpp
+++ b/host/commands/secure_env/insecure_fallback_storage.cpp
@@ -28,7 +28,7 @@
 static constexpr char kValue[] = "value";
 
 InsecureFallbackStorage::InsecureFallbackStorage(
-    TpmResourceManager* resource_manager, const std::string& index_file)
+    TpmResourceManager& resource_manager, const std::string& index_file)
     : resource_manager_(resource_manager), index_file_(index_file) {
   index_ = ReadProtectedJsonFromFile(resource_manager_, index_file);
   if (!index_.isMember(kEntries)
diff --git a/host/commands/secure_env/insecure_fallback_storage.h b/host/commands/secure_env/insecure_fallback_storage.h
index ffd1270..93788a0 100644
--- a/host/commands/secure_env/insecure_fallback_storage.h
+++ b/host/commands/secure_env/insecure_fallback_storage.h
@@ -37,7 +37,7 @@
  */
 class InsecureFallbackStorage : public GatekeeperStorage {
 public:
-  InsecureFallbackStorage(TpmResourceManager*, const std::string& index_file);
+  InsecureFallbackStorage(TpmResourceManager&, const std::string& index_file);
   ~InsecureFallbackStorage() = default;
 
   bool Allocate(const Json::Value& key, uint16_t size) override;
@@ -50,7 +50,7 @@
   Json::Value* GetEntry(const Json::Value& key);
   const Json::Value* GetEntry(const Json::Value& key) const;
 
-  TpmResourceManager* resource_manager_;
+  TpmResourceManager& resource_manager_;
   std::string index_file_;
   Json::Value index_;
 };
diff --git a/host/commands/secure_env/json_serializable.cpp b/host/commands/secure_env/json_serializable.cpp
index 9ca0424..73b792e 100644
--- a/host/commands/secure_env/json_serializable.cpp
+++ b/host/commands/secure_env/json_serializable.cpp
@@ -28,7 +28,7 @@
 
 class JsonSerializable : public keymaster::Serializable {
 public:
-  JsonSerializable(Json::Value* json);
+  JsonSerializable(Json::Value& json);
 
   size_t SerializedSize() const override;
 
@@ -36,18 +36,18 @@
 
   bool Deserialize(const uint8_t** buf_ptr, const uint8_t* buf_end) override;
 private:
-  Json::Value* json_;
+  Json::Value& json_;
 };
 
-JsonSerializable::JsonSerializable(Json::Value* json) : json_(json) {}
+JsonSerializable::JsonSerializable(Json::Value& json) : json_(json) {}
 
 size_t JsonSerializable::SerializedSize() const {
-  auto serialized = Json::FastWriter().write(*json_);
+  auto serialized = Json::FastWriter().write(json_);
   return serialized.size() + sizeof(uint32_t);
 }
 
 uint8_t* JsonSerializable::Serialize(uint8_t* buf, const uint8_t* end) const {
-  auto serialized = Json::FastWriter().write(*json_);
+  auto serialized = Json::FastWriter().write(json_);
   if (end - buf < serialized.size() + sizeof(uint32_t)) {
     LOG(ERROR) << "Not enough space to serialize json";
     return buf;
@@ -68,7 +68,7 @@
   }
   auto doc_begin = reinterpret_cast<const char*>(json_bytes.get());
   auto doc_end = doc_begin + size;
-  success = Json::Reader().parse(doc_begin, doc_end, *json_);
+  success = Json::Reader().parse(doc_begin, doc_end, json_);
   if (!success) {
     LOG(ERROR) << "Failed to parse json";
     return false;
@@ -77,13 +77,13 @@
 }
 
 bool WriteProtectedJsonToFile(
-    TpmResourceManager* resource_manager,
+    TpmResourceManager& resource_manager,
     const std::string& filename,
     Json::Value json) {
-  JsonSerializable sensitive_material(&json);
+  JsonSerializable sensitive_material(json);
   auto parent_key_fn = ParentKeyCreator(kUniqueKey);
   EncryptedSerializable encryption(
-      resource_manager, parent_key_fn, &sensitive_material);
+      resource_manager, parent_key_fn, sensitive_material);
   auto signing_key_fn = SigningKeyCreator(kUniqueKey);
   HmacSerializable sign_check(
       resource_manager, signing_key_fn, TPM2_SHA256_DIGEST_SIZE, &encryption);
@@ -109,7 +109,7 @@
 }
 
 Json::Value ReadProtectedJsonFromFile(
-    TpmResourceManager* resource_manager, const std::string& filename) {
+    TpmResourceManager& resource_manager, const std::string& filename) {
   std::ifstream file_stream(filename, std::ios::binary | std::ios::ate);
   std::streamsize size = file_stream.tellg();
   file_stream.seekg(0, std::ios::beg);
@@ -130,10 +130,10 @@
   }
 
   Json::Value json;
-  JsonSerializable sensitive_material(&json);
+  JsonSerializable sensitive_material(json);
   auto parent_key_fn = ParentKeyCreator(kUniqueKey);
   EncryptedSerializable encryption(
-      resource_manager, parent_key_fn, &sensitive_material);
+      resource_manager, parent_key_fn, sensitive_material);
   auto signing_key_fn = SigningKeyCreator(kUniqueKey);
   HmacSerializable sign_check(
       resource_manager, signing_key_fn, TPM2_SHA256_DIGEST_SIZE, &encryption);
diff --git a/host/commands/secure_env/json_serializable.h b/host/commands/secure_env/json_serializable.h
index dca80b4..f96aab3 100644
--- a/host/commands/secure_env/json_serializable.h
+++ b/host/commands/secure_env/json_serializable.h
@@ -20,6 +20,6 @@
 #include "host/commands/secure_env/tpm_resource_manager.h"
 
 bool WriteProtectedJsonToFile(
-    TpmResourceManager*, const std::string& filename, Json::Value);
+    TpmResourceManager&, const std::string& filename, Json::Value);
 Json::Value ReadProtectedJsonFromFile(
-    TpmResourceManager*, const std::string& filename);
+    TpmResourceManager&, const std::string& filename);
diff --git a/host/commands/secure_env/keymaster_responder.cpp b/host/commands/secure_env/keymaster_responder.cpp
index 5bfb358..1f12803 100644
--- a/host/commands/secure_env/keymaster_responder.cpp
+++ b/host/commands/secure_env/keymaster_responder.cpp
@@ -19,12 +19,12 @@
 #include <keymaster/android_keymaster_messages.h>
 
 KeymasterResponder::KeymasterResponder(
-    cuttlefish::KeymasterChannel* channel, keymaster::AndroidKeymaster* keymaster)
+    cuttlefish::KeymasterChannel& channel, keymaster::AndroidKeymaster& keymaster)
     : channel_(channel), keymaster_(keymaster) {
 }
 
 bool KeymasterResponder::ProcessMessage() {
-  auto request = channel_->ReceiveMessage();
+  auto request = channel_.ReceiveMessage();
   if (!request) {
     LOG(ERROR) << "Could not receive message";
     return false;
@@ -41,8 +41,8 @@
         return false; \
       } \
       METHOD_NAME##Response response; \
-      keymaster_->METHOD_NAME(request, &response); \
-      return channel_->SendResponse(ENUM_NAME, response); \
+      keymaster_.METHOD_NAME(request, &response); \
+      return channel_.SendResponse(ENUM_NAME, response); \
     }
     HANDLE_MESSAGE(GENERATE_KEY, GenerateKey)
     HANDLE_MESSAGE(BEGIN_OPERATION, BeginOperation)
@@ -73,8 +73,8 @@
         LOG(ERROR) << "Failed to deserialize " #METHOD_NAME "Request"; \
         return false; \
       } \
-      auto response = keymaster_->METHOD_NAME(request); \
-      return channel_->SendResponse(ENUM_NAME, response); \
+      auto response = keymaster_.METHOD_NAME(request); \
+      return channel_.SendResponse(ENUM_NAME, response); \
     }
     HANDLE_MESSAGE(COMPUTE_SHARED_HMAC, ComputeSharedHmac)
     HANDLE_MESSAGE(VERIFY_AUTHORIZATION, VerifyAuthorization)
@@ -82,8 +82,8 @@
 #undef HANDLE_MESSAGE
 #define HANDLE_MESSAGE(ENUM_NAME, METHOD_NAME) \
     case ENUM_NAME: {\
-      auto response = keymaster_->METHOD_NAME(); \
-      return channel_->SendResponse(ENUM_NAME, response); \
+      auto response = keymaster_.METHOD_NAME(); \
+      return channel_.SendResponse(ENUM_NAME, response); \
     }
     HANDLE_MESSAGE(GET_HMAC_SHARING_PARAMETERS, GetHmacSharingParameters)
     HANDLE_MESSAGE(EARLY_BOOT_ENDED, EarlyBootEnded)
@@ -95,8 +95,8 @@
         return false;
       }
       AddEntropyResponse response;
-      keymaster_->AddRngEntropy(request, &response);
-      return channel_->SendResponse(ADD_RNG_ENTROPY, response);
+      keymaster_.AddRngEntropy(request, &response);
+      return channel_.SendResponse(ADD_RNG_ENTROPY, response);
     }
     case DESTROY_ATTESTATION_IDS: // Not defined in AndroidKeymaster?
       break;
diff --git a/host/commands/secure_env/keymaster_responder.h b/host/commands/secure_env/keymaster_responder.h
index 1fc662e..f8fb6ec 100644
--- a/host/commands/secure_env/keymaster_responder.h
+++ b/host/commands/secure_env/keymaster_responder.h
@@ -21,11 +21,11 @@
 
 class KeymasterResponder {
 private:
-  cuttlefish::KeymasterChannel* channel_;
-  keymaster::AndroidKeymaster* keymaster_;
+  cuttlefish::KeymasterChannel& channel_;
+  keymaster::AndroidKeymaster& keymaster_;
 public:
-  KeymasterResponder(cuttlefish::KeymasterChannel* channel,
-                     keymaster::AndroidKeymaster* keymaster);
+  KeymasterResponder(cuttlefish::KeymasterChannel& channel,
+                     keymaster::AndroidKeymaster& keymaster);
 
   bool ProcessMessage();
 };
diff --git a/host/commands/secure_env/primary_key_builder.cpp b/host/commands/secure_env/primary_key_builder.cpp
index 6e12520..a44ff24 100644
--- a/host/commands/secure_env/primary_key_builder.cpp
+++ b/host/commands/secure_env/primary_key_builder.cpp
@@ -62,10 +62,10 @@
 }
 
 TpmObjectSlot PrimaryKeyBuilder::CreateKey(
-    TpmResourceManager* resource_manager) {
+    TpmResourceManager& resource_manager) {
   TPM2B_AUTH authValue = {};
   auto rc =
-      Esys_TR_SetAuth(resource_manager->Esys(), ESYS_TR_RH_OWNER, &authValue);
+      Esys_TR_SetAuth(resource_manager.Esys(), ESYS_TR_RH_OWNER, &authValue);
   if (rc != TSS2_RC_SUCCESS) {
     LOG(ERROR) << "Esys_TR_SetAuth failed with return code " << rc
                << " (" << Tss2_RC_Decode(rc) << ")";
@@ -85,7 +85,7 @@
 
   TPM2B_SENSITIVE_CREATE in_sensitive = {};
 
-  auto key_slot = resource_manager->ReserveSlot();
+  auto key_slot = resource_manager.ReserveSlot();
   if (!key_slot) {
     LOG(ERROR) << "No slots available";
     return {};
@@ -95,7 +95,7 @@
   // Since this is a primary key, it's generated deterministically. It would
   // also be possible to generate this once and hold it in storage.
   rc = Esys_CreateLoaded(
-    /* esysContext */ resource_manager->Esys(),
+    /* esysContext */ resource_manager.Esys(),
     /* primaryHandle */ ESYS_TR_RH_OWNER,
     /* shandle1 */ ESYS_TR_PASSWORD,
     /* shandle2 */ ESYS_TR_NONE,
@@ -114,9 +114,9 @@
   return key_slot;
 }
 
-std::function<TpmObjectSlot(TpmResourceManager*)>
+std::function<TpmObjectSlot(TpmResourceManager&)>
 SigningKeyCreator(const std::string& unique) {
-  return [unique](TpmResourceManager* resource_manager) {
+  return [unique](TpmResourceManager& resource_manager) {
     PrimaryKeyBuilder key_builder;
     key_builder.SigningKey();
     key_builder.UniqueData(unique);
@@ -124,9 +124,9 @@
   };
 }
 
-std::function<TpmObjectSlot(TpmResourceManager*)>
+std::function<TpmObjectSlot(TpmResourceManager&)>
 ParentKeyCreator(const std::string& unique) {
-  return [unique](TpmResourceManager* resource_manager) {
+  return [unique](TpmResourceManager& resource_manager) {
     PrimaryKeyBuilder key_builder;
     key_builder.ParentKey();
     key_builder.UniqueData(unique);
diff --git a/host/commands/secure_env/primary_key_builder.h b/host/commands/secure_env/primary_key_builder.h
index d5d2298..46e5461 100644
--- a/host/commands/secure_env/primary_key_builder.h
+++ b/host/commands/secure_env/primary_key_builder.h
@@ -30,13 +30,13 @@
   void ParentKey();
   void UniqueData(const std::string&);
 
-  TpmObjectSlot CreateKey(TpmResourceManager*);
+  TpmObjectSlot CreateKey(TpmResourceManager&);
 private:
   TPMT_PUBLIC public_area_;
 };
 
-std::function<TpmObjectSlot(TpmResourceManager*)>
+std::function<TpmObjectSlot(TpmResourceManager&)>
 SigningKeyCreator(const std::string& unique);
 
-std::function<TpmObjectSlot(TpmResourceManager*)>
+std::function<TpmObjectSlot(TpmResourceManager&)>
 ParentKeyCreator(const std::string& unique);
diff --git a/host/commands/secure_env/secure_env.cpp b/host/commands/secure_env/secure_env.cpp
index a80edb3..8848820 100644
--- a/host/commands/secure_env/secure_env.cpp
+++ b/host/commands/secure_env/secure_env.cpp
@@ -85,17 +85,14 @@
         new keymaster::SoftKeymasterEnforcement(64, 64));
   } else if (FLAGS_gatekeeper_impl == "in_process_tpm") {
     secure_storage.reset(
-        new FragileTpmStorage(resource_manager.get(), "gatekeeper_secure"));
-    insecure_storage.reset(new InsecureFallbackStorage(
-        resource_manager.get(), "gatekeeper_insecure"));
+        new FragileTpmStorage(*resource_manager, "gatekeeper_secure"));
+    insecure_storage.reset(
+        new InsecureFallbackStorage(*resource_manager, "gatekeeper_insecure"));
     TpmGatekeeper* tpm_gatekeeper =
-        new TpmGatekeeper(
-            resource_manager.get(),
-            secure_storage.get(),
-            insecure_storage.get());
+        new TpmGatekeeper(*resource_manager, *secure_storage, *insecure_storage);
     gatekeeper.reset(tpm_gatekeeper);
     keymaster_enforcement.reset(
-        new TpmKeymasterEnforcement(resource_manager.get(), tpm_gatekeeper));
+        new TpmKeymasterEnforcement(*resource_manager, *tpm_gatekeeper));
   }
 
   // keymaster::AndroidKeymaster puts the given pointer into a UniquePtr,
@@ -106,8 +103,7 @@
         new keymaster::PureSoftKeymasterContext(KM_SECURITY_LEVEL_SOFTWARE);
   } else if (FLAGS_keymaster_impl == "in_process_tpm") {
     keymaster_context =
-        new TpmKeymasterContext(
-            resource_manager.get(), keymaster_enforcement.get());
+        new TpmKeymasterContext(*resource_manager, *keymaster_enforcement);
   } else {
     LOG(FATAL) << "Unknown keymaster implementation " << FLAGS_keymaster_impl;
     return -1;
@@ -137,7 +133,7 @@
                                       << keymaster_conn->StrError();
       cuttlefish::KeymasterChannel keymaster_channel(keymaster_conn);
 
-      KeymasterResponder keymaster_responder(&keymaster_channel, &keymaster);
+      KeymasterResponder keymaster_responder(keymaster_channel, keymaster);
 
       while (keymaster_responder.ProcessMessage()) {
       }
@@ -151,8 +147,7 @@
                                       << gatekeeper_conn->StrError();
       cuttlefish::GatekeeperChannel gatekeeper_channel(gatekeeper_conn);
 
-      GatekeeperResponder gatekeeper_responder(
-          &gatekeeper_channel, gatekeeper.get());
+      GatekeeperResponder gatekeeper_responder(gatekeeper_channel, *gatekeeper);
 
       while (gatekeeper_responder.ProcessMessage()) {
       }
diff --git a/host/commands/secure_env/tpm_gatekeeper.cpp b/host/commands/secure_env/tpm_gatekeeper.cpp
index adfa2a5..e4f61e7 100644
--- a/host/commands/secure_env/tpm_gatekeeper.cpp
+++ b/host/commands/secure_env/tpm_gatekeeper.cpp
@@ -27,15 +27,15 @@
 #include "host/commands/secure_env/primary_key_builder.h"
 #include "host/commands/secure_env/tpm_auth.h"
 #include "host/commands/secure_env/tpm_hmac.h"
+#include "host/commands/secure_env/tpm_random_source.h"
 
 TpmGatekeeper::TpmGatekeeper(
-    TpmResourceManager* resource_manager,
-    GatekeeperStorage* secure_storage,
-    GatekeeperStorage* insecure_storage)
+    TpmResourceManager& resource_manager,
+    GatekeeperStorage& secure_storage,
+    GatekeeperStorage& insecure_storage)
     : resource_manager_(resource_manager)
     , secure_storage_(secure_storage)
-    , insecure_storage_(insecure_storage)
-    , random_source_(resource_manager->Esys()) {
+    , insecure_storage_(insecure_storage) {
 }
 
 /*
@@ -80,7 +80,8 @@
 
 void TpmGatekeeper::GetRandom(void* random, uint32_t requested_size) const {
   auto random_uint8 = reinterpret_cast<uint8_t*>(random);
-  random_source_.GenerateRandom(random_uint8, requested_size);
+  TpmRandomSource(resource_manager_.Esys())
+      .GenerateRandom(random_uint8, requested_size);
 }
 
 void TpmGatekeeper::ComputeSignature(
@@ -154,23 +155,23 @@
 }
 
 static bool GetFailureRecordImpl(
-    GatekeeperStorage* storage,
+    GatekeeperStorage& storage,
     uint32_t uid,
     gatekeeper::secure_id_t secure_user_id,
     gatekeeper::failure_record_t *record) {
   Json::Value key{std::to_string(uid)}; // jsoncpp integer comparisons are janky
-  if (!storage->HasKey(key)) {
-    if (!storage->Allocate(key, sizeof(gatekeeper::failure_record_t))) {
+  if (!storage.HasKey(key)) {
+    if (!storage.Allocate(key, sizeof(gatekeeper::failure_record_t))) {
       LOG(ERROR) << "Allocation failed for user " << uid;
       return false;
     }
     auto buf = RecordToNvBuffer(DefaultRecord(secure_user_id));
-    if (!storage->Write(key, *buf)) {
+    if (!storage.Write(key, *buf)) {
       LOG(ERROR) << "Failed to write record for " << uid;
       return false;
     }
   }
-  auto record_read = storage->Read(key);
+  auto record_read = storage.Read(key);
   if (!record_read) {
     LOG(ERROR) << "Failed to read record for " << uid;
     return false;
@@ -186,7 +187,7 @@
   }
   LOG(DEBUG) << "User id mismatch for " << uid;
   auto buf = RecordToNvBuffer(DefaultRecord(secure_user_id));
-  if (!storage->Write(key, *buf)) {
+  if (!storage.Write(key, *buf)) {
     LOG(ERROR) << "Failed to write record for " << uid;
     return false;
   }
@@ -199,23 +200,23 @@
     gatekeeper::secure_id_t secure_user_id,
     gatekeeper::failure_record_t *record,
     bool secure) {
-  GatekeeperStorage* storage = secure ? secure_storage_ : insecure_storage_;
+  GatekeeperStorage& storage = secure ? secure_storage_ : insecure_storage_;
   return GetFailureRecordImpl(storage, uid, secure_user_id, record);
 }
 
 static bool WriteFailureRecordImpl(
-    GatekeeperStorage* storage,
+    GatekeeperStorage& storage,
     uint32_t uid,
     gatekeeper::failure_record_t* record) {
   Json::Value key{std::to_string(uid)}; // jsoncpp integer comparisons are janky
-  if (!storage->HasKey(key)) {
-    if (!storage->Allocate(key, sizeof(gatekeeper::failure_record_t))) {
+  if (!storage.HasKey(key)) {
+    if (!storage.Allocate(key, sizeof(gatekeeper::failure_record_t))) {
       LOG(ERROR) << "Allocation failed for user " << uid;
       return false;
     }
   }
   auto buf = RecordToNvBuffer(*record);
-  if (!storage->Write(key, *buf)) {
+  if (!storage.Write(key, *buf)) {
     LOG(ERROR) << "Failed to write record for " << uid;
     return false;
   }
@@ -224,14 +225,14 @@
 
 bool TpmGatekeeper::ClearFailureRecord(
     uint32_t uid, gatekeeper::secure_id_t secure_user_id, bool secure) {
-  GatekeeperStorage* storage = secure ? secure_storage_ : insecure_storage_;
+  GatekeeperStorage& storage = secure ? secure_storage_ : insecure_storage_;
   gatekeeper::failure_record_t record = DefaultRecord(secure_user_id);
   return WriteFailureRecordImpl(storage, uid, &record);
 }
 
 bool TpmGatekeeper::WriteFailureRecord(
     uint32_t uid, gatekeeper::failure_record_t *record, bool secure) {
-  GatekeeperStorage* storage = secure ? secure_storage_ : insecure_storage_;
+  GatekeeperStorage& storage = secure ? secure_storage_ : insecure_storage_;
   return WriteFailureRecordImpl(storage, uid, record);
 }
 
diff --git a/host/commands/secure_env/tpm_gatekeeper.h b/host/commands/secure_env/tpm_gatekeeper.h
index b545811..021ab58 100644
--- a/host/commands/secure_env/tpm_gatekeeper.h
+++ b/host/commands/secure_env/tpm_gatekeeper.h
@@ -19,7 +19,6 @@
 #include "tss2/tss2_esys.h"
 
 #include "host/commands/secure_env/gatekeeper_storage.h"
-#include "host/commands/secure_env/tpm_random_source.h"
 #include "host/commands/secure_env/tpm_resource_manager.h"
 
 /**
@@ -29,9 +28,9 @@
 class TpmGatekeeper : public gatekeeper::GateKeeper {
 public:
   TpmGatekeeper(
-      TpmResourceManager* resource_manager,
-      GatekeeperStorage* secure_storage,
-      GatekeeperStorage* insecure_storage);
+      TpmResourceManager& resource_manager,
+      GatekeeperStorage& secure_storage,
+      GatekeeperStorage& insecure_storage);
 
   bool GetAuthTokenKey(
       const uint8_t** auth_token_key, uint32_t* length) const override;
@@ -78,8 +77,7 @@
 
   bool IsHardwareBacked() const override;
 private:
-  TpmResourceManager* resource_manager_;
-  GatekeeperStorage* secure_storage_;
-  GatekeeperStorage* insecure_storage_;
-  TpmRandomSource random_source_;
+  TpmResourceManager& resource_manager_;
+  GatekeeperStorage& secure_storage_;
+  GatekeeperStorage& insecure_storage_;
 };
diff --git a/host/commands/secure_env/tpm_hmac.cpp b/host/commands/secure_env/tpm_hmac.cpp
index d20cca3..80003d0 100644
--- a/host/commands/secure_env/tpm_hmac.cpp
+++ b/host/commands/secure_env/tpm_hmac.cpp
@@ -22,7 +22,7 @@
 
 /* For data large enough to fit in a single TPM2_HMAC call. */
 static UniqueEsysPtr<TPM2B_DIGEST> OneshotHmac(
-    TpmResourceManager* resource_manager,
+    TpmResourceManager& resource_manager,
     ESYS_TR key_handle,
     TpmAuth auth,
     const uint8_t* data,
@@ -38,7 +38,7 @@
   memcpy(buffer.buffer, data, data_size);
   TPM2B_DIGEST* out_hmac = nullptr;
   auto rc = Esys_HMAC(
-      resource_manager->Esys(),
+      resource_manager.Esys(),
       key_handle,
       auth.auth1(),
       auth.auth2(),
@@ -59,7 +59,7 @@
 
 /* For data too large to fit in a single TPM2_HMAC call. */
 static UniqueEsysPtr<TPM2B_DIGEST> SegmentedHmac(
-    TpmResourceManager* resource_manager,
+    TpmResourceManager& resource_manager,
     ESYS_TR key_handle,
     TpmAuth key_auth,
     const uint8_t* data,
@@ -69,13 +69,13 @@
   sequence_auth.size = sizeof(rand());
   *reinterpret_cast<decltype(rand())*>(sequence_auth.buffer) = rand();
   ESYS_TR sequence_handle;
-  auto slot = resource_manager->ReserveSlot();
+  auto slot = resource_manager.ReserveSlot();
   if (!slot) {
     LOG(ERROR) << "No slots available";
     return {};
   }
   auto rc = Esys_HMAC_Start(
-      resource_manager->Esys(),
+      resource_manager.Esys(),
       key_handle,
       key_auth.auth1(),
       key_auth.auth2(),
@@ -90,7 +90,7 @@
   }
   slot->set(sequence_handle);
   rc = Esys_TR_SetAuth(
-      resource_manager->Esys(), sequence_handle, &sequence_auth);
+      resource_manager.Esys(), sequence_handle, &sequence_auth);
   if (rc != TPM2_RC_SUCCESS) {
     LOG(ERROR) << "Esys_TR_SetAuth failed: " << Tss2_RC_Decode(rc)
                << "(" << rc << ")";
@@ -103,7 +103,7 @@
     memcpy(buffer.buffer, &data[hashed], TPM2_MAX_DIGEST_BUFFER);
     hashed += TPM2_MAX_DIGEST_BUFFER;
     rc = Esys_SequenceUpdate(
-        resource_manager->Esys(),
+        resource_manager.Esys(),
         sequence_handle,
         ESYS_TR_PASSWORD,
         ESYS_TR_NONE,
@@ -120,7 +120,7 @@
   TPM2B_DIGEST* out_hmac = nullptr;
   TPMT_TK_HASHCHECK* validation = nullptr;
   rc = Esys_SequenceComplete(
-      resource_manager->Esys(),
+      resource_manager.Esys(),
       sequence_handle,
       ESYS_TR_PASSWORD,
       ESYS_TR_NONE,
@@ -145,7 +145,7 @@
 }
 
 UniqueEsysPtr<TPM2B_DIGEST> TpmHmac(
-    TpmResourceManager* resource_manager,
+    TpmResourceManager& resource_manager,
     ESYS_TR key_handle,
     TpmAuth auth,
     const uint8_t* data,
diff --git a/host/commands/secure_env/tpm_hmac.h b/host/commands/secure_env/tpm_hmac.h
index 4d179d3..e4686b6 100644
--- a/host/commands/secure_env/tpm_hmac.h
+++ b/host/commands/secure_env/tpm_hmac.h
@@ -44,7 +44,7 @@
  * is used to check that the data has not been tampered with.
  */
 UniqueEsysPtr<TPM2B_DIGEST> TpmHmac(
-    TpmResourceManager* resource_manager,
+    TpmResourceManager& resource_manager,
     ESYS_TR key_handle,
     TpmAuth auth,
     const uint8_t* data,
diff --git a/host/commands/secure_env/tpm_key_blob_maker.cpp b/host/commands/secure_env/tpm_key_blob_maker.cpp
index b87a393..a7bfab9 100644
--- a/host/commands/secure_env/tpm_key_blob_maker.cpp
+++ b/host/commands/secure_env/tpm_key_blob_maker.cpp
@@ -91,7 +91,7 @@
 }
 
 
-TpmKeyBlobMaker::TpmKeyBlobMaker(TpmResourceManager* resource_manager)
+TpmKeyBlobMaker::TpmKeyBlobMaker(TpmResourceManager& resource_manager)
     : resource_manager_(resource_manager) {
 }
 
@@ -126,7 +126,7 @@
       {&key_material_buffer, hw_enforced, sw_enforced});
   auto parent_key_fn = ParentKeyCreator(kUniqueKey);
   EncryptedSerializable encryption(
-      resource_manager_, parent_key_fn, &sensitive_material);
+      resource_manager_, parent_key_fn, sensitive_material);
   auto signing_key_fn = SigningKeyCreator(kUniqueKey);
   HmacSerializable sign_check(
       resource_manager_, signing_key_fn, TPM2_SHA256_DIGEST_SIZE, &encryption);
@@ -150,7 +150,7 @@
       {&key_material_buffer, hw_enforced, sw_enforced});
   auto parent_key_fn = ParentKeyCreator(kUniqueKey);
   EncryptedSerializable encryption(
-      resource_manager_, parent_key_fn, &sensitive_material);
+      resource_manager_, parent_key_fn, sensitive_material);
   auto signing_key_fn = SigningKeyCreator(kUniqueKey);
   HmacSerializable sign_check(
       resource_manager_, signing_key_fn, TPM2_SHA256_DIGEST_SIZE, &encryption);
diff --git a/host/commands/secure_env/tpm_key_blob_maker.h b/host/commands/secure_env/tpm_key_blob_maker.h
index 3b5ce43..2fa2b64 100644
--- a/host/commands/secure_env/tpm_key_blob_maker.h
+++ b/host/commands/secure_env/tpm_key_blob_maker.h
@@ -29,7 +29,7 @@
  */
 class TpmKeyBlobMaker : public keymaster::SoftwareKeyBlobMaker {
 public:
-  TpmKeyBlobMaker(TpmResourceManager* resource_manager);
+  TpmKeyBlobMaker(TpmResourceManager& resource_manager);
 
   keymaster_error_t CreateKeyBlob(
       const keymaster::AuthorizationSet& key_description,
@@ -56,5 +56,5 @@
       keymaster::AuthorizationSet* sw_enforced,
       keymaster::KeymasterKeyBlob* key_material) const;
 private:
-  TpmResourceManager* resource_manager_;
+  TpmResourceManager& resource_manager_;
 };
diff --git a/host/commands/secure_env/tpm_keymaster_context.cpp b/host/commands/secure_env/tpm_keymaster_context.cpp
index 9ea685f..b32f68f 100644
--- a/host/commands/secure_env/tpm_keymaster_context.cpp
+++ b/host/commands/secure_env/tpm_keymaster_context.cpp
@@ -36,12 +36,12 @@
 using keymaster::OperationFactory;
 
 TpmKeymasterContext::TpmKeymasterContext(
-    TpmResourceManager* resource_manager,
-    keymaster::KeymasterEnforcement* enforcement)
+    TpmResourceManager& resource_manager,
+    keymaster::KeymasterEnforcement& enforcement)
     : resource_manager_(resource_manager)
     , enforcement_(enforcement)
     , key_blob_maker_(new TpmKeyBlobMaker(resource_manager_))
-    , random_source_(new TpmRandomSource(resource_manager_->Esys()))
+    , random_source_(new TpmRandomSource(resource_manager_.Esys()))
     , attestation_context_(new TpmAttestationRecordContext()) {
   key_factories_.emplace(
       KM_ALGORITHM_RSA, new keymaster::RsaKeyFactory(key_blob_maker_.get()));
@@ -260,7 +260,7 @@
 }
 
 keymaster::KeymasterEnforcement* TpmKeymasterContext::enforcement_policy() {
-  return enforcement_;
+  return &enforcement_;
 }
 
 // Based on https://cs.android.com/android/platform/superproject/+/master:system/keymaster/contexts/pure_soft_keymaster_context.cpp;l=261;drc=8367d5351c4d417a11f49b12394b63a413faa02d
diff --git a/host/commands/secure_env/tpm_keymaster_context.h b/host/commands/secure_env/tpm_keymaster_context.h
index f4acbad..eb77af4 100644
--- a/host/commands/secure_env/tpm_keymaster_context.h
+++ b/host/commands/secure_env/tpm_keymaster_context.h
@@ -34,8 +34,8 @@
  */
 class TpmKeymasterContext : public keymaster::KeymasterContext {
 private:
-  TpmResourceManager* resource_manager_;
-  keymaster::KeymasterEnforcement* enforcement_;
+  TpmResourceManager& resource_manager_;
+  keymaster::KeymasterEnforcement& enforcement_;
   std::unique_ptr<TpmKeyBlobMaker> key_blob_maker_;
   std::unique_ptr<TpmRandomSource> random_source_;
   std::unique_ptr<TpmAttestationRecordContext> attestation_context_;
@@ -44,7 +44,7 @@
   uint32_t os_version_;
   uint32_t os_patchlevel_;
 public:
-  TpmKeymasterContext(TpmResourceManager*, keymaster::KeymasterEnforcement*);
+  TpmKeymasterContext(TpmResourceManager&, keymaster::KeymasterEnforcement&);
   ~TpmKeymasterContext() = default;
 
   keymaster_error_t SetSystemVersion(
diff --git a/host/commands/secure_env/tpm_keymaster_enforcement.cpp b/host/commands/secure_env/tpm_keymaster_enforcement.cpp
index 720e7aa..4c8e41c 100644
--- a/host/commands/secure_env/tpm_keymaster_enforcement.cpp
+++ b/host/commands/secure_env/tpm_keymaster_enforcement.cpp
@@ -48,7 +48,7 @@
 };
 
 TpmKeymasterEnforcement::TpmKeymasterEnforcement(
-    TpmResourceManager* resource_manager, TpmGatekeeper* gatekeeper)
+    TpmResourceManager& resource_manager, TpmGatekeeper& gatekeeper)
     : KeymasterEnforcement(64, 64),
       resource_manager_(resource_manager),
       gatekeeper_(gatekeeper) {
@@ -99,7 +99,7 @@
 
   const uint8_t *auth_token_key = nullptr;
   uint32_t auth_token_key_len = 0;
-  if (!gatekeeper_->GetAuthTokenKey(&auth_token_key, &auth_token_key_len)) {
+  if (!gatekeeper_.GetAuthTokenKey(&auth_token_key, &auth_token_key_len)) {
     LOG(WARNING) << "Unable to get gatekeeper auth token";
     return false;
   }
@@ -117,7 +117,7 @@
       "hw_auth_token_t does not appear to be packed");
 
 
-  gatekeeper_->ComputeSignature(
+  gatekeeper_.ComputeSignature(
       comparison_token.hmac,
       sizeof(comparison_token.hmac),
       auth_token_key,
@@ -134,7 +134,7 @@
     HmacSharingParameters* params) {
   if (!have_saved_params_) {
     saved_params_.seed = {};
-    TpmRandomSource random_source{resource_manager_->Esys()};
+    TpmRandomSource random_source{resource_manager_.Esys()};
     auto rc =
         random_source.GenerateRandom(
             saved_params_.nonce, sizeof(saved_params_.nonce));
diff --git a/host/commands/secure_env/tpm_keymaster_enforcement.h b/host/commands/secure_env/tpm_keymaster_enforcement.h
index f95c795..1d6a1e5 100644
--- a/host/commands/secure_env/tpm_keymaster_enforcement.h
+++ b/host/commands/secure_env/tpm_keymaster_enforcement.h
@@ -28,7 +28,7 @@
 class TpmKeymasterEnforcement : public keymaster::KeymasterEnforcement {
 public:
   TpmKeymasterEnforcement(
-      TpmResourceManager* resource_manager, TpmGatekeeper* gatekeeper);
+      TpmResourceManager& resource_manager, TpmGatekeeper& gatekeeper);
   ~TpmKeymasterEnforcement();
 
   bool activation_date_valid(uint64_t activation_date) const override;
@@ -54,8 +54,8 @@
       keymaster::km_id_t* keyid) const override;
 
 private:
-  TpmResourceManager* resource_manager_;
-  TpmGatekeeper* gatekeeper_;
+  TpmResourceManager& resource_manager_;
+  TpmGatekeeper& gatekeeper_;
   bool have_saved_params_ = false;
   keymaster::HmacSharingParameters saved_params_;
 };