code: func GenerateSharedSecret(privkey *PrivateKey, pubkey *PublicKey) []byte {
  	x, _ := pubkey.Curve.ScalarMult(pubkey.X, pubkey.Y, privkey.D.Bytes())
  	return x.Bytes()
  }
docs: // GenerateSharedSecret generates a shared secret based on a private key and a
  // public key using Diffie-Hellman key exchange (ECDH) (RFC 4753).
  // RFC5903 Section 9 states we should only return x.