func render(key *otp.Key) []byte { const tpl = ` <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>{{.Title}}</title> </head> <body style="text-align: center"> <img src="data:image/png;base64,{{ .Qrcode }}" /> <p>{{ .Issuer }}</p> <p>{{ .Account }}</p> <p>{{ .Secret }}</p> </body> </html>` t, err := template.New("webpage").Parse(tpl) data := struct { Title string Qrcode string Issuer string Account string Secret string }{ Title: "Guardian Token Generator", Qrcode: qrcode(key), Issuer: key.Issuer(), Account: key.AccountName(), Secret: key.Secret(), } var buf bytes.Buffer err = t.Execute(&buf, data) if err != nil { log.Fatal(err) } return buf.Bytes() }