]> Cypherpunks.ru repositories - gostls13.git/blobdiff - src/crypto/tls/handshake_messages_test.go
[dev.boringcrypto] all: merge master into dev.boringcrypto
[gostls13.git] / src / crypto / tls / handshake_messages_test.go
index 2f5d0e42a85a11aaf2f04b16bf8948655dc3011e..c6fc8f2bf3783d03144260b7e2f58c2862e7db10 100644 (file)
@@ -6,6 +6,7 @@ package tls
 
 import (
        "bytes"
+       "encoding/hex"
        "math/rand"
        "reflect"
        "strings"
@@ -463,3 +464,23 @@ func TestRejectEmptySCT(t *testing.T) {
                t.Fatal("Unmarshaled ServerHello with zero-length SCT")
        }
 }
+
+func TestRejectDuplicateExtensions(t *testing.T) {
+       clientHelloBytes, err := hex.DecodeString("010000440303000000000000000000000000000000000000000000000000000000000000000000000000001c0000000a000800000568656c6c6f0000000a000800000568656c6c6f")
+       if err != nil {
+               t.Fatalf("failed to decode test ClientHello: %s", err)
+       }
+       var clientHelloCopy clientHelloMsg
+       if clientHelloCopy.unmarshal(clientHelloBytes) {
+               t.Error("Unmarshaled ClientHello with duplicate extensions")
+       }
+
+       serverHelloBytes, err := hex.DecodeString("02000030030300000000000000000000000000000000000000000000000000000000000000000000000000080005000000050000")
+       if err != nil {
+               t.Fatalf("failed to decode test ServerHello: %s", err)
+       }
+       var serverHelloCopy serverHelloMsg
+       if serverHelloCopy.unmarshal(serverHelloBytes) {
+               t.Fatal("Unmarshaled ServerHello with duplicate extensions")
+       }
+}