hssl.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #ifndef HV_SSL_H_
  2. #define HV_SSL_H_
  3. /*
  4. * @功能:提供了统一的SSL/TLS封装接口
  5. *
  6. */
  7. #include "hexport.h"
  8. typedef void* hssl_ctx_t; ///> SSL_CTX
  9. typedef void* hssl_t; ///> SSL
  10. enum {
  11. HSSL_OK = 0,
  12. HSSL_WANT_READ = -2,
  13. HSSL_WANT_WRITE = -3,
  14. };
  15. typedef struct {
  16. const char* crt_file;
  17. const char* key_file;
  18. const char* ca_file;
  19. const char* ca_path;
  20. short verify_peer;
  21. short endpoint; // 0: server 1: client
  22. } hssl_ctx_init_param_t;
  23. BEGIN_EXTERN_C
  24. /*
  25. const char* hssl_backend() {
  26. #ifdef WITH_OPENSSL
  27. return "openssl";
  28. #elif defined(WITH_MBEDTLS)
  29. return "mbedtls";
  30. #else
  31. return "null";
  32. #endif
  33. }
  34. */
  35. HV_EXPORT const char* hssl_backend();
  36. #define HV_WITH_SSL (strcmp(hssl_backend(), "null") != 0)
  37. HV_EXPORT hssl_ctx_t hssl_ctx_init(hssl_ctx_init_param_t* param);
  38. HV_EXPORT void hssl_ctx_cleanup(hssl_ctx_t ssl_ctx);
  39. HV_EXPORT hssl_ctx_t hssl_ctx_instance();
  40. HV_EXPORT hssl_t hssl_new(hssl_ctx_t ssl_ctx, int fd);
  41. HV_EXPORT void hssl_free(hssl_t ssl);
  42. HV_EXPORT int hssl_accept(hssl_t ssl);
  43. HV_EXPORT int hssl_connect(hssl_t ssl);
  44. HV_EXPORT int hssl_read(hssl_t ssl, void* buf, int len);
  45. HV_EXPORT int hssl_write(hssl_t ssl, const void* buf, int len);
  46. HV_EXPORT int hssl_close(hssl_t ssl);
  47. END_EXTERN_C
  48. #endif // HV_SSL_H_