void PFC::random(G1& w) { Big x0; if (RNG==NULL) x0=rand(*mod); else x0=strong_rand(RNG, *mod); while (!w.g.set(x0,x0)) x0+=1; }
void PFC::random(G1& w) { Big x0; if (RNG==NULL) x0=rand(get_modulus()); else x0=strong_rand(RNG,get_modulus()); while (!w.g.set(x0,x0)) x0+=1; w.g*=(*cof); }
void PFC::random(G2& w) { Big x0; if (RNG==NULL) x0=rand(*mod); else x0=strong_rand(RNG,*mod); *B=-(*B); ecurve((Big)-3,*B,*mod,MR_PROJECTIVE); // move to twist while (!w.g.set(x0,x0)) x0+=1; w.g*=(*mod+1+*trace)/(*ord); *B=-(*B); ecurve((Big)-3,*B,*mod,MR_PROJECTIVE); // move back }
void PFC::random(G2& w) { int i; ZZn2 X; Big x0; if (RNG==NULL) x0=rand(*mod); else x0=strong_rand(RNG, *mod); forever { x0+=1; X.set((ZZn)1,(ZZn)x0); if (!w.g.set(X)) continue; break; } map(w.g,*x,*frob); }
void PFC::random(G2 &w) { int i; ZZn3 XX; Big X=*x; Big x0; if (RNG==NULL) x0=rand(*mod); else x0=strong_rand(RNG,*mod); forever { x0+=1; XX.set((ZZn)0,(ZZn)x0,(ZZn)0); if (!w.g.set(X)) continue; break; } w.g=HashG2(w.g,X,*frob); }
void PFC::rankey(Big& k) { if (RNG==NULL) k=rand(S,2); else k=strong_rand(RNG,S,2); }
void PFC::random(Big& w) { if (RNG==NULL) w=rand(*ord); else w=strong_rand(RNG,*ord); }
void PFC::random(Big& w) { if (RNG==NULL) w=rand(2*S,2); else w=strong_rand(RNG,2*S,2); }