docs: def LoadServerCertificate(self, server_certificate=None, ca_certificate=None):
      """Loads and verifies the server certificate."""
      # Check that the server certificate verifies
      try:
        server_certificate.Verify(ca_certificate.GetPublicKey())
      except rdf_crypto.VerificationError as e:
        self.server_name = None
        raise IOError("Server cert is invalid: %s" % e)
  
      # Make sure that the serial number is higher.
      server_cert_serial = server_certificate.GetSerialNumber()
  
      if server_cert_serial < config.CONFIG["Client.server_serial_number"]:
        # We can not accept this serial number...
        raise IOError("Server certificate serial number is too old.")
      elif server_cert_serial > config.CONFIG["Client.server_serial_number"]:
        logging.info("Server serial number updated to %s", server_cert_serial)
        config.CONFIG.Set("Client.server_serial_number", server_cert_serial)
  
        # Save the new data to the config file.
        config.CONFIG.Write()
  
      self.server_name = server_certificate.GetCN()
      self.server_certificate = server_certificate
      self.ca_certificate = ca_certificate
      self.server_public_key = server_certificate.GetPublicKey()
      # If we still have a cached session key, we need to remove it.
      self._ClearServerCipherCache()