Documentation ¶
Index ¶
- Constants
- Variables
- func BigEndianUvarint(buf []byte) (uint64, int, error)
- func DecryptQuicFromPool_(header []byte, blockEnd int, destConnId []byte) (plaintext []byte, err error)
- func HkdfExpandLabelFromPool(h func() hash.Hash, secret, label []byte, context []byte, length int) ([]byte, error)
- func ReassembleCryptoToBytesFromPool(plaintextPayload []byte) (b []byte, err error)
- type BuiltinBytesLocator
- type CryptoFrameOffset
- type CryptoFrameRelocation
- func (r *CryptoFrameRelocation) At(i int) byte
- func (r *CryptoFrameRelocation) BinarySearch(iUpper int, leftOuter, rightOuter int) (iOuter int, iInner int, err error)
- func (r *CryptoFrameRelocation) BytesFromPool() []byte
- func (r *CryptoFrameRelocation) Len() int
- func (r *CryptoFrameRelocation) RangeFromPool(i, j int) []byte
- type Keys
- type LinearLocator
- type Locator
- type Version
Constants ¶
View Source
const ( MaxVarintLen64 = 8 MaxPacketNumberLength = 4 SampleSize = 16 )
View Source
const ( Quic_FrameType_Padding = 0 Quic_FrameType_Ping = 1 Quic_FrameType_Crypto = 6 Quic_FrameType_ConnectionClose = 0x1c Quic_FrameType_ConnectionClose2 = 0x1d )
View Source
const ( Version_Draft = iota Version_V1 Version_V2 )
Variables ¶
View Source
var ( UnknownFrameTypeError = fmt.Errorf("unknown frame type") OutOfRangeError = fmt.Errorf("index out of range") )
View Source
var (
InitialClientLabel = []byte("client in")
)
Functions ¶
func BigEndianUvarint ¶
BigEndianUvarint decodes a uint64 from buf and returns that value and the number of bytes read (> 0).
func DecryptQuicFromPool_ ¶
func HkdfExpandLabelFromPool ¶
func HkdfExpandLabelFromPool(h func() hash.Hash, secret, label []byte, context []byte, length int) ([]byte, error)
HkdfExpandLabelFromPool HKDF expands a label. Since this implementation avoids using a cryptobyte.Builder, it is about 15% faster than the hkdfExpandLabel in the standard library.
Types ¶
type BuiltinBytesLocator ¶
type BuiltinBytesLocator []byte
func (BuiltinBytesLocator) At ¶
func (l BuiltinBytesLocator) At(i int) byte
func (BuiltinBytesLocator) Len ¶
func (l BuiltinBytesLocator) Len() int
func (BuiltinBytesLocator) Range ¶
func (l BuiltinBytesLocator) Range(i, j int) []byte
func (BuiltinBytesLocator) Slice ¶
func (l BuiltinBytesLocator) Slice(i, j int) Locator
type CryptoFrameOffset ¶
func ExtractCryptoFrameOffset ¶
func ExtractCryptoFrameOffset(remainder []byte, transportOffset int) (offset *CryptoFrameOffset, frameSize int, err error)
type CryptoFrameRelocation ¶
type CryptoFrameRelocation struct {
// contains filtered or unexported fields
}
func NewCryptoFrameRelocation ¶
func NewCryptoFrameRelocation(plaintextPayload []byte) (cryptoRelocation *CryptoFrameRelocation, err error)
func (*CryptoFrameRelocation) At ¶
func (r *CryptoFrameRelocation) At(i int) byte
func (*CryptoFrameRelocation) BinarySearch ¶
func (*CryptoFrameRelocation) BytesFromPool ¶
func (r *CryptoFrameRelocation) BytesFromPool() []byte
func (*CryptoFrameRelocation) Len ¶
func (r *CryptoFrameRelocation) Len() int
func (*CryptoFrameRelocation) RangeFromPool ¶
func (r *CryptoFrameRelocation) RangeFromPool(i, j int) []byte
RangeFromPool copy bytes from iUpperAppOffset to jUpperAppOffset. It is not suggested to use it for large range and frequent copy.
type Keys ¶
type Keys struct {
// contains filtered or unexported fields
}
type LinearLocator ¶
type LinearLocator struct {
// contains filtered or unexported fields
}
LinearLocator only searches forward and have no boundary check.
func NewLinearLocator ¶
func NewLinearLocator(cfr *CryptoFrameRelocation) (linearLocator *LinearLocator)
func (*LinearLocator) At ¶
func (ll *LinearLocator) At(i int) byte
func (*LinearLocator) Len ¶
func (ll *LinearLocator) Len() int
func (*LinearLocator) Range ¶
func (ll *LinearLocator) Range(i, j int) []byte
func (*LinearLocator) Slice ¶
func (ll *LinearLocator) Slice(i, j int) Locator
Click to show internal directories.
Click to hide internal directories.