code: func GenerateCertificatesOrPanic() tls.Certificate {
  	privateKey, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader)
  	if err != nil {
  		panic(err)
  	}
  	sn, err := rand.Int(rand.Reader, new(big.Int).Lsh(big.NewInt(1), 128))
  	if err != nil {
  		panic(err)
  	}
  	template := x509.Certificate{
  		KeyUsage:     x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature,
  		SerialNumber: sn,
  		ExtKeyUsage:  []x509.ExtKeyUsage{x509.ExtKeyUsageServerAuth},
  	}
  	rawBytes, err := x509.CreateCertificate(rand.Reader, &template, &template, &privateKey.PublicKey, privateKey)
  	if err != nil {
  		panic(err)
  	}
  	privBytes, err := x509.MarshalECPrivateKey(privateKey)
  	if err != nil {
  		panic(err)
  	}
  	encodedCert := pem.EncodeToMemory(&pem.Block{Type: "CERTIFICATE", Bytes: rawBytes})
  	encodedKey := pem.EncodeToMemory(&pem.Block{Type: "EC PRIVATE KEY", Bytes: privBytes})
  	cert, err := tls.X509KeyPair(encodedCert, encodedKey)
  	if err != nil {
  		panic(err)
  	}
  	if len(cert.Certificate) == 0 {
  		panic("Certificate chain is empty")
  	}
  	return cert
  }
docs: // GenerateCertificatesOrPanic generates a a random pair of public and private keys
  // and return TLS certificate