Требования

1. Если для данного сокета существует не закрытое соединение, прервать обработку вызова, вернуть код ошибки "Сокет уже используется".

2. Получить IP-адрес по хосту. В случае ошибки прервать обработку вызова, вернуть код ошибки "Хост неизвестен".

3. При открытии подключения ПМ должен выполнить взаимодействие с сервером по указанным в параметрах вызова адресу и порту по протоколу handshake согласно требованиям документов [4] или [5].

4. Для выполнения проверки статуса отзыва сертификата транспортного (TLS) криптографического ключа, генерации эфемерной ключевой пары и создания сессионного ключа ПМ должен вызвать соответствующие функции СКЗИ.

5. Если ПМ не поддерживает версию протокола ГОСТ TLS сервера, вернуть код ошибки "Не поддерживаемая версия протокола TLS".

6. Если при получении сессионного ключа возникла ошибка, вернуть код ошибки "Ошибка получения сессионного ключа".

7. В случае превышения времени ожидания подключения сокета значения входящего параметра waitForConnected вернуть код ошибки "Превышен таймаут ожидания подключения".

8. В случае неуспешного выполнения какого-либо из перечисленных выше действий или получения ошибок при вызове функций СКЗИ прервать выполнение метода и вернуть код ошибки в соответствии с описанием в разделе 3.2.6.