语境
我正在使用pyjwt
生成一个 jwt 来将推送通知从 python 后端发送到 APNs(Apple 推送通知服务)。我的后端在标准 GAE(Google App Engine)实例上运行,因此我必须使用旧包pycrypto
,ecdsa
而不是cryptography
在pyjwt
( docs ) 中。
问题
我的auth_key.p8
(我从 Apple Developer 下载的)是 formatted -----BEGIN PRIVATE KEY-----
,但ecdsa
包希望它是 formatted -----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
成不同的格式吗?
谢谢您的帮助。