// NewRegistration constructs a new Registration from a request. func (ra *RegistrationAuthorityImpl) NewRegistration(init core.Registration) (reg core.Registration, err error) { if err = ra.keyPolicy.GoodKey(init.Key.Key); err != nil { return core.Registration{}, core.MalformedRequestError(fmt.Sprintf("Invalid public key: %s", err.Error())) } if err = ra.checkRegistrationLimit(init.InitialIP); err != nil { return core.Registration{}, err } reg = core.Registration{ Key: init.Key, } reg.MergeUpdate(init) // This field isn't updatable by the end user, so it isn't copied by // MergeUpdate. But we need to fill it in for new registrations. reg.InitialIP = init.InitialIP // TODO(#1292): add a proper deadline here err = ra.validateContacts(context.TODO(), reg.Contact) if err != nil { return } // Store the authorization object, then return it reg, err = ra.SA.NewRegistration(reg) if err != nil { // InternalServerError since the user-data was validated before being // passed to the SA. err = core.InternalServerError(err.Error()) } ra.stats.Inc("RA.NewRegistrations", 1, 1.0) return }
// UpdateRegistration updates an existing Registration with new values. func (ra *RegistrationAuthorityImpl) UpdateRegistration(base core.Registration, update core.Registration) (reg core.Registration, err error) { base.MergeUpdate(update) // TODO(#1292): add a proper deadline here err = ra.validateContacts(context.TODO(), base.Contact) if err != nil { return } reg = base err = ra.SA.UpdateRegistration(base) if err != nil { // InternalServerError since the user-data was validated before being // passed to the SA. err = core.InternalServerError(fmt.Sprintf("Could not update registration: %s", err)) } ra.stats.Inc("RA.UpdatedRegistrations", 1, 1.0) return }