wm_ssl_server.h 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. #ifndef _SSL_SERVER_H_
  2. #define _SSL_SERVER_H_
  3. #include "wm_config.h"
  4. #include "HTTPClientWrapper.h"
  5. #if 1//for doxygen
  6. //#if TLS_CONFIG_SERVER_SIDE_SSL
  7. #if TLS_CONFIG_USE_POLARSSL
  8. #include "polarssl/config.h"
  9. #include "polarssl/ssl.h"
  10. #error "PolaSSL does not support ssl server now!"
  11. #elif TLS_CONFIG_USE_MBEDTLS
  12. typedef void tls_ssl_key_t;
  13. #endif
  14. //key type for tls_ssl_server_init
  15. #define KEY_RSA 1
  16. #define KEY_ECC 2
  17. #define KEY_DH 3
  18. /**
  19. * @defgroup APP_APIs APP APIs
  20. * @brief APP APIs
  21. */
  22. /**
  23. * @addtogroup APP_APIs
  24. * @{
  25. */
  26. /**
  27. * @defgroup SSL_SERVER_APIs SSL SERVER APIs
  28. * @brief SSL Server APIs
  29. */
  30. /**
  31. * @addtogroup SSL_SERVER_APIs
  32. * @{
  33. */
  34. /**
  35. * @brief This function is used to initialize SSL Server
  36. *
  37. * @param[in] *arg proto version: 0 - sslv3
  38. * 1 - tls1.0
  39. * 2 - tls1.1
  40. * 3 - tls1.2
  41. *
  42. * @retval 0 success
  43. * @retval other failed
  44. *
  45. * @note None
  46. */
  47. int tls_ssl_server_init(void * arg);
  48. /**
  49. * @brief This function is used to set SSL keys
  50. *
  51. * @param[in] **keys SSL key pointer
  52. * @param[in] *certBuf SSL certificate
  53. * @param[in] certLen SSL certificate length
  54. * @param[in] *privBuf SSL private key
  55. * @param[in] privLen SSL private key length
  56. * @param[in] *CAbuf CA certificate
  57. * @param[in] CAlen CA certificate length
  58. * @param[in] keyType key type: KEY_RSA,KEY_ECC,KEY_DH
  59. *
  60. * @retval 0 success
  61. * @retval other failed
  62. *
  63. * @note None
  64. */
  65. int tls_ssl_server_load_keys(tls_ssl_key_t **keys, unsigned char *certBuf,
  66. int32 certLen, unsigned char *privBuf, int32 privLen,
  67. unsigned char *CAbuf, int32 CAlen, int keyType);
  68. /**
  69. * @brief This function is used to set SSL Server working
  70. *
  71. * @param[in] **ssl_p SSL hanlde
  72. * @param[in] fd socket number
  73. * @param[in] *keys SSL keys
  74. *
  75. * @retval 0 success
  76. * @retval other failed
  77. *
  78. * @note None
  79. */
  80. int tls_ssl_server_handshake(tls_ssl_t **ssl_p, int fd, tls_ssl_key_t *keys);
  81. /**
  82. * @brief This function is used to send data
  83. *
  84. * @param[in] *ssl SSL hanlde
  85. * @param[in] s socket number
  86. * @param[in] *sndbuf send buffer
  87. * @param[in] len send length
  88. * @param[in] flags some flags
  89. *
  90. * @retval > 0 success
  91. * @retval <=0 failed
  92. *
  93. * @note None
  94. */
  95. int tls_ssl_server_send(tls_ssl_t *ssl, int s,char *sndbuf, int len,int flags);
  96. /**
  97. * @brief This function is used to receive data
  98. *
  99. * @param[in] *ssl SSL hanlde
  100. * @param[in] s socket number
  101. * @param[in] *buf receive buffer
  102. * @param[in] len receive buffer length
  103. * @param[in] flags some flags
  104. *
  105. * @retval > 0 success
  106. * @retval <=0 failed
  107. *
  108. * @note None
  109. */
  110. int tls_ssl_server_recv(tls_ssl_t *ssl,int s,char *buf, int len,int flags);
  111. /**
  112. * @brief This function is used to close connection
  113. *
  114. * @param[in] *ssl SSL hanlde
  115. * @param[in] s socket number
  116. *
  117. * @return None
  118. *
  119. * @note None
  120. */
  121. void tls_ssl_server_close_conn(tls_ssl_t *ssl, int s);
  122. /**
  123. * @brief This function is used to close SSL Server
  124. *
  125. * @param[in] *keys SSL keys
  126. *
  127. * @retval 0 success
  128. * @retval other failed
  129. *
  130. * @note None
  131. */
  132. int tls_ssl_server_close(tls_ssl_key_t * keys);
  133. /**
  134. * @}
  135. */
  136. /**
  137. * @}
  138. */
  139. #endif /*TLS_CONFIG_SERVER_SIDE_SSL*/
  140. #endif /*_SSL_SERVER_H_*/