#!/usr/bin/env escript -mode(compile). % john state -record(js, {tsock = none :: gen_tcp:socket(), nsock = none :: enoise:noise_socket()}). main([]) -> TcpOpts = [binary, {packet, 0}, {active, once}], {ok, TSock} = gen_tcp:connect("localhost", 6969, TcpOpts), ok = inet:setopts(TSock, [{active, once}]), {ok, NSock, _HandshakeState} = enoise:connect(TSock, noise_options()), j_loop(#js{tsock = TSock, nsock = NSock}). noise_options() -> % totally safe crypto KP = enoise_keypair:new(dh25519), [{noise, "Noise_NN_25519_ChaChaPoly_BLAKE2b"}, {e, KP}]. j_loop(JS = #js{nsock = NSock}) -> receive {noise, NSock, Bytes} -> ok = io:format("< ~tp~n", [Bytes]), j_loop(JS); Unknown -> ok = io:format("~tp unknown message, killing self: ~tp~n", [self(), Unknown]), exit(normal) end.