code: def compute_tls13_early_secrets(self):
          
          # we use the prcs rather than the pwcs in a totally arbitrary way
          if self.prcs is None:
              # too soon
              return
  
          hkdf = self.prcs.hkdf
  
          self.tls13_early_secret = hkdf.extract(None,
                                                 self.tls13_psk_secret)
  
          bk = hkdf.derive_secret(self.tls13_early_secret,
                                  b"external psk binder key",
                                  # "resumption psk binder key",
                                  b"")
          self.tls13_derived_secrets["binder_key"] = bk
  
          if len(self.handshake_messages) > 1:
              # these secrets are not defined in case of HRR
              return
  
          cets = hkdf.derive_secret(self.tls13_early_secret,
                                    b"client early traffic secret",
                                    b"".join(self.handshake_messages))
          self.tls13_derived_secrets["client_early_traffic_secret"] = cets
  
          ees = hkdf.derive_secret(self.tls13_early_secret,
                                   b"early exporter master secret",
                                   b"".join(self.handshake_messages))
          self.tls13_derived_secrets["early_exporter_secret"] = ees
  
          if self.connection_end == "server":
              self.prcs.tls13_derive_keys(cets)
          elif self.connection_end == "client":
              self.pwcs.tls13_derive_keys(cets)
docs: Ciphers key and IV are updated accordingly for 0-RTT data.
          self.handshake_messages should be ClientHello only.