Aller au contenu
ecdsa.com
Python cryptographycryptography (Python)

Message d’erreur

cryptography.exceptions.InvalidSignature

L’exception est levée sans aucun texte de message : la trace d’appels se termine par le seul nom de la classe (reproduit avec cryptography 50.0).

Python cryptography — raised by verify()

Ce que cela signifie

public_key.verify(signature, data, ...) a déterminé que la signature ne se vérifie pas pour ces données avec cette clé. Tout a été analysé correctement ; la vérification a simplement échoué. Comme l’exception ne contient volontairement aucun détail, le diagnostic consiste à tester séparément chaque entrée : la clé, les octets des données, l’encodage de la signature, la fonction de hachage.

Pourquoi cela se produit

Comment corriger l’erreur

  1. 1.

    Convertir les signatures brutes en DER

    Si la signature fait 64 octets (P-256), séparez-la en r et s et réencodez-la en DER avant de la vérifier.

    python
    from cryptography.hazmat.primitives.asymmetric.utils import encode_dss_signature
    
    r = int.from_bytes(raw_sig[:32], "big")
    s = int.from_bytes(raw_sig[32:], "big")
    der_sig = encode_dss_signature(r, s)
    public_key.verify(der_sig, message, ec.ECDSA(hashes.SHA256()))
  2. 2.

    Utiliser Prehashed pour les condensats précalculés

    Quand vous disposez du condensat au lieu du message, dites-le explicitement : sinon, la bibliothèque hache votre condensat.

    python
    from cryptography.hazmat.primitives.asymmetric import utils
    
    public_key.verify(
        der_sig,
        digest_bytes,                                    # already SHA-256(message)
        ec.ECDSA(utils.Prehashed(hashes.SHA256())),
    )
  3. 3.

    Identifier l’entrée fautive

    Collez la clé, le message et la signature dans l’outil d’explication des erreurs ci-dessous : il teste les hypothèses de discordance habituelles (mauvaise fonction de hachage, brut ou DER, double hachage, normalisation high-S, mauvaise courbe) et indique celle qui permet à votre signature de se vérifier.

Erreurs associées

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