Source File
header.go
Belonging Package
github.com/pion/dtls/v2/pkg/protocol/recordlayer
// SPDX-FileCopyrightText: 2023 The Pion community <https://pion.ly>// SPDX-License-Identifier: MITpackage recordlayerimport ()// Header implements a TLS RecordLayer headertype Header struct {ContentType protocol.ContentTypeContentLen uint16Version protocol.VersionEpoch uint16SequenceNumber uint64 // uint48 in spec}// RecordLayer enumsconst (HeaderSize = 13MaxSequenceNumber = 0x0000FFFFFFFFFFFF)// Marshal encodes a TLS RecordLayer Header to binaryfunc ( *Header) () ([]byte, error) {if .SequenceNumber > MaxSequenceNumber {return nil, errSequenceNumberOverflow}:= make([]byte, HeaderSize)[0] = byte(.ContentType)[1] = .Version.Major[2] = .Version.Minorbinary.BigEndian.PutUint16([3:], .Epoch)util.PutBigEndianUint48([5:], .SequenceNumber)binary.BigEndian.PutUint16([HeaderSize-2:], .ContentLen)return , nil}// Unmarshal populates a TLS RecordLayer Header from binaryfunc ( *Header) ( []byte) error {if len() < HeaderSize {return errBufferTooSmall}.ContentType = protocol.ContentType([0]).Version.Major = [1].Version.Minor = [2].Epoch = binary.BigEndian.Uint16([3:])// SequenceNumber is stored as uint48, make into uint64:= make([]byte, 8)copy([2:], [5:11]).SequenceNumber = binary.BigEndian.Uint64()if !.Version.Equal(protocol.Version1_0) && !.Version.Equal(protocol.Version1_2) {return errUnsupportedProtocolVersion}return nil}
![]() |
The pages are generated with Golds v0.8.2. (GOOS=linux GOARCH=amd64) Golds is a Go 101 project developed by Tapir Liu. PR and bug reports are welcome and can be submitted to the issue list. Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds. |