Source for file emuhash_functions.php

Documentation is available at emuhash_functions.php

  1. <?php
  2. // $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/emuhash_functions.php,v 1.6.10.2 2008/12/12 12:20:23 wurley Exp $
  3.  
  4. /*******************************************************************************
  5.  * emuhash - partly emulates the php mhash functions
  6.  * version: 2004040701
  7.  *
  8.  * (c) 2004 - Simon Matter <simon.matter@invoca.ch>
  9.  *
  10.  * This program is free software; you can redistribute it and/or modify
  11.  * it under the terms of the GNU General Public License as published by
  12.  * the Free Software Foundation; either version 2 of the License, or
  13.  * (at your option) any later version.
  14.  *
  15.  * This program is distributed in the hope that it will be useful,
  16.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  17.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  18.  * GNU General Public License for more details.
  19.  *
  20.  * You should have received a copy of the GNU General Public License
  21.  * along with this program; if not, write to the Free Software
  22.  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  23.  *
  24.  ******************************************************************************/
  25.  
  26. /******************************************************************************/
  27. /* Do we have builtin mhash support in this PHP version ?                     */
  28. /******************************************************************************/
  29.  
  30. iffunction_exists'mhash' && function_exists'mhash_keygen_s2k' ) ) {
  31.     ifisset$emuhash_openssl ) )
  32.         $emuhash_openssl '/usr/bin/openssl';
  33.  
  34.     // don't create mhash functions if we don't have a working openssl
  35.     iffile_exists$emuhash_openssl ) )
  36.         unset$emuhash_openssl );
  37.  
  38.     elseif function_exists'is_executable' && is_executable$emuhash_openssl ) )
  39.         unset$emuhash_openssl );
  40.  
  41.     else {
  42.  
  43.         ifisset$emuhash_temp_dir ) )
  44.             $emuhash_temp_dir '/tmp';
  45.  
  46. /******************************************************************************/
  47. /* Define constants used in the mhash emulation code.                         */
  48. /******************************************************************************/
  49.  
  50.         define('MHASH_MD5''md5');
  51.         define('MHASH_SHA1''sha1');
  52.         define('MHASH_RIPEMD160''rmd160');
  53.  
  54. /******************************************************************************/
  55. /* Functions to emulate parts of php-mash.                                    */
  56. /******************************************************************************/
  57.  
  58.         function openssl_hash$openssl_hash_id$password_clear {
  59.             global $emuhash_openssl$emuhash_temp_dir;
  60.  
  61.             $current_magic_quotes get_magic_quotes_runtime();
  62.             set_magic_quotes_runtime);
  63.             $tmpfile tempnam$emuhash_temp_dir"emuhash" );
  64.             $pwhandle fopen$tmpfile"w" );
  65.  
  66.             if$pwhandle )
  67.                 error(sprintf('Unable to create a temporary file %s to create hashed password',$tmpfile,'error','index.php');
  68.  
  69.             fwrite$pwhandle$password_clear );
  70.             fclose$pwhandle );
  71.             $cmd $emuhash_openssl ' ' $openssl_hash_id ' -binary < ' $tmpfile;
  72.             $prog popen$cmd"r" );
  73.             $pass fread$prog1024 );
  74.             pclose$prog );
  75.             unlink$tmpfile );
  76.             set_magic_quotes_runtime$current_magic_quotes );
  77.  
  78.             return $pass;
  79.         }
  80.  
  81.         function mhash$hash_id$password_clear {
  82.             switch$hash_id {
  83.                 case MHASH_MD5:
  84.                     $emuhash openssl_hashMHASH_MD5$password_clear );
  85.                     break;
  86.  
  87.                 case MHASH_SHA1:
  88.                     $emuhash openssl_hashMHASH_SHA1$password_clear );
  89.                     break;
  90.  
  91.                 case MHASH_RIPEMD160:
  92.                     $emuhash openssl_hashMHASH_RIPEMD160$password_clear );
  93.                     break;
  94.  
  95.                 default:
  96.                     $emuhash FALSE;
  97.             }
  98.  
  99.             return $emuhash;
  100.         }
  101.  
  102.         function mhash_keygen_s2k$hash_id$password_clear$salt$bytes {
  103.             return substr(pack("H*"bin2hex(mhash($hash_id($salt $password_clear))))0$bytes);
  104.         }
  105.  
  106. /******************************************************************************/
  107.  
  108.     }
  109.  
  110. }
  111. ?>

Documentation generated on Fri, 22 May 2009 19:08:56 +1000 by phpDocumentor 1.4.1