Example #1
0
 def get_hasher(self, formatted_hash):
     hasher_name = bytes_to_native(formatted_hash.split(b"$", 1)[0])
     try:
         return self.hashers[hasher_name]
     except KeyError:
         raise ValueError(
             "unknown name (%r) or invalid hash: %r" % (
                 hasher_name, formatted_hash
             )
         )
Example #2
0
 def parse(self, formatted_hash):
     """
     Parses `formatted_hash` as returned by :meth:`format` and returns a
     :class:`PasswordHash`.
     """
     if not b"$" in formatted_hash:
         raise ValueError("name missing: %r" % formatted_hash)
     name, hash = formatted_hash.split(b"$", 1)
     name = bytes_to_native(name)
     if name != self.name:
         raise ValueError("expected %r hash, got %r" % (self.name, name))
     return hash