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

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

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

                    pos += (SECP160K1_FE_INTS * 2);
                }

                return(m_outer.CreateRawPoint(new SecP160R2FieldElement(x), new SecP160R2FieldElement(y), false));
            }
Exemple #2
0
 private ECPoint CreatePoint(uint[] x, uint[] y)
 {
     return(m_outer.CreateRawPoint(new SecP160R2FieldElement(x), new SecP160R2FieldElement(y), SECP160K1_AFFINE_ZS, false));
 }