]> source.dussan.org Git - nextcloud-server.git/commitdiff
more work on the encryption library
authorFrank Karlitschek <karlitschek@kde.org>
Wed, 10 Aug 2011 15:24:38 +0000 (17:24 +0200)
committerFrank Karlitschek <karlitschek@kde.org>
Wed, 10 Aug 2011 15:24:38 +0000 (17:24 +0200)
lib/crypt.php

index baa433f9dcc63c3a63011b31e428fe99b2dd8781..d75515cf2deabf233a6e37d0664fec93182774f3 100755 (executable)
@@ -3,7 +3,6 @@
  * ownCloud
  *
  * @author Frank Karlitschek
- * @author Jakob Sack
  * @copyright 2010 Frank Karlitschek karlitschek@kde.org
  *
  * This library is free software; you can redistribute it and/or
  *
  */
 
+
+
+// Todo:
+//  Crypt/decrypt button in the userinterface
+//  transparent decrypt/encrpt in filesystem.php
+//  don't use a password directly as encryption key. but a key which is stored on the server and encrypted with the user password. -> password change faster
+
+
+
 require_once('Crypt_Blowfish/Blowfish.php');
 
 /**
@@ -28,6 +36,19 @@ require_once('Crypt_Blowfish/Blowfish.php');
  */
 class OC_Crypt {
 
+        static $encription_extension='.encrypted';
+
+       public static function createkey( $passcode) {
+               // generate a random key
+               $key=mt_rand(10000,99999).mt_rand(10000,99999).mt_rand(10000,99999).mt_rand(10000,99999);
+
+               // encrypt the key with the passcode of the user
+               $enckey=OC_Crypt::encrypt($key,$passcode);
+
+               // Write the file
+               file_put_contents( "$SERVERROOT/config/encryption.key", $enckey );
+       }
+
        /**
         * @brief encrypts an content
         * @param $content the cleartext message you want to encrypt
@@ -51,11 +72,56 @@ class OC_Crypt {
          * This function decrypts an content
          */
         public static function decrypt( $content, $key) {
-                $bf = new Crypt_Blowfish($key);
-                return($bf->encrypt($contents));
+               $bf = new Crypt_Blowfish($key);
+               return($bf->encrypt($contents));
         }       
 
 
+        /**
+         * @brief encryption of a file
+         * @param $filename
+         * @param $key the encryption key
+         *
+         * This function encrypts a file
+         */
+       public static function encryptfile( $filename, $key) {
+               $handleread  = fopen($filename, "rb");
+               if($handleread<>FALSE) {
+                       $handlewrite = fopen($filename.OC_Crypt::$encription_extension, "wb");
+                       while (!feof($handleread)) {
+                               $content = fread($handleread, 8192);
+                               $enccontent=OC_CRYPT::encrypt( $content, $key);
+                               fwrite($handlewrite, $enccontent);
+                       }
+                       fclose($handlewrite);
+                       unlink($filename);
+               }
+               fclose($handleread);
+       }
+
+
+        /**
+         * @brief decryption of a file
+         * @param $filename
+         * @param $key the decryption key
+         *
+         * This function decrypts a file
+         */
+       public static function decryptfile( $filename, $key) {
+               $handleread  = fopen($filename.OC_Crypt::$encription_extension, "rb");
+               if($handleread<>FALSE) {
+                       $handlewrite = fopen($filename, "wb");
+                       while (!feof($handleread)) {
+                               $content = fread($handleread, 8192);
+                               $enccontent=OC_CRYPT::decrypt( $content, $key);
+                               fwrite($handlewrite, $enccontent);
+                       }
+                       fclose($handlewrite);
+                       unlink($filename.OC_Crypt::$encription_extension);
+               }
+               fclose($handleread);
+       }
+