def decrypt_data(encryption_key, data, iv=None): """ Function to decrypt the outData in the result Parameters: - encryption_key is the key used to decrypt the encrypted data of the response. - iv is an initialization vector if required by the data encryption algorithm. The default is all zeros. - data is the parameter data in outData part of workorder request as per TCF API 6.1.7 Work Order Data Formats. Returns decrypted data as a string """ if not data: logger.debug("Outdata is empty, nothing to decrypt") return data data_byte = crypto.base64_to_byte_array(data) logger.debug("encryption_key: %s", encryption_key) if iv is not None: decrypt_result = crypto.SKENC_DecryptMessage(encryption_key, iv, data_byte) else: decrypt_result = crypto.SKENC_DecryptMessage(encryption_key, data_byte) result = crypto.byte_array_to_string(decrypt_result) logger.info("Decryption result at client - %s", result) return result
def evaluate(self) : serialized_byte_array = crypto.string_to_byte_array(self.work_order) encrypted_request = crypto.byte_array_to_base64(serialized_byte_array) try : encoded_encrypted_response = self.enclave_service.send_to_sgx_worker(encrypted_request) assert encoded_encrypted_response except : logger.exception('workorder request invocation failed') raise try : decrypted_response = crypto.base64_to_byte_array(encoded_encrypted_response) response_string = crypto.byte_array_to_string(decrypted_response) response_parsed = json.loads(response_string[0:-1]) except : logger.exception('workorder response is invalid') raise return response_parsed