Skip to content

Commit 5604195

Browse files
committed
add go-and-tls13
1 parent dd338da commit 5604195

File tree

9 files changed

+337
-0
lines changed

9 files changed

+337
-0
lines changed
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package main
2+
3+
import (
4+
"crypto/tls"
5+
"testing"
6+
)
7+
8+
func tls12_dial() error {
9+
conf := &tls.Config{
10+
InsecureSkipVerify: true,
11+
MaxVersion: tls.VersionTLS12,
12+
}
13+
14+
conn, err := tls.Dial("tcp", "localhost:8443", conf)
15+
if err != nil {
16+
return err
17+
}
18+
conn.Close()
19+
return nil
20+
}
21+
22+
func tls13_dial() error {
23+
conf := &tls.Config{
24+
InsecureSkipVerify: true,
25+
}
26+
27+
conn, err := tls.Dial("tcp", "localhost:8443", conf)
28+
if err != nil {
29+
return err
30+
}
31+
conn.Close()
32+
return nil
33+
}
34+
35+
func BenchmarkTls13(b *testing.B) {
36+
b.ReportAllocs()
37+
38+
for i := 0; i < b.N; i++ {
39+
err := tls13_dial()
40+
if err != nil {
41+
panic(err)
42+
}
43+
}
44+
}
45+
46+
func BenchmarkTls12(b *testing.B) {
47+
b.ReportAllocs()
48+
49+
for i := 0; i < b.N; i++ {
50+
err := tls12_dial()
51+
if err != nil {
52+
panic(err)
53+
}
54+
}
55+
}

go-and-tls13/benchmark/go.mod

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
module demo
2+
3+
go 1.19

go-and-tls13/client.go

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package main
2+
3+
import (
4+
"crypto/tls"
5+
"log"
6+
)
7+
8+
func main() {
9+
conf := &tls.Config{
10+
InsecureSkipVerify: true,
11+
}
12+
13+
conn, err := tls.Dial("tcp", "localhost:8443", conf)
14+
if err != nil {
15+
log.Println(err)
16+
return
17+
}
18+
defer conn.Close()
19+
20+
n, err := conn.Write([]byte("hello, world from client\n"))
21+
if err != nil {
22+
log.Println(n, err)
23+
return
24+
}
25+
26+
buf := make([]byte, 100)
27+
n, err = conn.Read(buf)
28+
if err != nil {
29+
log.Println(n, err)
30+
return
31+
}
32+
33+
println(string(buf[:n]))
34+
}

go-and-tls13/client_tls12.go

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package main
2+
3+
import (
4+
"crypto/tls"
5+
"fmt"
6+
)
7+
8+
func main() {
9+
conf := &tls.Config{
10+
InsecureSkipVerify: true,
11+
MaxVersion: tls.VersionTLS12,
12+
}
13+
14+
conn, err := tls.Dial("tcp", "localhost:8443", conf)
15+
if err != nil {
16+
fmt.Println(err)
17+
return
18+
}
19+
defer conn.Close()
20+
21+
n, err := conn.Write([]byte("hello\n"))
22+
if err != nil {
23+
fmt.Println(n, err)
24+
return
25+
}
26+
27+
buf := make([]byte, 100)
28+
n, err = conn.Read(buf)
29+
if err != nil {
30+
fmt.Println(n, err)
31+
return
32+
}
33+
34+
println(string(buf[:n]))
35+
}

go-and-tls13/server.crt

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIICpDCCAYwCCQCtGKYqDX5K4zANBgkqhkiG9w0BAQsFADAUMRIwEAYDVQQDDAls
3+
b2NhbGhvc3QwHhcNMjMwMTA5MDk1NDQwWhcNMzMwMTA2MDk1NDQwWjAUMRIwEAYD
4+
VQQDDAlsb2NhbGhvc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCv
5+
RSx//1Hm0YfLemC9sL4qHwUEIh3HuK3YjksCqGzvE1ib5CFsDFBrVftd43svfk+V
6+
D6n34FVNyNt4LtuLDCRXSNsPXUHBpbuhbriQv8JsX9zeUgt8HNN6JBVVRAc4IlqC
7+
sSyn9cF6Bz001fg9QoU1RUjrHuvcFdV/j2SJO7JohOLH2QjiCBMF7tPqxrTo/Its
8+
Sf1haYzajE6IONAFvFMbFpDfDtHi9YiS27EFaDEm++CWpNEza/TcyDYJsDz4TVAr
9+
dgZEO+1exbTgb3YX7gqCSFutCXJ3Tkx7UQ/d9X13C1zQRnodlYzbE65mCY0Km8E4
10+
1xo+8mNywrz/54kZhmRHAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAKOAwPN2YuiM
11+
PM5Sv1G9rtOYUkgzO49o3dLhoKnVvmLrEc+L7aZCE/XJg5hhbj6tpo5vWv0Nakho
12+
pAw90BDdBsLKhGIU+7Lb77OEOp0m89V13Axnacz5eI7bNq6TKCY5GdWRvQG6oMOs
13+
G+QNyN9EzhPFJZz6uWeHt9x1qLP1q3ei/UlE6CUSXNOd1tGhOHivuiYvzcuDutav
14+
qzfM5DByQUiWF84UdVocBFuDQc/L3iGwier0/bmLtqAz2zNhgFYhs0HeE44TyvJs
15+
JeZFEWTWvZo3K/Mi8M6QBQT9NsJFQqC6cG0lHo8I5zV7MPUeseIN8Lxk0kWKoPsu
16+
Z7Uk5vcs26w=
17+
-----END CERTIFICATE-----

go-and-tls13/server.go

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package main
2+
3+
import (
4+
"bufio"
5+
"crypto/tls"
6+
"fmt"
7+
"net"
8+
)
9+
10+
func main() {
11+
cer, err := tls.LoadX509KeyPair("server.crt", "server.key")
12+
if err != nil {
13+
fmt.Println(err)
14+
return
15+
}
16+
17+
config := &tls.Config{Certificates: []tls.Certificate{cer}}
18+
ln, err := tls.Listen("tcp", "localhost:8443", config)
19+
if err != nil {
20+
fmt.Println(err)
21+
return
22+
}
23+
defer ln.Close()
24+
25+
for {
26+
conn, err := ln.Accept()
27+
if err != nil {
28+
fmt.Println(err)
29+
continue
30+
}
31+
go handleConnection(conn)
32+
}
33+
}
34+
35+
func handleConnection(conn net.Conn) {
36+
defer conn.Close()
37+
r := bufio.NewReader(conn)
38+
for {
39+
msg, err := r.ReadString('\n')
40+
if err != nil {
41+
fmt.Println(err)
42+
return
43+
}
44+
45+
println(msg)
46+
47+
n, err := conn.Write([]byte("hello, world from server\n"))
48+
if err != nil {
49+
fmt.Println(n, err)
50+
return
51+
}
52+
}
53+
}

go-and-tls13/server.key

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
-----BEGIN RSA PRIVATE KEY-----
2+
MIIEowIBAAKCAQEAr0Usf/9R5tGHy3pgvbC+Kh8FBCIdx7it2I5LAqhs7xNYm+Qh
3+
bAxQa1X7XeN7L35PlQ+p9+BVTcjbeC7biwwkV0jbD11BwaW7oW64kL/CbF/c3lIL
4+
fBzTeiQVVUQHOCJagrEsp/XBegc9NNX4PUKFNUVI6x7r3BXVf49kiTuyaITix9kI
5+
4ggTBe7T6sa06PyLbEn9YWmM2oxOiDjQBbxTGxaQ3w7R4vWIktuxBWgxJvvglqTR
6+
M2v03Mg2CbA8+E1QK3YGRDvtXsW04G92F+4KgkhbrQlyd05Me1EP3fV9dwtc0EZ6
7+
HZWM2xOuZgmNCpvBONcaPvJjcsK8/+eJGYZkRwIDAQABAoIBAHylpVAiNA0DVp/P
8+
GJ3O5G7wQJD/8k3neTtZdt8dCNu91naHd31wBIFRVMMg1KqiGdbYnPg8Am6fOfXu
9+
3RO2PuIUXjY/DFS7mQTlyTyoI40PX/R8RM6vcXab0tAg4UF6rQPlHO0WSdKO82hw
10+
A2sNs85+x6zvAK40mPFu+QDgA7FwIssALYgM5Mwz4onJ9U87fuZm0eB4GrjFgWht
11+
YQLLyrg4t52q7b8fWarFDcUJJOwE5P9sS9DGefWIC/9OHqDIiLEzazc1RvSxU+Y1
12+
xcTAX+69oeJJNZuEN5JdwMH9R2FO9rn89iVc6ToG2/3gxnb5rTlQd1XPDFHEzMdw
13+
ePHZEIECgYEA1atRC/UQey3AW3VRvRLLw2FK0kufVzLvdOXsUBRRKnGsXlh/m4/Z
14+
+QuMerOLT6/kj/6GA2fZQji9Q37pcG2xLHFQLJN17SdEa7y/lo+F5WJD+HFgg4Dm
15+
AoAAQnTlbNJlG5bbjZsVrm7MYnRh73T0WmVjlzrGjw/JoPLkQcbB/AsCgYEA0f5f
16+
E3dS63VERa0Ee/XpV/usg4rLM+Rs/IjR2kjg7yo7F/NBX7/r4WD/+9Ko40hIsukN
17+
be6gFbSkNIBDVskkevC+btsKvA23MrAoNKHyW4dhL/+TW+j+0FElop0DAcyDUk/l
18+
KremuGt8sh/l/OTVsT7bCHl1YAbHYFsRKW5DYjUCgYBPVR1xcBsfcRxDmOqxZeIr
19+
99q8/AD8clgAMkIsdW6xcKVMHlW6341R75zIDhPCkY8ue5UsfIlpEgILpnpsGP44
20+
fxYChvm5BORdkCYec8mGIpcUDpyEFv7PnND728U3Q2Lw/HEmQZeqPU87mvSl4Om9
21+
CnoQs2z3vyfgz246kd6CgwKBgQCD+yH6dBaTkkJ0oEefOXGNMMq+ai9I0BqHpd5v
22+
GTr2Vk6JwQOnkFJKdtKsjTxEjRvUBpHANCg9PCmwLaUlGIprEoA94EGg6+XmX70F
23+
R3uxdyboKfON4qS0fSvwRkqriMRIqZpY/NA2PKhEs7Oy/IgqPF0huGTDE7+fmdzx
24+
czG6uQKBgAlrPM026Hvz8QgMX17gdihavcxVc7BdfzX3toQGOVVcR0R6IIzzyLQw
25+
IUSOTlZqehfTPcYiMitLSjUo1DeG8mYoEHNAUQ7Kn7gKVO0SeN7u8ehjMuwaDfsW
26+
Gy8dKLUkczquAnCUf5/0j/3yZwyurLkcr5HnNd1uPgI3SMbZYckr
27+
-----END RSA PRIVATE KEY-----
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package main
2+
3+
import (
4+
"bufio"
5+
"crypto/tls"
6+
"fmt"
7+
"net"
8+
)
9+
10+
func main() {
11+
cer, err := tls.LoadX509KeyPair("server.crt", "server.key")
12+
if err != nil {
13+
fmt.Println(err)
14+
return
15+
}
16+
17+
config := &tls.Config{
18+
Certificates: []tls.Certificate{cer},
19+
CipherSuites: []uint16{tls.TLS_CHACHA20_POLY1305_SHA256},
20+
}
21+
ln, err := tls.Listen("tcp", "localhost:8443", config)
22+
if err != nil {
23+
fmt.Println(err)
24+
return
25+
}
26+
defer ln.Close()
27+
28+
for {
29+
conn, err := ln.Accept()
30+
if err != nil {
31+
fmt.Println(err)
32+
continue
33+
}
34+
go handleConnection(conn)
35+
}
36+
}
37+
38+
func handleConnection(conn net.Conn) {
39+
defer conn.Close()
40+
r := bufio.NewReader(conn)
41+
for {
42+
msg, err := r.ReadString('\n')
43+
if err != nil {
44+
fmt.Println(err)
45+
return
46+
}
47+
48+
println(msg)
49+
50+
n, err := conn.Write([]byte("hello, world from server\n"))
51+
if err != nil {
52+
fmt.Println(n, err)
53+
return
54+
}
55+
}
56+
}

go-and-tls13/server_tls12.go

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package main
2+
3+
import (
4+
"bufio"
5+
"crypto/tls"
6+
"fmt"
7+
"net"
8+
)
9+
10+
func main() {
11+
cer, err := tls.LoadX509KeyPair("server.crt", "server.key")
12+
if err != nil {
13+
fmt.Println(err)
14+
return
15+
}
16+
17+
config := &tls.Config{
18+
Certificates: []tls.Certificate{cer},
19+
MaxVersion: tls.VersionTLS12,
20+
}
21+
22+
ln, err := tls.Listen("tcp", "localhost:8443", config)
23+
if err != nil {
24+
fmt.Println(err)
25+
return
26+
}
27+
defer ln.Close()
28+
29+
for {
30+
conn, err := ln.Accept()
31+
if err != nil {
32+
fmt.Println(err)
33+
continue
34+
}
35+
go handleConnection(conn)
36+
}
37+
}
38+
39+
func handleConnection(conn net.Conn) {
40+
defer conn.Close()
41+
r := bufio.NewReader(conn)
42+
for {
43+
msg, err := r.ReadString('\n')
44+
if err != nil {
45+
fmt.Println(err)
46+
return
47+
}
48+
49+
println(msg)
50+
51+
n, err := conn.Write([]byte("hello, world from server\n"))
52+
if err != nil {
53+
fmt.Println(n, err)
54+
return
55+
}
56+
}
57+
}

0 commit comments

Comments
 (0)