From 44155cddc28d49e005f12320931d3c81b053f5e2 Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Thu, 01 Apr 2010 11:40:35 -0400
Subject: [PATCH] - load des.inc file only when needed

---
 program/include/rcmail.php |   66 +++++++++++++++++---------------
 1 files changed, 35 insertions(+), 31 deletions(-)

diff --git a/program/include/rcmail.php b/program/include/rcmail.php
index b278f31..09957ee 100644
--- a/program/include/rcmail.php
+++ b/program/include/rcmail.php
@@ -1064,23 +1064,25 @@
       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 {
+      @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);
+      }
     }
-    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 @@
       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 {
+      @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);
+      }
     }
-    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

--
Gitblit v1.9.1