diff --git a/src/mc-efc-private.h b/src/mc-efc-private.h index bcf90f16e..79b8676d9 100644 --- a/src/mc-efc-private.h +++ b/src/mc-efc-private.h @@ -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); diff --git a/src/mc-efc.c b/src/mc-efc.c index 946bac717..28f25ffdf 100644 --- a/src/mc-efc.c +++ b/src/mc-efc.c @@ -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; @@ -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.", @@ -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); @@ -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. diff --git a/src/mc-fle2-encryption-placeholder-private.h b/src/mc-fle2-encryption-placeholder-private.h index 5674d828a..0c7a02d22 100644 --- a/src/mc-fle2-encryption-placeholder-private.h +++ b/src/mc-fle2-encryption-placeholder-private.h @@ -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 @@ -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. diff --git a/src/mc-fle2-encryption-placeholder.c b/src/mc-fle2-encryption-placeholder.c index cb8c2258f..81f057340 100644 --- a/src/mc-fle2-encryption-placeholder.c +++ b/src/mc-fle2-encryption-placeholder.c @@ -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, @@ -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: @@ -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); @@ -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; @@ -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); @@ -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: diff --git a/src/mc-fle2-find-range-payload-private-v2.h b/src/mc-fle2-find-range-payload-private-v2.h index 79bbd8ca9..f09b72e4f 100644 --- a/src/mc-fle2-find-range-payload-private-v2.h +++ b/src/mc-fle2-find-range-payload-private-v2.h @@ -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); diff --git a/src/mc-fle2-find-range-payload-v2.c b/src/mc-fle2-find-range-payload-v2.c index e07cd7678..461adcc78 100644 --- a/src/mc-fle2-find-range-payload-v2.c +++ b/src/mc-fle2-find-range-payload-v2.c @@ -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); @@ -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; } } diff --git a/src/mc-fle2-insert-update-payload-private-v2.h b/src/mc-fle2-insert-update-payload-private-v2.h index fe1c7476a..2f317b95e 100644 --- a/src/mc-fle2-insert-update-payload-private-v2.h +++ b/src/mc-fle2-insert-update-payload-private-v2.h @@ -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); diff --git a/src/mc-fle2-insert-update-payload-v2.c b/src/mc-fle2-insert-update-payload-v2.c index 346c10521..61e664d5f 100644 --- a/src/mc-fle2-insert-update-payload-v2.c +++ b/src/mc-fle2-insert-update-payload-v2.c @@ -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); @@ -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; diff --git a/src/mc-range-edge-generation-private.h b/src/mc-range-edge-generation-private.h index 2d6eda43f..303b7ffa0 100644 --- a/src/mc-range-edge-generation-private.h +++ b/src/mc-range-edge-generation-private.h @@ -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; @@ -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; @@ -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 { @@ -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)); diff --git a/src/mc-range-edge-generation.c b/src/mc-range-edge-generation.c index 8f3dd9b96..41bc80071 100644 --- a/src/mc-range-edge-generation.c +++ b/src/mc-range-edge-generation.c @@ -35,11 +35,8 @@ int32_t mc_edges_get_used_trimFactor(const mc_edges_t *edges) { return edges->usedTrimFactor; } -static mc_edges_t *mc_edges_new(const char *leaf, - size_t sparsity, - mc_optional_int32_t opt_trimFactor, - mongocrypt_status_t *status, - bool use_range_v2) { +static mc_edges_t * +mc_edges_new(const char *leaf, size_t sparsity, mc_optional_int32_t opt_trimFactor, mongocrypt_status_t *status) { BSON_ASSERT_PARAM(leaf); if (sparsity < 1) { CLIENT_ERR("sparsity must be 1 or larger"); @@ -47,7 +44,7 @@ static mc_edges_t *mc_edges_new(const char *leaf, } const size_t leaf_len = strlen(leaf); - const int32_t trimFactor = trimFactorDefault(leaf_len, opt_trimFactor, use_range_v2); + const int32_t trimFactor = trimFactorDefault(leaf_len, opt_trimFactor); if (trimFactor != 0 && mc_cmp_greater_equal_su(trimFactor, leaf_len)) { // We append a total of leaf_len + 1 (for the root) - trimFactor edges. When this number is equal to 1, we // degenerate into equality, which is not desired, so trimFactor must be less than leaf_len. @@ -163,7 +160,7 @@ mc_bitstring mc_convert_to_bitstring_u128(mlib_int128 i) { return ret; } -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) { mc_OSTType_Int32 got; if (!mc_getTypeInfo32((mc_getTypeInfo32_args_t){.value = args.value, .min = args.min, .max = args.max}, &got, @@ -179,11 +176,11 @@ mc_edges_t *mc_getEdgesInt32(mc_getEdgesInt32_args_t args, mongocrypt_status_t * mc_bitstring valueBin = mc_convert_to_bitstring_u32(got.value); size_t offset = mc_count_leading_zeros_u32(got.max); const char *leaf = valueBin.str + offset; - mc_edges_t *ret = mc_edges_new(leaf, args.sparsity, args.trimFactor, status, use_range_v2); + mc_edges_t *ret = mc_edges_new(leaf, args.sparsity, args.trimFactor, status); return ret; } -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) { mc_OSTType_Int64 got; if (!mc_getTypeInfo64((mc_getTypeInfo64_args_t){.value = args.value, .min = args.min, .max = args.max}, &got, @@ -199,19 +196,18 @@ mc_edges_t *mc_getEdgesInt64(mc_getEdgesInt64_args_t args, mongocrypt_status_t * mc_bitstring valueBin = mc_convert_to_bitstring_u64(got.value); size_t offset = mc_count_leading_zeros_u64(got.max); const char *leaf = valueBin.str + offset; - mc_edges_t *ret = mc_edges_new(leaf, args.sparsity, args.trimFactor, status, use_range_v2); + mc_edges_t *ret = mc_edges_new(leaf, args.sparsity, args.trimFactor, status); return ret; } -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) { mc_OSTType_Double got; if (!mc_getTypeInfoDouble((mc_getTypeInfoDouble_args_t){.value = args.value, .min = args.min, .max = args.max, .precision = args.precision}, &got, - status, - use_range_v2)) { + status)) { return NULL; } @@ -223,12 +219,12 @@ mc_edges_t *mc_getEdgesDouble(mc_getEdgesDouble_args_t args, mongocrypt_status_t mc_bitstring valueBin = mc_convert_to_bitstring_u64(got.value); size_t offset = mc_count_leading_zeros_u64(got.max); const char *leaf = valueBin.str + offset; - mc_edges_t *ret = mc_edges_new(leaf, args.sparsity, args.trimFactor, status, use_range_v2); + mc_edges_t *ret = mc_edges_new(leaf, args.sparsity, args.trimFactor, status); return ret; } #if MONGOCRYPT_HAVE_DECIMAL128_SUPPORT() -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) { mc_OSTType_Decimal128 got; if (!mc_getTypeInfoDecimal128( (mc_getTypeInfoDecimal128_args_t){ @@ -238,8 +234,7 @@ mc_edges_t *mc_getEdgesDecimal128(mc_getEdgesDecimal128_args_t args, mongocrypt_ .precision = args.precision, }, &got, - status, - use_range_v2)) { + status)) { return NULL; } @@ -248,7 +243,7 @@ mc_edges_t *mc_getEdgesDecimal128(mc_getEdgesDecimal128_args_t args, mongocrypt_ mc_bitstring bits = mc_convert_to_bitstring_u128(got.value); size_t offset = mc_count_leading_zeros_u128(got.max); const char *leaf = bits.str + offset; - mc_edges_t *ret = mc_edges_new(leaf, args.sparsity, args.trimFactor, status, use_range_v2); + mc_edges_t *ret = mc_edges_new(leaf, args.sparsity, args.trimFactor, status); return ret; } #endif // MONGOCRYPT_HAVE_DECIMAL128_SUPPORT diff --git a/src/mc-range-encoding-private.h b/src/mc-range-encoding-private.h index 45022f62e..8c2832c3a 100644 --- a/src/mc-range-encoding-private.h +++ b/src/mc-range-encoding-private.h @@ -97,8 +97,7 @@ bool mc_canUsePrecisionModeDouble(double min, * `out`. Returns false and sets `status` on error. */ bool mc_getTypeInfoDouble(mc_getTypeInfoDouble_args_t args, mc_OSTType_Double *out, - mongocrypt_status_t *status, - bool use_range_v2) MONGOCRYPT_WARN_UNUSED_RESULT; + mongocrypt_status_t *status) MONGOCRYPT_WARN_UNUSED_RESULT; #if MONGOCRYPT_HAVE_DECIMAL128_SUPPORT() /** @@ -131,11 +130,10 @@ bool mc_canUsePrecisionModeDecimal(mc_dec128 min, */ bool mc_getTypeInfoDecimal128(mc_getTypeInfoDecimal128_args_t args, mc_OSTType_Decimal128 *out, - mongocrypt_status_t *status, - bool use_range_v2) MONGOCRYPT_WARN_UNUSED_RESULT; + mongocrypt_status_t *status) MONGOCRYPT_WARN_UNUSED_RESULT; #endif // MONGOCRYPT_HAVE_DECIMAL128_SUPPORT extern const int64_t mc_FLERangeSparsityDefault; -int32_t trimFactorDefault(size_t maxlen, mc_optional_int32_t trimFactor, bool use_range_v2); +int32_t trimFactorDefault(size_t maxlen, mc_optional_int32_t trimFactor); #endif /* MC_RANGE_ENCODING_PRIVATE_H */ diff --git a/src/mc-range-encoding.c b/src/mc-range-encoding.c index b513ef5f9..049a63a74 100644 --- a/src/mc-range-encoding.c +++ b/src/mc-range-encoding.c @@ -284,10 +284,7 @@ bool mc_canUsePrecisionModeDouble(double min, return true; } -bool mc_getTypeInfoDouble(mc_getTypeInfoDouble_args_t args, - mc_OSTType_Double *out, - mongocrypt_status_t *status, - bool use_range_v2) { +bool mc_getTypeInfoDouble(mc_getTypeInfoDouble_args_t args, mc_OSTType_Double *out, mongocrypt_status_t *status) { if (args.min.set != args.max.set || args.min.set != args.precision.set) { CLIENT_ERR("min, max, and precision must all be set or must all be unset"); return false; @@ -350,7 +347,7 @@ bool mc_getTypeInfoDouble(mc_getTypeInfoDouble_args_t args, use_precision_mode = mc_canUsePrecisionModeDouble(args.min.value, args.max.value, args.precision.value, &bits_range, status); - if (!use_precision_mode && use_range_v2) { + if (!use_precision_mode) { if (!mongocrypt_status_ok(status)) { return false; } @@ -604,8 +601,7 @@ bool mc_canUsePrecisionModeDecimal(mc_dec128 min, bool mc_getTypeInfoDecimal128(mc_getTypeInfoDecimal128_args_t args, mc_OSTType_Decimal128 *out, - mongocrypt_status_t *status, - bool use_range_v2) { + mongocrypt_status_t *status) { /// Basic param checks if (args.min.set != args.max.set || args.min.set != args.precision.set) { CLIENT_ERR("min, max, and precision must all be set or must all be unset"); @@ -673,7 +669,7 @@ bool mc_getTypeInfoDecimal128(mc_getTypeInfoDecimal128_args_t args, use_precision_mode = mc_canUsePrecisionModeDecimal(args.min.value, args.max.value, args.precision.value, &bits_range, status); - if (use_range_v2 && !use_precision_mode) { + if (!use_precision_mode) { if (!mongocrypt_status_ok(status)) { return false; } @@ -854,16 +850,11 @@ bool mc_getTypeInfoDecimal128(mc_getTypeInfoDecimal128_args_t args, const int64_t mc_FLERangeSparsityDefault = 2; static const int32_t mc_FLERangeTrimFactorDefault = 6; -int32_t trimFactorDefault(size_t maxlen, mc_optional_int32_t trimFactor, bool use_range_v2) { +int32_t trimFactorDefault(size_t maxlen, mc_optional_int32_t trimFactor) { if (trimFactor.set) { return trimFactor.value; } - if (!use_range_v2) { - // Preserve old default. - return 0; - } - if (mc_cmp_greater_su(mc_FLERangeTrimFactorDefault, maxlen - 1)) { return (int32_t)(maxlen - 1); } else { diff --git a/src/mc-range-mincover-generator.template.h b/src/mc-range-mincover-generator.template.h index 81a915fab..e7770b019 100644 --- a/src/mc-range-mincover-generator.template.h +++ b/src/mc-range-mincover-generator.template.h @@ -100,8 +100,7 @@ static inline DECORATE_NAME(MinCoverGenerator) UINT_T max, size_t sparsity, mc_optional_int32_t opt_trimFactor, - mongocrypt_status_t *status, - bool use_range_v2) { + mongocrypt_status_t *status) { BSON_ASSERT_PARAM(status); if (UINT_COMPARE(rangeMin, rangeMax) > 0) { @@ -123,7 +122,7 @@ static inline DECORATE_NAME(MinCoverGenerator) return NULL; } size_t maxlen = (size_t)BITS - DECORATE_NAME(mc_count_leading_zeros)(max); - int32_t trimFactor = trimFactorDefault(maxlen, opt_trimFactor, use_range_v2); + int32_t trimFactor = trimFactorDefault(maxlen, opt_trimFactor); if (trimFactor != 0 && mc_cmp_greater_equal_su(trimFactor, maxlen)) { CLIENT_ERR("Trim factor must be less than the number of bits (%zu) used to represent an element of the domain, " "but got %" PRId32, diff --git a/src/mc-range-mincover-private.h b/src/mc-range-mincover-private.h index 4ca291400..0a77adb27 100644 --- a/src/mc-range-mincover-private.h +++ b/src/mc-range-mincover-private.h @@ -53,8 +53,7 @@ typedef struct { // mc_getMincoverInt32 implements the Mincover Generation algorithm described in // SERVER-68600 for int32_t. mc_mincover_t *mc_getMincoverInt32(mc_getMincoverInt32_args_t args, - mongocrypt_status_t *status, - bool use_range_v2) MONGOCRYPT_WARN_UNUSED_RESULT; + mongocrypt_status_t *status) MONGOCRYPT_WARN_UNUSED_RESULT; typedef struct { int64_t lowerBound; @@ -70,8 +69,7 @@ typedef struct { // mc_getMincoverInt64 implements the Mincover Generation algorithm described in // SERVER-68600 for int64_t. mc_mincover_t *mc_getMincoverInt64(mc_getMincoverInt64_args_t args, - mongocrypt_status_t *status, - bool use_range_v2) MONGOCRYPT_WARN_UNUSED_RESULT; + mongocrypt_status_t *status) MONGOCRYPT_WARN_UNUSED_RESULT; typedef struct { double lowerBound; @@ -88,8 +86,7 @@ typedef struct { // mc_getMincoverDouble implements the Mincover Generation algorithm described // in SERVER-68600 for double. mc_mincover_t *mc_getMincoverDouble(mc_getMincoverDouble_args_t args, - mongocrypt_status_t *status, - bool use_range_v2) MONGOCRYPT_WARN_UNUSED_RESULT; + mongocrypt_status_t *status) MONGOCRYPT_WARN_UNUSED_RESULT; #if MONGOCRYPT_HAVE_DECIMAL128_SUPPORT() typedef struct { @@ -106,8 +103,7 @@ typedef struct { // mc_getMincoverDecimal128 implements the Mincover Generation algorithm // described in SERVER-68600 for Decimal128 (as mc_dec128). mc_mincover_t *mc_getMincoverDecimal128(mc_getMincoverDecimal128_args_t args, - mongocrypt_status_t *status, - bool use_range_v2) MONGOCRYPT_WARN_UNUSED_RESULT; + mongocrypt_status_t *status) MONGOCRYPT_WARN_UNUSED_RESULT; #endif // MONGOCRYPT_HAVE_DECIMAL128_SUPPORT #endif /* MC_RANGE_MINCOVER_PRIVATE_H */ diff --git a/src/mc-range-mincover.c b/src/mc-range-mincover.c index b0e90e2e7..febe1bd64 100644 --- a/src/mc-range-mincover.c +++ b/src/mc-range-mincover.c @@ -133,7 +133,7 @@ void mc_mincover_destroy(mc_mincover_t *mincover) { } else \ (void)0 -mc_mincover_t *mc_getMincoverInt32(mc_getMincoverInt32_args_t args, mongocrypt_status_t *status, bool use_range_v2) { +mc_mincover_t *mc_getMincoverInt32(mc_getMincoverInt32_args_t args, mongocrypt_status_t *status) { BSON_ASSERT_PARAM(status); CHECK_BOUNDS(args, PRId32, IDENTITY, LESSTHAN); mc_OSTType_Int32 a, b; @@ -156,7 +156,7 @@ mc_mincover_t *mc_getMincoverInt32(mc_getMincoverInt32_args_t args, mongocrypt_s } MinCoverGenerator_u32 *mcg = - MinCoverGenerator_new_u32(a.value, b.value, a.max, args.sparsity, args.trimFactor, status, use_range_v2); + MinCoverGenerator_new_u32(a.value, b.value, a.max, args.sparsity, args.trimFactor, status); if (!mcg) { return NULL; } @@ -166,7 +166,7 @@ mc_mincover_t *mc_getMincoverInt32(mc_getMincoverInt32_args_t args, mongocrypt_s return mc; } -mc_mincover_t *mc_getMincoverInt64(mc_getMincoverInt64_args_t args, mongocrypt_status_t *status, bool use_range_v2) { +mc_mincover_t *mc_getMincoverInt64(mc_getMincoverInt64_args_t args, mongocrypt_status_t *status) { BSON_ASSERT_PARAM(status); CHECK_BOUNDS(args, PRId64, IDENTITY, LESSTHAN); mc_OSTType_Int64 a, b; @@ -189,7 +189,7 @@ mc_mincover_t *mc_getMincoverInt64(mc_getMincoverInt64_args_t args, mongocrypt_s } MinCoverGenerator_u64 *mcg = - MinCoverGenerator_new_u64(a.value, b.value, a.max, args.sparsity, args.trimFactor, status, use_range_v2); + MinCoverGenerator_new_u64(a.value, b.value, a.max, args.sparsity, args.trimFactor, status); if (!mcg) { return NULL; } @@ -201,7 +201,7 @@ mc_mincover_t *mc_getMincoverInt64(mc_getMincoverInt64_args_t args, mongocrypt_s // mc_getMincoverDouble implements the Mincover Generation algorithm described // in SERVER-68600 for double. -mc_mincover_t *mc_getMincoverDouble(mc_getMincoverDouble_args_t args, mongocrypt_status_t *status, bool use_range_v2) { +mc_mincover_t *mc_getMincoverDouble(mc_getMincoverDouble_args_t args, mongocrypt_status_t *status) { BSON_ASSERT_PARAM(status); CHECK_BOUNDS(args, "g", IDENTITY, LESSTHAN); @@ -211,8 +211,7 @@ mc_mincover_t *mc_getMincoverDouble(mc_getMincoverDouble_args_t args, mongocrypt .max = args.max, .precision = args.precision}, &a, - status, - use_range_v2)) { + status)) { return NULL; } if (!mc_getTypeInfoDouble((mc_getTypeInfoDouble_args_t){.value = args.upperBound, @@ -220,8 +219,7 @@ mc_mincover_t *mc_getMincoverDouble(mc_getMincoverDouble_args_t args, mongocrypt .max = args.max, .precision = args.precision}, &b, - status, - use_range_v2)) { + status)) { return NULL; } @@ -233,7 +231,7 @@ mc_mincover_t *mc_getMincoverDouble(mc_getMincoverDouble_args_t args, mongocrypt } MinCoverGenerator_u64 *mcg = - MinCoverGenerator_new_u64(a.value, b.value, a.max, args.sparsity, args.trimFactor, status, use_range_v2); + MinCoverGenerator_new_u64(a.value, b.value, a.max, args.sparsity, args.trimFactor, status); if (!mcg) { return NULL; } @@ -244,8 +242,7 @@ mc_mincover_t *mc_getMincoverDouble(mc_getMincoverDouble_args_t args, mongocrypt } #if MONGOCRYPT_HAVE_DECIMAL128_SUPPORT() -mc_mincover_t * -mc_getMincoverDecimal128(mc_getMincoverDecimal128_args_t args, mongocrypt_status_t *status, bool use_range_v2) { +mc_mincover_t *mc_getMincoverDecimal128(mc_getMincoverDecimal128_args_t args, mongocrypt_status_t *status) { BSON_ASSERT_PARAM(status); #define ToString(Dec) (mc_dec128_to_string(Dec).str) CHECK_BOUNDS(args, "s", ToString, mc_dec128_less); @@ -256,8 +253,7 @@ mc_getMincoverDecimal128(mc_getMincoverDecimal128_args_t args, mongocrypt_status .max = args.max, .precision = args.precision}, &a, - status, - use_range_v2)) { + status)) { return NULL; } if (!mc_getTypeInfoDecimal128((mc_getTypeInfoDecimal128_args_t){.value = args.upperBound, @@ -265,8 +261,7 @@ mc_getMincoverDecimal128(mc_getMincoverDecimal128_args_t args, mongocrypt_status .max = args.max, .precision = args.precision}, &b, - status, - use_range_v2)) { + status)) { return NULL; } @@ -278,7 +273,7 @@ mc_getMincoverDecimal128(mc_getMincoverDecimal128_args_t args, mongocrypt_status } MinCoverGenerator_u128 *mcg = - MinCoverGenerator_new_u128(a.value, b.value, a.max, args.sparsity, args.trimFactor, status, use_range_v2); + MinCoverGenerator_new_u128(a.value, b.value, a.max, args.sparsity, args.trimFactor, status); if (!mcg) { return NULL; } diff --git a/src/mc-rangeopts-private.h b/src/mc-rangeopts-private.h index 80f4c807c..13ba55063 100644 --- a/src/mc-rangeopts-private.h +++ b/src/mc-rangeopts-private.h @@ -55,7 +55,7 @@ BSON_STATIC_ASSERT2(alignof_mc_RangeOpts_t, * "trimFactor": Optional, * } */ -bool mc_RangeOpts_parse(mc_RangeOpts_t *ro, const bson_t *in, bool use_range_v2, mongocrypt_status_t *status); +bool mc_RangeOpts_parse(mc_RangeOpts_t *ro, const bson_t *in, mongocrypt_status_t *status); /* * mc_RangeOpts_to_FLE2RangeInsertSpec creates a placeholder value to be @@ -76,7 +76,6 @@ bool mc_RangeOpts_parse(mc_RangeOpts_t *ro, const bson_t *in, bool use_range_v2, bool mc_RangeOpts_to_FLE2RangeInsertSpec(const mc_RangeOpts_t *ro, const bson_t *v, bson_t *out, - bool use_range_v2, mongocrypt_status_t *status); /* mc_RangeOpts_appendMin appends the minimum value of the range for a given @@ -104,8 +103,7 @@ bool mc_RangeOpts_appendTrimFactor(const mc_RangeOpts_t *ro, bson_type_t valueType, const char *fieldName, bson_t *out, - mongocrypt_status_t *status, - bool use_range_v2); + mongocrypt_status_t *status); void mc_RangeOpts_cleanup(mc_RangeOpts_t *ro); diff --git a/src/mc-rangeopts.c b/src/mc-rangeopts.c index 44f6ff277..7c2770916 100644 --- a/src/mc-rangeopts.c +++ b/src/mc-rangeopts.c @@ -40,7 +40,7 @@ #define ERROR_PREFIX "Error parsing RangeOpts: " -bool mc_RangeOpts_parse(mc_RangeOpts_t *ro, const bson_t *in, bool use_range_v2, mongocrypt_status_t *status) { +bool mc_RangeOpts_parse(mc_RangeOpts_t *ro, const bson_t *in, mongocrypt_status_t *status) { bson_iter_t iter = {0}; bool has_min = false, has_max = false, has_sparsity = false, has_precision = false, has_trimFactor = false; BSON_ASSERT_PARAM(ro); @@ -116,7 +116,7 @@ bool mc_RangeOpts_parse(mc_RangeOpts_t *ro, const bson_t *in, bool use_range_v2, // applies to double/decimal128. // Do not error if trimFactor is not present. It is optional. - if (!has_sparsity && use_range_v2) { + if (!has_sparsity) { ro->sparsity = mc_FLERangeSparsityDefault; } @@ -187,11 +187,6 @@ bool mc_RangeOpts_parse(mc_RangeOpts_t *ro, const bson_t *in, bool use_range_v2, } if (ro->trimFactor.set) { - if (!use_range_v2) { - // Once `use_range_v2` is default true, this block may be removed. - CLIENT_ERR(ERROR_PREFIX "'trimFactor' is not supported for QE range v1"); - return false; - } // At this point, we do not know the type of the field if min and max are unspecified. Wait to // validate the value of trimFactor. } @@ -205,7 +200,6 @@ bool mc_RangeOpts_parse(mc_RangeOpts_t *ro, const bson_t *in, bool use_range_v2, bool mc_RangeOpts_to_FLE2RangeInsertSpec(const mc_RangeOpts_t *ro, const bson_t *v, bson_t *out, - bool use_range_v2, mongocrypt_status_t *status) { BSON_ASSERT_PARAM(ro); BSON_ASSERT_PARAM(v); @@ -244,10 +238,8 @@ bool mc_RangeOpts_to_FLE2RangeInsertSpec(const mc_RangeOpts_t *ro, } } - if (use_range_v2) { - if (!mc_RangeOpts_appendTrimFactor(ro, bson_iter_type(&v_iter), "trimFactor", &child, status, use_range_v2)) { - return false; - } + if (!mc_RangeOpts_appendTrimFactor(ro, bson_iter_type(&v_iter), "trimFactor", &child, status)) { + return false; } if (!bson_append_document_end(out, &child)) { CLIENT_ERR(ERROR_PREFIX "Error appending to BSON"); @@ -371,11 +363,8 @@ bool mc_RangeOpts_appendMax(const mc_RangeOpts_t *ro, // Used to calculate max trim factor. Returns the number of bits required to represent any number in // the domain. -static bool mc_getNumberOfBits(const mc_RangeOpts_t *ro, - bson_type_t valueType, - uint32_t *bitsOut, - mongocrypt_status_t *status, - bool use_range_v2) { +static bool +mc_getNumberOfBits(const mc_RangeOpts_t *ro, bson_type_t valueType, uint32_t *bitsOut, mongocrypt_status_t *status) { BSON_ASSERT_PARAM(ro); BSON_ASSERT_PARAM(bitsOut); @@ -442,7 +431,7 @@ static bool mc_getNumberOfBits(const mc_RangeOpts_t *ro, } mc_getTypeInfoDouble_args_t args = {value, rmin, rmax, prec}; mc_OSTType_Double out; - if (!mc_getTypeInfoDouble(args, &out, status, use_range_v2)) { + if (!mc_getTypeInfoDouble(args, &out, status)) { return false; } *bitsOut = 64 - (uint32_t)mc_count_leading_zeros_u64(out.max); @@ -461,7 +450,7 @@ static bool mc_getNumberOfBits(const mc_RangeOpts_t *ro, } mc_getTypeInfoDecimal128_args_t args = {value, rmin, rmax, prec}; mc_OSTType_Decimal128 out; - if (!mc_getTypeInfoDecimal128(args, &out, status, use_range_v2)) { + if (!mc_getTypeInfoDecimal128(args, &out, status)) { return false; } *bitsOut = 128 - (uint32_t)mc_count_leading_zeros_u128(out.max); @@ -479,8 +468,7 @@ bool mc_RangeOpts_appendTrimFactor(const mc_RangeOpts_t *ro, bson_type_t valueType, const char *fieldName, bson_t *out, - mongocrypt_status_t *status, - bool use_range_v2) { + mongocrypt_status_t *status) { BSON_ASSERT_PARAM(ro); BSON_ASSERT_PARAM(fieldName); BSON_ASSERT_PARAM(out); @@ -492,7 +480,7 @@ bool mc_RangeOpts_appendTrimFactor(const mc_RangeOpts_t *ro, } uint32_t nbits; - if (!mc_getNumberOfBits(ro, valueType, &nbits, status, use_range_v2)) { + if (!mc_getNumberOfBits(ro, valueType, &nbits, status)) { return false; } // if nbits = 0, we want to allow trim factor = 0. diff --git a/src/mc-schema-broker-private.h b/src/mc-schema-broker-private.h index 5aa550676..287d29ac6 100644 --- a/src/mc-schema-broker-private.h +++ b/src/mc-schema-broker-private.h @@ -34,9 +34,6 @@ mc_schema_broker_t *mc_schema_broker_new(void); void mc_schema_broker_destroy(mc_schema_broker_t *sb); -// mc_schema_broker_use_rangev2 enables rangev2 behavior. TODO(MONGOCRYPT-711) remove once rangev1 code is removed. -void mc_schema_broker_use_rangev2(mc_schema_broker_t *sb); - // mc_schema_broker_request requests a schema for a collection. Ignores duplicates. // Returns error if two requests have different databases (not-yet supported). bool mc_schema_broker_request(mc_schema_broker_t *sb, const char *db, const char *coll, mongocrypt_status_t *status); diff --git a/src/mc-schema-broker.c b/src/mc-schema-broker.c index 34f06a43b..461692235 100644 --- a/src/mc-schema-broker.c +++ b/src/mc-schema-broker.c @@ -50,18 +50,12 @@ struct mc_schema_broker_t { char *db; // Database shared by all schemas. mc_schema_entry_t *ll; size_t ll_len; - bool use_range_v2; }; mc_schema_broker_t *mc_schema_broker_new(void) { return bson_malloc0(sizeof(mc_schema_broker_t)); } -void mc_schema_broker_use_rangev2(mc_schema_broker_t *sb) { - BSON_ASSERT_PARAM(sb); - sb->use_range_v2 = true; -} - bool mc_schema_broker_request(mc_schema_broker_t *sb, const char *db, const char *coll, mongocrypt_status_t *status) { BSON_ASSERT_PARAM(sb); BSON_ASSERT_PARAM(db); @@ -208,7 +202,6 @@ static inline bool mc_schema_entry_satisfy_from_collinfo(mc_schema_entry_t *se, const bson_t *collinfo, const char *coll, const char *db, - bool use_range_v2, mongocrypt_status_t *status) { BSON_ASSERT_PARAM(se); BSON_ASSERT_PARAM(collinfo); @@ -255,7 +248,7 @@ static inline bool mc_schema_entry_satisfy_from_collinfo(mc_schema_entry_t *se, return false; } - if (!mc_EncryptedFieldConfig_parse(&se->encryptedFields.efc, &se->encryptedFields.bson, status, use_range_v2)) { + if (!mc_EncryptedFieldConfig_parse(&se->encryptedFields.efc, &se->encryptedFields.bson, status)) { return false; } se->encryptedFields.set = true; @@ -351,7 +344,7 @@ bool mc_schema_broker_satisfy_from_collinfo(mc_schema_broker_t *sb, } } - if (!mc_schema_entry_satisfy_from_collinfo(se, collinfo, coll, sb->db, sb->use_range_v2, status)) { + if (!mc_schema_entry_satisfy_from_collinfo(se, collinfo, coll, sb->db, status)) { return false; } @@ -426,10 +419,7 @@ bool mc_schema_broker_satisfy_from_encryptedFieldsMap(mc_schema_broker_t *sb, goto loop_fail; } - if (!mc_EncryptedFieldConfig_parse(&it->encryptedFields.efc, - &it->encryptedFields.bson, - status, - sb->use_range_v2)) { + if (!mc_EncryptedFieldConfig_parse(&it->encryptedFields.efc, &it->encryptedFields.bson, status)) { goto loop_fail; } @@ -473,7 +463,7 @@ bool mc_schema_broker_satisfy_from_cache(mc_schema_broker_t *sb, goto loop_skip; } - if (!mc_schema_entry_satisfy_from_collinfo(it, collinfo, sb->db, it->coll, sb->use_range_v2, status)) { + if (!mc_schema_entry_satisfy_from_collinfo(it, collinfo, sb->db, it->coll, status)) { goto loop_fail; } diff --git a/src/mongocrypt-ctx-encrypt.c b/src/mongocrypt-ctx-encrypt.c index 25503c5d0..119d86069 100644 --- a/src/mongocrypt-ctx-encrypt.c +++ b/src/mongocrypt-ctx-encrypt.c @@ -672,7 +672,6 @@ typedef struct { // must omit the "encryptionInformation" field when sent to mongod / mongos. static moe_result must_omit_encryptionInformation(const char *command_name, const bson_t *command, - bool use_range_v2, const mc_EncryptedFieldConfig_t *efc, mongocrypt_status_t *status) { // eligible_commands may omit encryptionInformation if the command does not @@ -697,12 +696,10 @@ static moe_result must_omit_encryptionInformation(const char *command_name, // - Server 8.0 requires `encryptionInformation` if "range" fields are referenced. Otherwise ignores. // Only send `encryptionInformation` if "range" fields are present to support both server versions. bool uses_range_fields = false; - if (use_range_v2) { - for (const mc_EncryptedField_t *ef = efc->fields; ef != NULL; ef = ef->next) { - if (ef->supported_queries & SUPPORTS_RANGE_QUERIES) { - uses_range_fields = true; - break; - } + for (const mc_EncryptedField_t *ef = efc->fields; ef != NULL; ef = ef->next) { + if (ef->supported_queries & SUPPORTS_RANGE_QUERIES) { + uses_range_fields = true; + break; } } return (moe_result){.ok = true, .must_omit = !uses_range_fields}; @@ -819,7 +816,7 @@ static bool _fle2_append_compactionTokens(mongocrypt_t *crypt, const _mongocrypt_buffer_t *ecoct_buf = mc_ECOCToken_get(ecoct); - if (crypt->opts.use_range_v2 && (ptr->supported_queries & SUPPORTS_RANGE_QUERIES)) { + if ((ptr->supported_queries & SUPPORTS_RANGE_QUERIES)) { // Append the document {ecoc: , anchorPaddingToken: } esct = mc_ESCToken_new(crypto, cl1t, status); if (!esct) { @@ -1140,11 +1137,7 @@ static bool _fle2_finalize(mongocrypt_ctx_t *ctx, mongocrypt_binary_t *out) { const mc_EncryptedFieldConfig_t *target_efc = mc_schema_broker_get_encryptedFields(ectx->sb, ectx->target_coll, NULL); - moe_result result = must_omit_encryptionInformation(command_name, - &converted, - ctx->crypt->opts.use_range_v2, - target_efc, - ctx->status); + moe_result result = must_omit_encryptionInformation(command_name, &converted, target_efc, ctx->status); if (!result.ok) { bson_destroy(&converted); return _mongocrypt_ctx_fail(ctx); @@ -1312,10 +1305,8 @@ static bool _fle2_finalize_explicit(mongocrypt_ctx_t *ctx, mongocrypt_binary_t * if (ctx->opts.query_type.set) { switch (ctx->opts.query_type.value) { case MONGOCRYPT_QUERY_TYPE_RANGEPREVIEW_DEPRECATED: - if (ctx->crypt->opts.use_range_v2) { - _mongocrypt_ctx_fail_w_msg(ctx, "Cannot use rangePreview query type with Range V2"); - goto fail; - } + _mongocrypt_ctx_fail_w_msg(ctx, "Cannot use rangePreview query type with Range V2"); + goto fail; // fallthrough case MONGOCRYPT_QUERY_TYPE_RANGE: case MONGOCRYPT_QUERY_TYPE_EQUALITY: marking.u.fle2.type = MONGOCRYPT_FLE2_PLACEHOLDER_TYPE_FIND; break; @@ -1329,10 +1320,8 @@ static bool _fle2_finalize_explicit(mongocrypt_ctx_t *ctx, mongocrypt_binary_t * case MONGOCRYPT_INDEX_TYPE_EQUALITY: marking.u.fle2.algorithm = MONGOCRYPT_FLE2_ALGORITHM_EQUALITY; break; case MONGOCRYPT_INDEX_TYPE_NONE: marking.u.fle2.algorithm = MONGOCRYPT_FLE2_ALGORITHM_UNINDEXED; break; case MONGOCRYPT_INDEX_TYPE_RANGEPREVIEW_DEPRECATED: - if (ctx->crypt->opts.use_range_v2) { - _mongocrypt_ctx_fail_w_msg(ctx, "Cannot use rangePreview index type with Range V2"); - goto fail; - } + _mongocrypt_ctx_fail_w_msg(ctx, "Cannot use rangePreview index type with Range V2"); + goto fail; // fallthrough case MONGOCRYPT_INDEX_TYPE_RANGE: marking.u.fle2.algorithm = MONGOCRYPT_FLE2_ALGORITHM_RANGE; break; default: @@ -1355,11 +1344,7 @@ static bool _fle2_finalize_explicit(mongocrypt_ctx_t *ctx, mongocrypt_binary_t * // RangeOpts with query_type is handled above. BSON_ASSERT(!ctx->opts.query_type.set); - if (!mc_RangeOpts_to_FLE2RangeInsertSpec(&ctx->opts.rangeopts.value, - &old_v, - &new_v, - ctx->crypt->opts.use_range_v2, - ctx->status)) { + if (!mc_RangeOpts_to_FLE2RangeInsertSpec(&ctx->opts.rangeopts.value, &old_v, &new_v, ctx->status)) { _mongocrypt_ctx_fail(ctx); goto fail; } @@ -2416,9 +2401,6 @@ bool mongocrypt_ctx_encrypt_init(mongocrypt_ctx_t *ctx, const char *db, int32_t ctx->vtable.cleanup = _cleanup; ectx->bypass_query_analysis = ctx->crypt->opts.bypass_query_analysis; ectx->sb = mc_schema_broker_new(); - if (ctx->crypt->opts.use_range_v2) { - mc_schema_broker_use_rangev2(ectx->sb); - } if (!cmd || !cmd->data) { return _mongocrypt_ctx_fail_w_msg(ctx, "invalid command"); diff --git a/src/mongocrypt-ctx.c b/src/mongocrypt-ctx.c index f0384d9ec..db5b0b4ca 100644 --- a/src/mongocrypt-ctx.c +++ b/src/mongocrypt-ctx.c @@ -262,12 +262,8 @@ bool mongocrypt_ctx_setopt_algorithm(mongocrypt_ctx_t *ctx, const char *algorith ctx->opts.index_type.value = MONGOCRYPT_INDEX_TYPE_RANGE; ctx->opts.index_type.set = true; } else if (mstr_eq_ignore_case(algo_str, mstrv_lit(MONGOCRYPT_ALGORITHM_RANGEPREVIEW_DEPRECATED_STR))) { - if (ctx->crypt->opts.use_range_v2) { - _mongocrypt_ctx_fail_w_msg(ctx, "Algorithm 'rangePreview' is deprecated, please use 'range'"); - return false; - } - ctx->opts.index_type.value = MONGOCRYPT_INDEX_TYPE_RANGEPREVIEW_DEPRECATED; - ctx->opts.index_type.set = true; + _mongocrypt_ctx_fail_w_msg(ctx, "Algorithm 'rangePreview' is deprecated, please use 'range'"); + return false; } else { char *error = bson_strdup_printf("unsupported algorithm string \"%.*s\"", algo_str.len <= (size_t)INT_MAX ? (int)algo_str.len : INT_MAX, @@ -1068,12 +1064,8 @@ bool mongocrypt_ctx_setopt_query_type(mongocrypt_ctx_t *ctx, const char *query_t ctx->opts.query_type.value = MONGOCRYPT_QUERY_TYPE_RANGE; ctx->opts.query_type.set = true; } else if (mstr_eq_ignore_case(qt_str, mstrv_lit(MONGOCRYPT_QUERY_TYPE_RANGEPREVIEW_DEPRECATED_STR))) { - if (ctx->crypt->opts.use_range_v2) { - _mongocrypt_ctx_fail_w_msg(ctx, "Query type 'rangePreview' is deprecated, please use 'range'"); - return false; - } - ctx->opts.query_type.value = MONGOCRYPT_QUERY_TYPE_RANGEPREVIEW_DEPRECATED; - ctx->opts.query_type.set = true; + _mongocrypt_ctx_fail_w_msg(ctx, "Query type 'rangePreview' is deprecated, please use 'range'"); + return false; } else { /* don't check if qt_str.len fits in int; we want the diagnostic output */ char *error = bson_strdup_printf("Unsupported query_type \"%.*s\"", @@ -1128,7 +1120,7 @@ bool mongocrypt_ctx_setopt_algorithm_range(mongocrypt_ctx_t *ctx, mongocrypt_bin return _mongocrypt_ctx_fail_w_msg(ctx, "invalid BSON"); } - if (!mc_RangeOpts_parse(&ctx->opts.rangeopts.value, &as_bson, ctx->crypt->opts.use_range_v2, ctx->status)) { + if (!mc_RangeOpts_parse(&ctx->opts.rangeopts.value, &as_bson, ctx->status)) { return _mongocrypt_ctx_fail(ctx); } diff --git a/src/mongocrypt-marking-private.h b/src/mongocrypt-marking-private.h index 4dedf0083..b64abc6c0 100644 --- a/src/mongocrypt-marking-private.h +++ b/src/mongocrypt-marking-private.h @@ -67,7 +67,6 @@ bool _mongocrypt_marking_to_ciphertext(void *ctx, mc_mincover_t *mc_get_mincover_from_FLE2RangeFindSpec(mc_FLE2RangeFindSpec_t *findSpec, size_t sparsity, - mongocrypt_status_t *status, - bool use_range_v2) MONGOCRYPT_WARN_UNUSED_RESULT; + mongocrypt_status_t *status) MONGOCRYPT_WARN_UNUSED_RESULT; #endif /* MONGOCRYPT_MARKING_PRIVATE_H */ diff --git a/src/mongocrypt-marking.c b/src/mongocrypt-marking.c index 16f740764..3279bd422 100644 --- a/src/mongocrypt-marking.c +++ b/src/mongocrypt-marking.c @@ -513,7 +513,7 @@ static bool _fle2_placeholder_aes_aead_encrypt(_mongocrypt_key_broker_t *kb, // Range V2: p := EncryptCTR(ECOCToken, ESCDerivedFromDataTokenAndContentionFactor || isLeaf) static bool _fle2_derive_encrypted_token(_mongocrypt_crypto_t *crypto, _mongocrypt_buffer_t *out, - bool use_range_v2, + bool concatentate_leaf, const mc_CollectionsLevel1Token_t *collectionsLevel1Token, const _mongocrypt_buffer_t *escDerivedToken, const _mongocrypt_buffer_t *eccDerivedToken, @@ -530,7 +530,7 @@ static bool _fle2_derive_encrypted_token(_mongocrypt_crypto_t *crypto, const _mongocrypt_buffer_t *p = &tmp; if (!eccDerivedToken) { // FLE2v2 - if (use_range_v2 && is_leaf.set) { + if (concatentate_leaf && is_leaf.set) { // Range V2; concat isLeaf _mongocrypt_buffer_t isLeafBuf; if (!_mongocrypt_buffer_copy_from_data_and_size(&isLeafBuf, (uint8_t[]){is_leaf.value}, 1)) { @@ -755,7 +755,7 @@ static bool _mongocrypt_fle2_placeholder_to_insert_update_common(_mongocrypt_key if (!_fle2_derive_encrypted_token( crypto, &out->encryptedTokens, - kb->crypt->opts.use_range_v2, + true, common->collectionsLevel1Token, &out->escDerivedToken, NULL, // unused in v2 @@ -855,8 +855,7 @@ static bool _mongocrypt_fle2_placeholder_to_insert_update_ciphertext(_mongocrypt // get_edges creates and returns edges from an FLE2RangeInsertSpec. Returns NULL // on error. -static mc_edges_t * -get_edges(mc_FLE2RangeInsertSpec_t *insertSpec, size_t sparsity, mongocrypt_status_t *status, bool use_range_v2) { +static mc_edges_t *get_edges(mc_FLE2RangeInsertSpec_t *insertSpec, size_t sparsity, mongocrypt_status_t *status) { BSON_ASSERT_PARAM(insertSpec); bson_type_t value_type = bson_iter_type(&insertSpec->v); @@ -867,8 +866,7 @@ get_edges(mc_FLE2RangeInsertSpec_t *insertSpec, size_t sparsity, mongocrypt_stat .max = OPT_I32(bson_iter_int32(&insertSpec->max)), .sparsity = sparsity, .trimFactor = insertSpec->trimFactor}, - status, - use_range_v2); + status); } else if (value_type == BSON_TYPE_INT64) { @@ -877,8 +875,7 @@ get_edges(mc_FLE2RangeInsertSpec_t *insertSpec, size_t sparsity, mongocrypt_stat .max = OPT_I64(bson_iter_int64(&insertSpec->max)), .sparsity = sparsity, .trimFactor = insertSpec->trimFactor}, - status, - use_range_v2); + status); } else if (value_type == BSON_TYPE_DATE_TIME) { @@ -887,8 +884,7 @@ get_edges(mc_FLE2RangeInsertSpec_t *insertSpec, size_t sparsity, mongocrypt_stat .max = OPT_I64(bson_iter_date_time(&insertSpec->max)), .sparsity = sparsity, .trimFactor = insertSpec->trimFactor}, - status, - use_range_v2); + status); } else if (value_type == BSON_TYPE_DOUBLE) { @@ -904,7 +900,7 @@ get_edges(mc_FLE2RangeInsertSpec_t *insertSpec, size_t sparsity, mongocrypt_stat args.precision = insertSpec->precision; } - return mc_getEdgesDouble(args, status, use_range_v2); + return mc_getEdgesDouble(args, status); } else if (value_type == BSON_TYPE_DECIMAL128) { @@ -922,7 +918,7 @@ get_edges(mc_FLE2RangeInsertSpec_t *insertSpec, size_t sparsity, mongocrypt_stat args.max = OPT_MC_DEC128(max); args.precision = insertSpec->precision; } - return mc_getEdgesDecimal128(args, status, use_range_v2); + return mc_getEdgesDecimal128(args, status); #else // ↑↑↑↑↑↑↑↑ With Decimal128 / Without ↓↓↓↓↓↓↓↓↓↓ CLIENT_ERR("unsupported BSON type (Decimal128) for range: libmongocrypt " "was built without extended Decimal128 support"); @@ -954,7 +950,6 @@ static bool _mongocrypt_fle2_placeholder_to_insert_update_ciphertextForRange(_mo BSON_ASSERT_PARAM(ciphertext); BSON_ASSERT(kb->crypt); BSON_ASSERT(marking->type == MONGOCRYPT_MARKING_FLE2_ENCRYPTION); - const bool use_range_v2 = kb->crypt->opts.use_range_v2; mc_FLE2EncryptionPlaceholder_t *placeholder = &marking->u.fle2; _FLE2EncryptedPayloadCommon_t common = {{0}}; @@ -966,7 +961,7 @@ static bool _mongocrypt_fle2_placeholder_to_insert_update_ciphertextForRange(_mo // Parse the value ("v"), min ("min"), and max ("max") from // FLE2EncryptionPlaceholder for range insert. mc_FLE2RangeInsertSpec_t insertSpec; - if (!mc_FLE2RangeInsertSpec_parse(&insertSpec, &placeholder->v_iter, use_range_v2, status)) { + if (!mc_FLE2RangeInsertSpec_parse(&insertSpec, &placeholder->v_iter, status)) { goto fail; } @@ -982,7 +977,7 @@ static bool _mongocrypt_fle2_placeholder_to_insert_update_ciphertextForRange(_mo // g:= array { BSON_ASSERT(placeholder->sparsity >= 0 && (uint64_t)placeholder->sparsity <= (uint64_t)SIZE_MAX); - edges = get_edges(&insertSpec, (size_t)placeholder->sparsity, status, kb->crypt->opts.use_range_v2); + edges = get_edges(&insertSpec, (size_t)placeholder->sparsity, status); if (!edges) { goto fail; } @@ -1025,7 +1020,7 @@ static bool _mongocrypt_fle2_placeholder_to_insert_update_ciphertextForRange(_mo // Or in Range V2: p := EncryptCTR(ECOCToken, ESCDerivedFromDataTokenAndContentionFactor || isLeaf) if (!_fle2_derive_encrypted_token(kb->crypt->crypto, &etc.encryptedTokens, - kb->crypt->opts.use_range_v2, + true, edge_tokens.collectionsLevel1Token, &etc.escDerivedToken, NULL, // ecc unsed in FLE2v2 @@ -1057,7 +1052,7 @@ static bool _mongocrypt_fle2_placeholder_to_insert_update_ciphertextForRange(_mo { bson_t out; bson_init(&out); - mc_FLE2InsertUpdatePayloadV2_serializeForRange(&payload, &out, use_range_v2); + mc_FLE2InsertUpdatePayloadV2_serializeForRange(&payload, &out); _mongocrypt_buffer_steal_from_bson(&ciphertext->data, &out); } // Do not set ciphertext->original_bson_type and ciphertext->key_id. They are @@ -1546,10 +1541,8 @@ static bool isInfinite(bson_iter_t *iter) { // mc_get_mincover_from_FLE2RangeFindSpec creates and returns a mincover from an // FLE2RangeFindSpec. Returns NULL on error. -mc_mincover_t *mc_get_mincover_from_FLE2RangeFindSpec(mc_FLE2RangeFindSpec_t *findSpec, - size_t sparsity, - mongocrypt_status_t *status, - bool use_range_v2) { +mc_mincover_t * +mc_get_mincover_from_FLE2RangeFindSpec(mc_FLE2RangeFindSpec_t *findSpec, size_t sparsity, mongocrypt_status_t *status) { BSON_ASSERT_PARAM(findSpec); BSON_ASSERT(findSpec->edgesInfo.set); @@ -1610,8 +1603,7 @@ mc_mincover_t *mc_get_mincover_from_FLE2RangeFindSpec(mc_FLE2RangeFindSpec_t *fi .max = OPT_I32(bson_iter_int32(&findSpec->edgesInfo.value.indexMax)), .sparsity = sparsity, .trimFactor = findSpec->edgesInfo.value.trimFactor}, - status, - use_range_v2); + status); case BSON_TYPE_INT64: BSON_ASSERT(bson_iter_type(&lowerBound) == BSON_TYPE_INT64); @@ -1627,8 +1619,7 @@ mc_mincover_t *mc_get_mincover_from_FLE2RangeFindSpec(mc_FLE2RangeFindSpec_t *fi .max = OPT_I64(bson_iter_int64(&findSpec->edgesInfo.value.indexMax)), .sparsity = sparsity, .trimFactor = findSpec->edgesInfo.value.trimFactor}, - status, - use_range_v2); + status); case BSON_TYPE_DATE_TIME: BSON_ASSERT(bson_iter_type(&lowerBound) == BSON_TYPE_DATE_TIME); BSON_ASSERT(bson_iter_type(&upperBound) == BSON_TYPE_DATE_TIME); @@ -1643,8 +1634,7 @@ mc_mincover_t *mc_get_mincover_from_FLE2RangeFindSpec(mc_FLE2RangeFindSpec_t *fi .max = OPT_I64(bson_iter_date_time(&findSpec->edgesInfo.value.indexMax)), .sparsity = sparsity, .trimFactor = findSpec->edgesInfo.value.trimFactor}, - status, - use_range_v2); + status); case BSON_TYPE_DOUBLE: { BSON_ASSERT(bson_iter_type(&lowerBound) == BSON_TYPE_DOUBLE); BSON_ASSERT(bson_iter_type(&upperBound) == BSON_TYPE_DOUBLE); @@ -1665,7 +1655,7 @@ mc_mincover_t *mc_get_mincover_from_FLE2RangeFindSpec(mc_FLE2RangeFindSpec_t *fi args.max = OPT_DOUBLE(bson_iter_double(&findSpec->edgesInfo.value.indexMax)); args.precision = findSpec->edgesInfo.value.precision; } - return mc_getMincoverDouble(args, status, use_range_v2); + return mc_getMincoverDouble(args, status); } case BSON_TYPE_DECIMAL128: { #if MONGOCRYPT_HAVE_DECIMAL128_SUPPORT() @@ -1685,7 +1675,7 @@ mc_mincover_t *mc_get_mincover_from_FLE2RangeFindSpec(mc_FLE2RangeFindSpec_t *fi args.max = OPT_MC_DEC128(mc_dec128_from_bson_iter(&findSpec->edgesInfo.value.indexMax)); args.precision = findSpec->edgesInfo.value.precision; } - return mc_getMincoverDecimal128(args, status, use_range_v2); + return mc_getMincoverDecimal128(args, status); #else // ↑↑↑↑↑↑↑↑ With Decimal128 / Without ↓↓↓↓↓↓↓↓↓↓ CLIENT_ERR("FLE2 find is not supported for Decimal128: libmongocrypt " "was built without Decimal128 support"); @@ -1728,7 +1718,6 @@ static bool _mongocrypt_fle2_placeholder_to_find_ciphertextForRange(_mongocrypt_ BSON_ASSERT_PARAM(marking); BSON_ASSERT_PARAM(ciphertext); - const bool use_range_v2 = kb->crypt->opts.use_range_v2; mc_FLE2EncryptionPlaceholder_t *placeholder = &marking->u.fle2; mc_FLE2FindRangePayloadV2_t payload; bool res = false; @@ -1744,7 +1733,7 @@ static bool _mongocrypt_fle2_placeholder_to_find_ciphertextForRange(_mongocrypt_ // Parse the query bounds and index bounds from FLE2EncryptionPlaceholder for // range find. mc_FLE2RangeFindSpec_t findSpec; - if (!mc_FLE2RangeFindSpec_parse(&findSpec, &placeholder->v_iter, use_range_v2, status)) { + if (!mc_FLE2RangeFindSpec_parse(&findSpec, &placeholder->v_iter, status)) { goto fail; } @@ -1755,8 +1744,7 @@ static bool _mongocrypt_fle2_placeholder_to_find_ciphertextForRange(_mongocrypt_ // g:= array { BSON_ASSERT(placeholder->sparsity >= 0 && (uint64_t)placeholder->sparsity <= (uint64_t)SIZE_MAX); - mincover = - mc_get_mincover_from_FLE2RangeFindSpec(&findSpec, (size_t)placeholder->sparsity, status, use_range_v2); + mincover = mc_get_mincover_from_FLE2RangeFindSpec(&findSpec, (size_t)placeholder->sparsity, status); if (!mincover) { goto fail; } @@ -1805,14 +1793,12 @@ static bool _mongocrypt_fle2_placeholder_to_find_ciphertextForRange(_mongocrypt_ } payload.payload.set = true; - if (use_range_v2) { - // Include "range" payload fields introduced in SERVER-91889. - payload.sparsity = OPT_I64(placeholder->sparsity); - payload.precision = findSpec.edgesInfo.value.precision; - payload.trimFactor = OPT_I32(mc_mincover_get_used_trimFactor(mincover)); - bson_value_copy(bson_iter_value(&findSpec.edgesInfo.value.indexMin), &payload.indexMin); - bson_value_copy(bson_iter_value(&findSpec.edgesInfo.value.indexMax), &payload.indexMax); - } + // Include "range" payload fields introduced in SERVER-91889. + payload.sparsity = OPT_I64(placeholder->sparsity); + payload.precision = findSpec.edgesInfo.value.precision; + payload.trimFactor = OPT_I32(mc_mincover_get_used_trimFactor(mincover)); + bson_value_copy(bson_iter_value(&findSpec.edgesInfo.value.indexMin), &payload.indexMin); + bson_value_copy(bson_iter_value(&findSpec.edgesInfo.value.indexMax), &payload.indexMax); } payload.payloadId = findSpec.payloadId; @@ -1822,7 +1808,7 @@ static bool _mongocrypt_fle2_placeholder_to_find_ciphertextForRange(_mongocrypt_ // Serialize. { bson_t out = BSON_INITIALIZER; - mc_FLE2FindRangePayloadV2_serialize(&payload, &out, use_range_v2); + mc_FLE2FindRangePayloadV2_serialize(&payload, &out); _mongocrypt_buffer_steal_from_bson(&ciphertext->data, &out); } _mongocrypt_buffer_steal(&ciphertext->key_id, &placeholder->index_key_id); diff --git a/src/mongocrypt-opts-private.h b/src/mongocrypt-opts-private.h index d76f2fd01..99de4e508 100644 --- a/src/mongocrypt-opts-private.h +++ b/src/mongocrypt-opts-private.h @@ -118,8 +118,6 @@ typedef struct { bool use_need_mongo_collinfo_with_db_state; bool bypass_query_analysis; - // Use the Queryable Encryption Range V2 protocol. - bool use_range_v2; } _mongocrypt_opts_t; void _mongocrypt_opts_kms_providers_cleanup(_mongocrypt_opts_kms_providers_t *kms_providers); diff --git a/src/mongocrypt-opts.c b/src/mongocrypt-opts.c index 7f8236224..43d6c4993 100644 --- a/src/mongocrypt-opts.c +++ b/src/mongocrypt-opts.c @@ -35,7 +35,6 @@ void _mongocrypt_opts_kms_providers_init(_mongocrypt_opts_kms_providers_t *kms_p void _mongocrypt_opts_init(_mongocrypt_opts_t *opts) { BSON_ASSERT_PARAM(opts); memset(opts, 0, sizeof(*opts)); - opts->use_range_v2 = true; _mongocrypt_opts_kms_providers_init(&opts->kms_providers); } diff --git a/test/data/cleanup/success/encrypted-payload.json b/test/data/cleanup/success/encrypted-payload.json deleted file mode 100644 index e2f16d3f5..000000000 --- a/test/data/cleanup/success/encrypted-payload.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "cleanupStructuredEncryptionData": "test", - "cleanupTokens": { - "rangeField": { - "$binary": { - "base64": "27J6DZqcjkRzZ3lWEsxH7CsQHr4CZirrGmuPS8ZkRO0=", - "subType": "00" - } - }, - "nested.notindexed": { - "$binary": { - "base64": "27J6DZqcjkRzZ3lWEsxH7CsQHr4CZirrGmuPS8ZkRO0=", - "subType": "00" - } - }, - "nested.encrypted": { - "$binary": { - "base64": "SWO8WEoZ2r2Kx/muQKb7+COizy85nIIUFiHh4K9kcvA=", - "subType": "00" - } - }, - "encrypted": { - "$binary": { - "base64": "noN+05JsuO1oDg59yypIGj45i+eFH6HOTXOPpeZ//Mk=", - "subType": "00" - } - } - } -} \ No newline at end of file diff --git a/test/data/compact/success/encrypted-field-config-map.json b/test/data/compact/success/encrypted-field-config-map.json index ef0375392..58ffe8fad 100644 --- a/test/data/compact/success/encrypted-field-config-map.json +++ b/test/data/compact/success/encrypted-field-config-map.json @@ -49,7 +49,12 @@ } }, "path": "rangeField", - "bsonType": "int" + "bsonType": "int", + "queries": { + "queryType": "range", + "contention": 0, + "sparsity": 1 + } } ] } diff --git a/test/data/compact/success/encrypted-payload.json b/test/data/compact/success/encrypted-payload.json deleted file mode 100644 index 709325396..000000000 --- a/test/data/compact/success/encrypted-payload.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "compactStructuredEncryptionData": "test", - "compactionTokens": { - "rangeField": { - "$binary": { - "base64": "27J6DZqcjkRzZ3lWEsxH7CsQHr4CZirrGmuPS8ZkRO0=", - "subType": "00" - } - }, - "nested.notindexed": { - "$binary": { - "base64": "27J6DZqcjkRzZ3lWEsxH7CsQHr4CZirrGmuPS8ZkRO0=", - "subType": "00" - } - }, - "nested.encrypted": { - "$binary": { - "base64": "SWO8WEoZ2r2Kx/muQKb7+COizy85nIIUFiHh4K9kcvA=", - "subType": "00" - } - }, - "encrypted": { - "$binary": { - "base64": "noN+05JsuO1oDg59yypIGj45i+eFH6HOTXOPpeZ//Mk=", - "subType": "00" - } - } - } -} \ No newline at end of file diff --git a/test/data/explicit-decrypt/FLE2EqualityIndexedValueV2.json b/test/data/explicit-decrypt/FLE2EqualityIndexedValueV2.json deleted file mode 100644 index b7a5c3c99..000000000 --- a/test/data/explicit-decrypt/FLE2EqualityIndexedValueV2.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "v": { - "$binary": { - "base64": "DqvN76sSNJh2EjQSNFZ4kBICl42VcDwOxUhPxqcSx/Yv98vhrHX+qFwE6J7jRL/Q4isKrBTfN/An79R2UiP85lOnPTrUN1CKi0YQpCdGZbieFNMUBJ6g1u/ZgcIHxT+MQQ8BwYT+YidACALF18V76cnTnsgBjaju29a643JQjPoNdakFwQl4Xwlr+77e35ztQRHN2Do2J+7pc5569xBNbUU2IbTCvQ/jtngwNbaP7CSWb9WQRqjs2vId+FPlmNsShbrevAXFGSG/JY00t3TJpHfyburvBfEMZapT3H3q8U3o/w==", - "subType": "06" - } - } -} diff --git a/test/data/explicit-decrypt/FLE2InsertUpdatePayload-with-edges.json b/test/data/explicit-decrypt/FLE2InsertUpdatePayload-RangeV1.json similarity index 100% rename from test/data/explicit-decrypt/FLE2InsertUpdatePayload-with-edges.json rename to test/data/explicit-decrypt/FLE2InsertUpdatePayload-RangeV1.json diff --git a/test/data/explicit-decrypt/FLE2InsertUpdatePayload-with-edges-V2.json b/test/data/explicit-decrypt/FLE2InsertUpdatePayloadV2-RangeV1.json similarity index 100% rename from test/data/explicit-decrypt/FLE2InsertUpdatePayload-with-edges-V2.json rename to test/data/explicit-decrypt/FLE2InsertUpdatePayloadV2-RangeV1.json diff --git a/test/data/explicit-decrypt/FLE2InsertUpdatePayloadV2-RangeV2.json b/test/data/explicit-decrypt/FLE2InsertUpdatePayloadV2-RangeV2.json new file mode 100644 index 000000000..ee5f52c3b --- /dev/null +++ b/test/data/explicit-decrypt/FLE2InsertUpdatePayloadV2-RangeV2.json @@ -0,0 +1,8 @@ +{ + "v": { + "$binary": { + "base64": "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", + "subType": "06" + } + } +} diff --git a/test/data/explicit-decrypt/FLE2RangeIndexedValueV2.json b/test/data/explicit-decrypt/FLE2RangeIndexedValueV2.json deleted file mode 100644 index 6ac5a4e20..000000000 --- a/test/data/explicit-decrypt/FLE2RangeIndexedValueV2.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "v": { - "$binary": { - "base64": "D6vN76sSNJh2EjQSNFZ4kBIQCG6OwBqJxG7szTWZFLKfOC7z0LmkmdzQyat5Sz+Rw24mknu3Vz4rY15o+ZGQVy8W2M5rcGWAocB4uoVhVIt8D2fzqpAVSNmt3UtiAd/868IC02MBhgoSDG/KCY3aZQfB0qy2t4O5r2xaVA2IuOZFrDFfd6CPsJZKAZTwPgHaPoURYiLopIapJ+zc++69eV8HwVTWOLhPFOkkxrLlaDIIPbbE/m5SzueUIA5gcISX4PKKo4EiaxRkanYa8Ai/PM9i2OkSHj5zvJwISGiBWddP49F53F90FqyYc37a+IYPRRVyHdMj0mMeH/vQwxP9ZXZD1yrHc8N6gGQgiHKOVZ1jTko8mJvsFvpAJG8ZiHo3Pe3bAwIOvcj5MOup/BqQNh6OoT2T6PHSwdZKJUA92NBdK/TqvfWWjwSYzrfUxyumDb24E0M4ae+f2/kSEPhGMI8KVZtNKoWIT53Ac0RQ5rwaLEggveM9cLpQqnXvi9X5OL/YSQ+vNaM9H+uHiIKlw3bBPLCLzmOmZzddu4mbltqXOFPiRS2Ob7xlHI1RGbgqeuFKD94ddjSsb3ucKwrrdDVWQJOKn95PPZ8MfjQ3VR5lSdgcUsa+q7SwB1J1k0i5/avhrolqpCipg79k1nnUbvzIDCcd974hvDP21UZ7tx4yniHYKcp2Djw/uW/M6Kowm/NBzJjc8dcNAlpxkcjeZGtsFte0HN4nvKyHmkYbkycvJsN1sM/lPAhTC2zkBnfaAEyp+EU49By2xQlnVbPGum0nzoud5xpI1DUyqw6zRos45iXfSIiGSzZtpGHYcJdbyy1Mn+SDH3rYMZ4yGg3Vr37cT0enszHCoSzwA09HLF0LRDiIlZexwu2cIPMzMdpOh3OPwqx5rgQE77W+FnhTXlQHaD1plphBLixyvEd3Sl+4KxDrQfnfIj8OTGnzX9wUD30N3jzbabEJEGtostuJAUdkJgikDCx3vJ4ZRvYYLoF9sDFOqCugvvt6xnH/yAHgoPWxCyEE6kF135rtT0zDZ6w6JC/HLMRDuONivd1pGkDgN6Bdb7zHF/aM1k9pRXpHHi1BQOmFs7Bl0EaSTcnGG09Zdutu1Fu5hcqIjbmsuH9r8ZDy8LQh8grPsY6yly6kocAJXxQyCFVBYDk4XekWe/6kDQ==", - "subType": "06" - } - } -} diff --git a/test/data/fle2-find-range-explicit/double-precision/encrypted-payload-v2.json b/test/data/fle2-find-range-explicit/double-precision/encrypted-payload-v2.json index 1350b24a4..ddd191f50 100644 --- a/test/data/fle2-find-range-explicit/double-precision/encrypted-payload-v2.json +++ b/test/data/fle2-find-range-explicit/double-precision/encrypted-payload-v2.json @@ -5,7 +5,7 @@ "age": { "$gte": { "$binary": { - "base64": "DV0FAAADcGF5bG9hZAAZBQAABGcABQUAAAMwAH0AAAAFZAAgAAAAAA5O5YOmDnNEzt4VzOdPJoBsorBvi4P38NSXFCQXBT7lBXMAIAAAAAAlCbJrLprhv7PZAWfpe1J77kmxxrTm5d+VIAzQ1t0f9wVsACAAAAAAJsEPn/IWj5o4yK+N8amVX9KXnsELZG2J1c6Wa2AfBE4AAzEAfQAAAAVkACAAAAAAwVdX7uREzGJG5YAlsRvkOq5eddbRwIMXoUyBxtTOWyMFcwAgAAAAAH7tQpElOGJxNW3nBA/KvOwRjEttzL4Yj7QxAKdseG83BWwAIAAAAAD3pf9mr2hOP/do52J6tCm1L6EW8dcAnjl1AX56PsqCrwADMgB9AAAABWQAIAAAAAB/r0rye8dC3m4mih9d9oBcoQ6Zz99MQLXO5RvpPQ0CxAVzACAAAAAAyAOYAbhDJ52goQxGqSffPOA68Z5ST6MHehKnzrW4NxgFbAAgAAAAABKOFQ4VoYzcavMdAgvpAc9SMLWpJAI/XabuetDojHI3AAMzAH0AAAAFZAAgAAAAAO2Hv6Qd4XbjLmDbLe2/dufbhh+Bc1myy7VrNWQswguHBXMAIAAAAACskbeGL2j0dhv3JUYGLto/8kBwO/CS6CSy2Fz01Qd/oAVsACAAAAAAQD5HxofvNYPA/WXGFJBJ7Aqn4TTxvNEpsZX7QIi8NQEAAzQAfQAAAAVkACAAAAAAtTHP+RbNcKHQQitmLFjax5jU3lSvUFioevRqvngmVrgFcwAgAAAAAJ1FzPG89m3duUQlzzhr10u2bHkrcVrXSqTdRTQRwbuIBWwAIAAAAACDwj7HWLNQncRny0bvqljLDfvtYmGov28d2B/JEHf9sAADNQB9AAAABWQAIAAAAACx7BgZhTiIgBbhrGj1nd8jicXeBh2kUEYz4icmc9ujpAVzACAAAAAAWAUKWWlejF5rygbpZmfnmFlKKi605/AAgxC6jhE+MdgFbAAgAAAAABaV7W7xzxS0nb1Ai7Cfelb3p8bNwTf2fgT/PmQghd9GAAM2AH0AAAAFZAAgAAAAAEyLWJxrA6BmuzegYLP4kUmvxoT1dvr7RttUcJ9+VL81BXMAIAAAAAAUA36oeKJKKyAvckEDg3qz6JDJmyWJzL/PXzUYhrJMUQVsACAAAAAADjxtljJ8f/mlqv2w/jCWJo1UmAzwqtcgQhiqkWBiOQoAAzcAfQAAAAVkACAAAAAAxwM1EBD2yYprO6DgSL/hf7nNswGChKMzNRrdcVAX0QEFcwAgAAAAAPq9JZtWNg4/ZGHjkzpMQx0mwyp0WQQE8lp0l33dC1dzBWwAIAAAAAC42oIAFJNPW5m2erwYVSZPmhQoKD7nxjvqZNuj+lFrhAADOAB9AAAABWQAIAAAAADgeS5YwHbBJYHjnE9rdIFOXCWa4MZgksnq9BCKEBNCQgVzACAAAAAA0ShFMpOeEFx3gMLQEIMhvlkYQJ6DXk/ryqYFXSt0oMAFbAAgAAAAAA4vTg5+jjmTJUB+xkO8YEnaA7fwOph35M9WSK26hQ3nAAM5AH0AAAAFZAAgAAAAAKOQKnHWdirTeER0VaLHcH9Gam5QOhil1vpk11GqLVYsBXMAIAAAAACvxg5olIv89aG/3AhBg4yw2ZJqPMYppPJ8eY1dCIlbIAVsACAAAAAAYmeB3mfKkJlkTw9gbIl2aHKs9G+jxagWBwjubQOomhAAABJjbQAAAAAAAAAAAAAQcGF5bG9hZElkAAAAAAAQZmlyc3RPcGVyYXRvcgACAAAAEHNlY29uZE9wZXJhdG9yAAQAAAAA", + "base64": "DZEFAAADcGF5bG9hZAAZBQAABGcABQUAAAMwAH0AAAAFZAAgAAAAAA5O5YOmDnNEzt4VzOdPJoBsorBvi4P38NSXFCQXBT7lBXMAIAAAAAAlCbJrLprhv7PZAWfpe1J77kmxxrTm5d+VIAzQ1t0f9wVsACAAAAAAJsEPn/IWj5o4yK+N8amVX9KXnsELZG2J1c6Wa2AfBE4AAzEAfQAAAAVkACAAAAAAwVdX7uREzGJG5YAlsRvkOq5eddbRwIMXoUyBxtTOWyMFcwAgAAAAAH7tQpElOGJxNW3nBA/KvOwRjEttzL4Yj7QxAKdseG83BWwAIAAAAAD3pf9mr2hOP/do52J6tCm1L6EW8dcAnjl1AX56PsqCrwADMgB9AAAABWQAIAAAAAB/r0rye8dC3m4mih9d9oBcoQ6Zz99MQLXO5RvpPQ0CxAVzACAAAAAAyAOYAbhDJ52goQxGqSffPOA68Z5ST6MHehKnzrW4NxgFbAAgAAAAABKOFQ4VoYzcavMdAgvpAc9SMLWpJAI/XabuetDojHI3AAMzAH0AAAAFZAAgAAAAAO2Hv6Qd4XbjLmDbLe2/dufbhh+Bc1myy7VrNWQswguHBXMAIAAAAACskbeGL2j0dhv3JUYGLto/8kBwO/CS6CSy2Fz01Qd/oAVsACAAAAAAQD5HxofvNYPA/WXGFJBJ7Aqn4TTxvNEpsZX7QIi8NQEAAzQAfQAAAAVkACAAAAAAtTHP+RbNcKHQQitmLFjax5jU3lSvUFioevRqvngmVrgFcwAgAAAAAJ1FzPG89m3duUQlzzhr10u2bHkrcVrXSqTdRTQRwbuIBWwAIAAAAACDwj7HWLNQncRny0bvqljLDfvtYmGov28d2B/JEHf9sAADNQB9AAAABWQAIAAAAACx7BgZhTiIgBbhrGj1nd8jicXeBh2kUEYz4icmc9ujpAVzACAAAAAAWAUKWWlejF5rygbpZmfnmFlKKi605/AAgxC6jhE+MdgFbAAgAAAAABaV7W7xzxS0nb1Ai7Cfelb3p8bNwTf2fgT/PmQghd9GAAM2AH0AAAAFZAAgAAAAAEyLWJxrA6BmuzegYLP4kUmvxoT1dvr7RttUcJ9+VL81BXMAIAAAAAAUA36oeKJKKyAvckEDg3qz6JDJmyWJzL/PXzUYhrJMUQVsACAAAAAADjxtljJ8f/mlqv2w/jCWJo1UmAzwqtcgQhiqkWBiOQoAAzcAfQAAAAVkACAAAAAAxwM1EBD2yYprO6DgSL/hf7nNswGChKMzNRrdcVAX0QEFcwAgAAAAAPq9JZtWNg4/ZGHjkzpMQx0mwyp0WQQE8lp0l33dC1dzBWwAIAAAAAC42oIAFJNPW5m2erwYVSZPmhQoKD7nxjvqZNuj+lFrhAADOAB9AAAABWQAIAAAAADgeS5YwHbBJYHjnE9rdIFOXCWa4MZgksnq9BCKEBNCQgVzACAAAAAA0ShFMpOeEFx3gMLQEIMhvlkYQJ6DXk/ryqYFXSt0oMAFbAAgAAAAAA4vTg5+jjmTJUB+xkO8YEnaA7fwOph35M9WSK26hQ3nAAM5AH0AAAAFZAAgAAAAAKOQKnHWdirTeER0VaLHcH9Gam5QOhil1vpk11GqLVYsBXMAIAAAAACvxg5olIv89aG/3AhBg4yw2ZJqPMYppPJ8eY1dCIlbIAVsACAAAAAAYmeB3mfKkJlkTw9gbIl2aHKs9G+jxagWBwjubQOomhAAABJjbQAAAAAAAAAAAAAQcGF5bG9hZElkAAAAAAAQZmlyc3RPcGVyYXRvcgACAAAAEHNlY29uZE9wZXJhdG9yAAQAAAASc3AAAQAAAAAAAAAQcG4AAgAAABB0ZgAGAAAAAW1uAAAAAAAAAAAAAW14AAAAAAAAAGlAAA==", "subType": "06" } } diff --git a/test/data/fle2-find-range-explicit/double/encrypted-payload-v2.json b/test/data/fle2-find-range-explicit/double/encrypted-payload-v2.json index 60524847d..38e6cf154 100644 --- a/test/data/fle2-find-range-explicit/double/encrypted-payload-v2.json +++ b/test/data/fle2-find-range-explicit/double/encrypted-payload-v2.json @@ -5,7 +5,7 @@ "age": { "$gte": { "$binary": { - "base64": "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", + "base64": "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///////vfwA=", "subType": "06" } } diff --git a/test/data/fle2-find-range-explicit/int32-openinterval/encrypted-payload-v2.json b/test/data/fle2-find-range-explicit/int32-openinterval/encrypted-payload-v2.json index 8c14e2b8e..9987ce872 100644 --- a/test/data/fle2-find-range-explicit/int32-openinterval/encrypted-payload-v2.json +++ b/test/data/fle2-find-range-explicit/int32-openinterval/encrypted-payload-v2.json @@ -5,7 +5,7 @@ "age": { "$gte": { "$binary": { - "base64": "DckDAAADcGF5bG9hZACZAwAABGcAhQMAAAMwAH0AAAAFZAAgAAAAAInd0noBhIiJMv8QTjcfgRqnnVhxRJRRACLfvgT+CTR/BXMAIAAAAADm0EjqF/T4EmR6Dw6NaPLrL0OuzS4AFvm90czFluAAygVsACAAAAAA5MXcYWjYlzhPFUDebBEa17B5z2bupmaW9uCdtLjc7RkAAzEAfQAAAAVkACAAAAAA7lkNtT6RLw91aJ07K/blwlFs5wi9pQjqUXDcaCTxe98FcwAgAAAAAPwySffuLQihmF70Ot93KtaUMNU8KpmA+niyPRcvarNMBWwAIAAAAACDv6fJXXwRqwZH3O2kO+hdeLZ36U6bMZSui8kv0PsPtAADMgB9AAAABWQAIAAAAACmksDgWv8fh8j4HvZ2U+eC/2+PvEsGhl1YIr04t8MEyQVzACAAAAAA42J2JBPJI5iRZbKCaLoDKJkz6sEYtwRqbXWCQFnROhAFbAAgAAAAAGwVrD6ZZFYm74a74FBUKMJj/KlQWtfEZGTAM8jKcm1pAAMzAH0AAAAFZAAgAAAAAEpcX7iBiGknOl/okkdqJbUlcVEAgVwNnusmHGfcnWiyBXMAIAAAAABt4YtHuLEMj8mq3Sm7x9LlPoLn44VwwYXzsy9O+CY7mQVsACAAAAAAbNDaUHpCmMR2TkqbORXHmTGu/H7arZvIQUdaQmow0uAAAzQAfQAAAAVkACAAAAAAiNNHQVRYZQZIyyzCQ2/QGRA1NJK2PkJ+nonrNMR8M+kFcwAgAAAAAFjXVHdBrcFBymh2M52BuuY8s54hG4YmNrLlQsDOpt0+BWwAIAAAAAB1W6tFAJaHupslrT7ec9vJ0Cn2aEmUsrndCqYkOFIGNAADNQB9AAAABWQAIAAAAABZunJQk5/sMjTmxIeZpwTF010+V434ybhEM5MCLZXvHgVzACAAAAAAzg+BvL6K2ym0OFtQU9TUrDaJd2fMgY9Z8hp1QJnDwF4FbAAgAAAAAGltO/ynzGg3yrA79Hvf2rXclgHFKCfY1V1E4C45GncxAAM2AH0AAAAFZAAgAAAAAEKk7WGoX0IXnKUDtmjVP3J8cOIatQEPrEoyH2APyETuBXMAIAAAAAAOQ2aEYoMGhGhkY0E1hPctbPmpdQ/A2ZKJ82Gv6Ec4agVsACAAAAAA0ELd3kjmsgfzWoMWR+RL3vCIlu7NEE6+GLkWN3FoM5AAABJjbQAAAAAAAAAAAAAQcGF5bG9hZElkAAAAAAAQZmlyc3RPcGVyYXRvcgACAAAAAA==", + "base64": "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", "subType": "06" } } diff --git a/test/data/fle2-find-range-explicit/int32/encrypted-payload-v2.json b/test/data/fle2-find-range-explicit/int32/encrypted-payload-v2.json index 796f336a0..cbf1d91b1 100644 --- a/test/data/fle2-find-range-explicit/int32/encrypted-payload-v2.json +++ b/test/data/fle2-find-range-explicit/int32/encrypted-payload-v2.json @@ -5,7 +5,7 @@ "age": { "$gte": { "$binary": { - "base64": "Dd0BAAADcGF5bG9hZACZAQAABGcAhQEAAAMwAH0AAAAFZAAgAAAAAInd0noBhIiJMv8QTjcfgRqnnVhxRJRRACLfvgT+CTR/BXMAIAAAAADm0EjqF/T4EmR6Dw6NaPLrL0OuzS4AFvm90czFluAAygVsACAAAAAA5MXcYWjYlzhPFUDebBEa17B5z2bupmaW9uCdtLjc7RkAAzEAfQAAAAVkACAAAAAA7lkNtT6RLw91aJ07K/blwlFs5wi9pQjqUXDcaCTxe98FcwAgAAAAAPwySffuLQihmF70Ot93KtaUMNU8KpmA+niyPRcvarNMBWwAIAAAAACDv6fJXXwRqwZH3O2kO+hdeLZ36U6bMZSui8kv0PsPtAADMgB9AAAABWQAIAAAAACcMWVTbZC4ox5VdjWeYKLgf4oBjpPlbTTAkucm9JPK0wVzACAAAAAA3tIww4ZTytkxFsUKyJbc3zwQ2w7DhkOqaNvX9g8pi3gFbAAgAAAAAGs9XR3Q1JpxV+HPW8P2GvCuCBF5bGZ8Kl1zHqzZcd5/AAASY20ABAAAAAAAAAAAEHBheWxvYWRJZAAAAAAAEGZpcnN0T3BlcmF0b3IAAgAAABBzZWNvbmRPcGVyYXRvcgAEAAAAAA==", + "base64": "DYECAAADcGF5bG9hZAAZAgAABGcABQIAAAMwAH0AAAAFZAAgAAAAAInd0noBhIiJMv8QTjcfgRqnnVhxRJRRACLfvgT+CTR/BXMAIAAAAADm0EjqF/T4EmR6Dw6NaPLrL0OuzS4AFvm90czFluAAygVsACAAAAAA5MXcYWjYlzhPFUDebBEa17B5z2bupmaW9uCdtLjc7RkAAzEAfQAAAAVkACAAAAAALyvwdd//Hc4qzpSaMFwsLHWOHVnvmw554fbJ47tYpY0FcwAgAAAAAG8rFusBCnyJnbwXJ+8aQ1WM+XBbFCF1rUmcXAZxQWkkBWwAIAAAAACN9YgQN69DpjbYlqV5j+d3Wxw0i4Xyv3a4l8MBSS7qAQADMgB9AAAABWQAIAAAAADLNQvw103YajKpjkNf6J2NdUtiwHFqSefCh5ZWTFHn5gVzACAAAAAAEhDT0LHoNKXVVHkV/TK03iRGiWnHip/oRoYSFvsAeM0FbAAgAAAAADyzWOWBxsAJkQm0lUsW+iHa+ecwl3xr1GAoKxnQQ8XZAAMzAH0AAAAFZAAgAAAAAJwxZVNtkLijHlV2NZ5gouB/igGOk+VtNMCS5yb0k8rTBXMAIAAAAADe0jDDhlPK2TEWxQrIltzfPBDbDsOGQ6po29f2DymLeAVsACAAAAAAaz1dHdDUmnFX4c9bw/Ya8K4IEXlsZnwqXXMerNlx3n8AABJjbQAEAAAAAAAAAAAQcGF5bG9hZElkAAAAAAAQZmlyc3RPcGVyYXRvcgACAAAAEHNlY29uZE9wZXJhdG9yAAQAAAASc3AAAQAAAAAAAAAQdGYABgAAABBtbgAAAAAAEG14AMgAAAAA", "subType": "06" } } diff --git a/test/data/fle2-find-range/date-v2/encrypted-field-map.json b/test/data/fle2-find-range/date-v2/encrypted-field-map.json index ba8472991..ab988b407 100644 --- a/test/data/fle2-find-range/date-v2/encrypted-field-map.json +++ b/test/data/fle2-find-range/date-v2/encrypted-field-map.json @@ -13,7 +13,7 @@ "path": "encrypted", "bsonType": "date", "queries": { - "queryType": "rangePreview", + "queryType": "range", "contention": { "$numberInt": "0" }, diff --git a/test/data/fle2-find-range/date-v2/encrypted-payload.json b/test/data/fle2-find-range/date-v2/encrypted-payload.json index 903ab0c08..8e1ace8ed 100644 --- a/test/data/fle2-find-range/date-v2/encrypted-payload.json +++ b/test/data/fle2-find-range/date-v2/encrypted-payload.json @@ -3,13 +3,15 @@ "filter": { "encrypted": { "$binary": { - "base64": "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", - "subType": "6" + "base64": "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", + "subType": "06" } } }, "encryptionInformation": { - "type": 1, + "type": { + "$numberInt": "1" + }, "schema": { "db.test": { "escCollection": "fle2.test.esc", @@ -25,7 +27,7 @@ "path": "encrypted", "bsonType": "date", "queries": { - "queryType": "rangePreview", + "queryType": "range", "contention": { "$numberInt": "0" }, diff --git a/test/data/fle2-find-range/date-v2/mongocryptd-reply.json b/test/data/fle2-find-range/date-v2/mongocryptd-reply.json index 0aa9bf680..9ba863864 100644 --- a/test/data/fle2-find-range/date-v2/mongocryptd-reply.json +++ b/test/data/fle2-find-range/date-v2/mongocryptd-reply.json @@ -31,7 +31,7 @@ "path": "encrypted", "bsonType": "date", "queries": { - "queryType": "rangePreview", + "queryType": "range", "contention": { "$numberInt": "0" }, diff --git a/test/data/fle2-find-range/decimal128-precision-v2/encrypted-field-map.json b/test/data/fle2-find-range/decimal128-precision-v2/encrypted-field-map.json index 2aab29cce..ccda259a9 100644 --- a/test/data/fle2-find-range/decimal128-precision-v2/encrypted-field-map.json +++ b/test/data/fle2-find-range/decimal128-precision-v2/encrypted-field-map.json @@ -13,7 +13,7 @@ "path": "encrypted", "bsonType": "decimal", "queries": { - "queryType": "rangePreview", + "queryType": "range", "contention": { "$numberInt": "0" }, diff --git a/test/data/fle2-find-range/decimal128-precision-v2/encrypted-payload.json b/test/data/fle2-find-range/decimal128-precision-v2/encrypted-payload.json index 73920aed8..638e2a160 100644 --- a/test/data/fle2-find-range/decimal128-precision-v2/encrypted-payload.json +++ b/test/data/fle2-find-range/decimal128-precision-v2/encrypted-payload.json @@ -3,13 +3,15 @@ "filter": { "encrypted": { "$binary": { - "base64": "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", - "subType": "6" + "base64": "DdcqAAADcGF5bG9hZABjKgAABGcATyoAAAMwAH0AAAAFZAAgAAAAABB+TYwDkWz8ouVl4Q4oIBElQKgGEDqMjPPSv+TZS8YABXMAIAAAAAAMLfd8ZW9xVgL8jqH0+wwdhD/Ktnb5fhh2ZM0iAVmS3QVsACAAAAAAYtpOd8Bd7k/b0zH8fsxlfmB/SwY0mcOqYsn4JIIuDQwAAzEAfQAAAAVkACAAAAAAffWVv+ysFys5eTN10LACdyWxHn/dCKMRWAQKzYmM5YEFcwAgAAAAAGDv6msNPvdhwK8sTlBu4iuoZyMtzmlAPYyKrR3b3KvGBWwAIAAAAAB61GI/ANIVYHOlZJaQ4pYzp8pK1EnxLI5uelzv27HynQADMgB9AAAABWQAIAAAAADwKL3PTbIxWwM3Ie8tK0sAdHbks7bZQ7k/+BtQb8hK1AVzACAAAAAA518WFoVWrUk+vd0h4ubURgpaBx5nuFnkUlPm7+Uv8j4FbAAgAAAAAOpTJTWFIUMsKaqzPZ2E+F5/MJKFRX9nbH7g/3FwbDyvAAMzAH0AAAAFZAAgAAAAAPeDZq0JZhU5dbRhsJu8i26uo0gCzLbXRuQv0qapUyUABXMAIAAAAABUYRvsvRAKNX88FMC9TKGV12jjrtOgqOUx3Aj2GyO4TgVsACAAAAAAl7RsOFQfWxmV2cMZafTExrUJC43pyC/+L/peqek9Lf0AAzQAfQAAAAVkACAAAAAA1A4pQT0U6YKgy9rYhiDjktlclfRwylRHU68jAWaMsNgFcwAgAAAAAHp3IgqRDzqX/yPzN5ZwNh5UZFgp3RRLPpOjcts4EAqwBWwAIAAAAAAQsrQTEjSDj9bE2z6Z/5Rr6aJ7cy4w7d1o8a6QDbdVRgADNQB9AAAABWQAIAAAAABFCn58YDTy/VuFydht+w/S5teX3KDXxCZgx+Hax3wR0QVzACAAAAAAGF7v3ATOcTb3y23TbHJEXtuTtrY0f2TBWDVM9jn+VPUFbAAgAAAAAAOIZXl/9FE+TClKtkwYc0FJqubDKpX5JhcjvdBb8+afAAM2AH0AAAAFZAAgAAAAAGdbcKmZIVOCU80pgckeEkcL+93kExZCnO0hdAEvSwKeBXMAIAAAAAALbWpEG7Y/HtVTPWVb3kN+f/S3DbKr0BUG2RrfgeKMuAVsACAAAAAA/xLWzk4DlwlPogukD3gtqe4uxKX0GxEJYcG258VMxWsAAzcAfQAAAAVkACAAAAAAlEha7oMjYtH7Y+LT05oFkSZLYUifIGcaz3B/0l/bCIgFcwAgAAAAAGgOorOPXWrI59eXh1x+SYYepnFfICycaWAD3CwlFZZRBWwAIAAAAAAiwOi6zKj8Px7gELBSq8WGsq06elwYJKqk33igW1ZoLQADOAB9AAAABWQAIAAAAABNIe733XIhQXqiJNTdeGV8P48xU9Gy313Dcoj0bIOFuAVzACAAAAAAdCm75t1SwaYbXfPzqYDbibSWiSS4RwQimSSXivhnLYQFbAAgAAAAACn4x6fMcMNSQ488o0532pjr4xQ3NWdx6f7/2bkJxTjhAAM5AH0AAAAFZAAgAAAAACL9+rQRyywIXa5Pr7g2SnB0s0EjIct7PQtzjEkA69acBXMAIAAAAADz54imCCbu/qQkYP9wW2f5pHoBS+EyCe+xuDwC0UTiYgVsACAAAAAAKv602j4c3Bpn2t10qGl68eAD/fQsIH5lKMj8ANwrf7oAAzEwAH0AAAAFZAAgAAAAAKTK0NLhQ/+Y/HMxjRwBlXpXJAhAmCoWf1fReTegPnVpBXMAIAAAAAD7AlW+P4FfQS4r8d7EEvPVEP1diSbrVDBqg8ZvNl1XRAVsACAAAAAATTSEkff+/JMBjNwUciY2RQ6M66uMQMAtwU+UidDv1y4AAzExAH0AAAAFZAAgAAAAAGMbgPxi2Wu1AlqoDKTgyBnCZlnCjHm2naxRcizkIbYJBXMAIAAAAADMvSM3VZzVyRFCfUvcLXAXQFRIxlhm0t0dUsnaRZG4hgVsACAAAAAAI7uGriMAQc4A/a70Yi1Y7IAC7o/mfNYf7/FvwELYf80AAzEyAH0AAAAFZAAgAAAAAPnZ1bdmrcX0fsSxliuSqvDbRqwIiVg0tYp0PViRX0nOBXMAIAAAAAAqBdZGg9O74mnwyQF+lILtyzHdLOErDjPSf9sM8EqCugVsACAAAAAAwhuDsz+fCtqY8mW8QvEVQERjDChwrYTw4y7dinlCCOMAAzEzAH0AAAAFZAAgAAAAAJ40Dmb5BUT1AlWjfXB43nIbJgDn9rBg9FAeYR80WK0vBXMAIAAAAAAMPqLMDdNmnKzA3Hq49/NkJfs+/cjnyjSAbmiOFUE5FgVsACAAAAAAxbi7ql49Y4pduqWlLJqpwimRzrEnC7w5fWaMBiinHL8AAzE0AH0AAAAFZAAgAAAAAGelnhqWM2gUVy4P5QE/2Zfd7s9BugPqB/tcnSsFg5X0BXMAIAAAAAAWUhif3G+NMvZ3YPLB5OMuIhfPEu6U8KR9gTvJFz5uIwVsACAAAAAADEs8/aVSj2sJjxjv1K7o/aH8vZzt1bga73YiIKUx5DYAAzE1AH0AAAAFZAAgAAAAAD1xX2wCyf1aK1MoXnBAPfWLeBxsJI2i06tWbuiYKgElBXMAIAAAAACW1NW4RibvY0JRUzPvCmKnVbEy8AIS70fmsY08WgJOEgVsACAAAAAAQq9eIVoLcd4WxXUC3vub+EnxmcI2uP/yUWr3cz0jv9EAAzE2AH0AAAAFZAAgAAAAAHwU1LYeJmTch640sTu3VRRRdQg4YZ7S9IRfVXWHEWU8BXMAIAAAAACozWKD2YlqbQiBVVwJKptfAVM+R2FPJPtXkxVFAhHNXQVsACAAAAAAn7LS0QzTv9sOJzxH0ZqxsLYBYoArEo/PIXkU/zTnpM0AAzE3AH0AAAAFZAAgAAAAAHKaToAsILpmJyCE02I1iwmF/FibqaOb4b5nteuwOayfBXMAIAAAAABPxYjSK5DKgsdUZrZ+hM6ikejPCUK6Rqa0leoN7KOM0QVsACAAAAAAH9rPq5vvOIe9nTAcM1W1dVhQZ+gSkBohgoWLPcZnQXcAAzE4AH0AAAAFZAAgAAAAANTGiHqJVq28n7mMZsJD6gHxVQp1A6z8wgZVW+xV/lhmBXMAIAAAAABCR4BfdNVy7WE+IyQ312vYuIW0aGcXxr2II/MbNz8ZdAVsACAAAAAAng0GYpYJTypRLQUd5tIXWaAjZX5na04T/BypmwwrXPoAAzE5AH0AAAAFZAAgAAAAABooumzjEqp9Hvvd+sn1L82NI2iUGRl0nXQNJTHM7oyVBXMAIAAAAADgjz5L2ursK4C+pXXsJ6XHABhyallj9s/vSUgxXvjiiwVsACAAAAAAPjlAM0tbO6EUmLAeIZt57YMkMsuQfuC3T3d9vtnxgjwAAzIwAH0AAAAFZAAgAAAAAMA4jmE8U2uGkYUeKoYSlb22tfrRq2VlhV1Jq1kn4hV9BXMAIAAAAADG4fLeJUcINPSb1pMfAASJkuYsgS/59Eq/51mET/Y7RQVsACAAAAAAmwwcWOnzvpxm4pROXOL+BlxjEG/7v7hIautb2ubFT44AAzIxAH0AAAAFZAAgAAAAAK8/E3VHzHM6Kjp39GjFy+ci1IiUG5oxh0W6elV+oiX2BXMAIAAAAAA4/F4Q94xxb2TvZcMcji/DVTFrZlH8BL/HzD86RRmqNAVsACAAAAAAif3HPf6B1dTX/W+Vlp6ohadEQk/GAmHYzXfJia2zHeIAAzIyAH0AAAAFZAAgAAAAAGUX9ttLN1cCrOjlzsl/E6jEzQottNDw8Zo94nbO1133BXMAIAAAAAA7uVthFvXH+pbBrgQmnkPcpiHFEVCAi0WA7sAt9tlt3gVsACAAAAAAznaMStSbtGXU1Pb5z9KDTvEd79s6gmWYCKOKdzeijpEAAzIzAH0AAAAFZAAgAAAAAKnT/qg8N85Q9EQvpH7FBqUooxHFgrIjqLlIDheva2QSBXMAIAAAAABGAKkFMKoSIrvClWF7filoYM6fI9xSqOJVNS3dv4lxYwVsACAAAAAAgITE31hQA4ZOxpUFYSYv0mzWbd/6RKgbUXiUY96fBQEAAzI0AH0AAAAFZAAgAAAAAHRDRDT2hJrJ8X9zB9ELT28q8ZsfkYr92chaZYakiLlqBXMAIAAAAAAT0Le67ObldDta/Qb17dYfdslPsJTfGj3bWAgC0JIingVsACAAAAAAMGDrqys8iJ3fCT2Cj+zXIuXtsf4OAXWJl5HoPUMlbNoAAzI1AH0AAAAFZAAgAAAAAOOJcUjYOE0KqcYS1yZ363zglQXfr3XSD+R5fWLSivDoBXMAIAAAAABjeLe+tg37lNa+DdVxtlCtY77tV9PqfJ5X4XEKrfwu0AVsACAAAAAAlbpHiQAPLLTvSF+u58RBCLnYQKB5wciIQmANV9bkzsoAAzI2AH0AAAAFZAAgAAAAAMwWOOaWDDYUusdA1nyoaEB3C4/9GRpFNGags95Ddp4LBXMAIAAAAACLrsQXGWK15fW4mPEUXJ/90by13aG+727qWJep8QJ/WgVsACAAAAAAuThwsAsKUB56QAXC0MjJsZ9736atbiHPlK2tE0urf9QAAzI3AH0AAAAFZAAgAAAAABPRXBK0z8UANcvMDWntBjN9yF7iGMPLbhbaKrvHwcplBXMAIAAAAACZlqWsYPIb+ydmH03BxD3TqSGsSNoI7EVCy0VgW0TpYgVsACAAAAAAD2uaBv8oc7l4EeC5PWx5sfeyGZoas0JdFJ33M3jjgjMAAzI4AH0AAAAFZAAgAAAAAOn9/6pbzjIxFEApugaVOvVKXq23sDCJELv5UtLPDZI3BXMAIAAAAACHIwSDTlof0vFoigF4drbeM/8rdlj/4U386zQsNLtPGwVsACAAAAAAsYt/rXnpL55J9rlWSFRA4seaU6ggix7RgxbrJPu6gO4AAzI5AH0AAAAFZAAgAAAAAIMCESykv5b5d6mYjU5DlnO709lOFCaNoJBLtzBIqmg4BXMAIAAAAADs1Bfuaun4Es3nQ4kr29BzheLRDcFv+9a0gOGkSEcrDgVsACAAAAAA5kW6i/jOBSdoGAsZEZxVNRvt6miv86bP8JfUT+1KJg8AAzMwAH0AAAAFZAAgAAAAAFSPmr27XgKhUkbEvvC6Br5K1w7280NZrrhdzfYF+YGjBXMAIAAAAADv2h+Xq6kM7MHYTLMACRwbe2MzGHu4sdB67FGzDR6H4QVsACAAAAAAKII0MMC7o6GKVfGo2qBW/p35NupBp7MI6Gp0zXYwJOcAAzMxAH0AAAAFZAAgAAAAAPSV9qprvlNZK6OSQZNxKhJmBMs6QCKFESB/oeIvAS0iBXMAIAAAAAA835Jh22/pvZgKoYH6KjE+RRpYkaM1G35TWq6uplk/rgVsACAAAAAA162IdSb079yVlS7GkuSdHU3dOw03a+NS55ZPVBxbD08AAzMyAH0AAAAFZAAgAAAAAGsadEBJFax/UltPXB86G/YPxo6h353ZT+rC62iGy7qqBXMAIAAAAADs9TP3h91f6bTuG8QCQMA3atAVGs8k0ZjVzX3pM8HNAgVsACAAAAAA2ed4R4wYD6DT0P+N6o3gDJPE0DjljbRAv5vme3jb42sAAzMzAH0AAAAFZAAgAAAAAAxgeclNl09H7HvzD1oLwb2YpFca5eaX90uStYXHilqKBXMAIAAAAACMU5pSxzIzWlQxHyW170Xs9EhD1hURASQk+qkx7K5Y6AVsACAAAAAAJbMMwJfNftA7Xom8Bw/ghuZmSa3x12vTZxBUbV8m888AAzM0AH0AAAAFZAAgAAAAAKJY+8+7psFzJb5T+Mg9UWb6gA9Y8NN9j/ML2jZkNDNPBXMAIAAAAAA2R/nCtSYfCim89BzdUPS+DTQGwYDk+2ihFPEBS8h+ygVsACAAAAAAaEQra7xyvA3JS0BasIpRVrz7ZXsp6RpH7OpfJBFzFG8AAzM1AH0AAAAFZAAgAAAAAI4qr+sJiRaqwZRhnenAzD7tTKq+jP1aaLyAln3w1HQuBXMAIAAAAADNYpqV73NpwN+Ta0ms1SRiu+6WNOOdGT+syghL+JAFhQVsACAAAAAAN07Fo9SK+fXp5Odk1J806pyVWc2WHXCtb1gJQknTgqsAAzM2AH0AAAAFZAAgAAAAAISgN1Hid7IWvDESN/3tywFZiBsZPYapOUx9/QjDDxLfBXMAIAAAAAA7lxpEz3+CGdv6/WKIAlIwRYURREKgn7+StwNoVekkDwVsACAAAAAAx+Oa2v1e1R7VomfsvcKO8VkY4eTl7LzjNQQL6Cj6GBQAAzM3AH0AAAAFZAAgAAAAAOTLdk1RIUzCsvK7xCXy+LxGhJf87fEL406U9QKta3JRBXMAIAAAAAD8+6UnUn8sN6AgQuuf7uFxW+2ZJNpZLgp3eKVtjbo9ewVsACAAAAAAQN3mZHmaDM0ZbUnk2O/+wCUjiCs4bnshfHjd/4ygLXcAAzM4AH0AAAAFZAAgAAAAAFH9l9GGA1I52atJV5jNUf1lx8jBjoEoVoME97v5GFJiBXMAIAAAAAC1qH3Kd78Dr9NGbw7y9D/XYBwv5h1LLO8la5OU7g8UkQVsACAAAAAArZ6atJCYrVfHB8dSNPOFf6nnDADBMJcIEj8ljPvxHp8AAzM5AH0AAAAFZAAgAAAAAPLX4XT1eMfokMvj73G6loHEotbdivVFM6cpMbU0zIOmBXMAIAAAAABuTqwm6E60kVBN5iClzLnMBozIQRYjMozzRNKVhixkEAVsACAAAAAAjvY9G0Of8EQcZ4GVfSEVz7jrNn7i4qps2r82jJmngKoAAzQwAH0AAAAFZAAgAAAAAGzGJAUZBcVKRb4bCSNaRxtcDH2TqIgHqMElD9RL7SzDBXMAIAAAAABbJfrLwBrqZ2Ylm9QfL7nkW+GJ8vTlaeMUDT5620ebaAVsACAAAAAASiaS1IlBls5Tan57XqqbR1cuvyOcoSibJJQGREzm4c0AAzQxAH0AAAAFZAAgAAAAAC028abAppwE/ApZHU5RbzZZ8OPD5eJ8/6+NgiSFf4d+BXMAIAAAAAD3THvDUYWULR+AVLuRRPPAMVMeZ2ldWpBYSODboszWbQVsACAAAAAAATOaeYj+kx3MTDeNUcKGbUxLZDeMjC8JrWnlHmWTamQAAzQyAH0AAAAFZAAgAAAAAHWr8wQYIKLiKeb3wd8kZQuXD/GUHDqXj12K/EQWV11CBXMAIAAAAADo3aFHDuyfls9tcWCxlFqJn4zDXd3WT9CIFYFjJnTYswVsACAAAAAAeMbIatR7DgefzuvF4WyNVDjJxP8KPA6U/rmMQIBvpM0AAzQzAH0AAAAFZAAgAAAAAMdRi6AAjF1Z9ucMqYl2Ud1PLUGOlOPJFgSrPTjs27u8BXMAIAAAAAAqOdI7+P8srvqCTFadwMM3iggaVOGcf1BB0EjBYeV6RAVsACAAAAAAU+V2GrqgxJYs9mxuak/8JMFICXwQ2vksrBdOvSwWFpoAAzQ0AH0AAAAFZAAgAAAAADKKe++fqh4sn0a8Bb+w3QMFnOqSE5hDI3zGQTcmJGcOBXMAIAAAAAC8ebHa++JmxVISv6LzjuMgEZqzKSZlJyujnSV9syRD9AVsACAAAAAAQcVNSjyetScLu78IrAYaAigerY4kWtnbctmIyb19Wa4AAzQ1AH0AAAAFZAAgAAAAAMKoHwhZcocaQy7asIuRG8+P1qPENgFAwzc3X1gZWYnJBXMAIAAAAAB+R01s+WdJjLa5p7STuEylradWr+2JDxsWx9bKDgXNDQVsACAAAAAADeXTBHsm+FH2pQVoqOBPPIJiTJLqrzGisNnQ3S3xYJAAAzQ2AH0AAAAFZAAgAAAAAF41XuyBvREKcxjDl+wbnillseykpAjCKHmwIu+RNvM7BXMAIAAAAAC2Wzq+2mfO7howoOZxquqvOuH1D2WdlzA1nK+LUp0FMgVsACAAAAAARha+D6DVeDxSjNyXXO5DMY+W70EGyfc7gxR4TjzcYusAAzQ3AH0AAAAFZAAgAAAAAAfONgdhLPEjvsMxTY9K4//7WjREuRmZ6Bpcf3yvdMf3BXMAIAAAAABCy/zjmzucxQkbJ96l5vS5x6SeyHE0Z+Aqp9oZgBcC6QVsACAAAAAAasG/uN4DnWHZLkLhH4cMzXk5F/HL2D+72WH+1jjgH8UAAzQ4AH0AAAAFZAAgAAAAAA5ZsebFm5NrSGs2E17+fUt4qkzsVmy4IJA5nGehtSBVBXMAIAAAAAAOzteKfp+YGPqn1fi8u/lKXP7E2Zgouwgt6KAADHX9AQVsACAAAAAA2+FaAbl8JZogfNCI0FFbmZZPy/KLF1u16FGrPspSbEIAAzQ5AH0AAAAFZAAgAAAAAHf6LIjrvy6I31w/8b910U9qU8cBIYiWn9mW55NYZF8VBXMAIAAAAACONPisRtnFG9vV2mTQ3hRR/hGuVRA9dGd9Lt9JqDoM8wVsACAAAAAA+h7V/jIYJcd0ALIvFBlwxkFqWxBVlkqT9wFkmumr4QcAAzUwAH0AAAAFZAAgAAAAAGSuCqGwDiCbKHUv5r+dNZHRupcQLFq+vnesTVMAAP9eBXMAIAAAAAA86UcdE9/45JJhoIKu7KXHb4CpP8laA0ga2+az4ydybAVsACAAAAAAqpiTVy3VNE3SSSzdkVQqCL5FKQR+jEzMUZCYGL92yloAAzUxAH0AAAAFZAAgAAAAAEeRZdjMb3fthvbV8aszi4gMScRnknrj6oMIP5QOG5wKBXMAIAAAAACl7skGzK2xwd7ZLGfv+3ODOfP2UQGEe+vGDZphWbFjGAVsACAAAAAAlQo0yTqQl/6qOSqTYU9an/9a5MgHqZRIkdmmx/pycGYAAzUyAH0AAAAFZAAgAAAAAGs3H8zIeyQeEbORy4WJZi3orD6mbEdHAoGlx2LbjYB7BXMAIAAAAABRBtcXvCZ0k/N0bTks4FqPjnI6y5WEjwmee3IPOV2dhgVsACAAAAAAzgOebXiyusjNVeww8k/dZzV+DJl1IAQaeS42s6txDwcAAzUzAH0AAAAFZAAgAAAAAHLQCN2v6k1M3Mh09ycsGxn2lg2rkoRXLm1zMe8CN6HuBXMAIAAAAAC6cm35hij6OZ3lC3WkuPBCYNpkl/G3gaPwe+B8uNFscAVsACAAAAAAzuZ6GKMfHIcJgVeBX6z4F90bdHeMJHM/g2uEeh/04uIAAzU0AH0AAAAFZAAgAAAAAJYETkDrNHQ6RA9efMan2750oIVURhaG7OF5A7FGJD7YBXMAIAAAAAAuS/DKY9DK1VCIQpro93O39U5YCk3gQvUy30nAm2sD/AVsACAAAAAAnyDClVlJh/MhHT+7ZN56OOy4fR44cgRcA3LoL6lcnOMAAzU1AH0AAAAFZAAgAAAAAKyMZSr4RDrwyOfEpxz12DkESUrG28NOIH9hD7K7V70WBXMAIAAAAAC+N+Wn1B9PBJwDM+RhQoDtxyBrzrpUsn639e7zymuHsgVsACAAAAAAnzjJywP47oA64M6CO6Ypagkg2WNwkzBec+idRpwgx8gAAzU2AH0AAAAFZAAgAAAAAOzfhanz31ZesiQO4eqwgIPzQBHm9q86H7Zz5St4UmOgBXMAIAAAAABRKkoeKJdPRKAhNpWJu65ZexKtvXN0YiYR71Slz+xbKAVsACAAAAAAMM9lS884l13bg0meIRtfAMe+H0BjqaWDxOhdNS2cJ0YAAzU3AH0AAAAFZAAgAAAAAMDQ5Ni9LzyYETb7v+Zsi3sI5gVVicaS9cXKeT5dyxguBXMAIAAAAAAXeLsOHQxkAHOnCUOSMBtxuqzhAZbTXcGGIo7BJQsqcgVsACAAAAAAD4kCd4scjl8215HLKkPEtvG6tqeFqEt7299YTtXHBZ0AAzU4AH0AAAAFZAAgAAAAAKor/9SYRTiqcVPbQZ4TNX6vGtGQLOgX3IJQOF00js0fBXMAIAAAAADnv8LhIkQu2Ngx/QkG1ivFBydRm1CXTCYDa5ehcHalwAVsACAAAAAAsFXF4ojkxEiA1AZplSiIbJhEMYtF2iB/J+3ijN6oYfsAAzU5AH0AAAAFZAAgAAAAAHM+4F6q+h+oG18k7Ugc3wEY+D1AF7CXs2uH1Vly9iOVBXMAIAAAAAASi+d+HDuasm4JlHqEKXFkeTtGfVSOXx7cCL/ickhEmQVsACAAAAAAYABUNdWFsGAzGGWTOgHesVjQiuF+z2Pq+2yjKpbuiuwAAzYwAH0AAAAFZAAgAAAAAN1a/xvr68bQdDLEWMwBJ+xkR1RSQe/rfHzm+oRUWjj7BXMAIAAAAADC6XG7b3b5ekJq3tcbVsNzRzjTx1n7eQZJm8y6RW+XjQVsACAAAAAAbKqpiW1mQiFG9e4RJwzhZ7GJfGP7eL5SGDi/wJAAcgwAAzYxAH0AAAAFZAAgAAAAABRi1V8GjEY+KnhNZdQj/MRfusJWh77uPc73hllc3Y6mBXMAIAAAAADZJrEhrrWh63Bg2WlJwWA1BJpERss3zYiVKRusPsXgYQVsACAAAAAAad/RFmsdVc+iIEpC7x7LvfLY4q2sgwhleAWUcQU/em0AAzYyAH0AAAAFZAAgAAAAAMfEhtfZsARdx3HIOX8r7sxCwj54Rlbjv9b5A4SHZCNQBXMAIAAAAAA9Nv9HBmezK3VVD5wO36C0r6UKnfpDA7J6nz9M1ZY9fwVsACAAAAAAZFJjrcvTNvMSm9ynZCWbxz8KSdM7XNQyg0EJLE4g2ZUAAzYzAH0AAAAFZAAgAAAAAEKW2CdiVdJFRASYIdGeFlmFxxTkWPJvZYDB3X56dJ8XBXMAIAAAAADTCvZIcS8sI4HXKprZfN5glm1GnOLgvCoa89mVtV5YrQVsACAAAAAAj4YXFjfWcNBVGnBGhMFGckJqnXY2ABMAR/RB8Lsp7rYAAzY0AH0AAAAFZAAgAAAAAEutYsuURdzGdpno2roJQZo1eqP1UbL6EDUtea85tUI4BXMAIAAAAABohKVuw/lWQ1kRgzJ0vBs8JyZwaGW+QYJJmWB5iA3KAAVsACAAAAAAC5ggnczB/q8AVMWNXK4U0lSRtX/ERZWXcPWhQKmcUaMAAzY1AH0AAAAFZAAgAAAAAO1iwPElahORehTk1yUZsKihXboCq/6zxwgRP36Xo3V1BXMAIAAAAADGnEuD75uB5/BaAShmt8r5xrHLbfUeKZ4dzT4YryYOdgVsACAAAAAAh/D+SjVZhqFrsDEgjnt/1bWzRS3Ni70PjyIAQZdJUKEAAzY2AH0AAAAFZAAgAAAAAMlJpmC3v7UaWyPUp8PJ3RSqgzCd4YwCcGCxdVx0M3hlBXMAIAAAAABAEL3SDse67rubcviazq9u5CRUiVxTrxGJMIvSDtTAyQVsACAAAAAAHvqGlnw1oL+ukOCHjxJqTB0Y1p13W4HTswK6dnOB9asAAzY3AH0AAAAFZAAgAAAAAOqxwR1L6dUiQ/18NIeMQeTQGFCSXhdyvZR3utp4gPvMBXMAIAAAAABF4HiwATABEf7/3uVWTV7+e0ZZxUz3ZRjwLZ7R2+JKOAVsACAAAAAAmokF/EQWaJOFRzVceXCK1SkMWMAG6mzhPemagfm4kaMAAzY4AH0AAAAFZAAgAAAAAOPl56k1CDGBmzlOnQnuuWxRlQILsfZt/RkuL3VXlmrZBXMAIAAAAABycFzLbUg66HkXBhqp2BIRmzaB3U06F+r76GufPC8X0AVsACAAAAAAUpyUsstlU4s2KZWxC2VX+lXtq17mqtj7BseMlXqk4z0AAzY5AH0AAAAFZAAgAAAAAAizvP0kRPP5NsR3Lgkjcu/hCN6Hlro/1et2JFGadJwUBXMAIAAAAADWh06ylmbMV7YUPM8nNE4gPmBovILP0csZEzlxIwqUHAVsACAAAAAA80WaShO2g1Y3H1v2JdN3yYr3hd7wJqqMVsqKLxy83+wAAzcwAH0AAAAFZAAgAAAAAG03sWigYFdzomEQS3piPmXHdctygfLtoB6v2JpuZXLrBXMAIAAAAAAyNHkG8/r/gchTxN3+xMJyn7D9EHg8xurSmtu2vKfm4AVsACAAAAAAF2hXTl12343tY7/58TzW/j/y+K8uEo6cbymbXHXbOBAAAzcxAH0AAAAFZAAgAAAAAN9vb5Mt+1faUL0Jv4Rw8Sm0teC7DiJoklmzCtHAEiqFBXMAIAAAAAA9BbRXVFpfhtABJeSQh2jjelAOs3i7PxjFo2h8y8ZtxwVsACAAAAAAEXGZx6aKA+kkc4MiwbgZh+5MlRM4VtsGXpWxLgUVuKwAAzcyAH0AAAAFZAAgAAAAAEvj5EUo7D1fLfzCl2pBEfKsxOYdtx0goFlgnu+G0MJWBXMAIAAAAADUtX+QWNQLc0N07HDKUOG/AUPC/L/SodoNyy5g+maTNgVsACAAAAAA3dkTrvKAUH413AMoHnJ9Y9Qe2At+TEaSHQ0yMTgoSuAAAzczAH0AAAAFZAAgAAAAAHx7x9/KJCvra1HfH2KLvRIPdXQ0PxB8/xYXn5Nc0dUsBXMAIAAAAACBVV98MvnXciPXhTE+7UF2SM8rtf0EyGTk7r95yS/CtgVsACAAAAAAJkXe/I9UqK0M6Qi3vKSQ303F01Kw1lsyofnGHGdP2bQAAzc0AH0AAAAFZAAgAAAAADLWupyXf9TGA3rTlFi1hmN8wUM3lCj3dpNPwkj87l6QBXMAIAAAAADrAhRHKXMwUFtBRjFKPnKJ9EVB9POnpoXd5nVFcY2lnwVsACAAAAAAES27lFQ6blo6J7VJKKnCLyL0uE2vhaVDHvGS+Xl6JIYAAzc1AH0AAAAFZAAgAAAAANWcTgudt0oVrkC0+4xZTvjCaPTwmc6e5mtVWnZAOk3YBXMAIAAAAABW1JAizgqkmBRa28ZmZ5JYXoVK7dVUkWHrbMOtdLwSCQVsACAAAAAA6jZgSp2B2FgxeRL9tH+RxdQmh3mXmMlfiyunxG6vH5MAAzc2AH0AAAAFZAAgAAAAACODdrQ54i6kkIpidgGIENcRtVihFBoIvhNPLFn54uF6BXMAIAAAAADhZlJEjgIWNHASaqD/cyl9R2ND6TUQs9qgmNco2F1y4wVsACAAAAAA5aJ5cDWCyhkPgpHGWR2irvMAWlPmHDYRFUQhv+CuTlYAAzc3AH0AAAAFZAAgAAAAAC8jR9JN8BFgXlC3lgo6SE03NRA7juVNe/l9JOagOC5CBXMAIAAAAABRNf8azLdXZOsLPV84A9ltNki+QBroHIc5VFkCZOuqPwVsACAAAAAAu9gbz8bYRPJj84i3VTjYGpGnKAgQZ3ZTbILn5Th8xvwAAzc4AH0AAAAFZAAgAAAAAGAlFyl5pYEcvq9Au4QbHC7urVIP5L3LUbUJ8utjuH3PBXMAIAAAAADs8HNWINXMZDOPssmJsGdAb5ZQzmTPM5C3hhqU0v6fhgVsACAAAAAAlypAIKxptBkZI8+bytdhfs0bloGxJyOBU0fMfoRwzjsAAzc5AH0AAAAFZAAgAAAAAGqVqopTQHEV3WxnVty1C3eAX6o8jI6IiwlOsFhRvTfdBXMAIAAAAACY/fxUTVzRUt3xQHuZ4Gi79y0WBYNRsjb+S89eqF7qzwVsACAAAAAARk0soe4ixB/nCi5uDhxnHLj/hsQO0177q51fu5KXS3AAAzgwAH0AAAAFZAAgAAAAAKh6pgPZVrc42VlReQ/B4wkdzsrIBNvdZA2isoX5vBt/BXMAIAAAAADHuW52B8dfG6nslza59o5xZu9cxDlklObfQqzG0VyV2gVsACAAAAAAZIQaUb92wwyr5anpcFORMGoYF0PBA5uCuz0HQlXVsKsAAzgxAH0AAAAFZAAgAAAAANuWg6p/03eY9PrLQEwv3I5PdG7qsZSQkX+DvlQ0zJOrBXMAIAAAAACM1VbBFOFOYxyDEB0btJ6dd8Ol+4gP36iZ9UiFbDI8fQVsACAAAAAATuqgqccWIOS1HcoXwEc2Bhf8L8bM4533fhaZY7eI4eoAAzgyAH0AAAAFZAAgAAAAAL6X4GBvAClaNaMMmpkFfhAAdm3es0mtFFSjpfjxlc2qBXMAIAAAAACo9MV6Bwgt3TP59JbvOnMN/41Uh/Cik+Ay9PyxUlc+AwVsACAAAAAAlmRoAn8+fZrATPye4R2AXLbEbaZbYHBeYMO+BGXfUkwAAzgzAH0AAAAFZAAgAAAAAFJjRYUVb4pcwLxGI5GDyjIEkMNlrOmz3EuN8HV7ebAFBXMAIAAAAABfYMVLK3KSn6TfE2zmjejrEqDGAJDBX3bwOd4Ue4Md9wVsACAAAAAAwgKbzRW4q6dXXa2zQSWbSQE6B2sO1K9dwOxwGmghjzkAABJjbQAAAAAAAAAAAAAQcGF5bG9hZElkANIEAAAQZmlyc3RPcGVyYXRvcgABAAAAEnNwAAEAAAAAAAAAEHBuAAIAAAAQdGYABgAAABNtbgAAAAAAAAAAAAAAAAAAAEAwE214ABWB6X30ECIRAAAAAAAAQDAA", + "subType": "06" } } }, "encryptionInformation": { - "type": 1, + "type": { + "$numberInt": "1" + }, "schema": { "db.test": { "escCollection": "fle2.test.esc", @@ -25,7 +27,7 @@ "path": "encrypted", "bsonType": "decimal", "queries": { - "queryType": "rangePreview", + "queryType": "range", "contention": { "$numberInt": "0" }, diff --git a/test/data/fle2-find-range/decimal128-precision-v2/mongocryptd-reply.json b/test/data/fle2-find-range/decimal128-precision-v2/mongocryptd-reply.json index 2ed24872c..58d13cd2f 100644 --- a/test/data/fle2-find-range/decimal128-precision-v2/mongocryptd-reply.json +++ b/test/data/fle2-find-range/decimal128-precision-v2/mongocryptd-reply.json @@ -31,7 +31,7 @@ "path": "encrypted", "bsonType": "decimal", "queries": { - "queryType": "rangePreview", + "queryType": "range", "contention": { "$numberInt": "0" }, @@ -55,4 +55,4 @@ } }, "hasEncryptedPlaceholders": true -} \ No newline at end of file +} diff --git a/test/data/fle2-find-range/decimal128-v2/encrypted-field-map.json b/test/data/fle2-find-range/decimal128-v2/encrypted-field-map.json index 2715ab700..d513a30cc 100644 --- a/test/data/fle2-find-range/decimal128-v2/encrypted-field-map.json +++ b/test/data/fle2-find-range/decimal128-v2/encrypted-field-map.json @@ -13,7 +13,7 @@ "path": "encrypted", "bsonType": "decimal", "queries": { - "queryType": "rangePreview", + "queryType": "range", "contention": { "$numberInt": "0" }, diff --git a/test/data/fle2-find-range/decimal128-v2/encrypted-payload.json b/test/data/fle2-find-range/decimal128-v2/encrypted-payload.json index e2e5329a8..509ce5edf 100644 --- a/test/data/fle2-find-range/decimal128-v2/encrypted-payload.json +++ b/test/data/fle2-find-range/decimal128-v2/encrypted-payload.json @@ -3,13 +3,15 @@ "filter": { "encrypted": { "$binary": { - "base64": "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", - "subType": "6" + "base64": "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", + "subType": "06" } } }, "encryptionInformation": { - "type": 1, + "type": { + "$numberInt": "1" + }, "schema": { "db.test": { "escCollection": "fle2.test.esc", @@ -25,7 +27,7 @@ "path": "encrypted", "bsonType": "decimal", "queries": { - "queryType": "rangePreview", + "queryType": "range", "contention": { "$numberInt": "0" }, diff --git a/test/data/fle2-find-range/decimal128-v2/mongocryptd-reply.json b/test/data/fle2-find-range/decimal128-v2/mongocryptd-reply.json index 206c36e86..8c6ce71ba 100644 --- a/test/data/fle2-find-range/decimal128-v2/mongocryptd-reply.json +++ b/test/data/fle2-find-range/decimal128-v2/mongocryptd-reply.json @@ -31,7 +31,7 @@ "path": "encrypted", "bsonType": "decimal", "queries": { - "queryType": "rangePreview", + "queryType": "range", "contention": { "$numberInt": "0" }, diff --git a/test/data/fle2-find-range/double-precision-v2/encrypted-payload.json b/test/data/fle2-find-range/double-precision-v2/encrypted-payload.json index 40d3fdc47..e43bccbe6 100644 --- a/test/data/fle2-find-range/double-precision-v2/encrypted-payload.json +++ b/test/data/fle2-find-range/double-precision-v2/encrypted-payload.json @@ -3,13 +3,15 @@ "filter": { "encrypted": { "$binary": { - "base64": "DUkDAAADcGF5bG9hZAAZAwAABGcABQMAAAMwAH0AAAAFZAAgAAAAAKfR876j77BmHaWxFf7Px/B695Rn7JAN3upnEpaEqFT+BXMAIAAAAACXqoD16/Q8tNDRR7gP222DxV0SBOSZ4bqsxYILo8a/0wVsACAAAAAA1y7ThR8e87l/kWKzGJThtIrT+i+4I690g9vJeevhk3cAAzEAfQAAAAVkACAAAAAAlpFiajzOojYERTN1LCni1VGk+ZVax/J2Rg3dQeHpMy4FcwAgAAAAAB4PqYOdB4uVsL2LSxWATz5EfrL573g4lDS0nQ+9uVVKBWwAIAAAAABaniO+t61sMSyoQzM/9YtOfA6InAK1+sKIHqbyT7IQygADMgB9AAAABWQAIAAAAAAGWed/HKDT8MkY4RMK+T/F8N9qFjiRfkfp3whoMtqjtwVzACAAAAAAjjy5yZSsBjTwwUXkSpx37XqtMBW93s4a3OwVV7PEVB8FbAAgAAAAAPpRnrDZN/ksgf+tK0r3UNmjdr3yT0e5ZSVYbnxkzYR5AAMzAH0AAAAFZAAgAAAAAFH9l9GGA1I52atJV5jNUf1lx8jBjoEoVoME97v5GFJiBXMAIAAAAAC1qH3Kd78Dr9NGbw7y9D/XYBwv5h1LLO8la5OU7g8UkQVsACAAAAAArZ6atJCYrVfHB8dSNPOFf6nnDADBMJcIEj8ljPvxHp8AAzQAfQAAAAVkACAAAAAAO1tUQja12SujAQx2RpwPbDRjdPc5+Ls8foeYDqw/Rz8FcwAgAAAAAO4FJE6dkcD42BQ8fx3QudYWIOwzZtjxvOMLX56VKwjKBWwAIAAAAABHQbab64A2haSeSv816sVwb58QJXE0izRyptjW39T/QwADNQB9AAAABWQAIAAAAAAId1qXjFZYpDxWI/YS4/n5iKlbeqJgkhe+Vt0zxMclqQVzACAAAAAALEJEZsKnlY9oBhNN6K2+j7ayMw7enQ1N4YEkIvBNsCoFbAAgAAAAANxh2kRNkQHGgUXfFc5mM1ngQ9hpsvdXkytZPGHVjm2XAAASY20AAAAAAAAAAAAAEHBheWxvYWRJZADSBAAAEGZpcnN0T3BlcmF0b3IAAQAAAAA=", - "subType": "6" + "base64": "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", + "subType": "06" } } }, "encryptionInformation": { - "type": 1, + "type": { + "$numberInt": "1" + }, "schema": { "db.test": { "escCollection": "fle2.test.esc", @@ -32,9 +34,15 @@ "sparsity": { "$numberInt": "1" }, - "min": 0.0, - "max": 200.0, - "precision": 2 + "min": { + "$numberDouble": "0.0" + }, + "max": { + "$numberDouble": "200.0" + }, + "precision": { + "$numberInt": "2" + } } } ] diff --git a/test/data/fle2-find-range/double-v2/encrypted-field-map.json b/test/data/fle2-find-range/double-v2/encrypted-field-map.json index f8ae79f6e..12e9d3c0c 100644 --- a/test/data/fle2-find-range/double-v2/encrypted-field-map.json +++ b/test/data/fle2-find-range/double-v2/encrypted-field-map.json @@ -13,7 +13,7 @@ "path": "encrypted", "bsonType": "double", "queries": { - "queryType": "rangePreview", + "queryType": "range", "contention": { "$numberInt": "0" }, diff --git a/test/data/fle2-find-range/double-v2/encrypted-payload.json b/test/data/fle2-find-range/double-v2/encrypted-payload.json index a72dfacc1..0eeffd3f5 100644 --- a/test/data/fle2-find-range/double-v2/encrypted-payload.json +++ b/test/data/fle2-find-range/double-v2/encrypted-payload.json @@ -3,13 +3,15 @@ "filter": { "encrypted": { "$binary": { - "base64": "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", - "subType": "6" + "base64": "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", + "subType": "06" } } }, "encryptionInformation": { - "type": 1, + "type": { + "$numberInt": "1" + }, "schema": { "db.test": { "escCollection": "fle2.test.esc", @@ -25,7 +27,7 @@ "path": "encrypted", "bsonType": "double", "queries": { - "queryType": "rangePreview", + "queryType": "range", "contention": { "$numberInt": "0" }, diff --git a/test/data/fle2-find-range/double-v2/mongocryptd-reply.json b/test/data/fle2-find-range/double-v2/mongocryptd-reply.json index 88ce91f51..3914bd64a 100644 --- a/test/data/fle2-find-range/double-v2/mongocryptd-reply.json +++ b/test/data/fle2-find-range/double-v2/mongocryptd-reply.json @@ -31,7 +31,7 @@ "path": "encrypted", "bsonType": "double", "queries": { - "queryType": "rangePreview", + "queryType": "range", "contention": { "$numberInt": "0" }, diff --git a/test/data/fle2-find-range/int32-v2/encrypted-field-map.json b/test/data/fle2-find-range/int32-v2/encrypted-field-map.json index 336446af0..dc7bd3377 100644 --- a/test/data/fle2-find-range/int32-v2/encrypted-field-map.json +++ b/test/data/fle2-find-range/int32-v2/encrypted-field-map.json @@ -13,7 +13,7 @@ "path": "encrypted", "bsonType": "int", "queries": { - "queryType": "rangePreview", + "queryType": "range", "contention": { "$numberInt": "0" }, diff --git a/test/data/fle2-find-range/int32-v2/encrypted-payload.json b/test/data/fle2-find-range/int32-v2/encrypted-payload.json index c28ed3e15..2401b9f1e 100644 --- a/test/data/fle2-find-range/int32-v2/encrypted-payload.json +++ b/test/data/fle2-find-range/int32-v2/encrypted-payload.json @@ -3,13 +3,15 @@ "filter": { "encrypted": { "$binary": { - "base64": "DckEAAADcGF5bG9hZACZBAAABGcAhQQAAAMwAH0AAAAFZAAgAAAAAKfR876j77BmHaWxFf7Px/B695Rn7JAN3upnEpaEqFT+BXMAIAAAAACXqoD16/Q8tNDRR7gP222DxV0SBOSZ4bqsxYILo8a/0wVsACAAAAAA1y7ThR8e87l/kWKzGJThtIrT+i+4I690g9vJeevhk3cAAzEAfQAAAAVkACAAAAAAlpFiajzOojYERTN1LCni1VGk+ZVax/J2Rg3dQeHpMy4FcwAgAAAAAB4PqYOdB4uVsL2LSxWATz5EfrL573g4lDS0nQ+9uVVKBWwAIAAAAABaniO+t61sMSyoQzM/9YtOfA6InAK1+sKIHqbyT7IQygADMgB9AAAABWQAIAAAAACEoDdR4neyFrwxEjf97csBWYgbGT2GqTlMff0Iww8S3wVzACAAAAAAO5caRM9/ghnb+v1iiAJSMEWFEURCoJ+/krcDaFXpJA8FbAAgAAAAAMfjmtr9XtUe1aJn7L3CjvFZGOHk5ey84zUEC+go+hgUAAMzAH0AAAAFZAAgAAAAACFSn9LbHIGoJEDxQm+l/VhB1Qp2sDHEDDH/n/c8F8n8BXMAIAAAAACBO4bhRYkAW8TOvy65UHl7YNTK+4vge++76cn1G8/dugVsACAAAAAAzG6xXvdYOA8Myyt5WXWt0BWkQNQQtmstxsv5gCZsd54AAzQAfQAAAAVkACAAAAAAGj22/+aFr+8l9CLnrDZ5NhzCgz++msotwjPmSF9OM+gFcwAgAAAAAC9cqJy///jAYzdKgtwFSx75wY+WX47DOOpPRbkb78OPBWwAIAAAAAAGFIMLMvvz+5jqPPxU4J6K0zt8Au0G+ZQeqAioWidVjAADNQB9AAAABWQAIAAAAADbZ5AD/5OvYukqwD1ouIm1JCicqneF8Irq6sPhgRe20wVzACAAAAAAdP03rg0E4wfRAUdu6SaaQOZi4JxoX9bUAFENSuB38wQFbAAgAAAAAHA7IE4pXO053jFajvK//gEl99NHzxtkM2HbOlkgHox5AAM2AH0AAAAFZAAgAAAAACSbt5cVtVjP7BGAWK09HRCwAyV9It3zsFV0xaSVTkCYBXMAIAAAAAB2oDy5xJX9PzwQxDkT/mZcL4L8MEH2iAQkbFRJX8uDnwVsACAAAAAA9gBAm/VjmIxxyxjC3WYtk5garVKwbEaKA4ehcrTrV0AAAzcAfQAAAAVkACAAAAAAPLjGwQ+DBcHE6XSH+knrIFTqq1zCgbltUvFW7wQwib0FcwAgAAAAAOfj/lP3YxmHoZBYlp60ZOnxx38JpMeougcNBUoWQfl0BWwAIAAAAACEzswX85ONfNBaAkc8gU2uGDfsAFrSy7k24snonwgmhwADOAB9AAAABWQAIAAAAADAg4r1xbwXaXEYn9Xc0gZ/ZTDqKRye52R4+M9yw1JoMwVzACAAAAAAPgpORYCcoS+SKCMf2IC1b7sHYFG0LtmWJmTlogsl81YFbAAgAAAAAL44mfvmJUV2pYwYEVRBEpTxcvc2tcu/1wYEmsS50ybtAAASY20AAAAAAAAAAAAAEHBheWxvYWRJZADSBAAAEGZpcnN0T3BlcmF0b3IAAQAAAAA=", - "subType": "6" + "base64": "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", + "subType": "06" } } }, "encryptionInformation": { - "type": 1, + "type": { + "$numberInt": "1" + }, "schema": { "db.test": { "escCollection": "fle2.test.esc", @@ -25,7 +27,7 @@ "path": "encrypted", "bsonType": "int", "queries": { - "queryType": "rangePreview", + "queryType": "range", "contention": { "$numberInt": "0" }, diff --git a/test/data/fle2-find-range/int32-v2/mongocryptd-reply.json b/test/data/fle2-find-range/int32-v2/mongocryptd-reply.json index af388f506..4a53836e1 100644 --- a/test/data/fle2-find-range/int32-v2/mongocryptd-reply.json +++ b/test/data/fle2-find-range/int32-v2/mongocryptd-reply.json @@ -31,7 +31,7 @@ "path": "encrypted", "bsonType": "int", "queries": { - "queryType": "rangePreview", + "queryType": "range", "contention": { "$numberInt": "0" }, diff --git a/test/data/fle2-find-range/int64-v2/encrypted-field-map.json b/test/data/fle2-find-range/int64-v2/encrypted-field-map.json index 64964c127..d093f4128 100644 --- a/test/data/fle2-find-range/int64-v2/encrypted-field-map.json +++ b/test/data/fle2-find-range/int64-v2/encrypted-field-map.json @@ -13,7 +13,7 @@ "path": "encrypted", "bsonType": "long", "queries": { - "queryType": "rangePreview", + "queryType": "range", "contention": { "$numberInt": "0" }, diff --git a/test/data/fle2-find-range/int64-v2/encrypted-payload.json b/test/data/fle2-find-range/int64-v2/encrypted-payload.json index d35ddce01..e755ab531 100644 --- a/test/data/fle2-find-range/int64-v2/encrypted-payload.json +++ b/test/data/fle2-find-range/int64-v2/encrypted-payload.json @@ -3,13 +3,15 @@ "filter": { "encrypted": { "$binary": { - "base64": "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", - "subType": "6" + "base64": "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", + "subType": "06" } } }, "encryptionInformation": { - "type": 1, + "type": { + "$numberInt": "1" + }, "schema": { "db.test": { "escCollection": "fle2.test.esc", @@ -25,7 +27,7 @@ "path": "encrypted", "bsonType": "long", "queries": { - "queryType": "rangePreview", + "queryType": "range", "contention": { "$numberInt": "0" }, diff --git a/test/data/fle2-find-range/int64-v2/mongocryptd-reply.json b/test/data/fle2-find-range/int64-v2/mongocryptd-reply.json index 9fe3446dc..58a9442c1 100644 --- a/test/data/fle2-find-range/int64-v2/mongocryptd-reply.json +++ b/test/data/fle2-find-range/int64-v2/mongocryptd-reply.json @@ -31,7 +31,7 @@ "path": "encrypted", "bsonType": "int", "queries": { - "queryType": "rangePreview", + "queryType": "range", "contention": { "$numberInt": "0" }, diff --git a/test/data/fle2-insert-range-explicit/double-precision/encrypted-payload-v2.json b/test/data/fle2-insert-range-explicit/double-precision/encrypted-payload-v2.json index d47ce222f..d51f57939 100644 --- a/test/data/fle2-insert-range-explicit/double-precision/encrypted-payload-v2.json +++ b/test/data/fle2-insert-range-explicit/double-precision/encrypted-payload-v2.json @@ -1,7 +1,7 @@ { "v": { "$binary": { - "base64": "C+0MAAAFZAAgAAAAAKGC7e7Khb0eNdd0PGMhz88wjaRo8hhtloqXiO3RlPPgBXMAIAAAAACO5kHsnT2RtRzNVr/dZqqJBOql9vFQQt8tx7XFgkbdGQVwADAAAAAA2haLMsXrFz1qArgnBCTTuGS4HYPxt4n9AhD0tPqb+SA7LEva9ufIwi9D6B653QCrBXUAEAAAAAQSNFZ4EjSYdhI0EjRWeJASEHQAAQAAAAV2AFAAAAAAq83vqxI0mHYSNBI0VniQElCNgPn7yX9AonbG2kWY/BNo7dxtPXSEZKwbdq9GlHWcCEpiz4MZIqiP1KidJzglK9WZSqQ9q5D/2dyY8IjtQcUFZQAgAAAAAOuac/eRLYakKX6B0vZ1r3QodOQFfjqJD+xlGiPu4/PsBWwAIAAAAADbJtQV14wH66Ntu8SoAFC2LSZWHaCJ0x/+VtIzEKeoghJrAAAAAAAAAAAABGcAiwsAAAMwALUAAAAFZAAgAAAAAEXyPll8pDgONFsvw5VnzyCe0TNwEePYnQZeRFNW0fTqBXMAIAAAAADNAYCK38aHlQp6Vb784Eip1hnuvLCHL+EKg/cqOkSFfQVsACAAAAAA6QK+s92A82PEceXdQwfnu4Ru+VN+cHdIixK/EuNIQDcFcAAwAAAAANY2KCqAo934oRUKzHLljxojotI+JiAcpcpiCtDN4muQIJBF9stQoqYKgQthCTuNfAADMQC1AAAABWQAIAAAAACCTEu6TTXfvs9twJDgH6+xdukb+sStdrChBLo/nWA30gVzACAAAAAAtQ3t4esWC7DbkQOgsTYVr3hge5CtGicFUks/MM4vL7QFbAAgAAAAACbBD5/yFo+aOMivjfGplV/Sl57BC2RtidXOlmtgHwROBXAAMAAAAADqgV8ssrxOCaqs4E8dXZHB2R1K6OCbynwPkAuS9E6B2Jm/W6rFXdAd4ebonNMmNicAAzIAtQAAAAVkACAAAAAAgKjFyf0to2WQz0CThhMOSD3GZxb1zVbqwqK4zD9dvzkFcwAgAAAAABvLBwRuj7zQwVQ0aB3sEJ6ddgm8X7DBedKPxp1WrhSNBWwAIAAAAADXLtOFHx7zuX+RYrMYlOG0itP6L7gjr3SD28l56+GTdwVwADAAAAAAXYSBYMoPApxmpqGA54u1ygQjsnGNNkvPaCQiblA71ONg4eK2t4X8wZPYpwpB57lkAAMzALUAAAAFZAAgAAAAABGx/GUIdSIiDy+xgvIbl64BU9vfIMDBaQVTRD8kWYOdBXMAIAAAAAAA8UIBraLbdanD/AveGRwIg6Ehsno45hJtFDwv3N8zIwVsACAAAAAAWbp8JVJnx8fEVAJFa7WMfMa7wXeP5M3C8MX20J/i9n0FcAAwAAAAAN0c/ZrWKj4D9yGSnaxHAXzi7SDB/IywpTacE211eFaIfwtVmqKOBevw2rlahvuCzQADNAC1AAAABWQAIAAAAACnxYZUdL6aqh7RHeUS80iuCrFTbZx8aL//ZJ3cIn8ryAVzACAAAAAAT7DdgzZB28EwyqRXJOrOivQkluoJfq6HFING+4hDQrIFbAAgAAAAAO+KRAbwTMm35uSXecM/1ddx+BAU1sJ9IfkEdFuk5nXzBXAAMAAAAAA8XtSW/RMGEf5aYc9CO9kFTTLUe/CYvkk0vb3KTrYY4iwhaAdCx3Pc5e3/eAoYPQwAAzUAtQAAAAVkACAAAAAAJ/qosMqiSzlHoGV1piiKxVOL9b4Wj5wU03MtmDmC7rAFcwAgAAAAAPiBlhGp7+tX2Y6u+g5povCCgxjwhm9M4rD6/hQEkdLRBWwAIAAAAADcR/+GqFeIBRJWZU4JLf1+zg3HZKxbRe0UbYyY+9kOjwVwADAAAAAA6jeZEl/ojIYz75xtpcJRKme4gdgB0DI2cnshTI8d1a70irhdiYxksr5P5p8zDxj1AAM2ALUAAAAFZAAgAAAAAAPkPM99X6NxtbiEhUhnUJgXD0fo8Yo7hIBx0YSvFwVHBXMAIAAAAABfPG0CQwmuduGPjzKIAmpuepgpJc9h8cH1BhHyHQgMKgVsACAAAAAABMknppVMPopL0LFtuiWgDk7TrWMYyUB2WiJamC9TXuYFcAAwAAAAANpWg1NiAXaWGDswl6rTyBn1C4SrPmd8RHRAwfxMMtQax3bNpPUP6T+Yv9UHLoxfdgADNwC1AAAABWQAIAAAAADZPdeuNnWAdMECuZulU5F4ZKuJWcyMwM4/TaiuxJY2jAVzACAAAAAApBlqhLrTeriWF9rbLLObcLxH+uPrzpvC14SQ0e1zMaMFbAAgAAAAADBg66srPIid3wk9go/s1yLl7bH+DgF1iZeR6D1DJWzaBXAAMAAAAAD4/5QxY50zSFYV1QbzAxt0vLGGEJ6wx5bjLd6ZHls6M9di2OOUSVAN9uVyWcJlyQkAAzgAtQAAAAVkACAAAAAA3uYLtxjo1etEc5MJ0fF6FaR8CqVtO6o2Tzlc/EqHUeMFcwAgAAAAACBU2rXaSwz9yZu1PeD+BpuqjizHDyT8G4sQBZUnKFxeBWwAIAAAAAC0+fcRgZMiid1CmuZgqc91xJ+mU8dIyy2/+4HJPNbEoQVwADAAAAAA+2FJY248ycTnEZ9YiC+te5i/c5LZzApLsOjebDa/vtd/344z/Ub31qnjOp7wPlURAAM5ALUAAAAFZAAgAAAAABnqRL7osEUpdkqEURd5haoNLuc8KA+zSM0o4NFqrYzjBXMAIAAAAADLhL25Opkmb6hqHp6LM5UE9hcGHIFGWV6Hurhmh/C4dQVsACAAAAAA6CX+WptSQkJ1bVvkCtCJZI76y2rvEAQ0CwP9IEl3Wy8FcAAwAAAAAMHq+gQoCB/S7KK8en3HsfwiO4i0rDK7uTGv4IN5F0ySuh9vswBky3CKJSEwwfIbgQADMTAAtQAAAAVkACAAAAAARKtnbeLp+kkeqD4vyxzZv3YBbPt6Se+4rbyBE+Q0MKEFcwAgAAAAAPSzF5aQu+3vJ5Sne3Z2oMmFJD9WLTwc2WCzi2+lt34MBWwAIAAAAAA8/7BZk9IkhqpOzuTK2hLrrA7n7RdvumSMtkww58u37QVwADAAAAAA5SG055wnx3diUwkqw51RXECBKuJ4/lPm6NIGwTX0HGEap2HtJUVYqwglMiO5BTQYAAMxMQC1AAAABWQAIAAAAABBcg+xybjAfERrLaCURqhmFhLyFUBqLGKC9MZO3/gDTAVzACAAAAAAPI+Q/RvqWBcS7TCzHwRmdoCGlP7bNyb87TV5bFK/SJcFbAAgAAAAAFKDwJk9n7p3TjE6y7mPgo8yUXVzdAjZFznkYZuhrPI3BXAAMAAAAACsfanKUnP/dRLj+ZQY79s7lpbF9H7BnA3k91QpMPTaWzwWXlxAXy3n7NnWphOwnK0AAzEyALUAAAAFZAAgAAAAANAEsnUv91m/AhqpqWsRmlcuzT1qu30hNwBa33hNg0rRBXMAIAAAAAAisGLwcpfuASM2Y39Sr28L3QRac8lWrT8qGBgW7tYfqgVsACAAAAAALTj9pjvli3k3S0GQnJVJngBgbEwKUYwSsbjB/Z/a1tYFcAAwAAAAAOwvqc3xi4Bhqr2WcsY7vWlfWQyq0gbpLc4XSPl/LiNtt/7uLwJUzH8dNlaQ0hOQZgADMTMAtQAAAAVkACAAAAAAJ86m1PzXPbz+iA7eV0EO9El+unVQ4oatcdu7cTtILkMFcwAgAAAAAIc7Subb66rSRsgsnlayHaeeDXbBv5qO9OzF7/M4Uje7BWwAIAAAAAAoc32Jes1UFdVBLh2T0jFpoYVuNsSPY25LfWStGBfGaAVwADAAAAAAGnVhj6Th2jKlrWyPFgU92JNmh8V8BQdTVYOUQXzd11eOCfbyGoLFnJ0MziUBV9pJAAMxNAC1AAAABWQAIAAAAACyDZbzzhpV2pqIMIgVlHQZgNTsGlrlQNPEZM9tVrn9fgVzACAAAAAAe47sn1fpbKVfFWuZ6lFBINZTRoM9QEbTBYOdPqxHqH4FbAAgAAAAACMCdlw2ifuhXU/n5B2LCIlFSezFhNcu18GuWaVxcmh3BXAAMAAAAAAAlcZs/jB1xVN29yi/zH0wyscIMTT8Lj/55l2OXIFaLcRvKycABX+mrmw02+Z8q5oAAzE1ALUAAAAFZAAgAAAAALtxv2wnNP/pm1cluAEj7g9AXue7TLzh91tGS7hfqC2tBXMAIAAAAABT/37pkjeDUtCbITzb8VAicp3thTZctYrf2bjwUTyN8wVsACAAAAAA5MPUeEnxGvBEXXDey7jfgjg9XeFLJfty5mo0ud+zAQcFcAAwAAAAAOyG/UilFbUCO+/ZMgGoXCr9d0I0fPYCIeFmk/W7kJQyFM2fZ//upXXmUn8ZzJKWgwAAAA==", + "base64": "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", "subType": "06" } } diff --git a/test/data/fle2-insert-range-explicit/double/encrypted-payload-v2.json b/test/data/fle2-insert-range-explicit/double/encrypted-payload-v2.json index f25c8b5ff..08152d1ab 100644 --- a/test/data/fle2-insert-range-explicit/double/encrypted-payload-v2.json +++ b/test/data/fle2-insert-range-explicit/double/encrypted-payload-v2.json @@ -1,7 +1,7 @@ { "v": { "$binary": { - "base64": "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", + "base64": "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", "subType": "06" } } diff --git a/test/data/fle2-insert-range-explicit/int32/encrypted-payload-v2.json b/test/data/fle2-insert-range-explicit/int32/encrypted-payload-v2.json index 8cb495a13..ee5f52c3b 100644 --- a/test/data/fle2-insert-range-explicit/int32/encrypted-payload-v2.json +++ b/test/data/fle2-insert-range-explicit/int32/encrypted-payload-v2.json @@ -1,7 +1,7 @@ { "v": { "$binary": { - "base64": "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", + "base64": "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", "subType": "06" } } diff --git a/test/data/fle2-insert-range-explicit/sparsity-2/encrypted-payload-v2.json b/test/data/fle2-insert-range-explicit/sparsity-2/encrypted-payload-v2.json index 8e521202f..14ec3babf 100644 --- a/test/data/fle2-insert-range-explicit/sparsity-2/encrypted-payload-v2.json +++ b/test/data/fle2-insert-range-explicit/sparsity-2/encrypted-payload-v2.json @@ -1,7 +1,7 @@ { "v": { "$binary": { - "base64": "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", + "base64": "Cw0IAAAFZAAgAAAAAAYUuQ9Y1Ie7prKiZXHw9WYEhXcFQdSn7mmkPHFKGAEqBXMAIAAAAACJiCpdKff5FC0BawKHW+wWtxyoXymVQItTooswHY2SMQVwADEAAAAAgh3eQ+DXA+bVl7Y6XxfninmZIQZ+sQ7WyLlws3WpBj2V9JefzsCOiuT6KQOhMYepewV1ABAAAAAEEjRWeBI0mHYSNBI0VniQEhB0ABAAAAAFdgBQAAAAAKvN76sSNJh2EjQSNFZ4kBKS86MANK7azgxlGm/ssRHyq8/Uyo0dkvdkrAmXKIeVGpaXHgPrkQPaku3m2Hoyo/m6dk4NRwzn+qnLc5ZeOCTBBWUAIAAAAADrmnP3kS2GpCl+gdL2da90KHTkBX46iQ/sZRoj7uPz7AVsACAAAAAAlO36MaVLVRDFW6xrI+0UTkyQdFfSCEBPkZg8sFzuTJYSawAAAAAAAAAAAARnAIYGAAADMAC2AAAABWQAIAAAAABT+uzCz7yxp7uN3+z202vxQ5NOV985A80zAqx86317iAVzACAAAAAAotJPQKqQGOGUkMWaWW9GlbqGpHdx8Y9mSX7tBhUz8YMFbAAgAAAAAA6eOZwxxhUyuExW2kjHcKJmNCrEPFQ9vS9YbrzP67TgBXAAMQAAAACQx7q47zrax7mEWXr7hN5PTp0iteKt69e9FYcDvVXWTleTFW9tJNgqJDQWuU/RUS3RAAMxALYAAAAFZAAgAAAAAC6uvkdzWq3DNcfLqndCqjmD1janFLc/rxnwmsOTlcQUBXMAIAAAAACs7A835dqkD4syrnsnA2rujWW5+Q9e/1ELolPgiQVEoAVsACAAAAAAl7RsOFQfWxmV2cMZafTExrUJC43pyC/+L/peqek9Lf0FcAAxAAAAAODjHziX/jOEq1EwWbl5vbejutxP/Bf9gDs/aPda7K0C+EKlLvC36ubca4vIESrf/S0AAzIAtgAAAAVkACAAAAAAoUoQg16Zwx/MIC/qVVy1+ojzuf15HAMlSDUsDyR1jBAFcwAgAAAAAGjTSxjIFHdnG5GOJcz3yxpeieUHNiJeB/dEA3J7uNFlBWwAIAAAAAA5zR9OnG49Xrn3grU7zBDon+oj+/1FUIOptLvwesWUvQVwADEAAAAAMKfg5z0cNkGYuqjPXl7TxEQ2O460tHDZWQnksxhfHSbQeevCruptBsK/IZIOue6YBgADMwC2AAAABWQAIAAAAAAT7TqEEUeXh/sIdAUYaPZlm5PdZkQypOPgLNQzZ7096gVzACAAAAAAgiUZG8G1kJpdPg5YUxcX7dULyPO4kV7eZHlGkz9Pjs4FbAAgAAAAAIFEk9LC+wpdnt+iy3OTuzvc/W/4y7GWyhLN8YIFWpBZBXAAMQAAAACJ6NB6CU4h7J8d8VwVeZOenFQxk0CGMM2n+BIS515zjVXXwGoYnm2oMJTnK0gdALpwAAM0ALYAAAAFZAAgAAAAAGKJ35r7U30MbUBQIvdcgcQW7MG8KbYldN4PCdrQRRcRBXMAIAAAAACwwmMiXwHvD7BEzhBgfDj4L0AajySh/Qhtz42i5ogkbAVsACAAAAAABcm2+tbs0VSGFn9rDvWyvhuIRVDepRdoIvNa6TRv3zkFcAAxAAAAAFbOyWqIl86N8GHsoU0CsHbMhy+E+/XyNZ1tXAQf9TT/xLFZQh82dG/bScdnVDxaYgsAAzUAtgAAAAVkACAAAAAAS6a6wmUDWK5QmtbYpLZBZoC1YqhJ9ghM9hmHwqMxDMQFcwAgAAAAACPZfyXoosc069pp2tp8KGsWidaB3von9ACa7b4mqct4BWwAIAAAAACLCFou5eC94e2pRXNjJ8oPkENRCDGdw9eZP7Kvgb2mCAVwADEAAAAAuXhWeVuRye1xrG5D21dJK/+kDae+zJZWl3XTmtJRpiHP/ZvwLOX2YOaWQg7xOxjWPgADNgC2AAAABWQAIAAAAAAIz6wOrQqBXWAOmerbQckRy4fLI5AC9k5DhBJ3kHJYJgVzACAAAAAA4c2luh9MO6xSNqffZoH4SwI19i3ffdJ9iyAaGitoZxkFbAAgAAAAAI+sI8AzBUAhDs2DSTh7StO5rgbgse0idO29VwOikD69BXAAMQAAAABYSFUOrk6ZAVQUx+zIqfeKhTieWPwdQO2VjJzbglvxj8UJCOUtTHgXrmU7pokhrX3zAAM3ALYAAAAFZAAgAAAAAN1y62kos9WF1Hq9MqL7/1v+eB3xYX+C9jOhI4o8bCEuBXMAIAAAAABabfoE6YvqBs3KQZjukcNsllkQcPG35YzI1EJgvp0pfQVsACAAAAAAx3b30GiSDqGKGibsVkC0wPEtLdUn5oieC/mR0h0PfooFcAAxAAAAAK+hkKxxcAEEGZj/nSxd+fMkfh9FaI18ylqvr8o/r8GXdYCOlChCH3qMCgyZaWVrmtkAAzgAtgAAAAVkACAAAAAAlgmC9R0au/9bzgW0RWo46qTcX931bWDazCh9AljMZakFcwAgAAAAAIKwa3BQJo067rxkkX07k57hdvrl8/1ba94OtEapBuG2BWwAIAAAAACEBB9msU96lZNyT2Ory8KBNcfwHUZew4nuAMFzpU0kTwVwADEAAAAAwsG2BzqMIW2Y5UN0r8njF5uRRaD1QoYr+tEoCmkZeEn+koE/a+dG3UHNqrlvybXqcgAAEnNwAAIAAAAAAAAAEHRmAAYAAAAQbW4AAAAAABBteACH1hIAAA==", "subType": "06" } } diff --git a/test/data/fle2-insert-range/date-v2/encrypted-field-map.json b/test/data/fle2-insert-range/date-v2/encrypted-field-map.json index ba8472991..ab988b407 100644 --- a/test/data/fle2-insert-range/date-v2/encrypted-field-map.json +++ b/test/data/fle2-insert-range/date-v2/encrypted-field-map.json @@ -13,7 +13,7 @@ "path": "encrypted", "bsonType": "date", "queries": { - "queryType": "rangePreview", + "queryType": "range", "contention": { "$numberInt": "0" }, diff --git a/test/data/fle2-insert-range/date-v2/encrypted-payload.json b/test/data/fle2-insert-range/date-v2/encrypted-payload.json index d12ed4a1e..4827555b9 100644 --- a/test/data/fle2-insert-range/date-v2/encrypted-payload.json +++ b/test/data/fle2-insert-range/date-v2/encrypted-payload.json @@ -5,14 +5,16 @@ "plainText": "sample", "encrypted": { "$binary": { - "base64": "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", - "subType": "6" + "base64": "CzoqAAAFZAAgAAAAACxUAzRVk8NErNBCwzKRaTy3/xun2/1RDV658SGvJN07BXMAIAAAAACEurCf7Rmlp9BSlue1Yws6jtkvIRca4FO4ah9Cj64nSQVwADEAAAAAIDH9QTKXt1Z+rEPDqkiTSCQV8mpXm8H75lZyNqoTnNeNHAYoq1al1MtaANY2qPEb8wV1ABAAAAAEEjRWeBI0mHYSNBI0VniQEhB0AAkAAAAFdgBQAAAAAKvN76sSNJh2EjQSNFZ4kBK2SUdsP789oj0+i7tWMdGMgvdGqgC5brqJawXV7Udo0YeMNUi8JryXhUvdY7Gesn2FeyZ09TMKLMFKtoyrV6OgBWUAIAAAAADrmnP3kS2GpCl+gdL2da90KHTkBX46iQ/sZRoj7uPz7AVsACAAAAAAWrTENSXeHuAFLMfZfWcr0BoceR7+AFPu8u6mvu6jyDYSawAAAAAAAAAAAARnAKsoAAADMAC2AAAABWQAIAAAAABtBdb3QX2WJCsITu2mTWK+IJeXmkxdVfvV1QG2BCZgwwVzACAAAAAA5cqU8NODm0xq0/DpXKpnkarfWgvJrX4bAnalkwdDVPwFbAAgAAAAAAdMqrfuwkg9m1BjDlsIZG7Ruuy+PM7R2t5r9wvVs+5+BXAAMQAAAACsKR8j/0KMxVVJ/i/Wou21DCQX9eluDVgLnO65jNLwHr4Y/2GOLwVo/btiSCuwlNXCAAMxALYAAAAFZAAgAAAAABkUzDlTUF7/0HLvWhtDfutHq3uST8Hk8O/Mfb8LgFfNBXMAIAAAAAD11twfbtpOWFUqQFXS6P7TaXobAhu46STaaYWePYOJGAVsACAAAAAAYtpOd8Bd7k/b0zH8fsxlfmB/SwY0mcOqYsn4JIIuDQwFcAAxAAAAALaQI8KJXWbptCcz+ZAC0oeuNH1TKEkFFsY4VNXG/T3jx+YLEhximth40UQxVWrGdxsAAzIAtgAAAAVkACAAAAAAbfXWI0mudr9ZVWBKFn22/utVf5u6g726PURHBbaJQGQFcwAgAAAAAIlshJPXAu11tfCNCUi/LUbvrpx3juQCTxU0UPa7Y5raBWwAIAAAAAC2y2AT3AUAIH+THXhbHeSIOiHwC3SYGtcfu/+AR+Pw9AVwADEAAAAANaKrA5XH+LtBqcsobxY1YNBSdS3tq7UKOl2GIa6/jAq9NwjGyXfjM7uKNfB0N+EwZQADMwC2AAAABWQAIAAAAADZOyEGcAF4JghkBbbLL2bpfPXQXYSJH7sCwBmU5x8jnQVzACAAAAAAtx5lK5DJc64PXFLy5RhDSWzHQgJbPtGFZwG5Z3X7vp8FbAAgAAAAAJVJLlomdCfrwUo0BiYj1gLUWbmXbtpXpCNIaklpSybNBXAAMQAAAAD7ibQdKMCghVq8gAzLgRfkTfQZ2Dio1iT5bwZRmiiHwyb3m71Zs2mBxvQD8/CA8JIaAAM0ALYAAAAFZAAgAAAAAAfhXpq8CIJ5QopFc+cxk7mBFxVvMrBzg9+imWGFekUaBXMAIAAAAAC6+fZfve+VRAZcqaH2epeBGR/3C+x0jiHq57yCXeWMTwVsACAAAAAAlKCvNqLgQ8qRUmFl3qcXIzO3Dd0dt+Ki5RZ+pV4sdsMFcAAxAAAAADbIWafpa2ycEPfZAHaKyAmaJyGxVwHcLRKkcR0A+/BBdknfuDwVrsnWautWoqtFl6wAAzUAtgAAAAVkACAAAAAAtRRQ7NnJVHYiqYnfjWiV+rLDuH/b6XXvjQpR/MaWFKwFcwAgAAAAADsj6IcnWajT284OviCDCy4JrrJ4x8pGEyToKpvI0F/QBWwAIAAAAACzFioGR0V2QocQSlne51Hg5I0r/HnZhv/FTqVrsJNQhQVwADEAAAAA44ayYNJ+ZvToS+4E5v1l3gxW30kX8YF3SKICBU3m9OUyT/k9y+RivXRcFcwwZnq2hwADNgC2AAAABWQAIAAAAABFkObx9tHsA2pO9xssfYF4FY8bOtfROdkbh9LPkRtNQgVzACAAAAAAu+KihV7MzuyavpyywhghJttPCHCuExwbmEVeBfgsiNQFbAAgAAAAAKml0YhgsnwZaLYfV+pRLNjp/3iGh/OPGutPU3qsbCpFBXAAMQAAAABobsPcWwQz9NurvrpK3X82EWjDGTZWcfosWXJt5yXFvjdtD8b+lErRP+oem5ksZy1GAAM3ALYAAAAFZAAgAAAAADUs9mdMn6W7ipQIc0pCyeLcH8nnfaCR3NWT8FW70G7ZBXMAIAAAAACJQ6BLo/n9M6IKEJG0qkCwEHDq+e66FI144nJmQu6BJwVsACAAAAAAgl0mrrmNBiqNI3HmbpQ9RD5uLGJxOP82xgIC9S8f4FgFcAAxAAAAAA3ap38f/dTzEvkY6y5kHRNLTvKpB3jIu6t+eRRl4DWjaojo2otTl6p4iZCUBRwFDkIAAzgAtgAAAAVkACAAAAAAZsRlDopg1j7CKkKPiF/FBhY8EfjbpoTMjVU62nux1rwFcwAgAAAAAFBtT/2O+G+w7CkmR0qQpts/WjwFFc0nSWoceR//TpXxBWwAIAAAAADd1al/mqUZmU7gjhcn4oOc2nWzHnGO9oIssCkjLsCI3wVwADEAAAAALCaGaSsKKqLjgXHg3hh1T6MdRE3t8idD9dIMV4Il132htsddeyuvCOC5M+xk6wJ9owADOQC2AAAABWQAIAAAAABCY/arAmB0dhPdgSsD2O2MKS8Zm9w/NM14Ul4/t2m0QQVzACAAAAAA1hAC/S4aPVgJZEy44ccuZEXtUfvJqhel36PoDvJTaMgFbAAgAAAAAPJ76Y4pNKf4wkzMzrH7aTOFlyxrlOC3xm87G2tksNeqBXAAMQAAAABSmlcROalQd2vVvj22J7fl8BNKpwdDOi0o5SABPe+PeTVTdXcmxlDnz0hZFYshhHJLAAMxMAC2AAAABWQAIAAAAAAD5ap4Zz/9ppwEPoNI7SCQXI4775qCe93P1g4QugvM1gVzACAAAAAA733Q7KcRX03qqJgqhvvhpw2wNh8AeNC5YerSR0lN61kFbAAgAAAAABMenDPSCUH2VtMJXCeeW/cAYEzkx077+VbdtaXEU9yfBXAAMQAAAAD5QfpfOiFvpL/fGb+pDYgRsRl+cBbuFfo1/OYUXdY3ZNa6euDp4pMnOVTDlh6N/mAiAAMxMQC2AAAABWQAIAAAAAD39XzqGv68dsH5ySh5LWfeH7lUts4G/6x7VUDdVPTxKQVzACAAAAAAyTcchuWpTT+P96GJIVMDKo5MQx+zMLAxf41Cuk14MWIFbAAgAAAAANOvCNUkvYx67mnsyJEJtuVOPPjpFOPwfKUit4MpaJ7IBXAAMQAAAAD5ohCfiYr1x5oJJvygre/BD1bMGaDa5s5decA5TeloC18srgLSHUjUoxjfrbYnxoPMAAMxMgC2AAAABWQAIAAAAADxiRdMzUKZc1r2hZRUFqX0LdgKRHqDmVlPbs0bUeX50AVzACAAAAAA9wpXUxV1OEmuc0dHzXspXZXHVoWfXBcLxEWLQeo6cMAFbAAgAAAAANHVa+gOEk04jpiDz9ULrq6F9P8pbK2XK13Jo/51O0WHBXAAMQAAAACt0mYArr6Q0TEzPDImziX8gjWWluUVOszRZ2xdGxu29+PWhpQduMw2ljV6iI6v8Y4RAAMxMwC2AAAABWQAIAAAAADyQzjt4QY3zi3k8Ah9fBGr81aad5IgujDdcS0MYN+3IAVzACAAAAAAYL95wR9p1+TV3sHMrt1JJUHUyeT9WBXRIpaYsGVlD5UFbAAgAAAAAHWca2n387o8zWu9Dpyb8bQrFzOoOjqvn/TLENPna01eBXAAMQAAAADMH/cbk5YeR38ipv9B1rx+YyBhsFWuVlCi8hK8br2PO/idEPal8/bsBxeLICzo90GuAAMxNAC2AAAABWQAIAAAAABu1Dm41RKKNpDTT4Dy5M4WkrEZBbnX+qPRArq3CzJDtgVzACAAAAAA0TZqY/JBg3jF3JWHiP/UaSyeyPyYQ5NelvKrkRzfeI0FbAAgAAAAAKs3WXer1MGm0HjS1HvZL4T4M4AUwbibvwPqn14Z2wiDBXAAMQAAAACQETUrlNTV3JynVglk/zsJK4jwx8QbZDn2uEuKj+PYS7L15HATkbas/mJ73eAvVLhpAAMxNQC2AAAABWQAIAAAAAAjwCumu/AAqhybP4qQuxnTRQQrwUE9pYfPAhoS4GtrgAVzACAAAAAA+RqDeKGmdzZazkZYjIqnmiEB72Guj93ZAxxRYkXv7hQFbAAgAAAAAB4VCRTOM/d5515b70RJICiud9h5EkOZZPxqTIDWdC9YBXAAMQAAAABmADqdUbWvhDYoVhQbdgRhttHCt4VK2nJ9j98f8WtdDm50wsHyeBAkE7TsDRKEal/4AAMxNgC2AAAABWQAIAAAAACwKOIjgTVb5QsqN37DBd9GFeCITbLEW0fuz+U3yk+yVAVzACAAAAAAeCrvHLUSAgi+uXbJkT8mlVz+aDfm4ctNZbWE1ba0oD4FbAAgAAAAAEcrExN3Q2XKr6A6PbtzDw1wo2XpfKR1x1KnvUxoOjafBXAAMQAAAABPSDWT5HC3OjKXbmU4lmV9Oz8hm1f5geN8M8DGyybTZ6wCE2qry7vTrcGs3be0RRD5AAMxNwC2AAAABWQAIAAAAAAbVE3rEkNDFOPwU4qV/p5YXNlndlQlpRJxja49qu/b6gVzACAAAAAAA97ms43SrXShC2SN2vCKLNqJvK8F9um0tgBj8xusewgFbAAgAAAAACZYAkIoiNruIpglaYJnUf4Gp8Ak0UoE3BtJrBQgKvktBXAAMQAAAADCzjqeWzK6t3fIsC5i1yhCooMg1nW56xtudE0652OML8OHz5+x5KL8m6oi4lZe+yQFAAMxOAC2AAAABWQAIAAAAADC0jLaxGyMjTDe4ehaY1gjsZF/xMGi9MeTqbq2QvA5AAVzACAAAAAAQUTZYQIjxGq+9U/VdbrzEWfg8GXNiALTC3wDrT/jJjIFbAAgAAAAAHvfQ+SUlS5qgwLZHG7fplgx0c6FsePgwQp1BWi34mIDBXAAMQAAAAAin6A6xYTr2f6PyYFqso8/DmxTaZPrKRpzM/MNxjJLw0GkcOhrE5TQbKXFVVpXVynnAAMxOQC2AAAABWQAIAAAAADPdazrIZrgwi6QoZ8J9ljahL/KcNx7Wk2emkf40tJerAVzACAAAAAAVuLG4ONsvQw+Q/AjkZv99tSXsEyAhw6bzvXnj5682pEFbAAgAAAAAM92c5AB6olkZNQSPGMHPdisd9atRA8dSDPqQ9O60k29BXAAMQAAAABjKpEslTJiCZY0cYHe5daTyyYarMwaiQKD/udAo2b3pmwMQZLpqqtuNlIYVCoKGNWsAAMyMAC2AAAABWQAIAAAAAAcmtT7X80NPa+Iw1WmpNGjoXI6g0s87VhdkpzNreJPDgVzACAAAAAA6ZDCwGG/W+lHkB2LoCAfUSWbdZkWikAMNYZsZCzunvsFbAAgAAAAAFKv7tdW86NhiHgOgH90sXPv+s+Y5IKYTd/jtWE8uQ6wBXAAMQAAAADjKm5Vip57hzXBDVsDxACXbKfwVNJlHPVvz967mYnaRvkTMp3Pfkr1wTYQotd7fMXaAAMyMQC2AAAABWQAIAAAAAA6aMJ/MI87IIoIiEF2vFpJfGv66TPM2A8LdNMy8nbOSgVzACAAAAAANfWvqKbxj+M/SEy4Fe7NjCEV9Lsx6lpwRZlpxfJ0e78FbAAgAAAAAKBzKJ1mGtwkPGyhBFUHqq2D9+d1i0cXx8LO7Mu6+WGBBXAAMQAAAACYNMbl1mVUNLUqXoKOtAmKretEBTXfZmm/Wy7ilMSwc+O0EaCqyUqafTKh00BmTsKNAAMyMgC2AAAABWQAIAAAAADWPNwzmiHrt6ZQlP0Ut3LF6kvCK223qw+WCWtBqkweMQVzACAAAAAAcZPKDdjFkwz/lHNLaryAAfKwSUiGaX/m1uMfDzRFEZgFbAAgAAAAAFvEgwvkP/zItTfoSS6kbuykvVpZF4zy5kLONbUIehASBXAAMQAAAABGTJzHEd3nlYeU5Cfbrgkj3ga8nlwp2Rwau3oMXyTrxdLfIuLub1Ud7JU3+L/vKLdUAAMyMwC2AAAABWQAIAAAAAC89sOm2YsdUm+bR+oiN7gmSH0y2HmTp+kg41/qCWDjtAVzACAAAAAAbfXRNDGOtQe7Vf/jOfg9AHYTfRxjI8KawxjZUGo8LJQFbAAgAAAAAFmJ4r1eo2ezXhN+tFBs49B/ydvxpsVVl0r7E9ODBbvjBXAAMQAAAABeOWbMfg/BmFtcILLRZY5Ovfllcfm08dQYKKxmuk1jnL0kgqIFr9MzofNQ2rmufNtMAAMyNAC2AAAABWQAIAAAAADV1RA6Z4gTmH+8SwKNniZEDwyWDp3L6NQQn7dmHbzvOwVzACAAAAAAX1bNGPPM1ieTMwAzjn39vp6HmDhVHXdG0r7WmaOPosIFbAAgAAAAAOZ+khfop8s9hIN8IKZAiA73TU4TQ3PbRpusTW1PuVM4BXAAMQAAAAD2+aGCv9XZje8PIIB4YLlo4RkN0K9D1TYfBaaH50nkaclx233LjVS5z1VGZlthYUJxAAMyNQC2AAAABWQAIAAAAADjl9wh/M8Ws+s+f3uZZ78ReLw6Tw5A2+Xes3bnLavenwVzACAAAAAA7GbEHMLkksxpz5gRASyWTzk+mmUi4OjHp00fmh63TioFbAAgAAAAAAGMpWq1izDU+8i10mYuKr2PTkt2AxfJuTWr2mSC92ECBXAAMQAAAACin2EAlKenk2O1Zi/CFq/gIxvPwQq3I0d/zyCnYCnhCuRxqjFjBHnVzEd5LsSk4Nj/AAMyNgC2AAAABWQAIAAAAAA211J44HUaihjnd5lhKL2NBYg3EKnqsO+nX8ImVbciOgVzACAAAAAAxCGinNVKQIi+ILP3uS9Gf6dzxOkTXlEQ2SPN1QtIfkAFbAAgAAAAAL0b2SnYDSAK7yTWg2JOXsIcJbo+HjHf19M7Z/fd0s4XBXAAMQAAAACw920mUJfVseJQC18DnrSJd9P/bc5FaoDQJTqwu0zXoRl1ePAgmzIEVASo1G6y5/vGAAMyNwC2AAAABWQAIAAAAADFI+3B5vg/FM8Yo/Q+uw0FGpytqO5fNaQCwcQDkxK0VAVzACAAAAAAz35xWYH02sb27aj/3FRKV/TvXTg6LXm1iK32Z8vi2bYFbAAgAAAAAEti5Gx+5MQ8hSXjScWnZtAyTZRWDiW9hNL2mTKVMb36BXAAMQAAAADef7Zyjk/MMK8EEVRetU3Xhlc1viBzuL9gv2MB0bAjpFaz5CYy5YYf75GremzhUMTSAAMyOAC2AAAABWQAIAAAAADI//fkuQoNhthgL4BSXtoiLEGlPD5DH6oxhmCljxAFWwVzACAAAAAADHw/flwvQjJV07/MS9TgNm/WGKd1nCpEx6YfSgG5n5wFbAAgAAAAAFIio7cgaeaxhiso3zKlAkxWUO9U/P/DPKyYb/8uSnLeBXAAMQAAAAAO4t521QTIDETst60fUPbHQ2WM+H744JAR0WmlAMX1k29tRi7eTC0gtNebA+Zl+nQjAAMyOQC2AAAABWQAIAAAAAC4RFIyTn9Hwe9mKlZ1rDnDP2qsexic0aWblXoMjXJjHwVzACAAAAAAgejsQ5XLM728jIAZFN7ur1GQL9a3+W0eIEPlqoBDR2oFbAAgAAAAANI+/+6cRMwnRsi34UZwnkx9voDxNdieDUtK7LxqRJYnBXAAMQAAAACtp1em52SZnRYgXnGULjgFahSB4xs9AVceHJJ6fTrdTtPGzOszJiGa+lsm92h44O11AAMzMAC2AAAABWQAIAAAAACyYI7pAkJn0ZLpb/STBzivuIUOQtslGoWoy7GUBNiZgAVzACAAAAAAhRt/fCj1MiL+o0tKVERzuq+Jzlcn5PbihJDpgVB45YYFbAAgAAAAAGTqW8GjK17otIjlTIzxrV1xQga4FcBrA7A+xdtl0tr2BXAAMQAAAAD/CJ0QrgNT7sANBDH9CN1jmuHM/HMkMlOHb6xrDCZOO+i4+Qpma+cNNJNfVDrAVVhsAAMzMQC2AAAABWQAIAAAAABhKCCJcHv6PPoSeeWkIgpbGBvd1AIPqec0uOaIC0TLeAVzACAAAAAA9Nycpzjz5U38hFDgDJudRRShlIu/rQ7LWAeOwZqoUYoFbAAgAAAAAAbly8X+Mub6NBWXINvidid2QcxZ4m10egFLFAi3eGdvBXAAMQAAAAA+XWWSDiOTq/4ks+bpayxZ7nMm9AD2DLDmSsNqTSw25DfwgOJBQvNx7FKL4Rwyvl/EAAMzMgC2AAAABWQAIAAAAABNZuRlihtfaqNnoBDydeY8UKLS23SeC6wzKSYQcucB2gVzACAAAAAAgZeZOxt1HgTFpllxCL+dyHQ9sS90yIJP5zArtbOXK58FbAAgAAAAAAVKyk5o3jfTT9fNKoxv4bAI4IUh7b731/cxq8bTHw71BXAAMQAAAABCOgN1F8amTc5CZI4XGRqF0Deq3bqn0J7uLwvidzmH3MY6IAbWbR8wqKp6q6jfYGsvAAMzMwC2AAAABWQAIAAAAAA4VgHa8nkZDpB+mFGpP1f/3zkDZBMOZZODHB5MNVTGyQVzACAAAAAAY2WxEKSWasTdEArnyPUYSC+t3nP7XFBidbyBbpTLwUAFbAAgAAAAAGD+HrTf+Dm2pec7sfQE0sTBn56Xe5mGa9uRktv507f+BXAAMQAAAAAEJfsyCQ8a7Zw4juwP1FbLLnDckn9Cy339LK/dFAbSS++dH2TupBeg35FKBfs+5JtyAAMzNAC2AAAABWQAIAAAAAA4UJ9wrwca3HXMlqxg6unQQ15riCXUbj1W/DdORdPlwwVzACAAAAAAhN47p2OR1eXxTA4LKrLHclhz1ZFkL48FIcM8nccCdkgFbAAgAAAAAOa7e4VjPLXsgWpHjx59Jjp0lRtNQnCiHD7m+h/4WH7WBXAAMQAAAAB0ozEV/+j0MzIosBzgH1m6QIvp2/1di8bshigJr0S76x1rhsvpv8UbqX/DZ/gV2U5qAAMzNQC2AAAABWQAIAAAAAAJ0Pt4dKtjnyVb1thTaISla/i4jiPhz8N0Ghd5LiE1GAVzACAAAAAAWCYTGX/n3zuBS2H+SzR3vbrioEpBdJg8fFqkn+1UyqYFbAAgAAAAAFbFeb6nQHc6xA/0pWDxSwAg8ggzKnDQsEKBVgVYA0X3BXAAMQAAAABKJ8y7nNdiD2PHZlhMIPHrUxoCDkK3DlOsChW2IWjZRGwqzcPIl/VQt1elHBfbOwovAAMzNgC2AAAABWQAIAAAAADPwlAIo2eWIRIcL/STZF8XBpP6m6ho1NXryfst25/5RwVzACAAAAAAvpx8JeFUvRH+KIz5iPBsQtGLGYm2nYCdfflgwYp/OLkFbAAgAAAAABWSHwnZuA/xpexeFHQjY84GtN5uqCeAoWzZVGx9rc+lBXAAMQAAAAAh8vbV5y7s/25dajl9Wdk8GGVV867p1/u8K5uGRuiymRhXE54NDGfVfYcXWyBb4wuwAAMzNwC2AAAABWQAIAAAAACrKv8yJyuCSN/sF868TmUMyGm56cgUw8K00A7l7A909QVzACAAAAAAO/ci8K2AzdeZGSQOZDsFxV1bkUHI4arCUbayCXKy0+AFbAAgAAAAAGrYu/cBp+fmbERxKL//Nk5n1POA3JTibF6Hb3TAdif9BXAAMQAAAAC70iu6sfzd2VDLiPgLA/AQw6Cz/G3GC6n8uNRaKqA4bx/778NB8VE1YAd8NrfQ2+MhAAMzOAC2AAAABWQAIAAAAADLCGMjdFr57IaVOXEo+FXv3UCRlx0ZhPc118RhJhwBCQVzACAAAAAAhj+vNK1jvrY/gsj5F4qj/a1Brkz60qT/UtfNLZFpdzkFbAAgAAAAABsOQvPkTk3CuAnzT9R0s9pgX5MAW6IFyp8/uZg9aD85BXAAMQAAAADw3ctzqWvdsVv+T5GCv0aRpLlSWZy1b3lLcSGJE1Jw6A8R9DeARaQMRjhXyAFwXpEcAAMzOQC2AAAABWQAIAAAAACxUCjKA0EABi1SyZPj+YZUt8fXiJE/LCmGFGyLtQsG1QVzACAAAAAA1Fsvj77Sny5WJA7CqGn7JzlAYi/MhSJkmXxF5Sbs9ZoFbAAgAAAAAGAAvNzKxMApZhZm6OCEMXQsH+nvLVF2PzhdJz75OjLJBXAAMQAAAACZDus+h56Cf/nYwh7mrmk+WrsA5ZwP9w6fEA3cjMIsnKEQbDWNhS0NBaLsCC68feB8AAM0MAC2AAAABWQAIAAAAACi6krX4ScMD0CtZIZfw3YF3Nx3aTS/vhOJbtyb82cZDgVzACAAAAAAhB6OENn01zyJVvXw/kzUB75iPmRy15CvAbjflCMvVv4FbAAgAAAAALjkljRc2NfpD/+RkvCPjuHHqjlYtJrQfoeuqGYcNa/jBXAAMQAAAABPjZ4SLlOed9N+Hwm+cAAP+XTbMlNDGjs3tYWv/m2BHV4pBGzqY7J2Wab689h2L9c8AAM0MQC2AAAABWQAIAAAAADATIi32gVPnZZTXzTchaT8BWgmNmlkHoOs0Rylgf2mhwVzACAAAAAAZQjhCr7k5Sf4aRT1BfLLI08gKOwEzHTe76/CxkyqRd0FbAAgAAAAAKFlx5lbI3A6PG8Bi5qFE5wglixslsU864zyAlgLITz1BXAAMQAAAACzi8cKy62+3wQlO0iTTWpIunjioQ8IIT+UtFx5q1B5lnf8BN3+Ny5x0cdIsrsQlDNXAAM0MgC2AAAABWQAIAAAAAAYFmFG+cOQ8tU6mGQqWCHSozWNr5De99aTNgYUjWL0wQVzACAAAAAAu34K9K6LYHVQ+6ZNCxgbn7ocCOySO0b2yhwRT46Zt5UFbAAgAAAAAL8ModrlQFhh+HoiLnshix6FWVZ6vj/u3Hf/tqz0ILhjBXAAMQAAAAAyvlPdQKHb90pPkOstM7Jl4djlNi7npZCPSWd2GdTg/JrO8NRQQgN65ftJsoztBt1BAAM0MwC2AAAABWQAIAAAAABE43z15SkGkbVaeq/8T1M/Qj6HH1iRzc5Nk/RqTmzqjwVzACAAAAAAiemqPXqiRIF7KrhFvcAg8fe7RpWFZjTvpv/wxKS7Dk4FbAAgAAAAAD94TI66OUeTv4sF7sRWTZevpKem4QuNZpCLvdEYJV/9BXAAMQAAAACdOo51YfZ4iEApv8wYS0uCCGIqwW9sYgv+BtoYea89PhCd983BRtoCfpt33Pu9irLiAAM0NAC2AAAABWQAIAAAAAD04iBvtqQJ0sxvaQY1F8f7G7JaOzTUlG5YqUjskemKZQVzACAAAAAAg22vw20VMiSa37C3Y1B8L0SeJH3Pajn3DVJ+ZXA9lGQFbAAgAAAAAP+/4X7+RtZ91rSfsyKn/ZtwrehGvtccd7sTeehtjoXHBXAAMQAAAADfvX6suupGMyNICW4dytkTecWRihF7KmGNRbTDyxMIsGIvRgSXW/bH5vgdgOptMhmZAAM0NQC2AAAABWQAIAAAAACaYobIuD/VItT68Wfsp9n6InFYq5WUQ1F6p6SRR1OZdgVzACAAAAAAsTOOl0dOlqIB0+IxKZYg2nR6b2RDmxgA20/tDA+LRvYFbAAgAAAAAAM0Urow0V+VVb3wfCD+JsQL9JmactxvImLKDc67gC/HBXAAMQAAAACpu3w4fZSzo0RbaMznBUHDDC3BQBW9B5fJcUhOu7AtV4iTJ3okqGrWsmMo0I68nG/wAAM0NgC2AAAABWQAIAAAAAB9sHgtNaEVup2QWw/L8Ni9Z18C8woIlMevSAPSV59wygVzACAAAAAAnD3VrxzjsKeLpVAuZWUwIFAGKRvbXIYsn0XDrATAgWYFbAAgAAAAAOWxM+qBKt7M2YiMOJmKufV3+igKet9HCB7D0gFYN+dTBXAAMQAAAABUeBgBdftFRA8QFjdu5M6j5w1aBnFV/HnE1j02w7dtbHLB+Ma6r+/qhy2nvJhzNU0WAAM0NwC2AAAABWQAIAAAAACYasy6Hu3s8ZzhGfdr0zkM9SzqoxzAh5r3tj4CIiyp7AVzACAAAAAA+UCObKt5eV/Sj7Qw3ohPXNdCObn6wmiBnFvtgZjjCy0FbAAgAAAAAA+OeRacUyADCFfALtevyR/eKOnRlFYG4hD/0gJQzim9BXAAMQAAAADkgo1zVuAHyZOFzCuWCkPNFHZhE/1jAyEWDo+0/xkqBf0AeeviY6HyhsvRFwiVxS3HAAM0OAC2AAAABWQAIAAAAADQ0fbnr71YFxcgR2Nqoy5cRn8Rh0r1q0dGGSLBUz32vwVzACAAAAAA6A1/d2XJLCuo18ubi5GB56qaGzeZdhNy7jk25r8SiWkFbAAgAAAAALA3Wr6IBcul7H3/Vi8dVYnsJS5hG6vADpF7TxR2byn/BXAAMQAAAAALFsuABgGMvpIudlqB0CzoBibrQT7KEQYGcC9Aacpaw49lgvQY+d48qgfWPqXJSFC7AAM0OQC2AAAABWQAIAAAAADSHr1UaiJie591ZH76qy4m6dz/QtGpPibbxxBHIh0J+AVzACAAAAAAyMXuGbQXqzO5UdJbKtzl7rWmxY5FN6bE7vzBkSb+TYIFbAAgAAAAAKX0B3z9Z2uE/uy3I3eWTDAbgCQeK3wqogbRuxLayIXtBXAAMQAAAADZWG+GWuU6F8aeGtRgAH4ze3YjeD0wk+tIeSQcHk2wYVlCPwplOHg1xtZ7dMBwwYvNAAM1MAC2AAAABWQAIAAAAAC+M/YcC8OFXEBakek/l0JE0umfIWAOXL8IK8QGnjYEGQVzACAAAAAALU3KD1+KdQD53xC+HEBfZcfnreZMdWn4Z2ym9w7+PIIFbAAgAAAAANDgc6pzXF+EMTQf5RuLH4zH6Qi4cFdAUUtAAccjBsyCBXAAMQAAAACZgQIIqfeGSvuJx/1gdFcHbS7pUDQA4fza0Jx/5DXQKDYJn/3FDizD9aWyygyV1ntNAAM1MQC2AAAABWQAIAAAAAB57gwojrlYBFEkkaaN4he+PKIpF5Z8nClvE58RbFLdKQVzACAAAAAA58LrR+y1vyThNlgZDd4VXYOdVC0kHSimnnLDk9N0jEsFbAAgAAAAACuJKk5jpD3TtLeaocnSHC6OrccKVrk4NZ2qDV6D896bBXAAMQAAAADIoOBXTpCJ05sWSVNPAYCbGOCjn5B+c73QXzIHzFXr97Jn2GjqlgGGxW+1PywznA1FAAM1MgC2AAAABWQAIAAAAABXG7NNfXwq2YVE0nsYOE4pJXUb+H+Ui828VOtD/kPc9AVzACAAAAAACp9e0Mcqrjp0x3IGlvPVVl0wxD2x++PKX998bsSsZVMFbAAgAAAAANMD5lFgOaIXlH4hnSutrapZFO5rVAsPhXok7c2IVDg2BXAAMQAAAADRUI7+NoYxc8x+MjHjFIOdMvqOmk0XKhyvzHRJPVti/TWOl77W3VJIucl0B1Nv8TuQAAM1MwC2AAAABWQAIAAAAADjHp5zRYwtMp2SvsEvCW7D5BGk55LdMVlQshDAJLYp2gVzACAAAAAA8lCknIPc9beoZu572/g2+3jT/0SpVDyf5trgqiiAzWYFbAAgAAAAADJ7Q0gMy7N4cZ6tQiVLfRUBGK6mCxOEofq0yTxnlLzNBXAAMQAAAAA06n1TUN+d+CJBtXP6pG2NNMREWo5eKjSEkmCD5/l2vjKd1O0zuQ04i2Ilo7hqbDMEAAM1NAC2AAAABWQAIAAAAABada0u3jyKuPh7cgm53Ksa52TCzihyEAQ4rFW1pIP/zQVzACAAAAAAUpe3MVoJZNWkTOVPJw3DGrnVW0ZnnjfivtAj1SXsHvEFbAAgAAAAAINI0eTxgqtyTHjFUJax5eSqyKkJaQQeFQedINIXsiAxBXAAMQAAAABauLdFh6UdJHt8MudnMUixOPGBp9zPPj6fU3GC0I2gkd5M5ouJg0sjk1s9jQqGh2brAAM1NQC2AAAABWQAIAAAAACbBGUbUU8sEjLsD1B4rWnkUybcADFr1FphLepRFcvcWgVzACAAAAAAM4IJJqINwLj0DGi6dTJrqnQdFovxRk3seJUNUhTn2EkFbAAgAAAAAJj8F6Vq5FB7TexntKvDJxeaEJu/E6Y2PbKxsonQJDc6BXAAMQAAAAC4QVFiX/AaSL28XvXDnsqW84eJRn+LuLj+zohJA6Nih+TiXRJWwbk6IgTOEe4A2LjmAAASc3AAAQAAAAAAAAAQdGYABgAAAAltbgAAAAAAAAAAAAlteAAVgel99BAiEQA=", + "subType": "06" } } } ], "encryptionInformation": { - "type": 1, + "type": { + "$numberInt": "1" + }, "schema": { "db.test": { "escCollection": "fle2.test.esc", @@ -28,7 +30,7 @@ "path": "encrypted", "bsonType": "date", "queries": { - "queryType": "rangePreview", + "queryType": "range", "contention": { "$numberInt": "0" }, diff --git a/test/data/fle2-insert-range/date-v2/mongocryptd-reply.json b/test/data/fle2-insert-range/date-v2/mongocryptd-reply.json index 79cb6bc1d..bdca3e929 100644 --- a/test/data/fle2-insert-range/date-v2/mongocryptd-reply.json +++ b/test/data/fle2-insert-range/date-v2/mongocryptd-reply.json @@ -34,7 +34,7 @@ "path": "encrypted", "bsonType": "long", "queries": { - "queryType": "rangePreview", + "queryType": "range", "contention": { "$numberInt": "0" }, diff --git a/test/data/fle2-insert-range/decimal128-precision-v2/encrypted-field-map.json b/test/data/fle2-insert-range/decimal128-precision-v2/encrypted-field-map.json index 2aab29cce..ccda259a9 100644 --- a/test/data/fle2-insert-range/decimal128-precision-v2/encrypted-field-map.json +++ b/test/data/fle2-insert-range/decimal128-precision-v2/encrypted-field-map.json @@ -13,7 +13,7 @@ "path": "encrypted", "bsonType": "decimal", "queries": { - "queryType": "rangePreview", + "queryType": "range", "contention": { "$numberInt": "0" }, diff --git a/test/data/fle2-insert-range/decimal128-precision-v2/encrypted-payload.json b/test/data/fle2-insert-range/decimal128-precision-v2/encrypted-payload.json index e96bc2ad0..edab8fbaf 100644 --- a/test/data/fle2-insert-range/decimal128-precision-v2/encrypted-payload.json +++ b/test/data/fle2-insert-range/decimal128-precision-v2/encrypted-payload.json @@ -5,14 +5,16 @@ "plainText": "sample", "encrypted": { "$binary": { - "base64": "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", - "subType": "6" + "base64": "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", + "subType": "06" } } } ], "encryptionInformation": { - "type": 1, + "type": { + "$numberInt": "1" + }, "schema": { "db.test": { "escCollection": "fle2.test.esc", @@ -28,7 +30,7 @@ "path": "encrypted", "bsonType": "decimal", "queries": { - "queryType": "rangePreview", + "queryType": "range", "contention": { "$numberInt": "0" }, diff --git a/test/data/fle2-insert-range/decimal128-precision-v2/mongocryptd-reply.json b/test/data/fle2-insert-range/decimal128-precision-v2/mongocryptd-reply.json index 5f1139a50..a76a485f2 100644 --- a/test/data/fle2-insert-range/decimal128-precision-v2/mongocryptd-reply.json +++ b/test/data/fle2-insert-range/decimal128-precision-v2/mongocryptd-reply.json @@ -34,7 +34,7 @@ "path": "encrypted", "bsonType": "decimal", "queries": { - "queryType": "rangePreview", + "queryType": "range", "contention": { "$numberInt": "0" }, diff --git a/test/data/fle2-insert-range/decimal128-v2/encrypted-field-map.json b/test/data/fle2-insert-range/decimal128-v2/encrypted-field-map.json index 2715ab700..d513a30cc 100644 --- a/test/data/fle2-insert-range/decimal128-v2/encrypted-field-map.json +++ b/test/data/fle2-insert-range/decimal128-v2/encrypted-field-map.json @@ -13,7 +13,7 @@ "path": "encrypted", "bsonType": "decimal", "queries": { - "queryType": "rangePreview", + "queryType": "range", "contention": { "$numberInt": "0" }, diff --git a/test/data/fle2-insert-range/decimal128-v2/encrypted-payload.json b/test/data/fle2-insert-range/decimal128-v2/encrypted-payload.json index 48c5dd86f..f25954c79 100644 --- a/test/data/fle2-insert-range/decimal128-v2/encrypted-payload.json +++ b/test/data/fle2-insert-range/decimal128-v2/encrypted-payload.json @@ -5,14 +5,16 @@ "plainText": "sample", "encrypted": { "$binary": { - "base64": "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", - "subType": "6" + "base64": "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", + "subType": "06" } } } ], "encryptionInformation": { - "type": 1, + "type": { + "$numberInt": "1" + }, "schema": { "db.test": { "escCollection": "fle2.test.esc", @@ -28,7 +30,7 @@ "path": "encrypted", "bsonType": "decimal", "queries": { - "queryType": "rangePreview", + "queryType": "range", "contention": { "$numberInt": "0" }, diff --git a/test/data/fle2-insert-range/decimal128-v2/mongocryptd-reply.json b/test/data/fle2-insert-range/decimal128-v2/mongocryptd-reply.json index 0e98fd4d2..8cab527f1 100644 --- a/test/data/fle2-insert-range/decimal128-v2/mongocryptd-reply.json +++ b/test/data/fle2-insert-range/decimal128-v2/mongocryptd-reply.json @@ -34,7 +34,7 @@ "path": "encrypted", "bsonType": "decimal", "queries": { - "queryType": "rangePreview", + "queryType": "range", "contention": { "$numberInt": "0" }, diff --git a/test/data/fle2-insert-range/double-precision-v2/encrypted-payload.json b/test/data/fle2-insert-range/double-precision-v2/encrypted-payload.json index e4f3bb3f3..056fb0830 100644 --- a/test/data/fle2-insert-range/double-precision-v2/encrypted-payload.json +++ b/test/data/fle2-insert-range/double-precision-v2/encrypted-payload.json @@ -5,14 +5,16 @@ "plainText": "sample", "encrypted": { "$binary": { - "base64": "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", - "subType": "6" + "base64": "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", + "subType": "06" } } } ], "encryptionInformation": { - "type": 1, + "type": { + "$numberInt": "1" + }, "schema": { "db.test": { "escCollection": "fle2.test.esc", @@ -35,9 +37,15 @@ "sparsity": { "$numberInt": "1" }, - "min": 0.0, - "max": 200.0, - "precision": 2 + "min": { + "$numberDouble": "0.0" + }, + "max": { + "$numberDouble": "200.0" + }, + "precision": { + "$numberInt": "2" + } } } ] diff --git a/test/data/fle2-insert-range/double-v2/encrypted-field-map.json b/test/data/fle2-insert-range/double-v2/encrypted-field-map.json index f8ae79f6e..12e9d3c0c 100644 --- a/test/data/fle2-insert-range/double-v2/encrypted-field-map.json +++ b/test/data/fle2-insert-range/double-v2/encrypted-field-map.json @@ -13,7 +13,7 @@ "path": "encrypted", "bsonType": "double", "queries": { - "queryType": "rangePreview", + "queryType": "range", "contention": { "$numberInt": "0" }, diff --git a/test/data/fle2-insert-range/double-v2/encrypted-payload.json b/test/data/fle2-insert-range/double-v2/encrypted-payload.json index 23dbb35d6..aecdcc252 100644 --- a/test/data/fle2-insert-range/double-v2/encrypted-payload.json +++ b/test/data/fle2-insert-range/double-v2/encrypted-payload.json @@ -5,14 +5,16 @@ "plainText": "sample", "encrypted": { "$binary": { - "base64": "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", - "subType": "6" + "base64": "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", + "subType": "06" } } } ], "encryptionInformation": { - "type": 1, + "type": { + "$numberInt": "1" + }, "schema": { "db.test": { "escCollection": "fle2.test.esc", @@ -28,7 +30,7 @@ "path": "encrypted", "bsonType": "double", "queries": { - "queryType": "rangePreview", + "queryType": "range", "contention": { "$numberInt": "0" }, diff --git a/test/data/fle2-insert-range/double-v2/mongocryptd-reply.json b/test/data/fle2-insert-range/double-v2/mongocryptd-reply.json index 2ec2fc4fa..61d03d8d6 100644 --- a/test/data/fle2-insert-range/double-v2/mongocryptd-reply.json +++ b/test/data/fle2-insert-range/double-v2/mongocryptd-reply.json @@ -34,7 +34,7 @@ "path": "encrypted", "bsonType": "long", "queries": { - "queryType": "rangePreview", + "queryType": "range", "contention": { "$numberInt": "0" }, diff --git a/test/data/fle2-insert-range/int32-v2/encrypted-field-map.json b/test/data/fle2-insert-range/int32-v2/encrypted-field-map.json index 336446af0..dc7bd3377 100644 --- a/test/data/fle2-insert-range/int32-v2/encrypted-field-map.json +++ b/test/data/fle2-insert-range/int32-v2/encrypted-field-map.json @@ -13,7 +13,7 @@ "path": "encrypted", "bsonType": "int", "queries": { - "queryType": "rangePreview", + "queryType": "range", "contention": { "$numberInt": "0" }, diff --git a/test/data/fle2-insert-range/int32-v2/encrypted-payload.json b/test/data/fle2-insert-range/int32-v2/encrypted-payload.json index c6d791e23..e8fb207bd 100644 --- a/test/data/fle2-insert-range/int32-v2/encrypted-payload.json +++ b/test/data/fle2-insert-range/int32-v2/encrypted-payload.json @@ -5,8 +5,8 @@ "plainText": "sample", "encrypted": { "$binary": { - "base64": "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", - "subType": "6" + "base64": "CyINAAAFZAAgAAAAAAYUuQ9Y1Ie7prKiZXHw9WYEhXcFQdSn7mmkPHFKGAEqBXMAIAAAAACJiCpdKff5FC0BawKHW+wWtxyoXymVQItTooswHY2SMQVwADEAAAAAnfKX2WSr3o8S2zaag8gMImdCNfErp8BkxXFlb1aNkPcwyDuSLm7gIXzlP992WjKF3wV1ABAAAAAEEjRWeBI0mHYSNBI0VniQEhB0ABAAAAAFdgBQAAAAAKvN76sSNJh2EjQSNFZ4kBLRt4PvCvZ7N8s3Xakt0SrKupID4FsPQTVZXoX1fBkDnk0irfALQzHOt9kvd3ZurzzZXCJPfQTlZIlq+MGiG3gxBWUAIAAAAADrmnP3kS2GpCl+gdL2da90KHTkBX46iQ/sZRoj7uPz7AVsACAAAAAAlO36MaVLVRDFW6xrI+0UTkyQdFfSCEBPkZg8sFzuTJYSawAAAAAAAAAAAARnAJsLAAADMAC2AAAABWQAIAAAAABT+uzCz7yxp7uN3+z202vxQ5NOV985A80zAqx86317iAVzACAAAAAAotJPQKqQGOGUkMWaWW9GlbqGpHdx8Y9mSX7tBhUz8YMFbAAgAAAAAA6eOZwxxhUyuExW2kjHcKJmNCrEPFQ9vS9YbrzP67TgBXAAMQAAAAD0xvkQWzHDaNccWDjxapqJsQQJxIpJjSzH2N1sMl52I8VCGmhbZ7eiv1GA6+MQxOtVAAMxALYAAAAFZAAgAAAAAC6uvkdzWq3DNcfLqndCqjmD1janFLc/rxnwmsOTlcQUBXMAIAAAAACs7A835dqkD4syrnsnA2rujWW5+Q9e/1ELolPgiQVEoAVsACAAAAAAl7RsOFQfWxmV2cMZafTExrUJC43pyC/+L/peqek9Lf0FcAAxAAAAAOD6SY9UmJPLh8W9rY+WOcGfBhR2IbREcrPOlvcWitCDpgifW8LNgrL1DtsD+aUrX0sAAzIAtgAAAAVkACAAAAAA4ZMiLagfridRRfmhKbzkDw5T5V0S5kyhqfBvZn5dPlYFcwAgAAAAANo9G7ZRhNvttdgY6+vg49XT1TXWf5UE6DAFlX/AP82RBWwAIAAAAACHR4WfBFBn/Zv0d5gD1QJv1LAe7z5dfOKsdcEJaup2rgVwADEAAAAAh/iVo21MDF6a43aBUOdvobfFrmz0OxcKEl87Qr/9ulWQYnliZ2RZvlhXHLqxkpgtiAADMwC2AAAABWQAIAAAAAChShCDXpnDH8wgL+pVXLX6iPO5/XkcAyVINSwPJHWMEAVzACAAAAAAaNNLGMgUd2cbkY4lzPfLGl6J5Qc2Il4H90QDcnu40WUFbAAgAAAAADnNH06cbj1eufeCtTvMEOif6iP7/UVQg6m0u/B6xZS9BXAAMQAAAADH3pCs96kzIBJHPZlls6ErYAktA2yuwLKyPFi9iXdea9rTY7PxuUQoZyLXHnuwLgjwAAM0ALYAAAAFZAAgAAAAAO+3mZV828ldgLhwSL9H7PSvmJlv7WrvByHAAAGSof4LBXMAIAAAAAD/ELnpWf3l/SNoUNP0S338kKIp5E1V+3Z99E/3FPXh1QVsACAAAAAAEC+jQrwZIUPbpQq8GjVCzoL+1IX6d2YbIkx0jheRskoFcAAxAAAAAH5K57wo1v6F3PVPdumG6cN3hShAXObXElzOyoLNfG0Uu5KyU7ilPAVwJ5NWL9jZBMwAAzUAtgAAAAVkACAAAAAAE+06hBFHl4f7CHQFGGj2ZZuT3WZEMqTj4CzUM2e9PeoFcwAgAAAAAIIlGRvBtZCaXT4OWFMXF+3VC8jzuJFe3mR5RpM/T47OBWwAIAAAAACBRJPSwvsKXZ7fostzk7s73P1v+MuxlsoSzfGCBVqQWQVwADEAAAAAvx9IM6acqD8WYRJIbL+bwmpzAcv2J0i3W8dOyHdHo5GaGbhUbQs+2XJAsKBk/qIFyAADNgC2AAAABWQAIAAAAACvCIk3Z/O0aqysrOwm+wSmvNpZFsMJBXBhSIBBLiT52AVzACAAAAAA9dRAOydZMcNo1yNh9XP7JS1cA4EEBD95wN3t6NZ8pNUFbAAgAAAAAOV9V/DlJ/McpfffRxJGPtgN5IgReZMW5hjPPCC5wfh8BXAAMQAAAADq6xqnx/gbvKUwg6LsZEPah3z3EDqqUUHd2yTo4Uc8boUF1TAl0lfj6Eu3fu6k0qTcAAM3ALYAAAAFZAAgAAAAAGKJ35r7U30MbUBQIvdcgcQW7MG8KbYldN4PCdrQRRcRBXMAIAAAAACwwmMiXwHvD7BEzhBgfDj4L0AajySh/Qhtz42i5ogkbAVsACAAAAAABcm2+tbs0VSGFn9rDvWyvhuIRVDepRdoIvNa6TRv3zkFcAAxAAAAAIarDydCpSFo/NqlzaMC6E+eBx7LiXrB/fG2Z9szcbLmXjUcSJT2iKLj1tFILB/vmisAAzgAtgAAAAVkACAAAAAAYLNccfL4s3DMHDChNpne5is7B1RfWUpctFbO/r2JTAMFcwAgAAAAAPOdU0Owvp1pFujAWWt7nKFVJxcXTMoVw3ZZiheO1DB2BWwAIAAAAAB1bCFHfdyYaPnhvEnOmfNQZIQRVqhxDSwj79IqNXdlmgVwADEAAAAAXEyApIKBa7i/jiq5ISOwAbfHhwxnDXWMoi46jtZK5PL0TFYnvfIW0kItQIYnrygZ6QADOQC2AAAABWQAIAAAAABLprrCZQNYrlCa1tiktkFmgLViqEn2CEz2GYfCozEMxAVzACAAAAAAI9l/JeiixzTr2mna2nwoaxaJ1oHe+if0AJrtviapy3gFbAAgAAAAAIsIWi7l4L3h7alFc2Mnyg+QQ1EIMZ3D15k/sq+BvaYIBXAAMQAAAABmfDn8qbdhBLJhj1/rb9Ly/kz+GbT1WpkxhezKcoB04iBaBYKJrfSeqH+7Pk8SIN5LAAMxMAC2AAAABWQAIAAAAADUq7UIfHJv/mGbsXxGaSnrk1w2OaF1XIQOdL3Ibv7jAQVzACAAAAAAVYSgjDnwcfQ937v4LtelZhXljZRVaPPKpZ72Eg6Qp5wFbAAgAAAAAJnqBNMfgotr0Bs83VunOklSDAVnoO8FAAs2mjULfoP2BXAAMQAAAADLBVQCW9s1i387ZRgAamYrfC6rt+uPHYFBrs6eJ9LWU8G2/EULjJeAga30urUmqCfTAAMxMQC2AAAABWQAIAAAAAAIz6wOrQqBXWAOmerbQckRy4fLI5AC9k5DhBJ3kHJYJgVzACAAAAAA4c2luh9MO6xSNqffZoH4SwI19i3ffdJ9iyAaGitoZxkFbAAgAAAAAI+sI8AzBUAhDs2DSTh7StO5rgbgse0idO29VwOikD69BXAAMQAAAAD4jIxUQRn5M+M3aEB8y8gSZVxGM9DWUnOXnxW4nWvwVBy6M6dsIbMKK0ntDsHoUK5wAAMxMgC2AAAABWQAIAAAAABy6E2SiWcuWFUFZF7u1+9q36Bidd7cB0PMwxN4qUm/iQVzACAAAAAAfXXRP8HSe9qTC4Mhpwm/nGty0swMvdl3Ly7ZwgQ5jjIFbAAgAAAAADPuDapB79oBpsUKLXh9oeESX6227xBMIb3JHWmpWCcvBXAAMQAAAABj+GDDYudxPSCKRvpd2JD43W6j6WiKDj87cuSFutQ1viBwlIcebxdNQCrQk2lc4mTZAAMxMwC2AAAABWQAIAAAAADdcutpKLPVhdR6vTKi+/9b/ngd8WF/gvYzoSOKPGwhLgVzACAAAAAAWm36BOmL6gbNykGY7pHDbJZZEHDxt+WMyNRCYL6dKX0FbAAgAAAAAMd299Bokg6hihom7FZAtMDxLS3VJ+aIngv5kdIdD36KBXAAMQAAAADpphQq0q3J5VDQffMiAdBMfNbxzAka6gLTsD/8iu//3n5Co1mSi/PpkEYj7vm7G/xnAAMxNAC2AAAABWQAIAAAAABMvmSKiuV9tNx7pKKhKPEBb4RlXlptLoUC6XzzqwZM/wVzACAAAAAAQNp806yyelkCYf3mmkfm6CZgaegIJok0BRG3T4wihSUFbAAgAAAAAPsI3ldHLkKkInpttNugj3cAyjtn8+aYWSppd6eF4IP6BXAAMQAAAADaAPXQlyrss/msgXPCjTYcuJoAMlULfUlYiGl8glGovkB5QT5Dyp3Z42oSnLxkuYXiAAMxNQC2AAAABWQAIAAAAACWCYL1HRq7/1vOBbRFajjqpNxf3fVtYNrMKH0CWMxlqQVzACAAAAAAgrBrcFAmjTruvGSRfTuTnuF2+uXz/Vtr3g60RqkG4bYFbAAgAAAAAIQEH2axT3qVk3JPY6vLwoE1x/AdRl7Die4AwXOlTSRPBXAAMQAAAAAUsy6h6usThQG3P97tMBSo39YOF/xc2h+xndzc6fbNpbMRUPw0GhpRxIcQgigl6IF8AAASc3AAAQAAAAAAAAAQdGYABgAAABBtbgAAAAAAEG14AIfWEgAA", + "subType": "06" } } } @@ -28,7 +28,7 @@ "path": "encrypted", "bsonType": "int", "queries": { - "queryType": "rangePreview", + "queryType": "range", "contention": { "$numberInt": "0" }, diff --git a/test/data/fle2-insert-range/int32-v2/mongocryptd-reply.json b/test/data/fle2-insert-range/int32-v2/mongocryptd-reply.json index 96cfe5600..85affa19b 100644 --- a/test/data/fle2-insert-range/int32-v2/mongocryptd-reply.json +++ b/test/data/fle2-insert-range/int32-v2/mongocryptd-reply.json @@ -34,7 +34,7 @@ "path": "encrypted", "bsonType": "int", "queries": { - "queryType": "rangePreview", + "queryType": "range", "contention": { "$numberInt": "0" }, diff --git a/test/data/fle2-insert-range/int64-v2/encrypted-field-map.json b/test/data/fle2-insert-range/int64-v2/encrypted-field-map.json index 64964c127..d093f4128 100644 --- a/test/data/fle2-insert-range/int64-v2/encrypted-field-map.json +++ b/test/data/fle2-insert-range/int64-v2/encrypted-field-map.json @@ -13,7 +13,7 @@ "path": "encrypted", "bsonType": "long", "queries": { - "queryType": "rangePreview", + "queryType": "range", "contention": { "$numberInt": "0" }, diff --git a/test/data/fle2-insert-range/int64-v2/encrypted-payload.json b/test/data/fle2-insert-range/int64-v2/encrypted-payload.json index 7c42ae92d..f579ef78a 100644 --- a/test/data/fle2-insert-range/int64-v2/encrypted-payload.json +++ b/test/data/fle2-insert-range/int64-v2/encrypted-payload.json @@ -5,14 +5,16 @@ "plainText": "sample", "encrypted": { "$binary": { - "base64": "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", - "subType": "6" + "base64": "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", + "subType": "06" } } } ], "encryptionInformation": { - "type": 1, + "type": { + "$numberInt": "1" + }, "schema": { "db.test": { "escCollection": "fle2.test.esc", @@ -28,7 +30,7 @@ "path": "encrypted", "bsonType": "long", "queries": { - "queryType": "rangePreview", + "queryType": "range", "contention": { "$numberInt": "0" }, diff --git a/test/data/fle2-insert-range/int64-v2/mongocryptd-reply.json b/test/data/fle2-insert-range/int64-v2/mongocryptd-reply.json index ed460a3d7..7672e5d01 100644 --- a/test/data/fle2-insert-range/int64-v2/mongocryptd-reply.json +++ b/test/data/fle2-insert-range/int64-v2/mongocryptd-reply.json @@ -34,7 +34,7 @@ "path": "encrypted", "bsonType": "long", "queries": { - "queryType": "rangePreview", + "queryType": "range", "contention": { "$numberInt": "0" }, diff --git a/test/test-mc-efc.c b/test/test-mc-efc.c index 156961324..a949cbc48 100644 --- a/test/test-mc-efc.c +++ b/test/test-mc-efc.c @@ -34,11 +34,9 @@ static void _test_efc(_mongocrypt_tester_t *tester) { _mongocrypt_buffer_copy_from_hex(&expect_keyId1, "12345678123498761234123456789012"); _mongocrypt_buffer_copy_from_hex(&expect_keyId2, "abcdefab123498761234123456789012"); - const bool use_range_v2 = false; - { _load_test_file(tester, "./test/data/efc/efc-oneField.json", &efc_bson); - ASSERT_OK_STATUS(mc_EncryptedFieldConfig_parse(&efc, &efc_bson, status, use_range_v2), status); + ASSERT_OK_STATUS(mc_EncryptedFieldConfig_parse(&efc, &efc_bson, status), status); ASSERT_CMPUINT8(efc.str_encode_version, ==, 0); ptr = efc.fields; ASSERT(ptr); @@ -50,7 +48,7 @@ static void _test_efc(_mongocrypt_tester_t *tester) { { _load_test_file(tester, "./test/data/efc/efc-oneField-goodVersionSet.json", &efc_bson); - ASSERT_OK_STATUS(mc_EncryptedFieldConfig_parse(&efc, &efc_bson, status, use_range_v2), status); + ASSERT_OK_STATUS(mc_EncryptedFieldConfig_parse(&efc, &efc_bson, status), status); ASSERT_CMPUINT8(efc.str_encode_version, ==, 1); ptr = efc.fields; ASSERT(ptr); @@ -62,7 +60,7 @@ static void _test_efc(_mongocrypt_tester_t *tester) { { _load_test_file(tester, "./test/data/efc/efc-extraField.json", &efc_bson); - ASSERT_OK_STATUS(mc_EncryptedFieldConfig_parse(&efc, &efc_bson, status, use_range_v2), status); + ASSERT_OK_STATUS(mc_EncryptedFieldConfig_parse(&efc, &efc_bson, status), status); ASSERT_CMPUINT8(efc.str_encode_version, ==, 0); ptr = efc.fields; ASSERT(ptr); @@ -74,7 +72,7 @@ static void _test_efc(_mongocrypt_tester_t *tester) { { _load_test_file(tester, "./test/data/efc/efc-twoFields.json", &efc_bson); - ASSERT_OK_STATUS(mc_EncryptedFieldConfig_parse(&efc, &efc_bson, status, use_range_v2), status); + ASSERT_OK_STATUS(mc_EncryptedFieldConfig_parse(&efc, &efc_bson, status), status); ASSERT_CMPUINT8(efc.str_encode_version, ==, 0); ptr = efc.fields; ASSERT(ptr); @@ -90,7 +88,7 @@ static void _test_efc(_mongocrypt_tester_t *tester) { { _load_test_file(tester, "./test/data/efc/efc-missingKeyId.json", &efc_bson); - ASSERT_FAILS_STATUS(mc_EncryptedFieldConfig_parse(&efc, &efc_bson, status, use_range_v2), + ASSERT_FAILS_STATUS(mc_EncryptedFieldConfig_parse(&efc, &efc_bson, status), status, "unable to find 'keyId' in 'field' document"); mc_EncryptedFieldConfig_cleanup(&efc); @@ -99,7 +97,7 @@ static void _test_efc(_mongocrypt_tester_t *tester) { { _load_test_file(tester, "./test/data/efc/efc-oneField-badVersionSet.json", &efc_bson); - ASSERT_FAILS_STATUS(mc_EncryptedFieldConfig_parse(&efc, &efc_bson, status, use_range_v2), + ASSERT_FAILS_STATUS(mc_EncryptedFieldConfig_parse(&efc, &efc_bson, status), status, "'strEncodeVersion' of 99 is not supported"); mc_EncryptedFieldConfig_cleanup(&efc); @@ -108,7 +106,7 @@ static void _test_efc(_mongocrypt_tester_t *tester) { { _load_test_file(tester, "./test/data/efc/efc-textSearchFields.json", &efc_bson); - ASSERT_OK_STATUS(mc_EncryptedFieldConfig_parse(&efc, &efc_bson, status, use_range_v2), status); + ASSERT_OK_STATUS(mc_EncryptedFieldConfig_parse(&efc, &efc_bson, status), status); ASSERT_CMPUINT8(efc.str_encode_version, ==, LATEST_STR_ENCODE_VERSION); ptr = efc.fields; ASSERT(ptr); @@ -126,7 +124,7 @@ static void _test_efc(_mongocrypt_tester_t *tester) { { _load_test_file(tester, "./test/data/efc/efc-textSearchFields-goodVersionSet.json", &efc_bson); - ASSERT_OK_STATUS(mc_EncryptedFieldConfig_parse(&efc, &efc_bson, status, use_range_v2), status); + ASSERT_OK_STATUS(mc_EncryptedFieldConfig_parse(&efc, &efc_bson, status), status); ASSERT_CMPUINT8(efc.str_encode_version, ==, 1); ptr = efc.fields; ASSERT(ptr); @@ -144,7 +142,7 @@ static void _test_efc(_mongocrypt_tester_t *tester) { { _load_test_file(tester, "./test/data/efc/efc-textSearchFields-badVersionSet.json", &efc_bson); - ASSERT_FAILS_STATUS(mc_EncryptedFieldConfig_parse(&efc, &efc_bson, status, use_range_v2), + ASSERT_FAILS_STATUS(mc_EncryptedFieldConfig_parse(&efc, &efc_bson, status), status, "'strEncodeVersion' of 99 is not supported"); mc_EncryptedFieldConfig_cleanup(&efc); diff --git a/test/test-mc-fle2-encryption-placeholder.c b/test/test-mc-fle2-encryption-placeholder.c index 8fe6967e5..7a537a120 100644 --- a/test/test-mc-fle2-encryption-placeholder.c +++ b/test/test-mc-fle2-encryption-placeholder.c @@ -96,8 +96,7 @@ static void _test_FLE2EncryptionPlaceholder_range_parse(_mongocrypt_tester_t *te { mc_FLE2RangeInsertSpec_t spec; - ASSERT_OK_STATUS(mc_FLE2RangeInsertSpec_parse(&spec, &placeholder.v_iter, false /* use_range_v2 */, status), - status); + ASSERT_OK_STATUS(mc_FLE2RangeInsertSpec_parse(&spec, &placeholder.v_iter, status), status); ASSERT(BSON_ITER_HOLDS_INT32(&spec.v)); ASSERT_CMPINT32(bson_iter_int32(&spec.v), ==, 123456); @@ -153,8 +152,7 @@ static void _test_FLE2EncryptionPlaceholder_range_parse(_mongocrypt_tester_t *te { mc_FLE2RangeFindSpec_t spec; - ASSERT_OK_STATUS(mc_FLE2RangeFindSpec_parse(&spec, &placeholder.v_iter, false /* use_range_v2 */, status), - status); + ASSERT_OK_STATUS(mc_FLE2RangeFindSpec_parse(&spec, &placeholder.v_iter, status), status); ASSERT(spec.edgesInfo.set); @@ -225,8 +223,7 @@ static void _test_FLE2EncryptionPlaceholder_range_parse(_mongocrypt_tester_t *te { mc_FLE2RangeFindSpec_t spec; - ASSERT_OK_STATUS(mc_FLE2RangeFindSpec_parse(&spec, &placeholder.v_iter, false /* use_range_v2 */, status), - status); + ASSERT_OK_STATUS(mc_FLE2RangeFindSpec_parse(&spec, &placeholder.v_iter, status), status); ASSERT(spec.edgesInfo.set); @@ -295,8 +292,7 @@ static void _test_FLE2EncryptionPlaceholder_range_parse(_mongocrypt_tester_t *te { mc_FLE2RangeInsertSpec_t spec; - ASSERT_OK_STATUS(mc_FLE2RangeInsertSpec_parse(&spec, &placeholder.v_iter, false /* use_range_v2 */, status), - status); + ASSERT_OK_STATUS(mc_FLE2RangeInsertSpec_parse(&spec, &placeholder.v_iter, status), status); ASSERT(BSON_ITER_HOLDS_DOUBLE(&spec.v)); ASSERT_CMPDOUBLE(bson_iter_double(&spec.v), ==, 123.456); diff --git a/test/test-mc-fle2-find-range-payload-v2.c b/test/test-mc-fle2-find-range-payload-v2.c index 79b2036e3..8c39ac505 100644 --- a/test/test-mc-fle2-find-range-payload-v2.c +++ b/test/test-mc-fle2-find-range-payload-v2.c @@ -73,8 +73,7 @@ static void _test_FLE2FindRangePayloadV2_roundtrip(_mongocrypt_tester_t *tester) payload.secondOperator = expect_secondOperator; bson_init(&out_bson); - const bool use_range_v2 = false; - mc_FLE2FindRangePayloadV2_serialize(&payload, &out_bson, use_range_v2); + mc_FLE2FindRangePayloadV2_serialize(&payload, &out_bson); ASSERT_EQUAL_BSON(&in_bson, &out_bson); @@ -100,26 +99,11 @@ static void _test_FLE2FindRangePayloadV2_includes_crypto_params(_mongocrypt_test // Test crypto params from SERVER-91889 are included in "range" payload. { bson_t got = BSON_INITIALIZER; - const bool use_range_v2 = true; - ASSERT(mc_FLE2FindRangePayloadV2_serialize(&payload, &got, use_range_v2)); + ASSERT(mc_FLE2FindRangePayloadV2_serialize(&payload, &got)); _assert_match_bson(&got, TMP_BSON(BSON_STR({"sp" : 1, "pn" : 2, "tf" : 3, "mn" : 4, "mx" : 5}))); bson_destroy(&got); } - // Test crypto params from SERVER-91889 are excluded in "rangePreview" payload. - { - bson_t got = BSON_INITIALIZER; - const bool use_range_v2 = false; - ASSERT(mc_FLE2FindRangePayloadV2_serialize(&payload, &got, use_range_v2)); - _assert_match_bson(&got, TMP_BSON(BSON_STR({ - "sp" : {"$exists" : false}, - "pn" : {"$exists" : false}, - "tf" : {"$exists" : false}, - "mn" : {"$exists" : false}, - "mx" : {"$exists" : false} - }))); - bson_destroy(&got); - } mc_FLE2FindRangePayloadV2_cleanup(&payload); } diff --git a/test/test-mc-fle2-payload-iup-v2.c b/test/test-mc-fle2-payload-iup-v2.c index 732c222ab..957b9622c 100644 --- a/test/test-mc-fle2-payload-iup-v2.c +++ b/test/test-mc-fle2-payload-iup-v2.c @@ -182,26 +182,11 @@ static void _test_mc_FLE2InsertUpdatePayloadV2_includes_crypto_params(_mongocryp // Test crypto params from SERVER-91889 are included in "range" payload. { bson_t got = BSON_INITIALIZER; - const bool use_range_v2 = true; - ASSERT(mc_FLE2InsertUpdatePayloadV2_serializeForRange(&payload, &got, use_range_v2)); + ASSERT(mc_FLE2InsertUpdatePayloadV2_serializeForRange(&payload, &got)); _assert_match_bson(&got, TMP_BSON(BSON_STR({"sp" : 1, "pn" : 2, "tf" : 3, "mn" : 4, "mx" : 5}))); bson_destroy(&got); } - // Test crypto params from SERVER-91889 are excluded in "rangePreview" payload. - { - bson_t got = BSON_INITIALIZER; - const bool use_range_v2 = false; - ASSERT(mc_FLE2InsertUpdatePayloadV2_serializeForRange(&payload, &got, use_range_v2)); - _assert_match_bson(&got, TMP_BSON(BSON_STR({ - "sp" : {"$exists" : false}, - "pn" : {"$exists" : false}, - "tf" : {"$exists" : false}, - "mn" : {"$exists" : false}, - "mx" : {"$exists" : false} - }))); - bson_destroy(&got); - } mc_FLE2InsertUpdatePayloadV2_cleanup(&payload); } diff --git a/test/test-mc-fle2-rfds.c b/test/test-mc-fle2-rfds.c index 1b0e842ba..b7b28f5db 100644 --- a/test/test-mc-fle2-rfds.c +++ b/test/test-mc-fle2-rfds.c @@ -328,7 +328,7 @@ static void test_mc_FLE2RangeFindDriverSpec_to_placeholders(_mongocrypt_tester_t indexMax, sparsity); - ASSERT_OK_STATUS(mc_RangeOpts_parse(&range_opts, range_opts_bson, true /* use_range_v2 */, status), status); + ASSERT_OK_STATUS(mc_RangeOpts_parse(&range_opts, range_opts_bson, status), status); for (size_t i = 0; i < sizeof(tests) / sizeof(tests[0]); i++) { testcase_t *test = tests + i; diff --git a/test/test-mc-range-edge-generation.c b/test/test-mc-range-edge-generation.c index 3a97abd23..00daa0f20 100644 --- a/test/test-mc-range-edge-generation.c +++ b/test/test-mc-range-edge-generation.c @@ -116,8 +116,7 @@ static void _test_getEdgesInt32(_mongocrypt_tester_t *tester) { .max = test->max, .sparsity = test->sparsity, .trimFactor = OPT_I32(test->trimFactor)}; - const bool use_range_v2 = true; - mc_edges_t *got = mc_getEdgesInt32(args, status, use_range_v2); + mc_edges_t *got = mc_getEdgesInt32(args, status); if (test->expectError != NULL) { ASSERT_OR_PRINT_MSG(NULL == got, "expected error, got success"); ASSERT_STATUS_CONTAINS(status, test->expectError); @@ -209,8 +208,7 @@ static void _test_getEdgesInt64(_mongocrypt_tester_t *tester) { .max = test->max, .sparsity = test->sparsity, .trimFactor = OPT_I32(test->trimFactor)}; - const bool use_range_v2 = true; - mc_edges_t *got = mc_getEdgesInt64(args, status, use_range_v2); + mc_edges_t *got = mc_getEdgesInt64(args, status); if (test->expectError != NULL) { ASSERT_OR_PRINT_MSG(NULL == got, "expected error, got success"); ASSERT_STATUS_CONTAINS(status, test->expectError); @@ -270,8 +268,7 @@ static void _test_getEdgesDouble(_mongocrypt_tester_t *tester) { mc_getEdgesDouble_args_t args = {.value = test->value, .sparsity = test->sparsity, .trimFactor = OPT_I32(trimFactor)}; - const bool use_range_v2 = true; - mc_edges_t *got = mc_getEdgesDouble(args, status, use_range_v2); + mc_edges_t *got = mc_getEdgesDouble(args, status); if (test->expectError != NULL) { if (NULL != got) { @@ -338,8 +335,7 @@ static void _test_getEdgesDecimal128(_mongocrypt_tester_t *tester) { // .max = test->max, .sparsity = (size_t)test->sparsity, .trimFactor = OPT_I32(trimFactor)}; - const bool use_range_v2 = true; - mc_edges_t *got = mc_getEdgesDecimal128(args, status, use_range_v2); + mc_edges_t *got = mc_getEdgesDecimal128(args, status); if (test->expectError != NULL) { if (NULL != got) { diff --git a/test/test-mc-range-encoding.c b/test/test-mc-range-encoding.c index 3f28db128..b3099c6c6 100644 --- a/test/test-mc-range-encoding.c +++ b/test/test-mc-range-encoding.c @@ -567,15 +567,13 @@ static void _test_RangeTest_Encode_Double(_mongocrypt_tester_t *tester) { TEST_PRINTF("_test_RangeTest_Encode_Double: value=%f\n", test->value); } - const bool use_range_v2 = !test->use_range_v1; mc_OSTType_Double got; const bool ok = mc_getTypeInfoDouble((mc_getTypeInfoDouble_args_t){.value = test->value, .min = test->min, .max = test->max, .precision = test->precision}, &got, - status, - use_range_v2); + status); if (test->expectError) { ASSERT_OR_PRINT_MSG(!ok, "expected error, but got none"); ASSERT_STATUS_CONTAINS(status, test->expectError); @@ -909,15 +907,7 @@ static void _test_RangeTest_Encode_Decimal128(_mongocrypt_tester_t *tester) { } #define ASSERT_EIBB_ERROR(Val, Max, Min, Precision, Expect, Error) \ - (Decimal128Test){ \ - .value = mc_dec128_from_string(#Val), \ - .min = OPT_MC_DEC128(mc_dec128_from_string(#Min)), \ - .max = OPT_MC_DEC128(mc_dec128_from_string(#Max)), \ - .precision = OPT_I32(Precision), \ - .expect = Expect, \ - .use_range_v1 = true, \ - }, \ - (Decimal128Test) { \ + (Decimal128Test) { \ .value = mc_dec128_from_string(#Val), .min = OPT_MC_DEC128(mc_dec128_from_string(#Min)), \ .max = OPT_MC_DEC128(mc_dec128_from_string(#Max)), .precision = OPT_I32(Precision), .expectError = Error \ } @@ -1002,7 +992,6 @@ static void _test_RangeTest_Encode_Decimal128(_mongocrypt_tester_t *tester) { TEST_PRINTF("_test_RangeTest_Encode_Decimal128: value=%s\n", mc_dec128_to_string(test->value).str); } mc_OSTType_Decimal128 got; - const bool use_range_v2 = !test->use_range_v1; const bool ok = mc_getTypeInfoDecimal128( (mc_getTypeInfoDecimal128_args_t){ .value = test->value, @@ -1011,8 +1000,7 @@ static void _test_RangeTest_Encode_Decimal128(_mongocrypt_tester_t *tester) { .precision = test->precision, }, &got, - status, - use_range_v2); + status); if (test->expectError) { ASSERT_OR_PRINT_MSG(!ok, "expected error, but got none"); ASSERT_STATUS_CONTAINS(status, test->expectError); diff --git a/test/test-mc-range-mincover.c b/test/test-mc-range-mincover.c index afe890bd2..131eb0b27 100644 --- a/test/test-mc-range-mincover.c +++ b/test/test-mc-range-mincover.c @@ -95,7 +95,6 @@ static mc_mincover_t *_test_getMincover32(void *tests, size_t idx, mongocrypt_st Int32Test *test = (Int32Test *)tests + idx; - const bool use_range_v2 = true; return mc_getMincoverInt32((mc_getMincoverInt32_args_t){.lowerBound = test->lowerBound, .includeLowerBound = test->includeLowerBound, .upperBound = test->upperBound, @@ -104,14 +103,12 @@ static mc_mincover_t *_test_getMincover32(void *tests, size_t idx, mongocrypt_st .max = test->max, .sparsity = test->sparsity, .trimFactor = OPT_I32(test->trimFactor)}, - status, - use_range_v2); + status); } static mc_mincover_t *_test_getMincover64(void *tests, size_t idx, mongocrypt_status_t *status) { BSON_ASSERT_PARAM(tests); - const bool use_range_v2 = true; const uint32_t trimFactor = 0; // At present, all test cases expect trimFactor=0. Int64Test *const test = (Int64Test *)tests + idx; @@ -123,14 +120,12 @@ static mc_mincover_t *_test_getMincover64(void *tests, size_t idx, mongocrypt_st .max = test->max, .sparsity = test->sparsity, .trimFactor = OPT_I32(trimFactor)}, - status, - use_range_v2); + status); } static mc_mincover_t *_test_getMincoverDouble_helper(void *tests, size_t idx, mongocrypt_status_t *status) { BSON_ASSERT_PARAM(tests); - const bool use_range_v2 = true; const uint32_t trimFactor = 0; // At present, all test cases expect trimFactor=0. DoubleTest *const test = (DoubleTest *)tests + idx; @@ -144,8 +139,7 @@ static mc_mincover_t *_test_getMincoverDouble_helper(void *tests, size_t idx, mo .max = test->precision.set ? test->max : (mc_optional_double_t){0}, .precision = test->precision, .trimFactor = OPT_I32(trimFactor)}, - status, - use_range_v2); + status); } #if MONGOCRYPT_HAVE_DECIMAL128_SUPPORT() @@ -154,7 +148,6 @@ static mc_mincover_t *_test_getMincoverDecimal128_helper(void *tests, size_t idx Decimal128Test *const test = (Decimal128Test *)tests + idx; - const bool use_range_v2 = true; const uint32_t trimFactor = 0; // At present, all test cases expect trimFactor=0. return mc_getMincoverDecimal128( (mc_getMincoverDecimal128_args_t){.lowerBound = test->lowerBound, @@ -166,8 +159,7 @@ static mc_mincover_t *_test_getMincoverDecimal128_helper(void *tests, size_t idx .max = test->precision.set ? test->max : (mc_optional_dec128_t){0}, .precision = test->precision, .trimFactor = OPT_I32(trimFactor)}, - status, - use_range_v2); + status); } #endif // MONGOCRYPT_HAVE_DECIMAL128_SUPPORT diff --git a/test/test-mc-rangeopts.c b/test/test-mc-rangeopts.c index 63e2bda70..1ebb5a406 100644 --- a/test/test-mc-rangeopts.c +++ b/test/test-mc-rangeopts.c @@ -30,7 +30,6 @@ static void test_mc_RangeOpts_parse(_mongocrypt_tester_t *tester) { int64_t expectSparsity; mc_optional_uint32_t expectPrecision; mc_optional_int32_t expectTrimFactor; - bool useRangeV2; } testcase; testcase tests[] = { @@ -62,24 +61,17 @@ static void test_mc_RangeOpts_parse(_mongocrypt_tester_t *tester) { {.desc = "Requires precision for double when only min is set", .in = RAW_STRING({"min" : 0.0, "sparsity" : {"$numberLong" : "1"}}), .expectError = "expected 'precision'"}, - // Once `use_range_v2` is default true, this test may be removed. - {.desc = "Fails when trim factor is set but Range V2 is disabled", - .in = RAW_STRING({"trimFactor" : 1, "sparsity" : {"$numberLong" : "1"}}), - .expectError = "'trimFactor' is not supported for QE range v1"}, {.desc = "Works when trim factor is set and Range V2 is enabled", .in = RAW_STRING({"trimFactor" : 1, "sparsity" : {"$numberLong" : "1"}}), - .useRangeV2 = true, .expectSparsity = 1, .expectTrimFactor = OPT_I32(1)}, {.desc = "Does not require sparsity", .in = RAW_STRING({"min" : 123, "max" : 456}), - .useRangeV2 = true, .expectSparsity = mc_FLERangeSparsityDefault, .expectMin = OPT_I32_C(123), .expectMax = OPT_I32_C(456)}, {.desc = "Errors on negative trim factor", .in = RAW_STRING({"trimFactor" : -1, "sparsity" : {"$numberLong" : "1"}}), - .useRangeV2 = true, .expectError = "'trimFactor' must be non-negative"}, }; @@ -88,7 +80,7 @@ static void test_mc_RangeOpts_parse(_mongocrypt_tester_t *tester) { mongocrypt_status_t *status = mongocrypt_status_new(); mc_RangeOpts_t ro; TEST_PRINTF("running test_mc_RangeOpts_parse subtest: %s\n", test->desc); - bool ret = mc_RangeOpts_parse(&ro, TMP_BSON_STR(test->in), test->useRangeV2, status); + bool ret = mc_RangeOpts_parse(&ro, TMP_BSON_STR(test->in), status); if (!test->expectError) { ASSERT_OK_STATUS(ret, status); ASSERT_CMPINT(test->expectMin.set, ==, ro.min.set); @@ -119,8 +111,6 @@ static void test_mc_RangeOpts_to_FLE2RangeInsertSpec(_mongocrypt_tester_t *teste const char *v; const char *expectError; const char *expect; - // Most of the tests are for trim factor, so range V2 is default enabled. - bool disableRangeV2; } testcase; testcase tests[] = { @@ -128,11 +118,6 @@ static void test_mc_RangeOpts_to_FLE2RangeInsertSpec(_mongocrypt_tester_t *teste .in = RAW_STRING({"min" : 123, "max" : 456, "sparsity" : {"$numberLong" : "1"}}), .v = RAW_STRING({"v" : 789}), .expect = RAW_STRING({"v" : {"v" : 789, "min" : 123, "max" : 456}})}, - {.desc = "Trim factor not appended if range V2 disabled", - .in = RAW_STRING({"min" : 123, "max" : 456, "sparsity" : {"$numberLong" : "1"}}), - .v = RAW_STRING({"v" : 789}), - .disableRangeV2 = true, - .expect = RAW_STRING({"v" : {"v" : 789, "min" : 123, "max" : 456}})}, {.desc = "Works with precision", .in = RAW_STRING({"min" : 123.0, "max" : 456.0, "precision" : 2, "sparsity" : {"$numberLong" : "1"}}), .v = RAW_STRING({"v" : 789.0}), @@ -317,9 +302,9 @@ static void test_mc_RangeOpts_to_FLE2RangeInsertSpec(_mongocrypt_tester_t *teste mongocrypt_status_t *status = mongocrypt_status_new(); mc_RangeOpts_t ro; TEST_PRINTF("running test_mc_RangeOpts_to_FLE2RangeInsertSpec subtest: %s\n", test->desc); - ASSERT_OK_STATUS(mc_RangeOpts_parse(&ro, TMP_BSON_STR(test->in), !test->disableRangeV2, status), status); + ASSERT_OK_STATUS(mc_RangeOpts_parse(&ro, TMP_BSON_STR(test->in), status), status); bson_t out = BSON_INITIALIZER; - bool ret = mc_RangeOpts_to_FLE2RangeInsertSpec(&ro, TMP_BSON_STR(test->v), &out, !test->disableRangeV2, status); + bool ret = mc_RangeOpts_to_FLE2RangeInsertSpec(&ro, TMP_BSON_STR(test->v), &out, status); if (!test->expectError) { ASSERT_OK_STATUS(ret, status); ASSERT_EQUAL_BSON(TMP_BSON_STR(test->expect), &out); diff --git a/test/test-mongocrypt-cleanup.c b/test/test-mongocrypt-cleanup.c index 43e7e0ef0..d68846c3c 100644 --- a/test/test-mongocrypt-cleanup.c +++ b/test/test-mongocrypt-cleanup.c @@ -17,59 +17,50 @@ #include "test-mongocrypt.h" static void _test_cleanup_success(_mongocrypt_tester_t *tester) { - for (int use_range_v2 = 0; use_range_v2 <= 1; use_range_v2++) { - mongocrypt_t *crypt; - mongocrypt_ctx_t *ctx; - - crypt = - _mongocrypt_tester_mongocrypt(use_range_v2 ? TESTER_MONGOCRYPT_WITH_RANGE_V2 : TESTER_MONGOCRYPT_DEFAULT); - ctx = mongocrypt_ctx_new(crypt); - - ASSERT_OK(mongocrypt_ctx_encrypt_init(ctx, "db", -1, TEST_FILE("./test/data/cleanup/success/cmd.json")), ctx); - - ASSERT_STATE_EQUAL(mongocrypt_ctx_state(ctx), MONGOCRYPT_CTX_NEED_MONGO_COLLINFO); - { - ASSERT_OK(mongocrypt_ctx_mongo_feed(ctx, TEST_FILE("./test/data/cleanup/success/collinfo.json")), ctx); - ASSERT_OK(mongocrypt_ctx_mongo_done(ctx), ctx); - } - - ASSERT_STATE_EQUAL(mongocrypt_ctx_state(ctx), MONGOCRYPT_CTX_NEED_MONGO_KEYS); - { - ASSERT_OK(mongocrypt_ctx_mongo_feed(ctx, - TEST_FILE("./test/data/keys/" - "12345678123498761234123456789012-local-document.json")), - ctx); - ASSERT_OK(mongocrypt_ctx_mongo_feed(ctx, - TEST_FILE("./test/data/keys/" - "ABCDEFAB123498761234123456789012-local-document.json")), - ctx); - ASSERT_OK(mongocrypt_ctx_mongo_feed(ctx, - TEST_FILE("./test/data/keys/" - "12345678123498761234123456789013-local-document.json")), - ctx); - ASSERT_OK(mongocrypt_ctx_mongo_done(ctx), ctx); - } - - ASSERT_STATE_EQUAL(mongocrypt_ctx_state(ctx), MONGOCRYPT_CTX_READY); - { - mongocrypt_binary_t *out = mongocrypt_binary_new(); - ASSERT_OK(mongocrypt_ctx_finalize(ctx, out), ctx); - if (use_range_v2) { - ASSERT_MONGOCRYPT_BINARY_EQUAL_BSON( - TEST_FILE("./test/data/cleanup/success/encrypted-payload-range-v2.json"), - out); - } else { - ASSERT_MONGOCRYPT_BINARY_EQUAL_BSON(TEST_FILE("./test/data/cleanup/success/encrypted-payload.json"), - out); - } - mongocrypt_binary_destroy(out); - } - - ASSERT_STATE_EQUAL(mongocrypt_ctx_state(ctx), MONGOCRYPT_CTX_DONE); - - mongocrypt_ctx_destroy(ctx); - mongocrypt_destroy(crypt); + mongocrypt_t *crypt; + mongocrypt_ctx_t *ctx; + + crypt = _mongocrypt_tester_mongocrypt(TESTER_MONGOCRYPT_DEFAULT); + ctx = mongocrypt_ctx_new(crypt); + + ASSERT_OK(mongocrypt_ctx_encrypt_init(ctx, "db", -1, TEST_FILE("./test/data/cleanup/success/cmd.json")), ctx); + + ASSERT_STATE_EQUAL(mongocrypt_ctx_state(ctx), MONGOCRYPT_CTX_NEED_MONGO_COLLINFO); + { + ASSERT_OK(mongocrypt_ctx_mongo_feed(ctx, TEST_FILE("./test/data/cleanup/success/collinfo.json")), ctx); + ASSERT_OK(mongocrypt_ctx_mongo_done(ctx), ctx); } + + ASSERT_STATE_EQUAL(mongocrypt_ctx_state(ctx), MONGOCRYPT_CTX_NEED_MONGO_KEYS); + { + ASSERT_OK(mongocrypt_ctx_mongo_feed(ctx, + TEST_FILE("./test/data/keys/" + "12345678123498761234123456789012-local-document.json")), + ctx); + ASSERT_OK(mongocrypt_ctx_mongo_feed(ctx, + TEST_FILE("./test/data/keys/" + "ABCDEFAB123498761234123456789012-local-document.json")), + ctx); + ASSERT_OK(mongocrypt_ctx_mongo_feed(ctx, + TEST_FILE("./test/data/keys/" + "12345678123498761234123456789013-local-document.json")), + ctx); + ASSERT_OK(mongocrypt_ctx_mongo_done(ctx), ctx); + } + + ASSERT_STATE_EQUAL(mongocrypt_ctx_state(ctx), MONGOCRYPT_CTX_READY); + { + mongocrypt_binary_t *out = mongocrypt_binary_new(); + ASSERT_OK(mongocrypt_ctx_finalize(ctx, out), ctx); + ASSERT_MONGOCRYPT_BINARY_EQUAL_BSON(TEST_FILE("./test/data/cleanup/success/encrypted-payload-range-v2.json"), + out); + mongocrypt_binary_destroy(out); + } + + ASSERT_STATE_EQUAL(mongocrypt_ctx_state(ctx), MONGOCRYPT_CTX_DONE); + + mongocrypt_ctx_destroy(ctx); + mongocrypt_destroy(crypt); } static void _test_cleanup_nonlocal_kms(_mongocrypt_tester_t *tester) { @@ -135,7 +126,8 @@ static void _test_cleanup_nonlocal_kms(_mongocrypt_tester_t *tester) { { mongocrypt_binary_t *out = mongocrypt_binary_new(); ASSERT_OK(mongocrypt_ctx_finalize(ctx, out), ctx); - ASSERT_MONGOCRYPT_BINARY_EQUAL_BSON(TEST_FILE("./test/data/cleanup/success/encrypted-payload.json"), out); + ASSERT_MONGOCRYPT_BINARY_EQUAL_BSON(TEST_FILE("./test/data/cleanup/success/encrypted-payload-range-v2.json"), + out); mongocrypt_binary_destroy(out); } @@ -269,7 +261,8 @@ static void _test_cleanup_need_kms_credentials(_mongocrypt_tester_t *tester) { { mongocrypt_binary_t *out = mongocrypt_binary_new(); ASSERT_OK(mongocrypt_ctx_finalize(ctx, out), ctx); - ASSERT_MONGOCRYPT_BINARY_EQUAL_BSON(TEST_FILE("./test/data/cleanup/success/encrypted-payload.json"), out); + ASSERT_MONGOCRYPT_BINARY_EQUAL_BSON(TEST_FILE("./test/data/cleanup/success/encrypted-payload-range-v2.json"), + out); mongocrypt_binary_destroy(out); } @@ -353,7 +346,8 @@ static void _test_cleanup_from_encrypted_field_config_map(_mongocrypt_tester_t * { mongocrypt_binary_t *out = mongocrypt_binary_new(); ASSERT_OK(mongocrypt_ctx_finalize(ctx, out), ctx); - ASSERT_MONGOCRYPT_BINARY_EQUAL_BSON(TEST_FILE("./test/data/cleanup/success/encrypted-payload.json"), out); + ASSERT_MONGOCRYPT_BINARY_EQUAL_BSON(TEST_FILE("./test/data/cleanup/success/encrypted-payload-range-v2.json"), + out); mongocrypt_binary_destroy(out); } diff --git a/test/test-mongocrypt-compact.c b/test/test-mongocrypt-compact.c index 255f709ce..f0b15790d 100644 --- a/test/test-mongocrypt-compact.c +++ b/test/test-mongocrypt-compact.c @@ -25,80 +25,19 @@ static void _test_compact_success(_mongocrypt_tester_t *tester) { strcpy(datapath, basepath); size_t nullb = strlen(basepath); for (int use_anchor_pad = 0; use_anchor_pad <= 1; use_anchor_pad++) { - for (int use_range_v2 = 0; use_range_v2 <= 1; use_range_v2++) { - datapath[nullb] = 0; - strcat(datapath, use_anchor_pad ? "anchor-pad/" : "success/"); - strcpy(cmdfile, datapath); - strcat(cmdfile, "cmd.json"); - strcpy(collfile, datapath); - strcat(collfile, "collinfo.json"); - strcpy(payloadfile, datapath); - strcat(payloadfile, use_range_v2 ? "encrypted-payload-range-v2.json" : "encrypted-payload.json"); - - mongocrypt_t *crypt; - mongocrypt_ctx_t *ctx; - - crypt = _mongocrypt_tester_mongocrypt(use_range_v2 ? TESTER_MONGOCRYPT_WITH_RANGE_V2 - : TESTER_MONGOCRYPT_DEFAULT); - ctx = mongocrypt_ctx_new(crypt); - - ASSERT_OK(mongocrypt_ctx_encrypt_init(ctx, "db", -1, TEST_FILE(cmdfile)), ctx); - - ASSERT_STATE_EQUAL(mongocrypt_ctx_state(ctx), MONGOCRYPT_CTX_NEED_MONGO_COLLINFO); - { - ASSERT_OK(mongocrypt_ctx_mongo_feed(ctx, TEST_FILE(collfile)), ctx); - ASSERT_OK(mongocrypt_ctx_mongo_done(ctx), ctx); - } - - ASSERT_STATE_EQUAL(mongocrypt_ctx_state(ctx), MONGOCRYPT_CTX_NEED_MONGO_KEYS); - { - ASSERT_OK(mongocrypt_ctx_mongo_feed(ctx, - TEST_FILE("./test/data/keys/" - "12345678123498761234123456789012-local-document.json")), - ctx); - ASSERT_OK(mongocrypt_ctx_mongo_feed(ctx, - TEST_FILE("./test/data/keys/" - "ABCDEFAB123498761234123456789012-local-document.json")), - ctx); - ASSERT_OK(mongocrypt_ctx_mongo_feed(ctx, - TEST_FILE("./test/data/keys/" - "12345678123498761234123456789013-local-document.json")), - ctx); - ASSERT_OK(mongocrypt_ctx_mongo_done(ctx), ctx); - } - - ASSERT_STATE_EQUAL(mongocrypt_ctx_state(ctx), MONGOCRYPT_CTX_READY); - { - mongocrypt_binary_t *out = mongocrypt_binary_new(); - ASSERT_OK(mongocrypt_ctx_finalize(ctx, out), ctx); - ASSERT_MONGOCRYPT_BINARY_EQUAL_BSON(TEST_FILE(payloadfile), out); - mongocrypt_binary_destroy(out); - } - - ASSERT_STATE_EQUAL(mongocrypt_ctx_state(ctx), MONGOCRYPT_CTX_DONE); - - mongocrypt_ctx_destroy(ctx); - mongocrypt_destroy(crypt); - } - } - - // Test `compactStructuredEncryptionData` without range fields omits encryptionInformation. - // This is a regression test for MONGOCRYPT-699. - for (int use_range_v2 = 0; use_range_v2 <= 1; use_range_v2++) { datapath[nullb] = 0; - strcat(datapath, "no-range/"); + strcat(datapath, use_anchor_pad ? "anchor-pad/" : "success/"); strcpy(cmdfile, datapath); strcat(cmdfile, "cmd.json"); strcpy(collfile, datapath); strcat(collfile, "collinfo.json"); strcpy(payloadfile, datapath); - strcat(payloadfile, "encrypted-payload.json"); // Expect same result regardless of range v2. + strcat(payloadfile, "encrypted-payload-range-v2.json"); mongocrypt_t *crypt; mongocrypt_ctx_t *ctx; - crypt = - _mongocrypt_tester_mongocrypt(use_range_v2 ? TESTER_MONGOCRYPT_WITH_RANGE_V2 : TESTER_MONGOCRYPT_DEFAULT); + crypt = _mongocrypt_tester_mongocrypt(TESTER_MONGOCRYPT_DEFAULT); ctx = mongocrypt_ctx_new(crypt); ASSERT_OK(mongocrypt_ctx_encrypt_init(ctx, "db", -1, TEST_FILE(cmdfile)), ctx); @@ -139,6 +78,61 @@ static void _test_compact_success(_mongocrypt_tester_t *tester) { mongocrypt_ctx_destroy(ctx); mongocrypt_destroy(crypt); } + + // Test `compactStructuredEncryptionData` without range fields omits encryptionInformation. + // This is a regression test for MONGOCRYPT-699. + datapath[nullb] = 0; + strcat(datapath, "no-range/"); + strcpy(cmdfile, datapath); + strcat(cmdfile, "cmd.json"); + strcpy(collfile, datapath); + strcat(collfile, "collinfo.json"); + strcpy(payloadfile, datapath); + strcat(payloadfile, "encrypted-payload.json"); + + mongocrypt_t *crypt; + mongocrypt_ctx_t *ctx; + + crypt = _mongocrypt_tester_mongocrypt(TESTER_MONGOCRYPT_DEFAULT); + ctx = mongocrypt_ctx_new(crypt); + + ASSERT_OK(mongocrypt_ctx_encrypt_init(ctx, "db", -1, TEST_FILE(cmdfile)), ctx); + + ASSERT_STATE_EQUAL(mongocrypt_ctx_state(ctx), MONGOCRYPT_CTX_NEED_MONGO_COLLINFO); + { + ASSERT_OK(mongocrypt_ctx_mongo_feed(ctx, TEST_FILE(collfile)), ctx); + ASSERT_OK(mongocrypt_ctx_mongo_done(ctx), ctx); + } + + ASSERT_STATE_EQUAL(mongocrypt_ctx_state(ctx), MONGOCRYPT_CTX_NEED_MONGO_KEYS); + { + ASSERT_OK(mongocrypt_ctx_mongo_feed(ctx, + TEST_FILE("./test/data/keys/" + "12345678123498761234123456789012-local-document.json")), + ctx); + ASSERT_OK(mongocrypt_ctx_mongo_feed(ctx, + TEST_FILE("./test/data/keys/" + "ABCDEFAB123498761234123456789012-local-document.json")), + ctx); + ASSERT_OK(mongocrypt_ctx_mongo_feed(ctx, + TEST_FILE("./test/data/keys/" + "12345678123498761234123456789013-local-document.json")), + ctx); + ASSERT_OK(mongocrypt_ctx_mongo_done(ctx), ctx); + } + + ASSERT_STATE_EQUAL(mongocrypt_ctx_state(ctx), MONGOCRYPT_CTX_READY); + { + mongocrypt_binary_t *out = mongocrypt_binary_new(); + ASSERT_OK(mongocrypt_ctx_finalize(ctx, out), ctx); + ASSERT_MONGOCRYPT_BINARY_EQUAL_BSON(TEST_FILE(payloadfile), out); + mongocrypt_binary_destroy(out); + } + + ASSERT_STATE_EQUAL(mongocrypt_ctx_state(ctx), MONGOCRYPT_CTX_DONE); + + mongocrypt_ctx_destroy(ctx); + mongocrypt_destroy(crypt); } static void _test_compact_nonlocal_kms(_mongocrypt_tester_t *tester) { @@ -204,7 +198,8 @@ static void _test_compact_nonlocal_kms(_mongocrypt_tester_t *tester) { { mongocrypt_binary_t *out = mongocrypt_binary_new(); ASSERT_OK(mongocrypt_ctx_finalize(ctx, out), ctx); - ASSERT_MONGOCRYPT_BINARY_EQUAL_BSON(TEST_FILE("./test/data/compact/success/encrypted-payload.json"), out); + ASSERT_MONGOCRYPT_BINARY_EQUAL_BSON(TEST_FILE("./test/data/compact/success/encrypted-payload-range-v2.json"), + out); mongocrypt_binary_destroy(out); } @@ -338,7 +333,8 @@ static void _test_compact_need_kms_credentials(_mongocrypt_tester_t *tester) { { mongocrypt_binary_t *out = mongocrypt_binary_new(); ASSERT_OK(mongocrypt_ctx_finalize(ctx, out), ctx); - ASSERT_MONGOCRYPT_BINARY_EQUAL_BSON(TEST_FILE("./test/data/compact/success/encrypted-payload.json"), out); + ASSERT_MONGOCRYPT_BINARY_EQUAL_BSON(TEST_FILE("./test/data/compact/success/encrypted-payload-range-v2.json"), + out); mongocrypt_binary_destroy(out); } @@ -422,7 +418,8 @@ static void _test_compact_from_encrypted_field_config_map(_mongocrypt_tester_t * { mongocrypt_binary_t *out = mongocrypt_binary_new(); ASSERT_OK(mongocrypt_ctx_finalize(ctx, out), ctx); - ASSERT_MONGOCRYPT_BINARY_EQUAL_BSON(TEST_FILE("./test/data/compact/success/encrypted-payload.json"), out); + ASSERT_MONGOCRYPT_BINARY_EQUAL_BSON(TEST_FILE("./test/data/compact/success/encrypted-payload-range-v2.json"), + out); mongocrypt_binary_destroy(out); } diff --git a/test/test-mongocrypt-csfle-lib.c b/test/test-mongocrypt-csfle-lib.c index 0740b9d06..4459caf51 100644 --- a/test/test-mongocrypt-csfle-lib.c +++ b/test/test-mongocrypt-csfle-lib.c @@ -180,7 +180,7 @@ static void _test_lookup_version_check(_mongocrypt_tester_t *tester) { mongocrypt_t *crypt = _mongocrypt_tester_mongocrypt(TESTER_MONGOCRYPT_WITH_CRYPT_SHARED_LIB); uint64_t version = crypt->csfle.get_version(); mongocrypt_ctx_t *ctx = mongocrypt_ctx_new(crypt); - mongocrypt_binary_t *cmd = TEST_FILE("./test/data/lookup/csfle/01-cmd.json"); + mongocrypt_binary_t *cmd = TEST_FILE("./test/data/lookup/csfle/cmd.json"); if (version >= CRYPT_SHARED_8_1) { ASSERT_OK(mongocrypt_ctx_encrypt_init(ctx, "db", -1, cmd), ctx); } else { diff --git a/test/test-mongocrypt-ctx-decrypt.c b/test/test-mongocrypt-ctx-decrypt.c index 10ef09f72..826cec641 100644 --- a/test/test-mongocrypt-ctx-decrypt.c +++ b/test/test-mongocrypt-ctx-decrypt.c @@ -888,7 +888,8 @@ static void _test_explicit_decrypt(_mongocrypt_tester_t *tester) { } // FLE2InsertUpdatePayload can be decrypted. - // Payload is only used in the QE-V1 protocol removed in MongoDB 7.0. Decrypting is currently still supported. + // Payload is only used in the QE-V1 protocol removed in MongoDB 7.0. Decrypting is still supported. + // libmongocrypt no longer produces QE-V1 payloads. Payload is copied from libmongocrypt 1.8.0. { ed_testcase tc = { .desc = "FLE2InsertUpdatePayload", @@ -899,12 +900,13 @@ static void _test_explicit_decrypt(_mongocrypt_tester_t *tester) { ed_testcase_run(&tc); } - // FLE2InsertUpdatePayload with edges can be decrypted. - // Edges are sent on payloads for range algorithm. + // FLE2InsertUpdatePayload for RangeV1 can be decrypted. Range payloads include additional fields. + // Payload is only used in the Range-V1 protocol removed in MongoDB 8.0. Decrypting is still supported. + // libmongocrypt no longer produces Range-V1 payloads. Payload is copied from libmongocrypt 1.11.0. { ed_testcase tc = { - .desc = "FLE2InsertUpdatePayload with edges", - .msg = TEST_FILE("./test/data/explicit-decrypt/FLE2InsertUpdatePayload-with-edges.json"), + .desc = "FLE2InsertUpdatePayload for RangeV1", + .msg = TEST_FILE("./test/data/explicit-decrypt/FLE2InsertUpdatePayload-RangeV1.json"), .keys_to_feed = {keyABC}, .expect = TEST_BSON(BSON_STR({"v" : 123456})), }; @@ -912,7 +914,8 @@ static void _test_explicit_decrypt(_mongocrypt_tester_t *tester) { } // FLE2UnindexedEncryptedValue can be decrypted. - // Payload is only used in the QE-V1 protocol removed in MongoDB 7.0. Decrypting is currently still supported. + // Payload is only used in the QE-V1 protocol removed in MongoDB 7.0. Decrypting is still supported. + // libmongocrypt no longer produces QE-V1 payloads. Payload is copied from libmongocrypt 1.8.0. { ed_testcase tc = { .desc = "FLE2UnindexedEncryptedValue", @@ -924,7 +927,8 @@ static void _test_explicit_decrypt(_mongocrypt_tester_t *tester) { } // FLE2IndexedEqualityEncryptedValue can be decrypted. - // Payload is only used in the QE-V1 protocol removed in MongoDB 7.0. Decrypting is currently still supported. + // Payload is only used in the QE-V1 protocol removed in MongoDB 7.0. Decrypting is still supported. + // libmongocrypt no longer produces QE-V1 payloads. Payload is copied from libmongocrypt 1.8.0. { ed_testcase tc = { .desc = "FLE2IndexedEqualityEncryptedValue", @@ -936,7 +940,8 @@ static void _test_explicit_decrypt(_mongocrypt_tester_t *tester) { } // FLE2IndexedRangeEncryptedValue can be decrypted. - // Payload is only used in the QE-V1 protocol removed in MongoDB 7.0. Decrypting is currently still supported. + // Payload is only used in the QE-V1 protocol removed in MongoDB 7.0. Decrypting is still supported. + // libmongocrypt no longer produces QE-V1 payloads. Payload is copied from libmongocrypt 1.8.0. { ed_testcase tc = { .desc = "FLE2IndexedRangeEncryptedValue", @@ -967,12 +972,24 @@ static void _test_explicit_decrypt(_mongocrypt_tester_t *tester) { ed_testcase_run(&tc); } - // FLE2InsertUpdatePayloadV2 with edges can be decrypted. - // Edges are sent on payloads for range algorithm. + // FLE2InsertUpdatePayloadV2 for RangeV1 can be decrypted. Range payloads include additional fields. + // Payload is only used in the Range-V1 protocol removed in MongoDB 8.0. Decrypting is still supported. + // libmongocrypt no longer produces Range-V1 payloads. Payload is copied from libmongocrypt 1.11.0. { ed_testcase tc = { - .desc = "FLE2InsertUpdatePayloadV2 with edges", - .msg = TEST_FILE("./test/data/explicit-decrypt/FLE2InsertUpdatePayload-with-edges-V2.json"), + .desc = "FLE2InsertUpdatePayloadV2 for RangeV1", + .msg = TEST_FILE("./test/data/explicit-decrypt/FLE2InsertUpdatePayloadV2-RangeV1.json"), + .keys_to_feed = {keyABC}, + .expect = TEST_BSON(BSON_STR({"v" : 123456})), + }; + ed_testcase_run(&tc); + } + + // FLE2InsertUpdatePayloadV2 for RangeV2 can be decrypted. Range payloads include additional fields. + { + ed_testcase tc = { + .desc = "FLE2InsertUpdatePayloadV2 for RangeV2", + .msg = TEST_FILE("./test/data/explicit-decrypt/FLE2InsertUpdatePayloadV2-RangeV2.json"), .keys_to_feed = {keyABC}, .expect = TEST_BSON(BSON_STR({"v" : 123456})), }; @@ -1002,6 +1019,7 @@ static void _test_explicit_decrypt(_mongocrypt_tester_t *tester) { } // FLE2IndexedRangeEncryptedValueV2 can be decrypted. + // Payload did not change between RangeV1 and RangeV2. { ed_testcase tc = { .desc = "FLE2IndexedRangeEncryptedValueV2", diff --git a/test/test-mongocrypt-ctx-encrypt.c b/test/test-mongocrypt-ctx-encrypt.c index f4f3a78dd..eda26e884 100644 --- a/test/test-mongocrypt-ctx-encrypt.c +++ b/test/test-mongocrypt-ctx-encrypt.c @@ -1876,7 +1876,7 @@ static void _test_encrypt_fle2_find_range_payload_decimal128_precision(_mongocry } #endif // MONGOCRYPT_HAVE_DECIMAL128_SUPPORT -static mongocrypt_t *_crypt_with_rng(_test_rng_data_source *rng_source, bool use_range_v2) { +static mongocrypt_t *_crypt_with_rng(_test_rng_data_source *rng_source) { mongocrypt_t *crypt; mongocrypt_binary_t *localkey; /* localkey_data is the KEK used to encrypt the keyMaterial @@ -1898,12 +1898,7 @@ static mongocrypt_t *_crypt_with_rng(_test_rng_data_source *rng_source, bool use crypt); mongocrypt_binary_destroy(localkey); - if (use_range_v2) { - ASSERT_OK(mongocrypt_setopt_use_range_v2(crypt), crypt); - ASSERT_OK(mongocrypt_init(crypt), crypt); - } else { - ASSERT_OK(_mongocrypt_init_for_test(crypt), crypt); - } + ASSERT_OK(mongocrypt_init(crypt), crypt); return crypt; } @@ -1922,7 +1917,6 @@ typedef struct { const char *expect_finalize_error; const char *expect_init_error; bool is_expression; - bool use_range_v2; } ee_testcase; static void ee_testcase_run(ee_testcase *tc) { @@ -1933,12 +1927,9 @@ static void ee_testcase_run(ee_testcase *tc) { if (tc->rng_data.buf.len > 0) { // Use fixed data for random number generation to produce deterministic // results. - crypt = _crypt_with_rng(&tc->rng_data, tc->use_range_v2); + crypt = _crypt_with_rng(&tc->rng_data); } else { tester_mongocrypt_flags flags = TESTER_MONGOCRYPT_DEFAULT; - if (tc->use_range_v2) { - flags |= TESTER_MONGOCRYPT_WITH_RANGE_V2; - } crypt = _mongocrypt_tester_mongocrypt(flags); } mongocrypt_ctx_t *ctx = mongocrypt_ctx_new(crypt); @@ -4114,7 +4105,7 @@ static void _test_bulkWrite(_mongocrypt_tester_t *tester) { bson_free(local_kek); } -// `_test_rangePreview_fails` tests that use of "rangePreview" errors when rangeV2 is opted-in. +// `_test_rangePreview_fails` tests that use of "rangePreview" errors. static void _test_rangePreview_fails(_mongocrypt_tester_t *tester) { // local_kek is the KEK used to encrypt the keyMaterial in ./test/data/key-document-local.json uint8_t local_kek_raw[MONGOCRYPT_KEY_LEN] = {0}; @@ -4126,7 +4117,6 @@ static void _test_rangePreview_fails(_mongocrypt_tester_t *tester) { { mongocrypt_t *crypt = mongocrypt_new(); mongocrypt_setopt_kms_providers(crypt, kms_providers); - ASSERT_OK(mongocrypt_setopt_use_range_v2(crypt), crypt); ASSERT_OK(mongocrypt_init(crypt), crypt); mongocrypt_ctx_t *ctx = mongocrypt_ctx_new(crypt); ASSERT_OK(ctx, crypt); @@ -4141,7 +4131,6 @@ static void _test_rangePreview_fails(_mongocrypt_tester_t *tester) { { mongocrypt_t *crypt = mongocrypt_new(); mongocrypt_setopt_kms_providers(crypt, kms_providers); - ASSERT_OK(mongocrypt_setopt_use_range_v2(crypt), crypt); ASSERT_OK(mongocrypt_init(crypt), crypt); mongocrypt_ctx_t *ctx = mongocrypt_ctx_new(crypt); ASSERT_OK(ctx, crypt); @@ -4156,7 +4145,6 @@ static void _test_rangePreview_fails(_mongocrypt_tester_t *tester) { { mongocrypt_t *crypt = mongocrypt_new(); mongocrypt_setopt_kms_providers(crypt, kms_providers); - ASSERT_OK(mongocrypt_setopt_use_range_v2(crypt), crypt); ASSERT_OK(mongocrypt_setopt_encrypted_field_config_map( crypt, TEST_FILE("./test/data/fle2-insert-range/int32/encrypted-field-map.json")), // Uses 'rangePreview' @@ -4227,7 +4215,6 @@ static void autoencryption_test_run(autoencryption_test *aet) { } ASSERT_OK(mongocrypt_setopt_encrypted_field_config_map(crypt, aet->encrypted_field_map), crypt); - ASSERT_OK(mongocrypt_setopt_use_range_v2(crypt), crypt); ASSERT_OK(mongocrypt_init(crypt), crypt); } @@ -4357,7 +4344,6 @@ static void _test_range_sends_cryptoParams(_mongocrypt_tester_t *tester) { tc.msg = TEST_BSON("{'v': 123456}"); tc.keys_to_feed[0] = key123; tc.expect = TEST_FILE("./test/data/range-sends-cryptoParams/explicit-insert-int32/expected.json"); - tc.use_range_v2 = true; // Use RangeV2 protocol. ee_testcase_run(&tc); // Check the parameters are present in the final payload. { @@ -4382,7 +4368,6 @@ static void _test_range_sends_cryptoParams(_mongocrypt_tester_t *tester) { tc.msg = TEST_BSON("{'v': 123456}"); tc.keys_to_feed[0] = key123; tc.expect = TEST_FILE("./test/data/range-sends-cryptoParams/explicit-insert-int32-defaults/expected.json"); - tc.use_range_v2 = true; // Use RangeV2 protocol. ee_testcase_run(&tc); // Check the parameters are present in the final payload. { @@ -4408,7 +4393,6 @@ static void _test_range_sends_cryptoParams(_mongocrypt_tester_t *tester) { tc.msg = TEST_BSON("{'v': 123456.0}"); tc.keys_to_feed[0] = key123; tc.expect = TEST_FILE("./test/data/range-sends-cryptoParams/explicit-insert-double/expected.json"); - tc.use_range_v2 = true; // Use RangeV2 protocol. ee_testcase_run(&tc); // Check the parameters are present in the final payload. { @@ -4433,7 +4417,6 @@ static void _test_range_sends_cryptoParams(_mongocrypt_tester_t *tester) { tc.msg = TEST_FILE("./test/data/range-sends-cryptoParams/explicit-find-int32-defaults/to-encrypt.json"); tc.keys_to_feed[0] = key123; tc.expect = TEST_FILE("./test/data/range-sends-cryptoParams/explicit-find-int32-defaults/expected.json"); - tc.use_range_v2 = true; // Use RangeV2 protocol. ee_testcase_run(&tc); // Check the parameters are present in the final payload. { @@ -4458,7 +4441,6 @@ static void _test_range_sends_cryptoParams(_mongocrypt_tester_t *tester) { tc.msg = TEST_FILE("./test/data/range-sends-cryptoParams/explicit-find-int32/to-encrypt.json"); tc.keys_to_feed[0] = key123; tc.expect = TEST_FILE("./test/data/range-sends-cryptoParams/explicit-find-int32/expected.json"); - tc.use_range_v2 = true; // Use RangeV2 protocol. ee_testcase_run(&tc); // Check the parameters are present in the final payload. { diff --git a/test/test-mongocrypt-ctx-setopt.c b/test/test-mongocrypt-ctx-setopt.c index 4b3594629..4248f2257 100644 --- a/test/test-mongocrypt-ctx-setopt.c +++ b/test/test-mongocrypt-ctx-setopt.c @@ -848,7 +848,7 @@ static void _test_setopt_for_explicit_encrypt(_mongocrypt_tester_t *tester) { { // Create a crypt with rangeV2 enabled. mongocrypt_destroy(crypt); - crypt = _mongocrypt_tester_mongocrypt(TESTER_MONGOCRYPT_DEFAULT | TESTER_MONGOCRYPT_WITH_RANGE_V2); + crypt = _mongocrypt_tester_mongocrypt(TESTER_MONGOCRYPT_DEFAULT | TESTER_MONGOCRYPT_DEFAULT); REFRESH_CTX; /* Set key ID to get past the 'either key id or key alt name required' * error */ @@ -904,7 +904,7 @@ static void _test_setopt_for_explicit_encrypt(_mongocrypt_tester_t *tester) { // Can't use "rangePreview" algorithm or query type with range V2. { mongocrypt_destroy(crypt); - crypt = _mongocrypt_tester_mongocrypt(TESTER_MONGOCRYPT_WITH_RANGE_V2); + crypt = _mongocrypt_tester_mongocrypt(TESTER_MONGOCRYPT_DEFAULT); REFRESH_CTX; ASSERT_KEY_ID_OK(uuid); ASSERT_FAILS(mongocrypt_ctx_setopt_algorithm(ctx, MONGOCRYPT_ALGORITHM_RANGEPREVIEW_DEPRECATED_STR, -1), @@ -912,7 +912,7 @@ static void _test_setopt_for_explicit_encrypt(_mongocrypt_tester_t *tester) { "'rangePreview' is deprecated"); mongocrypt_destroy(crypt); - crypt = _mongocrypt_tester_mongocrypt(TESTER_MONGOCRYPT_WITH_RANGE_V2); + crypt = _mongocrypt_tester_mongocrypt(TESTER_MONGOCRYPT_DEFAULT); REFRESH_CTX; ASSERT_KEY_ID_OK(uuid); ASSERT_FAILS(mongocrypt_ctx_setopt_query_type(ctx, MONGOCRYPT_QUERY_TYPE_RANGEPREVIEW_DEPRECATED_STR, -1), @@ -920,58 +920,12 @@ static void _test_setopt_for_explicit_encrypt(_mongocrypt_tester_t *tester) { "'rangePreview' is deprecated"); } - /* Error if query type == "rangePreview" and algorithm == "range" for range V1. */ - // Explanation: Algorithm "rangePreview" accepts both query type "rangePreview" (for compatibility) and "range" (new - // behavior), but algorithm "range" only accepts query type "range". This is because if we are using the new - // algorithm type, we don't need to support the deprecated name for compatibility. + /* If query type == algorithm == "range", succeeds. */ { REFRESH; ASSERT_KEY_ID_OK(uuid); ASSERT_OK(mongocrypt_ctx_setopt_algorithm_range(ctx, rangeopts), ctx); ASSERT_ALGORITHM_OK(MONGOCRYPT_ALGORITHM_RANGE_STR, -1); - ASSERT_QUERY_TYPE_OK(MONGOCRYPT_QUERY_TYPE_RANGEPREVIEW_DEPRECATED_STR, -1); - ASSERT_OK(mongocrypt_ctx_setopt_contention_factor(ctx, 0), ctx); - ASSERT_EX_ENCRYPT_EXPRESSION_INIT_FAILS(bson, "must match index_type"); - } - - /* If query type == "range" and algorithm == "rangePreview", succeeds for range V1 */ - { - REFRESH; - ASSERT_KEY_ID_OK(uuid); - ASSERT_OK(mongocrypt_ctx_setopt_algorithm_range(ctx, rangeopts), ctx); - ASSERT_ALGORITHM_OK(MONGOCRYPT_ALGORITHM_RANGEPREVIEW_DEPRECATED_STR, -1); - ASSERT_QUERY_TYPE_OK(MONGOCRYPT_QUERY_TYPE_RANGE_STR, -1); - ASSERT_OK(mongocrypt_ctx_setopt_contention_factor(ctx, 0), ctx); - ASSERT_EX_ENCRYPT_EXPRESSION_INIT_OK(bson); - } - - /* If query type == algorithm == "rangePreview", succeeds for range V1. */ - { - REFRESH; - ASSERT_KEY_ID_OK(uuid); - ASSERT_OK(mongocrypt_ctx_setopt_algorithm_range(ctx, rangeopts), ctx); - ASSERT_ALGORITHM_OK(MONGOCRYPT_ALGORITHM_RANGEPREVIEW_DEPRECATED_STR, -1); - ASSERT_QUERY_TYPE_OK(MONGOCRYPT_QUERY_TYPE_RANGEPREVIEW_DEPRECATED_STR, -1); - ASSERT_OK(mongocrypt_ctx_setopt_contention_factor(ctx, 0), ctx); - ASSERT_EX_ENCRYPT_EXPRESSION_INIT_OK(bson); - } - - /* If query type == algorithm == "range", succeeds for both V2 and V1. */ - { - REFRESH; - ASSERT_KEY_ID_OK(uuid); - ASSERT_OK(mongocrypt_ctx_setopt_algorithm_range(ctx, rangeopts), ctx); - ASSERT_ALGORITHM_OK(MONGOCRYPT_ALGORITHM_RANGE_STR, -1); - ASSERT_QUERY_TYPE_OK(MONGOCRYPT_QUERY_TYPE_RANGE_STR, -1); - ASSERT_OK(mongocrypt_ctx_setopt_contention_factor(ctx, 0), ctx); - ASSERT_EX_ENCRYPT_EXPRESSION_INIT_OK(bson); - - mongocrypt_destroy(crypt); - crypt = _mongocrypt_tester_mongocrypt(TESTER_MONGOCRYPT_WITH_RANGE_V2); - REFRESH_CTX; - ASSERT_KEY_ID_OK(uuid); - ASSERT_OK(mongocrypt_ctx_setopt_algorithm_range(ctx, rangeopts), ctx); - ASSERT_ALGORITHM_OK(MONGOCRYPT_ALGORITHM_RANGE_STR, -1); ASSERT_QUERY_TYPE_OK(MONGOCRYPT_QUERY_TYPE_RANGE_STR, -1); ASSERT_OK(mongocrypt_ctx_setopt_contention_factor(ctx, 0), ctx); ASSERT_EX_ENCRYPT_EXPRESSION_INIT_OK(bson); diff --git a/test/test-mongocrypt-marking.c b/test/test-mongocrypt-marking.c index 0a1959c5b..05ae11098 100644 --- a/test/test-mongocrypt-marking.c +++ b/test/test-mongocrypt-marking.c @@ -198,36 +198,9 @@ static void test_mc_get_mincover_from_FLE2RangeFindSpec(_mongocrypt_tester_t *te mc_optional_int64_t sparsity; const char *expectedError; const char *expectedErrorAtParseTime; - bool disableRangeV2; } testcase_t; testcase_t tests[] = { - {.description = "Range V2 disabled w/ trim factor fails", - .findSpecJSON = RAW_STRING({ - "lowerBound" : {"$numberInt" : "7"}, - "lbIncluded" : true, - "upperBound" : {"$numberInt" : "32"}, - "ubIncluded" : true, - "indexMin" : {"$numberInt" : "0"}, - "indexMax" : {"$numberInt" : "32"}, - "trimFactor" : 0 - }), - .disableRangeV2 = true, - .expectedErrorAtParseTime = "'trimFactor' is not supported for QE range v1"}, - {.description = "Range V2 disabled w/ no trim factor succeeds", - .findSpecJSON = RAW_STRING({ - "lowerBound" : {"$numberInt" : "7"}, - "lbIncluded" : true, - "upperBound" : {"$numberInt" : "32"}, - "ubIncluded" : true, - "indexMin" : {"$numberInt" : "0"}, - "indexMax" : {"$numberInt" : "32"} - }), - .disableRangeV2 = true, - .expectedMinCover = "000111\n" - "001\n" - "01\n" - "100000\n"}, {.description = "Int32 Bounds included", .findSpecJSON = RAW_STRING({ "lowerBound" : {"$numberInt" : "7"}, @@ -875,7 +848,7 @@ static void test_mc_get_mincover_from_FLE2RangeFindSpec(_mongocrypt_tester_t *te ASSERT(bson_iter_init_find(&findSpecIter, findSpecDoc, "findSpec")); mc_FLE2RangeFindSpec_t findSpec; - bool res = mc_FLE2RangeFindSpec_parse(&findSpec, &findSpecIter, !test->disableRangeV2, status); + bool res = mc_FLE2RangeFindSpec_parse(&findSpec, &findSpecIter, status); if (test->expectedErrorAtParseTime) { ASSERT(!res); ASSERT_STATUS_CONTAINS(status, test->expectedErrorAtParseTime); @@ -889,8 +862,7 @@ static void test_mc_get_mincover_from_FLE2RangeFindSpec(_mongocrypt_tester_t *te sparsity = (size_t)test->sparsity.value; } - const bool use_range_v2 = !test->disableRangeV2; - mc_mincover_t *mc = mc_get_mincover_from_FLE2RangeFindSpec(&findSpec, sparsity, status, use_range_v2); + mc_mincover_t *mc = mc_get_mincover_from_FLE2RangeFindSpec(&findSpec, sparsity, status); if (test->expectedError) { ASSERT(NULL == mc); @@ -1089,11 +1061,9 @@ static iupv2_fields_common validate_iupv2_common(bson_t *iup_bson) { // Assert that the encryptedTokens fields in V2 insert/update ciphertext matches our expectations. Specifically, checks // that the length of these fields are what we expect, and that the "isLeaf" token is appended when using range V2. -static void validate_range_ciphertext(_mongocrypt_ciphertext_t *ciphertext, - mongocrypt_t *crypt, - bool useRangeV2, - uint32_t expectedEdges) { - uint32_t expectedPLength = useRangeV2 ? (MONGOCRYPT_HMAC_SHA256_LEN + 1) : MONGOCRYPT_HMAC_SHA256_LEN; +static void +validate_range_ciphertext(_mongocrypt_ciphertext_t *ciphertext, mongocrypt_t *crypt, uint32_t expectedEdges) { + uint32_t expectedPLength = (MONGOCRYPT_HMAC_SHA256_LEN + 1); bson_t ciphertextBSON; bson_iter_t iter; @@ -1109,14 +1079,10 @@ static void validate_range_ciphertext(_mongocrypt_ciphertext_t *ciphertext, ASSERT(res.p.len == 16 + expectedPLength); // validate crypto of 'p' - if (useRangeV2) { - uint8_t is_leaf = 255; - validate_encrypted_token(crypt, &res.p, &res.s, true, &is_leaf); - // isLeaf byte should be 0. - ASSERT(is_leaf == 0); - } else { - validate_encrypted_token(crypt, &res.p, &res.s, false, NULL); - } + uint8_t is_leaf = 255; + validate_encrypted_token(crypt, &res.p, &res.s, true, &is_leaf); + // isLeaf byte should be 0. + ASSERT(is_leaf == 0); // 'g' field should be available ASSERT(bson_iter_init_find(&iter, &ciphertextBSON, "g")); @@ -1150,24 +1116,18 @@ static void validate_range_ciphertext(_mongocrypt_ciphertext_t *ciphertext, ASSERT_CMPUINT32(encrypted_token_bin.len, ==, 16 + expectedPLength); ASSERT_CMPUINT32(esc_token_bin.len, ==, MONGOCRYPT_HMAC_SHA256_LEN); - if (useRangeV2) { - uint8_t is_leaf = 255; - validate_encrypted_token(crypt, &encrypted_token_bin, &esc_token_bin, true, &is_leaf); - // isLeaf byte should be either 0 or 1. - if (is_leaf == 1) { - leaf_count++; - } else { - ASSERT_CMPUINT8(is_leaf, ==, 0) - } + uint8_t is_leaf = 255; + validate_encrypted_token(crypt, &encrypted_token_bin, &esc_token_bin, true, &is_leaf); + // isLeaf byte should be either 0 or 1. + if (is_leaf == 1) { + leaf_count++; } else { - validate_encrypted_token(crypt, &encrypted_token_bin, &esc_token_bin, false, NULL); + ASSERT_CMPUINT8(is_leaf, ==, 0) } } ASSERT_CMPSIZE_T(g_count, ==, expectedEdges); - if (useRangeV2) { - // There should be exactly one leaf in any insert call. - ASSERT_CMPSIZE_T(leaf_count, ==, 1); - } + // There should be exactly one leaf in any insert call. + ASSERT_CMPSIZE_T(leaf_count, ==, 1); bson_destroy(&ciphertextBSON); } @@ -1177,25 +1137,7 @@ static void test_mc_marking_to_ciphertext_fle2_range(_mongocrypt_tester_t *teste return; } - // Test that whether range V2 is enabled or disabled, the ciphertext matches our expectations. - { - const char markingJSON[] = RAW_STRING({ - 't' : 1, - 'a' : 3, - 'v' : {'min' : 0, 'max' : 7, 'v' : 5}, - 's' : {'$numberLong' : '1'}, - 'cm' : {'$numberLong' : '1'} - }); - _mongocrypt_ciphertext_t ciphertext; - _mongocrypt_ciphertext_init(&ciphertext); - mongocrypt_t *crypt = _mongocrypt_tester_mongocrypt(TESTER_MONGOCRYPT_DEFAULT); - - get_ciphertext_from_marking_json(tester, crypt, markingJSON, &ciphertext); - - validate_range_ciphertext(&ciphertext, crypt, false, 4); - _mongocrypt_ciphertext_cleanup(&ciphertext); - mongocrypt_destroy(crypt); - } + // Test that ciphertext matches our expectations. { const char markingJSON[] = RAW_STRING({ 't' : 1, @@ -1206,11 +1148,11 @@ static void test_mc_marking_to_ciphertext_fle2_range(_mongocrypt_tester_t *teste }); _mongocrypt_ciphertext_t ciphertext; _mongocrypt_ciphertext_init(&ciphertext); - mongocrypt_t *crypt = _mongocrypt_tester_mongocrypt(TESTER_MONGOCRYPT_WITH_RANGE_V2); + mongocrypt_t *crypt = _mongocrypt_tester_mongocrypt(TESTER_MONGOCRYPT_DEFAULT); get_ciphertext_from_marking_json(tester, crypt, markingJSON, &ciphertext); - validate_range_ciphertext(&ciphertext, crypt, true, 4); + validate_range_ciphertext(&ciphertext, crypt, 4); _mongocrypt_ciphertext_cleanup(&ciphertext); mongocrypt_destroy(crypt); diff --git a/test/test-mongocrypt.c b/test/test-mongocrypt.c index 0537991f6..3c1b22a43 100644 --- a/test/test-mongocrypt.c +++ b/test/test-mongocrypt.c @@ -569,11 +569,6 @@ mongocrypt_t *_mongocrypt_tester_mongocrypt(tester_mongocrypt_flags flags) { if (flags & TESTER_MONGOCRYPT_WITH_CRYPT_SHARED_LIB) { mongocrypt_setopt_append_crypt_shared_lib_search_path(crypt, "$ORIGIN"); } - if (flags & TESTER_MONGOCRYPT_WITH_RANGE_V2) { - ASSERT(mongocrypt_setopt_use_range_v2(crypt)); - } else { - crypt->opts.use_range_v2 = false; - } if (flags & TESTER_MONGOCRYPT_WITH_SHORT_CACHE) { ASSERT(mongocrypt_setopt_key_expiration(crypt, 1)); } @@ -593,10 +588,6 @@ mongocrypt_t *_mongocrypt_tester_mongocrypt(tester_mongocrypt_flags flags) { bool _mongocrypt_init_for_test(mongocrypt_t *crypt) { BSON_ASSERT_PARAM(crypt); - // Even if the ENABLE_USE_RANGE_V2 compile flag is on, we should have range V2 off by default for testing, as many - // existing tests are based around range V2 being disabled. To use range V2, use the TESTER_MONGOCRYPT_WITH_RANGE_V2 - // flag with the above function. - crypt->opts.use_range_v2 = false; return mongocrypt_init(crypt); } diff --git a/test/test-mongocrypt.h b/test/test-mongocrypt.h index 840da58b6..6e632d7e8 100644 --- a/test/test-mongocrypt.h +++ b/test/test-mongocrypt.h @@ -40,8 +40,6 @@ typedef enum tester_mongocrypt_flags { /// crypt_shared library must be present in the same directory as the test /// executable. TESTER_MONGOCRYPT_WITH_CRYPT_SHARED_LIB = 1 << 0, - /// Enable range V2 - TESTER_MONGOCRYPT_WITH_RANGE_V2 = 1 << 2, /// Short cache expiration TESTER_MONGOCRYPT_WITH_SHORT_CACHE = 1 << 3, /// Do not call `mongocrypt_init` yet to allow for further configuration of the resulting `mongocrypt_t`.