コード例 #1
0
ファイル: FP4.cs プロジェクト: mvaneijk/fabric-sdk-net
        /* this-=x */
        public void Sub(FP4 x)
        {
            FP4 m = new FP4(x);

            m.Neg();
            Add(m);
        }
コード例 #2
0
ファイル: FP12.cs プロジェクト: mvaneijk/fabric-sdk-net
        /* Chung-Hasan SQR2 method from http://cacr.uwaterloo.ca/techreports/2006/cacr2006-24.pdf */
        public void Sqr()
        {
            //System.out.println("Into sqr");
            FP4 A = new FP4(a);
            FP4 B = new FP4(b);
            FP4 C = new FP4(c);
            FP4 D = new FP4(a);

            A.Sqr();
            B.Mul(c);
            B.Add(B);
            B.Norm();
            C.Sqr();
            D.Mul(b);
            D.Add(D);

            c.Add(a);
            c.Add(b);
            c.Norm();
            c.Sqr();

            a.Copy(A);

            A.Add(B);
            A.Norm();
            A.Add(C);
            A.Add(D);
            A.Norm();

            A.Neg();
            B.Times_I();
            C.Times_I();

            a.Add(B);

            b.Copy(C);
            b.Add(D);
            c.Add(A);
            //System.out.println("Out of sqr");
            Norm();
        }
コード例 #3
0
ファイル: FP12.cs プロジェクト: mvaneijk/fabric-sdk-net
        /* Special case of multiplication arises from special form of ATE pairing line function */
        public void SMul(FP12 y, int type)
        {
            //System.out.println("Into smul");

            if (type == ECP.D_TYPE)
            {
                FP4 z0 = new FP4(a);
                FP4 z2 = new FP4(b);
                FP4 z3 = new FP4(b);
                FP4 t0 = new FP4(0);
                FP4 t1 = new FP4(y.a);
                z0.Mul(y.a);
                z2.PMul(y.b.Real());
                b.Add(a);
                t1.Real().Add(y.b.Real());

                t1.Norm();
                b.Norm();
                b.Mul(t1);
                z3.Add(c);
                z3.Norm();
                z3.PMul(y.b.Real());

                t0.Copy(z0);
                t0.Neg();
                t1.Copy(z2);
                t1.Neg();

                b.Add(t0);

                b.Add(t1);
                z3.Add(t1);
                z2.Add(t0);

                t0.Copy(a);
                t0.Add(c);
                t0.Norm();
                z3.Norm();
                t0.Mul(y.a);
                c.Copy(z2);
                c.Add(t0);

                z3.Times_I();
                a.Copy(z0);
                a.Add(z3);
            }
            if (type == ECP.M_TYPE)
            {
                FP4 z0 = new FP4(a);
                FP4 z1 = new FP4(0);
                FP4 z2 = new FP4(0);
                FP4 z3 = new FP4(0);
                FP4 t0 = new FP4(a);
                FP4 t1 = new FP4(0);

                z0.Mul(y.a);
                t0.Add(b);
                t0.Norm();

                z1.Copy(t0);
                z1.Mul(y.a);
                t0.Copy(b);
                t0.Add(c);
                t0.Norm();

                z3.Copy(t0);                 //z3.mul(y.c);
                z3.PMul(y.c.GetB());
                z3.Times_I();

                t0.Copy(z0);
                t0.Neg();

                z1.Add(t0);
                b.Copy(z1);
                z2.Copy(t0);

                t0.Copy(a);
                t0.Add(c);
                t1.Copy(y.a);
                t1.Add(y.c);

                t0.Norm();
                t1.Norm();

                t0.Mul(t1);
                z2.Add(t0);

                t0.Copy(c);

                t0.PMul(y.c.GetB());
                t0.Times_I();

                t1.Copy(t0);
                t1.Neg();

                c.Copy(z2);
                c.Add(t1);
                z3.Add(t1);
                t0.Times_I();
                b.Add(t0);
                z3.Norm();
                z3.Times_I();
                a.Copy(z0);
                a.Add(z3);
            }
            Norm();
            //System.out.println("Out of smul");
        }
コード例 #4
0
ファイル: FP12.cs プロジェクト: mvaneijk/fabric-sdk-net
        /* FP12 full multiplication this=this*y */
        public void mul(FP12 y)
        {
            //System.out.println("Into mul");
            FP4 z0 = new FP4(a);
            FP4 z1 = new FP4(0);
            FP4 z2 = new FP4(b);
            FP4 z3 = new FP4(0);
            FP4 t0 = new FP4(a);
            FP4 t1 = new FP4(y.a);

            z0.Mul(y.a);
            z2.Mul(y.b);

            t0.Add(b);
            t1.Add(y.b);

            t0.Norm();
            t1.Norm();

            z1.Copy(t0);
            z1.Mul(t1);
            t0.Copy(b);
            t0.Add(c);

            t1.Copy(y.b);
            t1.Add(y.c);

            t0.Norm();
            t1.Norm();

            z3.Copy(t0);
            z3.Mul(t1);

            t0.Copy(z0);
            t0.Neg();
            t1.Copy(z2);
            t1.Neg();

            z1.Add(t0);
            //z1.norm();
            b.Copy(z1);
            b.Add(t1);

            z3.Add(t1);
            z2.Add(t0);

            t0.Copy(a);
            t0.Add(c);
            t1.Copy(y.a);
            t1.Add(y.c);

            t0.Norm();
            t1.Norm();

            t0.Mul(t1);
            z2.Add(t0);

            t0.Copy(c);
            t0.Mul(y.c);
            t1.Copy(t0);
            t1.Neg();

            //		z2.norm();
            //		z3.norm();
            //		b.norm();

            c.Copy(z2);
            c.Add(t1);
            z3.Add(t1);
            t0.Times_I();
            b.Add(t0);
            z3.Norm();
            z3.Times_I();
            a.Copy(z0);
            a.Add(z3);
            Norm();
            //System.out.println("Out of mul");
        }