code: def step4(self, encrypted_data):
          
          chacha = chacha20.Chacha20Cipher(self._session_key, self._session_key)
          decrypted_tlv_bytes = chacha.decrypt(
              encrypted_data, nounce='PS-Msg06'.encode())
          if not decrypted_tlv_bytes:
              raise Exception('data decrypt failed')  # TODO: new exception
          decrypted_tlv = tlv8.read_tlv(decrypted_tlv_bytes)
          _LOGGER.debug('PS-Msg06: %s', decrypted_tlv)
  
          atv_identifier = decrypted_tlv[tlv8.TLV_IDENTIFIER]
          atv_signature = decrypted_tlv[tlv8.TLV_SIGNATURE]
          atv_pub_key = decrypted_tlv[tlv8.TLV_PUBLIC_KEY]
          log_binary(_LOGGER,
                     'Device',
                     Identifier=atv_identifier,
                     Signature=atv_signature,
                     Public=atv_pub_key)
  
          # TODO: verify signature here
  
          return Credentials(atv_pub_key, self._signing_key.to_seed(),
                             atv_identifier, self.pairing_id)
docs: Last pairing step.