HPSocket4C-SSL.h 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411
  1. /*
  2. * Copyright: JessMA Open Source (ldcsaa@gmail.com)
  3. *
  4. * Author : Bruce Liang
  5. * Website : https://github.com/ldcsaa
  6. * Project : https://github.com/ldcsaa/HP-Socket
  7. * Blog : http://www.cnblogs.com/ldcsaa
  8. * Wiki : http://www.oschina.net/p/hp-socket
  9. * QQ Group : 44636872, 75375912
  10. *
  11. * Licensed under the Apache License, Version 2.0 (the "License");
  12. * you may not use this file except in compliance with the License.
  13. * You may obtain a copy of the License at
  14. *
  15. * http://www.apache.org/licenses/LICENSE-2.0
  16. *
  17. * Unless required by applicable law or agreed to in writing, software
  18. * distributed under the License is distributed on an "AS IS" BASIS,
  19. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  20. * See the License for the specific language governing permissions and
  21. * limitations under the License.
  22. */
  23. #pragma once
  24. #include "HPSocket4C.h"
  25. #ifdef _SSL_SUPPORT
  26. /************************************************************************
  27. 名称:定义 SSL Socket 对象指针类型别名
  28. 描述:把 SSL Socket 对象指针定义为更直观的别名
  29. ************************************************************************/
  30. typedef HP_Object HP_SSLServer;
  31. typedef HP_Object HP_SSLAgent;
  32. typedef HP_Object HP_SSLClient;
  33. typedef HP_Object HP_SSLPullServer;
  34. typedef HP_Object HP_SSLPullAgent;
  35. typedef HP_Object HP_SSLPullClient;
  36. typedef HP_Object HP_SSLPackServer;
  37. typedef HP_Object HP_SSLPackAgent;
  38. typedef HP_Object HP_SSLPackClient;
  39. typedef HP_Object HP_HttpsServer;
  40. typedef HP_Object HP_HttpsAgent;
  41. typedef HP_Object HP_HttpsClient;
  42. typedef HP_Object HP_HttpsSyncClient;
  43. /*****************************************************************************************************************************************************/
  44. /******************************************************************** SSL Exports ********************************************************************/
  45. /*****************************************************************************************************************************************************/
  46. /********************************************************/
  47. /************** HPSocket4C-SSL 对象创建函数 **************/
  48. // 创建 HP_SSLServer 对象
  49. HPSOCKET_API HP_SSLServer __HP_CALL Create_HP_SSLServer(HP_TcpServerListener pListener);
  50. // 创建 HP_SSLAgent 对象
  51. HPSOCKET_API HP_SSLAgent __HP_CALL Create_HP_SSLAgent(HP_TcpAgentListener pListener);
  52. // 创建 HP_SSLClient 对象
  53. HPSOCKET_API HP_SSLClient __HP_CALL Create_HP_SSLClient(HP_TcpClientListener pListener);
  54. // 创建 HP_SSLPullServer 对象
  55. HPSOCKET_API HP_SSLPullServer __HP_CALL Create_HP_SSLPullServer(HP_TcpPullServerListener pListener);
  56. // 创建 HP_SSLPullAgent 对象
  57. HPSOCKET_API HP_SSLPullAgent __HP_CALL Create_HP_SSLPullAgent(HP_TcpPullAgentListener pListener);
  58. // 创建 HP_SSLPullClient 对象
  59. HPSOCKET_API HP_SSLPullClient __HP_CALL Create_HP_SSLPullClient(HP_TcpPullClientListener pListener);
  60. // 创建 HP_SSLPackServer 对象
  61. HPSOCKET_API HP_SSLPackServer __HP_CALL Create_HP_SSLPackServer(HP_TcpServerListener pListener);
  62. // 创建 HP_SSLPackAgent 对象
  63. HPSOCKET_API HP_SSLPackAgent __HP_CALL Create_HP_SSLPackAgent(HP_TcpAgentListener pListener);
  64. // 创建 HP_SSLPackClient 对象
  65. HPSOCKET_API HP_SSLPackClient __HP_CALL Create_HP_SSLPackClient(HP_TcpClientListener pListener);
  66. // 销毁 HP_SSLServer 对象
  67. HPSOCKET_API void __HP_CALL Destroy_HP_SSLServer(HP_SSLServer pServer);
  68. // 销毁 HP_SSLAgent 对象
  69. HPSOCKET_API void __HP_CALL Destroy_HP_SSLAgent(HP_SSLAgent pAgent);
  70. // 销毁 HP_SSLClient 对象
  71. HPSOCKET_API void __HP_CALL Destroy_HP_SSLClient(HP_SSLClient pClient);
  72. // 销毁 HP_SSLPullServer 对象
  73. HPSOCKET_API void __HP_CALL Destroy_HP_SSLPullServer(HP_SSLPullServer pServer);
  74. // 销毁 HP_SSLPullAgent 对象
  75. HPSOCKET_API void __HP_CALL Destroy_HP_SSLPullAgent(HP_SSLPullAgent pAgent);
  76. // 销毁 HP_SSLPullClient 对象
  77. HPSOCKET_API void __HP_CALL Destroy_HP_SSLPullClient(HP_SSLPullClient pClient);
  78. // 销毁 HP_SSLPackServer 对象
  79. HPSOCKET_API void __HP_CALL Destroy_HP_SSLPackServer(HP_SSLPackServer pServer);
  80. // 销毁 HP_SSLPackAgent 对象
  81. HPSOCKET_API void __HP_CALL Destroy_HP_SSLPackAgent(HP_SSLPackAgent pAgent);
  82. // 销毁 HP_SSLPackClient 对象
  83. HPSOCKET_API void __HP_CALL Destroy_HP_SSLPackClient(HP_SSLPackClient pClient);
  84. /*****************************************************************************************************************************************************/
  85. /*************************************************************** Global Function Exports *************************************************************/
  86. /*****************************************************************************************************************************************************/
  87. /***************************************************************************************/
  88. /************************************ SSL 初始化方法 ************************************/
  89. /*
  90. * 名称:SNI 默认回调函数
  91. * 描述:HP_SSLServer_SetupSSLContext 方法中如果不指定 SNI 回调函数则使用此 SNI 默认回调函数
  92. *
  93. * 参数: lpszServerName -- 请求域名
  94. * pContext -- SSL Context 对象
  95. *
  96. * 返回值:SNI 主机证书对应的索引
  97. */
  98. HPSOCKET_API int __HP_CALL HP_SSL_DefaultServerNameCallback(LPCTSTR lpszServerName, PVOID pContext);
  99. /*
  100. * 名称:清理线程局部环境 SSL 资源
  101. * 描述:任何一个操作 SSL 的线程,通信结束时都需要清理线程局部环境 SSL 资源
  102. * 1、主线程和 HP-Socket 工作线程在通信结束时会自动清理线程局部环境 SSL 资源。因此,一般情况下不必手工调用本方法
  103. * 2、特殊情况下,当自定义线程参与 HP-Socket 通信操作并检查到 SSL 内存泄漏时,需在每次通信结束时自定义线程调用本方法
  104. *
  105. * 参数: dwThreadID -- 线程 ID(0:当前线程)
  106. *
  107. * 返回值:无
  108. */
  109. HPSOCKET_API void __HP_CALL HP_SSL_RemoveThreadLocalState(THR_ID dwThreadID);
  110. /*
  111. * 名称:初始化通信组件 SSL 环境参数
  112. * 描述:SSL 环境参数必须在 SSL 通信组件启动前完成初始化,否则启动失败
  113. *
  114. * 参数: iVerifyMode -- SSL 验证模式(参考 En_HP_SSLVerifyMode)
  115. * lpszPemCertFile -- 证书文件
  116. * lpszPemKeyFile -- 私钥文件
  117. * lpszKeyPassword -- 私钥密码(没有密码则为空)
  118. * lpszCAPemCertFileOrPath -- CA 证书文件或目录(单向验证或客户端可选)
  119. * fnServerNameCallback -- SNI 回调函数指针(可选,如果为 nullptr 则使用 SNI 默认回调函数)
  120. *
  121. * 返回值: TRUE -- 成功
  122. * FALSE -- 失败,可通过 SYS_GetLastError() 获取失败原因
  123. */
  124. HPSOCKET_API BOOL __HP_CALL HP_SSLServer_SetupSSLContext(HP_SSLServer pServer, int iVerifyMode /* SSL_VM_NONE */, LPCTSTR lpszPemCertFile /* nullptr */, LPCTSTR lpszPemKeyFile /* nullptr */, LPCTSTR lpszKeyPassword /* nullptr */, LPCTSTR lpszCAPemCertFileOrPath /* nullptr */, HP_Fn_SNI_ServerNameCallback fnServerNameCallback /* nullptr */);
  125. /*
  126. * 名称:初始化通信组件 SSL 环境参数(通过内存加载证书)
  127. * 描述:SSL 环境参数必须在 SSL 通信组件启动前完成初始化,否则启动失败
  128. *
  129. * 参数: iVerifyMode -- SSL 验证模式(参考 En_HP_SSLVerifyMode)
  130. * lpszPemCert -- 证书内容
  131. * lpszPemKey -- 私钥内容
  132. * lpszKeyPassword -- 私钥密码(没有密码则为空)
  133. * lpszCAPemCert -- CA 证书内容(单向验证或客户端可选)
  134. * fnServerNameCallback -- SNI 回调函数指针(可选,如果为 nullptr 则使用 SNI 默认回调函数)
  135. *
  136. * 返回值: TRUE -- 成功
  137. * FALSE -- 失败,可通过 SYS_GetLastError() 获取失败原因
  138. */
  139. HPSOCKET_API BOOL __HP_CALL HP_SSLServer_SetupSSLContextByMemory(HP_SSLServer pServer, int iVerifyMode /* SSL_VM_NONE */, LPCSTR lpszPemCert /* nullptr */, LPCSTR lpszPemKey /* nullptr */, LPCSTR lpszKeyPassword /* nullptr */, LPCSTR lpszCAPemCert /* nullptr */, HP_Fn_SNI_ServerNameCallback fnServerNameCallback /* nullptr */);
  140. /*
  141. * 名称:增加 SNI 主机证书
  142. * 描述:SSL 服务端在 SetupSSLContext() 成功后可以调用本方法增加多个 SNI 主机证书
  143. *
  144. * 参数: iVerifyMode -- SSL 验证模式(参考 En_HP_SSLVerifyMode)
  145. * lpszPemCertFile -- 证书文件
  146. * lpszPemKeyFile -- 私钥文件
  147. * lpszKeyPassword -- 私钥密码(没有密码则为空)
  148. * lpszCAPemCertFileOrPath -- CA 证书文件或目录(单向验证可选)
  149. *
  150. * 返回值: 正数 -- 成功,并返回 SNI 主机证书对应的索引,该索引用于在 SNI 回调函数中定位 SNI 主机
  151. * 负数 -- 失败,可通过 SYS_GetLastError() 获取失败原因
  152. */
  153. HPSOCKET_API int __HP_CALL HP_SSLServer_AddSSLContext(HP_SSLServer pServer, int iVerifyMode, LPCTSTR lpszPemCertFile, LPCTSTR lpszPemKeyFile, LPCTSTR lpszKeyPassword /* nullptr */, LPCTSTR lpszCAPemCertFileOrPath /* nullptr */);
  154. /*
  155. * 名称:增加 SNI 主机证书(通过内存加载证书)
  156. * 描述:SSL 服务端在 SetupSSLContext() 成功后可以调用本方法增加多个 SNI 主机证书
  157. *
  158. * 参数: iVerifyMode -- SSL 验证模式(参考 En_HP_SSLVerifyMode)
  159. * lpszPemCert -- 证书内容
  160. * lpszPemKey -- 私钥内容
  161. * lpszKeyPassword -- 私钥密码(没有密码则为空)
  162. * lpszCAPemCert -- CA 证书内容(单向验证可选)
  163. *
  164. * 返回值: 正数 -- 成功,并返回 SNI 主机证书对应的索引,该索引用于在 SNI 回调函数中定位 SNI 主机
  165. * 负数 -- 失败,可通过 SYS_GetLastError() 获取失败原因
  166. */
  167. HPSOCKET_API int __HP_CALL HP_SSLServer_AddSSLContextByMemory(HP_SSLServer pServer, int iVerifyMode, LPCSTR lpszPemCert, LPCSTR lpszPemKey, LPCSTR lpszKeyPassword /* nullptr */, LPCSTR lpszCAPemCert /* nullptr */);
  168. /*
  169. * 名称:绑定 SNI 主机域名
  170. * 描述:SSL 服务端在 AddSSLContext() 成功后可以调用本方法绑定主机域名到 SNI 主机证书
  171. *
  172. * 参数: lpszServerName -- 主机域名
  173. * iContextIndex -- SNI 主机证书对应的索引
  174. *
  175. * 返回值: TRUE -- 成功
  176. * FALSE -- 失败,可通过 SYS_GetLastError() 获取失败原因
  177. */
  178. HPSOCKET_API BOOL __HP_CALL HP_SSLServer_BindSSLServerName(HP_SSLServer pServer, LPCTSTR lpszServerName, int iContextIndex);
  179. /*
  180. * 名称:清理通信组件 SSL 运行环境
  181. * 描述:清理通信组件 SSL 运行环境,回收 SSL 相关内存
  182. * 1、通信组件析构时会自动调用本方法
  183. * 2、当要重新设置通信组件 SSL 环境参数时,需要先调用本方法清理原先的环境参数
  184. *
  185. * 参数: 无
  186. *
  187. * 返回值:无
  188. */
  189. HPSOCKET_API void __HP_CALL HP_SSLServer_CleanupSSLContext(HP_SSLServer pServer);
  190. /*
  191. * 名称:初始化通信组件 SSL 环境参数
  192. * 描述:SSL 环境参数必须在 SSL 通信组件启动前完成初始化,否则启动失败
  193. *
  194. * 参数: iVerifyMode -- SSL 验证模式(参考 En_HP_SSLVerifyMode)
  195. * lpszPemCertFile -- 证书文件(客户端可选)
  196. * lpszPemKeyFile -- 私钥文件(客户端可选)
  197. * lpszKeyPassword -- 私钥密码(没有密码则为空)
  198. * lpszCAPemCertFileOrPath -- CA 证书文件或目录(单向验证或客户端可选)
  199. *
  200. * 返回值: TRUE -- 成功
  201. * FALSE -- 失败,可通过 SYS_GetLastError() 获取失败原因
  202. */
  203. HPSOCKET_API BOOL __HP_CALL HP_SSLAgent_SetupSSLContext(HP_SSLAgent pAgent, int iVerifyMode /* SSL_VM_NONE */, LPCTSTR lpszPemCertFile /* nullptr */, LPCTSTR lpszPemKeyFile /* nullptr */, LPCTSTR lpszKeyPassword /* nullptr */, LPCTSTR lpszCAPemCertFileOrPath /* nullptr */);
  204. /*
  205. * 名称:初始化通信组件 SSL 环境参数(通过内存加载证书)
  206. * 描述:SSL 环境参数必须在 SSL 通信组件启动前完成初始化,否则启动失败
  207. *
  208. * 参数: iVerifyMode -- SSL 验证模式(参考 En_HP_SSLVerifyMode)
  209. * lpszPemCert -- 证书内容
  210. * lpszPemKey -- 私钥内容
  211. * lpszKeyPassword -- 私钥密码(没有密码则为空)
  212. * lpszCAPemCert -- CA 证书内容(单向验证或客户端可选)
  213. *
  214. * 返回值: TRUE -- 成功
  215. * FALSE -- 失败,可通过 SYS_GetLastError() 获取失败原因
  216. */
  217. HPSOCKET_API BOOL __HP_CALL HP_SSLAgent_SetupSSLContextByMemory(HP_SSLAgent pAgent, int iVerifyMode /* SSL_VM_NONE */, LPCSTR lpszPemCert /* nullptr */, LPCSTR lpszPemKey /* nullptr */, LPCSTR lpszKeyPassword /* nullptr */, LPCSTR lpszCAPemCert /* nullptr */);
  218. /*
  219. * 名称:清理通信组件 SSL 运行环境
  220. * 描述:清理通信组件 SSL 运行环境,回收 SSL 相关内存
  221. * 1、通信组件析构时会自动调用本方法
  222. * 2、当要重新设置通信组件 SSL 环境参数时,需要先调用本方法清理原先的环境参数
  223. *
  224. * 参数: 无
  225. *
  226. * 返回值:无
  227. */
  228. HPSOCKET_API void __HP_CALL HP_SSLAgent_CleanupSSLContext(HP_SSLAgent pAgent);
  229. /*
  230. * 名称:初始化通信组件 SSL 环境参数
  231. * 描述:SSL 环境参数必须在 SSL 通信组件启动前完成初始化,否则启动失败
  232. *
  233. * 参数: iVerifyMode -- SSL 验证模式(参考 En_HP_SSLVerifyMode)
  234. * lpszPemCertFile -- 证书文件(客户端可选)
  235. * lpszPemKeyFile -- 私钥文件(客户端可选)
  236. * lpszKeyPassword -- 私钥密码(没有密码则为空)
  237. * lpszCAPemCertFileOrPath -- CA 证书文件或目录(单向验证或客户端可选)
  238. *
  239. * 返回值: TRUE -- 成功
  240. * FALSE -- 失败,可通过 SYS_GetLastError() 获取失败原因
  241. */
  242. HPSOCKET_API BOOL __HP_CALL HP_SSLClient_SetupSSLContext(HP_SSLClient pClient, int iVerifyMode /* SSL_VM_NONE */, LPCTSTR lpszPemCertFile /* nullptr */, LPCTSTR lpszPemKeyFile /* nullptr */, LPCTSTR lpszKeyPassword /* nullptr */, LPCTSTR lpszCAPemCertFileOrPath /* nullptr */);
  243. /*
  244. * 名称:初始化通信组件 SSL 环境参数(通过内存加载证书)
  245. * 描述:SSL 环境参数必须在 SSL 通信组件启动前完成初始化,否则启动失败
  246. *
  247. * 参数: iVerifyMode -- SSL 验证模式(参考 En_HP_SSLVerifyMode)
  248. * lpszPemCert -- 证书内容
  249. * lpszPemKey -- 私钥内容
  250. * lpszKeyPassword -- 私钥密码(没有密码则为空)
  251. * lpszCAPemCert -- CA 证书内容(单向验证或客户端可选)
  252. *
  253. * 返回值: TRUE -- 成功
  254. * FALSE -- 失败,可通过 SYS_GetLastError() 获取失败原因
  255. */
  256. HPSOCKET_API BOOL __HP_CALL HP_SSLClient_SetupSSLContextByMemory(HP_SSLClient pClient, int iVerifyMode /* SSL_VM_NONE */, LPCSTR lpszPemCert /* nullptr */, LPCSTR lpszPemKey /* nullptr */, LPCSTR lpszKeyPassword /* nullptr */, LPCSTR lpszCAPemCert /* nullptr */);
  257. /*
  258. * 名称:清理通信组件 SSL 运行环境
  259. * 描述:清理通信组件 SSL 运行环境,回收 SSL 相关内存
  260. * 1、通信组件析构时会自动调用本方法
  261. * 2、当要重新设置通信组件 SSL 环境参数时,需要先调用本方法清理原先的环境参数
  262. *
  263. * 参数: 无
  264. *
  265. * 返回值:无
  266. */
  267. HPSOCKET_API void __HP_CALL HP_SSLClient_CleanupSSLContext(HP_SSLClient pClient);
  268. /***************************************************************************************/
  269. /************************************* SSL 操作方法 ************************************/
  270. /*
  271. * 名称:启动 SSL 握手
  272. * 描述:当通信组件设置为非自动握手时,需要调用本方法启动 SSL 握手
  273. *
  274. * 返回值: TRUE -- 成功
  275. * FALSE -- 失败,可通过 SYS_GetLastError() 获取失败原因
  276. */
  277. HPSOCKET_API BOOL __HP_CALL HP_SSLServer_StartSSLHandShake(HP_SSLServer pServer, HP_CONNID dwConnID);
  278. /* 设置通信组件握手方式(默认:TRUE,自动握手) */
  279. HPSOCKET_API void __HP_CALL HP_SSLServer_SetSSLAutoHandShake(HP_SSLServer pServer, BOOL bAutoHandShake);
  280. /* 获取通信组件握手方式 */
  281. HPSOCKET_API BOOL __HP_CALL HP_SSLServer_IsSSLAutoHandShake(HP_SSLServer pServer);
  282. /* 设置 SSL 加密算法列表 */
  283. HPSOCKET_API void __HP_CALL HP_SSLServer_SetSSLCipherList(HP_SSLServer pServer, LPCTSTR lpszCipherList);
  284. /* 获取 SSL 加密算法列表 */
  285. HPSOCKET_API LPCTSTR __HP_CALL HP_SSLServer_GetSSLCipherList(HP_SSLServer pServer);
  286. /*
  287. * 名称:获取 SSL Session 信息
  288. * 描述:获取指定类型的 SSL Session 信息(输出类型参考:En_HP_SSLSessionInfo)
  289. *
  290. * 返回值: TRUE -- 成功
  291. * FALSE -- 失败,可通过 SYS_GetLastError() 获取失败原因
  292. */
  293. HPSOCKET_API BOOL __HP_CALL HP_SSLServer_GetSSLSessionInfo(HP_SSLServer pServer, HP_CONNID dwConnID, En_HP_SSLSessionInfo enInfo, LPVOID* lppInfo);
  294. /*
  295. * 名称:启动 SSL 握手
  296. * 描述:当通信组件设置为非自动握手时,需要调用本方法启动 SSL 握手
  297. *
  298. * 返回值: TRUE -- 成功
  299. * FALSE -- 失败,可通过 SYS_GetLastError() 获取失败原因
  300. */
  301. HPSOCKET_API BOOL __HP_CALL HP_SSLAgent_StartSSLHandShake(HP_SSLAgent pAgent, HP_CONNID dwConnID);
  302. /* 设置通信组件握手方式(默认:TRUE,自动握手) */
  303. HPSOCKET_API void __HP_CALL HP_SSLAgent_SetSSLAutoHandShake(HP_SSLAgent pAgent, BOOL bAutoHandShake);
  304. /* 获取通信组件握手方式 */
  305. HPSOCKET_API BOOL __HP_CALL HP_SSLAgent_IsSSLAutoHandShake(HP_SSLAgent pAgent);
  306. /* 设置 SSL 加密算法列表 */
  307. HPSOCKET_API void __HP_CALL HP_SSLAgent_SetSSLCipherList(HP_SSLAgent pAgent, LPCTSTR lpszCipherList);
  308. /* 获取 SSL 加密算法列表 */
  309. HPSOCKET_API LPCTSTR __HP_CALL HP_SSLAgent_GetSSLCipherList(HP_SSLAgent pAgent);
  310. /*
  311. * 名称:获取 SSL Session 信息
  312. * 描述:获取指定类型的 SSL Session 信息(输出类型参考:En_HP_SSLSessionInfo)
  313. *
  314. * 返回值: TRUE -- 成功
  315. * FALSE -- 失败,可通过 SYS_GetLastError() 获取失败原因
  316. */
  317. HPSOCKET_API BOOL __HP_CALL HP_SSLAgent_GetSSLSessionInfo(HP_SSLAgent pAgent, HP_CONNID dwConnID, En_HP_SSLSessionInfo enInfo, LPVOID* lppInfo);
  318. /*
  319. * 名称:启动 SSL 握手
  320. * 描述:当通信组件设置为非自动握手时,需要调用本方法启动 SSL 握手
  321. *
  322. * 返回值: TRUE -- 成功
  323. * FALSE -- 失败,可通过 SYS_GetLastError() 获取失败原因
  324. */
  325. HPSOCKET_API BOOL __HP_CALL HP_SSLClient_StartSSLHandShake(HP_SSLClient pClient);
  326. /* 设置通信组件握手方式(默认:TRUE,自动握手) */
  327. HPSOCKET_API void __HP_CALL HP_SSLClient_SetSSLAutoHandShake(HP_SSLClient pClient, BOOL bAutoHandShake);
  328. /* 获取通信组件握手方式 */
  329. HPSOCKET_API BOOL __HP_CALL HP_SSLClient_IsSSLAutoHandShake(HP_SSLClient pClient);
  330. /* 设置 SSL 加密算法列表 */
  331. HPSOCKET_API void __HP_CALL HP_SSLClient_SetSSLCipherList(HP_SSLClient pClient, LPCTSTR lpszCipherList);
  332. /* 获取 SSL 加密算法列表 */
  333. HPSOCKET_API LPCTSTR __HP_CALL HP_SSLClient_GetSSLCipherList(HP_SSLClient pClient);
  334. /*
  335. * 名称:获取 SSL Session 信息
  336. * 描述:获取指定类型的 SSL Session 信息(输出类型参考:En_HP_SSLSessionInfo)
  337. *
  338. * 返回值: TRUE -- 成功
  339. * FALSE -- 失败,可通过 SYS_GetLastError() 获取失败原因
  340. */
  341. HPSOCKET_API BOOL __HP_CALL HP_SSLClient_GetSSLSessionInfo(HP_SSLClient pClient, En_HP_SSLSessionInfo enInfo, LPVOID* lppInfo);
  342. /*****************************************************************************************************************************************************/
  343. /******************************************************************** HTTPS Exports ******************************************************************/
  344. /*****************************************************************************************************************************************************/
  345. #ifdef _HTTP_SUPPORT
  346. /****************************************************/
  347. /**************** HTTPS 对象创建函数 *****************/
  348. // 创建 HP_HttpsServer 对象
  349. HPSOCKET_API HP_HttpsServer __HP_CALL Create_HP_HttpsServer(HP_HttpServerListener pListener);
  350. // 创建 HP_HttpsAgent 对象
  351. HPSOCKET_API HP_HttpsAgent __HP_CALL Create_HP_HttpsAgent(HP_HttpAgentListener pListener);
  352. // 创建 HP_HttpsClient 对象
  353. HPSOCKET_API HP_HttpsClient __HP_CALL Create_HP_HttpsClient(HP_HttpClientListener pListener);
  354. // 创建 HP_HttpsSyncClient 对象(pListener 参数可传入 nullptr)
  355. HPSOCKET_API HP_HttpsSyncClient __HP_CALL Create_HP_HttpsSyncClient(HP_HttpClientListener pListener /*= nullptr*/);
  356. // 销毁 HP_HttpsServer 对象
  357. HPSOCKET_API void __HP_CALL Destroy_HP_HttpsServer(HP_HttpsServer pServer);
  358. // 销毁 HP_HttpsAgent 对象
  359. HPSOCKET_API void __HP_CALL Destroy_HP_HttpsAgent(HP_HttpsAgent pAgent);
  360. // 销毁 HP_HttpsClient 对象
  361. HPSOCKET_API void __HP_CALL Destroy_HP_HttpsClient(HP_HttpsClient pClient);
  362. // 销毁 HP_HttpsSyncClient 对象
  363. HPSOCKET_API void __HP_CALL Destroy_HP_HttpsSyncClient(HP_HttpsSyncClient pClient);
  364. #endif
  365. #endif