function SMTP::hmac

5.x SMTP.php protected SMTP::hmac($data, $key)

Calculate an MD5 HMAC hash. Works like hash_hmac('md5', $data, $key) in case that function is not available.

Parameters

string $data The data to hash:

string $key The key to hash with:

Return value

string

File

inc/PHPMailer/src/SMTP.php, line 556

Class

SMTP
PHPMailer RFC821 SMTP email transport class. Implements RFC 821 SMTP commands and provides some utility methods for sending mail to an SMTP server.

Code

protected function hmac($data, $key) {
  if (function_exists('hash_hmac')) {
    return hash_hmac('md5', $data, $key);
  }

  // The following borrowed from
  // http://php.net/manual/en/function.mhash.php#27225

  // RFC 2104 HMAC implementation for php.
  // Creates an md5 HMAC.
  // Eliminates the need to install mhash to compute a HMAC
  // by Lance Rushing

  $bytelen = 64; // byte length for md5
  if (strlen($key) > $bytelen) {
    $key = pack('H*', md5($key));
  }
  $key = str_pad($key, $bytelen, chr(0x00));
  $ipad = str_pad('', $bytelen, chr(0x36));
  $opad = str_pad('', $bytelen, chr(0x5c));
  $k_ipad = $key ^ $ipad;
  $k_opad = $key ^ $opad;

  return md5($k_opad . pack('H*', md5($k_ipad . $data)));
}