Beispiel #1
0
            public virtual ECPoint Lookup(int index)
            {
                uint[] x   = Nat192.Create(), y = Nat192.Create();
                int    pos = 0;

                for (int i = 0; i < m_size; ++i)
                {
                    uint MASK = (uint)(((i ^ index) - 1) >> 31);

                    for (int j = 0; j < SECP192K1_FE_INTS; ++j)
                    {
                        x[j] ^= m_table[pos + j] & MASK;
                        y[j] ^= m_table[pos + SECP192K1_FE_INTS + j] & MASK;
                    }

                    pos += (SECP192K1_FE_INTS * 2);
                }

                return(m_outer.CreateRawPoint(new SecP192K1FieldElement(x), new SecP192K1FieldElement(y), false));
            }
Beispiel #2
0
 private ECPoint CreatePoint(uint[] x, uint[] y)
 {
     return(m_outer.CreateRawPoint(new SecP192K1FieldElement(x), new SecP192K1FieldElement(y), SECP192K1_AFFINE_ZS, false));
 }