summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoralecpl <alec@alec.pl>2010-04-01 15:40:35 +0000
committeralecpl <alec@alec.pl>2010-04-01 15:40:35 +0000
commit44155cddc28d49e005f12320931d3c81b053f5e2 (patch)
tree63fd4d5549bbd42edf9848073b8738954efe3a4c
parentcd96fd6727c5347bef4c242a79224fe8e18ff6cf (diff)
- load des.inc file only when needed
-rw-r--r--program/include/main.inc1
-rw-r--r--program/include/rcmail.php66
2 files changed, 35 insertions, 32 deletions
diff --git a/program/include/main.inc b/program/include/main.inc
index 3aee7b4b7..490217015 100644
--- a/program/include/main.inc
+++ b/program/include/main.inc
@@ -30,7 +30,6 @@ require_once('lib/utf7.inc');
require_once('include/rcube_shared.inc');
// fallback if not PHP modules are available
-@include_once('lib/des.inc');
@include_once('lib/utf8.class.php');
// define constannts for input reading
diff --git a/program/include/rcmail.php b/program/include/rcmail.php
index b278f31b7..09957ee0f 100644
--- a/program/include/rcmail.php
+++ b/program/include/rcmail.php
@@ -1064,23 +1064,25 @@ class rcmail
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
}
- else if (function_exists('des'))
- {
- define('DES_IV_SIZE', 8);
- $iv = '';
- for ($i = 0; $i < constant('DES_IV_SIZE'); $i++)
- $iv .= sprintf("%c", mt_rand(0, 255));
- $cipher = $iv . des($this->config->get_crypto_key($key), $clear, 1, 1, $iv);
- }
- else
- {
- raise_error(array(
- 'code' => 500, 'type' => 'php',
- 'file' => __FILE__, 'line' => __LINE__,
- 'message' => "Could not perform encryption; make sure Mcrypt is installed or lib/des.inc is available"
- ), true, true);
+ else {
+ @include_once('lib/des.inc');
+
+ if (function_exists('des')) {
+ $des_iv_size = 8;
+ $iv = '';
+ for ($i = 0; $i < $des_iv_size; $i++)
+ $iv .= sprintf("%c", mt_rand(0, 255));
+ $cipher = $iv . des($this->config->get_crypto_key($key), $clear, 1, 1, $iv);
+ }
+ else {
+ raise_error(array(
+ 'code' => 500, 'type' => 'php',
+ 'file' => __FILE__, 'line' => __LINE__,
+ 'message' => "Could not perform encryption; make sure Mcrypt is installed or lib/des.inc is available"
+ ), true, true);
+ }
}
-
+
return $base64 ? base64_encode($cipher) : $cipher;
}
@@ -1110,22 +1112,24 @@ class rcmail
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
}
- else if (function_exists('des'))
- {
- define('DES_IV_SIZE', 8);
- $iv = substr($cipher, 0, constant('DES_IV_SIZE'));
- $cipher = substr($cipher, constant('DES_IV_SIZE'));
- $clear = des($this->config->get_crypto_key($key), $cipher, 0, 1, $iv);
- }
- else
- {
- raise_error(array(
- 'code' => 500, 'type' => 'php',
- 'file' => __FILE__, 'line' => __LINE__,
- 'message' => "Could not perform decryption; make sure Mcrypt is installed or lib/des.inc is available"
- ), true, true);
+ else {
+ @include_once('lib/des.inc');
+
+ if (function_exists('des')) {
+ $des_iv_size = 8;
+ $iv = substr($cipher, 0, $des_iv_size);
+ $cipher = substr($cipher, $des_iv_size);
+ $clear = des($this->config->get_crypto_key($key), $cipher, 0, 1, $iv);
+ }
+ else {
+ raise_error(array(
+ 'code' => 500, 'type' => 'php',
+ 'file' => __FILE__, 'line' => __LINE__,
+ 'message' => "Could not perform decryption; make sure Mcrypt is installed or lib/des.inc is available"
+ ), true, true);
+ }
}
-
+
/*-
* Trim PHP's padding and the canary byte; see note in
* rcmail::encrypt() and http://php.net/mcrypt_generic#68082