@scriptc/runtime 0.0.0 → 0.0.2

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 (416) hide show
  1. package/LICENSE +202 -0
  2. package/package.json +16 -6
  3. package/src/scr_array.c +488 -0
  4. package/src/scr_assert.c +1393 -0
  5. package/src/scr_async.c +2593 -0
  6. package/src/scr_async_dyn.c +607 -0
  7. package/src/scr_bytes.c +1425 -0
  8. package/src/scr_bytes_io.c +161 -0
  9. package/src/scr_child.c +3587 -0
  10. package/src/scr_closure.c +214 -0
  11. package/src/scr_console.c +143 -0
  12. package/src/scr_cycle.c +218 -0
  13. package/src/scr_dc.c +805 -0
  14. package/src/scr_dgram.c +1007 -0
  15. package/src/scr_dyn_handle.c +154 -0
  16. package/src/scr_dyn_invoke.c +644 -0
  17. package/src/scr_error.c +332 -0
  18. package/src/scr_events.c +714 -0
  19. package/src/scr_events_emitter.c +699 -0
  20. package/src/scr_exception.c +242 -0
  21. package/src/scr_fetch.c +1130 -0
  22. package/src/scr_fetch_curl.c +654 -0
  23. package/src/scr_http.c +3482 -0
  24. package/src/scr_http2.c +3030 -0
  25. package/src/scr_inspect.c +803 -0
  26. package/src/scr_inspect_island.c +51 -0
  27. package/src/scr_island.c +9363 -0
  28. package/src/scr_json.c +2151 -0
  29. package/src/scr_lib.c +3612 -0
  30. package/src/scr_loop_epoll.c +241 -0
  31. package/src/scr_loop_kqueue.c +121 -0
  32. package/src/scr_loop_wsapoll.c +208 -0
  33. package/src/scr_map.c +591 -0
  34. package/src/scr_net.c +3017 -0
  35. package/src/scr_net_island.c +458 -0
  36. package/src/scr_number.c +115 -0
  37. package/src/scr_object.c +25 -0
  38. package/src/scr_path.c +1266 -0
  39. package/src/scr_platform.h +119 -0
  40. package/src/scr_readline.c +287 -0
  41. package/src/scr_regex.c +1080 -0
  42. package/src/scr_runtime.h +5046 -0
  43. package/src/scr_stream.c +2877 -0
  44. package/src/scr_string.c +1264 -0
  45. package/src/scr_symbol.c +132 -0
  46. package/src/scr_test.c +662 -0
  47. package/src/scr_tls.c +1520 -0
  48. package/src/scr_union.c +105 -0
  49. package/src/scr_url.c +911 -0
  50. package/src/scr_url_internal.h +29 -0
  51. package/src/scr_url_params.c +561 -0
  52. package/src/scr_watch.c +568 -0
  53. package/src/scr_web.c +1778 -0
  54. package/src/scr_win.c +76 -0
  55. package/src/scr_zlib.c +197 -0
  56. package/src/scr_zlib_island.c +15 -0
  57. package/vendor/README.md +52 -0
  58. package/vendor/curl/COPYRIGHT +534 -0
  59. package/vendor/curl/include/curl/curl.h +3214 -0
  60. package/vendor/curl/include/curl/curlver.h +79 -0
  61. package/vendor/curl/include/curl/easy.h +125 -0
  62. package/vendor/curl/include/curl/header.h +74 -0
  63. package/vendor/curl/include/curl/mprintf.h +52 -0
  64. package/vendor/curl/include/curl/multi.h +460 -0
  65. package/vendor/curl/include/curl/options.h +70 -0
  66. package/vendor/curl/include/curl/stdcheaders.h +35 -0
  67. package/vendor/curl/include/curl/system.h +508 -0
  68. package/vendor/curl/include/curl/typecheck-gcc.h +716 -0
  69. package/vendor/curl/include/curl/urlapi.h +149 -0
  70. package/vendor/curl/include/curl/websockets.h +84 -0
  71. package/vendor/mbedtls/LICENSE +553 -0
  72. package/vendor/mbedtls/include/CMakeLists.txt +22 -0
  73. package/vendor/mbedtls/include/mbedtls/aes.h +631 -0
  74. package/vendor/mbedtls/include/mbedtls/aria.h +343 -0
  75. package/vendor/mbedtls/include/mbedtls/asn1.h +642 -0
  76. package/vendor/mbedtls/include/mbedtls/asn1write.h +390 -0
  77. package/vendor/mbedtls/include/mbedtls/base64.h +82 -0
  78. package/vendor/mbedtls/include/mbedtls/bignum.h +1088 -0
  79. package/vendor/mbedtls/include/mbedtls/block_cipher.h +76 -0
  80. package/vendor/mbedtls/include/mbedtls/build_info.h +194 -0
  81. package/vendor/mbedtls/include/mbedtls/camellia.h +305 -0
  82. package/vendor/mbedtls/include/mbedtls/ccm.h +526 -0
  83. package/vendor/mbedtls/include/mbedtls/chacha20.h +209 -0
  84. package/vendor/mbedtls/include/mbedtls/chachapoly.h +351 -0
  85. package/vendor/mbedtls/include/mbedtls/check_config.h +1149 -0
  86. package/vendor/mbedtls/include/mbedtls/cipher.h +1250 -0
  87. package/vendor/mbedtls/include/mbedtls/cmac.h +246 -0
  88. package/vendor/mbedtls/include/mbedtls/compat-2.x.h +46 -0
  89. package/vendor/mbedtls/include/mbedtls/config_adjust_legacy_crypto.h +578 -0
  90. package/vendor/mbedtls/include/mbedtls/config_adjust_legacy_from_psa.h +873 -0
  91. package/vendor/mbedtls/include/mbedtls/config_adjust_psa_from_legacy.h +359 -0
  92. package/vendor/mbedtls/include/mbedtls/config_adjust_psa_superset_legacy.h +145 -0
  93. package/vendor/mbedtls/include/mbedtls/config_adjust_ssl.h +91 -0
  94. package/vendor/mbedtls/include/mbedtls/config_adjust_x509.h +35 -0
  95. package/vendor/mbedtls/include/mbedtls/config_psa.h +61 -0
  96. package/vendor/mbedtls/include/mbedtls/constant_time.h +36 -0
  97. package/vendor/mbedtls/include/mbedtls/ctr_drbg.h +596 -0
  98. package/vendor/mbedtls/include/mbedtls/debug.h +156 -0
  99. package/vendor/mbedtls/include/mbedtls/des.h +385 -0
  100. package/vendor/mbedtls/include/mbedtls/dhm.h +972 -0
  101. package/vendor/mbedtls/include/mbedtls/ecdh.h +455 -0
  102. package/vendor/mbedtls/include/mbedtls/ecdsa.h +674 -0
  103. package/vendor/mbedtls/include/mbedtls/ecjpake.h +298 -0
  104. package/vendor/mbedtls/include/mbedtls/ecp.h +1517 -0
  105. package/vendor/mbedtls/include/mbedtls/entropy.h +274 -0
  106. package/vendor/mbedtls/include/mbedtls/error.h +201 -0
  107. package/vendor/mbedtls/include/mbedtls/gcm.h +387 -0
  108. package/vendor/mbedtls/include/mbedtls/hkdf.h +124 -0
  109. package/vendor/mbedtls/include/mbedtls/hmac_drbg.h +434 -0
  110. package/vendor/mbedtls/include/mbedtls/lms.h +440 -0
  111. package/vendor/mbedtls/include/mbedtls/mbedtls_config.h +4446 -0
  112. package/vendor/mbedtls/include/mbedtls/md.h +526 -0
  113. package/vendor/mbedtls/include/mbedtls/md5.h +190 -0
  114. package/vendor/mbedtls/include/mbedtls/memory_buffer_alloc.h +142 -0
  115. package/vendor/mbedtls/include/mbedtls/net_sockets.h +299 -0
  116. package/vendor/mbedtls/include/mbedtls/nist_kw.h +166 -0
  117. package/vendor/mbedtls/include/mbedtls/oid.h +727 -0
  118. package/vendor/mbedtls/include/mbedtls/pem.h +160 -0
  119. package/vendor/mbedtls/include/mbedtls/pk.h +1303 -0
  120. package/vendor/mbedtls/include/mbedtls/pkcs12.h +186 -0
  121. package/vendor/mbedtls/include/mbedtls/pkcs5.h +198 -0
  122. package/vendor/mbedtls/include/mbedtls/pkcs7.h +252 -0
  123. package/vendor/mbedtls/include/mbedtls/platform.h +516 -0
  124. package/vendor/mbedtls/include/mbedtls/platform_time.h +79 -0
  125. package/vendor/mbedtls/include/mbedtls/platform_util.h +247 -0
  126. package/vendor/mbedtls/include/mbedtls/poly1305.h +168 -0
  127. package/vendor/mbedtls/include/mbedtls/private_access.h +20 -0
  128. package/vendor/mbedtls/include/mbedtls/psa_util.h +207 -0
  129. package/vendor/mbedtls/include/mbedtls/ripemd160.h +136 -0
  130. package/vendor/mbedtls/include/mbedtls/rsa.h +1170 -0
  131. package/vendor/mbedtls/include/mbedtls/sha1.h +219 -0
  132. package/vendor/mbedtls/include/mbedtls/sha256.h +200 -0
  133. package/vendor/mbedtls/include/mbedtls/sha3.h +172 -0
  134. package/vendor/mbedtls/include/mbedtls/sha512.h +208 -0
  135. package/vendor/mbedtls/include/mbedtls/ssl.h +5887 -0
  136. package/vendor/mbedtls/include/mbedtls/ssl_cache.h +187 -0
  137. package/vendor/mbedtls/include/mbedtls/ssl_ciphersuites.h +482 -0
  138. package/vendor/mbedtls/include/mbedtls/ssl_cookie.h +106 -0
  139. package/vendor/mbedtls/include/mbedtls/ssl_ticket.h +199 -0
  140. package/vendor/mbedtls/include/mbedtls/threading.h +167 -0
  141. package/vendor/mbedtls/include/mbedtls/timing.h +94 -0
  142. package/vendor/mbedtls/include/mbedtls/version.h +78 -0
  143. package/vendor/mbedtls/include/mbedtls/x509.h +500 -0
  144. package/vendor/mbedtls/include/mbedtls/x509_crl.h +184 -0
  145. package/vendor/mbedtls/include/mbedtls/x509_crt.h +1208 -0
  146. package/vendor/mbedtls/include/mbedtls/x509_csr.h +382 -0
  147. package/vendor/mbedtls/include/psa/build_info.h +20 -0
  148. package/vendor/mbedtls/include/psa/crypto.h +4998 -0
  149. package/vendor/mbedtls/include/psa/crypto_adjust_auto_enabled.h +31 -0
  150. package/vendor/mbedtls/include/psa/crypto_adjust_config_dependencies.h +51 -0
  151. package/vendor/mbedtls/include/psa/crypto_adjust_config_key_pair_types.h +101 -0
  152. package/vendor/mbedtls/include/psa/crypto_adjust_config_synonyms.h +49 -0
  153. package/vendor/mbedtls/include/psa/crypto_builtin_composites.h +214 -0
  154. package/vendor/mbedtls/include/psa/crypto_builtin_key_derivation.h +118 -0
  155. package/vendor/mbedtls/include/psa/crypto_builtin_primitives.h +114 -0
  156. package/vendor/mbedtls/include/psa/crypto_compat.h +230 -0
  157. package/vendor/mbedtls/include/psa/crypto_config.h +145 -0
  158. package/vendor/mbedtls/include/psa/crypto_driver_common.h +44 -0
  159. package/vendor/mbedtls/include/psa/crypto_driver_contexts_composites.h +151 -0
  160. package/vendor/mbedtls/include/psa/crypto_driver_contexts_key_derivation.h +52 -0
  161. package/vendor/mbedtls/include/psa/crypto_driver_contexts_primitives.h +105 -0
  162. package/vendor/mbedtls/include/psa/crypto_extra.h +2145 -0
  163. package/vendor/mbedtls/include/psa/crypto_legacy.h +88 -0
  164. package/vendor/mbedtls/include/psa/crypto_platform.h +102 -0
  165. package/vendor/mbedtls/include/psa/crypto_se_driver.h +1383 -0
  166. package/vendor/mbedtls/include/psa/crypto_sizes.h +1319 -0
  167. package/vendor/mbedtls/include/psa/crypto_struct.h +527 -0
  168. package/vendor/mbedtls/include/psa/crypto_types.h +508 -0
  169. package/vendor/mbedtls/include/psa/crypto_values.h +2782 -0
  170. package/vendor/mbedtls/library/aes.c +2294 -0
  171. package/vendor/mbedtls/library/aesce.c +624 -0
  172. package/vendor/mbedtls/library/aesce.h +136 -0
  173. package/vendor/mbedtls/library/aesni.c +846 -0
  174. package/vendor/mbedtls/library/aesni.h +162 -0
  175. package/vendor/mbedtls/library/alignment.h +704 -0
  176. package/vendor/mbedtls/library/aria.c +969 -0
  177. package/vendor/mbedtls/library/asn1parse.c +468 -0
  178. package/vendor/mbedtls/library/asn1write.c +440 -0
  179. package/vendor/mbedtls/library/base64.c +322 -0
  180. package/vendor/mbedtls/library/base64_internal.h +45 -0
  181. package/vendor/mbedtls/library/bignum.c +2583 -0
  182. package/vendor/mbedtls/library/bignum_core.c +1240 -0
  183. package/vendor/mbedtls/library/bignum_core.h +872 -0
  184. package/vendor/mbedtls/library/bignum_core_invasive.h +38 -0
  185. package/vendor/mbedtls/library/bignum_internal.h +122 -0
  186. package/vendor/mbedtls/library/bignum_mod.c +394 -0
  187. package/vendor/mbedtls/library/bignum_mod.h +452 -0
  188. package/vendor/mbedtls/library/bignum_mod_raw.c +276 -0
  189. package/vendor/mbedtls/library/bignum_mod_raw.h +416 -0
  190. package/vendor/mbedtls/library/bignum_mod_raw_invasive.h +34 -0
  191. package/vendor/mbedtls/library/block_cipher.c +207 -0
  192. package/vendor/mbedtls/library/block_cipher_internal.h +99 -0
  193. package/vendor/mbedtls/library/bn_mul.h +1094 -0
  194. package/vendor/mbedtls/library/camellia.c +1058 -0
  195. package/vendor/mbedtls/library/ccm.c +777 -0
  196. package/vendor/mbedtls/library/chacha20.c +563 -0
  197. package/vendor/mbedtls/library/chacha20_internal.h +23 -0
  198. package/vendor/mbedtls/library/chachapoly.c +487 -0
  199. package/vendor/mbedtls/library/check_crypto_config.h +136 -0
  200. package/vendor/mbedtls/library/cipher.c +1712 -0
  201. package/vendor/mbedtls/library/cipher_invasive.h +28 -0
  202. package/vendor/mbedtls/library/cipher_wrap.c +2482 -0
  203. package/vendor/mbedtls/library/cipher_wrap.h +178 -0
  204. package/vendor/mbedtls/library/cmac.c +1067 -0
  205. package/vendor/mbedtls/library/common.h +487 -0
  206. package/vendor/mbedtls/library/constant_time.c +247 -0
  207. package/vendor/mbedtls/library/constant_time_impl.h +541 -0
  208. package/vendor/mbedtls/library/constant_time_internal.h +579 -0
  209. package/vendor/mbedtls/library/ctr.h +35 -0
  210. package/vendor/mbedtls/library/ctr_drbg.c +1016 -0
  211. package/vendor/mbedtls/library/debug.c +475 -0
  212. package/vendor/mbedtls/library/debug_internal.h +185 -0
  213. package/vendor/mbedtls/library/des.c +1042 -0
  214. package/vendor/mbedtls/library/dhm.c +700 -0
  215. package/vendor/mbedtls/library/ecdh.c +696 -0
  216. package/vendor/mbedtls/library/ecdsa.c +858 -0
  217. package/vendor/mbedtls/library/ecjpake.c +1216 -0
  218. package/vendor/mbedtls/library/ecp.c +3674 -0
  219. package/vendor/mbedtls/library/ecp_curves.c +6125 -0
  220. package/vendor/mbedtls/library/ecp_curves_new.c +9 -0
  221. package/vendor/mbedtls/library/ecp_internal_alt.h +287 -0
  222. package/vendor/mbedtls/library/ecp_invasive.h +305 -0
  223. package/vendor/mbedtls/library/entropy.c +680 -0
  224. package/vendor/mbedtls/library/entropy_poll.c +233 -0
  225. package/vendor/mbedtls/library/entropy_poll.h +64 -0
  226. package/vendor/mbedtls/library/error.c +878 -0
  227. package/vendor/mbedtls/library/gcm.c +1330 -0
  228. package/vendor/mbedtls/library/hkdf.c +161 -0
  229. package/vendor/mbedtls/library/hmac_drbg.c +633 -0
  230. package/vendor/mbedtls/library/lmots.c +789 -0
  231. package/vendor/mbedtls/library/lmots.h +288 -0
  232. package/vendor/mbedtls/library/lms.c +778 -0
  233. package/vendor/mbedtls/library/md.c +1108 -0
  234. package/vendor/mbedtls/library/md5.c +426 -0
  235. package/vendor/mbedtls/library/md_psa.h +26 -0
  236. package/vendor/mbedtls/library/md_wrap.h +46 -0
  237. package/vendor/mbedtls/library/memory_buffer_alloc.c +751 -0
  238. package/vendor/mbedtls/library/mps_common.h +181 -0
  239. package/vendor/mbedtls/library/mps_error.h +89 -0
  240. package/vendor/mbedtls/library/mps_reader.c +538 -0
  241. package/vendor/mbedtls/library/mps_reader.h +366 -0
  242. package/vendor/mbedtls/library/mps_trace.c +112 -0
  243. package/vendor/mbedtls/library/mps_trace.h +154 -0
  244. package/vendor/mbedtls/library/net_sockets.c +694 -0
  245. package/vendor/mbedtls/library/nist_kw.c +729 -0
  246. package/vendor/mbedtls/library/oid.c +1166 -0
  247. package/vendor/mbedtls/library/padlock.c +157 -0
  248. package/vendor/mbedtls/library/padlock.h +111 -0
  249. package/vendor/mbedtls/library/pem.c +554 -0
  250. package/vendor/mbedtls/library/pk.c +1602 -0
  251. package/vendor/mbedtls/library/pk_ecc.c +261 -0
  252. package/vendor/mbedtls/library/pk_internal.h +241 -0
  253. package/vendor/mbedtls/library/pk_wrap.c +1618 -0
  254. package/vendor/mbedtls/library/pk_wrap.h +138 -0
  255. package/vendor/mbedtls/library/pkcs12.c +437 -0
  256. package/vendor/mbedtls/library/pkcs5.c +500 -0
  257. package/vendor/mbedtls/library/pkcs7.c +787 -0
  258. package/vendor/mbedtls/library/pkparse.c +1392 -0
  259. package/vendor/mbedtls/library/pkwrite.c +631 -0
  260. package/vendor/mbedtls/library/pkwrite.h +121 -0
  261. package/vendor/mbedtls/library/platform.c +402 -0
  262. package/vendor/mbedtls/library/platform_util.c +258 -0
  263. package/vendor/mbedtls/library/poly1305.c +492 -0
  264. package/vendor/mbedtls/library/psa_crypto.c +9532 -0
  265. package/vendor/mbedtls/library/psa_crypto_aead.c +646 -0
  266. package/vendor/mbedtls/library/psa_crypto_aead.h +499 -0
  267. package/vendor/mbedtls/library/psa_crypto_cipher.c +747 -0
  268. package/vendor/mbedtls/library/psa_crypto_cipher.h +316 -0
  269. package/vendor/mbedtls/library/psa_crypto_client.c +22 -0
  270. package/vendor/mbedtls/library/psa_crypto_core.h +983 -0
  271. package/vendor/mbedtls/library/psa_crypto_core_common.h +52 -0
  272. package/vendor/mbedtls/library/psa_crypto_driver_wrappers.h +2896 -0
  273. package/vendor/mbedtls/library/psa_crypto_driver_wrappers_no_static.c +256 -0
  274. package/vendor/mbedtls/library/psa_crypto_driver_wrappers_no_static.h +31 -0
  275. package/vendor/mbedtls/library/psa_crypto_ecp.c +594 -0
  276. package/vendor/mbedtls/library/psa_crypto_ecp.h +267 -0
  277. package/vendor/mbedtls/library/psa_crypto_ffdh.c +361 -0
  278. package/vendor/mbedtls/library/psa_crypto_ffdh.h +131 -0
  279. package/vendor/mbedtls/library/psa_crypto_hash.c +470 -0
  280. package/vendor/mbedtls/library/psa_crypto_hash.h +211 -0
  281. package/vendor/mbedtls/library/psa_crypto_invasive.h +92 -0
  282. package/vendor/mbedtls/library/psa_crypto_its.h +131 -0
  283. package/vendor/mbedtls/library/psa_crypto_mac.c +505 -0
  284. package/vendor/mbedtls/library/psa_crypto_mac.h +264 -0
  285. package/vendor/mbedtls/library/psa_crypto_pake.c +571 -0
  286. package/vendor/mbedtls/library/psa_crypto_pake.h +159 -0
  287. package/vendor/mbedtls/library/psa_crypto_random.c +181 -0
  288. package/vendor/mbedtls/library/psa_crypto_random.h +72 -0
  289. package/vendor/mbedtls/library/psa_crypto_random_impl.h +200 -0
  290. package/vendor/mbedtls/library/psa_crypto_rsa.c +714 -0
  291. package/vendor/mbedtls/library/psa_crypto_rsa.h +321 -0
  292. package/vendor/mbedtls/library/psa_crypto_se.c +373 -0
  293. package/vendor/mbedtls/library/psa_crypto_se.h +192 -0
  294. package/vendor/mbedtls/library/psa_crypto_slot_management.c +1137 -0
  295. package/vendor/mbedtls/library/psa_crypto_slot_management.h +344 -0
  296. package/vendor/mbedtls/library/psa_crypto_storage.c +481 -0
  297. package/vendor/mbedtls/library/psa_crypto_storage.h +392 -0
  298. package/vendor/mbedtls/library/psa_its_file.c +254 -0
  299. package/vendor/mbedtls/library/psa_util.c +614 -0
  300. package/vendor/mbedtls/library/psa_util_internal.h +100 -0
  301. package/vendor/mbedtls/library/ripemd160.c +490 -0
  302. package/vendor/mbedtls/library/rsa.c +3121 -0
  303. package/vendor/mbedtls/library/rsa_alt_helpers.c +455 -0
  304. package/vendor/mbedtls/library/rsa_alt_helpers.h +209 -0
  305. package/vendor/mbedtls/library/rsa_internal.h +188 -0
  306. package/vendor/mbedtls/library/sha1.c +480 -0
  307. package/vendor/mbedtls/library/sha256.c +983 -0
  308. package/vendor/mbedtls/library/sha3.c +721 -0
  309. package/vendor/mbedtls/library/sha512.c +1115 -0
  310. package/vendor/mbedtls/library/ssl_cache.c +410 -0
  311. package/vendor/mbedtls/library/ssl_ciphersuites.c +2050 -0
  312. package/vendor/mbedtls/library/ssl_ciphersuites_internal.h +154 -0
  313. package/vendor/mbedtls/library/ssl_client.c +1023 -0
  314. package/vendor/mbedtls/library/ssl_client.h +22 -0
  315. package/vendor/mbedtls/library/ssl_cookie.c +384 -0
  316. package/vendor/mbedtls/library/ssl_debug_helpers.h +85 -0
  317. package/vendor/mbedtls/library/ssl_debug_helpers_generated.c +251 -0
  318. package/vendor/mbedtls/library/ssl_misc.h +3198 -0
  319. package/vendor/mbedtls/library/ssl_msg.c +6619 -0
  320. package/vendor/mbedtls/library/ssl_ticket.c +556 -0
  321. package/vendor/mbedtls/library/ssl_tls.c +10234 -0
  322. package/vendor/mbedtls/library/ssl_tls12_client.c +3688 -0
  323. package/vendor/mbedtls/library/ssl_tls12_server.c +4311 -0
  324. package/vendor/mbedtls/library/ssl_tls13_client.c +3208 -0
  325. package/vendor/mbedtls/library/ssl_tls13_generic.c +1793 -0
  326. package/vendor/mbedtls/library/ssl_tls13_invasive.h +23 -0
  327. package/vendor/mbedtls/library/ssl_tls13_keys.c +1918 -0
  328. package/vendor/mbedtls/library/ssl_tls13_keys.h +668 -0
  329. package/vendor/mbedtls/library/ssl_tls13_server.c +3624 -0
  330. package/vendor/mbedtls/library/threading.c +193 -0
  331. package/vendor/mbedtls/library/threading_internal.h +28 -0
  332. package/vendor/mbedtls/library/timing.c +152 -0
  333. package/vendor/mbedtls/library/version.c +32 -0
  334. package/vendor/mbedtls/library/version_features.c +856 -0
  335. package/vendor/mbedtls/library/x509.c +1776 -0
  336. package/vendor/mbedtls/library/x509_create.c +570 -0
  337. package/vendor/mbedtls/library/x509_crl.c +708 -0
  338. package/vendor/mbedtls/library/x509_crt.c +3311 -0
  339. package/vendor/mbedtls/library/x509_csr.c +648 -0
  340. package/vendor/mbedtls/library/x509_internal.h +101 -0
  341. package/vendor/mbedtls/library/x509write.c +174 -0
  342. package/vendor/mbedtls/library/x509write_crt.c +688 -0
  343. package/vendor/mbedtls/library/x509write_csr.c +336 -0
  344. package/vendor/quickjs-ng/CMakeLists.txt +566 -0
  345. package/vendor/quickjs-ng/LICENSE +24 -0
  346. package/vendor/quickjs-ng/README.md +24 -0
  347. package/vendor/quickjs-ng/api-test.c +1195 -0
  348. package/vendor/quickjs-ng/builtin-array-fromasync.h +119 -0
  349. package/vendor/quickjs-ng/builtin-iterator-zip-keyed.h +332 -0
  350. package/vendor/quickjs-ng/builtin-iterator-zip.h +337 -0
  351. package/vendor/quickjs-ng/cutils.h +1998 -0
  352. package/vendor/quickjs-ng/dtoa.c +1619 -0
  353. package/vendor/quickjs-ng/dtoa.h +87 -0
  354. package/vendor/quickjs-ng/gen/function_source.c +81 -0
  355. package/vendor/quickjs-ng/gen/hello.c +53 -0
  356. package/vendor/quickjs-ng/gen/hello_module.c +106 -0
  357. package/vendor/quickjs-ng/gen/repl.c +3036 -0
  358. package/vendor/quickjs-ng/gen/standalone.c +323 -0
  359. package/vendor/quickjs-ng/gen/test_fib.c +81 -0
  360. package/vendor/quickjs-ng/libregexp-opcode.h +73 -0
  361. package/vendor/quickjs-ng/libregexp.c +3474 -0
  362. package/vendor/quickjs-ng/libregexp.h +101 -0
  363. package/vendor/quickjs-ng/libunicode-table.h +5173 -0
  364. package/vendor/quickjs-ng/libunicode.c +2069 -0
  365. package/vendor/quickjs-ng/libunicode.h +172 -0
  366. package/vendor/quickjs-ng/list.h +107 -0
  367. package/vendor/quickjs-ng/lre-test.c +52 -0
  368. package/vendor/quickjs-ng/qjs.c +762 -0
  369. package/vendor/quickjs-ng/qjsc.c +673 -0
  370. package/vendor/quickjs-ng/quickjs-atom.h +280 -0
  371. package/vendor/quickjs-ng/quickjs-c-atomics.h +54 -0
  372. package/vendor/quickjs-ng/quickjs-libc.c +5037 -0
  373. package/vendor/quickjs-ng/quickjs-libc.h +87 -0
  374. package/vendor/quickjs-ng/quickjs-opcode.h +377 -0
  375. package/vendor/quickjs-ng/quickjs.c +64041 -0
  376. package/vendor/quickjs-ng/quickjs.h +1447 -0
  377. package/vendor/quickjs-ng/run-test262.c +2374 -0
  378. package/vendor/quickjs-ng/unicode_gen.c +3121 -0
  379. package/vendor/quickjs-ng/unicode_gen_def.h +310 -0
  380. package/vendor/ryu/LICENSE-Boost +23 -0
  381. package/vendor/ryu/common.h +114 -0
  382. package/vendor/ryu/d2s.c +509 -0
  383. package/vendor/ryu/d2s_full_table.h +367 -0
  384. package/vendor/ryu/d2s_intrinsics.h +357 -0
  385. package/vendor/ryu/d2s_small_table.h +186 -0
  386. package/vendor/ryu/digit_table.h +35 -0
  387. package/vendor/ryu/ryu.h +46 -0
  388. package/vendor/zlib/LICENSE +22 -0
  389. package/vendor/zlib/adler32.c +164 -0
  390. package/vendor/zlib/compress.c +75 -0
  391. package/vendor/zlib/crc32.c +1049 -0
  392. package/vendor/zlib/crc32.h +9446 -0
  393. package/vendor/zlib/deflate.c +2139 -0
  394. package/vendor/zlib/deflate.h +377 -0
  395. package/vendor/zlib/gzclose.c +23 -0
  396. package/vendor/zlib/gzguts.h +214 -0
  397. package/vendor/zlib/gzlib.c +582 -0
  398. package/vendor/zlib/gzread.c +602 -0
  399. package/vendor/zlib/gzwrite.c +631 -0
  400. package/vendor/zlib/infback.c +628 -0
  401. package/vendor/zlib/inffast.c +320 -0
  402. package/vendor/zlib/inffast.h +11 -0
  403. package/vendor/zlib/inffixed.h +94 -0
  404. package/vendor/zlib/inflate.c +1526 -0
  405. package/vendor/zlib/inflate.h +126 -0
  406. package/vendor/zlib/inftrees.c +299 -0
  407. package/vendor/zlib/inftrees.h +62 -0
  408. package/vendor/zlib/trees.c +1117 -0
  409. package/vendor/zlib/trees.h +128 -0
  410. package/vendor/zlib/uncompr.c +85 -0
  411. package/vendor/zlib/zconf.h +543 -0
  412. package/vendor/zlib/zlib.h +1938 -0
  413. package/vendor/zlib/zutil.c +299 -0
  414. package/vendor/zlib/zutil.h +254 -0
  415. package/README.md +0 -3
  416. package/index.js +0 -2
@@ -0,0 +1,694 @@
1
+ /*
2
+ * TCP/IP or UDP/IP networking functions
3
+ *
4
+ * Copyright The Mbed TLS Contributors
5
+ * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
6
+ */
7
+
8
+ /* Enable definition of getaddrinfo() even when compiling with -std=c99. Must
9
+ * be set before mbedtls_config.h, which pulls in glibc's features.h indirectly.
10
+ * Harmless on other platforms. */
11
+ #ifndef _POSIX_C_SOURCE
12
+ #define _POSIX_C_SOURCE 200112L
13
+ #endif
14
+ #ifndef _XOPEN_SOURCE
15
+ #define _XOPEN_SOURCE 600 /* sockaddr_storage */
16
+ #endif
17
+
18
+ #include "common.h"
19
+
20
+ #if defined(MBEDTLS_NET_C)
21
+
22
+ #if !defined(MBEDTLS_PLATFORM_IS_UNIXLIKE) && !defined(_WIN32)
23
+ #error "This module only works on Unix and Windows, see MBEDTLS_NET_C in mbedtls_config.h"
24
+ #endif
25
+
26
+ #include "mbedtls/platform.h"
27
+
28
+ #include "mbedtls/net_sockets.h"
29
+ #include "mbedtls/error.h"
30
+
31
+ #include <string.h>
32
+
33
+ #if (defined(_WIN32) || defined(_WIN32_WCE)) && !defined(EFIX64) && \
34
+ !defined(EFI32)
35
+
36
+ #define IS_EINTR(ret) ((ret) == WSAEINTR)
37
+
38
+ #include <ws2tcpip.h>
39
+
40
+ #include <winsock2.h>
41
+ #include <windows.h>
42
+ #if (_WIN32_WINNT < 0x0501)
43
+ #include <wspiapi.h>
44
+ #endif
45
+
46
+ #if defined(_MSC_VER)
47
+ #if defined(_WIN32_WCE)
48
+ #pragma comment( lib, "ws2.lib" )
49
+ #else
50
+ #pragma comment( lib, "ws2_32.lib" )
51
+ #endif
52
+ #endif /* _MSC_VER */
53
+
54
+ #define read(fd, buf, len) recv(fd, (char *) (buf), (int) (len), 0)
55
+ #define write(fd, buf, len) send(fd, (char *) (buf), (int) (len), 0)
56
+ #define close(fd) closesocket(fd)
57
+
58
+ static int wsa_init_done = 0;
59
+
60
+ #else /* ( _WIN32 || _WIN32_WCE ) && !EFIX64 && !EFI32 */
61
+
62
+ #include <sys/types.h>
63
+ #include <sys/socket.h>
64
+ #include <netinet/in.h>
65
+ #include <arpa/inet.h>
66
+ #include <sys/time.h>
67
+ #include <unistd.h>
68
+ #include <signal.h>
69
+ #include <fcntl.h>
70
+ #include <netdb.h>
71
+ #include <errno.h>
72
+
73
+ #define IS_EINTR(ret) ((ret) == EINTR)
74
+ #define SOCKET int
75
+
76
+ #endif /* ( _WIN32 || _WIN32_WCE ) && !EFIX64 && !EFI32 */
77
+
78
+ /* Some MS functions want int and MSVC warns if we pass size_t,
79
+ * but the standard functions use socklen_t, so cast only for MSVC */
80
+ #if defined(_MSC_VER)
81
+ #define MSVC_INT_CAST (int)
82
+ #else
83
+ #define MSVC_INT_CAST
84
+ #endif
85
+
86
+ #include <stdio.h>
87
+
88
+ #if defined(MBEDTLS_HAVE_TIME)
89
+ #include <time.h>
90
+ #endif
91
+
92
+ #include <stdint.h>
93
+
94
+ /*
95
+ * Prepare for using the sockets interface
96
+ */
97
+ static int net_prepare(void)
98
+ {
99
+ #if (defined(_WIN32) || defined(_WIN32_WCE)) && !defined(EFIX64) && \
100
+ !defined(EFI32)
101
+ WSADATA wsaData;
102
+
103
+ if (wsa_init_done == 0) {
104
+ if (WSAStartup(MAKEWORD(2, 0), &wsaData) != 0) {
105
+ return MBEDTLS_ERR_NET_SOCKET_FAILED;
106
+ }
107
+
108
+ wsa_init_done = 1;
109
+ }
110
+ #else
111
+ #if !defined(EFIX64) && !defined(EFI32)
112
+ signal(SIGPIPE, SIG_IGN);
113
+ #endif
114
+ #endif
115
+ return 0;
116
+ }
117
+
118
+ /*
119
+ * Return 0 if the file descriptor is valid, an error otherwise.
120
+ * If for_select != 0, check whether the file descriptor is within the range
121
+ * allowed for fd_set used for the FD_xxx macros and the select() function.
122
+ */
123
+ static int check_fd(int fd, int for_select)
124
+ {
125
+ if (fd < 0) {
126
+ return MBEDTLS_ERR_NET_INVALID_CONTEXT;
127
+ }
128
+
129
+ #if (defined(_WIN32) || defined(_WIN32_WCE)) && !defined(EFIX64) && \
130
+ !defined(EFI32)
131
+ (void) for_select;
132
+ #else
133
+ /* A limitation of select() is that it only works with file descriptors
134
+ * that are strictly less than FD_SETSIZE. This is a limitation of the
135
+ * fd_set type. Error out early, because attempting to call FD_SET on a
136
+ * large file descriptor is a buffer overflow on typical platforms. */
137
+ if (for_select && fd >= FD_SETSIZE) {
138
+ return MBEDTLS_ERR_NET_POLL_FAILED;
139
+ }
140
+ #endif
141
+
142
+ return 0;
143
+ }
144
+
145
+ /*
146
+ * Initialize a context
147
+ */
148
+ void mbedtls_net_init(mbedtls_net_context *ctx)
149
+ {
150
+ ctx->fd = -1;
151
+ }
152
+
153
+ /*
154
+ * Initiate a TCP connection with host:port and the given protocol
155
+ */
156
+ int mbedtls_net_connect(mbedtls_net_context *ctx, const char *host,
157
+ const char *port, int proto)
158
+ {
159
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
160
+ struct addrinfo hints, *addr_list, *cur;
161
+
162
+ if ((ret = net_prepare()) != 0) {
163
+ return ret;
164
+ }
165
+
166
+ /* Do name resolution with both IPv6 and IPv4 */
167
+ memset(&hints, 0, sizeof(hints));
168
+ hints.ai_family = AF_UNSPEC;
169
+ hints.ai_socktype = proto == MBEDTLS_NET_PROTO_UDP ? SOCK_DGRAM : SOCK_STREAM;
170
+ hints.ai_protocol = proto == MBEDTLS_NET_PROTO_UDP ? IPPROTO_UDP : IPPROTO_TCP;
171
+
172
+ if (getaddrinfo(host, port, &hints, &addr_list) != 0) {
173
+ return MBEDTLS_ERR_NET_UNKNOWN_HOST;
174
+ }
175
+
176
+ /* Try the sockaddrs until a connection succeeds */
177
+ ret = MBEDTLS_ERR_NET_UNKNOWN_HOST;
178
+ for (cur = addr_list; cur != NULL; cur = cur->ai_next) {
179
+ ctx->fd = (int) socket(cur->ai_family, cur->ai_socktype,
180
+ cur->ai_protocol);
181
+ if (ctx->fd < 0) {
182
+ ret = MBEDTLS_ERR_NET_SOCKET_FAILED;
183
+ continue;
184
+ }
185
+
186
+ if (connect(ctx->fd, cur->ai_addr, MSVC_INT_CAST cur->ai_addrlen) == 0) {
187
+ ret = 0;
188
+ break;
189
+ }
190
+
191
+ mbedtls_net_close(ctx);
192
+ ret = MBEDTLS_ERR_NET_CONNECT_FAILED;
193
+ }
194
+
195
+ freeaddrinfo(addr_list);
196
+
197
+ return ret;
198
+ }
199
+
200
+ /*
201
+ * Create a listening socket on bind_ip:port
202
+ */
203
+ int mbedtls_net_bind(mbedtls_net_context *ctx, const char *bind_ip, const char *port, int proto)
204
+ {
205
+ int n, ret;
206
+ struct addrinfo hints, *addr_list, *cur;
207
+
208
+ if ((ret = net_prepare()) != 0) {
209
+ return ret;
210
+ }
211
+
212
+ /* Bind to IPv6 and/or IPv4, but only in the desired protocol */
213
+ memset(&hints, 0, sizeof(hints));
214
+ hints.ai_family = AF_UNSPEC;
215
+ hints.ai_socktype = proto == MBEDTLS_NET_PROTO_UDP ? SOCK_DGRAM : SOCK_STREAM;
216
+ hints.ai_protocol = proto == MBEDTLS_NET_PROTO_UDP ? IPPROTO_UDP : IPPROTO_TCP;
217
+ if (bind_ip == NULL) {
218
+ hints.ai_flags = AI_PASSIVE;
219
+ }
220
+
221
+ if (getaddrinfo(bind_ip, port, &hints, &addr_list) != 0) {
222
+ return MBEDTLS_ERR_NET_UNKNOWN_HOST;
223
+ }
224
+
225
+ /* Try the sockaddrs until a binding succeeds */
226
+ ret = MBEDTLS_ERR_NET_UNKNOWN_HOST;
227
+ for (cur = addr_list; cur != NULL; cur = cur->ai_next) {
228
+ ctx->fd = (int) socket(cur->ai_family, cur->ai_socktype,
229
+ cur->ai_protocol);
230
+ if (ctx->fd < 0) {
231
+ ret = MBEDTLS_ERR_NET_SOCKET_FAILED;
232
+ continue;
233
+ }
234
+
235
+ n = 1;
236
+ if (setsockopt(ctx->fd, SOL_SOCKET, SO_REUSEADDR,
237
+ (const char *) &n, sizeof(n)) != 0) {
238
+ mbedtls_net_close(ctx);
239
+ ret = MBEDTLS_ERR_NET_SOCKET_FAILED;
240
+ continue;
241
+ }
242
+
243
+ if (bind(ctx->fd, cur->ai_addr, MSVC_INT_CAST cur->ai_addrlen) != 0) {
244
+ mbedtls_net_close(ctx);
245
+ ret = MBEDTLS_ERR_NET_BIND_FAILED;
246
+ continue;
247
+ }
248
+
249
+ /* Listen only makes sense for TCP */
250
+ if (proto == MBEDTLS_NET_PROTO_TCP) {
251
+ if (listen(ctx->fd, MBEDTLS_NET_LISTEN_BACKLOG) != 0) {
252
+ mbedtls_net_close(ctx);
253
+ ret = MBEDTLS_ERR_NET_LISTEN_FAILED;
254
+ continue;
255
+ }
256
+ }
257
+
258
+ /* Bind was successful */
259
+ ret = 0;
260
+ break;
261
+ }
262
+
263
+ freeaddrinfo(addr_list);
264
+
265
+ return ret;
266
+
267
+ }
268
+
269
+ #if (defined(_WIN32) || defined(_WIN32_WCE)) && !defined(EFIX64) && \
270
+ !defined(EFI32)
271
+ /*
272
+ * Check if the requested operation would be blocking on a non-blocking socket
273
+ * and thus 'failed' with a negative return value.
274
+ */
275
+ static int net_would_block(const mbedtls_net_context *ctx)
276
+ {
277
+ ((void) ctx);
278
+ return WSAGetLastError() == WSAEWOULDBLOCK;
279
+ }
280
+ #else
281
+ /*
282
+ * Check if the requested operation would be blocking on a non-blocking socket
283
+ * and thus 'failed' with a negative return value.
284
+ *
285
+ * Note: on a blocking socket this function always returns 0!
286
+ */
287
+ static int net_would_block(const mbedtls_net_context *ctx)
288
+ {
289
+ int err = errno;
290
+
291
+ /*
292
+ * Never return 'WOULD BLOCK' on a blocking socket
293
+ */
294
+ if ((fcntl(ctx->fd, F_GETFL) & O_NONBLOCK) != O_NONBLOCK) {
295
+ errno = err;
296
+ return 0;
297
+ }
298
+
299
+ switch (errno = err) {
300
+ #if defined EAGAIN
301
+ case EAGAIN:
302
+ #endif
303
+ #if defined EWOULDBLOCK && EWOULDBLOCK != EAGAIN
304
+ case EWOULDBLOCK:
305
+ #endif
306
+ return 1;
307
+ }
308
+ return 0;
309
+ }
310
+ #endif /* ( _WIN32 || _WIN32_WCE ) && !EFIX64 && !EFI32 */
311
+
312
+ /*
313
+ * Accept a connection from a remote client
314
+ */
315
+ int mbedtls_net_accept(mbedtls_net_context *bind_ctx,
316
+ mbedtls_net_context *client_ctx,
317
+ void *client_ip, size_t buf_size, size_t *cip_len)
318
+ {
319
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
320
+ int type;
321
+
322
+ struct sockaddr_storage client_addr;
323
+
324
+ #if defined(__socklen_t_defined) || defined(_SOCKLEN_T) || \
325
+ defined(_SOCKLEN_T_DECLARED) || defined(__DEFINED_socklen_t) || \
326
+ defined(socklen_t) || (defined(_POSIX_VERSION) && _POSIX_VERSION >= 200112L)
327
+ socklen_t n = (socklen_t) sizeof(client_addr);
328
+ socklen_t type_len = (socklen_t) sizeof(type);
329
+ #else
330
+ int n = (int) sizeof(client_addr);
331
+ int type_len = (int) sizeof(type);
332
+ #endif
333
+
334
+ /* Is this a TCP or UDP socket? */
335
+ if (getsockopt(bind_ctx->fd, SOL_SOCKET, SO_TYPE,
336
+ (void *) &type, &type_len) != 0 ||
337
+ (type != SOCK_STREAM && type != SOCK_DGRAM)) {
338
+ return MBEDTLS_ERR_NET_ACCEPT_FAILED;
339
+ }
340
+
341
+ if (type == SOCK_STREAM) {
342
+ /* TCP: actual accept() */
343
+ ret = client_ctx->fd = (int) accept(bind_ctx->fd,
344
+ (struct sockaddr *) &client_addr, &n);
345
+ } else {
346
+ /* UDP: wait for a message, but keep it in the queue */
347
+ char buf[1] = { 0 };
348
+
349
+ ret = (int) recvfrom(bind_ctx->fd, buf, sizeof(buf), MSG_PEEK,
350
+ (struct sockaddr *) &client_addr, &n);
351
+
352
+ #if defined(_WIN32)
353
+ if (ret == SOCKET_ERROR &&
354
+ WSAGetLastError() == WSAEMSGSIZE) {
355
+ /* We know buf is too small, thanks, just peeking here */
356
+ ret = 0;
357
+ }
358
+ #endif
359
+ }
360
+
361
+ if (ret < 0) {
362
+ if (net_would_block(bind_ctx) != 0) {
363
+ return MBEDTLS_ERR_SSL_WANT_READ;
364
+ }
365
+
366
+ return MBEDTLS_ERR_NET_ACCEPT_FAILED;
367
+ }
368
+
369
+ /* UDP: hijack the listening socket to communicate with the client,
370
+ * then bind a new socket to accept new connections */
371
+ if (type != SOCK_STREAM) {
372
+ struct sockaddr_storage local_addr;
373
+ int one = 1;
374
+
375
+ if (connect(bind_ctx->fd, (struct sockaddr *) &client_addr, n) != 0) {
376
+ return MBEDTLS_ERR_NET_ACCEPT_FAILED;
377
+ }
378
+
379
+ client_ctx->fd = bind_ctx->fd;
380
+ bind_ctx->fd = -1; /* In case we exit early */
381
+
382
+ n = sizeof(struct sockaddr_storage);
383
+ if (getsockname(client_ctx->fd,
384
+ (struct sockaddr *) &local_addr, &n) != 0 ||
385
+ (bind_ctx->fd = (int) socket(local_addr.ss_family,
386
+ SOCK_DGRAM, IPPROTO_UDP)) < 0 ||
387
+ setsockopt(bind_ctx->fd, SOL_SOCKET, SO_REUSEADDR,
388
+ (const char *) &one, sizeof(one)) != 0) {
389
+ return MBEDTLS_ERR_NET_SOCKET_FAILED;
390
+ }
391
+
392
+ if (bind(bind_ctx->fd, (struct sockaddr *) &local_addr, n) != 0) {
393
+ return MBEDTLS_ERR_NET_BIND_FAILED;
394
+ }
395
+ }
396
+
397
+ if (client_ip != NULL) {
398
+ if (client_addr.ss_family == AF_INET) {
399
+ struct sockaddr_in *addr4 = (struct sockaddr_in *) &client_addr;
400
+ *cip_len = sizeof(addr4->sin_addr.s_addr);
401
+
402
+ if (buf_size < *cip_len) {
403
+ return MBEDTLS_ERR_NET_BUFFER_TOO_SMALL;
404
+ }
405
+
406
+ memcpy(client_ip, &addr4->sin_addr.s_addr, *cip_len);
407
+ } else {
408
+ struct sockaddr_in6 *addr6 = (struct sockaddr_in6 *) &client_addr;
409
+ *cip_len = sizeof(addr6->sin6_addr.s6_addr);
410
+
411
+ if (buf_size < *cip_len) {
412
+ return MBEDTLS_ERR_NET_BUFFER_TOO_SMALL;
413
+ }
414
+
415
+ memcpy(client_ip, &addr6->sin6_addr.s6_addr, *cip_len);
416
+ }
417
+ }
418
+
419
+ return 0;
420
+ }
421
+
422
+ /*
423
+ * Set the socket blocking or non-blocking
424
+ */
425
+ int mbedtls_net_set_block(mbedtls_net_context *ctx)
426
+ {
427
+ #if (defined(_WIN32) || defined(_WIN32_WCE)) && !defined(EFIX64) && \
428
+ !defined(EFI32)
429
+ u_long n = 0;
430
+ return ioctlsocket(ctx->fd, FIONBIO, &n);
431
+ #else
432
+ return fcntl(ctx->fd, F_SETFL, fcntl(ctx->fd, F_GETFL) & ~O_NONBLOCK);
433
+ #endif
434
+ }
435
+
436
+ int mbedtls_net_set_nonblock(mbedtls_net_context *ctx)
437
+ {
438
+ #if (defined(_WIN32) || defined(_WIN32_WCE)) && !defined(EFIX64) && \
439
+ !defined(EFI32)
440
+ u_long n = 1;
441
+ return ioctlsocket(ctx->fd, FIONBIO, &n);
442
+ #else
443
+ return fcntl(ctx->fd, F_SETFL, fcntl(ctx->fd, F_GETFL) | O_NONBLOCK);
444
+ #endif
445
+ }
446
+
447
+ /*
448
+ * Check if data is available on the socket
449
+ */
450
+
451
+ int mbedtls_net_poll(mbedtls_net_context *ctx, uint32_t rw, uint32_t timeout)
452
+ {
453
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
454
+ struct timeval tv;
455
+
456
+ fd_set read_fds;
457
+ fd_set write_fds;
458
+
459
+ int fd = ctx->fd;
460
+
461
+ ret = check_fd(fd, 1);
462
+ if (ret != 0) {
463
+ return ret;
464
+ }
465
+
466
+ #if defined(__has_feature)
467
+ #if __has_feature(memory_sanitizer)
468
+ /* Ensure that memory sanitizers consider read_fds and write_fds as
469
+ * initialized even on platforms such as Glibc/x86_64 where FD_ZERO
470
+ * is implemented in assembly. */
471
+ memset(&read_fds, 0, sizeof(read_fds));
472
+ memset(&write_fds, 0, sizeof(write_fds));
473
+ #endif
474
+ #endif
475
+
476
+ FD_ZERO(&read_fds);
477
+ if (rw & MBEDTLS_NET_POLL_READ) {
478
+ rw &= ~MBEDTLS_NET_POLL_READ;
479
+ FD_SET((SOCKET) fd, &read_fds);
480
+ }
481
+
482
+ FD_ZERO(&write_fds);
483
+ if (rw & MBEDTLS_NET_POLL_WRITE) {
484
+ rw &= ~MBEDTLS_NET_POLL_WRITE;
485
+ FD_SET((SOCKET) fd, &write_fds);
486
+ }
487
+
488
+ if (rw != 0) {
489
+ return MBEDTLS_ERR_NET_BAD_INPUT_DATA;
490
+ }
491
+
492
+ tv.tv_sec = timeout / 1000;
493
+ tv.tv_usec = (timeout % 1000) * 1000;
494
+
495
+ do {
496
+ ret = select(fd + 1, &read_fds, &write_fds, NULL,
497
+ timeout == (uint32_t) -1 ? NULL : &tv);
498
+ } while (IS_EINTR(ret));
499
+
500
+ if (ret < 0) {
501
+ return MBEDTLS_ERR_NET_POLL_FAILED;
502
+ }
503
+
504
+ ret = 0;
505
+ if (FD_ISSET(fd, &read_fds)) {
506
+ ret |= MBEDTLS_NET_POLL_READ;
507
+ }
508
+ if (FD_ISSET(fd, &write_fds)) {
509
+ ret |= MBEDTLS_NET_POLL_WRITE;
510
+ }
511
+
512
+ return ret;
513
+ }
514
+
515
+ /*
516
+ * Portable usleep helper
517
+ */
518
+ void mbedtls_net_usleep(unsigned long usec)
519
+ {
520
+ #if defined(_WIN32)
521
+ Sleep((usec + 999) / 1000);
522
+ #else
523
+ struct timeval tv;
524
+ tv.tv_sec = usec / 1000000;
525
+ #if (defined(__unix__) || defined(__unix) || \
526
+ (defined(__APPLE__) && defined(__MACH__))) && !defined(__DJGPP__)
527
+ tv.tv_usec = (suseconds_t) usec % 1000000;
528
+ #else
529
+ tv.tv_usec = usec % 1000000;
530
+ #endif
531
+ select(0, NULL, NULL, NULL, &tv);
532
+ #endif
533
+ }
534
+
535
+ /*
536
+ * Read at most 'len' characters
537
+ */
538
+ int mbedtls_net_recv(void *ctx, unsigned char *buf, size_t len)
539
+ {
540
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
541
+ int fd = ((mbedtls_net_context *) ctx)->fd;
542
+
543
+ ret = check_fd(fd, 0);
544
+ if (ret != 0) {
545
+ return ret;
546
+ }
547
+
548
+ ret = (int) read(fd, buf, len);
549
+
550
+ if (ret < 0) {
551
+ if (net_would_block(ctx) != 0) {
552
+ return MBEDTLS_ERR_SSL_WANT_READ;
553
+ }
554
+
555
+ #if (defined(_WIN32) || defined(_WIN32_WCE)) && !defined(EFIX64) && \
556
+ !defined(EFI32)
557
+ if (WSAGetLastError() == WSAECONNRESET) {
558
+ return MBEDTLS_ERR_NET_CONN_RESET;
559
+ }
560
+ #else
561
+ if (errno == EPIPE || errno == ECONNRESET) {
562
+ return MBEDTLS_ERR_NET_CONN_RESET;
563
+ }
564
+
565
+ if (errno == EINTR) {
566
+ return MBEDTLS_ERR_SSL_WANT_READ;
567
+ }
568
+ #endif
569
+
570
+ return MBEDTLS_ERR_NET_RECV_FAILED;
571
+ }
572
+
573
+ return ret;
574
+ }
575
+
576
+ /*
577
+ * Read at most 'len' characters, blocking for at most 'timeout' ms
578
+ */
579
+ int mbedtls_net_recv_timeout(void *ctx, unsigned char *buf,
580
+ size_t len, uint32_t timeout)
581
+ {
582
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
583
+ struct timeval tv;
584
+ fd_set read_fds;
585
+ int fd = ((mbedtls_net_context *) ctx)->fd;
586
+
587
+ ret = check_fd(fd, 1);
588
+ if (ret != 0) {
589
+ return ret;
590
+ }
591
+
592
+ FD_ZERO(&read_fds);
593
+ FD_SET((SOCKET) fd, &read_fds);
594
+
595
+ tv.tv_sec = timeout / 1000;
596
+ tv.tv_usec = (timeout % 1000) * 1000;
597
+
598
+ ret = select(fd + 1, &read_fds, NULL, NULL, timeout == 0 ? NULL : &tv);
599
+
600
+ /* Zero fds ready means we timed out */
601
+ if (ret == 0) {
602
+ return MBEDTLS_ERR_SSL_TIMEOUT;
603
+ }
604
+
605
+ if (ret < 0) {
606
+ #if (defined(_WIN32) || defined(_WIN32_WCE)) && !defined(EFIX64) && \
607
+ !defined(EFI32)
608
+ if (WSAGetLastError() == WSAEINTR) {
609
+ return MBEDTLS_ERR_SSL_WANT_READ;
610
+ }
611
+ #else
612
+ if (errno == EINTR) {
613
+ return MBEDTLS_ERR_SSL_WANT_READ;
614
+ }
615
+ #endif
616
+
617
+ return MBEDTLS_ERR_NET_RECV_FAILED;
618
+ }
619
+
620
+ /* This call will not block */
621
+ return mbedtls_net_recv(ctx, buf, len);
622
+ }
623
+
624
+ /*
625
+ * Write at most 'len' characters
626
+ */
627
+ int mbedtls_net_send(void *ctx, const unsigned char *buf, size_t len)
628
+ {
629
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
630
+ int fd = ((mbedtls_net_context *) ctx)->fd;
631
+
632
+ ret = check_fd(fd, 0);
633
+ if (ret != 0) {
634
+ return ret;
635
+ }
636
+
637
+ ret = (int) write(fd, buf, len);
638
+
639
+ if (ret < 0) {
640
+ if (net_would_block(ctx) != 0) {
641
+ return MBEDTLS_ERR_SSL_WANT_WRITE;
642
+ }
643
+
644
+ #if (defined(_WIN32) || defined(_WIN32_WCE)) && !defined(EFIX64) && \
645
+ !defined(EFI32)
646
+ if (WSAGetLastError() == WSAECONNRESET) {
647
+ return MBEDTLS_ERR_NET_CONN_RESET;
648
+ }
649
+ #else
650
+ if (errno == EPIPE || errno == ECONNRESET) {
651
+ return MBEDTLS_ERR_NET_CONN_RESET;
652
+ }
653
+
654
+ if (errno == EINTR) {
655
+ return MBEDTLS_ERR_SSL_WANT_WRITE;
656
+ }
657
+ #endif
658
+
659
+ return MBEDTLS_ERR_NET_SEND_FAILED;
660
+ }
661
+
662
+ return ret;
663
+ }
664
+
665
+ /*
666
+ * Close the connection
667
+ */
668
+ void mbedtls_net_close(mbedtls_net_context *ctx)
669
+ {
670
+ if (ctx->fd == -1) {
671
+ return;
672
+ }
673
+
674
+ close(ctx->fd);
675
+
676
+ ctx->fd = -1;
677
+ }
678
+
679
+ /*
680
+ * Gracefully close the connection
681
+ */
682
+ void mbedtls_net_free(mbedtls_net_context *ctx)
683
+ {
684
+ if (ctx == NULL || ctx->fd == -1) {
685
+ return;
686
+ }
687
+
688
+ shutdown(ctx->fd, 2);
689
+ close(ctx->fd);
690
+
691
+ ctx->fd = -1;
692
+ }
693
+
694
+ #endif /* MBEDTLS_NET_C */