package acme import ( "crypto/rand" "crypto/rsa" "net/mail" ) type Account struct { Contact []string `json:"contact"` PrivKey *rsa.PrivateKey `json:"key"` } func NewAccount(email string, bits int) (Account, error) { m, err := mail.ParseAddress(email) if err != nil { return Account{}, err } key, err := rsa.GenerateKey(rand.Reader, bits) if err != nil { return Account{}, err } return Account{ Contact: []string{"mailto:" + m.Address}, PrivKey: key, }, nil }