예제 #1
0
def test_trusted_curve():
    from pseud._gevent import Client, Server
    from pseud.utils import register_rpc

    server_id = 'server'
    endpoint = 'tcp://127.0.0.1:8998'
    server_public, server_secret = zmq.curve_keypair()
    security_plugin = 'trusted_curve'

    server = Server(server_id, security_plugin=security_plugin,
                    public_key=server_public,
                    secret_key=server_secret)
    server.bind(endpoint)
    bob_public, bob_secret = server.auth_backend.known_identities[b'bob']
    client = Client(server_id,
                    security_plugin=security_plugin,
                    public_key=bob_public,
                    secret_key=bob_secret,
                    peer_public_key=server_public)

    client.connect(endpoint)
    assert server.socket.mechanism == zmq.CURVE
    assert client.socket.mechanism == zmq.CURVE

    server.start()
    client.start()
    import string
    register_rpc(name='string.lower')(string.lower)
    future = client.string.lower('FOO')
    assert future.get() == 'foo'
    server.stop()
    client.stop()
예제 #2
0
def test_trusted_curve():
    from pseud._gevent import Client, Server
    from pseud.utils import register_rpc

    server_id = 'server'
    endpoint = 'tcp://127.0.0.1:8998'
    server_public, server_secret = zmq.curve_keypair()
    security_plugin = 'trusted_curve'

    server = Server(server_id,
                    security_plugin=security_plugin,
                    public_key=server_public,
                    secret_key=server_secret)
    server.bind(endpoint)
    bob_public, bob_secret = server.auth_backend.known_identities[b'bob']
    client = Client(server_id,
                    security_plugin=security_plugin,
                    public_key=bob_public,
                    secret_key=bob_secret,
                    peer_public_key=server_public)

    client.connect(endpoint)
    assert server.socket.mechanism == zmq.CURVE
    assert client.socket.mechanism == zmq.CURVE

    server.start()
    client.start()
    import string
    register_rpc(name='string.lower')(string.lower)
    future = client.string.lower('FOO')
    assert future.get() == 'foo'
    server.stop()
    client.stop()
예제 #3
0
def test_server_can_send_to_trustable_peer_identity():
    """
    Uses internal metadata of zmq.Frame.get() to fetch identity of sender
    """
    from pseud._gevent import Client, Server

    server_id = 'server'
    endpoint = 'tcp://127.0.0.1:8989'
    server_public, server_secret = zmq.curve_keypair()
    security_plugin = 'trusted_curve'

    server = Server(
        server_id,
        security_plugin=security_plugin,
        public_key=server_public,
        secret_key=server_secret,
    )
    server.bind(endpoint)

    bob_public, bob_secret = server.auth_backend.known_identities['bob']
    client = Client(
        server_id,
        user_id='bob',
        security_plugin=security_plugin,
        public_key=bob_public,
        secret_key=bob_secret,
        peer_public_key=server_public,
    )
    client.connect(endpoint)
    assert server.socket.mechanism == zmq.CURVE
    assert client.socket.mechanism == zmq.CURVE

    server.start()
    client.start()

    @server.register_rpc(with_identity=True)
    def echo(peer_identity, message):
        return peer_identity, message

    result = client.echo('one').get()
    if zmq.zmq_version_info() >= (4, 1, 0):
        assert result == ('bob', 'one')
    else:
        assert result == ('', 'one')
    server.stop()
    client.stop()
예제 #4
0
def test_server_can_send_to_trustable_peer_identity():
    """
    Uses internal metadata of zmq.Frame.get() to fetch identity of sender
    """
    from pseud._gevent import Client, Server

    server_id = 'server'
    endpoint = 'tcp://127.0.0.1:8989'
    server_public, server_secret = zmq.curve_keypair()
    security_plugin = 'trusted_curve'

    server = Server(server_id, security_plugin=security_plugin,
                    public_key=server_public,
                    secret_key=server_secret,
                    )
    server.bind(endpoint)

    bob_public, bob_secret = server.auth_backend.known_identities['bob']
    client = Client(server_id,
                    user_id='bob',
                    security_plugin=security_plugin,
                    public_key=bob_public,
                    secret_key=bob_secret,
                    peer_public_key=server_public,
                    )
    client.connect(endpoint)
    assert server.socket.mechanism == zmq.CURVE
    assert client.socket.mechanism == zmq.CURVE

    server.start()
    client.start()

    @server.register_rpc(with_identity=True)
    def echo(peer_identity, message):
        return peer_identity, message

    result = client.echo('one').get()
    if zmq.zmq_version_info() >= (4, 1, 0):
        assert result == ('bob', 'one')
    else:
        assert result == ('', 'one')
    server.stop()
    client.stop()
예제 #5
0
def test_untrusted_curve_with_wrong_password():
    from pseud._gevent import Client, Server
    from pseud.interfaces import UnauthorizedError
    from pseud.utils import register_rpc

    client_id = 'john'
    server_id = 'server'
    endpoint = 'tcp://127.0.0.1:8999'
    server_public, server_secret = zmq.curve_keypair()
    client_public, client_secret = zmq.curve_keypair()
    security_plugin = 'untrusted_curve'
    password = '******'

    client = Client(server_id,
                    security_plugin=security_plugin,
                    public_key=client_public,
                    secret_key=client_secret,
                    peer_public_key=server_public,
                    user_id=client_id,
                    password=password)

    server = Server(server_id,
                    security_plugin=security_plugin,
                    public_key=server_public,
                    secret_key=server_secret)

    server.bind(endpoint)
    client.connect(endpoint)
    assert server.socket.mechanism == zmq.CURVE
    assert client.socket.mechanism == zmq.CURVE

    # configure manually authentication backend
    server.auth_backend.user_map[client_id] = password + 'Looser'

    server.start()
    client.start()
    import string
    register_rpc(name='string.lower')(string.lower)
    future = client.string.lower('IMSCREAMING')
    with pytest.raises(UnauthorizedError):
        future.get()
    server.stop()
    client.stop()
예제 #6
0
def test_untrusted_curve_with_wrong_password():
    from pseud._gevent import Client, Server
    from pseud.interfaces import UnauthorizedError
    from pseud.utils import register_rpc

    client_id = 'john'
    server_id = 'server'
    endpoint = 'tcp://127.0.0.1:8999'
    server_public, server_secret = zmq.curve_keypair()
    client_public, client_secret = zmq.curve_keypair()
    security_plugin = 'untrusted_curve'
    password = '******'

    client = Client(server_id,
                    security_plugin=security_plugin,
                    public_key=client_public,
                    secret_key=client_secret,
                    peer_public_key=server_public,
                    user_id=client_id,
                    password=password)

    server = Server(server_id,
                    security_plugin=security_plugin,
                    public_key=server_public,
                    secret_key=server_secret)

    server.bind(endpoint)
    client.connect(endpoint)
    assert server.socket.mechanism == zmq.CURVE
    assert client.socket.mechanism == zmq.CURVE

    # configure manually authentication backend
    server.auth_backend.user_map[client_id] = password + 'Looser'

    server.start()
    client.start()
    import string
    register_rpc(name='string.lower')(string.lower)
    future = client.string.lower('IMSCREAMING')
    with pytest.raises(UnauthorizedError):
        future.get()
    server.stop()
    client.stop()