Exemple #1
0
/* Galbraith & Scott Method */
    public static BIG[] gs(BIG e)
    {
        int i, j;
        BIG t = new BIG(0);
        BIG q = new BIG(ROM.CURVE_Order);

        BIG[] u = new BIG[4];
        BIG[] v = new BIG[4];
        for (i = 0; i < 4; i++)
        {
            t.copy(new BIG(ROM.CURVE_WB[i]));
            DBIG d = BIG.mul(t, e);
            v[i] = new BIG(d.div(q));
            u[i] = new BIG(0);
        }
        u[0].copy(e);
        for (i = 0; i < 4; i++)
        {
            for (j = 0; j < 4; j++)
            {
                t.copy(new BIG(ROM.CURVE_BB[j][i]));
                t.copy(BIG.modmul(v[j], t, q));
                u[i].add(q);
                u[i].sub(t);
                u[i].mod(q);
            }
        }
        return(u);
    }
Exemple #2
0
/* GLV method */
    public static BIG[] glv(BIG e)
    {
        int i, j;
        BIG t = new BIG(0);
        BIG q = new BIG(ROM.CURVE_Order);

        BIG[] u = new BIG[2];
        BIG[] v = new BIG[2];
        for (i = 0; i < 2; i++)
        {
            t.copy(new BIG(ROM.CURVE_W[i]));             // why not just t=new BIG(ROM.CURVE_W[i]);
            DBIG d = BIG.mul(t, e);
            v[i] = new BIG(d.div(q));
            u[i] = new BIG(0);
        }
        u[0].copy(e);
        for (i = 0; i < 2; i++)
        {
            for (j = 0; j < 2; j++)
            {
                t.copy(new BIG(ROM.CURVE_SB[j][i]));
                t.copy(BIG.modmul(v[j], t, q));
                u[i].add(q);
                u[i].sub(t);
                u[i].mod(q);
            }
        }
        return(u);
    }