Completed
Push — master ( e355ed...1c7137 )
by Michiel
01:02 queued 11s
created
library/tiqr/Tiqr/Message/Exception.php 2 patches
Indentation   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -29,8 +29,8 @@
 block discarded – undo
29 29
      * @param string    $message    exception message
30 30
      * @param Exception $parent     parent exception
31 31
      */
32
-     public function __construct($message, $parent=null)
33
-     {
34
-         parent::__construct($message, 0, $parent);
35
-     }
32
+        public function __construct($message, $parent=null)
33
+        {
34
+            parent::__construct($message, 0, $parent);
35
+        }
36 36
 }
37 37
\ No newline at end of file
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -29,7 +29,7 @@
 block discarded – undo
29 29
      * @param string    $message    exception message
30 30
      * @param Exception $parent     parent exception
31 31
      */
32
-     public function __construct($message, $parent=null)
32
+     public function __construct($message, $parent = null)
33 33
      {
34 34
          parent::__construct($message, 0, $parent);
35 35
      }
Please login to merge, or discard this patch.
library/tiqr/OATH/OCRAParser.php 2 patches
Indentation   +288 added lines, -288 removed lines patch added patch discarded remove patch
@@ -2,295 +2,295 @@
 block discarded – undo
2 2
 
3 3
 class OATH_OCRAParser {
4 4
 
5
-	private $key = NULL;
6
-
7
-	private $OCRASuite = NULL;
8
-
9
-	private $OCRAVersion = NULL;
10
-
11
-	private $CryptoFunctionType = NULL;
12
-	private $CryptoFunctionHash = NULL;
13
-	private $CryptoFunctionHashLength = NULL;
14
-	private $CryptoFunctionTruncation = NULL;
15
-
16
-	private $C = FALSE;
17
-	private $Q = FALSE;
18
-	private $QType = 'N';
19
-	private $QLength = 8;
20
-
21
-	private $P = FALSE;
22
-	private $PType = 'SHA1';
23
-	private $PLength = 20;
24
-
25
-	private $S = FALSE;
26
-	private $SLength = 64;
27
-
28
-	private $T = FALSE;
29
-	private $TLength = 60; // 1M
30
-	private $TPeriods = array('H' => 3600, 'M' => 60, 'S' => 1);
31
-
32
-	private $supportedHashFunctions = array('SHA1' => 20, 'SHA256' => 32, 'SHA512' => 64);
33
-
34
-
35
-	public function __construct($ocraSuite) {
36
-		$this->parseOCRASuite($ocraSuite);
37
-	}
38
-
39
-	/**
40
-	 * Inspired by https://github.com/bdauvergne/python-oath
41
-	 */
42
-	private function parseOCRASuite($ocraSuite) {
43
-		if (!is_string($ocraSuite)) {
44
-			throw new Exception('OCRASuite not in string format: ' . var_export($ocraSuite, TRUE));
45
-		}
46
-
47
-		$ocraSuite = strtoupper($ocraSuite);
48
-		$this->OCRASuite = $ocraSuite;
49
-
50
-		$s = explode(':', $ocraSuite);
51
-		if (count($s) != 3) {
52
-			throw new Exception('Invalid OCRASuite format: ' . var_export($ocraSuite, TRUE));
53
-		}
54
-
55
-		$algo = explode('-', $s[0]);
56
-		if (count($algo) != 2) {
57
-			throw new Exception('Invalid OCRA version: ' . var_export($s[0], TRUE));
58
-		}
59
-
60
-		if ($algo[0] !== 'OCRA') {
61
-			throw new Exception('Unsupported OCRA algorithm: ' . var_export($algo[0], TRUE));
62
-		}
63
-
64
-		if ($algo[1] !== '1') {
65
-			throw new Exception('Unsupported OCRA version: ' . var_export($algo[1], TRUE));
66
-		}
67
-		$this->OCRAVersion = $algo[1];
68
-
69
-		$cf = explode('-', $s[1]);
70
-		if (count($cf) != 3) {
71
-			throw new Exception('Invalid OCRA suite crypto function: ' . var_export($s[1], TRUE));
72
-		}
73
-
74
-		if ($cf[0] !== 'HOTP') {
75
-			throw new Exception('Unsupported OCRA suite crypto function: ' . var_export($cf[0], TRUE));
76
-		}
77
-		$this->CryptoFunctionType = $cf[0];
78
-
79
-		if (!array_key_exists($cf[1], $this->supportedHashFunctions)) {
80
-			throw new Exception('Unsupported hash function in OCRA suite crypto function: ' . var_export($cf[1], TRUE));
81
-		}
82
-		$this->CryptoFunctionHash = $cf[1];
83
-		$this->CryptoFunctionHashLength = $this->supportedHashFunctions[$cf[1]];
84
-
85
-		if (!preg_match('/^\d+$/', $cf[2]) || (($cf[2] < 4 || $cf[2] > 10) && $cf[2] != 0)) {
86
-			throw new Exception('Invalid OCRA suite crypto function truncation length: ' . var_export($cf[2], TRUE));
87
-		}
88
-		$this->CryptoFunctionTruncation = intval($cf[2]);
89
-
90
-		$di = explode('-', $s[2]);
91
-		if (count($cf) == 0) {
92
-			throw new Exception('Invalid OCRA suite data input: ' . var_export($s[2], TRUE));
93
-		}
94
-
95
-		$data_input = array();
96
-		foreach($di as $elem) {
97
-			$letter = $elem[0];
98
-			if (array_key_exists($letter, $data_input)) {
99
-				throw new Exception('Duplicate field in OCRA suite data input: ' . var_export($elem, TRUE));
100
-			}
101
-			$data_input[$letter] = 1;
102
-
103
-			if ($letter === 'C' && strlen($elem) == 1) {
104
-				$this->C = TRUE;
105
-			} elseif ($letter === 'Q') {
106
-				if (strlen($elem) == 1) {
107
-					$this->Q = TRUE;
108
-				} elseif (preg_match('/^Q([AHN])(\d+)$/', $elem, $match)) {
109
-					$q_len = intval($match[2]);
110
-					if ($q_len < 4 || $q_len > 64) {
111
-						throw new Exception('Invalid OCRA suite data input question length: ' . var_export($q_len, TRUE));
112
-					}
113
-					$this->Q = TRUE;
114
-					$this->QType = $match[1];
115
-					$this->QLength = $q_len;
116
-				} else {
117
-					throw new Exception('Invalid OCRA suite data input question: ' . var_export($elem, TRUE));
118
-				}
119
-			} elseif ($letter === 'P') {
120
-				if (strlen($elem) == 1) {
121
-					$this->P = TRUE;
122
-				} else {
123
-					$p_algo = substr($elem, 1);
124
-					if (!array_key_exists($p_algo, $this->supportedHashFunctions)) {
125
-						throw new Exception('Unsupported OCRA suite PIN hash function: ' . var_export($elem, TRUE));
126
-					}
127
-					$this->P = TRUE;
128
-					$this->PType = $p_algo;
129
-					$this->PLength = $this->supportedHashFunctions[$p_algo];
130
-				}
131
-			} elseif ($letter === 'S') {
132
-				if (strlen($elem) == 1) {
133
-					$this->S = TRUE;
134
-				} elseif (preg_match('/^S(\d+)$/', $elem, $match)) {
135
-					$s_len = intval($match[1]);
136
-					if ($s_len <= 0 || $s_len > 512) {
137
-						throw new Exception('Invalid OCRA suite data input session information length: ' . var_export($s_len, TRUE));
138
-					}
139
-
140
-					$this->S = TRUE;
141
-					$this->SLength = $s_len;
142
-				} else {
143
-					throw new Exception('Invalid OCRA suite data input session information length: ' . var_export($elem, TRUE));
144
-				}
145
-			} elseif ($letter === 'T') {
146
-				if (strlen($elem) == 1) {
147
-					$this->T = TRUE;
148
-				} elseif (preg_match('/^T(\d+[HMS])+$/', $elem)) {
149
-					preg_match_all('/(\d+)([HMS])/', $elem, $match);
150
-
151
-					if (count($match[1]) !== count(array_unique($match[2]))) {
152
-						throw new Exception('Duplicate definitions in OCRA suite data input timestamp: ' . var_export($elem, TRUE));
153
-					}
154
-
155
-					$length = 0;
156
-					for ($i = 0; $i < count($match[1]); $i++) {
157
-						$length += intval($match[1][$i]) * $this->TPeriods[$match[2][$i]];
158
-					}
159
-					if ($length <= 0) {
160
-						throw new Exception('Invalid OCRA suite data input timestamp: ' . var_export($elem, TRUE));
161
-					}
162
-
163
-					$this->T = TRUE;
164
-					$this->TLength = $length;
165
-				} else {
166
-					throw new Exception('Invalid OCRA suite data input timestamp: ' . var_export($elem, TRUE));
167
-				}
168
-			} else {
169
-				throw new Exception('Unsupported OCRA suite data input field: ' . var_export($elem, TRUE));
170
-			}
171
-		}
172
-
173
-		if (!$this->Q) {
174
-			throw new Exception('OCRA suite data input question not defined: ' . var_export($s[2], TRUE));
175
-		}
176
-	}
177
-
178
-	public function generateChallenge() {
179
-		$q_length = $this->QLength;
180
-		$q_type = $this->QType;
181
-
182
-		$bytes = self::generateRandomBytes($q_length);
183
-
184
-		switch($q_type) {
185
-			case 'A':
186
-				$challenge = base64_encode($bytes);
187
-				$tr = implode("", unpack('H*', $bytes));
188
-				$challenge = rtrim(strtr($challenge, '+/', $tr), '=');
189
-				break;
190
-			case 'H':
191
-				$challenge = implode("", unpack('H*', $bytes));
192
-				break;
193
-			case 'N':
194
-				$challenge = implode("", unpack('N*', $bytes));
195
-				break;
196
-			default:
197
-				throw new Exception('Unsupported OCRASuite challenge type: ' . var_export($q_type, TRUE));
198
-				break;
199
-		}
200
-
201
-		$challenge = substr($challenge, 0, $q_length);
202
-
203
-		return $challenge;
204
-	}
205
-
206
-
207
-	public function generateSessionInformation() {
208
-		if (!$this->S) {
209
-			throw new Exception('Session information not defined in OCRASuite: ' . var_export($this->OCRASuite, TRUE));
210
-		}
211
-
212
-		$s_length = $this->SLength;
213
-		$bytes = self::generateRandomBytes($s_length);
214
-
215
-		// The OCRA spec doesn't specify that the session data should be hexadecimal.
216
-		// However the reference implementation in the RFC does treat it as hex.
217
-		$session = bin2hex($bytes);
5
+    private $key = NULL;
6
+
7
+    private $OCRASuite = NULL;
8
+
9
+    private $OCRAVersion = NULL;
10
+
11
+    private $CryptoFunctionType = NULL;
12
+    private $CryptoFunctionHash = NULL;
13
+    private $CryptoFunctionHashLength = NULL;
14
+    private $CryptoFunctionTruncation = NULL;
15
+
16
+    private $C = FALSE;
17
+    private $Q = FALSE;
18
+    private $QType = 'N';
19
+    private $QLength = 8;
20
+
21
+    private $P = FALSE;
22
+    private $PType = 'SHA1';
23
+    private $PLength = 20;
24
+
25
+    private $S = FALSE;
26
+    private $SLength = 64;
27
+
28
+    private $T = FALSE;
29
+    private $TLength = 60; // 1M
30
+    private $TPeriods = array('H' => 3600, 'M' => 60, 'S' => 1);
31
+
32
+    private $supportedHashFunctions = array('SHA1' => 20, 'SHA256' => 32, 'SHA512' => 64);
33
+
34
+
35
+    public function __construct($ocraSuite) {
36
+        $this->parseOCRASuite($ocraSuite);
37
+    }
38
+
39
+    /**
40
+     * Inspired by https://github.com/bdauvergne/python-oath
41
+     */
42
+    private function parseOCRASuite($ocraSuite) {
43
+        if (!is_string($ocraSuite)) {
44
+            throw new Exception('OCRASuite not in string format: ' . var_export($ocraSuite, TRUE));
45
+        }
46
+
47
+        $ocraSuite = strtoupper($ocraSuite);
48
+        $this->OCRASuite = $ocraSuite;
49
+
50
+        $s = explode(':', $ocraSuite);
51
+        if (count($s) != 3) {
52
+            throw new Exception('Invalid OCRASuite format: ' . var_export($ocraSuite, TRUE));
53
+        }
54
+
55
+        $algo = explode('-', $s[0]);
56
+        if (count($algo) != 2) {
57
+            throw new Exception('Invalid OCRA version: ' . var_export($s[0], TRUE));
58
+        }
59
+
60
+        if ($algo[0] !== 'OCRA') {
61
+            throw new Exception('Unsupported OCRA algorithm: ' . var_export($algo[0], TRUE));
62
+        }
63
+
64
+        if ($algo[1] !== '1') {
65
+            throw new Exception('Unsupported OCRA version: ' . var_export($algo[1], TRUE));
66
+        }
67
+        $this->OCRAVersion = $algo[1];
68
+
69
+        $cf = explode('-', $s[1]);
70
+        if (count($cf) != 3) {
71
+            throw new Exception('Invalid OCRA suite crypto function: ' . var_export($s[1], TRUE));
72
+        }
73
+
74
+        if ($cf[0] !== 'HOTP') {
75
+            throw new Exception('Unsupported OCRA suite crypto function: ' . var_export($cf[0], TRUE));
76
+        }
77
+        $this->CryptoFunctionType = $cf[0];
78
+
79
+        if (!array_key_exists($cf[1], $this->supportedHashFunctions)) {
80
+            throw new Exception('Unsupported hash function in OCRA suite crypto function: ' . var_export($cf[1], TRUE));
81
+        }
82
+        $this->CryptoFunctionHash = $cf[1];
83
+        $this->CryptoFunctionHashLength = $this->supportedHashFunctions[$cf[1]];
84
+
85
+        if (!preg_match('/^\d+$/', $cf[2]) || (($cf[2] < 4 || $cf[2] > 10) && $cf[2] != 0)) {
86
+            throw new Exception('Invalid OCRA suite crypto function truncation length: ' . var_export($cf[2], TRUE));
87
+        }
88
+        $this->CryptoFunctionTruncation = intval($cf[2]);
89
+
90
+        $di = explode('-', $s[2]);
91
+        if (count($cf) == 0) {
92
+            throw new Exception('Invalid OCRA suite data input: ' . var_export($s[2], TRUE));
93
+        }
94
+
95
+        $data_input = array();
96
+        foreach($di as $elem) {
97
+            $letter = $elem[0];
98
+            if (array_key_exists($letter, $data_input)) {
99
+                throw new Exception('Duplicate field in OCRA suite data input: ' . var_export($elem, TRUE));
100
+            }
101
+            $data_input[$letter] = 1;
102
+
103
+            if ($letter === 'C' && strlen($elem) == 1) {
104
+                $this->C = TRUE;
105
+            } elseif ($letter === 'Q') {
106
+                if (strlen($elem) == 1) {
107
+                    $this->Q = TRUE;
108
+                } elseif (preg_match('/^Q([AHN])(\d+)$/', $elem, $match)) {
109
+                    $q_len = intval($match[2]);
110
+                    if ($q_len < 4 || $q_len > 64) {
111
+                        throw new Exception('Invalid OCRA suite data input question length: ' . var_export($q_len, TRUE));
112
+                    }
113
+                    $this->Q = TRUE;
114
+                    $this->QType = $match[1];
115
+                    $this->QLength = $q_len;
116
+                } else {
117
+                    throw new Exception('Invalid OCRA suite data input question: ' . var_export($elem, TRUE));
118
+                }
119
+            } elseif ($letter === 'P') {
120
+                if (strlen($elem) == 1) {
121
+                    $this->P = TRUE;
122
+                } else {
123
+                    $p_algo = substr($elem, 1);
124
+                    if (!array_key_exists($p_algo, $this->supportedHashFunctions)) {
125
+                        throw new Exception('Unsupported OCRA suite PIN hash function: ' . var_export($elem, TRUE));
126
+                    }
127
+                    $this->P = TRUE;
128
+                    $this->PType = $p_algo;
129
+                    $this->PLength = $this->supportedHashFunctions[$p_algo];
130
+                }
131
+            } elseif ($letter === 'S') {
132
+                if (strlen($elem) == 1) {
133
+                    $this->S = TRUE;
134
+                } elseif (preg_match('/^S(\d+)$/', $elem, $match)) {
135
+                    $s_len = intval($match[1]);
136
+                    if ($s_len <= 0 || $s_len > 512) {
137
+                        throw new Exception('Invalid OCRA suite data input session information length: ' . var_export($s_len, TRUE));
138
+                    }
139
+
140
+                    $this->S = TRUE;
141
+                    $this->SLength = $s_len;
142
+                } else {
143
+                    throw new Exception('Invalid OCRA suite data input session information length: ' . var_export($elem, TRUE));
144
+                }
145
+            } elseif ($letter === 'T') {
146
+                if (strlen($elem) == 1) {
147
+                    $this->T = TRUE;
148
+                } elseif (preg_match('/^T(\d+[HMS])+$/', $elem)) {
149
+                    preg_match_all('/(\d+)([HMS])/', $elem, $match);
150
+
151
+                    if (count($match[1]) !== count(array_unique($match[2]))) {
152
+                        throw new Exception('Duplicate definitions in OCRA suite data input timestamp: ' . var_export($elem, TRUE));
153
+                    }
154
+
155
+                    $length = 0;
156
+                    for ($i = 0; $i < count($match[1]); $i++) {
157
+                        $length += intval($match[1][$i]) * $this->TPeriods[$match[2][$i]];
158
+                    }
159
+                    if ($length <= 0) {
160
+                        throw new Exception('Invalid OCRA suite data input timestamp: ' . var_export($elem, TRUE));
161
+                    }
162
+
163
+                    $this->T = TRUE;
164
+                    $this->TLength = $length;
165
+                } else {
166
+                    throw new Exception('Invalid OCRA suite data input timestamp: ' . var_export($elem, TRUE));
167
+                }
168
+            } else {
169
+                throw new Exception('Unsupported OCRA suite data input field: ' . var_export($elem, TRUE));
170
+            }
171
+        }
172
+
173
+        if (!$this->Q) {
174
+            throw new Exception('OCRA suite data input question not defined: ' . var_export($s[2], TRUE));
175
+        }
176
+    }
177
+
178
+    public function generateChallenge() {
179
+        $q_length = $this->QLength;
180
+        $q_type = $this->QType;
181
+
182
+        $bytes = self::generateRandomBytes($q_length);
183
+
184
+        switch($q_type) {
185
+            case 'A':
186
+                $challenge = base64_encode($bytes);
187
+                $tr = implode("", unpack('H*', $bytes));
188
+                $challenge = rtrim(strtr($challenge, '+/', $tr), '=');
189
+                break;
190
+            case 'H':
191
+                $challenge = implode("", unpack('H*', $bytes));
192
+                break;
193
+            case 'N':
194
+                $challenge = implode("", unpack('N*', $bytes));
195
+                break;
196
+            default:
197
+                throw new Exception('Unsupported OCRASuite challenge type: ' . var_export($q_type, TRUE));
198
+                break;
199
+        }
200
+
201
+        $challenge = substr($challenge, 0, $q_length);
202
+
203
+        return $challenge;
204
+    }
205
+
206
+
207
+    public function generateSessionInformation() {
208
+        if (!$this->S) {
209
+            throw new Exception('Session information not defined in OCRASuite: ' . var_export($this->OCRASuite, TRUE));
210
+        }
211
+
212
+        $s_length = $this->SLength;
213
+        $bytes = self::generateRandomBytes($s_length);
214
+
215
+        // The OCRA spec doesn't specify that the session data should be hexadecimal.
216
+        // However the reference implementation in the RFC does treat it as hex.
217
+        $session = bin2hex($bytes);
218 218
 		
219
-		$session = substr($session, 0, $s_length);
219
+        $session = substr($session, 0, $s_length);
220 220
 		
221
-		return $session;
222
-	}
223
-
224
-	/**
225
-	 * Borrowed from SimpleSAMLPHP http://simplesamlphp.org/
226
-	 */
227
-	public static function generateRandomBytesMTrand($length) {
228
-
229
-		/* Use mt_rand to generate $length random bytes. */
230
-		$data = '';
231
-		for($i = 0; $i < $length; $i++) {
232
-			$data .= chr(mt_rand(0, 255));
233
-		}
234
-
235
-		return $data;
236
-	}
237
-
238
-
239
-	/**
240
-	 * Borrowed from SimpleSAMLPHP http://simplesamlphp.org/
241
-	 */
242
-	public static function generateRandomBytes($length, $fallback = TRUE) {
243
-		static $fp = NULL;
244
-
245
-		if (function_exists('openssl_random_pseudo_bytes')) {
246
-			return openssl_random_pseudo_bytes($length);
247
-		}
248
-
249
-		if($fp === NULL) {
250
-			if (@file_exists('/dev/urandom')) {
251
-				$fp = @fopen('/dev/urandom', 'rb');
252
-			} else {
253
-				$fp = FALSE;
254
-			}
255
-		}
256
-
257
-		if($fp !== FALSE) {
258
-			/* Read random bytes from /dev/urandom. */
259
-			$data = fread($fp, $length);
260
-			if($data === FALSE) {
261
-				throw new Exception('Error reading random data.');
262
-			}
263
-			if(strlen($data) != $length) {
264
-				if ($fallback) {
265
-					$data = self::generateRandomBytesMTrand($length);
266
-				} else {
267
-					throw new Exception('Did not get requested number of bytes from random source. Requested (' . $length . ') got (' . strlen($data) . ')');
268
-				}
269
-			}
270
-		} else {
271
-			/* Use mt_rand to generate $length random bytes. */
272
-			$data = self::generateRandomBytesMTrand($length);
273
-		}
274
-
275
-		return $data;
276
-	}
277
-
278
-
279
-	/**
280
-	 * Constant time string comparison, see http://codahale.com/a-lesson-in-timing-attacks/
281
-	 */
282
-	public static function constEqual($s1, $s2) {
283
-		if (strlen($s1) != strlen($s2)) {
284
-			return FALSE;
285
-		}
286
-
287
-		$result = TRUE;
288
-		$length = strlen($s1);
289
-		for ($i = 0; $i < $length; $i++) {
290
-			$result &= ($s1[$i] == $s2[$i]);
291
-		}
292
-
293
-		return (boolean)$result;
294
-	}
221
+        return $session;
222
+    }
223
+
224
+    /**
225
+     * Borrowed from SimpleSAMLPHP http://simplesamlphp.org/
226
+     */
227
+    public static function generateRandomBytesMTrand($length) {
228
+
229
+        /* Use mt_rand to generate $length random bytes. */
230
+        $data = '';
231
+        for($i = 0; $i < $length; $i++) {
232
+            $data .= chr(mt_rand(0, 255));
233
+        }
234
+
235
+        return $data;
236
+    }
237
+
238
+
239
+    /**
240
+     * Borrowed from SimpleSAMLPHP http://simplesamlphp.org/
241
+     */
242
+    public static function generateRandomBytes($length, $fallback = TRUE) {
243
+        static $fp = NULL;
244
+
245
+        if (function_exists('openssl_random_pseudo_bytes')) {
246
+            return openssl_random_pseudo_bytes($length);
247
+        }
248
+
249
+        if($fp === NULL) {
250
+            if (@file_exists('/dev/urandom')) {
251
+                $fp = @fopen('/dev/urandom', 'rb');
252
+            } else {
253
+                $fp = FALSE;
254
+            }
255
+        }
256
+
257
+        if($fp !== FALSE) {
258
+            /* Read random bytes from /dev/urandom. */
259
+            $data = fread($fp, $length);
260
+            if($data === FALSE) {
261
+                throw new Exception('Error reading random data.');
262
+            }
263
+            if(strlen($data) != $length) {
264
+                if ($fallback) {
265
+                    $data = self::generateRandomBytesMTrand($length);
266
+                } else {
267
+                    throw new Exception('Did not get requested number of bytes from random source. Requested (' . $length . ') got (' . strlen($data) . ')');
268
+                }
269
+            }
270
+        } else {
271
+            /* Use mt_rand to generate $length random bytes. */
272
+            $data = self::generateRandomBytesMTrand($length);
273
+        }
274
+
275
+        return $data;
276
+    }
277
+
278
+
279
+    /**
280
+     * Constant time string comparison, see http://codahale.com/a-lesson-in-timing-attacks/
281
+     */
282
+    public static function constEqual($s1, $s2) {
283
+        if (strlen($s1) != strlen($s2)) {
284
+            return FALSE;
285
+        }
286
+
287
+        $result = TRUE;
288
+        $length = strlen($s1);
289
+        for ($i = 0; $i < $length; $i++) {
290
+            $result &= ($s1[$i] == $s2[$i]);
291
+        }
292
+
293
+        return (boolean)$result;
294
+    }
295 295
 
296 296
 }
Please login to merge, or discard this patch.
Spacing   +32 added lines, -32 removed lines patch added patch discarded remove patch
@@ -41,7 +41,7 @@  discard block
 block discarded – undo
41 41
 	 */
42 42
 	private function parseOCRASuite($ocraSuite) {
43 43
 		if (!is_string($ocraSuite)) {
44
-			throw new Exception('OCRASuite not in string format: ' . var_export($ocraSuite, TRUE));
44
+			throw new Exception('OCRASuite not in string format: '.var_export($ocraSuite, TRUE));
45 45
 		}
46 46
 
47 47
 		$ocraSuite = strtoupper($ocraSuite);
@@ -49,54 +49,54 @@  discard block
 block discarded – undo
49 49
 
50 50
 		$s = explode(':', $ocraSuite);
51 51
 		if (count($s) != 3) {
52
-			throw new Exception('Invalid OCRASuite format: ' . var_export($ocraSuite, TRUE));
52
+			throw new Exception('Invalid OCRASuite format: '.var_export($ocraSuite, TRUE));
53 53
 		}
54 54
 
55 55
 		$algo = explode('-', $s[0]);
56 56
 		if (count($algo) != 2) {
57
-			throw new Exception('Invalid OCRA version: ' . var_export($s[0], TRUE));
57
+			throw new Exception('Invalid OCRA version: '.var_export($s[0], TRUE));
58 58
 		}
59 59
 
60 60
 		if ($algo[0] !== 'OCRA') {
61
-			throw new Exception('Unsupported OCRA algorithm: ' . var_export($algo[0], TRUE));
61
+			throw new Exception('Unsupported OCRA algorithm: '.var_export($algo[0], TRUE));
62 62
 		}
63 63
 
64 64
 		if ($algo[1] !== '1') {
65
-			throw new Exception('Unsupported OCRA version: ' . var_export($algo[1], TRUE));
65
+			throw new Exception('Unsupported OCRA version: '.var_export($algo[1], TRUE));
66 66
 		}
67 67
 		$this->OCRAVersion = $algo[1];
68 68
 
69 69
 		$cf = explode('-', $s[1]);
70 70
 		if (count($cf) != 3) {
71
-			throw new Exception('Invalid OCRA suite crypto function: ' . var_export($s[1], TRUE));
71
+			throw new Exception('Invalid OCRA suite crypto function: '.var_export($s[1], TRUE));
72 72
 		}
73 73
 
74 74
 		if ($cf[0] !== 'HOTP') {
75
-			throw new Exception('Unsupported OCRA suite crypto function: ' . var_export($cf[0], TRUE));
75
+			throw new Exception('Unsupported OCRA suite crypto function: '.var_export($cf[0], TRUE));
76 76
 		}
77 77
 		$this->CryptoFunctionType = $cf[0];
78 78
 
79 79
 		if (!array_key_exists($cf[1], $this->supportedHashFunctions)) {
80
-			throw new Exception('Unsupported hash function in OCRA suite crypto function: ' . var_export($cf[1], TRUE));
80
+			throw new Exception('Unsupported hash function in OCRA suite crypto function: '.var_export($cf[1], TRUE));
81 81
 		}
82 82
 		$this->CryptoFunctionHash = $cf[1];
83 83
 		$this->CryptoFunctionHashLength = $this->supportedHashFunctions[$cf[1]];
84 84
 
85 85
 		if (!preg_match('/^\d+$/', $cf[2]) || (($cf[2] < 4 || $cf[2] > 10) && $cf[2] != 0)) {
86
-			throw new Exception('Invalid OCRA suite crypto function truncation length: ' . var_export($cf[2], TRUE));
86
+			throw new Exception('Invalid OCRA suite crypto function truncation length: '.var_export($cf[2], TRUE));
87 87
 		}
88 88
 		$this->CryptoFunctionTruncation = intval($cf[2]);
89 89
 
90 90
 		$di = explode('-', $s[2]);
91 91
 		if (count($cf) == 0) {
92
-			throw new Exception('Invalid OCRA suite data input: ' . var_export($s[2], TRUE));
92
+			throw new Exception('Invalid OCRA suite data input: '.var_export($s[2], TRUE));
93 93
 		}
94 94
 
95 95
 		$data_input = array();
96
-		foreach($di as $elem) {
96
+		foreach ($di as $elem) {
97 97
 			$letter = $elem[0];
98 98
 			if (array_key_exists($letter, $data_input)) {
99
-				throw new Exception('Duplicate field in OCRA suite data input: ' . var_export($elem, TRUE));
99
+				throw new Exception('Duplicate field in OCRA suite data input: '.var_export($elem, TRUE));
100 100
 			}
101 101
 			$data_input[$letter] = 1;
102 102
 
@@ -108,13 +108,13 @@  discard block
 block discarded – undo
108 108
 				} elseif (preg_match('/^Q([AHN])(\d+)$/', $elem, $match)) {
109 109
 					$q_len = intval($match[2]);
110 110
 					if ($q_len < 4 || $q_len > 64) {
111
-						throw new Exception('Invalid OCRA suite data input question length: ' . var_export($q_len, TRUE));
111
+						throw new Exception('Invalid OCRA suite data input question length: '.var_export($q_len, TRUE));
112 112
 					}
113 113
 					$this->Q = TRUE;
114 114
 					$this->QType = $match[1];
115 115
 					$this->QLength = $q_len;
116 116
 				} else {
117
-					throw new Exception('Invalid OCRA suite data input question: ' . var_export($elem, TRUE));
117
+					throw new Exception('Invalid OCRA suite data input question: '.var_export($elem, TRUE));
118 118
 				}
119 119
 			} elseif ($letter === 'P') {
120 120
 				if (strlen($elem) == 1) {
@@ -122,7 +122,7 @@  discard block
 block discarded – undo
122 122
 				} else {
123 123
 					$p_algo = substr($elem, 1);
124 124
 					if (!array_key_exists($p_algo, $this->supportedHashFunctions)) {
125
-						throw new Exception('Unsupported OCRA suite PIN hash function: ' . var_export($elem, TRUE));
125
+						throw new Exception('Unsupported OCRA suite PIN hash function: '.var_export($elem, TRUE));
126 126
 					}
127 127
 					$this->P = TRUE;
128 128
 					$this->PType = $p_algo;
@@ -134,13 +134,13 @@  discard block
 block discarded – undo
134 134
 				} elseif (preg_match('/^S(\d+)$/', $elem, $match)) {
135 135
 					$s_len = intval($match[1]);
136 136
 					if ($s_len <= 0 || $s_len > 512) {
137
-						throw new Exception('Invalid OCRA suite data input session information length: ' . var_export($s_len, TRUE));
137
+						throw new Exception('Invalid OCRA suite data input session information length: '.var_export($s_len, TRUE));
138 138
 					}
139 139
 
140 140
 					$this->S = TRUE;
141 141
 					$this->SLength = $s_len;
142 142
 				} else {
143
-					throw new Exception('Invalid OCRA suite data input session information length: ' . var_export($elem, TRUE));
143
+					throw new Exception('Invalid OCRA suite data input session information length: '.var_export($elem, TRUE));
144 144
 				}
145 145
 			} elseif ($letter === 'T') {
146 146
 				if (strlen($elem) == 1) {
@@ -149,7 +149,7 @@  discard block
 block discarded – undo
149 149
 					preg_match_all('/(\d+)([HMS])/', $elem, $match);
150 150
 
151 151
 					if (count($match[1]) !== count(array_unique($match[2]))) {
152
-						throw new Exception('Duplicate definitions in OCRA suite data input timestamp: ' . var_export($elem, TRUE));
152
+						throw new Exception('Duplicate definitions in OCRA suite data input timestamp: '.var_export($elem, TRUE));
153 153
 					}
154 154
 
155 155
 					$length = 0;
@@ -157,21 +157,21 @@  discard block
 block discarded – undo
157 157
 						$length += intval($match[1][$i]) * $this->TPeriods[$match[2][$i]];
158 158
 					}
159 159
 					if ($length <= 0) {
160
-						throw new Exception('Invalid OCRA suite data input timestamp: ' . var_export($elem, TRUE));
160
+						throw new Exception('Invalid OCRA suite data input timestamp: '.var_export($elem, TRUE));
161 161
 					}
162 162
 
163 163
 					$this->T = TRUE;
164 164
 					$this->TLength = $length;
165 165
 				} else {
166
-					throw new Exception('Invalid OCRA suite data input timestamp: ' . var_export($elem, TRUE));
166
+					throw new Exception('Invalid OCRA suite data input timestamp: '.var_export($elem, TRUE));
167 167
 				}
168 168
 			} else {
169
-				throw new Exception('Unsupported OCRA suite data input field: ' . var_export($elem, TRUE));
169
+				throw new Exception('Unsupported OCRA suite data input field: '.var_export($elem, TRUE));
170 170
 			}
171 171
 		}
172 172
 
173 173
 		if (!$this->Q) {
174
-			throw new Exception('OCRA suite data input question not defined: ' . var_export($s[2], TRUE));
174
+			throw new Exception('OCRA suite data input question not defined: '.var_export($s[2], TRUE));
175 175
 		}
176 176
 	}
177 177
 
@@ -181,7 +181,7 @@  discard block
 block discarded – undo
181 181
 
182 182
 		$bytes = self::generateRandomBytes($q_length);
183 183
 
184
-		switch($q_type) {
184
+		switch ($q_type) {
185 185
 			case 'A':
186 186
 				$challenge = base64_encode($bytes);
187 187
 				$tr = implode("", unpack('H*', $bytes));
@@ -194,7 +194,7 @@  discard block
 block discarded – undo
194 194
 				$challenge = implode("", unpack('N*', $bytes));
195 195
 				break;
196 196
 			default:
197
-				throw new Exception('Unsupported OCRASuite challenge type: ' . var_export($q_type, TRUE));
197
+				throw new Exception('Unsupported OCRASuite challenge type: '.var_export($q_type, TRUE));
198 198
 				break;
199 199
 		}
200 200
 
@@ -206,7 +206,7 @@  discard block
 block discarded – undo
206 206
 
207 207
 	public function generateSessionInformation() {
208 208
 		if (!$this->S) {
209
-			throw new Exception('Session information not defined in OCRASuite: ' . var_export($this->OCRASuite, TRUE));
209
+			throw new Exception('Session information not defined in OCRASuite: '.var_export($this->OCRASuite, TRUE));
210 210
 		}
211 211
 
212 212
 		$s_length = $this->SLength;
@@ -228,7 +228,7 @@  discard block
 block discarded – undo
228 228
 
229 229
 		/* Use mt_rand to generate $length random bytes. */
230 230
 		$data = '';
231
-		for($i = 0; $i < $length; $i++) {
231
+		for ($i = 0; $i < $length; $i++) {
232 232
 			$data .= chr(mt_rand(0, 255));
233 233
 		}
234 234
 
@@ -246,7 +246,7 @@  discard block
 block discarded – undo
246 246
 			return openssl_random_pseudo_bytes($length);
247 247
 		}
248 248
 
249
-		if($fp === NULL) {
249
+		if ($fp === NULL) {
250 250
 			if (@file_exists('/dev/urandom')) {
251 251
 				$fp = @fopen('/dev/urandom', 'rb');
252 252
 			} else {
@@ -254,17 +254,17 @@  discard block
 block discarded – undo
254 254
 			}
255 255
 		}
256 256
 
257
-		if($fp !== FALSE) {
257
+		if ($fp !== FALSE) {
258 258
 			/* Read random bytes from /dev/urandom. */
259 259
 			$data = fread($fp, $length);
260
-			if($data === FALSE) {
260
+			if ($data === FALSE) {
261 261
 				throw new Exception('Error reading random data.');
262 262
 			}
263
-			if(strlen($data) != $length) {
263
+			if (strlen($data) != $length) {
264 264
 				if ($fallback) {
265 265
 					$data = self::generateRandomBytesMTrand($length);
266 266
 				} else {
267
-					throw new Exception('Did not get requested number of bytes from random source. Requested (' . $length . ') got (' . strlen($data) . ')');
267
+					throw new Exception('Did not get requested number of bytes from random source. Requested ('.$length.') got ('.strlen($data).')');
268 268
 				}
269 269
 			}
270 270
 		} else {
@@ -290,7 +290,7 @@  discard block
 block discarded – undo
290 290
 			$result &= ($s1[$i] == $s2[$i]);
291 291
 		}
292 292
 
293
-		return (boolean)$result;
293
+		return (boolean) $result;
294 294
 	}
295 295
 
296 296
 }
Please login to merge, or discard this patch.
library/tiqr/OATH/OCRATest.php 2 patches
Indentation   +115 added lines, -115 removed lines patch added patch discarded remove patch
@@ -4,127 +4,127 @@
 block discarded – undo
4 4
 
5 5
 class OATH_OCRATest extends PHPUnit_Framework_TestCase {
6 6
 
7
-	/**
8
-	 * @dataProvider RFCVectorsProvider
9
-	 */
10
-	public function testRFCVectors($ocrasuite, $key, $datainput, $expected_result) {
11
-		$ocra = new OATH_OCRA($ocrasuite, $key, NULL, $datainput['Q']);
12
-		$ocra->setKey($key, 'hexstring');
13
-		$ocra->setQuestion($datainput['Q']);
14
-		if (isset($datainput['C'])) {
15
-			$ocra->setCounter($datainput['C']);
16
-		}
17
-		if (isset($datainput['P'])) {
18
-			$ocra->setPin($datainput['P']);
19
-		} elseif (isset($datainput['P:hexdigest'])) {
20
-			$ocra->setPin($datainput['P:hexdigest'], 'hexdigest');
21
-		}
22
-		if (isset($datainput['T'])) {
23
-			$ocra->setTimestamp($datainput['T']);
24
-		}
25
-		$this->assertTrue($ocra->verifyResponse($expected_result));
26
-	}
7
+    /**
8
+     * @dataProvider RFCVectorsProvider
9
+     */
10
+    public function testRFCVectors($ocrasuite, $key, $datainput, $expected_result) {
11
+        $ocra = new OATH_OCRA($ocrasuite, $key, NULL, $datainput['Q']);
12
+        $ocra->setKey($key, 'hexstring');
13
+        $ocra->setQuestion($datainput['Q']);
14
+        if (isset($datainput['C'])) {
15
+            $ocra->setCounter($datainput['C']);
16
+        }
17
+        if (isset($datainput['P'])) {
18
+            $ocra->setPin($datainput['P']);
19
+        } elseif (isset($datainput['P:hexdigest'])) {
20
+            $ocra->setPin($datainput['P:hexdigest'], 'hexdigest');
21
+        }
22
+        if (isset($datainput['T'])) {
23
+            $ocra->setTimestamp($datainput['T']);
24
+        }
25
+        $this->assertTrue($ocra->verifyResponse($expected_result));
26
+    }
27 27
 
28 28
 
29
-	public function RFCVectorsProvider() {
30
-		$pin = '1234';
31
-		$pin_sha1 = '7110eda4d09e062aa5e4a390b0a572ac0d2c0220';
29
+    public function RFCVectorsProvider() {
30
+        $pin = '1234';
31
+        $pin_sha1 = '7110eda4d09e062aa5e4a390b0a572ac0d2c0220';
32 32
 
33
-		$key20 = '3132333435363738393031323334353637383930';
34
-		$key32 = '3132333435363738393031323334353637383930313233343536373839303132';
35
-		$key64 = '31323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334';
33
+        $key20 = '3132333435363738393031323334353637383930';
34
+        $key32 = '3132333435363738393031323334353637383930313233343536373839303132';
35
+        $key64 = '31323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334';
36 36
 
37
-		$tests = array(
38
-			array(
39
-				'ocrasuite' => 'OCRA-1:HOTP-SHA1-6:QN08',
40
-				'key' => $key20,
41
-				'vectors' => array(
42
-					array('params' => array( 'Q' => '00000000' ), 'result' => '237653' ),
43
-					array('params' => array( 'Q' => '11111111' ), 'result' => '243178' ),
44
-					array('params' => array( 'Q' => '22222222' ), 'result' => '653583' ),
45
-					array('params' => array( 'Q' => '33333333' ), 'result' => '740991' ),
46
-					array('params' => array( 'Q' => '44444444' ), 'result' => '608993' ),
47
-					array('params' => array( 'Q' => '55555555' ), 'result' => '388898' ),
48
-					array('params' => array( 'Q' => '66666666' ), 'result' => '816933' ),
49
-					array('params' => array( 'Q' => '77777777' ), 'result' => '224598' ),
50
-					array('params' => array( 'Q' => '88888888' ), 'result' => '750600' ),
51
-					array('params' => array( 'Q' => '99999999' ), 'result' => '294470' ),
52
-				)
53
-			),
54
-			array(
55
-				'ocrasuite' => 'OCRA-1:HOTP-SHA256-8:C-QN08-PSHA1',
56
-				'key' => $key32,
57
-				'pin_sha1' => $pin_sha1,
58
-				'vectors' => array(
59
-					array('params' => array( 'C' => 0, 'Q' => '12345678' ), 'result' => '65347737' ),
60
-					array('params' => array( 'C' => 1, 'Q' => '12345678' ), 'result' => '86775851' ),
61
-					array('params' => array( 'C' => 2, 'Q' => '12345678' ), 'result' => '78192410' ),
62
-					array('params' => array( 'C' => 3, 'Q' => '12345678' ), 'result' => '71565254' ),
63
-					array('params' => array( 'C' => 4, 'Q' => '12345678' ), 'result' => '10104329' ),
64
-					array('params' => array( 'C' => 5, 'Q' => '12345678' ), 'result' => '65983500' ),
65
-					array('params' => array( 'C' => 6, 'Q' => '12345678' ), 'result' => '70069104' ),
66
-					array('params' => array( 'C' => 7, 'Q' => '12345678' ), 'result' => '91771096' ),
67
-					array('params' => array( 'C' => 8, 'Q' => '12345678' ), 'result' => '75011558' ),
68
-					array('params' => array( 'C' => 9, 'Q' => '12345678' ), 'result' => '08522129' ),
69
-				)
70
-			),
71
-			array(
72
-				'ocrasuite' => 'OCRA-1:HOTP-SHA256-8:QN08-PSHA1',
73
-				'key' => $key32,
74
-				'pin_sha1' => $pin_sha1,
75
-				'vectors' => array(
76
-					array('params' => array( 'Q' => '00000000' ), 'result' => '83238735' ),
77
-					array('params' => array( 'Q' => '11111111' ), 'result' => '01501458' ),
78
-					array('params' => array( 'Q' => '22222222' ), 'result' => '17957585' ),
79
-					array('params' => array( 'Q' => '33333333' ), 'result' => '86776967' ),
80
-					array('params' => array( 'Q' => '44444444' ), 'result' => '86807031' ),
81
-				)
82
-			),
83
-			array(
84
-				'ocrasuite' => 'OCRA-1:HOTP-SHA512-8:C-QN08',
85
-				'key' => $key64,
86
-				'vectors' => array(
87
-					array('params' => array( 'C' => '00000', 'Q' => '00000000' ), 'result' => '07016083' ),
88
-					array('params' => array( 'C' => '00001', 'Q' => '11111111' ), 'result' => '63947962' ),
89
-					array('params' => array( 'C' => '00002', 'Q' => '22222222' ), 'result' => '70123924' ),
90
-					array('params' => array( 'C' => '00003', 'Q' => '33333333' ), 'result' => '25341727' ),
91
-					array('params' => array( 'C' => '00004', 'Q' => '44444444' ), 'result' => '33203315' ),
92
-					array('params' => array( 'C' => '00005', 'Q' => '55555555' ), 'result' => '34205738' ),
93
-					array('params' => array( 'C' => '00006', 'Q' => '66666666' ), 'result' => '44343969' ),
94
-					array('params' => array( 'C' => '00007', 'Q' => '77777777' ), 'result' => '51946085' ),
95
-					array('params' => array( 'C' => '00008', 'Q' => '88888888' ), 'result' => '20403879' ),
96
-					array('params' => array( 'C' => '00009', 'Q' => '99999999' ), 'result' => '31409299' ),
97
-				)
98
-			),
99
-			array(
100
-				'ocrasuite' => 'OCRA-1:HOTP-SHA512-8:QN08-T1M',
101
-				'key' => $key64,
102
-				'vectors' => array(
103
-					array('params' => array( 'Q' => '00000000', 'T' => intval('132d0b6', 16) ), 'result' => '95209754' ),
104
-					array('params' => array( 'Q' => '11111111', 'T' => intval('132d0b6', 16) ), 'result' => '55907591' ),
105
-					array('params' => array( 'Q' => '22222222', 'T' => intval('132d0b6', 16) ), 'result' => '22048402' ),
106
-					array('params' => array( 'Q' => '33333333', 'T' => intval('132d0b6', 16) ), 'result' => '24218844' ),
107
-					array('params' => array( 'Q' => '44444444', 'T' => intval('132d0b6', 16) ), 'result' => '36209546' ),
108
-				)
109
-			),
110
-		);
37
+        $tests = array(
38
+            array(
39
+                'ocrasuite' => 'OCRA-1:HOTP-SHA1-6:QN08',
40
+                'key' => $key20,
41
+                'vectors' => array(
42
+                    array('params' => array( 'Q' => '00000000' ), 'result' => '237653' ),
43
+                    array('params' => array( 'Q' => '11111111' ), 'result' => '243178' ),
44
+                    array('params' => array( 'Q' => '22222222' ), 'result' => '653583' ),
45
+                    array('params' => array( 'Q' => '33333333' ), 'result' => '740991' ),
46
+                    array('params' => array( 'Q' => '44444444' ), 'result' => '608993' ),
47
+                    array('params' => array( 'Q' => '55555555' ), 'result' => '388898' ),
48
+                    array('params' => array( 'Q' => '66666666' ), 'result' => '816933' ),
49
+                    array('params' => array( 'Q' => '77777777' ), 'result' => '224598' ),
50
+                    array('params' => array( 'Q' => '88888888' ), 'result' => '750600' ),
51
+                    array('params' => array( 'Q' => '99999999' ), 'result' => '294470' ),
52
+                )
53
+            ),
54
+            array(
55
+                'ocrasuite' => 'OCRA-1:HOTP-SHA256-8:C-QN08-PSHA1',
56
+                'key' => $key32,
57
+                'pin_sha1' => $pin_sha1,
58
+                'vectors' => array(
59
+                    array('params' => array( 'C' => 0, 'Q' => '12345678' ), 'result' => '65347737' ),
60
+                    array('params' => array( 'C' => 1, 'Q' => '12345678' ), 'result' => '86775851' ),
61
+                    array('params' => array( 'C' => 2, 'Q' => '12345678' ), 'result' => '78192410' ),
62
+                    array('params' => array( 'C' => 3, 'Q' => '12345678' ), 'result' => '71565254' ),
63
+                    array('params' => array( 'C' => 4, 'Q' => '12345678' ), 'result' => '10104329' ),
64
+                    array('params' => array( 'C' => 5, 'Q' => '12345678' ), 'result' => '65983500' ),
65
+                    array('params' => array( 'C' => 6, 'Q' => '12345678' ), 'result' => '70069104' ),
66
+                    array('params' => array( 'C' => 7, 'Q' => '12345678' ), 'result' => '91771096' ),
67
+                    array('params' => array( 'C' => 8, 'Q' => '12345678' ), 'result' => '75011558' ),
68
+                    array('params' => array( 'C' => 9, 'Q' => '12345678' ), 'result' => '08522129' ),
69
+                )
70
+            ),
71
+            array(
72
+                'ocrasuite' => 'OCRA-1:HOTP-SHA256-8:QN08-PSHA1',
73
+                'key' => $key32,
74
+                'pin_sha1' => $pin_sha1,
75
+                'vectors' => array(
76
+                    array('params' => array( 'Q' => '00000000' ), 'result' => '83238735' ),
77
+                    array('params' => array( 'Q' => '11111111' ), 'result' => '01501458' ),
78
+                    array('params' => array( 'Q' => '22222222' ), 'result' => '17957585' ),
79
+                    array('params' => array( 'Q' => '33333333' ), 'result' => '86776967' ),
80
+                    array('params' => array( 'Q' => '44444444' ), 'result' => '86807031' ),
81
+                )
82
+            ),
83
+            array(
84
+                'ocrasuite' => 'OCRA-1:HOTP-SHA512-8:C-QN08',
85
+                'key' => $key64,
86
+                'vectors' => array(
87
+                    array('params' => array( 'C' => '00000', 'Q' => '00000000' ), 'result' => '07016083' ),
88
+                    array('params' => array( 'C' => '00001', 'Q' => '11111111' ), 'result' => '63947962' ),
89
+                    array('params' => array( 'C' => '00002', 'Q' => '22222222' ), 'result' => '70123924' ),
90
+                    array('params' => array( 'C' => '00003', 'Q' => '33333333' ), 'result' => '25341727' ),
91
+                    array('params' => array( 'C' => '00004', 'Q' => '44444444' ), 'result' => '33203315' ),
92
+                    array('params' => array( 'C' => '00005', 'Q' => '55555555' ), 'result' => '34205738' ),
93
+                    array('params' => array( 'C' => '00006', 'Q' => '66666666' ), 'result' => '44343969' ),
94
+                    array('params' => array( 'C' => '00007', 'Q' => '77777777' ), 'result' => '51946085' ),
95
+                    array('params' => array( 'C' => '00008', 'Q' => '88888888' ), 'result' => '20403879' ),
96
+                    array('params' => array( 'C' => '00009', 'Q' => '99999999' ), 'result' => '31409299' ),
97
+                )
98
+            ),
99
+            array(
100
+                'ocrasuite' => 'OCRA-1:HOTP-SHA512-8:QN08-T1M',
101
+                'key' => $key64,
102
+                'vectors' => array(
103
+                    array('params' => array( 'Q' => '00000000', 'T' => intval('132d0b6', 16) ), 'result' => '95209754' ),
104
+                    array('params' => array( 'Q' => '11111111', 'T' => intval('132d0b6', 16) ), 'result' => '55907591' ),
105
+                    array('params' => array( 'Q' => '22222222', 'T' => intval('132d0b6', 16) ), 'result' => '22048402' ),
106
+                    array('params' => array( 'Q' => '33333333', 'T' => intval('132d0b6', 16) ), 'result' => '24218844' ),
107
+                    array('params' => array( 'Q' => '44444444', 'T' => intval('132d0b6', 16) ), 'result' => '36209546' ),
108
+                )
109
+            ),
110
+        );
111 111
 
112
-		$data = array();
112
+        $data = array();
113 113
 
114
-		foreach($tests as $test) {
115
-			$ocrasuite = $test['ocrasuite'];
116
-			foreach($test['vectors'] as $vector) {
117
-				$datainput = $vector['params'];
118
-				if (isset($test['pin'])) {
119
-					$datainput['P'] = $test['pin'];
120
-				} elseif (isset($test['pin_sha1'])) {
121
-					$datainput['P:hexdigest'] = $test['pin_sha1'];
122
-				}
123
-				$data[] = array($ocrasuite, $test['key'], $datainput, $vector['result']);
124
-			}
125
-		}
114
+        foreach($tests as $test) {
115
+            $ocrasuite = $test['ocrasuite'];
116
+            foreach($test['vectors'] as $vector) {
117
+                $datainput = $vector['params'];
118
+                if (isset($test['pin'])) {
119
+                    $datainput['P'] = $test['pin'];
120
+                } elseif (isset($test['pin_sha1'])) {
121
+                    $datainput['P:hexdigest'] = $test['pin_sha1'];
122
+                }
123
+                $data[] = array($ocrasuite, $test['key'], $datainput, $vector['result']);
124
+            }
125
+        }
126 126
 
127
-		return $data;
128
-	}
127
+        return $data;
128
+    }
129 129
 
130 130
 }
Please login to merge, or discard this patch.
Spacing   +43 added lines, -43 removed lines patch added patch discarded remove patch
@@ -1,6 +1,6 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 
3
-require_once(realpath(dirname(__FILE__) . '/OCRA.php'));
3
+require_once(realpath(dirname(__FILE__).'/OCRA.php'));
4 4
 
5 5
 class OATH_OCRATest extends PHPUnit_Framework_TestCase {
6 6
 
@@ -39,16 +39,16 @@  discard block
 block discarded – undo
39 39
 				'ocrasuite' => 'OCRA-1:HOTP-SHA1-6:QN08',
40 40
 				'key' => $key20,
41 41
 				'vectors' => array(
42
-					array('params' => array( 'Q' => '00000000' ), 'result' => '237653' ),
43
-					array('params' => array( 'Q' => '11111111' ), 'result' => '243178' ),
44
-					array('params' => array( 'Q' => '22222222' ), 'result' => '653583' ),
45
-					array('params' => array( 'Q' => '33333333' ), 'result' => '740991' ),
46
-					array('params' => array( 'Q' => '44444444' ), 'result' => '608993' ),
47
-					array('params' => array( 'Q' => '55555555' ), 'result' => '388898' ),
48
-					array('params' => array( 'Q' => '66666666' ), 'result' => '816933' ),
49
-					array('params' => array( 'Q' => '77777777' ), 'result' => '224598' ),
50
-					array('params' => array( 'Q' => '88888888' ), 'result' => '750600' ),
51
-					array('params' => array( 'Q' => '99999999' ), 'result' => '294470' ),
42
+					array('params' => array('Q' => '00000000'), 'result' => '237653'),
43
+					array('params' => array('Q' => '11111111'), 'result' => '243178'),
44
+					array('params' => array('Q' => '22222222'), 'result' => '653583'),
45
+					array('params' => array('Q' => '33333333'), 'result' => '740991'),
46
+					array('params' => array('Q' => '44444444'), 'result' => '608993'),
47
+					array('params' => array('Q' => '55555555'), 'result' => '388898'),
48
+					array('params' => array('Q' => '66666666'), 'result' => '816933'),
49
+					array('params' => array('Q' => '77777777'), 'result' => '224598'),
50
+					array('params' => array('Q' => '88888888'), 'result' => '750600'),
51
+					array('params' => array('Q' => '99999999'), 'result' => '294470'),
52 52
 				)
53 53
 			),
54 54
 			array(
@@ -56,16 +56,16 @@  discard block
 block discarded – undo
56 56
 				'key' => $key32,
57 57
 				'pin_sha1' => $pin_sha1,
58 58
 				'vectors' => array(
59
-					array('params' => array( 'C' => 0, 'Q' => '12345678' ), 'result' => '65347737' ),
60
-					array('params' => array( 'C' => 1, 'Q' => '12345678' ), 'result' => '86775851' ),
61
-					array('params' => array( 'C' => 2, 'Q' => '12345678' ), 'result' => '78192410' ),
62
-					array('params' => array( 'C' => 3, 'Q' => '12345678' ), 'result' => '71565254' ),
63
-					array('params' => array( 'C' => 4, 'Q' => '12345678' ), 'result' => '10104329' ),
64
-					array('params' => array( 'C' => 5, 'Q' => '12345678' ), 'result' => '65983500' ),
65
-					array('params' => array( 'C' => 6, 'Q' => '12345678' ), 'result' => '70069104' ),
66
-					array('params' => array( 'C' => 7, 'Q' => '12345678' ), 'result' => '91771096' ),
67
-					array('params' => array( 'C' => 8, 'Q' => '12345678' ), 'result' => '75011558' ),
68
-					array('params' => array( 'C' => 9, 'Q' => '12345678' ), 'result' => '08522129' ),
59
+					array('params' => array('C' => 0, 'Q' => '12345678'), 'result' => '65347737'),
60
+					array('params' => array('C' => 1, 'Q' => '12345678'), 'result' => '86775851'),
61
+					array('params' => array('C' => 2, 'Q' => '12345678'), 'result' => '78192410'),
62
+					array('params' => array('C' => 3, 'Q' => '12345678'), 'result' => '71565254'),
63
+					array('params' => array('C' => 4, 'Q' => '12345678'), 'result' => '10104329'),
64
+					array('params' => array('C' => 5, 'Q' => '12345678'), 'result' => '65983500'),
65
+					array('params' => array('C' => 6, 'Q' => '12345678'), 'result' => '70069104'),
66
+					array('params' => array('C' => 7, 'Q' => '12345678'), 'result' => '91771096'),
67
+					array('params' => array('C' => 8, 'Q' => '12345678'), 'result' => '75011558'),
68
+					array('params' => array('C' => 9, 'Q' => '12345678'), 'result' => '08522129'),
69 69
 				)
70 70
 			),
71 71
 			array(
@@ -73,47 +73,47 @@  discard block
 block discarded – undo
73 73
 				'key' => $key32,
74 74
 				'pin_sha1' => $pin_sha1,
75 75
 				'vectors' => array(
76
-					array('params' => array( 'Q' => '00000000' ), 'result' => '83238735' ),
77
-					array('params' => array( 'Q' => '11111111' ), 'result' => '01501458' ),
78
-					array('params' => array( 'Q' => '22222222' ), 'result' => '17957585' ),
79
-					array('params' => array( 'Q' => '33333333' ), 'result' => '86776967' ),
80
-					array('params' => array( 'Q' => '44444444' ), 'result' => '86807031' ),
76
+					array('params' => array('Q' => '00000000'), 'result' => '83238735'),
77
+					array('params' => array('Q' => '11111111'), 'result' => '01501458'),
78
+					array('params' => array('Q' => '22222222'), 'result' => '17957585'),
79
+					array('params' => array('Q' => '33333333'), 'result' => '86776967'),
80
+					array('params' => array('Q' => '44444444'), 'result' => '86807031'),
81 81
 				)
82 82
 			),
83 83
 			array(
84 84
 				'ocrasuite' => 'OCRA-1:HOTP-SHA512-8:C-QN08',
85 85
 				'key' => $key64,
86 86
 				'vectors' => array(
87
-					array('params' => array( 'C' => '00000', 'Q' => '00000000' ), 'result' => '07016083' ),
88
-					array('params' => array( 'C' => '00001', 'Q' => '11111111' ), 'result' => '63947962' ),
89
-					array('params' => array( 'C' => '00002', 'Q' => '22222222' ), 'result' => '70123924' ),
90
-					array('params' => array( 'C' => '00003', 'Q' => '33333333' ), 'result' => '25341727' ),
91
-					array('params' => array( 'C' => '00004', 'Q' => '44444444' ), 'result' => '33203315' ),
92
-					array('params' => array( 'C' => '00005', 'Q' => '55555555' ), 'result' => '34205738' ),
93
-					array('params' => array( 'C' => '00006', 'Q' => '66666666' ), 'result' => '44343969' ),
94
-					array('params' => array( 'C' => '00007', 'Q' => '77777777' ), 'result' => '51946085' ),
95
-					array('params' => array( 'C' => '00008', 'Q' => '88888888' ), 'result' => '20403879' ),
96
-					array('params' => array( 'C' => '00009', 'Q' => '99999999' ), 'result' => '31409299' ),
87
+					array('params' => array('C' => '00000', 'Q' => '00000000'), 'result' => '07016083'),
88
+					array('params' => array('C' => '00001', 'Q' => '11111111'), 'result' => '63947962'),
89
+					array('params' => array('C' => '00002', 'Q' => '22222222'), 'result' => '70123924'),
90
+					array('params' => array('C' => '00003', 'Q' => '33333333'), 'result' => '25341727'),
91
+					array('params' => array('C' => '00004', 'Q' => '44444444'), 'result' => '33203315'),
92
+					array('params' => array('C' => '00005', 'Q' => '55555555'), 'result' => '34205738'),
93
+					array('params' => array('C' => '00006', 'Q' => '66666666'), 'result' => '44343969'),
94
+					array('params' => array('C' => '00007', 'Q' => '77777777'), 'result' => '51946085'),
95
+					array('params' => array('C' => '00008', 'Q' => '88888888'), 'result' => '20403879'),
96
+					array('params' => array('C' => '00009', 'Q' => '99999999'), 'result' => '31409299'),
97 97
 				)
98 98
 			),
99 99
 			array(
100 100
 				'ocrasuite' => 'OCRA-1:HOTP-SHA512-8:QN08-T1M',
101 101
 				'key' => $key64,
102 102
 				'vectors' => array(
103
-					array('params' => array( 'Q' => '00000000', 'T' => intval('132d0b6', 16) ), 'result' => '95209754' ),
104
-					array('params' => array( 'Q' => '11111111', 'T' => intval('132d0b6', 16) ), 'result' => '55907591' ),
105
-					array('params' => array( 'Q' => '22222222', 'T' => intval('132d0b6', 16) ), 'result' => '22048402' ),
106
-					array('params' => array( 'Q' => '33333333', 'T' => intval('132d0b6', 16) ), 'result' => '24218844' ),
107
-					array('params' => array( 'Q' => '44444444', 'T' => intval('132d0b6', 16) ), 'result' => '36209546' ),
103
+					array('params' => array('Q' => '00000000', 'T' => intval('132d0b6', 16)), 'result' => '95209754'),
104
+					array('params' => array('Q' => '11111111', 'T' => intval('132d0b6', 16)), 'result' => '55907591'),
105
+					array('params' => array('Q' => '22222222', 'T' => intval('132d0b6', 16)), 'result' => '22048402'),
106
+					array('params' => array('Q' => '33333333', 'T' => intval('132d0b6', 16)), 'result' => '24218844'),
107
+					array('params' => array('Q' => '44444444', 'T' => intval('132d0b6', 16)), 'result' => '36209546'),
108 108
 				)
109 109
 			),
110 110
 		);
111 111
 
112 112
 		$data = array();
113 113
 
114
-		foreach($tests as $test) {
114
+		foreach ($tests as $test) {
115 115
 			$ocrasuite = $test['ocrasuite'];
116
-			foreach($test['vectors'] as $vector) {
116
+			foreach ($test['vectors'] as $vector) {
117 117
 				$datainput = $vector['params'];
118 118
 				if (isset($test['pin'])) {
119 119
 					$datainput['P'] = $test['pin'];
Please login to merge, or discard this patch.
library/tiqr/Tiqr/UserStorage/Encryption/Dummy.php 1 patch
Indentation   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -57,7 +57,7 @@
 block discarded – undo
57 57
     }
58 58
     
59 59
     /**
60
-      * Decrypts the given data.
60
+     * Decrypts the given data.
61 61
      *
62 62
      * @param String $data Data to decrypt.
63 63
      *
Please login to merge, or discard this patch.
library/tiqr/Tiqr/Message/Exception/SendFailure.php 1 patch
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -35,7 +35,7 @@
 block discarded – undo
35 35
      * @param boolean   $temporary  temporary failure?
36 36
      * @param Exception $parent     parent exception
37 37
      */
38
-    public function __construct($message, $temporary=false, Exception $parent=null)
38
+    public function __construct($message, $temporary = false, Exception $parent = null)
39 39
     {
40 40
         parent::__construct($message, $parent);
41 41
         $this->_temporary = $temporary;
Please login to merge, or discard this patch.
library/tiqr/Tiqr/Message/FCM.php 2 patches
Indentation   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -97,9 +97,9 @@
 block discarded – undo
97 97
 
98 98
         // Wait and retry once in case of a 502 Bad Gateway error
99 99
         if ($statusCode === 502 && !($retry)) {
100
-          sleep(2);
101
-          $this->_sendFirebase($deviceToken, $alert, $challenge, $apiKey, true);
102
-          return;
100
+            sleep(2);
101
+            $this->_sendFirebase($deviceToken, $alert, $challenge, $apiKey, true);
102
+            return;
103 103
         }
104 104
 
105 105
         if ($statusCode !== 200) {
Please login to merge, or discard this patch.
Spacing   +5 added lines, -5 removed lines patch added patch discarded remove patch
@@ -57,7 +57,7 @@  discard block
 block discarded – undo
57 57
      *
58 58
      * @throws Tiqr_Message_Exception_SendFailure
59 59
      */
60
-    private function _sendFirebase($deviceToken, $alert, $challenge, $apiKey, $retry=false)
60
+    private function _sendFirebase($deviceToken, $alert, $challenge, $apiKey, $retry = false)
61 61
     {
62 62
         $msg = array(
63 63
             'challenge' => $challenge,
@@ -71,7 +71,7 @@  discard block
 block discarded – undo
71 71
         );
72 72
 
73 73
         $headers = array(
74
-            'Authorization: key=' . $apiKey,
74
+            'Authorization: key='.$apiKey,
75 75
             'Content-Type: application/json',
76 76
         );
77 77
 
@@ -84,7 +84,7 @@  discard block
 block discarded – undo
84 84
         $result = curl_exec($ch);
85 85
         $errors = curl_error($ch);
86 86
         $statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
87
-        $remoteip = curl_getinfo($ch,CURLINFO_PRIMARY_IP);
87
+        $remoteip = curl_getinfo($ch, CURLINFO_PRIMARY_IP);
88 88
         curl_close($ch);
89 89
 
90 90
         if ($result === false) {
@@ -92,7 +92,7 @@  discard block
 block discarded – undo
92 92
         }
93 93
 
94 94
         if (!empty($errors)) {
95
-            throw new Tiqr_Message_Exception_SendFailure("Http error occurred: ". $errors, true);
95
+            throw new Tiqr_Message_Exception_SendFailure("Http error occurred: ".$errors, true);
96 96
         }
97 97
 
98 98
         // Wait and retry once in case of a 502 Bad Gateway error
@@ -110,7 +110,7 @@  discard block
 block discarded – undo
110 110
         $response = json_decode($result, true);
111 111
         foreach ($response['results'] as $k => $v) {
112 112
             if (isset($v['error'])) {
113
-                throw new Tiqr_Message_Exception_SendFailure("Error in GCM response: " . $v['error'], true);
113
+                throw new Tiqr_Message_Exception_SendFailure("Error in GCM response: ".$v['error'], true);
114 114
             }
115 115
         }
116 116
     }
Please login to merge, or discard this patch.