hane 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (488) hide show
  1. package/README.md +32 -0
  2. package/binding.gyp +87 -0
  3. package/dist/index.d.ts +34 -0
  4. package/dist/index.js +1 -0
  5. package/package.json +33 -0
  6. package/src/native/addon.cc +231 -0
  7. package/src/native/zsign_driver.cc +87 -0
  8. package/src/native/zsign_driver.h +38 -0
  9. package/vendor/zlib/.cmake-format.yaml +245 -0
  10. package/vendor/zlib/.github/workflows/c-std.yml +230 -0
  11. package/vendor/zlib/.github/workflows/cmake.yml +112 -0
  12. package/vendor/zlib/.github/workflows/configure.yml +136 -0
  13. package/vendor/zlib/.github/workflows/fuzz.yml +25 -0
  14. package/vendor/zlib/.github/workflows/msys-cygwin.yml +77 -0
  15. package/vendor/zlib/BUILD.bazel +134 -0
  16. package/vendor/zlib/CMakeLists.txt +330 -0
  17. package/vendor/zlib/ChangeLog +1621 -0
  18. package/vendor/zlib/FAQ +367 -0
  19. package/vendor/zlib/INDEX +68 -0
  20. package/vendor/zlib/LICENSE +22 -0
  21. package/vendor/zlib/MODULE.bazel +9 -0
  22. package/vendor/zlib/Makefile.in +419 -0
  23. package/vendor/zlib/README +115 -0
  24. package/vendor/zlib/README-cmake.md +83 -0
  25. package/vendor/zlib/adler32.c +164 -0
  26. package/vendor/zlib/amiga/Makefile.pup +69 -0
  27. package/vendor/zlib/amiga/Makefile.sas +68 -0
  28. package/vendor/zlib/compress.c +75 -0
  29. package/vendor/zlib/configure +966 -0
  30. package/vendor/zlib/contrib/README.contrib +57 -0
  31. package/vendor/zlib/contrib/ada/buffer_demo.adb +106 -0
  32. package/vendor/zlib/contrib/ada/mtest.adb +156 -0
  33. package/vendor/zlib/contrib/ada/read.adb +156 -0
  34. package/vendor/zlib/contrib/ada/readme.txt +65 -0
  35. package/vendor/zlib/contrib/ada/test.adb +463 -0
  36. package/vendor/zlib/contrib/ada/zlib-streams.adb +225 -0
  37. package/vendor/zlib/contrib/ada/zlib-streams.ads +114 -0
  38. package/vendor/zlib/contrib/ada/zlib-thin.adb +142 -0
  39. package/vendor/zlib/contrib/ada/zlib-thin.ads +450 -0
  40. package/vendor/zlib/contrib/ada/zlib.adb +701 -0
  41. package/vendor/zlib/contrib/ada/zlib.ads +328 -0
  42. package/vendor/zlib/contrib/ada/zlib.gpr +20 -0
  43. package/vendor/zlib/contrib/blast/Makefile +8 -0
  44. package/vendor/zlib/contrib/blast/README +4 -0
  45. package/vendor/zlib/contrib/blast/blast.c +466 -0
  46. package/vendor/zlib/contrib/blast/blast.h +83 -0
  47. package/vendor/zlib/contrib/blast/test.pk +0 -0
  48. package/vendor/zlib/contrib/blast/test.txt +1 -0
  49. package/vendor/zlib/contrib/delphi/ZLib.pas +557 -0
  50. package/vendor/zlib/contrib/delphi/ZLibConst.pas +11 -0
  51. package/vendor/zlib/contrib/delphi/readme.txt +76 -0
  52. package/vendor/zlib/contrib/delphi/zlibd32.mak +99 -0
  53. package/vendor/zlib/contrib/dotzlib/DotZLib/AssemblyInfo.cs +58 -0
  54. package/vendor/zlib/contrib/dotzlib/DotZLib/ChecksumImpl.cs +202 -0
  55. package/vendor/zlib/contrib/dotzlib/DotZLib/CircularBuffer.cs +83 -0
  56. package/vendor/zlib/contrib/dotzlib/DotZLib/CodecBase.cs +198 -0
  57. package/vendor/zlib/contrib/dotzlib/DotZLib/Deflater.cs +106 -0
  58. package/vendor/zlib/contrib/dotzlib/DotZLib/DotZLib.cs +288 -0
  59. package/vendor/zlib/contrib/dotzlib/DotZLib/DotZLib.csproj +141 -0
  60. package/vendor/zlib/contrib/dotzlib/DotZLib/GZipStream.cs +301 -0
  61. package/vendor/zlib/contrib/dotzlib/DotZLib/Inflater.cs +105 -0
  62. package/vendor/zlib/contrib/dotzlib/DotZLib/UnitTests.cs +274 -0
  63. package/vendor/zlib/contrib/dotzlib/DotZLib.build +33 -0
  64. package/vendor/zlib/contrib/dotzlib/DotZLib.chm +0 -0
  65. package/vendor/zlib/contrib/dotzlib/DotZLib.sln +21 -0
  66. package/vendor/zlib/contrib/dotzlib/LICENSE_1_0.txt +23 -0
  67. package/vendor/zlib/contrib/dotzlib/readme.txt +58 -0
  68. package/vendor/zlib/contrib/gcc_gvmat64/gvmat64.S +574 -0
  69. package/vendor/zlib/contrib/infback9/README +1 -0
  70. package/vendor/zlib/contrib/infback9/infback9.c +603 -0
  71. package/vendor/zlib/contrib/infback9/infback9.h +37 -0
  72. package/vendor/zlib/contrib/infback9/inffix9.h +107 -0
  73. package/vendor/zlib/contrib/infback9/inflate9.h +47 -0
  74. package/vendor/zlib/contrib/infback9/inftree9.c +319 -0
  75. package/vendor/zlib/contrib/infback9/inftree9.h +61 -0
  76. package/vendor/zlib/contrib/iostream/test.cpp +24 -0
  77. package/vendor/zlib/contrib/iostream/zfstream.cpp +329 -0
  78. package/vendor/zlib/contrib/iostream/zfstream.h +128 -0
  79. package/vendor/zlib/contrib/iostream2/zstream.h +307 -0
  80. package/vendor/zlib/contrib/iostream2/zstream_test.cpp +25 -0
  81. package/vendor/zlib/contrib/iostream3/README +35 -0
  82. package/vendor/zlib/contrib/iostream3/TODO +17 -0
  83. package/vendor/zlib/contrib/iostream3/test.cc +50 -0
  84. package/vendor/zlib/contrib/iostream3/zfstream.cc +479 -0
  85. package/vendor/zlib/contrib/iostream3/zfstream.h +466 -0
  86. package/vendor/zlib/contrib/minizip/CMakeLists.txt +380 -0
  87. package/vendor/zlib/contrib/minizip/Makefile +37 -0
  88. package/vendor/zlib/contrib/minizip/Makefile.am +45 -0
  89. package/vendor/zlib/contrib/minizip/MiniZip64_Changes.txt +6 -0
  90. package/vendor/zlib/contrib/minizip/MiniZip64_info.txt +74 -0
  91. package/vendor/zlib/contrib/minizip/configure.ac +32 -0
  92. package/vendor/zlib/contrib/minizip/crypt.h +128 -0
  93. package/vendor/zlib/contrib/minizip/ints.h +57 -0
  94. package/vendor/zlib/contrib/minizip/ioapi.c +231 -0
  95. package/vendor/zlib/contrib/minizip/ioapi.h +183 -0
  96. package/vendor/zlib/contrib/minizip/iowin32.c +448 -0
  97. package/vendor/zlib/contrib/minizip/iowin32.h +28 -0
  98. package/vendor/zlib/contrib/minizip/make_vms.com +25 -0
  99. package/vendor/zlib/contrib/minizip/miniunz.c +647 -0
  100. package/vendor/zlib/contrib/minizip/miniunzip.1 +63 -0
  101. package/vendor/zlib/contrib/minizip/minizip.1 +46 -0
  102. package/vendor/zlib/contrib/minizip/minizip.c +512 -0
  103. package/vendor/zlib/contrib/minizip/minizip.pc.in +12 -0
  104. package/vendor/zlib/contrib/minizip/minizip.pc.txt +13 -0
  105. package/vendor/zlib/contrib/minizip/minizipConfig.cmake.in +35 -0
  106. package/vendor/zlib/contrib/minizip/mztools.c +288 -0
  107. package/vendor/zlib/contrib/minizip/mztools.h +37 -0
  108. package/vendor/zlib/contrib/minizip/skipset.h +361 -0
  109. package/vendor/zlib/contrib/minizip/test/CMakeLists.txt +121 -0
  110. package/vendor/zlib/contrib/minizip/test/add_subdirectory_exclude_test.cmake.in +29 -0
  111. package/vendor/zlib/contrib/minizip/test/add_subdirectory_test.cmake.in +28 -0
  112. package/vendor/zlib/contrib/minizip/test/find_package_test.cmake.in +25 -0
  113. package/vendor/zlib/contrib/minizip/test/test_helper.cm +32 -0
  114. package/vendor/zlib/contrib/minizip/unzip.c +1981 -0
  115. package/vendor/zlib/contrib/minizip/unzip.h +441 -0
  116. package/vendor/zlib/contrib/minizip/zip.c +2199 -0
  117. package/vendor/zlib/contrib/minizip/zip.h +370 -0
  118. package/vendor/zlib/contrib/nuget/nuget.csproj +43 -0
  119. package/vendor/zlib/contrib/nuget/nuget.sln +22 -0
  120. package/vendor/zlib/contrib/pascal/example.pas +599 -0
  121. package/vendor/zlib/contrib/pascal/readme.txt +76 -0
  122. package/vendor/zlib/contrib/pascal/zlibd32.mak +99 -0
  123. package/vendor/zlib/contrib/pascal/zlibpas.pas +276 -0
  124. package/vendor/zlib/contrib/puff/Makefile +42 -0
  125. package/vendor/zlib/contrib/puff/README +63 -0
  126. package/vendor/zlib/contrib/puff/puff.c +840 -0
  127. package/vendor/zlib/contrib/puff/puff.h +35 -0
  128. package/vendor/zlib/contrib/puff/pufftest.c +169 -0
  129. package/vendor/zlib/contrib/puff/zeros.raw +0 -0
  130. package/vendor/zlib/contrib/testzlib/testzlib.c +275 -0
  131. package/vendor/zlib/contrib/testzlib/testzlib.txt +10 -0
  132. package/vendor/zlib/contrib/untgz/Makefile +14 -0
  133. package/vendor/zlib/contrib/untgz/Makefile.msc +17 -0
  134. package/vendor/zlib/contrib/untgz/untgz.c +667 -0
  135. package/vendor/zlib/contrib/vstudio/readme.txt +81 -0
  136. package/vendor/zlib/contrib/vstudio/vc10/miniunz.vcxproj +310 -0
  137. package/vendor/zlib/contrib/vstudio/vc10/miniunz.vcxproj.filters +22 -0
  138. package/vendor/zlib/contrib/vstudio/vc10/minizip.vcxproj +307 -0
  139. package/vendor/zlib/contrib/vstudio/vc10/minizip.vcxproj.filters +22 -0
  140. package/vendor/zlib/contrib/vstudio/vc10/testzlib.vcxproj +412 -0
  141. package/vendor/zlib/contrib/vstudio/vc10/testzlib.vcxproj.filters +55 -0
  142. package/vendor/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj +310 -0
  143. package/vendor/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj.filters +22 -0
  144. package/vendor/zlib/contrib/vstudio/vc10/zlib.rc +32 -0
  145. package/vendor/zlib/contrib/vstudio/vc10/zlibstat.vcxproj +449 -0
  146. package/vendor/zlib/contrib/vstudio/vc10/zlibstat.vcxproj.filters +74 -0
  147. package/vendor/zlib/contrib/vstudio/vc10/zlibvc.def +161 -0
  148. package/vendor/zlib/contrib/vstudio/vc10/zlibvc.sln +135 -0
  149. package/vendor/zlib/contrib/vstudio/vc10/zlibvc.vcxproj +633 -0
  150. package/vendor/zlib/contrib/vstudio/vc10/zlibvc.vcxproj.filters +115 -0
  151. package/vendor/zlib/contrib/vstudio/vc11/miniunz.vcxproj +314 -0
  152. package/vendor/zlib/contrib/vstudio/vc11/minizip.vcxproj +311 -0
  153. package/vendor/zlib/contrib/vstudio/vc11/testzlib.vcxproj +418 -0
  154. package/vendor/zlib/contrib/vstudio/vc11/testzlibdll.vcxproj +314 -0
  155. package/vendor/zlib/contrib/vstudio/vc11/zlib.rc +32 -0
  156. package/vendor/zlib/contrib/vstudio/vc11/zlibstat.vcxproj +456 -0
  157. package/vendor/zlib/contrib/vstudio/vc11/zlibvc.def +161 -0
  158. package/vendor/zlib/contrib/vstudio/vc11/zlibvc.sln +117 -0
  159. package/vendor/zlib/contrib/vstudio/vc11/zlibvc.vcxproj +664 -0
  160. package/vendor/zlib/contrib/vstudio/vc12/miniunz.vcxproj +316 -0
  161. package/vendor/zlib/contrib/vstudio/vc12/minizip.vcxproj +313 -0
  162. package/vendor/zlib/contrib/vstudio/vc12/testzlib.vcxproj +422 -0
  163. package/vendor/zlib/contrib/vstudio/vc12/testzlibdll.vcxproj +316 -0
  164. package/vendor/zlib/contrib/vstudio/vc12/zlib.rc +32 -0
  165. package/vendor/zlib/contrib/vstudio/vc12/zlibstat.vcxproj +459 -0
  166. package/vendor/zlib/contrib/vstudio/vc12/zlibvc.def +161 -0
  167. package/vendor/zlib/contrib/vstudio/vc12/zlibvc.sln +119 -0
  168. package/vendor/zlib/contrib/vstudio/vc12/zlibvc.vcxproj +668 -0
  169. package/vendor/zlib/contrib/vstudio/vc14/miniunz.vcxproj +316 -0
  170. package/vendor/zlib/contrib/vstudio/vc14/minizip.vcxproj +313 -0
  171. package/vendor/zlib/contrib/vstudio/vc14/testzlib.vcxproj +422 -0
  172. package/vendor/zlib/contrib/vstudio/vc14/testzlibdll.vcxproj +316 -0
  173. package/vendor/zlib/contrib/vstudio/vc14/zlib.rc +32 -0
  174. package/vendor/zlib/contrib/vstudio/vc14/zlibstat.vcxproj +459 -0
  175. package/vendor/zlib/contrib/vstudio/vc14/zlibvc.def +161 -0
  176. package/vendor/zlib/contrib/vstudio/vc14/zlibvc.sln +119 -0
  177. package/vendor/zlib/contrib/vstudio/vc14/zlibvc.vcxproj +668 -0
  178. package/vendor/zlib/contrib/vstudio/vc17/miniunz.vcxproj +409 -0
  179. package/vendor/zlib/contrib/vstudio/vc17/minizip.vcxproj +405 -0
  180. package/vendor/zlib/contrib/vstudio/vc17/testzlib.vcxproj +473 -0
  181. package/vendor/zlib/contrib/vstudio/vc17/testzlibdll.vcxproj +409 -0
  182. package/vendor/zlib/contrib/vstudio/vc17/zlib.rc +32 -0
  183. package/vendor/zlib/contrib/vstudio/vc17/zlibstat.vcxproj +602 -0
  184. package/vendor/zlib/contrib/vstudio/vc17/zlibvc.def +161 -0
  185. package/vendor/zlib/contrib/vstudio/vc17/zlibvc.sln +179 -0
  186. package/vendor/zlib/contrib/vstudio/vc17/zlibvc.vcxproj +875 -0
  187. package/vendor/zlib/contrib/vstudio/vc9/miniunz.vcproj +565 -0
  188. package/vendor/zlib/contrib/vstudio/vc9/minizip.vcproj +562 -0
  189. package/vendor/zlib/contrib/vstudio/vc9/testzlib.vcproj +796 -0
  190. package/vendor/zlib/contrib/vstudio/vc9/testzlibdll.vcproj +565 -0
  191. package/vendor/zlib/contrib/vstudio/vc9/zlib.rc +32 -0
  192. package/vendor/zlib/contrib/vstudio/vc9/zlibstat.vcproj +781 -0
  193. package/vendor/zlib/contrib/vstudio/vc9/zlibvc.def +161 -0
  194. package/vendor/zlib/contrib/vstudio/vc9/zlibvc.sln +144 -0
  195. package/vendor/zlib/contrib/vstudio/vc9/zlibvc.vcproj +1100 -0
  196. package/vendor/zlib/crc32.c +1049 -0
  197. package/vendor/zlib/crc32.h +9446 -0
  198. package/vendor/zlib/deflate.c +2152 -0
  199. package/vendor/zlib/deflate.h +380 -0
  200. package/vendor/zlib/doc/algorithm.txt +209 -0
  201. package/vendor/zlib/doc/crc-doc.1.0.pdf +0 -0
  202. package/vendor/zlib/doc/rfc1950.txt +619 -0
  203. package/vendor/zlib/doc/rfc1951.txt +955 -0
  204. package/vendor/zlib/doc/rfc1952.txt +675 -0
  205. package/vendor/zlib/doc/txtvsbin.txt +107 -0
  206. package/vendor/zlib/examples/README.examples +54 -0
  207. package/vendor/zlib/examples/enough.c +597 -0
  208. package/vendor/zlib/examples/fitblk.c +233 -0
  209. package/vendor/zlib/examples/gun.c +702 -0
  210. package/vendor/zlib/examples/gzappend.c +504 -0
  211. package/vendor/zlib/examples/gzjoin.c +449 -0
  212. package/vendor/zlib/examples/gzlog.c +1061 -0
  213. package/vendor/zlib/examples/gzlog.h +91 -0
  214. package/vendor/zlib/examples/gznorm.c +474 -0
  215. package/vendor/zlib/examples/zlib_how.html +549 -0
  216. package/vendor/zlib/examples/zpipe.c +209 -0
  217. package/vendor/zlib/examples/zran.c +550 -0
  218. package/vendor/zlib/examples/zran.h +53 -0
  219. package/vendor/zlib/gzclose.c +23 -0
  220. package/vendor/zlib/gzguts.h +215 -0
  221. package/vendor/zlib/gzlib.c +585 -0
  222. package/vendor/zlib/gzread.c +603 -0
  223. package/vendor/zlib/gzwrite.c +631 -0
  224. package/vendor/zlib/infback.c +628 -0
  225. package/vendor/zlib/inffast.c +320 -0
  226. package/vendor/zlib/inffast.h +11 -0
  227. package/vendor/zlib/inffixed.h +94 -0
  228. package/vendor/zlib/inflate.c +1526 -0
  229. package/vendor/zlib/inflate.h +126 -0
  230. package/vendor/zlib/inftrees.c +299 -0
  231. package/vendor/zlib/inftrees.h +62 -0
  232. package/vendor/zlib/make_vms.com +867 -0
  233. package/vendor/zlib/msdos/Makefile.bor +115 -0
  234. package/vendor/zlib/msdos/Makefile.dj2 +104 -0
  235. package/vendor/zlib/msdos/Makefile.emx +69 -0
  236. package/vendor/zlib/msdos/Makefile.msc +112 -0
  237. package/vendor/zlib/msdos/Makefile.tc +100 -0
  238. package/vendor/zlib/nintendods/Makefile +126 -0
  239. package/vendor/zlib/nintendods/README +5 -0
  240. package/vendor/zlib/old/Makefile.emx +69 -0
  241. package/vendor/zlib/old/Makefile.riscos +151 -0
  242. package/vendor/zlib/old/README +3 -0
  243. package/vendor/zlib/old/descrip.mms +48 -0
  244. package/vendor/zlib/old/os2/Makefile.os2 +136 -0
  245. package/vendor/zlib/old/os2/zlib.def +51 -0
  246. package/vendor/zlib/old/visual-basic.txt +160 -0
  247. package/vendor/zlib/os400/README400 +48 -0
  248. package/vendor/zlib/os400/bndsrc +133 -0
  249. package/vendor/zlib/os400/make.sh +366 -0
  250. package/vendor/zlib/os400/zlib.inc +531 -0
  251. package/vendor/zlib/qnx/package.qpg +141 -0
  252. package/vendor/zlib/test/CMakeLists.txt +265 -0
  253. package/vendor/zlib/test/add_subdirectory_exclude_test.cmake.in +29 -0
  254. package/vendor/zlib/test/add_subdirectory_test.cmake.in +28 -0
  255. package/vendor/zlib/test/example.c +552 -0
  256. package/vendor/zlib/test/find_package_test.cmake.in +26 -0
  257. package/vendor/zlib/test/infcover.c +672 -0
  258. package/vendor/zlib/test/minigzip.c +590 -0
  259. package/vendor/zlib/treebuild.xml +116 -0
  260. package/vendor/zlib/trees.c +1119 -0
  261. package/vendor/zlib/trees.h +128 -0
  262. package/vendor/zlib/uncompr.c +85 -0
  263. package/vendor/zlib/watcom/watcom_f.mak +43 -0
  264. package/vendor/zlib/watcom/watcom_l.mak +43 -0
  265. package/vendor/zlib/win32/DLL_FAQ.txt +381 -0
  266. package/vendor/zlib/win32/Makefile.bor +109 -0
  267. package/vendor/zlib/win32/Makefile.gcc +177 -0
  268. package/vendor/zlib/win32/Makefile.msc +159 -0
  269. package/vendor/zlib/win32/README-WIN32.txt +103 -0
  270. package/vendor/zlib/win32/VisualC.txt +3 -0
  271. package/vendor/zlib/win32/zlib.def +98 -0
  272. package/vendor/zlib/win32/zlib1.rc +37 -0
  273. package/vendor/zlib/zconf.h.in +544 -0
  274. package/vendor/zlib/zlib.3 +149 -0
  275. package/vendor/zlib/zlib.3.pdf +0 -0
  276. package/vendor/zlib/zlib.h +1957 -0
  277. package/vendor/zlib/zlib.map +104 -0
  278. package/vendor/zlib/zlib.pc.cmakein +13 -0
  279. package/vendor/zlib/zlib.pc.in +13 -0
  280. package/vendor/zlib/zlibConfig.cmake.in +26 -0
  281. package/vendor/zlib/zutil.c +299 -0
  282. package/vendor/zlib/zutil.h +257 -0
  283. package/vendor/zsign/.gitattributes +4 -0
  284. package/vendor/zsign/LICENSE +21 -0
  285. package/vendor/zsign/README.md +142 -0
  286. package/vendor/zsign/build/linux/Makefile +43 -0
  287. package/vendor/zsign/build/macos/Makefile +43 -0
  288. package/vendor/zsign/build/windows/vs2022/include/minizip/crypt.h +128 -0
  289. package/vendor/zsign/build/windows/vs2022/include/minizip/ioapi.h +216 -0
  290. package/vendor/zsign/build/windows/vs2022/include/minizip/iowin32.h +28 -0
  291. package/vendor/zsign/build/windows/vs2022/include/minizip/mztools.h +37 -0
  292. package/vendor/zsign/build/windows/vs2022/include/minizip/unzip.h +437 -0
  293. package/vendor/zsign/build/windows/vs2022/include/minizip/zip.h +364 -0
  294. package/vendor/zsign/build/windows/vs2022/include/openssl/__DECC_INCLUDE_EPILOGUE.H +22 -0
  295. package/vendor/zsign/build/windows/vs2022/include/openssl/__DECC_INCLUDE_PROLOGUE.H +26 -0
  296. package/vendor/zsign/build/windows/vs2022/include/openssl/aes.h +111 -0
  297. package/vendor/zsign/build/windows/vs2022/include/openssl/applink.c +153 -0
  298. package/vendor/zsign/build/windows/vs2022/include/openssl/asn1.h +1133 -0
  299. package/vendor/zsign/build/windows/vs2022/include/openssl/asn1_mac.h +10 -0
  300. package/vendor/zsign/build/windows/vs2022/include/openssl/asn1err.h +142 -0
  301. package/vendor/zsign/build/windows/vs2022/include/openssl/asn1t.h +946 -0
  302. package/vendor/zsign/build/windows/vs2022/include/openssl/async.h +104 -0
  303. package/vendor/zsign/build/windows/vs2022/include/openssl/asyncerr.h +29 -0
  304. package/vendor/zsign/build/windows/vs2022/include/openssl/bio.h +1015 -0
  305. package/vendor/zsign/build/windows/vs2022/include/openssl/bioerr.h +72 -0
  306. package/vendor/zsign/build/windows/vs2022/include/openssl/blowfish.h +78 -0
  307. package/vendor/zsign/build/windows/vs2022/include/openssl/bn.h +590 -0
  308. package/vendor/zsign/build/windows/vs2022/include/openssl/bnerr.h +47 -0
  309. package/vendor/zsign/build/windows/vs2022/include/openssl/buffer.h +62 -0
  310. package/vendor/zsign/build/windows/vs2022/include/openssl/buffererr.h +25 -0
  311. package/vendor/zsign/build/windows/vs2022/include/openssl/camellia.h +117 -0
  312. package/vendor/zsign/build/windows/vs2022/include/openssl/cast.h +71 -0
  313. package/vendor/zsign/build/windows/vs2022/include/openssl/cmac.h +52 -0
  314. package/vendor/zsign/build/windows/vs2022/include/openssl/cmp.h +727 -0
  315. package/vendor/zsign/build/windows/vs2022/include/openssl/cmp_util.h +56 -0
  316. package/vendor/zsign/build/windows/vs2022/include/openssl/cmperr.h +131 -0
  317. package/vendor/zsign/build/windows/vs2022/include/openssl/cms.h +508 -0
  318. package/vendor/zsign/build/windows/vs2022/include/openssl/cmserr.h +125 -0
  319. package/vendor/zsign/build/windows/vs2022/include/openssl/comp.h +98 -0
  320. package/vendor/zsign/build/windows/vs2022/include/openssl/comperr.h +38 -0
  321. package/vendor/zsign/build/windows/vs2022/include/openssl/conf.h +214 -0
  322. package/vendor/zsign/build/windows/vs2022/include/openssl/conf_api.h +46 -0
  323. package/vendor/zsign/build/windows/vs2022/include/openssl/conferr.h +52 -0
  324. package/vendor/zsign/build/windows/vs2022/include/openssl/configuration.h +188 -0
  325. package/vendor/zsign/build/windows/vs2022/include/openssl/conftypes.h +44 -0
  326. package/vendor/zsign/build/windows/vs2022/include/openssl/core.h +236 -0
  327. package/vendor/zsign/build/windows/vs2022/include/openssl/core_dispatch.h +1022 -0
  328. package/vendor/zsign/build/windows/vs2022/include/openssl/core_names.h +545 -0
  329. package/vendor/zsign/build/windows/vs2022/include/openssl/core_object.h +41 -0
  330. package/vendor/zsign/build/windows/vs2022/include/openssl/crmf.h +260 -0
  331. package/vendor/zsign/build/windows/vs2022/include/openssl/crmferr.h +50 -0
  332. package/vendor/zsign/build/windows/vs2022/include/openssl/crypto.h +580 -0
  333. package/vendor/zsign/build/windows/vs2022/include/openssl/cryptoerr.h +56 -0
  334. package/vendor/zsign/build/windows/vs2022/include/openssl/cryptoerr_legacy.h +1466 -0
  335. package/vendor/zsign/build/windows/vs2022/include/openssl/ct.h +573 -0
  336. package/vendor/zsign/build/windows/vs2022/include/openssl/cterr.h +45 -0
  337. package/vendor/zsign/build/windows/vs2022/include/openssl/decoder.h +133 -0
  338. package/vendor/zsign/build/windows/vs2022/include/openssl/decodererr.h +28 -0
  339. package/vendor/zsign/build/windows/vs2022/include/openssl/des.h +211 -0
  340. package/vendor/zsign/build/windows/vs2022/include/openssl/dh.h +339 -0
  341. package/vendor/zsign/build/windows/vs2022/include/openssl/dherr.h +59 -0
  342. package/vendor/zsign/build/windows/vs2022/include/openssl/dsa.h +280 -0
  343. package/vendor/zsign/build/windows/vs2022/include/openssl/dsaerr.h +44 -0
  344. package/vendor/zsign/build/windows/vs2022/include/openssl/dtls1.h +57 -0
  345. package/vendor/zsign/build/windows/vs2022/include/openssl/e_os2.h +310 -0
  346. package/vendor/zsign/build/windows/vs2022/include/openssl/e_ostime.h +38 -0
  347. package/vendor/zsign/build/windows/vs2022/include/openssl/ebcdic.h +39 -0
  348. package/vendor/zsign/build/windows/vs2022/include/openssl/ec.h +1588 -0
  349. package/vendor/zsign/build/windows/vs2022/include/openssl/ecdh.h +10 -0
  350. package/vendor/zsign/build/windows/vs2022/include/openssl/ecdsa.h +10 -0
  351. package/vendor/zsign/build/windows/vs2022/include/openssl/ecerr.h +104 -0
  352. package/vendor/zsign/build/windows/vs2022/include/openssl/encoder.h +124 -0
  353. package/vendor/zsign/build/windows/vs2022/include/openssl/encodererr.h +28 -0
  354. package/vendor/zsign/build/windows/vs2022/include/openssl/engine.h +833 -0
  355. package/vendor/zsign/build/windows/vs2022/include/openssl/engineerr.h +63 -0
  356. package/vendor/zsign/build/windows/vs2022/include/openssl/err.h +512 -0
  357. package/vendor/zsign/build/windows/vs2022/include/openssl/ess.h +128 -0
  358. package/vendor/zsign/build/windows/vs2022/include/openssl/esserr.h +32 -0
  359. package/vendor/zsign/build/windows/vs2022/include/openssl/evp.h +2231 -0
  360. package/vendor/zsign/build/windows/vs2022/include/openssl/evperr.h +140 -0
  361. package/vendor/zsign/build/windows/vs2022/include/openssl/fips_names.h +50 -0
  362. package/vendor/zsign/build/windows/vs2022/include/openssl/fipskey.h +41 -0
  363. package/vendor/zsign/build/windows/vs2022/include/openssl/hmac.h +62 -0
  364. package/vendor/zsign/build/windows/vs2022/include/openssl/hpke.h +169 -0
  365. package/vendor/zsign/build/windows/vs2022/include/openssl/http.h +118 -0
  366. package/vendor/zsign/build/windows/vs2022/include/openssl/httperr.h +56 -0
  367. package/vendor/zsign/build/windows/vs2022/include/openssl/idea.h +82 -0
  368. package/vendor/zsign/build/windows/vs2022/include/openssl/indicator.h +31 -0
  369. package/vendor/zsign/build/windows/vs2022/include/openssl/kdf.h +138 -0
  370. package/vendor/zsign/build/windows/vs2022/include/openssl/kdferr.h +16 -0
  371. package/vendor/zsign/build/windows/vs2022/include/openssl/lhash.h +398 -0
  372. package/vendor/zsign/build/windows/vs2022/include/openssl/macros.h +338 -0
  373. package/vendor/zsign/build/windows/vs2022/include/openssl/md2.h +56 -0
  374. package/vendor/zsign/build/windows/vs2022/include/openssl/md4.h +63 -0
  375. package/vendor/zsign/build/windows/vs2022/include/openssl/md5.h +62 -0
  376. package/vendor/zsign/build/windows/vs2022/include/openssl/mdc2.h +55 -0
  377. package/vendor/zsign/build/windows/vs2022/include/openssl/modes.h +219 -0
  378. package/vendor/zsign/build/windows/vs2022/include/openssl/obj_mac.h +5820 -0
  379. package/vendor/zsign/build/windows/vs2022/include/openssl/objects.h +184 -0
  380. package/vendor/zsign/build/windows/vs2022/include/openssl/objectserr.h +28 -0
  381. package/vendor/zsign/build/windows/vs2022/include/openssl/ocsp.h +483 -0
  382. package/vendor/zsign/build/windows/vs2022/include/openssl/ocsperr.h +53 -0
  383. package/vendor/zsign/build/windows/vs2022/include/openssl/opensslconf.h +17 -0
  384. package/vendor/zsign/build/windows/vs2022/include/openssl/opensslv.h +114 -0
  385. package/vendor/zsign/build/windows/vs2022/include/openssl/ossl_typ.h +16 -0
  386. package/vendor/zsign/build/windows/vs2022/include/openssl/param_build.h +63 -0
  387. package/vendor/zsign/build/windows/vs2022/include/openssl/params.h +160 -0
  388. package/vendor/zsign/build/windows/vs2022/include/openssl/pem.h +543 -0
  389. package/vendor/zsign/build/windows/vs2022/include/openssl/pem2.h +19 -0
  390. package/vendor/zsign/build/windows/vs2022/include/openssl/pemerr.h +58 -0
  391. package/vendor/zsign/build/windows/vs2022/include/openssl/pkcs12.h +366 -0
  392. package/vendor/zsign/build/windows/vs2022/include/openssl/pkcs12err.h +46 -0
  393. package/vendor/zsign/build/windows/vs2022/include/openssl/pkcs7.h +430 -0
  394. package/vendor/zsign/build/windows/vs2022/include/openssl/pkcs7err.h +63 -0
  395. package/vendor/zsign/build/windows/vs2022/include/openssl/prov_ssl.h +38 -0
  396. package/vendor/zsign/build/windows/vs2022/include/openssl/proverr.h +162 -0
  397. package/vendor/zsign/build/windows/vs2022/include/openssl/provider.h +66 -0
  398. package/vendor/zsign/build/windows/vs2022/include/openssl/quic.h +70 -0
  399. package/vendor/zsign/build/windows/vs2022/include/openssl/rand.h +125 -0
  400. package/vendor/zsign/build/windows/vs2022/include/openssl/randerr.h +69 -0
  401. package/vendor/zsign/build/windows/vs2022/include/openssl/rc2.h +68 -0
  402. package/vendor/zsign/build/windows/vs2022/include/openssl/rc4.h +47 -0
  403. package/vendor/zsign/build/windows/vs2022/include/openssl/rc5.h +79 -0
  404. package/vendor/zsign/build/windows/vs2022/include/openssl/ripemd.h +59 -0
  405. package/vendor/zsign/build/windows/vs2022/include/openssl/rsa.h +615 -0
  406. package/vendor/zsign/build/windows/vs2022/include/openssl/rsaerr.h +107 -0
  407. package/vendor/zsign/build/windows/vs2022/include/openssl/safestack.h +297 -0
  408. package/vendor/zsign/build/windows/vs2022/include/openssl/seed.h +113 -0
  409. package/vendor/zsign/build/windows/vs2022/include/openssl/self_test.h +98 -0
  410. package/vendor/zsign/build/windows/vs2022/include/openssl/sha.h +139 -0
  411. package/vendor/zsign/build/windows/vs2022/include/openssl/srp.h +285 -0
  412. package/vendor/zsign/build/windows/vs2022/include/openssl/srtp.h +68 -0
  413. package/vendor/zsign/build/windows/vs2022/include/openssl/ssl.h +2878 -0
  414. package/vendor/zsign/build/windows/vs2022/include/openssl/ssl2.h +30 -0
  415. package/vendor/zsign/build/windows/vs2022/include/openssl/ssl3.h +357 -0
  416. package/vendor/zsign/build/windows/vs2022/include/openssl/sslerr.h +379 -0
  417. package/vendor/zsign/build/windows/vs2022/include/openssl/sslerr_legacy.h +467 -0
  418. package/vendor/zsign/build/windows/vs2022/include/openssl/stack.h +90 -0
  419. package/vendor/zsign/build/windows/vs2022/include/openssl/store.h +377 -0
  420. package/vendor/zsign/build/windows/vs2022/include/openssl/storeerr.h +49 -0
  421. package/vendor/zsign/build/windows/vs2022/include/openssl/symhacks.h +39 -0
  422. package/vendor/zsign/build/windows/vs2022/include/openssl/thread.h +31 -0
  423. package/vendor/zsign/build/windows/vs2022/include/openssl/tls1.h +1220 -0
  424. package/vendor/zsign/build/windows/vs2022/include/openssl/trace.h +320 -0
  425. package/vendor/zsign/build/windows/vs2022/include/openssl/ts.h +522 -0
  426. package/vendor/zsign/build/windows/vs2022/include/openssl/tserr.h +67 -0
  427. package/vendor/zsign/build/windows/vs2022/include/openssl/txt_db.h +63 -0
  428. package/vendor/zsign/build/windows/vs2022/include/openssl/types.h +245 -0
  429. package/vendor/zsign/build/windows/vs2022/include/openssl/ui.h +407 -0
  430. package/vendor/zsign/build/windows/vs2022/include/openssl/uierr.h +38 -0
  431. package/vendor/zsign/build/windows/vs2022/include/openssl/whrlpool.h +62 -0
  432. package/vendor/zsign/build/windows/vs2022/include/openssl/x509.h +1304 -0
  433. package/vendor/zsign/build/windows/vs2022/include/openssl/x509_acert.h +263 -0
  434. package/vendor/zsign/build/windows/vs2022/include/openssl/x509_vfy.h +902 -0
  435. package/vendor/zsign/build/windows/vs2022/include/openssl/x509err.h +70 -0
  436. package/vendor/zsign/build/windows/vs2022/include/openssl/x509v3.h +1500 -0
  437. package/vendor/zsign/build/windows/vs2022/include/openssl/x509v3err.h +96 -0
  438. package/vendor/zsign/build/windows/vs2022/include/zlib/zconf.h +553 -0
  439. package/vendor/zsign/build/windows/vs2022/include/zlib/zlib.h +1938 -0
  440. package/vendor/zsign/build/windows/vs2022/lib/minizip/x64/mt/minizip.lib +0 -0
  441. package/vendor/zsign/build/windows/vs2022/lib/openssl/x64/mt/libcrypto.lib +0 -0
  442. package/vendor/zsign/build/windows/vs2022/lib/openssl/x64/mt/libssl.lib +0 -0
  443. package/vendor/zsign/build/windows/vs2022/lib/zlib/x64/mt/zlib.lib +0 -0
  444. package/vendor/zsign/build/windows/vs2022/zsign/src/common_win32.h +44 -0
  445. package/vendor/zsign/build/windows/vs2022/zsign/src/getopt.cpp +69 -0
  446. package/vendor/zsign/build/windows/vs2022/zsign/src/getopt.h +20 -0
  447. package/vendor/zsign/build/windows/vs2022/zsign/src/iconv.cpp +138 -0
  448. package/vendor/zsign/build/windows/vs2022/zsign/src/iconv.h +38 -0
  449. package/vendor/zsign/build/windows/vs2022/zsign/zsign.vcxproj +177 -0
  450. package/vendor/zsign/build/windows/vs2022/zsign/zsign.vcxproj.filters +120 -0
  451. package/vendor/zsign/build/windows/vs2022/zsign.sln +28 -0
  452. package/vendor/zsign/src/archo.cpp +742 -0
  453. package/vendor/zsign/src/archo.h +61 -0
  454. package/vendor/zsign/src/bundle.cpp +589 -0
  455. package/vendor/zsign/src/bundle.h +46 -0
  456. package/vendor/zsign/src/common/archive.cpp +246 -0
  457. package/vendor/zsign/src/common/archive.h +22 -0
  458. package/vendor/zsign/src/common/base64.cpp +166 -0
  459. package/vendor/zsign/src/common/base64.h +30 -0
  460. package/vendor/zsign/src/common/common.h +56 -0
  461. package/vendor/zsign/src/common/fs.cpp +573 -0
  462. package/vendor/zsign/src/common/fs.h +50 -0
  463. package/vendor/zsign/src/common/json.cpp +3380 -0
  464. package/vendor/zsign/src/common/json.h +530 -0
  465. package/vendor/zsign/src/common/log.cpp +145 -0
  466. package/vendor/zsign/src/common/log.h +37 -0
  467. package/vendor/zsign/src/common/mach-o.h +585 -0
  468. package/vendor/zsign/src/common/sha.cpp +133 -0
  469. package/vendor/zsign/src/common/sha.h +24 -0
  470. package/vendor/zsign/src/common/timer.cpp +28 -0
  471. package/vendor/zsign/src/common/timer.h +17 -0
  472. package/vendor/zsign/src/common/util.cpp +185 -0
  473. package/vendor/zsign/src/common/util.h +25 -0
  474. package/vendor/zsign/src/macho.cpp +273 -0
  475. package/vendor/zsign/src/macho.h +38 -0
  476. package/vendor/zsign/src/openssl.cpp +698 -0
  477. package/vendor/zsign/src/openssl.h +71 -0
  478. package/vendor/zsign/src/signing.cpp +745 -0
  479. package/vendor/zsign/src/signing.h +59 -0
  480. package/vendor/zsign/src/zsign.cpp +317 -0
  481. package/vendor/zsign/test/dylib/bin/demo1.dylib +0 -0
  482. package/vendor/zsign/test/dylib/bin/demo2.dylib +0 -0
  483. package/vendor/zsign/test/dylib/demo/Makefile +12 -0
  484. package/vendor/zsign/test/dylib/demo/control +9 -0
  485. package/vendor/zsign/test/dylib/demo/demo.m +21 -0
  486. package/vendor/zsign/test/linux/test.sh +19 -0
  487. package/vendor/zsign/test/macos/test.sh +19 -0
  488. package/vendor/zsign/test/windows/test.ps1 +17 -0
@@ -0,0 +1,2878 @@
1
+ /*
2
+ * WARNING: do not edit!
3
+ * Generated by makefile from include\openssl\ssl.h.in
4
+ *
5
+ * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved.
6
+ * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved
7
+ * Copyright 2005 Nokia. All rights reserved.
8
+ *
9
+ * Licensed under the Apache License 2.0 (the "License"). You may not use
10
+ * this file except in compliance with the License. You can obtain a copy
11
+ * in the file LICENSE in the source distribution or at
12
+ * https://www.openssl.org/source/license.html
13
+ */
14
+
15
+
16
+
17
+ #ifndef OPENSSL_SSL_H
18
+ # define OPENSSL_SSL_H
19
+ # pragma once
20
+
21
+ # include <openssl/macros.h>
22
+ # ifndef OPENSSL_NO_DEPRECATED_3_0
23
+ # define HEADER_SSL_H
24
+ # endif
25
+
26
+ # include <openssl/e_os2.h>
27
+ # include <openssl/e_ostime.h>
28
+ # include <openssl/opensslconf.h>
29
+ # include <openssl/comp.h>
30
+ # include <openssl/bio.h>
31
+ # ifndef OPENSSL_NO_DEPRECATED_1_1_0
32
+ # include <openssl/x509.h>
33
+ # include <openssl/crypto.h>
34
+ # include <openssl/buffer.h>
35
+ # endif
36
+ # include <openssl/lhash.h>
37
+ # include <openssl/pem.h>
38
+ # include <openssl/hmac.h>
39
+ # include <openssl/async.h>
40
+
41
+ # include <openssl/safestack.h>
42
+ # include <openssl/symhacks.h>
43
+ # include <openssl/ct.h>
44
+ # include <openssl/sslerr.h>
45
+ # include <openssl/prov_ssl.h>
46
+ # ifndef OPENSSL_NO_STDIO
47
+ # include <stdio.h>
48
+ # endif
49
+
50
+ #ifdef __cplusplus
51
+ extern "C" {
52
+ #endif
53
+
54
+ /* OpenSSL version number for ASN.1 encoding of the session information */
55
+ /*-
56
+ * Version 0 - initial version
57
+ * Version 1 - added the optional peer certificate
58
+ */
59
+ # define SSL_SESSION_ASN1_VERSION 0x0001
60
+
61
+ # define SSL_MAX_SSL_SESSION_ID_LENGTH 32
62
+ # define SSL_MAX_SID_CTX_LENGTH 32
63
+
64
+ # define SSL_MIN_RSA_MODULUS_LENGTH_IN_BYTES (512/8)
65
+ # define SSL_MAX_KEY_ARG_LENGTH 8
66
+ /* SSL_MAX_MASTER_KEY_LENGTH is defined in prov_ssl.h */
67
+
68
+ /* The maximum number of encrypt/decrypt pipelines we can support */
69
+ # define SSL_MAX_PIPELINES 32
70
+
71
+ /* text strings for the ciphers */
72
+
73
+ /* These are used to specify which ciphers to use and not to use */
74
+
75
+ # define SSL_TXT_LOW "LOW"
76
+ # define SSL_TXT_MEDIUM "MEDIUM"
77
+ # define SSL_TXT_HIGH "HIGH"
78
+ # define SSL_TXT_FIPS "FIPS"
79
+
80
+ # define SSL_TXT_aNULL "aNULL"
81
+ # define SSL_TXT_eNULL "eNULL"
82
+ # define SSL_TXT_NULL "NULL"
83
+
84
+ # define SSL_TXT_kRSA "kRSA"
85
+ # define SSL_TXT_kDHr "kDHr"/* this cipher class has been removed */
86
+ # define SSL_TXT_kDHd "kDHd"/* this cipher class has been removed */
87
+ # define SSL_TXT_kDH "kDH"/* this cipher class has been removed */
88
+ # define SSL_TXT_kEDH "kEDH"/* alias for kDHE */
89
+ # define SSL_TXT_kDHE "kDHE"
90
+ # define SSL_TXT_kECDHr "kECDHr"/* this cipher class has been removed */
91
+ # define SSL_TXT_kECDHe "kECDHe"/* this cipher class has been removed */
92
+ # define SSL_TXT_kECDH "kECDH"/* this cipher class has been removed */
93
+ # define SSL_TXT_kEECDH "kEECDH"/* alias for kECDHE */
94
+ # define SSL_TXT_kECDHE "kECDHE"
95
+ # define SSL_TXT_kPSK "kPSK"
96
+ # define SSL_TXT_kRSAPSK "kRSAPSK"
97
+ # define SSL_TXT_kECDHEPSK "kECDHEPSK"
98
+ # define SSL_TXT_kDHEPSK "kDHEPSK"
99
+ # define SSL_TXT_kGOST "kGOST"
100
+ # define SSL_TXT_kGOST18 "kGOST18"
101
+ # define SSL_TXT_kSRP "kSRP"
102
+
103
+ # define SSL_TXT_aRSA "aRSA"
104
+ # define SSL_TXT_aDSS "aDSS"
105
+ # define SSL_TXT_aDH "aDH"/* this cipher class has been removed */
106
+ # define SSL_TXT_aECDH "aECDH"/* this cipher class has been removed */
107
+ # define SSL_TXT_aECDSA "aECDSA"
108
+ # define SSL_TXT_aPSK "aPSK"
109
+ # define SSL_TXT_aGOST94 "aGOST94"
110
+ # define SSL_TXT_aGOST01 "aGOST01"
111
+ # define SSL_TXT_aGOST12 "aGOST12"
112
+ # define SSL_TXT_aGOST "aGOST"
113
+ # define SSL_TXT_aSRP "aSRP"
114
+
115
+ # define SSL_TXT_DSS "DSS"
116
+ # define SSL_TXT_DH "DH"
117
+ # define SSL_TXT_DHE "DHE"/* same as "kDHE:-ADH" */
118
+ # define SSL_TXT_EDH "EDH"/* alias for DHE */
119
+ # define SSL_TXT_ADH "ADH"
120
+ # define SSL_TXT_RSA "RSA"
121
+ # define SSL_TXT_ECDH "ECDH"
122
+ # define SSL_TXT_EECDH "EECDH"/* alias for ECDHE" */
123
+ # define SSL_TXT_ECDHE "ECDHE"/* same as "kECDHE:-AECDH" */
124
+ # define SSL_TXT_AECDH "AECDH"
125
+ # define SSL_TXT_ECDSA "ECDSA"
126
+ # define SSL_TXT_PSK "PSK"
127
+ # define SSL_TXT_SRP "SRP"
128
+
129
+ # define SSL_TXT_DES "DES"
130
+ # define SSL_TXT_3DES "3DES"
131
+ # define SSL_TXT_RC4 "RC4"
132
+ # define SSL_TXT_RC2 "RC2"
133
+ # define SSL_TXT_IDEA "IDEA"
134
+ # define SSL_TXT_SEED "SEED"
135
+ # define SSL_TXT_AES128 "AES128"
136
+ # define SSL_TXT_AES256 "AES256"
137
+ # define SSL_TXT_AES "AES"
138
+ # define SSL_TXT_AES_GCM "AESGCM"
139
+ # define SSL_TXT_AES_CCM "AESCCM"
140
+ # define SSL_TXT_AES_CCM_8 "AESCCM8"
141
+ # define SSL_TXT_CAMELLIA128 "CAMELLIA128"
142
+ # define SSL_TXT_CAMELLIA256 "CAMELLIA256"
143
+ # define SSL_TXT_CAMELLIA "CAMELLIA"
144
+ # define SSL_TXT_CHACHA20 "CHACHA20"
145
+ # define SSL_TXT_GOST "GOST89"
146
+ # define SSL_TXT_ARIA "ARIA"
147
+ # define SSL_TXT_ARIA_GCM "ARIAGCM"
148
+ # define SSL_TXT_ARIA128 "ARIA128"
149
+ # define SSL_TXT_ARIA256 "ARIA256"
150
+ # define SSL_TXT_GOST2012_GOST8912_GOST8912 "GOST2012-GOST8912-GOST8912"
151
+ # define SSL_TXT_CBC "CBC"
152
+
153
+ # define SSL_TXT_MD5 "MD5"
154
+ # define SSL_TXT_SHA1 "SHA1"
155
+ # define SSL_TXT_SHA "SHA"/* same as "SHA1" */
156
+ # define SSL_TXT_GOST94 "GOST94"
157
+ # define SSL_TXT_GOST89MAC "GOST89MAC"
158
+ # define SSL_TXT_GOST12 "GOST12"
159
+ # define SSL_TXT_GOST89MAC12 "GOST89MAC12"
160
+ # define SSL_TXT_SHA256 "SHA256"
161
+ # define SSL_TXT_SHA384 "SHA384"
162
+
163
+ # define SSL_TXT_SSLV3 "SSLv3"
164
+ # define SSL_TXT_TLSV1 "TLSv1"
165
+ # define SSL_TXT_TLSV1_1 "TLSv1.1"
166
+ # define SSL_TXT_TLSV1_2 "TLSv1.2"
167
+
168
+ # define SSL_TXT_ALL "ALL"
169
+
170
+ /*-
171
+ * COMPLEMENTOF* definitions. These identifiers are used to (de-select)
172
+ * ciphers normally not being used.
173
+ * Example: "RC4" will activate all ciphers using RC4 including ciphers
174
+ * without authentication, which would normally disabled by DEFAULT (due
175
+ * the "!ADH" being part of default). Therefore "RC4:!COMPLEMENTOFDEFAULT"
176
+ * will make sure that it is also disabled in the specific selection.
177
+ * COMPLEMENTOF* identifiers are portable between version, as adjustments
178
+ * to the default cipher setup will also be included here.
179
+ *
180
+ * COMPLEMENTOFDEFAULT does not experience the same special treatment that
181
+ * DEFAULT gets, as only selection is being done and no sorting as needed
182
+ * for DEFAULT.
183
+ */
184
+ # define SSL_TXT_CMPALL "COMPLEMENTOFALL"
185
+ # define SSL_TXT_CMPDEF "COMPLEMENTOFDEFAULT"
186
+
187
+ /*
188
+ * The following cipher list is used by default. It also is substituted when
189
+ * an application-defined cipher list string starts with 'DEFAULT'.
190
+ * This applies to ciphersuites for TLSv1.2 and below.
191
+ * DEPRECATED IN 3.0.0, in favor of OSSL_default_cipher_list()
192
+ * Update both macro and function simultaneously
193
+ */
194
+ # ifndef OPENSSL_NO_DEPRECATED_3_0
195
+ # define SSL_DEFAULT_CIPHER_LIST "ALL:!COMPLEMENTOFDEFAULT:!eNULL"
196
+ /*
197
+ * This is the default set of TLSv1.3 ciphersuites
198
+ * DEPRECATED IN 3.0.0, in favor of OSSL_default_ciphersuites()
199
+ * Update both macro and function simultaneously
200
+ */
201
+ # define TLS_DEFAULT_CIPHERSUITES "TLS_AES_256_GCM_SHA384:" \
202
+ "TLS_CHACHA20_POLY1305_SHA256:" \
203
+ "TLS_AES_128_GCM_SHA256"
204
+ # endif
205
+ /*
206
+ * As of OpenSSL 1.0.0, ssl_create_cipher_list() in ssl/ssl_ciph.c always
207
+ * starts with a reasonable order, and all we have to do for DEFAULT is
208
+ * throwing out anonymous and unencrypted ciphersuites! (The latter are not
209
+ * actually enabled by ALL, but "ALL:RSA" would enable some of them.)
210
+ */
211
+
212
+ /* Used in SSL_set_shutdown()/SSL_get_shutdown(); */
213
+ # define SSL_SENT_SHUTDOWN 1
214
+ # define SSL_RECEIVED_SHUTDOWN 2
215
+
216
+ #ifdef __cplusplus
217
+ }
218
+ #endif
219
+
220
+ #ifdef __cplusplus
221
+ extern "C" {
222
+ #endif
223
+
224
+ # define SSL_FILETYPE_ASN1 X509_FILETYPE_ASN1
225
+ # define SSL_FILETYPE_PEM X509_FILETYPE_PEM
226
+
227
+ /*
228
+ * This is needed to stop compilers complaining about the 'struct ssl_st *'
229
+ * function parameters used to prototype callbacks in SSL_CTX.
230
+ */
231
+ typedef struct ssl_st *ssl_crock_st;
232
+ typedef struct tls_session_ticket_ext_st TLS_SESSION_TICKET_EXT;
233
+ typedef struct ssl_method_st SSL_METHOD;
234
+ typedef struct ssl_cipher_st SSL_CIPHER;
235
+ typedef struct ssl_session_st SSL_SESSION;
236
+ typedef struct tls_sigalgs_st TLS_SIGALGS;
237
+ typedef struct ssl_conf_ctx_st SSL_CONF_CTX;
238
+
239
+ STACK_OF(SSL_CIPHER);
240
+
241
+ /* SRTP protection profiles for use with the use_srtp extension (RFC 5764)*/
242
+ typedef struct srtp_protection_profile_st {
243
+ const char *name;
244
+ unsigned long id;
245
+ } SRTP_PROTECTION_PROFILE;
246
+ SKM_DEFINE_STACK_OF_INTERNAL(SRTP_PROTECTION_PROFILE, SRTP_PROTECTION_PROFILE, SRTP_PROTECTION_PROFILE)
247
+ #define sk_SRTP_PROTECTION_PROFILE_num(sk) OPENSSL_sk_num(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk))
248
+ #define sk_SRTP_PROTECTION_PROFILE_value(sk, idx) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_value(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk), (idx)))
249
+ #define sk_SRTP_PROTECTION_PROFILE_new(cmp) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_new(ossl_check_SRTP_PROTECTION_PROFILE_compfunc_type(cmp)))
250
+ #define sk_SRTP_PROTECTION_PROFILE_new_null() ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_new_null())
251
+ #define sk_SRTP_PROTECTION_PROFILE_new_reserve(cmp, n) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_new_reserve(ossl_check_SRTP_PROTECTION_PROFILE_compfunc_type(cmp), (n)))
252
+ #define sk_SRTP_PROTECTION_PROFILE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), (n))
253
+ #define sk_SRTP_PROTECTION_PROFILE_free(sk) OPENSSL_sk_free(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk))
254
+ #define sk_SRTP_PROTECTION_PROFILE_zero(sk) OPENSSL_sk_zero(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk))
255
+ #define sk_SRTP_PROTECTION_PROFILE_delete(sk, i) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_delete(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), (i)))
256
+ #define sk_SRTP_PROTECTION_PROFILE_delete_ptr(sk, ptr) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_delete_ptr(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr)))
257
+ #define sk_SRTP_PROTECTION_PROFILE_push(sk, ptr) OPENSSL_sk_push(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr))
258
+ #define sk_SRTP_PROTECTION_PROFILE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr))
259
+ #define sk_SRTP_PROTECTION_PROFILE_pop(sk) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_pop(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk)))
260
+ #define sk_SRTP_PROTECTION_PROFILE_shift(sk) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_shift(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk)))
261
+ #define sk_SRTP_PROTECTION_PROFILE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk),ossl_check_SRTP_PROTECTION_PROFILE_freefunc_type(freefunc))
262
+ #define sk_SRTP_PROTECTION_PROFILE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr), (idx))
263
+ #define sk_SRTP_PROTECTION_PROFILE_set(sk, idx, ptr) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_set(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), (idx), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr)))
264
+ #define sk_SRTP_PROTECTION_PROFILE_find(sk, ptr) OPENSSL_sk_find(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr))
265
+ #define sk_SRTP_PROTECTION_PROFILE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr))
266
+ #define sk_SRTP_PROTECTION_PROFILE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr), pnum)
267
+ #define sk_SRTP_PROTECTION_PROFILE_sort(sk) OPENSSL_sk_sort(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk))
268
+ #define sk_SRTP_PROTECTION_PROFILE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk))
269
+ #define sk_SRTP_PROTECTION_PROFILE_dup(sk) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_dup(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk)))
270
+ #define sk_SRTP_PROTECTION_PROFILE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_deep_copy(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_copyfunc_type(copyfunc), ossl_check_SRTP_PROTECTION_PROFILE_freefunc_type(freefunc)))
271
+ #define sk_SRTP_PROTECTION_PROFILE_set_cmp_func(sk, cmp) ((sk_SRTP_PROTECTION_PROFILE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_compfunc_type(cmp)))
272
+
273
+
274
+
275
+ typedef int (*tls_session_ticket_ext_cb_fn)(SSL *s, const unsigned char *data,
276
+ int len, void *arg);
277
+ typedef int (*tls_session_secret_cb_fn)(SSL *s, void *secret, int *secret_len,
278
+ STACK_OF(SSL_CIPHER) *peer_ciphers,
279
+ const SSL_CIPHER **cipher, void *arg);
280
+
281
+ /* Extension context codes */
282
+ /* This extension is only allowed in TLS */
283
+ #define SSL_EXT_TLS_ONLY 0x00001
284
+ /* This extension is only allowed in DTLS */
285
+ #define SSL_EXT_DTLS_ONLY 0x00002
286
+ /* Some extensions may be allowed in DTLS but we don't implement them for it */
287
+ #define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x00004
288
+ /* Most extensions are not defined for SSLv3 but EXT_TYPE_renegotiate is */
289
+ #define SSL_EXT_SSL3_ALLOWED 0x00008
290
+ /* Extension is only defined for TLS1.2 and below */
291
+ #define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x00010
292
+ /* Extension is only defined for TLS1.3 and above */
293
+ #define SSL_EXT_TLS1_3_ONLY 0x00020
294
+ /* Ignore this extension during parsing if we are resuming */
295
+ #define SSL_EXT_IGNORE_ON_RESUMPTION 0x00040
296
+ #define SSL_EXT_CLIENT_HELLO 0x00080
297
+ /* Really means TLS1.2 or below */
298
+ #define SSL_EXT_TLS1_2_SERVER_HELLO 0x00100
299
+ #define SSL_EXT_TLS1_3_SERVER_HELLO 0x00200
300
+ #define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x00400
301
+ #define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x00800
302
+ #define SSL_EXT_TLS1_3_CERTIFICATE 0x01000
303
+ #define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x02000
304
+ #define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x04000
305
+ #define SSL_EXT_TLS1_3_CERTIFICATE_COMPRESSION 0x08000
306
+ /* When sending a raw public key in a certificate message */
307
+ #define SSL_EXT_TLS1_3_RAW_PUBLIC_KEY 0x10000
308
+
309
+ /* Typedefs for handling custom extensions */
310
+
311
+ typedef int (*custom_ext_add_cb)(SSL *s, unsigned int ext_type,
312
+ const unsigned char **out, size_t *outlen,
313
+ int *al, void *add_arg);
314
+
315
+ typedef void (*custom_ext_free_cb)(SSL *s, unsigned int ext_type,
316
+ const unsigned char *out, void *add_arg);
317
+
318
+ typedef int (*custom_ext_parse_cb)(SSL *s, unsigned int ext_type,
319
+ const unsigned char *in, size_t inlen,
320
+ int *al, void *parse_arg);
321
+
322
+
323
+ typedef int (*SSL_custom_ext_add_cb_ex)(SSL *s, unsigned int ext_type,
324
+ unsigned int context,
325
+ const unsigned char **out,
326
+ size_t *outlen, X509 *x,
327
+ size_t chainidx,
328
+ int *al, void *add_arg);
329
+
330
+ typedef void (*SSL_custom_ext_free_cb_ex)(SSL *s, unsigned int ext_type,
331
+ unsigned int context,
332
+ const unsigned char *out,
333
+ void *add_arg);
334
+
335
+ typedef int (*SSL_custom_ext_parse_cb_ex)(SSL *s, unsigned int ext_type,
336
+ unsigned int context,
337
+ const unsigned char *in,
338
+ size_t inlen, X509 *x,
339
+ size_t chainidx,
340
+ int *al, void *parse_arg);
341
+
342
+ /* Typedef for verification callback */
343
+ typedef int (*SSL_verify_cb)(int preverify_ok, X509_STORE_CTX *x509_ctx);
344
+
345
+ /* Typedef for SSL async callback */
346
+ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg);
347
+
348
+ #define SSL_OP_BIT(n) ((uint64_t)1 << (uint64_t)n)
349
+
350
+ /*
351
+ * SSL/TLS connection options.
352
+ */
353
+ /* Disable Extended master secret */
354
+ # define SSL_OP_NO_EXTENDED_MASTER_SECRET SSL_OP_BIT(0)
355
+ /* Cleanse plaintext copies of data delivered to the application */
356
+ # define SSL_OP_CLEANSE_PLAINTEXT SSL_OP_BIT(1)
357
+ /* Allow initial connection to servers that don't support RI */
358
+ # define SSL_OP_LEGACY_SERVER_CONNECT SSL_OP_BIT(2)
359
+ /* Enable support for Kernel TLS */
360
+ # define SSL_OP_ENABLE_KTLS SSL_OP_BIT(3)
361
+ # define SSL_OP_TLSEXT_PADDING SSL_OP_BIT(4)
362
+ # define SSL_OP_SAFARI_ECDHE_ECDSA_BUG SSL_OP_BIT(6)
363
+ # define SSL_OP_IGNORE_UNEXPECTED_EOF SSL_OP_BIT(7)
364
+ # define SSL_OP_ALLOW_CLIENT_RENEGOTIATION SSL_OP_BIT(8)
365
+ # define SSL_OP_DISABLE_TLSEXT_CA_NAMES SSL_OP_BIT(9)
366
+ /* In TLSv1.3 allow a non-(ec)dhe based kex_mode */
367
+ # define SSL_OP_ALLOW_NO_DHE_KEX SSL_OP_BIT(10)
368
+ /*
369
+ * Disable SSL 3.0/TLS 1.0 CBC vulnerability workaround that was added
370
+ * in OpenSSL 0.9.6d. Usually (depending on the application protocol)
371
+ * the workaround is not needed. Unfortunately some broken SSL/TLS
372
+ * implementations cannot handle it at all, which is why we include it
373
+ * in SSL_OP_ALL. Added in 0.9.6e
374
+ */
375
+ # define SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS SSL_OP_BIT(11)
376
+ /* DTLS options */
377
+ # define SSL_OP_NO_QUERY_MTU SSL_OP_BIT(12)
378
+ /* Turn on Cookie Exchange (on relevant for servers) */
379
+ # define SSL_OP_COOKIE_EXCHANGE SSL_OP_BIT(13)
380
+ /* Don't use RFC4507 ticket extension */
381
+ # define SSL_OP_NO_TICKET SSL_OP_BIT(14)
382
+ # ifndef OPENSSL_NO_DTLS1_METHOD
383
+ /*
384
+ * Use Cisco's version identifier of DTLS_BAD_VER
385
+ * (only with deprecated DTLSv1_client_method())
386
+ */
387
+ # define SSL_OP_CISCO_ANYCONNECT SSL_OP_BIT(15)
388
+ # endif
389
+ /* As server, disallow session resumption on renegotiation */
390
+ # define SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION SSL_OP_BIT(16)
391
+ /* Don't use compression even if supported */
392
+ # define SSL_OP_NO_COMPRESSION SSL_OP_BIT(17)
393
+ /* Permit unsafe legacy renegotiation */
394
+ # define SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION SSL_OP_BIT(18)
395
+ /* Disable encrypt-then-mac */
396
+ # define SSL_OP_NO_ENCRYPT_THEN_MAC SSL_OP_BIT(19)
397
+ /*
398
+ * Enable TLSv1.3 Compatibility mode. This is on by default. A future
399
+ * version of OpenSSL may have this disabled by default.
400
+ */
401
+ # define SSL_OP_ENABLE_MIDDLEBOX_COMPAT SSL_OP_BIT(20)
402
+ /*
403
+ * Prioritize Chacha20Poly1305 when client does.
404
+ * Modifies SSL_OP_CIPHER_SERVER_PREFERENCE
405
+ */
406
+ # define SSL_OP_PRIORITIZE_CHACHA SSL_OP_BIT(21)
407
+ /*
408
+ * Set on servers to choose the cipher according to server's preferences.
409
+ */
410
+ # define SSL_OP_CIPHER_SERVER_PREFERENCE SSL_OP_BIT(22)
411
+ /*
412
+ * If set, a server will allow a client to issue a SSLv3.0 version
413
+ * number as latest version supported in the premaster secret, even when
414
+ * TLSv1.0 (version 3.1) was announced in the client hello. Normally
415
+ * this is forbidden to prevent version rollback attacks.
416
+ */
417
+ # define SSL_OP_TLS_ROLLBACK_BUG SSL_OP_BIT(23)
418
+ /*
419
+ * Switches off automatic TLSv1.3 anti-replay protection for early data.
420
+ * This is a server-side option only (no effect on the client).
421
+ */
422
+ # define SSL_OP_NO_ANTI_REPLAY SSL_OP_BIT(24)
423
+ # define SSL_OP_NO_SSLv3 SSL_OP_BIT(25)
424
+ # define SSL_OP_NO_TLSv1 SSL_OP_BIT(26)
425
+ # define SSL_OP_NO_TLSv1_2 SSL_OP_BIT(27)
426
+ # define SSL_OP_NO_TLSv1_1 SSL_OP_BIT(28)
427
+ # define SSL_OP_NO_TLSv1_3 SSL_OP_BIT(29)
428
+ # define SSL_OP_NO_DTLSv1 SSL_OP_BIT(26)
429
+ # define SSL_OP_NO_DTLSv1_2 SSL_OP_BIT(27)
430
+ /* Disallow all renegotiation */
431
+ # define SSL_OP_NO_RENEGOTIATION SSL_OP_BIT(30)
432
+ /*
433
+ * Make server add server-hello extension from early version of
434
+ * cryptopro draft, when GOST ciphersuite is negotiated. Required for
435
+ * interoperability with CryptoPro CSP 3.x
436
+ */
437
+ # define SSL_OP_CRYPTOPRO_TLSEXT_BUG SSL_OP_BIT(31)
438
+ /*
439
+ * Disable RFC8879 certificate compression
440
+ * SSL_OP_NO_TX_CERTIFICATE_COMPRESSION: don't send compressed certificates,
441
+ * and ignore the extension when received.
442
+ * SSL_OP_NO_RX_CERTIFICATE_COMPRESSION: don't send the extension, and
443
+ * subsequently indicating that receiving is not supported
444
+ */
445
+ # define SSL_OP_NO_TX_CERTIFICATE_COMPRESSION SSL_OP_BIT(32)
446
+ # define SSL_OP_NO_RX_CERTIFICATE_COMPRESSION SSL_OP_BIT(33)
447
+ /* Enable KTLS TX zerocopy on Linux */
448
+ # define SSL_OP_ENABLE_KTLS_TX_ZEROCOPY_SENDFILE SSL_OP_BIT(34)
449
+
450
+ #define SSL_OP_PREFER_NO_DHE_KEX SSL_OP_BIT(35)
451
+
452
+ /*
453
+ * Option "collections."
454
+ */
455
+ # define SSL_OP_NO_SSL_MASK \
456
+ ( SSL_OP_NO_SSLv3 | SSL_OP_NO_TLSv1 | SSL_OP_NO_TLSv1_1 \
457
+ | SSL_OP_NO_TLSv1_2 | SSL_OP_NO_TLSv1_3 )
458
+ # define SSL_OP_NO_DTLS_MASK \
459
+ ( SSL_OP_NO_DTLSv1 | SSL_OP_NO_DTLSv1_2 )
460
+
461
+ /* Various bug workarounds that should be rather harmless. */
462
+ # define SSL_OP_ALL \
463
+ ( SSL_OP_CRYPTOPRO_TLSEXT_BUG | SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS \
464
+ | SSL_OP_TLSEXT_PADDING | SSL_OP_SAFARI_ECDHE_ECDSA_BUG )
465
+
466
+ /*
467
+ * OBSOLETE OPTIONS retained for compatibility
468
+ */
469
+
470
+ # define SSL_OP_MICROSOFT_SESS_ID_BUG 0x0
471
+ # define SSL_OP_NETSCAPE_CHALLENGE_BUG 0x0
472
+ # define SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG 0x0
473
+ # define SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG 0x0
474
+ # define SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER 0x0
475
+ # define SSL_OP_MSIE_SSLV2_RSA_PADDING 0x0
476
+ # define SSL_OP_SSLEAY_080_CLIENT_DH_BUG 0x0
477
+ # define SSL_OP_TLS_D5_BUG 0x0
478
+ # define SSL_OP_TLS_BLOCK_PADDING_BUG 0x0
479
+ # define SSL_OP_SINGLE_ECDH_USE 0x0
480
+ # define SSL_OP_SINGLE_DH_USE 0x0
481
+ # define SSL_OP_EPHEMERAL_RSA 0x0
482
+ # define SSL_OP_NO_SSLv2 0x0
483
+ # define SSL_OP_PKCS1_CHECK_1 0x0
484
+ # define SSL_OP_PKCS1_CHECK_2 0x0
485
+ # define SSL_OP_NETSCAPE_CA_DN_BUG 0x0
486
+ # define SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG 0x0
487
+
488
+ /*
489
+ * Allow SSL_write(..., n) to return r with 0 < r < n (i.e. report success
490
+ * when just a single record has been written):
491
+ */
492
+ # define SSL_MODE_ENABLE_PARTIAL_WRITE 0x00000001U
493
+ /*
494
+ * Make it possible to retry SSL_write() with changed buffer location (buffer
495
+ * contents must stay the same!); this is not the default to avoid the
496
+ * misconception that non-blocking SSL_write() behaves like non-blocking
497
+ * write():
498
+ */
499
+ # define SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER 0x00000002U
500
+ /*
501
+ * Never bother the application with retries if the transport is blocking:
502
+ */
503
+ # define SSL_MODE_AUTO_RETRY 0x00000004U
504
+ /* Don't attempt to automatically build certificate chain */
505
+ # define SSL_MODE_NO_AUTO_CHAIN 0x00000008U
506
+ /*
507
+ * Save RAM by releasing read and write buffers when they're empty. (SSL3 and
508
+ * TLS only.) Released buffers are freed.
509
+ */
510
+ # define SSL_MODE_RELEASE_BUFFERS 0x00000010U
511
+ /*
512
+ * Send the current time in the Random fields of the ClientHello and
513
+ * ServerHello records for compatibility with hypothetical implementations
514
+ * that require it.
515
+ */
516
+ # define SSL_MODE_SEND_CLIENTHELLO_TIME 0x00000020U
517
+ # define SSL_MODE_SEND_SERVERHELLO_TIME 0x00000040U
518
+ /*
519
+ * Send TLS_FALLBACK_SCSV in the ClientHello. To be set only by applications
520
+ * that reconnect with a downgraded protocol version; see
521
+ * draft-ietf-tls-downgrade-scsv-00 for details. DO NOT ENABLE THIS if your
522
+ * application attempts a normal handshake. Only use this in explicit
523
+ * fallback retries, following the guidance in
524
+ * draft-ietf-tls-downgrade-scsv-00.
525
+ */
526
+ # define SSL_MODE_SEND_FALLBACK_SCSV 0x00000080U
527
+ /*
528
+ * Support Asynchronous operation
529
+ */
530
+ # define SSL_MODE_ASYNC 0x00000100U
531
+
532
+ /*
533
+ * When using DTLS/SCTP, include the terminating zero in the label
534
+ * used for computing the endpoint-pair shared secret. Required for
535
+ * interoperability with implementations having this bug like these
536
+ * older version of OpenSSL:
537
+ * - OpenSSL 1.0.0 series
538
+ * - OpenSSL 1.0.1 series
539
+ * - OpenSSL 1.0.2 series
540
+ * - OpenSSL 1.1.0 series
541
+ * - OpenSSL 1.1.1 and 1.1.1a
542
+ */
543
+ # define SSL_MODE_DTLS_SCTP_LABEL_LENGTH_BUG 0x00000400U
544
+
545
+ /* Cert related flags */
546
+ /*
547
+ * Many implementations ignore some aspects of the TLS standards such as
548
+ * enforcing certificate chain algorithms. When this is set we enforce them.
549
+ */
550
+ # define SSL_CERT_FLAG_TLS_STRICT 0x00000001U
551
+
552
+ /* Suite B modes, takes same values as certificate verify flags */
553
+ # define SSL_CERT_FLAG_SUITEB_128_LOS_ONLY 0x10000
554
+ /* Suite B 192 bit only mode */
555
+ # define SSL_CERT_FLAG_SUITEB_192_LOS 0x20000
556
+ /* Suite B 128 bit mode allowing 192 bit algorithms */
557
+ # define SSL_CERT_FLAG_SUITEB_128_LOS 0x30000
558
+
559
+ /* Perform all sorts of protocol violations for testing purposes */
560
+ # define SSL_CERT_FLAG_BROKEN_PROTOCOL 0x10000000
561
+
562
+ /* Flags for building certificate chains */
563
+ /* Treat any existing certificates as untrusted CAs */
564
+ # define SSL_BUILD_CHAIN_FLAG_UNTRUSTED 0x1
565
+ /* Don't include root CA in chain */
566
+ # define SSL_BUILD_CHAIN_FLAG_NO_ROOT 0x2
567
+ /* Just check certificates already there */
568
+ # define SSL_BUILD_CHAIN_FLAG_CHECK 0x4
569
+ /* Ignore verification errors */
570
+ # define SSL_BUILD_CHAIN_FLAG_IGNORE_ERROR 0x8
571
+ /* Clear verification errors from queue */
572
+ # define SSL_BUILD_CHAIN_FLAG_CLEAR_ERROR 0x10
573
+
574
+ /* Flags returned by SSL_check_chain */
575
+ /* Certificate can be used with this session */
576
+ # define CERT_PKEY_VALID 0x1
577
+ /* Certificate can also be used for signing */
578
+ # define CERT_PKEY_SIGN 0x2
579
+ /* EE certificate signing algorithm OK */
580
+ # define CERT_PKEY_EE_SIGNATURE 0x10
581
+ /* CA signature algorithms OK */
582
+ # define CERT_PKEY_CA_SIGNATURE 0x20
583
+ /* EE certificate parameters OK */
584
+ # define CERT_PKEY_EE_PARAM 0x40
585
+ /* CA certificate parameters OK */
586
+ # define CERT_PKEY_CA_PARAM 0x80
587
+ /* Signing explicitly allowed as opposed to SHA1 fallback */
588
+ # define CERT_PKEY_EXPLICIT_SIGN 0x100
589
+ /* Client CA issuer names match (always set for server cert) */
590
+ # define CERT_PKEY_ISSUER_NAME 0x200
591
+ /* Cert type matches client types (always set for server cert) */
592
+ # define CERT_PKEY_CERT_TYPE 0x400
593
+ /* Cert chain suitable to Suite B */
594
+ # define CERT_PKEY_SUITEB 0x800
595
+ /* Cert pkey valid for raw public key use */
596
+ # define CERT_PKEY_RPK 0x1000
597
+
598
+ # define SSL_CONF_FLAG_CMDLINE 0x1
599
+ # define SSL_CONF_FLAG_FILE 0x2
600
+ # define SSL_CONF_FLAG_CLIENT 0x4
601
+ # define SSL_CONF_FLAG_SERVER 0x8
602
+ # define SSL_CONF_FLAG_SHOW_ERRORS 0x10
603
+ # define SSL_CONF_FLAG_CERTIFICATE 0x20
604
+ # define SSL_CONF_FLAG_REQUIRE_PRIVATE 0x40
605
+ /* Configuration value types */
606
+ # define SSL_CONF_TYPE_UNKNOWN 0x0
607
+ # define SSL_CONF_TYPE_STRING 0x1
608
+ # define SSL_CONF_TYPE_FILE 0x2
609
+ # define SSL_CONF_TYPE_DIR 0x3
610
+ # define SSL_CONF_TYPE_NONE 0x4
611
+ # define SSL_CONF_TYPE_STORE 0x5
612
+
613
+ /* Maximum length of the application-controlled segment of a a TLSv1.3 cookie */
614
+ # define SSL_COOKIE_LENGTH 4096
615
+
616
+ /*
617
+ * Note: SSL[_CTX]_set_{options,mode} use |= op on the previous value, they
618
+ * cannot be used to clear bits.
619
+ */
620
+
621
+ uint64_t SSL_CTX_get_options(const SSL_CTX *ctx);
622
+ uint64_t SSL_get_options(const SSL *s);
623
+ uint64_t SSL_CTX_clear_options(SSL_CTX *ctx, uint64_t op);
624
+ uint64_t SSL_clear_options(SSL *s, uint64_t op);
625
+ uint64_t SSL_CTX_set_options(SSL_CTX *ctx, uint64_t op);
626
+ uint64_t SSL_set_options(SSL *s, uint64_t op);
627
+
628
+ # define SSL_CTX_set_mode(ctx,op) \
629
+ SSL_CTX_ctrl((ctx),SSL_CTRL_MODE,(op),NULL)
630
+ # define SSL_CTX_clear_mode(ctx,op) \
631
+ SSL_CTX_ctrl((ctx),SSL_CTRL_CLEAR_MODE,(op),NULL)
632
+ # define SSL_CTX_get_mode(ctx) \
633
+ SSL_CTX_ctrl((ctx),SSL_CTRL_MODE,0,NULL)
634
+ # define SSL_clear_mode(ssl,op) \
635
+ SSL_ctrl((ssl),SSL_CTRL_CLEAR_MODE,(op),NULL)
636
+ # define SSL_set_mode(ssl,op) \
637
+ SSL_ctrl((ssl),SSL_CTRL_MODE,(op),NULL)
638
+ # define SSL_get_mode(ssl) \
639
+ SSL_ctrl((ssl),SSL_CTRL_MODE,0,NULL)
640
+ # define SSL_set_mtu(ssl, mtu) \
641
+ SSL_ctrl((ssl),SSL_CTRL_SET_MTU,(mtu),NULL)
642
+ # define DTLS_set_link_mtu(ssl, mtu) \
643
+ SSL_ctrl((ssl),DTLS_CTRL_SET_LINK_MTU,(mtu),NULL)
644
+ # define DTLS_get_link_min_mtu(ssl) \
645
+ SSL_ctrl((ssl),DTLS_CTRL_GET_LINK_MIN_MTU,0,NULL)
646
+
647
+ # define SSL_get_secure_renegotiation_support(ssl) \
648
+ SSL_ctrl((ssl), SSL_CTRL_GET_RI_SUPPORT, 0, NULL)
649
+
650
+ # define SSL_CTX_set_cert_flags(ctx,op) \
651
+ SSL_CTX_ctrl((ctx),SSL_CTRL_CERT_FLAGS,(op),NULL)
652
+ # define SSL_set_cert_flags(s,op) \
653
+ SSL_ctrl((s),SSL_CTRL_CERT_FLAGS,(op),NULL)
654
+ # define SSL_CTX_clear_cert_flags(ctx,op) \
655
+ SSL_CTX_ctrl((ctx),SSL_CTRL_CLEAR_CERT_FLAGS,(op),NULL)
656
+ # define SSL_clear_cert_flags(s,op) \
657
+ SSL_ctrl((s),SSL_CTRL_CLEAR_CERT_FLAGS,(op),NULL)
658
+
659
+ void SSL_CTX_set_msg_callback(SSL_CTX *ctx,
660
+ void (*cb) (int write_p, int version,
661
+ int content_type, const void *buf,
662
+ size_t len, SSL *ssl, void *arg));
663
+ void SSL_set_msg_callback(SSL *ssl,
664
+ void (*cb) (int write_p, int version,
665
+ int content_type, const void *buf,
666
+ size_t len, SSL *ssl, void *arg));
667
+ # define SSL_CTX_set_msg_callback_arg(ctx, arg) SSL_CTX_ctrl((ctx), SSL_CTRL_SET_MSG_CALLBACK_ARG, 0, (arg))
668
+ # define SSL_set_msg_callback_arg(ssl, arg) SSL_ctrl((ssl), SSL_CTRL_SET_MSG_CALLBACK_ARG, 0, (arg))
669
+
670
+ # define SSL_get_extms_support(s) \
671
+ SSL_ctrl((s),SSL_CTRL_GET_EXTMS_SUPPORT,0,NULL)
672
+
673
+ # ifndef OPENSSL_NO_SRP
674
+ /* see tls_srp.c */
675
+ # ifndef OPENSSL_NO_DEPRECATED_3_0
676
+ OSSL_DEPRECATEDIN_3_0 __owur int SSL_SRP_CTX_init(SSL *s);
677
+ OSSL_DEPRECATEDIN_3_0 __owur int SSL_CTX_SRP_CTX_init(SSL_CTX *ctx);
678
+ OSSL_DEPRECATEDIN_3_0 int SSL_SRP_CTX_free(SSL *ctx);
679
+ OSSL_DEPRECATEDIN_3_0 int SSL_CTX_SRP_CTX_free(SSL_CTX *ctx);
680
+ OSSL_DEPRECATEDIN_3_0 __owur int SSL_srp_server_param_with_username(SSL *s,
681
+ int *ad);
682
+ OSSL_DEPRECATEDIN_3_0 __owur int SRP_Calc_A_param(SSL *s);
683
+ # endif
684
+ # endif
685
+
686
+ /* 100k max cert list */
687
+ # define SSL_MAX_CERT_LIST_DEFAULT (1024*100)
688
+
689
+ # define SSL_SESSION_CACHE_MAX_SIZE_DEFAULT (1024*20)
690
+
691
+ /*
692
+ * This callback type is used inside SSL_CTX, SSL, and in the functions that
693
+ * set them. It is used to override the generation of SSL/TLS session IDs in
694
+ * a server. Return value should be zero on an error, non-zero to proceed.
695
+ * Also, callbacks should themselves check if the id they generate is unique
696
+ * otherwise the SSL handshake will fail with an error - callbacks can do
697
+ * this using the 'ssl' value they're passed by;
698
+ * SSL_has_matching_session_id(ssl, id, *id_len) The length value passed in
699
+ * is set at the maximum size the session ID can be. In SSLv3/TLSv1 it is 32
700
+ * bytes. The callback can alter this length to be less if desired. It is
701
+ * also an error for the callback to set the size to zero.
702
+ */
703
+ typedef int (*GEN_SESSION_CB) (SSL *ssl, unsigned char *id,
704
+ unsigned int *id_len);
705
+
706
+ # define SSL_SESS_CACHE_OFF 0x0000
707
+ # define SSL_SESS_CACHE_CLIENT 0x0001
708
+ # define SSL_SESS_CACHE_SERVER 0x0002
709
+ # define SSL_SESS_CACHE_BOTH (SSL_SESS_CACHE_CLIENT|SSL_SESS_CACHE_SERVER)
710
+ # define SSL_SESS_CACHE_NO_AUTO_CLEAR 0x0080
711
+ /* enough comments already ... see SSL_CTX_set_session_cache_mode(3) */
712
+ # define SSL_SESS_CACHE_NO_INTERNAL_LOOKUP 0x0100
713
+ # define SSL_SESS_CACHE_NO_INTERNAL_STORE 0x0200
714
+ # define SSL_SESS_CACHE_NO_INTERNAL \
715
+ (SSL_SESS_CACHE_NO_INTERNAL_LOOKUP|SSL_SESS_CACHE_NO_INTERNAL_STORE)
716
+ # define SSL_SESS_CACHE_UPDATE_TIME 0x0400
717
+
718
+ LHASH_OF(SSL_SESSION) *SSL_CTX_sessions(SSL_CTX *ctx);
719
+ # define SSL_CTX_sess_number(ctx) \
720
+ SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_NUMBER,0,NULL)
721
+ # define SSL_CTX_sess_connect(ctx) \
722
+ SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CONNECT,0,NULL)
723
+ # define SSL_CTX_sess_connect_good(ctx) \
724
+ SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CONNECT_GOOD,0,NULL)
725
+ # define SSL_CTX_sess_connect_renegotiate(ctx) \
726
+ SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CONNECT_RENEGOTIATE,0,NULL)
727
+ # define SSL_CTX_sess_accept(ctx) \
728
+ SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_ACCEPT,0,NULL)
729
+ # define SSL_CTX_sess_accept_renegotiate(ctx) \
730
+ SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_ACCEPT_RENEGOTIATE,0,NULL)
731
+ # define SSL_CTX_sess_accept_good(ctx) \
732
+ SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_ACCEPT_GOOD,0,NULL)
733
+ # define SSL_CTX_sess_hits(ctx) \
734
+ SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_HIT,0,NULL)
735
+ # define SSL_CTX_sess_cb_hits(ctx) \
736
+ SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CB_HIT,0,NULL)
737
+ # define SSL_CTX_sess_misses(ctx) \
738
+ SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_MISSES,0,NULL)
739
+ # define SSL_CTX_sess_timeouts(ctx) \
740
+ SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_TIMEOUTS,0,NULL)
741
+ # define SSL_CTX_sess_cache_full(ctx) \
742
+ SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CACHE_FULL,0,NULL)
743
+
744
+ void SSL_CTX_sess_set_new_cb(SSL_CTX *ctx,
745
+ int (*new_session_cb) (struct ssl_st *ssl,
746
+ SSL_SESSION *sess));
747
+ int (*SSL_CTX_sess_get_new_cb(SSL_CTX *ctx)) (struct ssl_st *ssl,
748
+ SSL_SESSION *sess);
749
+ void SSL_CTX_sess_set_remove_cb(SSL_CTX *ctx,
750
+ void (*remove_session_cb) (struct ssl_ctx_st
751
+ *ctx,
752
+ SSL_SESSION *sess));
753
+ void (*SSL_CTX_sess_get_remove_cb(SSL_CTX *ctx)) (struct ssl_ctx_st *ctx,
754
+ SSL_SESSION *sess);
755
+ void SSL_CTX_sess_set_get_cb(SSL_CTX *ctx,
756
+ SSL_SESSION *(*get_session_cb) (struct ssl_st
757
+ *ssl,
758
+ const unsigned char
759
+ *data, int len,
760
+ int *copy));
761
+ SSL_SESSION *(*SSL_CTX_sess_get_get_cb(SSL_CTX *ctx)) (struct ssl_st *ssl,
762
+ const unsigned char *data,
763
+ int len, int *copy);
764
+ void SSL_CTX_set_info_callback(SSL_CTX *ctx,
765
+ void (*cb) (const SSL *ssl, int type, int val));
766
+ void (*SSL_CTX_get_info_callback(SSL_CTX *ctx)) (const SSL *ssl, int type,
767
+ int val);
768
+ void SSL_CTX_set_client_cert_cb(SSL_CTX *ctx,
769
+ int (*client_cert_cb) (SSL *ssl, X509 **x509,
770
+ EVP_PKEY **pkey));
771
+ int (*SSL_CTX_get_client_cert_cb(SSL_CTX *ctx)) (SSL *ssl, X509 **x509,
772
+ EVP_PKEY **pkey);
773
+ # ifndef OPENSSL_NO_ENGINE
774
+ __owur int SSL_CTX_set_client_cert_engine(SSL_CTX *ctx, ENGINE *e);
775
+ # endif
776
+ void SSL_CTX_set_cookie_generate_cb(SSL_CTX *ctx,
777
+ int (*app_gen_cookie_cb) (SSL *ssl,
778
+ unsigned char
779
+ *cookie,
780
+ unsigned int
781
+ *cookie_len));
782
+ void SSL_CTX_set_cookie_verify_cb(SSL_CTX *ctx,
783
+ int (*app_verify_cookie_cb) (SSL *ssl,
784
+ const unsigned
785
+ char *cookie,
786
+ unsigned int
787
+ cookie_len));
788
+
789
+ void SSL_CTX_set_stateless_cookie_generate_cb(
790
+ SSL_CTX *ctx,
791
+ int (*gen_stateless_cookie_cb) (SSL *ssl,
792
+ unsigned char *cookie,
793
+ size_t *cookie_len));
794
+ void SSL_CTX_set_stateless_cookie_verify_cb(
795
+ SSL_CTX *ctx,
796
+ int (*verify_stateless_cookie_cb) (SSL *ssl,
797
+ const unsigned char *cookie,
798
+ size_t cookie_len));
799
+ # ifndef OPENSSL_NO_NEXTPROTONEG
800
+
801
+ typedef int (*SSL_CTX_npn_advertised_cb_func)(SSL *ssl,
802
+ const unsigned char **out,
803
+ unsigned int *outlen,
804
+ void *arg);
805
+ void SSL_CTX_set_next_protos_advertised_cb(SSL_CTX *s,
806
+ SSL_CTX_npn_advertised_cb_func cb,
807
+ void *arg);
808
+ # define SSL_CTX_set_npn_advertised_cb SSL_CTX_set_next_protos_advertised_cb
809
+
810
+ typedef int (*SSL_CTX_npn_select_cb_func)(SSL *s,
811
+ unsigned char **out,
812
+ unsigned char *outlen,
813
+ const unsigned char *in,
814
+ unsigned int inlen,
815
+ void *arg);
816
+ void SSL_CTX_set_next_proto_select_cb(SSL_CTX *s,
817
+ SSL_CTX_npn_select_cb_func cb,
818
+ void *arg);
819
+ # define SSL_CTX_set_npn_select_cb SSL_CTX_set_next_proto_select_cb
820
+
821
+ void SSL_get0_next_proto_negotiated(const SSL *s, const unsigned char **data,
822
+ unsigned *len);
823
+ # define SSL_get0_npn_negotiated SSL_get0_next_proto_negotiated
824
+ # endif
825
+
826
+ __owur int SSL_select_next_proto(unsigned char **out, unsigned char *outlen,
827
+ const unsigned char *in, unsigned int inlen,
828
+ const unsigned char *client,
829
+ unsigned int client_len);
830
+
831
+ # define OPENSSL_NPN_UNSUPPORTED 0
832
+ # define OPENSSL_NPN_NEGOTIATED 1
833
+ # define OPENSSL_NPN_NO_OVERLAP 2
834
+
835
+ __owur int SSL_CTX_set_alpn_protos(SSL_CTX *ctx, const unsigned char *protos,
836
+ unsigned int protos_len);
837
+ __owur int SSL_set_alpn_protos(SSL *ssl, const unsigned char *protos,
838
+ unsigned int protos_len);
839
+ typedef int (*SSL_CTX_alpn_select_cb_func)(SSL *ssl,
840
+ const unsigned char **out,
841
+ unsigned char *outlen,
842
+ const unsigned char *in,
843
+ unsigned int inlen,
844
+ void *arg);
845
+ void SSL_CTX_set_alpn_select_cb(SSL_CTX *ctx,
846
+ SSL_CTX_alpn_select_cb_func cb,
847
+ void *arg);
848
+ void SSL_get0_alpn_selected(const SSL *ssl, const unsigned char **data,
849
+ unsigned int *len);
850
+
851
+ # ifndef OPENSSL_NO_PSK
852
+ /*
853
+ * the maximum length of the buffer given to callbacks containing the
854
+ * resulting identity/psk
855
+ */
856
+ # define PSK_MAX_IDENTITY_LEN 256
857
+ # define PSK_MAX_PSK_LEN 512
858
+ typedef unsigned int (*SSL_psk_client_cb_func)(SSL *ssl,
859
+ const char *hint,
860
+ char *identity,
861
+ unsigned int max_identity_len,
862
+ unsigned char *psk,
863
+ unsigned int max_psk_len);
864
+ void SSL_CTX_set_psk_client_callback(SSL_CTX *ctx, SSL_psk_client_cb_func cb);
865
+ void SSL_set_psk_client_callback(SSL *ssl, SSL_psk_client_cb_func cb);
866
+
867
+ typedef unsigned int (*SSL_psk_server_cb_func)(SSL *ssl,
868
+ const char *identity,
869
+ unsigned char *psk,
870
+ unsigned int max_psk_len);
871
+ void SSL_CTX_set_psk_server_callback(SSL_CTX *ctx, SSL_psk_server_cb_func cb);
872
+ void SSL_set_psk_server_callback(SSL *ssl, SSL_psk_server_cb_func cb);
873
+
874
+ __owur int SSL_CTX_use_psk_identity_hint(SSL_CTX *ctx, const char *identity_hint);
875
+ __owur int SSL_use_psk_identity_hint(SSL *s, const char *identity_hint);
876
+ const char *SSL_get_psk_identity_hint(const SSL *s);
877
+ const char *SSL_get_psk_identity(const SSL *s);
878
+ # endif
879
+
880
+ typedef int (*SSL_psk_find_session_cb_func)(SSL *ssl,
881
+ const unsigned char *identity,
882
+ size_t identity_len,
883
+ SSL_SESSION **sess);
884
+ typedef int (*SSL_psk_use_session_cb_func)(SSL *ssl, const EVP_MD *md,
885
+ const unsigned char **id,
886
+ size_t *idlen,
887
+ SSL_SESSION **sess);
888
+
889
+ void SSL_set_psk_find_session_callback(SSL *s, SSL_psk_find_session_cb_func cb);
890
+ void SSL_CTX_set_psk_find_session_callback(SSL_CTX *ctx,
891
+ SSL_psk_find_session_cb_func cb);
892
+ void SSL_set_psk_use_session_callback(SSL *s, SSL_psk_use_session_cb_func cb);
893
+ void SSL_CTX_set_psk_use_session_callback(SSL_CTX *ctx,
894
+ SSL_psk_use_session_cb_func cb);
895
+
896
+ /* Register callbacks to handle custom TLS Extensions for client or server. */
897
+
898
+ __owur int SSL_CTX_has_client_custom_ext(const SSL_CTX *ctx,
899
+ unsigned int ext_type);
900
+
901
+ __owur int SSL_CTX_add_client_custom_ext(SSL_CTX *ctx,
902
+ unsigned int ext_type,
903
+ custom_ext_add_cb add_cb,
904
+ custom_ext_free_cb free_cb,
905
+ void *add_arg,
906
+ custom_ext_parse_cb parse_cb,
907
+ void *parse_arg);
908
+
909
+ __owur int SSL_CTX_add_server_custom_ext(SSL_CTX *ctx,
910
+ unsigned int ext_type,
911
+ custom_ext_add_cb add_cb,
912
+ custom_ext_free_cb free_cb,
913
+ void *add_arg,
914
+ custom_ext_parse_cb parse_cb,
915
+ void *parse_arg);
916
+
917
+ __owur int SSL_CTX_add_custom_ext(SSL_CTX *ctx, unsigned int ext_type,
918
+ unsigned int context,
919
+ SSL_custom_ext_add_cb_ex add_cb,
920
+ SSL_custom_ext_free_cb_ex free_cb,
921
+ void *add_arg,
922
+ SSL_custom_ext_parse_cb_ex parse_cb,
923
+ void *parse_arg);
924
+
925
+ __owur int SSL_extension_supported(unsigned int ext_type);
926
+
927
+ # define SSL_NOTHING 1
928
+ # define SSL_WRITING 2
929
+ # define SSL_READING 3
930
+ # define SSL_X509_LOOKUP 4
931
+ # define SSL_ASYNC_PAUSED 5
932
+ # define SSL_ASYNC_NO_JOBS 6
933
+ # define SSL_CLIENT_HELLO_CB 7
934
+ # define SSL_RETRY_VERIFY 8
935
+
936
+ /* These will only be used when doing non-blocking IO */
937
+ # define SSL_want_nothing(s) (SSL_want(s) == SSL_NOTHING)
938
+ # define SSL_want_read(s) (SSL_want(s) == SSL_READING)
939
+ # define SSL_want_write(s) (SSL_want(s) == SSL_WRITING)
940
+ # define SSL_want_x509_lookup(s) (SSL_want(s) == SSL_X509_LOOKUP)
941
+ # define SSL_want_retry_verify(s) (SSL_want(s) == SSL_RETRY_VERIFY)
942
+ # define SSL_want_async(s) (SSL_want(s) == SSL_ASYNC_PAUSED)
943
+ # define SSL_want_async_job(s) (SSL_want(s) == SSL_ASYNC_NO_JOBS)
944
+ # define SSL_want_client_hello_cb(s) (SSL_want(s) == SSL_CLIENT_HELLO_CB)
945
+
946
+ # define SSL_MAC_FLAG_READ_MAC_STREAM 1
947
+ # define SSL_MAC_FLAG_WRITE_MAC_STREAM 2
948
+ # define SSL_MAC_FLAG_READ_MAC_TLSTREE 4
949
+ # define SSL_MAC_FLAG_WRITE_MAC_TLSTREE 8
950
+
951
+ /*
952
+ * A callback for logging out TLS key material. This callback should log out
953
+ * |line| followed by a newline.
954
+ */
955
+ typedef void (*SSL_CTX_keylog_cb_func)(const SSL *ssl, const char *line);
956
+
957
+ /*
958
+ * SSL_CTX_set_keylog_callback configures a callback to log key material. This
959
+ * is intended for debugging use with tools like Wireshark. The cb function
960
+ * should log line followed by a newline.
961
+ */
962
+ void SSL_CTX_set_keylog_callback(SSL_CTX *ctx, SSL_CTX_keylog_cb_func cb);
963
+
964
+ /*
965
+ * SSL_CTX_get_keylog_callback returns the callback configured by
966
+ * SSL_CTX_set_keylog_callback.
967
+ */
968
+ SSL_CTX_keylog_cb_func SSL_CTX_get_keylog_callback(const SSL_CTX *ctx);
969
+
970
+ int SSL_CTX_set_max_early_data(SSL_CTX *ctx, uint32_t max_early_data);
971
+ uint32_t SSL_CTX_get_max_early_data(const SSL_CTX *ctx);
972
+ int SSL_set_max_early_data(SSL *s, uint32_t max_early_data);
973
+ uint32_t SSL_get_max_early_data(const SSL *s);
974
+ int SSL_CTX_set_recv_max_early_data(SSL_CTX *ctx, uint32_t recv_max_early_data);
975
+ uint32_t SSL_CTX_get_recv_max_early_data(const SSL_CTX *ctx);
976
+ int SSL_set_recv_max_early_data(SSL *s, uint32_t recv_max_early_data);
977
+ uint32_t SSL_get_recv_max_early_data(const SSL *s);
978
+
979
+ #ifdef __cplusplus
980
+ }
981
+ #endif
982
+
983
+ # include <openssl/ssl2.h>
984
+ # include <openssl/ssl3.h>
985
+ # include <openssl/tls1.h> /* This is mostly sslv3 with a few tweaks */
986
+ # include <openssl/dtls1.h> /* Datagram TLS */
987
+ # include <openssl/srtp.h> /* Support for the use_srtp extension */
988
+ # include <openssl/quic.h>
989
+
990
+ #ifdef __cplusplus
991
+ extern "C" {
992
+ #endif
993
+
994
+ /*
995
+ * These need to be after the above set of includes due to a compiler bug
996
+ * in VisualStudio 2015
997
+ */
998
+ SKM_DEFINE_STACK_OF_INTERNAL(SSL_CIPHER, const SSL_CIPHER, SSL_CIPHER)
999
+ #define sk_SSL_CIPHER_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_CIPHER_sk_type(sk))
1000
+ #define sk_SSL_CIPHER_value(sk, idx) ((const SSL_CIPHER *)OPENSSL_sk_value(ossl_check_const_SSL_CIPHER_sk_type(sk), (idx)))
1001
+ #define sk_SSL_CIPHER_new(cmp) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_new(ossl_check_SSL_CIPHER_compfunc_type(cmp)))
1002
+ #define sk_SSL_CIPHER_new_null() ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_new_null())
1003
+ #define sk_SSL_CIPHER_new_reserve(cmp, n) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_new_reserve(ossl_check_SSL_CIPHER_compfunc_type(cmp), (n)))
1004
+ #define sk_SSL_CIPHER_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_CIPHER_sk_type(sk), (n))
1005
+ #define sk_SSL_CIPHER_free(sk) OPENSSL_sk_free(ossl_check_SSL_CIPHER_sk_type(sk))
1006
+ #define sk_SSL_CIPHER_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_CIPHER_sk_type(sk))
1007
+ #define sk_SSL_CIPHER_delete(sk, i) ((const SSL_CIPHER *)OPENSSL_sk_delete(ossl_check_SSL_CIPHER_sk_type(sk), (i)))
1008
+ #define sk_SSL_CIPHER_delete_ptr(sk, ptr) ((const SSL_CIPHER *)OPENSSL_sk_delete_ptr(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr)))
1009
+ #define sk_SSL_CIPHER_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr))
1010
+ #define sk_SSL_CIPHER_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr))
1011
+ #define sk_SSL_CIPHER_pop(sk) ((const SSL_CIPHER *)OPENSSL_sk_pop(ossl_check_SSL_CIPHER_sk_type(sk)))
1012
+ #define sk_SSL_CIPHER_shift(sk) ((const SSL_CIPHER *)OPENSSL_sk_shift(ossl_check_SSL_CIPHER_sk_type(sk)))
1013
+ #define sk_SSL_CIPHER_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_CIPHER_sk_type(sk),ossl_check_SSL_CIPHER_freefunc_type(freefunc))
1014
+ #define sk_SSL_CIPHER_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr), (idx))
1015
+ #define sk_SSL_CIPHER_set(sk, idx, ptr) ((const SSL_CIPHER *)OPENSSL_sk_set(ossl_check_SSL_CIPHER_sk_type(sk), (idx), ossl_check_SSL_CIPHER_type(ptr)))
1016
+ #define sk_SSL_CIPHER_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr))
1017
+ #define sk_SSL_CIPHER_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr))
1018
+ #define sk_SSL_CIPHER_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr), pnum)
1019
+ #define sk_SSL_CIPHER_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_CIPHER_sk_type(sk))
1020
+ #define sk_SSL_CIPHER_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_CIPHER_sk_type(sk))
1021
+ #define sk_SSL_CIPHER_dup(sk) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_dup(ossl_check_const_SSL_CIPHER_sk_type(sk)))
1022
+ #define sk_SSL_CIPHER_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_copyfunc_type(copyfunc), ossl_check_SSL_CIPHER_freefunc_type(freefunc)))
1023
+ #define sk_SSL_CIPHER_set_cmp_func(sk, cmp) ((sk_SSL_CIPHER_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_compfunc_type(cmp)))
1024
+
1025
+
1026
+ /* compatibility */
1027
+ # define SSL_set_app_data(s,arg) (SSL_set_ex_data(s,0,(char *)(arg)))
1028
+ # define SSL_get_app_data(s) (SSL_get_ex_data(s,0))
1029
+ # define SSL_SESSION_set_app_data(s,a) (SSL_SESSION_set_ex_data(s,0, \
1030
+ (char *)(a)))
1031
+ # define SSL_SESSION_get_app_data(s) (SSL_SESSION_get_ex_data(s,0))
1032
+ # define SSL_CTX_get_app_data(ctx) (SSL_CTX_get_ex_data(ctx,0))
1033
+ # define SSL_CTX_set_app_data(ctx,arg) (SSL_CTX_set_ex_data(ctx,0, \
1034
+ (char *)(arg)))
1035
+ # ifndef OPENSSL_NO_DEPRECATED_1_1_0
1036
+ OSSL_DEPRECATEDIN_1_1_0 void SSL_set_debug(SSL *s, int debug);
1037
+ # endif
1038
+
1039
+ /* TLSv1.3 KeyUpdate message types */
1040
+ /* -1 used so that this is an invalid value for the on-the-wire protocol */
1041
+ #define SSL_KEY_UPDATE_NONE -1
1042
+ /* Values as defined for the on-the-wire protocol */
1043
+ #define SSL_KEY_UPDATE_NOT_REQUESTED 0
1044
+ #define SSL_KEY_UPDATE_REQUESTED 1
1045
+
1046
+ /*
1047
+ * The valid handshake states (one for each type message sent and one for each
1048
+ * type of message received). There are also two "special" states:
1049
+ * TLS = TLS or DTLS state
1050
+ * DTLS = DTLS specific state
1051
+ * CR/SR = Client Read/Server Read
1052
+ * CW/SW = Client Write/Server Write
1053
+ *
1054
+ * The "special" states are:
1055
+ * TLS_ST_BEFORE = No handshake has been initiated yet
1056
+ * TLS_ST_OK = A handshake has been successfully completed
1057
+ */
1058
+ typedef enum {
1059
+ TLS_ST_BEFORE,
1060
+ TLS_ST_OK,
1061
+ DTLS_ST_CR_HELLO_VERIFY_REQUEST,
1062
+ TLS_ST_CR_SRVR_HELLO,
1063
+ TLS_ST_CR_CERT,
1064
+ TLS_ST_CR_COMP_CERT,
1065
+ TLS_ST_CR_CERT_STATUS,
1066
+ TLS_ST_CR_KEY_EXCH,
1067
+ TLS_ST_CR_CERT_REQ,
1068
+ TLS_ST_CR_SRVR_DONE,
1069
+ TLS_ST_CR_SESSION_TICKET,
1070
+ TLS_ST_CR_CHANGE,
1071
+ TLS_ST_CR_FINISHED,
1072
+ TLS_ST_CW_CLNT_HELLO,
1073
+ TLS_ST_CW_CERT,
1074
+ TLS_ST_CW_COMP_CERT,
1075
+ TLS_ST_CW_KEY_EXCH,
1076
+ TLS_ST_CW_CERT_VRFY,
1077
+ TLS_ST_CW_CHANGE,
1078
+ TLS_ST_CW_NEXT_PROTO,
1079
+ TLS_ST_CW_FINISHED,
1080
+ TLS_ST_SW_HELLO_REQ,
1081
+ TLS_ST_SR_CLNT_HELLO,
1082
+ DTLS_ST_SW_HELLO_VERIFY_REQUEST,
1083
+ TLS_ST_SW_SRVR_HELLO,
1084
+ TLS_ST_SW_CERT,
1085
+ TLS_ST_SW_COMP_CERT,
1086
+ TLS_ST_SW_KEY_EXCH,
1087
+ TLS_ST_SW_CERT_REQ,
1088
+ TLS_ST_SW_SRVR_DONE,
1089
+ TLS_ST_SR_CERT,
1090
+ TLS_ST_SR_COMP_CERT,
1091
+ TLS_ST_SR_KEY_EXCH,
1092
+ TLS_ST_SR_CERT_VRFY,
1093
+ TLS_ST_SR_NEXT_PROTO,
1094
+ TLS_ST_SR_CHANGE,
1095
+ TLS_ST_SR_FINISHED,
1096
+ TLS_ST_SW_SESSION_TICKET,
1097
+ TLS_ST_SW_CERT_STATUS,
1098
+ TLS_ST_SW_CHANGE,
1099
+ TLS_ST_SW_FINISHED,
1100
+ TLS_ST_SW_ENCRYPTED_EXTENSIONS,
1101
+ TLS_ST_CR_ENCRYPTED_EXTENSIONS,
1102
+ TLS_ST_CR_CERT_VRFY,
1103
+ TLS_ST_SW_CERT_VRFY,
1104
+ TLS_ST_CR_HELLO_REQ,
1105
+ TLS_ST_SW_KEY_UPDATE,
1106
+ TLS_ST_CW_KEY_UPDATE,
1107
+ TLS_ST_SR_KEY_UPDATE,
1108
+ TLS_ST_CR_KEY_UPDATE,
1109
+ TLS_ST_EARLY_DATA,
1110
+ TLS_ST_PENDING_EARLY_DATA_END,
1111
+ TLS_ST_CW_END_OF_EARLY_DATA,
1112
+ TLS_ST_SR_END_OF_EARLY_DATA
1113
+ } OSSL_HANDSHAKE_STATE;
1114
+
1115
+ /*
1116
+ * Most of the following state values are no longer used and are defined to be
1117
+ * the closest equivalent value in the current state machine code. Not all
1118
+ * defines have an equivalent and are set to a dummy value (-1). SSL_ST_CONNECT
1119
+ * and SSL_ST_ACCEPT are still in use in the definition of SSL_CB_ACCEPT_LOOP,
1120
+ * SSL_CB_ACCEPT_EXIT, SSL_CB_CONNECT_LOOP and SSL_CB_CONNECT_EXIT.
1121
+ */
1122
+
1123
+ # define SSL_ST_CONNECT 0x1000
1124
+ # define SSL_ST_ACCEPT 0x2000
1125
+
1126
+ # define SSL_ST_MASK 0x0FFF
1127
+
1128
+ # define SSL_CB_LOOP 0x01
1129
+ # define SSL_CB_EXIT 0x02
1130
+ # define SSL_CB_READ 0x04
1131
+ # define SSL_CB_WRITE 0x08
1132
+ # define SSL_CB_ALERT 0x4000/* used in callback */
1133
+ # define SSL_CB_READ_ALERT (SSL_CB_ALERT|SSL_CB_READ)
1134
+ # define SSL_CB_WRITE_ALERT (SSL_CB_ALERT|SSL_CB_WRITE)
1135
+ # define SSL_CB_ACCEPT_LOOP (SSL_ST_ACCEPT|SSL_CB_LOOP)
1136
+ # define SSL_CB_ACCEPT_EXIT (SSL_ST_ACCEPT|SSL_CB_EXIT)
1137
+ # define SSL_CB_CONNECT_LOOP (SSL_ST_CONNECT|SSL_CB_LOOP)
1138
+ # define SSL_CB_CONNECT_EXIT (SSL_ST_CONNECT|SSL_CB_EXIT)
1139
+ # define SSL_CB_HANDSHAKE_START 0x10
1140
+ # define SSL_CB_HANDSHAKE_DONE 0x20
1141
+
1142
+ /* Is the SSL_connection established? */
1143
+ # define SSL_in_connect_init(a) (SSL_in_init(a) && !SSL_is_server(a))
1144
+ # define SSL_in_accept_init(a) (SSL_in_init(a) && SSL_is_server(a))
1145
+ int SSL_in_init(const SSL *s);
1146
+ int SSL_in_before(const SSL *s);
1147
+ int SSL_is_init_finished(const SSL *s);
1148
+
1149
+ /*
1150
+ * The following 3 states are kept in ssl->rlayer.rstate when reads fail, you
1151
+ * should not need these
1152
+ */
1153
+ # define SSL_ST_READ_HEADER 0xF0
1154
+ # define SSL_ST_READ_BODY 0xF1
1155
+ # define SSL_ST_READ_DONE 0xF2
1156
+
1157
+ /*-
1158
+ * Obtain latest Finished message
1159
+ * -- that we sent (SSL_get_finished)
1160
+ * -- that we expected from peer (SSL_get_peer_finished).
1161
+ * Returns length (0 == no Finished so far), copies up to 'count' bytes.
1162
+ */
1163
+ size_t SSL_get_finished(const SSL *s, void *buf, size_t count);
1164
+ size_t SSL_get_peer_finished(const SSL *s, void *buf, size_t count);
1165
+
1166
+ /*
1167
+ * use either SSL_VERIFY_NONE or SSL_VERIFY_PEER, the last 3 options are
1168
+ * 'ored' with SSL_VERIFY_PEER if they are desired
1169
+ */
1170
+ # define SSL_VERIFY_NONE 0x00
1171
+ # define SSL_VERIFY_PEER 0x01
1172
+ # define SSL_VERIFY_FAIL_IF_NO_PEER_CERT 0x02
1173
+ # define SSL_VERIFY_CLIENT_ONCE 0x04
1174
+ # define SSL_VERIFY_POST_HANDSHAKE 0x08
1175
+
1176
+ # ifndef OPENSSL_NO_DEPRECATED_1_1_0
1177
+ # define OpenSSL_add_ssl_algorithms() SSL_library_init()
1178
+ # define SSLeay_add_ssl_algorithms() SSL_library_init()
1179
+ # endif
1180
+
1181
+ /* More backward compatibility */
1182
+ # define SSL_get_cipher(s) \
1183
+ SSL_CIPHER_get_name(SSL_get_current_cipher(s))
1184
+ # define SSL_get_cipher_bits(s,np) \
1185
+ SSL_CIPHER_get_bits(SSL_get_current_cipher(s),np)
1186
+ # define SSL_get_cipher_version(s) \
1187
+ SSL_CIPHER_get_version(SSL_get_current_cipher(s))
1188
+ # define SSL_get_cipher_name(s) \
1189
+ SSL_CIPHER_get_name(SSL_get_current_cipher(s))
1190
+ # define SSL_get_time(a) SSL_SESSION_get_time(a)
1191
+ # define SSL_set_time(a,b) SSL_SESSION_set_time((a),(b))
1192
+ # define SSL_get_timeout(a) SSL_SESSION_get_timeout(a)
1193
+ # define SSL_set_timeout(a,b) SSL_SESSION_set_timeout((a),(b))
1194
+
1195
+ # define d2i_SSL_SESSION_bio(bp,s_id) ASN1_d2i_bio_of(SSL_SESSION,SSL_SESSION_new,d2i_SSL_SESSION,bp,s_id)
1196
+ # define i2d_SSL_SESSION_bio(bp,s_id) ASN1_i2d_bio_of(SSL_SESSION,i2d_SSL_SESSION,bp,s_id)
1197
+
1198
+ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION)
1199
+ # define SSL_AD_REASON_OFFSET 1000/* offset to get SSL_R_... value
1200
+ * from SSL_AD_... */
1201
+ /* These alert types are for SSLv3 and TLSv1 */
1202
+ # define SSL_AD_CLOSE_NOTIFY SSL3_AD_CLOSE_NOTIFY
1203
+ /* fatal */
1204
+ # define SSL_AD_UNEXPECTED_MESSAGE SSL3_AD_UNEXPECTED_MESSAGE
1205
+ /* fatal */
1206
+ # define SSL_AD_BAD_RECORD_MAC SSL3_AD_BAD_RECORD_MAC
1207
+ # define SSL_AD_DECRYPTION_FAILED TLS1_AD_DECRYPTION_FAILED
1208
+ # define SSL_AD_RECORD_OVERFLOW TLS1_AD_RECORD_OVERFLOW
1209
+ /* fatal */
1210
+ # define SSL_AD_DECOMPRESSION_FAILURE SSL3_AD_DECOMPRESSION_FAILURE
1211
+ /* fatal */
1212
+ # define SSL_AD_HANDSHAKE_FAILURE SSL3_AD_HANDSHAKE_FAILURE
1213
+ /* Not for TLS */
1214
+ # define SSL_AD_NO_CERTIFICATE SSL3_AD_NO_CERTIFICATE
1215
+ # define SSL_AD_BAD_CERTIFICATE SSL3_AD_BAD_CERTIFICATE
1216
+ # define SSL_AD_UNSUPPORTED_CERTIFICATE SSL3_AD_UNSUPPORTED_CERTIFICATE
1217
+ # define SSL_AD_CERTIFICATE_REVOKED SSL3_AD_CERTIFICATE_REVOKED
1218
+ # define SSL_AD_CERTIFICATE_EXPIRED SSL3_AD_CERTIFICATE_EXPIRED
1219
+ # define SSL_AD_CERTIFICATE_UNKNOWN SSL3_AD_CERTIFICATE_UNKNOWN
1220
+ /* fatal */
1221
+ # define SSL_AD_ILLEGAL_PARAMETER SSL3_AD_ILLEGAL_PARAMETER
1222
+ /* fatal */
1223
+ # define SSL_AD_UNKNOWN_CA TLS1_AD_UNKNOWN_CA
1224
+ /* fatal */
1225
+ # define SSL_AD_ACCESS_DENIED TLS1_AD_ACCESS_DENIED
1226
+ /* fatal */
1227
+ # define SSL_AD_DECODE_ERROR TLS1_AD_DECODE_ERROR
1228
+ # define SSL_AD_DECRYPT_ERROR TLS1_AD_DECRYPT_ERROR
1229
+ /* fatal */
1230
+ # define SSL_AD_EXPORT_RESTRICTION TLS1_AD_EXPORT_RESTRICTION
1231
+ /* fatal */
1232
+ # define SSL_AD_PROTOCOL_VERSION TLS1_AD_PROTOCOL_VERSION
1233
+ /* fatal */
1234
+ # define SSL_AD_INSUFFICIENT_SECURITY TLS1_AD_INSUFFICIENT_SECURITY
1235
+ /* fatal */
1236
+ # define SSL_AD_INTERNAL_ERROR TLS1_AD_INTERNAL_ERROR
1237
+ # define SSL_AD_USER_CANCELLED TLS1_AD_USER_CANCELLED
1238
+ # define SSL_AD_NO_RENEGOTIATION TLS1_AD_NO_RENEGOTIATION
1239
+ # define SSL_AD_MISSING_EXTENSION TLS13_AD_MISSING_EXTENSION
1240
+ # define SSL_AD_CERTIFICATE_REQUIRED TLS13_AD_CERTIFICATE_REQUIRED
1241
+ # define SSL_AD_UNSUPPORTED_EXTENSION TLS1_AD_UNSUPPORTED_EXTENSION
1242
+ # define SSL_AD_CERTIFICATE_UNOBTAINABLE TLS1_AD_CERTIFICATE_UNOBTAINABLE
1243
+ # define SSL_AD_UNRECOGNIZED_NAME TLS1_AD_UNRECOGNIZED_NAME
1244
+ # define SSL_AD_BAD_CERTIFICATE_STATUS_RESPONSE TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE
1245
+ # define SSL_AD_BAD_CERTIFICATE_HASH_VALUE TLS1_AD_BAD_CERTIFICATE_HASH_VALUE
1246
+ /* fatal */
1247
+ # define SSL_AD_UNKNOWN_PSK_IDENTITY TLS1_AD_UNKNOWN_PSK_IDENTITY
1248
+ /* fatal */
1249
+ # define SSL_AD_INAPPROPRIATE_FALLBACK TLS1_AD_INAPPROPRIATE_FALLBACK
1250
+ # define SSL_AD_NO_APPLICATION_PROTOCOL TLS1_AD_NO_APPLICATION_PROTOCOL
1251
+ # define SSL_ERROR_NONE 0
1252
+ # define SSL_ERROR_SSL 1
1253
+ # define SSL_ERROR_WANT_READ 2
1254
+ # define SSL_ERROR_WANT_WRITE 3
1255
+ # define SSL_ERROR_WANT_X509_LOOKUP 4
1256
+ # define SSL_ERROR_SYSCALL 5/* look at error stack/return
1257
+ * value/errno */
1258
+ # define SSL_ERROR_ZERO_RETURN 6
1259
+ # define SSL_ERROR_WANT_CONNECT 7
1260
+ # define SSL_ERROR_WANT_ACCEPT 8
1261
+ # define SSL_ERROR_WANT_ASYNC 9
1262
+ # define SSL_ERROR_WANT_ASYNC_JOB 10
1263
+ # define SSL_ERROR_WANT_CLIENT_HELLO_CB 11
1264
+ # define SSL_ERROR_WANT_RETRY_VERIFY 12
1265
+
1266
+ # ifndef OPENSSL_NO_DEPRECATED_3_0
1267
+ # define SSL_CTRL_SET_TMP_DH 3
1268
+ # define SSL_CTRL_SET_TMP_ECDH 4
1269
+ # define SSL_CTRL_SET_TMP_DH_CB 6
1270
+ # endif
1271
+
1272
+ # define SSL_CTRL_GET_CLIENT_CERT_REQUEST 9
1273
+ # define SSL_CTRL_GET_NUM_RENEGOTIATIONS 10
1274
+ # define SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS 11
1275
+ # define SSL_CTRL_GET_TOTAL_RENEGOTIATIONS 12
1276
+ # define SSL_CTRL_GET_FLAGS 13
1277
+ # define SSL_CTRL_EXTRA_CHAIN_CERT 14
1278
+ # define SSL_CTRL_SET_MSG_CALLBACK 15
1279
+ # define SSL_CTRL_SET_MSG_CALLBACK_ARG 16
1280
+ /* only applies to datagram connections */
1281
+ # define SSL_CTRL_SET_MTU 17
1282
+ /* Stats */
1283
+ # define SSL_CTRL_SESS_NUMBER 20
1284
+ # define SSL_CTRL_SESS_CONNECT 21
1285
+ # define SSL_CTRL_SESS_CONNECT_GOOD 22
1286
+ # define SSL_CTRL_SESS_CONNECT_RENEGOTIATE 23
1287
+ # define SSL_CTRL_SESS_ACCEPT 24
1288
+ # define SSL_CTRL_SESS_ACCEPT_GOOD 25
1289
+ # define SSL_CTRL_SESS_ACCEPT_RENEGOTIATE 26
1290
+ # define SSL_CTRL_SESS_HIT 27
1291
+ # define SSL_CTRL_SESS_CB_HIT 28
1292
+ # define SSL_CTRL_SESS_MISSES 29
1293
+ # define SSL_CTRL_SESS_TIMEOUTS 30
1294
+ # define SSL_CTRL_SESS_CACHE_FULL 31
1295
+ # define SSL_CTRL_MODE 33
1296
+ # define SSL_CTRL_GET_READ_AHEAD 40
1297
+ # define SSL_CTRL_SET_READ_AHEAD 41
1298
+ # define SSL_CTRL_SET_SESS_CACHE_SIZE 42
1299
+ # define SSL_CTRL_GET_SESS_CACHE_SIZE 43
1300
+ # define SSL_CTRL_SET_SESS_CACHE_MODE 44
1301
+ # define SSL_CTRL_GET_SESS_CACHE_MODE 45
1302
+ # define SSL_CTRL_GET_MAX_CERT_LIST 50
1303
+ # define SSL_CTRL_SET_MAX_CERT_LIST 51
1304
+ # define SSL_CTRL_SET_MAX_SEND_FRAGMENT 52
1305
+ /* see tls1.h for macros based on these */
1306
+ # define SSL_CTRL_SET_TLSEXT_SERVERNAME_CB 53
1307
+ # define SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG 54
1308
+ # define SSL_CTRL_SET_TLSEXT_HOSTNAME 55
1309
+ # define SSL_CTRL_SET_TLSEXT_DEBUG_CB 56
1310
+ # define SSL_CTRL_SET_TLSEXT_DEBUG_ARG 57
1311
+ # define SSL_CTRL_GET_TLSEXT_TICKET_KEYS 58
1312
+ # define SSL_CTRL_SET_TLSEXT_TICKET_KEYS 59
1313
+ /*# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT 60 */
1314
+ /*# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB 61 */
1315
+ /*# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB_ARG 62 */
1316
+ # define SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB 63
1317
+ # define SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG 64
1318
+ # define SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE 65
1319
+ # define SSL_CTRL_GET_TLSEXT_STATUS_REQ_EXTS 66
1320
+ # define SSL_CTRL_SET_TLSEXT_STATUS_REQ_EXTS 67
1321
+ # define SSL_CTRL_GET_TLSEXT_STATUS_REQ_IDS 68
1322
+ # define SSL_CTRL_SET_TLSEXT_STATUS_REQ_IDS 69
1323
+ # define SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP 70
1324
+ # define SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP 71
1325
+ # ifndef OPENSSL_NO_DEPRECATED_3_0
1326
+ # define SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB 72
1327
+ # endif
1328
+ # define SSL_CTRL_SET_TLS_EXT_SRP_USERNAME_CB 75
1329
+ # define SSL_CTRL_SET_SRP_VERIFY_PARAM_CB 76
1330
+ # define SSL_CTRL_SET_SRP_GIVE_CLIENT_PWD_CB 77
1331
+ # define SSL_CTRL_SET_SRP_ARG 78
1332
+ # define SSL_CTRL_SET_TLS_EXT_SRP_USERNAME 79
1333
+ # define SSL_CTRL_SET_TLS_EXT_SRP_STRENGTH 80
1334
+ # define SSL_CTRL_SET_TLS_EXT_SRP_PASSWORD 81
1335
+ # define DTLS_CTRL_GET_TIMEOUT 73
1336
+ # define DTLS_CTRL_HANDLE_TIMEOUT 74
1337
+ # define SSL_CTRL_GET_RI_SUPPORT 76
1338
+ # define SSL_CTRL_CLEAR_MODE 78
1339
+ # define SSL_CTRL_SET_NOT_RESUMABLE_SESS_CB 79
1340
+ # define SSL_CTRL_GET_EXTRA_CHAIN_CERTS 82
1341
+ # define SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTS 83
1342
+ # define SSL_CTRL_CHAIN 88
1343
+ # define SSL_CTRL_CHAIN_CERT 89
1344
+ # define SSL_CTRL_GET_GROUPS 90
1345
+ # define SSL_CTRL_SET_GROUPS 91
1346
+ # define SSL_CTRL_SET_GROUPS_LIST 92
1347
+ # define SSL_CTRL_GET_SHARED_GROUP 93
1348
+ # define SSL_CTRL_SET_SIGALGS 97
1349
+ # define SSL_CTRL_SET_SIGALGS_LIST 98
1350
+ # define SSL_CTRL_CERT_FLAGS 99
1351
+ # define SSL_CTRL_CLEAR_CERT_FLAGS 100
1352
+ # define SSL_CTRL_SET_CLIENT_SIGALGS 101
1353
+ # define SSL_CTRL_SET_CLIENT_SIGALGS_LIST 102
1354
+ # define SSL_CTRL_GET_CLIENT_CERT_TYPES 103
1355
+ # define SSL_CTRL_SET_CLIENT_CERT_TYPES 104
1356
+ # define SSL_CTRL_BUILD_CERT_CHAIN 105
1357
+ # define SSL_CTRL_SET_VERIFY_CERT_STORE 106
1358
+ # define SSL_CTRL_SET_CHAIN_CERT_STORE 107
1359
+ # define SSL_CTRL_GET_PEER_SIGNATURE_NID 108
1360
+ # define SSL_CTRL_GET_PEER_TMP_KEY 109
1361
+ # define SSL_CTRL_GET_RAW_CIPHERLIST 110
1362
+ # define SSL_CTRL_GET_EC_POINT_FORMATS 111
1363
+ # define SSL_CTRL_GET_CHAIN_CERTS 115
1364
+ # define SSL_CTRL_SELECT_CURRENT_CERT 116
1365
+ # define SSL_CTRL_SET_CURRENT_CERT 117
1366
+ # define SSL_CTRL_SET_DH_AUTO 118
1367
+ # define DTLS_CTRL_SET_LINK_MTU 120
1368
+ # define DTLS_CTRL_GET_LINK_MIN_MTU 121
1369
+ # define SSL_CTRL_GET_EXTMS_SUPPORT 122
1370
+ # define SSL_CTRL_SET_MIN_PROTO_VERSION 123
1371
+ # define SSL_CTRL_SET_MAX_PROTO_VERSION 124
1372
+ # define SSL_CTRL_SET_SPLIT_SEND_FRAGMENT 125
1373
+ # define SSL_CTRL_SET_MAX_PIPELINES 126
1374
+ # define SSL_CTRL_GET_TLSEXT_STATUS_REQ_TYPE 127
1375
+ # define SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB 128
1376
+ # define SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB_ARG 129
1377
+ # define SSL_CTRL_GET_MIN_PROTO_VERSION 130
1378
+ # define SSL_CTRL_GET_MAX_PROTO_VERSION 131
1379
+ # define SSL_CTRL_GET_SIGNATURE_NID 132
1380
+ # define SSL_CTRL_GET_TMP_KEY 133
1381
+ # define SSL_CTRL_GET_NEGOTIATED_GROUP 134
1382
+ # define SSL_CTRL_GET_IANA_GROUPS 135
1383
+ # define SSL_CTRL_SET_RETRY_VERIFY 136
1384
+ # define SSL_CTRL_GET_VERIFY_CERT_STORE 137
1385
+ # define SSL_CTRL_GET_CHAIN_CERT_STORE 138
1386
+ # define SSL_CERT_SET_FIRST 1
1387
+ # define SSL_CERT_SET_NEXT 2
1388
+ # define SSL_CERT_SET_SERVER 3
1389
+ # define DTLSv1_get_timeout(ssl, arg) \
1390
+ SSL_ctrl(ssl,DTLS_CTRL_GET_TIMEOUT,0, (void *)(arg))
1391
+ # define DTLSv1_handle_timeout(ssl) \
1392
+ SSL_ctrl(ssl,DTLS_CTRL_HANDLE_TIMEOUT,0, NULL)
1393
+ # define SSL_num_renegotiations(ssl) \
1394
+ SSL_ctrl((ssl),SSL_CTRL_GET_NUM_RENEGOTIATIONS,0,NULL)
1395
+ # define SSL_clear_num_renegotiations(ssl) \
1396
+ SSL_ctrl((ssl),SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS,0,NULL)
1397
+ # define SSL_total_renegotiations(ssl) \
1398
+ SSL_ctrl((ssl),SSL_CTRL_GET_TOTAL_RENEGOTIATIONS,0,NULL)
1399
+ # ifndef OPENSSL_NO_DEPRECATED_3_0
1400
+ # define SSL_CTX_set_tmp_dh(ctx,dh) \
1401
+ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_DH,0,(char *)(dh))
1402
+ # endif
1403
+ # define SSL_CTX_set_dh_auto(ctx, onoff) \
1404
+ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_DH_AUTO,onoff,NULL)
1405
+ # define SSL_set_dh_auto(s, onoff) \
1406
+ SSL_ctrl(s,SSL_CTRL_SET_DH_AUTO,onoff,NULL)
1407
+ # ifndef OPENSSL_NO_DEPRECATED_3_0
1408
+ # define SSL_set_tmp_dh(ssl,dh) \
1409
+ SSL_ctrl(ssl,SSL_CTRL_SET_TMP_DH,0,(char *)(dh))
1410
+ # endif
1411
+ # ifndef OPENSSL_NO_DEPRECATED_3_0
1412
+ # define SSL_CTX_set_tmp_ecdh(ctx,ecdh) \
1413
+ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_ECDH,0,(char *)(ecdh))
1414
+ # define SSL_set_tmp_ecdh(ssl,ecdh) \
1415
+ SSL_ctrl(ssl,SSL_CTRL_SET_TMP_ECDH,0,(char *)(ecdh))
1416
+ # endif
1417
+ # define SSL_CTX_add_extra_chain_cert(ctx,x509) \
1418
+ SSL_CTX_ctrl(ctx,SSL_CTRL_EXTRA_CHAIN_CERT,0,(char *)(x509))
1419
+ # define SSL_CTX_get_extra_chain_certs(ctx,px509) \
1420
+ SSL_CTX_ctrl(ctx,SSL_CTRL_GET_EXTRA_CHAIN_CERTS,0,px509)
1421
+ # define SSL_CTX_get_extra_chain_certs_only(ctx,px509) \
1422
+ SSL_CTX_ctrl(ctx,SSL_CTRL_GET_EXTRA_CHAIN_CERTS,1,px509)
1423
+ # define SSL_CTX_clear_extra_chain_certs(ctx) \
1424
+ SSL_CTX_ctrl(ctx,SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTS,0,NULL)
1425
+ # define SSL_CTX_set0_chain(ctx,sk) \
1426
+ SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN,0,(char *)(sk))
1427
+ # define SSL_CTX_set1_chain(ctx,sk) \
1428
+ SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN,1,(char *)(sk))
1429
+ # define SSL_CTX_add0_chain_cert(ctx,x509) \
1430
+ SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN_CERT,0,(char *)(x509))
1431
+ # define SSL_CTX_add1_chain_cert(ctx,x509) \
1432
+ SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN_CERT,1,(char *)(x509))
1433
+ # define SSL_CTX_get0_chain_certs(ctx,px509) \
1434
+ SSL_CTX_ctrl(ctx,SSL_CTRL_GET_CHAIN_CERTS,0,px509)
1435
+ # define SSL_CTX_clear_chain_certs(ctx) \
1436
+ SSL_CTX_set0_chain(ctx,NULL)
1437
+ # define SSL_CTX_build_cert_chain(ctx, flags) \
1438
+ SSL_CTX_ctrl(ctx,SSL_CTRL_BUILD_CERT_CHAIN, flags, NULL)
1439
+ # define SSL_CTX_select_current_cert(ctx,x509) \
1440
+ SSL_CTX_ctrl(ctx,SSL_CTRL_SELECT_CURRENT_CERT,0,(char *)(x509))
1441
+ # define SSL_CTX_set_current_cert(ctx, op) \
1442
+ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CURRENT_CERT, op, NULL)
1443
+ # define SSL_CTX_set0_verify_cert_store(ctx,st) \
1444
+ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_VERIFY_CERT_STORE,0,(char *)(st))
1445
+ # define SSL_CTX_set1_verify_cert_store(ctx,st) \
1446
+ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_VERIFY_CERT_STORE,1,(char *)(st))
1447
+ # define SSL_CTX_get0_verify_cert_store(ctx,st) \
1448
+ SSL_CTX_ctrl(ctx,SSL_CTRL_GET_VERIFY_CERT_STORE,0,(char *)(st))
1449
+ # define SSL_CTX_set0_chain_cert_store(ctx,st) \
1450
+ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CHAIN_CERT_STORE,0,(char *)(st))
1451
+ # define SSL_CTX_set1_chain_cert_store(ctx,st) \
1452
+ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CHAIN_CERT_STORE,1,(char *)(st))
1453
+ # define SSL_CTX_get0_chain_cert_store(ctx,st) \
1454
+ SSL_CTX_ctrl(ctx,SSL_CTRL_GET_CHAIN_CERT_STORE,0,(char *)(st))
1455
+ # define SSL_set0_chain(s,sk) \
1456
+ SSL_ctrl(s,SSL_CTRL_CHAIN,0,(char *)(sk))
1457
+ # define SSL_set1_chain(s,sk) \
1458
+ SSL_ctrl(s,SSL_CTRL_CHAIN,1,(char *)(sk))
1459
+ # define SSL_add0_chain_cert(s,x509) \
1460
+ SSL_ctrl(s,SSL_CTRL_CHAIN_CERT,0,(char *)(x509))
1461
+ # define SSL_add1_chain_cert(s,x509) \
1462
+ SSL_ctrl(s,SSL_CTRL_CHAIN_CERT,1,(char *)(x509))
1463
+ # define SSL_get0_chain_certs(s,px509) \
1464
+ SSL_ctrl(s,SSL_CTRL_GET_CHAIN_CERTS,0,px509)
1465
+ # define SSL_clear_chain_certs(s) \
1466
+ SSL_set0_chain(s,NULL)
1467
+ # define SSL_build_cert_chain(s, flags) \
1468
+ SSL_ctrl(s,SSL_CTRL_BUILD_CERT_CHAIN, flags, NULL)
1469
+ # define SSL_select_current_cert(s,x509) \
1470
+ SSL_ctrl(s,SSL_CTRL_SELECT_CURRENT_CERT,0,(char *)(x509))
1471
+ # define SSL_set_current_cert(s,op) \
1472
+ SSL_ctrl(s,SSL_CTRL_SET_CURRENT_CERT, op, NULL)
1473
+ # define SSL_set0_verify_cert_store(s,st) \
1474
+ SSL_ctrl(s,SSL_CTRL_SET_VERIFY_CERT_STORE,0,(char *)(st))
1475
+ # define SSL_set1_verify_cert_store(s,st) \
1476
+ SSL_ctrl(s,SSL_CTRL_SET_VERIFY_CERT_STORE,1,(char *)(st))
1477
+ #define SSL_get0_verify_cert_store(s,st) \
1478
+ SSL_ctrl(s,SSL_CTRL_GET_VERIFY_CERT_STORE,0,(char *)(st))
1479
+ # define SSL_set0_chain_cert_store(s,st) \
1480
+ SSL_ctrl(s,SSL_CTRL_SET_CHAIN_CERT_STORE,0,(char *)(st))
1481
+ # define SSL_set1_chain_cert_store(s,st) \
1482
+ SSL_ctrl(s,SSL_CTRL_SET_CHAIN_CERT_STORE,1,(char *)(st))
1483
+ #define SSL_get0_chain_cert_store(s,st) \
1484
+ SSL_ctrl(s,SSL_CTRL_GET_CHAIN_CERT_STORE,0,(char *)(st))
1485
+
1486
+ # define SSL_get1_groups(s, glist) \
1487
+ SSL_ctrl(s,SSL_CTRL_GET_GROUPS,0,(int*)(glist))
1488
+ # define SSL_get0_iana_groups(s, plst) \
1489
+ SSL_ctrl(s,SSL_CTRL_GET_IANA_GROUPS,0,(uint16_t **)(plst))
1490
+ # define SSL_CTX_set1_groups(ctx, glist, glistlen) \
1491
+ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS,glistlen,(int *)(glist))
1492
+ # define SSL_CTX_set1_groups_list(ctx, s) \
1493
+ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS_LIST,0,(char *)(s))
1494
+ # define SSL_set1_groups(s, glist, glistlen) \
1495
+ SSL_ctrl(s,SSL_CTRL_SET_GROUPS,glistlen,(char *)(glist))
1496
+ # define SSL_set1_groups_list(s, str) \
1497
+ SSL_ctrl(s,SSL_CTRL_SET_GROUPS_LIST,0,(char *)(str))
1498
+ # define SSL_get_shared_group(s, n) \
1499
+ SSL_ctrl(s,SSL_CTRL_GET_SHARED_GROUP,n,NULL)
1500
+ # define SSL_get_negotiated_group(s) \
1501
+ SSL_ctrl(s,SSL_CTRL_GET_NEGOTIATED_GROUP,0,NULL)
1502
+ # define SSL_CTX_set1_sigalgs(ctx, slist, slistlen) \
1503
+ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SIGALGS,slistlen,(int *)(slist))
1504
+ # define SSL_CTX_set1_sigalgs_list(ctx, s) \
1505
+ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SIGALGS_LIST,0,(char *)(s))
1506
+ # define SSL_set1_sigalgs(s, slist, slistlen) \
1507
+ SSL_ctrl(s,SSL_CTRL_SET_SIGALGS,slistlen,(int *)(slist))
1508
+ # define SSL_set1_sigalgs_list(s, str) \
1509
+ SSL_ctrl(s,SSL_CTRL_SET_SIGALGS_LIST,0,(char *)(str))
1510
+ # define SSL_CTX_set1_client_sigalgs(ctx, slist, slistlen) \
1511
+ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CLIENT_SIGALGS,slistlen,(int *)(slist))
1512
+ # define SSL_CTX_set1_client_sigalgs_list(ctx, s) \
1513
+ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CLIENT_SIGALGS_LIST,0,(char *)(s))
1514
+ # define SSL_set1_client_sigalgs(s, slist, slistlen) \
1515
+ SSL_ctrl(s,SSL_CTRL_SET_CLIENT_SIGALGS,slistlen,(int *)(slist))
1516
+ # define SSL_set1_client_sigalgs_list(s, str) \
1517
+ SSL_ctrl(s,SSL_CTRL_SET_CLIENT_SIGALGS_LIST,0,(char *)(str))
1518
+ # define SSL_get0_certificate_types(s, clist) \
1519
+ SSL_ctrl(s, SSL_CTRL_GET_CLIENT_CERT_TYPES, 0, (char *)(clist))
1520
+ # define SSL_CTX_set1_client_certificate_types(ctx, clist, clistlen) \
1521
+ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CLIENT_CERT_TYPES,clistlen, \
1522
+ (char *)(clist))
1523
+ # define SSL_set1_client_certificate_types(s, clist, clistlen) \
1524
+ SSL_ctrl(s,SSL_CTRL_SET_CLIENT_CERT_TYPES,clistlen,(char *)(clist))
1525
+ # define SSL_get_signature_nid(s, pn) \
1526
+ SSL_ctrl(s,SSL_CTRL_GET_SIGNATURE_NID,0,pn)
1527
+ # define SSL_get_peer_signature_nid(s, pn) \
1528
+ SSL_ctrl(s,SSL_CTRL_GET_PEER_SIGNATURE_NID,0,pn)
1529
+ # define SSL_get_peer_tmp_key(s, pk) \
1530
+ SSL_ctrl(s,SSL_CTRL_GET_PEER_TMP_KEY,0,pk)
1531
+ # define SSL_get_tmp_key(s, pk) \
1532
+ SSL_ctrl(s,SSL_CTRL_GET_TMP_KEY,0,pk)
1533
+ # define SSL_get0_raw_cipherlist(s, plst) \
1534
+ SSL_ctrl(s,SSL_CTRL_GET_RAW_CIPHERLIST,0,plst)
1535
+ # define SSL_get0_ec_point_formats(s, plst) \
1536
+ SSL_ctrl(s,SSL_CTRL_GET_EC_POINT_FORMATS,0,plst)
1537
+ # define SSL_CTX_set_min_proto_version(ctx, version) \
1538
+ SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MIN_PROTO_VERSION, version, NULL)
1539
+ # define SSL_CTX_set_max_proto_version(ctx, version) \
1540
+ SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MAX_PROTO_VERSION, version, NULL)
1541
+ # define SSL_CTX_get_min_proto_version(ctx) \
1542
+ SSL_CTX_ctrl(ctx, SSL_CTRL_GET_MIN_PROTO_VERSION, 0, NULL)
1543
+ # define SSL_CTX_get_max_proto_version(ctx) \
1544
+ SSL_CTX_ctrl(ctx, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, NULL)
1545
+ # define SSL_set_min_proto_version(s, version) \
1546
+ SSL_ctrl(s, SSL_CTRL_SET_MIN_PROTO_VERSION, version, NULL)
1547
+ # define SSL_set_max_proto_version(s, version) \
1548
+ SSL_ctrl(s, SSL_CTRL_SET_MAX_PROTO_VERSION, version, NULL)
1549
+ # define SSL_get_min_proto_version(s) \
1550
+ SSL_ctrl(s, SSL_CTRL_GET_MIN_PROTO_VERSION, 0, NULL)
1551
+ # define SSL_get_max_proto_version(s) \
1552
+ SSL_ctrl(s, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, NULL)
1553
+
1554
+ const char *SSL_get0_group_name(SSL *s);
1555
+ const char *SSL_group_to_name(SSL *s, int id);
1556
+
1557
+ /* Backwards compatibility, original 1.1.0 names */
1558
+ # define SSL_CTRL_GET_SERVER_TMP_KEY \
1559
+ SSL_CTRL_GET_PEER_TMP_KEY
1560
+ # define SSL_get_server_tmp_key(s, pk) \
1561
+ SSL_get_peer_tmp_key(s, pk)
1562
+
1563
+ int SSL_set0_tmp_dh_pkey(SSL *s, EVP_PKEY *dhpkey);
1564
+ int SSL_CTX_set0_tmp_dh_pkey(SSL_CTX *ctx, EVP_PKEY *dhpkey);
1565
+
1566
+ /*
1567
+ * The following symbol names are old and obsolete. They are kept
1568
+ * for compatibility reasons only and should not be used anymore.
1569
+ */
1570
+ # define SSL_CTRL_GET_CURVES SSL_CTRL_GET_GROUPS
1571
+ # define SSL_CTRL_SET_CURVES SSL_CTRL_SET_GROUPS
1572
+ # define SSL_CTRL_SET_CURVES_LIST SSL_CTRL_SET_GROUPS_LIST
1573
+ # define SSL_CTRL_GET_SHARED_CURVE SSL_CTRL_GET_SHARED_GROUP
1574
+
1575
+ # define SSL_get1_curves SSL_get1_groups
1576
+ # define SSL_CTX_set1_curves SSL_CTX_set1_groups
1577
+ # define SSL_CTX_set1_curves_list SSL_CTX_set1_groups_list
1578
+ # define SSL_set1_curves SSL_set1_groups
1579
+ # define SSL_set1_curves_list SSL_set1_groups_list
1580
+ # define SSL_get_shared_curve SSL_get_shared_group
1581
+
1582
+
1583
+ # ifndef OPENSSL_NO_DEPRECATED_1_1_0
1584
+ /* Provide some compatibility macros for removed functionality. */
1585
+ # define SSL_CTX_need_tmp_RSA(ctx) 0
1586
+ # define SSL_CTX_set_tmp_rsa(ctx,rsa) 1
1587
+ # define SSL_need_tmp_RSA(ssl) 0
1588
+ # define SSL_set_tmp_rsa(ssl,rsa) 1
1589
+ # define SSL_CTX_set_ecdh_auto(dummy, onoff) ((onoff) != 0)
1590
+ # define SSL_set_ecdh_auto(dummy, onoff) ((onoff) != 0)
1591
+ /*
1592
+ * We "pretend" to call the callback to avoid warnings about unused static
1593
+ * functions.
1594
+ */
1595
+ # define SSL_CTX_set_tmp_rsa_callback(ctx, cb) while(0) (cb)(NULL, 0, 0)
1596
+ # define SSL_set_tmp_rsa_callback(ssl, cb) while(0) (cb)(NULL, 0, 0)
1597
+ # endif
1598
+ __owur const BIO_METHOD *BIO_f_ssl(void);
1599
+ __owur BIO *BIO_new_ssl(SSL_CTX *ctx, int client);
1600
+ __owur BIO *BIO_new_ssl_connect(SSL_CTX *ctx);
1601
+ __owur BIO *BIO_new_buffer_ssl_connect(SSL_CTX *ctx);
1602
+ __owur int BIO_ssl_copy_session_id(BIO *to, BIO *from);
1603
+ void BIO_ssl_shutdown(BIO *ssl_bio);
1604
+
1605
+ __owur int SSL_CTX_set_cipher_list(SSL_CTX *, const char *str);
1606
+ __owur SSL_CTX *SSL_CTX_new(const SSL_METHOD *meth);
1607
+ __owur SSL_CTX *SSL_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq,
1608
+ const SSL_METHOD *meth);
1609
+ int SSL_CTX_up_ref(SSL_CTX *ctx);
1610
+ void SSL_CTX_free(SSL_CTX *);
1611
+ __owur long SSL_CTX_set_timeout(SSL_CTX *ctx, long t);
1612
+ __owur long SSL_CTX_get_timeout(const SSL_CTX *ctx);
1613
+ __owur X509_STORE *SSL_CTX_get_cert_store(const SSL_CTX *);
1614
+ void SSL_CTX_set_cert_store(SSL_CTX *, X509_STORE *);
1615
+ void SSL_CTX_set1_cert_store(SSL_CTX *, X509_STORE *);
1616
+ __owur int SSL_want(const SSL *s);
1617
+ __owur int SSL_clear(SSL *s);
1618
+
1619
+ #ifndef OPENSSL_NO_DEPRECATED_3_4
1620
+ OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_CTX_flush_sessions_ex()")
1621
+ void SSL_CTX_flush_sessions(SSL_CTX *ctx, long tm);
1622
+ #endif
1623
+ void SSL_CTX_flush_sessions_ex(SSL_CTX *ctx, time_t tm);
1624
+
1625
+ __owur const SSL_CIPHER *SSL_get_current_cipher(const SSL *s);
1626
+ __owur const SSL_CIPHER *SSL_get_pending_cipher(const SSL *s);
1627
+ __owur int SSL_CIPHER_get_bits(const SSL_CIPHER *c, int *alg_bits);
1628
+ __owur const char *SSL_CIPHER_get_version(const SSL_CIPHER *c);
1629
+ __owur const char *SSL_CIPHER_get_name(const SSL_CIPHER *c);
1630
+ __owur const char *SSL_CIPHER_standard_name(const SSL_CIPHER *c);
1631
+ __owur const char *OPENSSL_cipher_name(const char *rfc_name);
1632
+ __owur uint32_t SSL_CIPHER_get_id(const SSL_CIPHER *c);
1633
+ __owur uint16_t SSL_CIPHER_get_protocol_id(const SSL_CIPHER *c);
1634
+ __owur int SSL_CIPHER_get_kx_nid(const SSL_CIPHER *c);
1635
+ __owur int SSL_CIPHER_get_auth_nid(const SSL_CIPHER *c);
1636
+ __owur const EVP_MD *SSL_CIPHER_get_handshake_digest(const SSL_CIPHER *c);
1637
+ __owur int SSL_CIPHER_is_aead(const SSL_CIPHER *c);
1638
+
1639
+ __owur int SSL_get_fd(const SSL *s);
1640
+ __owur int SSL_get_rfd(const SSL *s);
1641
+ __owur int SSL_get_wfd(const SSL *s);
1642
+ __owur const char *SSL_get_cipher_list(const SSL *s, int n);
1643
+ __owur char *SSL_get_shared_ciphers(const SSL *s, char *buf, int size);
1644
+ __owur int SSL_get_read_ahead(const SSL *s);
1645
+ __owur int SSL_pending(const SSL *s);
1646
+ __owur int SSL_has_pending(const SSL *s);
1647
+ # ifndef OPENSSL_NO_SOCK
1648
+ __owur int SSL_set_fd(SSL *s, int fd);
1649
+ __owur int SSL_set_rfd(SSL *s, int fd);
1650
+ __owur int SSL_set_wfd(SSL *s, int fd);
1651
+ # endif
1652
+ void SSL_set0_rbio(SSL *s, BIO *rbio);
1653
+ void SSL_set0_wbio(SSL *s, BIO *wbio);
1654
+ void SSL_set_bio(SSL *s, BIO *rbio, BIO *wbio);
1655
+ __owur BIO *SSL_get_rbio(const SSL *s);
1656
+ __owur BIO *SSL_get_wbio(const SSL *s);
1657
+ __owur int SSL_set_cipher_list(SSL *s, const char *str);
1658
+ __owur int SSL_CTX_set_ciphersuites(SSL_CTX *ctx, const char *str);
1659
+ __owur int SSL_set_ciphersuites(SSL *s, const char *str);
1660
+ void SSL_set_read_ahead(SSL *s, int yes);
1661
+ __owur int SSL_get_verify_mode(const SSL *s);
1662
+ __owur int SSL_get_verify_depth(const SSL *s);
1663
+ __owur SSL_verify_cb SSL_get_verify_callback(const SSL *s);
1664
+ void SSL_set_verify(SSL *s, int mode, SSL_verify_cb callback);
1665
+ void SSL_set_verify_depth(SSL *s, int depth);
1666
+ void SSL_set_cert_cb(SSL *s, int (*cb) (SSL *ssl, void *arg), void *arg);
1667
+ # ifndef OPENSSL_NO_DEPRECATED_3_0
1668
+ OSSL_DEPRECATEDIN_3_0 __owur int SSL_use_RSAPrivateKey(SSL *ssl, RSA *rsa);
1669
+ OSSL_DEPRECATEDIN_3_0
1670
+ __owur int SSL_use_RSAPrivateKey_ASN1(SSL *ssl,
1671
+ const unsigned char *d, long len);
1672
+ # endif
1673
+ __owur int SSL_use_PrivateKey(SSL *ssl, EVP_PKEY *pkey);
1674
+ __owur int SSL_use_PrivateKey_ASN1(int pk, SSL *ssl, const unsigned char *d,
1675
+ long len);
1676
+ __owur int SSL_use_certificate(SSL *ssl, X509 *x);
1677
+ __owur int SSL_use_certificate_ASN1(SSL *ssl, const unsigned char *d, int len);
1678
+ __owur int SSL_use_cert_and_key(SSL *ssl, X509 *x509, EVP_PKEY *privatekey,
1679
+ STACK_OF(X509) *chain, int override);
1680
+
1681
+
1682
+ /* serverinfo file format versions */
1683
+ # define SSL_SERVERINFOV1 1
1684
+ # define SSL_SERVERINFOV2 2
1685
+
1686
+ /* Set serverinfo data for the current active cert. */
1687
+ __owur int SSL_CTX_use_serverinfo(SSL_CTX *ctx, const unsigned char *serverinfo,
1688
+ size_t serverinfo_length);
1689
+ __owur int SSL_CTX_use_serverinfo_ex(SSL_CTX *ctx, unsigned int version,
1690
+ const unsigned char *serverinfo,
1691
+ size_t serverinfo_length);
1692
+ __owur int SSL_CTX_use_serverinfo_file(SSL_CTX *ctx, const char *file);
1693
+
1694
+ #ifndef OPENSSL_NO_DEPRECATED_3_0
1695
+ OSSL_DEPRECATEDIN_3_0
1696
+ __owur int SSL_use_RSAPrivateKey_file(SSL *ssl, const char *file, int type);
1697
+ #endif
1698
+
1699
+ __owur int SSL_use_PrivateKey_file(SSL *ssl, const char *file, int type);
1700
+ __owur int SSL_use_certificate_file(SSL *ssl, const char *file, int type);
1701
+
1702
+ #ifndef OPENSSL_NO_DEPRECATED_3_0
1703
+ OSSL_DEPRECATEDIN_3_0
1704
+ __owur int SSL_CTX_use_RSAPrivateKey_file(SSL_CTX *ctx, const char *file,
1705
+ int type);
1706
+ #endif
1707
+ __owur int SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx, const char *file,
1708
+ int type);
1709
+ __owur int SSL_CTX_use_certificate_file(SSL_CTX *ctx, const char *file,
1710
+ int type);
1711
+ /* PEM type */
1712
+ __owur int SSL_CTX_use_certificate_chain_file(SSL_CTX *ctx, const char *file);
1713
+ __owur int SSL_use_certificate_chain_file(SSL *ssl, const char *file);
1714
+ __owur STACK_OF(X509_NAME) *SSL_load_client_CA_file(const char *file);
1715
+ __owur STACK_OF(X509_NAME)
1716
+ *SSL_load_client_CA_file_ex(const char *file, OSSL_LIB_CTX *libctx,
1717
+ const char *propq);
1718
+ __owur int SSL_add_file_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs,
1719
+ const char *file);
1720
+ int SSL_add_dir_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs,
1721
+ const char *dir);
1722
+ int SSL_add_store_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs,
1723
+ const char *uri);
1724
+
1725
+ # ifndef OPENSSL_NO_DEPRECATED_1_1_0
1726
+ # define SSL_load_error_strings() \
1727
+ OPENSSL_init_ssl(OPENSSL_INIT_LOAD_SSL_STRINGS \
1728
+ | OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL)
1729
+ # endif
1730
+
1731
+ __owur const char *SSL_state_string(const SSL *s);
1732
+ __owur const char *SSL_rstate_string(const SSL *s);
1733
+ __owur const char *SSL_state_string_long(const SSL *s);
1734
+ __owur const char *SSL_rstate_string_long(const SSL *s);
1735
+
1736
+ #ifndef OPENSSL_NO_DEPRECATED_3_4
1737
+ OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_SESSION_get_time_ex()")
1738
+ __owur long SSL_SESSION_get_time(const SSL_SESSION *s);
1739
+ OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_SESSION_set_time_ex()")
1740
+ __owur long SSL_SESSION_set_time(SSL_SESSION *s, long t);
1741
+ #endif
1742
+ __owur long SSL_SESSION_get_timeout(const SSL_SESSION *s);
1743
+ __owur long SSL_SESSION_set_timeout(SSL_SESSION *s, long t);
1744
+ __owur int SSL_SESSION_get_protocol_version(const SSL_SESSION *s);
1745
+ __owur int SSL_SESSION_set_protocol_version(SSL_SESSION *s, int version);
1746
+
1747
+ __owur time_t SSL_SESSION_get_time_ex(const SSL_SESSION *s);
1748
+ __owur time_t SSL_SESSION_set_time_ex(SSL_SESSION *s, time_t t);
1749
+
1750
+ __owur const char *SSL_SESSION_get0_hostname(const SSL_SESSION *s);
1751
+ __owur int SSL_SESSION_set1_hostname(SSL_SESSION *s, const char *hostname);
1752
+ void SSL_SESSION_get0_alpn_selected(const SSL_SESSION *s,
1753
+ const unsigned char **alpn,
1754
+ size_t *len);
1755
+ __owur int SSL_SESSION_set1_alpn_selected(SSL_SESSION *s,
1756
+ const unsigned char *alpn,
1757
+ size_t len);
1758
+ __owur const SSL_CIPHER *SSL_SESSION_get0_cipher(const SSL_SESSION *s);
1759
+ __owur int SSL_SESSION_set_cipher(SSL_SESSION *s, const SSL_CIPHER *cipher);
1760
+ __owur int SSL_SESSION_has_ticket(const SSL_SESSION *s);
1761
+ __owur unsigned long SSL_SESSION_get_ticket_lifetime_hint(const SSL_SESSION *s);
1762
+ void SSL_SESSION_get0_ticket(const SSL_SESSION *s, const unsigned char **tick,
1763
+ size_t *len);
1764
+ __owur uint32_t SSL_SESSION_get_max_early_data(const SSL_SESSION *s);
1765
+ __owur int SSL_SESSION_set_max_early_data(SSL_SESSION *s,
1766
+ uint32_t max_early_data);
1767
+ __owur int SSL_copy_session_id(SSL *to, const SSL *from);
1768
+ __owur X509 *SSL_SESSION_get0_peer(SSL_SESSION *s);
1769
+ __owur int SSL_SESSION_set1_id_context(SSL_SESSION *s,
1770
+ const unsigned char *sid_ctx,
1771
+ unsigned int sid_ctx_len);
1772
+ __owur int SSL_SESSION_set1_id(SSL_SESSION *s, const unsigned char *sid,
1773
+ unsigned int sid_len);
1774
+ __owur int SSL_SESSION_is_resumable(const SSL_SESSION *s);
1775
+
1776
+ __owur SSL_SESSION *SSL_SESSION_new(void);
1777
+ __owur SSL_SESSION *SSL_SESSION_dup(const SSL_SESSION *src);
1778
+ const unsigned char *SSL_SESSION_get_id(const SSL_SESSION *s,
1779
+ unsigned int *len);
1780
+ const unsigned char *SSL_SESSION_get0_id_context(const SSL_SESSION *s,
1781
+ unsigned int *len);
1782
+ __owur unsigned int SSL_SESSION_get_compress_id(const SSL_SESSION *s);
1783
+ # ifndef OPENSSL_NO_STDIO
1784
+ int SSL_SESSION_print_fp(FILE *fp, const SSL_SESSION *ses);
1785
+ # endif
1786
+ int SSL_SESSION_print(BIO *fp, const SSL_SESSION *ses);
1787
+ int SSL_SESSION_print_keylog(BIO *bp, const SSL_SESSION *x);
1788
+ int SSL_SESSION_up_ref(SSL_SESSION *ses);
1789
+ void SSL_SESSION_free(SSL_SESSION *ses);
1790
+ __owur int i2d_SSL_SESSION(const SSL_SESSION *in, unsigned char **pp);
1791
+ __owur int SSL_set_session(SSL *to, SSL_SESSION *session);
1792
+ int SSL_CTX_add_session(SSL_CTX *ctx, SSL_SESSION *session);
1793
+ int SSL_CTX_remove_session(SSL_CTX *ctx, SSL_SESSION *session);
1794
+ __owur int SSL_CTX_set_generate_session_id(SSL_CTX *ctx, GEN_SESSION_CB cb);
1795
+ __owur int SSL_set_generate_session_id(SSL *s, GEN_SESSION_CB cb);
1796
+ __owur int SSL_has_matching_session_id(const SSL *s,
1797
+ const unsigned char *id,
1798
+ unsigned int id_len);
1799
+ SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp,
1800
+ long length);
1801
+ SSL_SESSION *d2i_SSL_SESSION_ex(SSL_SESSION **a, const unsigned char **pp,
1802
+ long length, OSSL_LIB_CTX *libctx,
1803
+ const char *propq);
1804
+
1805
+ # ifdef OPENSSL_X509_H
1806
+ __owur X509 *SSL_get0_peer_certificate(const SSL *s);
1807
+ __owur X509 *SSL_get1_peer_certificate(const SSL *s);
1808
+ /* Deprecated in 3.0.0 */
1809
+ # ifndef OPENSSL_NO_DEPRECATED_3_0
1810
+ # define SSL_get_peer_certificate SSL_get1_peer_certificate
1811
+ # endif
1812
+ # endif
1813
+
1814
+ __owur STACK_OF(X509) *SSL_get_peer_cert_chain(const SSL *s);
1815
+
1816
+ __owur int SSL_CTX_get_verify_mode(const SSL_CTX *ctx);
1817
+ __owur int SSL_CTX_get_verify_depth(const SSL_CTX *ctx);
1818
+ __owur SSL_verify_cb SSL_CTX_get_verify_callback(const SSL_CTX *ctx);
1819
+ void SSL_CTX_set_verify(SSL_CTX *ctx, int mode, SSL_verify_cb callback);
1820
+ void SSL_CTX_set_verify_depth(SSL_CTX *ctx, int depth);
1821
+ void SSL_CTX_set_cert_verify_callback(SSL_CTX *ctx,
1822
+ int (*cb) (X509_STORE_CTX *, void *),
1823
+ void *arg);
1824
+ void SSL_CTX_set_cert_cb(SSL_CTX *c, int (*cb) (SSL *ssl, void *arg),
1825
+ void *arg);
1826
+ # ifndef OPENSSL_NO_DEPRECATED_3_0
1827
+ OSSL_DEPRECATEDIN_3_0
1828
+ __owur int SSL_CTX_use_RSAPrivateKey(SSL_CTX *ctx, RSA *rsa);
1829
+ OSSL_DEPRECATEDIN_3_0
1830
+ __owur int SSL_CTX_use_RSAPrivateKey_ASN1(SSL_CTX *ctx, const unsigned char *d,
1831
+ long len);
1832
+ # endif
1833
+ __owur int SSL_CTX_use_PrivateKey(SSL_CTX *ctx, EVP_PKEY *pkey);
1834
+ __owur int SSL_CTX_use_PrivateKey_ASN1(int pk, SSL_CTX *ctx,
1835
+ const unsigned char *d, long len);
1836
+ __owur int SSL_CTX_use_certificate(SSL_CTX *ctx, X509 *x);
1837
+ __owur int SSL_CTX_use_certificate_ASN1(SSL_CTX *ctx, int len,
1838
+ const unsigned char *d);
1839
+ __owur int SSL_CTX_use_cert_and_key(SSL_CTX *ctx, X509 *x509, EVP_PKEY *privatekey,
1840
+ STACK_OF(X509) *chain, int override);
1841
+
1842
+ void SSL_CTX_set_default_passwd_cb(SSL_CTX *ctx, pem_password_cb *cb);
1843
+ void SSL_CTX_set_default_passwd_cb_userdata(SSL_CTX *ctx, void *u);
1844
+ pem_password_cb *SSL_CTX_get_default_passwd_cb(SSL_CTX *ctx);
1845
+ void *SSL_CTX_get_default_passwd_cb_userdata(SSL_CTX *ctx);
1846
+ void SSL_set_default_passwd_cb(SSL *s, pem_password_cb *cb);
1847
+ void SSL_set_default_passwd_cb_userdata(SSL *s, void *u);
1848
+ pem_password_cb *SSL_get_default_passwd_cb(SSL *s);
1849
+ void *SSL_get_default_passwd_cb_userdata(SSL *s);
1850
+
1851
+ __owur int SSL_CTX_check_private_key(const SSL_CTX *ctx);
1852
+ __owur int SSL_check_private_key(const SSL *ctx);
1853
+
1854
+ __owur int SSL_CTX_set_session_id_context(SSL_CTX *ctx,
1855
+ const unsigned char *sid_ctx,
1856
+ unsigned int sid_ctx_len);
1857
+
1858
+ SSL *SSL_new(SSL_CTX *ctx);
1859
+ int SSL_up_ref(SSL *s);
1860
+ int SSL_is_dtls(const SSL *s);
1861
+ int SSL_is_tls(const SSL *s);
1862
+ int SSL_is_quic(const SSL *s);
1863
+ __owur int SSL_set_session_id_context(SSL *ssl, const unsigned char *sid_ctx,
1864
+ unsigned int sid_ctx_len);
1865
+
1866
+ __owur int SSL_CTX_set_purpose(SSL_CTX *ctx, int purpose);
1867
+ __owur int SSL_set_purpose(SSL *ssl, int purpose);
1868
+ __owur int SSL_CTX_set_trust(SSL_CTX *ctx, int trust);
1869
+ __owur int SSL_set_trust(SSL *ssl, int trust);
1870
+
1871
+ __owur int SSL_set1_host(SSL *s, const char *hostname);
1872
+ __owur int SSL_add1_host(SSL *s, const char *hostname);
1873
+ __owur const char *SSL_get0_peername(SSL *s);
1874
+ void SSL_set_hostflags(SSL *s, unsigned int flags);
1875
+
1876
+ __owur int SSL_CTX_dane_enable(SSL_CTX *ctx);
1877
+ __owur int SSL_CTX_dane_mtype_set(SSL_CTX *ctx, const EVP_MD *md,
1878
+ uint8_t mtype, uint8_t ord);
1879
+ __owur int SSL_dane_enable(SSL *s, const char *basedomain);
1880
+ __owur int SSL_dane_tlsa_add(SSL *s, uint8_t usage, uint8_t selector,
1881
+ uint8_t mtype, const unsigned char *data, size_t dlen);
1882
+ __owur int SSL_get0_dane_authority(SSL *s, X509 **mcert, EVP_PKEY **mspki);
1883
+ __owur int SSL_get0_dane_tlsa(SSL *s, uint8_t *usage, uint8_t *selector,
1884
+ uint8_t *mtype, const unsigned char **data,
1885
+ size_t *dlen);
1886
+ /*
1887
+ * Bridge opacity barrier between libcrypt and libssl, also needed to support
1888
+ * offline testing in test/danetest.c
1889
+ */
1890
+ SSL_DANE *SSL_get0_dane(SSL *ssl);
1891
+ /*
1892
+ * DANE flags
1893
+ */
1894
+ unsigned long SSL_CTX_dane_set_flags(SSL_CTX *ctx, unsigned long flags);
1895
+ unsigned long SSL_CTX_dane_clear_flags(SSL_CTX *ctx, unsigned long flags);
1896
+ unsigned long SSL_dane_set_flags(SSL *ssl, unsigned long flags);
1897
+ unsigned long SSL_dane_clear_flags(SSL *ssl, unsigned long flags);
1898
+
1899
+ __owur int SSL_CTX_set1_param(SSL_CTX *ctx, X509_VERIFY_PARAM *vpm);
1900
+ __owur int SSL_set1_param(SSL *ssl, X509_VERIFY_PARAM *vpm);
1901
+
1902
+ __owur X509_VERIFY_PARAM *SSL_CTX_get0_param(SSL_CTX *ctx);
1903
+ __owur X509_VERIFY_PARAM *SSL_get0_param(SSL *ssl);
1904
+
1905
+ # ifndef OPENSSL_NO_SRP
1906
+ # ifndef OPENSSL_NO_DEPRECATED_3_0
1907
+ OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_username(SSL_CTX *ctx, char *name);
1908
+ OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_password(SSL_CTX *ctx, char *password);
1909
+ OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_strength(SSL_CTX *ctx, int strength);
1910
+ OSSL_DEPRECATEDIN_3_0
1911
+ int SSL_CTX_set_srp_client_pwd_callback(SSL_CTX *ctx,
1912
+ char *(*cb) (SSL *, void *));
1913
+ OSSL_DEPRECATEDIN_3_0
1914
+ int SSL_CTX_set_srp_verify_param_callback(SSL_CTX *ctx,
1915
+ int (*cb) (SSL *, void *));
1916
+ OSSL_DEPRECATEDIN_3_0
1917
+ int SSL_CTX_set_srp_username_callback(SSL_CTX *ctx,
1918
+ int (*cb) (SSL *, int *, void *));
1919
+ OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_cb_arg(SSL_CTX *ctx, void *arg);
1920
+
1921
+ OSSL_DEPRECATEDIN_3_0
1922
+ int SSL_set_srp_server_param(SSL *s, const BIGNUM *N, const BIGNUM *g,
1923
+ BIGNUM *sa, BIGNUM *v, char *info);
1924
+ OSSL_DEPRECATEDIN_3_0
1925
+ int SSL_set_srp_server_param_pw(SSL *s, const char *user, const char *pass,
1926
+ const char *grp);
1927
+
1928
+ OSSL_DEPRECATEDIN_3_0 __owur BIGNUM *SSL_get_srp_g(SSL *s);
1929
+ OSSL_DEPRECATEDIN_3_0 __owur BIGNUM *SSL_get_srp_N(SSL *s);
1930
+
1931
+ OSSL_DEPRECATEDIN_3_0 __owur char *SSL_get_srp_username(SSL *s);
1932
+ OSSL_DEPRECATEDIN_3_0 __owur char *SSL_get_srp_userinfo(SSL *s);
1933
+ # endif
1934
+ # endif
1935
+
1936
+ /*
1937
+ * ClientHello callback and helpers.
1938
+ */
1939
+
1940
+ # define SSL_CLIENT_HELLO_SUCCESS 1
1941
+ # define SSL_CLIENT_HELLO_ERROR 0
1942
+ # define SSL_CLIENT_HELLO_RETRY (-1)
1943
+
1944
+ typedef int (*SSL_client_hello_cb_fn) (SSL *s, int *al, void *arg);
1945
+ void SSL_CTX_set_client_hello_cb(SSL_CTX *c, SSL_client_hello_cb_fn cb,
1946
+ void *arg);
1947
+ int SSL_client_hello_isv2(SSL *s);
1948
+ unsigned int SSL_client_hello_get0_legacy_version(SSL *s);
1949
+ size_t SSL_client_hello_get0_random(SSL *s, const unsigned char **out);
1950
+ size_t SSL_client_hello_get0_session_id(SSL *s, const unsigned char **out);
1951
+ size_t SSL_client_hello_get0_ciphers(SSL *s, const unsigned char **out);
1952
+ size_t SSL_client_hello_get0_compression_methods(SSL *s,
1953
+ const unsigned char **out);
1954
+ int SSL_client_hello_get1_extensions_present(SSL *s, int **out, size_t *outlen);
1955
+ int SSL_client_hello_get_extension_order(SSL *s, uint16_t *exts,
1956
+ size_t *num_exts);
1957
+ int SSL_client_hello_get0_ext(SSL *s, unsigned int type,
1958
+ const unsigned char **out, size_t *outlen);
1959
+
1960
+ void SSL_certs_clear(SSL *s);
1961
+ void SSL_free(SSL *ssl);
1962
+ # ifdef OSSL_ASYNC_FD
1963
+ /*
1964
+ * Windows application developer has to include windows.h to use these.
1965
+ */
1966
+ __owur int SSL_waiting_for_async(SSL *s);
1967
+ __owur int SSL_get_all_async_fds(SSL *s, OSSL_ASYNC_FD *fds, size_t *numfds);
1968
+ __owur int SSL_get_changed_async_fds(SSL *s, OSSL_ASYNC_FD *addfd,
1969
+ size_t *numaddfds, OSSL_ASYNC_FD *delfd,
1970
+ size_t *numdelfds);
1971
+ __owur int SSL_CTX_set_async_callback(SSL_CTX *ctx, SSL_async_callback_fn callback);
1972
+ __owur int SSL_CTX_set_async_callback_arg(SSL_CTX *ctx, void *arg);
1973
+ __owur int SSL_set_async_callback(SSL *s, SSL_async_callback_fn callback);
1974
+ __owur int SSL_set_async_callback_arg(SSL *s, void *arg);
1975
+ __owur int SSL_get_async_status(SSL *s, int *status);
1976
+
1977
+ # endif
1978
+ __owur int SSL_accept(SSL *ssl);
1979
+ __owur int SSL_stateless(SSL *s);
1980
+ __owur int SSL_connect(SSL *ssl);
1981
+ __owur int SSL_read(SSL *ssl, void *buf, int num);
1982
+ __owur int SSL_read_ex(SSL *ssl, void *buf, size_t num, size_t *readbytes);
1983
+
1984
+ # define SSL_READ_EARLY_DATA_ERROR 0
1985
+ # define SSL_READ_EARLY_DATA_SUCCESS 1
1986
+ # define SSL_READ_EARLY_DATA_FINISH 2
1987
+
1988
+ __owur int SSL_read_early_data(SSL *s, void *buf, size_t num,
1989
+ size_t *readbytes);
1990
+ __owur int SSL_peek(SSL *ssl, void *buf, int num);
1991
+ __owur int SSL_peek_ex(SSL *ssl, void *buf, size_t num, size_t *readbytes);
1992
+ __owur ossl_ssize_t SSL_sendfile(SSL *s, int fd, off_t offset, size_t size,
1993
+ int flags);
1994
+ __owur int SSL_write(SSL *ssl, const void *buf, int num);
1995
+ __owur int SSL_write_ex(SSL *s, const void *buf, size_t num, size_t *written);
1996
+ __owur int SSL_write_early_data(SSL *s, const void *buf, size_t num,
1997
+ size_t *written);
1998
+ long SSL_ctrl(SSL *ssl, int cmd, long larg, void *parg);
1999
+ long SSL_callback_ctrl(SSL *, int, void (*)(void));
2000
+ long SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg);
2001
+ long SSL_CTX_callback_ctrl(SSL_CTX *, int, void (*)(void));
2002
+
2003
+ # define SSL_WRITE_FLAG_CONCLUDE (1U << 0)
2004
+
2005
+ __owur int SSL_write_ex2(SSL *s, const void *buf, size_t num,
2006
+ uint64_t flags,
2007
+ size_t *written);
2008
+
2009
+ # define SSL_EARLY_DATA_NOT_SENT 0
2010
+ # define SSL_EARLY_DATA_REJECTED 1
2011
+ # define SSL_EARLY_DATA_ACCEPTED 2
2012
+
2013
+ __owur int SSL_get_early_data_status(const SSL *s);
2014
+
2015
+ __owur int SSL_get_error(const SSL *s, int ret_code);
2016
+ __owur const char *SSL_get_version(const SSL *s);
2017
+ __owur int SSL_get_handshake_rtt(const SSL *s, uint64_t *rtt);
2018
+
2019
+ /* This sets the 'default' SSL version that SSL_new() will create */
2020
+ # ifndef OPENSSL_NO_DEPRECATED_3_0
2021
+ OSSL_DEPRECATEDIN_3_0
2022
+ __owur int SSL_CTX_set_ssl_version(SSL_CTX *ctx, const SSL_METHOD *meth);
2023
+ # endif
2024
+
2025
+ # ifndef OPENSSL_NO_SSL3_METHOD
2026
+ # ifndef OPENSSL_NO_DEPRECATED_1_1_0
2027
+ OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *SSLv3_method(void); /* SSLv3 */
2028
+ OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *SSLv3_server_method(void);
2029
+ OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *SSLv3_client_method(void);
2030
+ # endif
2031
+ # endif
2032
+
2033
+ #define SSLv23_method TLS_method
2034
+ #define SSLv23_server_method TLS_server_method
2035
+ #define SSLv23_client_method TLS_client_method
2036
+
2037
+ /* Negotiate highest available SSL/TLS version */
2038
+ __owur const SSL_METHOD *TLS_method(void);
2039
+ __owur const SSL_METHOD *TLS_server_method(void);
2040
+ __owur const SSL_METHOD *TLS_client_method(void);
2041
+
2042
+ # ifndef OPENSSL_NO_TLS1_METHOD
2043
+ # ifndef OPENSSL_NO_DEPRECATED_1_1_0
2044
+ OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_method(void); /* TLSv1.0 */
2045
+ OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_server_method(void);
2046
+ OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_client_method(void);
2047
+ # endif
2048
+ # endif
2049
+
2050
+ # ifndef OPENSSL_NO_TLS1_1_METHOD
2051
+ # ifndef OPENSSL_NO_DEPRECATED_1_1_0
2052
+ OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_1_method(void); /* TLSv1.1 */
2053
+ OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_1_server_method(void);
2054
+ OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_1_client_method(void);
2055
+ # endif
2056
+ # endif
2057
+
2058
+ # ifndef OPENSSL_NO_TLS1_2_METHOD
2059
+ # ifndef OPENSSL_NO_DEPRECATED_1_1_0
2060
+ OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_2_method(void); /* TLSv1.2 */
2061
+ OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_2_server_method(void);
2062
+ OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_2_client_method(void);
2063
+ # endif
2064
+ # endif
2065
+
2066
+ # ifndef OPENSSL_NO_DTLS1_METHOD
2067
+ # ifndef OPENSSL_NO_DEPRECATED_1_1_0
2068
+ OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_method(void); /* DTLSv1.0 */
2069
+ OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_server_method(void);
2070
+ OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_client_method(void);
2071
+ # endif
2072
+ # endif
2073
+
2074
+ # ifndef OPENSSL_NO_DTLS1_2_METHOD
2075
+ /* DTLSv1.2 */
2076
+ # ifndef OPENSSL_NO_DEPRECATED_1_1_0
2077
+ OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_2_method(void);
2078
+ OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_2_server_method(void);
2079
+ OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_2_client_method(void);
2080
+ # endif
2081
+ # endif
2082
+
2083
+ __owur const SSL_METHOD *DTLS_method(void); /* DTLS 1.0 and 1.2 */
2084
+ __owur const SSL_METHOD *DTLS_server_method(void); /* DTLS 1.0 and 1.2 */
2085
+ __owur const SSL_METHOD *DTLS_client_method(void); /* DTLS 1.0 and 1.2 */
2086
+
2087
+ __owur size_t DTLS_get_data_mtu(const SSL *s);
2088
+
2089
+ __owur STACK_OF(SSL_CIPHER) *SSL_get_ciphers(const SSL *s);
2090
+ __owur STACK_OF(SSL_CIPHER) *SSL_CTX_get_ciphers(const SSL_CTX *ctx);
2091
+ __owur STACK_OF(SSL_CIPHER) *SSL_get_client_ciphers(const SSL *s);
2092
+ __owur STACK_OF(SSL_CIPHER) *SSL_get1_supported_ciphers(SSL *s);
2093
+
2094
+ __owur int SSL_do_handshake(SSL *s);
2095
+ int SSL_key_update(SSL *s, int updatetype);
2096
+ int SSL_get_key_update_type(const SSL *s);
2097
+ int SSL_renegotiate(SSL *s);
2098
+ int SSL_renegotiate_abbreviated(SSL *s);
2099
+ __owur int SSL_renegotiate_pending(const SSL *s);
2100
+ int SSL_new_session_ticket(SSL *s);
2101
+ int SSL_shutdown(SSL *s);
2102
+ __owur int SSL_verify_client_post_handshake(SSL *s);
2103
+ void SSL_CTX_set_post_handshake_auth(SSL_CTX *ctx, int val);
2104
+ void SSL_set_post_handshake_auth(SSL *s, int val);
2105
+
2106
+ __owur const SSL_METHOD *SSL_CTX_get_ssl_method(const SSL_CTX *ctx);
2107
+ __owur const SSL_METHOD *SSL_get_ssl_method(const SSL *s);
2108
+ __owur int SSL_set_ssl_method(SSL *s, const SSL_METHOD *method);
2109
+ __owur const char *SSL_alert_type_string_long(int value);
2110
+ __owur const char *SSL_alert_type_string(int value);
2111
+ __owur const char *SSL_alert_desc_string_long(int value);
2112
+ __owur const char *SSL_alert_desc_string(int value);
2113
+
2114
+ void SSL_set0_CA_list(SSL *s, STACK_OF(X509_NAME) *name_list);
2115
+ void SSL_CTX_set0_CA_list(SSL_CTX *ctx, STACK_OF(X509_NAME) *name_list);
2116
+ __owur const STACK_OF(X509_NAME) *SSL_get0_CA_list(const SSL *s);
2117
+ __owur const STACK_OF(X509_NAME) *SSL_CTX_get0_CA_list(const SSL_CTX *ctx);
2118
+ __owur int SSL_add1_to_CA_list(SSL *ssl, const X509 *x);
2119
+ __owur int SSL_CTX_add1_to_CA_list(SSL_CTX *ctx, const X509 *x);
2120
+ __owur const STACK_OF(X509_NAME) *SSL_get0_peer_CA_list(const SSL *s);
2121
+
2122
+ void SSL_set_client_CA_list(SSL *s, STACK_OF(X509_NAME) *name_list);
2123
+ void SSL_CTX_set_client_CA_list(SSL_CTX *ctx, STACK_OF(X509_NAME) *name_list);
2124
+ __owur STACK_OF(X509_NAME) *SSL_get_client_CA_list(const SSL *s);
2125
+ __owur STACK_OF(X509_NAME) *SSL_CTX_get_client_CA_list(const SSL_CTX *s);
2126
+ __owur int SSL_add_client_CA(SSL *ssl, X509 *x);
2127
+ __owur int SSL_CTX_add_client_CA(SSL_CTX *ctx, X509 *x);
2128
+
2129
+ void SSL_set_connect_state(SSL *s);
2130
+ void SSL_set_accept_state(SSL *s);
2131
+
2132
+ __owur long SSL_get_default_timeout(const SSL *s);
2133
+
2134
+ # ifndef OPENSSL_NO_DEPRECATED_1_1_0
2135
+ # define SSL_library_init() OPENSSL_init_ssl(0, NULL)
2136
+ # endif
2137
+
2138
+ __owur char *SSL_CIPHER_description(const SSL_CIPHER *, char *buf, int size);
2139
+ __owur STACK_OF(X509_NAME) *SSL_dup_CA_list(const STACK_OF(X509_NAME) *sk);
2140
+
2141
+ __owur SSL *SSL_dup(SSL *ssl);
2142
+
2143
+ __owur X509 *SSL_get_certificate(const SSL *ssl);
2144
+ /*
2145
+ * EVP_PKEY
2146
+ */
2147
+ struct evp_pkey_st *SSL_get_privatekey(const SSL *ssl);
2148
+
2149
+ __owur X509 *SSL_CTX_get0_certificate(const SSL_CTX *ctx);
2150
+ __owur EVP_PKEY *SSL_CTX_get0_privatekey(const SSL_CTX *ctx);
2151
+
2152
+ void SSL_CTX_set_quiet_shutdown(SSL_CTX *ctx, int mode);
2153
+ __owur int SSL_CTX_get_quiet_shutdown(const SSL_CTX *ctx);
2154
+ void SSL_set_quiet_shutdown(SSL *ssl, int mode);
2155
+ __owur int SSL_get_quiet_shutdown(const SSL *ssl);
2156
+ void SSL_set_shutdown(SSL *ssl, int mode);
2157
+ __owur int SSL_get_shutdown(const SSL *ssl);
2158
+ __owur int SSL_version(const SSL *ssl);
2159
+ __owur int SSL_client_version(const SSL *s);
2160
+ __owur int SSL_CTX_set_default_verify_paths(SSL_CTX *ctx);
2161
+ __owur int SSL_CTX_set_default_verify_dir(SSL_CTX *ctx);
2162
+ __owur int SSL_CTX_set_default_verify_file(SSL_CTX *ctx);
2163
+ __owur int SSL_CTX_set_default_verify_store(SSL_CTX *ctx);
2164
+ __owur int SSL_CTX_load_verify_file(SSL_CTX *ctx, const char *CAfile);
2165
+ __owur int SSL_CTX_load_verify_dir(SSL_CTX *ctx, const char *CApath);
2166
+ __owur int SSL_CTX_load_verify_store(SSL_CTX *ctx, const char *CAstore);
2167
+ __owur int SSL_CTX_load_verify_locations(SSL_CTX *ctx,
2168
+ const char *CAfile,
2169
+ const char *CApath);
2170
+ # define SSL_get0_session SSL_get_session/* just peek at pointer */
2171
+ __owur SSL_SESSION *SSL_get_session(const SSL *ssl);
2172
+ __owur SSL_SESSION *SSL_get1_session(SSL *ssl); /* obtain a reference count */
2173
+ __owur SSL_CTX *SSL_get_SSL_CTX(const SSL *ssl);
2174
+ SSL_CTX *SSL_set_SSL_CTX(SSL *ssl, SSL_CTX *ctx);
2175
+ void SSL_set_info_callback(SSL *ssl,
2176
+ void (*cb) (const SSL *ssl, int type, int val));
2177
+ void (*SSL_get_info_callback(const SSL *ssl)) (const SSL *ssl, int type,
2178
+ int val);
2179
+ __owur OSSL_HANDSHAKE_STATE SSL_get_state(const SSL *ssl);
2180
+
2181
+ void SSL_set_verify_result(SSL *ssl, long v);
2182
+ __owur long SSL_get_verify_result(const SSL *ssl);
2183
+ __owur STACK_OF(X509) *SSL_get0_verified_chain(const SSL *s);
2184
+
2185
+ __owur size_t SSL_get_client_random(const SSL *ssl, unsigned char *out,
2186
+ size_t outlen);
2187
+ __owur size_t SSL_get_server_random(const SSL *ssl, unsigned char *out,
2188
+ size_t outlen);
2189
+ __owur size_t SSL_SESSION_get_master_key(const SSL_SESSION *sess,
2190
+ unsigned char *out, size_t outlen);
2191
+ __owur int SSL_SESSION_set1_master_key(SSL_SESSION *sess,
2192
+ const unsigned char *in, size_t len);
2193
+ uint8_t SSL_SESSION_get_max_fragment_length(const SSL_SESSION *sess);
2194
+
2195
+ #define SSL_get_ex_new_index(l, p, newf, dupf, freef) \
2196
+ CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL, l, p, newf, dupf, freef)
2197
+ __owur int SSL_set_ex_data(SSL *ssl, int idx, void *data);
2198
+ void *SSL_get_ex_data(const SSL *ssl, int idx);
2199
+ #define SSL_SESSION_get_ex_new_index(l, p, newf, dupf, freef) \
2200
+ CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL_SESSION, l, p, newf, dupf, freef)
2201
+ __owur int SSL_SESSION_set_ex_data(SSL_SESSION *ss, int idx, void *data);
2202
+ void *SSL_SESSION_get_ex_data(const SSL_SESSION *ss, int idx);
2203
+ #define SSL_CTX_get_ex_new_index(l, p, newf, dupf, freef) \
2204
+ CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL_CTX, l, p, newf, dupf, freef)
2205
+ __owur int SSL_CTX_set_ex_data(SSL_CTX *ssl, int idx, void *data);
2206
+ void *SSL_CTX_get_ex_data(const SSL_CTX *ssl, int idx);
2207
+
2208
+ __owur int SSL_get_ex_data_X509_STORE_CTX_idx(void);
2209
+
2210
+ # define SSL_CTX_sess_set_cache_size(ctx,t) \
2211
+ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SESS_CACHE_SIZE,t,NULL)
2212
+ # define SSL_CTX_sess_get_cache_size(ctx) \
2213
+ SSL_CTX_ctrl(ctx,SSL_CTRL_GET_SESS_CACHE_SIZE,0,NULL)
2214
+ # define SSL_CTX_set_session_cache_mode(ctx,m) \
2215
+ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SESS_CACHE_MODE,m,NULL)
2216
+ # define SSL_CTX_get_session_cache_mode(ctx) \
2217
+ SSL_CTX_ctrl(ctx,SSL_CTRL_GET_SESS_CACHE_MODE,0,NULL)
2218
+
2219
+ # define SSL_CTX_get_default_read_ahead(ctx) SSL_CTX_get_read_ahead(ctx)
2220
+ # define SSL_CTX_set_default_read_ahead(ctx,m) SSL_CTX_set_read_ahead(ctx,m)
2221
+ # define SSL_CTX_get_read_ahead(ctx) \
2222
+ SSL_CTX_ctrl(ctx,SSL_CTRL_GET_READ_AHEAD,0,NULL)
2223
+ # define SSL_CTX_set_read_ahead(ctx,m) \
2224
+ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_READ_AHEAD,m,NULL)
2225
+ # define SSL_CTX_get_max_cert_list(ctx) \
2226
+ SSL_CTX_ctrl(ctx,SSL_CTRL_GET_MAX_CERT_LIST,0,NULL)
2227
+ # define SSL_CTX_set_max_cert_list(ctx,m) \
2228
+ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_MAX_CERT_LIST,m,NULL)
2229
+ # define SSL_get_max_cert_list(ssl) \
2230
+ SSL_ctrl(ssl,SSL_CTRL_GET_MAX_CERT_LIST,0,NULL)
2231
+ # define SSL_set_max_cert_list(ssl,m) \
2232
+ SSL_ctrl(ssl,SSL_CTRL_SET_MAX_CERT_LIST,m,NULL)
2233
+
2234
+ # define SSL_CTX_set_max_send_fragment(ctx,m) \
2235
+ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_MAX_SEND_FRAGMENT,m,NULL)
2236
+ # define SSL_set_max_send_fragment(ssl,m) \
2237
+ SSL_ctrl(ssl,SSL_CTRL_SET_MAX_SEND_FRAGMENT,m,NULL)
2238
+ # define SSL_CTX_set_split_send_fragment(ctx,m) \
2239
+ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SPLIT_SEND_FRAGMENT,m,NULL)
2240
+ # define SSL_set_split_send_fragment(ssl,m) \
2241
+ SSL_ctrl(ssl,SSL_CTRL_SET_SPLIT_SEND_FRAGMENT,m,NULL)
2242
+ # define SSL_CTX_set_max_pipelines(ctx,m) \
2243
+ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_MAX_PIPELINES,m,NULL)
2244
+ # define SSL_set_max_pipelines(ssl,m) \
2245
+ SSL_ctrl(ssl,SSL_CTRL_SET_MAX_PIPELINES,m,NULL)
2246
+ # define SSL_set_retry_verify(ssl) \
2247
+ (SSL_ctrl(ssl,SSL_CTRL_SET_RETRY_VERIFY,0,NULL) > 0)
2248
+
2249
+ void SSL_CTX_set_default_read_buffer_len(SSL_CTX *ctx, size_t len);
2250
+ void SSL_set_default_read_buffer_len(SSL *s, size_t len);
2251
+
2252
+ # ifndef OPENSSL_NO_DH
2253
+ # ifndef OPENSSL_NO_DEPRECATED_3_0
2254
+ /* NB: the |keylength| is only applicable when is_export is true */
2255
+ OSSL_DEPRECATEDIN_3_0
2256
+ void SSL_CTX_set_tmp_dh_callback(SSL_CTX *ctx,
2257
+ DH *(*dh) (SSL *ssl, int is_export,
2258
+ int keylength));
2259
+ OSSL_DEPRECATEDIN_3_0
2260
+ void SSL_set_tmp_dh_callback(SSL *ssl,
2261
+ DH *(*dh) (SSL *ssl, int is_export,
2262
+ int keylength));
2263
+ # endif
2264
+ # endif
2265
+
2266
+ __owur const COMP_METHOD *SSL_get_current_compression(const SSL *s);
2267
+ __owur const COMP_METHOD *SSL_get_current_expansion(const SSL *s);
2268
+ __owur const char *SSL_COMP_get_name(const COMP_METHOD *comp);
2269
+ __owur const char *SSL_COMP_get0_name(const SSL_COMP *comp);
2270
+ __owur int SSL_COMP_get_id(const SSL_COMP *comp);
2271
+ STACK_OF(SSL_COMP) *SSL_COMP_get_compression_methods(void);
2272
+ __owur STACK_OF(SSL_COMP) *SSL_COMP_set0_compression_methods(STACK_OF(SSL_COMP)
2273
+ *meths);
2274
+ # ifndef OPENSSL_NO_DEPRECATED_1_1_0
2275
+ # define SSL_COMP_free_compression_methods() while(0) continue
2276
+ # endif
2277
+ __owur int SSL_COMP_add_compression_method(int id, COMP_METHOD *cm);
2278
+
2279
+ const SSL_CIPHER *SSL_CIPHER_find(SSL *ssl, const unsigned char *ptr);
2280
+ int SSL_CIPHER_get_cipher_nid(const SSL_CIPHER *c);
2281
+ int SSL_CIPHER_get_digest_nid(const SSL_CIPHER *c);
2282
+ int SSL_bytes_to_cipher_list(SSL *s, const unsigned char *bytes, size_t len,
2283
+ int isv2format, STACK_OF(SSL_CIPHER) **sk,
2284
+ STACK_OF(SSL_CIPHER) **scsvs);
2285
+
2286
+ /* TLS extensions functions */
2287
+ __owur int SSL_set_session_ticket_ext(SSL *s, void *ext_data, int ext_len);
2288
+
2289
+ __owur int SSL_set_session_ticket_ext_cb(SSL *s,
2290
+ tls_session_ticket_ext_cb_fn cb,
2291
+ void *arg);
2292
+
2293
+ /* Pre-shared secret session resumption functions */
2294
+ __owur int SSL_set_session_secret_cb(SSL *s,
2295
+ tls_session_secret_cb_fn session_secret_cb,
2296
+ void *arg);
2297
+
2298
+ void SSL_CTX_set_not_resumable_session_callback(SSL_CTX *ctx,
2299
+ int (*cb) (SSL *ssl,
2300
+ int
2301
+ is_forward_secure));
2302
+
2303
+ void SSL_set_not_resumable_session_callback(SSL *ssl,
2304
+ int (*cb) (SSL *ssl,
2305
+ int is_forward_secure));
2306
+
2307
+ void SSL_CTX_set_record_padding_callback(SSL_CTX *ctx,
2308
+ size_t (*cb) (SSL *ssl, int type,
2309
+ size_t len, void *arg));
2310
+ void SSL_CTX_set_record_padding_callback_arg(SSL_CTX *ctx, void *arg);
2311
+ void *SSL_CTX_get_record_padding_callback_arg(const SSL_CTX *ctx);
2312
+ int SSL_CTX_set_block_padding(SSL_CTX *ctx, size_t block_size);
2313
+ int SSL_CTX_set_block_padding_ex(SSL_CTX *ctx, size_t app_block_size,
2314
+ size_t hs_block_size);
2315
+
2316
+ int SSL_set_record_padding_callback(SSL *ssl,
2317
+ size_t (*cb) (SSL *ssl, int type,
2318
+ size_t len, void *arg));
2319
+ void SSL_set_record_padding_callback_arg(SSL *ssl, void *arg);
2320
+ void *SSL_get_record_padding_callback_arg(const SSL *ssl);
2321
+ int SSL_set_block_padding(SSL *ssl, size_t block_size);
2322
+ int SSL_set_block_padding_ex(SSL *ssl, size_t app_block_size,
2323
+ size_t hs_block_size);
2324
+ int SSL_set_num_tickets(SSL *s, size_t num_tickets);
2325
+ size_t SSL_get_num_tickets(const SSL *s);
2326
+ int SSL_CTX_set_num_tickets(SSL_CTX *ctx, size_t num_tickets);
2327
+ size_t SSL_CTX_get_num_tickets(const SSL_CTX *ctx);
2328
+
2329
+ /* QUIC support */
2330
+ int SSL_handle_events(SSL *s);
2331
+ __owur int SSL_get_event_timeout(SSL *s, struct timeval *tv, int *is_infinite);
2332
+ __owur int SSL_get_rpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc);
2333
+ __owur int SSL_get_wpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc);
2334
+ __owur int SSL_net_read_desired(SSL *s);
2335
+ __owur int SSL_net_write_desired(SSL *s);
2336
+ __owur int SSL_set_blocking_mode(SSL *s, int blocking);
2337
+ __owur int SSL_get_blocking_mode(SSL *s);
2338
+ __owur int SSL_set1_initial_peer_addr(SSL *s, const BIO_ADDR *peer_addr);
2339
+ __owur SSL *SSL_get0_connection(SSL *s);
2340
+ __owur int SSL_is_connection(SSL *s);
2341
+
2342
+ #define SSL_STREAM_TYPE_NONE 0
2343
+ #define SSL_STREAM_TYPE_READ (1U << 0)
2344
+ #define SSL_STREAM_TYPE_WRITE (1U << 1)
2345
+ #define SSL_STREAM_TYPE_BIDI (SSL_STREAM_TYPE_READ | SSL_STREAM_TYPE_WRITE)
2346
+ __owur int SSL_get_stream_type(SSL *s);
2347
+
2348
+ __owur uint64_t SSL_get_stream_id(SSL *s);
2349
+ __owur int SSL_is_stream_local(SSL *s);
2350
+
2351
+ #define SSL_DEFAULT_STREAM_MODE_NONE 0
2352
+ #define SSL_DEFAULT_STREAM_MODE_AUTO_BIDI 1
2353
+ #define SSL_DEFAULT_STREAM_MODE_AUTO_UNI 2
2354
+ __owur int SSL_set_default_stream_mode(SSL *s, uint32_t mode);
2355
+
2356
+ #define SSL_STREAM_FLAG_UNI (1U << 0)
2357
+ #define SSL_STREAM_FLAG_NO_BLOCK (1U << 1)
2358
+ #define SSL_STREAM_FLAG_ADVANCE (1U << 2)
2359
+ __owur SSL *SSL_new_stream(SSL *s, uint64_t flags);
2360
+
2361
+ #define SSL_INCOMING_STREAM_POLICY_AUTO 0
2362
+ #define SSL_INCOMING_STREAM_POLICY_ACCEPT 1
2363
+ #define SSL_INCOMING_STREAM_POLICY_REJECT 2
2364
+ __owur int SSL_set_incoming_stream_policy(SSL *s, int policy, uint64_t aec);
2365
+
2366
+ #define SSL_ACCEPT_STREAM_NO_BLOCK (1U << 0)
2367
+ __owur SSL *SSL_accept_stream(SSL *s, uint64_t flags);
2368
+ __owur size_t SSL_get_accept_stream_queue_len(SSL *s);
2369
+
2370
+ # ifndef OPENSSL_NO_QUIC
2371
+ __owur int SSL_inject_net_dgram(SSL *s, const unsigned char *buf,
2372
+ size_t buf_len,
2373
+ const BIO_ADDR *peer,
2374
+ const BIO_ADDR *local);
2375
+ # endif
2376
+
2377
+ typedef struct ssl_shutdown_ex_args_st {
2378
+ uint64_t quic_error_code;
2379
+ const char *quic_reason;
2380
+ } SSL_SHUTDOWN_EX_ARGS;
2381
+
2382
+ #define SSL_SHUTDOWN_FLAG_RAPID (1U << 0)
2383
+ #define SSL_SHUTDOWN_FLAG_NO_STREAM_FLUSH (1U << 1)
2384
+ #define SSL_SHUTDOWN_FLAG_NO_BLOCK (1U << 2)
2385
+ #define SSL_SHUTDOWN_FLAG_WAIT_PEER (1U << 3)
2386
+
2387
+ __owur int SSL_shutdown_ex(SSL *ssl, uint64_t flags,
2388
+ const SSL_SHUTDOWN_EX_ARGS *args,
2389
+ size_t args_len);
2390
+
2391
+ __owur int SSL_stream_conclude(SSL *ssl, uint64_t flags);
2392
+
2393
+ typedef struct ssl_stream_reset_args_st {
2394
+ uint64_t quic_error_code;
2395
+ } SSL_STREAM_RESET_ARGS;
2396
+
2397
+ __owur int SSL_stream_reset(SSL *ssl,
2398
+ const SSL_STREAM_RESET_ARGS *args,
2399
+ size_t args_len);
2400
+
2401
+ #define SSL_STREAM_STATE_NONE 0
2402
+ #define SSL_STREAM_STATE_OK 1
2403
+ #define SSL_STREAM_STATE_WRONG_DIR 2
2404
+ #define SSL_STREAM_STATE_FINISHED 3
2405
+ #define SSL_STREAM_STATE_RESET_LOCAL 4
2406
+ #define SSL_STREAM_STATE_RESET_REMOTE 5
2407
+ #define SSL_STREAM_STATE_CONN_CLOSED 6
2408
+ __owur int SSL_get_stream_read_state(SSL *ssl);
2409
+ __owur int SSL_get_stream_write_state(SSL *ssl);
2410
+
2411
+ __owur int SSL_get_stream_read_error_code(SSL *ssl, uint64_t *app_error_code);
2412
+ __owur int SSL_get_stream_write_error_code(SSL *ssl, uint64_t *app_error_code);
2413
+
2414
+ #define SSL_CONN_CLOSE_FLAG_LOCAL (1U << 0)
2415
+ #define SSL_CONN_CLOSE_FLAG_TRANSPORT (1U << 1)
2416
+
2417
+ typedef struct ssl_conn_close_info_st {
2418
+ uint64_t error_code, frame_type;
2419
+ const char *reason;
2420
+ size_t reason_len;
2421
+ uint32_t flags;
2422
+ } SSL_CONN_CLOSE_INFO;
2423
+
2424
+ __owur int SSL_get_conn_close_info(SSL *ssl,
2425
+ SSL_CONN_CLOSE_INFO *info,
2426
+ size_t info_len);
2427
+
2428
+ # define SSL_VALUE_CLASS_GENERIC 0
2429
+ # define SSL_VALUE_CLASS_FEATURE_REQUEST 1
2430
+ # define SSL_VALUE_CLASS_FEATURE_PEER_REQUEST 2
2431
+ # define SSL_VALUE_CLASS_FEATURE_NEGOTIATED 3
2432
+
2433
+ # define SSL_VALUE_NONE 0
2434
+ # define SSL_VALUE_QUIC_STREAM_BIDI_LOCAL_AVAIL 1
2435
+ # define SSL_VALUE_QUIC_STREAM_BIDI_REMOTE_AVAIL 2
2436
+ # define SSL_VALUE_QUIC_STREAM_UNI_LOCAL_AVAIL 3
2437
+ # define SSL_VALUE_QUIC_STREAM_UNI_REMOTE_AVAIL 4
2438
+ # define SSL_VALUE_QUIC_IDLE_TIMEOUT 5
2439
+ # define SSL_VALUE_EVENT_HANDLING_MODE 6
2440
+ # define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
2441
+ # define SSL_VALUE_STREAM_WRITE_BUF_USED 8
2442
+ # define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
2443
+
2444
+ # define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
2445
+ # define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
2446
+ # define SSL_VALUE_EVENT_HANDLING_MODE_EXPLICIT 2
2447
+
2448
+ int SSL_get_value_uint(SSL *s, uint32_t class_, uint32_t id, uint64_t *v);
2449
+ int SSL_set_value_uint(SSL *s, uint32_t class_, uint32_t id, uint64_t v);
2450
+
2451
+ # define SSL_get_generic_value_uint(ssl, id, v) \
2452
+ SSL_get_value_uint((ssl), SSL_VALUE_CLASS_GENERIC, (id), (v))
2453
+ # define SSL_set_generic_value_uint(ssl, id, v) \
2454
+ SSL_set_value_uint((ssl), SSL_VALUE_CLASS_GENERIC, (id), (v))
2455
+ # define SSL_get_feature_request_uint(ssl, id, v) \
2456
+ SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_REQUEST, (id), (v))
2457
+ # define SSL_set_feature_request_uint(ssl, id, v) \
2458
+ SSL_set_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_REQUEST, (id), (v))
2459
+ # define SSL_get_feature_peer_request_uint(ssl, id, v) \
2460
+ SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_PEER_REQUEST, (id), (v))
2461
+ # define SSL_get_feature_negotiated_uint(ssl, id, v) \
2462
+ SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_NEGOTIATED, (id), (v))
2463
+
2464
+ # define SSL_get_quic_stream_bidi_local_avail(ssl, value) \
2465
+ SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_BIDI_LOCAL_AVAIL, \
2466
+ (value))
2467
+ # define SSL_get_quic_stream_bidi_remote_avail(ssl, value) \
2468
+ SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_BIDI_REMOTE_AVAIL, \
2469
+ (value))
2470
+ # define SSL_get_quic_stream_uni_local_avail(ssl, value) \
2471
+ SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_UNI_LOCAL_AVAIL, \
2472
+ (value))
2473
+ # define SSL_get_quic_stream_uni_remote_avail(ssl, value) \
2474
+ SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_UNI_REMOTE_AVAIL, \
2475
+ (value))
2476
+
2477
+ # define SSL_get_event_handling_mode(ssl, value) \
2478
+ SSL_get_generic_value_uint((ssl), SSL_VALUE_EVENT_HANDLING_MODE, \
2479
+ (value))
2480
+ # define SSL_set_event_handling_mode(ssl, value) \
2481
+ SSL_set_generic_value_uint((ssl), SSL_VALUE_EVENT_HANDLING_MODE, \
2482
+ (value))
2483
+
2484
+ # define SSL_get_stream_write_buf_size(ssl, value) \
2485
+ SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_SIZE, \
2486
+ (value))
2487
+ # define SSL_get_stream_write_buf_used(ssl, value) \
2488
+ SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_USED, \
2489
+ (value))
2490
+ # define SSL_get_stream_write_buf_avail(ssl, value) \
2491
+ SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_AVAIL, \
2492
+ (value))
2493
+
2494
+ # define SSL_POLL_EVENT_NONE 0
2495
+
2496
+ # define SSL_POLL_EVENT_F (1U << 0) /* F (Failure) */
2497
+ # define SSL_POLL_EVENT_EL (1U << 1) /* EL (Exception on Listener) */
2498
+ # define SSL_POLL_EVENT_EC (1U << 2) /* EC (Exception on Conn) */
2499
+ # define SSL_POLL_EVENT_ECD (1U << 3) /* ECD (Exception on Conn Drained) */
2500
+ # define SSL_POLL_EVENT_ER (1U << 4) /* ER (Exception on Read) */
2501
+ # define SSL_POLL_EVENT_EW (1U << 5) /* EW (Exception on Write) */
2502
+ # define SSL_POLL_EVENT_R (1U << 6) /* R (Readable) */
2503
+ # define SSL_POLL_EVENT_W (1U << 7) /* W (Writable) */
2504
+ # define SSL_POLL_EVENT_IC (1U << 8) /* IC (Incoming Connection) */
2505
+ # define SSL_POLL_EVENT_ISB (1U << 9) /* ISB (Incoming Stream: Bidi) */
2506
+ # define SSL_POLL_EVENT_ISU (1U << 10) /* ISU (Incoming Stream: Uni) */
2507
+ # define SSL_POLL_EVENT_OSB (1U << 11) /* OSB (Outgoing Stream: Bidi) */
2508
+ # define SSL_POLL_EVENT_OSU (1U << 12) /* OSU (Outgoing Stream: Uni) */
2509
+
2510
+ # define SSL_POLL_EVENT_RW (SSL_POLL_EVENT_R | SSL_POLL_EVENT_W)
2511
+ # define SSL_POLL_EVENT_RE (SSL_POLL_EVENT_R | SSL_POLL_EVENT_ER)
2512
+ # define SSL_POLL_EVENT_WE (SSL_POLL_EVENT_W | SSL_POLL_EVENT_EW)
2513
+ # define SSL_POLL_EVENT_RWE (SSL_POLL_EVENT_RE | SSL_POLL_EVENT_WE)
2514
+ # define SSL_POLL_EVENT_E (SSL_POLL_EVENT_EL | SSL_POLL_EVENT_EC \
2515
+ | SSL_POLL_EVENT_ER | SSL_POLL_EVENT_EW)
2516
+ # define SSL_POLL_EVENT_IS (SSL_POLL_EVENT_ISB | SSL_POLL_EVENT_ISU)
2517
+ # define SSL_POLL_EVENT_ISE (SSL_POLL_EVENT_IS | SSL_POLL_EVENT_EC)
2518
+ # define SSL_POLL_EVENT_I (SSL_POLL_EVENT_IS | SSL_POLL_EVENT_IC)
2519
+ # define SSL_POLL_EVENT_OS (SSL_POLL_EVENT_OSB | SSL_POLL_EVENT_OSU)
2520
+ # define SSL_POLL_EVENT_OSE (SSL_POLL_EVENT_OS | SSL_POLL_EVENT_EC)
2521
+
2522
+ typedef struct ssl_poll_item_st {
2523
+ BIO_POLL_DESCRIPTOR desc;
2524
+ uint64_t events, revents;
2525
+ } SSL_POLL_ITEM;
2526
+
2527
+ # define SSL_POLL_FLAG_NO_HANDLE_EVENTS (1U << 0)
2528
+
2529
+ __owur int SSL_poll(SSL_POLL_ITEM *items,
2530
+ size_t num_items,
2531
+ size_t stride,
2532
+ const struct timeval *timeout,
2533
+ uint64_t flags,
2534
+ size_t *result_count);
2535
+
2536
+ static ossl_inline ossl_unused BIO_POLL_DESCRIPTOR
2537
+ SSL_as_poll_descriptor(SSL *s)
2538
+ {
2539
+ BIO_POLL_DESCRIPTOR d;
2540
+
2541
+ d.type = BIO_POLL_DESCRIPTOR_TYPE_SSL;
2542
+ d.value.ssl = s;
2543
+ return d;
2544
+ }
2545
+
2546
+ # ifndef OPENSSL_NO_DEPRECATED_1_1_0
2547
+ # define SSL_cache_hit(s) SSL_session_reused(s)
2548
+ # endif
2549
+
2550
+ __owur int SSL_session_reused(const SSL *s);
2551
+ __owur int SSL_is_server(const SSL *s);
2552
+
2553
+ __owur __owur SSL_CONF_CTX *SSL_CONF_CTX_new(void);
2554
+ int SSL_CONF_CTX_finish(SSL_CONF_CTX *cctx);
2555
+ void SSL_CONF_CTX_free(SSL_CONF_CTX *cctx);
2556
+ unsigned int SSL_CONF_CTX_set_flags(SSL_CONF_CTX *cctx, unsigned int flags);
2557
+ __owur unsigned int SSL_CONF_CTX_clear_flags(SSL_CONF_CTX *cctx,
2558
+ unsigned int flags);
2559
+ __owur int SSL_CONF_CTX_set1_prefix(SSL_CONF_CTX *cctx, const char *pre);
2560
+
2561
+ void SSL_CONF_CTX_set_ssl(SSL_CONF_CTX *cctx, SSL *ssl);
2562
+ void SSL_CONF_CTX_set_ssl_ctx(SSL_CONF_CTX *cctx, SSL_CTX *ctx);
2563
+
2564
+ __owur int SSL_CONF_cmd(SSL_CONF_CTX *cctx, const char *cmd, const char *value);
2565
+ __owur int SSL_CONF_cmd_argv(SSL_CONF_CTX *cctx, int *pargc, char ***pargv);
2566
+ __owur int SSL_CONF_cmd_value_type(SSL_CONF_CTX *cctx, const char *cmd);
2567
+
2568
+ void SSL_add_ssl_module(void);
2569
+ int SSL_config(SSL *s, const char *name);
2570
+ int SSL_CTX_config(SSL_CTX *ctx, const char *name);
2571
+
2572
+ # ifndef OPENSSL_NO_SSL_TRACE
2573
+ void SSL_trace(int write_p, int version, int content_type,
2574
+ const void *buf, size_t len, SSL *ssl, void *arg);
2575
+ # endif
2576
+
2577
+ # ifndef OPENSSL_NO_SOCK
2578
+ int DTLSv1_listen(SSL *s, BIO_ADDR *client);
2579
+ # endif
2580
+
2581
+ # ifndef OPENSSL_NO_CT
2582
+
2583
+ /*
2584
+ * A callback for verifying that the received SCTs are sufficient.
2585
+ * Expected to return 1 if they are sufficient, otherwise 0.
2586
+ * May return a negative integer if an error occurs.
2587
+ * A connection should be aborted if the SCTs are deemed insufficient.
2588
+ */
2589
+ typedef int (*ssl_ct_validation_cb)(const CT_POLICY_EVAL_CTX *ctx,
2590
+ const STACK_OF(SCT) *scts, void *arg);
2591
+
2592
+ /*
2593
+ * Sets a |callback| that is invoked upon receipt of ServerHelloDone to validate
2594
+ * the received SCTs.
2595
+ * If the callback returns a non-positive result, the connection is terminated.
2596
+ * Call this function before beginning a handshake.
2597
+ * If a NULL |callback| is provided, SCT validation is disabled.
2598
+ * |arg| is arbitrary userdata that will be passed to the callback whenever it
2599
+ * is invoked. Ownership of |arg| remains with the caller.
2600
+ *
2601
+ * NOTE: A side-effect of setting a CT callback is that an OCSP stapled response
2602
+ * will be requested.
2603
+ */
2604
+ int SSL_set_ct_validation_callback(SSL *s, ssl_ct_validation_cb callback,
2605
+ void *arg);
2606
+ int SSL_CTX_set_ct_validation_callback(SSL_CTX *ctx,
2607
+ ssl_ct_validation_cb callback,
2608
+ void *arg);
2609
+ #define SSL_disable_ct(s) \
2610
+ ((void) SSL_set_validation_callback((s), NULL, NULL))
2611
+ #define SSL_CTX_disable_ct(ctx) \
2612
+ ((void) SSL_CTX_set_validation_callback((ctx), NULL, NULL))
2613
+
2614
+ /*
2615
+ * The validation type enumerates the available behaviours of the built-in SSL
2616
+ * CT validation callback selected via SSL_enable_ct() and SSL_CTX_enable_ct().
2617
+ * The underlying callback is a static function in libssl.
2618
+ */
2619
+ enum {
2620
+ SSL_CT_VALIDATION_PERMISSIVE = 0,
2621
+ SSL_CT_VALIDATION_STRICT
2622
+ };
2623
+
2624
+ /*
2625
+ * Enable CT by setting up a callback that implements one of the built-in
2626
+ * validation variants. The SSL_CT_VALIDATION_PERMISSIVE variant always
2627
+ * continues the handshake, the application can make appropriate decisions at
2628
+ * handshake completion. The SSL_CT_VALIDATION_STRICT variant requires at
2629
+ * least one valid SCT, or else handshake termination will be requested. The
2630
+ * handshake may continue anyway if SSL_VERIFY_NONE is in effect.
2631
+ */
2632
+ int SSL_enable_ct(SSL *s, int validation_mode);
2633
+ int SSL_CTX_enable_ct(SSL_CTX *ctx, int validation_mode);
2634
+
2635
+ /*
2636
+ * Report whether a non-NULL callback is enabled.
2637
+ */
2638
+ int SSL_ct_is_enabled(const SSL *s);
2639
+ int SSL_CTX_ct_is_enabled(const SSL_CTX *ctx);
2640
+
2641
+ /* Gets the SCTs received from a connection */
2642
+ const STACK_OF(SCT) *SSL_get0_peer_scts(SSL *s);
2643
+
2644
+ /*
2645
+ * Loads the CT log list from the default location.
2646
+ * If a CTLOG_STORE has previously been set using SSL_CTX_set_ctlog_store,
2647
+ * the log information loaded from this file will be appended to the
2648
+ * CTLOG_STORE.
2649
+ * Returns 1 on success, 0 otherwise.
2650
+ */
2651
+ int SSL_CTX_set_default_ctlog_list_file(SSL_CTX *ctx);
2652
+
2653
+ /*
2654
+ * Loads the CT log list from the specified file path.
2655
+ * If a CTLOG_STORE has previously been set using SSL_CTX_set_ctlog_store,
2656
+ * the log information loaded from this file will be appended to the
2657
+ * CTLOG_STORE.
2658
+ * Returns 1 on success, 0 otherwise.
2659
+ */
2660
+ int SSL_CTX_set_ctlog_list_file(SSL_CTX *ctx, const char *path);
2661
+
2662
+ /*
2663
+ * Sets the CT log list used by all SSL connections created from this SSL_CTX.
2664
+ * Ownership of the CTLOG_STORE is transferred to the SSL_CTX.
2665
+ */
2666
+ void SSL_CTX_set0_ctlog_store(SSL_CTX *ctx, CTLOG_STORE *logs);
2667
+
2668
+ /*
2669
+ * Gets the CT log list used by all SSL connections created from this SSL_CTX.
2670
+ * This will be NULL unless one of the following functions has been called:
2671
+ * - SSL_CTX_set_default_ctlog_list_file
2672
+ * - SSL_CTX_set_ctlog_list_file
2673
+ * - SSL_CTX_set_ctlog_store
2674
+ */
2675
+ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
2676
+
2677
+ # endif /* OPENSSL_NO_CT */
2678
+
2679
+ /* What the "other" parameter contains in security callback */
2680
+ /* Mask for type */
2681
+ # define SSL_SECOP_OTHER_TYPE 0xffff0000
2682
+ # define SSL_SECOP_OTHER_NONE 0
2683
+ # define SSL_SECOP_OTHER_CIPHER (1 << 16)
2684
+ # define SSL_SECOP_OTHER_CURVE (2 << 16)
2685
+ # define SSL_SECOP_OTHER_DH (3 << 16)
2686
+ # define SSL_SECOP_OTHER_PKEY (4 << 16)
2687
+ # define SSL_SECOP_OTHER_SIGALG (5 << 16)
2688
+ # define SSL_SECOP_OTHER_CERT (6 << 16)
2689
+
2690
+ /* Indicated operation refers to peer key or certificate */
2691
+ # define SSL_SECOP_PEER 0x1000
2692
+
2693
+ /* Values for "op" parameter in security callback */
2694
+
2695
+ /* Called to filter ciphers */
2696
+ /* Ciphers client supports */
2697
+ # define SSL_SECOP_CIPHER_SUPPORTED (1 | SSL_SECOP_OTHER_CIPHER)
2698
+ /* Cipher shared by client/server */
2699
+ # define SSL_SECOP_CIPHER_SHARED (2 | SSL_SECOP_OTHER_CIPHER)
2700
+ /* Sanity check of cipher server selects */
2701
+ # define SSL_SECOP_CIPHER_CHECK (3 | SSL_SECOP_OTHER_CIPHER)
2702
+ /* Curves supported by client */
2703
+ # define SSL_SECOP_CURVE_SUPPORTED (4 | SSL_SECOP_OTHER_CURVE)
2704
+ /* Curves shared by client/server */
2705
+ # define SSL_SECOP_CURVE_SHARED (5 | SSL_SECOP_OTHER_CURVE)
2706
+ /* Sanity check of curve server selects */
2707
+ # define SSL_SECOP_CURVE_CHECK (6 | SSL_SECOP_OTHER_CURVE)
2708
+ /* Temporary DH key */
2709
+ # define SSL_SECOP_TMP_DH (7 | SSL_SECOP_OTHER_PKEY)
2710
+ /* SSL/TLS version */
2711
+ # define SSL_SECOP_VERSION (9 | SSL_SECOP_OTHER_NONE)
2712
+ /* Session tickets */
2713
+ # define SSL_SECOP_TICKET (10 | SSL_SECOP_OTHER_NONE)
2714
+ /* Supported signature algorithms sent to peer */
2715
+ # define SSL_SECOP_SIGALG_SUPPORTED (11 | SSL_SECOP_OTHER_SIGALG)
2716
+ /* Shared signature algorithm */
2717
+ # define SSL_SECOP_SIGALG_SHARED (12 | SSL_SECOP_OTHER_SIGALG)
2718
+ /* Sanity check signature algorithm allowed */
2719
+ # define SSL_SECOP_SIGALG_CHECK (13 | SSL_SECOP_OTHER_SIGALG)
2720
+ /* Used to get mask of supported public key signature algorithms */
2721
+ # define SSL_SECOP_SIGALG_MASK (14 | SSL_SECOP_OTHER_SIGALG)
2722
+ /* Use to see if compression is allowed */
2723
+ # define SSL_SECOP_COMPRESSION (15 | SSL_SECOP_OTHER_NONE)
2724
+ /* EE key in certificate */
2725
+ # define SSL_SECOP_EE_KEY (16 | SSL_SECOP_OTHER_CERT)
2726
+ /* CA key in certificate */
2727
+ # define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
2728
+ /* CA digest algorithm in certificate */
2729
+ # define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
2730
+ /* Peer EE key in certificate */
2731
+ # define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
2732
+ /* Peer CA key in certificate */
2733
+ # define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
2734
+ /* Peer CA digest algorithm in certificate */
2735
+ # define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
2736
+
2737
+ void SSL_set_security_level(SSL *s, int level);
2738
+ __owur int SSL_get_security_level(const SSL *s);
2739
+ void SSL_set_security_callback(SSL *s,
2740
+ int (*cb) (const SSL *s, const SSL_CTX *ctx,
2741
+ int op, int bits, int nid,
2742
+ void *other, void *ex));
2743
+ int (*SSL_get_security_callback(const SSL *s)) (const SSL *s,
2744
+ const SSL_CTX *ctx, int op,
2745
+ int bits, int nid, void *other,
2746
+ void *ex);
2747
+ void SSL_set0_security_ex_data(SSL *s, void *ex);
2748
+ __owur void *SSL_get0_security_ex_data(const SSL *s);
2749
+
2750
+ void SSL_CTX_set_security_level(SSL_CTX *ctx, int level);
2751
+ __owur int SSL_CTX_get_security_level(const SSL_CTX *ctx);
2752
+ void SSL_CTX_set_security_callback(SSL_CTX *ctx,
2753
+ int (*cb) (const SSL *s, const SSL_CTX *ctx,
2754
+ int op, int bits, int nid,
2755
+ void *other, void *ex));
2756
+ int (*SSL_CTX_get_security_callback(const SSL_CTX *ctx)) (const SSL *s,
2757
+ const SSL_CTX *ctx,
2758
+ int op, int bits,
2759
+ int nid,
2760
+ void *other,
2761
+ void *ex);
2762
+ void SSL_CTX_set0_security_ex_data(SSL_CTX *ctx, void *ex);
2763
+ __owur void *SSL_CTX_get0_security_ex_data(const SSL_CTX *ctx);
2764
+
2765
+ /* OPENSSL_INIT flag 0x010000 reserved for internal use */
2766
+ # define OPENSSL_INIT_NO_LOAD_SSL_STRINGS 0x00100000L
2767
+ # define OPENSSL_INIT_LOAD_SSL_STRINGS 0x00200000L
2768
+
2769
+ # define OPENSSL_INIT_SSL_DEFAULT \
2770
+ (OPENSSL_INIT_LOAD_SSL_STRINGS | OPENSSL_INIT_LOAD_CRYPTO_STRINGS)
2771
+
2772
+ int OPENSSL_init_ssl(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings);
2773
+
2774
+ # ifndef OPENSSL_NO_UNIT_TEST
2775
+ __owur const struct openssl_ssl_test_functions *SSL_test_functions(void);
2776
+ # endif
2777
+
2778
+ __owur int SSL_free_buffers(SSL *ssl);
2779
+ __owur int SSL_alloc_buffers(SSL *ssl);
2780
+
2781
+ /* Status codes passed to the decrypt session ticket callback. Some of these
2782
+ * are for internal use only and are never passed to the callback. */
2783
+ typedef int SSL_TICKET_STATUS;
2784
+
2785
+ /* Support for ticket appdata */
2786
+ /* fatal error, malloc failure */
2787
+ # define SSL_TICKET_FATAL_ERR_MALLOC 0
2788
+ /* fatal error, either from parsing or decrypting the ticket */
2789
+ # define SSL_TICKET_FATAL_ERR_OTHER 1
2790
+ /* No ticket present */
2791
+ # define SSL_TICKET_NONE 2
2792
+ /* Empty ticket present */
2793
+ # define SSL_TICKET_EMPTY 3
2794
+ /* the ticket couldn't be decrypted */
2795
+ # define SSL_TICKET_NO_DECRYPT 4
2796
+ /* a ticket was successfully decrypted */
2797
+ # define SSL_TICKET_SUCCESS 5
2798
+ /* same as above but the ticket needs to be renewed */
2799
+ # define SSL_TICKET_SUCCESS_RENEW 6
2800
+
2801
+ /* Return codes for the decrypt session ticket callback */
2802
+ typedef int SSL_TICKET_RETURN;
2803
+
2804
+ /* An error occurred */
2805
+ #define SSL_TICKET_RETURN_ABORT 0
2806
+ /* Do not use the ticket, do not send a renewed ticket to the client */
2807
+ #define SSL_TICKET_RETURN_IGNORE 1
2808
+ /* Do not use the ticket, send a renewed ticket to the client */
2809
+ #define SSL_TICKET_RETURN_IGNORE_RENEW 2
2810
+ /* Use the ticket, do not send a renewed ticket to the client */
2811
+ #define SSL_TICKET_RETURN_USE 3
2812
+ /* Use the ticket, send a renewed ticket to the client */
2813
+ #define SSL_TICKET_RETURN_USE_RENEW 4
2814
+
2815
+ typedef int (*SSL_CTX_generate_session_ticket_fn)(SSL *s, void *arg);
2816
+ typedef SSL_TICKET_RETURN (*SSL_CTX_decrypt_session_ticket_fn)(SSL *s, SSL_SESSION *ss,
2817
+ const unsigned char *keyname,
2818
+ size_t keyname_length,
2819
+ SSL_TICKET_STATUS status,
2820
+ void *arg);
2821
+ int SSL_CTX_set_session_ticket_cb(SSL_CTX *ctx,
2822
+ SSL_CTX_generate_session_ticket_fn gen_cb,
2823
+ SSL_CTX_decrypt_session_ticket_fn dec_cb,
2824
+ void *arg);
2825
+ int SSL_SESSION_set1_ticket_appdata(SSL_SESSION *ss, const void *data, size_t len);
2826
+ int SSL_SESSION_get0_ticket_appdata(SSL_SESSION *ss, void **data, size_t *len);
2827
+
2828
+ typedef unsigned int (*DTLS_timer_cb)(SSL *s, unsigned int timer_us);
2829
+
2830
+ void DTLS_set_timer_cb(SSL *s, DTLS_timer_cb cb);
2831
+
2832
+
2833
+ typedef int (*SSL_allow_early_data_cb_fn)(SSL *s, void *arg);
2834
+ void SSL_CTX_set_allow_early_data_cb(SSL_CTX *ctx,
2835
+ SSL_allow_early_data_cb_fn cb,
2836
+ void *arg);
2837
+ void SSL_set_allow_early_data_cb(SSL *s,
2838
+ SSL_allow_early_data_cb_fn cb,
2839
+ void *arg);
2840
+
2841
+ /* store the default cipher strings inside the library */
2842
+ const char *OSSL_default_cipher_list(void);
2843
+ const char *OSSL_default_ciphersuites(void);
2844
+
2845
+ /* RFC8879 Certificate compression APIs */
2846
+
2847
+ int SSL_CTX_compress_certs(SSL_CTX *ctx, int alg);
2848
+ int SSL_compress_certs(SSL *ssl, int alg);
2849
+
2850
+ int SSL_CTX_set1_cert_comp_preference(SSL_CTX *ctx, int *algs, size_t len);
2851
+ int SSL_set1_cert_comp_preference(SSL *ssl, int *algs, size_t len);
2852
+
2853
+ int SSL_CTX_set1_compressed_cert(SSL_CTX *ctx, int algorithm, unsigned char *comp_data,
2854
+ size_t comp_length, size_t orig_length);
2855
+ int SSL_set1_compressed_cert(SSL *ssl, int algorithm, unsigned char *comp_data,
2856
+ size_t comp_length, size_t orig_length);
2857
+ size_t SSL_CTX_get1_compressed_cert(SSL_CTX *ctx, int alg, unsigned char **data, size_t *orig_len);
2858
+ size_t SSL_get1_compressed_cert(SSL *ssl, int alg, unsigned char **data, size_t *orig_len);
2859
+
2860
+ __owur int SSL_add_expected_rpk(SSL *s, EVP_PKEY *rpk);
2861
+ __owur EVP_PKEY *SSL_get0_peer_rpk(const SSL *s);
2862
+ __owur EVP_PKEY *SSL_SESSION_get0_peer_rpk(SSL_SESSION *s);
2863
+ __owur int SSL_get_negotiated_client_cert_type(const SSL *s);
2864
+ __owur int SSL_get_negotiated_server_cert_type(const SSL *s);
2865
+
2866
+ __owur int SSL_set1_client_cert_type(SSL *s, const unsigned char *val, size_t len);
2867
+ __owur int SSL_set1_server_cert_type(SSL *s, const unsigned char *val, size_t len);
2868
+ __owur int SSL_CTX_set1_client_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len);
2869
+ __owur int SSL_CTX_set1_server_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len);
2870
+ __owur int SSL_get0_client_cert_type(const SSL *s, unsigned char **t, size_t *len);
2871
+ __owur int SSL_get0_server_cert_type(const SSL *s, unsigned char **t, size_t *len);
2872
+ __owur int SSL_CTX_get0_client_cert_type(const SSL_CTX *ctx, unsigned char **t, size_t *len);
2873
+ __owur int SSL_CTX_get0_server_cert_type(const SSL_CTX *s, unsigned char **t, size_t *len);
2874
+
2875
+ # ifdef __cplusplus
2876
+ }
2877
+ # endif
2878
+ #endif