aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp/digest/md5/md5.h
diff options
context:
space:
mode:
authorarcadia-devtools <arcadia-devtools@yandex-team.ru>2022-02-08 18:25:47 +0300
committerarcadia-devtools <arcadia-devtools@yandex-team.ru>2022-02-08 18:25:47 +0300
commita3ac8a71f16e0db7d50d5b1235466ff754e0d228 (patch)
tree8433eb84ffae296ccb9ae094d08491c86c48bdb1 /library/cpp/digest/md5/md5.h
parent60312eaed2e51caa7ed482270d3545a9d27cb284 (diff)
downloadydb-a3ac8a71f16e0db7d50d5b1235466ff754e0d228.tar.gz
intermediate changes
ref:f398132a6a7101a031da4a85ff8dc9f360af7d8a
Diffstat (limited to 'library/cpp/digest/md5/md5.h')
-rw-r--r--library/cpp/digest/md5/md5.h48
1 files changed, 23 insertions, 25 deletions
diff --git a/library/cpp/digest/md5/md5.h b/library/cpp/digest/md5/md5.h
index 1568567e3c0..2c17aa05181 100644
--- a/library/cpp/digest/md5/md5.h
+++ b/library/cpp/digest/md5/md5.h
@@ -1,7 +1,5 @@
#pragma once
-#include <util/system/defaults.h>
-#include <util/generic/string.h>
#include <util/generic/array_ref.h>
#include <util/generic/strbuf.h>
@@ -16,26 +14,20 @@ public:
void Init();
inline MD5& Update(const void* data, size_t len) {
- const char* buf = (const char*)data;
-
- while (len) {
- // NOTE: we don't want buffSz to be near Max<unsigned int>()
- // because otherwise integer overflow might happen in UpdatePart
- const unsigned int buffSz = Min(size_t(Max<unsigned int>() / 2), len);
-
- UpdatePart(buf, buffSz);
- buf += buffSz;
- len -= buffSz;
- }
- return *this;
+ return Update(MakeArrayRef(static_cast<const ui8*>(data), len));
}
- inline MD5& Update(const TStringBuf& data) {
+ inline MD5& Update(TStringBuf data) {
return Update(data.data(), data.size());
}
+ inline MD5& Update(const TArrayRef<const ui8> data) {
+ UpdatePart(data);
+ return *this;
+ }
+
void Pad();
- unsigned char* Final(unsigned char[16]);
+ ui8* Final(ui8[16]);
// buf must be char[33];
char* End(char* buf);
@@ -57,23 +49,29 @@ public:
static TString File(const TString& filename);
static char* Data(const void* data, size_t len, char* buf);
- static TString Data(TArrayRef<ui8> data);
+ static char* Data(const TArrayRef<const ui8>& data, char* buf);
+ static TString Data(const TArrayRef<const ui8>& data);
static TString Data(TStringBuf data);
static char* Stream(IInputStream* in, char* buf);
- static TString Calc(const TStringBuf& data); // 32-byte hex-encoded
- static TString CalcRaw(const TStringBuf& data); // 16-byte raw
+ static TString Calc(TStringBuf data); // 32-byte hex-encoded
+ static TString Calc(const TArrayRef<const ui8>& data); // 32-byte hex-encoded
+ static TString CalcRaw(TStringBuf data); // 16-byte raw
+ static TString CalcRaw(const TArrayRef<const ui8>& data); // 16-byte raw
- static ui64 CalcHalfMix(const TStringBuf& data);
+ static ui64 CalcHalfMix(TStringBuf data);
+ static ui64 CalcHalfMix(const TArrayRef<const ui8>& data);
static ui64 CalcHalfMix(const char* data, size_t len);
- static bool IsMD5(const TStringBuf& data);
+ static bool IsMD5(TStringBuf data);
+ static bool IsMD5(const TArrayRef<const ui8>& data);
private:
- void UpdatePart(const void* data, unsigned int len);
+ void UpdatePart(TArrayRef<const ui8> data);
private:
- ui32 State[4]; /* state (ABCD) */
- ui32 Count[2]; /* number of bits, modulo 2^64 (lsb first) */
- unsigned char Buffer[64]; /* input buffer */
+ ui8 BufferSize; /* size of buffer */
+ ui8 Buffer[64]; /* input buffer */
+ ui32 State[4]; /* state (ABCD) */
+ ui64 StreamSize; /* total bytes in input stream */
};