def valid_public_key?(point)
      return false if point.group != self
      return false if point.infinity?
      return false if !point_satisfies_equation?(point)
      point.multiply_by_scalar(order).infinity?
    end
def valid_public_key?(point)
      return false if point.group != self
      return false if point.infinity?
      return false if !point_satisfies_equation?(point)
      point.multiply_by_scalar(order).infinity?
    end
Returns true if the point is not infinity, it is a solution to the curve's
 defining equation, and it is a multiple of G.  This process is defined in
 SEC1 2.0, Section 3.2.2.1: Elliptic Curve Public Key Partial Validation Primitive