From e67ea08eae5d89950726741fe70b6b9a3dc7d3a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20=C4=8Ciha=C5=99?= Date: Wed, 1 Nov 2017 15:22:08 +0100 Subject: [PATCH] Properly update FIDO U2F counter on login MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Michal Čihař --- libraries/classes/Plugins/SecondFactor/Key.php | 6 ++++-- libraries/classes/SecondFactor.php | 12 +++++++++++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/libraries/classes/Plugins/SecondFactor/Key.php b/libraries/classes/Plugins/SecondFactor/Key.php index 3573824d57..9e6e43336b 100644 --- a/libraries/classes/Plugins/SecondFactor/Key.php +++ b/libraries/classes/Plugins/SecondFactor/Key.php @@ -47,12 +47,13 @@ class Key extends SecondFactorPlugin public function getRegistrations() { $result = []; - foreach ($this->_second->config['settings']['registrations'] as $data) { + foreach ($this->_second->config['settings']['registrations'] as $index => $data) { $reg = new \StdClass; $reg->keyHandle = $data['keyHandle']; $reg->publicKey = $data['publicKey']; $reg->certificate = $data['certificate']; $reg->counter = $data['counter']; + $reg->index = $index; $result[] = $reg; } return $result; @@ -101,7 +102,8 @@ class Key extends SecondFactorPlugin $this->getRegistrations(), $response ); - // TODO: Store counter + $this->_second->config['settings']['registrations'][$authentication->index]['counter'] = $authentication->counter; + $this->_second->save(); return true; } catch (\Exception $e) { return false; diff --git a/libraries/classes/SecondFactor.php b/libraries/classes/SecondFactor.php index d87188ce0f..1cffa08a87 100644 --- a/libraries/classes/SecondFactor.php +++ b/libraries/classes/SecondFactor.php @@ -179,6 +179,16 @@ class SecondFactor return $this->_backend->getError() . $this->_backend->setup(); } + /** + * Saves current configuration. + * + * @return true|PhpMyAdmin\Message + */ + public function save() + { + return UserPreferences::persistOption('2fa', $this->config, null); + } + /** * Changes second factor settings * @@ -209,7 +219,7 @@ class SecondFactor return false; } } - $result = UserPreferences::persistOption('2fa', $this->config, null); + $result = $this->save(); if ($result !== true) { $result->display(); }