Add SRTP Resumption

This commit is contained in:
Sean DuBois
2023-03-25 23:51:35 -04:00
parent 3638bce3b6
commit 9a0eb47351
4 changed files with 22 additions and 1 deletions

View File

@@ -222,6 +222,8 @@ func (t *DTLSTransport) startSRTP() error {
return fmt.Errorf("%w: %v", errFailedToStartSRTCP, err)
}
srtcpSession.Resume(t.api.settingEngine.srtpState)
t.srtpSession.Store(srtpSession)
t.srtcpSession.Store(srtcpSession)
close(t.srtpReady)
@@ -244,6 +246,15 @@ func (t *DTLSTransport) getSRTCPSession() (*srtp.SessionSRTCP, error) {
return nil, errDtlsTransportNotStarted
}
func (t *DTLSTransport) GetSRTPState() map[uint32]uint32 {
srtcpSession, err := t.getSRTCPSession()
if err != nil {
return nil
}
return srtcpSession.State()
}
func (t *DTLSTransport) role() DTLSRole {
// If remote has an explicit role use the inverse
switch t.remoteParameters.Role {

3
go.mod
View File

@@ -15,10 +15,11 @@ require (
github.com/pion/rtp v1.7.13
github.com/pion/sctp v1.8.6
github.com/pion/sdp/v3 v3.0.6
github.com/pion/srtp/v2 v2.0.12
github.com/pion/srtp/v2 v2.0.13-0.20230326035121-5f7175086aae
github.com/pion/transport/v2 v2.0.2
github.com/sclevine/agouti v3.0.0+incompatible
github.com/stretchr/testify v1.8.2
golang.org/x/crypto v0.6.0 // indirect
golang.org/x/net v0.7.0
golang.org/x/sys v0.6.0 // indirect
)

4
go.sum
View File

@@ -65,6 +65,8 @@ github.com/pion/sdp/v3 v3.0.6 h1:WuDLhtuFUUVpTfus9ILC4HRyHsW6TdugjEX/QY9OiUw=
github.com/pion/sdp/v3 v3.0.6/go.mod h1:iiFWFpQO8Fy3S5ldclBkpXqmWy02ns78NOKoLLL0YQw=
github.com/pion/srtp/v2 v2.0.12 h1:WrmiVCubGMOAObBU1vwWjG0H3VSyQHawKeer2PVA5rY=
github.com/pion/srtp/v2 v2.0.12/go.mod h1:C3Ep44hlOo2qEYaq4ddsmK5dL63eLehXFbHaZ9F5V9Y=
github.com/pion/srtp/v2 v2.0.13-0.20230326035121-5f7175086aae h1:GGa/BGQD+wVviFJC8umocBj276dYn4PhqTEtL6yyHq0=
github.com/pion/srtp/v2 v2.0.13-0.20230326035121-5f7175086aae/go.mod h1:FA7u5fWpVITMYNL70TA3csQuMQJA5/+6ZMajGxveHgM=
github.com/pion/stun v0.4.0 h1:vgRrbBE2htWHy7l3Zsxckk7rkjnjOsSM7PHZnBwo8rk=
github.com/pion/stun v0.4.0/go.mod h1:QPsh1/SbXASntw3zkkrIk3ZJVKz4saBY2G7S10P3wCw=
github.com/pion/transport v0.14.1 h1:XSM6olwW+o8J4SCmOBb/BpwZypkHeyM0PGFCxNQBr40=
@@ -136,6 +138,8 @@ golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=

View File

@@ -78,6 +78,7 @@ type SettingEngine struct {
iceProxyDialer proxy.Dialer
disableMediaEngineCopy bool
srtpProtectionProfiles []dtls.SRTPProtectionProfile
srtpState map[uint32]uint32
receiveMTU uint
}
@@ -375,3 +376,7 @@ func (e *SettingEngine) SetSCTPMaxReceiveBufferSize(maxReceiveBufferSize uint32)
func (e *SettingEngine) SetDTLSConnectionState(connectionState *dtls.State) {
e.dtls.connectionState = connectionState
}
func (e *SettingEngine) SetSRTPState(state map[uint32]uint32) {
e.srtpState = state
}