@@ -396,6 +396,35 @@ if (NOT ENABLE_ICU STREQUAL OFF)
396
396
endif ()
397
397
endif ()
398
398
399
+ # Configure client side encryption.
400
+ set (MONGOC_ENABLE_CLIENT_SIDE_ENCRYPTION 0)
401
+ if (NOT ENABLE_CLIENT_SIDE_ENCRYPTION MATCHES "AUTO|ON|OFF" )
402
+ message (FATAL_ERROR, "ENABLE_CLIENT_SIDE_ENCRYPTION option must be AUTO, ON, or OFF" )
403
+ endif ()
404
+
405
+ if (NOT MONGOC_ENABLE_SSL)
406
+ if (ENABLE_CLIENT_SIDE_ENCRYPTION STREQUAL ON )
407
+ message (FATAL_ERROR "SSL disabled, but is required for Client-Side Field Level Encryption support." )
408
+ elseif (ENABLE_CLIENT_SIDE_ENCRYPTION STREQUAL AUTO)
409
+ message (STATUS "SSL disabled. Configuring without Client-Side Field Level Encryption support." )
410
+ endif ()
411
+ elseif (NOT ENABLE_CLIENT_SIDE_ENCRYPTION STREQUAL OFF )
412
+ message ("Searching for libmongocrypt" )
413
+ find_package (mongocrypt)
414
+ if (mongocrypt_FOUND)
415
+ set (CLIENT_SIDE_ENCRYPTION_LIBRARIES mongo::mongocrypt)
416
+ get_target_property (LIBMONGOCRYPT_LOCATION mongo::mongocrypt LOCATION )
417
+ get_target_property (LIBMONGOCRYPT_INCLUDE_DIRECTORIES mongo::mongocrypt INTERFACE_INCLUDE_DIRECTORIES )
418
+ message ("-- libmongocrypt found at ${LIBMONGOCRYPT_LOCATION} " )
419
+ message ("-- libmongocrypt include path ${LIBMONGOCRYPT_INCLUDE_DIRECTORIES} " )
420
+ set (MONGOC_ENABLE_CLIENT_SIDE_ENCRYPTION 1)
421
+ elseif (ENABLE_CLIENT_SIDE_ENCRYPTION STREQUAL ON )
422
+ message (FATAL_ERROR "Required library (libmongocrypt) not found." )
423
+ else ()
424
+ message (STATUS "libmongocrypt not found. Configuring without Client-Side Field Level Encryption support." )
425
+ endif ()
426
+ endif ()
427
+
399
428
configure_file (
400
429
"${PROJECT_SOURCE_DIR} /src/mongoc/mongoc-config.h.in"
401
430
"${PROJECT_BINARY_DIR} /src/mongoc/mongoc-config.h"
@@ -428,6 +457,7 @@ set (SOURCES ${SOURCES}
428
457
${PROJECT_SOURCE_DIR} /src/mongoc/mongoc-change-stream.c
429
458
${PROJECT_SOURCE_DIR} /src/mongoc/mongoc-client.c
430
459
${PROJECT_SOURCE_DIR} /src/mongoc/mongoc-client-pool.c
460
+ ${PROJECT_SOURCE_DIR} /src/mongoc/mongoc-client-side-encryption.c
431
461
${PROJECT_SOURCE_DIR} /src/mongoc/mongoc-cluster.c
432
462
${PROJECT_SOURCE_DIR} /src/mongoc/mongoc-cluster-sasl.c
433
463
${PROJECT_SOURCE_DIR} /src/mongoc/mongoc-collection.c
@@ -507,6 +537,7 @@ set (HEADERS
507
537
${PROJECT_SOURCE_DIR} /src/mongoc/mongoc-change-stream.h
508
538
${PROJECT_SOURCE_DIR} /src/mongoc/mongoc-client.h
509
539
${PROJECT_SOURCE_DIR} /src/mongoc/mongoc-client-pool.h
540
+ ${PROJECT_SOURCE_DIR} /src/mongoc/mongoc-client-side-encryption.h
510
541
${PROJECT_SOURCE_DIR} /src/mongoc/mongoc-collection.h
511
542
${PROJECT_SOURCE_DIR} /src/mongoc/mongoc-cursor.h
512
543
${PROJECT_SOURCE_DIR} /src/mongoc/mongoc-database.h
@@ -633,11 +664,11 @@ endif ()
633
664
634
665
set (LIBRARIES
635
666
${SASL_LIBRARIES} ${SSL_LIBRARIES} ${SHM_LIBRARIES} ${RESOLV_LIBRARIES}
636
- ${SNAPPY_LIBRARIES} ${ZLIB_LIBRARIES} ${MONGOC_ZSTD_LIBRARIES} Threads::Threads ${ICU_LIBRARIES}
667
+ ${SNAPPY_LIBRARIES} ${ZLIB_LIBRARIES} ${MONGOC_ZSTD_LIBRARIES} Threads::Threads ${ICU_LIBRARIES} ${CLIENT_SIDE_ENCRYPTION_LIBRARIES}
637
668
)
638
669
set (STATIC_LIBRARIES
639
670
${SASL_LIBRARIES} ${SSL_LIBRARIES} ${SHM_LIBRARIES} ${RESOLV_LIBRARIES}
640
- ${SNAPPY_LIBRARIES} ${ZLIB_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${ICU_LIBRARIES}
671
+ ${SNAPPY_LIBRARIES} ${ZLIB_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${ICU_LIBRARIES} ${CLIENT_SIDE_ENCRYPTION_LIBRARIES}
641
672
)
642
673
643
674
if (WIN32 )
@@ -772,6 +803,7 @@ set (test-libmongoc-sources
772
803
${PROJECT_SOURCE_DIR} /tests/test -mongoc-change-stream.c
773
804
${PROJECT_SOURCE_DIR} /tests/test -mongoc-client.c
774
805
${PROJECT_SOURCE_DIR} /tests/test -mongoc-client-pool.c
806
+ ${PROJECT_SOURCE_DIR} /tests/test -mongoc-client-side-encryption.c
775
807
${PROJECT_SOURCE_DIR} /tests/test -mongoc-cluster.c
776
808
${PROJECT_SOURCE_DIR} /tests/test -mongoc-collection.c
777
809
${PROJECT_SOURCE_DIR} /tests/test -mongoc-collection-find .c
0 commit comments