summaryrefslogtreecommitdiff
path: root/src/mongo/crypto
diff options
context:
space:
mode:
authorJonathan Reams <jbreams@mongodb.com>2018-10-31 12:39:31 -0400
committerJonathan Reams <jbreams@mongodb.com>2018-11-07 10:20:26 -0500
commit8c2c95edbdf32e88868396cf6927a9346bbc85e4 (patch)
tree93c9d6a919005c1063efb272c1c216c53e2b2b01 /src/mongo/crypto
parent514873667fbb5fa62a245a936826bc71f73b87e8 (diff)
downloadmongo-8c2c95edbdf32e88868396cf6927a9346bbc85e4.tar.gz
SERVER-37833 Retry internal auth with alternate key during keyfile rollover
Diffstat (limited to 'src/mongo/crypto')
-rw-r--r--src/mongo/crypto/mechanism_scram.h9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/mongo/crypto/mechanism_scram.h b/src/mongo/crypto/mechanism_scram.h
index 1c5de95d55a..37614357f73 100644
--- a/src/mongo/crypto/mechanism_scram.h
+++ b/src/mongo/crypto/mechanism_scram.h
@@ -249,8 +249,15 @@ public:
static BSONObj generateCredentials(std::string password, int iterationCount) {
auto salt = Presecrets<HashBlock>::generateSecureRandomSalt();
+ return generateCredentials(salt, password, iterationCount);
+ }
+
+ static BSONObj generateCredentials(const std::vector<uint8_t>& salt,
+ const std::string& password,
+ int iterationCount) {
Secrets<HashBlock> secrets(Presecrets<HashBlock>(password, salt, iterationCount));
- const auto encodedSalt = base64::encode(reinterpret_cast<char*>(salt.data()), salt.size());
+ const auto encodedSalt =
+ base64::encode(reinterpret_cast<const char*>(salt.data()), salt.size());
return BSON(kIterationCountFieldName << iterationCount << kSaltFieldName << encodedSalt
<< kStoredKeyFieldName
<< secrets.storedKey().toString()