code: def to_digestable(self, origin=None):
          
  
          if not self.is_absolute():
              if origin is None or not origin.is_absolute():
                  raise NeedAbsoluteNameOrOrigin
              labels = list(self.labels)
              labels.extend(list(origin.labels))
          else:
              labels = self.labels
          dlabels = ["%s%s" % (chr(len(x)), x.lower()) for x in labels]
          return ''.join(dlabels)
docs: Convert name to a format suitable for digesting in hashes.
  
          The name is canonicalized and converted to uncompressed wire format.
  
          @param origin: If the name is relative and origin is not None, then
          origin will be appended to it.
          @type origin: dns.name.Name object
          @raises NeedAbsoluteNameOrOrigin: All names in wire format are
          absolute.  If self is a relative name, then an origin must be supplied;
          if it is missing, then this exception is raised
          @rtype: string