in cvm-attestation/snp.py [0:0]
def deserialize(cls, data):
"""
Deserialize a binary blob into an instance of the AttestationReport class.
"""
unpacked_data = struct.unpack(cls.FORMAT_STRING, data)
instance = cls()
instance.version = unpacked_data[0]
instance.guest_svn = unpacked_data[1]
instance.policy = unpacked_data[2]
instance.family_id = list(unpacked_data[3])
instance.image_id = list(unpacked_data[4])
instance.vmpl = unpacked_data[5]
instance.sig_algo = unpacked_data[6]
instance.current_tcb = TcbVersion.deserialize(struct.pack('<Q', unpacked_data[7]))
instance.plat_info = PlatformInfo.deserialize(struct.pack('<Q', unpacked_data[8]))
instance.key_info = KeyInfo.deserialize(struct.pack('<I', unpacked_data[9]))
instance._reserved_0 = unpacked_data[10]
instance.report_data = list(unpacked_data[11])
instance.measurement = list(unpacked_data[12])
instance.host_data = list(unpacked_data[13])
instance.id_key_digest = list(unpacked_data[14])
instance.author_key_digest = list(unpacked_data[15])
instance.report_id = list(unpacked_data[16])
instance.report_id_ma = list(unpacked_data[17])
instance.reported_tcb = TcbVersion.deserialize(struct.pack('<Q', unpacked_data[18]))
instance._reserved_1 = list(unpacked_data[19])
instance.chip_id = list(unpacked_data[20])
instance.committed_tcb = TcbVersion.deserialize(struct.pack('<Q', unpacked_data[21]))
instance.current_build = unpacked_data[22]
instance.current_minor = unpacked_data[23]
instance.current_major = unpacked_data[24]
instance._reserved_2 = unpacked_data[25]
instance.committed_build = unpacked_data[26]
instance.committed_minor = unpacked_data[27]
instance.committed_major = unpacked_data[28]
instance._reserved_3 = unpacked_data[29]
instance.launch_tcb = TcbVersion.deserialize(struct.pack('<Q', unpacked_data[30]))
instance._reserved_4 = list(unpacked_data[31])
instance.signature = Signature.deserialize(unpacked_data[32])
return instance