From 051546b7d34a95c06b7dff36c54fc4acff2d7f45 Mon Sep 17 00:00:00 2001 From: Gunnar Wrobel
Date: Tue, 30 Nov 2010 06:32:09 +0100 Subject: [PATCH] Add function to generate signed tokens. --- framework/Token/lib/Horde/Token/Base.php | 15 +++++++++++++++ framework/Token/test/Horde/Token/Unit/FileTest.php | 6 ++++++ 2 files changed, 21 insertions(+) diff --git a/framework/Token/lib/Horde/Token/Base.php b/framework/Token/lib/Horde/Token/Base.php index e711cebda..aac281a38 100644 --- a/framework/Token/lib/Horde/Token/Base.php +++ b/framework/Token/lib/Horde/Token/Base.php @@ -104,6 +104,21 @@ abstract class Horde_Token_Base abstract public function purge(); /** + * Return a new signed token. + * + * @param string $seed A unique ID to be included in the token. + * + * @return string A string of 6 bytes. + */ + public function get($seed = '') + { + $nonce = $this->getNonce(); + return Horde_Url::uriB64Encode( + $nonce . hash('sha256', $nonce . $this->_params['secret'] . $seed, true) + ); + } + + /** * Return a "number used once" (a concatenation of a timestamp and a random * numer). * diff --git a/framework/Token/test/Horde/Token/Unit/FileTest.php b/framework/Token/test/Horde/Token/Unit/FileTest.php index e89888ebb..3e4ac81f1 100644 --- a/framework/Token/test/Horde/Token/Unit/FileTest.php +++ b/framework/Token/test/Horde/Token/Unit/FileTest.php @@ -39,6 +39,12 @@ class Horde_Token_Unit_Storage_FileTest extends PHPUnit_Framework_TestCase } } + public function testToken() + { + $t = new Horde_Token_File(array('secret' => 'abc')); + $this->assertEquals(51, strlen($t->get())); + } + public function testNonces() { $t = new Horde_Token_File(array('secret' => 'abc')); -- 2.11.0