def set_fingerprint(self, fingerprint):
'''
If fingerprint is valid, set our stored fingerprint to fingerprint, and
return True.
Otherwise, return False.
Called by TorControlClientProtocol.
'''
fingerprint = fingerprint.strip()
# Do some basic validation of the fingerprint
if not len(fingerprint) == 40:
logging.warning("Bad fingerprint length %d: %s", len(fingerprint), fingerprint)
return False
if not all(c in string.hexdigits for c in fingerprint):
logging.warning("Bad fingerprint characters: %s", fingerprint)
return False
# Is this the first time we've been told a fingerprint?
if self.fingerprint is None:
self.fingerprint = fingerprint
self.generate_noise()
else:
if self.fingerprint != fingerprint:
logging.warning("Received different fingerprint %s, keeping original fingerprint %s",
self.fingerprint, fingerprint)
else:
logging.debug("Duplicate fingerprint received %s", fingerprint)
return True
评论列表
文章目录