sal_tls.h 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. /*
  2. * Copyright (c) 2006-2021, RT-Thread Development Team
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. * 2018-11-10 ChenYong First version
  9. */
  10. #ifndef __SAL_TLS_H__
  11. #define __SAL_TLS_H__
  12. #ifdef __cplusplus
  13. extern "C" {
  14. #endif
  15. #include <rtthread.h>
  16. /* Protocol level for TLS.
  17. * Here, the same socket protocol level for TLS as in Linux was used.
  18. */
  19. #define SOL_TLS 282
  20. /* Socket options for TLS */
  21. /* Socket option to select TLS credentials to use. */
  22. #define TLS_CRET_LIST 1
  23. /* Socket option to set select ciphersuites to use. */
  24. #define TLS_CIPHERSUITE_LIST 2
  25. /* Socket option to set peer verification level for TLS connection. */
  26. #define TLS_PEER_VERIFY 3
  27. /* Socket option to set role for DTLS connection. */
  28. #define TLS_DTLS_ROLE 4
  29. /* Protocol numbers for TLS protocols */
  30. #define PROTOCOL_TLS 256
  31. #define PROTOCOL_DTLS 257
  32. struct sal_proto_tls_ops
  33. {
  34. int (*init)(void);
  35. void* (*socket)(int socket);
  36. int (*connect)(void *sock);
  37. int (*send)(void *sock, const void *data, size_t size);
  38. int (*recv)(void *sock, void *mem, size_t len);
  39. int (*closesocket)(void *sock);
  40. int (*set_cret_list)(void *sock, const void *cert, size_t size); /* Set TLS credentials */
  41. int (*set_ciphersurite)(void *sock, const void* ciphersurite, size_t size); /* Set select ciphersuites */
  42. int (*set_peer_verify)(void *sock, const void* peer_verify, size_t size); /* Set peer verification */
  43. int (*set_dtls_role)(void *sock, const void *dtls_role, size_t size); /* Set role for DTLS */
  44. };
  45. struct sal_proto_tls
  46. {
  47. char name[RT_NAME_MAX]; /* TLS protocol name */
  48. const struct sal_proto_tls_ops *ops; /* SAL TLS protocol options */
  49. };
  50. /* SAL TLS protocol register */
  51. int sal_proto_tls_register(const struct sal_proto_tls *pt);
  52. #ifdef __cplusplus
  53. }
  54. #endif
  55. #endif /* __SAL_TLS_H__ */