tor-browser

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

TestDNSPacket.cpp (2646B)


      1 #include "gtest/gtest.h"
      2 
      3 #include "mozilla/net/DNSPacket.h"
      4 #include "mozilla/Preferences.h"
      5 
      6 using namespace mozilla;
      7 using namespace mozilla::net;
      8 
      9 void AssertDnsPadding(uint32_t PaddingLength, unsigned int WithPadding,
     10                      unsigned int WithoutPadding, bool DisableEcn,
     11                      const nsCString& host) {
     12  DNSPacket encoder;
     13  nsCString buf;
     14 
     15  ASSERT_EQ(Preferences::SetUint("network.trr.padding.length", PaddingLength),
     16            NS_OK);
     17 
     18  ASSERT_EQ(Preferences::SetBool("network.trr.padding", true), NS_OK);
     19  ASSERT_EQ(encoder.EncodeRequest(buf, host, 1, DisableEcn), NS_OK);
     20  ASSERT_EQ(buf.Length(), WithPadding);
     21 
     22  ASSERT_EQ(Preferences::SetBool("network.trr.padding", false), NS_OK);
     23  ASSERT_EQ(encoder.EncodeRequest(buf, host, 1, DisableEcn), NS_OK);
     24  ASSERT_EQ(buf.Length(), WithoutPadding);
     25 }
     26 
     27 TEST(TestDNSPacket, PaddingLenEcn)
     28 {
     29  AssertDnsPadding(16, 48, 41, true, "a.de"_ns);
     30  AssertDnsPadding(16, 48, 42, true, "ab.de"_ns);
     31  AssertDnsPadding(16, 48, 43, true, "abc.de"_ns);
     32  AssertDnsPadding(16, 48, 44, true, "abcd.de"_ns);
     33  AssertDnsPadding(16, 64, 45, true, "abcde.de"_ns);
     34  AssertDnsPadding(16, 64, 46, true, "abcdef.de"_ns);
     35  AssertDnsPadding(16, 64, 47, true, "abcdefg.de"_ns);
     36  AssertDnsPadding(16, 64, 48, true, "abcdefgh.de"_ns);
     37 }
     38 
     39 TEST(TestDNSPacket, PaddingLenDisableEcn)
     40 {
     41  AssertDnsPadding(16, 48, 22, false, "a.de"_ns);
     42  AssertDnsPadding(16, 48, 23, false, "ab.de"_ns);
     43  AssertDnsPadding(16, 48, 24, false, "abc.de"_ns);
     44  AssertDnsPadding(16, 48, 25, false, "abcd.de"_ns);
     45  AssertDnsPadding(16, 48, 26, false, "abcde.de"_ns);
     46  AssertDnsPadding(16, 48, 27, false, "abcdef.de"_ns);
     47  AssertDnsPadding(16, 48, 32, false, "abcdefghijk.de"_ns);
     48  AssertDnsPadding(16, 48, 33, false, "abcdefghijkl.de"_ns);
     49  AssertDnsPadding(16, 64, 34, false, "abcdefghijklm.de"_ns);
     50  AssertDnsPadding(16, 64, 35, false, "abcdefghijklmn.de"_ns);
     51 }
     52 
     53 TEST(TestDNSPacket, PaddingLengths)
     54 {
     55  AssertDnsPadding(0, 45, 41, true, "a.de"_ns);
     56  AssertDnsPadding(1, 45, 41, true, "a.de"_ns);
     57  AssertDnsPadding(2, 46, 41, true, "a.de"_ns);
     58  AssertDnsPadding(3, 45, 41, true, "a.de"_ns);
     59  AssertDnsPadding(4, 48, 41, true, "a.de"_ns);
     60  AssertDnsPadding(16, 48, 41, true, "a.de"_ns);
     61  AssertDnsPadding(32, 64, 41, true, "a.de"_ns);
     62  AssertDnsPadding(42, 84, 41, true, "a.de"_ns);
     63  AssertDnsPadding(52, 52, 41, true, "a.de"_ns);
     64  AssertDnsPadding(80, 80, 41, true, "a.de"_ns);
     65  AssertDnsPadding(128, 128, 41, true, "a.de"_ns);
     66  AssertDnsPadding(256, 256, 41, true, "a.de"_ns);
     67  AssertDnsPadding(1024, 1024, 41, true, "a.de"_ns);
     68  AssertDnsPadding(1025, 1024, 41, true, "a.de"_ns);
     69 }