当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Dart RawSecureSocket.secure用法及代码示例


dart:io 库中RawSecureSocket.secure 方法的用法介绍如下。

用法:

Future<RawSecureSocket> secure(
   RawSocket socket,    
   {StreamSubscription<RawSocketEvent>? subscription,    
   dynamic host,    
   SecurityContext? context,    
   bool onBadCertificate(
   X509Certificate certificate   
)?,    
   void keyLog(
   String line   
)?,    
   List<String>? supportedProtocols}   
)

在现有连接上启动 TLS。

获取已连接的socket 并启动客户端 TLS 握手以确保通信安全。当返回的未来完成时,RawSecureSocket 已完成 TLS 握手。使用此函数需要连接的另一端为 TLS 握手做好准备。

如果 socket 已有订阅,请在 subscription 参数中传递现有订阅。 secure 操作将通过用它自己的安全处理替换处理程序来接管订阅。调用者不得再触摸此订阅。传递暂停的订阅是一个错误。

如果传递了 host 参数,它将用作 TLS 握手的主机名。如果未传递host,则将使用来自socket 的主机名。 host 可以是 StringInternetAddress

onBadCertificate 是不可验证证书的可选处理程序。处理程序接收到 X509Certificate ,并且可以检查它并决定(或让用户决定)是否接受连接。处理程序应返回 true 以继续 SecureSocket 连接。

keyLog 是一个可选回调,当与服务器交换新的 TLS key 时将调用该回调。每次调用keyLog 将在NSS Key Log Format 中接收一行文本。将这些行写入文件将允许工具(例如 Wireshark )解密通过此套接字发送的内容。这意味着允许network-level 调试安全套接字,不应在生产代码中使用。例如:

final log = File('keylog.txt');
final socket = await SecureSocket.connect('www.example.com', 443,
    keyLog: (line) => log.writeAsStringSync(line, mode: FileMode.append));

supportedProtocols 是在与服务器进行 ALPN 协议协商期间使用的可选协议列表(按优先级降序排列)。示例值为 "http/1.1" 或 "h2"。可以通过 SecureSocket.selectedProtocol 获得所选协议。

调用此函数将 not 导致 DNS 主机查找。如果传递的hostString,则生成的SecureSocketInternetAddress 将在host 作为其主机值和已连接套接字的互联网地址作为其地址值。

有关参数的更多信息,请参阅connect

相关用法


注:本文由纯净天空筛选整理自dart.dev大神的英文原创作品 secure method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。