# mongoc_client_encryption_encrypt()

## Synopsis

    bool
    mongoc_client_encryption_encrypt (
       mongoc_client_encryption_t *client_encryption,
       const bson_value_t *value,
       mongoc_client_encryption_encrypt_opts_t *opts,
       bson_value_t *ciphertext,
       bson_error_t *error);

Performs explicit encryption.

`ciphertext` is always initialized (even on failure). Caller must call `bson_value_destroy()` to free.

To insert or query with an “Indexed” encrypted payload, use a mongoc_client_t configured with mongoc_auto_encryption_opts_t. The mongoc_auto_encryption_opts_t may be configured to bypass query analysis with mongoc_auto_encryption_opts_set_bypass_query_analysis(). The mongoc_auto_encryption_opts_t must not be configured to bypass automatic encryption with mongoc_auto_encryption_opts_set_bypass_auto_encryption(). Note that the `"Indexed"` payload type is part of the experimental Queryable Encryption API and may be subject to breaking changes in future releases.

## Parameters

- `client_encryption`: A mongoc_client_encryption_t

- `value`: The value to encrypt.

- `opts`: A mongoc_client_encryption_encrypt_opts_t.

- `ciphertext`: A `bson_value_t` for the resulting ciphertext (a BSON binary with subtype 6).

- `error`: A `bson_error_t` set on failure.

## Returns

Returns `true` if successful. Returns `false` and sets `error` otherwise.

See also

mongoc_client_encryption_encrypt_opts_t
mongoc_client_enable_auto_encryption()
mongoc_client_decryption_decrypt()