/** * Returns the original string if the signature is valid or FALSE if not. * * @access public * @param string $string The string you want to validate * @return string|boolean */ public function validate($string) { $validated = substr($string, static::MAC_LENGTH); if (Comparer::compare($this->getSignature($validated), substr($string, 0, static::MAC_LENGTH))) { return $validated; } return false; }
/** * */ public function testCompare() { $this->assertTrue(Comparer::compare('foo', 'foo')); $this->assertTrue(Comparer::compare('', '')); $this->assertTrue(Comparer::compare(123, 123)); $this->assertTrue(Comparer::compare(123, '123')); $this->assertTrue(Comparer::compare(null, null)); $this->assertTrue(Comparer::compare(null, '')); $this->assertFalse(Comparer::compare('foo', 'bar')); $this->assertFalse(Comparer::compare('foo', '')); $this->assertFalse(Comparer::compare('', 'foo')); $this->assertFalse(Comparer::compare('foo', 'fooo')); $this->assertFalse(Comparer::compare('fooo', 'foo')); }
/** * Validates security token. * * @access public * @param string $token Security token * @return boolean */ public function validateOneTimeToken($token) { if (!$this->started) { throw new LogicException(vsprintf("%s(): The session has not been started yet.", [__METHOD__])); } if (!empty($this->sessionData['mako.tokens'])) { foreach ($this->sessionData['mako.tokens'] as $key => $value) { if (Comparer::compare($value, $token)) { unset($this->sessionData['mako.tokens'][$key]); return true; } } } return false; }