@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,614 @@
1
+ /*
2
+ * PSA hashing layer on top of Mbed TLS software crypto
3
+ */
4
+ /*
5
+ * Copyright The Mbed TLS Contributors
6
+ * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
7
+ */
8
+
9
+ #include "common.h"
10
+
11
+ /* This is needed for MBEDTLS_ERR_XXX macros */
12
+ #include <mbedtls/error.h>
13
+
14
+ #if defined(MBEDTLS_ASN1_WRITE_C)
15
+ #include <mbedtls/asn1write.h>
16
+ #include <psa/crypto_sizes.h>
17
+ #endif
18
+
19
+ #include "psa_util_internal.h"
20
+
21
+ #if defined(MBEDTLS_PSA_CRYPTO_CLIENT)
22
+
23
+ #include <psa/crypto.h>
24
+
25
+ #if defined(MBEDTLS_MD_LIGHT)
26
+ #include <mbedtls/md.h>
27
+ #endif
28
+ #if defined(MBEDTLS_LMS_C)
29
+ #include <mbedtls/lms.h>
30
+ #endif
31
+ #if defined(MBEDTLS_SSL_TLS_C) && \
32
+ (defined(MBEDTLS_USE_PSA_CRYPTO) || defined(MBEDTLS_SSL_PROTO_TLS1_3))
33
+ #include <mbedtls/ssl.h>
34
+ #endif
35
+ #if defined(PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY) || \
36
+ defined(PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_BASIC)
37
+ #include <mbedtls/rsa.h>
38
+ #endif
39
+ #if defined(MBEDTLS_USE_PSA_CRYPTO) && \
40
+ defined(PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY)
41
+ #include <mbedtls/ecp.h>
42
+ #endif
43
+ #if defined(MBEDTLS_PK_C)
44
+ #include <mbedtls/pk.h>
45
+ #endif
46
+ #if defined(MBEDTLS_BLOCK_CIPHER_SOME_PSA)
47
+ #include <mbedtls/cipher.h>
48
+ #endif
49
+ #include <mbedtls/entropy.h>
50
+
51
+ /* PSA_SUCCESS is kept at the top of each error table since
52
+ * it's the most common status when everything functions properly. */
53
+ #if defined(MBEDTLS_MD_LIGHT)
54
+ const mbedtls_error_pair_t psa_to_md_errors[] =
55
+ {
56
+ { PSA_SUCCESS, 0 },
57
+ { PSA_ERROR_NOT_SUPPORTED, MBEDTLS_ERR_MD_FEATURE_UNAVAILABLE },
58
+ { PSA_ERROR_INVALID_ARGUMENT, MBEDTLS_ERR_MD_BAD_INPUT_DATA },
59
+ { PSA_ERROR_INSUFFICIENT_MEMORY, MBEDTLS_ERR_MD_ALLOC_FAILED }
60
+ };
61
+ #endif
62
+
63
+ #if defined(MBEDTLS_BLOCK_CIPHER_SOME_PSA)
64
+ const mbedtls_error_pair_t psa_to_cipher_errors[] =
65
+ {
66
+ { PSA_SUCCESS, 0 },
67
+ { PSA_ERROR_NOT_SUPPORTED, MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE },
68
+ { PSA_ERROR_INVALID_ARGUMENT, MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA },
69
+ { PSA_ERROR_INSUFFICIENT_MEMORY, MBEDTLS_ERR_CIPHER_ALLOC_FAILED }
70
+ };
71
+ #endif
72
+
73
+ #if defined(MBEDTLS_LMS_C)
74
+ const mbedtls_error_pair_t psa_to_lms_errors[] =
75
+ {
76
+ { PSA_SUCCESS, 0 },
77
+ { PSA_ERROR_BUFFER_TOO_SMALL, MBEDTLS_ERR_LMS_BUFFER_TOO_SMALL },
78
+ { PSA_ERROR_INVALID_ARGUMENT, MBEDTLS_ERR_LMS_BAD_INPUT_DATA }
79
+ };
80
+ #endif
81
+
82
+ #if defined(MBEDTLS_SSL_TLS_C) && \
83
+ (defined(MBEDTLS_USE_PSA_CRYPTO) || defined(MBEDTLS_SSL_PROTO_TLS1_3))
84
+ const mbedtls_error_pair_t psa_to_ssl_errors[] =
85
+ {
86
+ { PSA_SUCCESS, 0 },
87
+ { PSA_ERROR_INSUFFICIENT_MEMORY, MBEDTLS_ERR_SSL_ALLOC_FAILED },
88
+ { PSA_ERROR_NOT_SUPPORTED, MBEDTLS_ERR_SSL_FEATURE_UNAVAILABLE },
89
+ { PSA_ERROR_INVALID_SIGNATURE, MBEDTLS_ERR_SSL_INVALID_MAC },
90
+ { PSA_ERROR_INVALID_ARGUMENT, MBEDTLS_ERR_SSL_BAD_INPUT_DATA },
91
+ { PSA_ERROR_BAD_STATE, MBEDTLS_ERR_SSL_INTERNAL_ERROR },
92
+ { PSA_ERROR_BUFFER_TOO_SMALL, MBEDTLS_ERR_SSL_BUFFER_TOO_SMALL }
93
+ };
94
+ #endif
95
+
96
+ #if defined(PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY) || \
97
+ defined(PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_BASIC)
98
+ const mbedtls_error_pair_t psa_to_pk_rsa_errors[] =
99
+ {
100
+ { PSA_SUCCESS, 0 },
101
+ { PSA_ERROR_NOT_PERMITTED, MBEDTLS_ERR_RSA_BAD_INPUT_DATA },
102
+ { PSA_ERROR_INVALID_ARGUMENT, MBEDTLS_ERR_RSA_BAD_INPUT_DATA },
103
+ { PSA_ERROR_INVALID_HANDLE, MBEDTLS_ERR_RSA_BAD_INPUT_DATA },
104
+ { PSA_ERROR_BUFFER_TOO_SMALL, MBEDTLS_ERR_RSA_OUTPUT_TOO_LARGE },
105
+ { PSA_ERROR_INSUFFICIENT_ENTROPY, MBEDTLS_ERR_RSA_RNG_FAILED },
106
+ { PSA_ERROR_INVALID_SIGNATURE, MBEDTLS_ERR_RSA_VERIFY_FAILED },
107
+ { PSA_ERROR_INVALID_PADDING, MBEDTLS_ERR_RSA_INVALID_PADDING }
108
+ };
109
+ #endif
110
+
111
+ #if defined(MBEDTLS_USE_PSA_CRYPTO) && \
112
+ defined(PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY)
113
+ const mbedtls_error_pair_t psa_to_pk_ecdsa_errors[] =
114
+ {
115
+ { PSA_SUCCESS, 0 },
116
+ { PSA_ERROR_NOT_PERMITTED, MBEDTLS_ERR_ECP_BAD_INPUT_DATA },
117
+ { PSA_ERROR_INVALID_ARGUMENT, MBEDTLS_ERR_ECP_BAD_INPUT_DATA },
118
+ { PSA_ERROR_INVALID_HANDLE, MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE },
119
+ { PSA_ERROR_BUFFER_TOO_SMALL, MBEDTLS_ERR_ECP_BUFFER_TOO_SMALL },
120
+ { PSA_ERROR_INSUFFICIENT_ENTROPY, MBEDTLS_ERR_ECP_RANDOM_FAILED },
121
+ { PSA_ERROR_INVALID_SIGNATURE, MBEDTLS_ERR_ECP_VERIFY_FAILED }
122
+ };
123
+ #endif
124
+
125
+ int psa_generic_status_to_mbedtls(psa_status_t status)
126
+ {
127
+ switch (status) {
128
+ case PSA_SUCCESS:
129
+ return 0;
130
+ case PSA_ERROR_NOT_SUPPORTED:
131
+ return MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED;
132
+ case PSA_ERROR_CORRUPTION_DETECTED:
133
+ return MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
134
+ case PSA_ERROR_COMMUNICATION_FAILURE:
135
+ case PSA_ERROR_HARDWARE_FAILURE:
136
+ return MBEDTLS_ERR_PLATFORM_HW_ACCEL_FAILED;
137
+ case PSA_ERROR_NOT_PERMITTED:
138
+ default:
139
+ return MBEDTLS_ERR_ERROR_GENERIC_ERROR;
140
+ }
141
+ }
142
+
143
+ int psa_status_to_mbedtls(psa_status_t status,
144
+ const mbedtls_error_pair_t *local_translations,
145
+ size_t local_errors_num,
146
+ int (*fallback_f)(psa_status_t))
147
+ {
148
+ for (size_t i = 0; i < local_errors_num; i++) {
149
+ if (status == local_translations[i].psa_status) {
150
+ return local_translations[i].mbedtls_error;
151
+ }
152
+ }
153
+ return fallback_f(status);
154
+ }
155
+
156
+ #if defined(MBEDTLS_PK_C)
157
+ int psa_pk_status_to_mbedtls(psa_status_t status)
158
+ {
159
+ switch (status) {
160
+ case PSA_ERROR_INVALID_HANDLE:
161
+ return MBEDTLS_ERR_PK_KEY_INVALID_FORMAT;
162
+ case PSA_ERROR_BUFFER_TOO_SMALL:
163
+ return MBEDTLS_ERR_PK_BUFFER_TOO_SMALL;
164
+ case PSA_ERROR_NOT_SUPPORTED:
165
+ return MBEDTLS_ERR_PK_FEATURE_UNAVAILABLE;
166
+ case PSA_ERROR_INVALID_ARGUMENT:
167
+ return MBEDTLS_ERR_PK_INVALID_ALG;
168
+ case PSA_ERROR_NOT_PERMITTED:
169
+ return MBEDTLS_ERR_PK_TYPE_MISMATCH;
170
+ case PSA_ERROR_INSUFFICIENT_MEMORY:
171
+ return MBEDTLS_ERR_PK_ALLOC_FAILED;
172
+ case PSA_ERROR_BAD_STATE:
173
+ return MBEDTLS_ERR_PK_BAD_INPUT_DATA;
174
+ case PSA_ERROR_DATA_CORRUPT:
175
+ case PSA_ERROR_DATA_INVALID:
176
+ case PSA_ERROR_STORAGE_FAILURE:
177
+ return MBEDTLS_ERR_PK_FILE_IO_ERROR;
178
+ default:
179
+ return psa_generic_status_to_mbedtls(status);
180
+ }
181
+ }
182
+ #endif /* MBEDTLS_PK_C */
183
+
184
+ /****************************************************************/
185
+ /* Key management */
186
+ /****************************************************************/
187
+
188
+ #if defined(PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY)
189
+ psa_ecc_family_t mbedtls_ecc_group_to_psa(mbedtls_ecp_group_id grpid,
190
+ size_t *bits)
191
+ {
192
+ switch (grpid) {
193
+ #if defined(MBEDTLS_ECP_HAVE_SECP192R1)
194
+ case MBEDTLS_ECP_DP_SECP192R1:
195
+ *bits = 192;
196
+ return PSA_ECC_FAMILY_SECP_R1;
197
+ #endif
198
+ #if defined(MBEDTLS_ECP_HAVE_SECP224R1)
199
+ case MBEDTLS_ECP_DP_SECP224R1:
200
+ *bits = 224;
201
+ return PSA_ECC_FAMILY_SECP_R1;
202
+ #endif
203
+ #if defined(MBEDTLS_ECP_HAVE_SECP256R1)
204
+ case MBEDTLS_ECP_DP_SECP256R1:
205
+ *bits = 256;
206
+ return PSA_ECC_FAMILY_SECP_R1;
207
+ #endif
208
+ #if defined(MBEDTLS_ECP_HAVE_SECP384R1)
209
+ case MBEDTLS_ECP_DP_SECP384R1:
210
+ *bits = 384;
211
+ return PSA_ECC_FAMILY_SECP_R1;
212
+ #endif
213
+ #if defined(MBEDTLS_ECP_HAVE_SECP521R1)
214
+ case MBEDTLS_ECP_DP_SECP521R1:
215
+ *bits = 521;
216
+ return PSA_ECC_FAMILY_SECP_R1;
217
+ #endif
218
+ #if defined(MBEDTLS_ECP_HAVE_BP256R1)
219
+ case MBEDTLS_ECP_DP_BP256R1:
220
+ *bits = 256;
221
+ return PSA_ECC_FAMILY_BRAINPOOL_P_R1;
222
+ #endif
223
+ #if defined(MBEDTLS_ECP_HAVE_BP384R1)
224
+ case MBEDTLS_ECP_DP_BP384R1:
225
+ *bits = 384;
226
+ return PSA_ECC_FAMILY_BRAINPOOL_P_R1;
227
+ #endif
228
+ #if defined(MBEDTLS_ECP_HAVE_BP512R1)
229
+ case MBEDTLS_ECP_DP_BP512R1:
230
+ *bits = 512;
231
+ return PSA_ECC_FAMILY_BRAINPOOL_P_R1;
232
+ #endif
233
+ #if defined(MBEDTLS_ECP_HAVE_CURVE25519)
234
+ case MBEDTLS_ECP_DP_CURVE25519:
235
+ *bits = 255;
236
+ return PSA_ECC_FAMILY_MONTGOMERY;
237
+ #endif
238
+ #if defined(MBEDTLS_ECP_HAVE_SECP192K1)
239
+ case MBEDTLS_ECP_DP_SECP192K1:
240
+ *bits = 192;
241
+ return PSA_ECC_FAMILY_SECP_K1;
242
+ #endif
243
+ #if defined(MBEDTLS_ECP_HAVE_SECP224K1)
244
+ /* secp224k1 is not and will not be supported in PSA (#3541). */
245
+ #endif
246
+ #if defined(MBEDTLS_ECP_HAVE_SECP256K1)
247
+ case MBEDTLS_ECP_DP_SECP256K1:
248
+ *bits = 256;
249
+ return PSA_ECC_FAMILY_SECP_K1;
250
+ #endif
251
+ #if defined(MBEDTLS_ECP_HAVE_CURVE448)
252
+ case MBEDTLS_ECP_DP_CURVE448:
253
+ *bits = 448;
254
+ return PSA_ECC_FAMILY_MONTGOMERY;
255
+ #endif
256
+ default:
257
+ *bits = 0;
258
+ return 0;
259
+ }
260
+ }
261
+
262
+ mbedtls_ecp_group_id mbedtls_ecc_group_from_psa(psa_ecc_family_t family,
263
+ size_t bits)
264
+ {
265
+ switch (family) {
266
+ case PSA_ECC_FAMILY_SECP_R1:
267
+ switch (bits) {
268
+ #if defined(PSA_WANT_ECC_SECP_R1_192)
269
+ case 192:
270
+ return MBEDTLS_ECP_DP_SECP192R1;
271
+ #endif
272
+ #if defined(PSA_WANT_ECC_SECP_R1_224)
273
+ case 224:
274
+ return MBEDTLS_ECP_DP_SECP224R1;
275
+ #endif
276
+ #if defined(PSA_WANT_ECC_SECP_R1_256)
277
+ case 256:
278
+ return MBEDTLS_ECP_DP_SECP256R1;
279
+ #endif
280
+ #if defined(PSA_WANT_ECC_SECP_R1_384)
281
+ case 384:
282
+ return MBEDTLS_ECP_DP_SECP384R1;
283
+ #endif
284
+ #if defined(PSA_WANT_ECC_SECP_R1_521)
285
+ case 521:
286
+ return MBEDTLS_ECP_DP_SECP521R1;
287
+ #endif
288
+ }
289
+ break;
290
+
291
+ case PSA_ECC_FAMILY_BRAINPOOL_P_R1:
292
+ switch (bits) {
293
+ #if defined(PSA_WANT_ECC_BRAINPOOL_P_R1_256)
294
+ case 256:
295
+ return MBEDTLS_ECP_DP_BP256R1;
296
+ #endif
297
+ #if defined(PSA_WANT_ECC_BRAINPOOL_P_R1_384)
298
+ case 384:
299
+ return MBEDTLS_ECP_DP_BP384R1;
300
+ #endif
301
+ #if defined(PSA_WANT_ECC_BRAINPOOL_P_R1_512)
302
+ case 512:
303
+ return MBEDTLS_ECP_DP_BP512R1;
304
+ #endif
305
+ }
306
+ break;
307
+
308
+ case PSA_ECC_FAMILY_MONTGOMERY:
309
+ switch (bits) {
310
+ #if defined(PSA_WANT_ECC_MONTGOMERY_255)
311
+ case 255:
312
+ return MBEDTLS_ECP_DP_CURVE25519;
313
+ #endif
314
+ #if defined(PSA_WANT_ECC_MONTGOMERY_448)
315
+ case 448:
316
+ return MBEDTLS_ECP_DP_CURVE448;
317
+ #endif
318
+ }
319
+ break;
320
+
321
+ case PSA_ECC_FAMILY_SECP_K1:
322
+ switch (bits) {
323
+ #if defined(PSA_WANT_ECC_SECP_K1_192)
324
+ case 192:
325
+ return MBEDTLS_ECP_DP_SECP192K1;
326
+ #endif
327
+ #if defined(PSA_WANT_ECC_SECP_K1_224)
328
+ /* secp224k1 is not and will not be supported in PSA (#3541). */
329
+ #endif
330
+ #if defined(PSA_WANT_ECC_SECP_K1_256)
331
+ case 256:
332
+ return MBEDTLS_ECP_DP_SECP256K1;
333
+ #endif
334
+ }
335
+ break;
336
+ }
337
+
338
+ return MBEDTLS_ECP_DP_NONE;
339
+ }
340
+ #endif /* PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY */
341
+
342
+ /* Wrapper function allowing the classic API to use the PSA RNG.
343
+ *
344
+ * `mbedtls_psa_get_random(MBEDTLS_PSA_RANDOM_STATE, ...)` calls
345
+ * `psa_generate_random(...)`. The state parameter is ignored since the
346
+ * PSA API doesn't support passing an explicit state.
347
+ */
348
+ int mbedtls_psa_get_random(void *p_rng,
349
+ unsigned char *output,
350
+ size_t output_size)
351
+ {
352
+ /* This function takes a pointer to the RNG state because that's what
353
+ * classic mbedtls functions using an RNG expect. The PSA RNG manages
354
+ * its own state internally and doesn't let the caller access that state.
355
+ * So we just ignore the state parameter, and in practice we'll pass
356
+ * NULL. */
357
+ (void) p_rng;
358
+ psa_status_t status = psa_generate_random(output, output_size);
359
+ if (status == PSA_SUCCESS) {
360
+ return 0;
361
+ } else {
362
+ return MBEDTLS_ERR_ENTROPY_SOURCE_FAILED;
363
+ }
364
+ }
365
+
366
+ #endif /* MBEDTLS_PSA_CRYPTO_CLIENT */
367
+
368
+ #if defined(MBEDTLS_PSA_UTIL_HAVE_ECDSA)
369
+
370
+ /**
371
+ * \brief Convert a single raw coordinate to DER ASN.1 format. The output der
372
+ * buffer is filled backward (i.e. starting from its end).
373
+ *
374
+ * \param raw_buf Buffer containing the raw coordinate to be
375
+ * converted.
376
+ * \param raw_len Length of raw_buf in bytes. This must be > 0.
377
+ * \param der_buf_start Pointer to the beginning of the buffer which
378
+ * will be filled with the DER converted data.
379
+ * \param der_buf_end End of the buffer used to store the DER output.
380
+ *
381
+ * \return On success, the amount of data (in bytes) written to
382
+ * the DER buffer.
383
+ * \return MBEDTLS_ERR_ASN1_BUF_TOO_SMALL if the provided der
384
+ * buffer is too small to contain all the converted data.
385
+ * \return MBEDTLS_ERR_ASN1_INVALID_DATA if the input raw
386
+ * coordinate is null (i.e. all zeros).
387
+ *
388
+ * \warning Raw and der buffer must not be overlapping.
389
+ */
390
+ static int convert_raw_to_der_single_int(const unsigned char *raw_buf, size_t raw_len,
391
+ unsigned char *der_buf_start,
392
+ unsigned char *der_buf_end)
393
+ {
394
+ unsigned char *p = der_buf_end;
395
+ int len;
396
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
397
+
398
+ /* ASN.1 DER encoding requires minimal length, so skip leading 0s.
399
+ * Provided input MPIs should not be 0, but as a failsafe measure, still
400
+ * detect that and return error in case. */
401
+ while (*raw_buf == 0x00) {
402
+ ++raw_buf;
403
+ --raw_len;
404
+ if (raw_len == 0) {
405
+ return MBEDTLS_ERR_ASN1_INVALID_DATA;
406
+ }
407
+ }
408
+ len = (int) raw_len;
409
+
410
+ /* Copy the raw coordinate to the end of der_buf. */
411
+ if ((p - der_buf_start) < len) {
412
+ return MBEDTLS_ERR_ASN1_BUF_TOO_SMALL;
413
+ }
414
+ p -= len;
415
+ memcpy(p, raw_buf, len);
416
+
417
+ /* If MSb is 1, ASN.1 requires that we prepend a 0. */
418
+ if (*p & 0x80) {
419
+ if ((p - der_buf_start) < 1) {
420
+ return MBEDTLS_ERR_ASN1_BUF_TOO_SMALL;
421
+ }
422
+ --p;
423
+ *p = 0x00;
424
+ ++len;
425
+ }
426
+
427
+ MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_len(&p, der_buf_start, len));
428
+ MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_tag(&p, der_buf_start, MBEDTLS_ASN1_INTEGER));
429
+
430
+ return len;
431
+ }
432
+
433
+ int mbedtls_ecdsa_raw_to_der(size_t bits, const unsigned char *raw, size_t raw_len,
434
+ unsigned char *der, size_t der_size, size_t *der_len)
435
+ {
436
+ unsigned char r[PSA_BITS_TO_BYTES(PSA_VENDOR_ECC_MAX_CURVE_BITS)];
437
+ unsigned char s[PSA_BITS_TO_BYTES(PSA_VENDOR_ECC_MAX_CURVE_BITS)];
438
+ const size_t coordinate_len = PSA_BITS_TO_BYTES(bits);
439
+ size_t len = 0;
440
+ unsigned char *p = der + der_size;
441
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
442
+
443
+ if (bits == 0) {
444
+ return MBEDTLS_ERR_ASN1_INVALID_DATA;
445
+ }
446
+ if (raw_len != (2 * coordinate_len)) {
447
+ return MBEDTLS_ERR_ASN1_INVALID_DATA;
448
+ }
449
+ if (coordinate_len > sizeof(r)) {
450
+ return MBEDTLS_ERR_ASN1_BUF_TOO_SMALL;
451
+ }
452
+
453
+ /* Since raw and der buffers might overlap, dump r and s before starting
454
+ * the conversion. */
455
+ memcpy(r, raw, coordinate_len);
456
+ memcpy(s, raw + coordinate_len, coordinate_len);
457
+
458
+ /* der buffer will initially be written starting from its end so we pick s
459
+ * first and then r. */
460
+ ret = convert_raw_to_der_single_int(s, coordinate_len, der, p);
461
+ if (ret < 0) {
462
+ return ret;
463
+ }
464
+ p -= ret;
465
+ len += ret;
466
+
467
+ ret = convert_raw_to_der_single_int(r, coordinate_len, der, p);
468
+ if (ret < 0) {
469
+ return ret;
470
+ }
471
+ p -= ret;
472
+ len += ret;
473
+
474
+ /* Add ASN.1 header (len + tag). */
475
+ MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_len(&p, der, len));
476
+ MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_tag(&p, der,
477
+ MBEDTLS_ASN1_CONSTRUCTED |
478
+ MBEDTLS_ASN1_SEQUENCE));
479
+
480
+ /* memmove the content of der buffer to its beginnig. */
481
+ memmove(der, p, len);
482
+ *der_len = len;
483
+
484
+ return 0;
485
+ }
486
+
487
+ /**
488
+ * \brief Convert a single integer from ASN.1 DER format to raw.
489
+ *
490
+ * \param der Buffer containing the DER integer value to be
491
+ * converted.
492
+ * \param der_len Length of the der buffer in bytes.
493
+ * \param raw Output buffer that will be filled with the
494
+ * converted data. This should be at least
495
+ * coordinate_size bytes and it must be zeroed before
496
+ * calling this function.
497
+ * \param coordinate_size Size (in bytes) of a single coordinate in raw
498
+ * format.
499
+ *
500
+ * \return On success, the amount of DER data parsed from the
501
+ * provided der buffer.
502
+ * \return MBEDTLS_ERR_ASN1_UNEXPECTED_TAG if the integer tag
503
+ * is missing in the der buffer.
504
+ * \return MBEDTLS_ERR_ASN1_LENGTH_MISMATCH if the integer
505
+ * is null (i.e. all zeros) or if the output raw buffer
506
+ * is too small to contain the converted raw value.
507
+ *
508
+ * \warning Der and raw buffers must not be overlapping.
509
+ */
510
+ static int convert_der_to_raw_single_int(unsigned char *der, size_t der_len,
511
+ unsigned char *raw, size_t coordinate_size)
512
+ {
513
+ unsigned char *p = der;
514
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
515
+ size_t unpadded_len, padding_len = 0;
516
+
517
+ /* Get the length of ASN.1 element (i.e. the integer we need to parse). */
518
+ ret = mbedtls_asn1_get_tag(&p, p + der_len, &unpadded_len,
519
+ MBEDTLS_ASN1_INTEGER);
520
+ if (ret != 0) {
521
+ return ret;
522
+ }
523
+
524
+ /* It's invalid to have:
525
+ * - unpadded_len == 0.
526
+ * - MSb set without a leading 0x00 (leading 0x00 is checked below). */
527
+ if (((unpadded_len == 0) || (*p & 0x80) != 0)) {
528
+ return MBEDTLS_ERR_ASN1_INVALID_DATA;
529
+ }
530
+
531
+ /* Skip possible leading zero */
532
+ if (*p == 0x00) {
533
+ p++;
534
+ unpadded_len--;
535
+ /* It is not allowed to have more than 1 leading zero.
536
+ * Ignore the case in which unpadded_len = 0 because that's a 0 encoded
537
+ * in ASN.1 format (i.e. 020100). */
538
+ if ((unpadded_len > 0) && (*p == 0x00)) {
539
+ return MBEDTLS_ERR_ASN1_INVALID_DATA;
540
+ }
541
+ }
542
+
543
+ if (unpadded_len > coordinate_size) {
544
+ /* Parsed number is longer than the maximum expected value. */
545
+ return MBEDTLS_ERR_ASN1_INVALID_DATA;
546
+ }
547
+ padding_len = coordinate_size - unpadded_len;
548
+ /* raw buffer was already zeroed by the calling function so zero-padding
549
+ * operation is skipped here. */
550
+ memcpy(raw + padding_len, p, unpadded_len);
551
+ p += unpadded_len;
552
+
553
+ return (int) (p - der);
554
+ }
555
+
556
+ int mbedtls_ecdsa_der_to_raw(size_t bits, const unsigned char *der, size_t der_len,
557
+ unsigned char *raw, size_t raw_size, size_t *raw_len)
558
+ {
559
+ unsigned char raw_tmp[PSA_VENDOR_ECDSA_SIGNATURE_MAX_SIZE];
560
+ unsigned char *p = (unsigned char *) der;
561
+ size_t data_len;
562
+ size_t coordinate_size = PSA_BITS_TO_BYTES(bits);
563
+ int ret;
564
+
565
+ if (bits == 0) {
566
+ return MBEDTLS_ERR_ASN1_INVALID_DATA;
567
+ }
568
+ /* The output raw buffer should be at least twice the size of a raw
569
+ * coordinate in order to store r and s. */
570
+ if (raw_size < coordinate_size * 2) {
571
+ return MBEDTLS_ERR_ASN1_BUF_TOO_SMALL;
572
+ }
573
+ if (2 * coordinate_size > sizeof(raw_tmp)) {
574
+ return MBEDTLS_ERR_ASN1_BUF_TOO_SMALL;
575
+ }
576
+
577
+ /* Check that the provided input DER buffer has the right header. */
578
+ ret = mbedtls_asn1_get_tag(&p, der + der_len, &data_len,
579
+ MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_SEQUENCE);
580
+ if (ret != 0) {
581
+ return ret;
582
+ }
583
+
584
+ memset(raw_tmp, 0, 2 * coordinate_size);
585
+
586
+ /* Extract r */
587
+ ret = convert_der_to_raw_single_int(p, data_len, raw_tmp, coordinate_size);
588
+ if (ret < 0) {
589
+ return ret;
590
+ }
591
+ p += ret;
592
+ data_len -= ret;
593
+
594
+ /* Extract s */
595
+ ret = convert_der_to_raw_single_int(p, data_len, raw_tmp + coordinate_size,
596
+ coordinate_size);
597
+ if (ret < 0) {
598
+ return ret;
599
+ }
600
+ p += ret;
601
+ data_len -= ret;
602
+
603
+ /* Check that we consumed all the input der data. */
604
+ if ((size_t) (p - der) != der_len) {
605
+ return MBEDTLS_ERR_ASN1_LENGTH_MISMATCH;
606
+ }
607
+
608
+ memcpy(raw, raw_tmp, 2 * coordinate_size);
609
+ *raw_len = 2 * coordinate_size;
610
+
611
+ return 0;
612
+ }
613
+
614
+ #endif /* MBEDTLS_PSA_UTIL_HAVE_ECDSA */
@@ -0,0 +1,100 @@
1
+ /**
2
+ * \file psa_util_internal.h
3
+ *
4
+ * \brief Internal utility functions for use of PSA Crypto.
5
+ */
6
+ /*
7
+ * Copyright The Mbed TLS Contributors
8
+ * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
9
+ */
10
+
11
+ #ifndef MBEDTLS_PSA_UTIL_INTERNAL_H
12
+ #define MBEDTLS_PSA_UTIL_INTERNAL_H
13
+
14
+ /* Include the public header so that users only need one include. */
15
+ #include "mbedtls/psa_util.h"
16
+
17
+ #include "psa/crypto.h"
18
+
19
+ #if defined(MBEDTLS_PSA_CRYPTO_CLIENT)
20
+
21
+ /*************************************************************************
22
+ * FFDH
23
+ ************************************************************************/
24
+
25
+ #define MBEDTLS_PSA_MAX_FFDH_PUBKEY_LENGTH \
26
+ PSA_KEY_EXPORT_FFDH_PUBLIC_KEY_MAX_SIZE(PSA_VENDOR_FFDH_MAX_KEY_BITS)
27
+
28
+ /*************************************************************************
29
+ * ECC
30
+ ************************************************************************/
31
+
32
+ #define MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH \
33
+ PSA_KEY_EXPORT_ECC_PUBLIC_KEY_MAX_SIZE(PSA_VENDOR_ECC_MAX_CURVE_BITS)
34
+
35
+ #define MBEDTLS_PSA_MAX_EC_KEY_PAIR_LENGTH \
36
+ PSA_KEY_EXPORT_ECC_KEY_PAIR_MAX_SIZE(PSA_VENDOR_ECC_MAX_CURVE_BITS)
37
+
38
+ /*************************************************************************
39
+ * Error translation
40
+ ************************************************************************/
41
+
42
+ typedef struct {
43
+ /* Error codes used by PSA crypto are in -255..-128, fitting in 16 bits. */
44
+ int16_t psa_status;
45
+ /* Error codes used by Mbed TLS are in one of the ranges
46
+ * -127..-1 (low-level) or -32767..-4096 (high-level with a low-level
47
+ * code optionally added), fitting in 16 bits. */
48
+ int16_t mbedtls_error;
49
+ } mbedtls_error_pair_t;
50
+
51
+ #if defined(MBEDTLS_MD_LIGHT)
52
+ extern const mbedtls_error_pair_t psa_to_md_errors[4];
53
+ #endif
54
+
55
+ #if defined(MBEDTLS_BLOCK_CIPHER_SOME_PSA)
56
+ extern const mbedtls_error_pair_t psa_to_cipher_errors[4];
57
+ #endif
58
+
59
+ #if defined(MBEDTLS_LMS_C)
60
+ extern const mbedtls_error_pair_t psa_to_lms_errors[3];
61
+ #endif
62
+
63
+ #if defined(MBEDTLS_USE_PSA_CRYPTO) || defined(MBEDTLS_SSL_PROTO_TLS1_3)
64
+ extern const mbedtls_error_pair_t psa_to_ssl_errors[7];
65
+ #endif
66
+
67
+ #if defined(PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY) || \
68
+ defined(PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_BASIC)
69
+ extern const mbedtls_error_pair_t psa_to_pk_rsa_errors[8];
70
+ #endif
71
+
72
+ #if defined(MBEDTLS_USE_PSA_CRYPTO) && \
73
+ defined(PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY)
74
+ extern const mbedtls_error_pair_t psa_to_pk_ecdsa_errors[7];
75
+ #endif
76
+
77
+ /* Generic fallback function for error translation,
78
+ * when the received state was not module-specific. */
79
+ int psa_generic_status_to_mbedtls(psa_status_t status);
80
+
81
+ /* This function iterates over provided local error translations,
82
+ * and if no match was found - calls the fallback error translation function. */
83
+ int psa_status_to_mbedtls(psa_status_t status,
84
+ const mbedtls_error_pair_t *local_translations,
85
+ size_t local_errors_num,
86
+ int (*fallback_f)(psa_status_t));
87
+
88
+ /* The second out of three-stage error handling functions of the pk module,
89
+ * acts as a fallback after RSA / ECDSA error translation, and if no match
90
+ * is found, it itself calls psa_generic_status_to_mbedtls. */
91
+ int psa_pk_status_to_mbedtls(psa_status_t status);
92
+
93
+ /* Utility macro to shorten the defines of error translator in modules. */
94
+ #define PSA_TO_MBEDTLS_ERR_LIST(status, error_list, fallback_f) \
95
+ psa_status_to_mbedtls(status, error_list, \
96
+ sizeof(error_list)/sizeof(error_list[0]), \
97
+ fallback_f)
98
+
99
+ #endif /* MBEDTLS_PSA_CRYPTO_CLIENT */
100
+ #endif /* MBEDTLS_PSA_UTIL_INTERNAL_H */