import ( "crypto/elliptic" "fmt" "github.com/dedis/crypto/abstract" "github.com/dedis/crypto/nist" ) func main() { // Create a new elliptic curve point c := nist.NewAES128SHA256P256() s := c.Scalar().Pick(c.RandomStream()) p := c.Point().Mul(nil, s) // Print the coordinates of the point fmt.Printf("X: %v\nY: %v\n", p.X(), p.Y()) // Serialize the point buf, err := c.Point().MarshalBinary(p) if err != nil { panic(err) } fmt.Printf("Serialized Point: %x\n", buf) // Deserialize the point p2 := c.Point().Null() if err := p2.UnmarshalBinary(buf); err != nil { panic(err) } fmt.Printf("Deserialized Point: %v\n", p2) }In this example, we create a new elliptic curve point using an AES128SHA256P256 curve using `nist.NewAES128SHA256P256()`. We then randomly generate a scalar using the curve's random stream and multiply it with the curve's point using `c.Point().Mul(nil, s)`. We then print the `X` and `Y` coordinates of the point using `p.X()` and `p.Y()`. We also serialize and deserialize the point using `c.Point().MarshalBinary(p)` and `p2.UnmarshalBinary(buf)` respectively. Overall, the Suite Point package is part of the `github.com/dedis/crypto/abstract` library which allows the implementation of cryptographic schemes that can use different cryptographic primitives. It provides interfaces for point operations in an elliptic curve which is demonstrated in the example above.