epoint_getrhs

epoint_getrhs

```c

ifndef MR_EDWARDS

static void epointgetrhs(_MIPD big x,big y) { / x and y must be different /

/ find x^3+Ax+B /

ifdef MR_OS_THREADS

miracl *mr_mip=get_mip();

endif

nres_modmult(_MIPP_ x,x,y);

nres_modmult(_MIPP_ y,x,y);
if (mr_abs(mr_mip->Asize)==MR_TOOBIG)
    nres_modmult(_MIPP_ x,mr_mip->A,mr_mip->w1);
else
    nres_premult(_MIPP_ x,mr_mip->Asize,mr_mip->w1);
nres_modadd(_MIPP_ y,mr_mip->w1,y);
if (mr_abs(mr_mip->Bsize)==MR_TOOBIG)
    nres_modadd(_MIPP_ y,mr_mip->B,y);
else
{
    convert(_MIPP_ mr_mip->Bsize,mr_mip->w1);
    nres(_MIPP_ mr_mip->w1,mr_mip->w1);
    nres_modadd(_MIPP_ y,mr_mip->w1,y);
}

}

else

/* Twisted Inverted Edwards curves

  • Assumes Twisted Inverted Edward's equation x^2+Ay^2 = x^2.y^2 + B
  • Assumes points are not of order 2 or 4 */

static void epointgetrhs(_MIPD big x,big y) { / find RHS=(x^2-B)/(x^2-A) /

ifdef MR_OS_THREADS

miracl *mr_mip=get_mip();

endif

nres_modmult(_MIPP_ x,x,mr_mip->w6);
nres_modsub(_MIPP_ mr_mip->w6,mr_mip->B,y);  
nres_modsub(_MIPP_ mr_mip->w6,mr_mip->A,mr_mip->w6);

nres_moddiv(_MIPP_ y,mr_mip->w6,y);

}

endif

© phdlisl all right reserved,powered by GitbookUpdate in 2024-05-20

results matching ""

    No results matching ""