(cp)[3] = (unsigned char)(value); }
#if 0
(cp)[3] = (unsigned char)(value); }
#if 0
/*
* Condition this section in for debugging of DSS.
*/
/*
* Condition this section in for debugging of DSS.
*/
if (prefix) putchar('\n');
}
if (prefix) putchar('\n');
}
#else
#define diagbn(x,y)
#endif
#else
#define diagbn(x,y)
#endif
static int dss_verifysig(char *sig, int siglen, char *data, int datalen) {
char *p;
static int dss_verifysig(char *sig, int siglen, char *data, int datalen) {
char *p;
- Bignum qm2, r, s, w, i1, i2, i3, u1, u2, sha, v;
+ Bignum r, s, w, i1, i2, i3, u1, u2, sha, v;
/*
* Step 1. w <- s^-1 mod q.
*/
/*
* Step 1. w <- s^-1 mod q.
*/
- w = newbn(dss_q[0]);
- qm2 = copybn(dss_q);
- decbn(qm2); decbn(qm2);
- diagbn("qm2=", qm2);
- /* Now qm2 is q-2, and by Fermat's Little Theorem, s^qm2 == s^-1 (mod q).
- * This is a silly way to do it; may fix it later. */
- modpow(s, qm2, dss_q, w);
* Step 5. v should now be equal to r.
*/
* Step 5. v should now be equal to r.
*/
- ret = 1;
- for (i = 1; i <= v[0] || i <= r[0]; i++) {
- if ((i > v[0] && r[i] != 0) ||
- (i > r[0] && v[i] != 0) ||
- (i <= v[0] && i <= r[0] && r[i] != v[i]))
- ret = 0;
- }
+ ret = !bignum_cmp(v, r);
freebn(sha);
freebn(i1);
freebn(i2);
freebn(sha);
freebn(i1);
freebn(i2);