def get_fuzz_verifiers(self, threaded=False):
"""return list of password verifiers (including external libs)
used by fuzz testing.
verifiers should be callable with signature
``func(password: unicode, hash: ascii str) -> ok: bool``.
"""
handler = self.handler
verifiers = []
# call all methods starting with prefix in order to create
for method_name in self.fuzz_verifiers:
func = getattr(self, method_name)()
if func is not None:
verifiers.append(func)
# create verifiers for any other available backends
# NOTE: skipping this under threading test,
# since backend switching isn't threadsafe (yet)
if hasattr(handler, "backends") and TEST_MODE("full") and not threaded:
def maker(backend):
def func(secret, hash):
orig_backend = handler.get_backend()
try:
handler.set_backend(backend)
return handler.verify(secret, hash)
finally:
handler.set_backend(orig_backend)
func.__name__ = "check_" + backend + "_backend"
func.__doc__ = backend + "-backend"
return func
for backend in iter_alt_backends(handler):
verifiers.append(maker(backend))
return verifiers
评论列表
文章目录