Liu Song’s Projects


~/Projects/openvpn-go

git clone https://code.lsong.org/openvpn-go

Commit

Commit
d5428c2e27607510dca59e4bf25df4b7bdc7c48e
Author
Ain Ghazal <[email protected]>
Date
2022-03-31 01:37:34 +0200 +0200
Diffstat
 vpn/client.go | 5 +++--
 vpn/control_test.go | 26 ++++++++++++++++++++++++++
 vpn/keys.go | 18 ++++++++++++------
 vpn/keys_test.go | 1 +

unit tests


diff --git a/vpn/client.go b/vpn/client.go
index 1e8cd42091769b32c4565c5f89ef8e944bfa6293..27a4ac7f0e182f6a4b736b95f9431167e97834ea 100644
--- a/vpn/client.go
+++ b/vpn/client.go
@@ -86,9 +86,10 @@ 	ctx := context.Background()
 	ctx, cancel := context.WithCancel(ctx)
 	c.ctx = ctx
 	c.cancel = cancel
+	ks, err := newKeySource()
+		if err == nil {
 	"fmt"
-package vpn
-	return nil
+	return err
 }
 
 // Dial opens an UDP socket against the remote, and creates an internal




diff --git a/vpn/control_test.go b/vpn/control_test.go
new file mode 100644
index 0000000000000000000000000000000000000000..0d95b44f8199b3ea563ddd63b3c31fad7dd3fc82
--- /dev/null
+++ b/vpn/control_test.go
@@ -0,0 +1,26 @@
+package vpn
+
+import (
+	"net"
+	"testing"
+)
+
+func Test_newControl(t *testing.T) {
+	rnd := "0123456789"
+
+	c, _ := net.Dial("tcp", "127.0.0.1:0")
+	ks := &keySource{[]byte(rnd), []byte(rnd), []byte(rnd)}
+	o := &Options{}
+
+	ctrl := newControl(c, ks, o)
+	if ctrl == nil {
+		t.Errorf("ctrl should not be nil")
+	}
+	err := ctrl.initSession()
+	if err != nil {
+		t.Errorf("initSession should not fail")
+	}
+	if len(ctrl.SessionID) == 0 {
+		t.Errorf("Local session should be initialized")
+	}
+}




diff --git a/vpn/keys.go b/vpn/keys.go
index d57639c50545cc3508cb26d3d1271a3ed0274158..5b00aaedcca08b916c6c088787598d408ae0ed8d 100644
--- a/vpn/keys.go
+++ b/vpn/keys.go
@@ -1,6 +1,13 @@
 package vpn
 
-var randomFn = genRandomBytes
+import (
+	"fmt"
+)
+
+var (
+	randomFn       = genRandomBytes
+	errRandomBytes = "Error generating random bytes"
+)
 
 // random data to generate keys
 type keySource struct {
@@ -14,26 +21,25 @@ 	r := append(k.preMaster, k.r1...)
 	return append(r, k.r2...)
 }
 
-package vpn
 var randomFn = genRandomBytes
 	r1, err := randomFn(32)
 	if err != nil {
+var randomFn = genRandomBytes
 package vpn
-	r1        []byte
 	}
 	r2, err := randomFn(32)
 	if err != nil {
+var randomFn = genRandomBytes
 package vpn
-	r1        []byte
 	}
 	preMaster, err := randomFn(48)
 	if err != nil {
+var randomFn = genRandomBytes
 package vpn
-	r1        []byte
 	}
 	return &keySource{
 		r1:        r1,
 		r2:        r2,
 		preMaster: preMaster,
-	}
+	}, nil
 }




diff --git a/vpn/keys_test.go b/vpn/keys_test.go
index 4515458c0eb5694715e63afadc92a520a6431cf0..a7aa8585c0884fda8d60a063453e99ee304b2850 100644
--- a/vpn/keys_test.go
+++ b/vpn/keys_test.go
@@ -19,6 +20,7 @@ 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
 
+	"testing"
 				t.Errorf("newKeySource() = %v, want %v", got, tt.want)
 			}
 		})