web-dev-qa-db-fra.com

Obnoxious CryptographyDeprecationWarning car la fonction hmac.compare_time est manquante partout

Les choses allaient bien jusqu'à ce qu'un de mes projets commence à imprimer cela partout, au sommet de chaque exécution, au moins une fois:

local/lib/python2.7/site-packages/cryptography/hazmat/primitives/constant_time.py:26: CryptographyDeprecationWarning: Support for your Python version is deprecated. The next version of cryptography will remove support. Please upgrade to a 2.7.x release that supports hmac.compare_digest as soon as possible.

Je ne sais pas du tout pourquoi cela a commencé et cela perturbe la sortie des applications/outils, en particulier lorsqu'il est capturé et utilisé par d'autres outils. Comme beaucoup de difficultés au fil du temps, je suis à peu près certain que cela est lié à urllib et, par association, requests. Pire encore, j'ai tellement de projets et de dépendances croisées qu'il m'est impossible de mettre à jour toutes les importations et branches avec l'appel à warnings.filterwarnings() pour supprimer l'avertissement.

J'ai Python 2.7.6. Apparemment, cela disparaît dans 2.7.7. Seulement, j'ai des systèmes 2.7.6 où je ne vois pas voir les avertissements. Donc, quelque chose peut ou non les désactiver dans une version et je l’aurais peut-être par inadvertance remplacé par une autre version.

Mon Ubuntu, Python, urllib, les demandes (avec l'option de sécurité), la cryptographie et hmac sont toutes des versions/versions identiques sur des systèmes qui affichent l'avertissement et d'autres.

Il semble n'y avoir aucun avertissement ou annonce pertinente en ligne et il semble que tout projet associé soit statique/stable à ce stade (même si 'hmac' peut être installé via PIP, il n'a pas changé depuis huit ans).

4
Dustin Oprea

Je frappe cette erreur depuis un certain temps. Pour mon environnement, la mise à niveau de Python vers une version supérieure à la 2.7.6 était pénible. La solution la plus simple consistait à rétrograder un module de cryptographie à l'aide de pip:

pip2.7 install cryptography==2.2.2

Je pense que la meilleure solution est de mettre à jour votre version de python bien

16
mbenhalima

J'ai commencé à recevoir cet avertissement pour un simple appel requests.get. Cet avertissement est imprimé lorsque le module cryptography.hazmat.primitives.constant_time est chargé. Il ne devrait donc en principe apparaître qu'une fois par programme Python. Si vous le voyez souvent, c'est probablement parce qu'un programme Python (comme un utilitaire) est exécuté plusieurs fois. Il vous suffit d'identifier ce programme et d'ajouter le code ci-dessous au point d'entrée principal:

import cryptography
from cryptography import utils
with warnings.catch_warnings():
    warnings.simplefilter('ignore', cryptography.utils.DeprecatedIn23)
    import cryptography.hazmat.primitives.constant_time
2
haridsv