Skip to content

Commit 8aced03

Browse files
CDRIVER-4584 support Queryable Encryption v2 (#1228)
* add setfle2parameter.py workaround To enable the featureFlagFLE2ProtocolVersion2 until it is enabled by default in SERVER-69563 * remove `fle2-*` tests * add `fle2v2-*` tests Syncs to specifications commit 64deb2837a2355f6002775c49b9b6c50c9dc560f * call `mongocrypt_setopt_fle2v2` to enable QEv2 * format test-mongoc-client-side-encryption.c * skip QE prose tests on server < 7.0.0 and serverless remove unnecessary wire version checks server version is now checked in the function call * use libmongocrypt 1.8.0-alpha0 * require libmongocrypt 1.8.0 * use macro for skips * Simplify error messages Co-authored-by: Ezra Chung <[email protected]> * check for error on mongocrypt_setopt_fle2v2 * use skip functions for consistency * remove extra whitespace * Revert "add setfle2parameter.py workaround" This reverts commit aa82b19. --------- Co-authored-by: Ezra Chung <[email protected]>
1 parent 845c1c5 commit 8aced03

File tree

64 files changed

+314
-729
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

64 files changed

+314
-729
lines changed

.evergreen/scripts/compile-libmongocrypt.sh

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,7 @@ compile_libmongocrypt() {
55
declare -r mongoc_dir="${2:?}"
66
declare -r install_dir="${3:?}"
77

8-
git clone -q --depth=1 https://github.com/mongodb/libmongocrypt --branch 1.7.0 || return
9-
10-
# TODO: remove once latest libmongocrypt release contains commit c6f65fe6.
11-
{
12-
pushd libmongocrypt || return
13-
echo "1.7.0+c6f65fe6" >|VERSION_CURRENT
14-
git fetch -q origin master || return
15-
git checkout -q c6f65fe6 || return # Allows -DENABLE_MONGOC=OFF.
16-
popd || return # libmongocrypt
17-
}
8+
git clone -q --depth=1 https://github.com/mongodb/libmongocrypt --branch 1.8.0-alpha0 || return
189

1910
declare -a crypt_cmake_flags=(
2011
"-DMONGOCRYPT_MONGOC_DIR=${mongoc_dir}"

src/libmongoc/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -441,10 +441,10 @@ elseif (NOT ENABLE_CLIENT_SIDE_ENCRYPTION STREQUAL OFF)
441441
find_package (mongocrypt QUIET)
442442
endif ()
443443

444-
if (mongocrypt_FOUND AND "${mongocrypt_VERSION}" VERSION_LESS 1.7.0)
444+
if (mongocrypt_FOUND AND "${mongocrypt_VERSION}" VERSION_LESS 1.8.0)
445445
message ("-- libmongocrypt found at ${mongocrypt_DIR}")
446446
message ("-- libmongocrypt version ${mongocrypt_VERSION} found")
447-
message ("-- libmongocrypt version 1.7.0 is required to enable Client-Side Field Level Encryption Support.")
447+
message ("-- libmongocrypt version 1.8.0 is required to enable Client-Side Field Level Encryption Support.")
448448
set (REQUIRED_MONGOCRYPT_VERSION_FOUND OFF)
449449
elseif (mongocrypt_FOUND)
450450
set (REQUIRED_MONGOCRYPT_VERSION_FOUND ON)

src/libmongoc/src/mongoc/mongoc-crypt.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1326,6 +1326,12 @@ _mongoc_crypt_new (const bson_t *kms_providers,
13261326
crypt = bson_malloc0 (sizeof (*crypt));
13271327
crypt->handle = mongocrypt_new ();
13281328

1329+
// Enable the QEv2 protocol.
1330+
if (!mongocrypt_setopt_fle2v2 (crypt->handle, true)) {
1331+
_crypt_check_error (crypt->handle, error, true);
1332+
goto fail;
1333+
}
1334+
13291335
// Stash away a copy of the user's kmsProviders in case we need to lazily
13301336
// load credentials.
13311337
bson_copy_to (kms_providers, &crypt->kms_providers);

src/libmongoc/tests/json/client_side_encryption/legacy/fle2-BypassQueryAnalysis.json renamed to src/libmongoc/tests/json/client_side_encryption/legacy/fle2v2-BypassQueryAnalysis.json

Lines changed: 8 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
{
22
"runOn": [
33
{
4-
"minServerVersion": "6.0.0",
4+
"minServerVersion": "7.0.0",
5+
"serverless": "forbid",
56
"topology": [
67
"replicaset",
7-
"sharded"
8+
"sharded",
9+
"load-balanced"
810
]
911
}
1012
],
@@ -74,36 +76,6 @@
7476
"masterKey": {
7577
"provider": "local"
7678
}
77-
},
78-
{
79-
"_id": {
80-
"$binary": {
81-
"base64": "q83vqxI0mHYSNBI0VniQEg==",
82-
"subType": "04"
83-
}
84-
},
85-
"keyMaterial": {
86-
"$binary": {
87-
"base64": "HBk9BWihXExNDvTp1lUxOuxuZK2Pe2ZdVdlsxPEBkiO1bS4mG5NNDsQ7zVxJAH8BtdOYp72Ku4Y3nwc0BUpIKsvAKX4eYXtlhv5zUQxWdeNFhg9qK7qb8nqhnnLeT0f25jFSqzWJoT379hfwDeu0bebJHr35QrJ8myZdPMTEDYF08QYQ48ShRBli0S+QzBHHAQiM2iJNr4svg2WR8JSeWQ==",
88-
"subType": "00"
89-
}
90-
},
91-
"creationDate": {
92-
"$date": {
93-
"$numberLong": "1648914851981"
94-
}
95-
},
96-
"updateDate": {
97-
"$date": {
98-
"$numberLong": "1648914851981"
99-
}
100-
},
101-
"status": {
102-
"$numberInt": "0"
103-
},
104-
"masterKey": {
105-
"provider": "local"
106-
}
10779
}
10880
],
10981
"tests": [
@@ -132,7 +104,7 @@
132104
"_id": 1,
133105
"encryptedIndexed": {
134106
"$binary": {
135-
"base64": "BHEBAAAFZAAgAAAAAHb62aV7+mqmaGcotPLdG3KP7S8diFwWMLM/5rYtqLrEBXMAIAAAAAAVJ6OWHRv3OtCozHpt3ZzfBhaxZirLv3B+G8PuaaO4EgVjACAAAAAAsZXWOWA+UiCBbrJNB6bHflB/cn7pWSvwWN2jw4FPeIUFcABQAAAAAMdD1nV2nqeI1eXEQNskDflCy8I7/HvvqDKJ6XxjhrPQWdLqjz+8GosGUsB7A8ee/uG9/guENuL25XD+Fxxkv1LLXtavHOlLF7iW0u9yabqqBXUAEAAAAAQSNFZ4EjSYdhI0EjRWeJASEHQAAgAAAAV2AE0AAAAAq83vqxI0mHYSNBI0VniQEkzZZBBDgeZh+h+gXEmOrSFtVvkUcnHWj/rfPW7iJ0G3UJ8zpuBmUM/VjOMJCY4+eDqdTiPIwX+/vNXegc8FZQAgAAAAAOuac/eRLYakKX6B0vZ1r3QodOQFfjqJD+xlGiPu4/PsAA==",
107+
"base64": "C18BAAAFZAAgAAAAANnt+eLTkv4GdDPl8IAfJOvTzArOgFJQ2S/DcLza4W0DBXMAIAAAAAD2u+omZme3P2gBPehMQyQHQ153tPN1+z7bksYA9jKTpAVwADAAAAAAUnCOQqIvmR65YKyYnsiVfVrg9hwUVO3RhhKExo3RWOzgaS0QdsBL5xKFS0JhZSoWBXUAEAAAAAQSNFZ4EjSYdhI0EjRWeJASEHQAAgAAAAV2AFAAAAAAEjRWeBI0mHYSNBI0VniQEpQbp/ZJpWBKeDtKLiXb0P2E9wvc0g3f373jnYQYlJquOrlPOoEy3ngsHPJuSUijvWDsrQzqYa349K7G/66qaXEFZQAgAAAAAOuac/eRLYakKX6B0vZ1r3QodOQFfjqJD+xlGiPu4/PsBWwAIAAAAACkm0o9bj6j0HuADKc0svbqO2UHj6GrlNdF6yKNxh63xRJrAAAAAAAAAAAAAA==",
136108
"subType": "06"
137109
}
138110
}
@@ -149,7 +121,7 @@
149121
"result": [
150122
{
151123
"_id": 1,
152-
"encryptedIndexed": "value123"
124+
"encryptedIndexed": "123"
153125
}
154126
]
155127
}
@@ -175,7 +147,7 @@
175147
"_id": 1,
176148
"encryptedIndexed": {
177149
"$binary": {
178-
"base64": "BHEBAAAFZAAgAAAAAHb62aV7+mqmaGcotPLdG3KP7S8diFwWMLM/5rYtqLrEBXMAIAAAAAAVJ6OWHRv3OtCozHpt3ZzfBhaxZirLv3B+G8PuaaO4EgVjACAAAAAAsZXWOWA+UiCBbrJNB6bHflB/cn7pWSvwWN2jw4FPeIUFcABQAAAAAMdD1nV2nqeI1eXEQNskDflCy8I7/HvvqDKJ6XxjhrPQWdLqjz+8GosGUsB7A8ee/uG9/guENuL25XD+Fxxkv1LLXtavHOlLF7iW0u9yabqqBXUAEAAAAAQSNFZ4EjSYdhI0EjRWeJASEHQAAgAAAAV2AE0AAAAAq83vqxI0mHYSNBI0VniQEkzZZBBDgeZh+h+gXEmOrSFtVvkUcnHWj/rfPW7iJ0G3UJ8zpuBmUM/VjOMJCY4+eDqdTiPIwX+/vNXegc8FZQAgAAAAAOuac/eRLYakKX6B0vZ1r3QodOQFfjqJD+xlGiPu4/PsAA==",
150+
"base64": "C18BAAAFZAAgAAAAANnt+eLTkv4GdDPl8IAfJOvTzArOgFJQ2S/DcLza4W0DBXMAIAAAAAD2u+omZme3P2gBPehMQyQHQ153tPN1+z7bksYA9jKTpAVwADAAAAAAUnCOQqIvmR65YKyYnsiVfVrg9hwUVO3RhhKExo3RWOzgaS0QdsBL5xKFS0JhZSoWBXUAEAAAAAQSNFZ4EjSYdhI0EjRWeJASEHQAAgAAAAV2AFAAAAAAEjRWeBI0mHYSNBI0VniQEpQbp/ZJpWBKeDtKLiXb0P2E9wvc0g3f373jnYQYlJquOrlPOoEy3ngsHPJuSUijvWDsrQzqYa349K7G/66qaXEFZQAgAAAAAOuac/eRLYakKX6B0vZ1r3QodOQFfjqJD+xlGiPu4/PsBWwAIAAAAACkm0o9bj6j0HuADKc0svbqO2UHj6GrlNdF6yKNxh63xRJrAAAAAAAAAAAAAA==",
179151
"subType": "06"
180152
}
181153
}
@@ -229,39 +201,6 @@
229201
},
230202
"command_name": "find"
231203
}
232-
},
233-
{
234-
"command_started_event": {
235-
"command": {
236-
"find": "datakeys",
237-
"filter": {
238-
"$or": [
239-
{
240-
"_id": {
241-
"$in": [
242-
{
243-
"$binary": {
244-
"base64": "q83vqxI0mHYSNBI0VniQEg==",
245-
"subType": "04"
246-
}
247-
}
248-
]
249-
}
250-
},
251-
{
252-
"keyAltNames": {
253-
"$in": []
254-
}
255-
}
256-
]
257-
},
258-
"$db": "keyvault",
259-
"readConcern": {
260-
"level": "majority"
261-
}
262-
},
263-
"command_name": "find"
264-
}
265204
}
266205
],
267206
"outcome": {
@@ -275,7 +214,7 @@
275214
"__safeContent__": [
276215
{
277216
"$binary": {
278-
"base64": "ThpoKfQ8AkOzkFfNC1+9PF0pY2nIzfXvRdxQgjkNbBw=",
217+
"base64": "31eCYlbQoVboc5zwC8IoyJVSkag9PxREka8dkmbXJeY=",
279218
"subType": "00"
280219
}
281220
}

src/libmongoc/tests/json/client_side_encryption/legacy/fle2-Compact.json renamed to src/libmongoc/tests/json/client_side_encryption/legacy/fle2v2-Compact.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
{
22
"runOn": [
33
{
4-
"minServerVersion": "6.0.0",
4+
"minServerVersion": "7.0.0",
5+
"serverless": "forbid",
56
"topology": [
67
"replicaset",
7-
"sharded"
8+
"sharded",
9+
"load-balanced"
810
]
911
}
1012
],

src/libmongoc/tests/json/client_side_encryption/legacy/fle2-CreateCollection.json renamed to src/libmongoc/tests/json/client_side_encryption/legacy/fle2v2-CreateCollection.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
{
22
"runOn": [
33
{
4-
"minServerVersion": "6.0.0",
4+
"minServerVersion": "7.0.0",
5+
"serverless": "forbid",
56
"topology": [
67
"replicaset",
78
"sharded",

src/libmongoc/tests/json/client_side_encryption/legacy/fle2-DecryptExistingData.json renamed to src/libmongoc/tests/json/client_side_encryption/legacy/fle2v2-DecryptExistingData.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
{
22
"runOn": [
33
{
4-
"minServerVersion": "6.0.0",
4+
"minServerVersion": "7.0.0",
5+
"serverless": "forbid",
56
"topology": [
67
"replicaset",
7-
"sharded"
8+
"sharded",
9+
"load-balanced"
810
]
911
}
1012
],

src/libmongoc/tests/json/client_side_encryption/legacy/fle2-Delete.json renamed to src/libmongoc/tests/json/client_side_encryption/legacy/fle2v2-Delete.json

Lines changed: 5 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
{
22
"runOn": [
33
{
4-
"minServerVersion": "6.0.0",
4+
"minServerVersion": "7.0.0",
5+
"serverless": "forbid",
56
"topology": [
67
"replicaset",
7-
"sharded"
8+
"sharded",
9+
"load-balanced"
810
]
911
}
1012
],
@@ -225,7 +227,7 @@
225227
"encryptedIndexed": {
226228
"$eq": {
227229
"$binary": {
228-
"base64": "BbEAAAAFZAAgAAAAAPtVteJQAlgb2YMa/+7YWH00sbQPyt7L6Rb8OwBdMmL2BXMAIAAAAAAd44hgVKnEnTFlwNVC14oyc9OZOTspeymusqkRQj57nAVjACAAAAAA19X9v9NlWidu/wR5/C/7WUV54DfL5CkNmT5WYrhxdDcFZQAgAAAAAOuac/eRLYakKX6B0vZ1r3QodOQFfjqJD+xlGiPu4/PsEmNtAAAAAAAAAAAAAA==",
230+
"base64": "DIkAAAAFZAAgAAAAAPtVteJQAlgb2YMa/+7YWH00sbQPyt7L6Rb8OwBdMmL2BXMAIAAAAAAd44hgVKnEnTFlwNVC14oyc9OZOTspeymusqkRQj57nAVsACAAAAAAaZ9s3G+4znfxStxeOZwcZy1OhzjMGc5hjmdMN+b/w6kSY20AAAAAAAAAAAAA",
229231
"subType": "06"
230232
}
231233
}
@@ -270,24 +272,6 @@
270272
}
271273
]
272274
}
273-
},
274-
"deleteTokens": {
275-
"default.default": {
276-
"encryptedIndexed": {
277-
"e": {
278-
"$binary": {
279-
"base64": "65pz95EthqQpfoHS9nWvdCh05AV+OokP7GUaI+7j8+w=",
280-
"subType": "00"
281-
}
282-
},
283-
"o": {
284-
"$binary": {
285-
"base64": "noN+05JsuO1oDg59yypIGj45i+eFH6HOTXOPpeZ//Mk=",
286-
"subType": "00"
287-
}
288-
}
289-
}
290-
}
291275
}
292276
}
293277
},
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
{
22
"runOn": [
33
{
4-
"minServerVersion": "6.0.0",
4+
"minServerVersion": "7.0.0",
5+
"serverless": "forbid",
56
"topology": [
67
"replicaset",
78
"sharded",

src/libmongoc/tests/json/client_side_encryption/legacy/fle2-EncryptedFields-vs-jsonSchema.json renamed to src/libmongoc/tests/json/client_side_encryption/legacy/fle2v2-EncryptedFields-vs-jsonSchema.json

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
{
22
"runOn": [
33
{
4-
"minServerVersion": "6.0.0",
4+
"minServerVersion": "7.0.0",
5+
"serverless": "forbid",
56
"topology": [
67
"replicaset",
7-
"sharded"
8+
"sharded",
9+
"load-balanced"
810
]
911
}
1012
],
@@ -230,7 +232,7 @@
230232
"encryptedIndexed": {
231233
"$eq": {
232234
"$binary": {
233-
"base64": "BbEAAAAFZAAgAAAAAPGmZcUzdE/FPILvRSyAScGvZparGI2y9rJ/vSBxgCujBXMAIAAAAACi1RjmndKqgnXy7xb22RzUbnZl1sOZRXPOC0KcJkAxmQVjACAAAAAAWuidNu47c9A4Clic3DvFhn1AQJVC+FJtoE5bGZuz6PsFZQAgAAAAAOuac/eRLYakKX6B0vZ1r3QodOQFfjqJD+xlGiPu4/PsEmNtAAAAAAAAAAAAAA==",
235+
"base64": "DIkAAAAFZAAgAAAAAPGmZcUzdE/FPILvRSyAScGvZparGI2y9rJ/vSBxgCujBXMAIAAAAACi1RjmndKqgnXy7xb22RzUbnZl1sOZRXPOC0KcJkAxmQVsACAAAAAApJtKPW4+o9B7gAynNLL26jtlB4+hq5TXResijcYet8USY20AAAAAAAAAAAAA",
234236
"subType": "06"
235237
}
236238
}

src/libmongoc/tests/json/client_side_encryption/legacy/fle2-EncryptedFieldsMap-defaults.json renamed to src/libmongoc/tests/json/client_side_encryption/legacy/fle2v2-EncryptedFieldsMap-defaults.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
{
22
"runOn": [
33
{
4-
"minServerVersion": "6.0.0",
4+
"minServerVersion": "7.0.0",
5+
"serverless": "forbid",
56
"topology": [
67
"replicaset",
7-
"sharded"
8+
"sharded",
9+
"load-balanced"
810
]
911
}
1012
],
@@ -74,7 +76,6 @@
7476
"default.default": {
7577
"fields": [],
7678
"escCollection": "enxcol_.default.esc",
77-
"eccCollection": "enxcol_.default.ecc",
7879
"ecocCollection": "enxcol_.default.ecoc"
7980
}
8081
}

0 commit comments

Comments
 (0)