Skip to content

Conversation

@kevinAlbs
Copy link
Contributor

@kevinAlbs kevinAlbs commented Mar 4, 2025

Summary

Remove code for supporting the Range-V1 protocol.

  • Update Range-V1 tests to use Range-V2.
  • Remove implementation cases for Range-V1.
  • Test that both Range-V1 and Range-V2 insert payloads can be decrypted.

The diff is large. Most changes are mechanical removals of use_range_v2 arguments, and are done on separate commits to ease review.

Background & Motivation

MongoDB 8.0 dropped Range-V1 and added stable support of Range-V2 (SPM-3583). libmongocrypt enabled the Range-V2 protocol in MONGOCRYPT-661 and did not provide public API to disable. libmongocrypt 1.11.0+ is only expected to produce Range-V2 payloads.

Relation to QE-V1/QE-V2

#934 relatedly removed QE-V1 code from libmongocrypt. The QE-V1 protocol was removed in MongoDB 7.0. QE-V1 could produce Range-V1 payloads. QE-V2 was enabled in libmongocrypt 1.8.0, before Range-V2 was enabled in 1.11.0. Therefore:

  • QE-V1 could produce Range-V1 payloads.
  • QE-V2 could produce Range-V1 or Range-V2 payloads.

This PR adds decryption tests with older payloads to ensure decryption is preserved. Supporting decryption may not be strictly needed since QE-V1 and Range-V1 were documented as experimental. But supportind decryption does not appear to require much added implementation.

Test payloads

Test payloads are updated from V1 to V2 as needed. dump_payload was used to identify payloads:

$ dump_payload.py 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
blob_subtype: 11 (FLE2InsertUpdatePayloadV2)
[...]

kevinAlbs added 30 commits March 3, 2025 15:22
… `concatenate_leaf`

RangeV2 concatenates the leaf. Text search does not.
@kevinAlbs kevinAlbs changed the title MONGOCRYPT-711 remove implementation for RangeV1 protocol MONGOCRYPT-711 remove implementation for Range-V1 Mar 4, 2025
@kevinAlbs kevinAlbs marked this pull request as ready for review March 4, 2025 15:15
@kevinAlbs kevinAlbs requested a review from mdb-ad March 4, 2025 15:15
@kevinAlbs kevinAlbs merged commit dd787b5 into mongodb:master Mar 5, 2025
45 of 47 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants