func modelToRegistration(ri interface{}) (core.Registration, error) { var rm *regModelv1 if features.Enabled(features.AllowAccountDeactivation) { r2 := ri.(*regModelv2) rm = &r2.regModelv1 } else { rm = ri.(*regModelv1) } k := &jose.JsonWebKey{} err := json.Unmarshal(rm.Key, k) if err != nil { err = fmt.Errorf("unable to unmarshal JsonWebKey in db: %s", err) return core.Registration{}, err } var contact *[]string // Contact can be nil when the DB contains the literal string "null". We // prefer to represent this in memory as a pointer to an empty slice rather // than a nil pointer. if rm.Contact == nil { contact = &[]string{} } else { contact = &rm.Contact } r := core.Registration{ ID: rm.ID, Key: k, Contact: contact, Agreement: rm.Agreement, InitialIP: net.IP(rm.InitialIP), CreatedAt: rm.CreatedAt, } if features.Enabled(features.AllowAccountDeactivation) { r2 := ri.(*regModelv2) r.Status = core.AcmeStatus(r2.Status) } return r, nil }