diff options
author | Peter Dettman <peter.dettman@bouncycastle.org> | 2023-05-11 21:04:11 +0700 |
---|---|---|
committer | Peter Dettman <peter.dettman@bouncycastle.org> | 2023-05-11 21:04:11 +0700 |
commit | 5b27019abd9ae16f883b1fdff8398288d50abbfc (patch) | |
tree | def16ac4ed34c587020f70ae474be90d61588e76 | |
parent | fix exception during DTLS server handshake when the client has no extensions (diff) | |
download | BouncyCastle.NET-ed25519-5b27019abd9ae16f883b1fdff8398288d50abbfc.tar.xz |
TLS: Add NotifyConnectionClosed callback
-rw-r--r-- | crypto/src/tls/AbstractTlsPeer.cs | 4 | ||||
-rw-r--r-- | crypto/src/tls/TlsPeer.cs | 4 | ||||
-rw-r--r-- | crypto/src/tls/TlsProtocol.cs | 2 | ||||
-rw-r--r-- | crypto/src/tls/TlsUtilities.cs | 9 |
4 files changed, 19 insertions, 0 deletions
diff --git a/crypto/src/tls/AbstractTlsPeer.cs b/crypto/src/tls/AbstractTlsPeer.cs index 82f8dd1e5..b69acf404 100644 --- a/crypto/src/tls/AbstractTlsPeer.cs +++ b/crypto/src/tls/AbstractTlsPeer.cs @@ -148,6 +148,10 @@ namespace Org.BouncyCastle.Tls { } + public virtual void NotifyConnectionClosed() + { + } + /// <exception cref="IOException"/> public virtual void NotifyHandshakeComplete() { diff --git a/crypto/src/tls/TlsPeer.cs b/crypto/src/tls/TlsPeer.cs index 4f16978d9..4d7225aee 100644 --- a/crypto/src/tls/TlsPeer.cs +++ b/crypto/src/tls/TlsPeer.cs @@ -109,6 +109,10 @@ namespace Org.BouncyCastle.Tls /// <param name="alertDescription"><see cref="AlertDescription"/></param> void NotifyAlertReceived(short alertLevel, short alertDescription); + /// <summary>Notifies the peer that the connection has been closed.</summary> + // TODO[api] + //void NotifyConnectionClosed(); + /// <summary>Notifies the peer that the handshake has been successfully completed.</summary> /// <exception cref="IOException"/> void NotifyHandshakeComplete(); diff --git a/crypto/src/tls/TlsProtocol.cs b/crypto/src/tls/TlsProtocol.cs index 55fb9f745..e093ff07a 100644 --- a/crypto/src/tls/TlsProtocol.cs +++ b/crypto/src/tls/TlsProtocol.cs @@ -273,6 +273,8 @@ namespace Org.BouncyCastle.Tls RaiseAlertWarning(AlertDescription.close_notify, "Connection closed"); CloseConnection(); + + TlsUtilities.NotifyConnectionClosed(Peer); } } diff --git a/crypto/src/tls/TlsUtilities.cs b/crypto/src/tls/TlsUtilities.cs index 69a458a5a..92102e826 100644 --- a/crypto/src/tls/TlsUtilities.cs +++ b/crypto/src/tls/TlsUtilities.cs @@ -5730,5 +5730,14 @@ namespace Org.BouncyCastle.Tls return 1000; } + + // TODO[api] Not needed once NotifyConnectionClosed() has been added to TlsPeer + internal static void NotifyConnectionClosed(TlsPeer tlsPeer) + { + if (tlsPeer is AbstractTlsPeer abstractTlsPeer) + { + abstractTlsPeer.NotifyConnectionClosed(); + } + } } } |