Make SecurityContext final.

Bug:https://github.com/dart-lang/sdk/issues/55786
Change-Id: I351ddb7f39d2ac9ee032bdf88ef6d524c97f8402
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/370703
Reviewed-by: Sigmund Cherem <sigmund@google.com>
Reviewed-by: Leaf Petersen <leafp@google.com>
Reviewed-by: Alexander Aprelev <aam@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Brian Quinlan <bquinlan@google.com>
diff --git a/CHANGELOG.md b/CHANGELOG.md
index d66e2d1..a4181fe 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -38,9 +38,14 @@
 
 #### `dart:io`
 
+- **Breaking Change** [#55786][]: `SecurityContext` is now `final`. This means
+  that `SecurityContext` can no longer be subclassed. `SecurityContext`
+  subclasses were never able to interoperate with other parts of `dart:io`.
+
 - A `ConnectionTask` can now be created using an existing `Future<Socket>`.
   Fixes [#55562].
 
+[#55786]: https://github.com/dart-lang/sdk/issues/55786
 [#55562]: https://github.com/dart-lang/sdk/issues/55562
 
 #### `dart:typed_data`
diff --git a/sdk/lib/io/security_context.dart b/sdk/lib/io/security_context.dart
index df6cbac..77bf37f 100644
--- a/sdk/lib/io/security_context.dart
+++ b/sdk/lib/io/security_context.dart
@@ -43,7 +43,7 @@
 /// iOS note: Some methods to add, remove, and inspect certificates are not yet
 /// implemented. However, the platform's built-in trusted certificates can
 /// be used, by way of [SecurityContext.defaultContext].
-abstract interface class SecurityContext {
+abstract final class SecurityContext {
   /// Creates a new [SecurityContext].
   ///
   /// By default, the created [SecurityContext] contains no keys or certificates.