More changes. Still embryonic.
[u/mdw/catacomb] / dsa.h
diff --git a/dsa.h b/dsa.h
index 1958d50..ba3bad8 100644 (file)
--- a/dsa.h
+++ b/dsa.h
@@ -1,6 +1,6 @@
 /* -*-c-*-
  *
- * $Id: dsa.h,v 1.1 1999/11/19 19:28:00 mdw Exp $
+ * $Id: dsa.h,v 1.3 1999/12/10 23:29:48 mdw Exp $
  *
  * Digital Signature Algorithm
  *
 /*----- Revision history --------------------------------------------------* 
  *
  * $Log: dsa.h,v $
+ * Revision 1.3  1999/12/10 23:29:48  mdw
+ * Change header file guard names.
+ *
+ * Revision 1.2  1999/11/20 22:23:48  mdw
+ * Allow event handler to abort the search process.
+ *
  * Revision 1.1  1999/11/19 19:28:00  mdw
  * Implementation of the Digital Signature Algorithm.
  *
  */
 
-#ifndef DSA_H
-#define DSA_H
+#ifndef CATACOMB_DSA_H
+#define CATACOMB_DSA_H
 
 #ifdef __cplusplus
   extern "C" {
@@ -53,7 +59,7 @@
 
 /*----- Header files ------------------------------------------------------*/
 
-#ifndef MP_H
+#ifndef CATACOMB_MP_H
 #  include "mp.h"
 #endif
 
 enum {
   DSAEV_OK,                            /* Everything is fine */
 
+  DSAEV_FINDQ,                         /* Search for a @q@ */
   DSAEV_FAILQ,                         /* @q@ failed primality test */
   DSAEV_PASSQ,                         /* @q@ passeed one iteration */
   DSAEV_GOODQ,                         /* Found good prime @q@ */
 
+  DSAEV_FINDP,                         /* Search for a @p@ */
   DSAEV_TRYP,                          /* Try prospective @p@ */
   DSAEV_FAILP,                         /* @p@ failed primality test */
   DSAEV_PASSP,                         /* @p@ passed one iteration */
   DSAEV_GOODP,                         /* @p@ accepted as being prime */
 
+  DSAEV_FINDG,                         /* Search for a @g@ */
   DSAEV_TRYH,                          /* Try prospective @h@ */
   DSAEV_FAILH,                         /* @h@ failed */
   DSAEV_GOODG                          /* @g@ accepted as a generator */
@@ -110,9 +119,8 @@ typedef struct dsa_sig {
  * Arguments:  @dsa_param *dp@ = where to store parameters
  *             @unsigned l@ = bitlength of @p@ in bits
  *             @const void *k@ = pointer to key material
+ *             @int (*proc)(int ev, mp *m, void *p)@ = event procedure
  *             @size_t sz@ = size of key material
- *             @void (*proc)(int ev, mp *m, void *p)@ = event procedure
- *             @void *p@ = argument for event procedure
  *
  * Returns:    Zero if all went well, nonzero if key material was
  *             unsuitable (one of the @DSAEV@ codes).
@@ -126,20 +134,22 @@ typedef struct dsa_sig {
  *             The event procedure is informed of various happenings during
  *             generation.  It is passed an event code describing what
  *             happened, and a multiprecision number which pertains to the
- *             event code.
+ *             event code.  It may abort the search at any time by returning
+ *             a nonzero value, which is returned as the result of the
+ *             function.
  */
 
 extern int dsa_seed(dsa_param */*dp*/, unsigned /*l*/,
                    const void */*k*/, size_t /*sz*/,
-                   void (*proc)(int /*ev*/, mp */*m*/, void */*p*/),
+                   int (*proc)(int /*ev*/, mp */*m*/, void */*p*/),
                    void */*p*/);
 
 /* --- @dsa_mksig@ --- *
  *
  * Arguments:  @const dsa_param *dp@ = pointer to DSA parameters
- *             @const mp *a@ = secret signing key
- *             @const mp *m@ = message to be signed
- *             @const mp *k@ = random data
+ *             @mp *a@ = secret signing key
+ *             @mp *m@ = message to be signed
+ *             @mp *k@ = random data
  *             @mp **rr, **ss@ = where to put output parameters
  *
  * Returns:    ---
@@ -147,8 +157,8 @@ extern int dsa_seed(dsa_param */*dp*/, unsigned /*l*/,
  * Use:                Computes a DSA signature of a message.
  */
 
-extern void dsa_mksig(const dsa_param */*dp*/, const mp */*a*/,
-                     const mp */*m*/, const mp */*k*/,
+extern void dsa_mksig(const dsa_param */*dp*/, mp */*a*/,
+                     mp */*m*/, mp */*k*/,
                      mp **/*rr*/, mp **/*ss*/);
 
 /* --- @dsa_sign@ --- *
@@ -179,22 +189,22 @@ extern void dsa_sign(dsa_param */*dp*/, mp */*a*/,
 /* --- @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.
  */
 
-extern int dsa_vrfy(const dsa_param */*dp*/, const mp */*y*/,
-                   const mp */*m*/, const mp */*r*/, const mp */*s*/);
+extern int dsa_vrfy(const dsa_param */*dp*/, mp */*y*/,
+                   mp */*m*/, mp */*r*/, mp */*s*/);
 
 /* --- @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
@@ -207,7 +217,7 @@ extern int dsa_vrfy(const dsa_param */*dp*/, const mp */*y*/,
  * Use:                Verifies a DSA digital signature.
  */
 
-extern int dsa_verify(const dsa_param */*dp*/, const mp */*y*/,
+extern 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*/);