summaryrefslogtreecommitdiff
path: root/src/mongo/crypto/sha_block_windows.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/crypto/sha_block_windows.cpp')
-rw-r--r--src/mongo/crypto/sha_block_windows.cpp22
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,