Контекст
Я использую 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
в другой формат?
Спасибо за помощь.