示例#1
0
		protected virtual ECFieldElement GetDenominator(int coordinateSystem, ECPoint p)
		{
			switch(coordinateSystem)
			{
				case ECCurve.COORD_HOMOGENEOUS:
				case ECCurve.COORD_LAMBDA_PROJECTIVE:
				case ECCurve.COORD_SKEWED:
					return p.GetZCoord(0);
				case ECCurve.COORD_JACOBIAN:
				case ECCurve.COORD_JACOBIAN_CHUDNOVSKY:
				case ECCurve.COORD_JACOBIAN_MODIFIED:
					return p.GetZCoord(0).Square();
				default:
					return null;
			}
		}
示例#2
0
        public override ECPoint ImportPoint(ECPoint p)
        {
            if (this != p.Curve && this.CoordinateSystem == COORD_JACOBIAN && !p.IsInfinity)
            {
                switch (p.Curve.CoordinateSystem)
                {
                    case COORD_JACOBIAN:
                    case COORD_JACOBIAN_CHUDNOVSKY:
                    case COORD_JACOBIAN_MODIFIED:
                        return new FpPoint(this,
                            FromBigInteger(p.RawXCoord.ToBigInteger()),
                            FromBigInteger(p.RawYCoord.ToBigInteger()),
                            new ECFieldElement[] { FromBigInteger(p.GetZCoord(0).ToBigInteger()) },
                            p.IsCompressed);
                    default:
                        break;
                }
            }

            return base.ImportPoint(p);
        }