diff options
Diffstat (limited to 'library/cpp/openssl/crypto/sha.cpp')
-rw-r--r-- | library/cpp/openssl/crypto/sha.cpp | 27 |
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; + } + } } |