Skip to content

Commit 73b8475

Browse files
committed
Refactoring
1 parent 59b10a7 commit 73b8475

File tree

7 files changed

+269
-43
lines changed

7 files changed

+269
-43
lines changed

Base/HlpHashFactory.h

Lines changed: 106 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,8 @@
6060
#include "../Hash128/HlpMurmurHash3_x86_128.h"
6161
#include "../Hash128/HlpMurmurHash3_x64_128.h"
6262
// Crypto Units
63+
#include "../Crypto/HlpBlake2B.h"
64+
#include "../Crypto/HlpBlake2S.h"
6365
#include "../Crypto/HlpTiger.h"
6466
#include "../Crypto/HlpTiger2.h"
6567
#include "../Crypto/HlpMD2.h"
@@ -82,6 +84,7 @@
8284
#include "../Crypto/HlpSnefru.h"
8385
#include "../Crypto/HlpHaval.h"
8486
#include "../Crypto/HlpGost.h"
87+
#include "../Crypto/HlpGOST3411_2012.h"
8588
#include "../Crypto/HlpHAS160.h"
8689
#include "../Crypto/HlpRIPEMD.h"
8790
#include "../Crypto/HlpRIPEMD128.h"
@@ -93,6 +96,8 @@
9396
#include "HlpHMACNotBuildInAdapter.h"
9497
// PBKDF2_HMAC Unit
9598
#include "../KDF/HlpPBKDF2_HMACNotBuildInAdapter.h"
99+
// NullDigest
100+
#include "../NullDigest/HlpNullDigest.h"
96101

97102

98103
namespace HashFactory
@@ -711,6 +716,16 @@ namespace HashFactory
711716
return make_shared<Gost>();
712717
} // end function CreateGost
713718

719+
static IHash CreateGOST3411_2012_256()
720+
{
721+
return make_shared<GOST3411_2012_256>();
722+
} // end function CreateGOST3411_2012_256
723+
724+
static IHash CreateGOST3411_2012_512()
725+
{
726+
return make_shared<GOST3411_2012_512>();
727+
} // end function CreateGOST3411_2012_512
728+
714729
static IHash CreateHAS160()
715730
{
716731
return make_shared<HAS160>();
@@ -761,6 +776,86 @@ namespace HashFactory
761776
return make_shared<SHA3_512>();
762777
} // end function CreateSHA3_512
763778

779+
static IHash CreateKeccak_224()
780+
{
781+
return make_shared<Keccak_224>();
782+
} // end function CreateKeccak_224
783+
784+
static IHash CreateKeccak_256()
785+
{
786+
return make_shared<Keccak_256>();
787+
} // end function CreateKeccak_256
788+
789+
static IHash CreateKeccak_384()
790+
{
791+
return make_shared<Keccak_384>();
792+
} // end function CreateKeccak_384
793+
794+
static IHash CreateKeccak_512()
795+
{
796+
return make_shared<Keccak_512>();
797+
} // end function CreateKeccak_512
798+
799+
static IHash CreateBlake2B(const IBlake2BConfig config = nullptr)
800+
{
801+
if (config == nullptr) return make_shared<Blake2B>();
802+
return make_shared<Blake2B>(config);
803+
}
804+
805+
static IHash CreateBlake2B_160()
806+
{
807+
IBlake2BConfig config = make_shared<Blake2BConfig>(HashSize::HashSize160);
808+
return HashFactory::Crypto::CreateBlake2B(config);
809+
}
810+
811+
static IHash CreateBlake2B_256()
812+
{
813+
IBlake2BConfig config = make_shared<Blake2BConfig>(HashSize::HashSize256);
814+
return HashFactory::Crypto::CreateBlake2B(config);
815+
}
816+
817+
static IHash CreateBlake2B_384()
818+
{
819+
IBlake2BConfig config = make_shared<Blake2BConfig>(HashSize::HashSize384);
820+
return HashFactory::Crypto::CreateBlake2B(config);
821+
}
822+
823+
static IHash CreateBlake2B_512()
824+
{
825+
IBlake2BConfig config = make_shared<Blake2BConfig>(HashSize::HashSize512);
826+
return HashFactory::Crypto::CreateBlake2B(config);
827+
}
828+
829+
static IHash CreateBlake2S(const IBlake2SConfig config = nullptr)
830+
{
831+
if (config == nullptr) return make_shared<Blake2S>();
832+
return make_shared<Blake2S>(config);
833+
}
834+
835+
static IHash CreateBlake2S_128()
836+
{
837+
IBlake2SConfig config = make_shared<Blake2SConfig>(HashSize::HashSize128);
838+
return HashFactory::Crypto::CreateBlake2S(config);
839+
}
840+
841+
static IHash CreateBlake2S_160()
842+
{
843+
IBlake2SConfig config = make_shared<Blake2SConfig>(HashSize::HashSize160);
844+
return HashFactory::Crypto::CreateBlake2S(config);
845+
}
846+
847+
static IHash CreateBlake2S_224()
848+
{
849+
IBlake2SConfig config = make_shared<Blake2SConfig>(HashSize::HashSize224);
850+
return HashFactory::Crypto::CreateBlake2S(config);
851+
}
852+
853+
static IHash CreateBlake2S_256()
854+
{
855+
IBlake2SConfig config = make_shared<Blake2SConfig>(HashSize::HashSize256);
856+
return HashFactory::Crypto::CreateBlake2S(config);
857+
}
858+
764859
} // end namespace Crypto
765860

766861
// ====================== HMAC ======================
@@ -772,7 +867,7 @@ namespace HashFactory
772867
} // end function CreateHMAC
773868
} // end namespace HMAC
774869

775-
// ====================== PBKDF2_HMAC ======================
870+
// ====================== PBKDF2_HMAC ======================
776871
namespace PBKDF2_HMAC
777872
{
778873
/// <summary>
@@ -803,6 +898,16 @@ namespace HashFactory
803898
} // end function CreatePBKDF2_HMAC
804899
} // end namespace PBKDF2_HMAC
805900

901+
// ====================== NullDigest ======================
902+
namespace NullDigestFactory
903+
{
904+
IHash CreateNullDigest()
905+
{
906+
return make_shared<NullDigest>();
907+
}
908+
909+
}
910+
806911
} // end namespace HashFactory
807912

808913

Base/HlpMultipleTransformNonBlock.h

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -25,21 +25,19 @@ class MultipleTransformNonBlock : public Hash, public IINonBlockHash
2525
public:
2626
MultipleTransformNonBlock(const int32_t a_hash_size, const int32_t a_block_size)
2727
: Hash(a_hash_size, a_block_size)
28-
{
29-
_list = make_shared<vector<HashLibByteArray>>();
30-
} // end constructor
28+
{} // end constructor
3129

3230
~MultipleTransformNonBlock()
3331
{} // end destructor
3432

3533
virtual void Initialize()
3634
{
37-
_list->clear();
35+
_list.clear();
3836
} // end fucntion Initialize
3937

4038
virtual void TransformBytes(const HashLibByteArray &a_data, int32_t a_index, int32_t a_length)
4139
{
42-
_list->push_back(a_data);
40+
_list.push_back(a_data);
4341
} // end function TransformBytes
4442

4543
virtual IHashResult TransformFinal()
@@ -66,24 +64,24 @@ class MultipleTransformNonBlock : public Hash, public IINonBlockHash
6664
{
6765
register uint32_t sum = 0, index = 0;
6866

69-
for (register uint32_t i = 0; i < _list->size(); i++)
67+
for (register uint32_t i = 0; i < _list.size(); i++)
7068
{
71-
sum = sum + (uint32_t)(*_list)[i].size();
69+
sum = sum + (uint32_t)(_list)[i].size();
7270
} // end for
7371

7472
HashLibByteArray result = HashLibByteArray(sum);
7573

76-
for (register uint32_t i = 0; i < _list->size(); i++)
74+
for (register uint32_t i = 0; i < _list.size(); i++)
7775
{
78-
memmove(&result[index], &(*_list)[i][0], (*_list)[i].size() * sizeof(uint8_t));
79-
index = index + (uint32_t)(*_list)[i].size();
76+
memmove(&result[index], &(_list)[i][0], (_list)[i].size() * sizeof(uint8_t));
77+
index = index + (uint32_t)(_list)[i].size();
8078
} // end for
8179

8280
return result;
8381
} // end function Aggregate
8482

85-
private:
86-
shared_ptr<vector<HashLibByteArray>> _list;
83+
protected:
84+
HashLibMatrixByteArray _list;
8785

8886
}; // end class MultipleTransformNonBlock
8987

HashFactoryApp.cpp

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,18 @@
1+
// ///////////////////////////////////////////////////////////////// //
2+
// *C++ 11 HashFactory Library
3+
// *Copyright(c) 2018 Mbadiwe Nnaemeka Ronald
4+
// *Github Repository <https://github.com/ron4fun>
5+
6+
// *Distributed under the MIT software license, see the accompanying file LICENSE
7+
// *or visit http ://www.opensource.org/licenses/mit-license.php.
8+
9+
// *Acknowledgements:
10+
// ** //
11+
// *Thanks to Ugochukwu Mmaduekwe (https://github.com/Xor-el) for his creative
12+
// *development of this library in Pascal/Delphi
13+
14+
// ////////////////////////////////////////////////////// ///////////////
15+
116

217
#if defined(_MSC_VER)
318
//disble vector assert for nullstring converted to byte array
@@ -7,12 +22,10 @@
722
#include <stdio.h>
823
#include <tchar.h>
924

10-
using namespace std;
11-
1225
#include "CryptoTests.h"
1326
#include "ChecksumTests.h"
1427
#include "Hash32Tests.h"
1528
#include "Hash64Tests.h"
1629
#include "Hash128Tests.h"
1730
#include "PBKDF2_HMACTests.h"
18-
31+
#include "NullDigestTest.h"

HashFactoryApp.vcxproj

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,16 @@
169169
<ClInclude Include="Checksum\HlpCRC16.h" />
170170
<ClInclude Include="Checksum\HlpCRC32.h" />
171171
<ClInclude Include="Checksum\HlpCRC64.h" />
172+
<ClInclude Include="Crypto\Blake2BConfigurations\HlpBlake2BConfig.h" />
173+
<ClInclude Include="Crypto\Blake2BConfigurations\HlpBlake2BIvBuilder.h" />
174+
<ClInclude Include="Crypto\Blake2BConfigurations\HlpBlake2BTreeConfig.h" />
175+
<ClInclude Include="Crypto\Blake2SConfigurations\HlpBlake2SConfig.h" />
176+
<ClInclude Include="Crypto\Blake2SConfigurations\HlpBlake2SIvBuilder.h" />
177+
<ClInclude Include="Crypto\Blake2SConfigurations\HlpBlake2STreeConfig.h" />
178+
<ClInclude Include="Crypto\HlpBlake2B.h" />
179+
<ClInclude Include="Crypto\HlpBlake2S.h" />
172180
<ClInclude Include="Crypto\HlpGost.h" />
181+
<ClInclude Include="Crypto\HlpGOST3411_2012.h" />
173182
<ClInclude Include="Crypto\HlpGrindahl256.h" />
174183
<ClInclude Include="Crypto\HlpGrindahl512.h" />
175184
<ClInclude Include="Crypto\HlpHAS160.h" />
@@ -234,18 +243,27 @@
234243
<ClInclude Include="Interfaces\HlpIHashInfo.h" />
235244
<ClInclude Include="Interfaces\HlpIHashResult.h" />
236245
<ClInclude Include="Interfaces\HlpIKDF.h" />
246+
<ClInclude Include="Interfaces\IBlake2BConfigurations\HlpIBlake2BConfig.h" />
247+
<ClInclude Include="Interfaces\IBlake2BConfigurations\HlpIBlake2BTreeConfig.h" />
248+
<ClInclude Include="Interfaces\IBlake2SConfigurations\HlpIBlake2SConfig.h" />
249+
<ClInclude Include="Interfaces\IBlake2SConfigurations\HlpIBlake2STreeConfig.h" />
237250
<ClInclude Include="KDF\HlpPBKDF2_HMACNotBuildInAdapter.h" />
238251
<ClInclude Include="Nullable\HlpNullable.h" />
252+
<ClInclude Include="NullDigest\HlpNullDigest.h" />
253+
<ClInclude Include="Tests\Blake2BTestVectors.h" />
254+
<ClInclude Include="Tests\Blake2STestVectors.h" />
239255
<ClInclude Include="Tests\ChecksumTests.h" />
240256
<ClInclude Include="Tests\CryptoTests.h" />
241257
<ClInclude Include="Tests\Hash128Tests.h" />
242258
<ClInclude Include="Tests\Hash32Tests.h" />
243259
<ClInclude Include="Tests\Hash64Tests.h" />
260+
<ClInclude Include="Tests\NullDigestTest.h" />
244261
<ClInclude Include="Tests\PBKDF2_HMACTests.h" />
245262
<ClInclude Include="Tests\TestConstants.h" />
246263
<ClInclude Include="Utils\HlpBitConverter.h" />
247264
<ClInclude Include="Utils\HlpBits.h" />
248265
<ClInclude Include="Utils\HlpHashLibTypes.h" />
266+
<ClInclude Include="Utils\HlpUtils.h" />
249267
</ItemGroup>
250268
<ItemGroup>
251269
<ClCompile Include="HashFactoryApp.cpp" />

HashFactoryApp.vcxproj.filters

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,21 @@
3838
<Filter Include="Hash128">
3939
<UniqueIdentifier>{693be6f2-3997-44ea-ad15-72c689bb5b1e}</UniqueIdentifier>
4040
</Filter>
41+
<Filter Include="Interfaces\IBlake2SConfigurations">
42+
<UniqueIdentifier>{9a5e9ee2-8e90-48dd-a977-b6423760baf5}</UniqueIdentifier>
43+
</Filter>
44+
<Filter Include="Interfaces\IBlake2BConfigurations">
45+
<UniqueIdentifier>{f01553b4-c283-4780-ae2e-05e0bf66bd6d}</UniqueIdentifier>
46+
</Filter>
47+
<Filter Include="Crypto\Blake2SConfigurations">
48+
<UniqueIdentifier>{e95cdf6e-481b-416b-babd-ea6b4ca0ebec}</UniqueIdentifier>
49+
</Filter>
50+
<Filter Include="Crypto\Blake2BConfigurations">
51+
<UniqueIdentifier>{c5df94f2-c9a9-4061-957b-ac9ff73e0942}</UniqueIdentifier>
52+
</Filter>
53+
<Filter Include="NullDigest">
54+
<UniqueIdentifier>{a0d98111-8dd9-4ad3-bb9d-180f2f337ce8}</UniqueIdentifier>
55+
</Filter>
4156
</ItemGroup>
4257
<ItemGroup>
4358
<ClInclude Include="Utils\HlpHashLibTypes.h">
@@ -319,6 +334,60 @@
319334
<ClInclude Include="Tests\PBKDF2_HMACTests.h">
320335
<Filter>Tests</Filter>
321336
</ClInclude>
337+
<ClInclude Include="Utils\HlpUtils.h">
338+
<Filter>Utils</Filter>
339+
</ClInclude>
340+
<ClInclude Include="Crypto\HlpGOST3411_2012.h">
341+
<Filter>Crypto</Filter>
342+
</ClInclude>
343+
<ClInclude Include="Interfaces\IBlake2SConfigurations\HlpIBlake2STreeConfig.h">
344+
<Filter>Interfaces\IBlake2BConfigurations</Filter>
345+
</ClInclude>
346+
<ClInclude Include="Interfaces\IBlake2SConfigurations\HlpIBlake2SConfig.h">
347+
<Filter>Interfaces\IBlake2BConfigurations</Filter>
348+
</ClInclude>
349+
<ClInclude Include="Crypto\Blake2SConfigurations\HlpBlake2SConfig.h">
350+
<Filter>Crypto\Blake2SConfigurations</Filter>
351+
</ClInclude>
352+
<ClInclude Include="Crypto\Blake2SConfigurations\HlpBlake2STreeConfig.h">
353+
<Filter>Crypto\Blake2SConfigurations</Filter>
354+
</ClInclude>
355+
<ClInclude Include="Crypto\Blake2SConfigurations\HlpBlake2SIvBuilder.h">
356+
<Filter>Crypto\Blake2SConfigurations</Filter>
357+
</ClInclude>
358+
<ClInclude Include="Crypto\HlpBlake2S.h">
359+
<Filter>Crypto</Filter>
360+
</ClInclude>
361+
<ClInclude Include="Interfaces\IBlake2BConfigurations\HlpIBlake2BConfig.h">
362+
<Filter>Interfaces\IBlake2SConfigurations</Filter>
363+
</ClInclude>
364+
<ClInclude Include="Interfaces\IBlake2BConfigurations\HlpIBlake2BTreeConfig.h">
365+
<Filter>Interfaces\IBlake2SConfigurations</Filter>
366+
</ClInclude>
367+
<ClInclude Include="Crypto\Blake2BConfigurations\HlpBlake2BConfig.h">
368+
<Filter>Crypto\Blake2BConfigurations</Filter>
369+
</ClInclude>
370+
<ClInclude Include="Crypto\Blake2BConfigurations\HlpBlake2BTreeConfig.h">
371+
<Filter>Crypto\Blake2BConfigurations</Filter>
372+
</ClInclude>
373+
<ClInclude Include="Crypto\Blake2BConfigurations\HlpBlake2BIvBuilder.h">
374+
<Filter>Crypto\Blake2BConfigurations</Filter>
375+
</ClInclude>
376+
<ClInclude Include="Crypto\HlpBlake2B.h">
377+
<Filter>Crypto</Filter>
378+
</ClInclude>
379+
<ClInclude Include="Tests\Blake2STestVectors.h">
380+
<Filter>Tests</Filter>
381+
</ClInclude>
382+
<ClInclude Include="Tests\Blake2BTestVectors.h">
383+
<Filter>Tests</Filter>
384+
</ClInclude>
385+
<ClInclude Include="NullDigest\HlpNullDigest.h">
386+
<Filter>NullDigest</Filter>
387+
</ClInclude>
388+
<ClInclude Include="Tests\NullDigestTest.h">
389+
<Filter>Tests</Filter>
390+
</ClInclude>
322391
</ItemGroup>
323392
<ItemGroup>
324393
<ClCompile Include="HashFactoryApp.cpp">

0 commit comments

Comments
 (0)