@scriptc/runtime 0.0.0 → 0.0.1

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 +5036 -0
  43. package/src/scr_stream.c +2877 -0
  44. package/src/scr_string.c +1176 -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,680 @@
1
+ /*
2
+ * Entropy accumulator 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_ENTROPY_C)
11
+
12
+ #include "mbedtls/entropy.h"
13
+ #include "entropy_poll.h"
14
+ #include "mbedtls/platform_util.h"
15
+ #include "mbedtls/error.h"
16
+
17
+ #include <string.h>
18
+
19
+ #if defined(MBEDTLS_FS_IO)
20
+ #include <stdio.h>
21
+ #endif
22
+
23
+ #include "mbedtls/platform.h"
24
+
25
+ #define ENTROPY_MAX_LOOP 256 /**< Maximum amount to loop before error */
26
+
27
+ void mbedtls_entropy_init(mbedtls_entropy_context *ctx)
28
+ {
29
+ ctx->source_count = 0;
30
+ memset(ctx->source, 0, sizeof(ctx->source));
31
+
32
+ #if defined(MBEDTLS_THREADING_C)
33
+ mbedtls_mutex_init(&ctx->mutex);
34
+ #endif
35
+
36
+ ctx->accumulator_started = 0;
37
+ mbedtls_md_init(&ctx->accumulator);
38
+
39
+ /* Reminder: Update ENTROPY_HAVE_STRONG in the test files
40
+ * when adding more strong entropy sources here. */
41
+
42
+ #if !defined(MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES)
43
+ #if !defined(MBEDTLS_NO_PLATFORM_ENTROPY)
44
+ mbedtls_entropy_add_source(ctx, mbedtls_platform_entropy_poll, NULL,
45
+ MBEDTLS_ENTROPY_MIN_PLATFORM,
46
+ MBEDTLS_ENTROPY_SOURCE_STRONG);
47
+ #endif
48
+ #if defined(MBEDTLS_ENTROPY_HARDWARE_ALT)
49
+ mbedtls_entropy_add_source(ctx, mbedtls_hardware_poll, NULL,
50
+ MBEDTLS_ENTROPY_MIN_HARDWARE,
51
+ MBEDTLS_ENTROPY_SOURCE_STRONG);
52
+ #endif
53
+ #if defined(MBEDTLS_ENTROPY_NV_SEED)
54
+ mbedtls_entropy_add_source(ctx, mbedtls_nv_seed_poll, NULL,
55
+ MBEDTLS_ENTROPY_BLOCK_SIZE,
56
+ MBEDTLS_ENTROPY_SOURCE_STRONG);
57
+ ctx->initial_entropy_run = 0;
58
+ #endif
59
+ #endif /* MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES */
60
+ }
61
+
62
+ void mbedtls_entropy_free(mbedtls_entropy_context *ctx)
63
+ {
64
+ if (ctx == NULL) {
65
+ return;
66
+ }
67
+
68
+ /* If the context was already free, don't call free() again.
69
+ * This is important for mutexes which don't allow double-free. */
70
+ if (ctx->accumulator_started == -1) {
71
+ return;
72
+ }
73
+
74
+ #if defined(MBEDTLS_THREADING_C)
75
+ mbedtls_mutex_free(&ctx->mutex);
76
+ #endif
77
+ mbedtls_md_free(&ctx->accumulator);
78
+ #if defined(MBEDTLS_ENTROPY_NV_SEED)
79
+ ctx->initial_entropy_run = 0;
80
+ #endif
81
+ ctx->source_count = 0;
82
+ mbedtls_platform_zeroize(ctx->source, sizeof(ctx->source));
83
+ ctx->accumulator_started = -1;
84
+ }
85
+
86
+ int mbedtls_entropy_add_source(mbedtls_entropy_context *ctx,
87
+ mbedtls_entropy_f_source_ptr f_source, void *p_source,
88
+ size_t threshold, int strong)
89
+ {
90
+ int idx, ret = 0;
91
+
92
+ #if defined(MBEDTLS_THREADING_C)
93
+ if ((ret = mbedtls_mutex_lock(&ctx->mutex)) != 0) {
94
+ return ret;
95
+ }
96
+ #endif
97
+
98
+ idx = ctx->source_count;
99
+ if (idx >= MBEDTLS_ENTROPY_MAX_SOURCES) {
100
+ ret = MBEDTLS_ERR_ENTROPY_MAX_SOURCES;
101
+ goto exit;
102
+ }
103
+
104
+ ctx->source[idx].f_source = f_source;
105
+ ctx->source[idx].p_source = p_source;
106
+ ctx->source[idx].threshold = threshold;
107
+ ctx->source[idx].strong = strong;
108
+
109
+ ctx->source_count++;
110
+
111
+ exit:
112
+ #if defined(MBEDTLS_THREADING_C)
113
+ if (mbedtls_mutex_unlock(&ctx->mutex) != 0) {
114
+ return MBEDTLS_ERR_THREADING_MUTEX_ERROR;
115
+ }
116
+ #endif
117
+
118
+ return ret;
119
+ }
120
+
121
+ /*
122
+ * Entropy accumulator update
123
+ */
124
+ static int entropy_update(mbedtls_entropy_context *ctx, unsigned char source_id,
125
+ const unsigned char *data, size_t len)
126
+ {
127
+ unsigned char header[2];
128
+ unsigned char tmp[MBEDTLS_ENTROPY_BLOCK_SIZE];
129
+ size_t use_len = len;
130
+ const unsigned char *p = data;
131
+ int ret = 0;
132
+
133
+ if (use_len > MBEDTLS_ENTROPY_BLOCK_SIZE) {
134
+ if ((ret = mbedtls_md(mbedtls_md_info_from_type(MBEDTLS_ENTROPY_MD),
135
+ data, len, tmp)) != 0) {
136
+ goto cleanup;
137
+ }
138
+ p = tmp;
139
+ use_len = MBEDTLS_ENTROPY_BLOCK_SIZE;
140
+ }
141
+
142
+ header[0] = source_id;
143
+ header[1] = use_len & 0xFF;
144
+
145
+ /*
146
+ * Start the accumulator if this has not already happened. Note that
147
+ * it is sufficient to start the accumulator here only because all calls to
148
+ * gather entropy eventually execute this code.
149
+ */
150
+ if (ctx->accumulator_started == 0) {
151
+ ret = mbedtls_md_setup(&ctx->accumulator,
152
+ mbedtls_md_info_from_type(MBEDTLS_ENTROPY_MD), 0);
153
+ if (ret != 0) {
154
+ goto cleanup;
155
+ }
156
+ ret = mbedtls_md_starts(&ctx->accumulator);
157
+ if (ret != 0) {
158
+ goto cleanup;
159
+ }
160
+ ctx->accumulator_started = 1;
161
+ }
162
+ if ((ret = mbedtls_md_update(&ctx->accumulator, header, 2)) != 0) {
163
+ goto cleanup;
164
+ }
165
+ ret = mbedtls_md_update(&ctx->accumulator, p, use_len);
166
+
167
+ cleanup:
168
+ mbedtls_platform_zeroize(tmp, sizeof(tmp));
169
+
170
+ return ret;
171
+ }
172
+
173
+ int mbedtls_entropy_update_manual(mbedtls_entropy_context *ctx,
174
+ const unsigned char *data, size_t len)
175
+ {
176
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
177
+
178
+ #if defined(MBEDTLS_THREADING_C)
179
+ if ((ret = mbedtls_mutex_lock(&ctx->mutex)) != 0) {
180
+ return ret;
181
+ }
182
+ #endif
183
+
184
+ ret = entropy_update(ctx, MBEDTLS_ENTROPY_SOURCE_MANUAL, data, len);
185
+
186
+ #if defined(MBEDTLS_THREADING_C)
187
+ if (mbedtls_mutex_unlock(&ctx->mutex) != 0) {
188
+ return MBEDTLS_ERR_THREADING_MUTEX_ERROR;
189
+ }
190
+ #endif
191
+
192
+ return ret;
193
+ }
194
+
195
+ /*
196
+ * Run through the different sources to add entropy to our accumulator
197
+ */
198
+ static int entropy_gather_internal(mbedtls_entropy_context *ctx)
199
+ {
200
+ int ret = MBEDTLS_ERR_ENTROPY_SOURCE_FAILED;
201
+ int i;
202
+ int have_one_strong = 0;
203
+ unsigned char buf[MBEDTLS_ENTROPY_MAX_GATHER];
204
+ size_t olen;
205
+
206
+ if (ctx->source_count == 0) {
207
+ return MBEDTLS_ERR_ENTROPY_NO_SOURCES_DEFINED;
208
+ }
209
+
210
+ /*
211
+ * Run through our entropy sources
212
+ */
213
+ for (i = 0; i < ctx->source_count; i++) {
214
+ if (ctx->source[i].strong == MBEDTLS_ENTROPY_SOURCE_STRONG) {
215
+ have_one_strong = 1;
216
+ }
217
+
218
+ olen = 0;
219
+ if ((ret = ctx->source[i].f_source(ctx->source[i].p_source,
220
+ buf, MBEDTLS_ENTROPY_MAX_GATHER, &olen)) != 0) {
221
+ goto cleanup;
222
+ }
223
+
224
+ /*
225
+ * Add if we actually gathered something
226
+ */
227
+ if (olen > 0) {
228
+ if ((ret = entropy_update(ctx, (unsigned char) i,
229
+ buf, olen)) != 0) {
230
+ return ret;
231
+ }
232
+ ctx->source[i].size += olen;
233
+ }
234
+ }
235
+
236
+ if (have_one_strong == 0) {
237
+ ret = MBEDTLS_ERR_ENTROPY_NO_STRONG_SOURCE;
238
+ }
239
+
240
+ cleanup:
241
+ mbedtls_platform_zeroize(buf, sizeof(buf));
242
+
243
+ return ret;
244
+ }
245
+
246
+ /*
247
+ * Thread-safe wrapper for entropy_gather_internal()
248
+ */
249
+ int mbedtls_entropy_gather(mbedtls_entropy_context *ctx)
250
+ {
251
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
252
+
253
+ #if defined(MBEDTLS_THREADING_C)
254
+ if ((ret = mbedtls_mutex_lock(&ctx->mutex)) != 0) {
255
+ return ret;
256
+ }
257
+ #endif
258
+
259
+ ret = entropy_gather_internal(ctx);
260
+
261
+ #if defined(MBEDTLS_THREADING_C)
262
+ if (mbedtls_mutex_unlock(&ctx->mutex) != 0) {
263
+ return MBEDTLS_ERR_THREADING_MUTEX_ERROR;
264
+ }
265
+ #endif
266
+
267
+ return ret;
268
+ }
269
+
270
+ int mbedtls_entropy_func(void *data, unsigned char *output, size_t len)
271
+ {
272
+ int ret, count = 0, i, thresholds_reached;
273
+ size_t strong_size;
274
+ mbedtls_entropy_context *ctx = (mbedtls_entropy_context *) data;
275
+ unsigned char buf[MBEDTLS_ENTROPY_BLOCK_SIZE];
276
+
277
+ if (len > MBEDTLS_ENTROPY_BLOCK_SIZE) {
278
+ return MBEDTLS_ERR_ENTROPY_SOURCE_FAILED;
279
+ }
280
+
281
+ #if defined(MBEDTLS_ENTROPY_NV_SEED)
282
+ /* Update the NV entropy seed before generating any entropy for outside
283
+ * use.
284
+ */
285
+ if (ctx->initial_entropy_run == 0) {
286
+ ctx->initial_entropy_run = 1;
287
+ if ((ret = mbedtls_entropy_update_nv_seed(ctx)) != 0) {
288
+ return ret;
289
+ }
290
+ }
291
+ #endif
292
+
293
+ #if defined(MBEDTLS_THREADING_C)
294
+ if ((ret = mbedtls_mutex_lock(&ctx->mutex)) != 0) {
295
+ return ret;
296
+ }
297
+ #endif
298
+
299
+ /*
300
+ * Always gather extra entropy before a call
301
+ */
302
+ do {
303
+ if (count++ > ENTROPY_MAX_LOOP) {
304
+ ret = MBEDTLS_ERR_ENTROPY_SOURCE_FAILED;
305
+ goto exit;
306
+ }
307
+
308
+ if ((ret = entropy_gather_internal(ctx)) != 0) {
309
+ goto exit;
310
+ }
311
+
312
+ thresholds_reached = 1;
313
+ strong_size = 0;
314
+ for (i = 0; i < ctx->source_count; i++) {
315
+ if (ctx->source[i].size < ctx->source[i].threshold) {
316
+ thresholds_reached = 0;
317
+ }
318
+ if (ctx->source[i].strong == MBEDTLS_ENTROPY_SOURCE_STRONG) {
319
+ strong_size += ctx->source[i].size;
320
+ }
321
+ }
322
+ } while (!thresholds_reached || strong_size < MBEDTLS_ENTROPY_BLOCK_SIZE);
323
+
324
+ memset(buf, 0, MBEDTLS_ENTROPY_BLOCK_SIZE);
325
+
326
+ /*
327
+ * Note that at this stage it is assumed that the accumulator was started
328
+ * in a previous call to entropy_update(). If this is not guaranteed, the
329
+ * code below will fail.
330
+ */
331
+ if ((ret = mbedtls_md_finish(&ctx->accumulator, buf)) != 0) {
332
+ goto exit;
333
+ }
334
+
335
+ /*
336
+ * Reset accumulator and counters and recycle existing entropy
337
+ */
338
+ mbedtls_md_free(&ctx->accumulator);
339
+ mbedtls_md_init(&ctx->accumulator);
340
+ ret = mbedtls_md_setup(&ctx->accumulator,
341
+ mbedtls_md_info_from_type(MBEDTLS_ENTROPY_MD), 0);
342
+ if (ret != 0) {
343
+ goto exit;
344
+ }
345
+ ret = mbedtls_md_starts(&ctx->accumulator);
346
+ if (ret != 0) {
347
+ goto exit;
348
+ }
349
+ if ((ret = mbedtls_md_update(&ctx->accumulator, buf,
350
+ MBEDTLS_ENTROPY_BLOCK_SIZE)) != 0) {
351
+ goto exit;
352
+ }
353
+
354
+ /*
355
+ * Perform second hashing on entropy
356
+ */
357
+ if ((ret = mbedtls_md(mbedtls_md_info_from_type(MBEDTLS_ENTROPY_MD),
358
+ buf, MBEDTLS_ENTROPY_BLOCK_SIZE, buf)) != 0) {
359
+ goto exit;
360
+ }
361
+
362
+ for (i = 0; i < ctx->source_count; i++) {
363
+ ctx->source[i].size = 0;
364
+ }
365
+
366
+ memcpy(output, buf, len);
367
+
368
+ ret = 0;
369
+
370
+ exit:
371
+ mbedtls_platform_zeroize(buf, sizeof(buf));
372
+
373
+ #if defined(MBEDTLS_THREADING_C)
374
+ if (mbedtls_mutex_unlock(&ctx->mutex) != 0) {
375
+ return MBEDTLS_ERR_THREADING_MUTEX_ERROR;
376
+ }
377
+ #endif
378
+
379
+ return ret;
380
+ }
381
+
382
+ #if defined(MBEDTLS_ENTROPY_NV_SEED)
383
+ int mbedtls_entropy_update_nv_seed(mbedtls_entropy_context *ctx)
384
+ {
385
+ int ret = MBEDTLS_ERR_ENTROPY_FILE_IO_ERROR;
386
+ unsigned char buf[MBEDTLS_ENTROPY_BLOCK_SIZE];
387
+
388
+ /* Read new seed and write it to NV */
389
+ if ((ret = mbedtls_entropy_func(ctx, buf, MBEDTLS_ENTROPY_BLOCK_SIZE)) != 0) {
390
+ return ret;
391
+ }
392
+
393
+ if (mbedtls_nv_seed_write(buf, MBEDTLS_ENTROPY_BLOCK_SIZE) < 0) {
394
+ return MBEDTLS_ERR_ENTROPY_FILE_IO_ERROR;
395
+ }
396
+
397
+ /* Manually update the remaining stream with a separator value to diverge */
398
+ memset(buf, 0, MBEDTLS_ENTROPY_BLOCK_SIZE);
399
+ ret = mbedtls_entropy_update_manual(ctx, buf, MBEDTLS_ENTROPY_BLOCK_SIZE);
400
+
401
+ return ret;
402
+ }
403
+ #endif /* MBEDTLS_ENTROPY_NV_SEED */
404
+
405
+ #if defined(MBEDTLS_FS_IO)
406
+ int mbedtls_entropy_write_seed_file(mbedtls_entropy_context *ctx, const char *path)
407
+ {
408
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
409
+ FILE *f = NULL;
410
+ unsigned char buf[MBEDTLS_ENTROPY_BLOCK_SIZE];
411
+
412
+ if ((ret = mbedtls_entropy_func(ctx, buf, MBEDTLS_ENTROPY_BLOCK_SIZE)) != 0) {
413
+ ret = MBEDTLS_ERR_ENTROPY_SOURCE_FAILED;
414
+ goto exit;
415
+ }
416
+
417
+ if ((f = fopen(path, "wb")) == NULL) {
418
+ ret = MBEDTLS_ERR_ENTROPY_FILE_IO_ERROR;
419
+ goto exit;
420
+ }
421
+
422
+ /* Ensure no stdio buffering of secrets, as such buffers cannot be wiped. */
423
+ mbedtls_setbuf(f, NULL);
424
+
425
+ if (fwrite(buf, 1, MBEDTLS_ENTROPY_BLOCK_SIZE, f) != MBEDTLS_ENTROPY_BLOCK_SIZE) {
426
+ ret = MBEDTLS_ERR_ENTROPY_FILE_IO_ERROR;
427
+ goto exit;
428
+ }
429
+
430
+ ret = 0;
431
+
432
+ exit:
433
+ mbedtls_platform_zeroize(buf, sizeof(buf));
434
+
435
+ if (f != NULL) {
436
+ fclose(f);
437
+ }
438
+
439
+ return ret;
440
+ }
441
+
442
+ int mbedtls_entropy_update_seed_file(mbedtls_entropy_context *ctx, const char *path)
443
+ {
444
+ int ret = 0;
445
+ FILE *f;
446
+ size_t n;
447
+ unsigned char buf[MBEDTLS_ENTROPY_MAX_SEED_SIZE];
448
+
449
+ if ((f = fopen(path, "rb")) == NULL) {
450
+ return MBEDTLS_ERR_ENTROPY_FILE_IO_ERROR;
451
+ }
452
+
453
+ /* Ensure no stdio buffering of secrets, as such buffers cannot be wiped. */
454
+ mbedtls_setbuf(f, NULL);
455
+
456
+ fseek(f, 0, SEEK_END);
457
+ n = (size_t) ftell(f);
458
+ fseek(f, 0, SEEK_SET);
459
+
460
+ if (n > MBEDTLS_ENTROPY_MAX_SEED_SIZE) {
461
+ n = MBEDTLS_ENTROPY_MAX_SEED_SIZE;
462
+ }
463
+
464
+ if (fread(buf, 1, n, f) != n) {
465
+ ret = MBEDTLS_ERR_ENTROPY_FILE_IO_ERROR;
466
+ } else {
467
+ ret = mbedtls_entropy_update_manual(ctx, buf, n);
468
+ }
469
+
470
+ fclose(f);
471
+
472
+ mbedtls_platform_zeroize(buf, sizeof(buf));
473
+
474
+ if (ret != 0) {
475
+ return ret;
476
+ }
477
+
478
+ return mbedtls_entropy_write_seed_file(ctx, path);
479
+ }
480
+ #endif /* MBEDTLS_FS_IO */
481
+
482
+ #if defined(MBEDTLS_SELF_TEST)
483
+ /*
484
+ * Dummy source function
485
+ */
486
+ static int entropy_dummy_source(void *data, unsigned char *output,
487
+ size_t len, size_t *olen)
488
+ {
489
+ ((void) data);
490
+
491
+ memset(output, 0x2a, len);
492
+ *olen = len;
493
+
494
+ return 0;
495
+ }
496
+
497
+ #if defined(MBEDTLS_ENTROPY_HARDWARE_ALT)
498
+
499
+ static int mbedtls_entropy_source_self_test_gather(unsigned char *buf, size_t buf_len)
500
+ {
501
+ int ret = 0;
502
+ size_t entropy_len = 0;
503
+ size_t olen = 0;
504
+ size_t attempts = buf_len;
505
+
506
+ while (attempts > 0 && entropy_len < buf_len) {
507
+ if ((ret = mbedtls_hardware_poll(NULL, buf + entropy_len,
508
+ buf_len - entropy_len, &olen)) != 0) {
509
+ return ret;
510
+ }
511
+
512
+ entropy_len += olen;
513
+ attempts--;
514
+ }
515
+
516
+ if (entropy_len < buf_len) {
517
+ ret = 1;
518
+ }
519
+
520
+ return ret;
521
+ }
522
+
523
+
524
+ static int mbedtls_entropy_source_self_test_check_bits(const unsigned char *buf,
525
+ size_t buf_len)
526
+ {
527
+ unsigned char set = 0xFF;
528
+ unsigned char unset = 0x00;
529
+ size_t i;
530
+
531
+ for (i = 0; i < buf_len; i++) {
532
+ set &= buf[i];
533
+ unset |= buf[i];
534
+ }
535
+
536
+ return set == 0xFF || unset == 0x00;
537
+ }
538
+
539
+ /*
540
+ * A test to ensure that the entropy sources are functioning correctly
541
+ * and there is no obvious failure. The test performs the following checks:
542
+ * - The entropy source is not providing only 0s (all bits unset) or 1s (all
543
+ * bits set).
544
+ * - The entropy source is not providing values in a pattern. Because the
545
+ * hardware could be providing data in an arbitrary length, this check polls
546
+ * the hardware entropy source twice and compares the result to ensure they
547
+ * are not equal.
548
+ * - The error code returned by the entropy source is not an error.
549
+ */
550
+ int mbedtls_entropy_source_self_test(int verbose)
551
+ {
552
+ int ret = 0;
553
+ unsigned char buf0[2 * sizeof(unsigned long long int)];
554
+ unsigned char buf1[2 * sizeof(unsigned long long int)];
555
+
556
+ if (verbose != 0) {
557
+ mbedtls_printf(" ENTROPY_BIAS test: ");
558
+ }
559
+
560
+ memset(buf0, 0x00, sizeof(buf0));
561
+ memset(buf1, 0x00, sizeof(buf1));
562
+
563
+ if ((ret = mbedtls_entropy_source_self_test_gather(buf0, sizeof(buf0))) != 0) {
564
+ goto cleanup;
565
+ }
566
+ if ((ret = mbedtls_entropy_source_self_test_gather(buf1, sizeof(buf1))) != 0) {
567
+ goto cleanup;
568
+ }
569
+
570
+ /* Make sure that the returned values are not all 0 or 1 */
571
+ if ((ret = mbedtls_entropy_source_self_test_check_bits(buf0, sizeof(buf0))) != 0) {
572
+ goto cleanup;
573
+ }
574
+ if ((ret = mbedtls_entropy_source_self_test_check_bits(buf1, sizeof(buf1))) != 0) {
575
+ goto cleanup;
576
+ }
577
+
578
+ /* Make sure that the entropy source is not returning values in a
579
+ * pattern */
580
+ ret = memcmp(buf0, buf1, sizeof(buf0)) == 0;
581
+
582
+ cleanup:
583
+ if (verbose != 0) {
584
+ if (ret != 0) {
585
+ mbedtls_printf("failed\n");
586
+ } else {
587
+ mbedtls_printf("passed\n");
588
+ }
589
+
590
+ mbedtls_printf("\n");
591
+ }
592
+
593
+ return ret != 0;
594
+ }
595
+
596
+ #endif /* MBEDTLS_ENTROPY_HARDWARE_ALT */
597
+
598
+ /*
599
+ * The actual entropy quality is hard to test, but we can at least
600
+ * test that the functions don't cause errors and write the correct
601
+ * amount of data to buffers.
602
+ */
603
+ int mbedtls_entropy_self_test(int verbose)
604
+ {
605
+ int ret = 1;
606
+ mbedtls_entropy_context ctx;
607
+ unsigned char buf[MBEDTLS_ENTROPY_BLOCK_SIZE] = { 0 };
608
+ unsigned char acc[MBEDTLS_ENTROPY_BLOCK_SIZE] = { 0 };
609
+ size_t i, j;
610
+
611
+ if (verbose != 0) {
612
+ mbedtls_printf(" ENTROPY test: ");
613
+ }
614
+
615
+ mbedtls_entropy_init(&ctx);
616
+
617
+ /* First do a gather to make sure we have default sources */
618
+ if ((ret = mbedtls_entropy_gather(&ctx)) != 0) {
619
+ goto cleanup;
620
+ }
621
+
622
+ ret = mbedtls_entropy_add_source(&ctx, entropy_dummy_source, NULL, 16,
623
+ MBEDTLS_ENTROPY_SOURCE_WEAK);
624
+ if (ret != 0) {
625
+ goto cleanup;
626
+ }
627
+
628
+ if ((ret = mbedtls_entropy_update_manual(&ctx, buf, sizeof(buf))) != 0) {
629
+ goto cleanup;
630
+ }
631
+
632
+ /*
633
+ * To test that mbedtls_entropy_func writes correct number of bytes:
634
+ * - use the whole buffer and rely on ASan to detect overruns
635
+ * - collect entropy 8 times and OR the result in an accumulator:
636
+ * any byte should then be 0 with probably 2^(-64), so requiring
637
+ * each of the 32 or 64 bytes to be non-zero has a false failure rate
638
+ * of at most 2^(-58) which is acceptable.
639
+ */
640
+ for (i = 0; i < 8; i++) {
641
+ if ((ret = mbedtls_entropy_func(&ctx, buf, sizeof(buf))) != 0) {
642
+ goto cleanup;
643
+ }
644
+
645
+ for (j = 0; j < sizeof(buf); j++) {
646
+ acc[j] |= buf[j];
647
+ }
648
+ }
649
+
650
+ for (j = 0; j < sizeof(buf); j++) {
651
+ if (acc[j] == 0) {
652
+ ret = 1;
653
+ goto cleanup;
654
+ }
655
+ }
656
+
657
+ #if defined(MBEDTLS_ENTROPY_HARDWARE_ALT)
658
+ if ((ret = mbedtls_entropy_source_self_test(0)) != 0) {
659
+ goto cleanup;
660
+ }
661
+ #endif
662
+
663
+ cleanup:
664
+ mbedtls_entropy_free(&ctx);
665
+
666
+ if (verbose != 0) {
667
+ if (ret != 0) {
668
+ mbedtls_printf("failed\n");
669
+ } else {
670
+ mbedtls_printf("passed\n");
671
+ }
672
+
673
+ mbedtls_printf("\n");
674
+ }
675
+
676
+ return ret != 0;
677
+ }
678
+ #endif /* MBEDTLS_SELF_TEST */
679
+
680
+ #endif /* MBEDTLS_ENTROPY_C */