예제 #1
0
        /* this-=Q */
        public void Sub(ECP Q)
        {
            ECP NQ = new ECP(Q);

            NQ.Neg();
            Add(NQ);
        }
예제 #2
0
        /* Constant time select from pre-computed table */
        private void Select(ECP[] W, int b)
        {
            ECP MP   = new ECP();
            int m    = b >> 31;
            int babs = (b ^ m) - m;

            babs = (babs - 1) / 2;
            CMove(W[0], Teq(babs, 0)); // conditional move
            CMove(W[1], Teq(babs, 1));
            CMove(W[2], Teq(babs, 2));
            CMove(W[3], Teq(babs, 3));
            CMove(W[4], Teq(babs, 4));
            CMove(W[5], Teq(babs, 5));
            CMove(W[6], Teq(babs, 6));
            CMove(W[7], Teq(babs, 7));

            MP.Copy(this);
            MP.Neg();
            CMove(MP, (int)(m & 1));
        }