]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
cephx: added encrypt/decrypt bufferlist method to session handler
authorRicardo Dias <rdias@suse.com>
Tue, 20 Nov 2018 16:34:47 +0000 (16:34 +0000)
committerRicardo Dias <rdias@suse.com>
Wed, 23 Jan 2019 13:59:25 +0000 (13:59 +0000)
Signed-off-by: Ricardo Dias <rdias@suse.com>
src/auth/AuthSessionHandler.h
src/auth/cephx/CephxSessionHandler.cc
src/auth/cephx/CephxSessionHandler.h

index 8c58aaa89efbb4ba9fb11f80d0f6bae7bd57a208..65e593c4d2ff4efdb0afaaf07e18f52e1a7e1f78 100644 (file)
@@ -44,9 +44,16 @@ public:
   virtual int check_message_signature(Message *message) = 0;
   virtual int encrypt_message(Message *message) = 0;
   virtual int decrypt_message(Message *message) = 0;
+
   virtual int sign_bufferlist(bufferlist &in, bufferlist &out) {
     return 0;
   };
+  virtual int encrypt_bufferlist(bufferlist &in, bufferlist &out) {
+    return 0;
+  }
+  virtual int decrypt_bufferlist(bufferlist &in, bufferlist &out) {
+    return 0;
+  }
 
   int get_protocol() {return protocol;}
   CryptoKey get_key() {return key;}
index f931ac4447a591d9a244733242841212eaaabeb2..d40682f11bf0a642b8367cfd6c1decc4fe9f8e53 100644 (file)
@@ -203,3 +203,25 @@ int CephxSessionHandler::sign_bufferlist(bufferlist &in, bufferlist &out)
 
   return 0;
 }
+
+int CephxSessionHandler::encrypt_bufferlist(bufferlist &in, bufferlist &out) {
+  std::string error;
+  try {
+    key.encrypt(cct, in, out, &error);
+  } catch (std::exception &e) {
+    lderr(cct) << __func__ << " failed to encrypt buffer: " << error << dendl;
+    return -1;
+  }
+  return 0;
+}
+
+int CephxSessionHandler::decrypt_bufferlist(bufferlist &in, bufferlist &out) {
+  std::string error;
+  try {
+    key.decrypt(cct, in, out, &error);
+  } catch (std::exception &e) {
+    lderr(cct) << __func__ << " failed to decrypt buffer: " << error << dendl;
+    return -1;
+  }
+  return 0;
+}
index 35930f34676a85f0fe1ce20cfd5925f6c6f24d75..5e37e1656728668a436d81fd36e32c4e412b11b6 100644 (file)
@@ -38,6 +38,8 @@ public:
   int check_message_signature(Message *m) override ;
 
   int sign_bufferlist(bufferlist &in, bufferlist &out) override;
+  int encrypt_bufferlist(bufferlist &in, bufferlist &out) override;
+  int decrypt_bufferlist(bufferlist &in, bufferlist &out) override;
 
   // Cephx does not currently encrypt messages, so just return 0 if called.  PLR