diff options
author | Devtools Arcadia <arcadia-devtools@yandex-team.ru> | 2022-02-07 18:08:42 +0300 |
---|---|---|
committer | Devtools Arcadia <arcadia-devtools@mous.vla.yp-c.yandex.net> | 2022-02-07 18:08:42 +0300 |
commit | 1110808a9d39d4b808aef724c861a2e1a38d2a69 (patch) | |
tree | e26c9fed0de5d9873cce7e00bc214573dc2195b7 /contrib/libs/poco/Foundation/include/Poco/MD5Engine.h | |
download | ydb-1110808a9d39d4b808aef724c861a2e1a38d2a69.tar.gz |
intermediate changes
ref:cde9a383711a11544ce7e107a78147fb96cc4029
Diffstat (limited to 'contrib/libs/poco/Foundation/include/Poco/MD5Engine.h')
-rw-r--r-- | contrib/libs/poco/Foundation/include/Poco/MD5Engine.h | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/contrib/libs/poco/Foundation/include/Poco/MD5Engine.h b/contrib/libs/poco/Foundation/include/Poco/MD5Engine.h new file mode 100644 index 0000000000..7835ff6129 --- /dev/null +++ b/contrib/libs/poco/Foundation/include/Poco/MD5Engine.h @@ -0,0 +1,95 @@ +// +// MD5Engine.h +// +// Library: Foundation +// Package: Crypt +// Module: MD5Engine +// +// Definition of class MD5Engine. +// +// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// +// +// MD5 (RFC 1321) algorithm: +// Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All +// rights reserved. +// +// License to copy and use this software is granted provided that it +// is identified as the "RSA Data Security, Inc. MD5 Message-Digest +// Algorithm" in all material mentioning or referencing this software +// or this function. +// +// License is also granted to make and use derivative works provided +// that such works are identified as "derived from the RSA Data +// Security, Inc. MD5 Message-Digest Algorithm" in all material +// mentioning or referencing the derived work. +// +// RSA Data Security, Inc. makes no representations concerning either +// the merchantability of this software or the suitability of this +// software for any particular purpose. It is provided "as is" +// without express or implied warranty of any kind. +// +// These notices must be retained in any copies of any part of this +// documentation and/or software. +// + + +#ifndef Foundation_MD5Engine_INCLUDED +#define Foundation_MD5Engine_INCLUDED + + +#include "Poco/Foundation.h" +#include "Poco/DigestEngine.h" + + +namespace Poco { + + +class Foundation_API MD5Engine: public DigestEngine + /// This class implementes the MD5 message digest algorithm, + /// described in RFC 1321. +{ +public: + enum + { + BLOCK_SIZE = 64, + DIGEST_SIZE = 16 + }; + + MD5Engine(); + ~MD5Engine(); + + std::size_t digestLength() const; + void reset(); + const DigestEngine::Digest& digest(); + +protected: + void updateImpl(const void* data, std::size_t length); + +private: + static void transform(UInt32 state[4], const unsigned char block[64]); + static void encode(unsigned char* output, const UInt32* input, std::size_t len); + static void decode(UInt32* output, const unsigned char* input, std::size_t len); + + struct Context + { + UInt32 state[4]; // state (ABCD) + UInt32 count[2]; // number of bits, modulo 2^64 (lsb first) + unsigned char buffer[64]; // input buffer + }; + + Context _context; + DigestEngine::Digest _digest; + + MD5Engine(const MD5Engine&); + MD5Engine& operator = (const MD5Engine&); +}; + + +} // namespace Poco + + +#endif // Foundation_MD5Engine_INCLUDED |