in src/local_gpu_verifier/src/verifier/rim/__init__.py [0:0]
def parse_measurements(self, settings):
""" Lists the measurements of the Resource tags in the base RIM.
Args:
settings (config.HopperSettings): the object containing the various config info.
Raises:
ElementNotFoundError: it is raised if a required element is not found.
InvalidMeasurementIndexError: it is raised in case multiple measurement are assigned same index.
NoRIMMeasurementsError: it is raised in case there are no golden measurements in the RIM file.
"""
self.measurements_obj = dict()
Payload = RIM.get_element(self.root, "Payload")
if Payload is None:
err_msg = "Payload not found in the RIM."
info_log.error(err_msg)
raise ElementNotFoundError(err_msg)
for child in Payload:
if child.attrib['active'] == 'False':
active = False
else:
active =True
index = int(child.attrib['index'])
alternatives = int(child.attrib['alternatives'])
measurements_values = list()
for i in range(alternatives):
measurements_values.append(child.attrib[settings.HashFunctionNamespace + 'Hash' + str(i)])
golden_measurement = GoldenMeasurement(component = self.rim_name,
values = measurements_values,
name = child.attrib['name'],
index = index,
size = int(child.attrib['size']),
alternatives = alternatives,
active = active)
if index in self.measurements_obj:
raise InvalidMeasurementIndexError(f"Multiple measurement are assigned same index in {self.rim_name} rim.")
self.measurements_obj[index] = golden_measurement
if len(self.measurements_obj) == 0:
raise NoRIMMeasurementsError(f"\tNo golden measurements found in {self.rim_name} rim.\n\tQuitting now.")
event_log.debug(f"{self.rim_name} golden measurements are : \n\t\t\t\t\t\t\t")
for idx in self.measurements_obj:
event_log.debug(f"\n\t\t\t\t\t\t\t index : {idx}")
event_log.debug(f"\t\t\t\t\t\t\t number of alternative values : {self.measurements_obj[idx].get_number_of_alternatives()}")
for i in range(self.measurements_obj[idx].get_number_of_alternatives()):
event_log.debug(f"\t\t\t\t\t\t\t\t value {i + 1} : {self.measurements_obj[idx].get_value_at_index(i)}")
if self.rim_name == 'driver':
settings.mark_rim_driver_measurements_as_available()
else:
settings.mark_rim_vbios_measurements_as_available()