コード例 #1
0
            public virtual ECPoint Lookup(int index)
            {
                uint[] x   = Nat.Create(SECP521R1_FE_INTS), y = Nat.Create(SECP521R1_FE_INTS);
                int    pos = 0;

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

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

                    pos += (SECP521R1_FE_INTS * 2);
                }

                return(m_outer.CreateRawPoint(new SecP521R1FieldElement(x), new SecP521R1FieldElement(y), false));
            }
コード例 #2
0
 private ECPoint CreatePoint(uint[] x, uint[] y)
 {
     return(m_outer.CreateRawPoint(new SecP521R1FieldElement(x), new SecP521R1FieldElement(y), SECP521R1_AFFINE_ZS, false));
 }