Dart TlsProtocolVersion tutorial shows how to work with TLS protocol versions in Dart using the TlsProtocolVersion class.
last modified April 4, 2025
The TlsProtocolVersion class in Dart represents versions of the TLS protocol used for secure communications. It’s essential for network security.
TlsProtocolVersion provides constants for standard TLS versions and methods to compare versions. It’s part of Dart’s dart:io library.
TlsProtocolVersion is an immutable class representing TLS versions. It includes constants like TLSv1, TLSv1_1, TLSv1_2, and TLSv1_3.
Key features include version comparison, string representation, and validation. It’s used in secure socket configurations and security policy definitions.
This example shows basic usage of TlsProtocolVersion constants.
main.dart
import ‘dart:io’;
void main() { var tls1 = TlsProtocolVersion.tls1; var tls12 = TlsProtocolVersion.tls1_2;
print(‘TLS 1.0: $tls1’); print(‘TLS 1.2: $tls12’);
print(‘Is TLS 1.2 newer than TLS 1.0? ${tls12 > tls1}’); }
We create protocol version objects using built-in constants and compare them. The class provides natural ordering of TLS versions.
$ dart main.dart TLS 1.0: TlsProtocolVersion:0x0301 TLS 1.2: TlsProtocolVersion:0x0303 Is TLS 1.2 newer than TLS 1.0? true
This example demonstrates creating custom protocol version objects.
main.dart
import ‘dart:io’;
void main() { var customVersion = TlsProtocolVersion(3, 4);
print(‘Custom version: $customVersion’); print(‘Is standard: ${customVersion.isStandard}’);
var ssl30 = TlsProtocolVersion(3, 0); print(‘SSL 3.0: $ssl30’); print(‘Is standard: ${ssl30.isStandard}’); }
We create non-standard TLS versions by specifying major and minor numbers. The isStandard property checks if the version is a recognized standard.
$ dart main.dart Custom version: TlsProtocolVersion:0x0304 Is standard: false SSL 3.0: TlsProtocolVersion:0x0300 Is standard: true
This example shows detailed version comparison operations.
main.dart
import ‘dart:io’;
void main() { var tls11 = TlsProtocolVersion.tls1_1; var tls13 = TlsProtocolVersion.tls1_3;
print(‘Comparison results:’); print(’tls11 < tls13: ${tls11 < tls13}’); print(’tls11 <= tls13: ${tls11 <= tls13}’); print(’tls11 == tls13: ${tls11 == tls13}’); print(’tls11 >= tls13: ${tls11 >= tls13}’); print(’tls11 > tls13: ${tls11 > tls13}’);
print(‘Hash codes:’); print(’tls11: ${tls11.hashCode}’); print(’tls13: ${tls13.hashCode}’); }
TlsProtocolVersion implements Comparable, allowing full comparison operations. Hash codes are consistent with equality comparisons.
$ dart main.dart Comparison results: tls11 < tls13: true tls11 <= tls13: true tls11 == tls13: false tls11 >= tls13: false tls11 > tls13: false Hash codes: tls11: 769 tls13: 772
This example shows TlsProtocolVersion in a real SecureSocket context.
main.dart
import ‘dart:io’;
void main() async { var server = await SecureServerSocket.bind( ’localhost’, 0, context: SecurityContext() ..useCertificateChain(‘cert.pem’) ..usePrivateKey(‘key.pem’), supportedProtocols: [TlsProtocolVersion.tls1_3] );
print(‘Server running with TLS 1.3 only’); print(‘Supported version: ${server.supportedProtocols}’);
server.close(); }
We configure a SecureServerSocket to only accept TLS 1.3 connections. The supportedProtocols parameter uses TlsProtocolVersion values.
$ dart main.dart Server running with TLS 1.3 only Supported version: [TlsProtocolVersion:0x0304]
This example demonstrates version validation and range checking.
main.dart
import ‘dart:io’;
void main() { var minVersion = TlsProtocolVersion.tls1_2; var current = TlsProtocolVersion.tls1_3; var old = TlsProtocolVersion.tls1;
print(‘Is current acceptable? ${current >= minVersion}’); print(‘Is old acceptable? ${old >= minVersion}’);
var rangeCheck = (TlsProtocolVersion version) { return version >= TlsProtocolVersion.tls1_1 && version <= TlsProtocolVersion.tls1_3; };
print(‘TLS 1.0 in range: ${rangeCheck(TlsProtocolVersion.tls1)}’); print(‘TLS 1.2 in range: ${rangeCheck(TlsProtocolVersion.tls1_2)}’); }
We implement security policies by checking version ranges. This is common in applications requiring minimum TLS versions for security compliance.
$ dart main.dart Is current acceptable? true Is old acceptable? false TLS 1.0 in range: false TLS 1.2 in range: true
Use standards: Prefer standard versions over custom ones
Minimum versions: Enforce minimum secure TLS versions
Comparisons: Use built-in comparison operators
SecurityContext: Configure supported versions explicitly
Dart TlsProtocolVersion Documentation
This tutorial covered Dart’s TlsProtocolVersion class with practical examples showing version handling, comparison, and secure socket configuration.
My name is Jan Bodnar, and I am a passionate programmer with extensive programming experience. I have been writing programming articles since 2007. To date, I have authored over 1,400 articles and 8 e-books. I possess more than ten years of experience in teaching programming.
List all Dart tutorials.