Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
d12287d
remove `use_range_v2` from `mc_EncryptedFieldConfig_parse`
kevinAlbs Feb 21, 2025
fed1d6a
update expected payloads for fle2-insert-range-explicit
kevinAlbs Feb 21, 2025
74d3f23
update test files for fle2-insert-range tests
kevinAlbs Feb 24, 2025
fcd9a1c
update test files for fle2-find-range tests
kevinAlbs Feb 25, 2025
0e5f956
update `_test_cleanup*` tests
kevinAlbs Feb 25, 2025
0566265
update `_test_compact*` tests
kevinAlbs Feb 25, 2025
7f25612
default to use_range_v2 in tests
kevinAlbs Feb 27, 2025
fa8e9d8
remove range_v2 code from `mc_RangeOpts_parse`
kevinAlbs Feb 27, 2025
ce44baf
always enable rangev2 in `_mongocrypt_tester_mongocrypt`
kevinAlbs Feb 27, 2025
f8d6a99
update test data for `ee_testcase_run`
kevinAlbs Feb 27, 2025
ab89f24
remove failing v1 tests from `_test_setopt_for_explicit_encrypt`
kevinAlbs Feb 27, 2025
1b9c666
remove redundant v2 test from `_test_setopt_for_explicit_encrypt`
kevinAlbs Feb 27, 2025
812dd8b
remove v1 test in `test_mc_marking_to_ciphertext_fle2_range`
kevinAlbs Feb 27, 2025
1f2a4d0
remove `use_range_v2` arg from `trimFactorDefault`
kevinAlbs Feb 27, 2025
6698f2f
remove failing v1 test from `test_mc_get_mincover_from_FLE2RangeFindS…
kevinAlbs Feb 27, 2025
4db25ea
remove `use_range_v2` argument from `mc_getTypeInfoDouble`
kevinAlbs Feb 27, 2025
7bc6973
remove `use_range_v2` from `mc_getTypeInfoDecimal128`
kevinAlbs Feb 27, 2025
61d2a4e
remove `use_range_v2` from `mc_getEdges*`
kevinAlbs Feb 28, 2025
5387a1c
remove `use_range_v2` from `mc_getMincover*`
kevinAlbs Feb 28, 2025
8ee44da
remove `use_range_v2` from `mc_FLE2RangeFindSpec_parse`
kevinAlbs Feb 28, 2025
11f40fd
remove `use_range_v2` from `mc_FLE2RangeInsertSpec_parse`
kevinAlbs Feb 28, 2025
dada406
remove `use_range_v2` from `mc_FLE2FindRangePayloadV2_serialize`
kevinAlbs Feb 28, 2025
a1b3599
remove `use_range_v2` from `mc_FLE2InsertUpdatePayloadV2_serializeFor…
kevinAlbs Mar 3, 2025
ed532d7
remove `use_range_v2` from `mc_RangeOpts_appendTrimFactor`
kevinAlbs Mar 3, 2025
dcd71d4
remove `use_range_v2` from `mc_RangeOpts_to_FLE2RangeInsertSpec`
kevinAlbs Mar 3, 2025
048c69b
remove `use_range_v2` from `mc_get_mincover_from_FLE2RangeFindSpec`
kevinAlbs Mar 3, 2025
f54c030
remove `use_range_v2` from `_mongocrypt_opts_t`
kevinAlbs Mar 3, 2025
0302cc1
remove `mc_schema_broker_use_rangev2`
kevinAlbs Mar 3, 2025
78f8c05
remove `use_range_v2` from `must_omit_encryptionInformation`
kevinAlbs Mar 3, 2025
0f39fa4
rename `_fle2_derive_encrypted_token` argument from `use_range_v2` to…
kevinAlbs Mar 3, 2025
5bfed32
remove `use_range_v2` from `get_edges`
kevinAlbs Mar 3, 2025
054b5b8
remove `use_range_v2` from `_test_compact_success`
kevinAlbs Mar 3, 2025
61b2dde
remove `use_range_v2` from `_crypt_with_rng`
kevinAlbs Mar 3, 2025
f049f30
remove `use_range_v2` from `ee_testcase`
kevinAlbs Mar 3, 2025
1beed4e
remove unnecessary calls to `mongocrypt_setopt_use_range_v2`
kevinAlbs Mar 3, 2025
fde6754
remove `TESTER_MONGOCRYPT_WITH_RANGE_V2`
kevinAlbs Mar 3, 2025
3113555
remove `disableRangeV2` in tests
kevinAlbs Mar 3, 2025
260aa8c
test decryption of insert payloads with RangeV1 and RangeV2
kevinAlbs Mar 3, 2025
0b98f3b
fix test path
kevinAlbs Mar 5, 2025
800ee09
remove unused files
kevinAlbs Mar 5, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 1 addition & 4 deletions src/mc-efc-private.h
Original file line number Diff line number Diff line change
Expand Up @@ -53,10 +53,7 @@ typedef struct {
* into @efc. Fields are copied from @efc_bson. It is OK to free efc_bson after
* this call. Fields are appended in reverse order to @efc->fields. Extra
* unrecognized fields are not considered an error for forward compatibility. */
bool mc_EncryptedFieldConfig_parse(mc_EncryptedFieldConfig_t *efc,
const bson_t *efc_bson,
mongocrypt_status_t *status,
bool use_range_v2);
bool mc_EncryptedFieldConfig_parse(mc_EncryptedFieldConfig_t *efc, const bson_t *efc_bson, mongocrypt_status_t *status);

void mc_EncryptedFieldConfig_cleanup(mc_EncryptedFieldConfig_t *efc);

Expand Down
12 changes: 5 additions & 7 deletions src/mc-efc.c
Original file line number Diff line number Diff line change
Expand Up @@ -78,8 +78,7 @@ _parse_supported_query_types(bson_iter_t *iter, supported_query_type_flags *out,
}

/* _parse_field parses and prepends one field document to efc->fields. */
static bool
_parse_field(mc_EncryptedFieldConfig_t *efc, bson_t *field, mongocrypt_status_t *status, bool use_range_v2) {
static bool _parse_field(mc_EncryptedFieldConfig_t *efc, bson_t *field, mongocrypt_status_t *status) {
supported_query_type_flags query_types = SUPPORTS_NO_QUERIES;
bson_iter_t field_iter;

Expand Down Expand Up @@ -141,8 +140,8 @@ _parse_field(mc_EncryptedFieldConfig_t *efc, bson_t *field, mongocrypt_status_t
}
}

if (query_types & SUPPORTS_RANGE_PREVIEW_DEPRECATED_QUERIES && use_range_v2) {
// When rangev2 is enabled ("range") error if "rangePreview" is included.
if (query_types & SUPPORTS_RANGE_PREVIEW_DEPRECATED_QUERIES) {
// Error if the removed "rangePreview" is included.
// This check is intended to give an easier-to-understand earlier error.
CLIENT_ERR("Cannot use field '%s' with 'rangePreview' queries. 'rangePreview' is unsupported. Use 'range' "
"instead. 'range' is not compatible with 'rangePreview' and requires recreating the collection.",
Expand All @@ -163,8 +162,7 @@ _parse_field(mc_EncryptedFieldConfig_t *efc, bson_t *field, mongocrypt_status_t

bool mc_EncryptedFieldConfig_parse(mc_EncryptedFieldConfig_t *efc,
const bson_t *efc_bson,
mongocrypt_status_t *status,
bool use_range_v2) {
mongocrypt_status_t *status) {
bson_iter_t iter;

BSON_ASSERT_PARAM(efc);
Expand All @@ -189,7 +187,7 @@ bool mc_EncryptedFieldConfig_parse(mc_EncryptedFieldConfig_t *efc,
if (!mc_iter_document_as_bson(&iter, &field, status)) {
return false;
}
if (!_parse_field(efc, &field, status, use_range_v2)) {
if (!_parse_field(efc, &field, status)) {
return false;
}
// The first element of efc->fields contains the newly parsed field.
Expand Down
10 changes: 2 additions & 8 deletions src/mc-fle2-encryption-placeholder-private.h
Original file line number Diff line number Diff line change
Expand Up @@ -86,10 +86,7 @@ typedef struct {
BSON_STATIC_ASSERT2(alignof_mc_FLE2RangeFindSpec_t,
BSON_ALIGNOF(mc_FLE2RangeFindSpec_t) >= BSON_ALIGNOF(mc_FLE2RangeFindSpecEdgesInfo_t));

bool mc_FLE2RangeFindSpec_parse(mc_FLE2RangeFindSpec_t *out,
const bson_iter_t *in,
bool use_range_v2,
mongocrypt_status_t *status);
bool mc_FLE2RangeFindSpec_parse(mc_FLE2RangeFindSpec_t *out, const bson_iter_t *in, mongocrypt_status_t *status);

/** mc_FLE2RangeInsertSpec_t represents the range insert specification that is
* encoded inside of a FLE2EncryptionPlaceholder. See
Expand All @@ -114,10 +111,7 @@ typedef struct {
BSON_STATIC_ASSERT2(alignof_mc_FLE2RangeInsertSpec_t,
BSON_ALIGNOF(mc_FLE2RangeInsertSpec_t) >= BSON_ALIGNOF(bson_iter_t));

bool mc_FLE2RangeInsertSpec_parse(mc_FLE2RangeInsertSpec_t *out,
const bson_iter_t *in,
bool use_range_v2,
mongocrypt_status_t *status);
bool mc_FLE2RangeInsertSpec_parse(mc_FLE2RangeInsertSpec_t *out, const bson_iter_t *in, mongocrypt_status_t *status);

// Note: For the substring/suffix/prefix insert specs, all lengths are in terms of number of UTF-8 codepoints, not
// number of bytes.
Expand Down
23 changes: 3 additions & 20 deletions src/mc-fle2-encryption-placeholder.c
Original file line number Diff line number Diff line change
Expand Up @@ -224,7 +224,6 @@ bool mc_validate_sparsity(int64_t sparsity, mongocrypt_status_t *status) {

static bool mc_FLE2RangeFindSpecEdgesInfo_parse(mc_FLE2RangeFindSpecEdgesInfo_t *out,
const bson_iter_t *in,
bool use_range_v2,
mongocrypt_status_t *status) {
bson_iter_t iter;
bool has_lowerBound = false, has_lbIncluded = false, has_upperBound = false, has_ubIncluded = false,
Expand Down Expand Up @@ -323,11 +322,6 @@ static bool mc_FLE2RangeFindSpecEdgesInfo_parse(mc_FLE2RangeFindSpecEdgesInfo_t
// Do not error if precision is not present. Precision optional and only
// applies to double/decimal128.

if (!use_range_v2 && out->trimFactor.set) {
CLIENT_ERR(ERROR_PREFIX "'trimFactor' is not supported for QE range v1");
return false;
}

return true;

fail:
Expand All @@ -337,10 +331,7 @@ static bool mc_FLE2RangeFindSpecEdgesInfo_parse(mc_FLE2RangeFindSpecEdgesInfo_t
#undef ERROR_PREFIX
#define ERROR_PREFIX "Error parsing FLE2RangeFindSpec: "

bool mc_FLE2RangeFindSpec_parse(mc_FLE2RangeFindSpec_t *out,
const bson_iter_t *in,
bool use_range_v2,
mongocrypt_status_t *status) {
bool mc_FLE2RangeFindSpec_parse(mc_FLE2RangeFindSpec_t *out, const bson_iter_t *in, mongocrypt_status_t *status) {
BSON_ASSERT_PARAM(out);
BSON_ASSERT_PARAM(in);

Expand All @@ -360,7 +351,7 @@ bool mc_FLE2RangeFindSpec_parse(mc_FLE2RangeFindSpec_t *out,
BSON_ASSERT(field);

IF_FIELD(edgesInfo) {
if (!mc_FLE2RangeFindSpecEdgesInfo_parse(&out->edgesInfo.value, &iter, use_range_v2, status)) {
if (!mc_FLE2RangeFindSpecEdgesInfo_parse(&out->edgesInfo.value, &iter, status)) {
goto fail;
}
out->edgesInfo.set = true;
Expand Down Expand Up @@ -422,10 +413,7 @@ bool mc_FLE2RangeFindSpec_parse(mc_FLE2RangeFindSpec_t *out,
#undef ERROR_PREFIX
#define ERROR_PREFIX "Error parsing FLE2RangeInsertSpec: "

bool mc_FLE2RangeInsertSpec_parse(mc_FLE2RangeInsertSpec_t *out,
const bson_iter_t *in,
bool use_range_v2,
mongocrypt_status_t *status) {
bool mc_FLE2RangeInsertSpec_parse(mc_FLE2RangeInsertSpec_t *out, const bson_iter_t *in, mongocrypt_status_t *status) {
BSON_ASSERT_PARAM(out);
BSON_ASSERT_PARAM(in);

Expand Down Expand Up @@ -494,11 +482,6 @@ bool mc_FLE2RangeInsertSpec_parse(mc_FLE2RangeInsertSpec_t *out,
// Do not error if precision is not present. Precision optional and only
// applies to double/decimal128.

if (!use_range_v2 && out->trimFactor.set) {
CLIENT_ERR(ERROR_PREFIX "'trimFactor' is not supported for QE range v1");
return false;
}

return true;

fail:
Expand Down
2 changes: 1 addition & 1 deletion src/mc-fle2-find-range-payload-private-v2.h
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ typedef struct {

void mc_FLE2FindRangePayloadV2_init(mc_FLE2FindRangePayloadV2_t *payload);

bool mc_FLE2FindRangePayloadV2_serialize(const mc_FLE2FindRangePayloadV2_t *payload, bson_t *out, bool use_range_v2);
bool mc_FLE2FindRangePayloadV2_serialize(const mc_FLE2FindRangePayloadV2_t *payload, bson_t *out);

void mc_FLE2FindRangePayloadV2_cleanup(mc_FLE2FindRangePayloadV2_t *payload);

Expand Down
48 changes: 23 additions & 25 deletions src/mc-fle2-find-range-payload-v2.c
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ void mc_FLE2FindRangePayloadV2_cleanup(mc_FLE2FindRangePayloadV2_t *payload) {
return false; \
}

bool mc_FLE2FindRangePayloadV2_serialize(const mc_FLE2FindRangePayloadV2_t *payload, bson_t *out, bool use_range_v2) {
bool mc_FLE2FindRangePayloadV2_serialize(const mc_FLE2FindRangePayloadV2_t *payload, bson_t *out) {
BSON_ASSERT_PARAM(out);
BSON_ASSERT_PARAM(payload);

Expand Down Expand Up @@ -131,39 +131,37 @@ bool mc_FLE2FindRangePayloadV2_serialize(const mc_FLE2FindRangePayloadV2_t *payl
return false;
}

if (use_range_v2) {
// Encode parameters that were used to generate the mincover.
// The crypto parameters are all optionally set. Find payloads may come in pairs (a lower and upper bound).
// One of the pair includes the mincover. The other payload was not generated with crypto parameters.
// Encode parameters that were used to generate the mincover.
// The crypto parameters are all optionally set. Find payloads may come in pairs (a lower and upper bound).
// One of the pair includes the mincover. The other payload was not generated with crypto parameters.

if (payload->sparsity.set) {
if (!BSON_APPEND_INT64(out, "sp", payload->sparsity.value)) {
return false;
}
if (payload->sparsity.set) {
if (!BSON_APPEND_INT64(out, "sp", payload->sparsity.value)) {
return false;
}
}

if (payload->precision.set) {
if (!BSON_APPEND_INT32(out, "pn", payload->precision.value)) {
return false;
}
if (payload->precision.set) {
if (!BSON_APPEND_INT32(out, "pn", payload->precision.value)) {
return false;
}
}

if (payload->trimFactor.set) {
if (!BSON_APPEND_INT32(out, "tf", payload->trimFactor.value)) {
return false;
}
if (payload->trimFactor.set) {
if (!BSON_APPEND_INT32(out, "tf", payload->trimFactor.value)) {
return false;
}
}

if (payload->indexMin.value_type != BSON_TYPE_EOD) {
if (!BSON_APPEND_VALUE(out, "mn", &payload->indexMin)) {
return false;
}
if (payload->indexMin.value_type != BSON_TYPE_EOD) {
if (!BSON_APPEND_VALUE(out, "mn", &payload->indexMin)) {
return false;
}
}

if (payload->indexMax.value_type != BSON_TYPE_EOD) {
if (!BSON_APPEND_VALUE(out, "mx", &payload->indexMax)) {
return false;
}
if (payload->indexMax.value_type != BSON_TYPE_EOD) {
if (!BSON_APPEND_VALUE(out, "mx", &payload->indexMax)) {
return false;
}
}

Expand Down
4 changes: 1 addition & 3 deletions src/mc-fle2-insert-update-payload-private-v2.h
Original file line number Diff line number Diff line change
Expand Up @@ -158,9 +158,7 @@ const _mongocrypt_buffer_t *mc_FLE2InsertUpdatePayloadV2_decrypt(_mongocrypt_cry

bool mc_FLE2InsertUpdatePayloadV2_serialize(const mc_FLE2InsertUpdatePayloadV2_t *payload, bson_t *out);

bool mc_FLE2InsertUpdatePayloadV2_serializeForRange(const mc_FLE2InsertUpdatePayloadV2_t *payload,
bson_t *out,
bool use_range_v2);
bool mc_FLE2InsertUpdatePayloadV2_serializeForRange(const mc_FLE2InsertUpdatePayloadV2_t *payload, bson_t *out);

bool mc_FLE2InsertUpdatePayloadV2_serializeForTextSearch(const mc_FLE2InsertUpdatePayloadV2_t *payload, bson_t *out);

Expand Down
48 changes: 22 additions & 26 deletions src/mc-fle2-insert-update-payload-v2.c
Original file line number Diff line number Diff line change
Expand Up @@ -330,9 +330,7 @@ bool mc_FLE2InsertUpdatePayloadV2_serialize(const mc_FLE2InsertUpdatePayloadV2_t
return true;
}

bool mc_FLE2InsertUpdatePayloadV2_serializeForRange(const mc_FLE2InsertUpdatePayloadV2_t *payload,
bson_t *out,
bool use_range_v2) {
bool mc_FLE2InsertUpdatePayloadV2_serializeForRange(const mc_FLE2InsertUpdatePayloadV2_t *payload, bson_t *out) {
BSON_ASSERT_PARAM(out);
BSON_ASSERT_PARAM(payload);

Expand Down Expand Up @@ -376,34 +374,32 @@ bool mc_FLE2InsertUpdatePayloadV2_serializeForRange(const mc_FLE2InsertUpdatePay
return false;
}

if (use_range_v2) {
// Encode parameters that were used to generate the payload.
BSON_ASSERT(payload->sparsity.set);
if (!BSON_APPEND_INT64(out, "sp", payload->sparsity.value)) {
return false;
}

// Precision may be unset.
if (payload->precision.set) {
if (!BSON_APPEND_INT32(out, "pn", payload->precision.value)) {
return false;
}
}
// Encode parameters that were used to generate the payload.
BSON_ASSERT(payload->sparsity.set);
if (!BSON_APPEND_INT64(out, "sp", payload->sparsity.value)) {
return false;
}

BSON_ASSERT(payload->trimFactor.set);
if (!BSON_APPEND_INT32(out, "tf", payload->trimFactor.value)) {
// Precision may be unset.
if (payload->precision.set) {
if (!BSON_APPEND_INT32(out, "pn", payload->precision.value)) {
return false;
}
}

BSON_ASSERT(payload->indexMin.value_type != BSON_TYPE_EOD);
if (!BSON_APPEND_VALUE(out, "mn", &payload->indexMin)) {
return false;
}
BSON_ASSERT(payload->trimFactor.set);
if (!BSON_APPEND_INT32(out, "tf", payload->trimFactor.value)) {
return false;
}

BSON_ASSERT(payload->indexMax.value_type != BSON_TYPE_EOD);
if (!BSON_APPEND_VALUE(out, "mx", &payload->indexMax)) {
return false;
}
BSON_ASSERT(payload->indexMin.value_type != BSON_TYPE_EOD);
if (!BSON_APPEND_VALUE(out, "mn", &payload->indexMin)) {
return false;
}

BSON_ASSERT(payload->indexMax.value_type != BSON_TYPE_EOD);
if (!BSON_APPEND_VALUE(out, "mx", &payload->indexMax)) {
return false;
}

return true;
Expand Down
8 changes: 4 additions & 4 deletions src/mc-range-edge-generation-private.h
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ typedef struct {

// mc_getEdgesInt32 implements the Edge Generation algorithm described in
// SERVER-67751 for int32_t.
mc_edges_t *mc_getEdgesInt32(mc_getEdgesInt32_args_t args, mongocrypt_status_t *status, bool use_range_v2);
mc_edges_t *mc_getEdgesInt32(mc_getEdgesInt32_args_t args, mongocrypt_status_t *status);

typedef struct {
int64_t value;
Expand All @@ -65,7 +65,7 @@ typedef struct {

// mc_getEdgesInt64 implements the Edge Generation algorithm described in
// SERVER-67751 for int64_t.
mc_edges_t *mc_getEdgesInt64(mc_getEdgesInt64_args_t args, mongocrypt_status_t *status, bool use_range_v2);
mc_edges_t *mc_getEdgesInt64(mc_getEdgesInt64_args_t args, mongocrypt_status_t *status);

typedef struct {
double value;
Expand All @@ -78,7 +78,7 @@ typedef struct {

// mc_getEdgesDouble implements the Edge Generation algorithm described in
// SERVER-67751 for double.
mc_edges_t *mc_getEdgesDouble(mc_getEdgesDouble_args_t args, mongocrypt_status_t *status, bool use_range_v2);
mc_edges_t *mc_getEdgesDouble(mc_getEdgesDouble_args_t args, mongocrypt_status_t *status);

#if MONGOCRYPT_HAVE_DECIMAL128_SUPPORT()
typedef struct {
Expand All @@ -89,7 +89,7 @@ typedef struct {
mc_optional_int32_t trimFactor;
} mc_getEdgesDecimal128_args_t;

mc_edges_t *mc_getEdgesDecimal128(mc_getEdgesDecimal128_args_t args, mongocrypt_status_t *status, bool use_range_v2);
mc_edges_t *mc_getEdgesDecimal128(mc_getEdgesDecimal128_args_t args, mongocrypt_status_t *status);
#endif // MONGOCRYPT_HAVE_DECIMAL128_SUPPORT

BSON_STATIC_ASSERT2(ull_is_u64, sizeof(uint64_t) == sizeof(unsigned long long));
Expand Down
Loading