#ifdef HAVE_CRYPTO_SHORTHASH // we can do siphash-based cookies
DNSPacket::s_doEDNSCookieProcessing = true;
try {
- if (::arg()["edns-cookie-secret"].size() != 32) {
- throw std::range_error("wrong size (" + std::to_string(::arg()["edns-cookie-secret"].size()) + "), must be 32");
+ 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));
}
DNSPacket::s_EDNSCookieKey = makeBytesFromHex(::arg()["edns-cookie-secret"]);
} catch(const std::range_error &e) {
if (d_haveednscookie) {
if (d_eco.isWellFormed()) {
- optsize += 24;
+ optsize += EDNSCOOKIEOPTSIZE;
}
}
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
+#include "config.h"
#include "ednscookies.hh"
#include "misc.hh"
-#include "config.h"
#ifdef HAVE_CRYPTO_SHORTHASH
#include <sodium.h>
#endif
#include "namespaces.hh"
#include "iputils.hh"
+#define EDNSCOOKIESECRETSIZE 32
+#define EDNSCOOKIEOPTSIZE 24
+
struct EDNSCookiesOpt
{
EDNSCookiesOpt(){};
throw std::range_error("odd number of bytes in hex string");
}
string ret;
+ ret.reserve(in.size());
unsigned int num;
for (size_t i = 0; i < in.size(); i+=2) {
string numStr = in.substr(i, 2);