github.com/zmap/zcrypto@v0.0.0-20240512203510-0fef58d9a9db/tls/tls_handshake_test.go (about) 1 // Copyright 2015 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package tls 6 7 import ( 8 "encoding/json" 9 "reflect" 10 "testing" 11 ) 12 13 type ZTLSHandshakeSuite struct{} 14 15 func marshalAndUnmarshal(original interface{}, target interface{}) error { 16 var b []byte 17 var err error 18 if b, err = json.Marshal(original); err != nil { 19 return err 20 } 21 if err = json.Unmarshal(b, target); err != nil { 22 return err 23 } 24 return nil 25 } 26 27 func marshalAndUnmarshalAndCheckEquality(original interface{}, target interface{}, t *testing.T) { 28 if err := marshalAndUnmarshal(original, target); err != nil { 29 t.Fatalf("unable to marshalAndUnmarshal: %s", err.Error()) 30 } 31 if eq := reflect.DeepEqual(original, target); eq != true { 32 t.Errorf("expected %+v to equal %+v", original, target) 33 } 34 } 35 36 func TestTLSVersionEncodeDecode(t *testing.T) { 37 v := TLSVersion(VersionTLS12) 38 var dec TLSVersion 39 marshalAndUnmarshalAndCheckEquality(&v, &dec, t) 40 } 41 42 func TestCipherSuiteEncodeDecode(t *testing.T) { 43 v := CipherSuite(TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256) 44 var dec CipherSuite 45 marshalAndUnmarshalAndCheckEquality(&v, &dec, t) 46 expectedName := nameForSuite(TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256) 47 if decodedName := dec.String(); decodedName != expectedName { 48 t.Errorf("decoded wrong name, got %s, expected %s", decodedName, expectedName) 49 } 50 }