Exemple #1
0
        protected static void ImplMultiply(ulong[] x, ulong[] y, ulong[] zz)
        {
            ulong num  = x[0];
            ulong num2 = x[1];

            num2 = ((num >> 57 ^ num2 << 7) & 144115188075855871uL);
            num &= 144115188075855871uL;
            ulong num3 = y[0];
            ulong num4 = y[1];

            num4  = ((num3 >> 57 ^ num4 << 7) & 144115188075855871uL);
            num3 &= 144115188075855871uL;
            ulong[] array = new ulong[6];
            SecT113Field.ImplMulw(num, num3, array, 0);
            SecT113Field.ImplMulw(num2, num4, array, 2);
            SecT113Field.ImplMulw(num ^ num2, num3 ^ num4, array, 4);
            ulong num5 = array[1] ^ array[2];
            ulong num6 = array[0];
            ulong num7 = array[3];
            ulong num8 = array[4] ^ num6 ^ num5;
            ulong num9 = array[5] ^ num7 ^ num5;

            zz[0] = (num6 ^ num8 << 57);
            zz[1] = (num8 >> 7 ^ num9 << 50);
            zz[2] = (num9 >> 14 ^ num7 << 43);
            zz[3] = num7 >> 21;
        }