summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Auth/OpenID/HMAC.php2
-rw-r--r--Tests/Auth/OpenID/HMAC.php26
-rw-r--r--Tests/Auth/OpenID/data/hmac-sha256.txt29
3 files changed, 46 insertions, 11 deletions
diff --git a/Auth/OpenID/HMAC.php b/Auth/OpenID/HMAC.php
index 6e1cfb6..ec42db8 100644
--- a/Auth/OpenID/HMAC.php
+++ b/Auth/OpenID/HMAC.php
@@ -88,7 +88,7 @@ if (function_exists('hash_hmac') &&
function Auth_OpenID_HMACSHA256($key, $text)
{
// Return raw MAC (not hex string).
- return hash_hmac('sha256', $key, $text, true);
+ return hash_hmac('sha256', $text, $key, true);
}
define('Auth_OpenID_HMACSHA256_SUPPORTED', true);
diff --git a/Tests/Auth/OpenID/HMAC.php b/Tests/Auth/OpenID/HMAC.php
index fde4102..cc2655a 100644
--- a/Tests/Auth/OpenID/HMAC.php
+++ b/Tests/Auth/OpenID/HMAC.php
@@ -33,7 +33,7 @@ class Tests_Auth_OpenID_HMAC_TestCase extends PHPUnit_TestCase {
function runTest()
{
$actual = call_user_func($this->hmac_func, $this->key, $this->data);
- $this->assertEquals($this->expected, $actual);
+ $this->assertEquals(bin2hex($this->expected), bin2hex($actual));
}
}
@@ -58,7 +58,7 @@ class Tests_Auth_OpenID_HMAC extends PHPUnit_TestSuite {
return $data;
}
- function _readTestCases($test_file_name)
+ function _readTestCases($test_file_name, $digest_len)
{
$lines = Tests_Auth_OpenID_readlines($test_file_name);
$cases = array();
@@ -104,19 +104,23 @@ class Tests_Auth_OpenID_HMAC extends PHPUnit_TestSuite {
$clean = array();
$clean["key"] =
Tests_Auth_OpenID_HMAC::_strConvert($case["key"]);
- if (Auth_OpenID::bytes($clean["key"]) != $case["key_len"]) {
- trigger_error("Bad key length", E_USER_ERROR);
+ if (defined(@$case["key_len"])) {
+ if (Auth_OpenID::bytes($clean["key"]) != $case["key_len"]) {
+ trigger_error("Bad key length", E_USER_ERROR);
+ }
}
$clean["data"] =
Tests_Auth_OpenID_HMAC::_strConvert($case["data"]);
- if (Auth_OpenID::bytes($clean["data"]) != $case["data_len"]) {
- trigger_error("Bad data length", E_USER_ERROR);
+ if (defined(@$case["data_len"])) {
+ if (Auth_OpenID::bytes($clean["data"]) != $case["data_len"]) {
+ trigger_error("Bad data length", E_USER_ERROR);
+ }
}
$clean["digest"] =
Tests_Auth_OpenID_HMAC::_strConvert($case["digest"]);
- if (Auth_OpenID::bytes($clean["digest"]) != 20) {
+ if (Auth_OpenID::bytes($clean["digest"]) != $digest_len) {
$l = Auth_OpenID::bytes($clean["digest"]);
trigger_error("Bad digest length: $l", E_USER_ERROR);
}
@@ -131,9 +135,11 @@ class Tests_Auth_OpenID_HMAC extends PHPUnit_TestSuite {
function Tests_Auth_OpenID_HMAC($name)
{
$this->setName($name);
- foreach (array('Auth_OpenID_HMACSHA1' => 'hmac-sha1.txt')
- as $hash_func => $filename) {
- $cases = $this->_readTestCases('hmac-sha1.txt');
+ foreach (array(array('Auth_OpenID_HMACSHA1', 'hmac-sha1.txt', 20),
+ array('Auth_OpenID_HMACSHA256', 'hmac-sha256.txt', 32))
+ as $params) {
+ list($hash_func, $filename, $hash_len) = $params;
+ $cases = $this->_readTestCases($filename, $hash_len);
foreach ($cases as $case) {
$test = new Tests_Auth_OpenID_HMAC_TestCase(
$case['test_case'],
diff --git a/Tests/Auth/OpenID/data/hmac-sha256.txt b/Tests/Auth/OpenID/data/hmac-sha256.txt
new file mode 100644
index 0000000..a0b2e73
--- /dev/null
+++ b/Tests/Auth/OpenID/data/hmac-sha256.txt
@@ -0,0 +1,29 @@
+test_case = 1
+key = 0x0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b
+data = 0x4869205468657265
+digest = 0xb0344c61d8db38535ca8afceaf0bf12b881dc200c9833da726e9376c2e32cff7
+
+test_case = 2
+key = 0x4a656665
+data = 0x7768617420646f2079612077616e7420666f72206e6f7468696e673f
+digest = 0x5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843
+
+test_case = 3
+key = 0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+data = 0xdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
+digest = 0x773ea91e36800e46854db8ebd09181a72959098b3ef8c122d9635514ced565fe
+
+test_case = 4
+key = 0x0102030405060708090a0b0c0d0e0f10111213141516171819
+data = 0xcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd
+digest = 0x82558a389a443c0ea4cc819899f2083a85f0faa3e578f8077a2e3ff46729665b
+
+test_case = 6
+key = 0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+data = 0x54657374205573696e67204c6172676572205468616e20426c6f636b2d53697a65204b6579202d2048617368204b6579204669727374
+digest = 0x60e431591ee0b67f0d8a26aacbf5b77f8e0bc6213728c5140546040f0ee37f54
+
+test_case = 7
+key = 0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+data = 0x5468697320697320612074657374207573696e672061206c6172676572207468616e20626c6f636b2d73697a65206b657920616e642061206c6172676572207468616e20626c6f636b2d73697a6520646174612e20546865206b6579206e6565647320746f20626520686173686564206265666f7265206265696e6720757365642062792074686520484d414320616c676f726974686d2e
+digest = 0x9b09ffa71b942fcb27635fbcd5b0e944bfdc63644f0713938a7f51535c3a35e2