Example #1
0
	/**
	 * read block to file
	 */
	protected function readCache() {
		// cache should always be empty string when this function is called
		// don't try to fill the cache when trying to write at the end of the unencrypted file when it coincides with new block
		if ($this->cache === '' && !($this->position === $this->unencryptedSize && ($this->position % $this->unencryptedBlockSize) === 0)) {
			// Get the data from the file handle
			$data = parent::stream_read($this->util->getBlockSize());
			$this->cache = $this->encryptionModule->decrypt($data);
		}
	}
Example #2
0
 /**
  * read block to file
  */
 protected function readCache()
 {
     // cache should always be empty string when this function is called
     // don't try to fill the cache when trying to write at the end of the unencrypted file when it coincides with new block
     if ($this->cache === '' && !($this->position === $this->unencryptedSize && $this->position % $this->unencryptedBlockSize === 0)) {
         // Get the data from the file handle
         $data = parent::stream_read($this->util->getBlockSize());
         $position = (int) floor($this->position / $this->unencryptedBlockSize);
         $numberOfChunks = (int) ($this->unencryptedSize / $this->unencryptedBlockSize);
         if ($numberOfChunks === $position) {
             $position .= 'end';
         }
         $this->cache = $this->encryptionModule->decrypt($data, $position);
     }
 }
Example #3
0
 /**
  * Unregisters an encryption module
  *
  * @param IEncryptionModule $module
  */
 public function unregisterEncryptionModule(IEncryptionModule $module)
 {
     unset($this->encryptionModules[$module->getId()]);
 }
Example #4
0
 /**
  * create header for encrypted file
  *
  * @param array $headerData
  * @param IEncryptionModule $encryptionModule
  * @return string
  * @throws EncryptionHeaderToLargeException if header has to many arguments
  * @throws EncryptionHeaderKeyExistsException if header key is already in use
  */
 public function createHeader(array $headerData, IEncryptionModule $encryptionModule)
 {
     $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($key);
         }
         $header .= $key . ':' . $value . ':';
     }
     $header .= self::HEADER_END;
     if (strlen($header) > $this->getHeaderSize()) {
         throw new EncryptionHeaderToLargeException();
     }
     $paddedHeader = str_pad($header, $this->headerSize, self::HEADER_PADDING_CHAR, STR_PAD_RIGHT);
     return $paddedHeader;
 }