конвертировать ключ авторизации APNs для использования с PyJWT - PullRequest
0 голосов
/ 02 марта 2019

Контекст

Я использую pyjwt, чтобы сгенерировать jwt для отправки push-уведомлений из серверной части Python в APN (служба Apple Push Notification).Мой бэкэнд работает на стандартном экземпляре GAE (Google App Engine), поэтому я должен использовать устаревшие пакеты pycrypto и ecdsa вместо cryptography в pyjwt ( docs ).

Проблема

Мой auth_key.p8 (который я скачал с Apple Developer) отформатирован -----BEGIN PRIVATE KEY-----, но пакет ecdsa ожидает его форматирования -----BEGIN EC PRIVATE KEY-----.Следовательно, я получаю следующую трассировку:

  File "app/venv/lib/python3.7/site-packages/jwt/api_jwt.py", line 65, in encode
    json_payload, key, algorithm, headers, json_encoder
  File "app/venv/lib/python3.7/site-packages/jwt/api_jws.py", line 113, in encode
    key = alg_obj.prepare_key(key)
  File "app/venv/lib/python3.7/site-packages/jwt/contrib/algorithms/py_ecdsa.py", line 44, in prepare_key
    key = ecdsa.SigningKey.from_pem(key)
  File "app/venv/lib/python3.7/site-packages/ecdsa/keys.py", line 189, in from_pem
    privkey_pem = string[string.index(b("-----BEGIN EC PRIVATE KEY-----")):]
ValueError: subsection not found

Кажется, что мой auth_key находится в формате, который ecdsa не принимает, но я не знаю, что сделать, чтобы это исправить.Я должен преобразовать это auth_key в другой формат?

Спасибо за помощь.

...