ClientEncryption.decrypt() (original) (raw)

ClientEncryption.decrypt(encryptedValue)

ClientEncryption.decrypt() decrypts the encryptionValue _if_the current database connection was configured with access to the Key Management Service (KMS) and key vault used to encrypt encryptionValue.

Returns: The decrypted value.

This command is available in deployments hosted in the following environments:

ClientEncryption.decrypt has the following syntax:


clientEncryption = db.getMongo().getClientEncryption()

clientEncryption.decrypt(encryptedValue)

The encryptedValue must be a binary data object with subtype 6created using client-side field level encryption.

Read operations issued from a database connection configuredwith access to the correct Key Management Service (KMS) and Key Vault can automatically decrypt field values encrypted usingClientEncryption.encrypt(). Clients only need to usedecrypt() to decrypt Binary subtype 6 values not stored within a document field.

The mongosh client-side field level encryption methods require a database connection with client-side field level encryption enabled. If the current database connection was not initiated with client-side field level encryption enabled, either:

The following example uses a locally managed KMS for the client-side field level encryption configuration.

  1. Start mongosh
    Run:
    --nodb means don't connect to a database.
  2. Generate a Key String
    Generate a base 64 96-byte string:
const TEST_LOCAL_KEY = require("crypto").randomBytes(96).toString("base64")  
  1. Create an Encryption Options Object
    To create a client-side field level encryption options object, use the TEST_LOCAL_KEY string from the previous step:
   var autoEncryptionOpts = {  
      "keyVaultNamespace" : "encryption.__dataKeys",  
      "kmsProviders" : {  
         "local" : {  
            "key" : BinData(0, TEST_LOCAL_KEY)  
         }  
      }  
   }  
  1. Create an Encrypted Client Object
    To create an encrypted client object, use the Mongo()constructor. Replace the mongodb://myMongo.example.net URI with the connection string URI for the target cluster. For example:
encryptedClient = Mongo(  
   "mongodb://myMongo.example.net:27017/?replSetName=myMongo",  
   autoEncryptionOpts  
)  

Retrieve the ClientEncryption object and use the ClientEncryption.decrypt() method to decrypt a value encrypted by ClientEncryption.encrypt().


clientEncryption = encryptedClient.getClientEncryption();

clientEncryption.decrypt(BinData(6,"AmTi2H3xaEk8u9+jlFNaLLkC3Q/+kmwDbbWrq+h9nuv9W+u7A5a0UnpULBNZH+Q21fAztPpU09wpKPrju9dKfpN1Afpj1/ZhFcH6LYZOWSBBOAuUNjPLxMNSYOOuITuuYWo="))

If successful, decrypt() returns the decrypted value:

For complete documentation on initiating MongoDB connections with client-side field level encryption enabled, see Mongo().