X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_hash.h;h=7deb4c68c74305a62144fa3443b6cffabf6954f1;hb=46e56dedd37abe33af4e8b970d5b83729dc1ef05;hp=08a24eb8548f99e1a18c25efbe06c1b430c57b20;hpb=26cd5393c9308fabe73c41870f06f73a5b001cd7;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_hash.h b/src/modules/m_hash.h index 08a24eb85..7deb4c68c 100644 --- a/src/modules/m_hash.h +++ b/src/modules/m_hash.h @@ -2,7 +2,7 @@ * | Inspire Internet Relay Chat Daemon | * +------------------------------------+ * - * InspIRCd: (C) 2002-2009 InspIRCd Development Team + * InspIRCd: (C) 2002-2010 InspIRCd Development Team * See: http://wiki.inspircd.org/Credits * * This program is free but copyrighted software; see @@ -19,75 +19,31 @@ #define SHA256_DIGEST_SIZE (256 / 8) #define SHA256_BLOCK_SIZE (512 / 8) -/** Query a hash algorithm's name - * - * Example: - * \code - * cout << "Using hash algorithm: " << HashNameRequest(this, HashModule).response; - * \endcode - */ -struct HashNameRequest : public Request +class HashProvider : public DataProvider { - std::string response; - HashNameRequest(Module* Me, Module* Target) : Request(Me, Target, "NAME") + public: + HashProvider(Module* mod, const std::string& Name) : DataProvider(mod, Name) {} + virtual std::string sum(const std::string& data) = 0; + inline std::string hexsum(const std::string& data) { - Send(); + return BinToHex(sum(data)); } -}; -/** Send this class to the hashing module to HashSUM a std::string. - * - * Example: - * \code - * // Get the Hash sum of the string 'doodads'. - * std::string result = HashRequest(this, HashModule, "doodads").result; - * \endcode - */ -struct HashRequest : public Request -{ - const std::string data; - std::string binresult; - /** Initialize HashSumRequest for sending. - * @param Me A pointer to the sending module - * @param Target A pointer to the hashing module - * @param data The data to be hashed + /** Allows the IVs for the hash to be specified. As the choice of initial IV is + * important for the security of a hash, this should not be used except to + * maintain backwards compatability. This also allows you to change the hex + * sequence from its default of "0123456789abcdef", which does not improve the + * strength of the output, but helps confuse those attempting to implement it. + * + * Only m_md5 implements this request; only m_cloaking should use it. + * + * Example: + * \code + * unsigned int iv[] = { 0xFFFFFFFF, 0x00000000, 0xAAAAAAAA, 0xCCCCCCCC }; + * std::string result = Hash.sumIV(iv, "0123456789abcdef", "data"); + * \endcode */ - HashRequest(Module* Me, Module* Target, const std::string &sdata) - : Request(Me, Target, "HASH"), data(sdata) - { - Send(); - } - inline std::string hex() - { - return BinToHex(binresult); - } -}; - -/** Allows the IVs for the hash to be specified. As the choice of initial IV is - * important for the security of a hash, this should not be used except to - * maintain backwards compatability. This also allows you to change the hex - * sequence from its default of "0123456789abcdef", which does not improve the - * strength of the output, but helps confuse those attempting to implement it. - * - * Only m_md5 implements this request; only m_cloaking should use it. - * - * Example: - * \code - * unsigned int iv[] = { 0xFFFFFFFF, 0x00000000, 0xAAAAAAAA, 0xCCCCCCCC }; - * std::string result = HashRequestIV(this, HashModule, iv, "0123456789abcdef", "data").result; - * \endcode - */ -struct HashRequestIV : public Request -{ - unsigned int* iv; - const char* map; - std::string result; - const std::string data; - HashRequestIV(Module* Me, Module* Target, unsigned int* IV, const char* HexMap, const std::string &sdata) - : Request(Me, Target, "HASH-IV"), iv(IV), map(HexMap), data(sdata) - { - Send(); - } + virtual std::string sumIV(unsigned int* IV, const char* HexMap, const std::string &sdata) = 0; }; #endif