From: Fred Morcos Date: Tue, 22 Nov 2022 15:55:07 +0000 (+0100) Subject: Cleanup DNSCryptoKeyEngine X-Git-Tag: dnsdist-1.8.0-rc1~124^2~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c2173c78217f96843035219fd58763a448092dde;p=thirdparty%2Fpdns.git Cleanup DNSCryptoKeyEngine --- diff --git a/pdns/dnssecinfra.hh b/pdns/dnssecinfra.hh index 4b9e5f56c7..95ccff38f2 100644 --- a/pdns/dnssecinfra.hh +++ b/pdns/dnssecinfra.hh @@ -36,43 +36,51 @@ class DNSCryptoKeyEngine public: explicit DNSCryptoKeyEngine(unsigned int algorithm) : d_algorithm(algorithm) {} virtual ~DNSCryptoKeyEngine() {}; - virtual string getName() const = 0; + [[nodiscard]] virtual string getName() const = 0; - typedef std::map stormap_t; - typedef std::vector > storvector_t; + using stormap_t = std::map; + using storvector_t = std::vector>; virtual void create(unsigned int bits)=0; + virtual void createFromPEMFile(DNSKEYRecordContent& drc, const std::string& filename, std::FILE& fp) { throw std::runtime_error("Can't create key from PEM file"); } - virtual storvector_t convertToISCVector() const =0; - std::string convertToISC() const ; + + [[nodiscard]] virtual storvector_t convertToISCVector() const =0; + [[nodiscard]] std::string convertToISC() const ; + virtual void convertToPEM(std::FILE& fp) const { throw std::runtime_error(getName() + ": Conversion to PEM not supported"); }; - virtual std::string sign(const std::string& msg) const =0; - virtual std::string hash(const std::string& msg) const + + [[nodiscard]] virtual std::string sign(const std::string& msg) const =0; + + [[nodiscard]] virtual std::string hash(const std::string& msg) const { throw std::runtime_error("hash() function not implemented"); return msg; } - virtual bool verify(const std::string& msg, const std::string& signature) const =0; - virtual std::string getPubKeyHash()const =0; - virtual std::string getPublicKeyString()const =0; - virtual int getBits() const =0; - virtual unsigned int getAlgorithm() const + [[nodiscard]] virtual bool verify(const std::string& msg, const std::string& signature) const =0; + + [[nodiscard]] virtual std::string getPubKeyHash()const =0; + [[nodiscard]] virtual std::string getPublicKeyString()const =0; + [[nodiscard]] virtual int getBits() const =0; + [[nodiscard]] virtual unsigned int getAlgorithm() const { return d_algorithm; } virtual void fromISCMap(DNSKEYRecordContent& drc, stormap_t& stormap) = 0; virtual void fromPublicKeyString(const std::string& content) = 0; + virtual bool checkKey(vector* errorMessages = nullptr) const { return true; } + static std::unique_ptr makeFromISCFile(DNSKEYRecordContent& drc, const char* fname); /** @@ -95,7 +103,7 @@ class DNSCryptoKeyEngine * \return A key engine corresponding to the requested algorithm and * populated with the contents of the PEM file. */ - static std::unique_ptr makeFromPEMFile(DNSKEYRecordContent& drc, const std::string& filename, std::FILE& fp, uint8_t algorithm); + static std::unique_ptr makeFromPEMFile(DNSKEYRecordContent& drc, const std::string& filename, std::FILE& inputFile, uint8_t algorithm); static std::unique_ptr makeFromISCString(DNSKEYRecordContent& drc, const std::string& content); static std::unique_ptr makeFromPublicKeyString(unsigned int algorithm, const std::string& raw); @@ -103,17 +111,17 @@ class DNSCryptoKeyEngine static bool isAlgorithmSupported(unsigned int algo); static bool isDigestSupported(uint8_t digest); - typedef std::unique_ptr maker_t(unsigned int algorithm); + using maker_t = std::unique_ptr (unsigned int); static void report(unsigned int algorithm, maker_t* maker, bool fallback=false); static void testMakers(unsigned int algorithm, maker_t* creator, maker_t* signer, maker_t* verifier); static vector> listAllAlgosWithBackend(); static bool testAll(); static bool testOne(int algo); - private: - typedef std::map makers_t; - typedef std::map > allmakers_t; + private: + using makers_t = std::map; + using allmakers_t = std::map>; static makers_t& getMakers() { static makers_t s_makers; @@ -124,6 +132,7 @@ class DNSCryptoKeyEngine static allmakers_t s_allmakers; return s_allmakers; } + protected: const unsigned int d_algorithm; };