Uploaded image for project: 'Node.js Driver'
  1. Node.js Driver
  2. NODE-4330

Implement the Key Management API

    • Not Needed

      Acceptance Criteria

      In libmongocrypt

      • Add the following new methods to the ClientEncryption class
        • deleteKey(id: Binary): DeleteResult
        • getKey(id: Binary): Optional<Document>
        • getKeys(): Iterable<Document>
        • addKeyAltName(id: Binary, keyAltName: String): Optional<Document>
        • removeKeyAltName(id: Binary, keyAltName: String): Optional<Document>
          • Implement the functionality with a single update that uses an aggregation expression (NODE-4312)
        • getKeyByAltName(keyAltName: String): Optional<Document>

      In the driver

      • Unskip unified csfle tests for each of the following methods:
        • deleteKey(id: Binary): DeleteResult
        • getKey(id: Binary): Optional<Document>
        • getKeys(): Iterable<Document>
        • addKeyAltName(id: Binary, keyAltName: String): Optional<Document>
        • removeKeyAltName(id: Binary, keyAltName: String): Optional<Document>
        • getKeyByAltName(keyAltName: String): Optional<Document>

      References

      • The ClientEncryption API is documented here.
      • Anna has completed the work to add support for custom key material and rewrapManyDataKey here
      • mongosh has implemented support for these methods in the shell.  Their implementation can serve as a reference, available here]

      Additional AC

      • Investigate triggering our driver's tests from libmongocrypt 
      • If this turns out to be too much effort for this work, file a ticket 

        There are no Sub-Tasks for this issue.

            Assignee:
            bailey.pearson@mongodb.com Bailey Pearson
            Reporter:
            bailey.pearson@mongodb.com Bailey Pearson
            Bailey Pearson
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: