diff options
Diffstat (limited to 'crypto/src/tls/TlsExtensionsUtilities.cs')
-rw-r--r-- | crypto/src/tls/TlsExtensionsUtilities.cs | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/crypto/src/tls/TlsExtensionsUtilities.cs b/crypto/src/tls/TlsExtensionsUtilities.cs index 836c1b506..bc4ca2714 100644 --- a/crypto/src/tls/TlsExtensionsUtilities.cs +++ b/crypto/src/tls/TlsExtensionsUtilities.cs @@ -64,6 +64,12 @@ namespace Org.BouncyCastle.Tls } /// <exception cref="IOException"/> + public static void AddConnectionIDExtension(IDictionary<int, byte[]> extensions, byte[] connectionID) + { + extensions[ExtensionType.connection_id] = CreateConnectionIDExtension(connectionID); + } + + /// <exception cref="IOException"/> public static void AddCookieExtension(IDictionary<int, byte[]> extensions, byte[] cookie) { extensions[ExtensionType.cookie] = CreateCookieExtension(cookie); @@ -317,6 +323,13 @@ namespace Org.BouncyCastle.Tls } /// <exception cref="IOException"/> + public static byte[] GetConnectionIDExtension(IDictionary<int, byte[]> extensions) + { + byte[] extensionData = TlsUtilities.GetExtensionData(extensions, ExtensionType.connection_id); + return extensionData == null ? null : ReadConnectionIDExtension(extensionData); + } + + /// <exception cref="IOException"/> public static byte[] GetCookieExtension(IDictionary<int, byte[]> extensions) { byte[] extensionData = TlsUtilities.GetExtensionData(extensions, ExtensionType.cookie); @@ -631,6 +644,15 @@ namespace Org.BouncyCastle.Tls } /// <exception cref="IOException"/> + public static byte[] CreateConnectionIDExtension(byte[] connectionID) + { + if (connectionID == null) + throw new TlsFatalAlert(AlertDescription.internal_error); + + return TlsUtilities.EncodeOpaque8(connectionID); + } + + /// <exception cref="IOException"/> public static byte[] CreateCookieExtension(byte[] cookie) { if (TlsUtilities.IsNullOrEmpty(cookie) || cookie.Length >= (1 << 16)) @@ -1059,6 +1081,12 @@ namespace Org.BouncyCastle.Tls } /// <exception cref="IOException"/> + public static byte[] ReadConnectionIDExtension(byte[] extensionData) + { + return TlsUtilities.DecodeOpaque8(extensionData); + } + + /// <exception cref="IOException"/> public static byte[] ReadCookieExtension(byte[] extensionData) { return TlsUtilities.DecodeOpaque16(extensionData, 1); |