aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp/openssl/crypto/sha.cpp
diff options
context:
space:
mode:
authordanibw <danibw@yandex-team.com>2023-11-29 18:32:06 +0300
committerdanibw <danibw@yandex-team.com>2023-11-29 19:34:00 +0300
commit71a7f96673789844090ddb61182238c6ed4d8013 (patch)
tree16a954cef67f97167bc471903b1034be43f77337 /library/cpp/openssl/crypto/sha.cpp
parent2f8c2d284cb97bd7537b4c717f0d24cf289afe20 (diff)
downloadydb-71a7f96673789844090ddb61182238c6ed4d8013.tar.gz
Add SHA224 to library/cpp/openssl/crypto
Add SHA224 to library/cpp/openssl/crypto
Diffstat (limited to 'library/cpp/openssl/crypto/sha.cpp')
-rw-r--r--library/cpp/openssl/crypto/sha.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/library/cpp/openssl/crypto/sha.cpp b/library/cpp/openssl/crypto/sha.cpp
index c142b6635e..ffd999a238 100644
--- a/library/cpp/openssl/crypto/sha.cpp
+++ b/library/cpp/openssl/crypto/sha.cpp
@@ -59,4 +59,31 @@ namespace NOpenSsl {
return digest;
}
}
+ namespace NSha224 {
+ static_assert(DIGEST_LENGTH == SHA224_DIGEST_LENGTH);
+
+ TDigest Calc(const void* data, size_t dataSize) {
+ TDigest digest;
+ Y_ENSURE(SHA224(static_cast<const ui8*>(data), dataSize, digest.data()) != nullptr);
+ return digest;
+ }
+
+ TCalcer::TCalcer()
+ : Context{new SHA256state_st} {
+ Y_ENSURE(SHA224_Init(Context.Get()) == 1);
+ }
+
+ TCalcer::~TCalcer() {
+ }
+
+ void TCalcer::Update(const void* data, size_t dataSize) {
+ Y_ENSURE(SHA224_Update(Context.Get(), data, dataSize) == 1);
+ }
+
+ TDigest TCalcer::Final() {
+ TDigest digest;
+ Y_ENSURE(SHA224_Final(digest.data(), Context.Get()) == 1);
+ return digest;
+ }
+ }
}