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


Dart SecureSocket.secure用法及代码示例

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

用法:

Future<SecureSocket> secure(
   Socket socket,    
   {dynamic host,    
   SecurityContext? context,    
   bool onBadCertificate(
   X509Certificate certificate   
)?,    
   void keyLog(
   String line   
)?,    
   @Since("2.6") List<String>? supportedProtocols}   
)

在现有连接上启动 TLS。

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

如果socket 已经有订阅,则此订阅将不再接收和事件。在大多数情况下,在开始 TLS 握手之前在此订阅上调用 StreamSubscription.pause 是正确的做法。

给定的socket 已关闭,可能不再使用。

如果传递了 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 作为其主机值,并将已连接套接字的 Internet 地址作为其地址值。

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

相关用法


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