Index: modules/openid/openid.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/openid/openid.inc,v
retrieving revision 1.37
diff -u -9 -p -r1.37 openid.inc
--- modules/openid/openid.inc	28 Oct 2010 02:27:09 -0000	1.37
+++ modules/openid/openid.inc	3 Dec 2010 21:23:52 -0000
@@ -20,23 +20,18 @@ define('OPENID_DH_DEFAULT_MOD', '1551728
        '681476726513255747040765857479291291572334510643245094715007229621094194' .
        '349783925984760375594985848253359305585439638443');
 
 /**
  * Diffie-Hellman generator; used for Diffie-Hellman key exchange computations.
  */
 define('OPENID_DH_DEFAULT_GEN', '2');
 
 /**
- * SHA-1 hash block size; used for Diffie-Hellman key exchange computations.
- */
-define('OPENID_SHA1_BLOCKSIZE', 64);
-
-/**
  * Random number generator; used for Diffie-Hellman key exchange computations.
  */
 define('OPENID_RAND_SOURCE', '/dev/urandom');
 
 /**
  * OpenID Authentication 2.0 namespace URL.
  */
 define('OPENID_NS_2_0', 'http://specs.openid.net/auth/2.0');
 
@@ -408,37 +403,23 @@ function _openid_signature($association,
 
   foreach ($keys_to_sign as $key) {
     if (isset($message_array['openid.' . $key])) {
       $sign_data[$key] = $message_array['openid.' . $key];
     }
   }
 
   $message = _openid_create_message($sign_data);
   $secret = base64_decode($association->mac_key);
-  $signature = _openid_hmac($secret, $message);
+  $signature = hash_hmac('sha1', $message, $secret, TRUE);
 
   return base64_encode($signature);
 }
 
-function _openid_hmac($key, $text) {
-  if (strlen($key) > OPENID_SHA1_BLOCKSIZE) {
-    $key = sha1($key, TRUE);
-  }
-
-  $key = str_pad($key, OPENID_SHA1_BLOCKSIZE, chr(0x00));
-  $ipad = str_repeat(chr(0x36), OPENID_SHA1_BLOCKSIZE);
-  $opad = str_repeat(chr(0x5c), OPENID_SHA1_BLOCKSIZE);
-  $hash1 = sha1(($key ^ $ipad) . $text, TRUE);
-  $hmac = sha1(($key ^ $opad) . $hash1, TRUE);
-
-  return $hmac;
-}
-
 function _openid_dh_base64_to_long($str) {
   $b64 = base64_decode($str);
 
   return _openid_dh_binary_to_long($b64);
 }
 
 function _openid_dh_long_to_base64($str) {
   return base64_encode(_openid_dh_long_to_binary($str));
 }
