diff options
Diffstat (limited to 'src/mongo/crypto/sha_block_windows.cpp')
-rw-r--r-- | src/mongo/crypto/sha_block_windows.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/mongo/crypto/sha_block_windows.cpp b/src/mongo/crypto/sha_block_windows.cpp index 0bd35a03ce1..0d63cac3283 100644 --- a/src/mongo/crypto/sha_block_windows.cpp +++ b/src/mongo/crypto/sha_block_windows.cpp @@ -119,6 +119,17 @@ template <typename HashType> void computeHashImpl(BCRYPT_ALG_HANDLE algo, std::initializer_list<ConstDataRange> input, HashType* const output) { + if (input.size() == 1) { + auto it = begin(input); + invariant(BCryptHash(algo, + NULL, + 0, + reinterpret_cast<PUCHAR>(const_cast<char*>(it->data())), + it->length(), + output->data(), + output->size()) == STATUS_SUCCESS); + } + BCRYPT_HASH_HANDLE hHash; fassert(50725, @@ -150,6 +161,17 @@ void computeHmacImpl(BCRYPT_ALG_HANDLE algo, HashType* const output) { invariant(key); + if (input.size() == 1) { + auto it = begin(input); + invariant(BCryptHash(algo, + const_cast<PUCHAR>(key), + keyLen, + reinterpret_cast<PUCHAR>(const_cast<char*>(it->data())), + it->length(), + output->data(), + output->size()) == STATUS_SUCCESS); + } + BCRYPT_HASH_HANDLE hHash; fassert(50726, |