code: func ecCurveScan(addr, hostname string) (grade Grade, output Output, err error) {
  	allCurves := allCurvesIDs()
  	curves := make([]tls.CurveID, len(allCurves))
  	copy(curves, allCurves)
  	var supportedCurves []string
  	for len(curves) > 0 {
  		var curveIndex int
  		_, curveIndex, _, err = sayHello(addr, hostname, allECDHECiphersIDs(), curves, tls.VersionTLS12, nil)
  		if err != nil {
  			// This case is expected, because eventually we ask only for curves the server doesn't support
  			if err == errHelloFailed {
  				err = nil
  				break
  			}
  			return
  		}
  		curveID := curves[curveIndex]
  		supportedCurves = append(supportedCurves, tls.Curves[curveID])
  		curves = append(curves[:curveIndex], curves[curveIndex+1:]...)
  	}
  	output = supportedCurves
  	grade = Good
  	return
  }
docs: // ecCurveScan returns the elliptic curves supported by the host.