Auth_SASL
[ class tree: Auth_SASL ] [ index: Auth_SASL ] [ all elements ]

Source for file Common.php

Documentation is available at Common.php

  1. <?php
  2. // +-----------------------------------------------------------------------+
  3. // | Copyright (c) 2002-2003 Richard Heyes                                 |
  4. // | All rights reserved.                                                  |
  5. // |                                                                       |
  6. // | Redistribution and use in source and binary forms, with or without    |
  7. // | modification, are permitted provided that the following conditions    |
  8. // | are met:                                                              |
  9. // |                                                                       |
  10. // | o Redistributions of source code must retain the above copyright      |
  11. // |   notice, this list of conditions and the following disclaimer.       |
  12. // | o Redistributions in binary form must reproduce the above copyright   |
  13. // |   notice, this list of conditions and the following disclaimer in the |
  14. // |   documentation and/or other materials provided with the distribution.|
  15. // | o The names of the authors may not be used to endorse or promote      |
  16. // |   products derived from this software without specific prior written  |
  17. // |   permission.                                                         |
  18. // |                                                                       |
  19. // | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS   |
  20. // | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT     |
  21. // | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
  22. // | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT  |
  23. // | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
  24. // | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT      |
  25. // | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
  26. // | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
  27. // | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT   |
  28. // | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
  29. // | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  |
  30. // |                                                                       |
  31. // +-----------------------------------------------------------------------+
  32. // | Author: Richard Heyes <richard@php.net>                               |
  33. // +-----------------------------------------------------------------------+
  34. //
  35. // $Id$
  36.  
  37. /**
  38. * Common functionality to SASL mechanisms
  39. *
  40. @author  Richard Heyes <richard@php.net>
  41. @access  public
  42. @version 1.0
  43. @package Auth_SASL
  44. */
  45.  
  46. {
  47.     /**
  48.     * Function which implements HMAC MD5 digest
  49.     *
  50.     * @param  string $key  The secret key
  51.     * @param  string $data The data to hash
  52.     * @param  bool $raw_output Whether the digest is returned in binary or hexadecimal format.
  53.     *
  54.     * @return string       The HMAC-MD5 digest
  55.     */
  56.     function _HMAC_MD5($key$data$raw_output = FALSE)
  57.     {
  58.         if (strlen($key> 64{
  59.             $key pack('H32'md5($key));
  60.         }
  61.  
  62.         if (strlen($key< 64{
  63.             $key str_pad($key64chr(0));
  64.         }
  65.  
  66.         $k_ipad substr($key064str_repeat(chr(0x36)64);
  67.         $k_opad substr($key064str_repeat(chr(0x5C)64);
  68.  
  69.         $inner  pack('H32'md5($k_ipad $data));
  70.         $digest md5($k_opad $inner$raw_output);
  71.  
  72.         return $digest;
  73.     }
  74.  
  75.     /**
  76.     * Function which implements HMAC-SHA-1 digest
  77.     *
  78.     * @param  string $key  The secret key
  79.     * @param  string $data The data to hash
  80.     * @param  bool $raw_output Whether the digest is returned in binary or hexadecimal format.
  81.     * @return string       The HMAC-SHA-1 digest
  82.     * @author Jehan <jehan.marmottard@gmail.com>
  83.     * @access protected
  84.     */
  85.     protected function _HMAC_SHA1($key$data$raw_output = FALSE)
  86.     {
  87.         if (strlen($key> 64{
  88.             $key sha1($keyTRUE);
  89.         }
  90.  
  91.         if (strlen($key< 64{
  92.             $key str_pad($key64chr(0));
  93.         }
  94.  
  95.         $k_ipad substr($key064str_repeat(chr(0x36)64);
  96.         $k_opad substr($key064str_repeat(chr(0x5C)64);
  97.  
  98.         $inner  pack('H40'sha1($k_ipad $data));
  99.         $digest sha1($k_opad $inner$raw_output);
  100.  
  101.          return $digest;
  102.      }
  103. }
  104. ?>

Documentation generated on Mon, 11 Mar 2019 15:44:57 -0400 by phpDocumentor 1.4.4. PEAR Logo Copyright © PHP Group 2004.