/** * write private system key (recovery and public share key) to disk * * @param string $key encrypted key * @param string $keyName name of the key * @return boolean */ public static function setPrivateSystemKey($key, $keyName) { $keyName = $keyName . '.privateKey'; $header = Crypt::generateHeader(); return self::setKey(self::$encryption_base_dir, $keyName, $header . $key, new \OC\Files\View()); }
/** * write private system key (recovery and public share key) to disk * * @param string $key encrypted key * @param string $keyName name of the key file * @return boolean */ public static function setPrivateSystemKey($key, $keyName) { $header = Crypt::generateHeader(); $view = new \OC\Files\View('/owncloud_private_key'); $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; if (!$view->file_exists('')) { $view->mkdir(''); } $result = $view->file_put_contents($keyName, $header . $key); \OC_FileProxy::$enabled = $proxyStatus; return $result; }
/** * write header at beginning of encrypted file * * @throws Exceptions\EncryptionException */ private function writeHeader() { $header = Crypt::generateHeader(); if (strlen($header) > Crypt::BLOCKSIZE) { throw new Exceptions\EncryptionException('max header size exceeded', 30); } $paddedHeader = str_pad($header, Crypt::BLOCKSIZE, self::PADDING_CHAR, STR_PAD_RIGHT); fwrite($this->handle, $paddedHeader); $this->headerWritten = true; }