'Compute a hash of the underlying PKey object.
The purpose of this method is to allow you to determine if two
certificates share the same public key; it is not really useful for
anything else.
In versions of Twisted prior to 15.0, C{keyHash} used a technique
involving certificate requests for computing the hash that was not
stable in the face of changes to the underlying OpenSSL library.
@return: Return a 32-character hexadecimal string uniquely identifying
this public key, I{for this version of Twisted}.
@rtype: native L{str}'

def keyHash(self):

    raw = crypto.dump_publickey(crypto.FILETYPE_ASN1, self.original)
    h = md5()
    h.update(raw)
    return h.hexdigest()
