package engine import ( "crypto/ecdh" "crypto/rand" "fmt" ) type Engine struct { curve ecdh.Curve } func NewEngine() *Engine { return &Engine{ curve: ecdh.X25519(), } } func (e *Engine) GenerateKeyPair() (*KeyPair, error) { priv, err := e.curve.GenerateKey(rand.Reader) if err != nil { return nil, fmt.Errorf("failed to generate private key: %w", err) } return &KeyPair{ PrivateKey: priv, PublicKey: priv.PublicKey(), }, nil }