package network import ( "context" "crypto/ecdsa" "net" "koti.casa/numenor-labs/dsfx/pkg/handshake" "koti.casa/numenor-labs/dsfx/pkg/logging" ) // Dial ... func Dial( ctx context.Context, identity *ecdsa.PrivateKey, laddr *Addr, raddr *Addr, ) (*Conn, error) { conn, err := net.DialTCP("tcp", laddr.TCPAddr(), raddr.TCPAddr()) if err != nil { return nil, err } sessionKey, err := handshake.Handshake(ctx, conn, identity, raddr.PublicKey()) if err != nil { return nil, err } return NewConn(conn, sessionKey, laddr.PublicKey(), raddr.PublicKey()), nil } // Listen ... func Listen( ctx context.Context, identity *ecdsa.PrivateKey, laddr *Addr, ) (net.Listener, error) { tcpListener, err := net.ListenTCP("tcp", laddr.TCPAddr()) if err != nil { return nil, err } logger := logging.FromContext(ctx) return &Listener{logger, tcpListener, identity}, nil }