summaryrefslogtreecommitdiffstats
path: root/apps/files_encryption/lib/cryptstream.php
diff options
context:
space:
mode:
authorSam Tuke <samtuke@owncloud.com>2012-07-31 19:28:11 +0100
committerSam Tuke <samtuke@owncloud.com>2012-07-31 19:28:11 +0100
commiteebf76d34457df616d2b739582d9630f58df60b1 (patch)
tree7b26a71004278a63e3b4895a85a476a833f47395 /apps/files_encryption/lib/cryptstream.php
parentee15c40b1416507abbe6d0fb568bde77bb94e5f4 (diff)
downloadnextcloud-server-eebf76d34457df616d2b739582d9630f58df60b1.tar.gz
nextcloud-server-eebf76d34457df616d2b739582d9630f58df60b1.zip
Implemented writing of keyfiles and directory hierarchy in proxy class
Added crypt::findFiles() method for finding different types of files, ready for batch encrypting / decrypting Added comments to postFopen in proxy class
Diffstat (limited to 'apps/files_encryption/lib/cryptstream.php')
-rw-r--r--apps/files_encryption/lib/cryptstream.php83
1 files changed, 57 insertions, 26 deletions
diff --git a/apps/files_encryption/lib/cryptstream.php b/apps/files_encryption/lib/cryptstream.php
index e0020537563..8c61c933cf8 100644
--- a/apps/files_encryption/lib/cryptstream.php
+++ b/apps/files_encryption/lib/cryptstream.php
@@ -28,11 +28,11 @@
*/
class OC_CryptStream{
- public static $sourceStreams=array();
+ public static $sourceStreams = array();
private $source;
private $path;
- private $readBuffer;//for streams that dont support seeking
- private $meta=array();//header/meta for source stream
+ private $readBuffer; // For streams that dont support seeking
+ private $meta = array(); // Header / meta for source stream
private $count;
private $writeCache;
private $size;
@@ -98,38 +98,69 @@ class OC_CryptStream{
return $result;
}
- public function stream_write($data){
- $length=strlen($data);
- $written=0;
- $currentPos=ftell($this->source);
- if($this->writeCache){
- $data=$this->writeCache.$data;
- $this->writeCache='';
+ public function stream_write( $data ){
+
+ $length = strlen( $data );
+
+ $written = 0;
+
+ $currentPos = ftell( $this->source );
+
+ if( $this->writeCache ){
+
+ $data = $this->writeCache.$data;
+
+ $this->writeCache = '';
+
}
- if($currentPos%8192!=0){
+
+ if( $currentPos%8192 != 0 ){
+
//make sure we always start on a block start
- fseek($this->source,-($currentPos%8192),SEEK_CUR);
- $encryptedBlock=fread($this->source,8192);
- fseek($this->source,-($currentPos%8192),SEEK_CUR);
- $block=OC_Crypt::decrypt($encryptedBlock);
- $data=substr($block,0,$currentPos%8192).$data;
- fseek($this->source,-($currentPos%8192),SEEK_CUR);
+
+ fseek( $this->source,-( $currentPos%8192 ),SEEK_CUR );
+
+ $encryptedBlock = fread( $this->source,8192 );
+
+ fseek( $this->source,-( $currentPos%8192 ),SEEK_CUR );
+
+ $block = OC_Crypt::decrypt( $encryptedBlock );
+
+ $data = substr( $block,0,$currentPos%8192 ).$data;
+
+ fseek( $this->source,-( $currentPos%8192 ),SEEK_CUR );
+
}
- $currentPos=ftell($this->source);
- while($remainingLength=strlen($data)>0){
- if($remainingLength<8192){
- $this->writeCache=$data;
- $data='';
+
+ $currentPos = ftell( $this->source );
+
+ while( $remainingLength = strlen( $data )>0 ){
+
+ if( $remainingLength<8192 ){
+
+ $this->writeCache = $data;
+
+ $data = '';
+
}else{
- $encrypted=OC_Crypt::encrypt(substr($data,0,8192));
- fwrite($this->source,$encrypted);
- $data=substr($data,8192);
+
+ $encrypted = OC_Crypt::encrypt( substr( $data,0,8192 ) );
+
+ fwrite( $this->source,$encrypted );
+
+ $data = substr( $data,8192 );
+
}
+
}
- $this->size=max($this->size,$currentPos+$length);
+
+ $this->size = max( $this->size,$currentPos+$length );
+
return $length;
+
}
+
public function stream_set_option($option,$arg1,$arg2){
switch($option){
case STREAM_OPTION_BLOCKING: