libmongocrypt-helper 1.12.0.0.1001 → 1.13.2.0.1001
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/ext/libmongocrypt/libmongocrypt/CHANGELOG.md +19 -0
- data/ext/libmongocrypt/libmongocrypt/CMakeLists.txt +10 -0
- data/ext/libmongocrypt/libmongocrypt/CODEOWNERS +1 -4
- data/ext/libmongocrypt/libmongocrypt/CONTRIBUTING.md +14 -0
- data/ext/libmongocrypt/libmongocrypt/Earthfile +49 -50
- data/ext/libmongocrypt/libmongocrypt/README.md +8 -17
- data/ext/libmongocrypt/libmongocrypt/bindings/python/CHANGELOG.rst +6 -0
- data/ext/libmongocrypt/libmongocrypt/bindings/python/README.rst +1 -1
- data/ext/libmongocrypt/libmongocrypt/bindings/python/libmongocrypt-version.txt +1 -1
- data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/binding.py +39 -1
- data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/mongocrypt.py +32 -0
- data/ext/libmongocrypt/libmongocrypt/bindings/python/pymongocrypt/version.py +1 -1
- data/ext/libmongocrypt/libmongocrypt/bindings/python/release.sh +1 -1
- data/ext/libmongocrypt/libmongocrypt/bindings/python/sbom.json +8 -8
- data/ext/libmongocrypt/libmongocrypt/bindings/python/test/data/compact/success/encrypted-field-config-map.json +0 -1
- data/ext/libmongocrypt/libmongocrypt/bindings/python/test/data/encrypted-field-config-map.json +0 -2
- data/ext/libmongocrypt/libmongocrypt/bindings/python/test/test_mongocrypt.py +11 -11
- data/ext/libmongocrypt/libmongocrypt/cmake/FetchMongoC.cmake +4 -2
- data/ext/libmongocrypt/libmongocrypt/cmake/ImportBSON.cmake +3 -5
- data/ext/libmongocrypt/libmongocrypt/doc/releasing.md +14 -27
- data/ext/libmongocrypt/libmongocrypt/etc/cyclonedx.sbom.json +9 -9
- data/ext/libmongocrypt/libmongocrypt/etc/format.sh +0 -2
- data/ext/libmongocrypt/libmongocrypt/etc/libbson-remove-GCC-diagnostic-in-functions.patch +158 -0
- data/ext/libmongocrypt/libmongocrypt/etc/libbson-remove-GCC-diagnostic-pragma.patch +3 -3
- data/ext/libmongocrypt/libmongocrypt/etc/purls.txt +1 -1
- data/ext/libmongocrypt/libmongocrypt/integrating.md +42 -11
- data/ext/libmongocrypt/libmongocrypt/kms-message/src/kms_crypto_windows.c +2 -2
- data/ext/libmongocrypt/libmongocrypt/kms-message/src/kms_message.c +1 -1
- data/ext/libmongocrypt/libmongocrypt/kms-message/src/kms_message_private.h +2 -2
- data/ext/libmongocrypt/libmongocrypt/kms-message/src/kms_request.c +3 -3
- data/ext/libmongocrypt/libmongocrypt/kms-message/test/test_kmip_reader_writer.c +5 -5
- data/ext/libmongocrypt/libmongocrypt/kms-message/test/test_kms_assert.h +25 -8
- data/ext/libmongocrypt/libmongocrypt/kms-message/test/test_kms_azure_online.c +2 -2
- data/ext/libmongocrypt/libmongocrypt/kms-message/test/test_kms_gcp_online.c +3 -3
- data/ext/libmongocrypt/libmongocrypt/kms-message/test/test_kms_request.c +12 -10
- data/ext/libmongocrypt/libmongocrypt/src/mc-efc-private.h +5 -0
- data/ext/libmongocrypt/libmongocrypt/src/mc-efc.c +35 -1
- data/ext/libmongocrypt/libmongocrypt/src/mc-fle-blob-subtype-private.h +4 -1
- data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-encryption-placeholder-private.h +79 -0
- data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-encryption-placeholder.c +226 -2
- data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-find-equality-payload-v2.c +0 -1
- data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-find-equality-payload.c +0 -1
- data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-insert-update-payload-private-v2.h +34 -0
- data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-insert-update-payload-v2.c +165 -1
- data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-insert-update-payload.c +0 -1
- data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-payload-iev-private-v2.h +105 -7
- data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-payload-iev-v2.c +381 -70
- data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-tag-and-encrypted-metadata-block-private.h +7 -2
- data/ext/libmongocrypt/libmongocrypt/src/mc-fle2-tag-and-encrypted-metadata-block.c +17 -0
- data/ext/libmongocrypt/libmongocrypt/src/mc-schema-broker-private.h +126 -0
- data/ext/libmongocrypt/libmongocrypt/src/mc-schema-broker.c +1075 -0
- data/ext/libmongocrypt/libmongocrypt/src/mc-str-encode-string-sets-private.h +95 -0
- data/ext/libmongocrypt/libmongocrypt/src/mc-str-encode-string-sets.c +304 -0
- data/ext/libmongocrypt/libmongocrypt/src/mc-text-search-str-encode-private.h +45 -0
- data/ext/libmongocrypt/libmongocrypt/src/mc-text-search-str-encode.c +248 -0
- data/ext/libmongocrypt/libmongocrypt/src/mc-tokens-private.h +112 -2
- data/ext/libmongocrypt/libmongocrypt/src/mc-tokens.c +166 -2
- data/ext/libmongocrypt/libmongocrypt/src/mlib/windows-lean.h +2 -0
- data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-buffer-private.h +11 -0
- data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-buffer.c +36 -3
- data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-ctx-decrypt.c +8 -4
- data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-ctx-encrypt.c +430 -857
- data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-ctx-private.h +5 -19
- data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-kms-ctx.c +1 -1
- data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-marking.c +516 -523
- data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-opts-private.h +0 -4
- data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-private.h +7 -12
- data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-traverse-util.c +1 -1
- data/ext/libmongocrypt/libmongocrypt/src/mongocrypt-util.c +3 -1
- data/ext/libmongocrypt/libmongocrypt/src/mongocrypt.c +6 -9
- data/ext/libmongocrypt/libmongocrypt/src/mongocrypt.h +17 -0
- data/ext/libmongocrypt/libmongocrypt/src/os_posix/os_dll.c +3 -1
- data/ext/libmongocrypt/libmongocrypt/src/unicode/case-fold-map.c +1434 -0
- data/ext/libmongocrypt/libmongocrypt/src/unicode/diacritic-fold-map.c +2884 -0
- data/ext/libmongocrypt/libmongocrypt/src/unicode/fold.c +139 -0
- data/ext/libmongocrypt/libmongocrypt/src/unicode/fold.h +58 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/bulkWrite/unencrypted/payload.json +2 -2
- data/ext/libmongocrypt/libmongocrypt/test/data/cleanup/missing-key-id/collinfo.json +1 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/cleanup/no-fields/collinfo.json +1 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/cleanup/success/collinfo.json +1 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/compact/anchor-pad/collinfo.json +1 -1
- data/ext/libmongocrypt/libmongocrypt/test/data/compact/anchor-pad/encrypted-payload-range-v2.json +20 -21
- data/ext/libmongocrypt/libmongocrypt/test/data/compact/missing-key-id/collinfo.json +2 -2
- data/ext/libmongocrypt/libmongocrypt/test/data/compact/no-fields/collinfo.json +1 -1
- data/ext/libmongocrypt/libmongocrypt/test/data/compact/no-range/collinfo.json +1 -1
- data/ext/libmongocrypt/libmongocrypt/test/data/compact/success/collinfo.json +1 -1
- data/ext/libmongocrypt/libmongocrypt/test/data/compact/success/encrypted-field-config-map.json +0 -1
- data/ext/libmongocrypt/libmongocrypt/test/data/compact/success/encrypted-payload-range-v2.json +20 -21
- data/ext/libmongocrypt/libmongocrypt/test/data/dollardb/omitted/cmd-to-mongocryptd.json +1 -2
- data/ext/libmongocrypt/libmongocrypt/test/data/dollardb/omitted/collinfo.json +2 -2
- data/ext/libmongocrypt/libmongocrypt/test/data/dollardb/omitted/encrypted-payload.json +2 -3
- data/ext/libmongocrypt/libmongocrypt/test/data/dollardb/omitted/mongocryptd-reply.json +1 -2
- data/ext/libmongocrypt/libmongocrypt/test/data/dollardb/preserved/cmd-to-mongocryptd.json +1 -2
- data/ext/libmongocrypt/libmongocrypt/test/data/dollardb/preserved/collinfo.json +2 -2
- data/ext/libmongocrypt/libmongocrypt/test/data/dollardb/preserved/encrypted-payload.json +2 -3
- data/ext/libmongocrypt/libmongocrypt/test/data/dollardb/preserved/mongocryptd-reply.json +1 -2
- data/ext/libmongocrypt/libmongocrypt/test/data/dollardb/preserved_empty/cmd-to-mongocryptd.json +1 -2
- data/ext/libmongocrypt/libmongocrypt/test/data/dollardb/preserved_empty/collinfo.json +2 -2
- data/ext/libmongocrypt/libmongocrypt/test/data/dollardb/preserved_empty/mongocryptd-reply.json +1 -2
- data/ext/libmongocrypt/libmongocrypt/test/data/dollardb/preserved_fle1/collinfo.json +2 -1
- data/ext/libmongocrypt/libmongocrypt/test/data/efc/efc-extraField.json +0 -1
- data/ext/libmongocrypt/libmongocrypt/test/data/efc/efc-missingKeyId.json +0 -1
- data/ext/libmongocrypt/libmongocrypt/test/data/efc/efc-oneField-badVersionSet.json +23 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/efc/efc-oneField-goodVersionSet.json +23 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/efc/efc-oneField.json +0 -1
- data/ext/libmongocrypt/libmongocrypt/test/data/efc/efc-textSearchFields-badVersionSet.json +48 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/efc/efc-textSearchFields-goodVersionSet.json +48 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/efc/efc-textSearchFields.json +47 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/efc/efc-twoFields.json +0 -1
- data/ext/libmongocrypt/libmongocrypt/test/data/encrypted-field-config-map.json +1 -3
- data/ext/libmongocrypt/libmongocrypt/test/data/explicit-decrypt/FLE1DeterministicEncryptedValue.json +8 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/explicit-decrypt/FLE1EncryptionPlaceholder.json +8 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/explicit-decrypt/FLE1RandomEncryptedValue.json +8 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/explicit-decrypt/FLE2EncryptionPlaceholder.json +8 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/explicit-decrypt/FLE2EqualityIndexedValueV2.json +8 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/explicit-decrypt/FLE2FindEqualityPayloadV2.json +8 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/explicit-decrypt/FLE2IndexedEqualityEncryptedValue.json +8 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/explicit-decrypt/FLE2IndexedEqualityEncryptedValueV2.json +8 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/explicit-decrypt/FLE2IndexedRangeEncryptedValue.json +8 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/explicit-decrypt/FLE2IndexedRangeEncryptedValueV2.json +8 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/explicit-decrypt/FLE2InsertUpdatePayload-with-edges-V2.json +8 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/explicit-decrypt/FLE2InsertUpdatePayload-with-edges.json +8 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/{fle2-explicit/insert-indexed.json → explicit-decrypt/FLE2InsertUpdatePayload.json} +1 -1
- data/ext/libmongocrypt/libmongocrypt/test/data/explicit-decrypt/FLE2InsertUpdatePayloadV2.json +8 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/explicit-decrypt/FLE2RangeIndexedValueV2.json +8 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/explicit-decrypt/FLE2UnindexedEncryptedValue.json +8 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/explicit-decrypt/FLE2UnindexedEncryptedValueV2.json +8 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/find-with-encryptionInformation.json +0 -1
- data/ext/libmongocrypt/libmongocrypt/test/data/fle1-explain/with-csfle/collinfo.json +2 -1
- data/ext/libmongocrypt/libmongocrypt/test/data/fle1-explain/with-mongocryptd/collinfo.json +2 -1
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-bad-str-encode-version/bad-collinfo.json +26 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-bad-str-encode-version/bad-create-cmd-mongocryptd-reply.json +51 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-bad-str-encode-version/bad-create-cmd-to-mongocryptd.json +45 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-bad-str-encode-version/bad-create-cmd.json +18 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/{fle2-find-range/int32/encrypted-field-map.json → fle2-bad-str-encode-version/bad-encrypted-field-config-map.json} +7 -12
- data/ext/libmongocrypt/libmongocrypt/test/data/{fle2-insert → fle2-bad-str-encode-version}/encrypted-payload.json +4 -4
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-create/cmd-to-mongocryptd.json +1 -2
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-create/encrypted-field-config-map.json +1 -2
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-create-encrypted-collection/cmd-to-mongocryptd.json +44 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-create-encrypted-collection/cmd.json +17 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/{fle2-find-equality/encrypted-field-map.json → fle2-create-encrypted-collection/encrypted-field-config-map.json} +9 -8
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-create-encrypted-collection/encrypted-payload.json +17 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-create-encrypted-collection/mongocryptd-reply.json +50 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-create-encrypted-collection-encrypted-fields-unset-str-encode-version/cmd-to-mongocryptd.json +45 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-create-encrypted-collection-encrypted-fields-unset-str-encode-version/mongocryptd-reply.json +51 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-create-encrypted-collection-with-str-encode-version/cmd-to-mongocryptd.json +46 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-create-encrypted-collection-with-str-encode-version/cmd.json +18 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-create-encrypted-collection-with-str-encode-version/encrypted-field-config-map.json +25 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-create-encrypted-collection-with-str-encode-version/encrypted-payload.json +18 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-create-encrypted-collection-with-str-encode-version/mongocryptd-reply.json +52 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-delete/empty/collinfo.json +1 -1
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-delete/empty/encrypted-field-config-map.json +0 -1
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-delete/empty/encrypted-payload-v2.json +57 -59
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-delete/empty/mongocryptd-reply.json +63 -64
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-delete/success/collinfo.json +1 -1
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-delete/success/encrypted-field-config-map.json +0 -1
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-delete/success/encrypted-payload-v2.json +64 -66
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-delete/success/mongocryptd-reply.json +69 -70
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-explain/with-csfle/collinfo.json +1 -1
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-explain/with-csfle/encrypted-payload.json +1 -2
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-explain/with-mongocryptd/cmd-to-mongocryptd.json +1 -2
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-explain/with-mongocryptd/collinfo.json +2 -2
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-explain/with-mongocryptd/encrypted-payload.json +2 -3
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-explain/with-mongocryptd/mongocryptd-reply.json +1 -2
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-explicit/cmd-to-mongocryptd.json +0 -1
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-explicit/cmd-to-mongod.json +0 -1
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-explicit/reply-from-mongocryptd.json +0 -1
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/int32/encrypted-field-map.json +0 -1
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-text-search/cmd.json +9 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/{fle2-find-range/date → fle2-insert-text-search}/encrypted-field-map.json +10 -9
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-text-search/encrypted-payload.json +47 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-text-search/mongocryptd-reply.json +55 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/{fle2-find-range/double → fle2-insert-text-search-with-str-encode-version}/encrypted-field-map.json +12 -10
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-text-search-with-str-encode-version/encrypted-payload.json +47 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-text-search-with-str-encode-version/mongocryptd-reply.json +55 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-v2-with-str-encode-version/cmd.json +9 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/{fle2-insert → fle2-insert-v2-with-str-encode-version}/encrypted-field-map.json +2 -2
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-v2-with-str-encode-version/encrypted-payload.json +40 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/{fle2-insert → fle2-insert-v2-with-str-encode-version}/mongocryptd-reply.json +2 -2
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-text-search-create-encrypted-collection/cmd-to-mongocryptd.json +55 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-text-search-create-encrypted-collection/cmd.json +22 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-text-search-create-encrypted-collection/encrypted-field-config-map.json +29 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-text-search-create-encrypted-collection/encrypted-payload.json +23 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-text-search-create-encrypted-collection/mongocryptd-reply.json +61 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-text-search-create-encrypted-collection-with-str-encode-version/cmd-to-mongocryptd.json +56 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-text-search-create-encrypted-collection-with-str-encode-version/cmd.json +23 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-text-search-create-encrypted-collection-with-str-encode-version/encrypted-field-config-map.json +30 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-text-search-create-encrypted-collection-with-str-encode-version/encrypted-payload.json +23 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-text-search-create-encrypted-collection-with-str-encode-version/mongocryptd-reply.json +62 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/iev-v2/FLECrudTest-insertOneText.json +20 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/iev-v2/FLECrudTest-insertOneTextLarge.json +930 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/csfle/cmd-to-mongocryptd.json +60 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/csfle/cmd.json +14 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/csfle/collInfo-c1.json +39 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/csfle/collInfo-c2.json +39 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/csfle-facet/cmd.json +20 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/csfle-mismatch/cmd.json +14 -0
- data/ext/libmongocrypt/libmongocrypt/{bindings/java/mongocrypt/src/test/resources/collection-info.json → test/data/lookup/csfle-mismatch/collInfo-c1.json} +13 -11
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/csfle-mismatch/collInfo-c3.json +39 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/csfle-nested/cmd.json +24 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/csfle-only-schemaMap/cmd-to-mongocryptd.json +60 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/csfle-only-schemaMap/cmd.json +14 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/csfle-only-schemaMap/schemaMap.json +40 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/csfle-schemaMap/cmd-to-mongocryptd.json +60 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/csfle-schemaMap/cmd.json +14 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/csfle-schemaMap/collInfo-c1.json +39 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/csfle-schemaMap/schemaMap.json +21 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/csfle-self/cmd-to-mongocryptd.json +34 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/csfle-self/cmd.json +14 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/csfle-self/collInfo-c1.json +39 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/csfle-sibling/cmd-to-mongocryptd.json +49 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/csfle-sibling/cmd.json +14 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/csfle-sibling/collInfo-c1.json +39 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/csfle-sibling/collInfo-c2.json +29 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/csfle-sibling/reply-from-mongocryptd.json +18 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/csfle-unionWith/cmd.json +21 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/csfle-view/cmd.json +14 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/csfle-view/collInfo-c1.json +39 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/csfle-view/collInfo-v1.json +11 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/csfle/csfle/cmd-to-mongocryptd.json +65 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/csfle/csfle/cmd-to-mongod.json +26 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/csfle/csfle/cmd.json +19 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/csfle/csfle/collInfo-c1.json +39 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/csfle/csfle/collInfo-c2.json +39 -0
- data/ext/libmongocrypt/libmongocrypt/{bindings/java/mongocrypt/src/test/resources/keys/ABCDEFAB123498761234123456789012-local-document.json → test/data/lookup/mixed/csfle/csfle/key-doc.json} +4 -4
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/csfle/csfle/reply-from-mongocryptd.json +33 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/csfle/no-schema/cmd-to-mongocryptd.json +47 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/csfle/no-schema/cmd-to-mongod.json +26 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/csfle/no-schema/cmd.json +19 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/csfle/no-schema/collInfo-c1.json +39 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/csfle/no-schema/collInfo-c2.json +17 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/csfle/no-schema/key-doc.json +30 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/csfle/no-schema/reply-from-mongocryptd.json +33 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/csfle/qe/cmd-to-mongocryptd.json +70 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/csfle/qe/cmd.json +19 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/csfle/qe/collInfo-c1.json +39 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/csfle/qe/collInfo-c2.json +42 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/no-schema/csfle/cmd-to-mongocryptd.json +47 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/no-schema/csfle/cmd-to-mongod.json +26 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/no-schema/csfle/cmd.json +19 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/no-schema/csfle/collInfo-c1.json +17 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/no-schema/csfle/collInfo-c2.json +39 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/no-schema/csfle/key-doc.json +30 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/no-schema/csfle/reply-from-mongocryptd.json +33 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/no-schema/no-schema/cmd-to-mongocryptd.json +29 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/no-schema/no-schema/cmd-to-mongod.json +19 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/no-schema/no-schema/cmd.json +19 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/no-schema/no-schema/collInfo-c1.json +17 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/no-schema/no-schema/collInfo-c2.json +17 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/no-schema/no-schema/reply-from-mongocryptd.json +26 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/no-schema/qe/cmd-to-mongocryptd.json +53 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/no-schema/qe/cmd-to-mongod.json +58 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/no-schema/qe/cmd.json +19 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/no-schema/qe/collInfo-c1.json +17 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/no-schema/qe/collInfo-c2.json +42 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/no-schema/qe/key-doc.json +30 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/no-schema/qe/reply-from-mongocryptd.json +65 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/qe/csfle/cmd-to-mongocryptd.json +70 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/qe/csfle/cmd.json +19 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/qe/csfle/collInfo-c1.json +42 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/qe/csfle/collInfo-c2.json +39 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/qe/no-schema/cmd-to-mongocryptd.json +53 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/qe/no-schema/cmd-to-mongod.json +56 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/qe/no-schema/cmd.json +19 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/qe/no-schema/collInfo-c1.json +42 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/qe/no-schema/collInfo-c2.json +17 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/qe/no-schema/key-doc.json +30 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/qe/no-schema/reply-from-mongocryptd.json +63 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/qe/qe/cmd-to-mongocryptd.json +66 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/qe/qe/cmd-to-mongod.json +71 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/qe/qe/cmd.json +19 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/qe/qe/collInfo-c1.json +42 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/qe/qe/collInfo-c2.json +42 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/qe/qe/key-doc.json +30 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/mixed/qe/qe/reply-from-mongocryptd.json +78 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/qe/cmd-to-mongocryptd.json +61 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/qe/cmd-to-mongod.json +14 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/qe/cmd.json +14 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/qe/collInfo-c1.json +42 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/qe/collInfo-c2.json +42 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/qe/reply-from-mongocryptd.json +68 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/qe-encryptedFieldsMap/cmd-to-mongocryptd.json +66 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/qe-encryptedFieldsMap/cmd-to-mongod.json +71 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/qe-encryptedFieldsMap/cmd.json +19 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/qe-encryptedFieldsMap/collInfo-c1.json +42 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/{fle2-insert-unindexed/encrypted-field-map.json → lookup/qe-encryptedFieldsMap/encryptedFieldsMap.json} +6 -7
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/qe-encryptedFieldsMap/key-doc.json +30 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/qe-encryptedFieldsMap/reply-from-mongocryptd.json +78 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/qe-self/cmd-to-mongocryptd.json +46 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/qe-self/cmd-to-mongod.json +53 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/qe-self/cmd.json +19 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/qe-self/collInfo-c1.json +42 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/qe-self/key-doc.json +30 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/qe-self/reply-from-mongocryptd.json +58 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/qe-with-payload/cmd-to-mongocryptd.json +66 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/qe-with-payload/cmd-to-mongod.json +75 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/qe-with-payload/cmd.json +19 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/qe-with-payload/collInfo-c1.json +42 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/qe-with-payload/collInfo-c2.json +42 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/qe-with-payload/key-doc.json +30 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/lookup/qe-with-payload/reply-from-mongocryptd.json +78 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/{fle2-create/mongocryptd-ismaster.json → mongocryptd-ismaster-17.json} +1 -1
- data/ext/libmongocrypt/libmongocrypt/test/data/mongocryptd-ismaster-26.json +12 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/schema-broker/collinfo-encryptedFields.json +42 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/schema-broker/collinfo-encryptedFields2.json +42 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/schema-broker/collinfo-jsonSchema.json +43 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/schema-broker/collinfo-noSchema.json +21 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/schema-broker/create-with-jsonSchema.json +24 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/schema-broker/encryptedFields.json +20 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/schema-broker/encryptedFields2.json +20 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/schema-broker/encryptedFieldsMap.json +42 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/schema-broker/jsonSchema.json +19 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/schema-broker/jsonSchema2.json +19 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/schema-broker/schemaMap.json +40 -0
- data/ext/libmongocrypt/libmongocrypt/test/data/tokens/mc.json +28 -2
- data/ext/libmongocrypt/libmongocrypt/test/data/tokens/server.json +28 -2
- data/ext/libmongocrypt/libmongocrypt/test/test-mc-efc.c +70 -0
- data/ext/libmongocrypt/libmongocrypt/test/test-mc-fle2-encryption-placeholder.c +468 -0
- data/ext/libmongocrypt/libmongocrypt/test/test-mc-fle2-find-equality-payload-v2.c +20 -1
- data/ext/libmongocrypt/libmongocrypt/test/test-mc-fle2-payload-iev-v2.c +286 -24
- data/ext/libmongocrypt/libmongocrypt/test/test-mc-fle2-payload-iev.c +1 -1
- data/ext/libmongocrypt/libmongocrypt/test/test-mc-fle2-payload-iup-v2.c +23 -1
- data/ext/libmongocrypt/libmongocrypt/test/test-mc-fle2-payload-iup.c +24 -1
- data/ext/libmongocrypt/libmongocrypt/test/test-mc-fle2-payload-uev.c +2 -2
- data/ext/libmongocrypt/libmongocrypt/test/test-mc-fle2-rfds.c +2 -2
- data/ext/libmongocrypt/libmongocrypt/test/test-mc-fle2-tag-and-encrypted-metadata-block.c +36 -1
- data/ext/libmongocrypt/libmongocrypt/test/test-mc-range-edge-generation.c +6 -7
- data/ext/libmongocrypt/libmongocrypt/test/test-mc-range-encoding.c +32 -33
- data/ext/libmongocrypt/libmongocrypt/test/test-mc-range-mincover.c +58 -66
- data/ext/libmongocrypt/libmongocrypt/test/test-mc-rangeopts.c +2 -2
- data/ext/libmongocrypt/libmongocrypt/test/test-mc-schema-broker.c +1124 -0
- data/ext/libmongocrypt/libmongocrypt/test/test-mc-text-search-str-encode.c +1207 -0
- data/ext/libmongocrypt/libmongocrypt/test/test-mc-tokens.c +144 -37
- data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-assert-match-bson.c +13 -14
- data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-assert.h +21 -4
- data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-buffer.c +25 -0
- data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-cache.c +3 -2
- data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-crypto-hooks.c +1 -1
- data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-crypto.c +37 -7
- data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-csfle-lib.c +21 -0
- data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-ctx-decrypt.c +226 -146
- data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-ctx-encrypt.c +1330 -1200
- data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-kek.c +1 -1
- data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-key-cache.c +6 -6
- data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-kms-responses.c +2 -2
- data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt-marking.c +744 -106
- data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt.c +119 -33
- data/ext/libmongocrypt/libmongocrypt/test/test-mongocrypt.h +27 -4
- data/ext/libmongocrypt/libmongocrypt/test/test-unicode-fold.c +97 -0
- data/lib/libmongocrypt_helper/version.rb +2 -2
- metadata +207 -157
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/README.md +0 -36
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/benchmarks/build.gradle.kts +0 -28
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/benchmarks/src/main/java/com/mongodb/crypt/benchmark/BenchmarkRunner.java +0 -217
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/benchmarks/src/main/resources/keyDocument.json +0 -24
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/build.gradle.kts +0 -354
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/gradle/wrapper/gradle-wrapper.jar +0 -0
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/gradle/wrapper/gradle-wrapper.properties +0 -5
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/gradlew +0 -234
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/gradlew.bat +0 -89
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/settings.gradle.kts +0 -1
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/BinaryHolder.java +0 -45
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/CAPI.java +0 -1165
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/CAPIHelper.java +0 -96
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/CipherCallback.java +0 -92
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/DisposableMemory.java +0 -31
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/JULLogger.java +0 -130
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/Logger.java +0 -144
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/Loggers.java +0 -50
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/MacCallback.java +0 -60
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/MessageDigestCallback.java +0 -55
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/MongoAwsKmsProviderOptions.java +0 -104
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/MongoCrypt.java +0 -100
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/MongoCryptContext.java +0 -137
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/MongoCryptContextImpl.java +0 -164
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/MongoCryptException.java +0 -67
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/MongoCryptImpl.java +0 -423
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/MongoCryptOptions.java +0 -284
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/MongoCrypts.java +0 -38
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/MongoDataKeyOptions.java +0 -125
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/MongoExplicitEncryptOptions.java +0 -227
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/MongoKeyDecryptor.java +0 -76
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/MongoKeyDecryptorImpl.java +0 -105
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/MongoLocalKmsProviderOptions.java +0 -83
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/MongoRewrapManyDataKeyOptions.java +0 -104
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/SLF4JLogger.java +0 -110
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/SecureRandomCallback.java +0 -51
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/SigningRSAESPKCSCallback.java +0 -76
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/java/com/mongodb/crypt/capi/package-info.java +0 -18
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/resources/META-INF/native-image/jni-config.json +0 -180
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/main/resources/META-INF/native-image/reflect-config.json +0 -134
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/test/java/com/mongodb/crypt/capi/MongoCryptTest.java +0 -389
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/test/resources/command-reply.json +0 -13
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/test/resources/command.json +0 -6
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/test/resources/encrypted-command-reply.json +0 -16
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/test/resources/encrypted-command.json +0 -11
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/test/resources/encrypted-value.json +0 -6
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/test/resources/fle2-find-range-explicit-v2/int32/encrypted-payload.json +0 -26
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/test/resources/fle2-find-range-explicit-v2/int32/key-filter.json +0 -19
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/test/resources/fle2-find-range-explicit-v2/int32/rangeopts.json +0 -14
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/test/resources/fle2-find-range-explicit-v2/int32/value-to-encrypt.json +0 -20
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/test/resources/json-schema.json +0 -15
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/test/resources/key-document.json +0 -36
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/test/resources/key-filter-keyAltName.json +0 -14
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/test/resources/key-filter.json +0 -19
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/test/resources/kms-reply.txt +0 -6
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/test/resources/list-collections-filter.json +0 -3
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/test/resources/mongocryptd-command.json +0 -22
- data/ext/libmongocrypt/libmongocrypt/bindings/java/mongocrypt/src/test/resources/mongocryptd-reply.json +0 -18
- data/ext/libmongocrypt/libmongocrypt/etc/silk-create-asset-group.sh +0 -70
- data/ext/libmongocrypt/libmongocrypt/test/data/bulkWrite/jsonSchema/cmd.json +0 -20
- data/ext/libmongocrypt/libmongocrypt/test/data/collection-info-no-schema.json +0 -19
- data/ext/libmongocrypt/libmongocrypt/test/data/compact/no-range/encrypted-field-config-map.json +0 -47
- data/ext/libmongocrypt/libmongocrypt/test/data/fle1-collMod/insert/cmd.json +0 -8
- data/ext/libmongocrypt/libmongocrypt/test/data/fle1-collMod/insert/collinfo.json +0 -9
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-create/ismaster-to-mongocryptd.json +0 -3
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-delete/empty/encrypted-payload.json +0 -91
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-delete/success/encrypted-payload.json +0 -98
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-explicit/find-indexed-contentionFactor1.json +0 -8
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-explicit/insert-indexed-contentionFactor1.json +0 -8
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-explicit/insert-indexed-same-user-and-index-key.json +0 -8
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-equality/cmd.json +0 -6
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-equality/encrypted-payload.json +0 -41
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-equality/mongocryptd-reply.json +0 -19
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/date/cmd.json +0 -10
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/date/encrypted-payload.json +0 -42
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/date/mongocryptd-reply.json +0 -50
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/decimal128/cmd.json +0 -6
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/decimal128/encrypted-field-map.json +0 -28
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/decimal128/encrypted-payload.json +0 -42
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/decimal128/mongocryptd-reply.json +0 -50
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/decimal128-precision/cmd.json +0 -6
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/decimal128-precision/encrypted-field-map.json +0 -31
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/decimal128-precision/encrypted-payload.json +0 -51
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/decimal128-precision/mongocryptd-reply.json +0 -59
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/double/cmd.json +0 -8
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/double/encrypted-payload.json +0 -42
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/double/mongocryptd-reply.json +0 -50
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/double-precision/cmd.json +0 -8
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/double-precision/encrypted-field-map.json +0 -31
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/double-precision/encrypted-payload.json +0 -45
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/double-precision/mongocryptd-reply.json +0 -53
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/int32/cmd.json +0 -8
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/int32/encrypted-payload.json +0 -42
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/int32/mongocryptd-reply.json +0 -50
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/int64/cmd.json +0 -8
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/int64/encrypted-field-map.json +0 -28
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/int64/encrypted-payload.json +0 -42
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range/int64/mongocryptd-reply.json +0 -50
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range-explicit/double/encrypted-payload.json +0 -26
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range-explicit/double-precision/encrypted-payload.json +0 -26
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range-explicit/int32/encrypted-payload.json +0 -26
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range-explicit/int32-nominmax/encrypted-payload-v2.json +0 -26
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-find-range-explicit/int32-openinterval/encrypted-payload.json +0 -16
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/date/cmd.json +0 -13
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/date/encrypted-field-map.json +0 -28
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/date/encrypted-payload.json +0 -45
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/date/mongocryptd-reply.json +0 -53
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/decimal128/cmd.json +0 -9
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/decimal128/encrypted-field-map.json +0 -28
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/decimal128/encrypted-payload.json +0 -45
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/decimal128/mongocryptd-reply.json +0 -53
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/decimal128-precision/cmd.json +0 -9
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/decimal128-precision/encrypted-field-map.json +0 -31
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/decimal128-precision/encrypted-payload.json +0 -54
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/decimal128-precision/mongocryptd-reply.json +0 -62
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/double/cmd.json +0 -11
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/double/encrypted-field-map.json +0 -28
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/double/encrypted-payload.json +0 -45
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/double/mongocryptd-reply.json +0 -53
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/double-precision/cmd.json +0 -11
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/double-precision/encrypted-field-map.json +0 -31
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/double-precision/encrypted-payload.json +0 -48
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/double-precision/mongocryptd-reply.json +0 -56
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/int32/encrypted-payload.json +0 -45
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/int32/mongocryptd-reply.json +0 -53
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/int64/cmd.json +0 -11
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/int64/encrypted-field-map.json +0 -28
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/int64/encrypted-payload.json +0 -45
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range/int64/mongocryptd-reply.json +0 -53
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range-explicit/double/encrypted-payload.json +0 -8
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range-explicit/double-precision/encrypted-payload.json +0 -8
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range-explicit/int32-nominmax/encrypted-payload-v2.json +0 -8
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-range-explicit/sparsity-2/encrypted-payload.json +0 -8
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-unindexed/cmd.json +0 -9
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-unindexed/encrypted-payload.json +0 -14
- data/ext/libmongocrypt/libmongocrypt/test/data/fle2-insert-unindexed/mongocryptd-reply.json +0 -46
- data/ext/libmongocrypt/libmongocrypt/test/data/schema.json +0 -19
- /data/ext/libmongocrypt/libmongocrypt/test/data/{fle2-explicit/find-indexed.json → explicit-decrypt/FLE2FindEqualityPayload.json} +0 -0
- /data/ext/libmongocrypt/libmongocrypt/test/data/{fle2-insert → fle2-insert-text-search-with-str-encode-version}/cmd.json +0 -0
@@ -73,6 +73,25 @@ static void _test_FLE2FindEqualityPayloadV2_roundtrip(_mongocrypt_tester_t *test
|
|
73
73
|
|
74
74
|
#undef TEST_FIND_EQ_PAYLOAD_HEX_V2
|
75
75
|
|
76
|
+
static void _test_FLE2FindEqualityPayloadV2_errors(_mongocrypt_tester_t *tester) {
|
77
|
+
bson_t *input_bson = TMP_BSON(BSON_STR({
|
78
|
+
"d" : {"$binary" : {"base64" : "AAAA", "subType" : "00"}},
|
79
|
+
"s" : {"$binary" : {"base64" : "AAAA", "subType" : "00"}},
|
80
|
+
"l" : {"$binary" : {"base64" : "AAAA", "subType" : "00"}},
|
81
|
+
"cm" : "wrong type!"
|
82
|
+
}));
|
83
|
+
|
84
|
+
mc_FLE2FindEqualityPayloadV2_t payload;
|
85
|
+
mc_FLE2FindEqualityPayloadV2_init(&payload);
|
86
|
+
mongocrypt_status_t *status = mongocrypt_status_new();
|
87
|
+
ASSERT_FAILS_STATUS(mc_FLE2FindEqualityPayloadV2_parse(&payload, input_bson, status),
|
88
|
+
status,
|
89
|
+
"Field 'cm' expected to hold an int64");
|
90
|
+
mc_FLE2FindEqualityPayloadV2_cleanup(&payload);
|
91
|
+
mongocrypt_status_destroy(status);
|
92
|
+
}
|
93
|
+
|
76
94
|
void _mongocrypt_tester_install_fle2_payload_find_equality_v2(_mongocrypt_tester_t *tester) {
|
77
95
|
INSTALL_TEST(_test_FLE2FindEqualityPayloadV2_roundtrip);
|
78
|
-
|
96
|
+
INSTALL_TEST(_test_FLE2FindEqualityPayloadV2_errors);
|
97
|
+
}
|
@@ -14,14 +14,13 @@
|
|
14
14
|
* limitations under the License.
|
15
15
|
*/
|
16
16
|
|
17
|
+
#include "mc-fle-blob-subtype-private.h"
|
17
18
|
#include "mc-fle2-payload-iev-private-v2.h"
|
18
19
|
#include "test-mongocrypt-assert-match-bson.h"
|
20
|
+
#include "test-mongocrypt-assert.h"
|
19
21
|
#include "test-mongocrypt.h"
|
20
22
|
|
21
|
-
typedef enum {
|
22
|
-
kTypeEquality,
|
23
|
-
kTypeRange,
|
24
|
-
} _mc_fle2_iev_type;
|
23
|
+
typedef enum { kTypeEquality, kTypeRange, kTypeText } _mc_fle2_iev_type;
|
25
24
|
|
26
25
|
typedef struct {
|
27
26
|
_mc_fle2_iev_type type;
|
@@ -32,11 +31,15 @@ typedef struct {
|
|
32
31
|
_mongocrypt_buffer_t K_Key;
|
33
32
|
uint8_t bson_value_type;
|
34
33
|
_mongocrypt_buffer_t bson_value;
|
35
|
-
|
34
|
+
uint32_t edge_count;
|
35
|
+
uint32_t substr_tag_count;
|
36
|
+
uint32_t suffix_tag_count;
|
36
37
|
mc_FLE2TagAndEncryptedMetadataBlock_t *metadata;
|
37
38
|
} _mc_fle2_iev_v2_test;
|
38
39
|
|
39
40
|
#define kMetadataLen 96U
|
41
|
+
#define kMetadataFieldLen 32U
|
42
|
+
#define kMinServerEncryptedValueLen 17U // IV(16) + EncryptCTR(1byte)
|
40
43
|
|
41
44
|
static void _mc_fle2_iev_v2_test_destroy(_mc_fle2_iev_v2_test *test) {
|
42
45
|
_mongocrypt_buffer_cleanup(&test->payload);
|
@@ -45,13 +48,122 @@ static void _mc_fle2_iev_v2_test_destroy(_mc_fle2_iev_v2_test *test) {
|
|
45
48
|
_mongocrypt_buffer_cleanup(&test->K_KeyId);
|
46
49
|
_mongocrypt_buffer_cleanup(&test->K_Key);
|
47
50
|
_mongocrypt_buffer_cleanup(&test->bson_value);
|
48
|
-
for (
|
51
|
+
for (uint32_t i = 0; i < test->edge_count; ++i) {
|
49
52
|
mc_FLE2TagAndEncryptedMetadataBlock_cleanup(&test->metadata[i]);
|
50
53
|
}
|
51
54
|
|
52
55
|
bson_free(test->metadata);
|
53
56
|
}
|
54
57
|
|
58
|
+
static _mongocrypt_buffer_t copy_buf(_mongocrypt_buffer_t *src) {
|
59
|
+
_mongocrypt_buffer_t dst;
|
60
|
+
_mongocrypt_buffer_init(&dst);
|
61
|
+
_mongocrypt_buffer_copy_to(src, &dst);
|
62
|
+
return dst;
|
63
|
+
}
|
64
|
+
|
65
|
+
// Fill out the fields manually with no checks, then serialize.
|
66
|
+
static void
|
67
|
+
_mc_fle2_iev_v2_test_serialize_payload(mongocrypt_t *crypt, _mc_fle2_iev_v2_test *test, _mongocrypt_buffer_t *payload) {
|
68
|
+
mc_FLE2IndexedEncryptedValueV2_t *iev = mc_FLE2IndexedEncryptedValueV2_new();
|
69
|
+
iev->type = test->type == kTypeEquality ? kFLE2IEVTypeEqualityV2
|
70
|
+
: test->type == kTypeRange ? kFLE2IEVTypeRangeV2
|
71
|
+
: kFLE2IEVTypeText;
|
72
|
+
iev->fle_blob_subtype = test->type == kTypeEquality ? MC_SUBTYPE_FLE2IndexedEqualityEncryptedValueV2
|
73
|
+
: test->type == kTypeRange ? MC_SUBTYPE_FLE2IndexedRangeEncryptedValueV2
|
74
|
+
: MC_SUBTYPE_FLE2IndexedTextEncryptedValue;
|
75
|
+
iev->bson_value_type = test->bson_value_type;
|
76
|
+
iev->edge_count = test->edge_count;
|
77
|
+
iev->substr_tag_count = test->substr_tag_count;
|
78
|
+
iev->suffix_tag_count = test->suffix_tag_count;
|
79
|
+
iev->S_KeyId = copy_buf(&test->S_KeyId);
|
80
|
+
_mongocrypt_buffer_init(&iev->ServerEncryptedValue);
|
81
|
+
|
82
|
+
// Encrypt the client value (bson_value) into the SEV
|
83
|
+
// First, encrypt with K_Key -> CEV
|
84
|
+
mongocrypt_status_t *status = mongocrypt_status_new();
|
85
|
+
const _mongocrypt_value_encryption_algorithm_t *fle2v2aead = _mcFLE2v2AEADAlgorithm();
|
86
|
+
const uint32_t ClientEncryptedValueLen = fle2v2aead->get_ciphertext_len(test->bson_value.len, status);
|
87
|
+
ASSERT_OK_STATUS(ClientEncryptedValueLen, status);
|
88
|
+
|
89
|
+
_mongocrypt_buffer_t clientEncryptedValue;
|
90
|
+
_mongocrypt_buffer_init_size(&clientEncryptedValue, ClientEncryptedValueLen);
|
91
|
+
|
92
|
+
_mongocrypt_buffer_t iv;
|
93
|
+
_mongocrypt_buffer_init_size(&iv, MONGOCRYPT_IV_LEN);
|
94
|
+
ASSERT_OK_STATUS(_mongocrypt_random(crypt->crypto, &iv, MONGOCRYPT_IV_LEN, status), status);
|
95
|
+
|
96
|
+
uint32_t bytes_written = 0;
|
97
|
+
ASSERT_OK_STATUS(fle2v2aead->do_encrypt(crypt->crypto,
|
98
|
+
&iv,
|
99
|
+
&test->K_KeyId,
|
100
|
+
&test->K_Key,
|
101
|
+
&test->bson_value,
|
102
|
+
&clientEncryptedValue,
|
103
|
+
&bytes_written,
|
104
|
+
status),
|
105
|
+
status);
|
106
|
+
ASSERT(bytes_written == ClientEncryptedValueLen);
|
107
|
+
|
108
|
+
// Then, add K_Key_Id + CEV -> DSEV
|
109
|
+
_mongocrypt_buffer_t decryptedServerEncryptedValue;
|
110
|
+
_mongocrypt_buffer_init_size(&decryptedServerEncryptedValue, clientEncryptedValue.len + UUID_LEN);
|
111
|
+
memcpy(decryptedServerEncryptedValue.data, test->K_KeyId.data, UUID_LEN);
|
112
|
+
memcpy(decryptedServerEncryptedValue.data + UUID_LEN, clientEncryptedValue.data, clientEncryptedValue.len);
|
113
|
+
// Finally, encrypt DSEV -> SEV
|
114
|
+
/* Get the TokenKey from the last 32 bytes of S_Key */
|
115
|
+
_mongocrypt_buffer_t TokenKey;
|
116
|
+
ASSERT(_mongocrypt_buffer_from_subrange(&TokenKey,
|
117
|
+
&test->S_Key,
|
118
|
+
test->S_Key.len - MONGOCRYPT_TOKEN_KEY_LEN,
|
119
|
+
MONGOCRYPT_TOKEN_KEY_LEN));
|
120
|
+
|
121
|
+
/* Use TokenKey to create ServerDataEncryptionLevel1Token and encrypt
|
122
|
+
* DSEV into ServerEncryptedValue */
|
123
|
+
mc_ServerDataEncryptionLevel1Token_t *token =
|
124
|
+
mc_ServerDataEncryptionLevel1Token_new(crypt->crypto, &TokenKey, status);
|
125
|
+
ASSERT_OK_STATUS(token, status);
|
126
|
+
|
127
|
+
const _mongocrypt_value_encryption_algorithm_t *fle2alg = _mcFLE2Algorithm();
|
128
|
+
const uint32_t ServerEncryptedValueLen = fle2alg->get_ciphertext_len(decryptedServerEncryptedValue.len, status);
|
129
|
+
ASSERT_OK_STATUS(ServerEncryptedValueLen, status);
|
130
|
+
|
131
|
+
_mongocrypt_buffer_resize(&iev->ServerEncryptedValue, ServerEncryptedValueLen);
|
132
|
+
bytes_written = 0;
|
133
|
+
ASSERT_OK_STATUS(fle2alg->do_encrypt(crypt->crypto,
|
134
|
+
&iv,
|
135
|
+
NULL /* aad */,
|
136
|
+
mc_ServerDataEncryptionLevel1Token_get(token),
|
137
|
+
&decryptedServerEncryptedValue,
|
138
|
+
&iev->ServerEncryptedValue,
|
139
|
+
&bytes_written,
|
140
|
+
status),
|
141
|
+
status);
|
142
|
+
ASSERT(bytes_written == ServerEncryptedValueLen);
|
143
|
+
|
144
|
+
// Finally, add metadata, and we have a complete IEV.
|
145
|
+
iev->metadata = bson_malloc0(test->edge_count * sizeof(mc_FLE2TagAndEncryptedMetadataBlock_t));
|
146
|
+
for (uint32_t i = 0; i < test->edge_count; i++) {
|
147
|
+
_mongocrypt_buffer_t tmp_buf;
|
148
|
+
_mongocrypt_buffer_init_size(&tmp_buf, kMetadataLen);
|
149
|
+
memcpy(tmp_buf.data, test->metadata[i].encryptedCount.data, kMetadataFieldLen);
|
150
|
+
memcpy(tmp_buf.data + kMetadataFieldLen, test->metadata[i].tag.data, kMetadataFieldLen);
|
151
|
+
memcpy(tmp_buf.data + kMetadataFieldLen * 2, test->metadata[i].encryptedZeros.data, kMetadataFieldLen);
|
152
|
+
|
153
|
+
ASSERT_OK_STATUS(mc_FLE2TagAndEncryptedMetadataBlock_parse(&iev->metadata[i], &tmp_buf, status), status);
|
154
|
+
_mongocrypt_buffer_cleanup(&tmp_buf);
|
155
|
+
}
|
156
|
+
|
157
|
+
// Now serialize our IEV to the payload.
|
158
|
+
ASSERT_OK_STATUS(mc_FLE2IndexedEncryptedValueV2_serialize(iev, payload, status), status);
|
159
|
+
mongocrypt_status_destroy(status);
|
160
|
+
_mongocrypt_buffer_cleanup(&clientEncryptedValue);
|
161
|
+
_mongocrypt_buffer_cleanup(&iv);
|
162
|
+
_mongocrypt_buffer_cleanup(&decryptedServerEncryptedValue);
|
163
|
+
mc_ServerDataEncryptionLevel1Token_destroy(token);
|
164
|
+
mc_FLE2IndexedEncryptedValueV2_destroy(iev);
|
165
|
+
}
|
166
|
+
|
55
167
|
static bool _mc_fle2_iev_v2_test_parse(_mc_fle2_iev_v2_test *test, bson_iter_t *iter) {
|
56
168
|
bool hasType = false;
|
57
169
|
|
@@ -80,6 +192,18 @@ static bool _mc_fle2_iev_v2_test_parse(_mc_fle2_iev_v2_test *test, bson_iter_t *
|
|
80
192
|
int64_t value = bson_iter_as_int64(iter);
|
81
193
|
ASSERT_OR_PRINT_MSG((value > 0) && (value < 128), "Field 'bson_value_type' must be 1..127");
|
82
194
|
test->bson_value_type = (uint8_t)value;
|
195
|
+
} else if (!strcmp(field, "substr_tag_count")) {
|
196
|
+
ASSERT_OR_PRINT_MSG(!test->substr_tag_count, "Duplicate field 'substr_tag_count'");
|
197
|
+
ASSERT(BSON_ITER_HOLDS_INT32(iter) || BSON_ITER_HOLDS_INT64(iter));
|
198
|
+
int64_t value = bson_iter_as_int64(iter);
|
199
|
+
ASSERT_OR_PRINT_MSG((value >= 0) && (value < UINT32_MAX), "Field 'substr_tag_count' must be 0..2^32-1");
|
200
|
+
test->substr_tag_count = (uint32_t)value;
|
201
|
+
} else if (!strcmp(field, "suffix_tag_count")) {
|
202
|
+
ASSERT_OR_PRINT_MSG(!test->suffix_tag_count, "Duplicate field 'suffix_tag_count'");
|
203
|
+
ASSERT(BSON_ITER_HOLDS_INT32(iter) || BSON_ITER_HOLDS_INT64(iter));
|
204
|
+
int64_t value = bson_iter_as_int64(iter);
|
205
|
+
ASSERT_OR_PRINT_MSG((value >= 0) && (value < UINT32_MAX), "Field 'suffix_tag_count' must be 0..2^32-1");
|
206
|
+
test->suffix_tag_count = (uint32_t)value;
|
83
207
|
} else if (!strcmp(field, "type")) {
|
84
208
|
ASSERT_OR_PRINT_MSG(!hasType, "Duplicate field 'type'");
|
85
209
|
ASSERT(BSON_ITER_HOLDS_UTF8(iter));
|
@@ -88,6 +212,8 @@ static bool _mc_fle2_iev_v2_test_parse(_mc_fle2_iev_v2_test *test, bson_iter_t *
|
|
88
212
|
test->type = kTypeEquality;
|
89
213
|
} else if (!strcmp(value, "range")) {
|
90
214
|
test->type = kTypeRange;
|
215
|
+
} else if (!strcmp(value, "text")) {
|
216
|
+
test->type = kTypeText;
|
91
217
|
} else {
|
92
218
|
TEST_ERROR("Unknown type '%s'", value);
|
93
219
|
}
|
@@ -126,7 +252,7 @@ static bool _mc_fle2_iev_v2_test_parse(_mc_fle2_iev_v2_test *test, bson_iter_t *
|
|
126
252
|
|
127
253
|
// Reinitialize iter and parse each metadata block
|
128
254
|
bson_iter_init(&metadata_array_iter, &metadata_array);
|
129
|
-
|
255
|
+
uint32_t i = 0;
|
130
256
|
while (bson_iter_next(&metadata_array_iter)) {
|
131
257
|
ASSERT(BSON_ITER_HOLDS_UTF8(&metadata_array_iter));
|
132
258
|
|
@@ -165,12 +291,16 @@ static bool _mc_fle2_iev_v2_test_parse(_mc_fle2_iev_v2_test *test, bson_iter_t *
|
|
165
291
|
return true;
|
166
292
|
}
|
167
293
|
|
168
|
-
static void _mc_fle2_iev_v2_test_run(_mongocrypt_tester_t *tester, _mc_fle2_iev_v2_test *test) {
|
294
|
+
static void _mc_fle2_iev_v2_test_run(mongocrypt_t *crypt, _mongocrypt_tester_t *tester, _mc_fle2_iev_v2_test *test) {
|
169
295
|
mongocrypt_status_t *status = mongocrypt_status_new();
|
170
|
-
mongocrypt_t *crypt = _mongocrypt_tester_mongocrypt(TESTER_MONGOCRYPT_DEFAULT);
|
171
296
|
|
172
297
|
mc_FLE2IndexedEncryptedValueV2_t *iev = mc_FLE2IndexedEncryptedValueV2_new();
|
173
298
|
|
299
|
+
if (!test->payload.data) {
|
300
|
+
// This is a self-test; i.e. we serialize the payload from the given fields, parse, and assert sameness.
|
301
|
+
_mc_fle2_iev_v2_test_serialize_payload(crypt, test, &test->payload);
|
302
|
+
}
|
303
|
+
|
174
304
|
// Parse payload.
|
175
305
|
ASSERT_OK_STATUS(mc_FLE2IndexedEncryptedValueV2_parse(iev, &test->payload, status), status);
|
176
306
|
|
@@ -207,18 +337,45 @@ static void _mc_fle2_iev_v2_test_run(_mongocrypt_tester_t *tester, _mc_fle2_iev_
|
|
207
337
|
ASSERT_OK_STATUS(bson_value, status);
|
208
338
|
ASSERT_CMPBUF(*bson_value, test->bson_value);
|
209
339
|
|
210
|
-
|
211
|
-
if (test->type == kTypeRange) {
|
340
|
+
uint32_t edge_count = 1;
|
341
|
+
if (test->type == kTypeRange || test->type == kTypeText) {
|
212
342
|
// Validate edge count
|
213
343
|
edge_count = mc_FLE2IndexedEncryptedValueV2_get_edge_count(iev, status);
|
214
344
|
ASSERT_OK_STATUS(edge_count, status);
|
215
|
-
|
345
|
+
ASSERT_CMPUINT32(edge_count, ==, test->edge_count);
|
346
|
+
}
|
347
|
+
|
348
|
+
uint32_t substr_tag_count = 0, suffix_tag_count = 0, prefix_tag_count = 0;
|
349
|
+
if (test->type == kTypeText) {
|
350
|
+
// Validate substr/suffix/prefix tag counts
|
351
|
+
ASSERT_OK_STATUS(mc_FLE2IndexedEncryptedValueV2_get_substr_tag_count(iev, &substr_tag_count, status), status);
|
352
|
+
ASSERT_CMPUINT32(substr_tag_count, ==, test->substr_tag_count);
|
353
|
+
ASSERT_OK_STATUS(mc_FLE2IndexedEncryptedValueV2_get_suffix_tag_count(iev, &suffix_tag_count, status), status);
|
354
|
+
ASSERT_CMPUINT32(suffix_tag_count, ==, test->suffix_tag_count);
|
355
|
+
ASSERT_OK_STATUS(mc_FLE2IndexedEncryptedValueV2_get_prefix_tag_count(iev, &prefix_tag_count, status), status);
|
356
|
+
ASSERT_CMPUINT32(prefix_tag_count, ==, test->edge_count - test->substr_tag_count - test->suffix_tag_count - 1);
|
216
357
|
}
|
217
358
|
|
218
359
|
// Validate edges/metadata
|
219
360
|
mc_FLE2TagAndEncryptedMetadataBlock_t metadata;
|
220
|
-
for (
|
221
|
-
if (test->type ==
|
361
|
+
for (uint32_t i = 0; i < edge_count; ++i) {
|
362
|
+
if (test->type == kTypeText) {
|
363
|
+
if (i == 0) {
|
364
|
+
ASSERT(mc_FLE2IndexedEncryptedValueV2_get_exact_metadata(iev, &metadata, status));
|
365
|
+
} else if (i < substr_tag_count + 1) {
|
366
|
+
ASSERT(mc_FLE2IndexedEncryptedValueV2_get_substr_metadata(iev, &metadata, i - 1, status));
|
367
|
+
} else if (i < suffix_tag_count + substr_tag_count + 1) {
|
368
|
+
ASSERT(mc_FLE2IndexedEncryptedValueV2_get_suffix_metadata(iev,
|
369
|
+
&metadata,
|
370
|
+
i - substr_tag_count - 1,
|
371
|
+
status));
|
372
|
+
} else {
|
373
|
+
ASSERT(mc_FLE2IndexedEncryptedValueV2_get_prefix_metadata(iev,
|
374
|
+
&metadata,
|
375
|
+
i - substr_tag_count - suffix_tag_count - 1,
|
376
|
+
status));
|
377
|
+
}
|
378
|
+
} else if (test->type == kTypeRange) {
|
222
379
|
ASSERT(mc_FLE2IndexedEncryptedValueV2_get_edge(iev, &metadata, i, status));
|
223
380
|
} else {
|
224
381
|
ASSERT(mc_FLE2IndexedEncryptedValueV2_get_metadata(iev, &metadata, status));
|
@@ -230,7 +387,6 @@ static void _mc_fle2_iev_v2_test_run(_mongocrypt_tester_t *tester, _mc_fle2_iev_
|
|
230
387
|
|
231
388
|
// All done!
|
232
389
|
mc_FLE2IndexedEncryptedValueV2_destroy(iev);
|
233
|
-
mongocrypt_destroy(crypt);
|
234
390
|
mongocrypt_status_destroy(status);
|
235
391
|
}
|
236
392
|
|
@@ -293,8 +449,101 @@ static void _mc_fle2_iev_v2_test_explicit_ctx(_mongocrypt_tester_t *tester, _mc_
|
|
293
449
|
mongocrypt_status_destroy(status);
|
294
450
|
}
|
295
451
|
|
296
|
-
static void
|
297
|
-
|
452
|
+
static void _mc_fle2_iev_v2_validate(_mongocrypt_tester_t *tester, _mc_fle2_iev_v2_test *test) {
|
453
|
+
mongocrypt_status_t *status = mongocrypt_status_new();
|
454
|
+
|
455
|
+
mc_FLE2IndexedEncryptedValueV2_t *iev = mc_FLE2IndexedEncryptedValueV2_new();
|
456
|
+
|
457
|
+
// Parse payload.
|
458
|
+
ASSERT_OK_STATUS(mc_FLE2IndexedEncryptedValueV2_parse(iev, &test->payload, status), status);
|
459
|
+
|
460
|
+
// Assert valid IEV.
|
461
|
+
ASSERT_OK_STATUS(mc_FLE2IndexedEncryptedValueV2_validate(iev, status), status);
|
462
|
+
|
463
|
+
// Modify each value on the IEV to be invalid and assert failure, then change back to valid value.
|
464
|
+
mc_fle_blob_subtype_t temp_fle_blob_subtype = iev->fle_blob_subtype;
|
465
|
+
iev->fle_blob_subtype = MC_SUBTYPE_FLE2UnindexedEncryptedValueV2;
|
466
|
+
ASSERT(!mc_FLE2IndexedEncryptedValueV2_validate(iev, status));
|
467
|
+
iev->fle_blob_subtype = temp_fle_blob_subtype;
|
468
|
+
|
469
|
+
uint8_t temp_bson_value_type = iev->bson_value_type;
|
470
|
+
iev->bson_value_type = BSON_TYPE_ARRAY;
|
471
|
+
ASSERT(!mc_FLE2IndexedEncryptedValueV2_validate(iev, status));
|
472
|
+
iev->bson_value_type = temp_bson_value_type;
|
473
|
+
|
474
|
+
uint32_t temp_edge_count = iev->edge_count;
|
475
|
+
iev->edge_count = 0;
|
476
|
+
ASSERT(!mc_FLE2IndexedEncryptedValueV2_validate(iev, status));
|
477
|
+
iev->edge_count = temp_edge_count;
|
478
|
+
if (test->type == kTypeEquality) {
|
479
|
+
iev->edge_count = 5;
|
480
|
+
ASSERT(!mc_FLE2IndexedEncryptedValueV2_validate(iev, status));
|
481
|
+
iev->edge_count = temp_edge_count;
|
482
|
+
} else if (test->type == kTypeText) {
|
483
|
+
uint32_t temp_substr_count = iev->substr_tag_count;
|
484
|
+
uint32_t temp_suffix_count = iev->suffix_tag_count;
|
485
|
+
|
486
|
+
iev->substr_tag_count = iev->edge_count;
|
487
|
+
ASSERT(!mc_FLE2IndexedEncryptedValueV2_validate(iev, status));
|
488
|
+
iev->substr_tag_count = temp_substr_count;
|
489
|
+
|
490
|
+
iev->suffix_tag_count = iev->edge_count;
|
491
|
+
ASSERT(!mc_FLE2IndexedEncryptedValueV2_validate(iev, status));
|
492
|
+
iev->suffix_tag_count = temp_suffix_count;
|
493
|
+
}
|
494
|
+
|
495
|
+
_mongocrypt_buffer_resize(&iev->ServerEncryptedValue, kMinServerEncryptedValueLen - 1);
|
496
|
+
ASSERT(!mc_FLE2IndexedEncryptedValueV2_validate(iev, status));
|
497
|
+
_mongocrypt_buffer_resize(&iev->ServerEncryptedValue, kMinServerEncryptedValueLen);
|
498
|
+
|
499
|
+
_mongocrypt_buffer_resize(&iev->S_KeyId, UUID_LEN - 1);
|
500
|
+
ASSERT(!mc_FLE2IndexedEncryptedValueV2_validate(iev, status));
|
501
|
+
_mongocrypt_buffer_resize(&iev->S_KeyId, UUID_LEN);
|
502
|
+
|
503
|
+
bool temp_CVD = iev->ClientValueDecoded;
|
504
|
+
bool temp_CEVD = iev->ClientEncryptedValueDecoded;
|
505
|
+
iev->ClientValueDecoded = true;
|
506
|
+
iev->ClientEncryptedValueDecoded = false;
|
507
|
+
ASSERT(!mc_FLE2IndexedEncryptedValueV2_validate(iev, status));
|
508
|
+
iev->ClientValueDecoded = false;
|
509
|
+
_mongocrypt_status_reset(status);
|
510
|
+
ASSERT_OK_STATUS(mc_FLE2IndexedEncryptedValueV2_validate(iev, status), status);
|
511
|
+
iev->ClientValueDecoded = temp_CVD;
|
512
|
+
iev->ClientEncryptedValueDecoded = temp_CEVD;
|
513
|
+
|
514
|
+
if (iev->ClientEncryptedValueDecoded) {
|
515
|
+
uint32_t temp_DSEV_len = iev->DecryptedServerEncryptedValue.len;
|
516
|
+
_mongocrypt_buffer_resize(&iev->DecryptedServerEncryptedValue, temp_DSEV_len - 1);
|
517
|
+
ASSERT(!mc_FLE2IndexedEncryptedValueV2_validate(iev, status));
|
518
|
+
_mongocrypt_buffer_resize(&iev->DecryptedServerEncryptedValue, temp_DSEV_len);
|
519
|
+
|
520
|
+
uint32_t temp_CEV_len = iev->ClientEncryptedValue.len;
|
521
|
+
_mongocrypt_buffer_resize(&iev->ClientEncryptedValue, temp_CEV_len - 1);
|
522
|
+
ASSERT(!mc_FLE2IndexedEncryptedValueV2_validate(iev, status));
|
523
|
+
_mongocrypt_buffer_resize(&iev->ClientEncryptedValue, temp_CEV_len);
|
524
|
+
|
525
|
+
_mongocrypt_buffer_resize(&iev->K_KeyId, UUID_LEN - 1);
|
526
|
+
ASSERT(!mc_FLE2IndexedEncryptedValueV2_validate(iev, status));
|
527
|
+
_mongocrypt_buffer_resize(&iev->K_KeyId, UUID_LEN);
|
528
|
+
}
|
529
|
+
|
530
|
+
if (iev->ClientValueDecoded) {
|
531
|
+
uint32_t temp_CV_len = iev->ClientValue.len;
|
532
|
+
_mongocrypt_buffer_resize(&iev->ClientValue, temp_CV_len - 1);
|
533
|
+
ASSERT(!mc_FLE2IndexedEncryptedValueV2_validate(iev, status));
|
534
|
+
_mongocrypt_buffer_resize(&iev->ClientValue, temp_CV_len);
|
535
|
+
}
|
536
|
+
|
537
|
+
// IEV should still be valid.
|
538
|
+
_mongocrypt_status_reset(status);
|
539
|
+
ASSERT_OK_STATUS(mc_FLE2IndexedEncryptedValueV2_validate(iev, status), status);
|
540
|
+
|
541
|
+
mc_FLE2IndexedEncryptedValueV2_destroy(iev);
|
542
|
+
mongocrypt_status_destroy(status);
|
543
|
+
}
|
544
|
+
|
545
|
+
static void test_fle2_iev_v2_test(mongocrypt_t *crypt, _mongocrypt_tester_t *tester, const char *path) {
|
546
|
+
TEST_PRINTF("Loading test from %s...\n", path);
|
298
547
|
|
299
548
|
mongocrypt_binary_t *test_bin = TEST_FILE(path);
|
300
549
|
if (!test_bin) {
|
@@ -312,21 +561,34 @@ static void test_fle2_iev_v2_test(_mongocrypt_tester_t *tester, const char *path
|
|
312
561
|
bson_iter_t iter;
|
313
562
|
ASSERT(bson_iter_init(&iter, &test_bson));
|
314
563
|
ASSERT(_mc_fle2_iev_v2_test_parse(&test, &iter));
|
315
|
-
|
564
|
+
// Run once with given payload, then run with empty payload (self-test).
|
565
|
+
_mc_fle2_iev_v2_test_run(crypt, tester, &test);
|
566
|
+
_mongocrypt_buffer_cleanup(&test.payload);
|
567
|
+
test.payload.data = NULL;
|
568
|
+
_mc_fle2_iev_v2_test_run(crypt, tester, &test);
|
569
|
+
|
316
570
|
_mc_fle2_iev_v2_test_explicit_ctx(tester, &test);
|
571
|
+
_mc_fle2_iev_v2_validate(tester, &test);
|
317
572
|
_mc_fle2_iev_v2_test_destroy(&test);
|
318
573
|
}
|
319
574
|
|
320
575
|
static void test_fle2_iev_v2(_mongocrypt_tester_t *tester) {
|
321
576
|
if (!_aes_ctr_is_supported_by_os) {
|
322
|
-
|
577
|
+
TEST_PRINTF("Common Crypto with no CTR support detected. Skipping.");
|
323
578
|
return;
|
324
579
|
}
|
325
|
-
|
326
|
-
//
|
327
|
-
test_fle2_iev_v2_test(tester, "test/data/iev-v2/FLECrudTest-insertOneV2.json");
|
328
|
-
//
|
329
|
-
test_fle2_iev_v2_test(tester, "test/data/iev-v2/FLECrudTest-insertOneRangeV2.json");
|
580
|
+
mongocrypt_t *crypt = _mongocrypt_tester_mongocrypt(TESTER_MONGOCRYPT_DEFAULT);
|
581
|
+
// Produced by Server test: (FLECrudTest, insertOneV2)
|
582
|
+
test_fle2_iev_v2_test(crypt, tester, "test/data/iev-v2/FLECrudTest-insertOneV2.json");
|
583
|
+
// Produced by Server test: (FLECrudTest, insertOneRangeV2)
|
584
|
+
test_fle2_iev_v2_test(crypt, tester, "test/data/iev-v2/FLECrudTest-insertOneRangeV2.json");
|
585
|
+
// Fields are modified from insertOneRangeV2.json, payload was produced by _mc_fle2_iev_v2_test_serialize_payload in
|
586
|
+
// this test
|
587
|
+
test_fle2_iev_v2_test(crypt, tester, "test/data/iev-v2/FLECrudTest-insertOneText.json");
|
588
|
+
// Fields are modified from insertOneText.json, payload was produced by _mc_fle2_iev_v2_test_serialize_payload in
|
589
|
+
// this test
|
590
|
+
test_fle2_iev_v2_test(crypt, tester, "test/data/iev-v2/FLECrudTest-insertOneTextLarge.json");
|
591
|
+
mongocrypt_destroy(crypt);
|
330
592
|
}
|
331
593
|
|
332
594
|
void _mongocrypt_tester_install_fle2_iev_v2_payloads(_mongocrypt_tester_t *tester) {
|
@@ -171,7 +171,7 @@ static void test_FLE2IndexedEqualityEncryptedValue_decrypt(_mongocrypt_tester_t
|
|
171
171
|
mongocrypt_t *crypt;
|
172
172
|
|
173
173
|
if (!_aes_ctr_is_supported_by_os) {
|
174
|
-
|
174
|
+
TEST_PRINTF("Common Crypto with no CTR support detected. Skipping.");
|
175
175
|
return;
|
176
176
|
}
|
177
177
|
|
@@ -107,7 +107,7 @@ static void _test_mc_FLE2InsertUpdatePayloadV2_decrypt(_mongocrypt_tester_t *tes
|
|
107
107
|
mongocrypt_t *crypt;
|
108
108
|
|
109
109
|
if (!_aes_ctr_is_supported_by_os) {
|
110
|
-
|
110
|
+
TEST_PRINTF("Common Crypto with no CTR support detected. Skipping.");
|
111
111
|
return;
|
112
112
|
}
|
113
113
|
|
@@ -242,9 +242,31 @@ static void _test_mc_FLE2InsertUpdatePayloadV2_parses_crypto_params(_mongocrypt_
|
|
242
242
|
mc_FLE2InsertUpdatePayloadV2_cleanup(&got);
|
243
243
|
}
|
244
244
|
|
245
|
+
static void _test_mc_FLE2InsertUpdatePayloadV2_parse_errors(_mongocrypt_tester_t *tester) {
|
246
|
+
bson_t *input_bson = TMP_BSON(BSON_STR({
|
247
|
+
"d" : {"$binary" : {"base64" : "AAAA", "subType" : "00"}}, //
|
248
|
+
"t" : "wrong type!"
|
249
|
+
}));
|
250
|
+
_mongocrypt_buffer_t input_buf;
|
251
|
+
_mongocrypt_buffer_init_size(&input_buf, 1 + input_bson->len);
|
252
|
+
input_buf.data[0] = (uint8_t)MC_SUBTYPE_FLE2InsertUpdatePayloadV2;
|
253
|
+
memcpy(input_buf.data + 1, bson_get_data(input_bson), input_bson->len);
|
254
|
+
|
255
|
+
mc_FLE2InsertUpdatePayloadV2_t payload;
|
256
|
+
mc_FLE2InsertUpdatePayloadV2_init(&payload);
|
257
|
+
mongocrypt_status_t *status = mongocrypt_status_new();
|
258
|
+
ASSERT_FAILS_STATUS(mc_FLE2InsertUpdatePayloadV2_parse(&payload, &input_buf, status),
|
259
|
+
status,
|
260
|
+
"Field 't' expected to hold an int32");
|
261
|
+
mc_FLE2InsertUpdatePayloadV2_cleanup(&payload);
|
262
|
+
mongocrypt_status_destroy(status);
|
263
|
+
_mongocrypt_buffer_cleanup(&input_buf);
|
264
|
+
}
|
265
|
+
|
245
266
|
void _mongocrypt_tester_install_fle2_payload_iup_v2(_mongocrypt_tester_t *tester) {
|
246
267
|
INSTALL_TEST(_test_FLE2InsertUpdatePayloadV2_parse);
|
247
268
|
INSTALL_TEST(_test_mc_FLE2InsertUpdatePayloadV2_decrypt);
|
248
269
|
INSTALL_TEST(_test_mc_FLE2InsertUpdatePayloadV2_includes_crypto_params);
|
249
270
|
INSTALL_TEST(_test_mc_FLE2InsertUpdatePayloadV2_parses_crypto_params);
|
271
|
+
INSTALL_TEST(_test_mc_FLE2InsertUpdatePayloadV2_parse_errors);
|
250
272
|
}
|
@@ -14,6 +14,7 @@
|
|
14
14
|
* limitations under the License.
|
15
15
|
*/
|
16
16
|
|
17
|
+
#include "mc-fle-blob-subtype-private.h"
|
17
18
|
#include "mc-fle2-insert-update-payload-private.h"
|
18
19
|
#include "test-mongocrypt.h"
|
19
20
|
|
@@ -100,7 +101,7 @@ static void test_FLE2InsertUpdatePayload_decrypt(_mongocrypt_tester_t *tester) {
|
|
100
101
|
mongocrypt_t *crypt;
|
101
102
|
|
102
103
|
if (!_aes_ctr_is_supported_by_os) {
|
103
|
-
|
104
|
+
TEST_PRINTF("Common Crypto with no CTR support detected. Skipping.");
|
104
105
|
return;
|
105
106
|
}
|
106
107
|
|
@@ -160,7 +161,29 @@ static void test_FLE2InsertUpdatePayload_decrypt(_mongocrypt_tester_t *tester) {
|
|
160
161
|
|
161
162
|
#undef TEST_IUP_HEX
|
162
163
|
|
164
|
+
static void test_FLE2InsertUpdatePayload_parse_errors(_mongocrypt_tester_t *tester) {
|
165
|
+
bson_t *input_bson = TMP_BSON(BSON_STR({
|
166
|
+
"d" : {"$binary" : {"base64" : "AAAA", "subType" : "00"}}, //
|
167
|
+
"t" : "wrong type!"
|
168
|
+
}));
|
169
|
+
_mongocrypt_buffer_t input_buf;
|
170
|
+
_mongocrypt_buffer_init_size(&input_buf, 1 + input_bson->len);
|
171
|
+
input_buf.data[0] = (uint8_t)MC_SUBTYPE_FLE2InsertUpdatePayload;
|
172
|
+
memcpy(input_buf.data + 1, bson_get_data(input_bson), input_bson->len);
|
173
|
+
|
174
|
+
mc_FLE2InsertUpdatePayload_t payload;
|
175
|
+
mc_FLE2InsertUpdatePayload_init(&payload);
|
176
|
+
mongocrypt_status_t *status = mongocrypt_status_new();
|
177
|
+
ASSERT_FAILS_STATUS(mc_FLE2InsertUpdatePayload_parse(&payload, &input_buf, status),
|
178
|
+
status,
|
179
|
+
"Field 't' expected to hold an int32");
|
180
|
+
mc_FLE2InsertUpdatePayload_cleanup(&payload);
|
181
|
+
mongocrypt_status_destroy(status);
|
182
|
+
_mongocrypt_buffer_cleanup(&input_buf);
|
183
|
+
}
|
184
|
+
|
163
185
|
void _mongocrypt_tester_install_fle2_payload_iup(_mongocrypt_tester_t *tester) {
|
164
186
|
INSTALL_TEST(test_FLE2InsertUpdatePayload_parse);
|
165
187
|
INSTALL_TEST(test_FLE2InsertUpdatePayload_decrypt);
|
188
|
+
INSTALL_TEST(test_FLE2InsertUpdatePayload_parse_errors);
|
166
189
|
}
|
@@ -125,7 +125,7 @@ static void test_FLE2UnindexedEncryptedValue_decrypt(_mongocrypt_tester_t *teste
|
|
125
125
|
mongocrypt_t *crypt;
|
126
126
|
|
127
127
|
if (!_aes_ctr_is_supported_by_os) {
|
128
|
-
|
128
|
+
TEST_PRINTF("Common Crypto with no CTR support detected. Skipping.");
|
129
129
|
return;
|
130
130
|
}
|
131
131
|
|
@@ -201,7 +201,7 @@ static void test_FLE2UnindexedEncryptedValue_decrypt(_mongocrypt_tester_t *teste
|
|
201
201
|
|
202
202
|
static void test_FLE2UnindexedEncryptedValue_encrypt(_mongocrypt_tester_t *tester) {
|
203
203
|
if (!_aes_ctr_is_supported_by_os) {
|
204
|
-
|
204
|
+
TEST_PRINTF("Common Crypto with no CTR support detected. Skipping.");
|
205
205
|
return;
|
206
206
|
}
|
207
207
|
|
@@ -92,7 +92,7 @@ static void test_mc_FLE2RangeFindDriverSpec_parse(_mongocrypt_tester_t *tester)
|
|
92
92
|
testcase *test = tests + i;
|
93
93
|
mongocrypt_status_t *status = mongocrypt_status_new();
|
94
94
|
mc_FLE2RangeFindDriverSpec_t rfds;
|
95
|
-
|
95
|
+
TEST_PRINTF("running subtest: %s\n", test->desc);
|
96
96
|
bool ret = mc_FLE2RangeFindDriverSpec_parse(&rfds, TMP_BSON(test->in), status);
|
97
97
|
if (!test->expectError) {
|
98
98
|
ASSERT_OK_STATUS(ret, status);
|
@@ -329,7 +329,7 @@ static void test_mc_FLE2RangeFindDriverSpec_to_placeholders(_mongocrypt_tester_t
|
|
329
329
|
|
330
330
|
for (size_t i = 0; i < sizeof(tests) / sizeof(tests[0]); i++) {
|
331
331
|
testcase_t *test = tests + i;
|
332
|
-
|
332
|
+
TEST_PRINTF("running subtest: %s : %s\n", test->desc, test->in);
|
333
333
|
ASSERT_OK_STATUS(mc_FLE2RangeFindDriverSpec_parse(&spec, TMP_BSON(test->in), status), status);
|
334
334
|
|
335
335
|
// Create the expected document.
|
@@ -49,8 +49,43 @@ static void _test_mc_FLE2TagAndEncryptedMetadataBlock_roundtrip(_mongocrypt_test
|
|
49
49
|
_mongocrypt_buffer_cleanup(&output);
|
50
50
|
}
|
51
51
|
|
52
|
+
static void _test_mc_FLE2TagAndEncryptedMetadataBlock_validate(_mongocrypt_tester_t *tester) {
|
53
|
+
_mongocrypt_buffer_t input;
|
54
|
+
_mongocrypt_buffer_copy_from_hex(&input, TEST_TAG_AND_ENCRYPTED_METADATA_BLOCK);
|
55
|
+
|
56
|
+
mongocrypt_status_t *status = mongocrypt_status_new();
|
57
|
+
|
58
|
+
mc_FLE2TagAndEncryptedMetadataBlock_t metadata;
|
59
|
+
mc_FLE2TagAndEncryptedMetadataBlock_init(&metadata);
|
60
|
+
|
61
|
+
// Parse into metadata struct.
|
62
|
+
ASSERT_OK_STATUS(mc_FLE2TagAndEncryptedMetadataBlock_parse(&metadata, &input, status), status);
|
63
|
+
|
64
|
+
ASSERT_OK_STATUS(mc_FLE2TagAndEncryptedMetadataBlock_validate(&metadata, status), status);
|
65
|
+
|
66
|
+
// Modify each value on the metadata block to be invalid and assert failure, then change back to valid value.
|
67
|
+
_mongocrypt_buffer_resize(&metadata.encryptedCount, kFieldLen - 1);
|
68
|
+
ASSERT(!mc_FLE2TagAndEncryptedMetadataBlock_validate(&metadata, status));
|
69
|
+
_mongocrypt_buffer_resize(&metadata.encryptedCount, kFieldLen);
|
70
|
+
|
71
|
+
_mongocrypt_buffer_resize(&metadata.tag, kFieldLen - 1);
|
72
|
+
ASSERT(!mc_FLE2TagAndEncryptedMetadataBlock_validate(&metadata, status));
|
73
|
+
_mongocrypt_buffer_resize(&metadata.tag, kFieldLen);
|
74
|
+
|
75
|
+
_mongocrypt_buffer_resize(&metadata.encryptedZeros, kFieldLen - 1);
|
76
|
+
ASSERT(!mc_FLE2TagAndEncryptedMetadataBlock_validate(&metadata, status));
|
77
|
+
_mongocrypt_buffer_resize(&metadata.encryptedZeros, kFieldLen);
|
78
|
+
|
79
|
+
// Metadata block should be valid.
|
80
|
+
ASSERT(mc_FLE2TagAndEncryptedMetadataBlock_validate(&metadata, status));
|
81
|
+
_mongocrypt_buffer_cleanup(&input);
|
82
|
+
mc_FLE2TagAndEncryptedMetadataBlock_cleanup(&metadata);
|
83
|
+
mongocrypt_status_destroy(status);
|
84
|
+
}
|
85
|
+
|
52
86
|
#undef TEST_TAG_AND_ENCRYPTED_METADATA_BLOCK
|
53
87
|
|
54
88
|
void _mongocrypt_tester_install_fle2_tag_and_encrypted_metadata_block(_mongocrypt_tester_t *tester) {
|
55
89
|
INSTALL_TEST(_test_mc_FLE2TagAndEncryptedMetadataBlock_roundtrip);
|
56
|
-
|
90
|
+
INSTALL_TEST(_test_mc_FLE2TagAndEncryptedMetadataBlock_validate);
|
91
|
+
}
|
@@ -38,20 +38,19 @@ typedef struct {
|
|
38
38
|
#undef MAX_INT32_EDGES
|
39
39
|
|
40
40
|
static void print_edges_compared(mc_edges_t *edgesGot, const char *const *edgesExpected) {
|
41
|
-
|
42
|
-
fprintf(stderr, "edges got ... begin\n");
|
41
|
+
TEST_STDERR_PRINTF("edges got ... begin\n");
|
43
42
|
for (size_t i = 0; i < mc_edges_len(edgesGot); i++) {
|
44
|
-
|
43
|
+
TEST_STDERR_PRINTF(" %s\n", mc_edges_get(edgesGot, i));
|
45
44
|
}
|
46
|
-
|
45
|
+
TEST_STDERR_PRINTF("edges got ... end\n");
|
47
46
|
|
48
|
-
|
47
|
+
TEST_STDERR_PRINTF("edges expected ... begin\n");
|
49
48
|
const char *const *iter = edgesExpected;
|
50
49
|
while (*iter != NULL) {
|
51
|
-
|
50
|
+
TEST_STDERR_PRINTF(" %s\n", *iter);
|
52
51
|
iter++;
|
53
52
|
}
|
54
|
-
|
53
|
+
TEST_STDERR_PRINTF("edges expected ... end\n");
|
55
54
|
}
|
56
55
|
|
57
56
|
static void _test_getEdgesInt32(_mongocrypt_tester_t *tester) {
|