TSL & SMTP
От: denissha  
Дата: 26.06.09 10:51
Оценка:
Здравствуйте.

Для нужд клиента в бизнес-приложении (Win32) был реализован почтовый клиент.
Все вроде хорошо. Письма отправляются и получаются.
Возникла проблема — клиент хочет использовать шифрование.
Я нашел GNUTLS. Скачал доку.
Но не могу теперь понять, как мне модифицировать свой код.
Подскажите, где смотреть. Или может другие библиотеки использовать?
Re: TSL & SMTP
От: Аноним  
Дата: 26.06.09 11:04
Оценка:
сорри, в теме опечатка. Конечно TLS меня интересует
Re: TSL & SMTP
От: Andriy Melnyk Украина  
Дата: 26.06.09 12:11
Оценка:
Здравствуйте, denissha, Вы писали:

D>Здравствуйте.


D>Для нужд клиента в бизнес-приложении (Win32) был реализован почтовый клиент.

D>Все вроде хорошо. Письма отправляются и получаются.
D>Возникла проблема — клиент хочет использовать шифрование.
D>Я нашел GNUTLS. Скачал доку.
D>Но не могу теперь понять, как мне модифицировать свой код.
D>Подскажите, где смотреть. Или может другие библиотеки использовать?

Ну во первых надо проверить — А поддерживает ли mail сервер smtp шифрование?

Во вторых есть стандарт для Secure SMTP
SMTP Service Extension for Secure SMTP over Transport Layer Security

Если сервер поддерживает Secure SMTP, тогда насторить его соответственно и смотреть для клиента винды в сторону

SSPI
Sample SSPI Code

для .net
SmtpClient.EnableSsl
Re[2]: TSL & SMTP
От: denissha  
Дата: 01.07.09 10:57
Оценка:
Здравствуйте, Andriy Melnyk, Вы писали:

AM>Ну во первых надо проверить — А поддерживает ли mail сервер smtp шифрование?


Поддерживает

AM>Во вторых есть стандарт для Secure SMTP

AM>SMTP Service Extension for Secure SMTP over Transport Layer Security

AM>Если сервер поддерживает Secure SMTP, тогда насторить его соответственно и смотреть для клиента винды в сторону


AM>SSPI

AM>Sample SSPI Code

Спасибо.

Теперь возникает такой вопрос:

Я взял пример кода. Пытаюсь разбираться со временным аккаунтом на gmail.com. Перевел пример на мой язык программирования и столкнулся со следующим:

После вызова следующей функции
QueryContextAttributes(@hCtxt, SECPKG_ATTR_NEGOTIATION_INFO, @SecPkgNegInfo )

SecPkgNegInfo не содержит никаких данных — память вся нулевая. Хотя результат выполнения функции положительный.

Что может быть не так?

Сильно не пинайте, я полный ламер в этих вопросах.
Re[3]: TSL & SMTP
От: denissha  
Дата: 01.07.09 11:06
Оценка:
D>Теперь возникает такой вопрос:

D>Я взял пример кода. Пытаюсь разбираться со временным аккаунтом на gmail.com. Перевел пример на мой язык программирования и столкнулся со следующим:


D>После вызова следующей функции

D>QueryContextAttributes(@hCtxt, SECPKG_ATTR_NEGOTIATION_INFO, @SecPkgNegInfo )

D>SecPkgNegInfo не содержит никаких данных — память вся нулевая. Хотя результат выполнения функции положительный.


Не нашел, как дополнить предыдущее сообщение.

Результат выполнения этой функции 769. Я в дефайнах не нашел такого результата.
Re[4]: TSL & SMTP
От: Аноним  
Дата: 01.07.09 12:03
Оценка:
Здравствуйте, denissha, Вы писали:

D>Результат выполнения этой функции 769. Я в дефайнах не нашел такого результата.


Смотреть SEC_E_*
Re[4]: TSL & SMTP
От: denissha  
Дата: 01.07.09 12:31
Оценка:
продолжаю разбираться. дошел до следующего.

Вызываю функцию:
ss := AcquireCredentialsHandle(null_psz,lpPackageInfo.Name,SECPKG_CRED_OUTBOUND,null_ptr,null_ptr,null_ptr,null_ptr,@hCred,@Lifetime)

SS = 0, но hCred пустой — нет никаких данных. Это нормально? И не могу понять почему.
Re[5]: TSL & SMTP
От: denissha  
Дата: 01.07.09 12:32
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, denissha, Вы писали:


D>>Результат выполнения этой функции 769. Я в дефайнах не нашел такого результата.


А>Смотреть SEC_E_*


в тех хедерах, что я нашел, нет ни одного дефайна со значением 769
Re[5]: TSL & SMTP
От: denissha  
Дата: 01.07.09 12:53
Оценка:
Спасибо за участие.
Напутал с памятью малость.

Вроде продвинулся. Но еще не все прошел. Будут вопросы — буду спрашивать.
Re[2]: TSL & SMTP
От: denissha  
Дата: 01.07.09 13:14
Оценка:
Итак, столкнулся с новой проблемой.

В коде идут две строки:

ss := QueryContextAttributes(hCtxt, SECPKG_ATTR_NEGOTIATION_INFO, @SecPkgNegInfo )

ss := QueryContextAttributes(hCtxt, SECPKG_ATTR_SIZES, @SecPkgContextSizes )


Первая строка выполняется и я получаю описание. SS при этом = 0
А вот вторая строка уже не работает. Возвращает 769 и в структуре SecPkgContextSizes нули.

Заранее спасибо за помощь.
Re: TSL & SMTP
От: denissha  
Дата: 02.07.09 06:42
Оценка:
Кто-нибудь может помочь?

Перерыл весь MSDN — не могу понять в чем дело.
Ситуация на данный момент следующая:

Запрашиваю у сервера информацию через вызов:
ss := InitializeSecurityContext(hCred, NULL_PTR, "64.233.167.111" /*pszTarget,*/, MessageAttribute, 0, SECURITY_NATIVE_DREP, NULL_PTR, 0, hcText, @OutBuffDesc, @ContextAttributes, @Lifetime)

Результат SEC_I_CONTINUE_NEEDED

Согласно справочника я должен отправить обратно на сервер то, что только-что получил.

Так и делаю:

SendMsg(s, pOutBuf, cbOut )

Оправка проходит нормально, без каких-либо сообщений об ошибке.

Далее мне необходимо получить ответ с сервера.

Вызываю
ReceiveMsg(s, pInBuf, cbMaxMessage, @cbIn)

И в ответ получаю

WSAECONNRESET

(10054)
Connection reset by peer.

Сервер: smtp.gmail.com

В чем может быть проблема?
Кто-нибудь имел опыт реализации SSPI?
Re[2]: TSL & SMTP
От: Andriy Melnyk Украина  
Дата: 03.07.09 12:26
Оценка:
Здравствуйте, denissha, Вы писали:

D>Кто-нибудь может помочь?


D>Перерыл весь MSDN — не могу понять в чем дело.

D>Ситуация на данный момент следующая:

....
D>Сервер: smtp.gmail.com

D>В чем может быть проблема?

D>Кто-нибудь имел опыт реализации SSPI?

Если работаешь с smtp.gmail.com и не получается, то взять сорсы любого win mail клиєнта, который поддерживает gmail и изучать.
Re[3]: TSL & SMTP
От: denissha  
Дата: 03.07.09 13:28
Оценка:
Здравствуйте, Andriy Melnyk, Вы писали:

AM>Здравствуйте, denissha, Вы писали:


D>>Кто-нибудь может помочь?


D>>Перерыл весь MSDN — не могу понять в чем дело.

D>>Ситуация на данный момент следующая:

AM>....

D>>Сервер: smtp.gmail.com

D>>В чем может быть проблема?

D>>Кто-нибудь имел опыт реализации SSPI?

AM>Если работаешь с smtp.gmail.com и не получается, то взять сорсы любого win mail клиєнта, который поддерживает gmail и изучать.


спасибо. почти так и сделал. понаходил кучу исходников на разных языках. и взял Рихтера "Программирование серверных приложения для W2K".
Теперь читаю и много думаю.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.