Aller au contenu
ecdsa.com
web3.py / eth-account / eth-keys (Python)Portefeuilles et signatures Web3

Message d’erreur

eth_keys.exceptions.BadSignature: Invalid signature

Également affiché sous la forme

  • BadSignature: Invalid signature

web3.py / eth-account / eth-keys (Python) — BadSignature from public-key recovery

Ce que cela signifie

La signature a la bonne longueur, mais ses valeurs ne décrivent aucune signature secp256k1 valide : aucune clé publique ne peut donc être récupérée. r ou s est nul ou n’est pas inférieur à l’ordre de la courbe, ou r n’est pas la coordonnée x d’un point de la courbe. C’est différent d’une signature produite par la mauvaise clé : une telle signature permet de récupérer une autre adresse sans lever d’exception. BadSignature signifie que les octets ne constituent pas du tout une signature.

Pourquoi cela se produit

Comment corriger l’erreur

  1. 1.

    La traiter comme une signature rejetée

    Interceptez BadSignature avec les erreurs de longueur et de valeur, et rejetez la requête ; ne réessayez pas avec d’autres valeurs de v.

    python
    from eth_keys.exceptions import BadSignature
    from eth_utils.exceptions import ValidationError
    
    def recover_or_none(message, signature) -> str | None:
        try:
            return Account.recover_message(message, signature=signature)
        except (BadSignature, ValidationError, ValueError):
            return None  # reject the request: the signature is malformed

Erreurs associées

Parcourir toute la base de données des erreurs de signature