my_ssl_server.h 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. /*
  2. * ssl_server.h
  3. *
  4. * Created on: 08.11.2017
  5. * Author: balbekova
  6. */
  7. #ifdef HARDWARE_BT6703
  8. #ifndef MY_SSL_SERVER_H_
  9. #define MY_SSL_SERVER_H_
  10. #include "lwip/opt.h"
  11. #include "lwip/arch.h"
  12. #include "lwip/api.h"
  13. #include "mbedtls/ssl.h"
  14. #define SSL_TASK_PRIO ( configMAX_PRIORITIES - 3 )
  15. #define FRAME_SIZE (1000)
  16. typedef enum
  17. {
  18. SSL_ACCEPT = 0,
  19. SSL_ERROR,
  20. SSL_CRITICAL_ERROR,
  21. SSL_HANDSHAKE,
  22. SSL_READ,
  23. SSL_PROCESSING,
  24. SSL_CLOSE,
  25. SSL_WRITE,
  26. SSL_WRITE_OK,
  27. SSL_WRITE_ERROR,
  28. } SSL_SERVER_STATE;
  29. typedef enum
  30. {
  31. SET_PAGE_IDLE = 0,
  32. SET_PAGE_PAGE1,
  33. SET_PAGE_PAGE2,
  34. SET_PAGE_PAGE3,
  35. SET_PAGE_PAGE4,
  36. } SET_PAGE_t;
  37. typedef enum
  38. {
  39. SEND_REQUIRED_YES = 0,
  40. SEND_REQUIRED_NO,
  41. SEND_REQUIRED_FILE
  42. } REQ_TYPE_t;
  43. struct http_state
  44. {
  45. char *file;
  46. u32_t left;
  47. };
  48. struct fs_file {
  49. char *data;
  50. int len;
  51. };
  52. void HTTP_Init();
  53. static err_t http_accept(void *arg, struct tcp_pcb *pcb, err_t err);
  54. static err_t http_recv(void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t err);
  55. void http_server_netconn_init();
  56. /**
  57. * @brief Выводим запросы в консоль
  58. */
  59. void vTaskPrintHttp(void *pvParameters);
  60. /**
  61. * @brief Установка даты производства
  62. */
  63. void HTTP_Prodate(char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut);
  64. /**
  65. * @brief Парсинг строки настроек
  66. */
  67. void HTTP_SetSettings(char *buf, uint16_t lenBuf);
  68. /**
  69. * @brief
  70. */
  71. void HTTP_SetInfo(char *buf, uint16_t lenBuf);
  72. /**
  73. * @brief
  74. */
  75. int HTTP_SettingsPage(char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut);
  76. /**
  77. * @brief
  78. */
  79. int HTTP_InfoPage(char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut);
  80. int HTTP_UpsHistoryPage(char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut);
  81. int HTTP_HistoryPage(char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut);
  82. /**
  83. * @brief Запуск/останов теста UPS
  84. */
  85. void HTTP_UPSTest(char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut);
  86. /**
  87. * @brief Выклюение UPS
  88. */
  89. void HTTP_UPSshutdown(char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut);
  90. /**
  91. * @brief Проверка пароля для перехода в режим bootloader
  92. */
  93. void HTTP_ConfirmBootPwd(char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut);
  94. /**
  95. * @brief Проверка пароля для входа в Web
  96. */
  97. int HTTP_ConfirmWebPwd(char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut);
  98. void HTTP_LOGIN(char *bufOut, uint16_t *lenBufOut);
  99. /**
  100. * @brief
  101. */
  102. uint8_t GetParamValue(char *inStr, char *paramName, char *paramValue, uint8_t *paramLen);
  103. uint8_t GetCookieValue(char *inStr, char *paramName, char *paramValue, uint8_t *paramLen);
  104. /**
  105. * @brief
  106. * @retval None
  107. */
  108. uint8_t GetParamValueInEnd(char *inStr, char *paramName, char *paramValue, uint8_t *paramLen);
  109. void ClearParamString(char *inBuf);
  110. /**
  111. * @brief Замена символа в строке
  112. * @param *str - входная строка
  113. * @param sim1 - символ который надо заменить
  114. * @param sim2 - символ на который надо заменить
  115. */
  116. void HTTP_ReplaceSimbol(char *str, char sim1, char sim2);
  117. // -----------------------------------------------------------------------------
  118. //
  119. //
  120. // SSL тесты
  121. //
  122. //
  123. // -----------------------------------------------------------------------------
  124. #ifdef __cplusplus
  125. extern "C" {
  126. #endif
  127. /* Exported types ------------------------------------------------------------*/
  128. typedef struct
  129. {
  130. uint32_t State;
  131. }rng_state;
  132. void Cockie(void);
  133. void getAuthenticatedState(void);
  134. void ssl_server(void *pvParameters);
  135. int RandVal(void* arg);
  136. void HTTP_SendHistory(void);
  137. void HTTP_SendLog(void);
  138. void HTTPS_Init();
  139. int SSL_ReadRoutine(mbedtls_ssl_context *ssl, unsigned char* recvBuf);
  140. char* SSL_ProcessingRoutine(uint16_t* sendLen);
  141. SSL_SERVER_STATE SSL_WriteRoutine(mbedtls_ssl_context *ssl, char *data, int datalen);
  142. char* AuthenticatedFalseRoutine(uint16_t* sendLen);
  143. char* AuthenticatedTrueRoutine(uint16_t* sendLen);
  144. SSL_SERVER_STATE SSL_SendFrames(mbedtls_ssl_context *ssl, char *data, int datalen);
  145. SSL_SERVER_STATE SSL_Write(mbedtls_ssl_context *ssl, char *data, int datalen);
  146. #ifdef __cplusplus
  147. }
  148. #endif
  149. #endif /* SSL_SERVER_H_ */
  150. #endif