Spec-Zone.ru › Dart 2

dart:io

Метод connect

Future<RawSecureSocket> connect(
  1. dynamic host,
  2. int port,
  3. {SecurityContext? context,
  4. bool onBadCertificate(
    1. X509Certificate certificate
    )?,
  5. void keyLog(
    1. String line
    )?,
  6. List<String>? supportedProtocols,
  7. Duration? timeout}
)
override

Создаёт новый защищённый клиентский сокет и подключает его к указанному хосту по указанному порту.

Возвращаемое значение Future завершается значением RawSecureSocket при подключении и готовности к подписке.

Сертификат, предоставленный сервером, проверяется с использованием надёжных сертификатов, установленных в объекте SecurityContext. Если на клиенте установлены сертификат и ключ, используя SecurityContext.useCertificateChain и SecurityContext.usePrivateKey, и сервер запрашивает клиентский сертификат, то этот клиентский сертификат отправляется на сервер.

onBadCertificate — это необязательный обработчик для непроверяемых сертификатов. Обработчик получает X509Certificate и может проверить его, принять решение (или позволить пользователю принять решение) о принятии подключения или нет. Обработчик должен вернуть true, чтобы продолжить RawSecureSocket подключение.

onBadCertificate — это необязательный обработчик для непроверяемых сертификатов. Обработчик получает X509Certificate и может проверить его, принять решение (или позволить пользователю принять решение) о принятии подключения или нет. Обработчик должен вернуть true, чтобы продолжить подключение SecureSocket.

keyLog — это необязательный обработчик, который вызывается при обмене новыми TLS-ключами с сервером. keyLog получит одну строку текста в формате NSS Key Log Format для каждого вызова. Запись этих строк в файл позволит инструментам (таким как Wireshark) расшифровать содержимое, отправленное через этот сокет. Это предназначено для отладки защищённых сокетов на уровне сети и не должно использоваться в рабочем коде. Например:

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». Выбранный протокол можно получить через RawSecureSocket.selectedProtocol.

Реализация

static Future<RawSecureSocket> connect(host, int port,
    {SecurityContext? context,
    bool onBadCertificate(X509Certificate certificate)?,
    void keyLog(String line)?,
    List<String>? supportedProtocols,
    Duration? timeout}) {
  _RawSecureSocket._verifyFields(host, port, false, false);
  return RawSocket.connect(host, port, timeout: timeout).then((socket) {
    return secure(socket,
        context: context,
        onBadCertificate: onBadCertificate,
        keyLog: keyLog,
        supportedProtocols: supportedProtocols);
  });
}

© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.18.5/dart-io/RawSecureSocket/connect.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API