diff options
author | Jennifer Peshansky <jennifer.peshansky@mongodb.com> | 2022-11-03 16:13:20 +0000 |
---|---|---|
committer | Jennifer Peshansky <jennifer.peshansky@mongodb.com> | 2022-11-03 16:13:20 +0000 |
commit | e74d2910bbe76790ad131d53fee277829cd95982 (patch) | |
tree | cabe148764529c9623652374fbc36323a550cd44 /src/mongo/crypto/fle_crypto.cpp | |
parent | 280145e9940729480bb8a35453d4056afac87641 (diff) | |
parent | ba467f46cc1bc49965e1d72b541eff0cf1d7b22e (diff) | |
download | mongo-jenniferpeshansky/SERVER-70854.tar.gz |
Merge branch 'master' into jenniferpeshansky/SERVER-70854jenniferpeshansky/SERVER-70854
Diffstat (limited to 'src/mongo/crypto/fle_crypto.cpp')
-rw-r--r-- | src/mongo/crypto/fle_crypto.cpp | 30 |
1 files changed, 25 insertions, 5 deletions
diff --git a/src/mongo/crypto/fle_crypto.cpp b/src/mongo/crypto/fle_crypto.cpp index e268701b450..c3162c6dc25 100644 --- a/src/mongo/crypto/fle_crypto.cpp +++ b/src/mongo/crypto/fle_crypto.cpp @@ -1157,10 +1157,20 @@ void convertToFLE2Payload(FLEKeyVault* keyVault, auto rangeFindSpec = FLE2RangeFindSpec::parse(ctx, ep.getValue().getElement().Obj()); - auto edges = getMinCover(rangeFindSpec, ep.getSparsity().value()); - - auto findpayload = FLEClientCrypto::serializeFindRangePayload( - indexKey, userKey, edges, ep.getMaxContentionCounter(), rangeFindSpec); + auto findpayload = [&]() { + if (rangeFindSpec.getEdgesInfo().has_value()) { + auto edges = getMinCover(rangeFindSpec, ep.getSparsity().value()); + + return FLEClientCrypto::serializeFindRangePayload( + indexKey, + userKey, + std::move(edges), + ep.getMaxContentionCounter(), + rangeFindSpec); + } else { + return FLEClientCrypto::serializeFindRangeStub(rangeFindSpec); + } + }(); toEncryptedBinData(fieldNameToSerialize, EncryptedBinDataType::kFLE2FindRangePayload, @@ -1509,7 +1519,7 @@ std::vector<std::string> getMinCover(const FLE2RangeFindSpec& spec, uint8_t spar "getMinCover should never be passed a findSpec without edges information", spec.getEdgesInfo()); - auto& edgesInfo = spec.getEdgesInfo().get(); + auto& edgesInfo = spec.getEdgesInfo().value(); auto indexMin = edgesInfo.getIndexMin().getElement(); auto indexMax = edgesInfo.getIndexMax().getElement(); @@ -2273,6 +2283,16 @@ FLE2FindRangePayload FLEClientCrypto::serializeFindRangePayload( return payload; } +FLE2FindRangePayload FLEClientCrypto::serializeFindRangeStub(const FLE2RangeFindSpec& spec) { + FLE2FindRangePayload payload; + + payload.setFirstOperator(spec.getFirstOperator()); + payload.setSecondOperator(spec.getSecondOperator()); + payload.setPayloadId(spec.getPayloadId()); + + return payload; +} + StatusWith<ECCDocument> ECCCollection::decryptDocument(ECCTwiceDerivedValueToken valueToken, const BSONObj& doc) { BSONElement encryptedValue; |