diff --git a/fw-update/package_parser.cpp b/fw-update/package_parser.cpp
index 6acb7ba..4f491ce 100644
--- a/fw-update/package_parser.cpp
+++ b/fw-update/package_parser.cpp
@@ -275,7 +275,7 @@
         throw InternalFailure();
     }
 
-    auto calcChecksum = crc32(pkgHdr.data(), offset);
+    auto calcChecksum = pldm_edac_crc32(pkgHdr.data(), offset);
     auto checksum = static_cast<PackageHeaderChecksum>(
         le32toh(pkgHdr[offset] | (pkgHdr[offset + 1] << 8) |
                 (pkgHdr[offset + 2] << 16) | (pkgHdr[offset + 3] << 24)));
diff --git a/libpldmresponder/fru.cpp b/libpldmresponder/fru.cpp
index 440057f..e3b89d0 100644
--- a/libpldmresponder/fru.cpp
+++ b/libpldmresponder/fru.cpp
@@ -364,7 +364,7 @@
     if (table.size())
     {
         tempTable = tableResize();
-        checksum = crc32(tempTable.data(), tempTable.size());
+        checksum = pldm_edac_crc32(tempTable.data(), tempTable.size());
     }
     response.resize(hdrSize + tempTable.size() + sizeof(checksum), 0);
     std::copy(tempTable.begin(), tempTable.end(), response.begin() + hdrSize);
@@ -381,7 +381,7 @@
     if (table.size())
     {
         tempTable = tableResize();
-        checksum = crc32(tempTable.data(), tempTable.size());
+        checksum = pldm_edac_crc32(tempTable.data(), tempTable.size());
     }
 }
 
@@ -412,7 +412,7 @@
     }
 
     auto pads = pldm::utils::getNumPadBytes(recordTableSize);
-    crc32(fruData.data(), recordTableSize + pads);
+    pldm_edac_crc32(fruData.data(), recordTableSize + pads);
 
     auto iter = fruData.begin() + recordTableSize + pads;
     std::copy_n(reinterpret_cast<const uint8_t*>(&checksum), sizeof(checksum),
diff --git a/oem/ibm/libpldmresponder/file_table.cpp b/oem/ibm/libpldmresponder/file_table.cpp
index d91c482..402934b 100644
--- a/oem/ibm/libpldmresponder/file_table.cpp
+++ b/oem/ibm/libpldmresponder/file_table.cpp
@@ -116,7 +116,7 @@
     }
 
     // Calculate the checksum
-    checkSum = crc32(fileTable.data(), fileTable.size());
+    checkSum = pldm_edac_crc32(fileTable.data(), fileTable.size());
 }
 
 Table FileTable::operator()() const
diff --git a/platform-mc/event_manager.cpp b/platform-mc/event_manager.cpp
index 625771f..3af26d2 100644
--- a/platform-mc/event_manager.cpp
+++ b/platform-mc/event_manager.cpp
@@ -503,7 +503,7 @@
     if (transferFlag == PLDM_PLATFORM_TRANSFER_END)
     {
         if (eventDataIntegrityChecksum !=
-            crc32(eventMessage.data(), eventMessage.size()))
+            pldm_edac_crc32(eventMessage.data(), eventMessage.size()))
         {
             lg2::error("pollForPlatformEventMessage invalid checksum.");
             return PLDM_ERROR_INVALID_DATA;
