diff --git a/include/duckhandy/tiger_bt.hpp b/include/duckhandy/tiger_bt.hpp index f3e8a0e..6a6ea48 100644 --- a/include/duckhandy/tiger_bt.hpp +++ b/include/duckhandy/tiger_bt.hpp @@ -1,30 +1,28 @@ -/* Copyright 2015, Michele Santullo - * This file is part of DoorKeeper. +/* Copyright 2016-2021, Michele Santullo + * This file is part of "duckhandy". * - * DoorKeeper is free software: you can redistribute it and/or modify + * "duckhandy" is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * - * DoorKeeper is distributed in the hope that it will be useful, + * "duckhandy" is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with DoorKeeper. If not, see . + * along with "duckhandy". If not, see . */ #ifndef id1E6CCE44307549A9B6C9E4E5923AC002 #define id1E6CCE44307549A9B6C9E4E5923AC002 -//#include "doorkeeper/helpers/hashing.hpp" -//#include "doorkeeper/implem/compatibility.h" #include #include #include -namespace dk { +namespace dhandy::bt { struct HashType { constexpr HashType ( uint64_t parA, uint64_t parB, uint64_t parC ) : a(parA), b(parB), c(parC) @@ -50,9 +48,12 @@ namespace dk { uint64_t c; }; + inline const constexpr char TigerPaddingV1 = 0x01; + inline const constexpr char TigerPaddingV2 = 0x80; + [[gnu::const]] constexpr HashType tiger ( const char* parStr, uint64_t parLen, char parPad ); -} //namespace dk +} //namespace dhandy::bt #include "tiger_bt.inl" diff --git a/include/duckhandy/tiger_bt.inl b/include/duckhandy/tiger_bt.inl index 80ad908..e2cf32b 100644 --- a/include/duckhandy/tiger_bt.inl +++ b/include/duckhandy/tiger_bt.inl @@ -1,18 +1,18 @@ -/* Copyright 2015, Michele Santullo - * This file is part of DoorKeeper. +/* Copyright 2016-2021, Michele Santullo + * This file is part of "duckhandy". * - * DoorKeeper is free software: you can redistribute it and/or modify + * "duckhandy" is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * - * DoorKeeper is distributed in the hope that it will be useful, + * "duckhandy" is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with DoorKeeper. If not, see . + * along with "duckhandy". If not, see . */ #ifndef lengthof @@ -20,7 +20,7 @@ # define UNDEF_lengthof #endif -namespace dk { +namespace dhandy::bt { namespace implem { constexpr const uint64_t table[4*256] = {0x02AAB17CF7E90C5EULL, 0xAC424B03E243A8ECULL, 0x72CD5BE30DD5FCD3ULL, 0x6D019B93F6F97F3AULL, 0xCD9978FFD21F9193ULL, 0x7573A1C9708029E2ULL, @@ -490,7 +490,7 @@ namespace dk { parPad ); } -} //namespace dk +} //namespace dhandy::bt #if defined UNDEF_lengthof # undef lengthof diff --git a/test/unit/tiger_test.cpp b/test/unit/tiger_test.cpp index 9af7d89..dd695e7 100644 --- a/test/unit/tiger_test.cpp +++ b/test/unit/tiger_test.cpp @@ -19,35 +19,37 @@ #include "duckhandy/tiger_bt.hpp" TEST_CASE("Build-time Tiger hash tests", "[hash][bt][tiger]") { - using dk::tiger; - using dk::HashType; + using dhandy::bt::tiger; + using dhandy::bt::HashType; + using dhandy::bt::TigerPaddingV1; + using dhandy::bt::TigerPaddingV2; - constexpr HashType h1 = tiger("", 0, 0x80); //v2 + constexpr HashType h1 = tiger("", 0, TigerPaddingV2); CHECK(h1.a == 0x738701f675be4144); CHECK(h1.b == 0x924b374527c206c2); CHECK(h1.c == 0x419f91ef3f31a84a); - constexpr HashType h2 = tiger("", 0, 0x01); //v1 + constexpr HashType h2 = tiger("", 0, TigerPaddingV1); CHECK(h2.a == 0x24f0130c63ac9332); CHECK(h2.b == 0x16166e76b1bb925f); CHECK(h2.c == 0xf373de2d49584e7a); - constexpr HashType h3 = tiger("message digest", 14, 0x80); //v2 + constexpr HashType h3 = tiger("message digest", 14, TigerPaddingV2); CHECK(h3.a == 0x9d25fab5a11994e2); CHECK(h3.b == 0xea7850e77d5e00e8); CHECK(h3.c == 0x2d465225ef42a581); - constexpr HashType h4 = tiger("message digest", 14, 0x01); //v1 + constexpr HashType h4 = tiger("message digest", 14, TigerPaddingV1); CHECK(h4.a == 0x951a2078cbf881d9); CHECK(h4.b == 0x1c441e754830cf0d); CHECK(h4.c == 0xf6295aa51aca7f51); - constexpr HashType h5 = tiger("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", 62, 0x80); //v2 + constexpr HashType h5 = tiger("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", 62, TigerPaddingV2); CHECK(h5.a == 0x517bee8c22b69aea); CHECK(h5.b == 0x8c6c06a6fc4475b7); CHECK(h5.c == 0xcd059531e6ba5bbb); - constexpr HashType h6 = tiger("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", 62, 0x01); //v1 + constexpr HashType h6 = tiger("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", 62, TigerPaddingV1); CHECK(h6.a == 0xee8375a180a6ce8d); CHECK(h6.b == 0x5186363c8aa32b50); CHECK(h6.c == 0xcca849dcccfb0f89);