diff --git a/net/client.go b/net/client.go
new file mode 100644
index 0000000000000000000000000000000000000000..b5c9d9755ce502b2617563d64b93f427fe05184e
--- /dev/null
+++ b/net/client.go
@@ -0,0 +1,42 @@
+package net
+
+import (
+	"crypto/tls"
+	"crypto/x509"
+	"flag"
+	"io/ioutil"
+	"log"
+	"math/rand"
+
+	"golang.org/x/net/context"
+	"google.golang.org/grpc"
+	"google.golang.org/grpc/credentials"
+	"google.golang.org/grpc/grpclog"
+)
+
+// Connect to a peer
+//
+// Closing must be defered after call
+func Connect(addr_port string, cert, key, ca []byte) *ClientConn {
+	// load peer cert/key, ca as PEM buffers
+	peerCert, err := tls.X509KeyPair(cert, key)
+	if err != nil {
+		log.Fatal("Load peer cert/key error: %v", err)
+	}
+	caCertPool := x509.NewCertPool()
+	caCertPool.AppendCertsFromPEM(ca)
+
+	// configure transport authentificator
+	ta := credentials.NewTLS(&tls.Config{
+		Certificates: []tls.Certificate{peerCert},
+		RootCAs:      caCertPool,
+	})
+
+	// let's do the dialing !
+	con, err := grpc.Dial(addr_port, grpc.WithTransportCredentials(ta))
+	if err != nil {
+		grpclog.Fatalf("Fail to dial: %v", err)
+	}
+
+	return con
+}