\\ Algo p. 12 : Section 1.3.5 Computing public keys: isogen \\implantation de la fonction isogen_\ell isogen_ell(E0, s_Pl, s_Ql, s_skl, s_Pm, s_Qm, s_Rm, e_l, l)= { my(Ecurr, P_m, Q_m, R_m, s_Sl, i, s_Pint, iso); Ecurr = E0; P_m = s_Pm; Q_m = s_Qm; R_m = s_Rm; s_Sl = ellmul(E0, s_Ql, s_skl); s_Sl = elladd(E0, s_Pl, s_Sl); for (i = 0, e_l - 1, s_I = ellmul(Ecurr, s_Sl, l ^ (e_l - i - 1)); iso = ellisogeny(Ecurr, s_I); Ecurr = ellinit(iso[1]); s_Sl = ellisogenyapply(iso[2], s_Sl); P_m = ellisogenyapply(iso[2], P_m); Q_m = ellisogenyapply(iso[2], Q_m); R_m = ellisogenyapply(iso[2], R_m); ); [P_m, Q_m, R_m, Ecurr] } isoex_ell(Ecurr0, s_skl, Pm, Qm, Rm, s_el, l) = { my(Ecurr, s_Pint, s_S,u); \\ Calcul de la courbe ou sont les points \\Ecurr = curve_from_public_key(u, x_Pm, x_Qm, x_Rm); Ecurr = Ecurr0; \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\ La fonction prĂ©cedente ne marche pas : \\ Les points ne sont pas sur la courbe \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ s_Pm=Pm; s_Qm=Qm; \\ Point S s_S = ellmul(Ecurr, s_Qm, s_skl); s_S = elladd(Ecurr, s_Pm, s_S); for (i = 0, s_el - 1, s_Pint = ellmul(Ecurr, s_S, l ^ (s_el - i - 1)); u = ellisogeny(Ecurr, s_Pint); Ecurr = ellinit(u[1]); s_S =ellisogenyapply(u[2],s_S); ); Ecurr.j }