libmongocrypt-helper 1.7.4.0.1002 → 1.11.0.0.1001

Sign up to get free protection for your applications and to get access to all the features.
Files changed (600) hide show
  1. checksums.yaml +4 -4
  2. data/ext/libmongocrypt/libmongocrypt/CHANGELOG.md +40 -5
  3. data/ext/libmongocrypt/libmongocrypt/CMakeLists.txt +29 -24
  4. data/ext/libmongocrypt/libmongocrypt/CODEOWNERS +1 -4
  5. data/ext/libmongocrypt/libmongocrypt/Earthfile +522 -0
  6. data/ext/libmongocrypt/libmongocrypt/README.md +36 -40
  7. data/ext/libmongocrypt/libmongocrypt/bindings/cs/CMakeLists.txt +1 -0
  8. data/ext/libmongocrypt/libmongocrypt/bindings/cs/MongoDB.Driver.snk +0 -0
  9. data/ext/libmongocrypt/libmongocrypt/bindings/cs/MongoDB.Libmongocrypt/AssemblyInfo.cs +2 -2
  10. data/ext/libmongocrypt/libmongocrypt/bindings/cs/MongoDB.Libmongocrypt/Binary.cs +16 -2
  11. data/ext/libmongocrypt/libmongocrypt/bindings/cs/MongoDB.Libmongocrypt/CryptClient.cs +25 -6
  12. data/ext/libmongocrypt/libmongocrypt/bindings/cs/MongoDB.Libmongocrypt/CryptClientFactory.cs +8 -4
  13. data/ext/libmongocrypt/libmongocrypt/bindings/cs/MongoDB.Libmongocrypt/Library.cs +35 -3
  14. data/ext/libmongocrypt/libmongocrypt/bindings/cs/MongoDB.Libmongocrypt/LibraryLoader.cs +81 -44
  15. data/ext/libmongocrypt/libmongocrypt/bindings/cs/MongoDB.Libmongocrypt/MongoDB.Libmongocrypt.csproj +2 -1
  16. data/ext/libmongocrypt/libmongocrypt/bindings/cs/MongoDB.Libmongocrypt.Example/MongoDB.Libmongocrypt.Example.csproj +1 -1
  17. data/ext/libmongocrypt/libmongocrypt/bindings/cs/MongoDB.Libmongocrypt.Test/BasicTests.cs +1 -1
  18. data/ext/libmongocrypt/libmongocrypt/bindings/cs/MongoDB.Libmongocrypt.Test/MongoDB.Libmongocrypt.Test.csproj +2 -0
  19. data/ext/libmongocrypt/libmongocrypt/bindings/cs/MongoDB.Libmongocrypt.Test32/MongoDB.Libmongocrypt.Test32.csproj +2 -0
  20. data/ext/libmongocrypt/libmongocrypt/bindings/cs/README.md +3 -0
  21. data/ext/libmongocrypt/libmongocrypt/bindings/cs/Scripts/build.cake +22 -26
  22. data/ext/libmongocrypt/libmongocrypt/bindings/cs/Scripts/build.config +3 -0
  23. data/ext/libmongocrypt/libmongocrypt/bindings/cs/Scripts/build.sh +0 -0
  24. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/benchmarks/build.gradle.kts +28 -0
  25. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/benchmarks/src/main/java/com/mongodb/crypt/benchmark/BenchmarkRunner.java +217 -0
  26. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/benchmarks/src/main/resources/keyDocument.json +24 -0
  27. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/build.gradle.kts +22 -7
  28. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/gradle/wrapper/gradle-wrapper.jar +0 -0
  29. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/gradle/wrapper/gradle-wrapper.properties +1 -1
  30. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/gradlew +154 -108
  31. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/gradlew.bat +7 -18
  32. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/settings.gradle.kts +1 -0
  33. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/CAPI.java +41 -6
  34. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/CAPIHelper.java +5 -5
  35. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/CipherCallback.java +27 -1
  36. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/MongoCryptImpl.java +34 -19
  37. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/MongoExplicitEncryptOptions.java +6 -4
  38. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/resources/META-INF/native-image/jni-config.json +180 -0
  39. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/resources/META-INF/native-image/reflect-config.json +134 -0
  40. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/test/java/com/mongodb/crypt/capi/MongoCryptTest.java +50 -6
  41. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/test/resources/fle2-find-range-explicit-v2/int32/encrypted-payload.json +26 -0
  42. data/ext/libmongocrypt/libmongocrypt/bindings/{python/test/data/fle2-find-range-explicit → java/mongocrypt/src/test/resources/fle2-find-range-explicit-v2}/int32/rangeopts.json +3 -0
  43. data/ext/libmongocrypt/libmongocrypt/bindings/node/README.md +4 -771
  44. data/ext/libmongocrypt/libmongocrypt/bindings/python/CHANGELOG.rst +86 -0
  45. data/ext/libmongocrypt/libmongocrypt/bindings/python/README.rst +41 -20
  46. data/ext/libmongocrypt/libmongocrypt/bindings/python/RELEASE.rst +6 -24
  47. data/ext/libmongocrypt/libmongocrypt/bindings/python/build-manylinux-wheel.sh +4 -13
  48. data/ext/libmongocrypt/libmongocrypt/bindings/python/hatch_build.py +36 -0
  49. data/ext/libmongocrypt/libmongocrypt/bindings/python/libmongocrypt-version.txt +1 -0
  50. data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/__init__.py +2 -2
  51. data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/asynchronous/auto_encrypter.py +61 -0
  52. data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/asynchronous/credentials.py +156 -0
  53. data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/asynchronous/explicit_encrypter.py +156 -0
  54. data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/asynchronous/state_machine.py +149 -0
  55. data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/auto_encrypter.py +2 -46
  56. data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/binary.py +14 -17
  57. data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/binding.py +232 -296
  58. data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/compat.py +6 -31
  59. data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/credentials.py +2 -121
  60. data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/crypto.py +31 -20
  61. data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/errors.py +2 -2
  62. data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/explicit_encrypter.py +2 -233
  63. data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/mongocrypt.py +168 -254
  64. data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/options.py +265 -0
  65. data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/state_machine.py +2 -141
  66. data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/synchronous/auto_encrypter.py +61 -0
  67. data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/synchronous/credentials.py +156 -0
  68. data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/synchronous/explicit_encrypter.py +156 -0
  69. data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/synchronous/state_machine.py +149 -0
  70. data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/version.py +2 -2
  71. data/ext/libmongocrypt/libmongocrypt/bindings/python/pyproject.toml +118 -0
  72. data/ext/libmongocrypt/libmongocrypt/bindings/python/release.sh +97 -61
  73. data/ext/libmongocrypt/libmongocrypt/bindings/python/requirements-test.txt +7 -0
  74. data/ext/libmongocrypt/libmongocrypt/bindings/python/requirements.txt +4 -0
  75. data/ext/libmongocrypt/libmongocrypt/bindings/python/sbom.json +76 -0
  76. data/ext/libmongocrypt/libmongocrypt/bindings/python/strip_header.py +6 -7
  77. data/ext/libmongocrypt/libmongocrypt/bindings/python/synchro.py +64 -0
  78. data/ext/libmongocrypt/libmongocrypt/bindings/python/test/__init__.py +2 -10
  79. data/ext/libmongocrypt/libmongocrypt/bindings/python/test/data/collection-info.json +1 -1
  80. data/ext/libmongocrypt/libmongocrypt/bindings/python/test/data/command.json +1 -1
  81. data/ext/libmongocrypt/libmongocrypt/bindings/python/test/data/compact/success/encrypted-payload.json +21 -21
  82. data/ext/libmongocrypt/libmongocrypt/bindings/python/test/data/encrypted-command-reply.json +1 -1
  83. data/ext/libmongocrypt/libmongocrypt/bindings/python/test/data/encrypted-field-config-map.json +1 -1
  84. data/ext/libmongocrypt/libmongocrypt/bindings/python/test/data/fle2-find-range-explicit-v2/int32/encrypted-payload.json +26 -0
  85. data/ext/libmongocrypt/libmongocrypt/bindings/python/test/data/fle2-find-range-explicit-v2/int32/rangeopts.json +14 -0
  86. data/ext/libmongocrypt/libmongocrypt/bindings/python/test/data/key-document-azure.json +1 -1
  87. data/ext/libmongocrypt/libmongocrypt/bindings/python/test/data/key-document-gcp.json +1 -1
  88. data/ext/libmongocrypt/libmongocrypt/bindings/python/test/data/key-document.json +1 -1
  89. data/ext/libmongocrypt/libmongocrypt/bindings/python/test/data/key-filter.json +1 -1
  90. data/ext/libmongocrypt/libmongocrypt/bindings/python/test/data/list-collections-filter.json +1 -1
  91. data/ext/libmongocrypt/libmongocrypt/bindings/python/test/data/mongocryptd-command.json +1 -1
  92. data/ext/libmongocrypt/libmongocrypt/bindings/python/test/data/mongocryptd-reply.json +1 -1
  93. data/ext/libmongocrypt/libmongocrypt/bindings/python/test/data/schema-map.json +1 -1
  94. data/ext/libmongocrypt/libmongocrypt/bindings/python/test/performance/keyDocument.json +24 -0
  95. data/ext/libmongocrypt/libmongocrypt/bindings/python/test/performance/perf_test.py +165 -0
  96. data/ext/libmongocrypt/libmongocrypt/bindings/python/test/test_binding.py +8 -12
  97. data/ext/libmongocrypt/libmongocrypt/bindings/python/test/test_crypto.py +9 -11
  98. data/ext/libmongocrypt/libmongocrypt/bindings/python/test/test_mongocrypt.py +991 -343
  99. data/ext/libmongocrypt/libmongocrypt/bindings/python/update-sbom.sh +14 -0
  100. data/ext/libmongocrypt/libmongocrypt/cmake/FetchMongoC.cmake +19 -1
  101. data/ext/libmongocrypt/libmongocrypt/cmake/ImportBSON.cmake +31 -6
  102. data/ext/libmongocrypt/libmongocrypt/cmake/IntelDFP.cmake +20 -227
  103. data/ext/libmongocrypt/libmongocrypt/cmake/Patch.cmake +54 -0
  104. data/ext/libmongocrypt/libmongocrypt/cmake/Platform.cmake +50 -0
  105. data/ext/libmongocrypt/libmongocrypt/cmake/mongocrypt-config.cmake +21 -0
  106. data/ext/libmongocrypt/libmongocrypt/doc/img/cli-icon.png +0 -0
  107. data/ext/libmongocrypt/libmongocrypt/doc/img/reference-targets.png +0 -0
  108. data/ext/libmongocrypt/libmongocrypt/doc/releasing.md +153 -0
  109. data/ext/libmongocrypt/libmongocrypt/etc/c6-vault.repo +39 -0
  110. data/ext/libmongocrypt/libmongocrypt/etc/calc_release_version.py +61 -28
  111. data/ext/libmongocrypt/libmongocrypt/etc/calc_release_version_selftest.sh +73 -0
  112. data/ext/libmongocrypt/libmongocrypt/etc/cyclonedx.sbom.json +108 -0
  113. data/ext/libmongocrypt/libmongocrypt/etc/fle2_aead_generate_tests.py +15 -24
  114. data/ext/libmongocrypt/libmongocrypt/etc/fle2_crypto.py +66 -54
  115. data/ext/libmongocrypt/libmongocrypt/etc/fle2_generate_tests.py +14 -23
  116. data/ext/libmongocrypt/libmongocrypt/etc/fle2v2_aead_generate_tests.py +32 -0
  117. data/ext/libmongocrypt/libmongocrypt/etc/format-all.sh +12 -0
  118. data/ext/libmongocrypt/libmongocrypt/etc/format.sh +16 -0
  119. data/ext/libmongocrypt/libmongocrypt/etc/install-package.sh +48 -0
  120. data/ext/libmongocrypt/libmongocrypt/etc/libbson-remove-GCC-diagnostic-pragma.patch +27 -0
  121. data/ext/libmongocrypt/libmongocrypt/etc/mongo-inteldfp-alpine-arm-fix.patch +17 -0
  122. data/ext/libmongocrypt/libmongocrypt/etc/mongo-inteldfp-libmongocrypt-pr-625.patch +13 -0
  123. data/ext/libmongocrypt/libmongocrypt/etc/packager.py +120 -91
  124. data/ext/libmongocrypt/libmongocrypt/etc/purls.txt +14 -0
  125. data/ext/libmongocrypt/libmongocrypt/etc/repo_config.yaml +56 -0
  126. data/ext/libmongocrypt/libmongocrypt/etc/silk-create-asset-group.sh +70 -0
  127. data/ext/libmongocrypt/libmongocrypt/etc/ssdlc_compliance_report.md +37 -0
  128. data/ext/libmongocrypt/libmongocrypt/etc/third_party_vulnerabilities.md +42 -0
  129. data/ext/libmongocrypt/libmongocrypt/integrating.md +18 -1
  130. data/ext/libmongocrypt/libmongocrypt/kms-message/CMakeLists.txt +11 -3
  131. data/ext/libmongocrypt/libmongocrypt/kms-message/src/kms_gcp_request.c +1 -1
  132. data/ext/libmongocrypt/libmongocrypt/kms-message/src/kms_kmip_reader_writer.c +17 -0
  133. data/ext/libmongocrypt/libmongocrypt/kms-message/src/kms_kmip_reader_writer_private.h +6 -0
  134. data/ext/libmongocrypt/libmongocrypt/kms-message/src/kms_kmip_request.c +211 -1
  135. data/ext/libmongocrypt/libmongocrypt/kms-message/src/kms_kmip_response.c +163 -0
  136. data/ext/libmongocrypt/libmongocrypt/kms-message/src/kms_kmip_tag_type_private.h +2 -1
  137. data/ext/libmongocrypt/libmongocrypt/kms-message/src/kms_message/kms_kmip_request.h +17 -0
  138. data/ext/libmongocrypt/libmongocrypt/kms-message/src/kms_message/kms_kmip_response.h +6 -0
  139. data/ext/libmongocrypt/libmongocrypt/kms-message/src/kms_port.c +3 -2
  140. data/ext/libmongocrypt/libmongocrypt/kms-message/src/kms_request.c +4 -2
  141. data/ext/libmongocrypt/libmongocrypt/kms-message/src/kms_request_str.c +2 -2
  142. data/ext/libmongocrypt/libmongocrypt/kms-message/test/test_kmip_reader_writer.c +23 -2
  143. data/ext/libmongocrypt/libmongocrypt/src/crypto/cng.c +381 -436
  144. data/ext/libmongocrypt/libmongocrypt/src/crypto/commoncrypto.c +162 -227
  145. data/ext/libmongocrypt/libmongocrypt/src/crypto/libcrypto.c +183 -248
  146. data/ext/libmongocrypt/libmongocrypt/src/crypto/none.c +33 -55
  147. data/ext/libmongocrypt/libmongocrypt/src/csfle-markup.cpp +175 -205
  148. data/ext/libmongocrypt/libmongocrypt/src/mc-array-private.h +10 -21
  149. data/ext/libmongocrypt/libmongocrypt/src/mc-array.c +44 -56
  150. data/ext/libmongocrypt/libmongocrypt/src/mc-check-conversions-private.h +4 -8
  151. data/ext/libmongocrypt/libmongocrypt/src/mc-dec128.h +351 -463
  152. data/ext/libmongocrypt/libmongocrypt/src/mc-dec128.test.cpp +59 -66
  153. data/ext/libmongocrypt/libmongocrypt/src/mc-efc-private.h +21 -11
  154. data/ext/libmongocrypt/libmongocrypt/src/mc-efc.c +175 -99
  155. data/ext/libmongocrypt/libmongocrypt/src/mc-fle-blob-subtype-private.h +18 -10
  156. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-encryption-placeholder-private.h +69 -70
  157. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-encryption-placeholder.c +445 -439
  158. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-find-equality-payload-private-v2.h +41 -0
  159. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-find-equality-payload-private.h +11 -18
  160. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-find-equality-payload-v2.c +135 -0
  161. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-find-equality-payload.c +109 -126
  162. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-find-range-payload-private-v2.h +103 -0
  163. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-find-range-payload-private.h +28 -31
  164. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-find-range-payload-v2.c +173 -0
  165. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-find-range-payload.c +106 -125
  166. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-insert-update-payload-private-v2.h +130 -0
  167. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-insert-update-payload-private.h +36 -44
  168. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-insert-update-payload-v2.c +382 -0
  169. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-insert-update-payload.c +237 -278
  170. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-payload-iev-private-v2.h +133 -0
  171. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-payload-iev-private.h +67 -56
  172. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-payload-iev-v2.c +437 -0
  173. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-payload-iev.c +454 -325
  174. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-payload-uev-common-private.h +69 -0
  175. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-payload-uev-common.c +182 -0
  176. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-payload-uev-private.h +23 -31
  177. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-payload-uev-v2-private.h +85 -0
  178. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-payload-uev-v2.c +142 -0
  179. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-payload-uev.c +104 -231
  180. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-range-operator-private.h +8 -7
  181. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-rfds-private.h +56 -56
  182. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-rfds.c +520 -580
  183. data/ext/libmongocrypt/libmongocrypt/src/mc-optional-private.h +47 -66
  184. data/ext/libmongocrypt/libmongocrypt/src/mc-range-edge-generation-private.h +67 -76
  185. data/ext/libmongocrypt/libmongocrypt/src/mc-range-edge-generation.c +201 -190
  186. data/ext/libmongocrypt/libmongocrypt/src/mc-range-encoding-private.h +55 -42
  187. data/ext/libmongocrypt/libmongocrypt/src/mc-range-encoding.c +809 -558
  188. data/ext/libmongocrypt/libmongocrypt/src/mc-range-mincover-generator.template.h +177 -201
  189. data/ext/libmongocrypt/libmongocrypt/src/mc-range-mincover-private.h +54 -53
  190. data/ext/libmongocrypt/libmongocrypt/src/mc-range-mincover.c +188 -240
  191. data/ext/libmongocrypt/libmongocrypt/src/mc-rangeopts-private.h +43 -35
  192. data/ext/libmongocrypt/libmongocrypt/src/mc-rangeopts.c +484 -337
  193. data/ext/libmongocrypt/libmongocrypt/src/mc-reader-private.h +36 -71
  194. data/ext/libmongocrypt/libmongocrypt/src/mc-reader.c +111 -164
  195. data/ext/libmongocrypt/libmongocrypt/src/mc-tokens-private.h +87 -65
  196. data/ext/libmongocrypt/libmongocrypt/src/mc-tokens.c +153 -125
  197. data/ext/libmongocrypt/libmongocrypt/src/mc-writer-private.h +66 -0
  198. data/ext/libmongocrypt/libmongocrypt/src/mc-writer.c +141 -0
  199. data/ext/libmongocrypt/libmongocrypt/src/mlib/check.hpp +37 -55
  200. data/ext/libmongocrypt/libmongocrypt/src/mlib/endian.h +11 -11
  201. data/ext/libmongocrypt/libmongocrypt/src/mlib/error.h +27 -32
  202. data/ext/libmongocrypt/libmongocrypt/src/mlib/int128.h +461 -499
  203. data/ext/libmongocrypt/libmongocrypt/src/mlib/int128.test.cpp +256 -334
  204. data/ext/libmongocrypt/libmongocrypt/src/mlib/macros.h +4 -5
  205. data/ext/libmongocrypt/libmongocrypt/src/mlib/path.h +196 -231
  206. data/ext/libmongocrypt/libmongocrypt/src/mlib/path.test.c +56 -79
  207. data/ext/libmongocrypt/libmongocrypt/src/mlib/str.h +411 -530
  208. data/ext/libmongocrypt/libmongocrypt/src/mlib/str.test.c +116 -131
  209. data/ext/libmongocrypt/libmongocrypt/src/mlib/thread.h +17 -26
  210. data/ext/libmongocrypt/libmongocrypt/src/mlib/user-check.h +2 -2
  211. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-binary-private.h +1 -9
  212. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-binary.c +31 -48
  213. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-buffer-private.h +55 -131
  214. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-buffer.c +442 -565
  215. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-cache-collinfo-private.h +1 -2
  216. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-cache-collinfo.c +28 -45
  217. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-cache-key-private.h +11 -17
  218. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-cache-key.c +104 -132
  219. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-cache-oauth-private.h +16 -24
  220. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-cache-oauth.c +110 -93
  221. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-cache-private.h +26 -45
  222. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-cache.c +220 -273
  223. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-ciphertext-private.h +13 -25
  224. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-ciphertext.c +147 -166
  225. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-compat.h +2 -2
  226. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-crypto-private.h +110 -204
  227. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-crypto.c +1145 -1567
  228. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-ctx-datakey.c +510 -476
  229. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-ctx-decrypt.c +817 -694
  230. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-ctx-encrypt.c +2775 -2697
  231. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-ctx-private.h +189 -184
  232. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-ctx-rewrap-many-datakey.c +308 -351
  233. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-ctx.c +990 -1139
  234. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-dll-private.h +23 -24
  235. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-endian-private.h +44 -58
  236. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-endpoint-private.h +21 -25
  237. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-endpoint.c +167 -181
  238. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-kek-private.h +42 -44
  239. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-kek.c +292 -272
  240. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-key-broker-private.h +70 -110
  241. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-key-broker.c +1010 -1033
  242. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-key-private.h +27 -44
  243. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-key.c +349 -402
  244. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-kms-ctx-private.h +127 -120
  245. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-kms-ctx.c +1692 -1611
  246. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-log-private.h +35 -67
  247. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-log.c +49 -83
  248. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-marking-private.h +31 -36
  249. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-marking.c +1923 -1479
  250. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-mutex-private.h +7 -12
  251. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-opts-private.h +124 -107
  252. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-opts.c +925 -419
  253. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-private.h +99 -122
  254. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-status-private.h +3 -8
  255. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-status.c +92 -119
  256. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-traverse-util-private.h +19 -29
  257. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-traverse-util.c +136 -176
  258. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-util-private.h +11 -21
  259. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-util.c +98 -136
  260. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt.c +924 -1339
  261. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt.h +199 -313
  262. data/ext/libmongocrypt/libmongocrypt/src/os_posix/os_dll.c +83 -79
  263. data/ext/libmongocrypt/libmongocrypt/src/os_posix/os_mutex.c +20 -28
  264. data/ext/libmongocrypt/libmongocrypt/src/os_win/os_dll.c +64 -73
  265. data/ext/libmongocrypt/libmongocrypt/src/os_win/os_mutex.c +8 -16
  266. data/ext/libmongocrypt/libmongocrypt/test/crypt_shared-stub.cpp +57 -87
  267. data/ext/libmongocrypt/libmongocrypt/test/data/bulkWrite/bypassQueryAnalysis/payload.json +53 -0
  268. data/ext/libmongocrypt/libmongocrypt/test/data/bulkWrite/jsonSchema/cmd-to-mongocryptd.json +23 -0
  269. data/ext/libmongocrypt/libmongocrypt/test/data/bulkWrite/jsonSchema/cmd.json +20 -0
  270. data/ext/libmongocrypt/libmongocrypt/test/data/bulkWrite/simple/cmd-to-mongocryptd.json +50 -0
  271. data/ext/libmongocrypt/libmongocrypt/test/data/bulkWrite/simple/cmd.json +20 -0
  272. data/ext/libmongocrypt/libmongocrypt/test/data/bulkWrite/simple/collinfo.json +44 -0
  273. data/ext/libmongocrypt/libmongocrypt/test/data/bulkWrite/simple/encrypted-field-map.json +24 -0
  274. data/ext/libmongocrypt/libmongocrypt/test/data/bulkWrite/simple/encrypted-payload-pattern.json +53 -0
  275. data/ext/libmongocrypt/libmongocrypt/test/data/bulkWrite/simple/mongocryptd-reply.json +62 -0
  276. data/ext/libmongocrypt/libmongocrypt/test/data/bulkWrite/unencrypted/cmd-to-mongocryptd.json +30 -0
  277. data/ext/libmongocrypt/libmongocrypt/test/data/bulkWrite/unencrypted/cmd.json +17 -0
  278. data/ext/libmongocrypt/libmongocrypt/test/data/bulkWrite/unencrypted/mongocryptd-reply.json +39 -0
  279. data/ext/libmongocrypt/libmongocrypt/test/data/bulkWrite/unencrypted/payload.json +21 -0
  280. data/ext/libmongocrypt/libmongocrypt/test/data/cleanup/missing-key-id/collinfo.json +20 -0
  281. data/ext/libmongocrypt/libmongocrypt/test/data/cleanup/no-fields/collinfo.json +9 -0
  282. data/ext/libmongocrypt/libmongocrypt/test/data/cleanup/no-fields/encrypted-payload.json +4 -0
  283. data/ext/libmongocrypt/libmongocrypt/test/data/cleanup/success/cmd.json +1 -0
  284. data/ext/libmongocrypt/libmongocrypt/test/data/cleanup/success/collinfo.json +63 -0
  285. data/ext/libmongocrypt/libmongocrypt/test/data/cleanup/success/encrypted-field-config-map.json +61 -0
  286. data/ext/libmongocrypt/libmongocrypt/test/data/cleanup/success/encrypted-payload-range-v2.json +37 -0
  287. data/ext/libmongocrypt/libmongocrypt/test/data/cleanup/success/encrypted-payload.json +29 -0
  288. data/ext/libmongocrypt/libmongocrypt/test/data/compact/anchor-pad/cmd.json +1 -0
  289. data/ext/libmongocrypt/libmongocrypt/test/data/compact/anchor-pad/collinfo.json +64 -0
  290. data/ext/libmongocrypt/libmongocrypt/test/data/compact/anchor-pad/encrypted-payload-range-v2.json +105 -0
  291. data/ext/libmongocrypt/libmongocrypt/test/data/compact/anchor-pad/encrypted-payload.json +30 -0
  292. data/ext/libmongocrypt/libmongocrypt/test/data/compact/no-range/cmd.json +1 -0
  293. data/ext/libmongocrypt/libmongocrypt/test/data/compact/no-range/collinfo.json +49 -0
  294. data/ext/libmongocrypt/libmongocrypt/test/data/compact/no-range/encrypted-field-config-map.json +47 -0
  295. data/ext/libmongocrypt/libmongocrypt/test/data/compact/no-range/encrypted-payload.json +23 -0
  296. data/ext/libmongocrypt/libmongocrypt/test/data/compact/success/collinfo.json +15 -0
  297. data/ext/libmongocrypt/libmongocrypt/test/data/compact/success/encrypted-field-config-map.json +10 -0
  298. data/ext/libmongocrypt/libmongocrypt/test/data/compact/success/encrypted-payload-range-v2.json +104 -0
  299. data/ext/libmongocrypt/libmongocrypt/test/data/compact/success/encrypted-payload.json +6 -0
  300. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-delete/empty/encrypted-payload-v2.json +60 -0
  301. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-delete/success/encrypted-payload-v2.json +67 -0
  302. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-explain/with-csfle/collinfo.json +4 -4
  303. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-explain/with-csfle/encrypted-payload.json +5 -5
  304. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-explicit/find-indexed-contentionFactor1-v2.json +8 -0
  305. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-explicit/find-indexed-v2.json +8 -0
  306. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-explicit/insert-indexed-contentionFactor1-v2.json +8 -0
  307. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-explicit/insert-indexed-same-user-and-index-key-v2.json +8 -0
  308. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-explicit/insert-indexed-v2.json +8 -0
  309. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-equality-v2/cmd.json +6 -0
  310. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-equality-v2/encrypted-field-map.json +22 -0
  311. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-equality-v2/encrypted-payload.json +40 -0
  312. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-equality-v2/mongocryptd-reply.json +19 -0
  313. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/date-v2/cmd.json +10 -0
  314. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/date-v2/encrypted-field-map.json +27 -0
  315. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/date-v2/encrypted-payload.json +41 -0
  316. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/date-v2/mongocryptd-reply.json +49 -0
  317. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/decimal128-precision-v2/cmd.json +6 -0
  318. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/decimal128-precision-v2/encrypted-field-map.json +30 -0
  319. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/decimal128-precision-v2/encrypted-payload.json +50 -0
  320. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/decimal128-precision-v2/mongocryptd-reply.json +58 -0
  321. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/decimal128-v2/cmd.json +6 -0
  322. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/decimal128-v2/encrypted-field-map.json +27 -0
  323. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/decimal128-v2/encrypted-payload.json +41 -0
  324. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/decimal128-v2/mongocryptd-reply.json +49 -0
  325. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/double-precision-v2/cmd.json +8 -0
  326. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/double-precision-v2/encrypted-field-map.json +30 -0
  327. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/double-precision-v2/encrypted-payload.json +44 -0
  328. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/double-precision-v2/mongocryptd-reply.json +52 -0
  329. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/double-v2/cmd.json +8 -0
  330. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/double-v2/encrypted-field-map.json +27 -0
  331. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/double-v2/encrypted-payload.json +41 -0
  332. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/double-v2/mongocryptd-reply.json +49 -0
  333. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/int32-v2/cmd.json +8 -0
  334. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/int32-v2/encrypted-field-map.json +27 -0
  335. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/int32-v2/encrypted-payload.json +41 -0
  336. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/int32-v2/mongocryptd-reply.json +49 -0
  337. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/int64-v2/cmd.json +8 -0
  338. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/int64-v2/encrypted-field-map.json +27 -0
  339. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/int64-v2/encrypted-payload.json +41 -0
  340. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/int64-v2/mongocryptd-reply.json +49 -0
  341. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range-explicit/double/encrypted-payload-v2.json +26 -0
  342. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range-explicit/double-precision/encrypted-payload-v2.json +26 -0
  343. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range-explicit/int32/encrypted-payload-v2.json +26 -0
  344. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range-explicit/int32-nominmax/encrypted-payload-v2.json +26 -0
  345. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range-explicit/int32-openinterval/encrypted-payload-v2.json +16 -0
  346. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert/cmd.json +1 -1
  347. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/date/RNG_DATA.h +65 -65
  348. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/date-v2/cmd.json +13 -0
  349. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/date-v2/encrypted-field-map.json +27 -0
  350. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/date-v2/encrypted-payload.json +44 -0
  351. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/date-v2/mongocryptd-reply.json +52 -0
  352. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/decimal128/RNG_DATA.h +132 -132
  353. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/decimal128-precision/RNG_DATA.h +71 -71
  354. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/decimal128-precision-v2/cmd.json +9 -0
  355. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/decimal128-precision-v2/encrypted-field-map.json +30 -0
  356. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/decimal128-precision-v2/encrypted-payload.json +53 -0
  357. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/decimal128-precision-v2/mongocryptd-reply.json +61 -0
  358. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/decimal128-v2/cmd.json +9 -0
  359. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/decimal128-v2/encrypted-field-map.json +27 -0
  360. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/decimal128-v2/encrypted-payload.json +44 -0
  361. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/decimal128-v2/mongocryptd-reply.json +52 -0
  362. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/double/RNG_DATA.h +68 -68
  363. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/double-precision/RNG_DATA.h +19 -19
  364. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/double-precision-v2/cmd.json +11 -0
  365. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/double-precision-v2/encrypted-field-map.json +30 -0
  366. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/double-precision-v2/encrypted-payload.json +47 -0
  367. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/double-precision-v2/mongocryptd-reply.json +55 -0
  368. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/double-v2/cmd.json +11 -0
  369. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/double-v2/encrypted-field-map.json +27 -0
  370. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/double-v2/encrypted-payload.json +44 -0
  371. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/double-v2/mongocryptd-reply.json +52 -0
  372. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/int32/RNG_DATA.h +25 -25
  373. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/int32-v2/cmd.json +11 -0
  374. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/int32-v2/encrypted-field-map.json +27 -0
  375. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/int32-v2/encrypted-payload.json +44 -0
  376. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/int32-v2/mongocryptd-reply.json +52 -0
  377. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/int64/RNG_DATA.h +65 -65
  378. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/int64-v2/cmd.json +11 -0
  379. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/int64-v2/encrypted-field-map.json +27 -0
  380. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/int64-v2/encrypted-payload.json +44 -0
  381. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/int64-v2/mongocryptd-reply.json +52 -0
  382. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range-explicit/double/RNG_DATA.h +68 -68
  383. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range-explicit/double/encrypted-payload-v2.json +8 -0
  384. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range-explicit/double-precision/RNG_DATA.h +19 -19
  385. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range-explicit/double-precision/encrypted-payload-v2.json +8 -0
  386. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range-explicit/int32/RNG_DATA.h +25 -25
  387. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range-explicit/int32/encrypted-payload-v2.json +8 -0
  388. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range-explicit/int32-nominmax/encrypted-payload-v2.json +8 -0
  389. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range-explicit/sparsity-2/RNG_DATA.h +15 -15
  390. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range-explicit/sparsity-2/encrypted-payload-v2.json +8 -0
  391. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-unindexed-v2/cmd.json +9 -0
  392. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-unindexed-v2/encrypted-field-map.json +18 -0
  393. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-unindexed-v2/encrypted-payload.json +14 -0
  394. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-unindexed-v2/mongocryptd-reply.json +41 -0
  395. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-v2/cmd.json +9 -0
  396. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-v2/encrypted-field-map.json +22 -0
  397. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-v2/encrypted-payload.json +39 -0
  398. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-v2/mongocryptd-reply.json +49 -0
  399. data/ext/libmongocrypt/libmongocrypt/test/data/iev-v2/FLECrudTest-insertOneRangeV2.json +10 -0
  400. data/ext/libmongocrypt/libmongocrypt/test/data/iev-v2/FLECrudTest-insertOneV2.json +10 -0
  401. data/ext/libmongocrypt/libmongocrypt/test/data/kms-azure/decrypt-response.txt +16 -0
  402. data/ext/libmongocrypt/libmongocrypt/test/data/kms-azure/encrypt-response.txt +16 -0
  403. data/ext/libmongocrypt/libmongocrypt/test/data/kms-azure/oauth-response.txt +19 -0
  404. data/ext/libmongocrypt/libmongocrypt/test/data/no-trimFactor/find/cmd.json +9 -0
  405. data/ext/libmongocrypt/libmongocrypt/test/data/no-trimFactor/find/encrypted-field-map.json +19 -0
  406. data/ext/libmongocrypt/libmongocrypt/test/data/no-trimFactor/find/encrypted-payload.json +62 -0
  407. data/ext/libmongocrypt/libmongocrypt/test/data/no-trimFactor/find/mongocryptd-reply.json +69 -0
  408. data/ext/libmongocrypt/libmongocrypt/test/data/no-trimFactor/insert/cmd.json +11 -0
  409. data/ext/libmongocrypt/libmongocrypt/test/data/no-trimFactor/insert/encrypted-field-map.json +19 -0
  410. data/ext/libmongocrypt/libmongocrypt/test/data/no-trimFactor/insert/encrypted-payload.json +40 -0
  411. data/ext/libmongocrypt/libmongocrypt/test/data/no-trimFactor/insert/mongocryptd-reply.json +47 -0
  412. data/ext/libmongocrypt/libmongocrypt/test/data/range-edge-generation/edges_decimal128.cstruct +1 -1
  413. data/ext/libmongocrypt/libmongocrypt/test/data/range-edge-generation/edges_double.cstruct +8637 -7958
  414. data/ext/libmongocrypt/libmongocrypt/test/data/range-edge-generation/edges_int32.cstruct +5522 -1382
  415. data/ext/libmongocrypt/libmongocrypt/test/data/range-edge-generation/edges_int64.cstruct +5042 -1262
  416. data/ext/libmongocrypt/libmongocrypt/test/data/range-min-cover/mincover_decimal128.cstruct +1 -1
  417. data/ext/libmongocrypt/libmongocrypt/test/data/range-min-cover/mincover_decimal128_precision.cstruct +1 -1
  418. data/ext/libmongocrypt/libmongocrypt/test/data/range-min-cover/mincover_double.cstruct +1 -1
  419. data/ext/libmongocrypt/libmongocrypt/test/data/range-min-cover/mincover_double_precision.cstruct +2 -2
  420. data/ext/libmongocrypt/libmongocrypt/test/data/range-min-cover/mincover_int32.cstruct +1 -1
  421. data/ext/libmongocrypt/libmongocrypt/test/data/range-min-cover/mincover_int64.cstruct +1 -1
  422. data/ext/libmongocrypt/libmongocrypt/test/data/range-sends-cryptoParams/auto-find-int32/cmd.json +8 -0
  423. data/ext/libmongocrypt/libmongocrypt/test/data/range-sends-cryptoParams/auto-find-int32/encrypted-field-map.json +19 -0
  424. data/ext/libmongocrypt/libmongocrypt/test/data/range-sends-cryptoParams/auto-find-int32/encrypted-payload.json +53 -0
  425. data/ext/libmongocrypt/libmongocrypt/test/data/range-sends-cryptoParams/auto-find-int32/mongocryptd-reply.json +58 -0
  426. data/ext/libmongocrypt/libmongocrypt/test/data/range-sends-cryptoParams/auto-insert-int32/cmd.json +11 -0
  427. data/ext/libmongocrypt/libmongocrypt/test/data/range-sends-cryptoParams/auto-insert-int32/encrypted-field-map.json +19 -0
  428. data/ext/libmongocrypt/libmongocrypt/test/data/range-sends-cryptoParams/auto-insert-int32/encrypted-payload.json +40 -0
  429. data/ext/libmongocrypt/libmongocrypt/test/data/range-sends-cryptoParams/auto-insert-int32/mongocryptd-reply.json +45 -0
  430. data/ext/libmongocrypt/libmongocrypt/test/data/range-sends-cryptoParams/explicit-find-int32/expected.json +26 -0
  431. data/ext/libmongocrypt/libmongocrypt/test/data/range-sends-cryptoParams/explicit-find-int32/to-encrypt.json +20 -0
  432. data/ext/libmongocrypt/libmongocrypt/test/data/range-sends-cryptoParams/explicit-find-int32-defaults/expected.json +26 -0
  433. data/ext/libmongocrypt/libmongocrypt/test/data/range-sends-cryptoParams/explicit-find-int32-defaults/to-encrypt.json +20 -0
  434. data/ext/libmongocrypt/libmongocrypt/test/data/range-sends-cryptoParams/explicit-insert-double/expected.json +8 -0
  435. data/ext/libmongocrypt/libmongocrypt/test/data/range-sends-cryptoParams/explicit-insert-int32/expected.json +8 -0
  436. data/ext/libmongocrypt/libmongocrypt/test/data/range-sends-cryptoParams/explicit-insert-int32-defaults/expected.json +8 -0
  437. data/ext/libmongocrypt/libmongocrypt/test/data/roundtrip/README.md +17 -0
  438. data/ext/libmongocrypt/libmongocrypt/test/data/roundtrip/aes-ctr.json +29 -0
  439. data/ext/libmongocrypt/libmongocrypt/test/data/roundtrip/fle2-fixed.json +10 -0
  440. data/ext/libmongocrypt/libmongocrypt/test/data/roundtrip/fle2-generated.json +38 -0
  441. data/ext/libmongocrypt/libmongocrypt/test/data/roundtrip/fle2aead-decrypt.json +35 -0
  442. data/ext/libmongocrypt/libmongocrypt/test/data/roundtrip/fle2aead-fixed.json +29 -0
  443. data/ext/libmongocrypt/libmongocrypt/test/data/roundtrip/fle2aead-generated.json +122 -0
  444. data/ext/libmongocrypt/libmongocrypt/test/data/roundtrip/fle2v2-aead-fixed.json +29 -0
  445. data/ext/libmongocrypt/libmongocrypt/test/data/roundtrip/fle2v2-aead-generated.json +122 -0
  446. data/ext/libmongocrypt/libmongocrypt/test/data/roundtrip/mcgrew.json +12 -0
  447. data/ext/libmongocrypt/libmongocrypt/test/data/roundtrip/nist.json +20 -0
  448. data/ext/libmongocrypt/libmongocrypt/test/data/tokens/README.md +30 -0
  449. data/ext/libmongocrypt/libmongocrypt/test/data/tokens/mc.json +25 -0
  450. data/ext/libmongocrypt/libmongocrypt/test/data/tokens/server.json +25 -0
  451. data/ext/libmongocrypt/libmongocrypt/test/example-no-bson.c +4 -4
  452. data/ext/libmongocrypt/libmongocrypt/test/example-state-machine.c +279 -323
  453. data/ext/libmongocrypt/libmongocrypt/test/fuzz_kms.c +8 -7
  454. data/ext/libmongocrypt/libmongocrypt/test/test-dll.cpp +6 -7
  455. data/ext/libmongocrypt/libmongocrypt/test/test-gcp-auth.c +221 -283
  456. data/ext/libmongocrypt/libmongocrypt/test/test-mc-efc.c +60 -73
  457. data/ext/libmongocrypt/libmongocrypt/test/test-mc-fle2-find-equality-payload-v2.c +78 -0
  458. data/ext/libmongocrypt/libmongocrypt/test/test-mc-fle2-find-range-payload-v2.c +129 -0
  459. data/ext/libmongocrypt/libmongocrypt/test/test-mc-fle2-payload-iev-v2.c +248 -0
  460. data/ext/libmongocrypt/libmongocrypt/test/test-mc-fle2-payload-iev.c +467 -414
  461. data/ext/libmongocrypt/libmongocrypt/test/test-mc-fle2-payload-iup-v2.c +248 -0
  462. data/ext/libmongocrypt/libmongocrypt/test/test-mc-fle2-payload-iup.c +141 -159
  463. data/ext/libmongocrypt/libmongocrypt/test/test-mc-fle2-payload-uev-v2.c +338 -0
  464. data/ext/libmongocrypt/libmongocrypt/test/test-mc-fle2-payload-uev.c +238 -176
  465. data/ext/libmongocrypt/libmongocrypt/test/test-mc-fle2-rfds.c +373 -474
  466. data/ext/libmongocrypt/libmongocrypt/test/test-mc-range-edge-generation.c +421 -388
  467. data/ext/libmongocrypt/libmongocrypt/test/test-mc-range-encoding.c +974 -825
  468. data/ext/libmongocrypt/libmongocrypt/test/test-mc-range-mincover.c +499 -481
  469. data/ext/libmongocrypt/libmongocrypt/test/test-mc-rangeopts.c +312 -148
  470. data/ext/libmongocrypt/libmongocrypt/test/test-mc-reader.c +124 -207
  471. data/ext/libmongocrypt/libmongocrypt/test/test-mc-tokens.c +249 -213
  472. data/ext/libmongocrypt/libmongocrypt/test/test-mc-writer.c +176 -0
  473. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-assert-match-bson.c +632 -808
  474. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-assert-match-bson.h +22 -2
  475. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-assert.h +168 -189
  476. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-buffer.c +187 -211
  477. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-cache-oauth.c +118 -37
  478. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-cache.c +210 -233
  479. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-ciphertext.c +185 -220
  480. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-cleanup.c +374 -0
  481. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-compact.c +410 -445
  482. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-crypto-hooks.c +798 -812
  483. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-crypto-std-hooks.c +142 -135
  484. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-crypto-std-hooks.h +70 -71
  485. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-crypto.c +394 -846
  486. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-csfle-lib.c +159 -183
  487. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-ctx-decrypt.c +870 -1045
  488. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-ctx-encrypt.c +5183 -4717
  489. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-ctx-rewrap-many-datakey.c +750 -964
  490. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-ctx-setopt.c +1093 -1178
  491. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-datakey.c +348 -420
  492. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-dll.c +23 -30
  493. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-endpoint.c +98 -111
  494. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-kek.c +49 -52
  495. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-key-broker.c +770 -920
  496. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-key-cache.c +354 -407
  497. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-key.c +197 -245
  498. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-kms-ctx.c +705 -368
  499. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-kms-responses.c +147 -166
  500. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-local-kms.c +50 -61
  501. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-log.c +85 -100
  502. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-marking.c +1073 -690
  503. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-opts.c +42 -0
  504. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-status.c +46 -58
  505. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-traverse-util.c +381 -451
  506. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-util.c +55 -67
  507. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-util.h +7 -10
  508. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt.c +879 -918
  509. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt.h +119 -169
  510. data/ext/libmongocrypt/libmongocrypt/test/test-named-kms-providers.c +2381 -0
  511. data/ext/libmongocrypt/libmongocrypt/test/util/HELP.autogen +3 -1
  512. data/ext/libmongocrypt/libmongocrypt/test/util/README.md +1 -0
  513. data/ext/libmongocrypt/libmongocrypt/test/util/csfle.c +512 -559
  514. data/ext/libmongocrypt/libmongocrypt/test/util/make_includes.py +1 -1
  515. data/ext/libmongocrypt/libmongocrypt/test/util/util.c +771 -882
  516. data/ext/libmongocrypt/libmongocrypt/test/util/util.h +33 -55
  517. data/lib/libmongocrypt_helper/version.rb +2 -2
  518. metadata +245 -111
  519. checksums.yaml.gz.sig +0 -0
  520. data/ext/libmongocrypt/libmongocrypt/VERSION_CURRENT +0 -1
  521. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/test/resources/fle2-find-range-explicit/int32/encrypted-payload.json +0 -26
  522. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/test/resources/fle2-find-range-explicit/int32/key-document.json +0 -0
  523. data/ext/libmongocrypt/libmongocrypt/bindings/node/CHANGELOG.md +0 -81
  524. data/ext/libmongocrypt/libmongocrypt/bindings/node/LICENSE +0 -201
  525. data/ext/libmongocrypt/libmongocrypt/bindings/node/binding.gyp +0 -79
  526. data/ext/libmongocrypt/libmongocrypt/bindings/node/etc/README.hbs +0 -44
  527. data/ext/libmongocrypt/libmongocrypt/bindings/node/etc/build-static.sh +0 -39
  528. data/ext/libmongocrypt/libmongocrypt/bindings/node/index.d.ts +0 -515
  529. data/ext/libmongocrypt/libmongocrypt/bindings/node/lib/autoEncrypter.js +0 -420
  530. data/ext/libmongocrypt/libmongocrypt/bindings/node/lib/buffer_pool.js +0 -123
  531. data/ext/libmongocrypt/libmongocrypt/bindings/node/lib/clientEncryption.js +0 -699
  532. data/ext/libmongocrypt/libmongocrypt/bindings/node/lib/common.js +0 -100
  533. data/ext/libmongocrypt/libmongocrypt/bindings/node/lib/credentialsProvider.js +0 -33
  534. data/ext/libmongocrypt/libmongocrypt/bindings/node/lib/cryptoCallbacks.js +0 -87
  535. data/ext/libmongocrypt/libmongocrypt/bindings/node/lib/index.js +0 -42
  536. data/ext/libmongocrypt/libmongocrypt/bindings/node/lib/mongocryptdManager.js +0 -66
  537. data/ext/libmongocrypt/libmongocrypt/bindings/node/lib/stateMachine.js +0 -487
  538. data/ext/libmongocrypt/libmongocrypt/bindings/node/package-lock.json +0 -16051
  539. data/ext/libmongocrypt/libmongocrypt/bindings/node/package.json +0 -81
  540. data/ext/libmongocrypt/libmongocrypt/bindings/node/src/mongocrypt.cc +0 -929
  541. data/ext/libmongocrypt/libmongocrypt/bindings/node/src/mongocrypt.h +0 -114
  542. data/ext/libmongocrypt/libmongocrypt/bindings/node/test/autoEncrypter.test.js +0 -953
  543. data/ext/libmongocrypt/libmongocrypt/bindings/node/test/buffer_pool.test.js +0 -91
  544. data/ext/libmongocrypt/libmongocrypt/bindings/node/test/clientEncryption.test.js +0 -701
  545. data/ext/libmongocrypt/libmongocrypt/bindings/node/test/credentialsProvider.test.js +0 -163
  546. data/ext/libmongocrypt/libmongocrypt/bindings/node/test/cryptoCallbacks.test.js +0 -284
  547. data/ext/libmongocrypt/libmongocrypt/bindings/node/test/data/README.md +0 -5
  548. data/ext/libmongocrypt/libmongocrypt/bindings/node/test/data/cmd.json +0 -6
  549. data/ext/libmongocrypt/libmongocrypt/bindings/node/test/data/collection-info.json +0 -37
  550. data/ext/libmongocrypt/libmongocrypt/bindings/node/test/data/encrypted-document-nested.json +0 -8
  551. data/ext/libmongocrypt/libmongocrypt/bindings/node/test/data/encrypted-document.json +0 -11
  552. data/ext/libmongocrypt/libmongocrypt/bindings/node/test/data/encryptedFields.json +0 -30
  553. data/ext/libmongocrypt/libmongocrypt/bindings/node/test/data/key-document.json +0 -32
  554. data/ext/libmongocrypt/libmongocrypt/bindings/node/test/data/key1-document.json +0 -30
  555. data/ext/libmongocrypt/libmongocrypt/bindings/node/test/data/mongocryptd-reply.json +0 -18
  556. data/ext/libmongocrypt/libmongocrypt/bindings/node/test/mongocryptdManager.test.js +0 -48
  557. data/ext/libmongocrypt/libmongocrypt/bindings/node/test/release.test.js +0 -59
  558. data/ext/libmongocrypt/libmongocrypt/bindings/node/test/requirements.helper.js +0 -29
  559. data/ext/libmongocrypt/libmongocrypt/bindings/node/test/stateMachine.test.js +0 -331
  560. data/ext/libmongocrypt/libmongocrypt/bindings/node/test/tools/mongodb_reporter.js +0 -325
  561. data/ext/libmongocrypt/libmongocrypt/bindings/python/setup.py +0 -84
  562. data/ext/libmongocrypt/libmongocrypt/bindings/python/test/data/fle2-find-range-explicit/int32/encrypted-payload.json +0 -26
  563. data/ext/libmongocrypt/libmongocrypt/bindings/python/test-requirements.txt +0 -12
  564. data/ext/libmongocrypt/libmongocrypt/debian/build_snapshot.sh +0 -79
  565. data/ext/libmongocrypt/libmongocrypt/debian/changelog +0 -105
  566. data/ext/libmongocrypt/libmongocrypt/debian/compat +0 -1
  567. data/ext/libmongocrypt/libmongocrypt/debian/control +0 -41
  568. data/ext/libmongocrypt/libmongocrypt/debian/copyright +0 -129
  569. data/ext/libmongocrypt/libmongocrypt/debian/gbp.conf +0 -23
  570. data/ext/libmongocrypt/libmongocrypt/debian/libmongocrypt-dev.dirs +0 -2
  571. data/ext/libmongocrypt/libmongocrypt/debian/libmongocrypt-dev.install +0 -5
  572. data/ext/libmongocrypt/libmongocrypt/debian/libmongocrypt0.dirs +0 -1
  573. data/ext/libmongocrypt/libmongocrypt/debian/libmongocrypt0.install +0 -1
  574. data/ext/libmongocrypt/libmongocrypt/debian/rules +0 -46
  575. data/ext/libmongocrypt/libmongocrypt/debian/source/format +0 -1
  576. data/ext/libmongocrypt/libmongocrypt/debian/source/lintian-overrides +0 -3
  577. data/ext/libmongocrypt/libmongocrypt/debian/source/options +0 -1
  578. data/ext/libmongocrypt/libmongocrypt/debian/watch +0 -3
  579. data/ext/libmongocrypt/libmongocrypt/test/data/aes-ctr.cstructs +0 -359
  580. data/ext/libmongocrypt/libmongocrypt/test/data/compact/success/mongocryptd-reply.json +0 -72
  581. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-aead.cstructs +0 -109
  582. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range-explicit/int32-nominmax/encrypted-payload.json +0 -26
  583. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range-explicit/int32-nominmax/rangeopts.json +0 -5
  584. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range-explicit/int32-nominmax/RNG_DATA.h +0 -70
  585. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range-explicit/int32-nominmax/encrypted-payload.json +0 -8
  586. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range-explicit/int32-nominmax/rangeopts.json +0 -5
  587. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range-explicit/int32-nominmax/value-to-encrypt.json +0 -5
  588. data/ext/libmongocrypt/libmongocrypt/test/data/fle2.cstructs +0 -33
  589. data.tar.gz.sig +0 -0
  590. metadata.gz.sig +0 -0
  591. /data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/test/resources/{fle2-find-range-explicit → fle2-find-range-explicit-v2}/int32/key-filter.json +0 -0
  592. /data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/test/resources/{fle2-find-range-explicit → fle2-find-range-explicit-v2}/int32/value-to-encrypt.json +0 -0
  593. /data/ext/libmongocrypt/libmongocrypt/bindings/python/test/data/{fle2-find-range-explicit → fle2-find-range-explicit-v2}/int32/value-to-encrypt.json +0 -0
  594. /data/ext/libmongocrypt/libmongocrypt/bindings/{java/mongocrypt/src/test/resources/fle2-find-range-explicit → python/test/data/fle2-find-rangePreview-explicit}/int32/rangeopts.json +0 -0
  595. /data/ext/libmongocrypt/libmongocrypt/{test/data/fle2-find-range-explicit/int32-nominmax → bindings/python/test/data/fle2-find-rangePreview-explicit/int32}/value-to-encrypt.json +0 -0
  596. /data/ext/libmongocrypt/libmongocrypt/{bindings/node/test/data/kms-decrypt-reply.txt → test/data/kms-aws/decrypt-response.txt} +0 -0
  597. /data/ext/libmongocrypt/libmongocrypt/{bindings/node/test/data/kms-encrypt-reply.txt → test/data/kms-aws/encrypt-response.txt} +0 -0
  598. /data/ext/libmongocrypt/libmongocrypt/test/data/{gcp-auth → kms-gcp}/decrypt-response.txt +0 -0
  599. /data/ext/libmongocrypt/libmongocrypt/test/data/{gcp-auth → kms-gcp}/encrypt-response.txt +0 -0
  600. /data/ext/libmongocrypt/libmongocrypt/test/data/{gcp-auth → kms-gcp}/oauth-response.txt +0 -0
@@ -0,0 +1,61 @@
1
+ {
2
+ "ok": {
3
+ "$numberInt": "1"
4
+ },
5
+ "result": {
6
+ "insert": "test",
7
+ "documents": [
8
+ {
9
+ "plainText": "sample",
10
+ "encrypted": {
11
+ "$binary": {
12
+ "base64": "A7AAAAAQdAABAAAAEGEAAwAAAAVraQAQAAAABBI0VngSNJh2EjQSNFZ4kBIFa3UAEAAAAASrze+rEjSYdhI0EjRWeJASA3YAUQAAABN2AACABMa6ngEAAAAAAAAAJDATbWluAAAAAAAAAAAAAAAAAAAAQDATbWF4ABWB6X30ECIRAAAAAAAAQDAQcHJlY2lzaW9uAAIAAAAAEmNtAAAAAAAAAAAAEnMAAQAAAAAAAAAA",
13
+ "subType": "6"
14
+ }
15
+ }
16
+ }
17
+ ],
18
+ "encryptionInformation": {
19
+ "type": {
20
+ "$numberInt": "1"
21
+ },
22
+ "schema": {
23
+ "db.test": {
24
+ "escCollection": "fle2.test.esc",
25
+ "ecocCollection": "fle2.test.ecoc",
26
+ "fields": [
27
+ {
28
+ "keyId": {
29
+ "$binary": {
30
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
31
+ "subType": "04"
32
+ }
33
+ },
34
+ "path": "encrypted",
35
+ "bsonType": "decimal",
36
+ "queries": {
37
+ "queryType": "rangePreview",
38
+ "contention": {
39
+ "$numberInt": "0"
40
+ },
41
+ "sparsity": {
42
+ "$numberInt": "1"
43
+ },
44
+ "min": {
45
+ "$numberDecimal": "0"
46
+ },
47
+ "max": {
48
+ "$numberDecimal": "1234567890123456789"
49
+ },
50
+ "precision": {
51
+ "$numberInt": "2"
52
+ }
53
+ }
54
+ }
55
+ ]
56
+ }
57
+ }
58
+ }
59
+ },
60
+ "hasEncryptedPlaceholders": true
61
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "insert": "test",
3
+ "documents": [
4
+ {
5
+ "plainText": "sample",
6
+ "encrypted": {"$numberDecimal":"1.23000000000000"}
7
+ }
8
+ ]
9
+ }
@@ -0,0 +1,27 @@
1
+ {
2
+ "db.test": {
3
+ "escCollection": "fle2.test.esc",
4
+ "ecocCollection": "fle2.test.ecoc",
5
+ "fields": [
6
+ {
7
+ "keyId": {
8
+ "$binary": {
9
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
10
+ "subType": "04"
11
+ }
12
+ },
13
+ "path": "encrypted",
14
+ "bsonType": "decimal",
15
+ "queries": {
16
+ "queryType": "rangePreview",
17
+ "contention": {
18
+ "$numberInt": "0"
19
+ },
20
+ "sparsity": {
21
+ "$numberInt": "1"
22
+ }
23
+ }
24
+ }
25
+ ]
26
+ }
27
+ }
@@ -0,0 +1,44 @@
1
+ {
2
+ "insert": "test",
3
+ "documents": [
4
+ {
5
+ "plainText": "sample",
6
+ "encrypted": {
7
+ "$binary": {
8
+ "base64": "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",
9
+ "subType": "6"
10
+ }
11
+ }
12
+ }
13
+ ],
14
+ "encryptionInformation": {
15
+ "type": 1,
16
+ "schema": {
17
+ "db.test": {
18
+ "escCollection": "fle2.test.esc",
19
+ "ecocCollection": "fle2.test.ecoc",
20
+ "fields": [
21
+ {
22
+ "keyId": {
23
+ "$binary": {
24
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
25
+ "subType": "04"
26
+ }
27
+ },
28
+ "path": "encrypted",
29
+ "bsonType": "decimal",
30
+ "queries": {
31
+ "queryType": "rangePreview",
32
+ "contention": {
33
+ "$numberInt": "0"
34
+ },
35
+ "sparsity": {
36
+ "$numberInt": "1"
37
+ }
38
+ }
39
+ }
40
+ ]
41
+ }
42
+ }
43
+ }
44
+ }
@@ -0,0 +1,52 @@
1
+ {
2
+ "ok": {
3
+ "$numberInt": "1"
4
+ },
5
+ "result": {
6
+ "insert": "test",
7
+ "documents": [
8
+ {
9
+ "plainText": "sample",
10
+ "encrypted": {
11
+ "$binary": {
12
+ "base64": "A6EAAAAQdAABAAAAEGEAAwAAAAVraQAQAAAABBI0VngSNJh2EjQSNFZ4kBIFa3UAEAAAAASrze+rEjSYdhI0EjRWeJASA3YAQgAAABN2AACwTivebwAAAAAAAAAAJDATbWluAP////9jjo03wIetvgnt/98TbWF4AP////9jjo03wIetvgnt/18AEmNtAAAAAAAAAAAAEnMAAQAAAAAAAAAA",
13
+ "subType": "6"
14
+ }
15
+ }
16
+ }
17
+ ],
18
+ "encryptionInformation": {
19
+ "type": {
20
+ "$numberInt": "1"
21
+ },
22
+ "schema": {
23
+ "db.test": {
24
+ "escCollection": "fle2.test.esc",
25
+ "ecocCollection": "fle2.test.ecoc",
26
+ "fields": [
27
+ {
28
+ "keyId": {
29
+ "$binary": {
30
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
31
+ "subType": "04"
32
+ }
33
+ },
34
+ "path": "encrypted",
35
+ "bsonType": "decimal",
36
+ "queries": {
37
+ "queryType": "rangePreview",
38
+ "contention": {
39
+ "$numberInt": "0"
40
+ },
41
+ "sparsity": {
42
+ "$numberInt": "1"
43
+ }
44
+ }
45
+ }
46
+ ]
47
+ }
48
+ }
49
+ }
50
+ },
51
+ "hasEncryptedPlaceholders": true
52
+ }
@@ -1,70 +1,70 @@
1
1
  // Defines the random data for IVs to obtain a deterministic
2
2
  // FLE2InsertUpdatePayload.
3
- #define RNG_DATA \
4
- "\xc1\xa1\x03\x4e\x80\xc5\x22\xf1\x6b\x0c\xa9\x39\x2f\xda\x68\x88" \
5
- "\xc0\x05\x26\x23\xfb\xa7\x85\x1e\xf8\x95\x4c\x23\xfe\x13\x26\x72" \
6
- "\x67\xa3\x19\xe1\xb7\x2c\x24\xef\x36\xa0\x14\x16\xc8\x57\xf0\xee" \
7
- "\xc9\xee\x1c\xa7\x25\x8e\x07\xe1\x47\x25\x72\x03\x32\x70\x7a\x9a" \
8
- "\x1c\x9d\x9c\x3f\x0c\xbd\xe3\x13\xff\x27\xba\xdd\xaa\x8c\x08\xa4" \
9
- "\x6b\x2f\xad\x5d\xce\x5f\xca\xaf\x75\xc3\xd9\xff\xe4\x5c\x36\xb9" \
10
- "\x02\xd9\xc9\x6e\xee\x43\x49\x28\x4e\x76\x94\xe9\x5a\xb9\x46\xb5" \
11
- "\x7c\xe2\xb7\x67\x1f\xfc\x02\xc6\xdd\xc9\x82\x26\x00\xd1\xd6\x67" \
12
- "\xe1\x89\x54\x31\x24\x9c\xb1\x3f\xd0\xd9\xde\xe4\x63\xd9\x9e\xd5" \
13
- "\x5a\xb7\x20\x26\x30\xab\x48\xbd\xac\x23\x5f\x95\x4b\x96\x17\x4f" \
14
- "\xd5\x97\x4d\xdc\x24\xd7\x46\xd8\x73\x6d\x95\x3f\x0a\x51\xdb\x60" \
15
- "\xe7\x60\xfc\x68\x5b\x78\x8e\x02\x19\x85\x44\x90\xb7\xe5\x60\xa4" \
16
- "\x8a\x93\x06\x13\xcb\x1d\x3d\x66\xba\x01\x26\x4b\x0c\x4d\xcf\x69" \
17
- "\x7a\xde\xb9\x2e\x40\xd1\x3b\x73\x7c\x6a\x9e\x3e\x1f\xa5\xff\x20" \
18
- "\x4e\x94\xd0\x1d\x7c\x9e\x22\xbe\xa2\xb1\xb5\xa2\xff\xf5\x47\xeb" \
19
- "\x59\xe7\xc6\x4a\x67\x0f\x0e\x7c\xef\x9a\x6f\x49\x63\xe5\x64\x2f" \
20
- "\xcc\x73\x63\xdd\x36\x28\x03\x4c\x9b\x7e\xd2\x30\x83\xce\x0b\xb1" \
21
- "\x20\x30\x83\xbf\x0c\x21\x44\x3d\xc3\x73\x42\x49\x57\x47\xcc\xfc" \
22
- "\x97\xa9\x1a\x8b\xd2\xc2\x2d\xe9\xbf\x14\xe2\x9a\x05\xc3\x27\xe9" \
23
- "\xa4\x1d\x55\x4f\xea\x78\x92\x81\xdb\x9e\x9e\x7d\x14\x12\xd3\x48" \
24
- "\x93\xec\xdd\xdf\x4e\xc3\x78\x35\x20\x7a\xde\xa0\x3a\xee\xd5\x8a" \
25
- "\xef\x0b\x39\x7d\x8f\xfd\x43\x50\xe2\x42\x0d\x76\xd8\xb9\x42\x0a" \
26
- "\x3d\xfe\xbd\x51\x78\x97\x88\xb8\x2f\xf9\x32\x4d\x0f\x70\x58\xf0" \
27
- "\xf9\xdf\xab\xc0\x58\x28\x9e\x8f\x7c\x34\x45\x4c\xc1\xc5\x18\x08" \
28
- "\xc9\x66\xf1\xfe\xea\xfb\x50\x6a\xbc\x85\x19\x10\x79\x64\x76\xf6" \
29
- "\xfa\x5b\xa4\xe7\x3b\xcc\x39\x35\x7d\x2c\xd8\x5f\x8f\xf2\xa1\x93" \
30
- "\x15\x34\x87\xc6\x01\xa7\xa0\x00\x94\x8c\x02\x31\x25\x5c\xe9\x97" \
31
- "\x9e\x3f\x0c\x72\xe6\x0f\x7f\x21\xe0\xb9\x17\x22\x33\xba\x69\x0c" \
32
- "\x9f\x61\xb8\x8d\x6b\x2f\x86\xa7\x2f\xbf\x7b\xec\x82\x8e\x58\x34" \
33
- "\xb2\x85\xe2\xaf\xf2\xd4\xa5\x7a\xba\x42\x17\xb5\xc8\xfc\xf4\x49" \
34
- "\x65\xf0\xc4\xd5\xbd\xe6\x3d\xba\x91\x36\x5a\x84\x08\x79\x7e\xc8" \
35
- "\xe0\x74\xa2\x34\x1a\xa6\xda\x1a\x84\x68\xb7\xa2\x66\x40\xd8\x1f" \
36
- "\x48\x81\x47\xaa\xe1\x47\x05\xac\x84\xde\x15\x5b\xdf\x2e\x6b\xdd" \
37
- "\x69\xaf\x9e\xca\xed\x99\xaf\x7d\x04\xb3\x8d\xcc\xf4\xa5\x7a\x6f" \
38
- "\x7b\x37\x72\x53\xc2\xe0\xbd\x08\x63\xb3\xa3\x12\x84\x25\x55\x1c" \
39
- "\x37\x7b\x77\x71\x6c\x19\x27\x27\x03\x97\x89\xaa\x93\x75\xf9\x06" \
40
- "\x69\x1a\x22\x7d\x35\x66\x3a\xe7\x72\x91\x23\xfb\x39\x00\xae\xa9" \
41
- "\x08\xe7\xae\x2a\xb7\xc2\x4d\xd6\x72\x15\xee\x70\xd1\xaf\x4f\x4d" \
42
- "\x22\xe6\xc8\x79\xd7\x41\xb2\x28\x5a\xa2\x3e\x0d\xbd\x33\xac\x7d" \
43
- "\x50\xcb\x96\xb5\xc2\x49\xc5\x7d\xd3\x36\x7c\xda\x6a\xc4\x54\xfa" \
44
- "\x3f\x7c\xa4\xde\xfe\x60\x2c\x89\xc4\x79\xe4\x31\xdd\xb7\xa1\x76" \
45
- "\x31\x43\xe1\xbb\xb8\x56\x78\x1e\x2d\xac\xe7\xff\x34\x8f\xc6\x36" \
46
- "\x2c\x6f\x43\x65\x2f\x7f\xd1\xe3\xd1\x89\xf5\xe9\x2b\xd4\x58\xd7" \
47
- "\xaf\x1b\xb4\xfb\xec\x61\xf0\xf3\x8f\x53\x9c\xaa\x31\x69\x17\x7d" \
48
- "\xca\x6e\x1b\xba\x0d\x60\x43\x4d\x35\x4b\x23\x88\x4a\x51\x29\x7e" \
49
- "\xfd\xb6\xe0\xd4\xcb\x94\x8b\xd3\x65\x22\x07\x9b\x39\xea\x46\xff" \
50
- "\x5f\xf2\x4e\xee\x2e\x8a\x8d\xe3\x5d\xc7\xa4\xfc\xd4\xec\xb3\xc1" \
51
- "\xe7\xbe\x19\x97\x7a\x7a\xc6\x2e\x0b\xcd\xc0\x94\x87\xcd\x5f\xc6" \
52
- "\x37\x08\x01\xf3\x38\x90\xb5\x77\x97\xdd\xc4\x42\xa9\xb5\xe6\xdb" \
53
- "\x7d\x4b\xfe\x4f\x5d\xc1\xe1\x5d\xde\x3d\x6a\x59\x70\x65\xb6\xeb" \
54
- "\xce\x0c\xdf\x97\x88\xee\x72\x08\x64\xd9\x09\x44\x23\x66\x3b\xc4" \
55
- "\x2c\x98\xfa\xfd\xd8\x6a\x04\xb9\xd1\xfc\xbf\xcb\xe1\xc1\x77\x3f" \
56
- "\x42\x84\xc2\x13\x14\xff\x56\x4c\xf3\x40\x87\xb5\x13\x0d\x06\x38" \
57
- "\x37\xc5\x15\xb6\xfd\x23\x80\x6e\x32\x59\xa1\x83\x2d\x73\xbb\xd5" \
58
- "\x4e\xfd\x2d\x37\x09\x38\xcd\x3d\xa5\xef\xe1\x0f\xe5\x36\xa9\x8d" \
59
- "\xbb\x27\xd4\x81\x5e\xdf\x63\x85\x67\x07\xed\x04\x84\x26\x82\x48" \
60
- "\x85\x83\xed\x8b\xe8\x71\x29\x96\x71\x00\xc5\x75\x5b\xe3\x4f\x4d" \
61
- "\xef\x2f\xfa\x88\xf2\x9a\xd0\xe3\xb8\x38\xdc\xd3\x12\x7a\x21\x65" \
62
- "\x38\xdc\xb9\x36\x86\x23\xa9\xbc\xa5\x4f\x50\xc2\xb6\x3d\x40\xd4" \
63
- "\xdc\x5b\x35\xf9\x89\xb0\x45\x7f\x3d\x2a\x61\xfd\x0e\xec\x00\x52" \
64
- "\x71\xa5\x1f\xe5\x49\xe0\x26\xf9\xd0\x2a\x1d\x5f\x3f\x9e\x82\x07" \
65
- "\xfb\xf7\xdb\xa1\x87\x56\xd6\x13\x4b\x2c\x8e\x73\xbc\x56\x98\x1d" \
66
- "\xae\xe6\x9d\xab\x15\x83\x0e\x0a\x4c\x3c\xd0\x11\x41\x96\xc0\x56" \
67
- "\x94\x7a\x1e\x0b\xc8\xec\x23\xa3\x9d\x6d\x01\x01\x22\xa7\xbd\x96" \
68
- "\x51\xb0\x6a\xab\x98\x7c\xcd\xd3\xff\xf0\x67\x63\x16\xf2\x2f\x62" \
69
- "\x3c\xbd\x8b\x4a\x49\xb0\xe4\xe3\x12\xd4\x6b\x12\x41\x32\x22\xc0" \
70
- "\x51\x0c\xaf\x7e\x01\x46\x2b\xd5\x50\x9c\xd6\xfd\x42\xb5\x11\x4b"
3
+ #define RNG_DATA \
4
+ "\xc1\xa1\x03\x4e\x80\xc5\x22\xf1\x6b\x0c\xa9\x39\x2f\xda\x68\x88" \
5
+ "\xc0\x05\x26\x23\xfb\xa7\x85\x1e\xf8\x95\x4c\x23\xfe\x13\x26\x72" \
6
+ "\x67\xa3\x19\xe1\xb7\x2c\x24\xef\x36\xa0\x14\x16\xc8\x57\xf0\xee" \
7
+ "\xc9\xee\x1c\xa7\x25\x8e\x07\xe1\x47\x25\x72\x03\x32\x70\x7a\x9a" \
8
+ "\x1c\x9d\x9c\x3f\x0c\xbd\xe3\x13\xff\x27\xba\xdd\xaa\x8c\x08\xa4" \
9
+ "\x6b\x2f\xad\x5d\xce\x5f\xca\xaf\x75\xc3\xd9\xff\xe4\x5c\x36\xb9" \
10
+ "\x02\xd9\xc9\x6e\xee\x43\x49\x28\x4e\x76\x94\xe9\x5a\xb9\x46\xb5" \
11
+ "\x7c\xe2\xb7\x67\x1f\xfc\x02\xc6\xdd\xc9\x82\x26\x00\xd1\xd6\x67" \
12
+ "\xe1\x89\x54\x31\x24\x9c\xb1\x3f\xd0\xd9\xde\xe4\x63\xd9\x9e\xd5" \
13
+ "\x5a\xb7\x20\x26\x30\xab\x48\xbd\xac\x23\x5f\x95\x4b\x96\x17\x4f" \
14
+ "\xd5\x97\x4d\xdc\x24\xd7\x46\xd8\x73\x6d\x95\x3f\x0a\x51\xdb\x60" \
15
+ "\xe7\x60\xfc\x68\x5b\x78\x8e\x02\x19\x85\x44\x90\xb7\xe5\x60\xa4" \
16
+ "\x8a\x93\x06\x13\xcb\x1d\x3d\x66\xba\x01\x26\x4b\x0c\x4d\xcf\x69" \
17
+ "\x7a\xde\xb9\x2e\x40\xd1\x3b\x73\x7c\x6a\x9e\x3e\x1f\xa5\xff\x20" \
18
+ "\x4e\x94\xd0\x1d\x7c\x9e\x22\xbe\xa2\xb1\xb5\xa2\xff\xf5\x47\xeb" \
19
+ "\x59\xe7\xc6\x4a\x67\x0f\x0e\x7c\xef\x9a\x6f\x49\x63\xe5\x64\x2f" \
20
+ "\xcc\x73\x63\xdd\x36\x28\x03\x4c\x9b\x7e\xd2\x30\x83\xce\x0b\xb1" \
21
+ "\x20\x30\x83\xbf\x0c\x21\x44\x3d\xc3\x73\x42\x49\x57\x47\xcc\xfc" \
22
+ "\x97\xa9\x1a\x8b\xd2\xc2\x2d\xe9\xbf\x14\xe2\x9a\x05\xc3\x27\xe9" \
23
+ "\xa4\x1d\x55\x4f\xea\x78\x92\x81\xdb\x9e\x9e\x7d\x14\x12\xd3\x48" \
24
+ "\x93\xec\xdd\xdf\x4e\xc3\x78\x35\x20\x7a\xde\xa0\x3a\xee\xd5\x8a" \
25
+ "\xef\x0b\x39\x7d\x8f\xfd\x43\x50\xe2\x42\x0d\x76\xd8\xb9\x42\x0a" \
26
+ "\x3d\xfe\xbd\x51\x78\x97\x88\xb8\x2f\xf9\x32\x4d\x0f\x70\x58\xf0" \
27
+ "\xf9\xdf\xab\xc0\x58\x28\x9e\x8f\x7c\x34\x45\x4c\xc1\xc5\x18\x08" \
28
+ "\xc9\x66\xf1\xfe\xea\xfb\x50\x6a\xbc\x85\x19\x10\x79\x64\x76\xf6" \
29
+ "\xfa\x5b\xa4\xe7\x3b\xcc\x39\x35\x7d\x2c\xd8\x5f\x8f\xf2\xa1\x93" \
30
+ "\x15\x34\x87\xc6\x01\xa7\xa0\x00\x94\x8c\x02\x31\x25\x5c\xe9\x97" \
31
+ "\x9e\x3f\x0c\x72\xe6\x0f\x7f\x21\xe0\xb9\x17\x22\x33\xba\x69\x0c" \
32
+ "\x9f\x61\xb8\x8d\x6b\x2f\x86\xa7\x2f\xbf\x7b\xec\x82\x8e\x58\x34" \
33
+ "\xb2\x85\xe2\xaf\xf2\xd4\xa5\x7a\xba\x42\x17\xb5\xc8\xfc\xf4\x49" \
34
+ "\x65\xf0\xc4\xd5\xbd\xe6\x3d\xba\x91\x36\x5a\x84\x08\x79\x7e\xc8" \
35
+ "\xe0\x74\xa2\x34\x1a\xa6\xda\x1a\x84\x68\xb7\xa2\x66\x40\xd8\x1f" \
36
+ "\x48\x81\x47\xaa\xe1\x47\x05\xac\x84\xde\x15\x5b\xdf\x2e\x6b\xdd" \
37
+ "\x69\xaf\x9e\xca\xed\x99\xaf\x7d\x04\xb3\x8d\xcc\xf4\xa5\x7a\x6f" \
38
+ "\x7b\x37\x72\x53\xc2\xe0\xbd\x08\x63\xb3\xa3\x12\x84\x25\x55\x1c" \
39
+ "\x37\x7b\x77\x71\x6c\x19\x27\x27\x03\x97\x89\xaa\x93\x75\xf9\x06" \
40
+ "\x69\x1a\x22\x7d\x35\x66\x3a\xe7\x72\x91\x23\xfb\x39\x00\xae\xa9" \
41
+ "\x08\xe7\xae\x2a\xb7\xc2\x4d\xd6\x72\x15\xee\x70\xd1\xaf\x4f\x4d" \
42
+ "\x22\xe6\xc8\x79\xd7\x41\xb2\x28\x5a\xa2\x3e\x0d\xbd\x33\xac\x7d" \
43
+ "\x50\xcb\x96\xb5\xc2\x49\xc5\x7d\xd3\x36\x7c\xda\x6a\xc4\x54\xfa" \
44
+ "\x3f\x7c\xa4\xde\xfe\x60\x2c\x89\xc4\x79\xe4\x31\xdd\xb7\xa1\x76" \
45
+ "\x31\x43\xe1\xbb\xb8\x56\x78\x1e\x2d\xac\xe7\xff\x34\x8f\xc6\x36" \
46
+ "\x2c\x6f\x43\x65\x2f\x7f\xd1\xe3\xd1\x89\xf5\xe9\x2b\xd4\x58\xd7" \
47
+ "\xaf\x1b\xb4\xfb\xec\x61\xf0\xf3\x8f\x53\x9c\xaa\x31\x69\x17\x7d" \
48
+ "\xca\x6e\x1b\xba\x0d\x60\x43\x4d\x35\x4b\x23\x88\x4a\x51\x29\x7e" \
49
+ "\xfd\xb6\xe0\xd4\xcb\x94\x8b\xd3\x65\x22\x07\x9b\x39\xea\x46\xff" \
50
+ "\x5f\xf2\x4e\xee\x2e\x8a\x8d\xe3\x5d\xc7\xa4\xfc\xd4\xec\xb3\xc1" \
51
+ "\xe7\xbe\x19\x97\x7a\x7a\xc6\x2e\x0b\xcd\xc0\x94\x87\xcd\x5f\xc6" \
52
+ "\x37\x08\x01\xf3\x38\x90\xb5\x77\x97\xdd\xc4\x42\xa9\xb5\xe6\xdb" \
53
+ "\x7d\x4b\xfe\x4f\x5d\xc1\xe1\x5d\xde\x3d\x6a\x59\x70\x65\xb6\xeb" \
54
+ "\xce\x0c\xdf\x97\x88\xee\x72\x08\x64\xd9\x09\x44\x23\x66\x3b\xc4" \
55
+ "\x2c\x98\xfa\xfd\xd8\x6a\x04\xb9\xd1\xfc\xbf\xcb\xe1\xc1\x77\x3f" \
56
+ "\x42\x84\xc2\x13\x14\xff\x56\x4c\xf3\x40\x87\xb5\x13\x0d\x06\x38" \
57
+ "\x37\xc5\x15\xb6\xfd\x23\x80\x6e\x32\x59\xa1\x83\x2d\x73\xbb\xd5" \
58
+ "\x4e\xfd\x2d\x37\x09\x38\xcd\x3d\xa5\xef\xe1\x0f\xe5\x36\xa9\x8d" \
59
+ "\xbb\x27\xd4\x81\x5e\xdf\x63\x85\x67\x07\xed\x04\x84\x26\x82\x48" \
60
+ "\x85\x83\xed\x8b\xe8\x71\x29\x96\x71\x00\xc5\x75\x5b\xe3\x4f\x4d" \
61
+ "\xef\x2f\xfa\x88\xf2\x9a\xd0\xe3\xb8\x38\xdc\xd3\x12\x7a\x21\x65" \
62
+ "\x38\xdc\xb9\x36\x86\x23\xa9\xbc\xa5\x4f\x50\xc2\xb6\x3d\x40\xd4" \
63
+ "\xdc\x5b\x35\xf9\x89\xb0\x45\x7f\x3d\x2a\x61\xfd\x0e\xec\x00\x52" \
64
+ "\x71\xa5\x1f\xe5\x49\xe0\x26\xf9\xd0\x2a\x1d\x5f\x3f\x9e\x82\x07" \
65
+ "\xfb\xf7\xdb\xa1\x87\x56\xd6\x13\x4b\x2c\x8e\x73\xbc\x56\x98\x1d" \
66
+ "\xae\xe6\x9d\xab\x15\x83\x0e\x0a\x4c\x3c\xd0\x11\x41\x96\xc0\x56" \
67
+ "\x94\x7a\x1e\x0b\xc8\xec\x23\xa3\x9d\x6d\x01\x01\x22\xa7\xbd\x96" \
68
+ "\x51\xb0\x6a\xab\x98\x7c\xcd\xd3\xff\xf0\x67\x63\x16\xf2\x2f\x62" \
69
+ "\x3c\xbd\x8b\x4a\x49\xb0\xe4\xe3\x12\xd4\x6b\x12\x41\x32\x22\xc0" \
70
+ "\x51\x0c\xaf\x7e\x01\x46\x2b\xd5\x50\x9c\xd6\xfd\x42\xb5\x11\x4b"
@@ -1,21 +1,21 @@
1
1
  // Defines the random data for IVs to obtain a deterministic
2
2
  // FLE2InsertUpdatePayload.
3
- #define RNG_DATA \
4
- "\xda\x16\x8b\x32\xc5\xeb\x17\x3d\x6a\x02\xb8\x27\x04\x24\xd3\xb8" \
5
- "\x50\x8d\x80\xf9\xfb\xc9\x7f\x40\xa2\x76\xc6\xda\x45\x98\xfc\x13" \
6
- "\xd6\x36\x28\x2a\x80\xa3\xdd\xf8\xa1\x15\x0a\xcc\x72\xe5\x8f\x1a" \
7
- "\xea\x81\x5f\x2c\xb2\xbc\x4e\x09\xaa\xac\xe0\x4f\x1d\x5d\x91\xc1" \
8
- "\x5d\x84\x81\x60\xca\x0f\x02\x9c\x66\xa6\xa1\x80\xe7\x8b\xb5\xca" \
9
- "\xdd\x1c\xfd\x9a\xd6\x2a\x3e\x03\xf7\x21\x92\x9d\xac\x47\x01\x7c" \
10
- "\x3c\x5e\xd4\x96\xfd\x13\x06\x11\xfe\x5a\x61\xcf\x42\x3b\xd9\x05" \
11
- "\xea\x37\x99\x12\x5f\xe8\x8c\x86\x33\xef\x9c\x6d\xa5\xc2\x51\x2a" \
12
- "\xda\x56\x83\x53\x62\x01\x76\x96\x18\x3b\x30\x97\xaa\xd3\xc8\x19" \
13
- "\xf8\xff\x94\x31\x63\x9d\x33\x48\x56\x15\xd5\x06\xf3\x03\x1b\x74" \
14
- "\xfb\x61\x49\x63\x6e\x3c\xc9\xc4\xe7\x11\x9f\x58\x88\x2f\xad\x7b" \
15
- "\xc1\xea\xfa\x04\x28\x08\x1f\xd2\xec\xa2\xbc\x7a\x7d\xc7\xb1\xfc" \
16
- "\xe5\x21\xb4\xe7\x9c\x27\xc7\x77\x62\x53\x09\x2a\xc3\x9d\x51\x5c" \
17
- "\xac\x7d\xa9\xca\x52\x73\xff\x75\x12\xe3\xf9\x94\x18\xef\xdb\x3b" \
18
- "\xec\x2f\xa9\xcd\xf1\x8b\x80\x61\xaa\xbd\x96\x72\xc6\x3b\xbd\x69" \
19
- "\x1a\x75\x61\x8f\xa4\xe1\xda\x32\xa5\xad\x6c\x8f\x16\x05\x3d\xd8" \
20
- "\x00\x95\xc6\x6c\xfe\x30\x75\xc5\x53\x76\xf7\x28\xbf\xcc\x7d\x30" \
21
- "\xec\x86\xfd\x48\xa5\x15\xb5\x02\x3b\xef\xd9\x32\x01\xa8\x5c\x2a"
3
+ #define RNG_DATA \
4
+ "\xda\x16\x8b\x32\xc5\xeb\x17\x3d\x6a\x02\xb8\x27\x04\x24\xd3\xb8" \
5
+ "\x50\x8d\x80\xf9\xfb\xc9\x7f\x40\xa2\x76\xc6\xda\x45\x98\xfc\x13" \
6
+ "\xd6\x36\x28\x2a\x80\xa3\xdd\xf8\xa1\x15\x0a\xcc\x72\xe5\x8f\x1a" \
7
+ "\xea\x81\x5f\x2c\xb2\xbc\x4e\x09\xaa\xac\xe0\x4f\x1d\x5d\x91\xc1" \
8
+ "\x5d\x84\x81\x60\xca\x0f\x02\x9c\x66\xa6\xa1\x80\xe7\x8b\xb5\xca" \
9
+ "\xdd\x1c\xfd\x9a\xd6\x2a\x3e\x03\xf7\x21\x92\x9d\xac\x47\x01\x7c" \
10
+ "\x3c\x5e\xd4\x96\xfd\x13\x06\x11\xfe\x5a\x61\xcf\x42\x3b\xd9\x05" \
11
+ "\xea\x37\x99\x12\x5f\xe8\x8c\x86\x33\xef\x9c\x6d\xa5\xc2\x51\x2a" \
12
+ "\xda\x56\x83\x53\x62\x01\x76\x96\x18\x3b\x30\x97\xaa\xd3\xc8\x19" \
13
+ "\xf8\xff\x94\x31\x63\x9d\x33\x48\x56\x15\xd5\x06\xf3\x03\x1b\x74" \
14
+ "\xfb\x61\x49\x63\x6e\x3c\xc9\xc4\xe7\x11\x9f\x58\x88\x2f\xad\x7b" \
15
+ "\xc1\xea\xfa\x04\x28\x08\x1f\xd2\xec\xa2\xbc\x7a\x7d\xc7\xb1\xfc" \
16
+ "\xe5\x21\xb4\xe7\x9c\x27\xc7\x77\x62\x53\x09\x2a\xc3\x9d\x51\x5c" \
17
+ "\xac\x7d\xa9\xca\x52\x73\xff\x75\x12\xe3\xf9\x94\x18\xef\xdb\x3b" \
18
+ "\xec\x2f\xa9\xcd\xf1\x8b\x80\x61\xaa\xbd\x96\x72\xc6\x3b\xbd\x69" \
19
+ "\x1a\x75\x61\x8f\xa4\xe1\xda\x32\xa5\xad\x6c\x8f\x16\x05\x3d\xd8" \
20
+ "\x00\x95\xc6\x6c\xfe\x30\x75\xc5\x53\x76\xf7\x28\xbf\xcc\x7d\x30" \
21
+ "\xec\x86\xfd\x48\xa5\x15\xb5\x02\x3b\xef\xd9\x32\x01\xa8\x5c\x2a"
@@ -0,0 +1,11 @@
1
+ {
2
+ "insert": "test",
3
+ "documents": [
4
+ {
5
+ "plainText": "sample",
6
+ "encrypted": {
7
+ "$numberDouble": "123.456"
8
+ }
9
+ }
10
+ ]
11
+ }
@@ -0,0 +1,30 @@
1
+ {
2
+ "db.test": {
3
+ "escCollection": "fle2.test.esc",
4
+ "ecocCollection": "fle2.test.ecoc",
5
+ "fields": [
6
+ {
7
+ "keyId": {
8
+ "$binary": {
9
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
10
+ "subType": "04"
11
+ }
12
+ },
13
+ "path": "encrypted",
14
+ "bsonType": "double",
15
+ "queries": {
16
+ "queryType": "range",
17
+ "contention": {
18
+ "$numberInt": "0"
19
+ },
20
+ "sparsity": {
21
+ "$numberInt": "1"
22
+ },
23
+ "min": 0.0,
24
+ "max": 200.0,
25
+ "precision": 2
26
+ }
27
+ }
28
+ ]
29
+ }
30
+ }
@@ -0,0 +1,47 @@
1
+ {
2
+ "insert": "test",
3
+ "documents": [
4
+ {
5
+ "plainText": "sample",
6
+ "encrypted": {
7
+ "$binary": {
8
+ "base64": "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",
9
+ "subType": "6"
10
+ }
11
+ }
12
+ }
13
+ ],
14
+ "encryptionInformation": {
15
+ "type": 1,
16
+ "schema": {
17
+ "db.test": {
18
+ "escCollection": "fle2.test.esc",
19
+ "ecocCollection": "fle2.test.ecoc",
20
+ "fields": [
21
+ {
22
+ "keyId": {
23
+ "$binary": {
24
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
25
+ "subType": "04"
26
+ }
27
+ },
28
+ "path": "encrypted",
29
+ "bsonType": "double",
30
+ "queries": {
31
+ "queryType": "range",
32
+ "contention": {
33
+ "$numberInt": "0"
34
+ },
35
+ "sparsity": {
36
+ "$numberInt": "1"
37
+ },
38
+ "min": 0.0,
39
+ "max": 200.0,
40
+ "precision": 2
41
+ }
42
+ }
43
+ ]
44
+ }
45
+ }
46
+ }
47
+ }
@@ -0,0 +1,55 @@
1
+ {
2
+ "ok": {
3
+ "$numberInt": "1"
4
+ },
5
+ "result": {
6
+ "insert": "test",
7
+ "documents": [
8
+ {
9
+ "plainText": "sample",
10
+ "encrypted": {
11
+ "$binary": {
12
+ "base64": "A5gAAAAQdAABAAAAEGEAAwAAAAVraQAQAAAABBI0VngSNJh2EjQSNFZ4kBIFa3UAEAAAAASrze+rEjSYdhI0EjRWeJASA3YAOQAAAAF2AHe+nxov3V5AAW1pbgAAAAAAAAAAAAFtYXgAAAAAAAAAaUAQcHJlY2lzaW9uAAIAAAAAEmNtAAAAAAAAAAAAEnMAAQAAAAAAAAAA",
13
+ "subType": "6"
14
+ }
15
+ }
16
+ }
17
+ ],
18
+ "encryptionInformation": {
19
+ "type": {
20
+ "$numberInt": "1"
21
+ },
22
+ "schema": {
23
+ "db.test": {
24
+ "escCollection": "fle2.test.esc",
25
+ "ecocCollection": "fle2.test.ecoc",
26
+ "fields": [
27
+ {
28
+ "keyId": {
29
+ "$binary": {
30
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
31
+ "subType": "04"
32
+ }
33
+ },
34
+ "path": "encrypted",
35
+ "bsonType": "double",
36
+ "queries": {
37
+ "queryType": "range",
38
+ "contention": {
39
+ "$numberInt": "0"
40
+ },
41
+ "sparsity": {
42
+ "$numberInt": "1"
43
+ },
44
+ "min": 0.0,
45
+ "max": 200.0,
46
+ "precision": 2
47
+ }
48
+ }
49
+ ]
50
+ }
51
+ }
52
+ }
53
+ },
54
+ "hasEncryptedPlaceholders": true
55
+ }