Hello community,

here is the log from the commit of package python-Flask-HTTPAuth for 
openSUSE:Leap:15.2 checked in at 2020-02-19 18:48:48
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Leap:15.2/python-Flask-HTTPAuth (Old)
 and      /work/SRC/openSUSE:Leap:15.2/.python-Flask-HTTPAuth.new.26092 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-Flask-HTTPAuth"

Wed Feb 19 18:48:48 2020 rev:3 rq:776301 version:3.3.0

Changes:
--------
--- 
/work/SRC/openSUSE:Leap:15.2/python-Flask-HTTPAuth/python-Flask-HTTPAuth.changes
    2020-01-15 15:45:59.975342452 +0100
+++ 
/work/SRC/openSUSE:Leap:15.2/.python-Flask-HTTPAuth.new.26092/python-Flask-HTTPAuth.changes
 2020-02-19 18:48:49.315038269 +0100
@@ -1,0 +2,8 @@
+Tue May 28 07:33:27 UTC 2019 - Tomáš Chvátal <[email protected]>
+
+- Update to 3.3.0:
+  * Use constant time string comparisons #82 (commit1, commit2) (thanks 
Brendan Long!)
+  * Edited and changed the usage of JWT, because in fact the code and 
documentation uses JWS tokens. #79 (commit) (thanks unuseless!)
+  * Documentation improvements #77 (commit)
+
+-------------------------------------------------------------------

Old:
----
  Flask-HTTPAuth-3.2.4.tar.gz

New:
----
  Flask-HTTPAuth-3.3.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-Flask-HTTPAuth.spec ++++++
--- /var/tmp/diff_new_pack.6oXSdB/_old  2020-02-19 18:48:49.627038601 +0100
+++ /var/tmp/diff_new_pack.6oXSdB/_new  2020-02-19 18:48:49.631038605 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package python-Flask-HTTPAuth
 #
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
 # Copyright (c) 2017 Dr. Axel Braun
 #
 # All modifications and additions to the file contributed by third parties
@@ -20,7 +20,7 @@
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 %define modname Flask-HTTPAuth
 Name:           python-%{modname}
-Version:        3.2.4
+Version:        3.3.0
 Release:        0
 Summary:        Basic and Digest HTTP authentication for Flask routes
 License:        MIT

++++++ Flask-HTTPAuth-3.2.4.tar.gz -> Flask-HTTPAuth-3.3.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Flask-HTTPAuth-3.2.4/Flask_HTTPAuth.egg-info/PKG-INFO 
new/Flask-HTTPAuth-3.3.0/Flask_HTTPAuth.egg-info/PKG-INFO
--- old/Flask-HTTPAuth-3.2.4/Flask_HTTPAuth.egg-info/PKG-INFO   2018-06-18 
00:28:40.000000000 +0200
+++ new/Flask-HTTPAuth-3.3.0/Flask_HTTPAuth.egg-info/PKG-INFO   2019-05-19 
12:24:54.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: Flask-HTTPAuth
-Version: 3.2.4
+Version: 3.3.0
 Summary: Basic and Digest HTTP authentication for Flask routes
 Home-page: http://github.com/miguelgrinberg/flask-httpauth/
 Author: Miguel Grinberg
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-HTTPAuth-3.2.4/PKG-INFO 
new/Flask-HTTPAuth-3.3.0/PKG-INFO
--- old/Flask-HTTPAuth-3.2.4/PKG-INFO   2018-06-18 00:28:40.000000000 +0200
+++ new/Flask-HTTPAuth-3.3.0/PKG-INFO   2019-05-19 12:24:55.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: Flask-HTTPAuth
-Version: 3.2.4
+Version: 3.3.0
 Summary: Basic and Digest HTTP authentication for Flask routes
 Home-page: http://github.com/miguelgrinberg/flask-httpauth/
 Author: Miguel Grinberg
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-HTTPAuth-3.2.4/docs/index.rst 
new/Flask-HTTPAuth-3.3.0/docs/index.rst
--- old/Flask-HTTPAuth-3.2.4/docs/index.rst     2018-06-15 08:18:36.000000000 
+0200
+++ new/Flask-HTTPAuth-3.3.0/docs/index.rst     2019-05-19 11:33:53.000000000 
+0200
@@ -44,7 +44,7 @@
 
     @auth.hash_password
     def hash_pw(password):
-        return md5(password).hexdigest()
+        return md5(password.encode('utf-8')).hexdigest()
 
 When the ``hash_password`` callback is provided access will be granted when 
``get_password(username) == hash_password(password)``.
 
@@ -162,12 +162,17 @@
 
 The ``verify_token`` callback receives the authentication credentials provided 
by the client on the ``Authorization`` header. This can be a simple token, or 
can contain multiple arguments, which the function will have to parse and 
extract from the string.
 
-In the examples directory you can find a complete example that uses JWT tokens.
+In the examples directory you can find a complete example that uses
+JWS tokens.  JWS tokens are similar to JWT tokens.  However using JWT
+tokens would require an external dependency to handle JWT.
 
 Using Multiple Authentication Schemes
 -------------------------------------
 
-Applications sometimes need to support a combination of authentication 
methods. For example, a web application could be authenticated by sending 
client id and secret over basic authentication, while third party API clients 
use a JWT bearer token. The `MultiAuth` class allows you to protect a route 
with more than one authentication object. To grant access to the endpoint, one 
of the authentication methods must validate.
+Applications sometimes need to support a combination of authentication
+methods. For example, a web application could be authenticated by
+sending client id and secret over basic authentication, while third
+party API clients use a JWS or JWT bearer token. The `MultiAuth` class allows 
you to protect a route with more than one authentication object. To grant 
access to the endpoint, one of the authentication methods must validate.
 
 In the examples directory you can find a complete example that uses basic and 
token authentication.
 
@@ -327,11 +332,11 @@
 
   This class handles HTTP authentication with custom schemes for Flask routes.
 
-  .. method:: __init__(scheme, realm=None)
+  .. method:: __init__(scheme='Bearer', realm=None)
 
     Create a token authentication object.
 
-    The ``scheme`` argument must be provided to be used in the 
``WWW-Authenticate`` response.
+    The ``scheme`` argument can be use to specify the scheme to be used in the 
``WWW-Authenticate`` response.
 
     The ``realm`` argument can be used to provide an application defined realm 
with the ``WWW-Authenticate`` header.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-HTTPAuth-3.2.4/flask_httpauth.py 
new/Flask-HTTPAuth-3.3.0/flask_httpauth.py
--- old/Flask-HTTPAuth-3.2.4/flask_httpauth.py  2018-06-18 00:27:44.000000000 
+0200
+++ new/Flask-HTTPAuth-3.3.0/flask_httpauth.py  2019-05-19 12:24:47.000000000 
+0200
@@ -13,8 +13,9 @@
 from random import Random, SystemRandom
 from flask import request, make_response, session
 from werkzeug.datastructures import Authorization
+from werkzeug.security import safe_str_cmp
 
-__version__ = '3.2.4'
+__version__ = '3.3.0'
 
 
 class HTTPAuth(object):
@@ -143,7 +144,8 @@
                 client_password = self.hash_password_callback(username,
                                                               client_password)
         return client_password is not None and \
-            client_password == stored_password
+            stored_password is not None and \
+            safe_str_cmp(client_password, stored_password)
 
 
 class HTTPDigestAuth(HTTPAuth):
@@ -169,14 +171,20 @@
             return session["auth_nonce"]
 
         def default_verify_nonce(nonce):
-            return nonce == session.get("auth_nonce")
+            session_nonce = session.get("auth_nonce")
+            if nonce is None or session_nonce is None:
+                return False
+            return safe_str_cmp(nonce, session_nonce)
 
         def default_generate_opaque():
             session["auth_opaque"] = _generate_random()
             return session["auth_opaque"]
 
         def default_verify_opaque(opaque):
-            return opaque == session.get("auth_opaque")
+            session_opaque = session.get("auth_opaque")
+            if opaque is None or session_opaque is None:
+                return False
+            return safe_str_cmp(opaque, session_opaque)
 
         self.generate_nonce(default_generate_nonce)
         self.generate_opaque(default_generate_opaque)
@@ -235,7 +243,7 @@
         ha2 = md5(a2.encode('utf-8')).hexdigest()
         a3 = ha1 + ":" + auth.nonce + ":" + ha2
         response = md5(a3.encode('utf-8')).hexdigest()
-        return response == auth.response
+        return safe_str_cmp(response, auth.response)
 
 
 class HTTPTokenAuth(HTTPAuth):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-HTTPAuth-3.2.4/setup.cfg 
new/Flask-HTTPAuth-3.3.0/setup.cfg
--- old/Flask-HTTPAuth-3.2.4/setup.cfg  2018-06-18 00:28:40.000000000 +0200
+++ new/Flask-HTTPAuth-3.3.0/setup.cfg  2019-05-19 12:24:55.000000000 +0200
@@ -1,5 +1,4 @@
 [egg_info]
 tag_build = 
 tag_date = 0
-tag_svn_revision = 0
 


Reply via email to