libmongocrypt-helper 1.12.0.0.1001 → 1.13.2.0.1001

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (491) hide show
  1. checksums.yaml +4 -4
  2. data/ext/libmongocrypt/libmongocrypt/CHANGELOG.md +19 -0
  3. data/ext/libmongocrypt/libmongocrypt/CMakeLists.txt +10 -0
  4. data/ext/libmongocrypt/libmongocrypt/CODEOWNERS +1 -4
  5. data/ext/libmongocrypt/libmongocrypt/CONTRIBUTING.md +14 -0
  6. data/ext/libmongocrypt/libmongocrypt/Earthfile +49 -50
  7. data/ext/libmongocrypt/libmongocrypt/README.md +8 -17
  8. data/ext/libmongocrypt/libmongocrypt/bindings/python/CHANGELOG.rst +6 -0
  9. data/ext/libmongocrypt/libmongocrypt/bindings/python/README.rst +1 -1
  10. data/ext/libmongocrypt/libmongocrypt/bindings/python/libmongocrypt-version.txt +1 -1
  11. data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/binding.py +39 -1
  12. data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/mongocrypt.py +32 -0
  13. data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/version.py +1 -1
  14. data/ext/libmongocrypt/libmongocrypt/bindings/python/release.sh +1 -1
  15. data/ext/libmongocrypt/libmongocrypt/bindings/python/sbom.json +8 -8
  16. data/ext/libmongocrypt/libmongocrypt/bindings/python/test/data/compact/success/encrypted-field-config-map.json +0 -1
  17. data/ext/libmongocrypt/libmongocrypt/bindings/python/test/data/encrypted-field-config-map.json +0 -2
  18. data/ext/libmongocrypt/libmongocrypt/bindings/python/test/test_mongocrypt.py +11 -11
  19. data/ext/libmongocrypt/libmongocrypt/cmake/FetchMongoC.cmake +4 -2
  20. data/ext/libmongocrypt/libmongocrypt/cmake/ImportBSON.cmake +3 -5
  21. data/ext/libmongocrypt/libmongocrypt/doc/releasing.md +14 -27
  22. data/ext/libmongocrypt/libmongocrypt/etc/cyclonedx.sbom.json +9 -9
  23. data/ext/libmongocrypt/libmongocrypt/etc/format.sh +0 -2
  24. data/ext/libmongocrypt/libmongocrypt/etc/libbson-remove-GCC-diagnostic-in-functions.patch +158 -0
  25. data/ext/libmongocrypt/libmongocrypt/etc/libbson-remove-GCC-diagnostic-pragma.patch +3 -3
  26. data/ext/libmongocrypt/libmongocrypt/etc/purls.txt +1 -1
  27. data/ext/libmongocrypt/libmongocrypt/integrating.md +42 -11
  28. data/ext/libmongocrypt/libmongocrypt/kms-message/src/kms_crypto_windows.c +2 -2
  29. data/ext/libmongocrypt/libmongocrypt/kms-message/src/kms_message.c +1 -1
  30. data/ext/libmongocrypt/libmongocrypt/kms-message/src/kms_message_private.h +2 -2
  31. data/ext/libmongocrypt/libmongocrypt/kms-message/src/kms_request.c +3 -3
  32. data/ext/libmongocrypt/libmongocrypt/kms-message/test/test_kmip_reader_writer.c +5 -5
  33. data/ext/libmongocrypt/libmongocrypt/kms-message/test/test_kms_assert.h +25 -8
  34. data/ext/libmongocrypt/libmongocrypt/kms-message/test/test_kms_azure_online.c +2 -2
  35. data/ext/libmongocrypt/libmongocrypt/kms-message/test/test_kms_gcp_online.c +3 -3
  36. data/ext/libmongocrypt/libmongocrypt/kms-message/test/test_kms_request.c +12 -10
  37. data/ext/libmongocrypt/libmongocrypt/src/mc-efc-private.h +5 -0
  38. data/ext/libmongocrypt/libmongocrypt/src/mc-efc.c +35 -1
  39. data/ext/libmongocrypt/libmongocrypt/src/mc-fle-blob-subtype-private.h +4 -1
  40. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-encryption-placeholder-private.h +79 -0
  41. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-encryption-placeholder.c +226 -2
  42. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-find-equality-payload-v2.c +0 -1
  43. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-find-equality-payload.c +0 -1
  44. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-insert-update-payload-private-v2.h +34 -0
  45. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-insert-update-payload-v2.c +165 -1
  46. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-insert-update-payload.c +0 -1
  47. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-payload-iev-private-v2.h +105 -7
  48. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-payload-iev-v2.c +381 -70
  49. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-tag-and-encrypted-metadata-block-private.h +7 -2
  50. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-tag-and-encrypted-metadata-block.c +17 -0
  51. data/ext/libmongocrypt/libmongocrypt/src/mc-schema-broker-private.h +126 -0
  52. data/ext/libmongocrypt/libmongocrypt/src/mc-schema-broker.c +1075 -0
  53. data/ext/libmongocrypt/libmongocrypt/src/mc-str-encode-string-sets-private.h +95 -0
  54. data/ext/libmongocrypt/libmongocrypt/src/mc-str-encode-string-sets.c +304 -0
  55. data/ext/libmongocrypt/libmongocrypt/src/mc-text-search-str-encode-private.h +45 -0
  56. data/ext/libmongocrypt/libmongocrypt/src/mc-text-search-str-encode.c +248 -0
  57. data/ext/libmongocrypt/libmongocrypt/src/mc-tokens-private.h +112 -2
  58. data/ext/libmongocrypt/libmongocrypt/src/mc-tokens.c +166 -2
  59. data/ext/libmongocrypt/libmongocrypt/src/mlib/windows-lean.h +2 -0
  60. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-buffer-private.h +11 -0
  61. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-buffer.c +36 -3
  62. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-ctx-decrypt.c +8 -4
  63. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-ctx-encrypt.c +430 -857
  64. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-ctx-private.h +5 -19
  65. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-kms-ctx.c +1 -1
  66. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-marking.c +516 -523
  67. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-opts-private.h +0 -4
  68. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-private.h +7 -12
  69. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-traverse-util.c +1 -1
  70. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-util.c +3 -1
  71. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt.c +6 -9
  72. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt.h +17 -0
  73. data/ext/libmongocrypt/libmongocrypt/src/os_posix/os_dll.c +3 -1
  74. data/ext/libmongocrypt/libmongocrypt/src/unicode/case-fold-map.c +1434 -0
  75. data/ext/libmongocrypt/libmongocrypt/src/unicode/diacritic-fold-map.c +2884 -0
  76. data/ext/libmongocrypt/libmongocrypt/src/unicode/fold.c +139 -0
  77. data/ext/libmongocrypt/libmongocrypt/src/unicode/fold.h +58 -0
  78. data/ext/libmongocrypt/libmongocrypt/test/data/bulkWrite/unencrypted/payload.json +2 -2
  79. data/ext/libmongocrypt/libmongocrypt/test/data/cleanup/missing-key-id/collinfo.json +1 -0
  80. data/ext/libmongocrypt/libmongocrypt/test/data/cleanup/no-fields/collinfo.json +1 -0
  81. data/ext/libmongocrypt/libmongocrypt/test/data/cleanup/success/collinfo.json +1 -0
  82. data/ext/libmongocrypt/libmongocrypt/test/data/compact/anchor-pad/collinfo.json +1 -1
  83. data/ext/libmongocrypt/libmongocrypt/test/data/compact/anchor-pad/encrypted-payload-range-v2.json +20 -21
  84. data/ext/libmongocrypt/libmongocrypt/test/data/compact/missing-key-id/collinfo.json +2 -2
  85. data/ext/libmongocrypt/libmongocrypt/test/data/compact/no-fields/collinfo.json +1 -1
  86. data/ext/libmongocrypt/libmongocrypt/test/data/compact/no-range/collinfo.json +1 -1
  87. data/ext/libmongocrypt/libmongocrypt/test/data/compact/success/collinfo.json +1 -1
  88. data/ext/libmongocrypt/libmongocrypt/test/data/compact/success/encrypted-field-config-map.json +0 -1
  89. data/ext/libmongocrypt/libmongocrypt/test/data/compact/success/encrypted-payload-range-v2.json +20 -21
  90. data/ext/libmongocrypt/libmongocrypt/test/data/dollardb/omitted/cmd-to-mongocryptd.json +1 -2
  91. data/ext/libmongocrypt/libmongocrypt/test/data/dollardb/omitted/collinfo.json +2 -2
  92. data/ext/libmongocrypt/libmongocrypt/test/data/dollardb/omitted/encrypted-payload.json +2 -3
  93. data/ext/libmongocrypt/libmongocrypt/test/data/dollardb/omitted/mongocryptd-reply.json +1 -2
  94. data/ext/libmongocrypt/libmongocrypt/test/data/dollardb/preserved/cmd-to-mongocryptd.json +1 -2
  95. data/ext/libmongocrypt/libmongocrypt/test/data/dollardb/preserved/collinfo.json +2 -2
  96. data/ext/libmongocrypt/libmongocrypt/test/data/dollardb/preserved/encrypted-payload.json +2 -3
  97. data/ext/libmongocrypt/libmongocrypt/test/data/dollardb/preserved/mongocryptd-reply.json +1 -2
  98. data/ext/libmongocrypt/libmongocrypt/test/data/dollardb/preserved_empty/cmd-to-mongocryptd.json +1 -2
  99. data/ext/libmongocrypt/libmongocrypt/test/data/dollardb/preserved_empty/collinfo.json +2 -2
  100. data/ext/libmongocrypt/libmongocrypt/test/data/dollardb/preserved_empty/mongocryptd-reply.json +1 -2
  101. data/ext/libmongocrypt/libmongocrypt/test/data/dollardb/preserved_fle1/collinfo.json +2 -1
  102. data/ext/libmongocrypt/libmongocrypt/test/data/efc/efc-extraField.json +0 -1
  103. data/ext/libmongocrypt/libmongocrypt/test/data/efc/efc-missingKeyId.json +0 -1
  104. data/ext/libmongocrypt/libmongocrypt/test/data/efc/efc-oneField-badVersionSet.json +23 -0
  105. data/ext/libmongocrypt/libmongocrypt/test/data/efc/efc-oneField-goodVersionSet.json +23 -0
  106. data/ext/libmongocrypt/libmongocrypt/test/data/efc/efc-oneField.json +0 -1
  107. data/ext/libmongocrypt/libmongocrypt/test/data/efc/efc-textSearchFields-badVersionSet.json +48 -0
  108. data/ext/libmongocrypt/libmongocrypt/test/data/efc/efc-textSearchFields-goodVersionSet.json +48 -0
  109. data/ext/libmongocrypt/libmongocrypt/test/data/efc/efc-textSearchFields.json +47 -0
  110. data/ext/libmongocrypt/libmongocrypt/test/data/efc/efc-twoFields.json +0 -1
  111. data/ext/libmongocrypt/libmongocrypt/test/data/encrypted-field-config-map.json +1 -3
  112. data/ext/libmongocrypt/libmongocrypt/test/data/explicit-decrypt/FLE1DeterministicEncryptedValue.json +8 -0
  113. data/ext/libmongocrypt/libmongocrypt/test/data/explicit-decrypt/FLE1EncryptionPlaceholder.json +8 -0
  114. data/ext/libmongocrypt/libmongocrypt/test/data/explicit-decrypt/FLE1RandomEncryptedValue.json +8 -0
  115. data/ext/libmongocrypt/libmongocrypt/test/data/explicit-decrypt/FLE2EncryptionPlaceholder.json +8 -0
  116. data/ext/libmongocrypt/libmongocrypt/test/data/explicit-decrypt/FLE2EqualityIndexedValueV2.json +8 -0
  117. data/ext/libmongocrypt/libmongocrypt/test/data/explicit-decrypt/FLE2FindEqualityPayloadV2.json +8 -0
  118. data/ext/libmongocrypt/libmongocrypt/test/data/explicit-decrypt/FLE2IndexedEqualityEncryptedValue.json +8 -0
  119. data/ext/libmongocrypt/libmongocrypt/test/data/explicit-decrypt/FLE2IndexedEqualityEncryptedValueV2.json +8 -0
  120. data/ext/libmongocrypt/libmongocrypt/test/data/explicit-decrypt/FLE2IndexedRangeEncryptedValue.json +8 -0
  121. data/ext/libmongocrypt/libmongocrypt/test/data/explicit-decrypt/FLE2IndexedRangeEncryptedValueV2.json +8 -0
  122. data/ext/libmongocrypt/libmongocrypt/test/data/explicit-decrypt/FLE2InsertUpdatePayload-with-edges-V2.json +8 -0
  123. data/ext/libmongocrypt/libmongocrypt/test/data/explicit-decrypt/FLE2InsertUpdatePayload-with-edges.json +8 -0
  124. data/ext/libmongocrypt/libmongocrypt/test/data/{fle2-explicit/insert-indexed.json → explicit-decrypt/FLE2InsertUpdatePayload.json} +1 -1
  125. data/ext/libmongocrypt/libmongocrypt/test/data/explicit-decrypt/FLE2InsertUpdatePayloadV2.json +8 -0
  126. data/ext/libmongocrypt/libmongocrypt/test/data/explicit-decrypt/FLE2RangeIndexedValueV2.json +8 -0
  127. data/ext/libmongocrypt/libmongocrypt/test/data/explicit-decrypt/FLE2UnindexedEncryptedValue.json +8 -0
  128. data/ext/libmongocrypt/libmongocrypt/test/data/explicit-decrypt/FLE2UnindexedEncryptedValueV2.json +8 -0
  129. data/ext/libmongocrypt/libmongocrypt/test/data/find-with-encryptionInformation.json +0 -1
  130. data/ext/libmongocrypt/libmongocrypt/test/data/fle1-explain/with-csfle/collinfo.json +2 -1
  131. data/ext/libmongocrypt/libmongocrypt/test/data/fle1-explain/with-mongocryptd/collinfo.json +2 -1
  132. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-bad-str-encode-version/bad-collinfo.json +26 -0
  133. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-bad-str-encode-version/bad-create-cmd-mongocryptd-reply.json +51 -0
  134. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-bad-str-encode-version/bad-create-cmd-to-mongocryptd.json +45 -0
  135. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-bad-str-encode-version/bad-create-cmd.json +18 -0
  136. data/ext/libmongocrypt/libmongocrypt/test/data/{fle2-find-range/int32/encrypted-field-map.json → fle2-bad-str-encode-version/bad-encrypted-field-config-map.json} +7 -12
  137. data/ext/libmongocrypt/libmongocrypt/test/data/{fle2-insert → fle2-bad-str-encode-version}/encrypted-payload.json +4 -4
  138. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-create/cmd-to-mongocryptd.json +1 -2
  139. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-create/encrypted-field-config-map.json +1 -2
  140. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-create-encrypted-collection/cmd-to-mongocryptd.json +44 -0
  141. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-create-encrypted-collection/cmd.json +17 -0
  142. data/ext/libmongocrypt/libmongocrypt/test/data/{fle2-find-equality/encrypted-field-map.json → fle2-create-encrypted-collection/encrypted-field-config-map.json} +9 -8
  143. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-create-encrypted-collection/encrypted-payload.json +17 -0
  144. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-create-encrypted-collection/mongocryptd-reply.json +50 -0
  145. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-create-encrypted-collection-encrypted-fields-unset-str-encode-version/cmd-to-mongocryptd.json +45 -0
  146. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-create-encrypted-collection-encrypted-fields-unset-str-encode-version/mongocryptd-reply.json +51 -0
  147. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-create-encrypted-collection-with-str-encode-version/cmd-to-mongocryptd.json +46 -0
  148. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-create-encrypted-collection-with-str-encode-version/cmd.json +18 -0
  149. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-create-encrypted-collection-with-str-encode-version/encrypted-field-config-map.json +25 -0
  150. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-create-encrypted-collection-with-str-encode-version/encrypted-payload.json +18 -0
  151. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-create-encrypted-collection-with-str-encode-version/mongocryptd-reply.json +52 -0
  152. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-delete/empty/collinfo.json +1 -1
  153. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-delete/empty/encrypted-field-config-map.json +0 -1
  154. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-delete/empty/encrypted-payload-v2.json +57 -59
  155. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-delete/empty/mongocryptd-reply.json +63 -64
  156. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-delete/success/collinfo.json +1 -1
  157. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-delete/success/encrypted-field-config-map.json +0 -1
  158. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-delete/success/encrypted-payload-v2.json +64 -66
  159. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-delete/success/mongocryptd-reply.json +69 -70
  160. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-explain/with-csfle/collinfo.json +1 -1
  161. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-explain/with-csfle/encrypted-payload.json +1 -2
  162. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-explain/with-mongocryptd/cmd-to-mongocryptd.json +1 -2
  163. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-explain/with-mongocryptd/collinfo.json +2 -2
  164. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-explain/with-mongocryptd/encrypted-payload.json +2 -3
  165. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-explain/with-mongocryptd/mongocryptd-reply.json +1 -2
  166. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-explicit/cmd-to-mongocryptd.json +0 -1
  167. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-explicit/cmd-to-mongod.json +0 -1
  168. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-explicit/reply-from-mongocryptd.json +0 -1
  169. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/int32/encrypted-field-map.json +0 -1
  170. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-text-search/cmd.json +9 -0
  171. data/ext/libmongocrypt/libmongocrypt/test/data/{fle2-find-range/date → fle2-insert-text-search}/encrypted-field-map.json +10 -9
  172. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-text-search/encrypted-payload.json +47 -0
  173. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-text-search/mongocryptd-reply.json +55 -0
  174. data/ext/libmongocrypt/libmongocrypt/test/data/{fle2-find-range/double → fle2-insert-text-search-with-str-encode-version}/encrypted-field-map.json +12 -10
  175. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-text-search-with-str-encode-version/encrypted-payload.json +47 -0
  176. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-text-search-with-str-encode-version/mongocryptd-reply.json +55 -0
  177. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-v2-with-str-encode-version/cmd.json +9 -0
  178. data/ext/libmongocrypt/libmongocrypt/test/data/{fle2-insert → fle2-insert-v2-with-str-encode-version}/encrypted-field-map.json +2 -2
  179. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-v2-with-str-encode-version/encrypted-payload.json +40 -0
  180. data/ext/libmongocrypt/libmongocrypt/test/data/{fle2-insert → fle2-insert-v2-with-str-encode-version}/mongocryptd-reply.json +2 -2
  181. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-text-search-create-encrypted-collection/cmd-to-mongocryptd.json +55 -0
  182. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-text-search-create-encrypted-collection/cmd.json +22 -0
  183. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-text-search-create-encrypted-collection/encrypted-field-config-map.json +29 -0
  184. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-text-search-create-encrypted-collection/encrypted-payload.json +23 -0
  185. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-text-search-create-encrypted-collection/mongocryptd-reply.json +61 -0
  186. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-text-search-create-encrypted-collection-with-str-encode-version/cmd-to-mongocryptd.json +56 -0
  187. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-text-search-create-encrypted-collection-with-str-encode-version/cmd.json +23 -0
  188. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-text-search-create-encrypted-collection-with-str-encode-version/encrypted-field-config-map.json +30 -0
  189. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-text-search-create-encrypted-collection-with-str-encode-version/encrypted-payload.json +23 -0
  190. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-text-search-create-encrypted-collection-with-str-encode-version/mongocryptd-reply.json +62 -0
  191. data/ext/libmongocrypt/libmongocrypt/test/data/iev-v2/FLECrudTest-insertOneText.json +20 -0
  192. data/ext/libmongocrypt/libmongocrypt/test/data/iev-v2/FLECrudTest-insertOneTextLarge.json +930 -0
  193. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/csfle/cmd-to-mongocryptd.json +60 -0
  194. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/csfle/cmd.json +14 -0
  195. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/csfle/collInfo-c1.json +39 -0
  196. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/csfle/collInfo-c2.json +39 -0
  197. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/csfle-facet/cmd.json +20 -0
  198. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/csfle-mismatch/cmd.json +14 -0
  199. data/ext/libmongocrypt/libmongocrypt/{bindings/java/mongocrypt/src/test/resources/collection-info.json → test/data/lookup/csfle-mismatch/collInfo-c1.json} +13 -11
  200. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/csfle-mismatch/collInfo-c3.json +39 -0
  201. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/csfle-nested/cmd.json +24 -0
  202. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/csfle-only-schemaMap/cmd-to-mongocryptd.json +60 -0
  203. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/csfle-only-schemaMap/cmd.json +14 -0
  204. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/csfle-only-schemaMap/schemaMap.json +40 -0
  205. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/csfle-schemaMap/cmd-to-mongocryptd.json +60 -0
  206. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/csfle-schemaMap/cmd.json +14 -0
  207. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/csfle-schemaMap/collInfo-c1.json +39 -0
  208. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/csfle-schemaMap/schemaMap.json +21 -0
  209. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/csfle-self/cmd-to-mongocryptd.json +34 -0
  210. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/csfle-self/cmd.json +14 -0
  211. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/csfle-self/collInfo-c1.json +39 -0
  212. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/csfle-sibling/cmd-to-mongocryptd.json +49 -0
  213. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/csfle-sibling/cmd.json +14 -0
  214. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/csfle-sibling/collInfo-c1.json +39 -0
  215. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/csfle-sibling/collInfo-c2.json +29 -0
  216. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/csfle-sibling/reply-from-mongocryptd.json +18 -0
  217. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/csfle-unionWith/cmd.json +21 -0
  218. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/csfle-view/cmd.json +14 -0
  219. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/csfle-view/collInfo-c1.json +39 -0
  220. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/csfle-view/collInfo-v1.json +11 -0
  221. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/csfle/csfle/cmd-to-mongocryptd.json +65 -0
  222. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/csfle/csfle/cmd-to-mongod.json +26 -0
  223. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/csfle/csfle/cmd.json +19 -0
  224. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/csfle/csfle/collInfo-c1.json +39 -0
  225. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/csfle/csfle/collInfo-c2.json +39 -0
  226. data/ext/libmongocrypt/libmongocrypt/{bindings/java/mongocrypt/src/test/resources/keys/ABCDEFAB123498761234123456789012-local-document.json → test/data/lookup/mixed/csfle/csfle/key-doc.json} +4 -4
  227. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/csfle/csfle/reply-from-mongocryptd.json +33 -0
  228. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/csfle/no-schema/cmd-to-mongocryptd.json +47 -0
  229. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/csfle/no-schema/cmd-to-mongod.json +26 -0
  230. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/csfle/no-schema/cmd.json +19 -0
  231. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/csfle/no-schema/collInfo-c1.json +39 -0
  232. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/csfle/no-schema/collInfo-c2.json +17 -0
  233. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/csfle/no-schema/key-doc.json +30 -0
  234. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/csfle/no-schema/reply-from-mongocryptd.json +33 -0
  235. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/csfle/qe/cmd-to-mongocryptd.json +70 -0
  236. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/csfle/qe/cmd.json +19 -0
  237. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/csfle/qe/collInfo-c1.json +39 -0
  238. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/csfle/qe/collInfo-c2.json +42 -0
  239. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/no-schema/csfle/cmd-to-mongocryptd.json +47 -0
  240. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/no-schema/csfle/cmd-to-mongod.json +26 -0
  241. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/no-schema/csfle/cmd.json +19 -0
  242. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/no-schema/csfle/collInfo-c1.json +17 -0
  243. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/no-schema/csfle/collInfo-c2.json +39 -0
  244. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/no-schema/csfle/key-doc.json +30 -0
  245. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/no-schema/csfle/reply-from-mongocryptd.json +33 -0
  246. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/no-schema/no-schema/cmd-to-mongocryptd.json +29 -0
  247. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/no-schema/no-schema/cmd-to-mongod.json +19 -0
  248. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/no-schema/no-schema/cmd.json +19 -0
  249. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/no-schema/no-schema/collInfo-c1.json +17 -0
  250. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/no-schema/no-schema/collInfo-c2.json +17 -0
  251. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/no-schema/no-schema/reply-from-mongocryptd.json +26 -0
  252. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/no-schema/qe/cmd-to-mongocryptd.json +53 -0
  253. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/no-schema/qe/cmd-to-mongod.json +58 -0
  254. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/no-schema/qe/cmd.json +19 -0
  255. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/no-schema/qe/collInfo-c1.json +17 -0
  256. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/no-schema/qe/collInfo-c2.json +42 -0
  257. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/no-schema/qe/key-doc.json +30 -0
  258. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/no-schema/qe/reply-from-mongocryptd.json +65 -0
  259. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/qe/csfle/cmd-to-mongocryptd.json +70 -0
  260. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/qe/csfle/cmd.json +19 -0
  261. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/qe/csfle/collInfo-c1.json +42 -0
  262. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/qe/csfle/collInfo-c2.json +39 -0
  263. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/qe/no-schema/cmd-to-mongocryptd.json +53 -0
  264. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/qe/no-schema/cmd-to-mongod.json +56 -0
  265. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/qe/no-schema/cmd.json +19 -0
  266. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/qe/no-schema/collInfo-c1.json +42 -0
  267. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/qe/no-schema/collInfo-c2.json +17 -0
  268. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/qe/no-schema/key-doc.json +30 -0
  269. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/qe/no-schema/reply-from-mongocryptd.json +63 -0
  270. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/qe/qe/cmd-to-mongocryptd.json +66 -0
  271. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/qe/qe/cmd-to-mongod.json +71 -0
  272. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/qe/qe/cmd.json +19 -0
  273. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/qe/qe/collInfo-c1.json +42 -0
  274. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/qe/qe/collInfo-c2.json +42 -0
  275. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/qe/qe/key-doc.json +30 -0
  276. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/qe/qe/reply-from-mongocryptd.json +78 -0
  277. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/qe/cmd-to-mongocryptd.json +61 -0
  278. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/qe/cmd-to-mongod.json +14 -0
  279. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/qe/cmd.json +14 -0
  280. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/qe/collInfo-c1.json +42 -0
  281. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/qe/collInfo-c2.json +42 -0
  282. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/qe/reply-from-mongocryptd.json +68 -0
  283. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/qe-encryptedFieldsMap/cmd-to-mongocryptd.json +66 -0
  284. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/qe-encryptedFieldsMap/cmd-to-mongod.json +71 -0
  285. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/qe-encryptedFieldsMap/cmd.json +19 -0
  286. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/qe-encryptedFieldsMap/collInfo-c1.json +42 -0
  287. data/ext/libmongocrypt/libmongocrypt/test/data/{fle2-insert-unindexed/encrypted-field-map.json → lookup/qe-encryptedFieldsMap/encryptedFieldsMap.json} +6 -7
  288. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/qe-encryptedFieldsMap/key-doc.json +30 -0
  289. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/qe-encryptedFieldsMap/reply-from-mongocryptd.json +78 -0
  290. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/qe-self/cmd-to-mongocryptd.json +46 -0
  291. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/qe-self/cmd-to-mongod.json +53 -0
  292. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/qe-self/cmd.json +19 -0
  293. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/qe-self/collInfo-c1.json +42 -0
  294. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/qe-self/key-doc.json +30 -0
  295. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/qe-self/reply-from-mongocryptd.json +58 -0
  296. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/qe-with-payload/cmd-to-mongocryptd.json +66 -0
  297. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/qe-with-payload/cmd-to-mongod.json +75 -0
  298. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/qe-with-payload/cmd.json +19 -0
  299. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/qe-with-payload/collInfo-c1.json +42 -0
  300. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/qe-with-payload/collInfo-c2.json +42 -0
  301. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/qe-with-payload/key-doc.json +30 -0
  302. data/ext/libmongocrypt/libmongocrypt/test/data/lookup/qe-with-payload/reply-from-mongocryptd.json +78 -0
  303. data/ext/libmongocrypt/libmongocrypt/test/data/{fle2-create/mongocryptd-ismaster.json → mongocryptd-ismaster-17.json} +1 -1
  304. data/ext/libmongocrypt/libmongocrypt/test/data/mongocryptd-ismaster-26.json +12 -0
  305. data/ext/libmongocrypt/libmongocrypt/test/data/schema-broker/collinfo-encryptedFields.json +42 -0
  306. data/ext/libmongocrypt/libmongocrypt/test/data/schema-broker/collinfo-encryptedFields2.json +42 -0
  307. data/ext/libmongocrypt/libmongocrypt/test/data/schema-broker/collinfo-jsonSchema.json +43 -0
  308. data/ext/libmongocrypt/libmongocrypt/test/data/schema-broker/collinfo-noSchema.json +21 -0
  309. data/ext/libmongocrypt/libmongocrypt/test/data/schema-broker/create-with-jsonSchema.json +24 -0
  310. data/ext/libmongocrypt/libmongocrypt/test/data/schema-broker/encryptedFields.json +20 -0
  311. data/ext/libmongocrypt/libmongocrypt/test/data/schema-broker/encryptedFields2.json +20 -0
  312. data/ext/libmongocrypt/libmongocrypt/test/data/schema-broker/encryptedFieldsMap.json +42 -0
  313. data/ext/libmongocrypt/libmongocrypt/test/data/schema-broker/jsonSchema.json +19 -0
  314. data/ext/libmongocrypt/libmongocrypt/test/data/schema-broker/jsonSchema2.json +19 -0
  315. data/ext/libmongocrypt/libmongocrypt/test/data/schema-broker/schemaMap.json +40 -0
  316. data/ext/libmongocrypt/libmongocrypt/test/data/tokens/mc.json +28 -2
  317. data/ext/libmongocrypt/libmongocrypt/test/data/tokens/server.json +28 -2
  318. data/ext/libmongocrypt/libmongocrypt/test/test-mc-efc.c +70 -0
  319. data/ext/libmongocrypt/libmongocrypt/test/test-mc-fle2-encryption-placeholder.c +468 -0
  320. data/ext/libmongocrypt/libmongocrypt/test/test-mc-fle2-find-equality-payload-v2.c +20 -1
  321. data/ext/libmongocrypt/libmongocrypt/test/test-mc-fle2-payload-iev-v2.c +286 -24
  322. data/ext/libmongocrypt/libmongocrypt/test/test-mc-fle2-payload-iev.c +1 -1
  323. data/ext/libmongocrypt/libmongocrypt/test/test-mc-fle2-payload-iup-v2.c +23 -1
  324. data/ext/libmongocrypt/libmongocrypt/test/test-mc-fle2-payload-iup.c +24 -1
  325. data/ext/libmongocrypt/libmongocrypt/test/test-mc-fle2-payload-uev.c +2 -2
  326. data/ext/libmongocrypt/libmongocrypt/test/test-mc-fle2-rfds.c +2 -2
  327. data/ext/libmongocrypt/libmongocrypt/test/test-mc-fle2-tag-and-encrypted-metadata-block.c +36 -1
  328. data/ext/libmongocrypt/libmongocrypt/test/test-mc-range-edge-generation.c +6 -7
  329. data/ext/libmongocrypt/libmongocrypt/test/test-mc-range-encoding.c +32 -33
  330. data/ext/libmongocrypt/libmongocrypt/test/test-mc-range-mincover.c +58 -66
  331. data/ext/libmongocrypt/libmongocrypt/test/test-mc-rangeopts.c +2 -2
  332. data/ext/libmongocrypt/libmongocrypt/test/test-mc-schema-broker.c +1124 -0
  333. data/ext/libmongocrypt/libmongocrypt/test/test-mc-text-search-str-encode.c +1207 -0
  334. data/ext/libmongocrypt/libmongocrypt/test/test-mc-tokens.c +144 -37
  335. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-assert-match-bson.c +13 -14
  336. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-assert.h +21 -4
  337. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-buffer.c +25 -0
  338. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-cache.c +3 -2
  339. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-crypto-hooks.c +1 -1
  340. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-crypto.c +37 -7
  341. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-csfle-lib.c +21 -0
  342. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-ctx-decrypt.c +226 -146
  343. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-ctx-encrypt.c +1330 -1200
  344. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-kek.c +1 -1
  345. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-key-cache.c +6 -6
  346. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-kms-responses.c +2 -2
  347. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-marking.c +744 -106
  348. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt.c +119 -33
  349. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt.h +27 -4
  350. data/ext/libmongocrypt/libmongocrypt/test/test-unicode-fold.c +97 -0
  351. data/lib/libmongocrypt_helper/version.rb +2 -2
  352. metadata +207 -157
  353. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/README.md +0 -36
  354. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/benchmarks/build.gradle.kts +0 -28
  355. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/benchmarks/src/main/java/com/mongodb/crypt/benchmark/BenchmarkRunner.java +0 -217
  356. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/benchmarks/src/main/resources/keyDocument.json +0 -24
  357. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/build.gradle.kts +0 -354
  358. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/gradle/wrapper/gradle-wrapper.jar +0 -0
  359. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/gradle/wrapper/gradle-wrapper.properties +0 -5
  360. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/gradlew +0 -234
  361. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/gradlew.bat +0 -89
  362. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/settings.gradle.kts +0 -1
  363. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/BinaryHolder.java +0 -45
  364. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/CAPI.java +0 -1165
  365. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/CAPIHelper.java +0 -96
  366. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/CipherCallback.java +0 -92
  367. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/DisposableMemory.java +0 -31
  368. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/JULLogger.java +0 -130
  369. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/Logger.java +0 -144
  370. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/Loggers.java +0 -50
  371. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/MacCallback.java +0 -60
  372. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/MessageDigestCallback.java +0 -55
  373. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/MongoAwsKmsProviderOptions.java +0 -104
  374. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/MongoCrypt.java +0 -100
  375. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/MongoCryptContext.java +0 -137
  376. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/MongoCryptContextImpl.java +0 -164
  377. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/MongoCryptException.java +0 -67
  378. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/MongoCryptImpl.java +0 -423
  379. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/MongoCryptOptions.java +0 -284
  380. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/MongoCrypts.java +0 -38
  381. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/MongoDataKeyOptions.java +0 -125
  382. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/MongoExplicitEncryptOptions.java +0 -227
  383. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/MongoKeyDecryptor.java +0 -76
  384. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/MongoKeyDecryptorImpl.java +0 -105
  385. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/MongoLocalKmsProviderOptions.java +0 -83
  386. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/MongoRewrapManyDataKeyOptions.java +0 -104
  387. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/SLF4JLogger.java +0 -110
  388. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/SecureRandomCallback.java +0 -51
  389. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/SigningRSAESPKCSCallback.java +0 -76
  390. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/package-info.java +0 -18
  391. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/resources/META-INF/native-image/jni-config.json +0 -180
  392. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/resources/META-INF/native-image/reflect-config.json +0 -134
  393. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/test/java/com/mongodb/crypt/capi/MongoCryptTest.java +0 -389
  394. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/test/resources/command-reply.json +0 -13
  395. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/test/resources/command.json +0 -6
  396. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/test/resources/encrypted-command-reply.json +0 -16
  397. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/test/resources/encrypted-command.json +0 -11
  398. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/test/resources/encrypted-value.json +0 -6
  399. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/test/resources/fle2-find-range-explicit-v2/int32/encrypted-payload.json +0 -26
  400. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/test/resources/fle2-find-range-explicit-v2/int32/key-filter.json +0 -19
  401. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/test/resources/fle2-find-range-explicit-v2/int32/rangeopts.json +0 -14
  402. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/test/resources/fle2-find-range-explicit-v2/int32/value-to-encrypt.json +0 -20
  403. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/test/resources/json-schema.json +0 -15
  404. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/test/resources/key-document.json +0 -36
  405. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/test/resources/key-filter-keyAltName.json +0 -14
  406. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/test/resources/key-filter.json +0 -19
  407. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/test/resources/kms-reply.txt +0 -6
  408. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/test/resources/list-collections-filter.json +0 -3
  409. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/test/resources/mongocryptd-command.json +0 -22
  410. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/test/resources/mongocryptd-reply.json +0 -18
  411. data/ext/libmongocrypt/libmongocrypt/etc/silk-create-asset-group.sh +0 -70
  412. data/ext/libmongocrypt/libmongocrypt/test/data/bulkWrite/jsonSchema/cmd.json +0 -20
  413. data/ext/libmongocrypt/libmongocrypt/test/data/collection-info-no-schema.json +0 -19
  414. data/ext/libmongocrypt/libmongocrypt/test/data/compact/no-range/encrypted-field-config-map.json +0 -47
  415. data/ext/libmongocrypt/libmongocrypt/test/data/fle1-collMod/insert/cmd.json +0 -8
  416. data/ext/libmongocrypt/libmongocrypt/test/data/fle1-collMod/insert/collinfo.json +0 -9
  417. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-create/ismaster-to-mongocryptd.json +0 -3
  418. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-delete/empty/encrypted-payload.json +0 -91
  419. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-delete/success/encrypted-payload.json +0 -98
  420. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-explicit/find-indexed-contentionFactor1.json +0 -8
  421. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-explicit/insert-indexed-contentionFactor1.json +0 -8
  422. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-explicit/insert-indexed-same-user-and-index-key.json +0 -8
  423. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-equality/cmd.json +0 -6
  424. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-equality/encrypted-payload.json +0 -41
  425. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-equality/mongocryptd-reply.json +0 -19
  426. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/date/cmd.json +0 -10
  427. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/date/encrypted-payload.json +0 -42
  428. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/date/mongocryptd-reply.json +0 -50
  429. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/decimal128/cmd.json +0 -6
  430. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/decimal128/encrypted-field-map.json +0 -28
  431. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/decimal128/encrypted-payload.json +0 -42
  432. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/decimal128/mongocryptd-reply.json +0 -50
  433. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/decimal128-precision/cmd.json +0 -6
  434. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/decimal128-precision/encrypted-field-map.json +0 -31
  435. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/decimal128-precision/encrypted-payload.json +0 -51
  436. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/decimal128-precision/mongocryptd-reply.json +0 -59
  437. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/double/cmd.json +0 -8
  438. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/double/encrypted-payload.json +0 -42
  439. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/double/mongocryptd-reply.json +0 -50
  440. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/double-precision/cmd.json +0 -8
  441. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/double-precision/encrypted-field-map.json +0 -31
  442. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/double-precision/encrypted-payload.json +0 -45
  443. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/double-precision/mongocryptd-reply.json +0 -53
  444. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/int32/cmd.json +0 -8
  445. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/int32/encrypted-payload.json +0 -42
  446. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/int32/mongocryptd-reply.json +0 -50
  447. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/int64/cmd.json +0 -8
  448. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/int64/encrypted-field-map.json +0 -28
  449. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/int64/encrypted-payload.json +0 -42
  450. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/int64/mongocryptd-reply.json +0 -50
  451. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range-explicit/double/encrypted-payload.json +0 -26
  452. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range-explicit/double-precision/encrypted-payload.json +0 -26
  453. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range-explicit/int32/encrypted-payload.json +0 -26
  454. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range-explicit/int32-nominmax/encrypted-payload-v2.json +0 -26
  455. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range-explicit/int32-openinterval/encrypted-payload.json +0 -16
  456. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/date/cmd.json +0 -13
  457. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/date/encrypted-field-map.json +0 -28
  458. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/date/encrypted-payload.json +0 -45
  459. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/date/mongocryptd-reply.json +0 -53
  460. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/decimal128/cmd.json +0 -9
  461. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/decimal128/encrypted-field-map.json +0 -28
  462. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/decimal128/encrypted-payload.json +0 -45
  463. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/decimal128/mongocryptd-reply.json +0 -53
  464. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/decimal128-precision/cmd.json +0 -9
  465. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/decimal128-precision/encrypted-field-map.json +0 -31
  466. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/decimal128-precision/encrypted-payload.json +0 -54
  467. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/decimal128-precision/mongocryptd-reply.json +0 -62
  468. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/double/cmd.json +0 -11
  469. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/double/encrypted-field-map.json +0 -28
  470. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/double/encrypted-payload.json +0 -45
  471. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/double/mongocryptd-reply.json +0 -53
  472. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/double-precision/cmd.json +0 -11
  473. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/double-precision/encrypted-field-map.json +0 -31
  474. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/double-precision/encrypted-payload.json +0 -48
  475. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/double-precision/mongocryptd-reply.json +0 -56
  476. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/int32/encrypted-payload.json +0 -45
  477. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/int32/mongocryptd-reply.json +0 -53
  478. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/int64/cmd.json +0 -11
  479. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/int64/encrypted-field-map.json +0 -28
  480. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/int64/encrypted-payload.json +0 -45
  481. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/int64/mongocryptd-reply.json +0 -53
  482. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range-explicit/double/encrypted-payload.json +0 -8
  483. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range-explicit/double-precision/encrypted-payload.json +0 -8
  484. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range-explicit/int32-nominmax/encrypted-payload-v2.json +0 -8
  485. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range-explicit/sparsity-2/encrypted-payload.json +0 -8
  486. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-unindexed/cmd.json +0 -9
  487. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-unindexed/encrypted-payload.json +0 -14
  488. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-unindexed/mongocryptd-reply.json +0 -46
  489. data/ext/libmongocrypt/libmongocrypt/test/data/schema.json +0 -19
  490. /data/ext/libmongocrypt/libmongocrypt/test/data/{fle2-explicit/find-indexed.json → explicit-decrypt/FLE2FindEqualityPayload.json} +0 -0
  491. /data/ext/libmongocrypt/libmongocrypt/test/data/{fle2-insert → fle2-insert-text-search-with-str-encode-version}/cmd.json +0 -0
@@ -4,7 +4,7 @@
4
4
  "contentionFactor": 1234567890,
5
5
  "collectionsLevel1Token": "ff2103ff205a36f39704f643c270c129919f008c391d9589a6d2c86a7429d0d3",
6
6
  "serverDataEncryptionLevel1Token": "d915ccc1eb81687fb5fc5b799f48c99fbe17e7a011a46a48901b9ae3d790656b",
7
- "serverTokenDerivationLevel1Token": "1adc114b462741e6ac9f52eacf3dcb8cbca19827693c571d9418fda570c29d82",
7
+ "ServerTokenDerivationLevel1Token": "1adc114b462741e6ac9f52eacf3dcb8cbca19827693c571d9418fda570c29d82",
8
8
  "EDCToken": "167d2d2ff8e4144df37ff759db593fde0ecc7d9636f96d62dacad672eccad349",
9
9
  "ESCToken": "bfd480f1658f49f48985734737bc07d0bc36b88210277605c55ff3c9c3ef50b0",
10
10
  "ECCToken": "9d34f9c182d75a5a3347c2f903e3e647105c651d52cf9555c9420ba07ddd3aa2",
@@ -21,5 +21,31 @@
21
21
  "ESCTwiceDerivedValueToken": "34150c6f5ab56dc39ddb935accb7f53e5276322fa937650b76a4dda9723d6fba",
22
22
  "serverCountAndContentionFactorEncryptionToken": "a8c4a477e5518a527f718a5a1530919f2dad13b1f3559833e17b479711cbdbb9",
23
23
  "serverZerosEncryptionToken": "95fda1e139ef1dc84260d4d3ebaab7627a9676f4af7aeb1b596c7c14a0b3a2ea",
24
- "AnchorPaddingTokenRoot": "d5072cc56d9241470b9771292c3f75d950cba1cf842ca6707d1adfec5ec6f3e7"
24
+ "AnchorPaddingTokenRoot": "d5072cc56d9241470b9771292c3f75d950cba1cf842ca6707d1adfec5ec6f3e7",
25
+ "AnchorPaddingKeyToken": "4665ff3ea2d8268d3e6c5d85ddbe6a79d74c45898012afdd4f5d2afb4472957e",
26
+ "AnchorPaddingValueToken": "38cba0ac9914890d646387c9796edbba771b039ce9615457d7cc169df502f78f",
27
+ "EDCTextExactToken": "be75dff4bbe8671213ea36fcb716f783af51fa00477fdea2558284b8b6d6b290",
28
+ "EDCTextSubstringToken": "7eff82fa8a912a3cc60be036b0fddbbbcac45366e4cdf41090d49d770d2b28ef",
29
+ "EDCTextSuffixToken": "d72607e0c681b39af3769ea93fc7c6b533c8963669a2f5f3d4205469d8e2977a",
30
+ "EDCTextPrefixToken": "26c020f4bb3e50cb094f29da9e40b99fa9a862ea6df9e14a4838d22089f5e48c",
31
+ "ESCTextExactToken": "591d0e6c50f38bbac01ebbff96b2f602eefbbb138c674fcf1261dcb26508ac36",
32
+ "ESCTextSubstringToken": "38511f2fc6a90259b1d66f161f4f01893437703b8e07be7013ab2ebe1a5199fd",
33
+ "ESCTextSuffixToken": "574e5d597c469798871e349e3f4151a9a75aa4fca438e6ffa19020a9a4d239df",
34
+ "ESCTextPrefixToken": "700b0a35a12f36b5511ed3ea2ca8f7fd41386a6d6d45e5c028edca240ba617d6",
35
+ "ServerTextExactToken": "1b0b904479d408fe805b14cd8f269b7aa9f022128816da09bc94ddd7021aa2ee",
36
+ "ServerTextSubstringToken": "dc79b64dab53c09dcbcc2c203e1ed5d88e0fed75b1e3a3a3f192ead85d762e6a",
37
+ "ServerTextSuffixToken": "a69ea838e79f9c11e2d6bd54e665bf0eee4864d5e517a7c9e9fb763e1a187cbe",
38
+ "ServerTextPrefixToken": "b89b65fc9274678e1fe107ff8ae485f6ba46400870f87ba08c710bd605792cfc",
39
+ "EDCTextExactDerivedFromDataTokenAndContentionFactorToken": "5f073c558114c2ff39a56e837d64f64c68328b14ebe2f6f142304e966cb618c4",
40
+ "EDCTextSubstringDerivedFromDataTokenAndContentionFactorToken": "ac333c5086216d14bcbe9996dc7c9c815625aeef47e6c08d83b348dd6bb62834",
41
+ "EDCTextSuffixDerivedFromDataTokenAndContentionFactorToken": "bd9a705c59a292635101523014ae997f2f56b8ba2ab4df3573c8f2524f5a9e50",
42
+ "EDCTextPrefixDerivedFromDataTokenAndContentionFactorToken": "06c4e44724305bb706e404c1caae6fff604c2b0c6809c3bcf79658ff3c93b951",
43
+ "ESCTextExactDerivedFromDataTokenAndContentionFactorToken": "680b35d73a3f778792b8a03df267aa945cb9718ed4e6925c9da069d354032b7a",
44
+ "ESCTextSubstringDerivedFromDataTokenAndContentionFactorToken": "380c456ea3c2b9d80324556931764ea22c5e097b2702e658dfe81254b1ec9688",
45
+ "ESCTextSuffixDerivedFromDataTokenAndContentionFactorToken": "db3418028ec9079fe27643071d575e9f6e0607bdfee185d1380a68921ce58ff6",
46
+ "ESCTextPrefixDerivedFromDataTokenAndContentionFactorToken": "263cd30dbdce8a4d00bcd24b45b2d40058646f1aa9fb38313c3162b1a455889b",
47
+ "ServerTextExactDerivedFromDataToken": "42dde13769bb2f18d35654fc673172b82db7fdcc62fb3ddf0767953bddc7e981",
48
+ "ServerTextSubstringDerivedFromDataToken": "7d474158a817b9c6d45c497d591d6bc1d1f4f40066c40eaaf7e7f3c3ce4e11f0",
49
+ "ServerTextSuffixDerivedFromDataToken": "3523904f3d15e552cea7c8643396b8090ba591a394eb91921c8b33e6fe07b0a1",
50
+ "ServerTextPrefixDerivedFromDataToken": "854a5420921027c2a96415191a122d82a6f90d21ecef070e44174527eb4d7f2b"
25
51
  }
@@ -3,7 +3,7 @@
3
3
  "value": "c07c0df51257948e1a0fc70dd4568e3af99b23b3434c9858237ca7db62db9766",
4
4
  "contentionFactor": 1234567890,
5
5
  "collectionsLevel1Token": "BD53ACAC665EDD01E0CA30CB648B2B8F4967544047FD4E7D12B1A9BF07339928",
6
- "serverTokenDerivationLevel1Token": "C17FDF249DE234F9AB15CD95137EA7EC82AE4E5B51F6BFB0FC1B8FEB6800F74C",
6
+ "ServerTokenDerivationLevel1Token": "C17FDF249DE234F9AB15CD95137EA7EC82AE4E5B51F6BFB0FC1B8FEB6800F74C",
7
7
  "serverDataEncryptionLevel1Token": "EB9A73F7912D86A4297E81D2F675AF742874E4057E3A890FEC651A23EEE3F3EC",
8
8
  "EDCToken": "82B0AB0F8F1D31AEB6F4DBC915EF17CBA2FE21E36EC436984EB63BECEC173831",
9
9
  "ESCToken": "279C575B52B73677EEF07D9C1126EBDF08C35369570A9B75E44A9AFDCCA96B6D",
@@ -21,5 +21,31 @@
21
21
  "ESCTwiceDerivedValueToken": "53F0A51A43447B9881D5E79BA4C5F78E80BC2BC6AA42B00C81079EBF4C9D5A7C",
22
22
  "serverCountAndContentionFactorEncryptionToken": "2F30DBCC06B722B60BC1FF018FC28D5FAEE2F222496BE34A264EF3267E811DA0",
23
23
  "serverZerosEncryptionToken": "986F23F132FF7F14F748AC69373CFC982AD0AD4BAD25BE92008B83AB43E96029",
24
- "AnchorPaddingTokenRoot": "4312890F621FE3CA7497C3405DFD8AAF46A578C77F7404D28C12BA853A4D3327"
24
+ "AnchorPaddingTokenRoot": "4312890F621FE3CA7497C3405DFD8AAF46A578C77F7404D28C12BA853A4D3327",
25
+ "AnchorPaddingKeyToken": "EF6D80379C462FC724CE8C245DC177ED507154B4EBB04DED780FA0DDAF1A2247",
26
+ "AnchorPaddingValueToken": "A3308597F3C5271D5BAB640F749E619E9272A2C33F4CD372680F55F84CC4DF7F",
27
+ "EDCTextExactToken": "17dde6bd0c0d783aa2bf84e255b162b9362032e5ebd6d655d6b478c4d77dc077",
28
+ "EDCTextSubstringToken": "4dde679aa0568701a0fda6b1cae21e99da32500541e4ad832ea83db94497478f",
29
+ "EDCTextSuffixToken": "61fa8b8f02a5e7f3cfd2c3e58d3fb8c2d1bfe8a1acc32e43f26478a52944af78",
30
+ "EDCTextPrefixToken": "926e96d7142b2d187d10579a26a11499d6c30aac2e3fdd56eb1cd536875decfd",
31
+ "ESCTextExactToken": "2fea10a92e84cce913ea0ffd7fd59964507e9e96cdffa4f1b861521f3e653260",
32
+ "ESCTextSubstringToken": "d6a94cacc9f5dd10b2b980bd4c4044e16ff1b29ad50c692e603487c46cbe610e",
33
+ "ESCTextSuffixToken": "336f39da6fa984a3477261ea19147b77f02e843f82511c94a91ec77bd72dca68",
34
+ "ESCTextPrefixToken": "2575c2a275e8135ec73093ae2edc793f6a3a0b8ed89767c3a8695ad93f1c6e9e",
35
+ "ServerTextExactToken": "2ae33773be27c9fe3522ff0459f621670e93a7423166e63e9a43687a503c7438",
36
+ "ServerTextSubstringToken": "183ff338509675d5377d09978e9becd31b197458e2c8cd45b670c672ceb6dc53",
37
+ "ServerTextSuffixToken": "baf7c9392bb37607c6aa1f04163f4db8628872e7e7122e754bcd72771934ccbd",
38
+ "ServerTextPrefixToken": "52387ea6942d9299a89f70a2a4d8a4209ea1dfe56e29f6c0e3182ca7818b5c9c",
39
+ "EDCTextExactDerivedFromDataTokenAndContentionFactorToken": "3551507189d32cc7768390cdd83071deeb3055ca86c4756b16bb740024b23610",
40
+ "EDCTextSubstringDerivedFromDataTokenAndContentionFactorToken": "4b52f6daf3b688971eb5819820c3468b3c79ba45fd3e86134351f9baf203e0d1",
41
+ "EDCTextSuffixDerivedFromDataTokenAndContentionFactorToken": "c1f273913631a9a1b36fea884b3c8a3a141c9e21556981094ba15f262e540ac7",
42
+ "EDCTextPrefixDerivedFromDataTokenAndContentionFactorToken": "a8d68ebdb0e2d31754f693c56071b0b1d225e6ec5568aff875bd4f7c48c24f66",
43
+ "ESCTextExactDerivedFromDataTokenAndContentionFactorToken": "4cd82a4883ab0a6224a24937066f94827f5107e8bb2f0fa841e10aff8d49e8e4",
44
+ "ESCTextSubstringDerivedFromDataTokenAndContentionFactorToken": "94f116183f14442e335902756e5b730683cd998c683b90d04dc9e8f48684bdb2",
45
+ "ESCTextSuffixDerivedFromDataTokenAndContentionFactorToken": "13390024c674c2d131771cf95af9787c8c7ef76b5d63078b3dc482cb4075a634",
46
+ "ESCTextPrefixDerivedFromDataTokenAndContentionFactorToken": "9d0d5f84de779360c43be8e61710deb4b2705b6bf1e11ee41fba09fd4486b7c6",
47
+ "ServerTextExactDerivedFromDataToken": "ae210cd90c230bb8cb96a4e840c9cf88740ae156f3514260d3f1ce94b0bf941e",
48
+ "ServerTextSubstringDerivedFromDataToken": "7b514ede2cd6d364f2da2580bf173a4e68f9e0617c123aee8b9dda4d8d4b47d7",
49
+ "ServerTextSuffixDerivedFromDataToken": "3e242be8d4c8a5894e81aa5fe0729cf48355dbe219c5c6b5ceb8b0eef124ba40",
50
+ "ServerTextPrefixDerivedFromDataToken": "8d8d41ac0618b0e98b086d662a2466f4aa1527d6536acdbcf220c724073331eb"
25
51
  }
@@ -39,6 +39,19 @@ static void _test_efc(_mongocrypt_tester_t *tester) {
39
39
  {
40
40
  _load_test_file(tester, "./test/data/efc/efc-oneField.json", &efc_bson);
41
41
  ASSERT_OK_STATUS(mc_EncryptedFieldConfig_parse(&efc, &efc_bson, status, use_range_v2), status);
42
+ ASSERT_CMPUINT8(efc.str_encode_version, ==, 0);
43
+ ptr = efc.fields;
44
+ ASSERT(ptr);
45
+ ASSERT_STREQUAL(ptr->path, "firstName");
46
+ ASSERT_CMPBUF(expect_keyId1, ptr->keyId);
47
+ ASSERT(ptr->next == NULL);
48
+ mc_EncryptedFieldConfig_cleanup(&efc);
49
+ }
50
+
51
+ {
52
+ _load_test_file(tester, "./test/data/efc/efc-oneField-goodVersionSet.json", &efc_bson);
53
+ ASSERT_OK_STATUS(mc_EncryptedFieldConfig_parse(&efc, &efc_bson, status, use_range_v2), status);
54
+ ASSERT_CMPUINT8(efc.str_encode_version, ==, 1);
42
55
  ptr = efc.fields;
43
56
  ASSERT(ptr);
44
57
  ASSERT_STREQUAL(ptr->path, "firstName");
@@ -50,6 +63,7 @@ static void _test_efc(_mongocrypt_tester_t *tester) {
50
63
  {
51
64
  _load_test_file(tester, "./test/data/efc/efc-extraField.json", &efc_bson);
52
65
  ASSERT_OK_STATUS(mc_EncryptedFieldConfig_parse(&efc, &efc_bson, status, use_range_v2), status);
66
+ ASSERT_CMPUINT8(efc.str_encode_version, ==, 0);
53
67
  ptr = efc.fields;
54
68
  ASSERT(ptr);
55
69
  ASSERT_STREQUAL(ptr->path, "firstName");
@@ -61,6 +75,7 @@ static void _test_efc(_mongocrypt_tester_t *tester) {
61
75
  {
62
76
  _load_test_file(tester, "./test/data/efc/efc-twoFields.json", &efc_bson);
63
77
  ASSERT_OK_STATUS(mc_EncryptedFieldConfig_parse(&efc, &efc_bson, status, use_range_v2), status);
78
+ ASSERT_CMPUINT8(efc.str_encode_version, ==, 0);
64
79
  ptr = efc.fields;
65
80
  ASSERT(ptr);
66
81
  ASSERT_STREQUAL(ptr->path, "lastName");
@@ -79,6 +94,61 @@ static void _test_efc(_mongocrypt_tester_t *tester) {
79
94
  status,
80
95
  "unable to find 'keyId' in 'field' document");
81
96
  mc_EncryptedFieldConfig_cleanup(&efc);
97
+ _mongocrypt_status_reset(status);
98
+ }
99
+
100
+ {
101
+ _load_test_file(tester, "./test/data/efc/efc-oneField-badVersionSet.json", &efc_bson);
102
+ ASSERT_FAILS_STATUS(mc_EncryptedFieldConfig_parse(&efc, &efc_bson, status, use_range_v2),
103
+ status,
104
+ "'strEncodeVersion' of 99 is not supported");
105
+ mc_EncryptedFieldConfig_cleanup(&efc);
106
+ _mongocrypt_status_reset(status);
107
+ }
108
+
109
+ {
110
+ _load_test_file(tester, "./test/data/efc/efc-textSearchFields.json", &efc_bson);
111
+ ASSERT_OK_STATUS(mc_EncryptedFieldConfig_parse(&efc, &efc_bson, status, use_range_v2), status);
112
+ ASSERT_CMPUINT8(efc.str_encode_version, ==, LATEST_STR_ENCODE_VERSION);
113
+ ptr = efc.fields;
114
+ ASSERT(ptr);
115
+ ASSERT_STREQUAL(ptr->path, "lastName");
116
+ ASSERT_CMPBUF(expect_keyId2, ptr->keyId);
117
+ ASSERT(ptr->supported_queries == (SUPPORTS_SUFFIX_PREVIEW_QUERIES | SUPPORTS_PREFIX_PREVIEW_QUERIES));
118
+ ASSERT(ptr->next != NULL);
119
+ ptr = ptr->next;
120
+ ASSERT_STREQUAL(ptr->path, "firstName");
121
+ ASSERT_CMPBUF(expect_keyId1, ptr->keyId);
122
+ ASSERT(ptr->supported_queries == SUPPORTS_SUBSTRING_PREVIEW_QUERIES);
123
+ ASSERT(ptr->next == NULL);
124
+ mc_EncryptedFieldConfig_cleanup(&efc);
125
+ }
126
+
127
+ {
128
+ _load_test_file(tester, "./test/data/efc/efc-textSearchFields-goodVersionSet.json", &efc_bson);
129
+ ASSERT_OK_STATUS(mc_EncryptedFieldConfig_parse(&efc, &efc_bson, status, use_range_v2), status);
130
+ ASSERT_CMPUINT8(efc.str_encode_version, ==, 1);
131
+ ptr = efc.fields;
132
+ ASSERT(ptr);
133
+ ASSERT_STREQUAL(ptr->path, "lastName");
134
+ ASSERT_CMPBUF(expect_keyId2, ptr->keyId);
135
+ ASSERT(ptr->supported_queries == (SUPPORTS_SUFFIX_PREVIEW_QUERIES | SUPPORTS_PREFIX_PREVIEW_QUERIES));
136
+ ASSERT(ptr->next != NULL);
137
+ ptr = ptr->next;
138
+ ASSERT_STREQUAL(ptr->path, "firstName");
139
+ ASSERT_CMPBUF(expect_keyId1, ptr->keyId);
140
+ ASSERT(ptr->supported_queries == SUPPORTS_SUBSTRING_PREVIEW_QUERIES);
141
+ ASSERT(ptr->next == NULL);
142
+ mc_EncryptedFieldConfig_cleanup(&efc);
143
+ }
144
+
145
+ {
146
+ _load_test_file(tester, "./test/data/efc/efc-textSearchFields-badVersionSet.json", &efc_bson);
147
+ ASSERT_FAILS_STATUS(mc_EncryptedFieldConfig_parse(&efc, &efc_bson, status, use_range_v2),
148
+ status,
149
+ "'strEncodeVersion' of 99 is not supported");
150
+ mc_EncryptedFieldConfig_cleanup(&efc);
151
+ _mongocrypt_status_reset(status);
82
152
  }
83
153
 
84
154
  _mongocrypt_buffer_cleanup(&expect_keyId2);
@@ -0,0 +1,468 @@
1
+ /*
2
+ * Copyright 2024-present MongoDB, Inc.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ #include <mc-fle2-encryption-placeholder-private.h>
18
+
19
+ #include "mongocrypt-private.h"
20
+ #include "test-mongocrypt-assert.h"
21
+ #include "test-mongocrypt.h"
22
+
23
+ #define RAW_STRING(...) #__VA_ARGS__
24
+
25
+ static void _test_FLE2EncryptionPlaceholder_parse(_mongocrypt_tester_t *tester) {
26
+ mc_FLE2EncryptionPlaceholder_t placeholder;
27
+ bson_t as_bson;
28
+ mongocrypt_status_t *status;
29
+ _mongocrypt_buffer_t buf;
30
+
31
+ status = mongocrypt_status_new();
32
+ _mongocrypt_buffer_copy_from_hex(&buf,
33
+ "03610000001074000100000010610002000000056b690010000000041234567812349876"
34
+ "1234123456789012056b75001000000004abcdefab123498761234123456789012027600"
35
+ "0900000076616c75653132330012636d00000000000000000000");
36
+ ASSERT(bson_init_static(&as_bson, buf.data + 1, buf.len - 1));
37
+ mc_FLE2EncryptionPlaceholder_init(&placeholder);
38
+ ASSERT_OK_STATUS(mc_FLE2EncryptionPlaceholder_parse(&placeholder, &as_bson, status), status);
39
+
40
+ ASSERT(placeholder.type == MONGOCRYPT_FLE2_PLACEHOLDER_TYPE_INSERT);
41
+ ASSERT(placeholder.algorithm == MONGOCRYPT_FLE2_ALGORITHM_EQUALITY);
42
+ ASSERT(BSON_ITER_HOLDS_UTF8(&placeholder.v_iter));
43
+ ASSERT_STREQUAL(bson_iter_utf8(&placeholder.v_iter, NULL), "value123");
44
+
45
+ _mongocrypt_buffer_t expect_index_key_id;
46
+ _mongocrypt_buffer_copy_from_hex(&expect_index_key_id, "12345678123498761234123456789012");
47
+ ASSERT_CMPBUF(placeholder.index_key_id, expect_index_key_id);
48
+ _mongocrypt_buffer_cleanup(&expect_index_key_id);
49
+
50
+ _mongocrypt_buffer_t expect_user_key_id;
51
+ _mongocrypt_buffer_copy_from_hex(&expect_user_key_id, "abcdefab123498761234123456789012");
52
+ ASSERT_CMPBUF(placeholder.user_key_id, expect_user_key_id);
53
+ _mongocrypt_buffer_cleanup(&expect_user_key_id);
54
+
55
+ ASSERT(placeholder.maxContentionFactor == 0);
56
+
57
+ mc_FLE2EncryptionPlaceholder_cleanup(&placeholder);
58
+ _mongocrypt_buffer_cleanup(&buf);
59
+ mongocrypt_status_destroy(status);
60
+ }
61
+
62
+ static void _test_FLE2EncryptionPlaceholder_range_parse(_mongocrypt_tester_t *tester) {
63
+ // Test type=MONGOCRYPT_FLE2_PLACEHOLDER_TYPE_INSERT.
64
+ {
65
+ mc_FLE2EncryptionPlaceholder_t placeholder;
66
+ bson_t as_bson;
67
+ mongocrypt_status_t *status;
68
+ _mongocrypt_buffer_t buf;
69
+
70
+ status = mongocrypt_status_new();
71
+ _mongocrypt_buffer_copy_from_hex(&buf,
72
+ "037d0000001074000100000010610003000000056b690010000000041234567812349"
73
+ "8761234123456789012056b75001000000004abcdefab123498761234123456789012"
74
+ "0376001e00000010760040e20100106d696e0000000000106d61780087d6120000126"
75
+ "36d000000000000000000127300010000000000000000");
76
+ ASSERT(bson_init_static(&as_bson, buf.data + 1, buf.len - 1));
77
+ mc_FLE2EncryptionPlaceholder_init(&placeholder);
78
+ ASSERT_OK_STATUS(mc_FLE2EncryptionPlaceholder_parse(&placeholder, &as_bson, status), status);
79
+
80
+ ASSERT(placeholder.type == MONGOCRYPT_FLE2_PLACEHOLDER_TYPE_INSERT);
81
+ ASSERT(placeholder.algorithm == MONGOCRYPT_FLE2_ALGORITHM_RANGE);
82
+
83
+ _mongocrypt_buffer_t expect_index_key_id;
84
+ _mongocrypt_buffer_copy_from_hex(&expect_index_key_id, "12345678123498761234123456789012");
85
+ ASSERT_CMPBUF(placeholder.index_key_id, expect_index_key_id);
86
+ _mongocrypt_buffer_cleanup(&expect_index_key_id);
87
+
88
+ _mongocrypt_buffer_t expect_user_key_id;
89
+ _mongocrypt_buffer_copy_from_hex(&expect_user_key_id, "abcdefab123498761234123456789012");
90
+ ASSERT_CMPBUF(placeholder.user_key_id, expect_user_key_id);
91
+ _mongocrypt_buffer_cleanup(&expect_user_key_id);
92
+
93
+ ASSERT_CMPINT64(placeholder.sparsity, ==, 1);
94
+
95
+ // Parse FLE2RangeInsertSpec.
96
+ {
97
+ mc_FLE2RangeInsertSpec_t spec;
98
+
99
+ ASSERT_OK_STATUS(mc_FLE2RangeInsertSpec_parse(&spec, &placeholder.v_iter, false /* use_range_v2 */, status),
100
+ status);
101
+
102
+ ASSERT(BSON_ITER_HOLDS_INT32(&spec.v));
103
+ ASSERT_CMPINT32(bson_iter_int32(&spec.v), ==, 123456);
104
+
105
+ ASSERT(BSON_ITER_HOLDS_INT32(&spec.min));
106
+ ASSERT_CMPINT32(bson_iter_int32(&spec.min), ==, 0);
107
+
108
+ ASSERT(BSON_ITER_HOLDS_INT32(&spec.max));
109
+ ASSERT_CMPINT32(bson_iter_int32(&spec.max), ==, 1234567);
110
+ }
111
+
112
+ mc_FLE2EncryptionPlaceholder_cleanup(&placeholder);
113
+ _mongocrypt_buffer_cleanup(&buf);
114
+ mongocrypt_status_destroy(status);
115
+ }
116
+
117
+ // Test type=MONGOCRYPT_FLE2_PLACEHOLDER_TYPE_FIND.
118
+ {
119
+ mc_FLE2EncryptionPlaceholder_t placeholder;
120
+ bson_t as_bson;
121
+ mongocrypt_status_t *status;
122
+ _mongocrypt_buffer_t buf;
123
+
124
+ status = mongocrypt_status_new();
125
+ _mongocrypt_buffer_copy_from_hex(&buf,
126
+ "03ec0000001074000200000010610003000000056b690010000000041234567812349"
127
+ "8761234123456789012056b75001000000004abcdefab123498761234123456789012"
128
+ "0376008d000000036564676573496e666f005b000000106c6f776572426f756e64000"
129
+ "0000000086c62496e636c756465640001107570706572426f756e640087d612000875"
130
+ "62496e636c75646564000110696e6465784d696e000000000010696e6465784d61780"
131
+ "087d6120000107061796c6f6164496400d20400001066697273744f70657261746f72"
132
+ "00010000000012636d000000000000000000127300010000000000000000");
133
+ ASSERT(bson_init_static(&as_bson, buf.data + 1, buf.len - 1));
134
+ mc_FLE2EncryptionPlaceholder_init(&placeholder);
135
+ ASSERT_OK_STATUS(mc_FLE2EncryptionPlaceholder_parse(&placeholder, &as_bson, status), status);
136
+
137
+ ASSERT(placeholder.type == MONGOCRYPT_FLE2_PLACEHOLDER_TYPE_FIND);
138
+ ASSERT(placeholder.algorithm == MONGOCRYPT_FLE2_ALGORITHM_RANGE);
139
+
140
+ _mongocrypt_buffer_t expect_index_key_id;
141
+ _mongocrypt_buffer_copy_from_hex(&expect_index_key_id, "12345678123498761234123456789012");
142
+ ASSERT_CMPBUF(placeholder.index_key_id, expect_index_key_id);
143
+ _mongocrypt_buffer_cleanup(&expect_index_key_id);
144
+
145
+ _mongocrypt_buffer_t expect_user_key_id;
146
+ _mongocrypt_buffer_copy_from_hex(&expect_user_key_id, "abcdefab123498761234123456789012");
147
+ ASSERT_CMPBUF(placeholder.user_key_id, expect_user_key_id);
148
+ _mongocrypt_buffer_cleanup(&expect_user_key_id);
149
+
150
+ ASSERT_CMPINT64(placeholder.sparsity, ==, 1);
151
+
152
+ // Parse FLE2RangeFindSpec.
153
+ {
154
+ mc_FLE2RangeFindSpec_t spec;
155
+
156
+ ASSERT_OK_STATUS(mc_FLE2RangeFindSpec_parse(&spec, &placeholder.v_iter, false /* use_range_v2 */, status),
157
+ status);
158
+
159
+ ASSERT(spec.edgesInfo.set);
160
+
161
+ ASSERT(BSON_ITER_HOLDS_INT32(&spec.edgesInfo.value.lowerBound));
162
+ ASSERT_CMPINT32(bson_iter_int32(&spec.edgesInfo.value.lowerBound), ==, 0);
163
+ ASSERT(spec.edgesInfo.value.lbIncluded);
164
+
165
+ ASSERT(BSON_ITER_HOLDS_INT32(&spec.edgesInfo.value.upperBound));
166
+ ASSERT_CMPINT32(bson_iter_int32(&spec.edgesInfo.value.upperBound), ==, 1234567);
167
+ ASSERT(spec.edgesInfo.value.ubIncluded);
168
+
169
+ ASSERT(BSON_ITER_HOLDS_INT32(&spec.edgesInfo.value.indexMin));
170
+ ASSERT_CMPINT32(bson_iter_int32(&spec.edgesInfo.value.indexMin), ==, 0);
171
+ ASSERT(spec.edgesInfo.value.ubIncluded);
172
+
173
+ ASSERT(BSON_ITER_HOLDS_INT32(&spec.edgesInfo.value.indexMax));
174
+ ASSERT_CMPINT32(bson_iter_int32(&spec.edgesInfo.value.indexMax), ==, 1234567);
175
+ ASSERT(spec.edgesInfo.value.ubIncluded);
176
+
177
+ ASSERT_CMPINT32(spec.payloadId, ==, 1234);
178
+
179
+ ASSERT_CMPINT(spec.firstOperator, ==, FLE2RangeOperator_kGt);
180
+ ASSERT_CMPINT(spec.secondOperator, ==, FLE2RangeOperator_kNone);
181
+ }
182
+
183
+ mc_FLE2EncryptionPlaceholder_cleanup(&placeholder);
184
+ _mongocrypt_buffer_cleanup(&buf);
185
+ mongocrypt_status_destroy(status);
186
+ }
187
+
188
+ // Test type=MONGOCRYPT_FLE2_PLACEHOLDER_TYPE_FIND with precision.
189
+ {
190
+ mc_FLE2EncryptionPlaceholder_t placeholder;
191
+ bson_t as_bson;
192
+ mongocrypt_status_t *status;
193
+ _mongocrypt_buffer_t buf;
194
+
195
+ status = mongocrypt_status_new();
196
+ _mongocrypt_buffer_copy_from_hex(&buf,
197
+ "030b0100001074000200000010610003000000056b690010000000041234567812349"
198
+ "8761234123456789012056b75001000000004abcdefab123498761234123456789012"
199
+ "037600ac000000036564676573496e666f007a000000016c6f776572426f756e64000"
200
+ "000000000000000086c62496e636c756465640001017570706572426f756e64000000"
201
+ "000000006940087562496e636c75646564000110707265636973696f6e00020000000"
202
+ "1696e6465784d696e00000000000000000001696e6465784d61780000000000000069"
203
+ "4000107061796c6f6164496400d20400001066697273744f70657261746f720001000"
204
+ "0000012636d000000000000000000127300010000000000000000");
205
+ ASSERT(bson_init_static(&as_bson, buf.data + 1, buf.len - 1));
206
+ mc_FLE2EncryptionPlaceholder_init(&placeholder);
207
+ ASSERT_OK_STATUS(mc_FLE2EncryptionPlaceholder_parse(&placeholder, &as_bson, status), status);
208
+
209
+ ASSERT(placeholder.type == MONGOCRYPT_FLE2_PLACEHOLDER_TYPE_FIND);
210
+ ASSERT(placeholder.algorithm == MONGOCRYPT_FLE2_ALGORITHM_RANGE);
211
+
212
+ _mongocrypt_buffer_t expect_index_key_id;
213
+ _mongocrypt_buffer_copy_from_hex(&expect_index_key_id, "12345678123498761234123456789012");
214
+ ASSERT_CMPBUF(placeholder.index_key_id, expect_index_key_id);
215
+ _mongocrypt_buffer_cleanup(&expect_index_key_id);
216
+
217
+ _mongocrypt_buffer_t expect_user_key_id;
218
+ _mongocrypt_buffer_copy_from_hex(&expect_user_key_id, "abcdefab123498761234123456789012");
219
+ ASSERT_CMPBUF(placeholder.user_key_id, expect_user_key_id);
220
+ _mongocrypt_buffer_cleanup(&expect_user_key_id);
221
+
222
+ ASSERT_CMPINT64(placeholder.sparsity, ==, 1);
223
+
224
+ // Parse FLE2RangeFindSpec.
225
+ {
226
+ mc_FLE2RangeFindSpec_t spec;
227
+
228
+ ASSERT_OK_STATUS(mc_FLE2RangeFindSpec_parse(&spec, &placeholder.v_iter, false /* use_range_v2 */, status),
229
+ status);
230
+
231
+ ASSERT(spec.edgesInfo.set);
232
+
233
+ ASSERT(BSON_ITER_HOLDS_DOUBLE(&spec.edgesInfo.value.lowerBound));
234
+ ASSERT_CMPDOUBLE(bson_iter_double(&spec.edgesInfo.value.lowerBound), ==, 0.0);
235
+ ASSERT(spec.edgesInfo.value.lbIncluded);
236
+
237
+ ASSERT(BSON_ITER_HOLDS_DOUBLE(&spec.edgesInfo.value.upperBound));
238
+ ASSERT_CMPDOUBLE(bson_iter_double(&spec.edgesInfo.value.upperBound), ==, 200.0);
239
+ ASSERT(spec.edgesInfo.value.ubIncluded);
240
+
241
+ ASSERT(BSON_ITER_HOLDS_DOUBLE(&spec.edgesInfo.value.indexMin));
242
+ ASSERT_CMPDOUBLE(bson_iter_double(&spec.edgesInfo.value.indexMin), ==, 0);
243
+ ASSERT(spec.edgesInfo.value.ubIncluded);
244
+
245
+ ASSERT(BSON_ITER_HOLDS_DOUBLE(&spec.edgesInfo.value.indexMax));
246
+ ASSERT_CMPDOUBLE(bson_iter_double(&spec.edgesInfo.value.indexMax), ==, 200.0);
247
+ ASSERT(spec.edgesInfo.value.ubIncluded);
248
+
249
+ ASSERT_CMPDOUBLE(spec.payloadId, ==, 1234);
250
+
251
+ ASSERT_CMPINT(spec.firstOperator, ==, FLE2RangeOperator_kGt);
252
+ ASSERT(spec.edgesInfo.value.precision.set);
253
+ ASSERT_CMPUINT32(spec.edgesInfo.value.precision.value, ==, 2);
254
+ }
255
+
256
+ mc_FLE2EncryptionPlaceholder_cleanup(&placeholder);
257
+ _mongocrypt_buffer_cleanup(&buf);
258
+ mongocrypt_status_destroy(status);
259
+ }
260
+
261
+ // Test type=MONGOCRYPT_FLE2_PLACEHOLDER_TYPE_INSERT with precision.
262
+ {
263
+ mc_FLE2EncryptionPlaceholder_t placeholder;
264
+ bson_t as_bson;
265
+ mongocrypt_status_t *status;
266
+ _mongocrypt_buffer_t buf;
267
+
268
+ status = mongocrypt_status_new();
269
+ _mongocrypt_buffer_copy_from_hex(&buf,
270
+ "03980000001074000100000010610003000000056b690010000000041234567812349"
271
+ "8761234123456789012056b75001000000004abcdefab123498761234123456789012"
272
+ "0376003900000001760077be9f1a2fdd5e40016d696e000000000000000000016d617"
273
+ "800000000000000694010707265636973696f6e00020000000012636d000000000000"
274
+ "000000127300010000000000000000");
275
+ ASSERT(bson_init_static(&as_bson, buf.data + 1, buf.len - 1));
276
+ mc_FLE2EncryptionPlaceholder_init(&placeholder);
277
+ ASSERT_OK_STATUS(mc_FLE2EncryptionPlaceholder_parse(&placeholder, &as_bson, status), status);
278
+
279
+ ASSERT(placeholder.type == MONGOCRYPT_FLE2_PLACEHOLDER_TYPE_INSERT);
280
+ ASSERT(placeholder.algorithm == MONGOCRYPT_FLE2_ALGORITHM_RANGE);
281
+
282
+ _mongocrypt_buffer_t expect_index_key_id;
283
+ _mongocrypt_buffer_copy_from_hex(&expect_index_key_id, "12345678123498761234123456789012");
284
+ ASSERT_CMPBUF(placeholder.index_key_id, expect_index_key_id);
285
+ _mongocrypt_buffer_cleanup(&expect_index_key_id);
286
+
287
+ _mongocrypt_buffer_t expect_user_key_id;
288
+ _mongocrypt_buffer_copy_from_hex(&expect_user_key_id, "abcdefab123498761234123456789012");
289
+ ASSERT_CMPBUF(placeholder.user_key_id, expect_user_key_id);
290
+ _mongocrypt_buffer_cleanup(&expect_user_key_id);
291
+
292
+ ASSERT_CMPINT64(placeholder.sparsity, ==, 1);
293
+
294
+ // Parse FLE2RangeInsertSpec.
295
+ {
296
+ mc_FLE2RangeInsertSpec_t spec;
297
+
298
+ ASSERT_OK_STATUS(mc_FLE2RangeInsertSpec_parse(&spec, &placeholder.v_iter, false /* use_range_v2 */, status),
299
+ status);
300
+
301
+ ASSERT(BSON_ITER_HOLDS_DOUBLE(&spec.v));
302
+ ASSERT_CMPDOUBLE(bson_iter_double(&spec.v), ==, 123.456);
303
+
304
+ ASSERT(BSON_ITER_HOLDS_DOUBLE(&spec.min));
305
+ ASSERT_CMPDOUBLE(bson_iter_double(&spec.min), ==, 0.0);
306
+
307
+ ASSERT(BSON_ITER_HOLDS_DOUBLE(&spec.max));
308
+ ASSERT_CMPDOUBLE(bson_iter_double(&spec.max), ==, 200.0);
309
+
310
+ ASSERT(spec.precision.set);
311
+ ASSERT_CMPUINT32(spec.precision.value, ==, 2);
312
+ }
313
+
314
+ mc_FLE2EncryptionPlaceholder_cleanup(&placeholder);
315
+ _mongocrypt_buffer_cleanup(&buf);
316
+ mongocrypt_status_destroy(status);
317
+ }
318
+ }
319
+
320
+ static bool _parse_text_search_spec_from_placeholder(_mongocrypt_tester_t *tester,
321
+ const char *spec_json_in,
322
+ mc_FLE2TextSearchInsertSpec_t *spec_out,
323
+ mongocrypt_status_t *status_out) {
324
+ const char *template = RAW_STRING({
325
+ "t" : {"$numberInt" : "1"},
326
+ "a" : {"$numberInt" : "4"},
327
+ "ki" : {"$binary" : {"base64" : "EjRWeBI0mHYSNBI0VniQEg==", "subType" : "04"}},
328
+ "ku" : {"$binary" : {"base64" : "q83vqxI0mHYSNBI0VniQEg==", "subType" : "04"}},
329
+ "v" : % s,
330
+ "cm" : {"$numberLong" : "7"}
331
+ });
332
+ bson_t *const as_bson = TMP_BSON(template, spec_json_in);
333
+
334
+ mc_FLE2EncryptionPlaceholder_t placeholder;
335
+ mc_FLE2EncryptionPlaceholder_init(&placeholder);
336
+ ASSERT_OK_STATUS(mc_FLE2EncryptionPlaceholder_parse(&placeholder, as_bson, status_out), status_out);
337
+
338
+ ASSERT(placeholder.type == MONGOCRYPT_FLE2_PLACEHOLDER_TYPE_INSERT);
339
+ ASSERT(placeholder.algorithm == MONGOCRYPT_FLE2_ALGORITHM_TEXT_SEARCH);
340
+
341
+ _mongocrypt_buffer_t expect_index_key_id;
342
+ _mongocrypt_buffer_copy_from_hex(&expect_index_key_id, "12345678123498761234123456789012");
343
+ ASSERT_CMPBUF(placeholder.index_key_id, expect_index_key_id);
344
+ _mongocrypt_buffer_cleanup(&expect_index_key_id);
345
+
346
+ _mongocrypt_buffer_t expect_user_key_id;
347
+ _mongocrypt_buffer_copy_from_hex(&expect_user_key_id, "abcdefab123498761234123456789012");
348
+ ASSERT_CMPBUF(placeholder.user_key_id, expect_user_key_id);
349
+ _mongocrypt_buffer_cleanup(&expect_user_key_id);
350
+
351
+ ASSERT_CMPINT64(placeholder.sparsity, ==, 0);
352
+ ASSERT(placeholder.maxContentionFactor == 7);
353
+
354
+ bool res = mc_FLE2TextSearchInsertSpec_parse(spec_out, &placeholder.v_iter, status_out);
355
+
356
+ mc_FLE2EncryptionPlaceholder_cleanup(&placeholder);
357
+ return res;
358
+ }
359
+
360
+ static void _test_FLE2EncryptionPlaceholder_textSearch_parse(_mongocrypt_tester_t *tester) {
361
+ // Test type=MONGOCRYPT_FLE2_PLACEHOLDER_TYPE_INSERT with substr + suffix + prefix specs
362
+ {
363
+ const char *input = RAW_STRING({
364
+ "v" : "foobar",
365
+ "casef" : false,
366
+ "diacf" : true,
367
+ "substr" : {"ub" : {"$numberInt" : "200"}, "lb" : {"$numberInt" : "20"}, "mlen" : {"$numberInt" : "2000"}},
368
+ "suffix" : {"ub" : {"$numberInt" : "300"}, "lb" : {"$numberInt" : "30"}},
369
+ "prefix" : {"ub" : {"$numberInt" : "400"}, "lb" : {"$numberInt" : "400"}}
370
+ });
371
+ mongocrypt_status_t *status = mongocrypt_status_new();
372
+ mc_FLE2TextSearchInsertSpec_t spec;
373
+ ASSERT_OK_STATUS(_parse_text_search_spec_from_placeholder(tester, input, &spec, status), status);
374
+ ASSERT(BSON_ITER_HOLDS_UTF8(&spec.v_iter));
375
+ ASSERT(bson_iter_utf8(&spec.v_iter, NULL) == spec.v);
376
+ ASSERT(strlen("foobar") == spec.len);
377
+ ASSERT(0 == strncmp("foobar", spec.v, spec.len));
378
+ ASSERT(spec.diacf == true);
379
+ ASSERT(spec.casef == false);
380
+ ASSERT(spec.substr.set == true);
381
+ ASSERT(spec.substr.value.lb == 20);
382
+ ASSERT(spec.substr.value.ub == 200);
383
+ ASSERT(spec.substr.value.mlen == 2000);
384
+ ASSERT(spec.suffix.set == true);
385
+ ASSERT(spec.suffix.value.lb == 30);
386
+ ASSERT(spec.suffix.value.ub == 300);
387
+ ASSERT(spec.prefix.set == true);
388
+ ASSERT(spec.prefix.value.lb == 400);
389
+ ASSERT(spec.prefix.value.ub == 400);
390
+ mongocrypt_status_destroy(status);
391
+ }
392
+
393
+ // Test type=MONGOCRYPT_FLE2_PLACEHOLDER_TYPE_INSERT without substring, suffix, or prefix specs
394
+ {
395
+ const char *input = RAW_STRING({"v" : "foobar", "casef" : false, "diacf" : true});
396
+ mongocrypt_status_t *status = mongocrypt_status_new();
397
+ mc_FLE2TextSearchInsertSpec_t spec;
398
+ ASSERT_FAILS_STATUS(_parse_text_search_spec_from_placeholder(tester, input, &spec, status),
399
+ status,
400
+ "Must have a substring, suffix, or prefix index specification");
401
+ mongocrypt_status_destroy(status);
402
+ }
403
+
404
+ // Test type=MONGOCRYPT_FLE2_PLACEHOLDER_TYPE_INSERT with lb > ub
405
+ #define LB_GT_UB_TEST(Type) \
406
+ do { \
407
+ const char *input = RAW_STRING({ \
408
+ "v" : "foobar", \
409
+ "casef" : false, \
410
+ "diacf" : true, \
411
+ Type : {"ub" : {"$numberInt" : "30"}, "lb" : {"$numberInt" : "40"}, "mlen" : {"$numberInt" : "400"}} \
412
+ }); \
413
+ mongocrypt_status_t *status = mongocrypt_status_new(); \
414
+ mc_FLE2TextSearchInsertSpec_t spec; \
415
+ ASSERT_FAILS_STATUS(_parse_text_search_spec_from_placeholder(tester, input, &spec, status), \
416
+ status, \
417
+ "upper bound cannot be less than the lower bound"); \
418
+ mongocrypt_status_destroy(status); \
419
+ } while (0)
420
+ LB_GT_UB_TEST("substr");
421
+ LB_GT_UB_TEST("suffix");
422
+ LB_GT_UB_TEST("prefix");
423
+ #undef LB_GT_UB_TEST
424
+
425
+ // Test type=MONGOCRYPT_FLE2_PLACEHOLDER_TYPE_INSERT with mlen < ub
426
+ {
427
+ const char *input = RAW_STRING({
428
+ "v" : "foobar",
429
+ "casef" : false,
430
+ "diacf" : true,
431
+ "substr" :
432
+ {"ub" : {"$numberInt" : "2000"}, "lb" : {"$numberInt" : "20"}, "mlen" : {"$numberInt" : "200"}}
433
+ });
434
+ mongocrypt_status_t *status = mongocrypt_status_new();
435
+ mc_FLE2TextSearchInsertSpec_t spec;
436
+ ASSERT_FAILS_STATUS(_parse_text_search_spec_from_placeholder(tester, input, &spec, status),
437
+ status,
438
+ "maximum indexed length cannot be less than the upper bound");
439
+ mongocrypt_status_destroy(status);
440
+ }
441
+ }
442
+
443
+ static void _test_FLE2EncryptionPlaceholder_parse_errors(_mongocrypt_tester_t *tester) {
444
+ bson_t *input_bson = TMP_BSON(BSON_STR({
445
+ "t" : {"$numberInt" : "1"},
446
+ "a" : {"$numberInt" : "1"},
447
+ "ki" : {"$binary" : {"base64" : "EjRWeBI0mHYSNBI0VniQEg==", "subType" : "04"}},
448
+ "ku" : {"$binary" : {"base64" : "q83vqxI0mHYSNBI0VniQEg==", "subType" : "04"}},
449
+ "v" : "foobar",
450
+ "cm" : "wrong type!"
451
+ }));
452
+
453
+ mc_FLE2EncryptionPlaceholder_t payload;
454
+ mc_FLE2EncryptionPlaceholder_init(&payload);
455
+ mongocrypt_status_t *status = mongocrypt_status_new();
456
+ ASSERT_FAILS_STATUS(mc_FLE2EncryptionPlaceholder_parse(&payload, input_bson, status),
457
+ status,
458
+ "'cm' must be an int64");
459
+ mc_FLE2EncryptionPlaceholder_cleanup(&payload);
460
+ mongocrypt_status_destroy(status);
461
+ }
462
+
463
+ void _mongocrypt_tester_install_fle2_encryption_placeholder(_mongocrypt_tester_t *tester) {
464
+ INSTALL_TEST(_test_FLE2EncryptionPlaceholder_parse);
465
+ INSTALL_TEST(_test_FLE2EncryptionPlaceholder_range_parse);
466
+ INSTALL_TEST(_test_FLE2EncryptionPlaceholder_textSearch_parse);
467
+ INSTALL_TEST(_test_FLE2EncryptionPlaceholder_parse_errors);
468
+ }