@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,538 @@
1
+ /*
2
+ * Message Processing Stack, Reader implementation
3
+ *
4
+ * Copyright The Mbed TLS Contributors
5
+ * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
6
+ */
7
+
8
+ #include "common.h"
9
+
10
+ #if defined(MBEDTLS_SSL_PROTO_TLS1_3)
11
+
12
+ #include "mps_reader.h"
13
+ #include "mps_common.h"
14
+ #include "mps_trace.h"
15
+
16
+ #include <string.h>
17
+
18
+ #if defined(MBEDTLS_MPS_ENABLE_TRACE)
19
+ static int mbedtls_mps_trace_id = MBEDTLS_MPS_TRACE_BIT_READER;
20
+ #endif /* MBEDTLS_MPS_ENABLE_TRACE */
21
+
22
+ /*
23
+ * GENERAL NOTE ON CODING STYLE
24
+ *
25
+ * The following code intentionally separates memory loads
26
+ * and stores from other operations (arithmetic or branches).
27
+ * This leads to the introduction of many local variables
28
+ * and significantly increases the C-code line count, but
29
+ * should not increase the size of generated assembly.
30
+ *
31
+ * The reason for this is twofold:
32
+ * (1) It will ease verification efforts using the VST
33
+ * (Verified Software Toolchain)
34
+ * whose program logic cannot directly reason
35
+ * about instructions containing a load or store in
36
+ * addition to other operations (e.g. *p = *q or
37
+ * tmp = *p + 42).
38
+ * (2) Operating on local variables and writing the results
39
+ * back to the target contexts on success only
40
+ * allows to maintain structure invariants even
41
+ * on failure - this in turn has two benefits:
42
+ * (2.a) If for some reason an error code is not caught
43
+ * and operation continues, functions are nonetheless
44
+ * called with sane contexts, reducing the risk
45
+ * of dangerous behavior.
46
+ * (2.b) Randomized testing is easier if structures
47
+ * remain intact even in the face of failing
48
+ * and/or non-sensical calls.
49
+ * Moreover, it might even reduce code-size because
50
+ * the compiler need not write back temporary results
51
+ * to memory in case of failure.
52
+ *
53
+ */
54
+
55
+ static inline int mps_reader_is_accumulating(
56
+ mbedtls_mps_reader const *rd)
57
+ {
58
+ mbedtls_mps_size_t acc_remaining;
59
+ if (rd->acc == NULL) {
60
+ return 0;
61
+ }
62
+
63
+ acc_remaining = rd->acc_share.acc_remaining;
64
+ return acc_remaining > 0;
65
+ }
66
+
67
+ static inline int mps_reader_is_producing(
68
+ mbedtls_mps_reader const *rd)
69
+ {
70
+ unsigned char *frag = rd->frag;
71
+ return frag == NULL;
72
+ }
73
+
74
+ static inline int mps_reader_is_consuming(
75
+ mbedtls_mps_reader const *rd)
76
+ {
77
+ return !mps_reader_is_producing(rd);
78
+ }
79
+
80
+ static inline mbedtls_mps_size_t mps_reader_get_fragment_offset(
81
+ mbedtls_mps_reader const *rd)
82
+ {
83
+ unsigned char *acc = rd->acc;
84
+ mbedtls_mps_size_t frag_offset;
85
+
86
+ if (acc == NULL) {
87
+ return 0;
88
+ }
89
+
90
+ frag_offset = rd->acc_share.frag_offset;
91
+ return frag_offset;
92
+ }
93
+
94
+ static inline mbedtls_mps_size_t mps_reader_serving_from_accumulator(
95
+ mbedtls_mps_reader const *rd)
96
+ {
97
+ mbedtls_mps_size_t frag_offset, end;
98
+
99
+ frag_offset = mps_reader_get_fragment_offset(rd);
100
+ end = rd->end;
101
+
102
+ return end < frag_offset;
103
+ }
104
+
105
+ static inline void mps_reader_zero(mbedtls_mps_reader *rd)
106
+ {
107
+ /* A plain memset() would likely be more efficient,
108
+ * but the current way of zeroing makes it harder
109
+ * to overlook fields which should not be zero-initialized.
110
+ * It's also more suitable for FV efforts since it
111
+ * doesn't require reasoning about structs being
112
+ * interpreted as unstructured binary blobs. */
113
+ static mbedtls_mps_reader const zero =
114
+ { .frag = NULL,
115
+ .frag_len = 0,
116
+ .commit = 0,
117
+ .end = 0,
118
+ .pending = 0,
119
+ .acc = NULL,
120
+ .acc_len = 0,
121
+ .acc_available = 0,
122
+ .acc_share = { .acc_remaining = 0 } };
123
+ *rd = zero;
124
+ }
125
+
126
+ int mbedtls_mps_reader_init(mbedtls_mps_reader *rd,
127
+ unsigned char *acc,
128
+ mbedtls_mps_size_t acc_len)
129
+ {
130
+ MBEDTLS_MPS_TRACE_INIT("mbedtls_mps_reader_init");
131
+ MBEDTLS_MPS_TRACE(MBEDTLS_MPS_TRACE_TYPE_COMMENT,
132
+ "* Accumulator size: %u bytes", (unsigned) acc_len);
133
+ mps_reader_zero(rd);
134
+ rd->acc = acc;
135
+ rd->acc_len = acc_len;
136
+ MBEDTLS_MPS_TRACE_RETURN(0);
137
+ }
138
+
139
+ int mbedtls_mps_reader_free(mbedtls_mps_reader *rd)
140
+ {
141
+ MBEDTLS_MPS_TRACE_INIT("mbedtls_mps_reader_free");
142
+ mps_reader_zero(rd);
143
+ MBEDTLS_MPS_TRACE_RETURN(0);
144
+ }
145
+
146
+ int mbedtls_mps_reader_feed(mbedtls_mps_reader *rd,
147
+ unsigned char *new_frag,
148
+ mbedtls_mps_size_t new_frag_len)
149
+ {
150
+ mbedtls_mps_size_t copy_to_acc;
151
+ MBEDTLS_MPS_TRACE_INIT("mbedtls_mps_reader_feed");
152
+ MBEDTLS_MPS_TRACE(MBEDTLS_MPS_TRACE_TYPE_COMMENT,
153
+ "* Fragment length: %u bytes", (unsigned) new_frag_len);
154
+
155
+ if (new_frag == NULL) {
156
+ MBEDTLS_MPS_TRACE_RETURN(MBEDTLS_ERR_MPS_READER_INVALID_ARG);
157
+ }
158
+
159
+ MBEDTLS_MPS_STATE_VALIDATE_RAW(mps_reader_is_producing(
160
+ rd),
161
+ "mbedtls_mps_reader_feed() requires reader to be in producing mode");
162
+
163
+ if (mps_reader_is_accumulating(rd)) {
164
+ unsigned char *acc = rd->acc;
165
+ mbedtls_mps_size_t acc_remaining = rd->acc_share.acc_remaining;
166
+ mbedtls_mps_size_t acc_available = rd->acc_available;
167
+
168
+ /* Skip over parts of the accumulator that have already been filled. */
169
+ acc += acc_available;
170
+
171
+ copy_to_acc = acc_remaining;
172
+ if (copy_to_acc > new_frag_len) {
173
+ copy_to_acc = new_frag_len;
174
+ }
175
+
176
+ /* Copy new contents to accumulator. */
177
+ memcpy(acc, new_frag, copy_to_acc);
178
+
179
+ MBEDTLS_MPS_TRACE(MBEDTLS_MPS_TRACE_TYPE_COMMENT,
180
+ "Copy new data of size %u of %u into accumulator at offset %u",
181
+ (unsigned) copy_to_acc, (unsigned) new_frag_len,
182
+ (unsigned) acc_available);
183
+
184
+ /* Check if, with the new fragment, we have enough data. */
185
+ acc_remaining -= copy_to_acc;
186
+ if (acc_remaining > 0) {
187
+ /* We need to accumulate more data. Stay in producing mode. */
188
+ acc_available += copy_to_acc;
189
+ rd->acc_share.acc_remaining = acc_remaining;
190
+ rd->acc_available = acc_available;
191
+ MBEDTLS_MPS_TRACE_RETURN(MBEDTLS_ERR_MPS_READER_NEED_MORE);
192
+ }
193
+
194
+ /* We have filled the accumulator: Move to consuming mode. */
195
+
196
+ MBEDTLS_MPS_TRACE(MBEDTLS_MPS_TRACE_TYPE_COMMENT,
197
+ "Enough data available to serve user request");
198
+
199
+ /* Remember overlap of accumulator and fragment. */
200
+ rd->acc_share.frag_offset = acc_available;
201
+ acc_available += copy_to_acc;
202
+ rd->acc_available = acc_available;
203
+ } else { /* Not accumulating */
204
+ rd->acc_share.frag_offset = 0;
205
+ }
206
+
207
+ rd->frag = new_frag;
208
+ rd->frag_len = new_frag_len;
209
+ rd->commit = 0;
210
+ rd->end = 0;
211
+ MBEDTLS_MPS_TRACE_RETURN(0);
212
+ }
213
+
214
+
215
+ int mbedtls_mps_reader_get(mbedtls_mps_reader *rd,
216
+ mbedtls_mps_size_t desired,
217
+ unsigned char **buffer,
218
+ mbedtls_mps_size_t *buflen)
219
+ {
220
+ unsigned char *frag;
221
+ mbedtls_mps_size_t frag_len, frag_offset, end, frag_fetched, frag_remaining;
222
+ MBEDTLS_MPS_TRACE_INIT("mbedtls_mps_reader_get");
223
+ MBEDTLS_MPS_TRACE(MBEDTLS_MPS_TRACE_TYPE_COMMENT,
224
+ "* Bytes requested: %u", (unsigned) desired);
225
+
226
+ MBEDTLS_MPS_STATE_VALIDATE_RAW(mps_reader_is_consuming(
227
+ rd),
228
+ "mbedtls_mps_reader_get() requires reader to be in consuming mode");
229
+
230
+ end = rd->end;
231
+ frag_offset = mps_reader_get_fragment_offset(rd);
232
+
233
+ /* Check if we're still serving from the accumulator. */
234
+ if (mps_reader_serving_from_accumulator(rd)) {
235
+ /* Illustration of supported and unsupported cases:
236
+ *
237
+ * - Allowed #1
238
+ *
239
+ * +-----------------------------------+
240
+ * | frag |
241
+ * +-----------------------------------+
242
+ *
243
+ * end end+desired
244
+ * | |
245
+ * +-----v-------v-------------+
246
+ * | acc |
247
+ * +---------------------------+
248
+ * | |
249
+ * frag_offset acc_available
250
+ *
251
+ * - Allowed #2
252
+ *
253
+ * +-----------------------------------+
254
+ * | frag |
255
+ * +-----------------------------------+
256
+ *
257
+ * end end+desired
258
+ * | |
259
+ * +----------v----------------v
260
+ * | acc |
261
+ * +---------------------------+
262
+ * | |
263
+ * frag_offset acc_available
264
+ *
265
+ * - Not allowed #1 (could be served, but we don't actually use it):
266
+ *
267
+ * +-----------------------------------+
268
+ * | frag |
269
+ * +-----------------------------------+
270
+ *
271
+ * end end+desired
272
+ * | |
273
+ * +------v-------------v------+
274
+ * | acc |
275
+ * +---------------------------+
276
+ * | |
277
+ * frag_offset acc_available
278
+ *
279
+ *
280
+ * - Not allowed #2 (can't be served with a contiguous buffer):
281
+ *
282
+ * +-----------------------------------+
283
+ * | frag |
284
+ * +-----------------------------------+
285
+ *
286
+ * end end + desired
287
+ * | |
288
+ * +------v--------------------+ v
289
+ * | acc |
290
+ * +---------------------------+
291
+ * | |
292
+ * frag_offset acc_available
293
+ *
294
+ * In case of Allowed #2 we're switching to serve from
295
+ * `frag` starting from the next call to mbedtls_mps_reader_get().
296
+ */
297
+
298
+ unsigned char *acc;
299
+
300
+ MBEDTLS_MPS_TRACE(MBEDTLS_MPS_TRACE_TYPE_COMMENT,
301
+ "Serve the request from the accumulator");
302
+ if (frag_offset - end < desired) {
303
+ mbedtls_mps_size_t acc_available;
304
+ acc_available = rd->acc_available;
305
+ if (acc_available - end != desired) {
306
+ /* It might be possible to serve some of these situations by
307
+ * making additional space in the accumulator, removing those
308
+ * parts that have already been committed.
309
+ * On the other hand, this brings additional complexity and
310
+ * enlarges the code size, while there doesn't seem to be a use
311
+ * case where we don't attempt exactly the same `get` calls when
312
+ * resuming on a reader than what we tried before pausing it.
313
+ * If we believe we adhere to this restricted usage throughout
314
+ * the library, this check is a good opportunity to
315
+ * validate this. */
316
+ MBEDTLS_MPS_TRACE_RETURN(
317
+ MBEDTLS_ERR_MPS_READER_INCONSISTENT_REQUESTS);
318
+ }
319
+ }
320
+
321
+ acc = rd->acc;
322
+ acc += end;
323
+
324
+ *buffer = acc;
325
+ if (buflen != NULL) {
326
+ *buflen = desired;
327
+ }
328
+
329
+ end += desired;
330
+ rd->end = end;
331
+ rd->pending = 0;
332
+
333
+ MBEDTLS_MPS_TRACE_RETURN(0);
334
+ }
335
+
336
+ /* Attempt to serve the request from the current fragment */
337
+ MBEDTLS_MPS_TRACE(MBEDTLS_MPS_TRACE_TYPE_COMMENT,
338
+ "Serve the request from the current fragment.");
339
+
340
+ frag_len = rd->frag_len;
341
+ frag_fetched = end - frag_offset; /* The amount of data from the current
342
+ * fragment that has already been passed
343
+ * to the user. */
344
+ frag_remaining = frag_len - frag_fetched; /* Remaining data in fragment */
345
+
346
+ /* Check if we can serve the read request from the fragment. */
347
+ if (frag_remaining < desired) {
348
+ MBEDTLS_MPS_TRACE(MBEDTLS_MPS_TRACE_TYPE_COMMENT,
349
+ "There's not enough data in the current fragment "
350
+ "to serve the request.");
351
+ /* There's not enough data in the current fragment,
352
+ * so either just RETURN what we have or fail. */
353
+ if (buflen == NULL) {
354
+ if (frag_remaining > 0) {
355
+ rd->pending = desired - frag_remaining;
356
+ MBEDTLS_MPS_TRACE(MBEDTLS_MPS_TRACE_TYPE_COMMENT,
357
+ "Remember to collect %u bytes before re-opening",
358
+ (unsigned) rd->pending);
359
+ }
360
+ MBEDTLS_MPS_TRACE_RETURN(MBEDTLS_ERR_MPS_READER_OUT_OF_DATA);
361
+ }
362
+
363
+ desired = frag_remaining;
364
+ }
365
+
366
+ /* There's enough data in the current fragment to serve the
367
+ * (potentially modified) read request. */
368
+
369
+ frag = rd->frag;
370
+ frag += frag_fetched;
371
+
372
+ *buffer = frag;
373
+ if (buflen != NULL) {
374
+ *buflen = desired;
375
+ }
376
+
377
+ end += desired;
378
+ rd->end = end;
379
+ rd->pending = 0;
380
+ MBEDTLS_MPS_TRACE_RETURN(0);
381
+ }
382
+
383
+ int mbedtls_mps_reader_commit(mbedtls_mps_reader *rd)
384
+ {
385
+ mbedtls_mps_size_t end;
386
+ MBEDTLS_MPS_TRACE_INIT("mbedtls_mps_reader_commit");
387
+ MBEDTLS_MPS_STATE_VALIDATE_RAW(mps_reader_is_consuming(
388
+ rd),
389
+ "mbedtls_mps_reader_commit() requires reader to be in consuming mode");
390
+
391
+ end = rd->end;
392
+ rd->commit = end;
393
+
394
+ MBEDTLS_MPS_TRACE_RETURN(0);
395
+ }
396
+
397
+ int mbedtls_mps_reader_reclaim(mbedtls_mps_reader *rd,
398
+ int *paused)
399
+ {
400
+ unsigned char *frag, *acc;
401
+ mbedtls_mps_size_t pending, commit;
402
+ mbedtls_mps_size_t acc_len, frag_offset, frag_len;
403
+ MBEDTLS_MPS_TRACE_INIT("mbedtls_mps_reader_reclaim");
404
+
405
+ if (paused != NULL) {
406
+ *paused = 0;
407
+ }
408
+
409
+ MBEDTLS_MPS_STATE_VALIDATE_RAW(mps_reader_is_consuming(
410
+ rd),
411
+ "mbedtls_mps_reader_reclaim() requires reader to be in consuming mode");
412
+
413
+ frag = rd->frag;
414
+ acc = rd->acc;
415
+ pending = rd->pending;
416
+ commit = rd->commit;
417
+ frag_len = rd->frag_len;
418
+
419
+ frag_offset = mps_reader_get_fragment_offset(rd);
420
+
421
+ if (pending == 0) {
422
+ MBEDTLS_MPS_TRACE(MBEDTLS_MPS_TRACE_TYPE_COMMENT,
423
+ "No unsatisfied read-request has been logged.");
424
+
425
+ /* Check if there's data left to be consumed. */
426
+ if (commit < frag_offset || commit - frag_offset < frag_len) {
427
+ MBEDTLS_MPS_TRACE(MBEDTLS_MPS_TRACE_TYPE_COMMENT,
428
+ "There is data left to be consumed.");
429
+ rd->end = commit;
430
+ MBEDTLS_MPS_TRACE_RETURN(MBEDTLS_ERR_MPS_READER_DATA_LEFT);
431
+ }
432
+
433
+ rd->acc_available = 0;
434
+ rd->acc_share.acc_remaining = 0;
435
+
436
+ MBEDTLS_MPS_TRACE(MBEDTLS_MPS_TRACE_TYPE_COMMENT,
437
+ "Fragment has been fully processed and committed.");
438
+ } else {
439
+ int overflow;
440
+
441
+ mbedtls_mps_size_t acc_backup_offset;
442
+ mbedtls_mps_size_t acc_backup_len;
443
+ mbedtls_mps_size_t frag_backup_offset;
444
+ mbedtls_mps_size_t frag_backup_len;
445
+
446
+ mbedtls_mps_size_t backup_len;
447
+ mbedtls_mps_size_t acc_len_needed;
448
+
449
+ MBEDTLS_MPS_TRACE(MBEDTLS_MPS_TRACE_TYPE_COMMENT,
450
+ "There has been an unsatisfied read with %u bytes overhead.",
451
+ (unsigned) pending);
452
+
453
+ if (acc == NULL) {
454
+ MBEDTLS_MPS_TRACE(MBEDTLS_MPS_TRACE_TYPE_COMMENT,
455
+ "No accumulator present");
456
+ MBEDTLS_MPS_TRACE_RETURN(
457
+ MBEDTLS_ERR_MPS_READER_NEED_ACCUMULATOR);
458
+ }
459
+ acc_len = rd->acc_len;
460
+
461
+ /* Check if the upper layer has already fetched
462
+ * and committed the contents of the accumulator. */
463
+ if (commit < frag_offset) {
464
+ /* No, accumulator is still being processed. */
465
+ frag_backup_offset = 0;
466
+ frag_backup_len = frag_len;
467
+ acc_backup_offset = commit;
468
+ acc_backup_len = frag_offset - commit;
469
+ } else {
470
+ /* Yes, the accumulator is already processed. */
471
+ frag_backup_offset = commit - frag_offset;
472
+ frag_backup_len = frag_len - frag_backup_offset;
473
+ acc_backup_offset = 0;
474
+ acc_backup_len = 0;
475
+ }
476
+
477
+ backup_len = acc_backup_len + frag_backup_len;
478
+ acc_len_needed = backup_len + pending;
479
+
480
+ overflow = 0;
481
+ overflow |= (backup_len < acc_backup_len);
482
+ overflow |= (acc_len_needed < backup_len);
483
+
484
+ if (overflow || acc_len < acc_len_needed) {
485
+ /* Except for the different return code, we behave as if
486
+ * there hadn't been a call to mbedtls_mps_reader_get()
487
+ * since the last commit. */
488
+ rd->end = commit;
489
+ rd->pending = 0;
490
+ MBEDTLS_MPS_TRACE(MBEDTLS_MPS_TRACE_TYPE_ERROR,
491
+ "The accumulator is too small to handle the backup.");
492
+ MBEDTLS_MPS_TRACE(MBEDTLS_MPS_TRACE_TYPE_ERROR,
493
+ "* Size: %u", (unsigned) acc_len);
494
+ MBEDTLS_MPS_TRACE(MBEDTLS_MPS_TRACE_TYPE_ERROR,
495
+ "* Needed: %u (%u + %u)",
496
+ (unsigned) acc_len_needed,
497
+ (unsigned) backup_len, (unsigned) pending);
498
+ MBEDTLS_MPS_TRACE_RETURN(
499
+ MBEDTLS_ERR_MPS_READER_ACCUMULATOR_TOO_SMALL);
500
+ }
501
+
502
+ MBEDTLS_MPS_TRACE(MBEDTLS_MPS_TRACE_TYPE_COMMENT,
503
+ "Fragment backup: %u", (unsigned) frag_backup_len);
504
+ MBEDTLS_MPS_TRACE(MBEDTLS_MPS_TRACE_TYPE_COMMENT,
505
+ "Accumulator backup: %u", (unsigned) acc_backup_len);
506
+
507
+ /* Move uncommitted parts from the accumulator to the front
508
+ * of the accumulator. */
509
+ memmove(acc, acc + acc_backup_offset, acc_backup_len);
510
+
511
+ /* Copy uncommitted parts of the current fragment to the
512
+ * accumulator. */
513
+ memcpy(acc + acc_backup_len,
514
+ frag + frag_backup_offset, frag_backup_len);
515
+
516
+ rd->acc_available = backup_len;
517
+ rd->acc_share.acc_remaining = pending;
518
+
519
+ if (paused != NULL) {
520
+ *paused = 1;
521
+ }
522
+ }
523
+
524
+ rd->frag = NULL;
525
+ rd->frag_len = 0;
526
+
527
+ rd->commit = 0;
528
+ rd->end = 0;
529
+ rd->pending = 0;
530
+
531
+ MBEDTLS_MPS_TRACE(MBEDTLS_MPS_TRACE_TYPE_COMMENT,
532
+ "Final state: aa %u, al %u, ar %u",
533
+ (unsigned) rd->acc_available, (unsigned) rd->acc_len,
534
+ (unsigned) rd->acc_share.acc_remaining);
535
+ MBEDTLS_MPS_TRACE_RETURN(0);
536
+ }
537
+
538
+ #endif /* MBEDTLS_SSL_PROTO_TLS1_3 */