Browse Source

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
changes/68/776168/2
Martin Kopec 6 months ago
parent
commit
476f4ce243
  1. 8
      refstack/api/validators.py

8
refstack/api/validators.py

@ -126,8 +126,14 @@ class TestResultValidator(BaseValidator):
raise api_exc.ValidationError('Malformed signature', e)
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(
request.headers.get('X-Public-Key', ''),
pubkey,
backend=backends.default_backend()
)
except (binascii.Error, ValueError) as e:

Loading…
Cancel
Save