File: stateless_reset_test.go

package info (click to toggle)
golang-github-lucas-clemente-quic-go 0.54.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 4,312 kB
  • sloc: sh: 54; makefile: 7
file content (42 lines) | stat: -rw-r--r-- 1,076 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package quic

import (
	"crypto/rand"
	"testing"

	"github.com/quic-go/quic-go/internal/protocol"
	"github.com/stretchr/testify/require"
)

func TestStatelessResetter(t *testing.T) {
	t.Run("no key", func(t *testing.T) {
		r1 := newStatelessResetter(nil)
		r2 := newStatelessResetter(nil)
		for i := 0; i < 100; i++ {
			b := make([]byte, 15)
			rand.Read(b)
			connID := protocol.ParseConnectionID(b)
			t1 := r1.GetStatelessResetToken(connID)
			t2 := r2.GetStatelessResetToken(connID)
			require.NotZero(t, t1)
			require.NotZero(t, t2)
			require.NotEqual(t, t1, t2)
		}
	})

	t.Run("with key", func(t *testing.T) {
		var key StatelessResetKey
		rand.Read(key[:])
		m := newStatelessResetter(&key)
		b := make([]byte, 8)
		rand.Read(b)
		connID := protocol.ParseConnectionID(b)
		token := m.GetStatelessResetToken(connID)
		require.NotZero(t, token)
		require.Equal(t, token, m.GetStatelessResetToken(connID))
		// generate a new connection ID
		rand.Read(b)
		connID2 := protocol.ParseConnectionID(b)
		require.NotEqual(t, token, m.GetStatelessResetToken(connID2))
	})
}