Компилируемый код C++ для реализации безопасного клиента SLL/TLS, использующего MS SSPI

Как описано здесь http://www.ddj.com/cpp/184401688

У меня нет времени для записи этого с нуля.

Спрошенный и не ответил на https://stackoverflow.com/questions/434961/implementing-ssl

ВОПРОС:

Я ищу некоторый компилируемый рабочий исходный код, который реализует MS SSPI (как сослался на в потоке выше), процедурный не предпочтенное ООП.

Я посмотрел на образец проектов кода здесь:

http://www.codeproject.com/KB/IP/sslclasses.aspx

Но это - ООП C#. Преобразование этого к коду C++ не тривиально.

OpenSSL

Вызовы SChannel следуют стандартам API GSS. Существуют, конечно, некоторые альтернативы - OpenSSL, например. Этот пакет является полной и полной реализацией протокола, и для кого-то слишком знакомого с UNIX, несомненно, лучший выбор. Пакет первоначально предназначался для сообщества UNIX, и скомпилировать его полагается на время выполнения Perl, таким образом, некоторая кривая обучения требуется для разработчиков Windows, которые никогда не работали с системами типов UNIX.

Кроме этого, OpenSLL делает некоторые очень нестандартные вещи

Nikolai, Имея contibuted много КОМПИЛИРУЕМОГО исходного кода (www.coastrd.com) я надеялся найти кого-то готовым сделать то же.

7
задан Community 23 May 2017 в 11:47
поделиться

4 ответа

Этот пример SSPI SChannel SMTPS должен компилироваться и запускаться в Visual Studio 2008 как есть

http://www.coastrd.com/c-schannel-smtp

SChannel - это реализация Microsoft API GSS, которая обертывает протокол SSL / TLS.

Преимущества использования SChannel:

  • Кровавые детали скрыты от разработчика SSPI.
  • Для запуска окончательного приложения не требуется дополнительных настроек:
  • SChannel является неотъемлемой частью операционной системы
  • На платформах Windows ME / 2000 / XP / ... SChannel устанавливается и настраивается по умолчанию
  • Вызовы SChannel соответствуют стандартам GSS API.
  • Вам не нужно создавать / устанавливать какие-либо сертификаты
  • нет сторонних dll (1 МБ или больше) для доставки и установки

Код должен создать сеанс, который выглядит следующим образом:

---- - SSPI Initialized
----- WinSock Initialized
----- Учетные данные инициализированы
----- Подключено к серверу
70 байтов данных рукопожатия отправлено
Получено 974 байта данных рукопожатия
Отправлено 182 байта данных рукопожатия
43 байт полученных данных рукопожатия
Рукопожатие прошло успешно
----- Подтверждение соединения выполнено клиентом
----- Учетные данные сервера аутентифицированы

Тема сервера: C = США, S = Калифорния, L = Маунтин-Вью, O = Google Inc, CN = smtp.gmail.com
Издатель сервера: C = ZA, S = Western Cape, L = Cape Town, O = Thawte Consulting cc, OU = Certification Services Division, CN = Thawte Premium Server CA, (скрыто)

----- Отображение цепочки сертификатов
----- Сертификат сервера подтвержден
----- Контекст сертификата сервера выпущен

Протокол: TLS1
Шифр: RC4
Уровень шифра: 128
Хеш: MD5
Уровень хеширования: 128
{{1 }} Обмен ключами: RSA
Уровень обмена ключами: 1024
----- Информация о безопасном соединении
64 байта (зашифрованного) приложения полученные данные
Расшифрованные данные: 43 байта
220 mx.google.com ESMTP 6sm17740567yxg.66

Отправка 7 байтов открытого текста:
EHLO

Отправлено 28 байтов зашифрованных данных
Получено 169 байтов (зашифрованных) данных приложения
Расшифрованные данные: 148 байтов
250- mx.google.com к вашим услугам, [22.33.111.222]
РАЗМЕР 250 35651584
250- 8BITMIME
250-AUTH LOGIN PLAIN
250-ENHANCEDSTATUSCODES
250 PIPELINING

Отправка 7 байтов открытого текста:
{{1 }} QUIT

Отправлено 28 байтов зашифрованных данных
Получено 69 байтов (зашифрованных) данных приложения
Расшифрованные данные: 48 байтов
221 2.0.0 закрытие соединения 6sm17740567yxg.66

----- SMTP-сеанс завершен
Отправка уведомления о закрытии
Отправлено 23 байта данных рукопожатия
{{ 1}} ----- Отключено от сервера
----- Начать очистку
----- Все готово -----

{ {1}}
23
ответ дан 6 December 2019 в 05:43
поделиться
[

]Повторяйте за мной: "Я хочу использовать []OpenSSL[]".[

] [

]Эта проблема слишком серьезна и слишком проста для того, чтобы каждый раз ее решать. Если у вас есть проблема с OpenSSL, попробуйте решить ее с помощью диалога и патчей к OpenSSL.[

] [

](Никто не застрахован от ее исправления, даже Microsoft или OpenSSL. Используйте что-нибудь, чей исходный текст вы можете просмотреть, и который будет исправлен, когда возникнут проблемы. Используйте OpenSSL.)[

].
5
ответ дан 6 December 2019 в 05:43
поделиться
[

] Может быть [] эта ссылка [] является хорошей отправной точкой. Она содержит реально работающий пример кода, использующий MS SSPI (хотя он выглядит очень специфично для MSVC, но ладно, его окна все равно только). Просто игнорируйте примеры OpenSSL ;-)[

].
5
ответ дан 6 December 2019 в 05:43
поделиться
[

] Сколько бы вы заплатили за такой компилируемый рабочий код? Или вы ожидали, что кто-то просто отдаст его вам? Ребята из OpenSSL уже дали. Это божественно, но цена верная. [

]
0
ответ дан 6 December 2019 в 05:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: