]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
cookies: move consts to class instead of defines
authorPieter Lexis <pieter.lexis@powerdns.com>
Fri, 9 Jul 2021 09:51:50 +0000 (11:51 +0200)
committerPieter Lexis <pieter.lexis@powerdns.com>
Mon, 20 Sep 2021 08:54:41 +0000 (10:54 +0200)
pdns/common_startup.cc
pdns/dnspacket.cc
pdns/ednscookies.cc
pdns/ednscookies.hh

index 70e41685cee549f3795b9908f0f7c411ab518efa..f591db569786e27bf2fa5bf305373932fe61bc1b 100644 (file)
@@ -585,8 +585,8 @@ void mainthread()
 #ifdef HAVE_CRYPTO_SHORTHASH // we can do siphash-based cookies
      DNSPacket::s_doEDNSCookieProcessing = true;
      try {
-       if (::arg()["edns-cookie-secret"].size() != EDNSCOOKIESECRETSIZE) {
-         throw std::range_error("wrong size (" + std::to_string(::arg()["edns-cookie-secret"].size()) + "), must be " + std::to_string(EDNSCOOKIESECRETSIZE));
+       if (::arg()["edns-cookie-secret"].size() != EDNSCookiesOpt::EDNSCookieSecretSize) {
+         throw std::range_error("wrong size (" + std::to_string(::arg()["edns-cookie-secret"].size()) + "), must be " + std::to_string(EDNSCookiesOpt::EDNSCookieSecretSize));
        }
        DNSPacket::s_EDNSCookieKey = makeBytesFromHex(::arg()["edns-cookie-secret"]);
      } catch(const std::range_error &e) {
index 27aa5623479010e1ffc6784e69b67d880d9cadd0..5ba0eda092da56c1a59382b318cde192ba2c6d89 100644 (file)
@@ -332,7 +332,7 @@ void DNSPacket::wrapup()
 
   if (d_haveednscookie) {
     if (d_eco.isWellFormed()) {
-        optsize += EDNSCOOKIEOPTSIZE;
+        optsize += EDNSCookiesOpt::EDNSCookieOptSize;
     }
   }
 
index bdc65367e1f288fb6d54cb34d44a745590b43ef6..d9f079c03c078523576073c40de2ba56a648dfc8 100644 (file)
@@ -142,6 +142,8 @@ bool EDNSCookiesOpt::shouldRefresh()
 bool EDNSCookiesOpt::makeServerCookie(const string& secret, const ComboAddress& source)
 {
 #ifdef HAVE_CRYPTO_SHORTHASH
+  static_assert(EDNSCookieSecretSize == crypto_shorthash_KEYBYTES * 2, "The EDNSCookieSecretSize is not twice crypto_shorthash_KEYBYTES");
+
   if (isValid(secret, source) && !shouldRefresh()) {
     return true;
   }
index c55542f99d77b45d256c080177b6c35f9e437139..7e25d37081220b9866a18614722ee861c812ef08 100644 (file)
 #include "namespaces.hh"
 #include "iputils.hh"
 
-#define EDNSCOOKIESECRETSIZE 32
-#define EDNSCOOKIEOPTSIZE 24
-
 struct EDNSCookiesOpt
 {
+  static const size_t EDNSCookieSecretSize = 32;
+  static const size_t EDNSCookieOptSize = 24;
+
   EDNSCookiesOpt(){};
   EDNSCookiesOpt(const std::string& option);
   EDNSCookiesOpt(const char* option, unsigned int len);