- /* step 3 */
- BN_rand(b,BN_num_bits(w)-2/*-1*/,0,0);
- BN_set_word(b,0x10001L);
-
- /* step 4 */
- j=0;
- if (!BN_mod_exp(z,b,m,w,ctx)) goto err;
-
- /* step 5 */
- for (;;)
- {
- if (((j == 0) && BN_is_one(z)) || (BN_cmp(z,w_1) == 0))
- break;
-
- /* step 6 */
- if ((j > 0) && BN_is_one(z))
- {
- ok=0;
- goto err;
- }
-
- j++;
- if (j >= a)
- {
- ok=0;
- goto err;
- }
-
- if (!BN_mod_mul(z,z,z,w,ctx)) goto err;
- if (callback != NULL) callback(1,j,cb_arg);
- }