summaryrefslogtreecommitdiffstats
path: root/lib/crypt.php
diff options
context:
space:
mode:
authorFrank Karlitschek <karlitschek@kde.org>2011-08-10 17:24:38 +0200
committerFrank Karlitschek <karlitschek@kde.org>2011-08-10 17:24:38 +0200
commit613ab41eb3a5aedb872a18b231f26fd60f1b4356 (patch)
treed7944b3e3a2e8a9cae27c031dc515028106b6ae1 /lib/crypt.php
parent8ff736b571d7400ec64c6dd4737d096f8ff443b6 (diff)
downloadnextcloud-server-613ab41eb3a5aedb872a18b231f26fd60f1b4356.tar.gz
nextcloud-server-613ab41eb3a5aedb872a18b231f26fd60f1b4356.zip
more work on the encryption library
Diffstat (limited to 'lib/crypt.php')
-rwxr-xr-xlib/crypt.php72
1 files changed, 69 insertions, 3 deletions
diff --git a/lib/crypt.php b/lib/crypt.php
index baa433f9dcc..d75515cf2de 100755
--- a/lib/crypt.php
+++ b/lib/crypt.php
@@ -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
@@ -21,6 +20,15 @@
*
*/
+
+
+// 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);
+ }
+