diff options
Diffstat (limited to 'lib/private/Security/IdentityProof/Signer.php')
-rw-r--r-- | lib/private/Security/IdentityProof/Signer.php | 58 |
1 files changed, 10 insertions, 48 deletions
diff --git a/lib/private/Security/IdentityProof/Signer.php b/lib/private/Security/IdentityProof/Signer.php index 7431bfe815f..6083cbb5c9b 100644 --- a/lib/private/Security/IdentityProof/Signer.php +++ b/lib/private/Security/IdentityProof/Signer.php @@ -3,27 +3,8 @@ declare(strict_types=1); /** - * @copyright Copyright (c) 2016 Lukas Reschke <lukas@statuscode.ch> - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Lukas Reschke <lukas@statuscode.ch> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OC\Security\IdentityProof; @@ -32,32 +13,16 @@ use OCP\IUser; use OCP\IUserManager; class Signer { - /** @var Manager */ - private $keyManager; - /** @var ITimeFactory */ - private $timeFactory; - /** @var IUserManager */ - private $userManager; - - /** - * @param Manager $keyManager - * @param ITimeFactory $timeFactory - * @param IUserManager $userManager - */ - public function __construct(Manager $keyManager, - ITimeFactory $timeFactory, - IUserManager $userManager) { - $this->keyManager = $keyManager; - $this->timeFactory = $timeFactory; - $this->userManager = $userManager; + public function __construct( + private Manager $keyManager, + private ITimeFactory $timeFactory, + private IUserManager $userManager, + ) { } /** * Returns a signed blob for $data * - * @param string $type - * @param array $data - * @param IUser $user * @return array ['message', 'signature'] */ public function sign(string $type, array $data, IUser $user): array { @@ -79,13 +44,10 @@ class Signer { /** * Whether the data is signed properly * - * @param array $data - * @return bool */ public function verify(array $data): bool { - if (isset($data['message']) + if (isset($data['message']['signer']) && isset($data['signature']) - && isset($data['message']['signer']) ) { $location = strrpos($data['message']['signer'], '@'); $userId = substr($data['message']['signer'], 0, $location); @@ -93,12 +55,12 @@ class Signer { $user = $this->userManager->get($userId); if ($user !== null) { $key = $this->keyManager->getKey($user); - return (bool)openssl_verify( + return openssl_verify( json_encode($data['message']), base64_decode($data['signature']), $key->getPublic(), OPENSSL_ALGO_SHA512 - ); + ) === 1; } } |