if (L == 2048 && N == 256)
return 112;
if (L == 3072 && N == 256)
- return 112;
+ return 128;
return 0;
}
}
mdsize = M_EVP_MD_size(evpmd);
+ /* If unverificable g generation only don't need seed */
+ if (!ret->p || !ret->q || idx >= 0)
+ {
+ if (seed_len == 0)
+ seed_len = mdsize;
- if (seed_len == 0)
- seed_len = mdsize;
+ seed = OPENSSL_malloc(seed_len);
- seed = OPENSSL_malloc(seed_len);
+ if (seed_out)
+ seed_tmp = seed_out;
+ else
+ seed_tmp = OPENSSL_malloc(seed_len);
- if (seed_out)
- seed_tmp = seed_out;
- else
- seed_tmp = OPENSSL_malloc(seed_len);
+ if (!seed || !seed_tmp)
+ goto err;
- if (!seed || !seed_tmp)
- goto err;
+ if (seed_in)
+ memcpy(seed, seed_in, seed_len);
- if (seed_in)
- memcpy(seed, seed_in, seed_len);
+ }
if ((ctx=BN_CTX_new()) == NULL)
goto err;
{
p = ret->p;
q = ret->q;
- memcpy(seed_tmp, seed, seed_len);
+ if (idx >= 0)
+ memcpy(seed_tmp, seed, seed_len);
goto g_only;
}
else
/* "offset = offset + n + 1" */
/* step 14 */
- if (counter >= 4096) break;
+ if (counter >= (int)(4 * L)) break;
+ }
+ if (seed_in)
+ {
+ ok = 0;
+ DSAerr(DSA_F_DSA_BUILTIN_PARAMGEN2, DSA_R_INVALID_PARAMETERS);
+ goto err;
}
}
end:
for (;;)
{
+ __fips_constseg
static const unsigned char ggen[4] = {0x67,0x67,0x65,0x6e};
if (idx >= 0)
{