Blame SOURCES/0002-Don-t-use-SIGNATURE_RSA.patch

b41bab
From 289f5bb346318d21ed70f747db0180bdb79a6d5d Mon Sep 17 00:00:00 2001
b41bab
From: Jakub Hrozek <jhrozek@redhat.com>
b41bab
Date: Sat, 3 Jul 2021 20:51:17 +0200
b41bab
Subject: [PATCH] Don't use SIGNATURE_RSA
b41bab
b41bab
---
b41bab
 requests_oauthlib/oauth1_session.py | 25 ++++++-------
b41bab
 tests/test_oauth1_session.py        | 54 +----------------------------
b41bab
 2 files changed, 11 insertions(+), 68 deletions(-)
b41bab
b41bab
diff --git a/requests_oauthlib/oauth1_session.py b/requests_oauthlib/oauth1_session.py
b41bab
index aa17f28..ea3de69 100644
b41bab
--- a/requests_oauthlib/oauth1_session.py
b41bab
+++ b/requests_oauthlib/oauth1_session.py
b41bab
@@ -9,7 +9,7 @@ import logging
b41bab
 
b41bab
 from oauthlib.common import add_params_to_uri
b41bab
 from oauthlib.common import urldecode as _urldecode
b41bab
-from oauthlib.oauth1 import SIGNATURE_HMAC, SIGNATURE_RSA, SIGNATURE_TYPE_AUTH_HEADER
b41bab
+from oauthlib.oauth1 import SIGNATURE_HMAC, SIGNATURE_TYPE_AUTH_HEADER
b41bab
 import requests
b41bab
 
b41bab
 from . import OAuth1
b41bab
@@ -134,8 +134,7 @@ class OAuth1Session(requests.Session):
b41bab
                              authorization.
b41bab
         :param signature_method: Signature methods determine how the OAuth
b41bab
                                  signature is created. The three options are
b41bab
-                                 oauthlib.oauth1.SIGNATURE_HMAC (default),
b41bab
-                                 oauthlib.oauth1.SIGNATURE_RSA and
b41bab
+                                 oauthlib.oauth1.SIGNATURE_HMAC (default) and
b41bab
                                  oauthlib.oauth1.SIGNATURE_PLAIN.
b41bab
         :param signature_type: Signature type decides where the OAuth
b41bab
                                parameters are added. Either in the
b41bab
@@ -145,8 +144,9 @@ class OAuth1Session(requests.Session):
b41bab
                                oauthlib.oauth1.SIGNATURE_TYPE_QUERY and
b41bab
                                oauthlib.oauth1.SIGNATURE_TYPE_BODY
b41bab
                                respectively.
b41bab
-        :param rsa_key: The private RSA key as a string. Can only be used with
b41bab
-                        signature_method=oauthlib.oauth1.SIGNATURE_RSA.
b41bab
+        :param rsa_key: The private RSA key as a string. Because this version
b41bab
+                        does not support signature_method=oauthlib.oauth1.SIGNATURE_RSA.
b41bab
+                        this parameter is unused
b41bab
         :param verifier: A verifier string to prove authorization was granted.
b41bab
         :param client_class: A subclass of `oauthlib.oauth1.Client` to use with
b41bab
                              `requests_oauthlib.OAuth1` instead of the default
b41bab
@@ -200,16 +200,11 @@ class OAuth1Session(requests.Session):
b41bab
         authentication dance before OAuth-protected requests to the resource
b41bab
         will succeed.
b41bab
         """
b41bab
-        if self._client.client.signature_method == SIGNATURE_RSA:
b41bab
-            # RSA only uses resource_owner_key
b41bab
-            return bool(self._client.client.resource_owner_key)
b41bab
-        else:
b41bab
-            # other methods of authentication use all three pieces
b41bab
-            return (
b41bab
-                bool(self._client.client.client_secret)
b41bab
-                and bool(self._client.client.resource_owner_key)
b41bab
-                and bool(self._client.client.resource_owner_secret)
b41bab
-            )
b41bab
+        return (
b41bab
+            bool(self._client.client.client_secret)
b41bab
+            and bool(self._client.client.resource_owner_key)
b41bab
+            and bool(self._client.client.resource_owner_secret)
b41bab
+        )
b41bab
 
b41bab
     def authorization_url(self, url, request_token=None, **kwargs):
b41bab
         """Create an authorization URL by appending request_token and optional
b41bab
diff --git a/tests/test_oauth1_session.py b/tests/test_oauth1_session.py
b41bab
index 1dd2b2f..88928e1 100644
b41bab
--- a/tests/test_oauth1_session.py
b41bab
+++ b/tests/test_oauth1_session.py
b41bab
@@ -5,7 +5,7 @@ import requests
b41bab
 from io import StringIO
b41bab
 
b41bab
 from oauthlib.oauth1 import SIGNATURE_TYPE_QUERY, SIGNATURE_TYPE_BODY
b41bab
-from oauthlib.oauth1 import SIGNATURE_RSA, SIGNATURE_PLAINTEXT
b41bab
+from oauthlib.oauth1 import SIGNATURE_PLAINTEXT
b41bab
 from requests_oauthlib import OAuth1Session
b41bab
 
b41bab
 try:
b41bab
@@ -117,18 +117,6 @@ class OAuth1SessionTest(unittest.TestCase):
b41bab
         auth.send = self.verify_signature(signature)
b41bab
         auth.post("https://i.b")
b41bab
 
b41bab
-        signature = (
b41bab
-            "OAuth "
b41bab
-            'oauth_nonce="abc", oauth_timestamp="123", oauth_version="1.0", '
b41bab
-            'oauth_signature_method="RSA-SHA1", oauth_consumer_key="foo", '
b41bab
-            'oauth_signature="{sig}"'
b41bab
-        ).format(sig=TEST_RSA_OAUTH_SIGNATURE)
b41bab
-        auth = OAuth1Session(
b41bab
-            "foo", signature_method=SIGNATURE_RSA, rsa_key=TEST_RSA_KEY
b41bab
-        )
b41bab
-        auth.send = self.verify_signature(signature)
b41bab
-        auth.post("https://i.b")
b41bab
-
b41bab
     @mock.patch("oauthlib.oauth1.rfc5849.generate_timestamp")
b41bab
     @mock.patch("oauthlib.oauth1.rfc5849.generate_nonce")
b41bab
     def test_binary_upload(self, generate_nonce, generate_timestamp):
b41bab
@@ -279,52 +267,12 @@ class OAuth1SessionTest(unittest.TestCase):
b41bab
         sess = OAuth1Session("foo")
b41bab
         self.assertIs(sess.authorized, False)
b41bab
 
b41bab
-    def test_authorized_false_rsa(self):
b41bab
-        signature = (
b41bab
-            "OAuth "
b41bab
-            'oauth_nonce="abc", oauth_timestamp="123", oauth_version="1.0", '
b41bab
-            'oauth_signature_method="RSA-SHA1", oauth_consumer_key="foo", '
b41bab
-            'oauth_signature="{sig}"'
b41bab
-        ).format(sig=TEST_RSA_OAUTH_SIGNATURE)
b41bab
-        sess = OAuth1Session(
b41bab
-            "foo", signature_method=SIGNATURE_RSA, rsa_key=TEST_RSA_KEY
b41bab
-        )
b41bab
-        sess.send = self.verify_signature(signature)
b41bab
-        self.assertIs(sess.authorized, False)
b41bab
-
b41bab
     def test_authorized_true(self):
b41bab
         sess = OAuth1Session("key", "secret", verifier="bar")
b41bab
         sess.send = self.fake_body("oauth_token=foo&oauth_token_secret=bar")
b41bab
         sess.fetch_access_token("https://example.com/token")
b41bab
         self.assertIs(sess.authorized, True)
b41bab
 
b41bab
-    @mock.patch("oauthlib.oauth1.rfc5849.generate_timestamp")
b41bab
-    @mock.patch("oauthlib.oauth1.rfc5849.generate_nonce")
b41bab
-    def test_authorized_true_rsa(self, generate_nonce, generate_timestamp):
b41bab
-        if not cryptography:
b41bab
-            raise unittest.SkipTest("cryptography module is required")
b41bab
-        if not jwt:
b41bab
-            raise unittest.SkipTest("pyjwt module is required")
b41bab
-
b41bab
-        generate_nonce.return_value = "abc"
b41bab
-        generate_timestamp.return_value = "123"
b41bab
-        signature = (
b41bab
-            "OAuth "
b41bab
-            'oauth_nonce="abc", oauth_timestamp="123", oauth_version="1.0", '
b41bab
-            'oauth_signature_method="RSA-SHA1", oauth_consumer_key="foo", '
b41bab
-            'oauth_verifier="bar", oauth_signature="{sig}"'
b41bab
-        ).format(sig=TEST_RSA_OAUTH_SIGNATURE)
b41bab
-        sess = OAuth1Session(
b41bab
-            "key",
b41bab
-            "secret",
b41bab
-            signature_method=SIGNATURE_RSA,
b41bab
-            rsa_key=TEST_RSA_KEY,
b41bab
-            verifier="bar",
b41bab
-        )
b41bab
-        sess.send = self.fake_body("oauth_token=foo&oauth_token_secret=bar")
b41bab
-        sess.fetch_access_token("https://example.com/token")
b41bab
-        self.assertIs(sess.authorized, True)
b41bab
-
b41bab
     def verify_signature(self, signature):
b41bab
         def fake_send(r, **kwargs):
b41bab
             auth_header = r.headers["Authorization"]
b41bab
-- 
b41bab
2.26.3
b41bab