protocol-quic 0.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 (343) hide show
  1. checksums.yaml +7 -0
  2. checksums.yaml.gz.sig +0 -0
  3. data/ext/ngtcp2/AUTHORS +44 -0
  4. data/ext/ngtcp2/CMakeLists.txt +431 -0
  5. data/ext/ngtcp2/CMakeOptions.txt +17 -0
  6. data/ext/ngtcp2/COPYING +22 -0
  7. data/ext/ngtcp2/ChangeLog +0 -0
  8. data/ext/ngtcp2/Makefile.am +60 -0
  9. data/ext/ngtcp2/NEWS +0 -0
  10. data/ext/ngtcp2/README +1 -0
  11. data/ext/ngtcp2/README.rst +258 -0
  12. data/ext/ngtcp2/ci/build_boringssl.sh +10 -0
  13. data/ext/ngtcp2/ci/build_nghttp3.sh +9 -0
  14. data/ext/ngtcp2/ci/build_openssl1.sh +8 -0
  15. data/ext/ngtcp2/ci/build_openssl1_cross.sh +9 -0
  16. data/ext/ngtcp2/ci/build_openssl3.sh +8 -0
  17. data/ext/ngtcp2/ci/build_picotls.sh +26 -0
  18. data/ext/ngtcp2/ci/build_wolfssl.sh +9 -0
  19. data/ext/ngtcp2/ci/gen-certificate.sh +8 -0
  20. data/ext/ngtcp2/cmake/ExtractValidFlags.cmake +31 -0
  21. data/ext/ngtcp2/cmake/FindCUnit.cmake +40 -0
  22. data/ext/ngtcp2/cmake/FindJemalloc.cmake +40 -0
  23. data/ext/ngtcp2/cmake/FindLibev.cmake +38 -0
  24. data/ext/ngtcp2/cmake/FindLibnghttp3.cmake +41 -0
  25. data/ext/ngtcp2/cmake/Findwolfssl.cmake +41 -0
  26. data/ext/ngtcp2/cmake/Version.cmake +11 -0
  27. data/ext/ngtcp2/cmakeconfig.h.in +36 -0
  28. data/ext/ngtcp2/configure.ac +755 -0
  29. data/ext/ngtcp2/crypto/CMakeLists.txt +56 -0
  30. data/ext/ngtcp2/crypto/Makefile.am +49 -0
  31. data/ext/ngtcp2/crypto/boringssl/CMakeLists.txt +64 -0
  32. data/ext/ngtcp2/crypto/boringssl/Makefile.am +39 -0
  33. data/ext/ngtcp2/crypto/boringssl/boringssl.c +630 -0
  34. data/ext/ngtcp2/crypto/boringssl/libngtcp2_crypto_boringssl.pc.in +33 -0
  35. data/ext/ngtcp2/crypto/gnutls/CMakeLists.txt +86 -0
  36. data/ext/ngtcp2/crypto/gnutls/Makefile.am +43 -0
  37. data/ext/ngtcp2/crypto/gnutls/gnutls.c +644 -0
  38. data/ext/ngtcp2/crypto/gnutls/libngtcp2_crypto_gnutls.pc.in +33 -0
  39. data/ext/ngtcp2/crypto/includes/CMakeLists.txt +56 -0
  40. data/ext/ngtcp2/crypto/includes/Makefile.am +45 -0
  41. data/ext/ngtcp2/crypto/includes/ngtcp2/ngtcp2_crypto.h +893 -0
  42. data/ext/ngtcp2/crypto/includes/ngtcp2/ngtcp2_crypto_boringssl.h +104 -0
  43. data/ext/ngtcp2/crypto/includes/ngtcp2/ngtcp2_crypto_gnutls.h +107 -0
  44. data/ext/ngtcp2/crypto/includes/ngtcp2/ngtcp2_crypto_openssl.h +132 -0
  45. data/ext/ngtcp2/crypto/includes/ngtcp2/ngtcp2_crypto_picotls.h +246 -0
  46. data/ext/ngtcp2/crypto/includes/ngtcp2/ngtcp2_crypto_wolfssl.h +106 -0
  47. data/ext/ngtcp2/crypto/openssl/CMakeLists.txt +86 -0
  48. data/ext/ngtcp2/crypto/openssl/Makefile.am +43 -0
  49. data/ext/ngtcp2/crypto/openssl/libngtcp2_crypto_openssl.pc.in +33 -0
  50. data/ext/ngtcp2/crypto/openssl/openssl.c +807 -0
  51. data/ext/ngtcp2/crypto/picotls/CMakeLists.txt +65 -0
  52. data/ext/ngtcp2/crypto/picotls/Makefile.am +39 -0
  53. data/ext/ngtcp2/crypto/picotls/libngtcp2_crypto_picotls.pc.in +33 -0
  54. data/ext/ngtcp2/crypto/picotls/picotls.c +707 -0
  55. data/ext/ngtcp2/crypto/shared.c +1431 -0
  56. data/ext/ngtcp2/crypto/shared.h +350 -0
  57. data/ext/ngtcp2/crypto/wolfssl/CMakeLists.txt +84 -0
  58. data/ext/ngtcp2/crypto/wolfssl/Makefile.am +43 -0
  59. data/ext/ngtcp2/crypto/wolfssl/libngtcp2_crypto_wolfssl.pc.in +33 -0
  60. data/ext/ngtcp2/crypto/wolfssl/wolfssl.c +534 -0
  61. data/ext/ngtcp2/doc/Makefile.am +65 -0
  62. data/ext/ngtcp2/doc/make.bat +35 -0
  63. data/ext/ngtcp2/doc/mkapiref.py +356 -0
  64. data/ext/ngtcp2/doc/source/conf.py.in +94 -0
  65. data/ext/ngtcp2/doc/source/index.rst +22 -0
  66. data/ext/ngtcp2/doc/source/programmers-guide.rst +476 -0
  67. data/ext/ngtcp2/docker/Dockerfile +39 -0
  68. data/ext/ngtcp2/examples/CMakeLists.txt +361 -0
  69. data/ext/ngtcp2/examples/Makefile.am +228 -0
  70. data/ext/ngtcp2/examples/client.cc +3049 -0
  71. data/ext/ngtcp2/examples/client.h +192 -0
  72. data/ext/ngtcp2/examples/client_base.cc +202 -0
  73. data/ext/ngtcp2/examples/client_base.h +213 -0
  74. data/ext/ngtcp2/examples/debug.cc +298 -0
  75. data/ext/ngtcp2/examples/debug.h +124 -0
  76. data/ext/ngtcp2/examples/examplestest.cc +84 -0
  77. data/ext/ngtcp2/examples/gtlssimpleclient.c +720 -0
  78. data/ext/ngtcp2/examples/h09client.cc +2601 -0
  79. data/ext/ngtcp2/examples/h09client.h +196 -0
  80. data/ext/ngtcp2/examples/h09server.cc +3024 -0
  81. data/ext/ngtcp2/examples/h09server.h +237 -0
  82. data/ext/ngtcp2/examples/http.cc +138 -0
  83. data/ext/ngtcp2/examples/http.h +44 -0
  84. data/ext/ngtcp2/examples/network.h +80 -0
  85. data/ext/ngtcp2/examples/server.cc +3731 -0
  86. data/ext/ngtcp2/examples/server.h +256 -0
  87. data/ext/ngtcp2/examples/server_base.cc +58 -0
  88. data/ext/ngtcp2/examples/server_base.h +195 -0
  89. data/ext/ngtcp2/examples/shared.cc +385 -0
  90. data/ext/ngtcp2/examples/shared.h +96 -0
  91. data/ext/ngtcp2/examples/simpleclient.c +683 -0
  92. data/ext/ngtcp2/examples/template.h +71 -0
  93. data/ext/ngtcp2/examples/tests/README.rst +60 -0
  94. data/ext/ngtcp2/examples/tests/__init__.py +0 -0
  95. data/ext/ngtcp2/examples/tests/config.ini.in +32 -0
  96. data/ext/ngtcp2/examples/tests/conftest.py +28 -0
  97. data/ext/ngtcp2/examples/tests/ngtcp2test/__init__.py +6 -0
  98. data/ext/ngtcp2/examples/tests/ngtcp2test/certs.py +476 -0
  99. data/ext/ngtcp2/examples/tests/ngtcp2test/client.py +187 -0
  100. data/ext/ngtcp2/examples/tests/ngtcp2test/env.py +191 -0
  101. data/ext/ngtcp2/examples/tests/ngtcp2test/log.py +101 -0
  102. data/ext/ngtcp2/examples/tests/ngtcp2test/server.py +137 -0
  103. data/ext/ngtcp2/examples/tests/ngtcp2test/tls.py +983 -0
  104. data/ext/ngtcp2/examples/tests/test_01_handshake.py +30 -0
  105. data/ext/ngtcp2/examples/tests/test_02_resume.py +46 -0
  106. data/ext/ngtcp2/examples/tests/test_03_earlydata.py +56 -0
  107. data/ext/ngtcp2/examples/tests/test_04_clientcert.py +57 -0
  108. data/ext/ngtcp2/examples/tests/test_05_ciphers.py +46 -0
  109. data/ext/ngtcp2/examples/tls_client_context.h +52 -0
  110. data/ext/ngtcp2/examples/tls_client_context_boringssl.cc +126 -0
  111. data/ext/ngtcp2/examples/tls_client_context_boringssl.h +49 -0
  112. data/ext/ngtcp2/examples/tls_client_context_gnutls.cc +74 -0
  113. data/ext/ngtcp2/examples/tls_client_context_gnutls.h +50 -0
  114. data/ext/ngtcp2/examples/tls_client_context_openssl.cc +137 -0
  115. data/ext/ngtcp2/examples/tls_client_context_openssl.h +49 -0
  116. data/ext/ngtcp2/examples/tls_client_context_picotls.cc +158 -0
  117. data/ext/ngtcp2/examples/tls_client_context_picotls.h +53 -0
  118. data/ext/ngtcp2/examples/tls_client_context_wolfssl.cc +177 -0
  119. data/ext/ngtcp2/examples/tls_client_context_wolfssl.h +51 -0
  120. data/ext/ngtcp2/examples/tls_client_session.h +52 -0
  121. data/ext/ngtcp2/examples/tls_client_session_boringssl.cc +110 -0
  122. data/ext/ngtcp2/examples/tls_client_session_boringssl.h +52 -0
  123. data/ext/ngtcp2/examples/tls_client_session_gnutls.cc +190 -0
  124. data/ext/ngtcp2/examples/tls_client_session_gnutls.h +52 -0
  125. data/ext/ngtcp2/examples/tls_client_session_openssl.cc +113 -0
  126. data/ext/ngtcp2/examples/tls_client_session_openssl.h +52 -0
  127. data/ext/ngtcp2/examples/tls_client_session_picotls.cc +147 -0
  128. data/ext/ngtcp2/examples/tls_client_session_picotls.h +52 -0
  129. data/ext/ngtcp2/examples/tls_client_session_wolfssl.cc +160 -0
  130. data/ext/ngtcp2/examples/tls_client_session_wolfssl.h +52 -0
  131. data/ext/ngtcp2/examples/tls_server_context.h +52 -0
  132. data/ext/ngtcp2/examples/tls_server_context_boringssl.cc +257 -0
  133. data/ext/ngtcp2/examples/tls_server_context_boringssl.h +54 -0
  134. data/ext/ngtcp2/examples/tls_server_context_gnutls.cc +99 -0
  135. data/ext/ngtcp2/examples/tls_server_context_gnutls.h +59 -0
  136. data/ext/ngtcp2/examples/tls_server_context_openssl.cc +338 -0
  137. data/ext/ngtcp2/examples/tls_server_context_openssl.h +54 -0
  138. data/ext/ngtcp2/examples/tls_server_context_picotls.cc +321 -0
  139. data/ext/ngtcp2/examples/tls_server_context_picotls.h +58 -0
  140. data/ext/ngtcp2/examples/tls_server_context_wolfssl.cc +284 -0
  141. data/ext/ngtcp2/examples/tls_server_context_wolfssl.h +55 -0
  142. data/ext/ngtcp2/examples/tls_server_session.h +52 -0
  143. data/ext/ngtcp2/examples/tls_server_session_boringssl.cc +84 -0
  144. data/ext/ngtcp2/examples/tls_server_session_boringssl.h +47 -0
  145. data/ext/ngtcp2/examples/tls_server_session_gnutls.cc +155 -0
  146. data/ext/ngtcp2/examples/tls_server_session_gnutls.h +46 -0
  147. data/ext/ngtcp2/examples/tls_server_session_openssl.cc +54 -0
  148. data/ext/ngtcp2/examples/tls_server_session_openssl.h +47 -0
  149. data/ext/ngtcp2/examples/tls_server_session_picotls.cc +70 -0
  150. data/ext/ngtcp2/examples/tls_server_session_picotls.h +47 -0
  151. data/ext/ngtcp2/examples/tls_server_session_wolfssl.cc +55 -0
  152. data/ext/ngtcp2/examples/tls_server_session_wolfssl.h +47 -0
  153. data/ext/ngtcp2/examples/tls_session_base_gnutls.cc +87 -0
  154. data/ext/ngtcp2/examples/tls_session_base_gnutls.h +51 -0
  155. data/ext/ngtcp2/examples/tls_session_base_openssl.cc +54 -0
  156. data/ext/ngtcp2/examples/tls_session_base_openssl.h +52 -0
  157. data/ext/ngtcp2/examples/tls_session_base_picotls.cc +56 -0
  158. data/ext/ngtcp2/examples/tls_session_base_picotls.h +54 -0
  159. data/ext/ngtcp2/examples/tls_session_base_wolfssl.cc +54 -0
  160. data/ext/ngtcp2/examples/tls_session_base_wolfssl.h +54 -0
  161. data/ext/ngtcp2/examples/tls_shared_picotls.cc +59 -0
  162. data/ext/ngtcp2/examples/tls_shared_picotls.h +36 -0
  163. data/ext/ngtcp2/examples/util.cc +646 -0
  164. data/ext/ngtcp2/examples/util.h +361 -0
  165. data/ext/ngtcp2/examples/util_gnutls.cc +136 -0
  166. data/ext/ngtcp2/examples/util_openssl.cc +131 -0
  167. data/ext/ngtcp2/examples/util_test.cc +237 -0
  168. data/ext/ngtcp2/examples/util_test.h +45 -0
  169. data/ext/ngtcp2/examples/util_wolfssl.cc +130 -0
  170. data/ext/ngtcp2/fuzz/corpus/decode_frame/ack +0 -0
  171. data/ext/ngtcp2/fuzz/corpus/decode_frame/ack_ecn +0 -0
  172. data/ext/ngtcp2/fuzz/corpus/decode_frame/connection_close +0 -0
  173. data/ext/ngtcp2/fuzz/corpus/decode_frame/crypto +1 -0
  174. data/ext/ngtcp2/fuzz/corpus/decode_frame/data_blocked +1 -0
  175. data/ext/ngtcp2/fuzz/corpus/decode_frame/datagram +1 -0
  176. data/ext/ngtcp2/fuzz/corpus/decode_frame/datagram_len +1 -0
  177. data/ext/ngtcp2/fuzz/corpus/decode_frame/max_data +1 -0
  178. data/ext/ngtcp2/fuzz/corpus/decode_frame/max_stream_data +0 -0
  179. data/ext/ngtcp2/fuzz/corpus/decode_frame/max_streams +0 -0
  180. data/ext/ngtcp2/fuzz/corpus/decode_frame/new_connection_id +1 -0
  181. data/ext/ngtcp2/fuzz/corpus/decode_frame/new_token +1 -0
  182. data/ext/ngtcp2/fuzz/corpus/decode_frame/path_challenge +1 -0
  183. data/ext/ngtcp2/fuzz/corpus/decode_frame/path_response +1 -0
  184. data/ext/ngtcp2/fuzz/corpus/decode_frame/reset_stream +0 -0
  185. data/ext/ngtcp2/fuzz/corpus/decode_frame/retire_connection_id +1 -0
  186. data/ext/ngtcp2/fuzz/corpus/decode_frame/stop_sending +0 -0
  187. data/ext/ngtcp2/fuzz/corpus/decode_frame/stream +0 -0
  188. data/ext/ngtcp2/fuzz/corpus/decode_frame/stream_data_blocked +0 -0
  189. data/ext/ngtcp2/fuzz/corpus/decode_frame/stream_len +0 -0
  190. data/ext/ngtcp2/fuzz/corpus/decode_frame/streams_blocked +0 -0
  191. data/ext/ngtcp2/fuzz/corpus/ksl/random +0 -0
  192. data/ext/ngtcp2/fuzz/decode_frame.cc +25 -0
  193. data/ext/ngtcp2/fuzz/ksl.cc +77 -0
  194. data/ext/ngtcp2/interop/Dockerfile +39 -0
  195. data/ext/ngtcp2/interop/run_endpoint.sh +93 -0
  196. data/ext/ngtcp2/lib/CMakeLists.txt +110 -0
  197. data/ext/ngtcp2/lib/Makefile.am +122 -0
  198. data/ext/ngtcp2/lib/includes/CMakeLists.txt +4 -0
  199. data/ext/ngtcp2/lib/includes/Makefile.am +25 -0
  200. data/ext/ngtcp2/lib/includes/ngtcp2/ngtcp2.h +5843 -0
  201. data/ext/ngtcp2/lib/includes/ngtcp2/version.h.in +51 -0
  202. data/ext/ngtcp2/lib/libngtcp2.pc.in +33 -0
  203. data/ext/ngtcp2/lib/ngtcp2_acktr.c +335 -0
  204. data/ext/ngtcp2/lib/ngtcp2_acktr.h +221 -0
  205. data/ext/ngtcp2/lib/ngtcp2_addr.c +117 -0
  206. data/ext/ngtcp2/lib/ngtcp2_addr.h +69 -0
  207. data/ext/ngtcp2/lib/ngtcp2_balloc.c +90 -0
  208. data/ext/ngtcp2/lib/ngtcp2_balloc.h +91 -0
  209. data/ext/ngtcp2/lib/ngtcp2_bbr.c +693 -0
  210. data/ext/ngtcp2/lib/ngtcp2_bbr.h +157 -0
  211. data/ext/ngtcp2/lib/ngtcp2_bbr2.c +1490 -0
  212. data/ext/ngtcp2/lib/ngtcp2_bbr2.h +149 -0
  213. data/ext/ngtcp2/lib/ngtcp2_buf.c +56 -0
  214. data/ext/ngtcp2/lib/ngtcp2_buf.h +108 -0
  215. data/ext/ngtcp2/lib/ngtcp2_cc.c +616 -0
  216. data/ext/ngtcp2/lib/ngtcp2_cc.h +422 -0
  217. data/ext/ngtcp2/lib/ngtcp2_cid.c +147 -0
  218. data/ext/ngtcp2/lib/ngtcp2_cid.h +175 -0
  219. data/ext/ngtcp2/lib/ngtcp2_conn.c +13731 -0
  220. data/ext/ngtcp2/lib/ngtcp2_conn.h +1119 -0
  221. data/ext/ngtcp2/lib/ngtcp2_conn_stat.h +131 -0
  222. data/ext/ngtcp2/lib/ngtcp2_conv.c +291 -0
  223. data/ext/ngtcp2/lib/ngtcp2_conv.h +208 -0
  224. data/ext/ngtcp2/lib/ngtcp2_crypto.c +895 -0
  225. data/ext/ngtcp2/lib/ngtcp2_crypto.h +148 -0
  226. data/ext/ngtcp2/lib/ngtcp2_err.c +154 -0
  227. data/ext/ngtcp2/lib/ngtcp2_err.h +34 -0
  228. data/ext/ngtcp2/lib/ngtcp2_gaptr.c +167 -0
  229. data/ext/ngtcp2/lib/ngtcp2_gaptr.h +98 -0
  230. data/ext/ngtcp2/lib/ngtcp2_idtr.c +79 -0
  231. data/ext/ngtcp2/lib/ngtcp2_idtr.h +89 -0
  232. data/ext/ngtcp2/lib/ngtcp2_ksl.c +819 -0
  233. data/ext/ngtcp2/lib/ngtcp2_ksl.h +345 -0
  234. data/ext/ngtcp2/lib/ngtcp2_log.c +822 -0
  235. data/ext/ngtcp2/lib/ngtcp2_log.h +123 -0
  236. data/ext/ngtcp2/lib/ngtcp2_macro.h +58 -0
  237. data/ext/ngtcp2/lib/ngtcp2_map.c +336 -0
  238. data/ext/ngtcp2/lib/ngtcp2_map.h +136 -0
  239. data/ext/ngtcp2/lib/ngtcp2_mem.c +113 -0
  240. data/ext/ngtcp2/lib/ngtcp2_mem.h +72 -0
  241. data/ext/ngtcp2/lib/ngtcp2_net.h +136 -0
  242. data/ext/ngtcp2/lib/ngtcp2_objalloc.c +40 -0
  243. data/ext/ngtcp2/lib/ngtcp2_objalloc.h +140 -0
  244. data/ext/ngtcp2/lib/ngtcp2_opl.c +46 -0
  245. data/ext/ngtcp2/lib/ngtcp2_opl.h +65 -0
  246. data/ext/ngtcp2/lib/ngtcp2_path.c +77 -0
  247. data/ext/ngtcp2/lib/ngtcp2_path.h +49 -0
  248. data/ext/ngtcp2/lib/ngtcp2_pkt.c +2527 -0
  249. data/ext/ngtcp2/lib/ngtcp2_pkt.h +1235 -0
  250. data/ext/ngtcp2/lib/ngtcp2_pmtud.c +160 -0
  251. data/ext/ngtcp2/lib/ngtcp2_pmtud.h +123 -0
  252. data/ext/ngtcp2/lib/ngtcp2_ppe.c +230 -0
  253. data/ext/ngtcp2/lib/ngtcp2_ppe.h +153 -0
  254. data/ext/ngtcp2/lib/ngtcp2_pq.c +164 -0
  255. data/ext/ngtcp2/lib/ngtcp2_pq.h +126 -0
  256. data/ext/ngtcp2/lib/ngtcp2_pv.c +172 -0
  257. data/ext/ngtcp2/lib/ngtcp2_pv.h +194 -0
  258. data/ext/ngtcp2/lib/ngtcp2_qlog.c +1219 -0
  259. data/ext/ngtcp2/lib/ngtcp2_qlog.h +161 -0
  260. data/ext/ngtcp2/lib/ngtcp2_range.c +61 -0
  261. data/ext/ngtcp2/lib/ngtcp2_range.h +80 -0
  262. data/ext/ngtcp2/lib/ngtcp2_rcvry.h +40 -0
  263. data/ext/ngtcp2/lib/ngtcp2_ringbuf.c +121 -0
  264. data/ext/ngtcp2/lib/ngtcp2_ringbuf.h +132 -0
  265. data/ext/ngtcp2/lib/ngtcp2_rob.c +319 -0
  266. data/ext/ngtcp2/lib/ngtcp2_rob.h +197 -0
  267. data/ext/ngtcp2/lib/ngtcp2_rst.c +138 -0
  268. data/ext/ngtcp2/lib/ngtcp2_rst.h +86 -0
  269. data/ext/ngtcp2/lib/ngtcp2_rtb.c +1676 -0
  270. data/ext/ngtcp2/lib/ngtcp2_rtb.h +468 -0
  271. data/ext/ngtcp2/lib/ngtcp2_str.c +233 -0
  272. data/ext/ngtcp2/lib/ngtcp2_str.h +94 -0
  273. data/ext/ngtcp2/lib/ngtcp2_strm.c +698 -0
  274. data/ext/ngtcp2/lib/ngtcp2_strm.h +310 -0
  275. data/ext/ngtcp2/lib/ngtcp2_unreachable.c +71 -0
  276. data/ext/ngtcp2/lib/ngtcp2_unreachable.h +46 -0
  277. data/ext/ngtcp2/lib/ngtcp2_vec.c +243 -0
  278. data/ext/ngtcp2/lib/ngtcp2_vec.h +120 -0
  279. data/ext/ngtcp2/lib/ngtcp2_version.c +39 -0
  280. data/ext/ngtcp2/lib/ngtcp2_window_filter.c +99 -0
  281. data/ext/ngtcp2/lib/ngtcp2_window_filter.h +65 -0
  282. data/ext/ngtcp2/m4/ax_check_compile_flag.m4 +74 -0
  283. data/ext/ngtcp2/m4/ax_cxx_compile_stdcxx.m4 +1009 -0
  284. data/ext/ngtcp2/tests/CMakeLists.txt +68 -0
  285. data/ext/ngtcp2/tests/Makefile.am +94 -0
  286. data/ext/ngtcp2/tests/main.c +358 -0
  287. data/ext/ngtcp2/tests/ngtcp2_acktr_test.c +367 -0
  288. data/ext/ngtcp2/tests/ngtcp2_acktr_test.h +37 -0
  289. data/ext/ngtcp2/tests/ngtcp2_conn_test.c +9821 -0
  290. data/ext/ngtcp2/tests/ngtcp2_conn_test.h +104 -0
  291. data/ext/ngtcp2/tests/ngtcp2_conv_test.c +430 -0
  292. data/ext/ngtcp2/tests/ngtcp2_conv_test.h +46 -0
  293. data/ext/ngtcp2/tests/ngtcp2_crypto_test.c +667 -0
  294. data/ext/ngtcp2/tests/ngtcp2_crypto_test.h +35 -0
  295. data/ext/ngtcp2/tests/ngtcp2_gaptr_test.c +127 -0
  296. data/ext/ngtcp2/tests/ngtcp2_gaptr_test.h +36 -0
  297. data/ext/ngtcp2/tests/ngtcp2_idtr_test.c +79 -0
  298. data/ext/ngtcp2/tests/ngtcp2_idtr_test.h +34 -0
  299. data/ext/ngtcp2/tests/ngtcp2_ksl_test.c +502 -0
  300. data/ext/ngtcp2/tests/ngtcp2_ksl_test.h +39 -0
  301. data/ext/ngtcp2/tests/ngtcp2_map_test.c +206 -0
  302. data/ext/ngtcp2/tests/ngtcp2_map_test.h +38 -0
  303. data/ext/ngtcp2/tests/ngtcp2_pkt_test.c +1645 -0
  304. data/ext/ngtcp2/tests/ngtcp2_pkt_test.h +68 -0
  305. data/ext/ngtcp2/tests/ngtcp2_pmtud_test.c +153 -0
  306. data/ext/ngtcp2/tests/ngtcp2_pmtud_test.h +34 -0
  307. data/ext/ngtcp2/tests/ngtcp2_pv_test.c +129 -0
  308. data/ext/ngtcp2/tests/ngtcp2_pv_test.h +35 -0
  309. data/ext/ngtcp2/tests/ngtcp2_range_test.c +105 -0
  310. data/ext/ngtcp2/tests/ngtcp2_range_test.h +36 -0
  311. data/ext/ngtcp2/tests/ngtcp2_ringbuf_test.c +91 -0
  312. data/ext/ngtcp2/tests/ngtcp2_ringbuf_test.h +35 -0
  313. data/ext/ngtcp2/tests/ngtcp2_rob_test.c +552 -0
  314. data/ext/ngtcp2/tests/ngtcp2_rob_test.h +37 -0
  315. data/ext/ngtcp2/tests/ngtcp2_rtb_test.c +470 -0
  316. data/ext/ngtcp2/tests/ngtcp2_rtb_test.h +38 -0
  317. data/ext/ngtcp2/tests/ngtcp2_str_test.c +96 -0
  318. data/ext/ngtcp2/tests/ngtcp2_str_test.h +36 -0
  319. data/ext/ngtcp2/tests/ngtcp2_strm_test.c +575 -0
  320. data/ext/ngtcp2/tests/ngtcp2_strm_test.h +36 -0
  321. data/ext/ngtcp2/tests/ngtcp2_test_helper.c +404 -0
  322. data/ext/ngtcp2/tests/ngtcp2_test_helper.h +191 -0
  323. data/ext/ngtcp2/tests/ngtcp2_vec_test.c +426 -0
  324. data/ext/ngtcp2/tests/ngtcp2_vec_test.h +36 -0
  325. data/ext/ngtcp2/third-party/CMakeLists.txt +34 -0
  326. data/ext/ngtcp2/third-party/Makefile.am +31 -0
  327. data/ext/ngtcp2/third-party/http-parser/AUTHORS +68 -0
  328. data/ext/ngtcp2/third-party/http-parser/LICENSE-MIT +23 -0
  329. data/ext/ngtcp2/third-party/http-parser/Makefile +157 -0
  330. data/ext/ngtcp2/third-party/http-parser/README.md +246 -0
  331. data/ext/ngtcp2/third-party/http-parser/bench.c +111 -0
  332. data/ext/ngtcp2/third-party/http-parser/contrib/parsertrace.c +160 -0
  333. data/ext/ngtcp2/third-party/http-parser/contrib/url_parser.c +47 -0
  334. data/ext/ngtcp2/third-party/http-parser/http_parser.c +2419 -0
  335. data/ext/ngtcp2/third-party/http-parser/http_parser.gyp +111 -0
  336. data/ext/ngtcp2/third-party/http-parser/http_parser.h +431 -0
  337. data/ext/ngtcp2/third-party/http-parser/test.c +4411 -0
  338. data/lib/protocol/quic/version.rb +10 -0
  339. data/lib/protocol/quic.rb +9 -0
  340. data/license.md +21 -0
  341. data.tar.gz.sig +1 -0
  342. metadata +424 -0
  343. metadata.gz.sig +1 -0
@@ -0,0 +1,350 @@
1
+ /*
2
+ * ngtcp2
3
+ *
4
+ * Copyright (c) 2019 ngtcp2 contributors
5
+ *
6
+ * Permission is hereby granted, free of charge, to any person obtaining
7
+ * a copy of this software and associated documentation files (the
8
+ * "Software"), to deal in the Software without restriction, including
9
+ * without limitation the rights to use, copy, modify, merge, publish,
10
+ * distribute, sublicense, and/or sell copies of the Software, and to
11
+ * permit persons to whom the Software is furnished to do so, subject to
12
+ * the following conditions:
13
+ *
14
+ * The above copyright notice and this permission notice shall be
15
+ * included in all copies or substantial portions of the Software.
16
+ *
17
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
20
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
21
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
22
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
23
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24
+ */
25
+ #ifndef NGTCP2_SHARED_H
26
+ #define NGTCP2_SHARED_H
27
+
28
+ #ifdef HAVE_CONFIG_H
29
+ # include <config.h>
30
+ #endif /* HAVE_CONFIG_H */
31
+
32
+ #include <ngtcp2/ngtcp2_crypto.h>
33
+
34
+ /**
35
+ * @macro
36
+ *
37
+ * :macro:`NGTCP2_INITIAL_SALT_DRAFT` is a salt value which is used to
38
+ * derive initial secret. It is used for QUIC draft versions.
39
+ */
40
+ #define NGTCP2_INITIAL_SALT_DRAFT \
41
+ "\xaf\xbf\xec\x28\x99\x93\xd2\x4c\x9e\x97\x86\xf1\x9c\x61\x11\xe0\x43\x90" \
42
+ "\xa8\x99"
43
+
44
+ /**
45
+ * @macro
46
+ *
47
+ * :macro:`NGTCP2_INITIAL_SALT_V1` is a salt value which is used to
48
+ * derive initial secret. It is used for QUIC v1.
49
+ */
50
+ #define NGTCP2_INITIAL_SALT_V1 \
51
+ "\x38\x76\x2c\xf7\xf5\x59\x34\xb3\x4d\x17\x9a\xe6\xa4\xc8\x0c\xad\xcc\xbb" \
52
+ "\x7f\x0a"
53
+
54
+ /**
55
+ * @macro
56
+ *
57
+ * :macro:`NGTCP2_INITIAL_SALT_V2` is a salt value which is used to
58
+ * derive initial secret. It is used for QUIC v2.
59
+ */
60
+ #define NGTCP2_INITIAL_SALT_V2 \
61
+ "\x0d\xed\xe3\xde\xf7\x00\xa6\xdb\x81\x93\x81\xbe\x6e\x26\x9d\xcb\xf9\xbd" \
62
+ "\x2e\xd9"
63
+
64
+ /* Maximum key usage (encryption) limits */
65
+ #define NGTCP2_CRYPTO_MAX_ENCRYPTION_AES_GCM (1ULL << 23)
66
+ #define NGTCP2_CRYPTO_MAX_ENCRYPTION_CHACHA20_POLY1305 (1ULL << 62)
67
+ #define NGTCP2_CRYPTO_MAX_ENCRYPTION_AES_CCM (2965820ULL)
68
+
69
+ /* Maximum authentication failure (decryption) limits during the
70
+ lifetime of a connection. */
71
+ #define NGTCP2_CRYPTO_MAX_DECRYPTION_FAILURE_AES_GCM (1ULL << 52)
72
+ #define NGTCP2_CRYPTO_MAX_DECRYPTION_FAILURE_CHACHA20_POLY1305 (1ULL << 36)
73
+ #define NGTCP2_CRYPTO_MAX_DECRYPTION_FAILURE_AES_CCM (2965820ULL)
74
+
75
+ /**
76
+ * @function
77
+ *
78
+ * `ngtcp2_crypto_ctx_initial` initializes |ctx| for Initial packet
79
+ * encryption and decryption.
80
+ */
81
+ ngtcp2_crypto_ctx *ngtcp2_crypto_ctx_initial(ngtcp2_crypto_ctx *ctx);
82
+
83
+ /**
84
+ * @function
85
+ *
86
+ * `ngtcp2_crypto_aead_init` initializes |aead| with the provided
87
+ * |aead_native_handle| which is an underlying AEAD object.
88
+ *
89
+ * If libngtcp2_crypto_openssl is linked, |aead_native_handle| must be
90
+ * a pointer to EVP_CIPHER.
91
+ *
92
+ * If libngtcp2_crypto_gnutls is linked, |aead_native_handle| must be
93
+ * gnutls_cipher_algorithm_t casted to ``void *``.
94
+ *
95
+ * If libngtcp2_crypto_boringssl is linked, |aead_native_handle| must
96
+ * be a pointer to EVP_AEAD.
97
+ */
98
+ ngtcp2_crypto_aead *ngtcp2_crypto_aead_init(ngtcp2_crypto_aead *aead,
99
+ void *aead_native_handle);
100
+
101
+ /**
102
+ * @function
103
+ *
104
+ * `ngtcp2_crypto_aead_retry` initializes |aead| with the AEAD cipher
105
+ * AEAD_AES_128_GCM for Retry packet integrity protection.
106
+ */
107
+ ngtcp2_crypto_aead *ngtcp2_crypto_aead_retry(ngtcp2_crypto_aead *aead);
108
+
109
+ /**
110
+ * @function
111
+ *
112
+ * `ngtcp2_crypto_derive_initial_secrets` derives initial secrets.
113
+ * |rx_secret| and |tx_secret| must point to the buffer of at least 32
114
+ * bytes capacity. rx for read and tx for write. This function
115
+ * writes rx and tx secrets into |rx_secret| and |tx_secret|
116
+ * respectively. The length of secret is 32 bytes long.
117
+ * |client_dcid| is the destination connection ID in first Initial
118
+ * packet of client. If |initial_secret| is not NULL, the initial
119
+ * secret is written to it. It must point to the buffer which has at
120
+ * least 32 bytes capacity. The initial secret is 32 bytes long.
121
+ * |side| specifies the side of application.
122
+ *
123
+ * This function returns 0 if it succeeds, or -1.
124
+ */
125
+ int ngtcp2_crypto_derive_initial_secrets(uint8_t *rx_secret, uint8_t *tx_secret,
126
+ uint8_t *initial_secret,
127
+ uint32_t version,
128
+ const ngtcp2_cid *client_dcid,
129
+ ngtcp2_crypto_side side);
130
+
131
+ /**
132
+ * @function
133
+ *
134
+ * `ngtcp2_crypto_derive_packet_protection_key` derives packet
135
+ * protection key. This function writes packet protection key into
136
+ * the buffer pointed by |key|. The length of derived key is
137
+ * `ngtcp2_crypto_aead_keylen(aead) <ngtcp2_crypto_aead_keylen>`
138
+ * bytes. |key| must have enough capacity to store the key. This
139
+ * function writes packet protection IV into |iv|. The length of
140
+ * derived IV is `ngtcp2_crypto_packet_protection_ivlen(aead)
141
+ * <ngtcp2_crypto_packet_protection_ivlen>` bytes. |iv| must have
142
+ * enough capacity to store the IV.
143
+ *
144
+ * If |hp| is not NULL, this function also derives packet header
145
+ * protection key and writes the key into the buffer pointed by |hp|.
146
+ * The length of derived key is `ngtcp2_crypto_aead_keylen(aead)
147
+ * <ngtcp2_crypto_aead_keylen>` bytes. |hp|, if not NULL, must have
148
+ * enough capacity to store the key.
149
+ *
150
+ * This function returns 0 if it succeeds, or -1.
151
+ */
152
+ int ngtcp2_crypto_derive_packet_protection_key(uint8_t *key, uint8_t *iv,
153
+ uint8_t *hp, uint32_t version,
154
+ const ngtcp2_crypto_aead *aead,
155
+ const ngtcp2_crypto_md *md,
156
+ const uint8_t *secret,
157
+ size_t secretlen);
158
+
159
+ /**
160
+ * @function
161
+ *
162
+ * `ngtcp2_crypto_update_traffic_secret` derives the next generation
163
+ * of the traffic secret. |secret| specifies the current secret and
164
+ * its length is given in |secretlen|. The length of new key is the
165
+ * same as the current key. This function writes new key into the
166
+ * buffer pointed by |dest|. |dest| must have the enough capacity to
167
+ * store the new key.
168
+ *
169
+ * This function returns 0 if it succeeds, or -1.
170
+ */
171
+ int ngtcp2_crypto_update_traffic_secret(uint8_t *dest, uint32_t version,
172
+ const ngtcp2_crypto_md *md,
173
+ const uint8_t *secret,
174
+ size_t secretlen);
175
+
176
+ /**
177
+ * @function
178
+ *
179
+ * `ngtcp2_crypto_set_local_transport_params` sets QUIC transport
180
+ * parameter, which is encoded in wire format and stored in the buffer
181
+ * pointed by |buf| of length |len|, to the native handle |tls|.
182
+ *
183
+ * |tls| points to a implementation dependent TLS session object. If
184
+ * libngtcp2_crypto_openssl is linked, |tls| must be a pointer to SSL
185
+ * object.
186
+ *
187
+ * This function returns 0 if it succeeds, or -1.
188
+ */
189
+ int ngtcp2_crypto_set_local_transport_params(void *tls, const uint8_t *buf,
190
+ size_t len);
191
+
192
+ /**
193
+ * @function
194
+ *
195
+ * `ngtcp2_crypto_set_remote_transport_params` retrieves a remote QUIC
196
+ * transport parameters from |tls| and sets it to |conn| using
197
+ * `ngtcp2_conn_set_remote_transport_params`.
198
+ *
199
+ * |tls| points to a implementation dependent TLS session object. If
200
+ * libngtcp2_crypto_openssl is linked, |tls| must be a pointer to SSL
201
+ * object.
202
+ *
203
+ * This function returns 0 if it succeeds, or -1.
204
+ */
205
+ int ngtcp2_crypto_set_remote_transport_params(ngtcp2_conn *conn, void *tls);
206
+
207
+ /**
208
+ * @function
209
+ *
210
+ * `ngtcp2_crypto_derive_and_install_initial_key` derives initial
211
+ * keying materials and installs keys to |conn|.
212
+ *
213
+ * If |rx_secret| is not NULL, the secret for decryption is written to
214
+ * the buffer pointed by |rx_secret|. The length of secret is 32
215
+ * bytes, and |rx_secret| must point to the buffer which has enough
216
+ * capacity.
217
+ *
218
+ * If |tx_secret| is not NULL, the secret for encryption is written to
219
+ * the buffer pointed by |tx_secret|. The length of secret is 32
220
+ * bytes, and |tx_secret| must point to the buffer which has enough
221
+ * capacity.
222
+ *
223
+ * If |initial_secret| is not NULL, the initial secret is written to
224
+ * the buffer pointed by |initial_secret|. The length of secret is 32
225
+ * bytes, and |initial_secret| must point to the buffer which has
226
+ * enough capacity.
227
+ *
228
+ * |client_dcid| is the destination connection ID in first Initial
229
+ * packet of client.
230
+ *
231
+ * If |rx_key| is not NULL, the derived packet protection key for
232
+ * decryption is written to the buffer pointed by |rx_key|. If
233
+ * |rx_iv| is not NULL, the derived packet protection IV for
234
+ * decryption is written to the buffer pointed by |rx_iv|. If |rx_hp|
235
+ * is not NULL, the derived header protection key for decryption is
236
+ * written to the buffer pointed by |rx_hp|.
237
+ *
238
+ * If |tx_key| is not NULL, the derived packet protection key for
239
+ * encryption is written to the buffer pointed by |tx_key|. If
240
+ * |tx_iv| is not NULL, the derived packet protection IV for
241
+ * encryption is written to the buffer pointed by |tx_iv|. If |tx_hp|
242
+ * is not NULL, the derived header protection key for encryption is
243
+ * written to the buffer pointed by |tx_hp|.
244
+ *
245
+ * The length of packet protection key and header protection key is 16
246
+ * bytes long. The length of packet protection IV is 12 bytes long.
247
+ *
248
+ * This function calls `ngtcp2_conn_set_initial_crypto_ctx` to set
249
+ * initial AEAD and message digest algorithm. After the successful
250
+ * call of this function, application can use
251
+ * `ngtcp2_conn_get_initial_crypto_ctx` to get the object.
252
+ *
253
+ * This function returns 0 if it succeeds, or -1.
254
+ */
255
+ int ngtcp2_crypto_derive_and_install_initial_key(
256
+ ngtcp2_conn *conn, uint8_t *rx_secret, uint8_t *tx_secret,
257
+ uint8_t *initial_secret, uint8_t *rx_key, uint8_t *rx_iv, uint8_t *rx_hp,
258
+ uint8_t *tx_key, uint8_t *tx_iv, uint8_t *tx_hp, uint32_t version,
259
+ const ngtcp2_cid *client_dcid);
260
+
261
+ /**
262
+ * @function
263
+ *
264
+ * `ngtcp2_crypto_derive_and_install_vneg_initial_key` derives initial
265
+ * keying materials and installs keys to |conn|. This function is
266
+ * dedicated to install keys for |version| which is negotiated, or
267
+ * being negotiated.
268
+ *
269
+ * If |rx_secret| is not NULL, the secret for decryption is written to
270
+ * the buffer pointed by |rx_secret|. The length of secret is 32
271
+ * bytes, and |rx_secret| must point to the buffer which has enough
272
+ * capacity.
273
+ *
274
+ * If |tx_secret| is not NULL, the secret for encryption is written to
275
+ * the buffer pointed by |tx_secret|. The length of secret is 32
276
+ * bytes, and |tx_secret| must point to the buffer which has enough
277
+ * capacity.
278
+ *
279
+ * If |initial_secret| is not NULL, the initial secret is written to
280
+ * the buffer pointed by |initial_secret|. The length of secret is 32
281
+ * bytes, and |initial_secret| must point to the buffer which has
282
+ * enough capacity.
283
+ *
284
+ * |client_dcid| is the destination connection ID in first Initial
285
+ * packet of client.
286
+ *
287
+ * If |rx_key| is not NULL, the derived packet protection key for
288
+ * decryption is written to the buffer pointed by |rx_key|. If
289
+ * |rx_iv| is not NULL, the derived packet protection IV for
290
+ * decryption is written to the buffer pointed by |rx_iv|. If |rx_hp|
291
+ * is not NULL, the derived header protection key for decryption is
292
+ * written to the buffer pointed by |rx_hp|.
293
+ *
294
+ * If |tx_key| is not NULL, the derived packet protection key for
295
+ * encryption is written to the buffer pointed by |tx_key|. If
296
+ * |tx_iv| is not NULL, the derived packet protection IV for
297
+ * encryption is written to the buffer pointed by |tx_iv|. If |tx_hp|
298
+ * is not NULL, the derived header protection key for encryption is
299
+ * written to the buffer pointed by |tx_hp|.
300
+ *
301
+ * The length of packet protection key and header protection key is 16
302
+ * bytes long. The length of packet protection IV is 12 bytes long.
303
+ *
304
+ * This function returns 0 if it succeeds, or -1.
305
+ */
306
+ int ngtcp2_crypto_derive_and_install_vneg_initial_key(
307
+ ngtcp2_conn *conn, uint8_t *rx_secret, uint8_t *tx_secret,
308
+ uint8_t *initial_secret, uint8_t *rx_key, uint8_t *rx_iv, uint8_t *rx_hp,
309
+ uint8_t *tx_key, uint8_t *tx_iv, uint8_t *tx_hp, uint32_t version,
310
+ const ngtcp2_cid *client_dcid);
311
+
312
+ /**
313
+ * @function
314
+ *
315
+ * `ngtcp2_crypto_cipher_ctx_encrypt_init` initializes |cipher_ctx|
316
+ * with new cipher context object for encryption which is constructed
317
+ * to use |key| as encryption key. |cipher| specifies cipher to use.
318
+ *
319
+ * This function returns 0 if it succeeds, or -1.
320
+ */
321
+ int ngtcp2_crypto_cipher_ctx_encrypt_init(ngtcp2_crypto_cipher_ctx *cipher_ctx,
322
+ const ngtcp2_crypto_cipher *cipher,
323
+ const uint8_t *key);
324
+
325
+ /**
326
+ * @function
327
+ *
328
+ * `ngtcp2_crypto_cipher_ctx_free` frees up resources used by
329
+ * |cipher_ctx|. This function does not free the memory pointed by
330
+ * |cipher_ctx| itself.
331
+ */
332
+ void ngtcp2_crypto_cipher_ctx_free(ngtcp2_crypto_cipher_ctx *cipher_ctx);
333
+
334
+ /*
335
+ * `ngtcp2_crypto_md_sha256` initializes |md| with SHA256 message
336
+ * digest algorithm and returns |md|.
337
+ */
338
+ ngtcp2_crypto_md *ngtcp2_crypto_md_sha256(ngtcp2_crypto_md *md);
339
+
340
+ ngtcp2_crypto_aead *ngtcp2_crypto_aead_aes_128_gcm(ngtcp2_crypto_aead *aead);
341
+
342
+ /*
343
+ * `ngtcp2_crypto_random` writes cryptographically-secure random
344
+ * |datalen| bytes into the buffer pointed by |data|.
345
+ *
346
+ * This function returns 0 if it succeeds, or -1.
347
+ */
348
+ int ngtcp2_crypto_random(uint8_t *data, size_t datalen);
349
+
350
+ #endif /* NGTCP2_SHARED_H */
@@ -0,0 +1,84 @@
1
+ # ngtcp2
2
+
3
+ # Copyright (c) 2022 ngtcp2
4
+
5
+ # Permission is hereby granted, free of charge, to any person obtaining
6
+ # a copy of this software and associated documentation files (the
7
+ # "Software"), to deal in the Software without restriction, including
8
+ # without limitation the rights to use, copy, modify, merge, publish,
9
+ # distribute, sublicense, and/or sell copies of the Software, and to
10
+ # permit persons to whom the Software is furnished to do so, subject to
11
+ # the following conditions:
12
+
13
+ # The above copyright notice and this permission notice shall be
14
+ # included in all copies or substantial portions of the Software.
15
+
16
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23
+
24
+ add_definitions(-DBUILDING_NGTCP2)
25
+
26
+ set(ngtcp2_crypto_wolfssl_SOURCES
27
+ wolfssl.c
28
+ ../shared.c
29
+ )
30
+
31
+ set(ngtcp2_crypto_wolfssl_INCLUDE_DIRS
32
+ "${CMAKE_CURRENT_SOURCE_DIR}/../../lib/includes"
33
+ "${CMAKE_CURRENT_BINARY_DIR}/../../lib/includes"
34
+ "${CMAKE_CURRENT_SOURCE_DIR}/../../lib"
35
+ "${CMAKE_CURRENT_SOURCE_DIR}/../../crypto/includes"
36
+ "${CMAKE_CURRENT_BINARY_DIR}/../../crypto/includes"
37
+ "${CMAKE_CURRENT_SOURCE_DIR}/../../crypto"
38
+ "${CMAKE_CURRENT_BINARY_DIR}/../../crypto"
39
+ "${WOLFSSL_INCLUDE_DIRS}"
40
+ )
41
+
42
+ foreach(name libngtcp2_crypto_wolfssl.pc)
43
+ configure_file("${name}.in" "${name}" @ONLY)
44
+ endforeach()
45
+
46
+ # Public shared library
47
+ if(ENABLE_SHARED_LIB)
48
+ add_library(ngtcp2_crypto_wolfssl SHARED ${ngtcp2_crypto_wolfssl_SOURCES})
49
+ set_target_properties(ngtcp2_crypto_wolfssl PROPERTIES
50
+ COMPILE_FLAGS "${WARNCFLAGS}"
51
+ VERSION ${CRYPTO_WOLFSSL_LT_VERSION}
52
+ SOVERSION ${CRYPTO_WOLFSSL_LT_SOVERSION}
53
+ C_VISIBILITY_PRESET hidden
54
+ POSITION_INDEPENDENT_CODE ON
55
+ )
56
+ target_include_directories(ngtcp2_crypto_wolfssl PUBLIC
57
+ ${ngtcp2_crypto_wolfssl_INCLUDE_DIRS})
58
+ target_link_libraries(ngtcp2_crypto_wolfssl ngtcp2 ${WOLFSSL_LIBRARIES})
59
+
60
+ install(TARGETS ngtcp2_crypto_wolfssl
61
+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
62
+ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
63
+ RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
64
+ endif()
65
+
66
+ if(ENABLE_STATIC_LIB)
67
+ # Public static library
68
+ add_library(ngtcp2_crypto_wolfssl_static ${ngtcp2_crypto_wolfssl_SOURCES})
69
+ set_target_properties(ngtcp2_crypto_wolfssl_static PROPERTIES
70
+ COMPILE_FLAGS "${WARNCFLAGS}"
71
+ ARCHIVE_OUTPUT_NAME ngtcp2_crypto_wolfssl${STATIC_LIB_SUFFIX}
72
+ C_VISIBILITY_PRESET hidden
73
+ )
74
+ target_compile_definitions(ngtcp2_crypto_wolfssl_static PUBLIC
75
+ "-DNGTCP2_STATICLIB")
76
+ target_include_directories(ngtcp2_crypto_wolfssl_static PUBLIC
77
+ ${ngtcp2_crypto_wolfssl_INCLUDE_DIRS})
78
+
79
+ install(TARGETS ngtcp2_crypto_wolfssl_static
80
+ DESTINATION "${CMAKE_INSTALL_LIBDIR}")
81
+ endif()
82
+
83
+ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libngtcp2_crypto_wolfssl.pc"
84
+ DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
@@ -0,0 +1,43 @@
1
+ # ngtcp2
2
+
3
+ # Copyright (c) 2022 ngtcp2 contributors
4
+
5
+ # Permission is hereby granted, free of charge, to any person obtaining
6
+ # a copy of this software and associated documentation files (the
7
+ # "Software"), to deal in the Software without restriction, including
8
+ # without limitation the rights to use, copy, modify, merge, publish,
9
+ # distribute, sublicense, and/or sell copies of the Software, and to
10
+ # permit persons to whom the Software is furnished to do so, subject to
11
+ # the following conditions:
12
+
13
+ # The above copyright notice and this permission notice shall be
14
+ # included in all copies or substantial portions of the Software.
15
+
16
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23
+ EXTRA_DIST = CMakeLists.txt
24
+
25
+ AM_CFLAGS = $(WARNCFLAGS) $(DEBUGCFLAGS) $(EXTRACFLAG)
26
+ AM_CPPFLAGS = -I$(top_srcdir)/lib/includes -I$(top_builddir)/lib/includes \
27
+ -I$(top_srcdir)/lib -DBUILDING_NGTCP2 \
28
+ -I$(top_srcdir)/crypto/includes -I$(top_builddir)/crypto/includes \
29
+ -I$(top_srcdir)/crypto -I$(top_builddir)/crypto \
30
+ @WOLFSSL_CFLAGS@
31
+ AM_LDFLAGS = ${LIBTOOL_LDFLAGS}
32
+
33
+ pkgconfigdir = $(libdir)/pkgconfig
34
+ pkgconfig_DATA = libngtcp2_crypto_wolfssl.pc
35
+ DISTCLEANFILES = $(pkgconfig_DATA)
36
+
37
+ lib_LTLIBRARIES = libngtcp2_crypto_wolfssl.la
38
+
39
+ libngtcp2_crypto_wolfssl_la_SOURCES = wolfssl.c ../shared.c ../shared.h
40
+ libngtcp2_crypto_wolfssl_la_LDFLAGS = -no-undefined \
41
+ -version-info $(CRYPTO_WOLFSSL_LT_CURRENT):$(CRYPTO_WOLFSSL_LT_REVISION):$(CRYPTO_WOLFSSL_LT_AGE)
42
+ libngtcp2_crypto_wolfssl_la_LIBADD = $(top_builddir)/lib/libngtcp2.la \
43
+ @WOLFSSL_LIBS@
@@ -0,0 +1,33 @@
1
+ # ngtcp2
2
+
3
+ # Copyright (c) 2022 ngtcp2 contributors
4
+
5
+ # Permission is hereby granted, free of charge, to any person obtaining
6
+ # a copy of this software and associated documentation files (the
7
+ # "Software"), to deal in the Software without restriction, including
8
+ # without limitation the rights to use, copy, modify, merge, publish,
9
+ # distribute, sublicense, and/or sell copies of the Software, and to
10
+ # permit persons to whom the Software is furnished to do so, subject to
11
+ # the following conditions:
12
+
13
+ # The above copyright notice and this permission notice shall be
14
+ # included in all copies or substantial portions of the Software.
15
+
16
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23
+ prefix=@prefix@
24
+ exec_prefix=@exec_prefix@
25
+ libdir=@libdir@
26
+ includedir=@includedir@
27
+
28
+ Name: libngtcp2_crypto_wolfssl
29
+ Description: ngtcp2 wolfSSL crypto library
30
+ URL: https://github.com/ngtcp2/ngtcp2
31
+ Version: @VERSION@
32
+ Libs: -L${libdir} -lngtcp2_crypto_wolfssl
33
+ Cflags: -I${includedir}