X-Git-Url: https://git.distorted.org.uk/u/mdw/catacomb/blobdiff_plain/05cac080da989a59ef260bef478202056e0abb51..2685767a6125c1620719c7de6234aedf41857b7e:/bbs.h diff --git a/bbs.h b/bbs.h index 2098745..b83b87f 100644 --- a/bbs.h +++ b/bbs.h @@ -1,6 +1,6 @@ /* -*-c-*- * - * $Id: bbs.h,v 1.4 2000/06/17 10:45:48 mdw Exp $ + * $Id: bbs.h,v 1.6 2001/02/03 16:07:33 mdw Exp $ * * The Blum-Blum-Shub random bit generator * @@ -30,6 +30,14 @@ /*----- Revision history --------------------------------------------------* * * $Log: bbs.h,v $ + * Revision 1.6 2001/02/03 16:07:33 mdw + * Give generic random objects separate namespaces for their supported misc + * ops. + * + * Revision 1.5 2000/07/01 11:20:24 mdw + * New functions for freeing public and private keys. Remove bad type name + * `bbs_param'. + * * Revision 1.4 2000/06/17 10:45:48 mdw * Minor changes for key fetching. Typesetting fixes. * @@ -109,10 +117,10 @@ typedef struct bbs_pub { mp *n; } bbs_pub; -typedef struct bbs_param { +typedef struct bbs_priv { mp *p, *q; /* Prime factors (3 mod 4) */ mp *n; /* Product @pq@ -- a Blum integer */ -} bbs_param, bbs_priv; +} bbs_priv; /*----- Key fetching ------------------------------------------------------*/ @@ -122,6 +130,18 @@ extern const key_fetchdef bbs_pubfetch[]; extern const key_fetchdef bbs_privfetch[]; #define BBS_PRIVFETCHSZ 7 +/* --- @bbs_pubfree@, @bbs_privfree@ --- * + * + * Arguments: @bbs_pub *bp@, @bbs_priv *bp@ = pointer to key block + * + * Returns: --- + * + * Use: Frees a BBS key block. + */ + +extern void bbs_pubfree(bbs_pub */*bp*/); +extern void bbs_privfree(bbs_priv */*bp*/); + /*----- The basic generator -----------------------------------------------*/ /* --- @bbs_create@ --- * @@ -221,7 +241,7 @@ extern void bbs_wrap(bbs */*b*/); /* --- @bbs_ff@ --- * * * Arguments: @bbs *b@ = pointer to a BBS generator state - * @bbs_param *bp@ = pointer to BBS modulus factors + * @bbs_priv *bp@ = pointer to BBS modulus factors * @unsigned long n@ = number of steps to make * * Returns: --- @@ -231,12 +251,12 @@ extern void bbs_wrap(bbs */*b*/); * efficiently. */ -extern void bbs_ff(bbs */*b*/, bbs_param */*bp*/, unsigned long /*n*/); +extern void bbs_ff(bbs */*b*/, bbs_priv */*bp*/, unsigned long /*n*/); /* --- @bbs_rew@ --- * * * Arguments: @bbs *b@ = pointer to a BBS generator state - * @bbs_param *bp@ = pointer to BBS modulus factors + * @bbs_priv *bp@ = pointer to BBS modulus factors * @unsigned long n@ = number of steps to make * * Returns: --- @@ -246,13 +266,13 @@ extern void bbs_ff(bbs */*b*/, bbs_param */*bp*/, unsigned long /*n*/); * at all. */ -extern void bbs_rew(bbs */*b*/, bbs_param */*bp*/, unsigned long /*n*/); +extern void bbs_rew(bbs */*b*/, bbs_priv */*bp*/, unsigned long /*n*/); /*----- Parameter generation ----------------------------------------------*/ /* --- @bbs_gen@ --- * * - * Arguments: @bbs_param *bp@ = pointer to parameter block + * Arguments: @bbs_priv *bp@ = pointer to parameter block * @unsigned nbits@ = number of bits in the modulus * @grand *r@ = pointer to random number source * @unsigned n@ = number of attempts to make @@ -268,7 +288,7 @@ extern void bbs_rew(bbs */*b*/, bbs_param */*bp*/, unsigned long /*n*/); * Shub pseudorandom bit generator. */ -extern int bbs_gen(bbs_param */*bp*/, unsigned /*nbits*/, grand */*r*/, +extern int bbs_gen(bbs_priv */*bp*/, unsigned /*nbits*/, grand */*r*/, unsigned /*n*/, pgen_proc */*event*/, void */*ectx*/); /*----- Generic random number generator interface -------------------------*/ @@ -289,7 +309,7 @@ extern grand *bbs_rand(mp */*m*/, mp */*x*/); /* --- Blum-Blum-Shub-specific misc op codes --- */ enum { - BBS_SET = GRAND_SPECIFIC /* @mp *x@ */ + BBS_SET = GRAND_SPECIFIC('B') /* @mp *x@ */ }; /*----- That's all, folks -------------------------------------------------*/