pike.git
/
lib
/
modules
/
Crypto.pmod
/
DSA.pmod
version
»
Context lines:
10
20
40
80
file
none
3
pike.git/lib/modules/Crypto.pmod/DSA.pmod:390:
Gmp.mpz r = [object(Gmp.mpz)](g->powm(k, p) % q); Gmp.mpz s = [object(Gmp.mpz)]((k->invert(q) * (h + [object(Gmp.mpz)](x*r))) % q); return ({ r, s }); } //! Verify the signature @[r],@[s] against the message @[h]. int(0..1) raw_verify(Gmp.mpz h, Gmp.mpz r, Gmp.mpz s) {
-
Gmp.mpz w;
+
object(
Gmp.mpz
)|zero
w;
if (catch { w = s->invert(q); }) /* Non-invertible */ return 0; /* The inner %q's are redundant, as g^q == y^q == 1 (mod p) */ return r == (g->powm( [object(Gmp.mpz)](w * h % q), p) * y->powm( [object(Gmp.mpz)](w * r % q), p) % p) % q;