Example #1
0
    def _inbound_connection_request_callback(self,
                                             request,
                                             result,
                                             connection=None):
        connection_response = ConnectionResponse()
        connection_response.ParseFromString(result.content)
        if connection_response.status == connection_response.ERROR:
            LOGGER.debug(
                "Received an error response to the NETWORK_CONNECT "
                "we sent. Removing connection: %s", connection.connection_id)
            self.remove_connection(connection.connection_id)

        # Send correct Authorization Request for network role
        auth_type = {"trust": [], "challenge": []}
        for role_entry in connection_response.roles:
            if role_entry.auth_type == connection_response.TRUST:
                auth_type["trust"].append(role_entry.role)
            elif role_entry.auth_type == connection_response.CHALLENGE:
                auth_type["challenge"].append(role_entry.role)

        if auth_type["trust"]:
            auth_trust_request = AuthorizationTrustRequest(
                roles=[RoleType.Value("NETWORK")], public_key=self._public_key)
            self.send(validator_pb2.Message.AUTHORIZATION_TRUST_REQUEST,
                      auth_trust_request.SerializeToString(), connection)

        if auth_type["challenge"]:
            auth_challenge_request = AuthorizationChallengeRequest()
            self.send(validator_pb2.Message.AUTHORIZATION_CHALLENGE_REQUEST,
                      auth_challenge_request.SerializeToString(),
                      connection,
                      callback=partial(
                          self._inbound_challenge_authorization_callback,
                          connection=connection))
Example #2
0
    def _connect_callback(self,
                          request,
                          result,
                          connection=None,
                          success_callback=None,
                          failure_callback=None):
        connection_response = ConnectionResponse()
        connection_response.ParseFromString(result.content)

        if connection_response.status == connection_response.ERROR:
            LOGGER.debug(
                "Received an error response to the NETWORK_CONNECT "
                "we sent. Removing connection: %s", connection.connection_id)
            self.remove_connection(connection.connection_id)
            if failure_callback:
                failure_callback(connection_id=connection.connection_id)
        elif connection_response.status == connection_response.OK:

            LOGGER.debug("Connection to %s was acknowledged",
                         connection.connection_id)
            if self._authorize:
                auth_trust_request = AuthorizationTrustRequest(
                    roles=[RoleType.Value("NETWORK")],
                    public_key=self._pub_key)
                connection.send(
                    validator_pb2.Message.AUTHORIZATION_TRUST_REQUEST,
                    auth_trust_request.SerializeToString(),
                    callback=partial(self._authorization_callback,
                                     connection=connection,
                                     success_callback=success_callback,
                                     failure_callback=failure_callback))
            else:
                if success_callback:
                    success_callback(connection_id=connection.connection_id)