libmongocrypt-helper 1.13.2.0.1001 → 1.14.0.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 (250) hide show
  1. checksums.yaml +4 -4
  2. data/ext/libmongocrypt/libmongocrypt/CHANGELOG.md +8 -0
  3. data/ext/libmongocrypt/libmongocrypt/CMakeLists.txt +5 -1
  4. data/ext/libmongocrypt/libmongocrypt/CODEOWNERS +4 -1
  5. data/ext/libmongocrypt/libmongocrypt/Earthfile +18 -17
  6. data/ext/libmongocrypt/libmongocrypt/README.md +8 -8
  7. data/ext/libmongocrypt/libmongocrypt/bindings/python/CHANGELOG.rst +7 -0
  8. data/ext/libmongocrypt/libmongocrypt/bindings/python/CONTRIBUTING.md +34 -0
  9. data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/asynchronous/state_machine.py +6 -2
  10. data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/binding.py +18 -2
  11. data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/mongocrypt.py +9 -1
  12. data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/options.py +14 -0
  13. data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/synchronous/state_machine.py +6 -2
  14. data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/version.py +1 -1
  15. data/ext/libmongocrypt/libmongocrypt/bindings/python/sbom.json +8 -8
  16. data/ext/libmongocrypt/libmongocrypt/bindings/python/scripts/libmongocrypt-version.txt +1 -0
  17. data/ext/libmongocrypt/libmongocrypt/bindings/python/{release.sh → scripts/release.sh} +9 -3
  18. data/ext/libmongocrypt/libmongocrypt/bindings/python/{synchro.py → scripts/synchro.py} +16 -9
  19. data/ext/libmongocrypt/libmongocrypt/bindings/python/scripts/synchro.sh +8 -0
  20. data/ext/libmongocrypt/libmongocrypt/bindings/python/scripts/update-version.sh +27 -0
  21. data/ext/libmongocrypt/libmongocrypt/bindings/python/scripts/update_binding.py +78 -0
  22. data/ext/libmongocrypt/libmongocrypt/bindings/python/test/test_mongocrypt.py +15 -0
  23. data/ext/libmongocrypt/libmongocrypt/doc/releasing.md +25 -18
  24. data/ext/libmongocrypt/libmongocrypt/etc/calc_release_version.py +39 -13
  25. data/ext/libmongocrypt/libmongocrypt/etc/calc_release_version_selftest.sh +1 -1
  26. data/ext/libmongocrypt/libmongocrypt/etc/cyclonedx.sbom.json +2 -2
  27. data/ext/libmongocrypt/libmongocrypt/kms-message/CMakeLists.txt +1 -1
  28. data/ext/libmongocrypt/libmongocrypt/kms-message/src/hexlify.c +5 -0
  29. data/ext/libmongocrypt/libmongocrypt/kms-message/src/hexlify.h +1 -1
  30. data/ext/libmongocrypt/libmongocrypt/kms-message/src/kms_azure_request.c +1 -1
  31. data/ext/libmongocrypt/libmongocrypt/kms-message/src/kms_gcp_request.c +1 -1
  32. data/ext/libmongocrypt/libmongocrypt/kms-message/src/kms_kmip_reader_writer.c +4 -2
  33. data/ext/libmongocrypt/libmongocrypt/kms-message/src/kms_kmip_request.c +1 -2
  34. data/ext/libmongocrypt/libmongocrypt/kms-message/src/kms_message_private.h +5 -1
  35. data/ext/libmongocrypt/libmongocrypt/kms-message/src/kms_request.c +1 -1
  36. data/ext/libmongocrypt/libmongocrypt/kms-message/src/kms_request_opt.c +1 -1
  37. data/ext/libmongocrypt/libmongocrypt/kms-message/src/kms_request_str.c +2 -8
  38. data/ext/libmongocrypt/libmongocrypt/kms-message/src/kms_request_str.h +9 -0
  39. data/ext/libmongocrypt/libmongocrypt/kms-message/src/kms_response_parser.c +0 -1
  40. data/ext/libmongocrypt/libmongocrypt/kms-message/src/sort.c +7 -3
  41. data/ext/libmongocrypt/libmongocrypt/kms-message/src/sort.h +2 -0
  42. data/ext/libmongocrypt/libmongocrypt/kms-message/test/test_kmip_reader_writer.c +8 -1
  43. data/ext/libmongocrypt/libmongocrypt/kms-message/test/test_kms_assert.h +5 -4
  44. data/ext/libmongocrypt/libmongocrypt/kms-message/test/test_kms_azure_online.c +1 -1
  45. data/ext/libmongocrypt/libmongocrypt/kms-message/test/test_kms_gcp_online.c +1 -1
  46. data/ext/libmongocrypt/libmongocrypt/kms-message/test/test_kms_kmip_request.c +4 -0
  47. data/ext/libmongocrypt/libmongocrypt/kms-message/test/test_kms_kmip_response.c +3 -0
  48. data/ext/libmongocrypt/libmongocrypt/kms-message/test/test_kms_kmip_response_parser.c +4 -0
  49. data/ext/libmongocrypt/libmongocrypt/kms-message/test/test_kms_online_util.c +1 -1
  50. data/ext/libmongocrypt/libmongocrypt/kms-message/test/test_kms_online_util.h +1 -1
  51. data/ext/libmongocrypt/libmongocrypt/kms-message/test/test_kms_request.c +39 -39
  52. data/ext/libmongocrypt/libmongocrypt/src/crypto/libcrypto.c +235 -65
  53. data/ext/libmongocrypt/libmongocrypt/src/crypto/none.c +1 -1
  54. data/ext/libmongocrypt/libmongocrypt/src/csfle-markup.cpp +4 -2
  55. data/ext/libmongocrypt/libmongocrypt/src/mc-dec128.h +2 -2
  56. data/ext/libmongocrypt/libmongocrypt/src/mc-dec128.test.cpp +2 -2
  57. data/ext/libmongocrypt/libmongocrypt/src/mc-efc-private.h +1 -4
  58. data/ext/libmongocrypt/libmongocrypt/src/mc-efc.c +9 -11
  59. data/ext/libmongocrypt/libmongocrypt/src/mc-fle-blob-subtype-private.h +1 -0
  60. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-encryption-placeholder-private.h +10 -8
  61. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-encryption-placeholder.c +167 -176
  62. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-find-equality-payload-v2.c +6 -17
  63. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-find-equality-payload.c +6 -17
  64. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-find-range-payload-private-v2.h +1 -1
  65. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-find-range-payload-v2.c +25 -26
  66. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-find-range-payload.c +2 -1
  67. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-find-text-payload-private.h +122 -0
  68. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-find-text-payload.c +477 -0
  69. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-insert-update-payload-private-v2.h +1 -3
  70. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-insert-update-payload-v2.c +28 -43
  71. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-insert-update-payload.c +6 -17
  72. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-payload-iev-v2.c +6 -5
  73. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-payload-iev.c +13 -10
  74. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-payload-uev-common.c +3 -2
  75. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-rfds.c +7 -6
  76. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-tag-and-encrypted-metadata-block.c +4 -3
  77. data/ext/libmongocrypt/libmongocrypt/src/mc-optional-private.h +1 -1
  78. data/ext/libmongocrypt/libmongocrypt/src/mc-parse-utils-private.h +27 -0
  79. data/ext/libmongocrypt/libmongocrypt/src/mc-parse-utils.c +48 -0
  80. data/ext/libmongocrypt/libmongocrypt/src/mc-range-edge-generation-private.h +5 -5
  81. data/ext/libmongocrypt/libmongocrypt/src/mc-range-edge-generation.c +15 -20
  82. data/ext/libmongocrypt/libmongocrypt/src/mc-range-encoding-private.h +4 -6
  83. data/ext/libmongocrypt/libmongocrypt/src/mc-range-encoding.c +9 -18
  84. data/ext/libmongocrypt/libmongocrypt/src/mc-range-mincover-generator.template.h +4 -5
  85. data/ext/libmongocrypt/libmongocrypt/src/mc-range-mincover-private.h +5 -9
  86. data/ext/libmongocrypt/libmongocrypt/src/mc-range-mincover.c +14 -19
  87. data/ext/libmongocrypt/libmongocrypt/src/mc-rangeopts-private.h +2 -4
  88. data/ext/libmongocrypt/libmongocrypt/src/mc-rangeopts.c +109 -119
  89. data/ext/libmongocrypt/libmongocrypt/src/mc-reader-private.h +2 -2
  90. data/ext/libmongocrypt/libmongocrypt/src/mc-reader.c +4 -2
  91. data/ext/libmongocrypt/libmongocrypt/src/mc-schema-broker-private.h +0 -3
  92. data/ext/libmongocrypt/libmongocrypt/src/mc-schema-broker.c +4 -14
  93. data/ext/libmongocrypt/libmongocrypt/src/mc-str-encode-string-sets-private.h +1 -1
  94. data/ext/libmongocrypt/libmongocrypt/src/mc-str-encode-string-sets.c +3 -3
  95. data/ext/libmongocrypt/libmongocrypt/src/mc-text-search-str-encode-private.h +8 -1
  96. data/ext/libmongocrypt/libmongocrypt/src/mc-text-search-str-encode.c +78 -2
  97. data/ext/libmongocrypt/libmongocrypt/src/mc-tokens-private.h +34 -16
  98. data/ext/libmongocrypt/libmongocrypt/src/mc-tokens.c +66 -74
  99. data/ext/libmongocrypt/libmongocrypt/src/mc-writer-private.h +1 -1
  100. data/ext/libmongocrypt/libmongocrypt/src/mc-writer.c +4 -2
  101. data/ext/libmongocrypt/libmongocrypt/src/mlib/error.h +1 -1
  102. data/ext/libmongocrypt/libmongocrypt/src/mlib/int128.h +12 -1
  103. data/ext/libmongocrypt/libmongocrypt/src/mlib/int128.test.cpp +5 -0
  104. data/ext/libmongocrypt/libmongocrypt/src/mlib/path.h +5 -5
  105. data/ext/libmongocrypt/libmongocrypt/src/mlib/path.test.c +2 -5
  106. data/ext/libmongocrypt/libmongocrypt/src/mlib/str.h +65 -58
  107. data/ext/libmongocrypt/libmongocrypt/src/mlib/str.test.c +3 -3
  108. data/ext/libmongocrypt/libmongocrypt/src/mlib/thread.h +1 -1
  109. data/ext/libmongocrypt/libmongocrypt/src/mlib/user-check.h +1 -1
  110. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-cache-collinfo-private.h +1 -1
  111. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-cache-collinfo.c +4 -0
  112. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-ciphertext-private.h +1 -1
  113. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-crypto-private.h +4 -4
  114. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-crypto.c +29 -25
  115. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-ctx-datakey.c +3 -2
  116. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-ctx-decrypt.c +6 -3
  117. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-ctx-encrypt.c +48 -58
  118. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-ctx-rewrap-many-datakey.c +12 -0
  119. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-ctx.c +5 -13
  120. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-dll-private.h +19 -2
  121. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-key-broker.c +9 -9
  122. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-marking-private.h +3 -4
  123. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-marking.c +285 -89
  124. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-opts-private.h +0 -2
  125. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-opts.c +0 -1
  126. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-private.h +1 -1
  127. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-util.c +4 -1
  128. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt.c +47 -31
  129. data/ext/libmongocrypt/libmongocrypt/src/os_posix/os_dll.c +2 -0
  130. data/ext/libmongocrypt/libmongocrypt/src/os_posix/os_mutex.c +1 -1
  131. data/ext/libmongocrypt/libmongocrypt/src/os_win/os_dll.c +3 -1
  132. data/ext/libmongocrypt/libmongocrypt/src/os_win/os_mutex.c +1 -1
  133. data/ext/libmongocrypt/libmongocrypt/src/unicode/case-fold-map.c +1 -1
  134. data/ext/libmongocrypt/libmongocrypt/src/unicode/diacritic-fold-map.c +1 -1
  135. data/ext/libmongocrypt/libmongocrypt/src/unicode/fold.c +1 -1
  136. data/ext/libmongocrypt/libmongocrypt/test/crypt_shared-stub.cpp +0 -14
  137. data/ext/libmongocrypt/libmongocrypt/test/data/compact/success/encrypted-field-config-map.json +6 -1
  138. data/ext/libmongocrypt/libmongocrypt/test/data/explicit-decrypt/FLE2InsertUpdatePayloadV2-RangeV2.json +8 -0
  139. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/date-v2/encrypted-field-map.json +1 -1
  140. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/date-v2/encrypted-payload.json +6 -4
  141. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/date-v2/mongocryptd-reply.json +1 -1
  142. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/decimal128-precision-v2/encrypted-field-map.json +1 -1
  143. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/decimal128-precision-v2/encrypted-payload.json +6 -4
  144. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/decimal128-precision-v2/mongocryptd-reply.json +2 -2
  145. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/decimal128-v2/encrypted-field-map.json +1 -1
  146. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/decimal128-v2/encrypted-payload.json +6 -4
  147. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/decimal128-v2/mongocryptd-reply.json +1 -1
  148. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/double-precision-v2/encrypted-payload.json +14 -6
  149. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/double-v2/encrypted-field-map.json +1 -1
  150. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/double-v2/encrypted-payload.json +6 -4
  151. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/double-v2/mongocryptd-reply.json +1 -1
  152. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/int32-v2/encrypted-field-map.json +1 -1
  153. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/int32-v2/encrypted-payload.json +6 -4
  154. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/int32-v2/mongocryptd-reply.json +1 -1
  155. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/int64-v2/encrypted-field-map.json +1 -1
  156. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/int64-v2/encrypted-payload.json +6 -4
  157. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/int64-v2/mongocryptd-reply.json +1 -1
  158. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range-explicit/double/encrypted-payload-v2.json +1 -1
  159. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range-explicit/double-precision/encrypted-payload-v2.json +1 -1
  160. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range-explicit/int32/encrypted-payload-v2.json +1 -1
  161. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range-explicit/int32-openinterval/encrypted-payload-v2.json +1 -1
  162. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/date-v2/encrypted-field-map.json +1 -1
  163. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/date-v2/encrypted-payload.json +6 -4
  164. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/date-v2/mongocryptd-reply.json +1 -1
  165. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/decimal128-precision-v2/encrypted-field-map.json +1 -1
  166. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/decimal128-precision-v2/encrypted-payload.json +6 -4
  167. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/decimal128-precision-v2/mongocryptd-reply.json +1 -1
  168. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/decimal128-v2/encrypted-field-map.json +1 -1
  169. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/decimal128-v2/encrypted-payload.json +6 -4
  170. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/decimal128-v2/mongocryptd-reply.json +1 -1
  171. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/double-precision-v2/encrypted-payload.json +14 -6
  172. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/double-v2/encrypted-field-map.json +1 -1
  173. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/double-v2/encrypted-payload.json +6 -4
  174. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/double-v2/mongocryptd-reply.json +1 -1
  175. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/int32-v2/encrypted-field-map.json +1 -1
  176. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/int32-v2/encrypted-payload.json +3 -3
  177. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/int32-v2/mongocryptd-reply.json +1 -1
  178. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/int64-v2/encrypted-field-map.json +1 -1
  179. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/int64-v2/encrypted-payload.json +6 -4
  180. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/int64-v2/mongocryptd-reply.json +1 -1
  181. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range-explicit/double/encrypted-payload-v2.json +1 -1
  182. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range-explicit/double-precision/encrypted-payload-v2.json +1 -1
  183. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range-explicit/int32/encrypted-payload-v2.json +1 -1
  184. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range-explicit/sparsity-2/encrypted-payload-v2.json +1 -1
  185. data/ext/libmongocrypt/libmongocrypt/test/data/tokens/mc.json +8 -0
  186. data/ext/libmongocrypt/libmongocrypt/test/data/tokens/server.json +8 -0
  187. data/ext/libmongocrypt/libmongocrypt/test/example-state-machine.c +5 -5
  188. data/ext/libmongocrypt/libmongocrypt/test/test-dll.cpp +11 -5
  189. data/ext/libmongocrypt/libmongocrypt/test/test-gcp-auth.c +2 -2
  190. data/ext/libmongocrypt/libmongocrypt/test/test-mc-efc.c +9 -11
  191. data/ext/libmongocrypt/libmongocrypt/test/test-mc-fle2-encryption-placeholder.c +18 -29
  192. data/ext/libmongocrypt/libmongocrypt/test/test-mc-fle2-find-equality-payload-v2.c +1 -1
  193. data/ext/libmongocrypt/libmongocrypt/test/test-mc-fle2-find-range-payload-v2.c +2 -18
  194. data/ext/libmongocrypt/libmongocrypt/test/test-mc-fle2-find-text-payload.c +320 -0
  195. data/ext/libmongocrypt/libmongocrypt/test/test-mc-fle2-payload-iup-v2.c +2 -17
  196. data/ext/libmongocrypt/libmongocrypt/test/test-mc-fle2-payload-iup.c +1 -1
  197. data/ext/libmongocrypt/libmongocrypt/test/test-mc-fle2-rfds.c +8 -5
  198. data/ext/libmongocrypt/libmongocrypt/test/test-mc-range-edge-generation.c +6 -10
  199. data/ext/libmongocrypt/libmongocrypt/test/test-mc-range-encoding.c +29 -33
  200. data/ext/libmongocrypt/libmongocrypt/test/test-mc-range-mincover.c +12 -20
  201. data/ext/libmongocrypt/libmongocrypt/test/test-mc-rangeopts.c +5 -20
  202. data/ext/libmongocrypt/libmongocrypt/test/test-mc-reader.c +5 -5
  203. data/ext/libmongocrypt/libmongocrypt/test/test-mc-text-search-str-encode.c +147 -18
  204. data/ext/libmongocrypt/libmongocrypt/test/test-mc-tokens.c +35 -14
  205. data/ext/libmongocrypt/libmongocrypt/test/test-mc-writer.c +10 -10
  206. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-assert-match-bson.c +3 -7
  207. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-assert.h +36 -24
  208. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-buffer.c +4 -4
  209. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-cache.c +2 -2
  210. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-ciphertext.c +13 -13
  211. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-cleanup.c +49 -55
  212. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-compact.c +64 -67
  213. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-crypto-hooks.c +18 -18
  214. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-crypto-std-hooks.c +4 -0
  215. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-crypto.c +4 -3
  216. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-csfle-lib.c +13 -3
  217. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-ctx-decrypt.c +31 -13
  218. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-ctx-encrypt.c +35 -52
  219. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-ctx-rewrap-many-datakey.c +28 -1
  220. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-ctx-setopt.c +50 -91
  221. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-datakey.c +1 -1
  222. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-dll.c +7 -4
  223. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-endpoint.c +1 -1
  224. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-kek.c +1 -1
  225. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-key-cache.c +3 -5
  226. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-kms-ctx.c +2 -2
  227. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-local-kms.c +1 -1
  228. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-log.c +2 -2
  229. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-marking.c +527 -225
  230. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-status.c +1 -1
  231. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt.c +45 -56
  232. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt.h +12 -3
  233. data/ext/libmongocrypt/libmongocrypt/test/test-named-kms-providers.c +11 -11
  234. data/ext/libmongocrypt/libmongocrypt/test/test-unicode-fold.c +6 -2
  235. data/ext/libmongocrypt/libmongocrypt/test/util/HELP.autogen +1 -1
  236. data/ext/libmongocrypt/libmongocrypt/test/util/csfle.c +1 -1
  237. data/ext/libmongocrypt/libmongocrypt/test/util/util.c +5 -5
  238. data/ext/libmongocrypt/libmongocrypt/test/util/util.h +7 -6
  239. data/lib/libmongocrypt_helper/version.rb +2 -2
  240. metadata +17 -13
  241. data/ext/libmongocrypt/libmongocrypt/bindings/python/libmongocrypt-version.txt +0 -1
  242. data/ext/libmongocrypt/libmongocrypt/bindings/python/strip_header.py +0 -50
  243. data/ext/libmongocrypt/libmongocrypt/bindings/python/update-sbom.sh +0 -14
  244. data/ext/libmongocrypt/libmongocrypt/test/data/cleanup/success/encrypted-payload.json +0 -29
  245. data/ext/libmongocrypt/libmongocrypt/test/data/compact/success/encrypted-payload.json +0 -29
  246. data/ext/libmongocrypt/libmongocrypt/test/data/explicit-decrypt/FLE2EqualityIndexedValueV2.json +0 -8
  247. data/ext/libmongocrypt/libmongocrypt/test/data/explicit-decrypt/FLE2RangeIndexedValueV2.json +0 -8
  248. /data/ext/libmongocrypt/libmongocrypt/bindings/python/{build-manylinux-wheel.sh → scripts/build-manylinux-wheel.sh} +0 -0
  249. /data/ext/libmongocrypt/libmongocrypt/test/data/explicit-decrypt/{FLE2InsertUpdatePayload-with-edges.json → FLE2InsertUpdatePayload-RangeV1.json} +0 -0
  250. /data/ext/libmongocrypt/libmongocrypt/test/data/explicit-decrypt/{FLE2InsertUpdatePayload-with-edges-V2.json → FLE2InsertUpdatePayloadV2-RangeV1.json} +0 -0
@@ -54,6 +54,14 @@
54
54
  F(ServerTextSubstringToken) \
55
55
  F(ServerTextSuffixToken) \
56
56
  F(ServerTextPrefixToken) \
57
+ F(EDCTextExactDerivedFromDataToken) \
58
+ F(EDCTextSubstringDerivedFromDataToken) \
59
+ F(EDCTextSuffixDerivedFromDataToken) \
60
+ F(EDCTextPrefixDerivedFromDataToken) \
61
+ F(ESCTextExactDerivedFromDataToken) \
62
+ F(ESCTextSubstringDerivedFromDataToken) \
63
+ F(ESCTextSuffixDerivedFromDataToken) \
64
+ F(ESCTextPrefixDerivedFromDataToken) \
57
65
  F(EDCTextExactDerivedFromDataTokenAndContentionFactorToken) \
58
66
  F(EDCTextSubstringDerivedFromDataTokenAndContentionFactorToken) \
59
67
  F(EDCTextSuffixDerivedFromDataTokenAndContentionFactorToken) \
@@ -222,12 +230,9 @@ static void _mc_token_test_run(_mongocrypt_tester_t *tester, const char *path) {
222
230
 
223
231
  #define TEST_TEXT(Name, Suffix) TEST_HELPER(Name, Token, Text##Suffix##Token, )
224
232
  #define TEST_TEXT_EXTRA(Name, Suffix, BaseSuffix) TEST_HELPER(Name, BaseSuffix##Token, Text##Suffix##Token, )
225
- #define TEST_TEXT_DERIVED_FROM_BOTH(Name) \
226
- TEST_HELPER(Name, \
227
- Token, \
228
- DerivedFromDataTokenAndContentionFactorToken, \
229
- &test.value COMMA test.contentionFactor COMMA)
230
233
  #define TEST_TEXT_DERIVED_FROM_DATA(Name) TEST_HELPER(Name, Token, DerivedFromDataToken, &test.value COMMA)
234
+ #define TEST_TEXT_DERIVED_FROM_CONTENTION(Name) \
235
+ TEST_HELPER(Name, Token, TokenAndContentionFactorToken, test.contentionFactor COMMA)
231
236
 
232
237
  TEST_TEXT(EDC, Exact);
233
238
  TEST_TEXT(EDC, Substring);
@@ -244,15 +249,23 @@ static void _mc_token_test_run(_mongocrypt_tester_t *tester, const char *path) {
244
249
  TEST_TEXT_EXTRA(Server, Suffix, TokenDerivationLevel1);
245
250
  TEST_TEXT_EXTRA(Server, Prefix, TokenDerivationLevel1);
246
251
 
247
- TEST_TEXT_DERIVED_FROM_BOTH(EDCTextExact);
248
- TEST_TEXT_DERIVED_FROM_BOTH(EDCTextSubstring);
249
- TEST_TEXT_DERIVED_FROM_BOTH(EDCTextPrefix);
250
- TEST_TEXT_DERIVED_FROM_BOTH(EDCTextSuffix);
251
-
252
- TEST_TEXT_DERIVED_FROM_BOTH(ESCTextExact);
253
- TEST_TEXT_DERIVED_FROM_BOTH(ESCTextSubstring);
254
- TEST_TEXT_DERIVED_FROM_BOTH(ESCTextPrefix);
255
- TEST_TEXT_DERIVED_FROM_BOTH(ESCTextSuffix);
252
+ TEST_TEXT_DERIVED_FROM_DATA(EDCTextExact);
253
+ TEST_TEXT_DERIVED_FROM_DATA(EDCTextSubstring);
254
+ TEST_TEXT_DERIVED_FROM_DATA(EDCTextSuffix);
255
+ TEST_TEXT_DERIVED_FROM_DATA(EDCTextPrefix);
256
+ TEST_TEXT_DERIVED_FROM_CONTENTION(EDCTextExactDerivedFromData);
257
+ TEST_TEXT_DERIVED_FROM_CONTENTION(EDCTextSubstringDerivedFromData);
258
+ TEST_TEXT_DERIVED_FROM_CONTENTION(EDCTextSuffixDerivedFromData);
259
+ TEST_TEXT_DERIVED_FROM_CONTENTION(EDCTextPrefixDerivedFromData);
260
+
261
+ TEST_TEXT_DERIVED_FROM_DATA(ESCTextExact);
262
+ TEST_TEXT_DERIVED_FROM_DATA(ESCTextSubstring);
263
+ TEST_TEXT_DERIVED_FROM_DATA(ESCTextSuffix);
264
+ TEST_TEXT_DERIVED_FROM_DATA(ESCTextPrefix);
265
+ TEST_TEXT_DERIVED_FROM_CONTENTION(ESCTextExactDerivedFromData);
266
+ TEST_TEXT_DERIVED_FROM_CONTENTION(ESCTextSubstringDerivedFromData);
267
+ TEST_TEXT_DERIVED_FROM_CONTENTION(ESCTextSuffixDerivedFromData);
268
+ TEST_TEXT_DERIVED_FROM_CONTENTION(ESCTextPrefixDerivedFromData);
256
269
 
257
270
  TEST_TEXT_DERIVED_FROM_DATA(ServerTextExact);
258
271
  TEST_TEXT_DERIVED_FROM_DATA(ServerTextSubstring);
@@ -272,6 +285,10 @@ static void _mc_token_test_run(_mongocrypt_tester_t *tester, const char *path) {
272
285
  ESCTextSubstringDerivedFromDataTokenAndContentionFactorToken);
273
286
  mc_ESCTextExactDerivedFromDataTokenAndContentionFactorToken_destroy(
274
287
  ESCTextExactDerivedFromDataTokenAndContentionFactorToken);
288
+ mc_ESCTextPrefixDerivedFromDataToken_destroy(ESCTextPrefixDerivedFromDataToken);
289
+ mc_ESCTextSuffixDerivedFromDataToken_destroy(ESCTextSuffixDerivedFromDataToken);
290
+ mc_ESCTextSubstringDerivedFromDataToken_destroy(ESCTextSubstringDerivedFromDataToken);
291
+ mc_ESCTextExactDerivedFromDataToken_destroy(ESCTextExactDerivedFromDataToken);
275
292
  mc_EDCTextPrefixDerivedFromDataTokenAndContentionFactorToken_destroy(
276
293
  EDCTextPrefixDerivedFromDataTokenAndContentionFactorToken);
277
294
  mc_EDCTextSuffixDerivedFromDataTokenAndContentionFactorToken_destroy(
@@ -280,6 +297,10 @@ static void _mc_token_test_run(_mongocrypt_tester_t *tester, const char *path) {
280
297
  EDCTextSubstringDerivedFromDataTokenAndContentionFactorToken);
281
298
  mc_EDCTextExactDerivedFromDataTokenAndContentionFactorToken_destroy(
282
299
  EDCTextExactDerivedFromDataTokenAndContentionFactorToken);
300
+ mc_EDCTextPrefixDerivedFromDataToken_destroy(EDCTextPrefixDerivedFromDataToken);
301
+ mc_EDCTextSuffixDerivedFromDataToken_destroy(EDCTextSuffixDerivedFromDataToken);
302
+ mc_EDCTextSubstringDerivedFromDataToken_destroy(EDCTextSubstringDerivedFromDataToken);
303
+ mc_EDCTextExactDerivedFromDataToken_destroy(EDCTextExactDerivedFromDataToken);
283
304
  mc_ServerTextPrefixToken_destroy(ServerTextPrefixToken);
284
305
  mc_ServerTextSuffixToken_destroy(ServerTextSuffixToken);
285
306
  mc_ServerTextSubstringToken_destroy(ServerTextSubstringToken);
@@ -28,13 +28,13 @@ static void _test_mc_writer_ints(_mongocrypt_tester_t *tester) {
28
28
  _mongocrypt_buffer_init_size(&write_buffer, sizeof(uint8_t));
29
29
 
30
30
  mc_writer_t writer;
31
- mc_writer_init_from_buffer(&writer, &write_buffer, __FUNCTION__);
31
+ mc_writer_init_from_buffer(&writer, &write_buffer, __func__);
32
32
 
33
33
  uint8_t num = 4;
34
34
  ASSERT_OK_STATUS(mc_writer_write_u8(&writer, num, status), status);
35
35
 
36
36
  mc_reader_t reader;
37
- mc_reader_init_from_buffer(&reader, &write_buffer, __FUNCTION__);
37
+ mc_reader_init_from_buffer(&reader, &write_buffer, __func__);
38
38
 
39
39
  uint8_t out;
40
40
  ASSERT_OK_STATUS(mc_reader_read_u8(&reader, &out, status), status);
@@ -53,13 +53,13 @@ static void _test_mc_writer_ints(_mongocrypt_tester_t *tester) {
53
53
  _mongocrypt_buffer_init_size(&write_buffer, sizeof(uint32_t));
54
54
 
55
55
  mc_writer_t writer;
56
- mc_writer_init_from_buffer(&writer, &write_buffer, __FUNCTION__);
56
+ mc_writer_init_from_buffer(&writer, &write_buffer, __func__);
57
57
 
58
58
  uint32_t num = 23832405;
59
59
  ASSERT_OK_STATUS(mc_writer_write_u32(&writer, num, status), status);
60
60
 
61
61
  mc_reader_t reader;
62
- mc_reader_init_from_buffer(&reader, &write_buffer, __FUNCTION__);
62
+ mc_reader_init_from_buffer(&reader, &write_buffer, __func__);
63
63
 
64
64
  uint32_t out;
65
65
  ASSERT_OK_STATUS(mc_reader_read_u32(&reader, &out, status), status);
@@ -78,13 +78,13 @@ static void _test_mc_writer_ints(_mongocrypt_tester_t *tester) {
78
78
  _mongocrypt_buffer_init_size(&write_buffer, sizeof(uint64_t));
79
79
 
80
80
  mc_writer_t writer;
81
- mc_writer_init_from_buffer(&writer, &write_buffer, __FUNCTION__);
81
+ mc_writer_init_from_buffer(&writer, &write_buffer, __func__);
82
82
 
83
83
  uint64_t num = 23832405;
84
84
  ASSERT_OK_STATUS(mc_writer_write_u64(&writer, num, status), status);
85
85
 
86
86
  mc_reader_t reader;
87
- mc_reader_init_from_buffer(&reader, &write_buffer, __FUNCTION__);
87
+ mc_reader_init_from_buffer(&reader, &write_buffer, __func__);
88
88
 
89
89
  uint64_t out;
90
90
  ASSERT_OK_STATUS(mc_reader_read_u64(&reader, &out, status), status);
@@ -109,13 +109,13 @@ static void _test_mc_writer_buffer(_mongocrypt_tester_t *tester) {
109
109
  _mongocrypt_buffer_init_size(&write_buffer, input_buffer.len);
110
110
 
111
111
  mc_writer_t writer;
112
- mc_writer_init_from_buffer(&writer, &write_buffer, __FUNCTION__);
112
+ mc_writer_init_from_buffer(&writer, &write_buffer, __func__);
113
113
 
114
114
  ASSERT_OK_STATUS(mc_writer_write_buffer(&writer, &input_buffer, input_buffer.len, status), status);
115
115
 
116
116
  _mongocrypt_buffer_t read_buffer;
117
117
  mc_reader_t reader;
118
- mc_reader_init_from_buffer(&reader, &write_buffer, __FUNCTION__);
118
+ mc_reader_init_from_buffer(&reader, &write_buffer, __func__);
119
119
  ASSERT_OK_STATUS(mc_reader_read_buffer(&reader, &read_buffer, write_buffer.len, status), status);
120
120
 
121
121
  ASSERT_CMPBUF(input_buffer, read_buffer);
@@ -137,7 +137,7 @@ static void _test_mc_writer_prf(_mongocrypt_tester_t *tester) {
137
137
  _mongocrypt_buffer_init_size(&write_buffer, input_buffer.len);
138
138
 
139
139
  mc_writer_t writer;
140
- mc_writer_init_from_buffer(&writer, &write_buffer, __FUNCTION__);
140
+ mc_writer_init_from_buffer(&writer, &write_buffer, __func__);
141
141
 
142
142
  ASSERT_OK_STATUS(mc_writer_write_prfblock_buffer(&writer, &input_buffer, status), status);
143
143
  ASSERT_CMPBUF(input_buffer, write_buffer);
@@ -158,7 +158,7 @@ static void _test_mc_writer_uuid(_mongocrypt_tester_t *tester) {
158
158
  _mongocrypt_buffer_init_size(&write_buffer, input_buffer.len);
159
159
 
160
160
  mc_writer_t writer;
161
- mc_writer_init_from_buffer(&writer, &write_buffer, __FUNCTION__);
161
+ mc_writer_init_from_buffer(&writer, &write_buffer, __func__);
162
162
 
163
163
  ASSERT_OK_STATUS(mc_writer_write_uuid_buffer(&writer, &input_buffer, status), status);
164
164
  ASSERT_CMPBUF(input_buffer, write_buffer);
@@ -78,11 +78,6 @@ bool match_json(const bson_t *doc,
78
78
  const char *json_pattern,
79
79
  ...);
80
80
 
81
- #define ASSERT_MATCH(doc, ...) \
82
- do { \
83
- BSON_ASSERT(match_json(doc, false, __FILE__, __LINE__, BSON_FUNC, __VA_ARGS__)); \
84
- } while (0)
85
-
86
81
  const char *_mongoc_bson_type_to_str(bson_type_t t);
87
82
 
88
83
  static bool get_exists_operator(const bson_value_t *value, bool *exists);
@@ -225,7 +220,7 @@ bool match_bson(const bson_t *doc, const bson_t *pattern, bool is_command) {
225
220
 
226
221
  MLIB_ANNOTATE_PRINTF(2, 3)
227
222
 
228
- void match_err(match_ctx_t *ctx, const char *fmt, ...) {
223
+ static void match_err(match_ctx_t *ctx, const char *fmt, ...) {
229
224
  va_list args;
230
225
  char *formatted;
231
226
 
@@ -849,7 +844,8 @@ bool match_bson_value(const bson_value_t *doc, const bson_value_t *pattern, matc
849
844
  "numeric values may be equal)");
850
845
  }
851
846
  break;
852
- default: match_err(ctx, "unexpected value type %d: %s", doc->value_type, _mongoc_bson_type_to_str(doc->value_type));
847
+ default:
848
+ match_err(ctx, "unexpected value type %d: %s", (int)doc->value_type, _mongoc_bson_type_to_str(doc->value_type));
853
849
  }
854
850
 
855
851
  if (!ret) {
@@ -44,29 +44,32 @@
44
44
  ((void)0)
45
45
 
46
46
  #define TEST_ERROR(...) \
47
- do { \
48
- TEST_STDERR_PRINTF("test error %s:%d %s(): ", __FILE__, __LINE__, __FUNCTION__); \
47
+ if (1) { \
48
+ TEST_STDERR_PRINTF("test error %s:%d %s(): ", __FILE__, __LINE__, __func__); \
49
49
  TEST_STDERR_PRINTF(__VA_ARGS__); \
50
50
  TEST_STDERR_PRINTF("\n"); \
51
51
  abort(); \
52
- } while (0)
52
+ } else \
53
+ ((void)0)
53
54
 
54
55
  #define ASSERT(stmt) \
55
56
  if (!(stmt)) { \
56
57
  TEST_ERROR("statement failed %s", #stmt); \
57
- }
58
+ } else \
59
+ ((void)0)
58
60
 
59
61
  #define ASSERT_OR_PRINT_MSG(_statement, msg) \
60
- do { \
62
+ if (1) { \
61
63
  if (!(_statement)) { \
62
64
  TEST_ERROR("%s failed with msg: %s", #_statement, (msg)); \
63
65
  } \
64
- } while (0)
66
+ } else \
67
+ ((void)0)
65
68
 
66
69
  #define ASSERT_OR_PRINT(_statement, _err) ASSERT_OR_PRINT_MSG(_statement, mongocrypt_status_message(_err, NULL))
67
70
 
68
71
  #define ASSERT_OK_STATUS(_stmt, _status) \
69
- do { \
72
+ if (1) { \
70
73
  bool _retval = (_stmt); \
71
74
  bool _status_ok = mongocrypt_status_ok(_status); \
72
75
  const char *_msg = mongocrypt_status_message(_status, NULL); \
@@ -75,10 +78,11 @@
75
78
  } else if (!_status_ok) { \
76
79
  TEST_ERROR("%s resulted in unexpected error status: %s\n", #_stmt, _msg); \
77
80
  } \
78
- } while (0)
81
+ } else \
82
+ ((void)0)
79
83
 
80
84
  #define ASSERT_FAILS_STATUS(_stmt, _status, _msg_pattern) \
81
- do { \
85
+ if (1) { \
82
86
  bool _retval = (_stmt); \
83
87
  bool _status_ok = mongocrypt_status_ok(_status); \
84
88
  const char *_msg = mongocrypt_status_message(_status, NULL); \
@@ -90,7 +94,8 @@
90
94
  } else if (!_found_msg) { \
91
95
  TEST_ERROR("'%s' does not contain '%s'\n", _msg, _msg_pattern); \
92
96
  } \
93
- } while (0)
97
+ } else \
98
+ ((void)0)
94
99
 
95
100
  #define ASSERT_OK(_stmt, _obj) ASSERT_OK_STATUS(_stmt, (_obj)->status)
96
101
 
@@ -101,7 +106,7 @@
101
106
  #define ASSERT_STATUS_CONTAINS(status, _msg_pattern) ASSERT_FAILS_STATUS(false, status, _msg_pattern)
102
107
 
103
108
  #define ASSERT_STREQUAL(_expr_a, _expr_b) \
104
- do { \
109
+ if (1) { \
105
110
  const char *_str_a = (_expr_a); \
106
111
  const char *_str_b = (_expr_b); \
107
112
  ASSERT(_str_a); \
@@ -110,47 +115,52 @@
110
115
  if (_ret != 0) { \
111
116
  TEST_ERROR("strings not equal:\n%s\nvs.\n%s\n", _str_a, _str_b); \
112
117
  } \
113
- } while (0);
118
+ } else \
119
+ ((void)0)
114
120
 
115
121
  #define ASSERT_STRCONTAINS(_expr_a, _expr_b) \
116
- do { \
122
+ if (1) { \
117
123
  const char *_str_a = (_expr_a); \
118
124
  const char *_str_b = (_expr_b); \
119
125
  char *_ret = strstr(_str_a, _str_b); \
120
126
  if (_ret == NULL) { \
121
127
  TEST_ERROR("string %s does not contain %s\n", _str_a, _str_b); \
122
128
  } \
123
- } while (0);
129
+ } else \
130
+ ((void)0)
124
131
 
125
132
  #define ASSERT_STATE_EQUAL(actual, expected) \
126
- do { \
133
+ if (1) { \
127
134
  if (actual != expected) { \
128
135
  TEST_ERROR("actual state: %s, but expected state: %s\n", \
129
136
  mongocrypt_ctx_state_to_string(actual), \
130
137
  mongocrypt_ctx_state_to_string(expected)); \
131
138
  abort(); \
132
139
  } \
133
- } while (0)
140
+ } else \
141
+ ((void)0)
134
142
 
135
143
  #define ASSERT_CMPBYTES(expected_bytes, expected_len, actual_bytes, actual_len) \
136
- do { \
144
+ if (1) { \
137
145
  char *_actual_hex = data_to_hex(actual_bytes, actual_len); \
138
146
  char *_expected_hex = data_to_hex(expected_bytes, expected_len); \
139
147
  ASSERT_STREQUAL(_actual_hex, _expected_hex); \
140
148
  free(_actual_hex); \
141
149
  free(_expected_hex); \
142
- } while (0)
150
+ } else \
151
+ ((void)0)
143
152
 
144
153
  #define ASSERT_CMPBUF(expected, actual) ASSERT_CMPBYTES((expected).data, (expected).len, (actual).data, (actual).len)
145
154
 
146
155
  #define ASSERT_CMP_HELPER(_a, _operator, _b, fmt, type) \
147
- do { \
156
+ if (1) { \
148
157
  type _a_value = (_a); \
149
158
  type _b_value = (_b); \
150
159
  if (!(_a_value _operator _b_value)) { \
151
160
  TEST_ERROR("comparison failed: %" fmt " %s %" fmt, _a_value, #_operator, _b_value); \
152
161
  } \
153
- } while (0);
162
+ } else \
163
+ ((void)0)
154
164
 
155
165
  #define ASSERT_CMPINT(a, eq, b) ASSERT_CMP_HELPER(a, eq, b, "d", int)
156
166
  #define ASSERT_CMPUINT(a, eq, b) ASSERT_CMP_HELPER(a, eq, b, "u", unsigned int)
@@ -184,7 +194,7 @@
184
194
  ((void)0)
185
195
 
186
196
  #define ASSERT_EQUAL_BSON(expected, actual) \
187
- do { \
197
+ if (1) { \
188
198
  bson_t *_expected_bson = expected, *_actual_bson = actual; \
189
199
  char *_expected_str, *_actual_str; \
190
200
  _expected_str = bson_as_canonical_extended_json(_expected_bson, NULL); \
@@ -194,10 +204,11 @@
194
204
  } \
195
205
  bson_free(_actual_str); \
196
206
  bson_free(_expected_str); \
197
- } while (0)
207
+ } else \
208
+ ((void)0)
198
209
 
199
210
  #define ASSERT_MONGOCRYPT_BINARY_EQUAL_BSON(expected, actual) \
200
- do { \
211
+ if (1) { \
201
212
  bson_t _expected_bson, _actual_bson; \
202
213
  char *_expected_str, *_actual_str; \
203
214
  ASSERT(_mongocrypt_binary_to_bson(expected, &_expected_bson)); \
@@ -209,6 +220,7 @@
209
220
  } \
210
221
  bson_free(_actual_str); \
211
222
  bson_free(_expected_str); \
212
- } while (0)
223
+ } else \
224
+ ((void)0)
213
225
 
214
226
  #endif /* TEST_MONGOCRYPT_ASSERT_H */
@@ -35,7 +35,7 @@ static void _get_bytes(const void *in, char *out, int len) {
35
35
  dest[-1] = '\0';
36
36
  }
37
37
 
38
- bool assert_excess_bytes_removed(char *key, char *wrapped, char *unwrapped, uint32_t type, bson_value_t *out) {
38
+ static bool assert_excess_bytes_removed(char *key, char *wrapped, char *unwrapped, uint32_t type, bson_value_t *out) {
39
39
  _mongocrypt_buffer_t plaintext = {0};
40
40
  _mongocrypt_marking_t marking = {0};
41
41
  bson_iter_t iter;
@@ -48,13 +48,13 @@ bool assert_excess_bytes_removed(char *key, char *wrapped, char *unwrapped, uint
48
48
  BSON_APPEND_INT32(&bson, "int_key", TEST_INT);
49
49
 
50
50
  bson_iter_init_find(&iter, &bson, key);
51
- memcpy(&marking.v_iter, &iter, sizeof(bson_iter_t));
51
+ memcpy(&marking.u.fle1.v_iter, &iter, sizeof(bson_iter_t));
52
52
 
53
- bson_append_iter(&wrapper, "", 0, &marking.v_iter);
53
+ bson_append_iter(&wrapper, "", 0, &marking.u.fle1.v_iter);
54
54
  _get_bytes(bson_get_data(&wrapper), actual, wrapper.len);
55
55
  BSON_ASSERT(0 == strcmp(wrapped, actual));
56
56
 
57
- _mongocrypt_buffer_from_iter(&plaintext, &(&marking)->v_iter);
57
+ _mongocrypt_buffer_from_iter(&plaintext, &(&marking)->u.fle1.v_iter);
58
58
  _get_bytes(plaintext.data, actual, plaintext.len);
59
59
  BSON_ASSERT(0 == strcmp(unwrapped, actual));
60
60
 
@@ -18,7 +18,7 @@
18
18
  #include "mongocrypt-crypto-private.h"
19
19
  #include "test-mongocrypt.h"
20
20
 
21
- void _test_cache(_mongocrypt_tester_t *tester) {
21
+ static void _test_cache(_mongocrypt_tester_t *tester) {
22
22
  _mongocrypt_cache_t cache;
23
23
  mongocrypt_status_t *status;
24
24
  bson_t *entry = BCON_NEW("a", "b"), *entry2 = BCON_NEW("c", "d");
@@ -221,4 +221,4 @@ void _mongocrypt_tester_install_cache(_mongocrypt_tester_t *tester) {
221
221
  INSTALL_TEST(_test_cache);
222
222
  INSTALL_TEST(_test_cache_expiration);
223
223
  INSTALL_TEST(_test_cache_duplicates);
224
- }
224
+ }
@@ -91,7 +91,7 @@ static void _test_malformed_ciphertext(_mongocrypt_tester_t *tester) {
91
91
  mongocrypt_status_destroy(status);
92
92
  }
93
93
 
94
- void _test_ciphertext_algorithm(_mongocrypt_tester_t *tester) {
94
+ static void _test_ciphertext_algorithm(_mongocrypt_tester_t *tester) {
95
95
  mongocrypt_t *crypt;
96
96
  mongocrypt_ctx_t *ctx;
97
97
  mongocrypt_status_t *status;
@@ -118,10 +118,10 @@ void _test_ciphertext_algorithm(_mongocrypt_tester_t *tester) {
118
118
  ctx = mongocrypt_ctx_new(crypt);
119
119
  ASSERT_OK(mongocrypt_ctx_encrypt_init(ctx, "test", -1, TEST_FILE("./test/example/cmd.json")), ctx);
120
120
 
121
- _mongocrypt_buffer_from_binary(&marking.key_id, TEST_BIN(16));
122
- marking.key_id.subtype = BSON_SUBTYPE_UUID;
121
+ _mongocrypt_buffer_from_binary(&marking.u.fle1.key_id, TEST_BIN(16));
122
+ marking.u.fle1.key_id.subtype = BSON_SUBTYPE_UUID;
123
123
  kb = &ctx->kb;
124
- _mongocrypt_key_broker_add_test_key(kb, &marking.key_id);
124
+ _mongocrypt_key_broker_add_test_key(kb, &marking.u.fle1.key_id);
125
125
 
126
126
  bson = BCON_NEW("v", "a", "v", "b");
127
127
  bson_iter_init(&a_iter, bson);
@@ -131,26 +131,26 @@ void _test_ciphertext_algorithm(_mongocrypt_tester_t *tester) {
131
131
  bson_iter_next(&b_iter);
132
132
 
133
133
  /* Marking type = 1, plaintext = a */
134
- marking.algorithm = 1;
135
- memcpy(&marking.v_iter, &a_iter, sizeof(bson_iter_t));
134
+ marking.u.fle1.algorithm = 1;
135
+ memcpy(&marking.u.fle1.v_iter, &a_iter, sizeof(bson_iter_t));
136
136
  res = _mongocrypt_marking_to_ciphertext((void *)kb, &marking, &type1_valueA, status);
137
137
  ASSERT_OR_PRINT(res, status);
138
138
 
139
139
  /* Marking type = 1, plaintext = a */
140
- marking.algorithm = 1;
141
- memcpy(&marking.v_iter, &a_iter, sizeof(bson_iter_t));
140
+ marking.u.fle1.algorithm = 1;
141
+ memcpy(&marking.u.fle1.v_iter, &a_iter, sizeof(bson_iter_t));
142
142
  res = _mongocrypt_marking_to_ciphertext((void *)kb, &marking, &type1_valueA_again, status);
143
143
  ASSERT_OR_PRINT(res, status);
144
144
 
145
145
  /* Marking type = 2, plaintext = a */
146
- marking.algorithm = 2;
147
- memcpy(&marking.v_iter, &a_iter, sizeof(bson_iter_t));
146
+ marking.u.fle1.algorithm = 2;
147
+ memcpy(&marking.u.fle1.v_iter, &a_iter, sizeof(bson_iter_t));
148
148
  res = _mongocrypt_marking_to_ciphertext((void *)kb, &marking, &type2_valueA, status);
149
149
  ASSERT_OR_PRINT(res, status);
150
150
 
151
151
  /* Marking type = 1, plaintext = b */
152
- marking.algorithm = 1;
153
- memcpy(&marking.v_iter, &b_iter, sizeof(bson_iter_t));
152
+ marking.u.fle1.algorithm = 1;
153
+ memcpy(&marking.u.fle1.v_iter, &b_iter, sizeof(bson_iter_t));
154
154
  res = _mongocrypt_marking_to_ciphertext((void *)kb, &marking, &type1_valueB, status);
155
155
  ASSERT_OR_PRINT(res, status);
156
156
 
@@ -184,7 +184,7 @@ void _test_ciphertext_algorithm(_mongocrypt_tester_t *tester) {
184
184
  mongocrypt_status_destroy(status);
185
185
  }
186
186
 
187
- void _test_ciphertext_serialize_associated_data(_mongocrypt_tester_t *tester) {
187
+ static void _test_ciphertext_serialize_associated_data(_mongocrypt_tester_t *tester) {
188
188
  _mongocrypt_ciphertext_t ciphertext;
189
189
  _mongocrypt_buffer_t serialized;
190
190
  /* Expected associated data is:
@@ -17,59 +17,50 @@
17
17
  #include "test-mongocrypt.h"
18
18
 
19
19
  static void _test_cleanup_success(_mongocrypt_tester_t *tester) {
20
- for (int use_range_v2 = 0; use_range_v2 <= 1; use_range_v2++) {
21
- mongocrypt_t *crypt;
22
- mongocrypt_ctx_t *ctx;
23
-
24
- crypt =
25
- _mongocrypt_tester_mongocrypt(use_range_v2 ? TESTER_MONGOCRYPT_WITH_RANGE_V2 : TESTER_MONGOCRYPT_DEFAULT);
26
- ctx = mongocrypt_ctx_new(crypt);
27
-
28
- ASSERT_OK(mongocrypt_ctx_encrypt_init(ctx, "db", -1, TEST_FILE("./test/data/cleanup/success/cmd.json")), ctx);
29
-
30
- ASSERT_STATE_EQUAL(mongocrypt_ctx_state(ctx), MONGOCRYPT_CTX_NEED_MONGO_COLLINFO);
31
- {
32
- ASSERT_OK(mongocrypt_ctx_mongo_feed(ctx, TEST_FILE("./test/data/cleanup/success/collinfo.json")), ctx);
33
- ASSERT_OK(mongocrypt_ctx_mongo_done(ctx), ctx);
34
- }
35
-
36
- ASSERT_STATE_EQUAL(mongocrypt_ctx_state(ctx), MONGOCRYPT_CTX_NEED_MONGO_KEYS);
37
- {
38
- ASSERT_OK(mongocrypt_ctx_mongo_feed(ctx,
39
- TEST_FILE("./test/data/keys/"
40
- "12345678123498761234123456789012-local-document.json")),
41
- ctx);
42
- ASSERT_OK(mongocrypt_ctx_mongo_feed(ctx,
43
- TEST_FILE("./test/data/keys/"
44
- "ABCDEFAB123498761234123456789012-local-document.json")),
45
- ctx);
46
- ASSERT_OK(mongocrypt_ctx_mongo_feed(ctx,
47
- TEST_FILE("./test/data/keys/"
48
- "12345678123498761234123456789013-local-document.json")),
49
- ctx);
50
- ASSERT_OK(mongocrypt_ctx_mongo_done(ctx), ctx);
51
- }
52
-
53
- ASSERT_STATE_EQUAL(mongocrypt_ctx_state(ctx), MONGOCRYPT_CTX_READY);
54
- {
55
- mongocrypt_binary_t *out = mongocrypt_binary_new();
56
- ASSERT_OK(mongocrypt_ctx_finalize(ctx, out), ctx);
57
- if (use_range_v2) {
58
- ASSERT_MONGOCRYPT_BINARY_EQUAL_BSON(
59
- TEST_FILE("./test/data/cleanup/success/encrypted-payload-range-v2.json"),
60
- out);
61
- } else {
62
- ASSERT_MONGOCRYPT_BINARY_EQUAL_BSON(TEST_FILE("./test/data/cleanup/success/encrypted-payload.json"),
63
- out);
64
- }
65
- mongocrypt_binary_destroy(out);
66
- }
67
-
68
- ASSERT_STATE_EQUAL(mongocrypt_ctx_state(ctx), MONGOCRYPT_CTX_DONE);
69
-
70
- mongocrypt_ctx_destroy(ctx);
71
- mongocrypt_destroy(crypt);
20
+ mongocrypt_t *crypt;
21
+ mongocrypt_ctx_t *ctx;
22
+
23
+ crypt = _mongocrypt_tester_mongocrypt(TESTER_MONGOCRYPT_DEFAULT);
24
+ ctx = mongocrypt_ctx_new(crypt);
25
+
26
+ ASSERT_OK(mongocrypt_ctx_encrypt_init(ctx, "db", -1, TEST_FILE("./test/data/cleanup/success/cmd.json")), ctx);
27
+
28
+ ASSERT_STATE_EQUAL(mongocrypt_ctx_state(ctx), MONGOCRYPT_CTX_NEED_MONGO_COLLINFO);
29
+ {
30
+ ASSERT_OK(mongocrypt_ctx_mongo_feed(ctx, TEST_FILE("./test/data/cleanup/success/collinfo.json")), ctx);
31
+ ASSERT_OK(mongocrypt_ctx_mongo_done(ctx), ctx);
72
32
  }
33
+
34
+ ASSERT_STATE_EQUAL(mongocrypt_ctx_state(ctx), MONGOCRYPT_CTX_NEED_MONGO_KEYS);
35
+ {
36
+ ASSERT_OK(mongocrypt_ctx_mongo_feed(ctx,
37
+ TEST_FILE("./test/data/keys/"
38
+ "12345678123498761234123456789012-local-document.json")),
39
+ ctx);
40
+ ASSERT_OK(mongocrypt_ctx_mongo_feed(ctx,
41
+ TEST_FILE("./test/data/keys/"
42
+ "ABCDEFAB123498761234123456789012-local-document.json")),
43
+ ctx);
44
+ ASSERT_OK(mongocrypt_ctx_mongo_feed(ctx,
45
+ TEST_FILE("./test/data/keys/"
46
+ "12345678123498761234123456789013-local-document.json")),
47
+ ctx);
48
+ ASSERT_OK(mongocrypt_ctx_mongo_done(ctx), ctx);
49
+ }
50
+
51
+ ASSERT_STATE_EQUAL(mongocrypt_ctx_state(ctx), MONGOCRYPT_CTX_READY);
52
+ {
53
+ mongocrypt_binary_t *out = mongocrypt_binary_new();
54
+ ASSERT_OK(mongocrypt_ctx_finalize(ctx, out), ctx);
55
+ ASSERT_MONGOCRYPT_BINARY_EQUAL_BSON(TEST_FILE("./test/data/cleanup/success/encrypted-payload-range-v2.json"),
56
+ out);
57
+ mongocrypt_binary_destroy(out);
58
+ }
59
+
60
+ ASSERT_STATE_EQUAL(mongocrypt_ctx_state(ctx), MONGOCRYPT_CTX_DONE);
61
+
62
+ mongocrypt_ctx_destroy(ctx);
63
+ mongocrypt_destroy(crypt);
73
64
  }
74
65
 
75
66
  static void _test_cleanup_nonlocal_kms(_mongocrypt_tester_t *tester) {
@@ -135,7 +126,8 @@ static void _test_cleanup_nonlocal_kms(_mongocrypt_tester_t *tester) {
135
126
  {
136
127
  mongocrypt_binary_t *out = mongocrypt_binary_new();
137
128
  ASSERT_OK(mongocrypt_ctx_finalize(ctx, out), ctx);
138
- ASSERT_MONGOCRYPT_BINARY_EQUAL_BSON(TEST_FILE("./test/data/cleanup/success/encrypted-payload.json"), out);
129
+ ASSERT_MONGOCRYPT_BINARY_EQUAL_BSON(TEST_FILE("./test/data/cleanup/success/encrypted-payload-range-v2.json"),
130
+ out);
139
131
  mongocrypt_binary_destroy(out);
140
132
  }
141
133
 
@@ -269,7 +261,8 @@ static void _test_cleanup_need_kms_credentials(_mongocrypt_tester_t *tester) {
269
261
  {
270
262
  mongocrypt_binary_t *out = mongocrypt_binary_new();
271
263
  ASSERT_OK(mongocrypt_ctx_finalize(ctx, out), ctx);
272
- ASSERT_MONGOCRYPT_BINARY_EQUAL_BSON(TEST_FILE("./test/data/cleanup/success/encrypted-payload.json"), out);
264
+ ASSERT_MONGOCRYPT_BINARY_EQUAL_BSON(TEST_FILE("./test/data/cleanup/success/encrypted-payload-range-v2.json"),
265
+ out);
273
266
  mongocrypt_binary_destroy(out);
274
267
  }
275
268
 
@@ -353,7 +346,8 @@ static void _test_cleanup_from_encrypted_field_config_map(_mongocrypt_tester_t *
353
346
  {
354
347
  mongocrypt_binary_t *out = mongocrypt_binary_new();
355
348
  ASSERT_OK(mongocrypt_ctx_finalize(ctx, out), ctx);
356
- ASSERT_MONGOCRYPT_BINARY_EQUAL_BSON(TEST_FILE("./test/data/cleanup/success/encrypted-payload.json"), out);
349
+ ASSERT_MONGOCRYPT_BINARY_EQUAL_BSON(TEST_FILE("./test/data/cleanup/success/encrypted-payload-range-v2.json"),
350
+ out);
357
351
  mongocrypt_binary_destroy(out);
358
352
  }
359
353