Skip to content

Commit

Permalink
Fixing JSON key service account assertions in Python3.
Browse files Browse the repository at this point in the history
Fixes googleapis#125.

NOTE: '%s.%s' does not behave the same between versions and should
      be removed throughout this library.

I will be following this up with a set of regression tests (hopefully
some of which will fail) and we can assess the damage of other uses
of '%s'.
  • Loading branch information
dhermes committed Feb 4, 2015
1 parent 413bb81 commit ec6e51c
Showing 1 changed file with 5 additions and 7 deletions.
12 changes: 5 additions & 7 deletions oauth2client/service_account.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,16 +75,14 @@ def _generate_assertion(self):
}
payload.update(self._kwargs)

assertion_input = '%s.%s' % (
_urlsafe_b64encode(header),
_urlsafe_b64encode(payload))
assertion_input = assertion_input.encode('utf-8')
assertion_input = (_urlsafe_b64encode(header) + b'.' +
_urlsafe_b64encode(payload))

# Sign the assertion.
signature = bytes.decode(base64.urlsafe_b64encode(rsa.pkcs1.sign(
assertion_input, self._private_key, 'SHA-256'))).rstrip('=')
rsa_bytes = rsa.pkcs1.sign(assertion_input, self._private_key, 'SHA-256')
signature = base64.urlsafe_b64encode(rsa_bytes).rstrip(b'=')

return '%s.%s' % (assertion_input, signature)
return assertion_input + b'.' + signature

def sign_blob(self, blob):
# Ensure that it is bytes
Expand Down

0 comments on commit ec6e51c

Please sign in to comment.