/* -*-c-*-
*
- * $Id: share.h,v 1.2 2000/06/24 18:29:05 mdw Exp $
+ * $Id: share.h,v 1.3 2000/12/06 20:30:10 mdw Exp $
*
* Shamir's secret sharing
*
/*----- Revision history --------------------------------------------------*
*
* $Log: share.h,v $
+ * Revision 1.3 2000/12/06 20:30:10 mdw
+ * Change secret sharing interface: present the secret at share
+ * construction time.
+ *
* Revision 1.2 2000/06/24 18:29:05 mdw
* Interface change: allow shares to be extracted from a context on demand,
* rather than building them all up-front.
typedef struct share {
unsigned t; /* Threshold */
unsigned i; /* Next free slot in the vector */
- mp *s; /* The secret */
mp *p; /* Modulus for arithmetic */
share_pt *v; /* Vector of share information */
} share;
-#define SHARE_INIT(t) { t, 0, 0, 0, 0 }
+#define SHARE_INIT(t) { t, 0, 0, 0 }
/*----- Functions provided ------------------------------------------------*/
*
* Arguments: @share *s@ = pointer to share context to fill in
* @grand *r@ = pointer to random number source
+ * @mp *n@ = the secret to share
*
* Returns: ---
*
* Use: Initializes a sharing context to be able to create shares.
* The context structure is expected to be mostly filled in. In
- * particular, @t@ and @s@ must be initialized. If @p@ is zero,
- * a prime number of appropriate size is generated
- * automatically. If @v@ is zero, a vector of appropriate size
- * is allocated. You should use the macro @SHARE_INIT@ or
- * @share_create@ to construct sharing contexts.
+ * particular, @t@ must be initialized. If @p@ is zero, a prime
+ * number of appropriate size is generated automatically. If
+ * @v@ is zero, a vector of appropriate size is allocated. You
+ * should use the macro @SHARE_INIT@ or @share_create@ to
+ * construct sharing contexts.
*/
-extern void share_mkshares(share */*s*/, grand */*r*/);
+extern void share_mkshares(share */*s*/, grand */*r*/, mp */*n*/);
/* --- @share_get@ --- *
*