diff --git a/tools/fw-update/pldm_fwup_pkg_creator.py b/tools/fw-update/pldm_fwup_pkg_creator.py
index ad60bbf..4c3d233 100755
--- a/tools/fw-update/pldm_fwup_pkg_creator.py
+++ b/tools/fw-update/pldm_fwup_pkg_creator.py
@@ -4,6 +4,7 @@
 
 import argparse
 import binascii
+import enum
 import json
 import math
 import os
@@ -48,6 +49,15 @@
 }
 
 
+class ComponentOptions(enum.IntEnum):
+    """
+    Enum to represent ComponentOptions
+    """
+
+    ForceUpdate = 0
+    UseComponentCompStamp = 1
+
+
 def check_string_length(string):
     """Check if the length of the string is not greater than 255."""
     if len(string) > 255:
@@ -396,15 +406,56 @@
         pldm_fw_up_pkg.write(record_descriptors)
 
 
+def get_component_comparison_stamp(component):
+    """
+    Get component comparison stamp from metadata file.
+
+    This function checks if ComponentOptions field is having value 1. For
+    ComponentOptions 1, ComponentComparisonStamp value from metadata file
+    is used and Default value 0xFFFFFFFF is used for other Component Options.
+
+    Parameters:
+        component: Component image info
+    Returns:
+        component_comparison_stamp: Component Comparison stamp
+    """
+    component_comparison_stamp = 0xFFFFFFFF
+    if (
+        int(ComponentOptions.UseComponentCompStamp)
+        in component["ComponentOptions"]
+    ):
+        # Use FD vendor selected value from metadata file
+        if "ComponentComparisonStamp" not in component.keys():
+            sys.exit(
+                "ERROR: ComponentComparisonStamp is required"
+                " when value '1' is specified in ComponentOptions field"
+            )
+        else:
+            try:
+                tmp_component_cmp_stmp = int(
+                    component["ComponentComparisonStamp"], 16
+                )
+                if 0 < tmp_component_cmp_stmp < 0xFFFFFFFF:
+                    component_comparison_stamp = tmp_component_cmp_stmp
+                else:
+                    sys.exit(
+                        "ERROR: Value for ComponentComparisonStamp "
+                        " should be  [0x01 - 0xFFFFFFFE] when "
+                        "ComponentOptions bit is set to"
+                        "'1'(UseComponentComparisonStamp)"
+                    )
+            except ValueError:  # invalid hext format
+                sys.exit("ERROR: Invalid hex for ComponentComparisonStamp")
+    return component_comparison_stamp
+
+
 def write_component_image_info_area(pldm_fw_up_pkg, metadata, image_files):
     """
     Write component image information area into the PLDM package header
 
     This function writes the ComponentImageCount and the
     ComponentImageInformation into the firmware update package by processing
-    the metadata JSON. Currently there is no support for
-    ComponentComparisonStamp field and the component option use component
-    comparison stamp.
+    the metadata JSON.
 
     Parameters:
         pldm_fw_up_pkg: PLDM FW update package
@@ -438,8 +489,8 @@
         if component_identifier < 0 or component_identifier > 0xFFFF:
             sys.exit("ERROR: ComponentIdentifier should be [0x0000 - 0xFFFF]")
 
-        # ComponentComparisonStamp not supported
-        component_comparison_stamp = 0xFFFFFFFF
+        # ComponentComparisonStamp
+        component_comparison_stamp = get_component_comparison_stamp(component)
 
         # ComponentOptions
         component_options = bitarray(16, endian="little")
