當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。