| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- // SPDX-FileCopyrightText: 2023 The Pion community <https://pion.ly>
- // SPDX-License-Identifier: MIT
- package dtls
- import (
- "context"
- "github.com/pion/dtls/v2/pkg/protocol/alert"
- )
- // Parse received handshakes and return next flightVal
- type flightParser func(context.Context, flightConn, *State, *handshakeCache, *handshakeConfig) (flightVal, *alert.Alert, error)
- // Generate flights
- //
- // [Psiphon]
- // Pass in dial context for GetDTLSSeed.
- type flightGenerator func(context.Context, flightConn, *State, *handshakeCache, *handshakeConfig) ([]*packet, *alert.Alert, error)
- func (f flightVal) getFlightParser() (flightParser, error) {
- switch f {
- case flight0:
- return flight0Parse, nil
- case flight1:
- return flight1Parse, nil
- case flight2:
- return flight2Parse, nil
- case flight3:
- return flight3Parse, nil
- case flight4:
- return flight4Parse, nil
- case flight4b:
- return flight4bParse, nil
- case flight5:
- return flight5Parse, nil
- case flight5b:
- return flight5bParse, nil
- case flight6:
- return flight6Parse, nil
- default:
- return nil, errInvalidFlight
- }
- }
- func (f flightVal) getFlightGenerator() (gen flightGenerator, retransmit bool, err error) {
- switch f {
- case flight0:
- return flight0Generate, true, nil
- case flight1:
- return flight1Generate, true, nil
- case flight2:
- // https://tools.ietf.org/html/rfc6347#section-3.2.1
- // HelloVerifyRequests must not be retransmitted.
- return flight2Generate, false, nil
- case flight3:
- return flight3Generate, true, nil
- case flight4:
- return flight4Generate, true, nil
- case flight4b:
- return flight4bGenerate, true, nil
- case flight5:
- return flight5Generate, true, nil
- case flight5b:
- return flight5bGenerate, true, nil
- case flight6:
- return flight6Generate, true, nil
- default:
- return nil, false, errInvalidFlight
- }
- }
|