Encode pubkey in validators

Follow up change for py2->py3 migration.
The pubkey must be encoded in order to avoid 'data must be
bytes-like' error. The key is a type of str which in py2 meant
bytes, however, in py3 it's just string. Therefore the pubkey
must be encoded before it's passed to load_ssh_public_key which
requires bytes-like data.

Change-Id: I943438a59923bd9c4e9dd38058020e49fd2f3d24
This commit is contained in:
Martin Kopec 2021-02-17 13:03:29 +00:00
parent bbbe1f525b
commit 476f4ce243
1 changed files with 7 additions and 1 deletions

View File

@ -126,8 +126,14 @@ class TestResultValidator(BaseValidator):
raise api_exc.ValidationError('Malformed signature', e) raise api_exc.ValidationError('Malformed signature', e)
try: try:
pubkey = request.headers.get('X-Public-Key', '')
try:
pubkey.encode('utf-8')
except AttributeError:
# it's already in bytes
pass
key = load_ssh_public_key( key = load_ssh_public_key(
request.headers.get('X-Public-Key', ''), pubkey,
backend=backends.default_backend() backend=backends.default_backend()
) )
except (binascii.Error, ValueError) as e: except (binascii.Error, ValueError) as e: