'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'

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)
