projects
/
u
/
mdw
/
catacomb
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Ignore lots of new generated files.
[u/mdw/catacomb]
/
dsa-verify.c
diff --git
a/dsa-verify.c
b/dsa-verify.c
index
4b931bf
..
fee0dd3
100644
(file)
--- a/
dsa-verify.c
+++ b/
dsa-verify.c
@@
-1,6
+1,6
@@
/* -*-c-*-
*
/* -*-c-*-
*
- * $Id: dsa-verify.c,v 1.
2 1999/11/23 00:20:04
mdw Exp $
+ * $Id: dsa-verify.c,v 1.
3 1999/12/10 23:18:38
mdw Exp $
*
* DSA signature verification
*
*
* DSA signature verification
*
@@
-30,6
+30,9
@@
/*----- Revision history --------------------------------------------------*
*
* $Log: dsa-verify.c,v $
/*----- Revision history --------------------------------------------------*
*
* $Log: dsa-verify.c,v $
+ * Revision 1.3 1999/12/10 23:18:38 mdw
+ * Change interface for suggested destinations.
+ *
* Revision 1.2 1999/11/23 00:20:04 mdw
* Remove stray debugging code.
*
* Revision 1.2 1999/11/23 00:20:04 mdw
* Remove stray debugging code.
*
@@
-49,17
+52,16
@@
/* --- @dsa_vrfy@ --- *
*
* Arguments: @const dsa_param *dp@ = pointer to DSA parameters
/* --- @dsa_vrfy@ --- *
*
* Arguments: @const dsa_param *dp@ = pointer to DSA parameters
- * @
const
mp *y@ = public verification key
- * @
const
mp *m@ = message which was signed
- * @
const
mp *r, *s@ = the signature
+ * @mp *y@ = public verification key
+ * @mp *m@ = message which was signed
+ * @mp *r, *s@ = the signature
*
* Returns: Zero if the signature is a forgery, nonzero if it's valid.
*
* Use: Verifies a DSA digital signature.
*/
*
* Returns: Zero if the signature is a forgery, nonzero if it's valid.
*
* Use: Verifies a DSA digital signature.
*/
-int dsa_vrfy(const dsa_param *dp, const mp *y,
- const mp *m, const mp *r, const mp *s)
+int dsa_vrfy(const dsa_param *dp, mp *y, mp *m, mp *r, mp *s)
{
mpmont pm, qm;
mp *w;
{
mpmont pm, qm;
mp *w;
@@
-81,8
+83,8
@@
int dsa_vrfy(const dsa_param *dp, const mp *y,
/* --- Compute %$w = s^{-1} \bmod q$% --- */
{
/* --- Compute %$w = s^{-1} \bmod q$% --- */
{
- mp *z;
- mp_gcd(0, 0, &z, dp->q,
(mp *)
s);
+ mp *z
= MP_NEW
;
+ mp_gcd(0, 0, &z, dp->q, s);
w = mpmont_mul(&qm, MP_NEW, z, qm.r2);
mp_drop(z);
}
w = mpmont_mul(&qm, MP_NEW, z, qm.r2);
mp_drop(z);
}
@@
-97,8
+99,8
@@
int dsa_vrfy(const dsa_param *dp, const mp *y,
/* --- Do the exponentiation and take residue mod @q@ --- */
f[0].base = dp->g;
/* --- Do the exponentiation and take residue mod @q@ --- */
f[0].base = dp->g;
- f[1].base =
(mp *)
y;
- w = mpmont_mexp(&pm, f, 2);
+ f[1].base = y;
+ w = mpmont_mexp(&pm,
MP_NEW,
f, 2);
mp_div(0, &w, w, dp->q);
ok = MP_CMP(w, ==, r);
mp_div(0, &w, w, dp->q);
ok = MP_CMP(w, ==, r);
@@
-114,7
+116,7
@@
int dsa_vrfy(const dsa_param *dp, const mp *y,
/* --- @dsa_verify@ --- *
*
* Arguments: @const dsa_param *dp@ = pointer to DSA parameters
/* --- @dsa_verify@ --- *
*
* Arguments: @const dsa_param *dp@ = pointer to DSA parameters
- * @
const
mp *y@ = public verification key
+ * @mp *y@ = public verification key
* @const void *m@ = pointer to message block
* @size_t msz@ = size of message block
* @const void *r@ = pointer to @r@ signature half
* @const void *m@ = pointer to message block
* @size_t msz@ = size of message block
* @const void *r@ = pointer to @r@ signature half
@@
-127,7
+129,7
@@
int dsa_vrfy(const dsa_param *dp, const mp *y,
* Use: Verifies a DSA digital signature.
*/
* Use: Verifies a DSA digital signature.
*/
-int dsa_verify(const dsa_param *dp,
const
mp *y,
+int dsa_verify(const dsa_param *dp, mp *y,
const void *m, size_t msz,
const void *r, size_t rsz,
const void *s, size_t ssz)
const void *m, size_t msz,
const void *r, size_t rsz,
const void *s, size_t ssz)
@@
-191,6
+193,7
@@
static int verify(int good, dstr *v)
mp_drop(dp.q);
mp_drop(dp.g);
mp_drop(y);
mp_drop(dp.q);
mp_drop(dp.g);
mp_drop(y);
+ assert(mparena_count(MPARENA_GLOBAL) == 0);
return (ok);
}
return (ok);
}