Skip to content

Commit d722167

Browse files
author
Jon Wayne Parrott
authored
Add public property google.auth.credentials.Signing.signer (#110)
1 parent 5b4e9c8 commit d722167

File tree

7 files changed

+34
-1
lines changed

7 files changed

+34
-1
lines changed

google/auth/app_engine.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@ def __init__(self, scopes=None, service_account_id=None):
123123
super(Credentials, self).__init__()
124124
self._scopes = scopes
125125
self._service_account_id = service_account_id
126+
self._signer = Signer()
126127

127128
@_helpers.copy_docstring(credentials.Credentials)
128129
def refresh(self, request):
@@ -156,9 +157,14 @@ def with_scopes(self, scopes):
156157

157158
@_helpers.copy_docstring(credentials.Signing)
158159
def sign_bytes(self, message):
159-
return Signer().sign(message)
160+
return self._signer.sign(message)
160161

161162
@property
162163
@_helpers.copy_docstring(credentials.Signing)
163164
def signer_email(self):
164165
return self.service_account_email
166+
167+
@property
168+
@_helpers.copy_docstring(credentials.Signing)
169+
def signer(self):
170+
return self._signer

google/auth/credentials.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,3 +236,10 @@ def signer_email(self):
236236
# pylint: disable=missing-raises-doc
237237
# (pylint doesn't recognize that this is abstract)
238238
raise NotImplementedError('Signer email must be implemented.')
239+
240+
@abc.abstractproperty
241+
def signer(self):
242+
"""google.auth.crypt.Signer: The signer used to sign bytes."""
243+
# pylint: disable=missing-raises-doc
244+
# (pylint doesn't recognize that this is abstract)
245+
raise NotImplementedError('Signer must be implemented.')

google/auth/jwt.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -468,6 +468,11 @@ def sign_bytes(self, message):
468468
def signer_email(self):
469469
return self._issuer
470470

471+
@property
472+
@_helpers.copy_docstring(credentials.Signing)
473+
def signer(self):
474+
return self._signer
475+
471476
def before_request(self, request, method, url, headers):
472477
"""Performs credential-specific before request logic.
473478

google/oauth2/service_account.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -318,6 +318,11 @@ def refresh(self, request):
318318
def sign_bytes(self, message):
319319
return self._signer.sign(message)
320320

321+
@property
322+
@_helpers.copy_docstring(credentials.Signing)
323+
def signer(self):
324+
return self._signer
325+
321326
@property
322327
@_helpers.copy_docstring(credentials.Signing)
323328
def signer_email(self):

tests/oauth2/test_service_account.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,9 @@ def test_sign_bytes(self):
134134
signature = self.credentials.sign_bytes(to_sign)
135135
assert crypt.verify_signature(to_sign, signature, PUBLIC_CERT_BYTES)
136136

137+
def test_signer(self):
138+
assert isinstance(self.credentials.signer, crypt.Signer)
139+
137140
def test_signer_email(self):
138141
assert self.credentials.signer_email == self.SERVICE_ACCOUNT_EMAIL
139142

tests/test_app_engine.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,10 @@ def test_sign_bytes(self, app_identity_mock):
139139
assert signature == mock.sentinel.signature
140140
app_identity_mock.sign_blob.assert_called_with(to_sign)
141141

142+
def test_signer(self, app_identity_mock):
143+
credentials = app_engine.Credentials()
144+
assert isinstance(credentials.signer, app_engine.Signer)
145+
142146
def test_signer_email(self, app_identity_mock):
143147
credentials = app_engine.Credentials()
144148
assert credentials.signer_email == credentials.service_account_email

tests/test_jwt.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,9 @@ def test_sign_bytes(self):
264264
signature = self.credentials.sign_bytes(to_sign)
265265
assert crypt.verify_signature(to_sign, signature, PUBLIC_CERT_BYTES)
266266

267+
def test_signer(self):
268+
assert isinstance(self.credentials.signer, crypt.Signer)
269+
267270
def test_signer_email(self):
268271
assert (self.credentials.signer_email ==
269272
SERVICE_ACCOUNT_INFO['client_email'])

0 commit comments

Comments
 (0)