12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- // Copyright 2018 The GoPacket Authors. All rights reserved.
- //
- // Use of this source code is governed by a BSD-style license
- // that can be found in the LICENSE file in the root of the source
- // tree.
- package layers
- import (
- "errors"
- "github.com/google/gopacket"
- )
- // TLSchangeCipherSpec defines the message value inside ChangeCipherSpec Record
- type TLSchangeCipherSpec uint8
- const (
- TLSChangecipherspecMessage TLSchangeCipherSpec = 1
- TLSChangecipherspecUnknown TLSchangeCipherSpec = 255
- )
- // TLS Change Cipher Spec
- // 0 1 2 3 4 5 6 7 8
- // +--+--+--+--+--+--+--+--+
- // | Message |
- // +--+--+--+--+--+--+--+--+
- // TLSChangeCipherSpecRecord defines the type of data inside ChangeCipherSpec Record
- type TLSChangeCipherSpecRecord struct {
- TLSRecordHeader
- Message TLSchangeCipherSpec
- }
- // DecodeFromBytes decodes the slice into the TLS struct.
- func (t *TLSChangeCipherSpecRecord) decodeFromBytes(h TLSRecordHeader, data []byte, df gopacket.DecodeFeedback) error {
- // TLS Record Header
- t.ContentType = h.ContentType
- t.Version = h.Version
- t.Length = h.Length
- if len(data) != 1 {
- df.SetTruncated()
- return errors.New("TLS Change Cipher Spec record incorrect length")
- }
- t.Message = TLSchangeCipherSpec(data[0])
- if t.Message != TLSChangecipherspecMessage {
- t.Message = TLSChangecipherspecUnknown
- }
- return nil
- }
- // String shows the message value nicely formatted
- func (ccs TLSchangeCipherSpec) String() string {
- switch ccs {
- default:
- return "Unknown"
- case TLSChangecipherspecMessage:
- return "Change Cipher Spec Message"
- }
- }
|