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.
- checksums.yaml +4 -4
- data/ext/libmongocrypt/libmongocrypt/CHANGELOG.md +8 -0
- data/ext/libmongocrypt/libmongocrypt/CMakeLists.txt +5 -1
- data/ext/libmongocrypt/libmongocrypt/CODEOWNERS +4 -1
- data/ext/libmongocrypt/libmongocrypt/Earthfile +18 -17
- data/ext/libmongocrypt/libmongocrypt/README.md +8 -8
- data/ext/libmongocrypt/libmongocrypt/bindings/python/CHANGELOG.rst +7 -0
- data/ext/libmongocrypt/libmongocrypt/bindings/python/CONTRIBUTING.md +34 -0
- data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/asynchronous/state_machine.py +6 -2
- data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/binding.py +18 -2
- data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/mongocrypt.py +9 -1
- data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/options.py +14 -0
- data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/synchronous/state_machine.py +6 -2
- data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/version.py +1 -1
- data/ext/libmongocrypt/libmongocrypt/bindings/python/sbom.json +8 -8
- data/ext/libmongocrypt/libmongocrypt/bindings/python/scripts/libmongocrypt-version.txt +1 -0
- data/ext/libmongocrypt/libmongocrypt/bindings/python/{release.sh → scripts/release.sh} +9 -3
- data/ext/libmongocrypt/libmongocrypt/bindings/python/{synchro.py → scripts/synchro.py} +16 -9
- data/ext/libmongocrypt/libmongocrypt/bindings/python/scripts/synchro.sh +8 -0
- data/ext/libmongocrypt/libmongocrypt/bindings/python/scripts/update-version.sh +27 -0
- data/ext/libmongocrypt/libmongocrypt/bindings/python/scripts/update_binding.py +78 -0
- data/ext/libmongocrypt/libmongocrypt/bindings/python/test/test_mongocrypt.py +15 -0
- data/ext/libmongocrypt/libmongocrypt/doc/releasing.md +25 -18
- data/ext/libmongocrypt/libmongocrypt/etc/calc_release_version.py +39 -13
- data/ext/libmongocrypt/libmongocrypt/etc/calc_release_version_selftest.sh +1 -1
- data/ext/libmongocrypt/libmongocrypt/etc/cyclonedx.sbom.json +2 -2
- data/ext/libmongocrypt/libmongocrypt/kms-message/CMakeLists.txt +1 -1
- data/ext/libmongocrypt/libmongocrypt/kms-message/src/hexlify.c +5 -0
- data/ext/libmongocrypt/libmongocrypt/kms-message/src/hexlify.h +1 -1
- data/ext/libmongocrypt/libmongocrypt/kms-message/src/kms_azure_request.c +1 -1
- data/ext/libmongocrypt/libmongocrypt/kms-message/src/kms_gcp_request.c +1 -1
- data/ext/libmongocrypt/libmongocrypt/kms-message/src/kms_kmip_reader_writer.c +4 -2
- data/ext/libmongocrypt/libmongocrypt/kms-message/src/kms_kmip_request.c +1 -2
- data/ext/libmongocrypt/libmongocrypt/kms-message/src/kms_message_private.h +5 -1
- data/ext/libmongocrypt/libmongocrypt/kms-message/src/kms_request.c +1 -1
- data/ext/libmongocrypt/libmongocrypt/kms-message/src/kms_request_opt.c +1 -1
- data/ext/libmongocrypt/libmongocrypt/kms-message/src/kms_request_str.c +2 -8
- data/ext/libmongocrypt/libmongocrypt/kms-message/src/kms_request_str.h +9 -0
- data/ext/libmongocrypt/libmongocrypt/kms-message/src/kms_response_parser.c +0 -1
- data/ext/libmongocrypt/libmongocrypt/kms-message/src/sort.c +7 -3
- data/ext/libmongocrypt/libmongocrypt/kms-message/src/sort.h +2 -0
- data/ext/libmongocrypt/libmongocrypt/kms-message/test/test_kmip_reader_writer.c +8 -1
- data/ext/libmongocrypt/libmongocrypt/kms-message/test/test_kms_assert.h +5 -4
- data/ext/libmongocrypt/libmongocrypt/kms-message/test/test_kms_azure_online.c +1 -1
- data/ext/libmongocrypt/libmongocrypt/kms-message/test/test_kms_gcp_online.c +1 -1
- data/ext/libmongocrypt/libmongocrypt/kms-message/test/test_kms_kmip_request.c +4 -0
- data/ext/libmongocrypt/libmongocrypt/kms-message/test/test_kms_kmip_response.c +3 -0
- data/ext/libmongocrypt/libmongocrypt/kms-message/test/test_kms_kmip_response_parser.c +4 -0
- data/ext/libmongocrypt/libmongocrypt/kms-message/test/test_kms_online_util.c +1 -1
- data/ext/libmongocrypt/libmongocrypt/kms-message/test/test_kms_online_util.h +1 -1
- data/ext/libmongocrypt/libmongocrypt/kms-message/test/test_kms_request.c +39 -39
- data/ext/libmongocrypt/libmongocrypt/src/crypto/libcrypto.c +235 -65
- data/ext/libmongocrypt/libmongocrypt/src/crypto/none.c +1 -1
- data/ext/libmongocrypt/libmongocrypt/src/csfle-markup.cpp +4 -2
- data/ext/libmongocrypt/libmongocrypt/src/mc-dec128.h +2 -2
- data/ext/libmongocrypt/libmongocrypt/src/mc-dec128.test.cpp +2 -2
- data/ext/libmongocrypt/libmongocrypt/src/mc-efc-private.h +1 -4
- data/ext/libmongocrypt/libmongocrypt/src/mc-efc.c +9 -11
- data/ext/libmongocrypt/libmongocrypt/src/mc-fle-blob-subtype-private.h +1 -0
- data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-encryption-placeholder-private.h +10 -8
- data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-encryption-placeholder.c +167 -176
- data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-find-equality-payload-v2.c +6 -17
- data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-find-equality-payload.c +6 -17
- data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-find-range-payload-private-v2.h +1 -1
- data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-find-range-payload-v2.c +25 -26
- data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-find-range-payload.c +2 -1
- data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-find-text-payload-private.h +122 -0
- data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-find-text-payload.c +477 -0
- data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-insert-update-payload-private-v2.h +1 -3
- data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-insert-update-payload-v2.c +28 -43
- data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-insert-update-payload.c +6 -17
- data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-payload-iev-v2.c +6 -5
- data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-payload-iev.c +13 -10
- data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-payload-uev-common.c +3 -2
- data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-rfds.c +7 -6
- data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-tag-and-encrypted-metadata-block.c +4 -3
- data/ext/libmongocrypt/libmongocrypt/src/mc-optional-private.h +1 -1
- data/ext/libmongocrypt/libmongocrypt/src/mc-parse-utils-private.h +27 -0
- data/ext/libmongocrypt/libmongocrypt/src/mc-parse-utils.c +48 -0
- data/ext/libmongocrypt/libmongocrypt/src/mc-range-edge-generation-private.h +5 -5
- data/ext/libmongocrypt/libmongocrypt/src/mc-range-edge-generation.c +15 -20
- data/ext/libmongocrypt/libmongocrypt/src/mc-range-encoding-private.h +4 -6
- data/ext/libmongocrypt/libmongocrypt/src/mc-range-encoding.c +9 -18
- data/ext/libmongocrypt/libmongocrypt/src/mc-range-mincover-generator.template.h +4 -5
- data/ext/libmongocrypt/libmongocrypt/src/mc-range-mincover-private.h +5 -9
- data/ext/libmongocrypt/libmongocrypt/src/mc-range-mincover.c +14 -19
- data/ext/libmongocrypt/libmongocrypt/src/mc-rangeopts-private.h +2 -4
- data/ext/libmongocrypt/libmongocrypt/src/mc-rangeopts.c +109 -119
- data/ext/libmongocrypt/libmongocrypt/src/mc-reader-private.h +2 -2
- data/ext/libmongocrypt/libmongocrypt/src/mc-reader.c +4 -2
- data/ext/libmongocrypt/libmongocrypt/src/mc-schema-broker-private.h +0 -3
- data/ext/libmongocrypt/libmongocrypt/src/mc-schema-broker.c +4 -14
- data/ext/libmongocrypt/libmongocrypt/src/mc-str-encode-string-sets-private.h +1 -1
- data/ext/libmongocrypt/libmongocrypt/src/mc-str-encode-string-sets.c +3 -3
- data/ext/libmongocrypt/libmongocrypt/src/mc-text-search-str-encode-private.h +8 -1
- data/ext/libmongocrypt/libmongocrypt/src/mc-text-search-str-encode.c +78 -2
- data/ext/libmongocrypt/libmongocrypt/src/mc-tokens-private.h +34 -16
- data/ext/libmongocrypt/libmongocrypt/src/mc-tokens.c +66 -74
- data/ext/libmongocrypt/libmongocrypt/src/mc-writer-private.h +1 -1
- data/ext/libmongocrypt/libmongocrypt/src/mc-writer.c +4 -2
- data/ext/libmongocrypt/libmongocrypt/src/mlib/error.h +1 -1
- data/ext/libmongocrypt/libmongocrypt/src/mlib/int128.h +12 -1
- data/ext/libmongocrypt/libmongocrypt/src/mlib/int128.test.cpp +5 -0
- data/ext/libmongocrypt/libmongocrypt/src/mlib/path.h +5 -5
- data/ext/libmongocrypt/libmongocrypt/src/mlib/path.test.c +2 -5
- data/ext/libmongocrypt/libmongocrypt/src/mlib/str.h +65 -58
- data/ext/libmongocrypt/libmongocrypt/src/mlib/str.test.c +3 -3
- data/ext/libmongocrypt/libmongocrypt/src/mlib/thread.h +1 -1
- data/ext/libmongocrypt/libmongocrypt/src/mlib/user-check.h +1 -1
- data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-cache-collinfo-private.h +1 -1
- data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-cache-collinfo.c +4 -0
- data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-ciphertext-private.h +1 -1
- data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-crypto-private.h +4 -4
- data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-crypto.c +29 -25
- data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-ctx-datakey.c +3 -2
- data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-ctx-decrypt.c +6 -3
- data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-ctx-encrypt.c +48 -58
- data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-ctx-rewrap-many-datakey.c +12 -0
- data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-ctx.c +5 -13
- data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-dll-private.h +19 -2
- data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-key-broker.c +9 -9
- data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-marking-private.h +3 -4
- data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-marking.c +285 -89
- data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-opts-private.h +0 -2
- data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-opts.c +0 -1
- data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-private.h +1 -1
- data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-util.c +4 -1
- data/ext/libmongocrypt/libmongocrypt/src/mongocrypt.c +47 -31
- data/ext/libmongocrypt/libmongocrypt/src/os_posix/os_dll.c +2 -0
- data/ext/libmongocrypt/libmongocrypt/src/os_posix/os_mutex.c +1 -1
- data/ext/libmongocrypt/libmongocrypt/src/os_win/os_dll.c +3 -1
- data/ext/libmongocrypt/libmongocrypt/src/os_win/os_mutex.c +1 -1
- data/ext/libmongocrypt/libmongocrypt/src/unicode/case-fold-map.c +1 -1
- data/ext/libmongocrypt/libmongocrypt/src/unicode/diacritic-fold-map.c +1 -1
- data/ext/libmongocrypt/libmongocrypt/src/unicode/fold.c +1 -1
- data/ext/libmongocrypt/libmongocrypt/test/crypt_shared-stub.cpp +0 -14
- data/ext/libmongocrypt/libmongocrypt/test/data/compact/success/encrypted-field-config-map.json +6 -1
- data/ext/libmongocrypt/libmongocrypt/test/data/explicit-decrypt/FLE2InsertUpdatePayloadV2-RangeV2.json +8 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/date-v2/encrypted-field-map.json +1 -1
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/date-v2/encrypted-payload.json +6 -4
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/date-v2/mongocryptd-reply.json +1 -1
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/decimal128-precision-v2/encrypted-field-map.json +1 -1
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/decimal128-precision-v2/encrypted-payload.json +6 -4
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/decimal128-precision-v2/mongocryptd-reply.json +2 -2
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/decimal128-v2/encrypted-field-map.json +1 -1
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/decimal128-v2/encrypted-payload.json +6 -4
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/decimal128-v2/mongocryptd-reply.json +1 -1
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/double-precision-v2/encrypted-payload.json +14 -6
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/double-v2/encrypted-field-map.json +1 -1
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/double-v2/encrypted-payload.json +6 -4
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/double-v2/mongocryptd-reply.json +1 -1
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/int32-v2/encrypted-field-map.json +1 -1
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/int32-v2/encrypted-payload.json +6 -4
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/int32-v2/mongocryptd-reply.json +1 -1
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/int64-v2/encrypted-field-map.json +1 -1
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/int64-v2/encrypted-payload.json +6 -4
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/int64-v2/mongocryptd-reply.json +1 -1
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range-explicit/double/encrypted-payload-v2.json +1 -1
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range-explicit/double-precision/encrypted-payload-v2.json +1 -1
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range-explicit/int32/encrypted-payload-v2.json +1 -1
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range-explicit/int32-openinterval/encrypted-payload-v2.json +1 -1
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/date-v2/encrypted-field-map.json +1 -1
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/date-v2/encrypted-payload.json +6 -4
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/date-v2/mongocryptd-reply.json +1 -1
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/decimal128-precision-v2/encrypted-field-map.json +1 -1
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/decimal128-precision-v2/encrypted-payload.json +6 -4
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/decimal128-precision-v2/mongocryptd-reply.json +1 -1
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/decimal128-v2/encrypted-field-map.json +1 -1
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/decimal128-v2/encrypted-payload.json +6 -4
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/decimal128-v2/mongocryptd-reply.json +1 -1
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/double-precision-v2/encrypted-payload.json +14 -6
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/double-v2/encrypted-field-map.json +1 -1
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/double-v2/encrypted-payload.json +6 -4
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/double-v2/mongocryptd-reply.json +1 -1
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/int32-v2/encrypted-field-map.json +1 -1
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/int32-v2/encrypted-payload.json +3 -3
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/int32-v2/mongocryptd-reply.json +1 -1
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/int64-v2/encrypted-field-map.json +1 -1
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/int64-v2/encrypted-payload.json +6 -4
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/int64-v2/mongocryptd-reply.json +1 -1
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range-explicit/double/encrypted-payload-v2.json +1 -1
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range-explicit/double-precision/encrypted-payload-v2.json +1 -1
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range-explicit/int32/encrypted-payload-v2.json +1 -1
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range-explicit/sparsity-2/encrypted-payload-v2.json +1 -1
- data/ext/libmongocrypt/libmongocrypt/test/data/tokens/mc.json +8 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/tokens/server.json +8 -0
- data/ext/libmongocrypt/libmongocrypt/test/example-state-machine.c +5 -5
- data/ext/libmongocrypt/libmongocrypt/test/test-dll.cpp +11 -5
- data/ext/libmongocrypt/libmongocrypt/test/test-gcp-auth.c +2 -2
- data/ext/libmongocrypt/libmongocrypt/test/test-mc-efc.c +9 -11
- data/ext/libmongocrypt/libmongocrypt/test/test-mc-fle2-encryption-placeholder.c +18 -29
- data/ext/libmongocrypt/libmongocrypt/test/test-mc-fle2-find-equality-payload-v2.c +1 -1
- data/ext/libmongocrypt/libmongocrypt/test/test-mc-fle2-find-range-payload-v2.c +2 -18
- data/ext/libmongocrypt/libmongocrypt/test/test-mc-fle2-find-text-payload.c +320 -0
- data/ext/libmongocrypt/libmongocrypt/test/test-mc-fle2-payload-iup-v2.c +2 -17
- data/ext/libmongocrypt/libmongocrypt/test/test-mc-fle2-payload-iup.c +1 -1
- data/ext/libmongocrypt/libmongocrypt/test/test-mc-fle2-rfds.c +8 -5
- data/ext/libmongocrypt/libmongocrypt/test/test-mc-range-edge-generation.c +6 -10
- data/ext/libmongocrypt/libmongocrypt/test/test-mc-range-encoding.c +29 -33
- data/ext/libmongocrypt/libmongocrypt/test/test-mc-range-mincover.c +12 -20
- data/ext/libmongocrypt/libmongocrypt/test/test-mc-rangeopts.c +5 -20
- data/ext/libmongocrypt/libmongocrypt/test/test-mc-reader.c +5 -5
- data/ext/libmongocrypt/libmongocrypt/test/test-mc-text-search-str-encode.c +147 -18
- data/ext/libmongocrypt/libmongocrypt/test/test-mc-tokens.c +35 -14
- data/ext/libmongocrypt/libmongocrypt/test/test-mc-writer.c +10 -10
- data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-assert-match-bson.c +3 -7
- data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-assert.h +36 -24
- data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-buffer.c +4 -4
- data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-cache.c +2 -2
- data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-ciphertext.c +13 -13
- data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-cleanup.c +49 -55
- data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-compact.c +64 -67
- data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-crypto-hooks.c +18 -18
- data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-crypto-std-hooks.c +4 -0
- data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-crypto.c +4 -3
- data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-csfle-lib.c +13 -3
- data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-ctx-decrypt.c +31 -13
- data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-ctx-encrypt.c +35 -52
- data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-ctx-rewrap-many-datakey.c +28 -1
- data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-ctx-setopt.c +50 -91
- data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-datakey.c +1 -1
- data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-dll.c +7 -4
- data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-endpoint.c +1 -1
- data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-kek.c +1 -1
- data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-key-cache.c +3 -5
- data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-kms-ctx.c +2 -2
- data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-local-kms.c +1 -1
- data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-log.c +2 -2
- data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-marking.c +527 -225
- data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-status.c +1 -1
- data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt.c +45 -56
- data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt.h +12 -3
- data/ext/libmongocrypt/libmongocrypt/test/test-named-kms-providers.c +11 -11
- data/ext/libmongocrypt/libmongocrypt/test/test-unicode-fold.c +6 -2
- data/ext/libmongocrypt/libmongocrypt/test/util/HELP.autogen +1 -1
- data/ext/libmongocrypt/libmongocrypt/test/util/csfle.c +1 -1
- data/ext/libmongocrypt/libmongocrypt/test/util/util.c +5 -5
- data/ext/libmongocrypt/libmongocrypt/test/util/util.h +7 -6
- data/lib/libmongocrypt_helper/version.rb +2 -2
- metadata +17 -13
- data/ext/libmongocrypt/libmongocrypt/bindings/python/libmongocrypt-version.txt +0 -1
- data/ext/libmongocrypt/libmongocrypt/bindings/python/strip_header.py +0 -50
- data/ext/libmongocrypt/libmongocrypt/bindings/python/update-sbom.sh +0 -14
- data/ext/libmongocrypt/libmongocrypt/test/data/cleanup/success/encrypted-payload.json +0 -29
- data/ext/libmongocrypt/libmongocrypt/test/data/compact/success/encrypted-payload.json +0 -29
- data/ext/libmongocrypt/libmongocrypt/test/data/explicit-decrypt/FLE2EqualityIndexedValueV2.json +0 -8
- data/ext/libmongocrypt/libmongocrypt/test/data/explicit-decrypt/FLE2RangeIndexedValueV2.json +0 -8
- /data/ext/libmongocrypt/libmongocrypt/bindings/python/{build-manylinux-wheel.sh → scripts/build-manylinux-wheel.sh} +0 -0
- /data/ext/libmongocrypt/libmongocrypt/test/data/explicit-decrypt/{FLE2InsertUpdatePayload-with-edges.json → FLE2InsertUpdatePayload-RangeV1.json} +0 -0
- /data/ext/libmongocrypt/libmongocrypt/test/data/explicit-decrypt/{FLE2InsertUpdatePayload-with-edges-V2.json → FLE2InsertUpdatePayloadV2-RangeV1.json} +0 -0
@@ -25,7 +25,7 @@
|
|
25
25
|
* A non-owning forward-only cursor api to read a buffer.
|
26
26
|
*
|
27
27
|
* Tracks length of buffer and current position of buffer. parser_name is
|
28
|
-
* typically
|
28
|
+
* typically __func__ to provide useful error messages automatically.
|
29
29
|
*
|
30
30
|
* All numbers are read as little endian.
|
31
31
|
*
|
@@ -37,7 +37,7 @@
|
|
37
37
|
* mongocrypt_status_t *status
|
38
38
|
*
|
39
39
|
* mc_reader_t reader;
|
40
|
-
* mc_reader_init_from_buffer (&reader, buf,
|
40
|
+
* mc_reader_init_from_buffer (&reader, buf, __func__);
|
41
41
|
*
|
42
42
|
* _mongocrypt_buffer_t in;
|
43
43
|
* if (!mc_reader_read_uuid_buffer (&reader, &in, status)) {
|
@@ -21,7 +21,8 @@
|
|
21
21
|
#define CHECK_AND_RETURN(x) \
|
22
22
|
if (!(x)) { \
|
23
23
|
return false; \
|
24
|
-
}
|
24
|
+
} else \
|
25
|
+
((void)0)
|
25
26
|
|
26
27
|
#define CHECK_REMAINING_BUFFER_AND_RET(read_size) \
|
27
28
|
if ((reader->pos + (read_size)) > reader->len) { \
|
@@ -31,7 +32,8 @@
|
|
31
32
|
reader->pos + (read_size), \
|
32
33
|
reader->len); \
|
33
34
|
return false; \
|
34
|
-
}
|
35
|
+
} else \
|
36
|
+
((void)0)
|
35
37
|
|
36
38
|
void mc_reader_init(mc_reader_t *reader, const uint8_t *ptr, uint64_t len, const char *parser_name) {
|
37
39
|
BSON_ASSERT_PARAM(reader);
|
@@ -34,9 +34,6 @@ mc_schema_broker_t *mc_schema_broker_new(void);
|
|
34
34
|
|
35
35
|
void mc_schema_broker_destroy(mc_schema_broker_t *sb);
|
36
36
|
|
37
|
-
// mc_schema_broker_use_rangev2 enables rangev2 behavior. TODO(MONGOCRYPT-711) remove once rangev1 code is removed.
|
38
|
-
void mc_schema_broker_use_rangev2(mc_schema_broker_t *sb);
|
39
|
-
|
40
37
|
// mc_schema_broker_request requests a schema for a collection. Ignores duplicates.
|
41
38
|
// Returns error if two requests have different databases (not-yet supported).
|
42
39
|
bool mc_schema_broker_request(mc_schema_broker_t *sb, const char *db, const char *coll, mongocrypt_status_t *status);
|
@@ -50,18 +50,12 @@ struct mc_schema_broker_t {
|
|
50
50
|
char *db; // Database shared by all schemas.
|
51
51
|
mc_schema_entry_t *ll;
|
52
52
|
size_t ll_len;
|
53
|
-
bool use_range_v2;
|
54
53
|
};
|
55
54
|
|
56
55
|
mc_schema_broker_t *mc_schema_broker_new(void) {
|
57
56
|
return bson_malloc0(sizeof(mc_schema_broker_t));
|
58
57
|
}
|
59
58
|
|
60
|
-
void mc_schema_broker_use_rangev2(mc_schema_broker_t *sb) {
|
61
|
-
BSON_ASSERT_PARAM(sb);
|
62
|
-
sb->use_range_v2 = true;
|
63
|
-
}
|
64
|
-
|
65
59
|
bool mc_schema_broker_request(mc_schema_broker_t *sb, const char *db, const char *coll, mongocrypt_status_t *status) {
|
66
60
|
BSON_ASSERT_PARAM(sb);
|
67
61
|
BSON_ASSERT_PARAM(db);
|
@@ -208,7 +202,6 @@ static inline bool mc_schema_entry_satisfy_from_collinfo(mc_schema_entry_t *se,
|
|
208
202
|
const bson_t *collinfo,
|
209
203
|
const char *coll,
|
210
204
|
const char *db,
|
211
|
-
bool use_range_v2,
|
212
205
|
mongocrypt_status_t *status) {
|
213
206
|
BSON_ASSERT_PARAM(se);
|
214
207
|
BSON_ASSERT_PARAM(collinfo);
|
@@ -255,7 +248,7 @@ static inline bool mc_schema_entry_satisfy_from_collinfo(mc_schema_entry_t *se,
|
|
255
248
|
return false;
|
256
249
|
}
|
257
250
|
|
258
|
-
if (!mc_EncryptedFieldConfig_parse(&se->encryptedFields.efc, &se->encryptedFields.bson, status
|
251
|
+
if (!mc_EncryptedFieldConfig_parse(&se->encryptedFields.efc, &se->encryptedFields.bson, status)) {
|
259
252
|
return false;
|
260
253
|
}
|
261
254
|
se->encryptedFields.set = true;
|
@@ -351,7 +344,7 @@ bool mc_schema_broker_satisfy_from_collinfo(mc_schema_broker_t *sb,
|
|
351
344
|
}
|
352
345
|
}
|
353
346
|
|
354
|
-
if (!mc_schema_entry_satisfy_from_collinfo(se, collinfo, coll, sb->db,
|
347
|
+
if (!mc_schema_entry_satisfy_from_collinfo(se, collinfo, coll, sb->db, status)) {
|
355
348
|
return false;
|
356
349
|
}
|
357
350
|
|
@@ -426,10 +419,7 @@ bool mc_schema_broker_satisfy_from_encryptedFieldsMap(mc_schema_broker_t *sb,
|
|
426
419
|
goto loop_fail;
|
427
420
|
}
|
428
421
|
|
429
|
-
if (!mc_EncryptedFieldConfig_parse(&it->encryptedFields.efc,
|
430
|
-
&it->encryptedFields.bson,
|
431
|
-
status,
|
432
|
-
sb->use_range_v2)) {
|
422
|
+
if (!mc_EncryptedFieldConfig_parse(&it->encryptedFields.efc, &it->encryptedFields.bson, status)) {
|
433
423
|
goto loop_fail;
|
434
424
|
}
|
435
425
|
|
@@ -473,7 +463,7 @@ bool mc_schema_broker_satisfy_from_cache(mc_schema_broker_t *sb,
|
|
473
463
|
goto loop_skip;
|
474
464
|
}
|
475
465
|
|
476
|
-
if (!mc_schema_entry_satisfy_from_collinfo(it, collinfo, sb->db, it->coll,
|
466
|
+
if (!mc_schema_entry_satisfy_from_collinfo(it, collinfo, sb->db, it->coll, status)) {
|
477
467
|
goto loop_fail;
|
478
468
|
}
|
479
469
|
|
@@ -166,8 +166,8 @@ static void mc_substring_set_node_destroy(mc_substring_set_node_t *node) {
|
|
166
166
|
}
|
167
167
|
|
168
168
|
// FNV-1a hash function
|
169
|
-
const uint32_t FNV1APRIME = 16777619;
|
170
|
-
const uint32_t FNV1ABASIS = 2166136261;
|
169
|
+
static const uint32_t FNV1APRIME = 16777619;
|
170
|
+
static const uint32_t FNV1ABASIS = 2166136261;
|
171
171
|
|
172
172
|
static uint32_t fnv1a(const uint8_t *data, uint32_t len) {
|
173
173
|
BSON_ASSERT_PARAM(data);
|
@@ -301,4 +301,4 @@ bool mc_substring_set_iter_next(mc_substring_set_iter_t *it, const char **str, u
|
|
301
301
|
}
|
302
302
|
it->cur_node = (void *)cur->next;
|
303
303
|
return true;
|
304
|
-
}
|
304
|
+
}
|
@@ -42,4 +42,11 @@ mc_str_encode_sets_t *mc_text_search_str_encode(const mc_FLE2TextSearchInsertSpe
|
|
42
42
|
|
43
43
|
void mc_str_encode_sets_destroy(mc_str_encode_sets_t *sets);
|
44
44
|
|
45
|
-
|
45
|
+
// Applies case/diacritic folding to the string value in spec (if applicable), and returns
|
46
|
+
// the resulting string as a BSON string element in *out. Returns false and an error if the string
|
47
|
+
// is not valid UTF-8 or is unsuitable per the query parameters in the spec.
|
48
|
+
bool mc_text_search_str_query(const mc_FLE2TextSearchInsertSpec_t *spec,
|
49
|
+
_mongocrypt_buffer_t *out,
|
50
|
+
mongocrypt_status_t *status);
|
51
|
+
|
52
|
+
#endif /* MONGOCRYPT_TEXT_SEARCH_STR_ENCODE_PRIVATE_H */
|
@@ -14,9 +14,11 @@
|
|
14
14
|
* limitations under the License.
|
15
15
|
*/
|
16
16
|
|
17
|
+
#include "mc-fle2-encryption-placeholder-private.h"
|
17
18
|
#include "mc-str-encode-string-sets-private.h"
|
18
19
|
#include "mc-text-search-str-encode-private.h"
|
19
20
|
#include "mongocrypt-buffer-private.h"
|
21
|
+
#include "mongocrypt-crypto-private.h"
|
20
22
|
#include "mongocrypt.h"
|
21
23
|
#include "unicode/fold.h"
|
22
24
|
#include <bson/bson.h>
|
@@ -181,7 +183,7 @@ mc_str_encode_sets_t *mc_text_search_str_encode(const mc_FLE2TextSearchInsertSpe
|
|
181
183
|
mongocrypt_status_t *status) {
|
182
184
|
BSON_ASSERT_PARAM(spec);
|
183
185
|
if (spec->len > MAX_ENCODE_BYTE_LEN) {
|
184
|
-
CLIENT_ERR("StrEncode: String passed in was too long: String was %
|
186
|
+
CLIENT_ERR("StrEncode: String passed in was too long: String was %" PRIu32 " bytes, but max is %d bytes",
|
185
187
|
spec->len,
|
186
188
|
MAX_ENCODE_BYTE_LEN);
|
187
189
|
return NULL;
|
@@ -245,4 +247,78 @@ void mc_str_encode_sets_destroy(mc_str_encode_sets_t *sets) {
|
|
245
247
|
mc_affix_set_destroy(sets->prefix_set);
|
246
248
|
mc_substring_set_destroy(sets->substring_set);
|
247
249
|
bson_free(sets);
|
248
|
-
}
|
250
|
+
}
|
251
|
+
|
252
|
+
bool mc_text_search_str_query(const mc_FLE2TextSearchInsertSpec_t *spec,
|
253
|
+
_mongocrypt_buffer_t *out,
|
254
|
+
mongocrypt_status_t *status) {
|
255
|
+
BSON_ASSERT_PARAM(spec);
|
256
|
+
BSON_ASSERT_PARAM(out);
|
257
|
+
|
258
|
+
if (spec->len > MAX_ENCODE_BYTE_LEN) {
|
259
|
+
CLIENT_ERR("StrQuery: String passed in was too long: String was %" PRIu32 " bytes, but max is %d bytes",
|
260
|
+
spec->len,
|
261
|
+
MAX_ENCODE_BYTE_LEN);
|
262
|
+
return false;
|
263
|
+
}
|
264
|
+
|
265
|
+
_mongocrypt_buffer_init(out);
|
266
|
+
if (!bson_utf8_validate(spec->v, spec->len, false /* allow_null */)) {
|
267
|
+
CLIENT_ERR("StrQuery: String passed in was not valid UTF-8");
|
268
|
+
return false;
|
269
|
+
}
|
270
|
+
|
271
|
+
uint32_t folded_codepoint_len = 0;
|
272
|
+
|
273
|
+
if (spec->casef || spec->diacf) {
|
274
|
+
char *folded_str;
|
275
|
+
size_t folded_str_bytes_len;
|
276
|
+
if (!unicode_fold(spec->v,
|
277
|
+
spec->len,
|
278
|
+
(spec->casef * kUnicodeFoldToLower) | (spec->diacf * kUnicodeFoldRemoveDiacritics),
|
279
|
+
&folded_str,
|
280
|
+
&folded_str_bytes_len,
|
281
|
+
status)) {
|
282
|
+
return false;
|
283
|
+
}
|
284
|
+
_mongocrypt_buffer_copy_from_string_as_bson_value(out, folded_str, (int)folded_str_bytes_len);
|
285
|
+
folded_codepoint_len = mc_get_utf8_codepoint_length(folded_str, (uint32_t)folded_str_bytes_len);
|
286
|
+
bson_free(folded_str);
|
287
|
+
} else {
|
288
|
+
_mongocrypt_buffer_copy_from_string_as_bson_value(out, spec->v, (int)spec->len);
|
289
|
+
folded_codepoint_len = mc_get_utf8_codepoint_length(spec->v, spec->len);
|
290
|
+
}
|
291
|
+
|
292
|
+
if (spec->substr.set || spec->suffix.set || spec->prefix.set) {
|
293
|
+
uint32_t min = 0, max = 0;
|
294
|
+
if (spec->substr.set) {
|
295
|
+
min = spec->substr.value.lb;
|
296
|
+
max = spec->substr.value.ub;
|
297
|
+
} else if (spec->suffix.set) {
|
298
|
+
min = spec->suffix.value.lb;
|
299
|
+
max = spec->suffix.value.ub;
|
300
|
+
} else {
|
301
|
+
min = spec->prefix.value.lb;
|
302
|
+
max = spec->prefix.value.ub;
|
303
|
+
}
|
304
|
+
if (folded_codepoint_len == 0) {
|
305
|
+
CLIENT_ERR("StrQuery: string value cannot be empty for substring, suffix, or prefix queries");
|
306
|
+
return false;
|
307
|
+
}
|
308
|
+
if (folded_codepoint_len > max) {
|
309
|
+
CLIENT_ERR("StrQuery: string value was longer than the maximum query length "
|
310
|
+
"for this field after folding -- folded codepoint len: %u, max query len: %u",
|
311
|
+
folded_codepoint_len,
|
312
|
+
max);
|
313
|
+
return false;
|
314
|
+
}
|
315
|
+
if (folded_codepoint_len < min) {
|
316
|
+
CLIENT_ERR("StrQuery: string value was shorter than the minimum query length "
|
317
|
+
"for this field after folding -- folded codepoint len: %u, min query len: %u",
|
318
|
+
folded_codepoint_len,
|
319
|
+
min);
|
320
|
+
return false;
|
321
|
+
}
|
322
|
+
}
|
323
|
+
return true;
|
324
|
+
}
|
@@ -197,38 +197,56 @@ DECL_TOKEN_TYPE(mc_ServerTextSuffixToken,
|
|
197
197
|
DECL_TOKEN_TYPE(mc_ServerTextPrefixToken,
|
198
198
|
const mc_ServerTokenDerivationLevel1Token_t *serverTokenDerivationLevel1Token);
|
199
199
|
|
200
|
-
DECL_TOKEN_TYPE(
|
200
|
+
DECL_TOKEN_TYPE(mc_EDCTextExactDerivedFromDataToken,
|
201
201
|
const mc_EDCTextExactToken_t *edcTextExactToken,
|
202
|
-
const _mongocrypt_buffer_t *v
|
202
|
+
const _mongocrypt_buffer_t *v);
|
203
|
+
DECL_TOKEN_TYPE(mc_EDCTextSubstringDerivedFromDataToken,
|
204
|
+
const mc_EDCTextSubstringToken_t *edcTextSubstringToken,
|
205
|
+
const _mongocrypt_buffer_t *v);
|
206
|
+
DECL_TOKEN_TYPE(mc_EDCTextSuffixDerivedFromDataToken,
|
207
|
+
const mc_EDCTextSuffixToken_t *edcTextSuffixToken,
|
208
|
+
const _mongocrypt_buffer_t *v);
|
209
|
+
DECL_TOKEN_TYPE(mc_EDCTextPrefixDerivedFromDataToken,
|
210
|
+
const mc_EDCTextPrefixToken_t *edcTextPrefixToken,
|
211
|
+
const _mongocrypt_buffer_t *v);
|
212
|
+
|
213
|
+
DECL_TOKEN_TYPE(mc_EDCTextExactDerivedFromDataTokenAndContentionFactorToken,
|
214
|
+
const mc_EDCTextExactDerivedFromDataToken_t *edcTextExactToken,
|
203
215
|
uint64_t u);
|
204
216
|
DECL_TOKEN_TYPE(mc_EDCTextSubstringDerivedFromDataTokenAndContentionFactorToken,
|
205
|
-
const
|
206
|
-
const _mongocrypt_buffer_t *v,
|
217
|
+
const mc_EDCTextSubstringDerivedFromDataToken_t *edcTextSubstringToken,
|
207
218
|
uint64_t u);
|
208
219
|
DECL_TOKEN_TYPE(mc_EDCTextSuffixDerivedFromDataTokenAndContentionFactorToken,
|
209
|
-
const
|
210
|
-
const _mongocrypt_buffer_t *v,
|
220
|
+
const mc_EDCTextSuffixDerivedFromDataToken_t *edcTextSuffixToken,
|
211
221
|
uint64_t u);
|
212
222
|
DECL_TOKEN_TYPE(mc_EDCTextPrefixDerivedFromDataTokenAndContentionFactorToken,
|
213
|
-
const
|
214
|
-
const _mongocrypt_buffer_t *v,
|
223
|
+
const mc_EDCTextPrefixDerivedFromDataToken_t *edcTextPrefixToken,
|
215
224
|
uint64_t u);
|
216
225
|
|
217
|
-
DECL_TOKEN_TYPE(
|
226
|
+
DECL_TOKEN_TYPE(mc_ESCTextExactDerivedFromDataToken,
|
218
227
|
const mc_ESCTextExactToken_t *escTextExactToken,
|
219
|
-
const _mongocrypt_buffer_t *v
|
228
|
+
const _mongocrypt_buffer_t *v);
|
229
|
+
DECL_TOKEN_TYPE(mc_ESCTextSubstringDerivedFromDataToken,
|
230
|
+
const mc_ESCTextSubstringToken_t *escTextSubstringToken,
|
231
|
+
const _mongocrypt_buffer_t *v);
|
232
|
+
DECL_TOKEN_TYPE(mc_ESCTextSuffixDerivedFromDataToken,
|
233
|
+
const mc_ESCTextSuffixToken_t *escTextSuffixToken,
|
234
|
+
const _mongocrypt_buffer_t *v);
|
235
|
+
DECL_TOKEN_TYPE(mc_ESCTextPrefixDerivedFromDataToken,
|
236
|
+
const mc_ESCTextPrefixToken_t *escTextPrefixToken,
|
237
|
+
const _mongocrypt_buffer_t *v);
|
238
|
+
|
239
|
+
DECL_TOKEN_TYPE(mc_ESCTextExactDerivedFromDataTokenAndContentionFactorToken,
|
240
|
+
const mc_ESCTextExactDerivedFromDataToken_t *escTextExactToken,
|
220
241
|
uint64_t u);
|
221
242
|
DECL_TOKEN_TYPE(mc_ESCTextSubstringDerivedFromDataTokenAndContentionFactorToken,
|
222
|
-
const
|
223
|
-
const _mongocrypt_buffer_t *v,
|
243
|
+
const mc_ESCTextSubstringDerivedFromDataToken_t *escTextSubstringToken,
|
224
244
|
uint64_t u);
|
225
245
|
DECL_TOKEN_TYPE(mc_ESCTextSuffixDerivedFromDataTokenAndContentionFactorToken,
|
226
|
-
const
|
227
|
-
const _mongocrypt_buffer_t *v,
|
246
|
+
const mc_ESCTextSuffixDerivedFromDataToken_t *escTextSuffixToken,
|
228
247
|
uint64_t u);
|
229
248
|
DECL_TOKEN_TYPE(mc_ESCTextPrefixDerivedFromDataTokenAndContentionFactorToken,
|
230
|
-
const
|
231
|
-
const _mongocrypt_buffer_t *v,
|
249
|
+
const mc_ESCTextPrefixDerivedFromDataToken_t *escTextPrefixToken,
|
232
250
|
uint64_t u);
|
233
251
|
|
234
252
|
DECL_TOKEN_TYPE(mc_ServerTextExactDerivedFromDataToken,
|
@@ -168,7 +168,7 @@ IMPL_TOKEN_NEW_CONST(mc_ServerZerosEncryptionToken, mc_ServerDerivedFromDataToke
|
|
168
168
|
|
169
169
|
// d = 17 bytes of 0, AnchorPaddingTokenRoot = HMAC(ESCToken, d)
|
170
170
|
#define ANCHOR_PADDING_TOKEN_D_LENGTH 17
|
171
|
-
const uint8_t mc_AnchorPaddingTokenDValue[ANCHOR_PADDING_TOKEN_D_LENGTH] =
|
171
|
+
static const uint8_t mc_AnchorPaddingTokenDValue[ANCHOR_PADDING_TOKEN_D_LENGTH] =
|
172
172
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
|
173
173
|
|
174
174
|
DEF_TOKEN_TYPE(mc_AnchorPaddingTokenRoot, const mc_ESCToken_t *ESCToken) {
|
@@ -233,97 +233,89 @@ IMPL_TOKEN_NEW_CONST(mc_ServerTextPrefixToken,
|
|
233
233
|
mc_ServerTokenDerivationLevel1Token_get(serverTokenDerivationLevel1Token),
|
234
234
|
TEXT_PREFIX_ID)
|
235
235
|
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
BSON_CONCAT(Name, _destroy)(t); \
|
253
|
-
_mongocrypt_buffer_cleanup(&tmp); \
|
254
|
-
_mongocrypt_buffer_cleanup(&uint_arg); \
|
255
|
-
return NULL; \
|
256
|
-
} \
|
257
|
-
_mongocrypt_buffer_cleanup(&tmp); \
|
258
|
-
_mongocrypt_buffer_cleanup(&uint_arg); \
|
259
|
-
return t; \
|
260
|
-
}
|
236
|
+
DEF_TOKEN_TYPE(mc_EDCTextExactDerivedFromDataToken,
|
237
|
+
const mc_EDCTextExactToken_t *edcTextExactToken,
|
238
|
+
const _mongocrypt_buffer_t *v)
|
239
|
+
IMPL_TOKEN_NEW(mc_EDCTextExactDerivedFromDataToken, mc_EDCTextExactToken_get(edcTextExactToken), v)
|
240
|
+
DEF_TOKEN_TYPE(mc_EDCTextSubstringDerivedFromDataToken,
|
241
|
+
const mc_EDCTextSubstringToken_t *edcTextSubstringToken,
|
242
|
+
const _mongocrypt_buffer_t *v)
|
243
|
+
IMPL_TOKEN_NEW(mc_EDCTextSubstringDerivedFromDataToken, mc_EDCTextSubstringToken_get(edcTextSubstringToken), v)
|
244
|
+
DEF_TOKEN_TYPE(mc_EDCTextSuffixDerivedFromDataToken,
|
245
|
+
const mc_EDCTextSuffixToken_t *edcTextSuffixToken,
|
246
|
+
const _mongocrypt_buffer_t *v)
|
247
|
+
IMPL_TOKEN_NEW(mc_EDCTextSuffixDerivedFromDataToken, mc_EDCTextSuffixToken_get(edcTextSuffixToken), v)
|
248
|
+
DEF_TOKEN_TYPE(mc_EDCTextPrefixDerivedFromDataToken,
|
249
|
+
const mc_EDCTextPrefixToken_t *edcTextPrefixToken,
|
250
|
+
const _mongocrypt_buffer_t *v)
|
251
|
+
IMPL_TOKEN_NEW(mc_EDCTextPrefixDerivedFromDataToken, mc_EDCTextPrefixToken_get(edcTextPrefixToken), v)
|
261
252
|
|
262
253
|
DEF_TOKEN_TYPE(mc_EDCTextExactDerivedFromDataTokenAndContentionFactorToken,
|
263
|
-
const
|
264
|
-
const _mongocrypt_buffer_t *v,
|
254
|
+
const mc_EDCTextExactDerivedFromDataToken_t *edcTextExactToken,
|
265
255
|
uint64_t u)
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
u)
|
256
|
+
IMPL_TOKEN_NEW_CONST(mc_EDCTextExactDerivedFromDataTokenAndContentionFactorToken,
|
257
|
+
mc_EDCTextExactDerivedFromDataToken_get(edcTextExactToken),
|
258
|
+
u)
|
270
259
|
DEF_TOKEN_TYPE(mc_EDCTextSubstringDerivedFromDataTokenAndContentionFactorToken,
|
271
|
-
const
|
272
|
-
const _mongocrypt_buffer_t *v,
|
260
|
+
const mc_EDCTextSubstringDerivedFromDataToken_t *edcTextSubstringToken,
|
273
261
|
uint64_t u)
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
u)
|
262
|
+
IMPL_TOKEN_NEW_CONST(mc_EDCTextSubstringDerivedFromDataTokenAndContentionFactorToken,
|
263
|
+
mc_EDCTextSubstringDerivedFromDataToken_get(edcTextSubstringToken),
|
264
|
+
u)
|
278
265
|
DEF_TOKEN_TYPE(mc_EDCTextSuffixDerivedFromDataTokenAndContentionFactorToken,
|
279
|
-
const
|
280
|
-
const _mongocrypt_buffer_t *v,
|
266
|
+
const mc_EDCTextSuffixDerivedFromDataToken_t *edcTextSuffixToken,
|
281
267
|
uint64_t u)
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
u)
|
268
|
+
IMPL_TOKEN_NEW_CONST(mc_EDCTextSuffixDerivedFromDataTokenAndContentionFactorToken,
|
269
|
+
mc_EDCTextSuffixDerivedFromDataToken_get(edcTextSuffixToken),
|
270
|
+
u)
|
286
271
|
DEF_TOKEN_TYPE(mc_EDCTextPrefixDerivedFromDataTokenAndContentionFactorToken,
|
287
|
-
const
|
288
|
-
const _mongocrypt_buffer_t *v,
|
272
|
+
const mc_EDCTextPrefixDerivedFromDataToken_t *edcTextPrefixToken,
|
289
273
|
uint64_t u)
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
u)
|
274
|
+
IMPL_TOKEN_NEW_CONST(mc_EDCTextPrefixDerivedFromDataTokenAndContentionFactorToken,
|
275
|
+
mc_EDCTextPrefixDerivedFromDataToken_get(edcTextPrefixToken),
|
276
|
+
u)
|
294
277
|
|
295
|
-
DEF_TOKEN_TYPE(
|
278
|
+
DEF_TOKEN_TYPE(mc_ESCTextExactDerivedFromDataToken,
|
296
279
|
const mc_ESCTextExactToken_t *escTextExactToken,
|
297
|
-
const _mongocrypt_buffer_t *v
|
280
|
+
const _mongocrypt_buffer_t *v)
|
281
|
+
IMPL_TOKEN_NEW(mc_ESCTextExactDerivedFromDataToken, mc_ESCTextExactToken_get(escTextExactToken), v)
|
282
|
+
DEF_TOKEN_TYPE(mc_ESCTextSubstringDerivedFromDataToken,
|
283
|
+
const mc_ESCTextSubstringToken_t *escTextSubstringToken,
|
284
|
+
const _mongocrypt_buffer_t *v)
|
285
|
+
IMPL_TOKEN_NEW(mc_ESCTextSubstringDerivedFromDataToken, mc_ESCTextSubstringToken_get(escTextSubstringToken), v)
|
286
|
+
DEF_TOKEN_TYPE(mc_ESCTextSuffixDerivedFromDataToken,
|
287
|
+
const mc_ESCTextSuffixToken_t *escTextSuffixToken,
|
288
|
+
const _mongocrypt_buffer_t *v)
|
289
|
+
IMPL_TOKEN_NEW(mc_ESCTextSuffixDerivedFromDataToken, mc_ESCTextSuffixToken_get(escTextSuffixToken), v)
|
290
|
+
DEF_TOKEN_TYPE(mc_ESCTextPrefixDerivedFromDataToken,
|
291
|
+
const mc_ESCTextPrefixToken_t *escTextPrefixToken,
|
292
|
+
const _mongocrypt_buffer_t *v)
|
293
|
+
IMPL_TOKEN_NEW(mc_ESCTextPrefixDerivedFromDataToken, mc_ESCTextPrefixToken_get(escTextPrefixToken), v)
|
294
|
+
|
295
|
+
DEF_TOKEN_TYPE(mc_ESCTextExactDerivedFromDataTokenAndContentionFactorToken,
|
296
|
+
const mc_ESCTextExactDerivedFromDataToken_t *escTextExactToken,
|
298
297
|
uint64_t u)
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
u)
|
298
|
+
IMPL_TOKEN_NEW_CONST(mc_ESCTextExactDerivedFromDataTokenAndContentionFactorToken,
|
299
|
+
mc_ESCTextExactDerivedFromDataToken_get(escTextExactToken),
|
300
|
+
u)
|
303
301
|
DEF_TOKEN_TYPE(mc_ESCTextSubstringDerivedFromDataTokenAndContentionFactorToken,
|
304
|
-
const
|
305
|
-
const _mongocrypt_buffer_t *v,
|
302
|
+
const mc_ESCTextSubstringDerivedFromDataToken_t *escTextSubstringToken,
|
306
303
|
uint64_t u)
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
u)
|
304
|
+
IMPL_TOKEN_NEW_CONST(mc_ESCTextSubstringDerivedFromDataTokenAndContentionFactorToken,
|
305
|
+
mc_ESCTextSubstringDerivedFromDataToken_get(escTextSubstringToken),
|
306
|
+
u)
|
311
307
|
DEF_TOKEN_TYPE(mc_ESCTextSuffixDerivedFromDataTokenAndContentionFactorToken,
|
312
|
-
const
|
313
|
-
const _mongocrypt_buffer_t *v,
|
308
|
+
const mc_ESCTextSuffixDerivedFromDataToken_t *escTextSuffixToken,
|
314
309
|
uint64_t u)
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
u)
|
310
|
+
IMPL_TOKEN_NEW_CONST(mc_ESCTextSuffixDerivedFromDataTokenAndContentionFactorToken,
|
311
|
+
mc_ESCTextSuffixDerivedFromDataToken_get(escTextSuffixToken),
|
312
|
+
u)
|
319
313
|
DEF_TOKEN_TYPE(mc_ESCTextPrefixDerivedFromDataTokenAndContentionFactorToken,
|
320
|
-
const
|
321
|
-
const _mongocrypt_buffer_t *v,
|
314
|
+
const mc_ESCTextPrefixDerivedFromDataToken_t *escTextPrefixToken,
|
322
315
|
uint64_t u)
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
u)
|
316
|
+
IMPL_TOKEN_NEW_CONST(mc_ESCTextPrefixDerivedFromDataTokenAndContentionFactorToken,
|
317
|
+
mc_ESCTextPrefixDerivedFromDataToken_get(escTextPrefixToken),
|
318
|
+
u)
|
327
319
|
|
328
320
|
DEF_TOKEN_TYPE(mc_ServerTextExactDerivedFromDataToken,
|
329
321
|
const mc_ServerTextExactToken_t *serverTextExactToken,
|
@@ -25,7 +25,7 @@
|
|
25
25
|
* A non-owning forward-only cursor api to write to a buffer.
|
26
26
|
*
|
27
27
|
* Tracks length of buffer and current position of buffer. parser_name is
|
28
|
-
* typically
|
28
|
+
* typically __func__ to provide useful error messages automatically.
|
29
29
|
*
|
30
30
|
* All numbers are written as little endian.
|
31
31
|
*/
|
@@ -21,7 +21,8 @@
|
|
21
21
|
#define CHECK_AND_RETURN(x) \
|
22
22
|
if (!(x)) { \
|
23
23
|
return false; \
|
24
|
-
}
|
24
|
+
} else \
|
25
|
+
((void)0)
|
25
26
|
|
26
27
|
#define CHECK_REMAINING_BUFFER_AND_RET(write_size) \
|
27
28
|
if ((write_size) > writer->len - writer->pos) { \
|
@@ -30,7 +31,8 @@
|
|
30
31
|
(writer->len - writer->pos), \
|
31
32
|
(uint64_t)(write_size)); \
|
32
33
|
return false; \
|
33
|
-
}
|
34
|
+
} else \
|
35
|
+
((void)0)
|
34
36
|
|
35
37
|
void mc_writer_init(mc_writer_t *writer, uint8_t *ptr, uint64_t len, const char *parser_name) {
|
36
38
|
BSON_ASSERT_PARAM(writer);
|
@@ -9,6 +9,12 @@
|
|
9
9
|
#include <stdlib.h>
|
10
10
|
#include <string.h>
|
11
11
|
|
12
|
+
// Deliberately using old-style casts for C and C++ compatibility.
|
13
|
+
#if defined(__cplusplus) && defined(__clang__)
|
14
|
+
_Pragma("clang diagnostic push");
|
15
|
+
_Pragma("clang diagnostic ignored \"-Wold-style-cast\"");
|
16
|
+
#endif
|
17
|
+
|
12
18
|
MLIB_C_LINKAGE_BEGIN
|
13
19
|
|
14
20
|
/**
|
@@ -496,7 +502,7 @@ static mlib_constexpr_fn mlib_int128_divmod_result mlib_int128_divmod(mlib_int12
|
|
496
502
|
u[2] |= (uint32_t)(numer.r.lo >> (64 - d));
|
497
503
|
u[4] |= (uint32_t)(numer.r.hi >> (64 - d));
|
498
504
|
v[2] |= (uint32_t)(denom.r.lo >> (64 - d));
|
499
|
-
}
|
505
|
+
}
|
500
506
|
|
501
507
|
uint32_t q[2] = {0};
|
502
508
|
if (has_three) {
|
@@ -644,4 +650,9 @@ static mlib_constexpr_fn mlib_int128_charbuf mlib_int128_format(mlib_int128 i) {
|
|
644
650
|
|
645
651
|
MLIB_C_LINKAGE_END
|
646
652
|
|
653
|
+
// Deliberately using old-style casts for C and C++ compatibility.
|
654
|
+
#if defined(__cplusplus) && defined(__clang__)
|
655
|
+
_Pragma("clang diagnostic pop");
|
656
|
+
#endif
|
657
|
+
|
647
658
|
#endif // MLIB_INT128_H_INCLUDED
|
@@ -10,6 +10,11 @@
|
|
10
10
|
#include <thread>
|
11
11
|
#include <vector>
|
12
12
|
|
13
|
+
// Deliberately using old-style casts for C and C++ compatibility.
|
14
|
+
#if defined(__clang__)
|
15
|
+
_Pragma("clang diagnostic ignored \"-Wold-style-cast\"");
|
16
|
+
#endif
|
17
|
+
|
13
18
|
#if (defined(__GNUC__) && __GNUC__ < 7 && !defined(__clang__)) || (defined(_MSC_VER) && _MSC_VER < 1920)
|
14
19
|
// Old GCC and old MSVC have partially-broken constexpr that prevents us from
|
15
20
|
// properly using static_assert with from_string()
|
@@ -60,7 +60,7 @@ static inline char mpath_preferred_sep(mpath_format f) {
|
|
60
60
|
* @return mstr A new string which must be freed with mstr_free()
|
61
61
|
*/
|
62
62
|
static inline mstr mpath_current_path(void) {
|
63
|
-
#if _WIN32
|
63
|
+
#if defined(_WIN32)
|
64
64
|
while (1) {
|
65
65
|
DWORD len = GetCurrentDirectoryW(0, NULL);
|
66
66
|
wchar_t *wstr = calloc(sizeof(wchar_t), len);
|
@@ -76,12 +76,12 @@ static inline mstr mpath_current_path(void) {
|
|
76
76
|
}
|
77
77
|
#else
|
78
78
|
mstr_mut mut = mstr_new(8096);
|
79
|
-
char *p = getcwd(mut.data, mut.len);
|
79
|
+
char *p = getcwd(mut.raw.data, mut.raw.len);
|
80
80
|
if (p == NULL) {
|
81
81
|
mstr_free(mut.mstr);
|
82
82
|
return MSTR_NULL;
|
83
83
|
}
|
84
|
-
mstr ret = mstr_copy_cstr(mut.data);
|
84
|
+
mstr ret = mstr_copy_cstr(mut.raw.data);
|
85
85
|
mstr_free(mut.mstr);
|
86
86
|
return ret;
|
87
87
|
#endif
|
@@ -167,7 +167,7 @@ static inline mstr mpath_join(mstr_view base, mstr_view suffix, mpath_format f)
|
|
167
167
|
// We must insert a path separator between the two strings
|
168
168
|
assert(base.len <= SIZE_MAX - suffix.len - 1u);
|
169
169
|
mstr_mut r = mstr_new(base.len + suffix.len + 1);
|
170
|
-
char *p = r.data;
|
170
|
+
char *p = r.raw.data;
|
171
171
|
memcpy(p, base.data, base.len);
|
172
172
|
p += base.len;
|
173
173
|
*p++ = mpath_preferred_sep(f);
|
@@ -255,7 +255,7 @@ static inline mstr_view mpath_relative_path(mstr_view path, mpath_format f) {
|
|
255
255
|
static inline mstr mpath_to_format(mpath_format from, mstr_view path, mpath_format to) {
|
256
256
|
mstr_mut ret = mstr_new(path.len);
|
257
257
|
const char *p = path.data;
|
258
|
-
char *out = ret.data;
|
258
|
+
char *out = ret.raw.data;
|
259
259
|
const char *stop = path.data + path.len;
|
260
260
|
for (; p != stop; ++p, ++out) {
|
261
261
|
if (mpath_is_sep(*p, from)) {
|