Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cannot upload to local storage with user-key encryption #181

Open
phil-davis opened this issue Feb 20, 2020 · 1 comment
Open

Cannot upload to local storage with user-key encryption #181

phil-davis opened this issue Feb 20, 2020 · 1 comment

Comments

@phil-davis
Copy link
Contributor

  1. have user-key encryption enabled
  2. the administrator creates some local storage localstorage and makes it available to just user testuser
  3. testuser tries to upload some file directly to localstorage/file.txt

It should work, but an exception happens like https://drone.owncloud.com/owncloud/encryption/1128/89/8

{"reqId":"tIXqkMaEcR0NqNTdfNZ7","level":4,"time":"2020-02-18T07:56:40+00:00","remoteAddr":"172.23.0.6","user":"user0","app":"webdav","method":"PUT","url":"\/remote.php\/webdav\/local_storage2\/textfile2.txt","message":"Exception: HTTP\/1.1 503 Encryption not ready: multikeydecrypt with share key failed:error:0909006C:PEM routines:get_name:no start line: {\"Exception\":\"Sabre\\\\DAV\\\\Exception\\\\ServiceUnavailable\",\"Message\":\"Encryption not ready: multikeydecrypt with share key failed:error:0909006C:PEM routines:get_name:no start line\",\"Code\":0,\"Trace\":\"#0 \\\/var\\\/www\\\/owncloud\\\/server\\\/apps\\\/dav\\\/lib\\\/Connector\\\/Sabre\\\/File.php(236): OCA\\\\DAV\\\\Connector\\\\Sabre\\\\File->convertToSabreException(Object(OCA\\\\Encryption\\\\Exceptions\\\\MultiKeyDecryptException))\\n#1 \\\/var\\\/www\\\/owncloud\\\/server\\\/apps\\\/dav\\\/lib\\\/Connector\\\/Sabre\\\/Directory.php(172): OCA\\\\DAV\\\\Connector\\\\Sabre\\\\File->put(Resource id #31)\\n#2 \\\/var\\\/www\\\/owncloud\\\/server\\\/lib\\\/composer\\\/sabre\\\/dav\\\/lib\\\/DAV\\\/Server.php(1104): OCA\\\\DAV\\\\Connector\\\\Sabre\\\\Directory->createFile('textfile2.txt', Resource id #31)\\n#3 \\\/var\\\/www\\\/owncloud\\\/server\\\/lib\\\/composer\\\/sabre\\\/dav\\\/lib\\\/DAV\\\/CorePlugin.php(527): Sabre\\\\DAV\\\\Server->createFile('local_storage2\\\/...', Resource id #31, NULL)\\n#4 \\\/var\\\/www\\\/owncloud\\\/server\\\/lib\\\/composer\\\/sabre\\\/event\\\/lib\\\/WildcardEmitterTrait.php(89): Sabre\\\\DAV\\\\CorePlugin->httpPut(Object(Sabre\\\\HTTP\\\\Request), Object(Sabre\\\\HTTP\\\\Response))\\n#5 \\\/var\\\/www\\\/owncloud\\\/server\\\/lib\\\/composer\\\/sabre\\\/dav\\\/lib\\\/DAV\\\/Server.php(474): Sabre\\\\DAV\\\\Server->emit('method:PUT', Array)\\n#6 \\\/var\\\/www\\\/owncloud\\\/server\\\/lib\\\/composer\\\/sabre\\\/dav\\\/lib\\\/DAV\\\/Server.php(251): Sabre\\\\DAV\\\\Server->invokeMethod(Object(Sabre\\\\HTTP\\\\Request), Object(Sabre\\\\HTTP\\\\Response))\\n#7 \\\/var\\\/www\\\/owncloud\\\/server\\\/lib\\\/composer\\\/sabre\\\/dav\\\/lib\\\/DAV\\\/Server.php(319): Sabre\\\\DAV\\\\Server->start()\\n#8 \\\/var\\\/www\\\/owncloud\\\/server\\\/apps\\\/dav\\\/appinfo\\\/v1\\\/webdav.php(65): Sabre\\\\DAV\\\\Server->exec()\\n#9 \\\/var\\\/www\\\/owncloud\\\/server\\\/remote.php(165): require_once('\\\/var\\\/www\\\/ownclo...')\\n#10 {main}\",\"File\":\"\\\/var\\\/www\\\/owncloud\\\/server\\\/apps\\\/dav\\\/lib\\\/Connector\\\/Sabre\\\/File.php\",\"Line\":687}"}
{"reqId":"tIXqkMaEcR0NqNTdfNZ7","level":3,"time":"2020-02-18T07:56:40+00:00","remoteAddr":"172.23.0.6","user":"user0","app":"webdav","method":"PUT","url":"\/remote.php\/webdav\/local_storage2\/textfile2.txt","message":"Caused by: {\"Exception\":\"OCA\\\\Encryption\\\\Exceptions\\\\MultiKeyDecryptException\",\"Message\":\"multikeydecrypt with share key failed:error:0909006C:PEM routines:get_name:no start line\",\"Code\":0,\"Trace\":\"#0 \\\/var\\\/www\\\/owncloud\\\/server\\\/apps\\\/encryption\\\/lib\\\/KeyManager.php(420): OCA\\\\Encryption\\\\Crypto\\\\Crypt->multiKeyDecrypt('\\\\xEB\\\\xE9\\\\x16o2\\\\xFEN7U\\\\xEA\\\\x8F\\\\x80w\\\\x14\\\\xB3...', '\\\\xA3\\\\x89Ue\\\\x98tX\\\\xBF.D\\\\xA2+a?\\\\x9A...', '-----BEGIN PRIV...')\\n#1 \\\/var\\\/www\\\/owncloud\\\/server\\\/apps\\\/encryption\\\/lib\\\/Crypto\\\/Encryption.php(185): OCA\\\\Encryption\\\\KeyManager->getFileKey('\\\/user0\\\/files\\\/lo...', 'user0')\\n#2 \\\/var\\\/www\\\/owncloud\\\/server\\\/lib\\\/private\\\/Files\\\/Stream\\\/Encryption.php(258): OCA\\\\Encryption\\\\Crypto\\\\Encryption->begin('\\\/user0\\\/files\\\/lo...', 'user0', 'wb', Array, Array, NULL)\\n#3 [internal function]: OC\\\\Files\\\\Stream\\\\Encryption->stream_open('ocencryption:\\\/\\\/', 'wb', 0, NULL)\\n#4 \\\/var\\\/www\\\/owncloud\\\/server\\\/lib\\\/private\\\/Files\\\/Stream\\\/Encryption.php(199): fopen('ocencryption:\\\/\\\/', 'wb', false, Resource id #41)\\n#5 \\\/var\\\/www\\\/owncloud\\\/server\\\/lib\\\/private\\\/Files\\\/Stream\\\/Encryption.php(181): OC\\\\Files\\\\Stream\\\\Encryption::wrapSource(Resource id #40, Resource id #41, 'ocencryption', 'OC\\\\\\\\Files\\\\\\\\Stream...', 'wb')\\n#6 \\\/var\\\/www\\\/owncloud\\\/server\\\/lib\\\/private\\\/Files\\\/Storage\\\/Wrapper\\\/Encryption.php(480): OC\\\\Files\\\\Stream\\\\Encryption::wrap(Resource id #40, 'textfile2.txt.o...', '\\\/user0\\\/files\\\/lo...', Array, 'user0', Object(OCA\\\\Encryption\\\\Crypto\\\\Encryption), Object(OC\\\\Files\\\\Storage\\\\Wrapper\\\\PermissionsMask), Object(OC\\\\Files\\\\Storage\\\\Wrapper\\\\Encryption), Object(OC\\\\Encryption\\\\Util), Object(OC\\\\Encryption\\\\File), 'wb', 0, 0, 0, true, NULL)\\n#7 \\\/var\\\/www\\\/owncloud\\\/server\\\/lib\\\/private\\\/Files\\\/Storage\\\/Wrapper\\\/Checksum.php(58): OC\\\\Files\\\\Storage\\\\Wrapper\\\\Encryption->fopen('textfile2.txt.o...', 'wb')\\n#8 \\\/var\\\/www\\\/owncloud\\\/server\\\/lib\\\/private\\\/Files\\\/Storage\\\/Wrapper\\\/Wrapper.php(296): OC\\\\Files\\\\Storage\\\\Wrapper\\\\Checksum->fopen('textfile2.txt.o...', 'wb')\\n#9 \\\/var\\\/www\\\/owncloud\\\/server\\\/apps\\\/dav\\\/lib\\\/Connector\\\/Sabre\\\/File.php(194): OC\\\\Files\\\\Storage\\\\Wrapper\\\\Wrapper->fopen('textfile2.txt.o...', 'wb')\\n#10 \\\/var\\\/www\\\/owncloud\\\/server\\\/apps\\\/dav\\\/lib\\\/Connector\\\/Sabre\\\/Directory.php(172): OCA\\\\DAV\\\\Connector\\\\Sabre\\\\File->put(Resource id #31)\\n#11 \\\/var\\\/www\\\/owncloud\\\/server\\\/lib\\\/composer\\\/sabre\\\/dav\\\/lib\\\/DAV\\\/Server.php(1104): OCA\\\\DAV\\\\Connector\\\\Sabre\\\\Directory->createFile('textfile2.txt', Resource id #31)\\n#12 \\\/var\\\/www\\\/owncloud\\\/server\\\/lib\\\/composer\\\/sabre\\\/dav\\\/lib\\\/DAV\\\/CorePlugin.php(527): Sabre\\\\DAV\\\\Server->createFile('local_storage2\\\/...', Resource id #31, NULL)\\n#13 \\\/var\\\/www\\\/owncloud\\\/server\\\/lib\\\/composer\\\/sabre\\\/event\\\/lib\\\/WildcardEmitterTrait.php(89): Sabre\\\\DAV\\\\CorePlugin->httpPut(Object(Sabre\\\\HTTP\\\\Request), Object(Sabre\\\\HTTP\\\\Response))\\n#14 \\\/var\\\/www\\\/owncloud\\\/server\\\/lib\\\/composer\\\/sabre\\\/dav\\\/lib\\\/DAV\\\/Server.php(474): Sabre\\\\DAV\\\\Server->emit('method:PUT', Array)\\n#15 \\\/var\\\/www\\\/owncloud\\\/server\\\/lib\\\/composer\\\/sabre\\\/dav\\\/lib\\\/DAV\\\/Server.php(251): Sabre\\\\DAV\\\\Server->invokeMethod(Object(Sabre\\\\HTTP\\\\Request), Object(Sabre\\\\HTTP\\\\Response))\\n#16 \\\/var\\\/www\\\/owncloud\\\/server\\\/lib\\\/composer\\\/sabre\\\/dav\\\/lib\\\/DAV\\\/Server.php(319): Sabre\\\\DAV\\\\Server->start()\\n#17 \\\/var\\\/www\\\/owncloud\\\/server\\\/apps\\\/dav\\\/appinfo\\\/v1\\\/webdav.php(65): Sabre\\\\DAV\\\\Server->exec()\\n#18 \\\/var\\\/www\\\/owncloud\\\/server\\\/remote.php(165): require_once('\\\/var\\\/www\\\/ownclo...')\\n#19 {main}\",\"File\":\"\\\/var\\\/www\\\/owncloud\\\/server\\\/apps\\\/encryption\\\/lib\\\/Crypto\\\/Crypt.php\",\"Line\":645}"}

This was found when running core CLI acceptance tests with user-key encryption on:
https://drone.owncloud.com/owncloud/encryption/1128/89/11

  Scenario: create local storages that are available to specific users                                                                         # /var/www/owncloud/testrunner/tests/acceptance/features/cliLocalStorage/createLocalStorageForUsers.feature:13
    Given the administrator has created the local storage mount "local_storage2"                                                               # OccContext::theAdministratorHasCreatedTheLocalStorageMountUsingTheOccCommand()
    And the administrator has created the local storage mount "local_storage3"                                                                 # OccContext::theAdministratorHasCreatedTheLocalStorageMountUsingTheOccCommand()
    And the administrator has uploaded file with content "this is a file in local storage2" to "/local_storage2/file-in-local-storage2.txt"    # FeatureContext::adminHasUploadedAFileWithContentTo()
    And the administrator has uploaded file with content "this is a file in local storage3" to "/local_storage3/file-in-local-storage3.txt"    # FeatureContext::adminHasUploadedAFileWithContentTo()
    And the administrator has uploaded file with content "this is a file to delete in local storage2" to "/local_storage2/file-to-delete2.txt" # FeatureContext::adminHasUploadedAFileWithContentTo()
    And the administrator has uploaded file with content "this is a file to delete in local storage3" to "/local_storage3/file-to-delete3.txt" # FeatureContext::adminHasUploadedAFileWithContentTo()
    And the administrator has uploaded file with content "this is a file to rename in local storage2" to "/local_storage2/file-to-rename2.txt" # FeatureContext::adminHasUploadedAFileWithContentTo()
    And the administrator has uploaded file with content "this is a file to rename in local storage3" to "/local_storage3/file-to-rename3.txt" # FeatureContext::adminHasUploadedAFileWithContentTo()
    When the administrator adds user "user0" as the applicable user for local storage mount "local_storage2" using the occ command             # OccContext::theAdminAddsRemovesAsTheApplicableUserForMountUsingTheOccCommand()
    And the administrator adds user "user1" as the applicable user for local storage mount "local_storage3" using the occ command              # OccContext::theAdminAddsRemovesAsTheApplicableUserForMountUsingTheOccCommand()
    Then as "user0" folder "/local_storage2" should exist                                                                                      # FeatureContext::asFileOrFolderShouldExist()
    And user "user0" should be able to delete file "/local_storage2/file-to-delete2.txt"                                                       # FeatureContext::userShouldBeAbleToDeleteEntry()
    And user "user0" should be able to rename file "/local_storage2/file-to-rename2.txt" to "/local_storage2/another-name2.txt"                # FeatureContext::theUserShouldBeAbleToRenameEntryTo()
    And user "user0" should be able to upload file "filesForUpload/textfile.txt" to "/local_storage2/textfile2.txt"                            # FeatureContext::userShouldBeAbleToUploadFileTo()
      '/local_storage2/textfile2.txt' expected to exist but not found
      Failed asserting that false is true.
    And the content of file "/local_storage2/file-in-local-storage2.txt" for user "user0" should be "this is a file in local storage2"         # FeatureContext::contentOfFileForUserShouldBe()
    But as "user0" folder "/local_storage3" should not exist                                                                                   # FeatureContext::asFileOrFolderShouldNotExist()
    And as "user1" folder "/local_storage3" should exist                                                                                       # FeatureContext::asFileOrFolderShouldExist()
    And user "user1" should be able to delete file "/local_storage3/file-to-delete3.txt"                                                       # FeatureContext::userShouldBeAbleToDeleteEntry()
    And user "user1" should be able to rename file "/local_storage3/file-to-rename3.txt" to "/local_storage3/another-name3.txt"                # FeatureContext::theUserShouldBeAbleToRenameEntryTo()
    And user "user1" should be able to upload file "filesForUpload/textfile.txt" to "/local_storage3/textfile3.txt"                            # FeatureContext::userShouldBeAbleToUploadFileTo()
    And the content of file "/local_storage3/file-in-local-storage3.txt" for user "user1" should be "this is a file in local storage3"         # FeatureContext::contentOfFileForUserShouldBe()
    But as "user1" folder "/local_storage2" should not exist                                                                                   # FeatureContext::asFileOrFolderShouldNotExist()

  Scenario: create local storage that is available for more than one user                                                                      # /var/www/owncloud/testrunner/tests/acceptance/features/cliLocalStorage/createLocalStorageForUsers.feature:37
    And these users have been created with default attributes and without skeleton files:                                                      # FeatureContext::theseUsersHaveBeenCreatedWithDefaultAttributesAndWithoutSkeletonFiles()
      | username |
      | user2    |
    And the administrator has created the local storage mount "local_storage2"                                                                 # OccContext::theAdministratorHasCreatedTheLocalStorageMountUsingTheOccCommand()
    And the administrator has uploaded file with content "this is a file in local storage2" to "/local_storage2/file-in-local-storage2.txt"    # FeatureContext::adminHasUploadedAFileWithContentTo()
    And the administrator has uploaded file with content "this is a file to delete in local storage2" to "/local_storage2/file-to-delete2.txt" # FeatureContext::adminHasUploadedAFileWithContentTo()
    And the administrator has uploaded file with content "this is a file to rename in local storage2" to "/local_storage2/file-to-rename2.txt" # FeatureContext::adminHasUploadedAFileWithContentTo()
    When the administrator adds user "user0" as the applicable user for local storage mount "local_storage2" using the occ command             # OccContext::theAdminAddsRemovesAsTheApplicableUserForMountUsingTheOccCommand()
    And the administrator adds user "user1" as the applicable user for local storage mount "local_storage2" using the occ command              # OccContext::theAdminAddsRemovesAsTheApplicableUserForMountUsingTheOccCommand()
    Then as "user0" folder "/local_storage2" should exist                                                                                      # FeatureContext::asFileOrFolderShouldExist()
    And user "user0" should be able to delete file "/local_storage2/file-to-delete2.txt"                                                       # FeatureContext::userShouldBeAbleToDeleteEntry()
    And user "user0" should be able to rename file "/local_storage2/file-to-rename2.txt" to "/local_storage2/another-name2.txt"                # FeatureContext::theUserShouldBeAbleToRenameEntryTo()
    And user "user0" should be able to upload file "filesForUpload/textfile.txt" to "/local_storage2/textfile2.txt"                            # FeatureContext::userShouldBeAbleToUploadFileTo()
      '/local_storage2/textfile2.txt' expected to exist but not found
      Failed asserting that false is true.
    And the content of file "/local_storage2/file-in-local-storage2.txt" for user "user0" should be "this is a file in local storage2"         # FeatureContext::contentOfFileForUserShouldBe()
    And as "user1" folder "/local_storage2" should exist                                                                                       # FeatureContext::asFileOrFolderShouldExist()
    And the content of file "/local_storage2/file-in-local-storage2.txt" for user "user1" should be "this is a file in local storage2"         # FeatureContext::contentOfFileForUserShouldBe()
    And the content of file "/local_storage2/another-name2.txt" for user "user1" should be "this is a file to rename in local storage2"        # FeatureContext::contentOfFileForUserShouldBe()
    And as "user1" file "/local_storage2/textfile2.txt" should exist                                                                           # FeatureContext::asFileOrFolderShouldExist()
    But as "user1" file "/local_storage2/file-to-delete2.txt" should not exist                                                                 # FeatureContext::asFileOrFolderShouldNotExist()
    And as "user2" folder "/local_storage2" should not exist     

The same scenario works with master-key encryption. Probably life is easier in that case, and the local storage is either all encrypted, or all not encrypted, regardless of the particular user access granted.

And a similar scenario works with user-key encryption when the user is a member of a group and the group has access to the local storage. Maybe in that case the files in the local storage do not get encrypted (so that any user in he group can access them)

I guess that the code is trying to encrypt the file upload because it is going into a place that only has access for that user, but things get confused!

@phil-davis
Copy link
Contributor Author

phil-davis commented May 10, 2021

Also see #270 (comment)
There seems to be some interaction/difficulty when the local storage and the user Alice have been deleted and then created again.

The ownCloud log has errors like: https://drone.owncloud.com/owncloud/encryption/1869/50/13

{"reqId":"eA0BcS2dQtv2fVUVUolL","level":4,"time":"2021-05-10T05:40:13+00:00","remoteAddr":"192.168.18.9","user":"Alice","app":"webdav","method":"PUT","url":"\/remote.php\/webdav\/local_storage\/filetoshare.txt","message":"Exception: HTTP\/1.1 503 Encryption not ready: multikeydecrypt with share key failed:error:0909006C:PEM routines:get_name:no start line: {\"Exception\":\"Sabre\\\\DAV\\\\Exception\\\\ServiceUnavailable\",\"Message\":\"Encryption not ready: multikeydecrypt with share key failed:error:0909006C:PEM routines:get_name:no start line\",\"Code\":0,\"Trace\":\"#0 \\\/var\\\/www\\\/owncloud\\\/server\\\/apps\\\/dav\\\/lib\\\/Connector\\\/Sabre\\\/File.php(236): OCA\\\\DAV\\\\Connector\\\\Sabre\\\\File->convertToSabreException(Object(OCA\\\\Encryption\\\\Exceptions\\\\MultiKeyDecryptException))\\n#1 \\\/var\\\/www\\\/owncloud\\\/server\\\/apps\\\/dav\\\/lib\\\/Connector\\\/Sabre\\\/Directory.php(173): OCA\\\\DAV\\\\Connector\\\\Sabre\\\\File->put(Resource id #524)\\n#2 \\\/var\\\/www\\\/owncloud\\\/server\\\/lib\\\/composer\\\/sabre\\\/dav\\\/lib\\\/DAV\\\/Server.php(1098): OCA\\\\DAV\\\\Connector\\\\Sabre\\\\Directory->createFile('filetoshare.txt', Resource id #524)\\n#3 \\\/var\\\/www\\\/owncloud\\\/server\\\/lib\\\/composer\\\/sabre\\\/dav\\\/lib\\\/DAV\\\/CorePlugin.php(504): Sabre\\\\DAV\\\\Server->createFile('local_storage\\\/f...', Resource id #524, NULL)\\n#4 \\\/var\\\/www\\\/owncloud\\\/server\\\/lib\\\/composer\\\/sabre\\\/event\\\/lib\\\/WildcardEmitterTrait.php(89): Sabre\\\\DAV\\\\CorePlugin->httpPut(Object(Sabre\\\\HTTP\\\\Request), Object(Sabre\\\\HTTP\\\\Response))\\n#5 \\\/var\\\/www\\\/owncloud\\\/server\\\/lib\\\/composer\\\/sabre\\\/dav\\\/lib\\\/DAV\\\/Server.php(472): Sabre\\\\DAV\\\\Server->emit('method:PUT', Array)\\n#6 \\\/var\\\/www\\\/owncloud\\\/server\\\/lib\\\/composer\\\/sabre\\\/dav\\\/lib\\\/DAV\\\/Server.php(253): Sabre\\\\DAV\\\\Server->invokeMethod(Object(Sabre\\\\HTTP\\\\Request), Object(Sabre\\\\HTTP\\\\Response))\\n#7 \\\/var\\\/www\\\/owncloud\\\/server\\\/lib\\\/composer\\\/sabre\\\/dav\\\/lib\\\/DAV\\\/Server.php(321): Sabre\\\\DAV\\\\Server->start()\\n#8 \\\/var\\\/www\\\/owncloud\\\/server\\\/apps\\\/dav\\\/appinfo\\\/v1\\\/webdav.php(66): Sabre\\\\DAV\\\\Server->exec()\\n#9 \\\/var\\\/www\\\/owncloud\\\/server\\\/remote.php(165): require_once('\\\/var\\\/www\\\/ownclo...')\\n#10 {main}\",\"File\":\"\\\/var\\\/www\\\/owncloud\\\/server\\\/apps\\\/dav\\\/lib\\\/Connector\\\/Sabre\\\/File.php\",\"Line\":685}"}
{"reqId":"eA0BcS2dQtv2fVUVUolL","level":4,"time":"2021-05-10T05:40:13+00:00","remoteAddr":"192.168.18.9","user":"Alice","app":"webdav","method":"PUT","url":"\/remote.php\/webdav\/local_storage\/filetoshare.txt","message":"Caused by: {\"Exception\":\"OCA\\\\Encryption\\\\Exceptions\\\\MultiKeyDecryptException\",\"Message\":\"multikeydecrypt with share key failed:error:0909006C:PEM routines:get_name:no start line\",\"Code\":0,\"Trace\":\"#0 \\\/var\\\/www\\\/owncloud\\\/server\\\/apps\\\/encryption\\\/lib\\\/KeyManager.php(420): OCA\\\\Encryption\\\\Crypto\\\\Crypt->multiKeyDecrypt('\\\\xB9\\\\xB5%z\\\\xA31,\\\\t\\\\xFB\\\\x18\\\\xB0\\\\xD3`f\\\\x11...', '9Z\\\\xC7\\\\x06H\\\\xF7\\\\xB4\\\\n\\\\x92\\\\xB0\\\\x98\\\\x0E\\\\xF5\\\\xFFC...', '-----BEGIN PRIV...')\\n#1 \\\/var\\\/www\\\/owncloud\\\/server\\\/apps\\\/encryption\\\/lib\\\/Crypto\\\/Encryption.php(191): OCA\\\\Encryption\\\\KeyManager->getFileKey('\\\/Alice\\\/files\\\/lo...', 'Alice')\\n#2 \\\/var\\\/www\\\/owncloud\\\/server\\\/lib\\\/private\\\/Files\\\/Stream\\\/Encryption.php(257): OCA\\\\Encryption\\\\Crypto\\\\Encryption->begin('\\\/Alice\\\/files\\\/lo...', 'Alice', 'wb', Array, Array, NULL)\\n#3 [internal function]: OC\\\\Files\\\\Stream\\\\Encryption->stream_open('ocencryption:\\\/\\\/', 'wb', 0, NULL)\\n#4 \\\/var\\\/www\\\/owncloud\\\/server\\\/lib\\\/private\\\/Files\\\/Stream\\\/Encryption.php(199): fopen('ocencryption:\\\/\\\/', 'wb', false, Resource id #664)\\n#5 \\\/var\\\/www\\\/owncloud\\\/server\\\/lib\\\/private\\\/Files\\\/Stream\\\/Encryption.php(181): OC\\\\Files\\\\Stream\\\\Encryption::wrapSource(Resource id #662, Resource id #664, 'ocencryption', 'OC\\\\\\\\Files\\\\\\\\Stream...', 'wb')\\n#6 \\\/var\\\/www\\\/owncloud\\\/server\\\/lib\\\/private\\\/Files\\\/Storage\\\/Wrapper\\\/Encryption.php(480): OC\\\\Files\\\\Stream\\\\Encryption::wrap(Resource id #662, 'filetoshare.txt...', '\\\/Alice\\\/files\\\/lo...', Array, 'Alice', Object(OCA\\\\Encryption\\\\Crypto\\\\Encryption), Object(OC\\\\Files\\\\Storage\\\\Local), Object(OC\\\\Files\\\\Storage\\\\Wrapper\\\\Encryption), Object(OC\\\\Encryption\\\\Util), Object(OC\\\\Encryption\\\\File), 'wb', 0, 0, 0, true, NULL)\\n#7 \\\/var\\\/www\\\/owncloud\\\/server\\\/lib\\\/private\\\/Files\\\/Storage\\\/Wrapper\\\/Checksum.php(59): OC\\\\Files\\\\Storage\\\\Wrapper\\\\Encryption->fopen('filetoshare.txt...', 'wb')\\n#8 \\\/var\\\/www\\\/owncloud\\\/server\\\/lib\\\/private\\\/Files\\\/Storage\\\/Wrapper\\\/Wrapper.php(303): OC\\\\Files\\\\Storage\\\\Wrapper\\\\Checksum->fopen('filetoshare.txt...', 'wb')\\n#9 \\\/var\\\/www\\\/owncloud\\\/server\\\/apps\\\/dav\\\/lib\\\/Connector\\\/Sabre\\\/File.php(194): OC\\\\Files\\\\Storage\\\\Wrapper\\\\Wrapper->fopen('filetoshare.txt...', 'wb')\\n#10 \\\/var\\\/www\\\/owncloud\\\/server\\\/apps\\\/dav\\\/lib\\\/Connector\\\/Sabre\\\/Directory.php(173): OCA\\\\DAV\\\\Connector\\\\Sabre\\\\File->put(Resource id #524)\\n#11 \\\/var\\\/www\\\/owncloud\\\/server\\\/lib\\\/composer\\\/sabre\\\/dav\\\/lib\\\/DAV\\\/Server.php(1098): OCA\\\\DAV\\\\Connector\\\\Sabre\\\\Directory->createFile('filetoshare.txt', Resource id #524)\\n#12 \\\/var\\\/www\\\/owncloud\\\/server\\\/lib\\\/composer\\\/sabre\\\/dav\\\/lib\\\/DAV\\\/CorePlugin.php(504): Sabre\\\\DAV\\\\Server->createFile('local_storage\\\/f...', Resource id #524, NULL)\\n#13 \\\/var\\\/www\\\/owncloud\\\/server\\\/lib\\\/composer\\\/sabre\\\/event\\\/lib\\\/WildcardEmitterTrait.php(89): Sabre\\\\DAV\\\\CorePlugin->httpPut(Object(Sabre\\\\HTTP\\\\Request), Object(Sabre\\\\HTTP\\\\Response))\\n#14 \\\/var\\\/www\\\/owncloud\\\/server\\\/lib\\\/composer\\\/sabre\\\/dav\\\/lib\\\/DAV\\\/Server.php(472): Sabre\\\\DAV\\\\Server->emit('method:PUT', Array)\\n#15 \\\/var\\\/www\\\/owncloud\\\/server\\\/lib\\\/composer\\\/sabre\\\/dav\\\/lib\\\/DAV\\\/Server.php(253): Sabre\\\\DAV\\\\Server->invokeMethod(Object(Sabre\\\\HTTP\\\\Request), Object(Sabre\\\\HTTP\\\\Response))\\n#16 \\\/var\\\/www\\\/owncloud\\\/server\\\/lib\\\/composer\\\/sabre\\\/dav\\\/lib\\\/DAV\\\/Server.php(321): Sabre\\\\DAV\\\\Server->start()\\n#17 \\\/var\\\/www\\\/owncloud\\\/server\\\/apps\\\/dav\\\/appinfo\\\/v1\\\/webdav.php(66): Sabre\\\\DAV\\\\Server->exec()\\n#18 \\\/var\\\/www\\\/owncloud\\\/server\\\/remote.php(165): require_once('\\\/var\\\/www\\\/ownclo...')\\n#19 {main}\",\"File\":\"\\\/var\\\/www\\\/owncloud\\\/server\\\/apps\\\/encryption\\\/lib\\\/Crypto\\\/Crypt.php\",\"Line\":674}"}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant