Ver Fonte

LibTLS: Compute the master secret in a single place

Before we were computing the master secret in the different
`build_*_pre_master_secret` methods, but this can be simplified to a
single call.
Michiel Visser há 1 ano atrás
pai
commit
5ab64320b2
1 ficheiros alterados com 4 adições e 15 exclusões
  1. 4 15
      Userland/Libraries/LibTLS/HandshakeClient.cpp

+ 4 - 15
Userland/Libraries/LibTLS/HandshakeClient.cpp

@@ -198,11 +198,6 @@ void TLSv12::build_rsa_pre_master_secret(PacketBuilder& builder)
         print_buffer(outbuf);
     }
 
-    if (!compute_master_secret_from_pre_master_secret(bytes)) {
-        dbgln("oh noes we could not derive a master key :(");
-        return;
-    }
-
     builder.append_u24(outbuf.size() + 2);
     builder.append((u16)outbuf.size());
     builder.append(outbuf);
@@ -245,11 +240,6 @@ void TLSv12::build_dhe_rsa_pre_master_secret(PacketBuilder& builder)
         dbgln("premaster key: {:hex-dump}", (ReadonlyBytes)m_context.premaster_key);
     }
 
-    if (!compute_master_secret_from_pre_master_secret(48)) {
-        dbgln("oh noes we could not derive a master key :(");
-        return;
-    }
-
     builder.append_u24(dh_key_size + 2);
     builder.append((u16)dh_key_size);
     builder.append(dh_Yc_bytes);
@@ -297,11 +287,6 @@ void TLSv12::build_ecdhe_rsa_pre_master_secret(PacketBuilder& builder)
         dbgln("premaster key:      {:hex-dump}", (ReadonlyBytes)m_context.premaster_key);
     }
 
-    if (!compute_master_secret_from_pre_master_secret(48)) {
-        dbgln("oh noes we could not derive a master key :(");
-        return;
-    }
-
     builder.append_u24(public_key.size() + 1);
     builder.append((u8)public_key.size());
     builder.append(public_key);
@@ -414,6 +399,10 @@ ByteBuffer TLSv12::build_client_key_exchange()
 
     update_packet(packet);
 
+    if (!compute_master_secret_from_pre_master_secret(48)) {
+        dbgln("oh noes we could not derive a master key :(");
+    }
+
     return packet;
 }