diff options
Diffstat (limited to 'crypto/src/tls/DtlsClientProtocol.cs')
-rw-r--r-- | crypto/src/tls/DtlsClientProtocol.cs | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/crypto/src/tls/DtlsClientProtocol.cs b/crypto/src/tls/DtlsClientProtocol.cs index 3b32c044e..88a077168 100644 --- a/crypto/src/tls/DtlsClientProtocol.cs +++ b/crypto/src/tls/DtlsClientProtocol.cs @@ -825,6 +825,24 @@ namespace Org.BouncyCastle.Tls state.serverExtensions); securityParameters.m_applicationProtocolSet = true; + // Connection ID + if (ProtocolVersion.DTLSv12.Equals(securityParameters.NegotiatedVersion)) + { + /* + * RFC 9146 3. When a DTLS session is resumed or renegotiated, the "connection_id" extension is + * negotiated afresh. + */ + var serverConnectionID = TlsExtensionsUtilities.GetConnectionIDExtension(state.serverExtensions); + if (serverConnectionID != null) + { + var clientConnectionID = TlsExtensionsUtilities.GetConnectionIDExtension(state.clientExtensions) + ?? throw new TlsFatalAlert(AlertDescription.internal_error); + + securityParameters.m_connectionIDLocal = serverConnectionID; + securityParameters.m_connectionIDPeer = clientConnectionID; + } + } + // Heartbeats { HeartbeatExtension heartbeatExtension = TlsExtensionsUtilities.GetHeartbeatExtension( |