]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
msg/async: emphasize ProtocolV2 does authenticated encryption.
authorRadoslaw Zarzynski <rzarzyns@redhat.com>
Mon, 21 Jan 2019 23:37:59 +0000 (00:37 +0100)
committerRadoslaw Zarzynski <rzarzyns@redhat.com>
Thu, 21 Feb 2019 20:52:47 +0000 (21:52 +0100)
Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
src/msg/async/ProtocolV2.cc
src/msg/async/ProtocolV2.h

index 062d53bf910d4c6931cdc76cbd2745f1e706efae..55e14cc585b7b328509473990b098abeeff1a4fe 100644 (file)
@@ -193,8 +193,7 @@ protected:
       this->payload.append((char *)&t, sizeof(t));
     } else if constexpr (std::is_same<T, signature_t const>()) {
       ceph_assert(protocol);
-      protocol->sign_payload(this->payload);
-      protocol->encrypt_payload(this->payload);
+      protocol->authencrypt_payload(this->payload);
     } else {
       encode(t, this->payload, features);
     }
@@ -332,8 +331,7 @@ struct SignedEncryptedFrame : public PayloadFrame<T, Args..., signature_t> {
   SignedEncryptedFrame(ProtocolV2 *protocol, char *payload, uint32_t length)
       : PayloadFrame<T, Args..., signature_t>(protocol) {
     ceph_assert(protocol);
-    protocol->decrypt_payload(payload, length);
-    protocol->verify_signature(payload, length);
+    protocol->authdecrypt_payload(payload, length);
     this->decode_frame(payload, length);
   }
 
@@ -920,8 +918,7 @@ ssize_t ProtocolV2::write_message(Message *m, bufferlist &bl, bool more) {
     flat_bl.claim_append(bl);
   }
 
-  sign_payload(flat_bl);
-  encrypt_payload(flat_bl);
+  authencrypt_payload(flat_bl);
   MessageFrame message(this, header2, flat_bl);
 
   ldout(cct, 5) << __func__ << " sending message m=" << m
@@ -1215,6 +1212,16 @@ void ProtocolV2::calculate_payload_size(uint32_t length, uint32_t *total_len,
                  << dendl;
 }
 
+void ProtocolV2::authencrypt_payload(bufferlist &payload) {
+  sign_payload(payload);
+  encrypt_payload(payload);
+}
+
+void ProtocolV2::authdecrypt_payload(char *payload, uint32_t &length) {
+  decrypt_payload(payload, length);
+  verify_signature(payload, length);
+}
+
 CtPtr ProtocolV2::read(CONTINUATION_PARAM(next, ProtocolV2, char *, int),
                        int len, char *buffer) {
   if (!buffer) {
@@ -1917,8 +1924,7 @@ CtPtr ProtocolV2::handle_message_complete() {
     msg_payload.claim_append(extra);
 
     uint32_t payload_len = msg_payload.length();
-    decrypt_payload(msg_payload.c_str(), payload_len);
-    verify_signature(msg_payload.c_str(), payload_len);
+    authdecrypt_payload(msg_payload.c_str(), payload_len);
 
     front.clear();
     middle.clear();
index 9edcd473da0ef8d324dc15ccf2cbc7ed74579810..7970e07752036831c44449e653a77c073e29c069 100644 (file)
@@ -206,6 +206,10 @@ public:
                               uint32_t *sig_pad_len = nullptr,
                               uint32_t *enc_pad_len = nullptr);
 
+  // We are doing *authenticated encryption*
+  void authencrypt_payload(ceph::bufferlist &payload);
+  void authdecrypt_payload(char *payload, uint32_t &length);
+
 private:
   // Client Protocol
   CONTINUATION_DECL(ProtocolV2, start_client_banner_exchange);