mirror of
https://github.com/nextcloud/server.git
synced 2026-04-02 07:35:13 -04:00
cleaning up exception mess
This commit is contained in:
parent
c9d6ed3d7d
commit
664b2bb7af
23 changed files with 91 additions and 111 deletions
|
|
@ -24,9 +24,9 @@ namespace OCA\Encryption\Crypto;
|
|||
|
||||
use OC\Encryption\Exceptions\DecryptionFailedException;
|
||||
use OC\Encryption\Exceptions\EncryptionFailedException;
|
||||
use OC\Encryption\Exceptions\GenericEncryptionException;
|
||||
use OCA\Encryption\Exceptions\MultiKeyDecryptException;
|
||||
use OCA\Encryption\Exceptions\MultiKeyEncryptException;
|
||||
use OCP\Encryption\Exceptions\GenericEncryptionException;
|
||||
use OCP\IConfig;
|
||||
use OCP\ILogger;
|
||||
use OCP\IUser;
|
||||
|
|
|
|||
|
|
@ -2,6 +2,8 @@
|
|||
|
||||
namespace OCA\Encryption\Exceptions;
|
||||
|
||||
class MultiKeyDecryptException extends \Exception {
|
||||
use OCP\Encryption\Exceptions\GenericEncryptionException;
|
||||
|
||||
class MultiKeyDecryptException extends GenericEncryptionException {
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,8 @@
|
|||
|
||||
namespace OCA\Encryption\Exceptions;
|
||||
|
||||
class MultiKeyEncryptException extends \Exception {
|
||||
use OCP\Encryption\Exceptions\GenericEncryptionException;
|
||||
|
||||
class MultiKeyEncryptException extends GenericEncryptionException {
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,10 +19,20 @@
|
|||
*
|
||||
*/
|
||||
|
||||
|
||||
namespace OCA\Encryption\Exceptions;
|
||||
|
||||
use OCP\Encryption\Exceptions\GenericEncryptionException;
|
||||
|
||||
class PrivateKeyMissingException extends \Exception{
|
||||
class PrivateKeyMissingException extends GenericEncryptionException {
|
||||
|
||||
/**
|
||||
* @param string $userId
|
||||
*/
|
||||
public function __construct($userId) {
|
||||
if(empty($userId)) {
|
||||
$userId = "<no-user-id-given>";
|
||||
}
|
||||
parent::__construct("Private Key missing for user: $userId");
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
20
apps/encryption/lib/exceptions/publickeymissingexception.php
Normal file
20
apps/encryption/lib/exceptions/publickeymissingexception.php
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
<?php
|
||||
|
||||
|
||||
namespace OCA\Encryption\Exceptions;
|
||||
|
||||
use OCP\Encryption\Exceptions\GenericEncryptionException;
|
||||
|
||||
class PublicKeyMissingException extends GenericEncryptionException {
|
||||
|
||||
/**
|
||||
* @param string $userId
|
||||
*/
|
||||
public function __construct($userId) {
|
||||
if(empty($userId)) {
|
||||
$userId = "<no-user-id-given>";
|
||||
}
|
||||
parent::__construct("Public Key missing for user: $userId");
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -4,7 +4,7 @@ namespace OCA\Encryption;
|
|||
|
||||
use OC\Encryption\Exceptions\DecryptionFailedException;
|
||||
use OCA\Encryption\Exceptions\PrivateKeyMissingException;
|
||||
use OC\Encryption\Exceptions\PublicKeyMissingException;
|
||||
use OCA\Encryption\Exceptions\PublicKeyMissingException;
|
||||
use OCA\Encryption\Crypto\Crypt;
|
||||
use OCP\Encryption\Keys\IStorage;
|
||||
use OCP\IConfig;
|
||||
|
|
@ -301,7 +301,7 @@ class KeyManager {
|
|||
if (strlen($privateKey) !== 0) {
|
||||
return $privateKey;
|
||||
}
|
||||
throw new PrivateKeyMissingException();
|
||||
throw new PrivateKeyMissingException($userId);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -393,7 +393,7 @@ class KeyManager {
|
|||
if (strlen($publicKey) !== 0) {
|
||||
return $publicKey;
|
||||
}
|
||||
throw new PublicKeyMissingException();
|
||||
throw new PublicKeyMissingException($userId);
|
||||
}
|
||||
|
||||
public function getPublicShareKeyId() {
|
||||
|
|
@ -496,7 +496,7 @@ class KeyManager {
|
|||
if (!empty($accessList['public'])) {
|
||||
$publicShareKey = $this->getPublicShareKey();
|
||||
if (empty($publicShareKey)) {
|
||||
throw new PublicKeyMissingException();
|
||||
throw new PublicKeyMissingException($this->getPublicShareKeyId());
|
||||
}
|
||||
$publicKeys[$this->getPublicShareKeyId()] = $publicShareKey;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ class Session {
|
|||
public function getPrivateKey() {
|
||||
$key = $this->session->get('privateKey');
|
||||
if (is_null($key)) {
|
||||
throw new Exceptions\PrivateKeyMissingException('no private key stored in session');
|
||||
throw new Exceptions\PrivateKeyMissingException('no private key stored in session', 0);
|
||||
}
|
||||
return $key;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@
|
|||
|
||||
namespace OC\Connector\Sabre;
|
||||
|
||||
use OC\Encryption\Exceptions\GenericEncryptionException;
|
||||
use OCP\Encryption\Exceptions\GenericEncryptionException;
|
||||
|
||||
class File extends \OC\Connector\Sabre\Node implements \Sabre\DAV\IFile {
|
||||
|
||||
|
|
@ -184,7 +184,7 @@ class File extends \OC\Connector\Sabre\Node implements \Sabre\DAV\IFile {
|
|||
//throw exception if encryption is disabled but files are still encrypted
|
||||
try {
|
||||
return $this->fileView->fopen(ltrim($this->path, '/'), 'rb');
|
||||
} catch (\OCP\Encryption\Exception\EncryptionException $e) {
|
||||
} catch (\OCP\Encryption\Exceptions\GenericEncryptionException $e) {
|
||||
throw new \Sabre\DAV\Exception\Forbidden($e->getMessage());
|
||||
} catch (\OCP\Files\StorageNotAvailableException $e) {
|
||||
throw new \Sabre\DAV\Exception\ServiceUnavailable("Failed to open file: ".$e->getMessage());
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@
|
|||
|
||||
namespace OC\Encryption\Exceptions;
|
||||
|
||||
use OCP\Encryption\Exceptions\GenericEncryptionException;
|
||||
|
||||
class DecryptionFailedException extends GenericEncryptionException {
|
||||
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@
|
|||
|
||||
namespace OC\Encryption\Exceptions;
|
||||
|
||||
use OCP\Encryption\Exceptions\GenericEncryptionException;
|
||||
|
||||
class EmptyEncryptionDataException extends GenericEncryptionException{
|
||||
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@
|
|||
|
||||
namespace OC\Encryption\Exceptions;
|
||||
|
||||
use OCP\Encryption\Exceptions\GenericEncryptionException;
|
||||
|
||||
class EncryptionFailedException extends GenericEncryptionException{
|
||||
|
||||
|
|
|
|||
|
|
@ -23,11 +23,14 @@
|
|||
|
||||
namespace OC\Encryption\Exceptions;
|
||||
|
||||
use OCP\Encryption\Exceptions\GenericEncryptionException;
|
||||
|
||||
class EncryptionHeaderKeyExistsException extends \Exception {
|
||||
|
||||
}
|
||||
|
||||
class EncryptionHeaderToLargeException extends \Exception {
|
||||
class EncryptionHeaderKeyExistsException extends GenericEncryptionException {
|
||||
|
||||
/**
|
||||
* @param string $key
|
||||
*/
|
||||
public function __construct($key) {
|
||||
parent::__construct('header key "'. $key . '" already reserved by ownCloud');
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,7 +22,12 @@
|
|||
|
||||
namespace OC\Encryption\Exceptions;
|
||||
|
||||
use OCP\Encryption\Exceptions\GenericEncryptionException;
|
||||
|
||||
class EncryptionHeaderToLargeException extends GenericEncryptionException {
|
||||
|
||||
public function __construct($key) {
|
||||
parent::__construct('max header size exceeded');
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,6 +23,16 @@
|
|||
|
||||
namespace OC\Encryption\Exceptions;
|
||||
|
||||
class ModuleAlreadyExistsException extends \Exception {
|
||||
use OCP\Encryption\Exceptions\GenericEncryptionException;
|
||||
|
||||
class ModuleAlreadyExistsException extends GenericEncryptionException {
|
||||
|
||||
/**
|
||||
* @param string $id
|
||||
* @param string $name
|
||||
*/
|
||||
public function __construct($id, $name) {
|
||||
parent::__construct('Id "' . $id . '" already used by encryption module "' . $name . '"');
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,6 +23,8 @@
|
|||
|
||||
namespace OC\Encryption\Exceptions;
|
||||
|
||||
class ModuleDoesNotExistsException extends \Exception {
|
||||
use OCP\Encryption\Exceptions\GenericEncryptionException;
|
||||
|
||||
class ModuleDoesNotExistsException extends GenericEncryptionException {
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,28 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* @author Clark Tomlinson <clark@owncloud.com>
|
||||
* @since 2/25/15, 9:39 AM
|
||||
* @copyright Copyright (c) 2015, ownCloud, Inc.
|
||||
* @license AGPL-3.0
|
||||
*
|
||||
* This code is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* 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, version 3,
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
namespace OC\Encryption\Exceptions;
|
||||
|
||||
|
||||
class PublicKeyMissingException extends GenericEncryptionException {
|
||||
|
||||
}
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* @author Clark Tomlinson <clark@owncloud.com>
|
||||
* @since 2/25/15, 9:35 AM
|
||||
* @copyright Copyright (c) 2015, ownCloud, Inc.
|
||||
* @license AGPL-3.0
|
||||
*
|
||||
* This code is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* 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, version 3,
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
namespace OC\Encryption\Exceptions;
|
||||
|
||||
|
||||
interface UnexpectedBlockSize {
|
||||
|
||||
}
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* @author Clark Tomlinson <clark@owncloud.com>
|
||||
* @since 2/25/15, 9:34 AM
|
||||
* @copyright Copyright (c) 2015, ownCloud, Inc.
|
||||
* @license AGPL-3.0
|
||||
*
|
||||
* This code is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* 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, version 3,
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
namespace OC\Encryption\Exceptions;
|
||||
|
||||
|
||||
class UnexpectedEndOfEncryptionHeaderException extends GenericEncryptionException {
|
||||
|
||||
}
|
||||
|
|
@ -22,7 +22,8 @@
|
|||
|
||||
namespace OC\Encryption\Exceptions;
|
||||
|
||||
use OCP\Encryption\Exceptions\GenericEncryptionException;
|
||||
|
||||
class UnknownCipherException extends GenericEncryptionException{
|
||||
class UnknownCipherException extends GenericEncryptionException {
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,9 +23,9 @@
|
|||
|
||||
namespace OC\Encryption\Keys;
|
||||
|
||||
use OC\Encryption\Exceptions\GenericEncryptionException;
|
||||
use OC\Encryption\Util;
|
||||
use OC\Files\View;
|
||||
use OCP\Encryption\Exceptions\GenericEncryptionException;
|
||||
|
||||
class Storage implements \OCP\Encryption\Keys\IStorage {
|
||||
|
||||
|
|
@ -259,7 +259,7 @@ class Storage implements \OCP\Encryption\Keys\IStorage {
|
|||
private function getFileKeyDir($path) {
|
||||
|
||||
if ($this->view->is_dir($path)) {
|
||||
throw new GenericEncryptionException('file was expected but directory was given');
|
||||
throw new GenericEncryptionException("file was expected but directory was given: $path");
|
||||
}
|
||||
|
||||
list($owner, $filename) = $this->util->getUidAndFilename($path);
|
||||
|
|
|
|||
|
|
@ -70,8 +70,7 @@ class Manager implements \OCP\Encryption\IManager {
|
|||
$name = $module->getDisplayName();
|
||||
|
||||
if (isset($this->encryptionModules[$id])) {
|
||||
$message = 'Id "' . $id . '" already used by encryption module "' . $name . '"';
|
||||
throw new Exceptions\ModuleAlreadyExistsException($message);
|
||||
throw new Exceptions\ModuleAlreadyExistsException($id, $name);
|
||||
}
|
||||
|
||||
$defaultEncryptionModuleId = $this->getDefaultEncryptionModuleId();
|
||||
|
|
|
|||
|
|
@ -147,14 +147,14 @@ class Util {
|
|||
$header = self::HEADER_START . ':' . self::HEADER_ENCRYPTION_MODULE_KEY . ':' . $encryptionModule->getId() . ':';
|
||||
foreach ($headerData as $key => $value) {
|
||||
if (in_array($key, $this->ocHeaderKeys)) {
|
||||
throw new EncryptionHeaderKeyExistsException('header key "'. $key . '" already reserved by ownCloud');
|
||||
throw new EncryptionHeaderKeyExistsException($key);
|
||||
}
|
||||
$header .= $key . ':' . $value . ':';
|
||||
}
|
||||
$header .= self::HEADER_END;
|
||||
|
||||
if (strlen($header) > $this->getHeaderSize()) {
|
||||
throw new EncryptionHeaderToLargeException('max header size exceeded');
|
||||
throw new EncryptionHeaderToLargeException();
|
||||
}
|
||||
|
||||
$paddedHeader = str_pad($header, $this->headerSize, self::HEADER_PADDING_CHAR, STR_PAD_RIGHT);
|
||||
|
|
|
|||
|
|
@ -19,9 +19,16 @@
|
|||
*
|
||||
*/
|
||||
|
||||
namespace OC\Encryption\Exceptions;
|
||||
namespace OCP\Encryption\Exceptions;
|
||||
|
||||
|
||||
class GenericEncryptionException extends \Exception {
|
||||
|
||||
public function __construct($message = "", $code = 0, \Exception $previous = null) {
|
||||
if (empty($message)) {
|
||||
$message = 'Unspecified encryption exception';
|
||||
}
|
||||
parent::__construct($message, $code, $previous);
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Reference in a new issue