Beispiel #1
0
 /**
  * @param string $channel
  * @dataProvider channelDataProvider
  */
 public function testIsCodeCheckEnforcedWithDisabledConfigSwitch($channel)
 {
     $this->environmentHelper->expects($this->once())->method('getChannel')->will($this->returnValue($channel));
     $this->config->expects($this->any())->method('getSystemValue')->with('integrity.check.disabled', false)->will($this->returnValue(true));
     $result = $this->invokePrivate($this->checker, 'isCodeCheckEnforced');
     $this->assertSame(false, $result);
 }
Beispiel #2
0
 /**
  * Verify the signature of core. Returns an array with the following content:
  * [
  * 	'FILE_MISSING' =>
  * 	[
  * 		'filename' => [
  * 			'expected' => 'expectedSHA512',
  * 			'current' => 'currentSHA512',
  * 		],
  * 	],
  * 	'EXTRA_FILE' =>
  * 	[
  * 		'filename' => [
  * 			'expected' => 'expectedSHA512',
  * 			'current' => 'currentSHA512',
  * 		],
  * 	],
  * 	'INVALID_HASH' =>
  * 	[
  * 		'filename' => [
  * 			'expected' => 'expectedSHA512',
  * 			'current' => 'currentSHA512',
  * 		],
  * 	],
  * ]
  *
  * Array may be empty in case no problems have been found.
  *
  * @return array
  */
 public function verifyCoreSignature()
 {
     try {
         $result = $this->verify($this->environmentHelper->getServerRoot() . '/core/signature.json', $this->environmentHelper->getServerRoot(), 'core');
     } catch (\Exception $e) {
         $result = ['EXCEPTION' => ['class' => get_class($e), 'message' => $e->getMessage()]];
     }
     $this->storeResults('core', $result);
     return $result;
 }
Beispiel #3
0
    public function testVerifyCoreWithDifferentScope()
    {
        $this->environmentHelper->expects($this->any())->method('getServerRoot')->will($this->returnValue(\OC::$SERVERROOT . '/tests/data/integritycheck/app/'));
        $signatureDataFile = '{
    "hashes": {
        "AnotherFile.txt": "1570ca9420e37629de4328f48c51da29840ddeaa03ae733da4bf1d854b8364f594aac560601270f9e1797ed4cd57c1aea87bf44cf4245295c94f2e935a2f0112",
        "subfolder\\/file.txt": "410738545fb623c0a5c8a71f561e48ea69e3ada0981a455e920a5ae9bf17c6831ae654df324f9328ff8453de179276ae51931cca0fa71fe8ccde6c083ca0574b"
    },
    "signature": "EL49UaSeyMAqyMtqId+tgOhhwgOevPZsRLX4j2blnybAB6fN07z0936JqZV7+eMPiE30Idx+UCY6rCFN531Kqe9vAOCdgtHUSOjjKyKc+lvULESlMb6YQcrZrvDlEMMjzjH49ewG7Ai8sNN6HrRUd9U8ws+ewSkW2DOOBItj\\/21RBnkrSt+2AtGXGigEvuTm57HrCYDj8\\/lSkumC2GVkjLUHeLOKYo4PRNOr6yP5mED5v7zo66AWvXl2fKv54InZcdxsAk35lyK9DGZbk\\/027ZRd0AOHT3LImRLvQ+8EAg3XLlRUy0hOFGgPC+jYonMzgYvsAXAXi2j8LnLJlsLwpFwu1k1B+kZVPMumKZvP9OvJb70EirecXmz62V+Jiyuaq7ne4y7Kp5gKZT\\/T8SeZ0lFtCmPfYyzBB0y8s5ldmTTmdVYHs54t\\/OCCW82HzQZxnFNPzDTRa8HglsaMKrqPtW59+R4UvRKSWhB8M\\/Ah57qgzycvPV4KMz\\/FbD4l\\/\\/9chRKSlCfc2k3b8ZSHNmi+EzCKgJjWIoKdgN1yax94puU8jfn8UW+G7H9Y1Jsf\\/jox6QLyYEgtV1vOHY2xLT7fVs2vhyvkN2MNjJnmQ70gFG5Qz2lBz5wi6ZpB+tOfCcpbLxWAkoWoIrmC\\/Ilqh7mfmRZ43g5upjkepHNd93ONuY8=",
    "certificate": "-----BEGIN CERTIFICATE-----\\r\\nMIIEwTCCAqmgAwIBAgIUWv0iujufs5lUr0svCf\\/qTQvoyKAwDQYJKoZIhvcNAQEF\\r\\nBQAwIzEhMB8GA1UECgwYb3duQ2xvdWQgQ29kZSBTaWduaW5nIENBMB4XDTE1MTEw\\r\\nMzIyNDk1M1oXDTE2MTEwMzIyNDk1M1owEjEQMA4GA1UEAwwHU29tZUFwcDCCAiIw\\r\\nDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK8q0x62agGSRBqeWsaeEwFfepMk\\r\\nF8cAobMMi50qHCv9IrOn\\/ZH9l52xBrbIkErVmRjmly0d4JhD8Ymhidsh9ONKYl\\/j\\r\\n+ishsZDM8eNNdp3Ew+fEYVvY1W7mR1qU24NWj0bzVsClI7hvPVIuw7AjfBDq1C5+\\r\\nA+ZSLSXYvOK2cEWjdxQfuNZwEZSjmA63DUllBIrm35IaTvfuyhU6BW9yHZxmb8+M\\r\\nw0xDv30D5UkE\\/2N7Pa\\/HQJLxCR+3zKibRK3nUyRDLSXxMkU9PnFNaPNX59VPgyj4\\r\\nGB1CFSToldJVPF4pzh7p36uGXZVxs8m3LFD4Ol8mhi7jkxDZjqFN46gzR0r23Py6\\r\\ndol9vfawGIoUwp9LvL0S7MvdRY0oazLXwClLP4OQ17zpSMAiCj7fgNT661JamPGj\\r\\nt5O7Zn2wA7I4ddDS\\/HDTWCu98Zwc9fHIpsJPgCZ9awoqxi4Mnf7Pk9g5nnXhszGC\\r\\ncxxIASQKM+GhdzoRxKknax2RzUCwCzcPRtCj8AQT\\/x\\/mqN3PfRmlnFBNACUw9bpZ\\r\\nSOoNq2pCF9igftDWpSIXQ38pVpKLWowjjg3DVRmVKBgivHnUnVLyzYBahHPj0vaz\\r\\ntFtUFRaqXDnt+4qyUGyrT5h5pjZaTcHIcSB4PiarYwdVvgslgwnQzOUcGAzRWBD4\\r\\n6jV2brP5vFY3g6iPAgMBAAEwDQYJKoZIhvcNAQEFBQADggIBACTY3CCHC+Z28gCf\\r\\nFWGKQ3wAKs+k4+0yoti0qm2EKX7rSGQ0PHSas6uW79WstC4Rj+DYkDtIhGMSg8FS\\r\\nHVGZHGBCc0HwdX+BOAt3zi4p7Sf3oQef70\\/4imPoKxbAVCpd\\/cveVcFyDC19j1yB\\r\\nBapwu87oh+muoeaZxOlqQI4UxjBlR\\/uRSMhOn2UGauIr3dWJgAF4pGt7TtIzt+1v\\r\\n0uA6FtN1Y4R5O8AaJPh1bIG0CVvFBE58esGzjEYLhOydgKFnEP94kVPgJD5ds9C3\\r\\npPhEpo1dRpiXaF7WGIV1X6DI\\/ipWvfrF7CEy6I\\/kP1InY\\/vMDjQjeDnJ\\/VrXIWXO\\r\\nyZvHXVaN\\/m+1RlETsH7YO\\/QmxRue9ZHN3gvvWtmpCeA95sfpepOk7UcHxHZYyQbF\\r\\n49\\/au8j+5tsr4A83xzsT1JbcKRxkAaQ7WDJpOnE5O1+H0fB+BaLakTg6XX9d4Fo7\\r\\n7Gin7hVWX7pL+JIyxMzME3LhfI61+CRcqZQIrpyaafUziPQbWIPfEs7h8tCOWyvW\\r\\nUO8ZLervYCB3j44ivkrxPlcBklDCqqKKBzDP9dYOtS\\/P4RB1NkHA9+NTvmBpTonS\\r\\nSFXdg9fFMD7VfjDE3Vnk+8DWkVH5wBYowTAD7w9Wuzr7DumiAULexnP\\/Y7xwxLv7\\r\\n4B+pXTAcRK0zECDEaX3npS8xWzrB\\r\\n-----END CERTIFICATE-----"
}';
        $this->fileAccessHelper->expects($this->at(0))->method('file_get_contents')->with(\OC::$SERVERROOT . '/tests/data/integritycheck/app//core/signature.json')->will($this->returnValue($signatureDataFile));
        $this->fileAccessHelper->expects($this->at(1))->method('file_get_contents')->with(\OC::$SERVERROOT . '/tests/data/integritycheck/app//resources/codesigning/root.crt')->will($this->returnValue(file_get_contents(__DIR__ . '/../../data/integritycheck/root.crt')));
        $expected = ['EXCEPTION' => ['class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Certificate is not valid for required scope. (Requested: core, current: CN=SomeApp)']];
        $this->assertSame($expected, $this->checker->verifyCoreSignature());
    }
 public function testGetChannel()
 {
     $this->assertSame(\OC_Util::getChannel(), $this->environmentHelper->getChannel());
 }
Beispiel #5
0
 public function testGetServerRoot()
 {
     $factory = new EnvironmentHelper();
     $this->assertSame(\OC::$SERVERROOT, $factory->getServerRoot());
 }