libmongocrypt-helper 1.8.0.0.1001 → 1.11.0.0.1001

Sign up to get free protection for your applications and to get access to all the features.
Files changed (385) hide show
  1. checksums.yaml +4 -4
  2. data/ext/libmongocrypt/libmongocrypt/CHANGELOG.md +33 -0
  3. data/ext/libmongocrypt/libmongocrypt/CMakeLists.txt +12 -1
  4. data/ext/libmongocrypt/libmongocrypt/CODEOWNERS +1 -4
  5. data/ext/libmongocrypt/libmongocrypt/Earthfile +151 -3
  6. data/ext/libmongocrypt/libmongocrypt/README.md +36 -40
  7. data/ext/libmongocrypt/libmongocrypt/bindings/cs/CMakeLists.txt +1 -0
  8. data/ext/libmongocrypt/libmongocrypt/bindings/cs/MongoDB.Driver.snk +0 -0
  9. data/ext/libmongocrypt/libmongocrypt/bindings/cs/MongoDB.Libmongocrypt/AssemblyInfo.cs +2 -2
  10. data/ext/libmongocrypt/libmongocrypt/bindings/cs/MongoDB.Libmongocrypt/Binary.cs +16 -2
  11. data/ext/libmongocrypt/libmongocrypt/bindings/cs/MongoDB.Libmongocrypt/CryptClientFactory.cs +8 -4
  12. data/ext/libmongocrypt/libmongocrypt/bindings/cs/MongoDB.Libmongocrypt/Library.cs +10 -0
  13. data/ext/libmongocrypt/libmongocrypt/bindings/cs/MongoDB.Libmongocrypt/LibraryLoader.cs +81 -44
  14. data/ext/libmongocrypt/libmongocrypt/bindings/cs/MongoDB.Libmongocrypt/MongoDB.Libmongocrypt.csproj +2 -1
  15. data/ext/libmongocrypt/libmongocrypt/bindings/cs/MongoDB.Libmongocrypt.Test/MongoDB.Libmongocrypt.Test.csproj +2 -0
  16. data/ext/libmongocrypt/libmongocrypt/bindings/cs/MongoDB.Libmongocrypt.Test32/MongoDB.Libmongocrypt.Test32.csproj +2 -0
  17. data/ext/libmongocrypt/libmongocrypt/bindings/cs/README.md +3 -0
  18. data/ext/libmongocrypt/libmongocrypt/bindings/cs/Scripts/build.cake +21 -26
  19. data/ext/libmongocrypt/libmongocrypt/bindings/cs/Scripts/build.config +3 -0
  20. data/ext/libmongocrypt/libmongocrypt/bindings/cs/Scripts/build.sh +0 -0
  21. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/benchmarks/build.gradle.kts +28 -0
  22. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/benchmarks/src/main/java/com/mongodb/crypt/benchmark/BenchmarkRunner.java +217 -0
  23. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/benchmarks/src/main/resources/keyDocument.json +24 -0
  24. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/build.gradle.kts +21 -6
  25. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/gradle/wrapper/gradle-wrapper.jar +0 -0
  26. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/gradle/wrapper/gradle-wrapper.properties +1 -1
  27. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/gradlew +154 -108
  28. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/gradlew.bat +7 -18
  29. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/settings.gradle.kts +1 -0
  30. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/CAPI.java +41 -6
  31. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/CAPIHelper.java +5 -5
  32. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/CipherCallback.java +27 -1
  33. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/MongoCryptImpl.java +34 -19
  34. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/MongoExplicitEncryptOptions.java +6 -4
  35. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/resources/META-INF/native-image/jni-config.json +180 -0
  36. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/resources/META-INF/native-image/reflect-config.json +134 -0
  37. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/test/java/com/mongodb/crypt/capi/MongoCryptTest.java +44 -2
  38. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/test/resources/fle2-find-range-explicit-v2/int32/encrypted-payload.json +1 -1
  39. data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/test/resources/fle2-find-range-explicit-v2/int32/rangeopts.json +3 -0
  40. data/ext/libmongocrypt/libmongocrypt/bindings/node/README.md +4 -900
  41. data/ext/libmongocrypt/libmongocrypt/bindings/python/CHANGELOG.rst +60 -0
  42. data/ext/libmongocrypt/libmongocrypt/bindings/python/README.rst +41 -20
  43. data/ext/libmongocrypt/libmongocrypt/bindings/python/RELEASE.rst +6 -24
  44. data/ext/libmongocrypt/libmongocrypt/bindings/python/build-manylinux-wheel.sh +4 -13
  45. data/ext/libmongocrypt/libmongocrypt/bindings/python/hatch_build.py +36 -0
  46. data/ext/libmongocrypt/libmongocrypt/bindings/python/libmongocrypt-version.txt +1 -0
  47. data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/__init__.py +2 -2
  48. data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/asynchronous/auto_encrypter.py +61 -0
  49. data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/asynchronous/credentials.py +156 -0
  50. data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/asynchronous/explicit_encrypter.py +156 -0
  51. data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/asynchronous/state_machine.py +149 -0
  52. data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/auto_encrypter.py +2 -46
  53. data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/binary.py +14 -17
  54. data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/binding.py +107 -61
  55. data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/compat.py +6 -4
  56. data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/credentials.py +2 -121
  57. data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/crypto.py +31 -20
  58. data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/errors.py +2 -2
  59. data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/explicit_encrypter.py +2 -233
  60. data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/mongocrypt.py +168 -238
  61. data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/options.py +265 -0
  62. data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/state_machine.py +2 -141
  63. data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/synchronous/auto_encrypter.py +61 -0
  64. data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/synchronous/credentials.py +156 -0
  65. data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/synchronous/explicit_encrypter.py +156 -0
  66. data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/synchronous/state_machine.py +149 -0
  67. data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/version.py +2 -2
  68. data/ext/libmongocrypt/libmongocrypt/bindings/python/pyproject.toml +118 -0
  69. data/ext/libmongocrypt/libmongocrypt/bindings/python/release.sh +97 -61
  70. data/ext/libmongocrypt/libmongocrypt/bindings/python/{test-requirements.txt → requirements-test.txt} +4 -1
  71. data/ext/libmongocrypt/libmongocrypt/bindings/python/requirements.txt +4 -0
  72. data/ext/libmongocrypt/libmongocrypt/bindings/python/sbom.json +76 -0
  73. data/ext/libmongocrypt/libmongocrypt/bindings/python/strip_header.py +6 -7
  74. data/ext/libmongocrypt/libmongocrypt/bindings/python/synchro.py +64 -0
  75. data/ext/libmongocrypt/libmongocrypt/bindings/python/test/__init__.py +1 -0
  76. data/ext/libmongocrypt/libmongocrypt/bindings/python/test/data/collection-info.json +1 -1
  77. data/ext/libmongocrypt/libmongocrypt/bindings/python/test/data/command.json +1 -1
  78. data/ext/libmongocrypt/libmongocrypt/bindings/python/test/data/compact/success/encrypted-payload.json +21 -21
  79. data/ext/libmongocrypt/libmongocrypt/bindings/python/test/data/encrypted-command-reply.json +1 -1
  80. data/ext/libmongocrypt/libmongocrypt/bindings/python/test/data/encrypted-field-config-map.json +1 -1
  81. data/ext/libmongocrypt/libmongocrypt/bindings/python/test/data/fle2-find-range-explicit-v2/int32/encrypted-payload.json +1 -1
  82. data/ext/libmongocrypt/libmongocrypt/bindings/python/test/data/fle2-find-range-explicit-v2/int32/rangeopts.json +3 -0
  83. data/ext/libmongocrypt/libmongocrypt/bindings/python/test/data/fle2-find-rangePreview-explicit/int32/rangeopts.json +11 -0
  84. data/ext/libmongocrypt/libmongocrypt/bindings/python/test/data/fle2-find-rangePreview-explicit/int32/value-to-encrypt.json +20 -0
  85. data/ext/libmongocrypt/libmongocrypt/bindings/python/test/data/key-document-azure.json +1 -1
  86. data/ext/libmongocrypt/libmongocrypt/bindings/python/test/data/key-document-gcp.json +1 -1
  87. data/ext/libmongocrypt/libmongocrypt/bindings/python/test/data/key-document.json +1 -1
  88. data/ext/libmongocrypt/libmongocrypt/bindings/python/test/data/key-filter.json +1 -1
  89. data/ext/libmongocrypt/libmongocrypt/bindings/python/test/data/list-collections-filter.json +1 -1
  90. data/ext/libmongocrypt/libmongocrypt/bindings/python/test/data/mongocryptd-command.json +1 -1
  91. data/ext/libmongocrypt/libmongocrypt/bindings/python/test/data/mongocryptd-reply.json +1 -1
  92. data/ext/libmongocrypt/libmongocrypt/bindings/python/test/data/schema-map.json +1 -1
  93. data/ext/libmongocrypt/libmongocrypt/bindings/python/test/performance/keyDocument.json +24 -0
  94. data/ext/libmongocrypt/libmongocrypt/bindings/python/test/performance/perf_test.py +165 -0
  95. data/ext/libmongocrypt/libmongocrypt/bindings/python/test/test_binding.py +8 -12
  96. data/ext/libmongocrypt/libmongocrypt/bindings/python/test/test_crypto.py +9 -11
  97. data/ext/libmongocrypt/libmongocrypt/bindings/python/test/test_mongocrypt.py +988 -340
  98. data/ext/libmongocrypt/libmongocrypt/bindings/python/update-sbom.sh +14 -0
  99. data/ext/libmongocrypt/libmongocrypt/cmake/FetchMongoC.cmake +19 -1
  100. data/ext/libmongocrypt/libmongocrypt/cmake/ImportBSON.cmake +23 -0
  101. data/ext/libmongocrypt/libmongocrypt/cmake/IntelDFP.cmake +19 -227
  102. data/ext/libmongocrypt/libmongocrypt/cmake/Patch.cmake +54 -0
  103. data/ext/libmongocrypt/libmongocrypt/doc/img/cli-icon.png +0 -0
  104. data/ext/libmongocrypt/libmongocrypt/doc/img/reference-targets.png +0 -0
  105. data/ext/libmongocrypt/libmongocrypt/doc/releasing.md +153 -0
  106. data/ext/libmongocrypt/libmongocrypt/etc/calc_release_version.py +61 -28
  107. data/ext/libmongocrypt/libmongocrypt/etc/calc_release_version_selftest.sh +73 -0
  108. data/ext/libmongocrypt/libmongocrypt/etc/cyclonedx.sbom.json +108 -0
  109. data/ext/libmongocrypt/libmongocrypt/etc/format.sh +1 -1
  110. data/ext/libmongocrypt/libmongocrypt/etc/libbson-remove-GCC-diagnostic-pragma.patch +27 -0
  111. data/ext/libmongocrypt/libmongocrypt/etc/mongo-inteldfp-alpine-arm-fix.patch +17 -0
  112. data/ext/libmongocrypt/libmongocrypt/etc/packager.py +120 -91
  113. data/ext/libmongocrypt/libmongocrypt/etc/purls.txt +14 -0
  114. data/ext/libmongocrypt/libmongocrypt/etc/repo_config.yaml +56 -0
  115. data/ext/libmongocrypt/libmongocrypt/etc/silk-create-asset-group.sh +70 -0
  116. data/ext/libmongocrypt/libmongocrypt/etc/ssdlc_compliance_report.md +37 -0
  117. data/ext/libmongocrypt/libmongocrypt/etc/third_party_vulnerabilities.md +42 -0
  118. data/ext/libmongocrypt/libmongocrypt/integrating.md +18 -1
  119. data/ext/libmongocrypt/libmongocrypt/kms-message/CMakeLists.txt +11 -3
  120. data/ext/libmongocrypt/libmongocrypt/kms-message/src/kms_gcp_request.c +1 -1
  121. data/ext/libmongocrypt/libmongocrypt/kms-message/src/kms_kmip_reader_writer.c +17 -0
  122. data/ext/libmongocrypt/libmongocrypt/kms-message/src/kms_kmip_reader_writer_private.h +6 -0
  123. data/ext/libmongocrypt/libmongocrypt/kms-message/src/kms_kmip_request.c +211 -1
  124. data/ext/libmongocrypt/libmongocrypt/kms-message/src/kms_kmip_response.c +163 -0
  125. data/ext/libmongocrypt/libmongocrypt/kms-message/src/kms_kmip_tag_type_private.h +2 -1
  126. data/ext/libmongocrypt/libmongocrypt/kms-message/src/kms_message/kms_kmip_request.h +17 -0
  127. data/ext/libmongocrypt/libmongocrypt/kms-message/src/kms_message/kms_kmip_response.h +6 -0
  128. data/ext/libmongocrypt/libmongocrypt/kms-message/src/kms_port.c +3 -2
  129. data/ext/libmongocrypt/libmongocrypt/kms-message/src/kms_request.c +4 -2
  130. data/ext/libmongocrypt/libmongocrypt/kms-message/src/kms_request_str.c +2 -2
  131. data/ext/libmongocrypt/libmongocrypt/kms-message/test/test_kmip_reader_writer.c +23 -2
  132. data/ext/libmongocrypt/libmongocrypt/src/crypto/libcrypto.c +13 -10
  133. data/ext/libmongocrypt/libmongocrypt/src/mc-dec128.h +1 -1
  134. data/ext/libmongocrypt/libmongocrypt/src/mc-efc-private.h +16 -2
  135. data/ext/libmongocrypt/libmongocrypt/src/mc-efc.c +94 -6
  136. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-encryption-placeholder-private.h +15 -5
  137. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-encryption-placeholder.c +114 -53
  138. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-find-equality-payload-private-v2.h +1 -1
  139. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-find-equality-payload-private.h +1 -1
  140. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-find-equality-payload-v2.c +2 -2
  141. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-find-equality-payload.c +2 -2
  142. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-find-range-payload-private-v2.h +21 -6
  143. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-find-range-payload-private.h +5 -5
  144. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-find-range-payload-v2.c +38 -2
  145. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-find-range-payload.c +1 -1
  146. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-insert-update-payload-private-v2.h +20 -7
  147. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-insert-update-payload-private.h +8 -8
  148. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-insert-update-payload-v2.c +89 -1
  149. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-payload-iev-v2.c +3 -3
  150. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-payload-iev.c +1 -23
  151. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-rfds-private.h +4 -3
  152. data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-rfds.c +15 -12
  153. data/ext/libmongocrypt/libmongocrypt/src/mc-optional-private.h +11 -0
  154. data/ext/libmongocrypt/libmongocrypt/src/mc-range-edge-generation-private.h +16 -6
  155. data/ext/libmongocrypt/libmongocrypt/src/mc-range-edge-generation.c +64 -22
  156. data/ext/libmongocrypt/libmongocrypt/src/mc-range-encoding-private.h +23 -4
  157. data/ext/libmongocrypt/libmongocrypt/src/mc-range-encoding.c +359 -65
  158. data/ext/libmongocrypt/libmongocrypt/src/mc-range-mincover-generator.template.h +26 -14
  159. data/ext/libmongocrypt/libmongocrypt/src/mc-range-mincover-private.h +17 -6
  160. data/ext/libmongocrypt/libmongocrypt/src/mc-range-mincover.c +31 -13
  161. data/ext/libmongocrypt/libmongocrypt/src/mc-rangeopts-private.h +16 -3
  162. data/ext/libmongocrypt/libmongocrypt/src/mc-rangeopts.c +259 -63
  163. data/ext/libmongocrypt/libmongocrypt/src/mc-tokens-private.h +40 -24
  164. data/ext/libmongocrypt/libmongocrypt/src/mc-tokens.c +57 -13
  165. data/ext/libmongocrypt/libmongocrypt/src/mlib/int128.h +17 -0
  166. data/ext/libmongocrypt/libmongocrypt/src/mlib/int128.test.cpp +5 -0
  167. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-binary-private.h +0 -5
  168. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-buffer.c +5 -7
  169. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-cache-key.c +1 -0
  170. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-cache-oauth-private.h +16 -18
  171. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-cache-oauth.c +105 -76
  172. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-crypto.c +9 -3
  173. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-ctx-datakey.c +170 -89
  174. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-ctx-decrypt.c +5 -5
  175. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-ctx-encrypt.c +505 -124
  176. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-ctx-private.h +31 -6
  177. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-ctx.c +81 -13
  178. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-dll-private.h +7 -0
  179. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-kek-private.h +5 -1
  180. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-kek.c +161 -103
  181. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-key-broker-private.h +2 -7
  182. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-key-broker.c +191 -69
  183. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-key.c +1 -1
  184. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-kms-ctx-private.h +50 -15
  185. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-kms-ctx.c +365 -69
  186. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-marking-private.h +2 -1
  187. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-marking.c +200 -107
  188. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-opts-private.h +50 -5
  189. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-opts.c +591 -15
  190. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-private.h +6 -13
  191. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-util.c +3 -2
  192. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt.c +47 -234
  193. data/ext/libmongocrypt/libmongocrypt/src/mongocrypt.h +75 -24
  194. data/ext/libmongocrypt/libmongocrypt/src/os_posix/os_dll.c +18 -2
  195. data/ext/libmongocrypt/libmongocrypt/src/os_win/os_dll.c +4 -0
  196. data/ext/libmongocrypt/libmongocrypt/test/data/bulkWrite/bypassQueryAnalysis/payload.json +53 -0
  197. data/ext/libmongocrypt/libmongocrypt/test/data/bulkWrite/jsonSchema/cmd-to-mongocryptd.json +23 -0
  198. data/ext/libmongocrypt/libmongocrypt/test/data/bulkWrite/jsonSchema/cmd.json +20 -0
  199. data/ext/libmongocrypt/libmongocrypt/test/data/bulkWrite/simple/cmd-to-mongocryptd.json +50 -0
  200. data/ext/libmongocrypt/libmongocrypt/test/data/bulkWrite/simple/cmd.json +20 -0
  201. data/ext/libmongocrypt/libmongocrypt/test/data/bulkWrite/simple/collinfo.json +44 -0
  202. data/ext/libmongocrypt/libmongocrypt/test/data/bulkWrite/simple/encrypted-field-map.json +24 -0
  203. data/ext/libmongocrypt/libmongocrypt/test/data/bulkWrite/simple/encrypted-payload-pattern.json +53 -0
  204. data/ext/libmongocrypt/libmongocrypt/test/data/bulkWrite/simple/mongocryptd-reply.json +62 -0
  205. data/ext/libmongocrypt/libmongocrypt/test/data/bulkWrite/unencrypted/cmd-to-mongocryptd.json +30 -0
  206. data/ext/libmongocrypt/libmongocrypt/test/data/bulkWrite/unencrypted/cmd.json +17 -0
  207. data/ext/libmongocrypt/libmongocrypt/test/data/bulkWrite/unencrypted/mongocryptd-reply.json +39 -0
  208. data/ext/libmongocrypt/libmongocrypt/test/data/bulkWrite/unencrypted/payload.json +21 -0
  209. data/ext/libmongocrypt/libmongocrypt/test/data/cleanup/missing-key-id/collinfo.json +20 -0
  210. data/ext/libmongocrypt/libmongocrypt/test/data/cleanup/no-fields/collinfo.json +9 -0
  211. data/ext/libmongocrypt/libmongocrypt/test/data/cleanup/no-fields/encrypted-payload.json +4 -0
  212. data/ext/libmongocrypt/libmongocrypt/test/data/cleanup/success/cmd.json +1 -0
  213. data/ext/libmongocrypt/libmongocrypt/test/data/cleanup/success/collinfo.json +63 -0
  214. data/ext/libmongocrypt/libmongocrypt/test/data/cleanup/success/encrypted-field-config-map.json +61 -0
  215. data/ext/libmongocrypt/libmongocrypt/test/data/cleanup/success/encrypted-payload-range-v2.json +37 -0
  216. data/ext/libmongocrypt/libmongocrypt/test/data/cleanup/success/encrypted-payload.json +29 -0
  217. data/ext/libmongocrypt/libmongocrypt/test/data/compact/anchor-pad/cmd.json +1 -0
  218. data/ext/libmongocrypt/libmongocrypt/test/data/compact/anchor-pad/collinfo.json +64 -0
  219. data/ext/libmongocrypt/libmongocrypt/test/data/compact/anchor-pad/encrypted-payload-range-v2.json +105 -0
  220. data/ext/libmongocrypt/libmongocrypt/test/data/compact/anchor-pad/encrypted-payload.json +30 -0
  221. data/ext/libmongocrypt/libmongocrypt/test/data/compact/no-range/cmd.json +1 -0
  222. data/ext/libmongocrypt/libmongocrypt/test/data/compact/no-range/collinfo.json +49 -0
  223. data/ext/libmongocrypt/libmongocrypt/test/data/compact/no-range/encrypted-field-config-map.json +47 -0
  224. data/ext/libmongocrypt/libmongocrypt/test/data/compact/no-range/encrypted-payload.json +23 -0
  225. data/ext/libmongocrypt/libmongocrypt/test/data/compact/success/collinfo.json +15 -0
  226. data/ext/libmongocrypt/libmongocrypt/test/data/compact/success/encrypted-field-config-map.json +10 -0
  227. data/ext/libmongocrypt/libmongocrypt/test/data/compact/success/encrypted-payload-range-v2.json +104 -0
  228. data/ext/libmongocrypt/libmongocrypt/test/data/compact/success/encrypted-payload.json +6 -0
  229. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-explain/with-csfle/collinfo.json +4 -4
  230. data/ext/libmongocrypt/libmongocrypt/test/data/fle2-explain/with-csfle/encrypted-payload.json +3 -3
  231. data/ext/libmongocrypt/libmongocrypt/test/data/kms-azure/decrypt-response.txt +16 -0
  232. data/ext/libmongocrypt/libmongocrypt/test/data/kms-azure/encrypt-response.txt +16 -0
  233. data/ext/libmongocrypt/libmongocrypt/test/data/kms-azure/oauth-response.txt +19 -0
  234. data/ext/libmongocrypt/libmongocrypt/test/data/no-trimFactor/find/cmd.json +9 -0
  235. data/ext/libmongocrypt/libmongocrypt/test/data/no-trimFactor/find/encrypted-field-map.json +19 -0
  236. data/ext/libmongocrypt/libmongocrypt/test/data/no-trimFactor/find/encrypted-payload.json +62 -0
  237. data/ext/libmongocrypt/libmongocrypt/test/data/no-trimFactor/find/mongocryptd-reply.json +69 -0
  238. data/ext/libmongocrypt/libmongocrypt/test/data/no-trimFactor/insert/cmd.json +11 -0
  239. data/ext/libmongocrypt/libmongocrypt/test/data/no-trimFactor/insert/encrypted-field-map.json +19 -0
  240. data/ext/libmongocrypt/libmongocrypt/test/data/no-trimFactor/insert/encrypted-payload.json +40 -0
  241. data/ext/libmongocrypt/libmongocrypt/test/data/no-trimFactor/insert/mongocryptd-reply.json +47 -0
  242. data/ext/libmongocrypt/libmongocrypt/test/data/range-edge-generation/edges_decimal128.cstruct +1 -1
  243. data/ext/libmongocrypt/libmongocrypt/test/data/range-edge-generation/edges_double.cstruct +8637 -7958
  244. data/ext/libmongocrypt/libmongocrypt/test/data/range-edge-generation/edges_int32.cstruct +5522 -1382
  245. data/ext/libmongocrypt/libmongocrypt/test/data/range-edge-generation/edges_int64.cstruct +5042 -1262
  246. data/ext/libmongocrypt/libmongocrypt/test/data/range-min-cover/mincover_decimal128.cstruct +1 -1
  247. data/ext/libmongocrypt/libmongocrypt/test/data/range-min-cover/mincover_decimal128_precision.cstruct +1 -1
  248. data/ext/libmongocrypt/libmongocrypt/test/data/range-min-cover/mincover_double.cstruct +1 -1
  249. data/ext/libmongocrypt/libmongocrypt/test/data/range-min-cover/mincover_double_precision.cstruct +2 -2
  250. data/ext/libmongocrypt/libmongocrypt/test/data/range-min-cover/mincover_int32.cstruct +1 -1
  251. data/ext/libmongocrypt/libmongocrypt/test/data/range-min-cover/mincover_int64.cstruct +1 -1
  252. data/ext/libmongocrypt/libmongocrypt/test/data/range-sends-cryptoParams/auto-find-int32/cmd.json +8 -0
  253. data/ext/libmongocrypt/libmongocrypt/test/data/range-sends-cryptoParams/auto-find-int32/encrypted-field-map.json +19 -0
  254. data/ext/libmongocrypt/libmongocrypt/test/data/range-sends-cryptoParams/auto-find-int32/encrypted-payload.json +53 -0
  255. data/ext/libmongocrypt/libmongocrypt/test/data/range-sends-cryptoParams/auto-find-int32/mongocryptd-reply.json +58 -0
  256. data/ext/libmongocrypt/libmongocrypt/test/data/range-sends-cryptoParams/auto-insert-int32/cmd.json +11 -0
  257. data/ext/libmongocrypt/libmongocrypt/test/data/range-sends-cryptoParams/auto-insert-int32/encrypted-field-map.json +19 -0
  258. data/ext/libmongocrypt/libmongocrypt/test/data/range-sends-cryptoParams/auto-insert-int32/encrypted-payload.json +40 -0
  259. data/ext/libmongocrypt/libmongocrypt/test/data/range-sends-cryptoParams/auto-insert-int32/mongocryptd-reply.json +45 -0
  260. data/ext/libmongocrypt/libmongocrypt/test/data/range-sends-cryptoParams/explicit-find-int32/expected.json +26 -0
  261. data/ext/libmongocrypt/libmongocrypt/test/data/range-sends-cryptoParams/explicit-find-int32/to-encrypt.json +20 -0
  262. data/ext/libmongocrypt/libmongocrypt/test/data/range-sends-cryptoParams/explicit-find-int32-defaults/expected.json +26 -0
  263. data/ext/libmongocrypt/libmongocrypt/test/data/range-sends-cryptoParams/explicit-find-int32-defaults/to-encrypt.json +20 -0
  264. data/ext/libmongocrypt/libmongocrypt/test/data/range-sends-cryptoParams/explicit-insert-double/expected.json +8 -0
  265. data/ext/libmongocrypt/libmongocrypt/test/data/range-sends-cryptoParams/explicit-insert-int32/expected.json +8 -0
  266. data/ext/libmongocrypt/libmongocrypt/test/data/range-sends-cryptoParams/explicit-insert-int32-defaults/expected.json +8 -0
  267. data/ext/libmongocrypt/libmongocrypt/test/data/tokens/README.md +7 -4
  268. data/ext/libmongocrypt/libmongocrypt/test/data/tokens/mc.json +9 -5
  269. data/ext/libmongocrypt/libmongocrypt/test/data/tokens/server.json +9 -5
  270. data/ext/libmongocrypt/libmongocrypt/test/example-state-machine.c +1 -0
  271. data/ext/libmongocrypt/libmongocrypt/test/test-gcp-auth.c +8 -8
  272. data/ext/libmongocrypt/libmongocrypt/test/test-mc-efc.c +6 -4
  273. data/ext/libmongocrypt/libmongocrypt/test/test-mc-fle2-find-range-payload-v2.c +43 -3
  274. data/ext/libmongocrypt/libmongocrypt/test/test-mc-fle2-payload-iup-v2.c +76 -0
  275. data/ext/libmongocrypt/libmongocrypt/test/test-mc-fle2-rfds.c +5 -5
  276. data/ext/libmongocrypt/libmongocrypt/test/test-mc-range-edge-generation.c +89 -14
  277. data/ext/libmongocrypt/libmongocrypt/test/test-mc-range-encoding.c +342 -76
  278. data/ext/libmongocrypt/libmongocrypt/test/test-mc-range-mincover.c +94 -12
  279. data/ext/libmongocrypt/libmongocrypt/test/test-mc-rangeopts.c +205 -7
  280. data/ext/libmongocrypt/libmongocrypt/test/test-mc-tokens.c +49 -23
  281. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-assert-match-bson.c +16 -19
  282. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-assert-match-bson.h +22 -1
  283. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-cache-oauth.c +94 -11
  284. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-cleanup.c +374 -0
  285. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-compact.c +121 -42
  286. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-crypto-hooks.c +134 -4
  287. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-crypto-std-hooks.c +40 -0
  288. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-crypto-std-hooks.h +16 -0
  289. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-csfle-lib.c +11 -11
  290. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-ctx-decrypt.c +8 -5
  291. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-ctx-encrypt.c +922 -92
  292. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-ctx-rewrap-many-datakey.c +2 -2
  293. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-ctx-setopt.c +114 -12
  294. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-datakey.c +14 -9
  295. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-kms-ctx.c +424 -3
  296. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-log.c +1 -1
  297. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-marking.c +447 -28
  298. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-opts.c +42 -0
  299. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-traverse-util.c +30 -26
  300. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-util.c +7 -0
  301. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-util.h +3 -0
  302. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt.c +66 -14
  303. data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt.h +11 -0
  304. data/ext/libmongocrypt/libmongocrypt/test/test-named-kms-providers.c +2381 -0
  305. data/ext/libmongocrypt/libmongocrypt/test/util/HELP.autogen +3 -1
  306. data/ext/libmongocrypt/libmongocrypt/test/util/README.md +1 -0
  307. data/ext/libmongocrypt/libmongocrypt/test/util/csfle.c +4 -0
  308. data/ext/libmongocrypt/libmongocrypt/test/util/make_includes.py +1 -1
  309. data/ext/libmongocrypt/libmongocrypt/test/util/util.c +38 -3
  310. data/lib/libmongocrypt_helper/version.rb +2 -2
  311. metadata +112 -106
  312. checksums.yaml.gz.sig +0 -0
  313. data/ext/libmongocrypt/libmongocrypt/VERSION_CURRENT +0 -1
  314. data/ext/libmongocrypt/libmongocrypt/bindings/cs/cs.sln +0 -79
  315. data/ext/libmongocrypt/libmongocrypt/bindings/node/CHANGELOG.md +0 -105
  316. data/ext/libmongocrypt/libmongocrypt/bindings/node/LICENSE +0 -201
  317. data/ext/libmongocrypt/libmongocrypt/bindings/node/binding.gyp +0 -79
  318. data/ext/libmongocrypt/libmongocrypt/bindings/node/etc/README.hbs +0 -44
  319. data/ext/libmongocrypt/libmongocrypt/bindings/node/etc/build-static.sh +0 -36
  320. data/ext/libmongocrypt/libmongocrypt/bindings/node/index.d.ts +0 -641
  321. data/ext/libmongocrypt/libmongocrypt/bindings/node/lib/autoEncrypter.js +0 -420
  322. data/ext/libmongocrypt/libmongocrypt/bindings/node/lib/buffer_pool.js +0 -123
  323. data/ext/libmongocrypt/libmongocrypt/bindings/node/lib/clientEncryption.js +0 -821
  324. data/ext/libmongocrypt/libmongocrypt/bindings/node/lib/common.js +0 -98
  325. data/ext/libmongocrypt/libmongocrypt/bindings/node/lib/cryptoCallbacks.js +0 -87
  326. data/ext/libmongocrypt/libmongocrypt/bindings/node/lib/errors.js +0 -75
  327. data/ext/libmongocrypt/libmongocrypt/bindings/node/lib/index.js +0 -73
  328. data/ext/libmongocrypt/libmongocrypt/bindings/node/lib/mongocryptdManager.js +0 -66
  329. data/ext/libmongocrypt/libmongocrypt/bindings/node/lib/providers/aws.js +0 -26
  330. data/ext/libmongocrypt/libmongocrypt/bindings/node/lib/providers/azure.js +0 -178
  331. data/ext/libmongocrypt/libmongocrypt/bindings/node/lib/providers/gcp.js +0 -24
  332. data/ext/libmongocrypt/libmongocrypt/bindings/node/lib/providers/index.js +0 -54
  333. data/ext/libmongocrypt/libmongocrypt/bindings/node/lib/providers/utils.js +0 -39
  334. data/ext/libmongocrypt/libmongocrypt/bindings/node/lib/stateMachine.js +0 -492
  335. data/ext/libmongocrypt/libmongocrypt/bindings/node/package-lock.json +0 -15302
  336. data/ext/libmongocrypt/libmongocrypt/bindings/node/package.json +0 -100
  337. data/ext/libmongocrypt/libmongocrypt/bindings/node/src/mongocrypt.cc +0 -956
  338. data/ext/libmongocrypt/libmongocrypt/bindings/node/src/mongocrypt.h +0 -114
  339. data/ext/libmongocrypt/libmongocrypt/bindings/node/test/autoEncrypter.test.js +0 -950
  340. data/ext/libmongocrypt/libmongocrypt/bindings/node/test/buffer_pool.test.js +0 -91
  341. data/ext/libmongocrypt/libmongocrypt/bindings/node/test/clientEncryption.test.js +0 -1093
  342. data/ext/libmongocrypt/libmongocrypt/bindings/node/test/common.test.js +0 -94
  343. data/ext/libmongocrypt/libmongocrypt/bindings/node/test/cryptoCallbacks.test.js +0 -240
  344. data/ext/libmongocrypt/libmongocrypt/bindings/node/test/data/README.md +0 -5
  345. data/ext/libmongocrypt/libmongocrypt/bindings/node/test/data/cmd.json +0 -6
  346. data/ext/libmongocrypt/libmongocrypt/bindings/node/test/data/collection-info.json +0 -37
  347. data/ext/libmongocrypt/libmongocrypt/bindings/node/test/data/encrypted-document-nested.json +0 -8
  348. data/ext/libmongocrypt/libmongocrypt/bindings/node/test/data/encrypted-document.json +0 -11
  349. data/ext/libmongocrypt/libmongocrypt/bindings/node/test/data/encryptedFields.json +0 -30
  350. data/ext/libmongocrypt/libmongocrypt/bindings/node/test/data/key-document.json +0 -32
  351. data/ext/libmongocrypt/libmongocrypt/bindings/node/test/data/key1-document.json +0 -30
  352. data/ext/libmongocrypt/libmongocrypt/bindings/node/test/data/mongocryptd-reply.json +0 -18
  353. data/ext/libmongocrypt/libmongocrypt/bindings/node/test/index.test.js +0 -45
  354. data/ext/libmongocrypt/libmongocrypt/bindings/node/test/mongocryptdManager.test.js +0 -48
  355. data/ext/libmongocrypt/libmongocrypt/bindings/node/test/providers/credentialsProvider.test.js +0 -551
  356. data/ext/libmongocrypt/libmongocrypt/bindings/node/test/release.test.js +0 -66
  357. data/ext/libmongocrypt/libmongocrypt/bindings/node/test/requirements.helper.js +0 -51
  358. data/ext/libmongocrypt/libmongocrypt/bindings/node/test/stateMachine.test.js +0 -331
  359. data/ext/libmongocrypt/libmongocrypt/bindings/node/test/tools/chai-addons.js +0 -8
  360. data/ext/libmongocrypt/libmongocrypt/bindings/node/test/tools/mongodb_reporter.js +0 -325
  361. data/ext/libmongocrypt/libmongocrypt/bindings/node/test/types/index.test-d.ts +0 -63
  362. data/ext/libmongocrypt/libmongocrypt/bindings/python/setup.py +0 -89
  363. data/ext/libmongocrypt/libmongocrypt/debian/build_snapshot.sh +0 -79
  364. data/ext/libmongocrypt/libmongocrypt/debian/changelog +0 -105
  365. data/ext/libmongocrypt/libmongocrypt/debian/compat +0 -1
  366. data/ext/libmongocrypt/libmongocrypt/debian/control +0 -41
  367. data/ext/libmongocrypt/libmongocrypt/debian/copyright +0 -129
  368. data/ext/libmongocrypt/libmongocrypt/debian/gbp.conf +0 -23
  369. data/ext/libmongocrypt/libmongocrypt/debian/libmongocrypt-dev.dirs +0 -2
  370. data/ext/libmongocrypt/libmongocrypt/debian/libmongocrypt-dev.install +0 -5
  371. data/ext/libmongocrypt/libmongocrypt/debian/libmongocrypt0.dirs +0 -1
  372. data/ext/libmongocrypt/libmongocrypt/debian/libmongocrypt0.install +0 -1
  373. data/ext/libmongocrypt/libmongocrypt/debian/rules +0 -46
  374. data/ext/libmongocrypt/libmongocrypt/debian/source/format +0 -1
  375. data/ext/libmongocrypt/libmongocrypt/debian/source/lintian-overrides +0 -3
  376. data/ext/libmongocrypt/libmongocrypt/debian/source/options +0 -1
  377. data/ext/libmongocrypt/libmongocrypt/debian/watch +0 -3
  378. data/ext/libmongocrypt/libmongocrypt/test/data/compact/success/mongocryptd-reply.json +0 -72
  379. data.tar.gz.sig +0 -1
  380. metadata.gz.sig +0 -0
  381. /data/ext/libmongocrypt/libmongocrypt/{bindings/node/test/data/kms-decrypt-reply.txt → test/data/kms-aws/decrypt-response.txt} +0 -0
  382. /data/ext/libmongocrypt/libmongocrypt/{bindings/node/test/data/kms-encrypt-reply.txt → test/data/kms-aws/encrypt-response.txt} +0 -0
  383. /data/ext/libmongocrypt/libmongocrypt/test/data/{gcp-auth → kms-gcp}/decrypt-response.txt +0 -0
  384. /data/ext/libmongocrypt/libmongocrypt/test/data/{gcp-auth → kms-gcp}/encrypt-response.txt +0 -0
  385. /data/ext/libmongocrypt/libmongocrypt/test/data/{gcp-auth → kms-gcp}/oauth-response.txt +0 -0
@@ -5,13 +5,11 @@ This program makes Debian and RPM repositories for libmongocrypt,
5
5
  by downloading our tarballs and forming them into Linux packages.
6
6
  It must be run on a Debianoid, since Debian provides tools to make
7
7
  RPMs, but RPM-based systems don't provide debian packaging crud.
8
- This program is also based on the program of the same name in the
9
- MongoDB server repository.
10
8
 
11
9
  This program was adapted from the program of the same name in the
12
10
  MongoDB server repository:
13
11
 
14
- https://github.com/mongodb/mongo/blob/v4.2/buildscripts/packager.py
12
+ https://github.com/mongodb/mongo/blob/master/buildscripts/packager.py
15
13
 
16
14
  Notes
17
15
  -----
@@ -33,6 +31,25 @@ prerequisites:
33
31
  apt-get install dpkg-dev rpm debhelper fakeroot ia32-libs createrepo git-core
34
32
  echo "Now put the dist gnupg signing keys in ~root/.gnupg"
35
33
 
34
+ Differences from the server version of this script
35
+ --------------------------------------------------
36
+
37
+ * The version numbering scheme is a bit different, so the regexes in
38
+ this script are modified to match the versioning of libmongocrypt.
39
+ Naturally, instances of the package name 'mongodb' have been replaced
40
+ with 'libmongocrypt', and since libmonogcrypt does not use the 'org'
41
+ and 'enterprise' suffixes, those have been left out as well.
42
+
43
+ * The server version of this script has been updated to generate the
44
+ changelog based on Git history, while this version of the script
45
+ continues to use the boilerplate changelog.
46
+
47
+ * Other specific divergences, especially where care should be taken in
48
+ order to not clobber when syncing changes from the server version of
49
+ the script, are noted with explanatory comments as needed. These
50
+ comments are prefixed 'MC:' to make them easily distinguished from
51
+ other comments coming from the original source.
52
+
36
53
  """
37
54
 
38
55
  import argparse
@@ -48,10 +65,10 @@ import tempfile
48
65
  import time
49
66
 
50
67
  # The MongoDB names for the architectures we support.
51
- ARCH_CHOICES = ["x86_64", "arm64", "s390x", "ppc64le"]
68
+ ARCH_CHOICES = ["x86_64", "arm64", "aarch64", "s390x", "ppc64le"]
52
69
 
53
70
  # Made up names for the flavors of distribution we package for.
54
- DISTROS = ["suse", "debian", "redhat", "ubuntu", "amazon", "amazon2"]
71
+ DISTROS = ["suse", "debian", "redhat", "ubuntu", "amazon", "amazon2", "amazon2023"]
55
72
 
56
73
 
57
74
  class Spec(object):
@@ -63,7 +80,7 @@ class Spec(object):
63
80
  self.gitspec = gitspec
64
81
  self.rel = rel
65
82
 
66
- # Commit-triggerd (nightly) version numbers can be in the form: 3.0.7-pre-, or 3.0.7-5-g3b67ac
83
+ # Commit-triggerd version numbers can be in the form: 3.0.7-pre-, or 3.0.7-5-g3b67ac
67
84
  # Patch builds version numbers are in the form: 3.5.5-64-g03945fa-patch-58debcdb3ff1223c9d00005b
68
85
  #
69
86
  def is_nightly(self):
@@ -79,6 +96,7 @@ class Spec(object):
79
96
  """Return True if rc."""
80
97
  return bool(re.search(r"-rc\d+(\+[0-9]{8}git[0-9a-f]+)?$", self.version()))
81
98
 
99
+ # MC: libmongocrypt also has beta releases
82
100
  def is_beta(self):
83
101
  """Return True if beta."""
84
102
  return bool(re.search(r"-beta\d+(\+[0-9]{8}git[0-9a-f]+)?$", self.version()))
@@ -106,6 +124,9 @@ class Spec(object):
106
124
  return self.gitspec
107
125
  return 'r' + self.version()
108
126
 
127
+ # MC: Leave out the version_better_than() and suffix() funtions, which are
128
+ # not used by libmongocrypt's packaging workflow
129
+
109
130
  def prelease(self):
110
131
  """Return pre-release verison suffix."""
111
132
  # NOTE: This is only called for RPM packages, and only after
@@ -192,7 +213,6 @@ class Distro(object):
192
213
  Power and x86 have different names for apt/yum (ppc64le/ppc64el
193
214
  and x86_64/amd64).
194
215
  """
195
- # pylint: disable=too-many-return-statements
196
216
  if re.search("^(debian|ubuntu)", self.dname):
197
217
  if arch == "ppc64le":
198
218
  return "ppc64el"
@@ -208,14 +228,15 @@ class Distro(object):
208
228
  return "ppc64le"
209
229
  elif arch == "s390x":
210
230
  return "s390x"
211
- elif arch == "arm64":
212
- return "aarch64"
213
231
  elif arch.endswith("86"):
214
232
  return "i686"
233
+ elif arch == "arm64":
234
+ return "arm64"
235
+ elif arch == "aarch64":
236
+ return "aarch64"
215
237
  return "x86_64"
216
238
  else:
217
239
  raise Exception("BUG: unsupported platform?")
218
- # pylint: enable=too-many-return-statements
219
240
 
220
241
  def repodir(self, arch, build_os, spec): # noqa: D406,D407,D412,D413
221
242
  """Return the directory where we'll place the package files for (distro, distro_version).
@@ -267,6 +288,8 @@ class Distro(object):
267
288
 
268
289
  Example, "universe" for Ubuntu, "main" for debian.
269
290
  """
291
+ # MC: libmongocrypt uses the 'universe' section for Ubuntu, rather than
292
+ # 'multiverse' like the server
270
293
  if self.dname == 'ubuntu':
271
294
  return "universe"
272
295
  elif self.dname == 'debian':
@@ -274,13 +297,13 @@ class Distro(object):
274
297
  else:
275
298
  raise Exception("unsupported distro: %s" % self.dname)
276
299
 
277
- def repo_os_version(self, build_os): # pylint: disable=too-many-branches
300
+ def repo_os_version(self, build_os):
278
301
  """Return an OS version suitable for package repo directory naming.
279
302
 
280
303
  Example, 5, 6 or 7 for redhat/centos, "precise," "wheezy," etc.
281
304
  for Ubuntu/Debian, 11 for suse, "2013.03" for amazon.
282
305
  """
283
- # pylint: disable=too-many-return-statements
306
+
284
307
  if self.dname == 'suse':
285
308
  return re.sub(r'^suse(\d+)$', r'\1', build_os)
286
309
  if self.dname == 'redhat':
@@ -289,6 +312,8 @@ class Distro(object):
289
312
  return "2013.03"
290
313
  elif self.dname == 'amazon2':
291
314
  return "2017.12"
315
+ elif self.dname == 'amazon2023':
316
+ return "2023.0"
292
317
  elif self.dname == 'ubuntu':
293
318
  if build_os == 'ubuntu1204':
294
319
  return "precise"
@@ -313,11 +338,12 @@ class Distro(object):
313
338
  return 'buster'
314
339
  elif build_os == 'debian11':
315
340
  return 'bullseye'
341
+ elif build_os == 'debian12':
342
+ return 'bookworm'
316
343
  else:
317
344
  raise Exception("unsupported build_os: %s" % build_os)
318
345
  else:
319
346
  raise Exception("unsupported distro: %s" % self.dname)
320
- # pylint: enable=too-many-return-statements
321
347
 
322
348
  def make_pkg(self, build_os, arch, spec, srcdir):
323
349
  """Return the package."""
@@ -335,14 +361,26 @@ class Distro(object):
335
361
  "suse11" for suse, etc.
336
362
  """
337
363
  # Community builds only support amd64
338
- if arch not in ['x86_64', 'ppc64le', 's390x', 'arm64']:
364
+ if arch not in ['x86_64', 'ppc64le', 's390x', 'arm64', 'aarch64']:
339
365
  raise Exception("BUG: unsupported architecture (%s)" % arch)
340
366
 
341
367
  if re.search("(suse)", self.dname):
342
368
  return ["suse11", "suse12", "suse15"]
343
369
  elif re.search("(redhat|fedora|centos)", self.dname):
344
- return ["rhel80", "rhel70", "rhel71", "rhel72", "rhel62", "rhel55", "rhel67"]
345
- elif self.dname in ['amazon', 'amazon2']:
370
+ return [
371
+ "rhel91",
372
+ "rhel83",
373
+ "rhel82",
374
+ "rhel81",
375
+ "rhel80",
376
+ "rhel70",
377
+ "rhel71",
378
+ "rhel72",
379
+ "rhel62",
380
+ "rhel55",
381
+ "rhel67"
382
+ ]
383
+ elif self.dname in ['amazon', 'amazon2', 'amazon2023']:
346
384
  return [self.dname]
347
385
  elif self.dname == 'ubuntu':
348
386
  return [
@@ -354,7 +392,7 @@ class Distro(object):
354
392
  "ubuntu2204",
355
393
  ]
356
394
  elif self.dname == 'debian':
357
- return ["debian81", "debian92", "debian10", "debian11"]
395
+ return ["debian81", "debian92", "debian10", "debian11", "debian12"]
358
396
  else:
359
397
  raise Exception("BUG: unsupported platform?")
360
398
 
@@ -370,6 +408,8 @@ class Distro(object):
370
408
  return 'amzn1'
371
409
  elif self.dname == 'amazon2':
372
410
  return 'amzn2'
411
+ elif self.dname == 'amazon2023':
412
+ return 'amzn2023'
373
413
  return re.sub(r'^rh(el\d).*$', r'\1', build_os)
374
414
 
375
415
 
@@ -489,7 +529,7 @@ def setupdir(distro, build_os, arch, spec):
489
529
  # would be dst/x86_64/debian-sysvinit/wheezy/libmongocrypt/
490
530
  # or dst/x86_64/redhat/rhel55/libmongocrypt/
491
531
  return "dst/%s/%s/%s/%s-%s/" % (arch, distro.name(), build_os, distro.pkgbase(),
492
- spec.pversion(distro))
532
+ spec.pversion(distro))
493
533
 
494
534
 
495
535
  def unpack_binaries_into(build_os, arch, spec, where):
@@ -504,7 +544,10 @@ def unpack_binaries_into(build_os, arch, spec, where):
504
544
  try:
505
545
  sysassert(["tar", "xvzf", rootdir + "/" + tarfile(build_os, arch, spec)])
506
546
  release_dir = glob('libmongocrypt-*')[0]
507
- for releasefile in "lib", "lib64", "include":
547
+ for releasefile in "lib", "lib64", "include", "LICENSE", "README.md":
548
+ # MC: wrap print() and os.rename() in a conditional since as a library
549
+ # we have to consider that sometimes artifacts are in lib and other
550
+ # times they are in lib64
508
551
  if os.path.exists("%s/%s" % (release_dir, releasefile)):
509
552
  print("moving file: %s/%s" % (release_dir, releasefile))
510
553
  os.rename("%s/%s" % (release_dir, releasefile), releasefile)
@@ -524,16 +567,23 @@ def make_package(distro, build_os, arch, spec, srcdir):
524
567
 
525
568
  sdir = setupdir(distro, build_os, arch, spec)
526
569
  ensure_dir(sdir)
570
+ # Note that the RPM packages get their man pages from the debian
571
+ # directory, so the debian directory is needed in all cases (and
572
+ # innocuous in the debianoids' sdirs).
527
573
  for pkgdir in ["etc/debian", "etc/rpm"]:
528
574
  print("Copying packaging files from %s to %s" % ("%s/%s" % (srcdir, pkgdir), sdir))
575
+ # FIXME: sh-dash-cee is bad. See if tarfile can do this.
529
576
  sysassert([
530
577
  "sh", "-c",
578
+ # MC: we use --strip-components=1 since the 'debian/' and 'rpm/'
579
+ # dirs are under 'etc/' in the libmongocrypt repo
531
580
  "(cd \"%s\" && tar cf - %s ) | (cd \"%s\" && tar --strip-components=1 -xvf -)" % (srcdir, pkgdir, sdir)
532
581
  ])
533
582
  # Splat the binaries under sdir. The "build" stages of the
534
583
  # packaging infrastructure will move the files to wherever they
535
584
  # need to go.
536
585
  unpack_binaries_into(build_os, arch, spec, sdir)
586
+
537
587
  return distro.make_pkg(build_os, arch, spec, srcdir)
538
588
 
539
589
 
@@ -549,6 +599,11 @@ def make_repo(repodir, distro, build_os):
549
599
 
550
600
  def make_deb(distro, build_os, arch, spec, srcdir):
551
601
  """Make the Debian script."""
602
+ # I can't remember the details anymore, but the initscript/upstart
603
+ # job files' names must match the package name in some way; and
604
+ # see also the --name flag to dh_installinit in the generated
605
+ # debian/rules file.
606
+ # MC: We leave out all the stuff that the server does related to init scripts
552
607
  sdir = setupdir(distro, build_os, arch, spec)
553
608
  # Rewrite the control and rules files
554
609
  write_debian_changelog(sdir + "debian/changelog", spec, srcdir, distro)
@@ -560,6 +615,9 @@ def make_deb(distro, build_os, arch, spec, srcdir):
560
615
  "cp", "-v", srcdir + "etc/debian/rules", sdir + "debian/rules"
561
616
  ])
562
617
 
618
+ # MC: Skip some server-specific things, like variations of the controls and
619
+ # rules files, as well as maintainer scripts (i.e., postinst)
620
+
563
621
  # Do the packaging.
564
622
  oldcwd = os.getcwd()
565
623
  try:
@@ -621,7 +679,7 @@ Description: libmongocrypt packages
621
679
  os.chdir(oldpwd)
622
680
 
623
681
 
624
- def move_repos_into_place(src, dst): # pylint: disable=too-many-branches
682
+ def move_repos_into_place(src, dst):
625
683
  """Move the repos into place."""
626
684
  # Find all the stuff in src/*, move it to a freshly-created
627
685
  # directory beside dst, then play some games with symlinks so that
@@ -690,6 +748,8 @@ def write_debian_changelog(path, spec, srcdir, distro):
690
748
  """Write the debian changelog."""
691
749
  oldcwd = os.getcwd()
692
750
  os.chdir(srcdir)
751
+ # MC: Rather than using Git to generate the changelog (like the server), we
752
+ # just use a simple boilerplate changelog
693
753
  preamble = "libmongocrypt (%s-0) unstable; urgency=medium\n\n" % spec.pversion(distro)
694
754
  preamble += " * Built from Evergreen.\n\n"
695
755
  preamble += " -- Roberto C. Sanchez <roberto@connexer.com> "
@@ -701,72 +761,26 @@ def write_debian_changelog(path, spec, srcdir, distro):
701
761
  ]).decode('utf-8')
702
762
  finally:
703
763
  os.chdir(oldcwd)
764
+ # MC: No need to munge the version and rewrite the changelog
704
765
  with open(path, 'w') as fh:
705
766
  fh.write(sb)
706
767
 
707
768
 
708
- def make_rpm(distro, build_os, arch, spec, srcdir): # pylint: disable=too-many-locals
769
+ def make_rpm(distro, build_os, arch, spec, srcdir):
709
770
  """Create the RPM specfile."""
710
771
  sdir = setupdir(distro, build_os, arch, spec)
711
772
 
712
773
  specfile = srcdir + "etc/rpm/libmongocrypt.spec"
713
774
 
775
+ # No need to mess with init scripts and such like the server
776
+
714
777
  topdir = ensure_dir('%s/rpmbuild/%s/' % (os.getcwd(), build_os))
715
778
  for subdir in ["BUILD", "RPMS", "SOURCES", "SPECS", "SRPMS"]:
716
779
  ensure_dir("%s/%s/" % (topdir, subdir))
717
780
  distro_arch = distro.archname(arch)
718
- # RPM tools take these macro files that define variables in
719
- # RPMland. Unfortunately, there's no way to tell RPM tools to use
720
- # a given file *in addition* to the files that it would already
721
- # load, so we have to figure out what it would normally load,
722
- # augment that list, and tell RPM to use the augmented list. To
723
- # figure out what macrofiles ordinarily get loaded, older RPM
724
- # versions had a parameter called "macrofiles" that could be
725
- # extracted from "rpm --showrc". But newer RPM versions don't
726
- # have this. To tell RPM what macros to use, older versions of
727
- # RPM have a --macros option that doesn't work; on these versions,
728
- # you can put a "macrofiles" parameter into an rpmrc file. But
729
- # that "macrofiles" setting doesn't do anything for newer RPM
730
- # versions, where you have to use the --macros flag instead. And
731
- # all of this is to let us do our work with some guarantee that
732
- # we're not clobbering anything that doesn't belong to us.
733
- #
734
- # On RHEL systems, --rcfile will generally be used and
735
- # --macros will be used in Ubuntu.
736
- #
737
- macrofiles = [
738
- l for l in backtick(["rpm", "--showrc"]).decode('utf-8').split("\n")
739
- if l.startswith("macrofiles")
740
- ]
741
- flags = []
742
- macropath = os.getcwd() + "/macros"
743
-
744
- write_rpm_macros_file(macropath, topdir, distro.release_dist(build_os))
745
- if macrofiles:
746
- macrofiles = macrofiles[0] + ":" + macropath
747
- rcfile = os.getcwd() + "/rpmrc"
748
- write_rpmrc_file(rcfile, macrofiles)
749
- flags = ["--rcfile", rcfile]
750
- else:
751
- # This hard-coded hooey came from some box running RPM
752
- # 4.4.2.3. It may not work over time, but RPM isn't sanely
753
- # configurable.
754
- flags = [
755
- "--macros",
756
- "/usr/lib/rpm/macros:/usr/lib/rpm/%s-linux/macros:/usr/lib/rpm/suse/macros:/etc/rpm/macros.*:/etc/rpm/macros:/etc/rpm/%s-linux/macros:~/.rpmmacros:%s"
757
- % (distro_arch, distro_arch, macropath)
758
- ]
759
- # Put the specfile and the tar'd up binaries and stuff in
760
- # place.
761
- #
762
- # The version of rpm and rpm tools in RHEL 5.5 can't interpolate the
763
- # %{dynamic_version} macro, so do it manually
764
- with open(specfile, "r") as spec_source:
765
- with open(topdir + "SPECS/" + os.path.basename(specfile), "w") as spec_dest:
766
- for line in spec_source:
767
- line = line.replace('%{dynamic_version}', spec.pversion(distro))
768
- line = line.replace('%{dynamic_release}', spec.prelease())
769
- spec_dest.write(line)
781
+
782
+ # Places the RPM Spec file where it's expected for the rpmbuild execution later.
783
+ shutil.copy(specfile, topdir + "SPECS")
770
784
 
771
785
  oldcwd = os.getcwd()
772
786
  os.chdir(sdir + "/../")
@@ -780,10 +794,39 @@ def make_rpm(distro, build_os, arch, spec, srcdir): # pylint: disable=too-many-
780
794
  os.chdir(oldcwd)
781
795
  # Do the build.
782
796
 
783
- flags.extend([
784
- "-D", "dynamic_version " + spec.pversion(distro), "-D",
785
- "dynamic_release " + spec.prelease(), "-D", "_topdir " + topdir
786
- ])
797
+ # MC: Dump the rpm config.
798
+ bt = backtick(["rpm", "--showrc"]).decode('utf-8')
799
+ print(bt)
800
+ #
801
+ # MC: Add some macro definitions to the rpmbuild invocation:
802
+ #
803
+ # _arch - it seems like this one ought to be defined by RPM, but it appears
804
+ # to not be and without it the build fails to find some artifacts
805
+ #
806
+ # _smp_build_ncpus - it seems that on some platforms xargs is invoked in
807
+ # such a way that if _smp_build_ncpus is not set (which it apparently is not
808
+ # on every platform) then the xargs invocation fails
809
+ #
810
+ # debug_package - tells rpmbuild that there is no package to build with
811
+ # debugging information/symbols; we don't generate them and since we are
812
+ # packaging a library rpmbuild expects to find them
813
+ #
814
+ flags = [
815
+ "-D",
816
+ "_smp_build_ncpus 1",
817
+ "-D",
818
+ "debug_package %{nil}",
819
+ "-D",
820
+ "_arch {}".format(arch),
821
+ "-D",
822
+ "_topdir {}".format(topdir),
823
+ "-D",
824
+ "dist .{}".format(distro.release_dist(build_os)),
825
+ "-D",
826
+ "dynamic_version {}".format(spec.pversion(distro)),
827
+ "-D",
828
+ "dynamic_release {}".format(spec.prelease()),
829
+ ]
787
830
 
788
831
  # Versions of RPM after 4.4 ignore our BuildRoot tag so we need to
789
832
  # specify it on the command line args to rpmbuild
@@ -814,20 +857,6 @@ def make_rpm_repo(repo):
814
857
  os.chdir(oldpwd)
815
858
 
816
859
 
817
- def write_rpmrc_file(path, string):
818
- """Write the RPM rc file."""
819
- with open(path, 'w') as fh:
820
- fh.write(string)
821
-
822
-
823
- def write_rpm_macros_file(path, topdir, release_dist):
824
- """Write the RPM macros file."""
825
- with open(path, 'w') as fh:
826
- fh.write("%%_topdir %s\n" % topdir)
827
- fh.write("%%dist .%s\n" % release_dist)
828
- fh.write("%_use_internal_dependency_generator 0\n")
829
-
830
-
831
860
  def ensure_dir(filename):
832
861
  """Ensure that the dirname directory of filename exists, and return filename."""
833
862
  dirpart = os.path.dirname(filename)
@@ -0,0 +1,14 @@
1
+ # These package URLs (purls) point to the versions (tags) of external dependencies
2
+ # that are committed to the project. Refer: https://github.com/package-url/purl-spec
3
+
4
+ # This file is fed to silkbomb to generate the cyclonedx.sbom.json file. Edit this file
5
+ # instead of modifying the SBOM JSON directly. After modifying this file, be sure to
6
+ # re-generate the SBOM JSON file with: `./.evergreen/earthly.sh +sbom-generate`. If
7
+ # adding a new dependency, ensure the resulting SBOM JSON includes the `licenses` and
8
+ # `copyright` property. This information can be manually added.
9
+
10
+ # libbson is obtained via `cmake/FetchMongoC.cmake`.
11
+ pkg:github/mongodb/mongo-c-driver@v1.27.1?#src/libbson
12
+
13
+ # IntelDFP is obtained via `cmake/IntelDFP.cmake`
14
+ pkg:generic/IntelRDFPMathLib@20U2?download_url=https://www.netlib.org/misc/intel/IntelRDFPMathLib20U2.tar.gz
@@ -106,6 +106,42 @@ repos:
106
106
  - yum/redhat/8/libmongocrypt
107
107
  - yum/redhat/8Server/libmongocrypt
108
108
 
109
+ - name: rhel81
110
+ type: rpm
111
+ edition: org
112
+ bucket: libmongocrypt
113
+ region: us-east-1
114
+ repos:
115
+ - yum/redhat/8/libmongocrypt
116
+ - yum/redhat/8Server/libmongocrypt
117
+
118
+ - name: rhel82
119
+ type: rpm
120
+ edition: org
121
+ bucket: libmongocrypt
122
+ region: us-east-1
123
+ repos:
124
+ - yum/redhat/8/libmongocrypt
125
+ - yum/redhat/8Server/libmongocrypt
126
+
127
+ - name: rhel83
128
+ type: rpm
129
+ edition: org
130
+ bucket: libmongocrypt
131
+ region: us-east-1
132
+ repos:
133
+ - yum/redhat/8/libmongocrypt
134
+ - yum/redhat/8Server/libmongocrypt
135
+
136
+ - name: rhel91
137
+ type: rpm
138
+ edition: org
139
+ bucket: libmongocrypt
140
+ region: us-east-1
141
+ repos:
142
+ - yum/redhat/9/libmongocrypt
143
+ - yum/redhat/9Server/libmongocrypt
144
+
109
145
  - name: amazon
110
146
  type: rpm
111
147
  edition: org
@@ -122,6 +158,14 @@ repos:
122
158
  repos:
123
159
  - yum/amazon/2/libmongocrypt
124
160
 
161
+ - name: amazon2023
162
+ type: rpm
163
+ edition: org
164
+ bucket: libmongocrypt
165
+ region: us-east-1
166
+ repos:
167
+ - yum/amazon/2023/libmongocrypt
168
+
125
169
  - name: suse12
126
170
  type: rpm
127
171
  edition: org
@@ -187,6 +231,18 @@ repos:
187
231
  repos:
188
232
  - apt/debian/dists/bullseye/libmongocrypt
189
233
 
234
+ - name: debian12
235
+ type: deb
236
+ code_name: "bookworm"
237
+ bucket: libmongocrypt
238
+ region: us-east-1
239
+ edition: org
240
+ component: main
241
+ architectures:
242
+ - amd64
243
+ repos:
244
+ - apt/debian/dists/bookworm/libmongocrypt
245
+
190
246
  - name: ubuntu1404
191
247
  type: deb
192
248
  code_name: "trusty"
@@ -0,0 +1,70 @@
1
+ #!/usr/bin/env bash
2
+
3
+ set -o errexit
4
+ set -o pipefail
5
+ set -o nounset
6
+
7
+ # Check for required commands:
8
+ if ! command -v jq > /dev/null 2>&1; then
9
+ echo "jq not found. Install jq"
10
+ exit 1
11
+ fi
12
+
13
+ if ! command -v curl > /dev/null 2>&1; then
14
+ echo "curl not found. Install curl"
15
+ exit 1
16
+ fi
17
+
18
+ # Check for required environment variables:
19
+ : "${silk_client_id:?}"
20
+ : "${silk_client_secret:?}"
21
+ : "${branch:?}"
22
+
23
+ # Get Silk token:
24
+ json_payload=$(cat <<EOF
25
+ {
26
+ "client_id": "${silk_client_id}",
27
+ "client_secret": "${silk_client_secret}"
28
+ }
29
+ EOF
30
+ )
31
+ silk_jwt_token=$(curl --no-progress-meter --fail --location -X POST "https://silkapi.us1.app.silk.security/api/v1/authenticate" \
32
+ -H "Accept: application/json" \
33
+ -H "Content-Type: application/json" \
34
+ -d "$json_payload" \
35
+ | jq -e -r '.token')
36
+
37
+ asset_id="libmongocrypt-${branch}"
38
+
39
+ # Create Silk asset group:
40
+ json_payload=$(cat <<EOF
41
+ {
42
+ "active": true,
43
+ "name": "${asset_id}",
44
+ "code_repo_url": "https://github.com/mongodb/libmongocrypt",
45
+ "branch": "${branch}",
46
+ "metadata": {
47
+ "sbom_lite_path": "etc/cyclonedx.sbom.json"
48
+ },
49
+ "file_paths": [],
50
+ "asset_id": "${asset_id}"
51
+ }
52
+ EOF
53
+ )
54
+ if ! reply=$(curl --no-progress-meter --fail-with-body --location -X 'POST' \
55
+ 'https://silkapi.us1.app.silk.security/api/v1/raw/asset_group' \
56
+ -H "Accept: application/json" \
57
+ -H "Authorization: ${silk_jwt_token}" \
58
+ -H 'Content-Type: application/json' \
59
+ -d "$json_payload"); then
60
+ echo "Failed to create silk asset group. Got reply: $reply"
61
+ exit 1
62
+ fi
63
+
64
+ if silkid=$(echo "$reply" | jq -e ".silk_id"); then
65
+ echo "Created silk asset group with asset_id=$asset_id and silk_id=$silkid"
66
+ else
67
+ echo "Reply does not contain expected 'silk_id': $reply"
68
+ exit 1
69
+ fi
70
+
@@ -0,0 +1,37 @@
1
+ # libmongocrypt SSDLC Compliance Report
2
+
3
+ ## Release Creator
4
+
5
+ See [C/CXX Release Info](https://docs.google.com/spreadsheets/d/1yHfGmDnbA5-Qt8FX4tKWC5xk9AhzYZx1SKF4AD36ecY/edit?usp=sharing) (internal).
6
+
7
+ ## Process Document
8
+
9
+ Not available. <!-- DRIVERS-2892: replace with link to public-facing document once available. -->
10
+
11
+ ## Tool used to track third party vulnerabilities
12
+
13
+ Silk and Snyk.
14
+
15
+ ## Third-Party Dependency Information
16
+
17
+ See `cyclonedx.augmented.sbom.json` attached to release.
18
+
19
+ ## Static Analysis Findings
20
+
21
+ See [SSDLC Static Analysis Reports](https://drive.google.com/drive/folders/17bjBnQ3mhEXvs6IK1rrTphJr0CUO2qZh?usp=sharing) (internal) for release-specific reports.
22
+
23
+ ## Security Testing Report
24
+
25
+ See [libmongocrypt Security Testing Summary](https://docs.google.com/document/d/1dc7uvBzu3okAIsA8LSW5sVQGkYIvwpBVdg5v4wb4c4s?usp=sharing) (internal). Available as needed from the libmongocrypt team.
26
+
27
+ ## Security Assessment Report
28
+
29
+ Not applicable to libmongocrypt.
30
+
31
+ ## Signature Information
32
+
33
+ Signatures for Windows binaries are attached to this release and may be verified with `gpg`. The public key for `libmongocrypt` is available on https://pgp.mongodb.com/.
34
+
35
+ ## Known Vulnerabilities
36
+
37
+ Any vulnerabilities that may be shown in the links referenced above have been reviewed and accepted by the appropriate approvers. For detailed information, see `third_party_vulnerabilities.md` attached to release.
@@ -0,0 +1,42 @@
1
+ # 3rd Party Dependency Vulnerabilities
2
+
3
+ This document tracks vulnerabilities in 3rd party dependencies that directly affect the standard release product of libmongocrypt.
4
+
5
+ > [!IMPORTANT]
6
+ > The "standard release product" is defined as the set of files which are _installed_ by a configuration, build, and install of libmongocrypt. This includes static/shared library files, header files, and packaging files for supported build configurations. Vulnerabilities for 3rd party dependencies that are bundled with the standard release product are reported in this document.
7
+ >
8
+ > Language bindings (in the `bindings` directory), test files, utility scripts, documentation generators, and other miscellaneous files and artifacts are NOT considered part of the standard release product, even if they are included in the release distribution tarball. Vulnerabilities for such 3rd party dependencies are NOT reported in this document.
9
+
10
+ ## Template
11
+
12
+ This section provides a template that may be used for actual vulnerability reports further below.
13
+
14
+ ### CVE-YYYY-NNNNNN
15
+
16
+ - **Date Detected:** YYYY-MM-DD
17
+ - **Severity:** Low, Medium, High, or Critical
18
+ - **Detector:** Silk or Snyk
19
+ - **Description:** A short vulnerability description.
20
+ - **Dependency:** Name and version of the 3rd party dependency.
21
+ - **Upstream Status:** False Positive, Won't Fix, Fix Pending, or Fix Available. This is the fix status for the 3rd party dependency, not libmongocrypt. "Fix Available" should include the version and/or date when the fix was released, e.g. "Fix Available (1.2.3, 1970-01-01)".
22
+ - **Fix Status:** False Positive, Won't Fix, Fix Pending, or Fix Committed. This is the fix status for the libmongocrypt. "False Positive" and "Won't Fix" must include rationale in notes below.
23
+ - **For Release:** The libmongocrypt release version for which the "Fix Status" above was last updated.
24
+ - **Notes:** Context or rationale for remediation, references to relevant issue trackers, etc.
25
+
26
+ ## libbson
27
+
28
+ ### CVE-2023-0437
29
+
30
+ - **Date Detected:** 2024-05-20
31
+ - **Severity:** Medium
32
+ - **Detector:** Snyk
33
+ - **Description:** Loop with Unreachable Exit Condition ('Infinite Loop')
34
+ - **Dependency:** mongodb/mongo-c-driver@1.17.7
35
+ - **Upstream Status:** Fix Available (1.25.0, 2023-11-01).
36
+ - **Fix Status:** Fix Committed.
37
+ - **For Release:** 1.10.1
38
+ - **Notes:** Fixed in libbson 1.25.0 ([CDRIVER-4747](https://jira.mongodb.org/browse/CDRIVER-4747)). Fixed in libmongocrypt by upgrading libbson to 1.27.1 ([MONGOCRYPT-685](https://jira.mongodb.org/browse/MONGOCRYPT-685)).
39
+
40
+ ## IntelDFP
41
+
42
+ None.