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  }