* Arguments: @dsa_param *dp@ = where to store parameters
* @unsigned l@ = bitlength of @p@ in bits
* @const void *k@ = pointer to key material
* Arguments: @dsa_param *dp@ = where to store parameters
* @unsigned l@ = bitlength of @p@ in bits
* @const void *k@ = pointer to key material
* @size_t sz@ = size of key material
*
* Returns: Zero if all went well, nonzero if key material was
* @size_t sz@ = size of key material
*
* Returns: Zero if all went well, nonzero if key material was
* 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
* 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
*/
int dsa_seed(dsa_param *dp, unsigned l, const void *k, size_t sz,
*/
int dsa_seed(dsa_param *dp, unsigned l, const void *k, size_t sz,
- void (*proc)(int /*ev*/, mp */*m*/, void */*p*/), void *arg)
+ int (*proc)(int /*ev*/, mp */*m*/, void */*p*/), void *arg)
{
mp *q, *p, *g;
mp *s = mp_loadb(MP_NEW, k, sz);
octet *sbuf = xmalloc(sz);
rc4_ctx rc4;
{
mp *q, *p, *g;
mp *s = mp_loadb(MP_NEW, k, sz);
octet *sbuf = xmalloc(sz);
rc4_ctx rc4;
g = mp_loadb(g, gbuf, sizeof(gbuf));
if (rabin_test(&r, g) == PGEN_COMPOSITE)
break;
g = mp_loadb(g, gbuf, sizeof(gbuf));
if (rabin_test(&r, g) == PGEN_COMPOSITE)
break;
for (i = 0; i < 5; i++) {
rc4_encrypt(&rc4, 0, pbuf, psz - b);
g = mp_loadb(g, pbuf, psz - b);
if (rabin_test(&r, g) == PGEN_COMPOSITE)
break;
for (i = 0; i < 5; i++) {
rc4_encrypt(&rc4, 0, pbuf, psz - b);
g = mp_loadb(g, pbuf, psz - b);
if (rabin_test(&r, g) == PGEN_COMPOSITE)
break;
g = mpmont_exp(&mm, &h, pp);
if (MP_CMP(g, !=, MP_ONE))
break;
g = mpmont_exp(&mm, &h, pp);
if (MP_CMP(g, !=, MP_ONE))
break;