]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
msg/async, v2: dissect decryption from SignedEncryptedFrame.
authorRadoslaw Zarzynski <rzarzyns@redhat.com>
Tue, 26 Feb 2019 19:27:06 +0000 (20:27 +0100)
committerRadoslaw Zarzynski <rzarzyns@redhat.com>
Thu, 28 Feb 2019 20:42:39 +0000 (21:42 +0100)
Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
src/msg/async/ProtocolV2.cc
src/msg/async/frames_v2.h

index a0d9b7d00e92e1348790d5b7f296313f7b466a4d..9745d75a692a3b3a924e55627aa3e02dcee89e79 100644 (file)
@@ -1244,6 +1244,14 @@ CtPtr ProtocolV2::handle_frame_payload() {
   ceph_assert(!rx_segments_data.empty());
   auto& payload = rx_segments_data.back();
 
+  if (session_stream_handlers.rx) {
+    const auto length = payload.length();
+    payload = session_stream_handlers.rx->authenticated_decrypt_update_final(
+        std::move(payload), segment_t::DEFAULT_ALIGNMENT);
+    ceph_assert(payload.length() ==
+        length - session_stream_handlers.rx->get_extra_size_at_final());
+  }
+
   ldout(cct, 30) << __func__ << "\n";
   payload.hexdump(*_dout);
   *_dout << dendl;
index 31be035455b0d17b0d6f1eab6ead561b9aa1220c..08a1eaa3c8357bcc4bd205ec6733714297fd245f 100644 (file)
@@ -356,19 +356,7 @@ struct SignedEncryptedFrame : public PayloadFrame<T, Args...> {
 
   static T Decode(ceph::crypto::onwire::rxtx_t &session_stream_handlers,
                   ceph::bufferlist &payload) {
-    if (!session_stream_handlers.rx) {
-      return PayloadFrame<T, Args...>::Decode(payload);
-    }
-
-    T c;
-    const auto length = payload.length();
-    ceph::bufferlist plain_bl =
-        session_stream_handlers.rx->authenticated_decrypt_update_final(
-            std::move(payload), segment_t::DEFAULT_ALIGNMENT);
-    ceph_assert(plain_bl.length() ==
-                length - session_stream_handlers.rx->get_extra_size_at_final());
-    c.decode_frame(plain_bl);
-    return c;
+    return PayloadFrame<T, Args...>::Decode(payload);
   }
 
 protected: