tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

TestNetworkLinkIdHashingWindows.cpp (2461B)


      1 #include <combaseapi.h>
      2 
      3 #include "gtest/gtest.h"
      4 #include "mozilla/SHA1.h"
      5 #include "nsNotifyAddrListener.h"
      6 
      7 using namespace mozilla;
      8 
      9 GUID StringToGuid(const std::string& str) {
     10  GUID guid;
     11  sscanf(str.c_str(),
     12         "%8lx-%4hx-%4hx-%2hhx%2hhx-%2hhx%2hhx%2hhx%2hhx%2hhx%2hhx",
     13         &guid.Data1, &guid.Data2, &guid.Data3, &guid.Data4[0], &guid.Data4[1],
     14         &guid.Data4[2], &guid.Data4[3], &guid.Data4[4], &guid.Data4[5],
     15         &guid.Data4[6], &guid.Data4[7]);
     16 
     17  return guid;
     18 }
     19 
     20 TEST(TestGuidHashWindows, Single)
     21 {
     22  // Setup
     23  SHA1Sum expected_sha1;
     24  SHA1Sum::Hash expected_digest;
     25 
     26  GUID g1 = StringToGuid("264555b1-289c-4494-83d1-e158d1d95115");
     27 
     28  expected_sha1.update(&g1, sizeof(GUID));
     29  expected_sha1.finish(expected_digest);
     30 
     31  std::vector<GUID> nwGUIDS;
     32  nwGUIDS.push_back(g1);
     33  SHA1Sum actual_sha1;
     34  // Run
     35  nsNotifyAddrListener::HashSortedNetworkIds(nwGUIDS, actual_sha1);
     36  SHA1Sum::Hash actual_digest;
     37  actual_sha1.finish(actual_digest);
     38 
     39  // Assert
     40  ASSERT_EQ(0, memcmp(&expected_digest, &actual_digest, sizeof(SHA1Sum::Hash)));
     41 }
     42 
     43 TEST(TestNetworkLinkIdHashingWindows, Multiple)
     44 {
     45  // Setup
     46  SHA1Sum expected_sha1;
     47  SHA1Sum::Hash expected_digest;
     48 
     49  std::vector<GUID> nwGUIDS;
     50  nwGUIDS.push_back(StringToGuid("00000000-0000-0000-0000-000000000001"));
     51  nwGUIDS.push_back(StringToGuid("00000000-0000-0000-0000-000000000002"));
     52  nwGUIDS.push_back(StringToGuid("00000000-0000-0000-0000-000000000003"));
     53  nwGUIDS.push_back(StringToGuid("00000000-0000-0000-0000-000000000004"));
     54 
     55  for (const auto& guid : nwGUIDS) {
     56    expected_sha1.update(&guid, sizeof(GUID));
     57  }
     58  expected_sha1.finish(expected_digest);
     59 
     60  // Ordered
     61  std::vector<GUID> ordered;
     62  for (const auto& guid : nwGUIDS) {
     63    ordered.push_back(guid);
     64  }
     65  SHA1Sum ordered_sha1;
     66 
     67  // Unordered
     68  std::vector<GUID> reversed;
     69  for (auto it = nwGUIDS.rbegin(); it != nwGUIDS.rend(); ++it) {
     70    reversed.push_back(*it);
     71  }
     72  SHA1Sum reversed_sha1;
     73 
     74  // Run
     75  nsNotifyAddrListener::HashSortedNetworkIds(ordered, ordered_sha1);
     76  SHA1Sum::Hash ordered_digest;
     77  ordered_sha1.finish(ordered_digest);
     78 
     79  nsNotifyAddrListener::HashSortedNetworkIds(reversed, reversed_sha1);
     80  SHA1Sum::Hash reversed_digest;
     81  reversed_sha1.finish(reversed_digest);
     82 
     83  // Assert
     84  ASSERT_EQ(0,
     85            memcmp(&expected_digest, &ordered_digest, sizeof(SHA1Sum::Hash)));
     86  ASSERT_EQ(0,
     87            memcmp(&expected_digest, &reversed_digest, sizeof(SHA1Sum::Hash)));
     88 }