diff --git a/android_keymaster/android_keymaster.cpp b/android_keymaster/android_keymaster.cpp
index 561bdcf..743a8fd 100644
--- a/android_keymaster/android_keymaster.cpp
+++ b/android_keymaster/android_keymaster.cpp
@@ -460,7 +460,8 @@
     }
     response->keys_to_sign_mac = KeymasterBlob(pubKeysToSignMac->data(), pubKeysToSignMac->size());
 
-    std::unique_ptr<cppbor::Map> device_info_map = rem_prov_ctx->CreateDeviceInfo();
+    std::unique_ptr<cppbor::Map> device_info_map =
+        rem_prov_ctx->CreateDeviceInfo(2 /* csrVersion */);
     std::vector<uint8_t> device_info = device_info_map->encode();
     response->device_info_blob = KeymasterBlob(device_info.data(), device_info.size());
     auto protectedDataPayload = rem_prov_ctx->BuildProtectedDataPayload(
diff --git a/contexts/pure_soft_remote_provisioning_context.cpp b/contexts/pure_soft_remote_provisioning_context.cpp
index feff175..c0eea3a 100644
--- a/contexts/pure_soft_remote_provisioning_context.cpp
+++ b/contexts/pure_soft_remote_provisioning_context.cpp
@@ -71,7 +71,8 @@
     return result;
 }
 
-std::unique_ptr<cppbor::Map> PureSoftRemoteProvisioningContext::CreateDeviceInfo() const {
+std::unique_ptr<cppbor::Map>
+PureSoftRemoteProvisioningContext::CreateDeviceInfo(uint32_t csrVersion) const {
     auto result = std::make_unique<cppbor::Map>(cppbor::Map());
 
     // The following placeholders show how the DeviceInfo map would be populated.
@@ -101,7 +102,10 @@
     if (vendor_patchlevel_) {
         result->add(cppbor::Tstr("vendor_patch_level"), cppbor::Uint(*vendor_patchlevel_));
     }
-    result->add(cppbor::Tstr("version"), cppbor::Uint(2));
+    // "version" field was removed from DeviceInfo in CSR v3.
+    if (csrVersion < 3) {
+        result->add(cppbor::Tstr("version"), cppbor::Uint(csrVersion));
+    }
     result->add(cppbor::Tstr("fused"), cppbor::Uint(0));
 
     // "software" security level is not supported, so lie and say we're a TEE
@@ -203,13 +207,14 @@
 cppcose::ErrMsgOr<cppbor::Array>
 PureSoftRemoteProvisioningContext::BuildCsr(const std::vector<uint8_t>& challenge,
                                             cppbor::Array keysToSign) const {
-    auto deviceInfo = std::move(*CreateDeviceInfo());
+    uint32_t csrVersion = 3;
+    auto deviceInfo = std::move(*CreateDeviceInfo(csrVersion));
     auto signedDataPayload =
         cppbor::Array().add(std::move(deviceInfo)).add(challenge).add(std::move(keysToSign));
     auto signedData = constructCoseSign1(devicePrivKey_, signedDataPayload.encode(), {} /* aad */);
 
     return cppbor::Array()
-        .add(3 /* version */)
+        .add(csrVersion)
         .add(cppbor::Map() /* UdsCerts */)
         .add(std::move(*bcc_.clone()->asArray()) /* DiceCertChain */)
         .add(std::move(*signedData) /* SignedData */);
diff --git a/include/keymaster/contexts/pure_soft_remote_provisioning_context.h b/include/keymaster/contexts/pure_soft_remote_provisioning_context.h
index 630446c..7d7e51e 100644
--- a/include/keymaster/contexts/pure_soft_remote_provisioning_context.h
+++ b/include/keymaster/contexts/pure_soft_remote_provisioning_context.h
@@ -38,7 +38,7 @@
     ~PureSoftRemoteProvisioningContext() override = default;
     std::vector<uint8_t> DeriveBytesFromHbk(const std::string& context,
                                             size_t numBytes) const override;
-    std::unique_ptr<cppbor::Map> CreateDeviceInfo() const override;
+    std::unique_ptr<cppbor::Map> CreateDeviceInfo(uint32_t csrVersion) const override;
     cppcose::ErrMsgOr<std::vector<uint8_t>>
     BuildProtectedDataPayload(bool isTestMode,                     //
                               const std::vector<uint8_t>& macKey,  //
diff --git a/include/keymaster/remote_provisioning_context.h b/include/keymaster/remote_provisioning_context.h
index f6e3b72..cc65502 100644
--- a/include/keymaster/remote_provisioning_context.h
+++ b/include/keymaster/remote_provisioning_context.h
@@ -34,7 +34,7 @@
     virtual ~RemoteProvisioningContext(){};
     virtual std::vector<uint8_t> DeriveBytesFromHbk(const std::string& context,
                                                     size_t numBytes) const = 0;
-    virtual std::unique_ptr<cppbor::Map> CreateDeviceInfo() const = 0;
+    virtual std::unique_ptr<cppbor::Map> CreateDeviceInfo(uint32_t csrVersion) const = 0;
     virtual cppcose::ErrMsgOr<std::vector<uint8_t>>
     BuildProtectedDataPayload(bool testMode,                       //
                               const std::vector<uint8_t>& macKey,  //
