Există două variante de ECDSA: randomizat sau determinist. Calculul unei semnături implică un număr $k$ care nu trebuie repetat niciodată pentru mesaje distincte cu aceeași cheie. Există două moduri de a implementa asta: generarea $k$ aleatoriu, sau generatoare $k$ într-un mod determinist din cheie şi mesaj. (Omit detalii aici, concentrându-mă doar pe ceea ce este relevant pentru această întrebare.) Cele două variante produc semnături compatibile: este imposibil de spus care variantă a fost folosită pentru a produce o semnătură dată. (Desigur, vă puteți da seama solicitând unei implementări să semneze același mesaj de două ori și comparând rezultatele.)
Definiția originală a ECDSA a luat în considerare doar varianta randomizată, iar aceasta este singura pe care NIST o permite, începând cu FIPS 186-4 (vezi §6.3 şi §6.4). RFC 6979 este o specificație pentru varianta deterministă.
Vectorii de testare NIST au fost generați utilizând ECDSA randomizat. O consecință a utilizării unui algoritm randomizat este că nu puteți avea teste cu răspunsuri cunoscute pentru acesta. De fiecare dată când executați un calcul de semnătură, obțineți un rezultat diferit. Tot ce puteți face pentru testare este să testați dacă rezultatul calculului semnăturii este o semnătură validă, nu că este o anumită secvență de octeți.
mbedtls_ecdsa_sign_det_ext
implementează ECDSA deterministă. Puteți utiliza teste cu răspuns cunoscut pentru ECDSA determinist. Dar NIST nu oferă vectori de testare pentru acesta, deoarece NIST nu standardizează ECDSA deterministă.
Dacă întindeți puțin acest lucru, ați putea spune că este posibil să aveți teste cu răspuns cunoscut dacă specificați complet modul în care algoritmul consumă rezultatul generatorului aleator. Dar apoi, ca problemă teoretică, acum testați un algoritm determinist care preia o anumită intrare care, în lumea reală, se presupune că provine de la un generator aleatoriu. Și ca aspect practic, într-o implementare reală, nu este întotdeauna posibil să schimbați generatorul aleatoriu pentru testare. Și, în orice caz, FIPS 184-4 permite o anumită variație în modul în care este consumată ieșirea generatorului aleator la generare $k$ pentru o semnătură ECDSA.