aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/poco/Foundation/include/Poco/MD5Engine.h
diff options
context:
space:
mode:
authorDevtools Arcadia <arcadia-devtools@yandex-team.ru>2022-02-07 18:08:42 +0300
committerDevtools Arcadia <arcadia-devtools@mous.vla.yp-c.yandex.net>2022-02-07 18:08:42 +0300
commit1110808a9d39d4b808aef724c861a2e1a38d2a69 (patch)
treee26c9fed0de5d9873cce7e00bc214573dc2195b7 /contrib/libs/poco/Foundation/include/Poco/MD5Engine.h
downloadydb-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.h95
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