diff options
| author | skallweitNV <64953474+skallweitNV@users.noreply.github.com> | 2022-12-02 16:34:53 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-12-02 16:34:53 +0100 |
| commit | e9b7c66a541636e72659fbfcc9a3f20a85f2bee8 (patch) | |
| tree | b65942799ff6267ebe29c8b64056819461621be7 /tools/slang-unit-test | |
| parent | 92ae4949fe1af28ef31331fd4116c8111c057420 (diff) | |
Cleanup crypto utilities (#2549)
* Consolidate crypto functions into single module
* Migrate rest of code to new crypto module
* Fix name conflict
Diffstat (limited to 'tools/slang-unit-test')
| -rw-r--r-- | tools/slang-unit-test/unit-test-crypto.cpp | 173 | ||||
| -rw-r--r-- | tools/slang-unit-test/unit-test-digest-builder.cpp | 72 | ||||
| -rw-r--r-- | tools/slang-unit-test/unit-test-digest-utils.cpp | 58 | ||||
| -rw-r--r-- | tools/slang-unit-test/unit-test-md5.cpp | 47 |
4 files changed, 173 insertions, 177 deletions
diff --git a/tools/slang-unit-test/unit-test-crypto.cpp b/tools/slang-unit-test/unit-test-crypto.cpp new file mode 100644 index 000000000..adb7b2218 --- /dev/null +++ b/tools/slang-unit-test/unit-test-crypto.cpp @@ -0,0 +1,173 @@ +// unit-test-sha1.cpp +#include "tools/unit-test/slang-unit-test.h" + +#include "../../source/core/slang-crypto.h" + +using namespace Slang; + +SLANG_UNIT_TEST(crypto) +{ + // HashDigest + { + using Digest = HashDigest<8>; + Digest empty; + SLANG_CHECK(empty.data[0] == 0 && empty.data[1] == 0); + SLANG_CHECK(empty.toString() == "0000000000000000"); + + Digest all = Digest("ffffffffffffffff"); + SLANG_CHECK(all.data[0] == 0xffffffff && all.data[1] == 0xffffffff); + SLANG_CHECK(all.toString() == "ffffffffffffffff"); + + SLANG_CHECK(empty == Digest("0000000000000000")); + SLANG_CHECK(all == Digest("ffffffffffffffff")); + SLANG_CHECK(empty != all); + + SLANG_CHECK(Digest("invalid") == empty); + SLANG_CHECK(Digest("X000000000000000") == empty); + SLANG_CHECK(Digest(" 000000000000000") == empty); + + SLANG_CHECK(Digest("0123456789abcdef").toString() == "0123456789abcdef"); + + Slang::ComPtr<ISlangBlob> blob = Digest("0123456789abcdef").toBlob(); + const uint8_t check[] = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }; + SLANG_CHECK(blob->getBufferSize() == 8); + SLANG_CHECK(::memcmp(blob->getBufferPointer(), check, 8) == 0); + + SLANG_CHECK(Digest(blob) == Digest("0123456789abcdef")); + } + + // MD5 + + // Empty string + { + MD5 sha1; + auto digest = sha1.finalize(); + SLANG_CHECK(digest.toString() == "d41d8cd98f00b204e9800998ecf8427e"); + } + + // One call to update() + { + MD5 sha1; + const String str("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."); + sha1.update(str.getBuffer(), str.getLength()); + auto digest = sha1.finalize(); + SLANG_CHECK(digest.toString() == "818c6e601a24f72750da0f6c9b8ebe28"); + } + + // Two calls to update() + { + MD5 sha1; + const String str1("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."); + const String str2("Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat."); + sha1.update(str1.getBuffer(), str1.getLength()); + sha1.update(str2.getBuffer(), str2.getLength()); + auto digest = sha1.finalize(); + SLANG_CHECK(digest.toString() == "87d3caecb0ab82faae84d60fde994aca"); + } + + // compute() + { + SLANG_CHECK(MD5::compute(nullptr, 0).toString() == "d41d8cd98f00b204e9800998ecf8427e"); + const String str("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."); + SLANG_CHECK(MD5::compute(str.getBuffer(), str.getLength()).toString() == "818c6e601a24f72750da0f6c9b8ebe28"); + } + + // SHA1 + + // Empty string + { + SHA1 sha1; + auto digest = sha1.finalize(); + SLANG_CHECK(digest.toString() == "da39a3ee5e6b4b0d3255bfef95601890afd80709"); + } + + // One call to update() + { + SHA1 sha1; + const String str("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."); + sha1.update(str.getBuffer(), str.getLength()); + auto digest = sha1.finalize(); + SLANG_CHECK(digest.toString() == "cca0871ecbe200379f0a1e4b46de177e2d62e655"); + } + + // Two calls to update() + { + SHA1 sha1; + const String str1("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."); + const String str2("Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat."); + sha1.update(str1.getBuffer(), str1.getLength()); + sha1.update(str2.getBuffer(), str2.getLength()); + auto digest = sha1.finalize(); + SLANG_CHECK(digest.toString() == "7a8213edf9976d2e693f27bbc7dc41546bcfcc97"); + } + + // compute() + { + SLANG_CHECK(SHA1::compute(nullptr, 0).toString() == "da39a3ee5e6b4b0d3255bfef95601890afd80709"); + const String str("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."); + SLANG_CHECK(SHA1::compute(str.getBuffer(), str.getLength()).toString() == "cca0871ecbe200379f0a1e4b46de177e2d62e655"); + } + + // DigestBuider + + // Raw numerical values, etc. + { + DigestBuilder<MD5> builder; + + int64_t valueA = -1; + uint64_t valueB = 1; + builder.append(valueA); + builder.append(valueB); + + auto digest = builder.finalize(); + SLANG_CHECK(digest.toString() == "5ba171e20898bdd205639013746f2679"); + } + + // List + { + DigestBuilder<MD5> builder; + + List<int64_t> listA; + listA.add(1); + listA.add(2); + listA.add(3); + listA.add(4); + builder.append(listA); + + auto digest = builder.finalize(); + SLANG_CHECK(digest.toString() == "9f66c130786a1a05e4731f71a3c5f172"); + } + + // UnownedStringSlice + { + DigestBuilder<MD5> builder; + + UnownedStringSlice stringSlice = UnownedStringSlice("String Slice Test"); + builder.append(stringSlice); + + auto digest = builder.finalize(); + SLANG_CHECK(digest.toString() == "5d6cc58e1824a4dfd0cf57395b603316"); + } + + // String + { + DigestBuilder<MD5> builder; + + String str = String("String Test"); + builder.append(str); + + auto digest = builder.finalize(); + SLANG_CHECK(digest.toString() == "df5a79cc2170c7401cf0a506ceb0ce24"); + } + + // Digest + { + DigestBuilder<MD5> builder; + + MD5::Digest hash; + builder.append(hash); + + auto digest = builder.finalize(); + SLANG_CHECK(digest.toString() == "4ae71336e44bf9bf79d2752e234818a5"); + } +} diff --git a/tools/slang-unit-test/unit-test-digest-builder.cpp b/tools/slang-unit-test/unit-test-digest-builder.cpp deleted file mode 100644 index b89b31a7b..000000000 --- a/tools/slang-unit-test/unit-test-digest-builder.cpp +++ /dev/null @@ -1,72 +0,0 @@ -// unit-test-digest-utils.cpp - -#include "tools/unit-test/slang-unit-test.h" - -#include "../../source/core/slang-digest-builder.h" -#include "../../source/core/slang-digest-util.h" - -using namespace Slang; - -SLANG_UNIT_TEST(digestBuilder) -{ - // Raw numerical values, etc. - { - DigestBuilder builder; - - int64_t valueA = -1; - uint64_t valueB = 1; - builder.append(valueA); - builder.append(valueB); - - slang::Digest digest = builder.finalize(); - SLANG_CHECK(DigestUtil::toString(digest) == "5BA171E20898BDD205639013746F2679"); - } - - // List - { - DigestBuilder builder; - - List<int64_t> listA; - listA.add(1); - listA.add(2); - listA.add(3); - listA.add(4); - builder.append(listA); - - slang::Digest digest = builder.finalize(); - SLANG_CHECK(DigestUtil::toString(digest) == "9F66C130786A1A05E4731F71A3C5F172"); - } - - // UnownedStringSlice - { - DigestBuilder builder; - - UnownedStringSlice stringSlice = UnownedStringSlice("String Slice Test"); - builder.append(stringSlice); - - slang::Digest digest = builder.finalize(); - SLANG_CHECK(DigestUtil::toString(digest) == "5D6CC58E1824A4DFD0CF57395B603316"); - } - - // String - { - DigestBuilder builder; - - String str = String("String Test"); - builder.append(str); - - slang::Digest digest = builder.finalize(); - SLANG_CHECK(DigestUtil::toString(digest) == "DF5A79CC2170C7401CF0A506CEB0CE24"); - } - - // Digest - { - DigestBuilder builder; - - slang::Digest hash; - builder.append(hash); - - slang::Digest digest = builder.finalize(); - SLANG_CHECK(DigestUtil::toString(digest) == "4AE71336E44BF9BF79D2752E234818A5"); - } -} diff --git a/tools/slang-unit-test/unit-test-digest-utils.cpp b/tools/slang-unit-test/unit-test-digest-utils.cpp deleted file mode 100644 index a463fe07f..000000000 --- a/tools/slang-unit-test/unit-test-digest-utils.cpp +++ /dev/null @@ -1,58 +0,0 @@ -// unit-test-digest-utils.cpp - -#include "tools/unit-test/slang-unit-test.h" - -#include "../../source/core/slang-digest-util.h" - -using namespace Slang; - -SLANG_UNIT_TEST(digestUtils) -{ - { - slang::Digest testA; - testA.values[0] = 1; - testA.values[1] = 2; - testA.values[2] = 3; - testA.values[3] = 4; - - String testAString = DigestUtil::toString(testA); - SLANG_CHECK(testAString.equals(String("01000000020000000300000004000000"))); - } - - { - slang::Digest testC; - testC.values[0] = 0x11111111; - testC.values[1] = 0x22222222; - testC.values[2] = 0x33333333; - testC.values[3] = 0x44444444; - - String testCString = DigestUtil::toString(testC); - SLANG_CHECK(testCString.equals(String("11111111222222223333333344444444"))); - } - - { - auto digestString = UnownedStringSlice("5D6CC58E1824A4DFD0CF57395B603316"); - slang::Digest digest = DigestUtil::fromString(digestString); - auto resultString = DigestUtil::toString(digest); - SLANG_CHECK(resultString == digestString); - } - - { - auto digestString = UnownedStringSlice("01000000020000000300000004000000"); - slang::Digest digest = DigestUtil::fromString(digestString); - auto resultString = DigestUtil::toString(digest); - SLANG_CHECK(resultString == digestString); - } - - { - slang::Digest testD; - testD.values[0] = 1; - testD.values[1] = 2; - testD.values[2] = 3; - testD.values[3] = 4; - - StringBuilder testDSb; - testDSb << testD; - SLANG_CHECK(testDSb.equals(String("01000000020000000300000004000000"))); - } -} diff --git a/tools/slang-unit-test/unit-test-md5.cpp b/tools/slang-unit-test/unit-test-md5.cpp deleted file mode 100644 index 1297d4f17..000000000 --- a/tools/slang-unit-test/unit-test-md5.cpp +++ /dev/null @@ -1,47 +0,0 @@ -// unit-test-md5.cpp -#include "tools/unit-test/slang-unit-test.h" - -#include "../../source/core/slang-md5.h" -#include "../../source/core/slang-string.h" -#include "../../source/core/slang-digest-util.h" - -using namespace Slang; - -SLANG_UNIT_TEST(md5hash) -{ - // Empty string - { - MD5Context ctx; - MD5HashGen gen; - gen.init(&ctx); - slang::Digest digest; - gen.finalize(&ctx, &digest); - SLANG_CHECK(DigestUtil::toString(digest) == "D41D8CD98F00B204E9800998ECF8427E"); - } - - // One call to update() - { - MD5Context ctx; - MD5HashGen gen; - gen.init(&ctx); - const String str("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."); - gen.update(&ctx, str.getBuffer(), str.getLength()); - slang::Digest digest; - gen.finalize(&ctx, &digest); - SLANG_CHECK(DigestUtil::toString(digest) == "818C6E601A24F72750DA0F6C9B8EBE28"); - } - - // Two calls to update() - { - MD5Context ctx; - MD5HashGen gen; - gen.init(&ctx); - const String str1("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."); - const String str2("Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat."); - gen.update(&ctx, str1.getBuffer(), str1.getLength()); - gen.update(&ctx, str2.getBuffer(), str2.getLength()); - slang::Digest digest; - gen.finalize(&ctx, &digest); - SLANG_CHECK(DigestUtil::toString(digest) == "87D3CAECB0AB82FAAE84D60FDE994ACA"); - } -} |
