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
可以是 String 或 InternetAddress 。
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 主機查找。如果傳遞的 host
是 String ,則生成的 SecureSocket
的 InternetAddress 將傳入 host
作為其主機值,並將已連接套接字的 Internet 地址作為其地址值。
有關參數的更多信息,請參閱connect。
相關用法
- Dart SecureSocket.connect用法及代碼示例
- Dart SecurityContext.setTrustedCertificates用法及代碼示例
- Dart SetMixin.forEach用法及代碼示例
- Dart SetMixin.addAll用法及代碼示例
- Dart Set.removeWhere用法及代碼示例
- Dart Set.from用法及代碼示例
- Dart SetMixin.reduce用法及代碼示例
- Dart Set.remove用法及代碼示例
- Dart Set.retainAll用法及代碼示例
- Dart SetMixin.removeAll用法及代碼示例
- Dart SetMixin.add用法及代碼示例
- Dart SetMixin.expand用法及代碼示例
- Dart SetMixin.elementAt用法及代碼示例
- Dart SetMixin.contains用法及代碼示例
- Dart Set.contains用法及代碼示例
- Dart SetMixin.containsAll用法及代碼示例
- Dart Set.retainWhere用法及代碼示例
- Dart Set.union用法及代碼示例
- Dart Set.unmodifiable用法及代碼示例
- Dart SetMixin.isEmpty用法及代碼示例
- Dart SetMixin.firstWhere用法及代碼示例
- Dart Set.addAll用法及代碼示例
- Dart SetMixin.skip用法及代碼示例
- Dart Set.difference用法及代碼示例
- Dart Set.clear用法及代碼示例
注:本文由純淨天空篩選整理自dart.dev大神的英文原創作品 secure method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。