public async Task<CompleteRegistrationResponse> Generate(CompleteRegistrationRequestValidationResult validationResult) { var device = validationResult.Device ?? new UserDevice(Guid.NewGuid()) { DateCreated = SystemClock.UtcNow, DeviceId = validationResult.DeviceId, Name = validationResult.DeviceName, Platform = validationResult.DevicePlatform, IsPushNotificationsEnabled = false, PublicKey = validationResult.PublicKey, UserId = validationResult.UserId }; switch (validationResult.InteractionMode) { case InteractionMode.Pin when validationResult.Device == null: var password = DevicePasswordHasher.HashPassword(device, validationResult.Pin); device.Password = password; await UserDeviceStore.CreateDevice(device); break; case InteractionMode.Pin when validationResult.Device != null: password = DevicePasswordHasher.HashPassword(device, validationResult.Pin); await UserDeviceStore.UpdateDevicePassword(device, password); break; case InteractionMode.Fingerprint when validationResult.Device == null: device.PublicKey = validationResult.PublicKey; await UserDeviceStore.CreateDevice(device); break; case InteractionMode.Fingerprint when validationResult.Device != null: await UserDeviceStore.UpdateDevicePublicKey(device, validationResult.PublicKey); break; } return new CompleteRegistrationResponse(); }