]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw/kms/vault - need libicu to make canonical json for encryption contexts.
authorMarcus Watts <mwatts@redhat.com>
Mon, 7 Dec 2020 22:20:49 +0000 (17:20 -0500)
committerMarcus Watts <mwatts@redhat.com>
Fri, 5 Mar 2021 22:15:24 +0000 (17:15 -0500)
for encryption, aws s3 provides an "encryption" context to vary per-object
keys.  The encryption context is a base64 encoded json structure, which
must be converted to a determinstic form -- "canonical json".  This
requires converting all strings to a normalized canonical form: "utf-8 nfc",
it also requires thta keys in objects be sorted in a fixed order; so some
form of sorting based on nfc.

It turns out that libicu was the best way to produce utf-8 nfc (boost also
provides a mechanism, but it has many quirks).  So, here are the hooks
to pull the system libicu into the build.

Fixes: http://tracker.ceph.com/issues/48746
Signed-off-by: Marcus Watts <mwatts@redhat.com>
ceph.spec.in
debian/control
src/rgw/CMakeLists.txt

index 0fad99f6bb76807a75a2e402359980879ba8a4ad..b72b3463c68b6be176376512ef1b530b4044a7f7 100644 (file)
@@ -216,6 +216,7 @@ BuildRequires:      libtool
 BuildRequires: libxml2-devel
 BuildRequires: make
 BuildRequires: ncurses-devel
+BuildRequires: libicu-devel
 BuildRequires: parted
 BuildRequires: patch
 BuildRequires: perl
index 48fee481f72ed6dc57ee5c1d122f394265e116c9..42044b802d8083e52bf0963147706a85a91487b3 100644 (file)
@@ -44,6 +44,7 @@ Build-Depends: automake,
 # Crimson      libgnutls28-dev,
 # Crimson      libhwloc-dev,
                libibverbs-dev,
+               libicu-dev,
                librdmacm-dev,
                libkeyutils-dev,
                libldap2-dev,
index a62908c6368705f582e7f38050218b87feebd28a..44de25895ea2d7f53be8e32824060edc3df26db0 100644 (file)
@@ -23,6 +23,8 @@ function(gperf_generate input output)
     )
 endfunction()
 
+find_package(ICU 52.0 COMPONENTS uc REQUIRED)
+
 set(librgw_common_srcs
   services/svc_finisher.cc
   services/svc_bi_rados.cc
@@ -179,6 +181,7 @@ target_include_directories(rgw_common PUBLIC "${CMAKE_SOURCE_DIR}/src/dmclock/su
 target_include_directories(rgw_common PUBLIC "${CMAKE_SOURCE_DIR}/src/fmt/include")
 target_include_directories(rgw_common PUBLIC "${CMAKE_SOURCE_DIR}/src/rgw")
 target_include_directories(rgw_common PRIVATE "${LUA_INCLUDE_DIR}")
+target_include_directories(rgw_common SYSTEM PRIVATE "${ICU_INCLUDE_DIRS}")
 
 
 set(librgw_kmip_srcs
@@ -270,6 +273,7 @@ target_link_libraries(rgw_a
   ${CURL_LIBRARIES}
   ${EXPAT_LIBRARIES}
   ${OPENLDAP_LIBRARIES} ${CRYPTO_LIBS}
+  ICU::uc
   OATH::OATH)
 
 if(WITH_CURL_OPENSSL)