Zum Inhalt springen
ecdsa.com
web3.py / eth-account / eth-keys (Python)Web3-Wallets und -Signaturen

Fehlermeldung

eth_keys.exceptions.BadSignature: Invalid signature

Auch ausgegeben als

  • BadSignature: Invalid signature

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

Was der Fehler bedeutet

Die Signatur hat die richtige Länge, aber ihre Werte beschreiben keine gültige secp256k1-Signatur, daher lässt sich kein öffentlicher Schlüssel wiederherstellen: r oder s ist null oder nicht kleiner als die Kurvenordnung, oder r ist nicht die x-Koordinate eines Punkts auf der Kurve. Das ist etwas anderes als eine Signatur mit dem falschen Schlüssel – aus einer solchen Signatur wird ohne jede Exception eine andere Adresse wiederhergestellt. BadSignature bedeutet, dass die Bytes überhaupt keine Signatur sind.

Warum der Fehler auftritt

So behebst du den Fehler

  1. 1.

    Als abgelehnte Signatur behandeln

    Fange BadSignature zusammen mit Längen- und Wertfehlern ab und lehne die Anfrage ab; versuche es nicht erneut mit anderen v-Werten.

    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

Verwandte Fehler

Gesamte Signaturfehler-Datenbank durchsuchen