Author: Amaury Forgeot d'Arc <amaur...@gmail.com> Branch: py3k Changeset: r75913:2cf9d354d605 Date: 2015-02-16 09:52 +0100 http://bitbucket.org/pypy/pypy/changeset/2cf9d354d605/
Log: SSL passwords can be unicode. diff --git a/pypy/module/_ssl/interp_ssl.py b/pypy/module/_ssl/interp_ssl.py --- a/pypy/module/_ssl/interp_ssl.py +++ b/pypy/module/_ssl/interp_ssl.py @@ -1094,13 +1094,16 @@ if pw_info.w_callable: try: w_result = space.call_function(pw_info.w_callable) - try: - password = pw_info.space.bufferstr_w(w_result) - except OperationError as e: - if not e.match(space, space.w_TypeError): - raise - raise oefmt(space.w_TypeError, - "password callback must return a string") + if space.isinstance_w(w_result, space.w_unicode): + password = space.str_w(w_result) + else: + try: + password = pw_info.space.bufferstr_w(w_result) + except OperationError as e: + if not e.match(space, space.w_TypeError): + raise + raise oefmt(space.w_TypeError, + "password callback must return a string") except OperationError as e: pw_info.operationerror = e return rffi.cast(rffi.INT, -1) @@ -1362,13 +1365,16 @@ if space.is_true(space.callable(w_password)): pw_info.w_callable = w_password else: - try: - pw_info.password = space.bufferstr_w(w_password) - except OperationError as e: - if not e.match(space, space.w_TypeError): - raise - raise oefmt(space.w_TypeError, - "password should be a string or callable") + if space.isinstance_w(w_password, space.w_unicode): + pw_info.password = space.str_w(w_password) + else: + try: + pw_info.password = space.bufferstr_w(w_password) + except OperationError as e: + if not e.match(space, space.w_TypeError): + raise + raise oefmt(space.w_TypeError, + "password should be a string or callable") libssl_SSL_CTX_set_default_passwd_cb( self.ctx, _password_callback) _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit