Beispiel #1
0
    public virtual void NormalizeAll(ECPoint[] points, int off, int len, ECFieldElement iso)
    {
        CheckPoints(points, off, len);
        int coordinateSystem = CoordinateSystem;

        if (coordinateSystem == 0 || coordinateSystem == 5)
        {
            if (iso != null)
            {
                throw new ArgumentException("not valid for affine coordinates", "iso");
            }
            return;
        }
        ECFieldElement[] array  = new ECFieldElement[len];
        int[]            array2 = new int[len];
        int num = 0;

        for (int i = 0; i < len; i++)
        {
            ECPoint eCPoint = points[off + i];
            if (eCPoint != null && (iso != null || !eCPoint.IsNormalized()))
            {
                array[num]    = eCPoint.GetZCoord(0);
                array2[num++] = off + i;
            }
        }
        if (num != 0)
        {
            ECAlgorithms.MontgomeryTrick(array, 0, num, iso);
            for (int j = 0; j < num; j++)
            {
                int num3 = array2[j];
                points[num3] = points[num3].Normalize(array[j]);
            }
        }
    }