@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,633 @@
1
+ /*
2
+ * HMAC_DRBG implementation (NIST SP 800-90)
3
+ *
4
+ * Copyright The Mbed TLS Contributors
5
+ * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
6
+ */
7
+
8
+ /*
9
+ * The NIST SP 800-90A DRBGs are described in the following publication.
10
+ * http://csrc.nist.gov/publications/nistpubs/800-90A/SP800-90A.pdf
11
+ * References below are based on rev. 1 (January 2012).
12
+ */
13
+
14
+ #include "common.h"
15
+
16
+ #if defined(MBEDTLS_HMAC_DRBG_C)
17
+
18
+ #include "mbedtls/hmac_drbg.h"
19
+ #include "mbedtls/platform_util.h"
20
+ #include "mbedtls/error.h"
21
+
22
+ #include <string.h>
23
+
24
+ #if defined(MBEDTLS_FS_IO)
25
+ #include <stdio.h>
26
+ #endif
27
+
28
+ #include "mbedtls/platform.h"
29
+
30
+ /*
31
+ * HMAC_DRBG context initialization
32
+ */
33
+ void mbedtls_hmac_drbg_init(mbedtls_hmac_drbg_context *ctx)
34
+ {
35
+ memset(ctx, 0, sizeof(mbedtls_hmac_drbg_context));
36
+
37
+ ctx->reseed_interval = MBEDTLS_HMAC_DRBG_RESEED_INTERVAL;
38
+ }
39
+
40
+ /*
41
+ * HMAC_DRBG update, using optional additional data (10.1.2.2)
42
+ */
43
+ int mbedtls_hmac_drbg_update(mbedtls_hmac_drbg_context *ctx,
44
+ const unsigned char *additional,
45
+ size_t add_len)
46
+ {
47
+ size_t md_len = mbedtls_md_get_size(ctx->md_ctx.md_info);
48
+ unsigned char rounds = (additional != NULL && add_len != 0) ? 2 : 1;
49
+ unsigned char sep[1];
50
+ unsigned char K[MBEDTLS_MD_MAX_SIZE];
51
+ int ret = MBEDTLS_ERR_MD_BAD_INPUT_DATA;
52
+
53
+ for (sep[0] = 0; sep[0] < rounds; sep[0]++) {
54
+ /* Step 1 or 4 */
55
+ if ((ret = mbedtls_md_hmac_reset(&ctx->md_ctx)) != 0) {
56
+ goto exit;
57
+ }
58
+ if ((ret = mbedtls_md_hmac_update(&ctx->md_ctx,
59
+ ctx->V, md_len)) != 0) {
60
+ goto exit;
61
+ }
62
+ if ((ret = mbedtls_md_hmac_update(&ctx->md_ctx,
63
+ sep, 1)) != 0) {
64
+ goto exit;
65
+ }
66
+ if (rounds == 2) {
67
+ if ((ret = mbedtls_md_hmac_update(&ctx->md_ctx,
68
+ additional, add_len)) != 0) {
69
+ goto exit;
70
+ }
71
+ }
72
+ if ((ret = mbedtls_md_hmac_finish(&ctx->md_ctx, K)) != 0) {
73
+ goto exit;
74
+ }
75
+
76
+ /* Step 2 or 5 */
77
+ if ((ret = mbedtls_md_hmac_starts(&ctx->md_ctx, K, md_len)) != 0) {
78
+ goto exit;
79
+ }
80
+ if ((ret = mbedtls_md_hmac_update(&ctx->md_ctx,
81
+ ctx->V, md_len)) != 0) {
82
+ goto exit;
83
+ }
84
+ if ((ret = mbedtls_md_hmac_finish(&ctx->md_ctx, ctx->V)) != 0) {
85
+ goto exit;
86
+ }
87
+ }
88
+
89
+ exit:
90
+ mbedtls_platform_zeroize(K, sizeof(K));
91
+ return ret;
92
+ }
93
+
94
+ /*
95
+ * Simplified HMAC_DRBG initialisation (for use with deterministic ECDSA)
96
+ */
97
+ int mbedtls_hmac_drbg_seed_buf(mbedtls_hmac_drbg_context *ctx,
98
+ const mbedtls_md_info_t *md_info,
99
+ const unsigned char *data, size_t data_len)
100
+ {
101
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
102
+
103
+ if ((ret = mbedtls_md_setup(&ctx->md_ctx, md_info, 1)) != 0) {
104
+ return ret;
105
+ }
106
+
107
+ #if defined(MBEDTLS_THREADING_C)
108
+ mbedtls_mutex_init(&ctx->mutex);
109
+ #endif
110
+
111
+ /*
112
+ * Set initial working state.
113
+ * Use the V memory location, which is currently all 0, to initialize the
114
+ * MD context with an all-zero key. Then set V to its initial value.
115
+ */
116
+ if ((ret = mbedtls_md_hmac_starts(&ctx->md_ctx, ctx->V,
117
+ mbedtls_md_get_size(md_info))) != 0) {
118
+ return ret;
119
+ }
120
+ memset(ctx->V, 0x01, mbedtls_md_get_size(md_info));
121
+
122
+ if ((ret = mbedtls_hmac_drbg_update(ctx, data, data_len)) != 0) {
123
+ return ret;
124
+ }
125
+
126
+ return 0;
127
+ }
128
+
129
+ /*
130
+ * Internal function used both for seeding and reseeding the DRBG.
131
+ * Comments starting with arabic numbers refer to section 10.1.2.4
132
+ * of SP800-90A, while roman numbers refer to section 9.2.
133
+ */
134
+ static int hmac_drbg_reseed_core(mbedtls_hmac_drbg_context *ctx,
135
+ const unsigned char *additional, size_t len,
136
+ int use_nonce)
137
+ {
138
+ unsigned char seed[MBEDTLS_HMAC_DRBG_MAX_SEED_INPUT];
139
+ size_t seedlen = 0;
140
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
141
+
142
+ {
143
+ size_t total_entropy_len;
144
+
145
+ if (use_nonce == 0) {
146
+ total_entropy_len = ctx->entropy_len;
147
+ } else {
148
+ total_entropy_len = ctx->entropy_len * 3 / 2;
149
+ }
150
+
151
+ /* III. Check input length */
152
+ if (len > MBEDTLS_HMAC_DRBG_MAX_INPUT ||
153
+ total_entropy_len + len > MBEDTLS_HMAC_DRBG_MAX_SEED_INPUT) {
154
+ return MBEDTLS_ERR_HMAC_DRBG_INPUT_TOO_BIG;
155
+ }
156
+ }
157
+
158
+ memset(seed, 0, MBEDTLS_HMAC_DRBG_MAX_SEED_INPUT);
159
+
160
+ /* IV. Gather entropy_len bytes of entropy for the seed */
161
+ if ((ret = ctx->f_entropy(ctx->p_entropy,
162
+ seed, ctx->entropy_len)) != 0) {
163
+ return MBEDTLS_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED;
164
+ }
165
+ seedlen += ctx->entropy_len;
166
+
167
+ /* For initial seeding, allow adding of nonce generated
168
+ * from the entropy source. See Sect 8.6.7 in SP800-90A. */
169
+ if (use_nonce) {
170
+ /* Note: We don't merge the two calls to f_entropy() in order
171
+ * to avoid requesting too much entropy from f_entropy()
172
+ * at once. Specifically, if the underlying digest is not
173
+ * SHA-1, 3 / 2 * entropy_len is at least 36 Bytes, which
174
+ * is larger than the maximum of 32 Bytes that our own
175
+ * entropy source implementation can emit in a single
176
+ * call in configurations disabling SHA-512. */
177
+ if ((ret = ctx->f_entropy(ctx->p_entropy,
178
+ seed + seedlen,
179
+ ctx->entropy_len / 2)) != 0) {
180
+ return MBEDTLS_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED;
181
+ }
182
+
183
+ seedlen += ctx->entropy_len / 2;
184
+ }
185
+
186
+
187
+ /* 1. Concatenate entropy and additional data if any */
188
+ if (additional != NULL && len != 0) {
189
+ memcpy(seed + seedlen, additional, len);
190
+ seedlen += len;
191
+ }
192
+
193
+ /* 2. Update state */
194
+ if ((ret = mbedtls_hmac_drbg_update(ctx, seed, seedlen)) != 0) {
195
+ goto exit;
196
+ }
197
+
198
+ /* 3. Reset reseed_counter */
199
+ ctx->reseed_counter = 0;
200
+
201
+ exit:
202
+ /* 4. Done */
203
+ mbedtls_platform_zeroize(seed, seedlen);
204
+ return ret;
205
+ }
206
+
207
+ /*
208
+ * HMAC_DRBG reseeding: 10.1.2.4 + 9.2
209
+ */
210
+ int mbedtls_hmac_drbg_reseed(mbedtls_hmac_drbg_context *ctx,
211
+ const unsigned char *additional, size_t len)
212
+ {
213
+ return hmac_drbg_reseed_core(ctx, additional, len, 0);
214
+ }
215
+
216
+ /*
217
+ * HMAC_DRBG initialisation (10.1.2.3 + 9.1)
218
+ *
219
+ * The nonce is not passed as a separate parameter but extracted
220
+ * from the entropy source as suggested in 8.6.7.
221
+ */
222
+ int mbedtls_hmac_drbg_seed(mbedtls_hmac_drbg_context *ctx,
223
+ const mbedtls_md_info_t *md_info,
224
+ int (*f_entropy)(void *, unsigned char *, size_t),
225
+ void *p_entropy,
226
+ const unsigned char *custom,
227
+ size_t len)
228
+ {
229
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
230
+ size_t md_size;
231
+
232
+ if ((ret = mbedtls_md_setup(&ctx->md_ctx, md_info, 1)) != 0) {
233
+ return ret;
234
+ }
235
+
236
+ /* The mutex is initialized iff the md context is set up. */
237
+ #if defined(MBEDTLS_THREADING_C)
238
+ mbedtls_mutex_init(&ctx->mutex);
239
+ #endif
240
+
241
+ md_size = mbedtls_md_get_size(md_info);
242
+
243
+ /*
244
+ * Set initial working state.
245
+ * Use the V memory location, which is currently all 0, to initialize the
246
+ * MD context with an all-zero key. Then set V to its initial value.
247
+ */
248
+ if ((ret = mbedtls_md_hmac_starts(&ctx->md_ctx, ctx->V, md_size)) != 0) {
249
+ return ret;
250
+ }
251
+ memset(ctx->V, 0x01, md_size);
252
+
253
+ ctx->f_entropy = f_entropy;
254
+ ctx->p_entropy = p_entropy;
255
+
256
+ if (ctx->entropy_len == 0) {
257
+ /*
258
+ * See SP800-57 5.6.1 (p. 65-66) for the security strength provided by
259
+ * each hash function, then according to SP800-90A rev1 10.1 table 2,
260
+ * min_entropy_len (in bits) is security_strength.
261
+ *
262
+ * (This also matches the sizes used in the NIST test vectors.)
263
+ */
264
+ ctx->entropy_len = md_size <= 20 ? 16 : /* 160-bits hash -> 128 bits */
265
+ md_size <= 28 ? 24 : /* 224-bits hash -> 192 bits */
266
+ 32; /* better (256+) -> 256 bits */
267
+ }
268
+
269
+ if ((ret = hmac_drbg_reseed_core(ctx, custom, len,
270
+ 1 /* add nonce */)) != 0) {
271
+ return ret;
272
+ }
273
+
274
+ return 0;
275
+ }
276
+
277
+ /*
278
+ * Set prediction resistance
279
+ */
280
+ void mbedtls_hmac_drbg_set_prediction_resistance(mbedtls_hmac_drbg_context *ctx,
281
+ int resistance)
282
+ {
283
+ ctx->prediction_resistance = resistance;
284
+ }
285
+
286
+ /*
287
+ * Set entropy length grabbed for seeding
288
+ */
289
+ void mbedtls_hmac_drbg_set_entropy_len(mbedtls_hmac_drbg_context *ctx, size_t len)
290
+ {
291
+ ctx->entropy_len = len;
292
+ }
293
+
294
+ /*
295
+ * Set reseed interval
296
+ */
297
+ void mbedtls_hmac_drbg_set_reseed_interval(mbedtls_hmac_drbg_context *ctx, int interval)
298
+ {
299
+ ctx->reseed_interval = interval;
300
+ }
301
+
302
+ /*
303
+ * HMAC_DRBG random function with optional additional data:
304
+ * 10.1.2.5 (arabic) + 9.3 (Roman)
305
+ */
306
+ int mbedtls_hmac_drbg_random_with_add(void *p_rng,
307
+ unsigned char *output, size_t out_len,
308
+ const unsigned char *additional, size_t add_len)
309
+ {
310
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
311
+ mbedtls_hmac_drbg_context *ctx = (mbedtls_hmac_drbg_context *) p_rng;
312
+ size_t md_len = mbedtls_md_get_size(ctx->md_ctx.md_info);
313
+ size_t left = out_len;
314
+ unsigned char *out = output;
315
+
316
+ /* II. Check request length */
317
+ if (out_len > MBEDTLS_HMAC_DRBG_MAX_REQUEST) {
318
+ return MBEDTLS_ERR_HMAC_DRBG_REQUEST_TOO_BIG;
319
+ }
320
+
321
+ /* III. Check input length */
322
+ if (add_len > MBEDTLS_HMAC_DRBG_MAX_INPUT) {
323
+ return MBEDTLS_ERR_HMAC_DRBG_INPUT_TOO_BIG;
324
+ }
325
+
326
+ /* 1. (aka VII and IX) Check reseed counter and PR */
327
+ if (ctx->f_entropy != NULL && /* For no-reseeding instances */
328
+ (ctx->prediction_resistance == MBEDTLS_HMAC_DRBG_PR_ON ||
329
+ ctx->reseed_counter >= ctx->reseed_interval)) {
330
+ if ((ret = mbedtls_hmac_drbg_reseed(ctx, additional, add_len)) != 0) {
331
+ return ret;
332
+ }
333
+
334
+ add_len = 0; /* VII.4 */
335
+ }
336
+
337
+ /* 2. Use additional data if any */
338
+ if (additional != NULL && add_len != 0) {
339
+ if ((ret = mbedtls_hmac_drbg_update(ctx,
340
+ additional, add_len)) != 0) {
341
+ goto exit;
342
+ }
343
+ }
344
+
345
+ /* 3, 4, 5. Generate bytes */
346
+ while (left != 0) {
347
+ size_t use_len = left > md_len ? md_len : left;
348
+
349
+ if ((ret = mbedtls_md_hmac_reset(&ctx->md_ctx)) != 0) {
350
+ goto exit;
351
+ }
352
+ if ((ret = mbedtls_md_hmac_update(&ctx->md_ctx,
353
+ ctx->V, md_len)) != 0) {
354
+ goto exit;
355
+ }
356
+ if ((ret = mbedtls_md_hmac_finish(&ctx->md_ctx, ctx->V)) != 0) {
357
+ goto exit;
358
+ }
359
+
360
+ memcpy(out, ctx->V, use_len);
361
+ out += use_len;
362
+ left -= use_len;
363
+ }
364
+
365
+ /* 6. Update */
366
+ if ((ret = mbedtls_hmac_drbg_update(ctx,
367
+ additional, add_len)) != 0) {
368
+ goto exit;
369
+ }
370
+
371
+ /* 7. Update reseed counter */
372
+ ctx->reseed_counter++;
373
+
374
+ exit:
375
+ /* 8. Done */
376
+ return ret;
377
+ }
378
+
379
+ /*
380
+ * HMAC_DRBG random function
381
+ */
382
+ int mbedtls_hmac_drbg_random(void *p_rng, unsigned char *output, size_t out_len)
383
+ {
384
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
385
+ mbedtls_hmac_drbg_context *ctx = (mbedtls_hmac_drbg_context *) p_rng;
386
+
387
+ #if defined(MBEDTLS_THREADING_C)
388
+ if ((ret = mbedtls_mutex_lock(&ctx->mutex)) != 0) {
389
+ return ret;
390
+ }
391
+ #endif
392
+
393
+ ret = mbedtls_hmac_drbg_random_with_add(ctx, output, out_len, NULL, 0);
394
+
395
+ #if defined(MBEDTLS_THREADING_C)
396
+ if (mbedtls_mutex_unlock(&ctx->mutex) != 0) {
397
+ return MBEDTLS_ERR_THREADING_MUTEX_ERROR;
398
+ }
399
+ #endif
400
+
401
+ return ret;
402
+ }
403
+
404
+ /*
405
+ * This function resets HMAC_DRBG context to the state immediately
406
+ * after initial call of mbedtls_hmac_drbg_init().
407
+ */
408
+ void mbedtls_hmac_drbg_free(mbedtls_hmac_drbg_context *ctx)
409
+ {
410
+ if (ctx == NULL) {
411
+ return;
412
+ }
413
+
414
+ #if defined(MBEDTLS_THREADING_C)
415
+ /* The mutex is initialized iff the md context is set up. */
416
+ if (ctx->md_ctx.md_info != NULL) {
417
+ mbedtls_mutex_free(&ctx->mutex);
418
+ }
419
+ #endif
420
+ mbedtls_md_free(&ctx->md_ctx);
421
+ mbedtls_platform_zeroize(ctx, sizeof(mbedtls_hmac_drbg_context));
422
+ ctx->reseed_interval = MBEDTLS_HMAC_DRBG_RESEED_INTERVAL;
423
+ }
424
+
425
+ #if defined(MBEDTLS_FS_IO)
426
+ int mbedtls_hmac_drbg_write_seed_file(mbedtls_hmac_drbg_context *ctx, const char *path)
427
+ {
428
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
429
+ FILE *f;
430
+ unsigned char buf[MBEDTLS_HMAC_DRBG_MAX_INPUT];
431
+
432
+ if ((f = fopen(path, "wb")) == NULL) {
433
+ return MBEDTLS_ERR_HMAC_DRBG_FILE_IO_ERROR;
434
+ }
435
+
436
+ /* Ensure no stdio buffering of secrets, as such buffers cannot be wiped. */
437
+ mbedtls_setbuf(f, NULL);
438
+
439
+ if ((ret = mbedtls_hmac_drbg_random(ctx, buf, sizeof(buf))) != 0) {
440
+ goto exit;
441
+ }
442
+
443
+ if (fwrite(buf, 1, sizeof(buf), f) != sizeof(buf)) {
444
+ ret = MBEDTLS_ERR_HMAC_DRBG_FILE_IO_ERROR;
445
+ goto exit;
446
+ }
447
+
448
+ ret = 0;
449
+
450
+ exit:
451
+ fclose(f);
452
+ mbedtls_platform_zeroize(buf, sizeof(buf));
453
+
454
+ return ret;
455
+ }
456
+
457
+ int mbedtls_hmac_drbg_update_seed_file(mbedtls_hmac_drbg_context *ctx, const char *path)
458
+ {
459
+ int ret = 0;
460
+ FILE *f = NULL;
461
+ size_t n;
462
+ unsigned char buf[MBEDTLS_HMAC_DRBG_MAX_INPUT];
463
+ unsigned char c;
464
+
465
+ if ((f = fopen(path, "rb")) == NULL) {
466
+ return MBEDTLS_ERR_HMAC_DRBG_FILE_IO_ERROR;
467
+ }
468
+
469
+ /* Ensure no stdio buffering of secrets, as such buffers cannot be wiped. */
470
+ mbedtls_setbuf(f, NULL);
471
+
472
+ n = fread(buf, 1, sizeof(buf), f);
473
+ if (fread(&c, 1, 1, f) != 0) {
474
+ ret = MBEDTLS_ERR_HMAC_DRBG_INPUT_TOO_BIG;
475
+ goto exit;
476
+ }
477
+ if (n == 0 || ferror(f)) {
478
+ ret = MBEDTLS_ERR_HMAC_DRBG_FILE_IO_ERROR;
479
+ goto exit;
480
+ }
481
+ fclose(f);
482
+ f = NULL;
483
+
484
+ ret = mbedtls_hmac_drbg_update(ctx, buf, n);
485
+
486
+ exit:
487
+ mbedtls_platform_zeroize(buf, sizeof(buf));
488
+ if (f != NULL) {
489
+ fclose(f);
490
+ }
491
+ if (ret != 0) {
492
+ return ret;
493
+ }
494
+ return mbedtls_hmac_drbg_write_seed_file(ctx, path);
495
+ }
496
+ #endif /* MBEDTLS_FS_IO */
497
+
498
+
499
+ #if defined(MBEDTLS_SELF_TEST)
500
+
501
+ #if !defined(MBEDTLS_MD_CAN_SHA1)
502
+ /* Dummy checkup routine */
503
+ int mbedtls_hmac_drbg_self_test(int verbose)
504
+ {
505
+ (void) verbose;
506
+ return 0;
507
+ }
508
+ #else
509
+
510
+ #define OUTPUT_LEN 80
511
+
512
+ /* From a NIST PR=true test vector */
513
+ static const unsigned char entropy_pr[] = {
514
+ 0xa0, 0xc9, 0xab, 0x58, 0xf1, 0xe2, 0xe5, 0xa4, 0xde, 0x3e, 0xbd, 0x4f,
515
+ 0xf7, 0x3e, 0x9c, 0x5b, 0x64, 0xef, 0xd8, 0xca, 0x02, 0x8c, 0xf8, 0x11,
516
+ 0x48, 0xa5, 0x84, 0xfe, 0x69, 0xab, 0x5a, 0xee, 0x42, 0xaa, 0x4d, 0x42,
517
+ 0x17, 0x60, 0x99, 0xd4, 0x5e, 0x13, 0x97, 0xdc, 0x40, 0x4d, 0x86, 0xa3,
518
+ 0x7b, 0xf5, 0x59, 0x54, 0x75, 0x69, 0x51, 0xe4
519
+ };
520
+ static const unsigned char result_pr[OUTPUT_LEN] = {
521
+ 0x9a, 0x00, 0xa2, 0xd0, 0x0e, 0xd5, 0x9b, 0xfe, 0x31, 0xec, 0xb1, 0x39,
522
+ 0x9b, 0x60, 0x81, 0x48, 0xd1, 0x96, 0x9d, 0x25, 0x0d, 0x3c, 0x1e, 0x94,
523
+ 0x10, 0x10, 0x98, 0x12, 0x93, 0x25, 0xca, 0xb8, 0xfc, 0xcc, 0x2d, 0x54,
524
+ 0x73, 0x19, 0x70, 0xc0, 0x10, 0x7a, 0xa4, 0x89, 0x25, 0x19, 0x95, 0x5e,
525
+ 0x4b, 0xc6, 0x00, 0x1d, 0x7f, 0x4e, 0x6a, 0x2b, 0xf8, 0xa3, 0x01, 0xab,
526
+ 0x46, 0x05, 0x5c, 0x09, 0xa6, 0x71, 0x88, 0xf1, 0xa7, 0x40, 0xee, 0xf3,
527
+ 0xe1, 0x5c, 0x02, 0x9b, 0x44, 0xaf, 0x03, 0x44
528
+ };
529
+
530
+ /* From a NIST PR=false test vector */
531
+ static const unsigned char entropy_nopr[] = {
532
+ 0x79, 0x34, 0x9b, 0xbf, 0x7c, 0xdd, 0xa5, 0x79, 0x95, 0x57, 0x86, 0x66,
533
+ 0x21, 0xc9, 0x13, 0x83, 0x11, 0x46, 0x73, 0x3a, 0xbf, 0x8c, 0x35, 0xc8,
534
+ 0xc7, 0x21, 0x5b, 0x5b, 0x96, 0xc4, 0x8e, 0x9b, 0x33, 0x8c, 0x74, 0xe3,
535
+ 0xe9, 0x9d, 0xfe, 0xdf
536
+ };
537
+ static const unsigned char result_nopr[OUTPUT_LEN] = {
538
+ 0xc6, 0xa1, 0x6a, 0xb8, 0xd4, 0x20, 0x70, 0x6f, 0x0f, 0x34, 0xab, 0x7f,
539
+ 0xec, 0x5a, 0xdc, 0xa9, 0xd8, 0xca, 0x3a, 0x13, 0x3e, 0x15, 0x9c, 0xa6,
540
+ 0xac, 0x43, 0xc6, 0xf8, 0xa2, 0xbe, 0x22, 0x83, 0x4a, 0x4c, 0x0a, 0x0a,
541
+ 0xff, 0xb1, 0x0d, 0x71, 0x94, 0xf1, 0xc1, 0xa5, 0xcf, 0x73, 0x22, 0xec,
542
+ 0x1a, 0xe0, 0x96, 0x4e, 0xd4, 0xbf, 0x12, 0x27, 0x46, 0xe0, 0x87, 0xfd,
543
+ 0xb5, 0xb3, 0xe9, 0x1b, 0x34, 0x93, 0xd5, 0xbb, 0x98, 0xfa, 0xed, 0x49,
544
+ 0xe8, 0x5f, 0x13, 0x0f, 0xc8, 0xa4, 0x59, 0xb7
545
+ };
546
+
547
+ /* "Entropy" from buffer */
548
+ static size_t test_offset;
549
+ static int hmac_drbg_self_test_entropy(void *data,
550
+ unsigned char *buf, size_t len)
551
+ {
552
+ const unsigned char *p = data;
553
+ memcpy(buf, p + test_offset, len);
554
+ test_offset += len;
555
+ return 0;
556
+ }
557
+
558
+ #define CHK(c) if ((c) != 0) \
559
+ { \
560
+ if (verbose != 0) \
561
+ mbedtls_printf("failed\n"); \
562
+ return 1; \
563
+ }
564
+
565
+ /*
566
+ * Checkup routine for HMAC_DRBG with SHA-1
567
+ */
568
+ int mbedtls_hmac_drbg_self_test(int verbose)
569
+ {
570
+ mbedtls_hmac_drbg_context ctx;
571
+ unsigned char buf[OUTPUT_LEN];
572
+ const mbedtls_md_info_t *md_info = mbedtls_md_info_from_type(MBEDTLS_MD_SHA1);
573
+
574
+ mbedtls_hmac_drbg_init(&ctx);
575
+
576
+ /*
577
+ * PR = True
578
+ */
579
+ if (verbose != 0) {
580
+ mbedtls_printf(" HMAC_DRBG (PR = True) : ");
581
+ }
582
+
583
+ test_offset = 0;
584
+ CHK(mbedtls_hmac_drbg_seed(&ctx, md_info,
585
+ hmac_drbg_self_test_entropy, (void *) entropy_pr,
586
+ NULL, 0));
587
+ mbedtls_hmac_drbg_set_prediction_resistance(&ctx, MBEDTLS_HMAC_DRBG_PR_ON);
588
+ CHK(mbedtls_hmac_drbg_random(&ctx, buf, OUTPUT_LEN));
589
+ CHK(mbedtls_hmac_drbg_random(&ctx, buf, OUTPUT_LEN));
590
+ CHK(memcmp(buf, result_pr, OUTPUT_LEN));
591
+ mbedtls_hmac_drbg_free(&ctx);
592
+
593
+ mbedtls_hmac_drbg_free(&ctx);
594
+
595
+ if (verbose != 0) {
596
+ mbedtls_printf("passed\n");
597
+ }
598
+
599
+ /*
600
+ * PR = False
601
+ */
602
+ if (verbose != 0) {
603
+ mbedtls_printf(" HMAC_DRBG (PR = False) : ");
604
+ }
605
+
606
+ mbedtls_hmac_drbg_init(&ctx);
607
+
608
+ test_offset = 0;
609
+ CHK(mbedtls_hmac_drbg_seed(&ctx, md_info,
610
+ hmac_drbg_self_test_entropy, (void *) entropy_nopr,
611
+ NULL, 0));
612
+ CHK(mbedtls_hmac_drbg_reseed(&ctx, NULL, 0));
613
+ CHK(mbedtls_hmac_drbg_random(&ctx, buf, OUTPUT_LEN));
614
+ CHK(mbedtls_hmac_drbg_random(&ctx, buf, OUTPUT_LEN));
615
+ CHK(memcmp(buf, result_nopr, OUTPUT_LEN));
616
+ mbedtls_hmac_drbg_free(&ctx);
617
+
618
+ mbedtls_hmac_drbg_free(&ctx);
619
+
620
+ if (verbose != 0) {
621
+ mbedtls_printf("passed\n");
622
+ }
623
+
624
+ if (verbose != 0) {
625
+ mbedtls_printf("\n");
626
+ }
627
+
628
+ return 0;
629
+ }
630
+ #endif /* MBEDTLS_MD_CAN_SHA1 */
631
+ #endif /* MBEDTLS_SELF_TEST */
632
+
633
+ #endif /* MBEDTLS_HMAC_DRBG_C */