@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,858 @@
1
+ /*
2
+ * Elliptic curve DSA
3
+ *
4
+ * Copyright The Mbed TLS Contributors
5
+ * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
6
+ */
7
+
8
+ /*
9
+ * References:
10
+ *
11
+ * SEC1 https://www.secg.org/sec1-v2.pdf
12
+ */
13
+
14
+ #include "common.h"
15
+
16
+ #if defined(MBEDTLS_ECDSA_C)
17
+
18
+ #include "mbedtls/ecdsa.h"
19
+ #include "mbedtls/asn1write.h"
20
+ #include "bignum_internal.h"
21
+
22
+ #include <string.h>
23
+
24
+ #if defined(MBEDTLS_ECDSA_DETERMINISTIC)
25
+ #include "mbedtls/hmac_drbg.h"
26
+ #endif
27
+
28
+ #include "mbedtls/platform.h"
29
+
30
+ #include "mbedtls/platform_util.h"
31
+ #include "mbedtls/error.h"
32
+
33
+ #if defined(MBEDTLS_ECP_RESTARTABLE)
34
+
35
+ /*
36
+ * Sub-context for ecdsa_verify()
37
+ */
38
+ struct mbedtls_ecdsa_restart_ver {
39
+ mbedtls_mpi u1, u2; /* intermediate values */
40
+ enum { /* what to do next? */
41
+ ecdsa_ver_init = 0, /* getting started */
42
+ ecdsa_ver_muladd, /* muladd step */
43
+ } state;
44
+ };
45
+
46
+ /*
47
+ * Init verify restart sub-context
48
+ */
49
+ static void ecdsa_restart_ver_init(mbedtls_ecdsa_restart_ver_ctx *ctx)
50
+ {
51
+ mbedtls_mpi_init(&ctx->u1);
52
+ mbedtls_mpi_init(&ctx->u2);
53
+ ctx->state = ecdsa_ver_init;
54
+ }
55
+
56
+ /*
57
+ * Free the components of a verify restart sub-context
58
+ */
59
+ static void ecdsa_restart_ver_free(mbedtls_ecdsa_restart_ver_ctx *ctx)
60
+ {
61
+ if (ctx == NULL) {
62
+ return;
63
+ }
64
+
65
+ mbedtls_mpi_free(&ctx->u1);
66
+ mbedtls_mpi_free(&ctx->u2);
67
+
68
+ ecdsa_restart_ver_init(ctx);
69
+ }
70
+
71
+ /*
72
+ * Sub-context for ecdsa_sign()
73
+ */
74
+ struct mbedtls_ecdsa_restart_sig {
75
+ int sign_tries;
76
+ int key_tries;
77
+ mbedtls_mpi k; /* per-signature random */
78
+ mbedtls_mpi r; /* r value */
79
+ enum { /* what to do next? */
80
+ ecdsa_sig_init = 0, /* getting started */
81
+ ecdsa_sig_mul, /* doing ecp_mul() */
82
+ ecdsa_sig_modn, /* mod N computations */
83
+ } state;
84
+ };
85
+
86
+ /*
87
+ * Init verify sign sub-context
88
+ */
89
+ static void ecdsa_restart_sig_init(mbedtls_ecdsa_restart_sig_ctx *ctx)
90
+ {
91
+ ctx->sign_tries = 0;
92
+ ctx->key_tries = 0;
93
+ mbedtls_mpi_init(&ctx->k);
94
+ mbedtls_mpi_init(&ctx->r);
95
+ ctx->state = ecdsa_sig_init;
96
+ }
97
+
98
+ /*
99
+ * Free the components of a sign restart sub-context
100
+ */
101
+ static void ecdsa_restart_sig_free(mbedtls_ecdsa_restart_sig_ctx *ctx)
102
+ {
103
+ if (ctx == NULL) {
104
+ return;
105
+ }
106
+
107
+ mbedtls_mpi_free(&ctx->k);
108
+ mbedtls_mpi_free(&ctx->r);
109
+ }
110
+
111
+ #if defined(MBEDTLS_ECDSA_DETERMINISTIC)
112
+ /*
113
+ * Sub-context for ecdsa_sign_det()
114
+ */
115
+ struct mbedtls_ecdsa_restart_det {
116
+ mbedtls_hmac_drbg_context rng_ctx; /* DRBG state */
117
+ enum { /* what to do next? */
118
+ ecdsa_det_init = 0, /* getting started */
119
+ ecdsa_det_sign, /* make signature */
120
+ } state;
121
+ };
122
+
123
+ /*
124
+ * Init verify sign_det sub-context
125
+ */
126
+ static void ecdsa_restart_det_init(mbedtls_ecdsa_restart_det_ctx *ctx)
127
+ {
128
+ mbedtls_hmac_drbg_init(&ctx->rng_ctx);
129
+ ctx->state = ecdsa_det_init;
130
+ }
131
+
132
+ /*
133
+ * Free the components of a sign_det restart sub-context
134
+ */
135
+ static void ecdsa_restart_det_free(mbedtls_ecdsa_restart_det_ctx *ctx)
136
+ {
137
+ if (ctx == NULL) {
138
+ return;
139
+ }
140
+
141
+ mbedtls_hmac_drbg_free(&ctx->rng_ctx);
142
+
143
+ ecdsa_restart_det_init(ctx);
144
+ }
145
+ #endif /* MBEDTLS_ECDSA_DETERMINISTIC */
146
+
147
+ #define ECDSA_RS_ECP (rs_ctx == NULL ? NULL : &rs_ctx->ecp)
148
+
149
+ /* Utility macro for checking and updating ops budget */
150
+ #define ECDSA_BUDGET(ops) \
151
+ MBEDTLS_MPI_CHK(mbedtls_ecp_check_budget(grp, ECDSA_RS_ECP, ops));
152
+
153
+ /* Call this when entering a function that needs its own sub-context */
154
+ #define ECDSA_RS_ENTER(SUB) do { \
155
+ /* reset ops count for this call if top-level */ \
156
+ if (rs_ctx != NULL && rs_ctx->ecp.depth++ == 0) \
157
+ rs_ctx->ecp.ops_done = 0; \
158
+ \
159
+ /* set up our own sub-context if needed */ \
160
+ if (mbedtls_ecp_restart_is_enabled() && \
161
+ rs_ctx != NULL && rs_ctx->SUB == NULL) \
162
+ { \
163
+ rs_ctx->SUB = mbedtls_calloc(1, sizeof(*rs_ctx->SUB)); \
164
+ if (rs_ctx->SUB == NULL) \
165
+ return MBEDTLS_ERR_ECP_ALLOC_FAILED; \
166
+ \
167
+ ecdsa_restart_## SUB ##_init(rs_ctx->SUB); \
168
+ } \
169
+ } while (0)
170
+
171
+ /* Call this when leaving a function that needs its own sub-context */
172
+ #define ECDSA_RS_LEAVE(SUB) do { \
173
+ /* clear our sub-context when not in progress (done or error) */ \
174
+ if (rs_ctx != NULL && rs_ctx->SUB != NULL && \
175
+ ret != MBEDTLS_ERR_ECP_IN_PROGRESS) \
176
+ { \
177
+ ecdsa_restart_## SUB ##_free(rs_ctx->SUB); \
178
+ mbedtls_free(rs_ctx->SUB); \
179
+ rs_ctx->SUB = NULL; \
180
+ } \
181
+ \
182
+ if (rs_ctx != NULL) \
183
+ rs_ctx->ecp.depth--; \
184
+ } while (0)
185
+
186
+ #else /* MBEDTLS_ECP_RESTARTABLE */
187
+
188
+ #define ECDSA_RS_ECP NULL
189
+
190
+ #define ECDSA_BUDGET(ops) /* no-op; for compatibility */
191
+
192
+ #define ECDSA_RS_ENTER(SUB) (void) rs_ctx
193
+ #define ECDSA_RS_LEAVE(SUB) (void) rs_ctx
194
+
195
+ #endif /* MBEDTLS_ECP_RESTARTABLE */
196
+
197
+ #if defined(MBEDTLS_ECDSA_DETERMINISTIC) || \
198
+ !defined(MBEDTLS_ECDSA_SIGN_ALT) || \
199
+ !defined(MBEDTLS_ECDSA_VERIFY_ALT)
200
+ /*
201
+ * Derive a suitable integer for group grp from a buffer of length len
202
+ * SEC1 4.1.3 step 5 aka SEC1 4.1.4 step 3
203
+ */
204
+ static int derive_mpi(const mbedtls_ecp_group *grp, mbedtls_mpi *x,
205
+ const unsigned char *buf, size_t blen)
206
+ {
207
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
208
+ size_t n_size = (grp->nbits + 7) / 8;
209
+ size_t use_size = blen > n_size ? n_size : blen;
210
+
211
+ MBEDTLS_MPI_CHK(mbedtls_mpi_read_binary(x, buf, use_size));
212
+ if (use_size * 8 > grp->nbits) {
213
+ MBEDTLS_MPI_CHK(mbedtls_mpi_shift_r(x, use_size * 8 - grp->nbits));
214
+ }
215
+
216
+ /* While at it, reduce modulo N */
217
+ if (mbedtls_mpi_cmp_mpi(x, &grp->N) >= 0) {
218
+ MBEDTLS_MPI_CHK(mbedtls_mpi_sub_mpi(x, x, &grp->N));
219
+ }
220
+
221
+ cleanup:
222
+ return ret;
223
+ }
224
+ #endif /* ECDSA_DETERMINISTIC || !ECDSA_SIGN_ALT || !ECDSA_VERIFY_ALT */
225
+
226
+ int mbedtls_ecdsa_can_do(mbedtls_ecp_group_id gid)
227
+ {
228
+ switch (gid) {
229
+ #ifdef MBEDTLS_ECP_DP_CURVE25519_ENABLED
230
+ case MBEDTLS_ECP_DP_CURVE25519: return 0;
231
+ #endif
232
+ #ifdef MBEDTLS_ECP_DP_CURVE448_ENABLED
233
+ case MBEDTLS_ECP_DP_CURVE448: return 0;
234
+ #endif
235
+ default: return 1;
236
+ }
237
+ }
238
+
239
+ #if !defined(MBEDTLS_ECDSA_SIGN_ALT)
240
+ /*
241
+ * Compute ECDSA signature of a hashed message (SEC1 4.1.3)
242
+ * Obviously, compared to SEC1 4.1.3, we skip step 4 (hash message)
243
+ */
244
+ int mbedtls_ecdsa_sign_restartable(mbedtls_ecp_group *grp,
245
+ mbedtls_mpi *r, mbedtls_mpi *s,
246
+ const mbedtls_mpi *d, const unsigned char *buf, size_t blen,
247
+ int (*f_rng)(void *, unsigned char *, size_t), void *p_rng,
248
+ int (*f_rng_blind)(void *, unsigned char *, size_t),
249
+ void *p_rng_blind,
250
+ mbedtls_ecdsa_restart_ctx *rs_ctx)
251
+ {
252
+ int ret, key_tries, sign_tries;
253
+ int *p_sign_tries = &sign_tries, *p_key_tries = &key_tries;
254
+ mbedtls_ecp_point R;
255
+ mbedtls_mpi k, e;
256
+ mbedtls_mpi *pk = &k, *pr = r;
257
+
258
+ /* Fail cleanly on curves such as Curve25519 that can't be used for ECDSA */
259
+ if (!mbedtls_ecdsa_can_do(grp->id) || grp->N.p == NULL) {
260
+ return MBEDTLS_ERR_ECP_BAD_INPUT_DATA;
261
+ }
262
+
263
+ /* Make sure d is in range 1..n-1 */
264
+ if (mbedtls_mpi_cmp_int(d, 1) < 0 || mbedtls_mpi_cmp_mpi(d, &grp->N) >= 0) {
265
+ return MBEDTLS_ERR_ECP_INVALID_KEY;
266
+ }
267
+
268
+ mbedtls_ecp_point_init(&R);
269
+ mbedtls_mpi_init(&k); mbedtls_mpi_init(&e);
270
+
271
+ ECDSA_RS_ENTER(sig);
272
+
273
+ #if defined(MBEDTLS_ECP_RESTARTABLE)
274
+ if (rs_ctx != NULL && rs_ctx->sig != NULL) {
275
+ /* redirect to our context */
276
+ p_sign_tries = &rs_ctx->sig->sign_tries;
277
+ p_key_tries = &rs_ctx->sig->key_tries;
278
+ pk = &rs_ctx->sig->k;
279
+ pr = &rs_ctx->sig->r;
280
+
281
+ /* jump to current step */
282
+ if (rs_ctx->sig->state == ecdsa_sig_mul) {
283
+ goto mul;
284
+ }
285
+ if (rs_ctx->sig->state == ecdsa_sig_modn) {
286
+ goto modn;
287
+ }
288
+ }
289
+ #endif /* MBEDTLS_ECP_RESTARTABLE */
290
+
291
+ *p_sign_tries = 0;
292
+ do {
293
+ if ((*p_sign_tries)++ > 10) {
294
+ ret = MBEDTLS_ERR_ECP_RANDOM_FAILED;
295
+ goto cleanup;
296
+ }
297
+
298
+ /*
299
+ * Steps 1-3: generate a suitable ephemeral keypair
300
+ * and set r = xR mod n
301
+ */
302
+ *p_key_tries = 0;
303
+ do {
304
+ if ((*p_key_tries)++ > 10) {
305
+ ret = MBEDTLS_ERR_ECP_RANDOM_FAILED;
306
+ goto cleanup;
307
+ }
308
+
309
+ MBEDTLS_MPI_CHK(mbedtls_ecp_gen_privkey(grp, pk, f_rng, p_rng));
310
+
311
+ #if defined(MBEDTLS_ECP_RESTARTABLE)
312
+ if (rs_ctx != NULL && rs_ctx->sig != NULL) {
313
+ rs_ctx->sig->state = ecdsa_sig_mul;
314
+ }
315
+
316
+ mul:
317
+ #endif
318
+ MBEDTLS_MPI_CHK(mbedtls_ecp_mul_restartable(grp, &R, pk, &grp->G,
319
+ f_rng_blind,
320
+ p_rng_blind,
321
+ ECDSA_RS_ECP));
322
+ MBEDTLS_MPI_CHK(mbedtls_mpi_mod_mpi(pr, &R.X, &grp->N));
323
+ } while (mbedtls_mpi_cmp_int(pr, 0) == 0);
324
+
325
+ #if defined(MBEDTLS_ECP_RESTARTABLE)
326
+ if (rs_ctx != NULL && rs_ctx->sig != NULL) {
327
+ rs_ctx->sig->state = ecdsa_sig_modn;
328
+ }
329
+
330
+ modn:
331
+ #endif
332
+ /*
333
+ * Accounting for everything up to the end of the loop
334
+ * (step 6, but checking now avoids saving e and t)
335
+ */
336
+ ECDSA_BUDGET(MBEDTLS_ECP_OPS_INV + 4);
337
+
338
+ /*
339
+ * Step 5: derive MPI from hashed message
340
+ */
341
+ MBEDTLS_MPI_CHK(derive_mpi(grp, &e, buf, blen));
342
+
343
+ /*
344
+ * Step 6: compute s = (e + r * d) / k
345
+ */
346
+ MBEDTLS_MPI_CHK(mbedtls_mpi_mul_mpi(s, pr, d));
347
+ MBEDTLS_MPI_CHK(mbedtls_mpi_add_mpi(&e, &e, s));
348
+ MBEDTLS_MPI_CHK(mbedtls_mpi_gcd_modinv_odd(NULL, s, pk, &grp->N));
349
+ MBEDTLS_MPI_CHK(mbedtls_mpi_mul_mpi(s, s, &e));
350
+ MBEDTLS_MPI_CHK(mbedtls_mpi_mod_mpi(s, s, &grp->N));
351
+ } while (mbedtls_mpi_cmp_int(s, 0) == 0);
352
+
353
+ #if defined(MBEDTLS_ECP_RESTARTABLE)
354
+ if (rs_ctx != NULL && rs_ctx->sig != NULL) {
355
+ MBEDTLS_MPI_CHK(mbedtls_mpi_copy(r, pr));
356
+ }
357
+ #endif
358
+
359
+ cleanup:
360
+ mbedtls_ecp_point_free(&R);
361
+ mbedtls_mpi_free(&k); mbedtls_mpi_free(&e);
362
+
363
+ ECDSA_RS_LEAVE(sig);
364
+
365
+ return ret;
366
+ }
367
+
368
+ /*
369
+ * Compute ECDSA signature of a hashed message
370
+ */
371
+ int mbedtls_ecdsa_sign(mbedtls_ecp_group *grp, mbedtls_mpi *r, mbedtls_mpi *s,
372
+ const mbedtls_mpi *d, const unsigned char *buf, size_t blen,
373
+ int (*f_rng)(void *, unsigned char *, size_t), void *p_rng)
374
+ {
375
+ /* Use the same RNG for both blinding and ephemeral key generation */
376
+ return mbedtls_ecdsa_sign_restartable(grp, r, s, d, buf, blen,
377
+ f_rng, p_rng, f_rng, p_rng, NULL);
378
+ }
379
+ #endif /* !MBEDTLS_ECDSA_SIGN_ALT */
380
+
381
+ #if defined(MBEDTLS_ECDSA_DETERMINISTIC)
382
+ /*
383
+ * Deterministic signature wrapper
384
+ *
385
+ * note: The f_rng_blind parameter must not be NULL.
386
+ *
387
+ */
388
+ int mbedtls_ecdsa_sign_det_restartable(mbedtls_ecp_group *grp,
389
+ mbedtls_mpi *r, mbedtls_mpi *s,
390
+ const mbedtls_mpi *d, const unsigned char *buf, size_t blen,
391
+ mbedtls_md_type_t md_alg,
392
+ int (*f_rng_blind)(void *, unsigned char *, size_t),
393
+ void *p_rng_blind,
394
+ mbedtls_ecdsa_restart_ctx *rs_ctx)
395
+ {
396
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
397
+ mbedtls_hmac_drbg_context rng_ctx;
398
+ mbedtls_hmac_drbg_context *p_rng = &rng_ctx;
399
+ unsigned char data[2 * MBEDTLS_ECP_MAX_BYTES];
400
+ size_t grp_len = (grp->nbits + 7) / 8;
401
+ const mbedtls_md_info_t *md_info;
402
+ mbedtls_mpi h;
403
+
404
+ if ((md_info = mbedtls_md_info_from_type(md_alg)) == NULL) {
405
+ return MBEDTLS_ERR_ECP_BAD_INPUT_DATA;
406
+ }
407
+
408
+ mbedtls_mpi_init(&h);
409
+ mbedtls_hmac_drbg_init(&rng_ctx);
410
+
411
+ ECDSA_RS_ENTER(det);
412
+
413
+ #if defined(MBEDTLS_ECP_RESTARTABLE)
414
+ if (rs_ctx != NULL && rs_ctx->det != NULL) {
415
+ /* redirect to our context */
416
+ p_rng = &rs_ctx->det->rng_ctx;
417
+
418
+ /* jump to current step */
419
+ if (rs_ctx->det->state == ecdsa_det_sign) {
420
+ goto sign;
421
+ }
422
+ }
423
+ #endif /* MBEDTLS_ECP_RESTARTABLE */
424
+
425
+ /* Use private key and message hash (reduced) to initialize HMAC_DRBG */
426
+ MBEDTLS_MPI_CHK(mbedtls_mpi_write_binary(d, data, grp_len));
427
+ MBEDTLS_MPI_CHK(derive_mpi(grp, &h, buf, blen));
428
+ MBEDTLS_MPI_CHK(mbedtls_mpi_write_binary(&h, data + grp_len, grp_len));
429
+ MBEDTLS_MPI_CHK(mbedtls_hmac_drbg_seed_buf(p_rng, md_info, data, 2 * grp_len));
430
+
431
+ #if defined(MBEDTLS_ECP_RESTARTABLE)
432
+ if (rs_ctx != NULL && rs_ctx->det != NULL) {
433
+ rs_ctx->det->state = ecdsa_det_sign;
434
+ }
435
+
436
+ sign:
437
+ #endif
438
+ #if defined(MBEDTLS_ECDSA_SIGN_ALT)
439
+ (void) f_rng_blind;
440
+ (void) p_rng_blind;
441
+ ret = mbedtls_ecdsa_sign(grp, r, s, d, buf, blen,
442
+ mbedtls_hmac_drbg_random, p_rng);
443
+ #else
444
+ ret = mbedtls_ecdsa_sign_restartable(grp, r, s, d, buf, blen,
445
+ mbedtls_hmac_drbg_random, p_rng,
446
+ f_rng_blind, p_rng_blind, rs_ctx);
447
+ #endif /* MBEDTLS_ECDSA_SIGN_ALT */
448
+
449
+ cleanup:
450
+ mbedtls_hmac_drbg_free(&rng_ctx);
451
+ mbedtls_mpi_free(&h);
452
+
453
+ ECDSA_RS_LEAVE(det);
454
+
455
+ return ret;
456
+ }
457
+
458
+ /*
459
+ * Deterministic signature wrapper
460
+ */
461
+ int mbedtls_ecdsa_sign_det_ext(mbedtls_ecp_group *grp, mbedtls_mpi *r,
462
+ mbedtls_mpi *s, const mbedtls_mpi *d,
463
+ const unsigned char *buf, size_t blen,
464
+ mbedtls_md_type_t md_alg,
465
+ int (*f_rng_blind)(void *, unsigned char *,
466
+ size_t),
467
+ void *p_rng_blind)
468
+ {
469
+ return mbedtls_ecdsa_sign_det_restartable(grp, r, s, d, buf, blen, md_alg,
470
+ f_rng_blind, p_rng_blind, NULL);
471
+ }
472
+ #endif /* MBEDTLS_ECDSA_DETERMINISTIC */
473
+
474
+ #if !defined(MBEDTLS_ECDSA_VERIFY_ALT)
475
+ /*
476
+ * Verify ECDSA signature of hashed message (SEC1 4.1.4)
477
+ * Obviously, compared to SEC1 4.1.3, we skip step 2 (hash message)
478
+ */
479
+ int mbedtls_ecdsa_verify_restartable(mbedtls_ecp_group *grp,
480
+ const unsigned char *buf, size_t blen,
481
+ const mbedtls_ecp_point *Q,
482
+ const mbedtls_mpi *r,
483
+ const mbedtls_mpi *s,
484
+ mbedtls_ecdsa_restart_ctx *rs_ctx)
485
+ {
486
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
487
+ mbedtls_mpi e, s_inv, u1, u2;
488
+ mbedtls_ecp_point R;
489
+ mbedtls_mpi *pu1 = &u1, *pu2 = &u2;
490
+
491
+ mbedtls_ecp_point_init(&R);
492
+ mbedtls_mpi_init(&e); mbedtls_mpi_init(&s_inv);
493
+ mbedtls_mpi_init(&u1); mbedtls_mpi_init(&u2);
494
+
495
+ /* Fail cleanly on curves such as Curve25519 that can't be used for ECDSA */
496
+ if (!mbedtls_ecdsa_can_do(grp->id) || grp->N.p == NULL) {
497
+ return MBEDTLS_ERR_ECP_BAD_INPUT_DATA;
498
+ }
499
+
500
+ ECDSA_RS_ENTER(ver);
501
+
502
+ #if defined(MBEDTLS_ECP_RESTARTABLE)
503
+ if (rs_ctx != NULL && rs_ctx->ver != NULL) {
504
+ /* redirect to our context */
505
+ pu1 = &rs_ctx->ver->u1;
506
+ pu2 = &rs_ctx->ver->u2;
507
+
508
+ /* jump to current step */
509
+ if (rs_ctx->ver->state == ecdsa_ver_muladd) {
510
+ goto muladd;
511
+ }
512
+ }
513
+ #endif /* MBEDTLS_ECP_RESTARTABLE */
514
+
515
+ /*
516
+ * Step 1: make sure r and s are in range 1..n-1
517
+ */
518
+ if (mbedtls_mpi_cmp_int(r, 1) < 0 || mbedtls_mpi_cmp_mpi(r, &grp->N) >= 0 ||
519
+ mbedtls_mpi_cmp_int(s, 1) < 0 || mbedtls_mpi_cmp_mpi(s, &grp->N) >= 0) {
520
+ ret = MBEDTLS_ERR_ECP_VERIFY_FAILED;
521
+ goto cleanup;
522
+ }
523
+
524
+ /*
525
+ * Step 3: derive MPI from hashed message
526
+ */
527
+ MBEDTLS_MPI_CHK(derive_mpi(grp, &e, buf, blen));
528
+
529
+ /*
530
+ * Step 4: u1 = e / s mod n, u2 = r / s mod n
531
+ */
532
+ ECDSA_BUDGET(MBEDTLS_ECP_OPS_CHK + MBEDTLS_ECP_OPS_INV + 2);
533
+
534
+ MBEDTLS_MPI_CHK(mbedtls_mpi_gcd_modinv_odd(NULL, &s_inv, s, &grp->N));
535
+
536
+ MBEDTLS_MPI_CHK(mbedtls_mpi_mul_mpi(pu1, &e, &s_inv));
537
+ MBEDTLS_MPI_CHK(mbedtls_mpi_mod_mpi(pu1, pu1, &grp->N));
538
+
539
+ MBEDTLS_MPI_CHK(mbedtls_mpi_mul_mpi(pu2, r, &s_inv));
540
+ MBEDTLS_MPI_CHK(mbedtls_mpi_mod_mpi(pu2, pu2, &grp->N));
541
+
542
+ #if defined(MBEDTLS_ECP_RESTARTABLE)
543
+ if (rs_ctx != NULL && rs_ctx->ver != NULL) {
544
+ rs_ctx->ver->state = ecdsa_ver_muladd;
545
+ }
546
+
547
+ muladd:
548
+ #endif
549
+ /*
550
+ * Step 5: R = u1 G + u2 Q
551
+ */
552
+ MBEDTLS_MPI_CHK(mbedtls_ecp_muladd_restartable(grp,
553
+ &R, pu1, &grp->G, pu2, Q, ECDSA_RS_ECP));
554
+
555
+ if (mbedtls_ecp_is_zero(&R)) {
556
+ ret = MBEDTLS_ERR_ECP_VERIFY_FAILED;
557
+ goto cleanup;
558
+ }
559
+
560
+ /*
561
+ * Step 6: convert xR to an integer (no-op)
562
+ * Step 7: reduce xR mod n (gives v)
563
+ */
564
+ MBEDTLS_MPI_CHK(mbedtls_mpi_mod_mpi(&R.X, &R.X, &grp->N));
565
+
566
+ /*
567
+ * Step 8: check if v (that is, R.X) is equal to r
568
+ */
569
+ if (mbedtls_mpi_cmp_mpi(&R.X, r) != 0) {
570
+ ret = MBEDTLS_ERR_ECP_VERIFY_FAILED;
571
+ goto cleanup;
572
+ }
573
+
574
+ cleanup:
575
+ mbedtls_ecp_point_free(&R);
576
+ mbedtls_mpi_free(&e); mbedtls_mpi_free(&s_inv);
577
+ mbedtls_mpi_free(&u1); mbedtls_mpi_free(&u2);
578
+
579
+ ECDSA_RS_LEAVE(ver);
580
+
581
+ return ret;
582
+ }
583
+
584
+ /*
585
+ * Verify ECDSA signature of hashed message
586
+ */
587
+ int mbedtls_ecdsa_verify(mbedtls_ecp_group *grp,
588
+ const unsigned char *buf, size_t blen,
589
+ const mbedtls_ecp_point *Q,
590
+ const mbedtls_mpi *r,
591
+ const mbedtls_mpi *s)
592
+ {
593
+ return mbedtls_ecdsa_verify_restartable(grp, buf, blen, Q, r, s, NULL);
594
+ }
595
+ #endif /* !MBEDTLS_ECDSA_VERIFY_ALT */
596
+
597
+ /*
598
+ * Convert a signature (given by context) to ASN.1
599
+ */
600
+ static int ecdsa_signature_to_asn1(const mbedtls_mpi *r, const mbedtls_mpi *s,
601
+ unsigned char *sig, size_t sig_size,
602
+ size_t *slen)
603
+ {
604
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
605
+ unsigned char buf[MBEDTLS_ECDSA_MAX_LEN] = { 0 };
606
+ unsigned char *p = buf + sizeof(buf);
607
+ size_t len = 0;
608
+
609
+ MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_mpi(&p, buf, s));
610
+ MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_mpi(&p, buf, r));
611
+
612
+ MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_len(&p, buf, len));
613
+ MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_tag(&p, buf,
614
+ MBEDTLS_ASN1_CONSTRUCTED |
615
+ MBEDTLS_ASN1_SEQUENCE));
616
+
617
+ if (len > sig_size) {
618
+ return MBEDTLS_ERR_ECP_BUFFER_TOO_SMALL;
619
+ }
620
+
621
+ memcpy(sig, p, len);
622
+ *slen = len;
623
+
624
+ return 0;
625
+ }
626
+
627
+ /*
628
+ * Compute and write signature
629
+ */
630
+ int mbedtls_ecdsa_write_signature_restartable(mbedtls_ecdsa_context *ctx,
631
+ mbedtls_md_type_t md_alg,
632
+ const unsigned char *hash, size_t hlen,
633
+ unsigned char *sig, size_t sig_size, size_t *slen,
634
+ int (*f_rng)(void *, unsigned char *, size_t),
635
+ void *p_rng,
636
+ mbedtls_ecdsa_restart_ctx *rs_ctx)
637
+ {
638
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
639
+ mbedtls_mpi r, s;
640
+ if (f_rng == NULL) {
641
+ return MBEDTLS_ERR_ECP_BAD_INPUT_DATA;
642
+ }
643
+
644
+ mbedtls_mpi_init(&r);
645
+ mbedtls_mpi_init(&s);
646
+
647
+ #if defined(MBEDTLS_ECDSA_DETERMINISTIC)
648
+ MBEDTLS_MPI_CHK(mbedtls_ecdsa_sign_det_restartable(&ctx->grp, &r, &s, &ctx->d,
649
+ hash, hlen, md_alg, f_rng,
650
+ p_rng, rs_ctx));
651
+ #else
652
+ (void) md_alg;
653
+
654
+ #if defined(MBEDTLS_ECDSA_SIGN_ALT)
655
+ (void) rs_ctx;
656
+
657
+ MBEDTLS_MPI_CHK(mbedtls_ecdsa_sign(&ctx->grp, &r, &s, &ctx->d,
658
+ hash, hlen, f_rng, p_rng));
659
+ #else
660
+ /* Use the same RNG for both blinding and ephemeral key generation */
661
+ MBEDTLS_MPI_CHK(mbedtls_ecdsa_sign_restartable(&ctx->grp, &r, &s, &ctx->d,
662
+ hash, hlen, f_rng, p_rng, f_rng,
663
+ p_rng, rs_ctx));
664
+ #endif /* MBEDTLS_ECDSA_SIGN_ALT */
665
+ #endif /* MBEDTLS_ECDSA_DETERMINISTIC */
666
+
667
+ MBEDTLS_MPI_CHK(ecdsa_signature_to_asn1(&r, &s, sig, sig_size, slen));
668
+
669
+ cleanup:
670
+ mbedtls_mpi_free(&r);
671
+ mbedtls_mpi_free(&s);
672
+
673
+ return ret;
674
+ }
675
+
676
+ /*
677
+ * Compute and write signature
678
+ */
679
+ int mbedtls_ecdsa_write_signature(mbedtls_ecdsa_context *ctx,
680
+ mbedtls_md_type_t md_alg,
681
+ const unsigned char *hash, size_t hlen,
682
+ unsigned char *sig, size_t sig_size, size_t *slen,
683
+ int (*f_rng)(void *, unsigned char *, size_t),
684
+ void *p_rng)
685
+ {
686
+ return mbedtls_ecdsa_write_signature_restartable(
687
+ ctx, md_alg, hash, hlen, sig, sig_size, slen,
688
+ f_rng, p_rng, NULL);
689
+ }
690
+
691
+ /*
692
+ * Read and check signature
693
+ */
694
+ int mbedtls_ecdsa_read_signature(mbedtls_ecdsa_context *ctx,
695
+ const unsigned char *hash, size_t hlen,
696
+ const unsigned char *sig, size_t slen)
697
+ {
698
+ return mbedtls_ecdsa_read_signature_restartable(
699
+ ctx, hash, hlen, sig, slen, NULL);
700
+ }
701
+
702
+ /*
703
+ * Restartable read and check signature
704
+ */
705
+ int mbedtls_ecdsa_read_signature_restartable(mbedtls_ecdsa_context *ctx,
706
+ const unsigned char *hash, size_t hlen,
707
+ const unsigned char *sig, size_t slen,
708
+ mbedtls_ecdsa_restart_ctx *rs_ctx)
709
+ {
710
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
711
+ unsigned char *p = (unsigned char *) sig;
712
+ const unsigned char *end = sig + slen;
713
+ size_t len;
714
+ mbedtls_mpi r, s;
715
+ mbedtls_mpi_init(&r);
716
+ mbedtls_mpi_init(&s);
717
+
718
+ if ((ret = mbedtls_asn1_get_tag(&p, end, &len,
719
+ MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_SEQUENCE)) != 0) {
720
+ ret += MBEDTLS_ERR_ECP_BAD_INPUT_DATA;
721
+ goto cleanup;
722
+ }
723
+
724
+ if (p + len != end) {
725
+ ret = MBEDTLS_ERROR_ADD(MBEDTLS_ERR_ECP_BAD_INPUT_DATA,
726
+ MBEDTLS_ERR_ASN1_LENGTH_MISMATCH);
727
+ goto cleanup;
728
+ }
729
+
730
+ if ((ret = mbedtls_asn1_get_mpi(&p, end, &r)) != 0 ||
731
+ (ret = mbedtls_asn1_get_mpi(&p, end, &s)) != 0) {
732
+ ret += MBEDTLS_ERR_ECP_BAD_INPUT_DATA;
733
+ goto cleanup;
734
+ }
735
+ #if defined(MBEDTLS_ECDSA_VERIFY_ALT)
736
+ (void) rs_ctx;
737
+
738
+ if ((ret = mbedtls_ecdsa_verify(&ctx->grp, hash, hlen,
739
+ &ctx->Q, &r, &s)) != 0) {
740
+ goto cleanup;
741
+ }
742
+ #else
743
+ if ((ret = mbedtls_ecdsa_verify_restartable(&ctx->grp, hash, hlen,
744
+ &ctx->Q, &r, &s, rs_ctx)) != 0) {
745
+ goto cleanup;
746
+ }
747
+ #endif /* MBEDTLS_ECDSA_VERIFY_ALT */
748
+
749
+ /* At this point we know that the buffer starts with a valid signature.
750
+ * Return 0 if the buffer just contains the signature, and a specific
751
+ * error code if the valid signature is followed by more data. */
752
+ if (p != end) {
753
+ ret = MBEDTLS_ERR_ECP_SIG_LEN_MISMATCH;
754
+ }
755
+
756
+ cleanup:
757
+ mbedtls_mpi_free(&r);
758
+ mbedtls_mpi_free(&s);
759
+
760
+ return ret;
761
+ }
762
+
763
+ #if !defined(MBEDTLS_ECDSA_GENKEY_ALT)
764
+ /*
765
+ * Generate key pair
766
+ */
767
+ int mbedtls_ecdsa_genkey(mbedtls_ecdsa_context *ctx, mbedtls_ecp_group_id gid,
768
+ int (*f_rng)(void *, unsigned char *, size_t), void *p_rng)
769
+ {
770
+ int ret = 0;
771
+ ret = mbedtls_ecp_group_load(&ctx->grp, gid);
772
+ if (ret != 0) {
773
+ return ret;
774
+ }
775
+
776
+ return mbedtls_ecp_gen_keypair(&ctx->grp, &ctx->d,
777
+ &ctx->Q, f_rng, p_rng);
778
+ }
779
+ #endif /* !MBEDTLS_ECDSA_GENKEY_ALT */
780
+
781
+ /*
782
+ * Set context from an mbedtls_ecp_keypair
783
+ */
784
+ int mbedtls_ecdsa_from_keypair(mbedtls_ecdsa_context *ctx, const mbedtls_ecp_keypair *key)
785
+ {
786
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
787
+ if ((ret = mbedtls_ecp_group_copy(&ctx->grp, &key->grp)) != 0 ||
788
+ (ret = mbedtls_mpi_copy(&ctx->d, &key->d)) != 0 ||
789
+ (ret = mbedtls_ecp_copy(&ctx->Q, &key->Q)) != 0) {
790
+ mbedtls_ecdsa_free(ctx);
791
+ }
792
+
793
+ return ret;
794
+ }
795
+
796
+ /*
797
+ * Initialize context
798
+ */
799
+ void mbedtls_ecdsa_init(mbedtls_ecdsa_context *ctx)
800
+ {
801
+ mbedtls_ecp_keypair_init(ctx);
802
+ }
803
+
804
+ /*
805
+ * Free context
806
+ */
807
+ void mbedtls_ecdsa_free(mbedtls_ecdsa_context *ctx)
808
+ {
809
+ if (ctx == NULL) {
810
+ return;
811
+ }
812
+
813
+ mbedtls_ecp_keypair_free(ctx);
814
+ }
815
+
816
+ #if defined(MBEDTLS_ECP_RESTARTABLE)
817
+ /*
818
+ * Initialize a restart context
819
+ */
820
+ void mbedtls_ecdsa_restart_init(mbedtls_ecdsa_restart_ctx *ctx)
821
+ {
822
+ mbedtls_ecp_restart_init(&ctx->ecp);
823
+
824
+ ctx->ver = NULL;
825
+ ctx->sig = NULL;
826
+ #if defined(MBEDTLS_ECDSA_DETERMINISTIC)
827
+ ctx->det = NULL;
828
+ #endif
829
+ }
830
+
831
+ /*
832
+ * Free the components of a restart context
833
+ */
834
+ void mbedtls_ecdsa_restart_free(mbedtls_ecdsa_restart_ctx *ctx)
835
+ {
836
+ if (ctx == NULL) {
837
+ return;
838
+ }
839
+
840
+ mbedtls_ecp_restart_free(&ctx->ecp);
841
+
842
+ ecdsa_restart_ver_free(ctx->ver);
843
+ mbedtls_free(ctx->ver);
844
+ ctx->ver = NULL;
845
+
846
+ ecdsa_restart_sig_free(ctx->sig);
847
+ mbedtls_free(ctx->sig);
848
+ ctx->sig = NULL;
849
+
850
+ #if defined(MBEDTLS_ECDSA_DETERMINISTIC)
851
+ ecdsa_restart_det_free(ctx->det);
852
+ mbedtls_free(ctx->det);
853
+ ctx->det = NULL;
854
+ #endif
855
+ }
856
+ #endif /* MBEDTLS_ECP_RESTARTABLE */
857
+
858
+ #endif /* MBEDTLS_ECDSA_C */