예제 #1
0
 function _readTestCases($test_file_name, $digest_len)
 {
     $lines = Tests_Auth_OpenID_readlines($test_file_name);
     $cases = array();
     $case = array();
     foreach ($lines as $line) {
         if ($line[0] == "#") {
             continue;
         }
         // Blank line separates test cases
         if ($line == "\n") {
             $cases[] = $case;
             $case = array();
         } else {
             $match = array();
             $pat = '/^([a-z0-9_-]+) =\\s+(.*?)\\n$/';
             if (!preg_match($pat, $line, $match)) {
                 trigger_error("Bad test input: {$line}", E_USER_ERROR);
             }
             $c = count($match);
             if ($c != 3) {
                 trigger_error("Wrong number of elements in parsed case: {$c}", E_USER_ERROR);
                 return false;
             }
             $key = $match[1];
             $value = $match[2];
             $case[$key] = $value;
         }
     }
     if (count($case)) {
         $cases[] = $case;
     }
     $final = array();
     // Normalize strings and check data integrity
     foreach ($cases as $case) {
         $clean = array();
         $clean["key"] = Tests_Auth_OpenID_HMAC::_strConvert($case["key"]);
         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 (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"]) != $digest_len) {
             $l = Auth_OpenID::bytes($clean["digest"]);
             trigger_error("Bad digest length: {$l}", E_USER_ERROR);
         }
         $clean['test_case'] = $case['test_case'];
         $final[] = $clean;
     }
     return $final;
 }
예제 #2
0
 function _readTestCases()
 {
     $lines = Tests_Auth_OpenID_readlines('urinorm.txt');
     $cases = array();
     $case = array();
     for ($i = 0; $i < count($lines) && $i + 3 <= count($lines); $i += 4) {
         $name = trim($lines[$i]);
         $uri = trim($lines[$i + 1]);
         $expected = trim($lines[$i + 2]);
         if ($expected == 'fail') {
             $expected = null;
         }
         $cases[] = array($name, $uri, $expected);
     }
     return $cases;
 }
예제 #3
0
 function _readExchTestCases()
 {
     $lines = Tests_Auth_OpenID_readlines('dhexch');
     $cases = array();
     foreach ($lines as $line) {
         $case = array();
         if (!preg_match('/^(\\d+) (\\d+) (\\d+)\\n$/', $line, $case)) {
             trigger_error("Bad test input: {$line}", E_USER_ERROR);
         }
         $c = count($case);
         if ($c != 4) {
             trigger_error("Wrong number of elements in parsed case: {$c}", E_USER_ERROR);
         }
         array_shift($case);
         $cases[] = $case;
     }
     return $cases;
 }
예제 #4
0
 function _parseBase64Data()
 {
     $lines = Tests_Auth_OpenID_readlines('n2b64');
     $data = array();
     foreach ($lines as $line) {
         $line = trim($line);
         if (!$line) {
             continue;
         }
         list($b64, $ascii) = explode(' ', $line);
         $data[$b64] = $ascii;
     }
     return $data;
 }