[英]Using the EdDSA algorithm with PyJWT
我正在嘗試使用 EdDSA 算法進行編碼,但我不斷收到以下錯誤。
關於我做錯了什么的任何想法?
EllipticCurvePrivateKey = "-----BEGIN PRIVATE KEY-----\[HIDDEN]\n-----END PRIVATE KEY-----"
encoded = jwt.encode({"some": "payload"}, EllipticCurvePrivateKey, 'EdDSA')
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/Users/rogermukai/Dev/Templates/jwt-example/.venv/lib/python3.10/site-packages/jwt/api_jwt.py", line 67, in encode
return api_jws.encode(json_payload, key, algorithm, headers, json_encoder)
File "/Users/rogermukai/Dev/Templates/jwt-example/.venv/lib/python3.10/site-packages/jwt/api_jws.py", line 153, in encode
key = alg_obj.prepare_key(key)
File "/Users/rogermukai/Dev/Templates/jwt-example/.venv/lib/python3.10/site-packages/jwt/algorithms.py", line 601, in prepare_key
raise InvalidKeyError(
jwt.exceptions.InvalidKeyError: Expecting a EllipticCurvePrivateKey/EllipticCurvePublicKey. Wrong key provided for EdDSA algorithms
我希望能夠使用 EdDSA 算法,因為文檔指出這是可能的,但沒有給出示例。
這就是我的想法。 我按照從上到下的順序運行了以下步驟。
在終端/sehlll 中:
$ openssl genpkey -algorithm Ed25519 -out ed25519key.pem
$ cat ed25519key.pem
-----BEGIN PRIVATE KEY-----
MC4CAQAwBQYDK2VwBCIEIKRLPECftB6nJ/ZMQ/OXI1sdwDYUDP7gAq5sea0opeUT
-----END PRIVATE KEY-----
$ openssl pkey -in ed25519key.pem -pubout
-----BEGIN PUBLIC KEY-----
MCowBQYDK2VwAyEA7Adh+4SttVNkOk1C/9XJj6uqtbgFZChpLuz+bq0cSF4=
-----END PUBLIC KEY-----
python
import jwt
key = """-----BEGIN PRIVATE KEY-----
... MC4CAQAwBQYDK2VwBCIEIKRLPECftB6nJ/ZMQ/OXI1sdwDYUDP7gAq5sea0opeUT
... -----END PRIVATE KEY-----"""
encoded = jwt.encode({"Some":"Key"}, key, algorithm='EdDSA')
print(encoded)
>>> eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCJ9.eyJTb21lIjoiS2V5In0.HDsL-x5WdP2rqpL0rq_Ir2dj9c8IEl_qqcfpUEZjncqP8df8Nrz-FGEfnI2-eB7JOGGI2WzZHM_O8vu7ieokCg
public_key = """-----BEGIN PUBLIC KEY-----
... MCowBQYDK2VwAyEA7Adh+4SttVNkOk1C/9XJj6uqtbgFZChpLuz+bq0cSF4=
... -----END PUBLIC KEY-----"""
decoded = jwt.decode(encoded, public_key, algorithms='EdDSA', verify=True)
print(decoded)
>>> {'Some': 'Key'}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.