mirror of https://github.com/bjdgyc/anylink.git
63 lines
1.5 KiB
Go
63 lines
1.5 KiB
Go
// +build go1.13,!js
|
|
|
|
package e2e
|
|
|
|
import (
|
|
"context"
|
|
"crypto/ed25519"
|
|
"crypto/rand"
|
|
"crypto/tls"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/pion/dtls/v2"
|
|
"github.com/pion/dtls/v2/pkg/crypto/selfsign"
|
|
"github.com/pion/transport/test"
|
|
)
|
|
|
|
// ED25519 is not supported in Go 1.12 crypto/x509.
|
|
// Once Go 1.12 is deprecated, move this test to e2e_test.go.
|
|
|
|
func testPionE2ESimpleED25519(t *testing.T, server, client func(*comm)) {
|
|
lim := test.TimeOut(time.Second * 30)
|
|
defer lim.Stop()
|
|
|
|
report := test.CheckRoutines(t)
|
|
defer report()
|
|
|
|
for _, cipherSuite := range []dtls.CipherSuiteID{
|
|
dtls.TLS_ECDHE_ECDSA_WITH_AES_128_CCM,
|
|
dtls.TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8,
|
|
dtls.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
|
|
dtls.TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,
|
|
} {
|
|
cipherSuite := cipherSuite
|
|
t.Run(cipherSuite.String(), func(t *testing.T) {
|
|
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
|
|
defer cancel()
|
|
|
|
_, key, err := ed25519.GenerateKey(rand.Reader)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
cert, err := selfsign.SelfSign(key)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
cfg := &dtls.Config{
|
|
Certificates: []tls.Certificate{cert},
|
|
CipherSuites: []dtls.CipherSuiteID{cipherSuite},
|
|
InsecureSkipVerify: true,
|
|
}
|
|
serverPort := randomPort(t)
|
|
comm := newComm(ctx, cfg, cfg, serverPort, server, client)
|
|
comm.assert(t)
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestPionE2ESimpleED25519(t *testing.T) {
|
|
testPionE2ESimpleED25519(t, serverPion, clientPion)
|
|
}
|