@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,261 @@
1
+ /*
2
+ * ECC setters for PK.
3
+ *
4
+ * Copyright The Mbed TLS Contributors
5
+ * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
6
+ */
7
+
8
+ #include "common.h"
9
+
10
+ #include "mbedtls/pk.h"
11
+ #include "mbedtls/error.h"
12
+ #include "mbedtls/ecp.h"
13
+ #include "pk_internal.h"
14
+
15
+ #if defined(MBEDTLS_PK_C) && defined(MBEDTLS_PK_HAVE_ECC_KEYS)
16
+
17
+ int mbedtls_pk_ecc_set_group(mbedtls_pk_context *pk, mbedtls_ecp_group_id grp_id)
18
+ {
19
+ #if defined(MBEDTLS_PK_USE_PSA_EC_DATA)
20
+ size_t ec_bits;
21
+ psa_ecc_family_t ec_family = mbedtls_ecc_group_to_psa(grp_id, &ec_bits);
22
+
23
+ /* group may already be initialized; if so, make sure IDs match */
24
+ if ((pk->ec_family != 0 && pk->ec_family != ec_family) ||
25
+ (pk->ec_bits != 0 && pk->ec_bits != ec_bits)) {
26
+ return MBEDTLS_ERR_PK_KEY_INVALID_FORMAT;
27
+ }
28
+
29
+ /* set group */
30
+ pk->ec_family = ec_family;
31
+ pk->ec_bits = ec_bits;
32
+
33
+ return 0;
34
+ #else /* MBEDTLS_PK_USE_PSA_EC_DATA */
35
+ mbedtls_ecp_keypair *ecp = mbedtls_pk_ec_rw(*pk);
36
+
37
+ /* grp may already be initialized; if so, make sure IDs match */
38
+ if (mbedtls_pk_ec_ro(*pk)->grp.id != MBEDTLS_ECP_DP_NONE &&
39
+ mbedtls_pk_ec_ro(*pk)->grp.id != grp_id) {
40
+ return MBEDTLS_ERR_PK_KEY_INVALID_FORMAT;
41
+ }
42
+
43
+ /* set group */
44
+ return mbedtls_ecp_group_load(&(ecp->grp), grp_id);
45
+ #endif /* MBEDTLS_PK_USE_PSA_EC_DATA */
46
+ }
47
+
48
+ int mbedtls_pk_ecc_set_key(mbedtls_pk_context *pk, unsigned char *key, size_t key_len)
49
+ {
50
+ #if defined(MBEDTLS_PK_USE_PSA_EC_DATA)
51
+ psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
52
+ psa_key_usage_t flags;
53
+ psa_status_t status;
54
+
55
+ psa_set_key_type(&attributes, PSA_KEY_TYPE_ECC_KEY_PAIR(pk->ec_family));
56
+ if (pk->ec_family == PSA_ECC_FAMILY_MONTGOMERY) {
57
+ /* Do not set algorithm here because Montgomery keys cannot do ECDSA and
58
+ * the PK module cannot do ECDH. When the key will be used in TLS for
59
+ * ECDH, it will be exported and then re-imported with proper flags
60
+ * and algorithm. */
61
+ flags = PSA_KEY_USAGE_EXPORT;
62
+ } else {
63
+ psa_set_key_algorithm(&attributes,
64
+ MBEDTLS_PK_PSA_ALG_ECDSA_MAYBE_DET(PSA_ALG_ANY_HASH));
65
+ flags = PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE |
66
+ PSA_KEY_USAGE_EXPORT;
67
+ }
68
+ psa_set_key_usage_flags(&attributes, flags);
69
+
70
+ status = psa_import_key(&attributes, key, key_len, &pk->priv_id);
71
+ return psa_pk_status_to_mbedtls(status);
72
+
73
+ #else /* MBEDTLS_PK_USE_PSA_EC_DATA */
74
+
75
+ mbedtls_ecp_keypair *eck = mbedtls_pk_ec_rw(*pk);
76
+ int ret = mbedtls_ecp_read_key(eck->grp.id, eck, key, key_len);
77
+ if (ret != 0) {
78
+ return MBEDTLS_ERROR_ADD(MBEDTLS_ERR_PK_KEY_INVALID_FORMAT, ret);
79
+ }
80
+ return 0;
81
+ #endif /* MBEDTLS_PK_USE_PSA_EC_DATA */
82
+ }
83
+
84
+ int mbedtls_pk_ecc_set_pubkey_from_prv(mbedtls_pk_context *pk,
85
+ const unsigned char *prv, size_t prv_len,
86
+ int (*f_rng)(void *, unsigned char *, size_t), void *p_rng)
87
+ {
88
+ #if defined(MBEDTLS_PK_USE_PSA_EC_DATA)
89
+
90
+ (void) f_rng;
91
+ (void) p_rng;
92
+ (void) prv;
93
+ (void) prv_len;
94
+ psa_status_t status;
95
+
96
+ status = psa_export_public_key(pk->priv_id, pk->pub_raw, sizeof(pk->pub_raw),
97
+ &pk->pub_raw_len);
98
+ return psa_pk_status_to_mbedtls(status);
99
+
100
+ #elif defined(MBEDTLS_USE_PSA_CRYPTO) /* && !MBEDTLS_PK_USE_PSA_EC_DATA */
101
+
102
+ (void) f_rng;
103
+ (void) p_rng;
104
+ psa_status_t status;
105
+
106
+ mbedtls_ecp_keypair *eck = (mbedtls_ecp_keypair *) pk->pk_ctx;
107
+ size_t curve_bits;
108
+ psa_ecc_family_t curve = mbedtls_ecc_group_to_psa(eck->grp.id, &curve_bits);
109
+
110
+ /* Import private key into PSA, from serialized input */
111
+ mbedtls_svc_key_id_t key_id = MBEDTLS_SVC_KEY_ID_INIT;
112
+ psa_key_attributes_t key_attr = PSA_KEY_ATTRIBUTES_INIT;
113
+ psa_set_key_type(&key_attr, PSA_KEY_TYPE_ECC_KEY_PAIR(curve));
114
+ psa_set_key_usage_flags(&key_attr, PSA_KEY_USAGE_EXPORT);
115
+ status = psa_import_key(&key_attr, prv, prv_len, &key_id);
116
+ if (status != PSA_SUCCESS) {
117
+ return psa_pk_status_to_mbedtls(status);
118
+ }
119
+
120
+ /* Export public key from PSA */
121
+ unsigned char pub[MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH];
122
+ size_t pub_len;
123
+ status = psa_export_public_key(key_id, pub, sizeof(pub), &pub_len);
124
+ psa_status_t destruction_status = psa_destroy_key(key_id);
125
+ if (status != PSA_SUCCESS) {
126
+ return psa_pk_status_to_mbedtls(status);
127
+ } else if (destruction_status != PSA_SUCCESS) {
128
+ return psa_pk_status_to_mbedtls(destruction_status);
129
+ }
130
+
131
+ /* Load serialized public key into ecp_keypair structure */
132
+ return mbedtls_ecp_point_read_binary(&eck->grp, &eck->Q, pub, pub_len);
133
+
134
+ #else /* MBEDTLS_USE_PSA_CRYPTO */
135
+
136
+ (void) prv;
137
+ (void) prv_len;
138
+
139
+ mbedtls_ecp_keypair *eck = (mbedtls_ecp_keypair *) pk->pk_ctx;
140
+ return mbedtls_ecp_mul(&eck->grp, &eck->Q, &eck->d, &eck->grp.G, f_rng, p_rng);
141
+
142
+ #endif /* MBEDTLS_USE_PSA_CRYPTO */
143
+ }
144
+
145
+ #if defined(MBEDTLS_PK_USE_PSA_EC_DATA)
146
+ /*
147
+ * Set the public key: fallback using ECP_LIGHT in the USE_PSA_EC_DATA case.
148
+ *
149
+ * Normally, when MBEDTLS_PK_USE_PSA_EC_DATA is enabled, we only use PSA
150
+ * functions to handle keys. However, currently psa_import_key() does not
151
+ * support compressed points. In case that support was explicitly requested,
152
+ * this fallback uses ECP functions to get the job done. This is the reason
153
+ * why MBEDTLS_PK_PARSE_EC_COMPRESSED auto-enables MBEDTLS_ECP_LIGHT.
154
+ *
155
+ * [in/out] pk: in: must have the group set, see mbedtls_pk_ecc_set_group().
156
+ * out: will have the public key set.
157
+ * [in] pub, pub_len: the public key as an ECPoint,
158
+ * in any format supported by ECP.
159
+ *
160
+ * Return:
161
+ * - 0 on success;
162
+ * - MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE if the format is potentially valid
163
+ * but not supported;
164
+ * - another error code otherwise.
165
+ */
166
+ static int pk_ecc_set_pubkey_psa_ecp_fallback(mbedtls_pk_context *pk,
167
+ const unsigned char *pub,
168
+ size_t pub_len)
169
+ {
170
+ #if !defined(MBEDTLS_PK_PARSE_EC_COMPRESSED)
171
+ (void) pk;
172
+ (void) pub;
173
+ (void) pub_len;
174
+ return MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE;
175
+ #else /* MBEDTLS_PK_PARSE_EC_COMPRESSED */
176
+ mbedtls_ecp_keypair ecp_key;
177
+ mbedtls_ecp_group_id ecp_group_id;
178
+ int ret;
179
+
180
+ ecp_group_id = mbedtls_ecc_group_from_psa(pk->ec_family, pk->ec_bits);
181
+
182
+ mbedtls_ecp_keypair_init(&ecp_key);
183
+ ret = mbedtls_ecp_group_load(&(ecp_key.grp), ecp_group_id);
184
+ if (ret != 0) {
185
+ goto exit;
186
+ }
187
+ ret = mbedtls_ecp_point_read_binary(&(ecp_key.grp), &ecp_key.Q,
188
+ pub, pub_len);
189
+ if (ret != 0) {
190
+ goto exit;
191
+ }
192
+ ret = mbedtls_ecp_point_write_binary(&(ecp_key.grp), &ecp_key.Q,
193
+ MBEDTLS_ECP_PF_UNCOMPRESSED,
194
+ &pk->pub_raw_len, pk->pub_raw,
195
+ sizeof(pk->pub_raw));
196
+
197
+ exit:
198
+ mbedtls_ecp_keypair_free(&ecp_key);
199
+ return ret;
200
+ #endif /* MBEDTLS_PK_PARSE_EC_COMPRESSED */
201
+ }
202
+ #endif /* MBEDTLS_PK_USE_PSA_EC_DATA */
203
+
204
+ int mbedtls_pk_ecc_set_pubkey(mbedtls_pk_context *pk, const unsigned char *pub, size_t pub_len)
205
+ {
206
+ #if defined(MBEDTLS_PK_USE_PSA_EC_DATA)
207
+
208
+ /* We need to read the first byte to determine the format (compressed,
209
+ * uncompressed or 0). */
210
+ if (pub_len == 0) {
211
+ return MBEDTLS_ERR_PK_INVALID_PUBKEY;
212
+ }
213
+
214
+ /* Load the key */
215
+ if (!PSA_ECC_FAMILY_IS_WEIERSTRASS(pk->ec_family) || *pub == 0x04) {
216
+ /* Format directly supported by PSA:
217
+ * - non-Weierstrass curves that only have one format;
218
+ * - uncompressed format for Weierstrass curves. */
219
+ if (pub_len > sizeof(pk->pub_raw)) {
220
+ return MBEDTLS_ERR_PK_INVALID_PUBKEY;
221
+ }
222
+ memcpy(pk->pub_raw, pub, pub_len);
223
+ pk->pub_raw_len = pub_len;
224
+ } else {
225
+ /* Other format, try the fallback */
226
+ int ret = pk_ecc_set_pubkey_psa_ecp_fallback(pk, pub, pub_len);
227
+ if (ret != 0) {
228
+ return ret;
229
+ }
230
+ }
231
+
232
+ /* Validate the key by trying to import it */
233
+ mbedtls_svc_key_id_t key_id = MBEDTLS_SVC_KEY_ID_INIT;
234
+ psa_key_attributes_t key_attrs = PSA_KEY_ATTRIBUTES_INIT;
235
+
236
+ psa_set_key_usage_flags(&key_attrs, 0);
237
+ psa_set_key_type(&key_attrs, PSA_KEY_TYPE_ECC_PUBLIC_KEY(pk->ec_family));
238
+ psa_set_key_bits(&key_attrs, pk->ec_bits);
239
+
240
+ if ((psa_import_key(&key_attrs, pk->pub_raw, pk->pub_raw_len,
241
+ &key_id) != PSA_SUCCESS) ||
242
+ (psa_destroy_key(key_id) != PSA_SUCCESS)) {
243
+ return MBEDTLS_ERR_PK_INVALID_PUBKEY;
244
+ }
245
+
246
+ return 0;
247
+
248
+ #else /* MBEDTLS_PK_USE_PSA_EC_DATA */
249
+
250
+ int ret;
251
+ mbedtls_ecp_keypair *ec_key = (mbedtls_ecp_keypair *) pk->pk_ctx;
252
+ ret = mbedtls_ecp_point_read_binary(&ec_key->grp, &ec_key->Q, pub, pub_len);
253
+ if (ret != 0) {
254
+ return ret;
255
+ }
256
+ return mbedtls_ecp_check_pubkey(&ec_key->grp, &ec_key->Q);
257
+
258
+ #endif /* MBEDTLS_PK_USE_PSA_EC_DATA */
259
+ }
260
+
261
+ #endif /* MBEDTLS_PK_C && MBEDTLS_PK_HAVE_ECC_KEYS */
@@ -0,0 +1,241 @@
1
+ /**
2
+ * \file pk_internal.h
3
+ *
4
+ * \brief Public Key abstraction layer: internal (i.e. library only) functions
5
+ * and definitions.
6
+ */
7
+ /*
8
+ * Copyright The Mbed TLS Contributors
9
+ * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
10
+ */
11
+ #ifndef MBEDTLS_PK_INTERNAL_H
12
+ #define MBEDTLS_PK_INTERNAL_H
13
+
14
+ #include "mbedtls/pk.h"
15
+
16
+ #if defined(MBEDTLS_PK_HAVE_ECC_KEYS)
17
+ #include "mbedtls/ecp.h"
18
+ #endif
19
+
20
+ #if defined(MBEDTLS_PSA_CRYPTO_CLIENT)
21
+ #include "psa/crypto.h"
22
+
23
+ #include "psa_util_internal.h"
24
+ #define PSA_PK_TO_MBEDTLS_ERR(status) psa_pk_status_to_mbedtls(status)
25
+ #define PSA_PK_RSA_TO_MBEDTLS_ERR(status) PSA_TO_MBEDTLS_ERR_LIST(status, \
26
+ psa_to_pk_rsa_errors, \
27
+ psa_pk_status_to_mbedtls)
28
+ #define PSA_PK_ECDSA_TO_MBEDTLS_ERR(status) PSA_TO_MBEDTLS_ERR_LIST(status, \
29
+ psa_to_pk_ecdsa_errors, \
30
+ psa_pk_status_to_mbedtls)
31
+ #endif /* MBEDTLS_PSA_CRYPTO_CLIENT */
32
+
33
+ /* Headers/footers for PEM files */
34
+ #define PEM_BEGIN_PUBLIC_KEY "-----BEGIN PUBLIC KEY-----"
35
+ #define PEM_END_PUBLIC_KEY "-----END PUBLIC KEY-----"
36
+ #define PEM_BEGIN_PRIVATE_KEY_RSA "-----BEGIN RSA PRIVATE KEY-----"
37
+ #define PEM_END_PRIVATE_KEY_RSA "-----END RSA PRIVATE KEY-----"
38
+ #define PEM_BEGIN_PUBLIC_KEY_RSA "-----BEGIN RSA PUBLIC KEY-----"
39
+ #define PEM_END_PUBLIC_KEY_RSA "-----END RSA PUBLIC KEY-----"
40
+ #define PEM_BEGIN_PRIVATE_KEY_EC "-----BEGIN EC PRIVATE KEY-----"
41
+ #define PEM_END_PRIVATE_KEY_EC "-----END EC PRIVATE KEY-----"
42
+ #define PEM_BEGIN_PRIVATE_KEY_PKCS8 "-----BEGIN PRIVATE KEY-----"
43
+ #define PEM_END_PRIVATE_KEY_PKCS8 "-----END PRIVATE KEY-----"
44
+ #define PEM_BEGIN_ENCRYPTED_PRIVATE_KEY_PKCS8 "-----BEGIN ENCRYPTED PRIVATE KEY-----"
45
+ #define PEM_END_ENCRYPTED_PRIVATE_KEY_PKCS8 "-----END ENCRYPTED PRIVATE KEY-----"
46
+
47
+ /*
48
+ * We're trying to statisfy two kinds of users:
49
+ * - those who don't want to use the heap;
50
+ * - those who can't afford large stack buffers.
51
+ *
52
+ * The current compromise is that if ECC is the only key type supported in PK,
53
+ * then we export keys on the stack, and otherwise we use the heap.
54
+ *
55
+ * RSA can either be used directly or indirectly via opaque keys if enabled.
56
+ * (RSA_ALT is not relevant here as we can't export from such contexts.)
57
+ */
58
+ #if !defined(MBEDTLS_RSA_C) && \
59
+ !(defined(MBEDTLS_USE_PSA_CRYPTO) && defined(PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY))
60
+ #define PK_EXPORT_KEYS_ON_THE_STACK
61
+ #endif
62
+
63
+ #if defined(PK_EXPORT_KEYS_ON_THE_STACK)
64
+ /* We know for ECC, pubkey are longer than privkeys, but double check.
65
+ * Also, take the maximum size of legacy and PSA, as PSA might be disabled. */
66
+ #define PK_EXPORT_KEY_STACK_BUFFER_SIZE MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH
67
+ #if PK_EXPORT_KEY_STACK_BUFFER_SIZE < MBEDTLS_PSA_MAX_EC_KEY_PAIR_LENGTH
68
+ #undef PK_EXPORT_KEY_STACK_BUFFER_SIZE
69
+ #define PK_EXPORT_KEY_STACK_BUFFER_SIZE MBEDTLS_PSA_MAX_EC_KEY_PAIR_LENGTH
70
+ #endif
71
+ #if PK_EXPORT_KEY_STACK_BUFFER_SIZE < MBEDTLS_ECP_MAX_BYTES
72
+ #undef PK_EXPORT_KEY_STACK_BUFFER_SIZE
73
+ #define PK_EXPORT_KEY_STACK_BUFFER_SIZE MBEDTLS_ECP_MAX_BYTES
74
+ #endif
75
+ #if PK_EXPORT_KEY_STACK_BUFFER_SIZE < MBEDTLS_ECP_MAX_PT_LEN
76
+ #undef PK_EXPORT_KEY_STACK_BUFFER_SIZE
77
+ #define PK_EXPORT_KEY_STACK_BUFFER_SIZE MBEDTLS_ECP_MAX_PT_LEN
78
+ #endif
79
+ #endif
80
+
81
+ #if defined(MBEDTLS_PK_HAVE_ECC_KEYS) && !defined(MBEDTLS_PK_USE_PSA_EC_DATA)
82
+ /**
83
+ * Public function mbedtls_pk_ec() can be used to get direct access to the
84
+ * wrapped ecp_keypair structure pointed to the pk_ctx. However this is not
85
+ * ideal because it bypasses the PK module on the control of its internal
86
+ * structure (pk_context) fields.
87
+ * For backward compatibility we keep mbedtls_pk_ec() when ECP_C is defined, but
88
+ * we provide 2 very similar functions when only ECP_LIGHT is enabled and not
89
+ * ECP_C.
90
+ * These variants embed the "ro" or "rw" keywords in their name to make the
91
+ * usage of the returned pointer explicit. Of course the returned value is
92
+ * const or non-const accordingly.
93
+ */
94
+ static inline const mbedtls_ecp_keypair *mbedtls_pk_ec_ro(const mbedtls_pk_context pk)
95
+ {
96
+ switch (mbedtls_pk_get_type(&pk)) {
97
+ case MBEDTLS_PK_ECKEY:
98
+ case MBEDTLS_PK_ECKEY_DH:
99
+ case MBEDTLS_PK_ECDSA:
100
+ return (const mbedtls_ecp_keypair *) (pk).MBEDTLS_PRIVATE(pk_ctx);
101
+ default:
102
+ return NULL;
103
+ }
104
+ }
105
+
106
+ static inline mbedtls_ecp_keypair *mbedtls_pk_ec_rw(const mbedtls_pk_context pk)
107
+ {
108
+ switch (mbedtls_pk_get_type(&pk)) {
109
+ case MBEDTLS_PK_ECKEY:
110
+ case MBEDTLS_PK_ECKEY_DH:
111
+ case MBEDTLS_PK_ECDSA:
112
+ return (mbedtls_ecp_keypair *) (pk).MBEDTLS_PRIVATE(pk_ctx);
113
+ default:
114
+ return NULL;
115
+ }
116
+ }
117
+ #endif /* MBEDTLS_PK_HAVE_ECC_KEYS && !MBEDTLS_PK_USE_PSA_EC_DATA */
118
+
119
+ #if defined(MBEDTLS_PK_HAVE_ECC_KEYS)
120
+ static inline mbedtls_ecp_group_id mbedtls_pk_get_ec_group_id(const mbedtls_pk_context *pk)
121
+ {
122
+ mbedtls_ecp_group_id id;
123
+
124
+ #if defined(MBEDTLS_USE_PSA_CRYPTO)
125
+ if (mbedtls_pk_get_type(pk) == MBEDTLS_PK_OPAQUE) {
126
+ psa_key_attributes_t opaque_attrs = PSA_KEY_ATTRIBUTES_INIT;
127
+ psa_key_type_t opaque_key_type;
128
+ psa_ecc_family_t curve;
129
+
130
+ if (psa_get_key_attributes(pk->priv_id, &opaque_attrs) != PSA_SUCCESS) {
131
+ return MBEDTLS_ECP_DP_NONE;
132
+ }
133
+ opaque_key_type = psa_get_key_type(&opaque_attrs);
134
+ curve = PSA_KEY_TYPE_ECC_GET_FAMILY(opaque_key_type);
135
+ id = mbedtls_ecc_group_from_psa(curve, psa_get_key_bits(&opaque_attrs));
136
+ psa_reset_key_attributes(&opaque_attrs);
137
+ } else
138
+ #endif /* MBEDTLS_USE_PSA_CRYPTO */
139
+ {
140
+ #if defined(MBEDTLS_PK_USE_PSA_EC_DATA)
141
+ id = mbedtls_ecc_group_from_psa(pk->ec_family, pk->ec_bits);
142
+ #else /* MBEDTLS_PK_USE_PSA_EC_DATA */
143
+ id = mbedtls_pk_ec_ro(*pk)->grp.id;
144
+ #endif /* MBEDTLS_PK_USE_PSA_EC_DATA */
145
+ }
146
+
147
+ return id;
148
+ }
149
+
150
+ /* Helper for Montgomery curves */
151
+ #if defined(MBEDTLS_ECP_HAVE_CURVE25519) || defined(MBEDTLS_ECP_HAVE_CURVE448)
152
+ #define MBEDTLS_PK_HAVE_RFC8410_CURVES
153
+ #endif /* MBEDTLS_ECP_HAVE_CURVE25519 || MBEDTLS_ECP_DP_CURVE448 */
154
+
155
+ #define MBEDTLS_PK_IS_RFC8410_GROUP_ID(id) \
156
+ ((id == MBEDTLS_ECP_DP_CURVE25519) || (id == MBEDTLS_ECP_DP_CURVE448))
157
+
158
+ static inline int mbedtls_pk_is_rfc8410(const mbedtls_pk_context *pk)
159
+ {
160
+ mbedtls_ecp_group_id id = mbedtls_pk_get_ec_group_id(pk);
161
+
162
+ return MBEDTLS_PK_IS_RFC8410_GROUP_ID(id);
163
+ }
164
+
165
+ /*
166
+ * Set the group used by this key.
167
+ *
168
+ * [in/out] pk: in: must have been pk_setup() to an ECC type
169
+ * out: will have group (curve) information set
170
+ * [in] grp_in: a supported group ID (not NONE)
171
+ */
172
+ int mbedtls_pk_ecc_set_group(mbedtls_pk_context *pk, mbedtls_ecp_group_id grp_id);
173
+
174
+ /*
175
+ * Set the private key material
176
+ *
177
+ * [in/out] pk: in: must have the group set already, see mbedtls_pk_ecc_set_group().
178
+ * out: will have the private key set.
179
+ * [in] key, key_len: the raw private key (no ASN.1 wrapping).
180
+ */
181
+ int mbedtls_pk_ecc_set_key(mbedtls_pk_context *pk, unsigned char *key, size_t key_len);
182
+
183
+ /*
184
+ * Set the public key.
185
+ *
186
+ * [in/out] pk: in: must have its group set, see mbedtls_pk_ecc_set_group().
187
+ * out: will have the public key set.
188
+ * [in] pub, pub_len: the raw public key (an ECPoint).
189
+ *
190
+ * Return:
191
+ * - 0 on success;
192
+ * - MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE if the format is potentially valid
193
+ * but not supported;
194
+ * - another error code otherwise.
195
+ */
196
+ int mbedtls_pk_ecc_set_pubkey(mbedtls_pk_context *pk, const unsigned char *pub, size_t pub_len);
197
+
198
+ /*
199
+ * Derive a public key from its private counterpart.
200
+ * Computationally intensive, only use when public key is not available.
201
+ *
202
+ * [in/out] pk: in: must have the private key set, see mbedtls_pk_ecc_set_key().
203
+ * out: will have the public key set.
204
+ * [in] prv, prv_len: the raw private key (see note below).
205
+ * [in] f_rng, p_rng: RNG function and context.
206
+ *
207
+ * Note: the private key information is always available from pk,
208
+ * however for convenience the serialized version is also passed,
209
+ * as it's available at each calling site, and useful in some configs
210
+ * (as otherwise we would have to re-serialize it from the pk context).
211
+ *
212
+ * There are three implementations of this function:
213
+ * 1. MBEDTLS_PK_USE_PSA_EC_DATA,
214
+ * 2. MBEDTLS_USE_PSA_CRYPTO but not MBEDTLS_PK_USE_PSA_EC_DATA,
215
+ * 3. not MBEDTLS_USE_PSA_CRYPTO.
216
+ */
217
+ int mbedtls_pk_ecc_set_pubkey_from_prv(mbedtls_pk_context *pk,
218
+ const unsigned char *prv, size_t prv_len,
219
+ int (*f_rng)(void *, unsigned char *, size_t), void *p_rng);
220
+ #endif /* MBEDTLS_PK_HAVE_ECC_KEYS */
221
+
222
+ /* Helper for (deterministic) ECDSA */
223
+ #if defined(MBEDTLS_ECDSA_DETERMINISTIC)
224
+ #define MBEDTLS_PK_PSA_ALG_ECDSA_MAYBE_DET PSA_ALG_DETERMINISTIC_ECDSA
225
+ #else
226
+ #define MBEDTLS_PK_PSA_ALG_ECDSA_MAYBE_DET PSA_ALG_ECDSA
227
+ #endif
228
+
229
+ #if defined(MBEDTLS_TEST_HOOKS)
230
+ MBEDTLS_STATIC_TESTABLE int mbedtls_pk_parse_key_pkcs8_encrypted_der(
231
+ mbedtls_pk_context *pk,
232
+ unsigned char *key, size_t keylen,
233
+ const unsigned char *pwd, size_t pwdlen,
234
+ int (*f_rng)(void *, unsigned char *, size_t), void *p_rng);
235
+ #endif
236
+
237
+ #if defined(MBEDTLS_FS_IO)
238
+ int mbedtls_pk_load_file(const char *path, unsigned char **buf, size_t *n);
239
+ #endif
240
+
241
+ #endif /* MBEDTLS_PK_INTERNAL_H */