6 votes

Désérialisation de la clé publique avec le module de cryptographie de Python

Je suis en train d'écrire un script python qui implique l'envoi d'une clé publique via un réseau. J'utilise https://cryptography.io/en/latest/hazmat/primitives/asymmetric/serialization/.

public_key = self.node.public_key
pem = public_key.public_bytes(
    encoding=serialization.Encoding.PEM,
    format=serialization.PublicFormat.SubjectPublicKeyInfo
)

deserialized_key = load_pem_public_key(pem)

Je reçois l'erreur :

TypeError: load_pem_public_key() requiert un argument positionnel obligatoire manquant : 'backend'

Je ne suis donc pas en mesure de désérialiser la clé - Je suis confus car selon la documentation, load_pem_public_key() prend 1 argument requis (data) et 1 argument optionnel (backend).

11voto

Il semblerait que vous utilisiez cryptography==3.0 ou une version inférieure où l'argument backend est requis https://github.com/pyca/cryptography/blob/3.0/src/cryptography/hazmat/primitives/serialization/base.py#L19

Passez à cryptography==3.1 ou ajoutez quelque chose à l'argument backend

0voto

JBSnorro Points 802

Même avec cryptography==3.1 j'ai toujours eu le problème.

Je ne peux pas fournir l'argument backend non plus car il a été déclenché dans une bibliothèque (python-jose==3.1). La mise à niveau vers python-jose==3.2 (=dernier actuel) n'a pas non plus aidé.

L'installation de python-jose-cryptodome==1.3.2 a aidé.


Section pertinente de la documentation de python-jose:

Le backend Python naif est toujours installé mais tout autre backend prendra le pas s'il est installé.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X