Python で RSA-256 の公開鍵を読み込もうとしています。
public_key=Out[24]: '-----BEGIN CERTIFICATE-----\nMIIEYTCCA0mgAwIBAgIOAXdD+6OnAAAAACcBwuUwDQYJKoZIhvcNAQELBQAweTER\nMA8GA1UEAwwIQWxkZXJhYW4xGDAWBgNVBAsMDzAwRDBDMDAwMDAwOGV6UDEXMBUG\nA1UECgwOU2FsZXNmb3JjZS5jb20xFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xCzAJ\nBgNVBAgMAkNBMQwwCgYDVQQGEwNVU0EwHhcNMjEwMTI3MTMxNTAwWhcNMjIwMTI3\nMTIwMDAwWjB5MREwDwYDVQQDDAhBbGRlcmFhbjEYMBYGA1UECwwPMDBEMEMwMDAw\nMDA4ZXpQMRcwFQYDVQQKDA5TYWxlc2ZvcmNlLmNvbTEWMBQGA1UEBwwNU2FuIEZy\nYW5jaXNjbzELMAkGA1UECAwCQ0ExDDAKBgNVBAYTA1VTQTCCASIwDQYJKoZIhvcN\nAQEBBQADggEPADCCAQoCggEBAN0KKolUflB1/wZDnFScGkFf1SkoeuOFPw+UURCz\nc8tPLOLPLIt/qkUBt5X8ptCVuWfIoscrj4my25xW9c21d4cxTM7wlUDunoH2lohu\n4KbrpOoGJ0HelsPV9BV3RKuj/hDsypS5StW1RLUZYBOUFRQaQPB7drb1KUYqUV1q\nXbf/gWm9TGq5vQS29LZYDgW+T+6xBGltqNtlNAPRUbShQUsmTizZM8v54zbtSjaP\nWHdZ4S1VWqSt+03JRobEIMBHr2L2otsAXOBfaBUqVkGDi8b1YynBOa0A+6cogq9x\nb3xH6fW+RTvTyA9VkptcFfWO+ePOTqkR+f8ObhO1if94c50CAwEAAaOB5jCB4zAd\nBgNVHQ4EFgQUMj3VA9/H7zXx8UsOCAuQuRQGLkswDwYDVR0TAQH/BAUwAwEB/zCB\nsAYDVR0jBIGoMIGlgBQyPdUD38fvNfHxSw4IC5C5FAYuS6F9pHsweTERMA8GA1UE\nAwwIQWxkZXJhYW4xGDAWBgNVBAsMDzAwRDBDMDAwMDAwOGV6UDEXMBUGA1UECgwO\nU2FsZXNmb3JjZS5jb20xFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xCzAJBgNVBAgM\nAkNBMQwwCgYDVQQGEwNVU0GCDgF3Q/ujpwAAAAAnAcLlMA0GCSqGSIb3DQEBCwUA\nA4IBAQDPkaJgi7mqMmhwz7x7q7LssZiuuenYMzFWewry6SZmjqZwLWvxhSWLmog9\nkeNQH7nAbI+6KrMHJ36LPJdD+zbNYQaz8S9qW8HBVOap/J6wKYOC6h/dtKLcfmbt\nZlCyCy6SJv0mDQyxMVyq6gybjRrBnNcoy/hTAEQNhmHL6aZ7E2/eX/EOD1Y1EHWl\nmFqmtpST36F9Y2WaYpKVwBPcZqcwxPpGrJ95FfxR+kkA84Ke3SZ/RHHkZzexcOOR\n5YLaIZf9sVzslSsLrt6uaFMQOdTT5kY1CvCMHaw3j/kDrIpladwyfzhmVgUVx1D3\nxF5JnmOe6qhhyPwRMg7Myw7KIfF5\n-----END CERTIFICATE-----'
encoded = <my jwt token>
import jwt
decoded = jwt.decode(encoded, public_key, algorithms=["RS256"])
これにより、次のエラーが発生しました。
ValueError: Could not deserialize key data.
そこで、別の方法で公開鍵をロードしようとしました。
from Crypto.PublicKey import RSA
pub_key = RSA.importKey(public_key)
発生した:
ValueError: RSA key format is not supported
また、バイナリ(b'----- ...)にロードして試してみると、同じエラーが発生します
アップデート:
pycryptodome で RSA オブジェクトを作成できました:
from Crypto.PublicKey.RSA import import_key
key = import_key(public_key)
しかし、実行時:
decoded = jwt.decode(encoded, key, algorithms=["RS256"])
私は得ています:
TypeError: Expecting a PEM-formatted key.