@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,159 @@
1
+ /*
2
+ * PSA PAKE layer on top of Mbed TLS software crypto
3
+ */
4
+ /*
5
+ * Copyright The Mbed TLS Contributors
6
+ * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
7
+ */
8
+
9
+ #ifndef PSA_CRYPTO_PAKE_H
10
+ #define PSA_CRYPTO_PAKE_H
11
+
12
+ #include <psa/crypto.h>
13
+
14
+ /** Set the session information for a password-authenticated key exchange.
15
+ *
16
+ * \note The signature of this function is that of a PSA driver
17
+ * pake_setup entry point. This function behaves as a pake_setup
18
+ * entry point as defined in the PSA driver interface specification for
19
+ * transparent drivers.
20
+ *
21
+ * \param[in,out] operation The operation object to set up. It must have
22
+ * been initialized but not set up yet.
23
+ * \param[in] inputs Inputs required for PAKE operation (role, password,
24
+ * key lifetime, cipher suite)
25
+ *
26
+ * \retval #PSA_SUCCESS
27
+ * Success.
28
+ * \retval #PSA_ERROR_NOT_SUPPORTED
29
+ * The algorithm in \p cipher_suite is not a supported PAKE algorithm,
30
+ * or the PAKE primitive in \p cipher_suite is not supported or not
31
+ * compatible with the PAKE algorithm, or the hash algorithm in
32
+ * \p cipher_suite is not supported or not compatible with the PAKE
33
+ * algorithm and primitive.
34
+ * \retval #PSA_ERROR_INSUFFICIENT_MEMORY \emptydescription
35
+ * \retval #PSA_ERROR_CORRUPTION_DETECTED \emptydescription
36
+ */
37
+ psa_status_t mbedtls_psa_pake_setup(mbedtls_psa_pake_operation_t *operation,
38
+ const psa_crypto_driver_pake_inputs_t *inputs);
39
+
40
+
41
+ /** Get output for a step of a password-authenticated key exchange.
42
+ *
43
+ * \note The signature of this function is that of a PSA driver
44
+ * pake_output entry point. This function behaves as a pake_output
45
+ * entry point as defined in the PSA driver interface specification for
46
+ * transparent drivers.
47
+ *
48
+ * \param[in,out] operation Active PAKE operation.
49
+ * \param step The step of the algorithm for which the output is
50
+ * requested.
51
+ * \param[out] output Buffer where the output is to be written in the
52
+ * format appropriate for this driver \p step. Refer to
53
+ * the documentation of psa_crypto_driver_pake_step_t for
54
+ * more information.
55
+ * \param output_size Size of the \p output buffer in bytes. This must
56
+ * be at least #PSA_PAKE_OUTPUT_SIZE(\p alg, \p
57
+ * primitive, \p step) where \p alg and
58
+ * \p primitive are the PAKE algorithm and primitive
59
+ * in the operation's cipher suite, and \p step is
60
+ * the output step.
61
+ *
62
+ * \param[out] output_length On success, the number of bytes of the returned
63
+ * output.
64
+ *
65
+ * \retval #PSA_SUCCESS
66
+ * Success.
67
+ * \retval #PSA_ERROR_BUFFER_TOO_SMALL
68
+ * The size of the \p output buffer is too small.
69
+ * \retval #PSA_ERROR_INSUFFICIENT_ENTROPY \emptydescription
70
+ * \retval #PSA_ERROR_CORRUPTION_DETECTED \emptydescription
71
+ * \retval #PSA_ERROR_DATA_CORRUPT \emptydescription
72
+ * \retval #PSA_ERROR_DATA_INVALID \emptydescription
73
+ */
74
+ psa_status_t mbedtls_psa_pake_output(mbedtls_psa_pake_operation_t *operation,
75
+ psa_crypto_driver_pake_step_t step,
76
+ uint8_t *output,
77
+ size_t output_size,
78
+ size_t *output_length);
79
+
80
+ /** Provide input for a step of a password-authenticated key exchange.
81
+ *
82
+ * \note The signature of this function is that of a PSA driver
83
+ * pake_input entry point. This function behaves as a pake_input
84
+ * entry point as defined in the PSA driver interface specification for
85
+ * transparent drivers.
86
+ *
87
+ * \note The core checks that input_length is smaller than PSA_PAKE_INPUT_MAX_SIZE.
88
+ *
89
+ * \param[in,out] operation Active PAKE operation.
90
+ * \param step The driver step for which the input is provided.
91
+ * \param[in] input Buffer containing the input in the format
92
+ * appropriate for this \p step. Refer to the
93
+ * documentation of psa_crypto_driver_pake_step_t
94
+ * for more information.
95
+ * \param input_length Size of the \p input buffer in bytes.
96
+ *
97
+ * \retval #PSA_SUCCESS
98
+ * Success.
99
+ * \retval #PSA_ERROR_INVALID_SIGNATURE
100
+ * The verification fails for a zero-knowledge input step.
101
+ * \retval #PSA_ERROR_INVALID_ARGUMENT
102
+ * the \p input is not valid for the \p operation's algorithm, cipher suite
103
+ * or \p step.
104
+ * \retval #PSA_ERROR_NOT_SUPPORTED
105
+ * the \p input is not supported for the \p operation's algorithm, cipher
106
+ * suite or \p step.
107
+ * \retval #PSA_ERROR_INSUFFICIENT_MEMORY \emptydescription
108
+ * \retval #PSA_ERROR_CORRUPTION_DETECTED \emptydescription
109
+ * \retval #PSA_ERROR_DATA_CORRUPT \emptydescription
110
+ * \retval #PSA_ERROR_DATA_INVALID \emptydescription
111
+ */
112
+ psa_status_t mbedtls_psa_pake_input(mbedtls_psa_pake_operation_t *operation,
113
+ psa_crypto_driver_pake_step_t step,
114
+ const uint8_t *input,
115
+ size_t input_length);
116
+
117
+ /** Get implicitly confirmed shared secret from a PAKE.
118
+ *
119
+ * \note The signature of this function is that of a PSA driver
120
+ * pake_get_implicit_key entry point. This function behaves as a
121
+ * pake_get_implicit_key entry point as defined in the PSA driver
122
+ * interface specification for transparent drivers.
123
+ *
124
+ * \param[in,out] operation Active PAKE operation.
125
+ * \param[out] output Output buffer for implicit key.
126
+ * \param output_size Size of the output buffer in bytes.
127
+ * \param[out] output_length On success, the number of bytes of the implicit key.
128
+ *
129
+ * \retval #PSA_SUCCESS
130
+ * Success.
131
+ * \retval #PSA_ERROR_NOT_SUPPORTED
132
+ * Input from a PAKE is not supported by the algorithm in the \p output
133
+ * key derivation operation.
134
+ * \retval #PSA_ERROR_INSUFFICIENT_MEMORY \emptydescription
135
+ * \retval #PSA_ERROR_CORRUPTION_DETECTED \emptydescription
136
+ * \retval #PSA_ERROR_DATA_CORRUPT \emptydescription
137
+ * \retval #PSA_ERROR_DATA_INVALID \emptydescription
138
+ */
139
+ psa_status_t mbedtls_psa_pake_get_implicit_key(
140
+ mbedtls_psa_pake_operation_t *operation,
141
+ uint8_t *output, size_t output_size,
142
+ size_t *output_length);
143
+
144
+ /** Abort a PAKE operation.
145
+ *
146
+ * \note The signature of this function is that of a PSA driver
147
+ * pake_abort entry point. This function behaves as a pake_abort
148
+ * entry point as defined in the PSA driver interface specification for
149
+ * transparent drivers.
150
+ *
151
+ * \param[in,out] operation The operation to abort.
152
+ *
153
+ * \retval #PSA_SUCCESS
154
+ * Success.
155
+ * \retval #PSA_ERROR_CORRUPTION_DETECTED \emptydescription
156
+ */
157
+ psa_status_t mbedtls_psa_pake_abort(mbedtls_psa_pake_operation_t *operation);
158
+
159
+ #endif /* PSA_CRYPTO_PAKE_H */
@@ -0,0 +1,181 @@
1
+ /*
2
+ * PSA crypto random generator.
3
+ */
4
+ /*
5
+ * Copyright The Mbed TLS Contributors
6
+ * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
7
+ */
8
+
9
+ #include "common.h"
10
+
11
+ #if defined(MBEDTLS_PSA_CRYPTO_C) && !defined(MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG)
12
+
13
+ #include "psa_crypto_core.h"
14
+ #include "psa_crypto_random.h"
15
+ #include "psa_crypto_random_impl.h"
16
+ #include "threading_internal.h"
17
+
18
+ #if defined(MBEDTLS_PSA_INJECT_ENTROPY)
19
+ #include "entropy_poll.h"
20
+ #endif
21
+
22
+ #if defined(MBEDTLS_PLATFORM_IS_UNIXLIKE)
23
+ /* For getpid(), for fork protection */
24
+ #include <unistd.h>
25
+ #if defined(MBEDTLS_HAVE_TIME)
26
+ #include <mbedtls/platform_time.h>
27
+ #else
28
+ /* For gettimeofday(), for fork protection without actual entropy */
29
+ #include <sys/time.h>
30
+ #endif
31
+ #endif
32
+
33
+ void psa_random_internal_init(mbedtls_psa_random_context_t *rng)
34
+ {
35
+ /* Set default configuration if
36
+ * mbedtls_psa_crypto_configure_entropy_sources() hasn't been called. */
37
+ if (rng->entropy_init == NULL) {
38
+ rng->entropy_init = mbedtls_entropy_init;
39
+ }
40
+ if (rng->entropy_free == NULL) {
41
+ rng->entropy_free = mbedtls_entropy_free;
42
+ }
43
+
44
+ rng->entropy_init(&rng->entropy);
45
+ #if defined(MBEDTLS_PSA_INJECT_ENTROPY) && \
46
+ defined(MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES)
47
+ /* The PSA entropy injection feature depends on using NV seed as an entropy
48
+ * source. Add NV seed as an entropy source for PSA entropy injection. */
49
+ mbedtls_entropy_add_source(&rng->entropy,
50
+ mbedtls_nv_seed_poll, NULL,
51
+ MBEDTLS_ENTROPY_BLOCK_SIZE,
52
+ MBEDTLS_ENTROPY_SOURCE_STRONG);
53
+ #endif
54
+
55
+ mbedtls_psa_drbg_init(&rng->drbg);
56
+ }
57
+
58
+ void psa_random_internal_free(mbedtls_psa_random_context_t *rng)
59
+ {
60
+ mbedtls_psa_drbg_free(&rng->drbg);
61
+ rng->entropy_free(&rng->entropy);
62
+ }
63
+ psa_status_t psa_random_internal_seed(mbedtls_psa_random_context_t *rng)
64
+ {
65
+ const unsigned char drbg_seed[] = "PSA";
66
+ int ret = mbedtls_psa_drbg_seed(&rng->drbg, &rng->entropy,
67
+ drbg_seed, sizeof(drbg_seed) - 1);
68
+ #if defined(MBEDTLS_PLATFORM_IS_UNIXLIKE)
69
+ rng->pid = getpid();
70
+ #endif
71
+ return mbedtls_to_psa_error(ret);
72
+ }
73
+
74
+ #if defined(MBEDTLS_PLATFORM_IS_UNIXLIKE)
75
+ static psa_status_t psa_random_internal_reseed_child(
76
+ mbedtls_psa_random_context_t *rng,
77
+ intmax_t pid)
78
+ {
79
+ /* Reseeding from actual entropy gives the child a unique RNG state
80
+ * which the parent process cannot predict, and wipes the
81
+ * parent's RNG state from the child.
82
+ *
83
+ * However, in some library configurations, there is no actual
84
+ * entropy source, only a nonvolatile seed (MBEDTLS_ENTROPY_NV_SEED
85
+ * enabled and no actual entropy source enabled). In such a
86
+ * configuration, the reseed operation is deterministic and
87
+ * always injects the same content, so with the DRBG reseed
88
+ * process alone, for example, two child processes forked in
89
+ * close sequence would end up with the same RNG state.
90
+
91
+ * To avoid this, we use a personalization string that has a high
92
+ * likelihood of being unique. This way, the child has a unique state.
93
+ * The parent can predict the child's RNG state until the next time
94
+ * it reseeds or generates some random output, but that's
95
+ * unavoidable in the absence of actual entropy.
96
+ */
97
+ struct {
98
+ /* Using the PID mostly guarantees that each child gets a
99
+ * unique state. */
100
+ /* Use intmax_t, not pid_t, because some Unix-like platforms
101
+ * don't define pid_t, or more likely nowadays they define
102
+ * pid_t but only with certain platform macros which might not
103
+ * be the exact ones we use. In practice, this only costs
104
+ * a couple of instructions to pass and compare two words
105
+ * rather than one.
106
+ */
107
+ intmax_t pid;
108
+ /* In case an old child had died and its PID is reused for
109
+ * a new child of the same process, also include the time. */
110
+ #if defined(MBEDTLS_HAVE_TIME)
111
+ mbedtls_ms_time_t now;
112
+ #else
113
+ struct timeval now;
114
+ #endif
115
+ } perso;
116
+ memset(&perso, 0, sizeof(perso));
117
+ perso.pid = pid;
118
+ #if defined(MBEDTLS_HAVE_TIME)
119
+ perso.now = mbedtls_ms_time();
120
+ #else
121
+ /* We don't have mbedtls_ms_time(), but the platform has getpid().
122
+ * Use gettimeofday(), which is a classic Unix function. Modern POSIX
123
+ * has stopped requiring gettimeofday() (in favor of clock_gettime()),
124
+ * but this is fallback code for restricted configurations, so it's
125
+ * more likely to be used on embedded platforms that only have a subset
126
+ * of Unix APIs and are more likely to have the classic gettimeofday(). */
127
+ if (gettimeofday(&perso.now, NULL) == -1) {
128
+ return PSA_ERROR_INSUFFICIENT_ENTROPY;
129
+ }
130
+ #endif
131
+ int ret = mbedtls_psa_drbg_reseed(&rng->drbg,
132
+ (unsigned char *) &perso, sizeof(perso));
133
+ return mbedtls_to_psa_error(ret);
134
+ }
135
+ #endif /* MBEDTLS_PLATFORM_IS_UNIXLIKE */
136
+
137
+ psa_status_t psa_random_internal_generate(
138
+ mbedtls_psa_random_context_t *rng,
139
+ uint8_t *output, size_t output_size)
140
+ {
141
+ #if defined(MBEDTLS_PLATFORM_IS_UNIXLIKE)
142
+ intmax_t pid = getpid();
143
+ if (pid != rng->pid) {
144
+ /* This is a (grand...)child of the original process, but
145
+ * we inherited the RNG state from our parent. We must reseed! */
146
+ #if defined(MBEDTLS_THREADING_C)
147
+ mbedtls_mutex_lock(&mbedtls_threading_psa_rngdata_mutex);
148
+ #endif /* defined(MBEDTLS_THREADING_C) */
149
+ psa_status_t status = psa_random_internal_reseed_child(rng, pid);
150
+ if (status == PSA_SUCCESS) {
151
+ rng->pid = pid;
152
+ }
153
+ #if defined(MBEDTLS_THREADING_C)
154
+ mbedtls_mutex_unlock(&mbedtls_threading_psa_rngdata_mutex);
155
+ #endif /* defined(MBEDTLS_THREADING_C) */
156
+ if (status != PSA_SUCCESS) {
157
+ return status;
158
+ }
159
+ }
160
+ #endif /* MBEDTLS_PLATFORM_IS_UNIXLIKE */
161
+
162
+ while (output_size > 0) {
163
+ size_t request_size =
164
+ (output_size > MBEDTLS_PSA_RANDOM_MAX_REQUEST ?
165
+ MBEDTLS_PSA_RANDOM_MAX_REQUEST :
166
+ output_size);
167
+ #if defined(MBEDTLS_CTR_DRBG_C)
168
+ int ret = mbedtls_ctr_drbg_random(&rng->drbg, output, request_size);
169
+ #elif defined(MBEDTLS_HMAC_DRBG_C)
170
+ int ret = mbedtls_hmac_drbg_random(&rng->drbg, output, request_size);
171
+ #endif /* !MBEDTLS_CTR_DRBG_C && !MBEDTLS_HMAC_DRBG_C */
172
+ if (ret != 0) {
173
+ return mbedtls_to_psa_error(ret);
174
+ }
175
+ output_size -= request_size;
176
+ output += request_size;
177
+ }
178
+ return PSA_SUCCESS;
179
+ }
180
+
181
+ #endif /* MBEDTLS_PSA_CRYPTO_C && !MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG */
@@ -0,0 +1,72 @@
1
+ /*
2
+ * PSA crypto random generator internal functions.
3
+ */
4
+ /*
5
+ * Copyright The Mbed TLS Contributors
6
+ * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
7
+ */
8
+
9
+ #ifndef PSA_CRYPTO_RANDOM_H
10
+ #define PSA_CRYPTO_RANDOM_H
11
+
12
+ #include "common.h"
13
+
14
+ #if !defined(MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG)
15
+
16
+ #include <psa/crypto.h>
17
+ #include "psa_crypto_random_impl.h"
18
+
19
+ /** Initialize the PSA random generator.
20
+ *
21
+ * \param[out] rng The random generator context to initialize.
22
+ */
23
+ void psa_random_internal_init(mbedtls_psa_random_context_t *rng);
24
+
25
+ /** Deinitialize the PSA random generator.
26
+ *
27
+ * \param[in,out] rng The random generator context to deinitialize.
28
+ */
29
+ void psa_random_internal_free(mbedtls_psa_random_context_t *rng);
30
+
31
+ /** Seed the PSA random generator.
32
+ *
33
+ * \note This function is not thread-safe.
34
+ *
35
+ * \param[in,out] rng The random generator context to seed.
36
+ *
37
+ * \retval #PSA_SUCCESS
38
+ * Success.
39
+ * \retval #PSA_ERROR_INSUFFICIENT_ENTROPY
40
+ * The entropy source failed.
41
+ */
42
+ psa_status_t psa_random_internal_seed(mbedtls_psa_random_context_t *rng);
43
+
44
+ /**
45
+ * \brief Generate random bytes. Like psa_generate_random(), but for use
46
+ * inside the library.
47
+ *
48
+ * This function is thread-safe.
49
+ *
50
+ * \warning This function **can** fail! Callers MUST check the return status
51
+ * and MUST NOT use the content of the output buffer if the return
52
+ * status is not #PSA_SUCCESS.
53
+ *
54
+ * \param[in,out] rng The random generator context to seed.
55
+ * \param[out] output Output buffer for the generated data.
56
+ * \param output_size Number of bytes to generate and output.
57
+ *
58
+ * \retval #PSA_SUCCESS
59
+ * Success.
60
+ * \retval #PSA_ERROR_INSUFFICIENT_ENTROPY
61
+ * The random generator needed to reseed, and the entropy
62
+ * source failed.
63
+ * \retval #PSA_ERROR_HARDWARE_FAILURE
64
+ * A hardware accelerator failed.
65
+ */
66
+ psa_status_t psa_random_internal_generate(
67
+ mbedtls_psa_random_context_t *rng,
68
+ uint8_t *output, size_t output_size);
69
+
70
+ #endif /* !defined(MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG) */
71
+
72
+ #endif /* PSA_CRYPTO_RANDOM_H */
@@ -0,0 +1,200 @@
1
+ /** \file psa_crypto_random_impl.h
2
+ *
3
+ * \brief PSA crypto random generator implementation abstraction.
4
+ */
5
+ /*
6
+ * Copyright The Mbed TLS Contributors
7
+ * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
8
+ */
9
+
10
+ #ifndef PSA_CRYPTO_RANDOM_IMPL_H
11
+ #define PSA_CRYPTO_RANDOM_IMPL_H
12
+
13
+ #include "psa_util_internal.h"
14
+
15
+ #if defined(MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG)
16
+
17
+ typedef mbedtls_psa_external_random_context_t mbedtls_psa_random_context_t;
18
+
19
+ #else /* MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG */
20
+
21
+ #include "mbedtls/entropy.h"
22
+
23
+ /* Choose a DRBG based on configuration and availability */
24
+ #if defined(MBEDTLS_CTR_DRBG_C)
25
+
26
+ #include "mbedtls/ctr_drbg.h"
27
+ #undef MBEDTLS_PSA_HMAC_DRBG_MD_TYPE
28
+
29
+ #elif defined(MBEDTLS_HMAC_DRBG_C)
30
+
31
+ #include "mbedtls/hmac_drbg.h"
32
+ #if defined(MBEDTLS_MD_CAN_SHA512) && defined(MBEDTLS_MD_CAN_SHA256)
33
+ #include <limits.h>
34
+ #if SIZE_MAX > 0xffffffff
35
+ /* Looks like a 64-bit system, so prefer SHA-512. */
36
+ #define MBEDTLS_PSA_HMAC_DRBG_MD_TYPE MBEDTLS_MD_SHA512
37
+ #else
38
+ /* Looks like a 32-bit system, so prefer SHA-256. */
39
+ #define MBEDTLS_PSA_HMAC_DRBG_MD_TYPE MBEDTLS_MD_SHA256
40
+ #endif
41
+ #elif defined(MBEDTLS_MD_CAN_SHA512)
42
+ #define MBEDTLS_PSA_HMAC_DRBG_MD_TYPE MBEDTLS_MD_SHA512
43
+ #elif defined(MBEDTLS_MD_CAN_SHA256)
44
+ #define MBEDTLS_PSA_HMAC_DRBG_MD_TYPE MBEDTLS_MD_SHA256
45
+ #else
46
+ #error "No hash algorithm available for HMAC_DBRG."
47
+ #endif
48
+
49
+ #else /* !MBEDTLS_CTR_DRBG_C && !MBEDTLS_HMAC_DRBG_C*/
50
+
51
+ #error "No DRBG module available for the psa_crypto module."
52
+
53
+ #endif /* !MBEDTLS_CTR_DRBG_C && !MBEDTLS_HMAC_DRBG_C*/
54
+
55
+ /* The maximum number of bytes that mbedtls_psa_get_random() is expected to return. */
56
+ #if defined(MBEDTLS_CTR_DRBG_C)
57
+ #define MBEDTLS_PSA_RANDOM_MAX_REQUEST MBEDTLS_CTR_DRBG_MAX_REQUEST
58
+ #elif defined(MBEDTLS_HMAC_DRBG_C)
59
+ #define MBEDTLS_PSA_RANDOM_MAX_REQUEST MBEDTLS_HMAC_DRBG_MAX_REQUEST
60
+ #endif
61
+
62
+ #if defined(MBEDTLS_CTR_DRBG_C)
63
+ typedef mbedtls_ctr_drbg_context mbedtls_psa_drbg_context_t;
64
+ #elif defined(MBEDTLS_HMAC_DRBG_C)
65
+ typedef mbedtls_hmac_drbg_context mbedtls_psa_drbg_context_t;
66
+ #endif /* !MBEDTLS_CTR_DRBG_C && !MBEDTLS_HMAC_DRBG_C */
67
+
68
+ typedef struct {
69
+ void (* entropy_init)(mbedtls_entropy_context *ctx);
70
+ void (* entropy_free)(mbedtls_entropy_context *ctx);
71
+ mbedtls_entropy_context entropy;
72
+ mbedtls_psa_drbg_context_t drbg;
73
+ #if defined(MBEDTLS_PLATFORM_IS_UNIXLIKE)
74
+ /* Fork protection: normally pid = getpid(). If the value changes,
75
+ * we are in a (grand)*child of the original process, so reseed
76
+ * the RNG to ensure that the child and the original process have
77
+ * distinct RNG states. See psa_random_internal_generate().
78
+ *
79
+ * The type is intmax_t, not pid_t, for portability reasons:
80
+ * pid_t is defined in `unistd.h`, but on some platforms, it may
81
+ * only be defined if a certain compatibility level is requested
82
+ * by defining a macro such as _POSIX_C_SOURCE or _XOPEN_SOURCE.
83
+ * The macro needs to be defined before any system header, which
84
+ * may be hard to do in some C files that include this header
85
+ * (e.g. test suites). So we sidestep this complication, at the
86
+ * cost of possibly a few more instructions to compare pid values.
87
+ */
88
+ intmax_t pid;
89
+ #endif
90
+ } mbedtls_psa_random_context_t;
91
+
92
+ /** Initialize the PSA DRBG.
93
+ *
94
+ * \param p_rng Pointer to the Mbed TLS DRBG state.
95
+ */
96
+ static inline void mbedtls_psa_drbg_init(mbedtls_psa_drbg_context_t *p_rng)
97
+ {
98
+ #if defined(MBEDTLS_CTR_DRBG_C)
99
+ mbedtls_ctr_drbg_init(p_rng);
100
+ #elif defined(MBEDTLS_HMAC_DRBG_C)
101
+ mbedtls_hmac_drbg_init(p_rng);
102
+ #endif
103
+ }
104
+
105
+ /** Deinitialize the PSA DRBG.
106
+ *
107
+ * \param p_rng Pointer to the Mbed TLS DRBG state.
108
+ */
109
+ static inline void mbedtls_psa_drbg_free(mbedtls_psa_drbg_context_t *p_rng)
110
+ {
111
+ #if defined(MBEDTLS_CTR_DRBG_C)
112
+ mbedtls_ctr_drbg_free(p_rng);
113
+ #elif defined(MBEDTLS_HMAC_DRBG_C)
114
+ mbedtls_hmac_drbg_free(p_rng);
115
+ #endif
116
+ }
117
+
118
+ /** Seed the PSA DRBG.
119
+ *
120
+ * \param drbg_ctx The DRBG context to seed.
121
+ * It must be initialized but not active.
122
+ * \param entropy An entropy context to read the seed from.
123
+ * \param custom The personalization string.
124
+ * This can be \c NULL, in which case the personalization
125
+ * string is empty regardless of the value of \p len.
126
+ * \param len The length of the personalization string.
127
+ *
128
+ * \return \c 0 on success.
129
+ * \return An Mbed TLS error code (\c MBEDTLS_ERR_xxx) on failure.
130
+ */
131
+ static inline int mbedtls_psa_drbg_seed(mbedtls_psa_drbg_context_t *drbg_ctx,
132
+ mbedtls_entropy_context *entropy,
133
+ const unsigned char *custom, size_t len)
134
+ {
135
+ #if defined(MBEDTLS_CTR_DRBG_C)
136
+ return mbedtls_ctr_drbg_seed(drbg_ctx, mbedtls_entropy_func, entropy, custom, len);
137
+ #elif defined(MBEDTLS_HMAC_DRBG_C)
138
+ const mbedtls_md_info_t *md_info = mbedtls_md_info_from_type(MBEDTLS_PSA_HMAC_DRBG_MD_TYPE);
139
+ return mbedtls_hmac_drbg_seed(drbg_ctx, md_info, mbedtls_entropy_func, entropy, custom, len);
140
+ #endif
141
+ }
142
+
143
+ /** Reseed the PSA DRBG.
144
+ *
145
+ * \param drbg_ctx The DRBG context to reseed.
146
+ * It must be active.
147
+ * \param additional Additional data to inject.
148
+ * \param len The length of \p additional in bytes.
149
+ * This can be 0 to simply reseed from the entropy source.
150
+ *
151
+ * \return \c 0 on success.
152
+ * \return An Mbed TLS error code (\c MBEDTLS_ERR_xxx) on failure.
153
+ */
154
+ static inline int mbedtls_psa_drbg_reseed(mbedtls_psa_drbg_context_t *drbg_ctx,
155
+ const unsigned char *additional,
156
+ size_t len)
157
+ {
158
+ #if defined(MBEDTLS_CTR_DRBG_C)
159
+ return mbedtls_ctr_drbg_reseed(drbg_ctx, additional, len);
160
+ #elif defined(MBEDTLS_HMAC_DRBG_C)
161
+ return mbedtls_hmac_drbg_reseed(drbg_ctx, additional, len);
162
+ #endif
163
+ }
164
+
165
+ /** Deplete the PSA DRBG, i.e. cause it to reseed the next time it is used.
166
+ *
167
+ * \note This function is not thread-safe.
168
+ *
169
+ * \param drbg_ctx The DRBG context to deplete.
170
+ * It must be active.
171
+ */
172
+ static inline void mbedtls_psa_drbg_deplete(mbedtls_psa_drbg_context_t *drbg_ctx)
173
+ {
174
+ drbg_ctx->reseed_counter = drbg_ctx->reseed_interval;
175
+ }
176
+
177
+ #if MBEDTLS_ENTROPY_TRUE_SOURCES > 0
178
+ /** Set prediction resistance in the PSA DRBG.
179
+ *
180
+ * \note This function is not thread-safe.
181
+ *
182
+ * \param drbg_ctx The DRBG context to reconfigure.
183
+ * It must be active.
184
+ * \param enabled \c 1 to enable, or \c 0 to disable.
185
+ */
186
+ static inline void mbedtls_psa_drbg_set_prediction_resistance(
187
+ mbedtls_psa_drbg_context_t *drbg_ctx,
188
+ unsigned enabled)
189
+ {
190
+ #if defined(MBEDTLS_CTR_DRBG_C)
191
+ mbedtls_ctr_drbg_set_prediction_resistance(drbg_ctx, enabled);
192
+ #elif defined(MBEDTLS_HMAC_DRBG_C)
193
+ mbedtls_hmac_drbg_set_prediction_resistance(drbg_ctx, enabled);
194
+ #endif
195
+ }
196
+ #endif /* MBEDTLS_ENTROPY_TRUE_SOURCES > 0 */
197
+
198
+ #endif /* MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG */
199
+
200
+ #endif /* PSA_CRYPTO_RANDOM_IMPL_H */