summaryrefslogtreecommitdiff
path: root/www/wiki/tests/phpunit/includes/utils/MWCryptHashTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/tests/phpunit/includes/utils/MWCryptHashTest.php')
-rw-r--r--www/wiki/tests/phpunit/includes/utils/MWCryptHashTest.php64
1 files changed, 64 insertions, 0 deletions
diff --git a/www/wiki/tests/phpunit/includes/utils/MWCryptHashTest.php b/www/wiki/tests/phpunit/includes/utils/MWCryptHashTest.php
new file mode 100644
index 00000000..94705bff
--- /dev/null
+++ b/www/wiki/tests/phpunit/includes/utils/MWCryptHashTest.php
@@ -0,0 +1,64 @@
+<?php
+
+/**
+ * @group Hash
+ *
+ * @covers MWCryptHash
+ */
+class MWCryptHashTest extends PHPUnit\Framework\TestCase {
+
+ use MediaWikiCoversValidator;
+
+ public function testHashLength() {
+ if ( MWCryptHash::hashAlgo() !== 'whirlpool' ) {
+ $this->markTestSkipped( 'Hash algorithm isn\'t whirlpool' );
+ }
+
+ $this->assertEquals( 64, MWCryptHash::hashLength(), 'Raw hash length' );
+ $this->assertEquals( 128, MWCryptHash::hashLength( false ), 'Hex hash length' );
+ }
+
+ public function testHash() {
+ if ( MWCryptHash::hashAlgo() !== 'whirlpool' ) {
+ $this->markTestSkipped( 'Hash algorithm isn\'t whirlpool' );
+ }
+
+ $data = 'foobar';
+ // phpcs:ignore Generic.Files.LineLength
+ $hash = '9923afaec3a86f865bb231a588f453f84e8151a2deb4109aebc6de4284be5bebcff4fab82a7e51d920237340a043736e9d13bab196006dcca0fe65314d68eab9';
+
+ $this->assertEquals(
+ hex2bin( $hash ),
+ MWCryptHash::hash( $data ),
+ 'Raw hash'
+ );
+ $this->assertEquals(
+ $hash,
+ MWCryptHash::hash( $data, false ),
+ 'Hex hash'
+ );
+ }
+
+ public function testHmac() {
+ if ( MWCryptHash::hashAlgo() !== 'whirlpool' ) {
+ $this->markTestSkipped( 'Hash algorithm isn\'t whirlpool' );
+ }
+
+ $data = 'foobar';
+ $key = 'secret';
+ // phpcs:ignore Generic.Files.LineLength
+ $hash = 'ddc94177b2020e55ce2049199fd9cc6327f416ff6dc621cc34cb43d9bec61d73372b4790c0e24957f565ecaf2d42821e6303619093e99cbe14a3b9250bda5f81';
+
+ $this->assertEquals(
+ hex2bin( $hash ),
+ MWCryptHash::hmac( $data, $key ),
+ 'Raw hmac'
+ );
+ $this->assertEquals(
+ $hash,
+ MWCryptHash::hmac( $data, $key, false ),
+ 'Hex hmac'
+ );
+ }
+
+}