summaryrefslogtreecommitdiffstats
path: root/core/command
Commit message (Collapse)AuthorAgeFilesLines
* Add code integrity checkLukas Reschke2015-12-013-3/+203
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This PR implements the base foundation of the code signing and integrity check. In this PR implemented is the signing and verification logic, as well as commands to sign single apps or the core repository. Furthermore, there is a basic implementation to display problems with the code integrity on the update screen. Code signing basically happens the following way: - There is a ownCloud Root Certificate authority stored `resources/codesigning/root.crt` (in this PR I also ship the private key which we obviously need to change before a release :wink:). This certificate is not intended to be used for signing directly and only is used to sign new certificates. - Using the `integrity:sign-core` and `integrity:sign-app` commands developers can sign either the core release or a single app. The core release needs to be signed with a certificate that has a CN of `core`, apps need to be signed with a certificate that either has a CN of `core` (shipped apps!) or the AppID. - The command generates a signature.json file of the following format: ```json { "hashes": { "/filename.php": "2401fed2eea6f2c1027c482a633e8e25cd46701f811e2d2c10dc213fd95fa60e350bccbbebdccc73a042b1a2799f673fbabadc783284cc288e4f1a1eacb74e3d", "/lib/base.php": "55548cc16b457cd74241990cc9d3b72b6335f2e5f45eee95171da024087d114fcbc2effc3d5818a6d5d55f2ae960ab39fd0414d0c542b72a3b9e08eb21206dd9" }, "certificate": "-----BEGIN CERTIFICATE-----MIIBvTCCASagAwIBAgIUPvawyqJwCwYazcv7iz16TWxfeUMwDQYJKoZIhvcNAQEF\nBQAwIzEhMB8GA1UECgwYb3duQ2xvdWQgQ29kZSBTaWduaW5nIENBMB4XDTE1MTAx\nNDEzMTcxMFoXDTE2MTAxNDEzMTcxMFowEzERMA8GA1UEAwwIY29udGFjdHMwgZ8w\nDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANoQesGdCW0L2L+a2xITYipixkScrIpB\nkX5Snu3fs45MscDb61xByjBSlFgR4QI6McoCipPw4SUr28EaExVvgPSvqUjYLGps\nfiv0Cvgquzbx/X3mUcdk9LcFo1uWGtrTfkuXSKX41PnJGTr6RQWGIBd1V52q1qbC\nJKkfzyeMeuQfAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAvF/KIhRMQ3tYTmgHWsiM\nwDMgIDb7iaHF0fS+/Nvo4PzoTO/trev6tMyjLbJ7hgdCpz/1sNzE11Cibf6V6dsz\njCE9invP368Xv0bTRObRqeSNsGogGl5ceAvR0c9BG+NRIKHcly3At3gLkS2791bC\niG+UxI/MNcWV0uJg9S63LF8=\n-----END CERTIFICATE-----", "signature": "U29tZVNpZ25lZERhdGFFeGFtcGxl" } ``` `hashes` is an array of all files in the folder with their corresponding SHA512 hashes (this is actually quite cheap to calculate), the `certificate` is the certificate used for signing. It has to be issued by the ownCloud Root Authority and it's CN needs to be permitted to perform the required action. The `signature` is then a signature of the `hashes` which can be verified using the `certificate`. Steps to do in other PRs, this is already a quite huge one: - Add nag screen in case the code check fails to ensure that administrators are aware of this. - Add code verification also to OCC upgrade and unify display code more. - Add enforced code verification to apps shipped from the appstore with a level of "official" - Add enfocrced code verification to apps shipped from the appstore that were already signed in a previous release - Add some developer documentation on how devs can request their own certificate - Check when installing ownCloud - Add support for CRLs to allow revoking certificates **Note:** The upgrade checks are only run when the instance has a defined release channel of `stable` (defined in `version.php`). If you want to test this, you need to change the channel thus and then generate the core signature: ``` ➜ master git:(add-integrity-checker) ✗ ./occ integrity:sign-core --privateKey=resources/codesigning/core.key --certificate=resources/codesigning/core.crt Successfully signed "core" ``` Then increase the version and you should see something like the following: ![2015-11-04_12-02-57](https://cloud.githubusercontent.com/assets/878997/10936336/6adb1d14-82ec-11e5-8f06-9a74801c9abf.png) As you can see a failed code check will not prevent the further update. It will instead just be a notice to the admin. In a next step we will add some nag screen. For packaging stable releases this requires the following additional steps as a last action before zipping: 1. Run `./occ integrity:sign-core` once 2. Run `./occ integrity:sign-app` _for each_ app. However, this can be simply automated using a simple foreach on the apps folder.
* Add cmdline key to show shipped/non-shipped apps onlyVictor Dubiniuk2015-11-231-0/+17
|
* Do not allow two different version requirementsJoas Schilling2015-11-091-0/+4
|
* Replace some OC_Config calls with ILogger methodsMorris Jobke2015-10-301-1/+1
|
* Add a repair step that checks for group membership on sharesJoas Schilling2015-10-291-1/+16
|
* Revert "setting to skip migration tests by default"Morris Jobke2015-10-271-6/+0
| | | | This reverts commit 7cbdd9b90bcea3566b7d0198f23da3d427e6ef45.
* Update license headersLukas Reschke2015-10-261-1/+1
|
* Update: state which step we are going to start and warn if it might be slowJoas Schilling2015-10-211-0/+12
|
* Always pass in ILoggerThomas Müller2015-10-091-5/+9
|
* deduplicate @xenopathicMorris Jobke2015-10-064-4/+4
|
* update licence headers via scriptMorris Jobke2015-10-0510-3/+9
|
* setting to skip migration tests by defaultMorris Jobke2015-10-011-1/+7
| | | | | | | * if you install owncloud via package it is not possible to skip migration tests * this also allows to disable migration tests for an instance by default
* [upgrade] switch to debug logging on upgradeMorris Jobke2015-09-291-0/+6
| | | | | * resets afterwards * adds output about the previous log level
* Move the filtering of sensitive data to the config classJoas Schilling2015-09-251-39/+4
|
* encode arrays as stringMorris Jobke2015-09-241-3/+0
|
* [App Code Check] add check for version and mandatory fieldsMorris Jobke2015-09-241-1/+68
| | | | | * ref #17598 * including unit tests for mandatory fields/versions
* improve description and help output for the encrypt-all and decrypt-all commandBjoern Schiessle2015-09-212-2/+4
|
* Also catch exceptions on encryptAll and reset trashbin and singleUser modeJoas Schilling2015-09-181-2/+7
|
* Do not set single user in constructorJoas Schilling2015-09-182-5/+28
|
* Fix the singleuser config casing in new encryption codeJoas Schilling2015-09-172-6/+6
|
* occ script to disable encryption and to decrypt all files againBjoern Schiessle2015-09-151-0/+148
|
* use the same pattern for the command name like every other commandBjoern Schiessle2015-09-141-1/+1
|
* Introduce mimetype DB update occ commandRobin McCorkell2015-09-041-0/+96
|
* Move maintenance:mimetypesjs to sublocation, cleanup codeRobin McCorkell2015-09-011-18/+25
|
* make system root of key storage configurableBjoern Schiessle2015-08-302-0/+328
|
* Merge pull request #18423 from owncloud/occ_encrypt_allBjörn Schießle2015-08-281-0/+114
|\ | | | | occ command line tool to encrypt all files
| * occ tool to encrypt all filesBjoern Schiessle2015-08-261-0/+114
| |
* | Merge pull request #18369 from owncloud/occ-logMorris Jobke2015-08-202-0/+295
|\ \ | | | | | | occ commands to manage logging
| * | Introduce occ command to manage owncloud log backendRobin McCorkell2015-08-191-0/+124
| | | | | | | | | | | | log:owncloud can set/display the log filename and log file rotation size
| * | Introduce occ command for logging managementRobin McCorkell2015-08-191-0/+171
| | | | | | | | | | | | log:manage can set/display the log backend, log level and log timezone
* | | Merge pull request #18424 from ↵Morris Jobke2015-08-191-10/+35
|\ \ \ | |_|/ |/| | | | | | | | owncloud/filter-objectstore-password-from-config-list Filter the objectstore password from the config list as well
| * | Filter the objectstore password from the config list as wellJoas Schilling2015-08-191-10/+35
| | |
* | | No error code when app already enabled/disabledVincent Petry2015-08-192-2/+0
|/ /
* / Return error code on failure with occ app:enable/disableVincent Petry2015-08-182-0/+4
|/
* Mark ldap agent password as sensitiveJoas Schilling2015-08-141-0/+1
|
* - more injectionThomas Müller2015-07-301-1/+4
| | | | | | - less static calls - use params on sql queries - handle sql exception on database and user creation gracefully
* Remove remainings of mssqlThomas Müller2015-07-291-5/+0
|
* Merge pull request #16935 from ↵Joas Schilling2015-07-201-2/+31
|\ | | | | | | | | owncloud/allow-app-check-code-for-deprecated-classes Allow app check code for deprecated classes
| * PR #17046 deprecated OCP\Util::mb_(sub)str_replace()Joas Schilling2015-07-171-1/+1
| |
| * Allow specifying the checkers used in app:check-codeRobin McCorkell2015-07-171-15/+21
| | | | | | | | | | By default, all are enabled, but specific ones can be selected through command line options.
| * Use the decorator patternJoas Schilling2015-07-171-5/+9
| |
| * Restructor the code into different classes instead of extendingJoas Schilling2015-07-171-4/+7
| |
| * Use non-zero exit codeJoas Schilling2015-07-171-1/+2
| |
| * Allow app:check-code to check for deprecated methodsJoas Schilling2015-07-171-1/+16
| |
* | Use constants for the output formatsJoas Schilling2015-07-174-8/+12
| |
* | Add app and config name to error messagesJoas Schilling2015-07-164-5/+5
| |
* | Use json_pretty as default for the config lists (for easier export/import)Joas Schilling2015-07-162-6/+5
|/
* Move mimetypealiases.json to mimetypealiases.dist.jsonRoeland Jago Douma2015-07-101-1/+6
|
* [command] single user mode - use config object & add testsMorris Jobke2015-07-091-3/+16
|
* Invert the "public" to a "private" methodJoas Schilling2015-07-071-3/+3
|