docs: def scan(self, result):
          '''
          Validate signature results.
          '''
          if self.enabled is True:
              if result.valid is True:
                  if result.description.lower().startswith(self.SIGNATURE_DESCRIPTION) is True:
                      # Read in the first 64 bytes of the suspected encrypted
                      # uImage header
                      fd = self.module.config.open_file(result.file.path, offset=result.offset)
                      encrypted_header_data = binwalk.core.compat.str2bytes(fd.read(64))
                      fd.close()
  
                      # Decrypt the header
                      decrypted_header_data = self._hilink_decrypt(encrypted_header_data)
  
                      # Pull out the image size and image name fields from the decrypted uImage header
                      # and add them to the printed description.
                      result.size = struct.unpack(b">L", decrypted_header_data[12:16])[0]
                      result.description += ", size: %d" % (result.size)
                      # NOTE: The description field should be 32 bytes? Hilink seems to use only 24 bytes for this field,
                      #       even though the header size is still 64 bytes?
                      result.description += ', image name: "%s"' % binwalk.core.compat.bytes2str(decrypted_header_data[32:56]).strip("\x00")
  
                      # Do some basic validation on the decrypted size and image
                      # name fields
                      if result.size > (result.file.size - result.offset):
                          result.valid = False
                      if not all(c in string.printable for c in result.description):
                          result.valid = False