diff --git a/components/common/crc32/crc32.h b/components/common/crc32/crc32.h
new file mode 100644
index 0000000..a04e380
--- /dev/null
+++ b/components/common/crc32/crc32.h
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2022, Arm Limited. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#ifndef COMMON_CRC32_H
+#define COMMON_CRC32_H
+
+#include <stddef.h>
+#include <stdint.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * \brief Calculate a CRC32 over the provided data
+ *
+ * \param[in]  	crc		    The starting CRC for previous data
+ * \param[in]  	buf  		The buffer to calculate the CRC over
+ * \param[in]  	size		Number of bytes in the buffer
+ *
+ * \return	The calculated CRC32
+ */
+uint32_t crc32(uint32_t crc, const unsigned char *buf, size_t size);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* COMMON_CRC32_H */
diff --git a/components/common/crc32/native/component.cmake b/components/common/crc32/native/component.cmake
new file mode 100644
index 0000000..9bbf298
--- /dev/null
+++ b/components/common/crc32/native/component.cmake
@@ -0,0 +1,13 @@
+#-------------------------------------------------------------------------------
+# Copyright (c) 2022, Arm Limited and Contributors. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+#-------------------------------------------------------------------------------
+if (NOT DEFINED TGT)
+	message(FATAL_ERROR "mandatory parameter TGT is not defined.")
+endif()
+
+target_sources(${TGT} PRIVATE
+	"${CMAKE_CURRENT_LIST_DIR}/crc32.c"
+	)
diff --git a/components/common/crc32/native/crc32.c b/components/common/crc32/native/crc32.c
new file mode 100644
index 0000000..705db65
--- /dev/null
+++ b/components/common/crc32/native/crc32.c
@@ -0,0 +1,77 @@
+/*
+ * Copyright (c) 1986 Gary S. Brown
+ * Copyright (c) 2022, Arm Limited. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ * Based on version by Gary S. Brown. Original source file:
+ * https://web.mit.edu/freebsd/head/sys/libkern/crc32.c
+ */
+
+#include <common/crc32/crc32.h>
+
+/* For compatability with TF-A components */
+uint32_t tf_crc32(uint32_t crc, const unsigned char *buf, size_t size);
+
+static const uint32_t crc32_tab[] = {
+	0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f,
+	0xe963a535, 0x9e6495a3,	0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
+	0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2,
+	0xf3b97148, 0x84be41de,	0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
+	0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec,	0x14015c4f, 0x63066cd9,
+	0xfa0f3d63, 0x8d080df5,	0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,
+	0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,	0x35b5a8fa, 0x42b2986c,
+	0xdbbbc9d6, 0xacbcf940,	0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
+	0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423,
+	0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
+	0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d,	0x76dc4190, 0x01db7106,
+	0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
+	0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d,
+	0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,
+	0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
+	0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
+	0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7,
+	0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,
+	0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa,
+	0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
+	0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81,
+	0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,
+	0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84,
+	0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
+	0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
+	0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,
+	0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e,
+	0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
+	0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55,
+	0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
+	0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28,
+	0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
+	0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f,
+	0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,
+	0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
+	0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
+	0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69,
+	0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,
+	0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc,
+	0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
+	0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693,
+	0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,
+	0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d
+};
+
+uint32_t crc32(uint32_t crc, const unsigned char *buf, size_t size)
+{
+	uint32_t calc_crc = ~crc;
+	const uint8_t *local_buf = buf;
+	size_t local_size = size;
+
+	while (local_size--)
+		calc_crc = crc32_tab[(calc_crc ^ *local_buf++) & 0xFF] ^ (calc_crc >> 8);
+
+	return calc_crc ^ ~0U;
+}
+
+uint32_t tf_crc32(uint32_t crc, const unsigned char *buf, size_t size)
+{
+	return crc32(crc, buf, size);
+}
diff --git a/components/common/crc32/test/component.cmake b/components/common/crc32/test/component.cmake
new file mode 100644
index 0000000..34af66d
--- /dev/null
+++ b/components/common/crc32/test/component.cmake
@@ -0,0 +1,13 @@
+#-------------------------------------------------------------------------------
+# Copyright (c) 2022, Arm Limited and Contributors. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+#-------------------------------------------------------------------------------
+if (NOT DEFINED TGT)
+	message(FATAL_ERROR "mandatory parameter TGT is not defined.")
+endif()
+
+target_sources(${TGT} PRIVATE
+	"${CMAKE_CURRENT_LIST_DIR}/crc32_test.cpp"
+	)
diff --git a/components/common/crc32/test/crc32_test.cpp b/components/common/crc32/test/crc32_test.cpp
new file mode 100644
index 0000000..a21286f
--- /dev/null
+++ b/components/common/crc32/test/crc32_test.cpp
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2022, Arm Limited and Contributors. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#include <common/crc32/crc32.h>
+#include <CppUTest/TestHarness.h>
+
+TEST_GROUP(Crc32Tests)
+{
+
+};
+
+/*
+ * Expected results obtained from: https://crc32.online/
+ */
+TEST(Crc32Tests, shortString)
+{
+	const unsigned char test_input[] = "Hello";
+	uint32_t expected_result = 0xf7d18982;
+	uint32_t input_crc = 0;
+
+	uint32_t result = crc32(input_crc, test_input, sizeof(test_input) - 1);
+
+	UNSIGNED_LONGS_EQUAL(expected_result, result);
+}
+
+TEST(Crc32Tests, longString)
+{
+	const unsigned char test_input[] =
+		"The boy stood on the burning deck Whence all but he had fled";
+	uint32_t expected_result = 0x1f11704c;
+	uint32_t input_crc = 0;
+
+	uint32_t result = crc32(input_crc, test_input, sizeof(test_input) - 1);
+
+	UNSIGNED_LONGS_EQUAL(expected_result, result);
+}
+
+TEST(Crc32Tests, multiPart)
+{
+	const unsigned char test_input_1[] =
+		"The boy stood on the burning deck ";
+	const unsigned char test_input_2[] =
+		"Whence all but he had fled";
+
+	uint32_t expected_result = 0x1f11704c;
+	uint32_t result = 0;
+
+	result = crc32(result, test_input_1, sizeof(test_input_1) - 1);
+	result = crc32(result, test_input_2, sizeof(test_input_2) - 1);
+
+	UNSIGNED_LONGS_EQUAL(expected_result, result);
+}
\ No newline at end of file
diff --git a/components/common/crc32/tf-a/component.cmake b/components/common/crc32/tf-a/component.cmake
new file mode 100644
index 0000000..39636d5
--- /dev/null
+++ b/components/common/crc32/tf-a/component.cmake
@@ -0,0 +1,14 @@
+#-------------------------------------------------------------------------------
+# Copyright (c) 2022, Arm Limited and Contributors. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+#-------------------------------------------------------------------------------
+if (NOT DEFINED TGT)
+	message(FATAL_ERROR "mandatory parameter TGT is not defined.")
+endif()
+
+target_sources(${TGT} PRIVATE
+	"${CMAKE_CURRENT_LIST_DIR}/crc32.c"
+	"${TFA_SOURCE_DIR}/common/tf_crc32.c"
+	)
diff --git a/components/common/crc32/tf-a/crc32.c b/components/common/crc32/tf-a/crc32.c
new file mode 100644
index 0000000..abc0f8a
--- /dev/null
+++ b/components/common/crc32/tf-a/crc32.c
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2022, Arm Limited. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ */
+
+#include <common/crc32/crc32.h>
+#include <common/tf_crc32.h>
+
+
+uint32_t crc32(uint32_t crc, const unsigned char *buf, size_t size)
+{
+	return tf_crc32(crc, buf, size);
+}
