]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw/kms/vault - share get/set attr between rgw_crypt.cc and rgw_kms.cc
authorMarcus Watts <mwatts@redhat.com>
Mon, 7 Dec 2020 22:48:31 +0000 (17:48 -0500)
committerMarcus Watts <mwatts@redhat.com>
Fri, 5 Mar 2021 22:34:48 +0000 (17:34 -0500)
In order to pass down and manage "attrs" from crypt logic to kms
logic, it's necessary to share the functions that can get and
set strings in that structure.  Eventually, I plan to have
the various engines store and retrieve a per-object "datakey" that
is encrypted (wrapped) by the named kms key.

Fixes: http://tracker.ceph.com/issues/48746
Signed-off-by: Marcus Watts <mwatts@redhat.com>
src/rgw/rgw_crypt.h

index ba23221bcad90863e75270a78d2f40827e4287be..f397941632e0b845804a4845ec4f06e6b12add14 100644 (file)
@@ -150,4 +150,23 @@ int rgw_s3_prepare_decrypt(struct req_state* s,
                            std::map<std::string,
                                     std::string>& crypt_http_responses);
 
+static inline void set_attr(map<string, bufferlist>& attrs,
+                            const char* key,
+                            std::string_view value)
+{
+  bufferlist bl;
+  bl.append(value.data(), value.size());
+  attrs[key] = std::move(bl);
+}
+
+static inline std::string get_str_attribute(map<string, bufferlist>& attrs,
+                                            const char *name)
+{
+  auto iter = attrs.find(name);
+  if (iter == attrs.end()) {
+    return {};
+  }
+  return iter->second.to_str();
+}
+
 #endif