Uploaded image for project: 'Drivers'
  1. Drivers
  2. DRIVERS-1950

FLE 1.0 Shared Library

    • Type: Icon: Epic Epic
    • Resolution: Done
    • Priority: Icon: Major - P3 Major - P3
    • None
    • Component/s: None
    • Labels:
    • Needed
    • Hide

      New C++ shared library for doing FLE query analysis available on MongoDB supported platforms. This will be consumed by libmongocrypt in drivers at runtime.

      Release - new tarballs and packages will be product, feeds will need to be updated
      Drivers - libmongocrypt will need to be updated to use it. Drivers will need to be updated to stop depending on mongocryptd
      Compass/DevTools - MongoSH/others can stop packaging mongocryptd

      Show
      New C++ shared library for doing FLE query analysis available on MongoDB supported platforms. This will be consumed by libmongocrypt in drivers at runtime. Release - new tarballs and packages will be product, feeds will need to be updated Drivers - libmongocrypt will need to be updated to use it. Drivers will need to be updated to stop depending on mongocryptd Compass/DevTools - MongoSH/others can stop packaging mongocryptd
    • Hide

      Note: the following instructions do not account for the rename of the shared library. Please also see DRIVERS-2338.

      The csfle shared library is a new component that replaces the mongocryptd process. csfle is loaded by libmongocrypt at runtime.

      Please see the following specifications PRs for a description of the driver changes:

      Please see the C driver implementation for reference.

      Bindings changes

      Upgrade libmongocrypt dependency to 1.5.0. Drivers can use 1.5.0-alpha0 to test. Binaries are available from this upload-all task.

      Update the bindings to libmongocrypt to add the new functions:

      • mongocrypt_csfle_version_string
      • mongocrypt_csfle_version
      • mongocrypt_setopt_append_csfle_search_path
      • mongocrypt_setopt_set_csfle_lib_path_override

      Driver changes

      Pass AutoEncryptionOpts.extraOptions.csflePath to libmongocrypt with {} mongocrypt_setopt_set_crypt_shared_lib_path_override.

      If AutoEncryptionOpts.bypassAutoEncryption is unset or false, pass "$SYSTEM" to mongocrypt_setopt_append_csfle_search_path for the mongocrypt_t in a MongoClient configured with AutoEncryptionOpts.

      If AutoEncryptionOpts.extraOptions.csfleRequired is true, error if csfle is not loaded. Determine if csfle is loaded by checking if mongocrypt_csfle_version_string is NULL.

      Do not attempt to spawn mongocryptd if csfle is loaded.

      Test changes

      Please see https://github.com/mongodb/specifications/pull/1199 for a description of test changes.

      Please see https://github.com/mongodb-labs/drivers-evergreen-tools/pull/196 for a script to download the csfle shared library.

      Show
      Note : the following instructions do not account for the rename of the shared library. Please also see DRIVERS-2338. The csfle shared library is a new component that replaces the mongocryptd process. csfle is loaded by libmongocrypt at runtime. Please see the following specifications PRs for a description of the driver changes: https://github.com/mongodb/specifications/pull/1165 https://github.com/mongodb/specifications/pull/1185 Please see the C driver implementation for reference. Bindings changes Upgrade libmongocrypt dependency to 1.5.0. Drivers can use 1.5.0-alpha0 to test. Binaries are available from this upload-all task . Update the bindings to libmongocrypt to add the new functions: mongocrypt_csfle_version_string mongocrypt_csfle_version mongocrypt_setopt_append_csfle_search_path mongocrypt_setopt_set_csfle_lib_path_override Driver changes Pass AutoEncryptionOpts.extraOptions.csflePath to libmongocrypt with { } mongocrypt_setopt_set_crypt_shared_lib_path_override . If AutoEncryptionOpts.bypassAutoEncryption is unset or false, pass "$SYSTEM" to mongocrypt_setopt_append_csfle_search_path for the mongocrypt_t in a MongoClient configured with AutoEncryptionOpts . If AutoEncryptionOpts.extraOptions.csfleRequired is true, error if csfle is not loaded. Determine if csfle is loaded by checking if mongocrypt_csfle_version_string is NULL. Do not attempt to spawn mongocryptd if csfle is loaded. Test changes Please see https://github.com/mongodb/specifications/pull/1199 for a description of test changes. Please see https://github.com/mongodb-labs/drivers-evergreen-tools/pull/196 for a script to download the csfle shared library.
    • 100
    • Hide

      Summary: Support the csfle shared library, which replaces mongocryptd.

      Author: Colby

      2022-05-03:

      • C implementation is complete
      • Go and .NET implementations will start this week

      2022-04-19:

      • Changes in draft review and Colby is working on tests

      2022-04-05:

      • Colby is actively working on the spec changes

      Show
      Summary: Support the csfle shared library, which replaces mongocryptd. Author: Colby 2022-05-03: C implementation is complete Go and .NET implementations will start this week 2022-04-19: Changes in draft review and Colby is working on tests 2022-04-05: Colby is actively working on the spec changes
    • $i18n.getText("admin.common.words.hide")
      Key Status/Resolution FixVersion
      CDRIVER-4272 Fixed 1.22.0, 1.22.0-beta0
      CXX-2433 Done 3.8.0
      CSHARP-4022 Fixed 2.16.0
      GODRIVER-2288 Fixed 1.10.0
      JAVA-4458 Fixed 4.7.0
      NODE-3912 Done 4.9.0
      MOTOR-874 Duplicate
      PYTHON-3081 Fixed 4.2
      PHPC-2045 Fixed 1.14.0
      RUBY-2886 Done 2.18.1
      RUST-1161 Duplicate
      SWIFT-1467 Duplicate
      $i18n.getText("admin.common.words.show")
      #scriptField, #scriptField *{ border: 1px solid black; } #scriptField{ border-collapse: collapse; } #scriptField td { text-align: center; /* Center-align text in table cells */ } #scriptField td.key { text-align: left; /* Left-align text in the Key column */ } #scriptField a { text-decoration: none; /* Remove underlines from links */ border: none; /* Remove border from links */ } /* Add green background color to cells with FixVersion */ #scriptField td.hasFixVersion { background-color: #00FF00; /* Green color code */ } /* Center-align the first row headers */ #scriptField th { text-align: center; } Key Status/Resolution FixVersion CDRIVER-4272 Fixed 1.22.0, 1.22.0-beta0 CXX-2433 Done 3.8.0 CSHARP-4022 Fixed 2.16.0 GODRIVER-2288 Fixed 1.10.0 JAVA-4458 Fixed 4.7.0 NODE-3912 Done 4.9.0 MOTOR-874 Duplicate PYTHON-3081 Fixed 4.2 PHPC-2045 Fixed 1.14.0 RUBY-2886 Done 2.18.1 RUST-1161 Duplicate SWIFT-1467 Duplicate

      Summary

      Support the csfle shared library, which replaces mongocryptd.

      Motivation

      Who is the affected end user?

      Users of CSFLE.

      How does this affect the end user?

      End users no longer need to have a separate mongocryptd process running.

      Is this issue urgent?

      MongoDB 6.0.

      Is this ticket required by a downstream team?

      Shell.

      Is this ticket only for tests?

      No. There is functional impact.

            Assignee:
            Unassigned Unassigned
            Reporter:
            esha.bhargava@mongodb.com Esha Bhargava
            Kevin Albertson Kevin Albertson
            Rachelle Palmer Rachelle Palmer
            Esha Bhargava Esha Bhargava
            Votes:
            0 Vote for this issue
            Watchers:
            9 Start watching this issue

              Created:
              Updated:
              Resolved: