code: def handle(self, connection_id, message_content):
          
          if self._network.get_connection_status(connection_id) != \
                  ConnectionStatus.CONNECTION_REQUEST:
              LOGGER.debug("Connection's previous message was not a"
                           " ConnectionRequest, Remove connection to %s",
                           connection_id)
              violation = AuthorizationViolation(
                  violation=RoleType.Value("NETWORK"))
              return HandlerResult(
                  HandlerStatus.RETURN_AND_CLOSE,
                  message_out=violation,
                  message_type=validator_pb2.Message
                  .AUTHORIZATION_VIOLATION)
  
          random_payload = os.urandom(PAYLOAD_LENGTH)
          self._challenge_payload_cache[connection_id] = random_payload
          auth_challenge_response = AuthorizationChallengeResponse(
              payload=random_payload)
  
          self._network.update_connection_status(
              connection_id,
              ConnectionStatus.AUTH_CHALLENGE_REQUEST)
  
          return HandlerResult(
              HandlerStatus.RETURN,
              message_out=auth_challenge_response,
              message_type=validator_pb2.Message.
              AUTHORIZATION_CHALLENGE_RESPONSE)
docs: If the connection wants to take on a role that requires a challenge to
          be signed, it will request the challenge by sending an
          AuthorizationChallengeRequest to the validator it wishes to connect to.
          The validator will send back a random payload that must be signed.
          If the connection has not sent a ConnectionRequest or the connection
          has already recieved an AuthorizationChallengeResponse, an
          AuthorizationViolation will be returned and the connection will be
          closed.