code: func parseECDSA(in []byte) (out PublicKey, rest []byte, err error) {
  	identifier, in, ok := parseString(in)
  	if !ok {
  		return nil, nil, errShortRead
  	}
  
  	key := new(ecdsa.PublicKey)
  
  	switch string(identifier) {
  	case "nistp256":
  		key.Curve = elliptic.P256()
  	case "nistp384":
  		key.Curve = elliptic.P384()
  	case "nistp521":
  		key.Curve = elliptic.P521()
  	default:
  		return nil, nil, errors.New("ssh: unsupported curve")
  	}
  
  	var keyBytes []byte
  	if keyBytes, in, ok = parseString(in); !ok {
  		return nil, nil, errShortRead
  	}
  
  	key.X, key.Y = elliptic.Unmarshal(key.Curve, keyBytes)
  	if key.X == nil || key.Y == nil {
  		return nil, nil, errors.New("ssh: invalid curve point")
  	}
  	return (*ecdsaPublicKey)(key), in, nil
  }
docs: // parseECDSA parses an ECDSA key according to RFC 5656, section 3.1.