﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	resolution	keywords	cc	parents
5549	python3 password check does not work	Marco Strigl		"I have a installation of mediagoblin on openSUSE Tumbleweed.
I run python3. 

Everything runs fine until I logout. I am not able to login, because the stored_hash seems not to be encoded.

If I print the stored_hash I get: 
{{{ b'$2b$12$i2E5Kg.Ro82c6WqNgrrtPuURbG0cSyMHjN/Aoeam0/5flHuY3CQCa' }}}

In python3-bcrypto the following check raises the error:
{{{ if isinstance(password, six.text_type) or isinstance(salt, six.text_type): }}}

And the traceback attached: 

{{{
Traceback (most recent call last):
  File ""/usr/lib/python3.6/site-packages/waitress-1.1.0-py3.6.egg/waitress/channel.py"", line 338, in service
    task.service()
  File ""/usr/lib/python3.6/site-packages/waitress-1.1.0-py3.6.egg/waitress/task.py"", line 169, in service
    self.execute()
  File ""/usr/lib/python3.6/site-packages/waitress-1.1.0-py3.6.egg/waitress/task.py"", line 399, in execute
    app_iter = self.channel.server.application(env, start_response)
  File ""/srv/mediagoblin.example.org/mediagoblin/mediagoblin/app.py"", line 342, in __call__
    return self.call_backend(environ, start_response)
  File ""/srv/mediagoblin.example.org/mediagoblin/lib/python3.6/site-packages/Werkzeug-0.12.2-py3.6.egg/werkzeug/wsgi.py"", line 600, in __call__
    return self.app(environ, start_response)
  File ""/srv/mediagoblin.example.org/mediagoblin/mediagoblin/app.py"", line 276, in call_backend
    return self._finish_call_backend(request, environ, start_response)
  File ""/srv/mediagoblin.example.org/mediagoblin/mediagoblin/app.py"", line 318, in _finish_call_backend
    response = controller(request)
  File ""/srv/mediagoblin.example.org/mediagoblin/mediagoblin/decorators.py"", line 367, in wrapper
    return controller(request, *args, **kwargs)
  File ""/srv/mediagoblin.example.org/mediagoblin/mediagoblin/auth/views.py"", line 93, in login
    login_form.password.data)
  File ""/srv/mediagoblin.example.org/mediagoblin/mediagoblin/auth/tools.py"", line 167, in check_login_simple
    if not auth.check_password(password, user.pw_hash):
  File ""/srv/mediagoblin.example.org/mediagoblin/mediagoblin/auth/__init__.py"", line 43, in check_password
    raw_pass, stored_hash, extra_salt)
  File ""/srv/mediagoblin.example.org/mediagoblin/mediagoblin/tools/pluginapi.py"", line 308, in hook_handle
    result = callable(*args, **kwargs)
  File ""/srv/mediagoblin.example.org/mediagoblin/mediagoblin/plugins/basic_auth/__init__.py"", line 92, in check_password
    stored_hash, extra_salt)
  File ""/srv/mediagoblin.example.org/mediagoblin/mediagoblin/plugins/basic_auth/tools.py"", line 45, in bcrypt_check_password
    hashed_pass = bcrypt.hashpw(raw_pass.encode('utf-8'), stored_hash)
  File ""/usr/lib64/python3.6/site-packages/bcrypt/__init__.py"", line 65, in hashpw
    raise TypeError(""Unicode-objects must be encoded before hashing"")
TypeError: Unicode-objects must be encoded before hashing
}}}"	defect	closed	major		programming	no-action			
