public virtual ECPoint Lookup(int index) { ulong[] x = Nat320.Create64(), y = Nat320.Create64(); int pos = 0; for (int i = 0; i < m_size; ++i) { ulong MASK = (ulong)(long)(((i ^ index) - 1) >> 31); for (int j = 0; j < SECT283R1_FE_LONGS; ++j) { x[j] ^= m_table[pos + j] & MASK; y[j] ^= m_table[pos + SECT283R1_FE_LONGS + j] & MASK; } pos += (SECT283R1_FE_LONGS * 2); } return(m_outer.CreateRawPoint(new SecT283FieldElement(x), new SecT283FieldElement(y), false)); }
private ECPoint CreatePoint(ulong[] x, ulong[] y) { return(m_outer.CreateRawPoint(new SecT283FieldElement(x), new SecT283FieldElement(y), SECT283R1_AFFINE_ZS, false)); }