diff options
author | Frank Karlitschek <karlitschek@kde.org> | 2011-08-10 17:24:38 +0200 |
---|---|---|
committer | Frank Karlitschek <karlitschek@kde.org> | 2011-08-10 17:24:38 +0200 |
commit | 613ab41eb3a5aedb872a18b231f26fd60f1b4356 (patch) | |
tree | d7944b3e3a2e8a9cae27c031dc515028106b6ae1 /lib/crypt.php | |
parent | 8ff736b571d7400ec64c6dd4737d096f8ff443b6 (diff) | |
download | nextcloud-server-613ab41eb3a5aedb872a18b231f26fd60f1b4356.tar.gz nextcloud-server-613ab41eb3a5aedb872a18b231f26fd60f1b4356.zip |
more work on the encryption library
Diffstat (limited to 'lib/crypt.php')
-rwxr-xr-x | lib/crypt.php | 72 |
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); + } + |