реклама на сайте
подробности

 
 
> STM32F407: LwIP + SSL -> SMTP
k000858
сообщение Dec 4 2014, 12:26
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 319
Регистрация: 31-01-12
Пользователь №: 69 978



Всем привет. Есть девайс на stm32f407 с езернетом на lwip стеке. Требуется сделать e-mail клиент. Как известно, сейчас практически все SMTP серверы перешли на SSL (наверное, правильнее будет сказать "запретили соединения без SSL по 25 порту).
Вопрос: потянет ли вышеозвученный МК софтовое шифрование (ведь крипто-проц есть только у 417 линейки).

Может есть у когонибдь опыт реализации: какую посоветуете реализацию SSL (знаю, что есть как коммерческие так и бесплатные), и где можно надыбать исходники/примеры.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Aner
сообщение Dec 5 2014, 09:43
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 4 869
Регистрация: 28-02-08
Из: СПБ
Пользователь №: 35 463



Используйте RTOS например, все остальное без OS кривота для серии 4xx.
Go to the top of the page
 
+Quote Post
k000858
сообщение Dec 5 2014, 11:47
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 319
Регистрация: 31-01-12
Пользователь №: 69 978



Цитата(Aner @ Dec 5 2014, 13:43) *
Используйте RTOS например, все остальное без OS кривота для серии 4xx.

а если весь функционал в прошивке реализован без RTOS, дак что теперь все перелопачивать ради SSL?
покурил внутринности PolarSSL и решил переписать сетевую прослойку на Raw API вместо Netcon API + Socket

Если у когонибудь есть подобный опыт, не откажусь от помощи.
так же полезен будет любой пример переделки приложения вида
Код
struct sockaddr_in server_addr;


    if( ( *fd = socket( AF_INET, SOCK_STREAM, IPPROTO_IP ) ) < 0 )
        return( POLARSSL_ERR_NET_SOCKET_FAILED );

    server_addr.sin_family = AF_INET;
    server_addr.sin_port   = net_htons( port );

    if( connect( *fd, (struct sockaddr *) &server_addr,
                 sizeof( server_addr ) ) < 0 )
    {
        close( *fd );
        return( POLARSSL_ERR_NET_CONNECT_FAILED );
    }


на код вида

Код
  struct tcp_pcb* pcb;
  ip_addr_t addr;

  pcb = tcp_new();

  tcp_arg(pcb, s);
  tcp_recv(pcb, *tcp_recv);
  tcp_err(pcb, *tcp_err);
  tcp_poll(pcb, *tcp_poll, POLL_INTERVAL);
  tcp_sent(pcb, *tcp_sent);
Go to the top of the page
 
+Quote Post
Ruslan1
сообщение Jan 31 2017, 11:19
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025



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

Подниму тему. Вопрос похожий, но надеюсь проще в решении:

Есть LwIP, FreeRTOS, STM32F4.
написан и работает smtp клиент по порту 25 (исходник чужой вот отсюда и даже не мной интегрированная в проект, я с smtp врукопашную раньше дела не имел).

сейчас стейт-машина в указанном исходнике так работает (полностью можно по ссылке исходник на гитхабе глануть):
Код
enum smtp_session_state {
  SMTP_NULL,
  SMTP_HELO,
  SMTP_AUTH_PLAIN,
  SMTP_AUTH_LOGIN_UNAME,
  SMTP_AUTH_LOGIN_PASS,
  SMTP_AUTH_LOGIN,
  SMTP_MAIL,
  SMTP_RCPT,
  SMTP_DATA,
  SMTP_BODY,
  SMTP_QUIT,
  SMTP_CLOSED
};


нужно добавить возможность работы по портам 587 и/или 465.
Как это сделать с наименьшим напряжением рук и головы? на этапе "SMTP_AUTH_" что подсунуть в процесс?

Cобственно, как я понимаю, нужен SSL. и вижу PolarSSL в составе LwIP, это оно?
Какие несколько команд вставить на этапе smtp авторизации чтобы это заработало?

Может быть решение простое и где-то рядом, но не доходит до меня...

Спасибо всем кто откликнется.
Go to the top of the page
 
+Quote Post
Ruslan1
сообщение Jan 31 2017, 12:30
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025



подергал через телнет нужный smtp сервер, говорит следующее на EHLO

порт 587:
Цитата
220 <address> ESMTP Postfix (Ubuntu)
EHLO <address>
250-<address>
250-PIPELINING
250-SIZE 15728640
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN


на 465 вообще не соединяется по телнету. Хотя может и не должен.
Go to the top of the page
 
+Quote Post
Ruslan1
сообщение Jan 31 2017, 19:13
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025



Вроде бы начало проясняться что дело темное, явно не два байта переслать.
в моем LwIP - старенький огрызок от polarSSL, сейчас нужно смотреть mbed TLS. В нем есть файлик "ssl_mail_client.c", который вроде бы то что нужно.
Но задачка-то не такая простая, и по пониманию-тестированию, и по ресурсам в МК.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Feb 1 2017, 09:46
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Ruslan1 @ Jan 31 2017, 21:13) *
Вроде бы начало проясняться что дело темное, явно не два байта переслать.
в моем LwIP - старенький огрызок от polarSSL, сейчас нужно смотреть mbed TLS. В нем есть файлик "ssl_mail_client.c", который вроде бы то что нужно.
Но задачка-то не такая простая, и по пониманию-тестированию, и по ресурсам в МК.

Неск. лет назад реализовывал на LPC1768 SMTP-клиент (поверх своего TCP-стека). Самостоятельно конечно, без чьих-то исходников.
Смотрел тогда тоже в сторону добавления возможности работы через шифрованное соединение. Но тоже понял, что там всё непросто.
И очень мало толковой документации по этому делу - это самое главное! В то время как нешифрованный SMTP разжёван вдоль и поперёк в разных источниках.
Именно это меня тогда и остановило. В результате нашёл достаточно много нешифрованных SMTP-серверов и решил пока отложить эту тему до тех пор когда реально припрёт.
Если нароете хорошее описание SMTP-протокола через защищённое соединение - выкладывайте. Думаю тоже когда-то придётся вернуться к этой теме.

Как я подозреваю: там главное установить и поддерживать шифрованное соединение, а уж протокол SMTP через него - точно такой-же как и через открытое.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th August 2025 - 23:14
Рейтинг@Mail.ru


Страница сгенерированна за 0.02578 секунд с 7
ELECTRONIX ©2004-2016