Eingaben sind der öffentliche Schlüssel, die Nachricht (oder ihr Digest), die Signatur und der Algorithmus mit seinen Parametern; die Ausgabe lautet gültig oder ungültig. Ein strenger Verifizierer weist außerdem fehlerhafte Eingaben zurück: nicht minimales DER, r oder s außerhalb von 1…n−1, ein S bei EdDSA, das nicht kleiner als die Gruppenordnung ist, rohe Signaturen falscher Länge, Punkte, die nicht auf der Kurve liegen, und Schlüssel des falschen Typs.
Die meisten Fehler vom Typ „invalid signature“ im Produktivbetrieb sind nicht kryptografisch: Es wurden andere Bytes signiert (neu serialisiertes JSON, geänderter Whitespace oder geänderte Zeilenenden, ein fehlender abschließender Zeilenumbruch), ein anderer Hash wurde verwendet, eine DER-Signatur landete bei einem Verifizierer für rohe Signaturen oder umgekehrt, Kurve oder Salt-Länge bei PSS weichen ab, oder der falsche Schlüssel wurde ausgewählt. Prüfe jede Eingabe einzeln; der Signatur-Verifizierer zeigt, welche Kurve, welchen Hash und welche Kodierung er verwendet hat.
Sicherheitsregeln, die in der Praxis erfolgreiche Angriffe verhindern: Lege den Algorithmus auf der Seite des Verifizierers fest, statt ihn aus der Nachricht zu lesen (alg im JWT, RFC 8725 §3.1); prüfe, bevor du die Payload parst oder verarbeitest; prüfe die Bindung zwischen Schlüssel und Identität (Pfadvalidierung von Zertifikaten, kid im JWKS, known_hosts); und lege dich bei Konsenssystemen auf einen einzigen Satz von Prüfregeln fest, da Bibliotheken bei Grenzfällen wie der EdDSA-Prüfung mit Kofaktor uneins sind.