code: def compute_tls13_handshake_secrets(self):
          
          if self.tls13_early_secret is None:
              warning("No early secret. This is abnormal.")
  
          hkdf = self.prcs.hkdf
  
          self.tls13_handshake_secret = hkdf.extract(self.tls13_early_secret,
                                                     self.tls13_dhe_secret)
  
          chts = hkdf.derive_secret(self.tls13_handshake_secret,
                                    b"client handshake traffic secret",
                                    b"".join(self.handshake_messages))
          self.tls13_derived_secrets["client_handshake_traffic_secret"] = chts
  
          shts = hkdf.derive_secret(self.tls13_handshake_secret,
                                    b"server handshake traffic secret",
                                    b"".join(self.handshake_messages))
          self.tls13_derived_secrets["server_handshake_traffic_secret"] = shts
  
          if self.connection_end == "server":
              self.prcs.tls13_derive_keys(chts)
              self.pwcs.tls13_derive_keys(shts)
          elif self.connection_end == "client":
              self.pwcs.tls13_derive_keys(chts)
              self.prcs.tls13_derive_keys(shts)
docs: Ciphers key and IV are updated accordingly for Handshake data.
          self.handshake_messages should be ClientHello...ServerHello.