@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,571 @@
1
+ /*
2
+ * PSA PAKE layer on top of Mbed TLS software crypto
3
+ */
4
+ /*
5
+ * Copyright The Mbed TLS Contributors
6
+ * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
7
+ */
8
+
9
+ #include "common.h"
10
+
11
+ #if defined(MBEDTLS_PSA_CRYPTO_C)
12
+
13
+ #include <psa/crypto.h>
14
+ #include "psa_crypto_core.h"
15
+ #include "psa_crypto_pake.h"
16
+ #include "psa_crypto_slot_management.h"
17
+
18
+ #include <mbedtls/ecjpake.h>
19
+ #include "psa_util_internal.h"
20
+
21
+ #include <mbedtls/platform.h>
22
+ #include <mbedtls/error.h>
23
+ #include <string.h>
24
+
25
+ /*
26
+ * State sequence:
27
+ *
28
+ * psa_pake_setup()
29
+ * |
30
+ * |-- In any order:
31
+ * | | psa_pake_set_password_key()
32
+ * | | psa_pake_set_user()
33
+ * | | psa_pake_set_peer()
34
+ * | | psa_pake_set_role()
35
+ * |
36
+ * |--- In any order: (First round input before or after first round output)
37
+ * | |
38
+ * | |------ In Order
39
+ * | | | psa_pake_output(PSA_PAKE_STEP_KEY_SHARE)
40
+ * | | | psa_pake_output(PSA_PAKE_STEP_ZK_PUBLIC)
41
+ * | | | psa_pake_output(PSA_PAKE_STEP_ZK_PROOF)
42
+ * | | | psa_pake_output(PSA_PAKE_STEP_KEY_SHARE)
43
+ * | | | psa_pake_output(PSA_PAKE_STEP_ZK_PUBLIC)
44
+ * | | | psa_pake_output(PSA_PAKE_STEP_ZK_PROOF)
45
+ * | |
46
+ * | |------ In Order:
47
+ * | | psa_pake_input(PSA_PAKE_STEP_KEY_SHARE)
48
+ * | | psa_pake_input(PSA_PAKE_STEP_ZK_PUBLIC)
49
+ * | | psa_pake_input(PSA_PAKE_STEP_ZK_PROOF)
50
+ * | | psa_pake_input(PSA_PAKE_STEP_KEY_SHARE)
51
+ * | | psa_pake_input(PSA_PAKE_STEP_ZK_PUBLIC)
52
+ * | | psa_pake_input(PSA_PAKE_STEP_ZK_PROOF)
53
+ * |
54
+ * |--- In any order: (Second round input before or after second round output)
55
+ * | |
56
+ * | |------ In Order
57
+ * | | | psa_pake_output(PSA_PAKE_STEP_KEY_SHARE)
58
+ * | | | psa_pake_output(PSA_PAKE_STEP_ZK_PUBLIC)
59
+ * | | | psa_pake_output(PSA_PAKE_STEP_ZK_PROOF)
60
+ * | |
61
+ * | |------ In Order:
62
+ * | | psa_pake_input(PSA_PAKE_STEP_KEY_SHARE)
63
+ * | | psa_pake_input(PSA_PAKE_STEP_ZK_PUBLIC)
64
+ * | | psa_pake_input(PSA_PAKE_STEP_ZK_PROOF)
65
+ * |
66
+ * psa_pake_get_implicit_key()
67
+ * psa_pake_abort()
68
+ */
69
+
70
+ /*
71
+ * Possible sequence of calls to implementation:
72
+ *
73
+ * |--- In any order:
74
+ * | |
75
+ * | |------ In Order
76
+ * | | | mbedtls_psa_pake_output(PSA_JPAKE_X1_STEP_KEY_SHARE)
77
+ * | | | mbedtls_psa_pake_output(PSA_JPAKE_X1_STEP_ZK_PUBLIC)
78
+ * | | | mbedtls_psa_pake_output(PSA_JPAKE_X1_STEP_ZK_PROOF)
79
+ * | | | mbedtls_psa_pake_output(PSA_JPAKE_X2_STEP_KEY_SHARE)
80
+ * | | | mbedtls_psa_pake_output(PSA_JPAKE_X2_STEP_ZK_PUBLIC)
81
+ * | | | mbedtls_psa_pake_output(PSA_JPAKE_X2_STEP_ZK_PROOF)
82
+ * | |
83
+ * | |------ In Order:
84
+ * | | mbedtls_psa_pake_input(PSA_JPAKE_X1_STEP_KEY_SHARE)
85
+ * | | mbedtls_psa_pake_input(PSA_JPAKE_X1_STEP_ZK_PUBLIC)
86
+ * | | mbedtls_psa_pake_input(PSA_JPAKE_X1_STEP_ZK_PROOF)
87
+ * | | mbedtls_psa_pake_input(PSA_JPAKE_X2_STEP_KEY_SHARE)
88
+ * | | mbedtls_psa_pake_input(PSA_JPAKE_X2_STEP_ZK_PUBLIC)
89
+ * | | mbedtls_psa_pake_input(PSA_JPAKE_X2_STEP_ZK_PROOF)
90
+ * |
91
+ * |--- In any order:
92
+ * | |
93
+ * | |------ In Order
94
+ * | | | mbedtls_psa_pake_output(PSA_JPAKE_X2S_STEP_KEY_SHARE)
95
+ * | | | mbedtls_psa_pake_output(PSA_JPAKE_X2S_STEP_ZK_PUBLIC)
96
+ * | | | mbedtls_psa_pake_output(PSA_JPAKE_X2S_STEP_ZK_PROOF)
97
+ * | |
98
+ * | |------ In Order:
99
+ * | | mbedtls_psa_pake_input(PSA_JPAKE_X4S_STEP_KEY_SHARE)
100
+ * | | mbedtls_psa_pake_input(PSA_JPAKE_X4S_STEP_ZK_PUBLIC)
101
+ * | | mbedtls_psa_pake_input(PSA_JPAKE_X4S_STEP_ZK_PROOF)
102
+ */
103
+
104
+ #if defined(MBEDTLS_PSA_BUILTIN_ALG_JPAKE)
105
+ static psa_status_t mbedtls_ecjpake_to_psa_error(int ret)
106
+ {
107
+ switch (ret) {
108
+ case MBEDTLS_ERR_MPI_BAD_INPUT_DATA:
109
+ case MBEDTLS_ERR_ECP_BAD_INPUT_DATA:
110
+ case MBEDTLS_ERR_ECP_INVALID_KEY:
111
+ case MBEDTLS_ERR_ECP_VERIFY_FAILED:
112
+ return PSA_ERROR_DATA_INVALID;
113
+ case MBEDTLS_ERR_MPI_BUFFER_TOO_SMALL:
114
+ case MBEDTLS_ERR_ECP_BUFFER_TOO_SMALL:
115
+ return PSA_ERROR_BUFFER_TOO_SMALL;
116
+ case MBEDTLS_ERR_MD_FEATURE_UNAVAILABLE:
117
+ return PSA_ERROR_NOT_SUPPORTED;
118
+ case MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED:
119
+ return PSA_ERROR_CORRUPTION_DETECTED;
120
+ default:
121
+ return PSA_ERROR_GENERIC_ERROR;
122
+ }
123
+ }
124
+ #endif
125
+
126
+ #if defined(MBEDTLS_PSA_BUILTIN_PAKE)
127
+ #if defined(MBEDTLS_PSA_BUILTIN_ALG_JPAKE)
128
+ static psa_status_t psa_pake_ecjpake_setup(mbedtls_psa_pake_operation_t *operation)
129
+ {
130
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
131
+
132
+ mbedtls_ecjpake_init(&operation->ctx.jpake);
133
+
134
+ ret = mbedtls_ecjpake_setup(&operation->ctx.jpake,
135
+ operation->role,
136
+ MBEDTLS_MD_SHA256,
137
+ MBEDTLS_ECP_DP_SECP256R1,
138
+ operation->password,
139
+ operation->password_len);
140
+
141
+ mbedtls_platform_zeroize(operation->password, operation->password_len);
142
+
143
+ if (ret != 0) {
144
+ return mbedtls_ecjpake_to_psa_error(ret);
145
+ }
146
+
147
+ return PSA_SUCCESS;
148
+ }
149
+ #endif
150
+
151
+ /* The only two JPAKE user/peer identifiers supported in built-in implementation. */
152
+ static const uint8_t jpake_server_id[] = { 's', 'e', 'r', 'v', 'e', 'r' };
153
+ static const uint8_t jpake_client_id[] = { 'c', 'l', 'i', 'e', 'n', 't' };
154
+
155
+ psa_status_t mbedtls_psa_pake_setup(mbedtls_psa_pake_operation_t *operation,
156
+ const psa_crypto_driver_pake_inputs_t *inputs)
157
+ {
158
+ psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED;
159
+ size_t user_len = 0, peer_len = 0, password_len = 0;
160
+ uint8_t *peer = NULL, *user = NULL;
161
+ size_t actual_user_len = 0, actual_peer_len = 0, actual_password_len = 0;
162
+ psa_pake_cipher_suite_t cipher_suite = psa_pake_cipher_suite_init();
163
+
164
+ status = psa_crypto_driver_pake_get_password_len(inputs, &password_len);
165
+ if (status != PSA_SUCCESS) {
166
+ return status;
167
+ }
168
+
169
+ status = psa_crypto_driver_pake_get_user_len(inputs, &user_len);
170
+ if (status != PSA_SUCCESS) {
171
+ return status;
172
+ }
173
+
174
+ status = psa_crypto_driver_pake_get_peer_len(inputs, &peer_len);
175
+ if (status != PSA_SUCCESS) {
176
+ return status;
177
+ }
178
+
179
+ status = psa_crypto_driver_pake_get_cipher_suite(inputs, &cipher_suite);
180
+ if (status != PSA_SUCCESS) {
181
+ return status;
182
+ }
183
+
184
+ operation->password = mbedtls_calloc(1, password_len);
185
+ if (operation->password == NULL) {
186
+ status = PSA_ERROR_INSUFFICIENT_MEMORY;
187
+ goto error;
188
+ }
189
+
190
+ user = mbedtls_calloc(1, user_len);
191
+ if (user == NULL) {
192
+ status = PSA_ERROR_INSUFFICIENT_MEMORY;
193
+ goto error;
194
+ }
195
+
196
+ peer = mbedtls_calloc(1, peer_len);
197
+ if (peer == NULL) {
198
+ status = PSA_ERROR_INSUFFICIENT_MEMORY;
199
+ goto error;
200
+ }
201
+
202
+ status = psa_crypto_driver_pake_get_password(inputs, operation->password,
203
+ password_len, &actual_password_len);
204
+ if (status != PSA_SUCCESS) {
205
+ goto error;
206
+ }
207
+
208
+ status = psa_crypto_driver_pake_get_user(inputs, user,
209
+ user_len, &actual_user_len);
210
+ if (status != PSA_SUCCESS) {
211
+ goto error;
212
+ }
213
+
214
+ status = psa_crypto_driver_pake_get_peer(inputs, peer,
215
+ peer_len, &actual_peer_len);
216
+ if (status != PSA_SUCCESS) {
217
+ goto error;
218
+ }
219
+
220
+ operation->password_len = actual_password_len;
221
+ operation->alg = cipher_suite.algorithm;
222
+
223
+ #if defined(MBEDTLS_PSA_BUILTIN_ALG_JPAKE)
224
+ if (cipher_suite.algorithm == PSA_ALG_JPAKE) {
225
+ if (cipher_suite.type != PSA_PAKE_PRIMITIVE_TYPE_ECC ||
226
+ cipher_suite.family != PSA_ECC_FAMILY_SECP_R1 ||
227
+ cipher_suite.bits != 256 ||
228
+ cipher_suite.hash != PSA_ALG_SHA_256) {
229
+ status = PSA_ERROR_NOT_SUPPORTED;
230
+ goto error;
231
+ }
232
+
233
+ const size_t user_peer_len = sizeof(jpake_client_id); // client and server have the same length
234
+ if (actual_user_len != user_peer_len ||
235
+ actual_peer_len != user_peer_len) {
236
+ status = PSA_ERROR_NOT_SUPPORTED;
237
+ goto error;
238
+ }
239
+
240
+ if (memcmp(user, jpake_client_id, actual_user_len) == 0 &&
241
+ memcmp(peer, jpake_server_id, actual_peer_len) == 0) {
242
+ operation->role = MBEDTLS_ECJPAKE_CLIENT;
243
+ } else
244
+ if (memcmp(user, jpake_server_id, actual_user_len) == 0 &&
245
+ memcmp(peer, jpake_client_id, actual_peer_len) == 0) {
246
+ operation->role = MBEDTLS_ECJPAKE_SERVER;
247
+ } else {
248
+ status = PSA_ERROR_NOT_SUPPORTED;
249
+ goto error;
250
+ }
251
+
252
+ operation->buffer_length = 0;
253
+ operation->buffer_offset = 0;
254
+
255
+ status = psa_pake_ecjpake_setup(operation);
256
+ if (status != PSA_SUCCESS) {
257
+ goto error;
258
+ }
259
+
260
+ /* Role has been set, release user/peer buffers. */
261
+ mbedtls_free(user); mbedtls_free(peer);
262
+
263
+ return PSA_SUCCESS;
264
+ } else
265
+ #else
266
+ (void) operation;
267
+ (void) inputs;
268
+ #endif
269
+ { status = PSA_ERROR_NOT_SUPPORTED; }
270
+
271
+ error:
272
+ mbedtls_free(user); mbedtls_free(peer);
273
+ /* In case of failure of the setup of a multipart operation, the PSA driver interface
274
+ * specifies that the core does not call any other driver entry point thus does not
275
+ * call mbedtls_psa_pake_abort(). Therefore call it here to do the needed clean
276
+ * up like freeing the memory that may have been allocated to store the password.
277
+ */
278
+ mbedtls_psa_pake_abort(operation);
279
+ return status;
280
+ }
281
+
282
+ static psa_status_t mbedtls_psa_pake_output_internal(
283
+ mbedtls_psa_pake_operation_t *operation,
284
+ psa_crypto_driver_pake_step_t step,
285
+ uint8_t *output,
286
+ size_t output_size,
287
+ size_t *output_length)
288
+ {
289
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
290
+ size_t length;
291
+ (void) step; // Unused parameter
292
+
293
+ #if defined(MBEDTLS_PSA_BUILTIN_ALG_JPAKE)
294
+ /*
295
+ * The PSA CRYPTO PAKE and Mbed TLS JPAKE API have a different
296
+ * handling of output sequencing.
297
+ *
298
+ * The Mbed TLS JPAKE API outputs the whole X1+X2 and X2S steps data
299
+ * at once, on the other side the PSA CRYPTO PAKE api requires
300
+ * the KEY_SHARE/ZP_PUBLIC/ZK_PROOF parts of X1, X2 & X2S to be
301
+ * retrieved in sequence.
302
+ *
303
+ * In order to achieve API compatibility, the whole X1+X2 or X2S steps
304
+ * data is stored in an intermediate buffer at first step output call,
305
+ * and data is sliced down by parsing the ECPoint records in order
306
+ * to return the right parts on each step.
307
+ */
308
+ if (operation->alg == PSA_ALG_JPAKE) {
309
+ /* Initialize & write round on KEY_SHARE sequences */
310
+ if (step == PSA_JPAKE_X1_STEP_KEY_SHARE) {
311
+ ret = mbedtls_ecjpake_write_round_one(&operation->ctx.jpake,
312
+ operation->buffer,
313
+ sizeof(operation->buffer),
314
+ &operation->buffer_length,
315
+ mbedtls_psa_get_random,
316
+ MBEDTLS_PSA_RANDOM_STATE);
317
+ if (ret != 0) {
318
+ return mbedtls_ecjpake_to_psa_error(ret);
319
+ }
320
+
321
+ operation->buffer_offset = 0;
322
+ } else if (step == PSA_JPAKE_X2S_STEP_KEY_SHARE) {
323
+ ret = mbedtls_ecjpake_write_round_two(&operation->ctx.jpake,
324
+ operation->buffer,
325
+ sizeof(operation->buffer),
326
+ &operation->buffer_length,
327
+ mbedtls_psa_get_random,
328
+ MBEDTLS_PSA_RANDOM_STATE);
329
+ if (ret != 0) {
330
+ return mbedtls_ecjpake_to_psa_error(ret);
331
+ }
332
+
333
+ operation->buffer_offset = 0;
334
+ }
335
+
336
+ /*
337
+ * mbedtls_ecjpake_write_round_xxx() outputs thing in the format
338
+ * defined by draft-cragie-tls-ecjpake-01 section 7. The summary is
339
+ * that the data for each step is prepended with a length byte, and
340
+ * then they're concatenated. Additionally, the server's second round
341
+ * output is prepended with a 3-bytes ECParameters structure.
342
+ *
343
+ * In PSA, we output each step separately, and don't prepend the
344
+ * output with a length byte, even less a curve identifier, as that
345
+ * information is already available.
346
+ */
347
+ if (step == PSA_JPAKE_X2S_STEP_KEY_SHARE &&
348
+ operation->role == MBEDTLS_ECJPAKE_SERVER) {
349
+ /* Skip ECParameters, with is 3 bytes (RFC 8422) */
350
+ operation->buffer_offset += 3;
351
+ }
352
+
353
+ /* Read the length byte then move past it to the data */
354
+ length = operation->buffer[operation->buffer_offset];
355
+ operation->buffer_offset += 1;
356
+
357
+ if (operation->buffer_offset + length > operation->buffer_length) {
358
+ return PSA_ERROR_DATA_CORRUPT;
359
+ }
360
+
361
+ if (output_size < length) {
362
+ return PSA_ERROR_BUFFER_TOO_SMALL;
363
+ }
364
+
365
+ memcpy(output,
366
+ operation->buffer + operation->buffer_offset,
367
+ length);
368
+ *output_length = length;
369
+
370
+ operation->buffer_offset += length;
371
+
372
+ /* Reset buffer after ZK_PROOF sequence */
373
+ if ((step == PSA_JPAKE_X2_STEP_ZK_PROOF) ||
374
+ (step == PSA_JPAKE_X2S_STEP_ZK_PROOF)) {
375
+ mbedtls_platform_zeroize(operation->buffer, sizeof(operation->buffer));
376
+ operation->buffer_length = 0;
377
+ operation->buffer_offset = 0;
378
+ }
379
+
380
+ return PSA_SUCCESS;
381
+ } else
382
+ #else
383
+ (void) step;
384
+ (void) output;
385
+ (void) output_size;
386
+ (void) output_length;
387
+ #endif
388
+ { return PSA_ERROR_NOT_SUPPORTED; }
389
+ }
390
+
391
+ psa_status_t mbedtls_psa_pake_output(mbedtls_psa_pake_operation_t *operation,
392
+ psa_crypto_driver_pake_step_t step,
393
+ uint8_t *output,
394
+ size_t output_size,
395
+ size_t *output_length)
396
+ {
397
+ psa_status_t status = mbedtls_psa_pake_output_internal(
398
+ operation, step, output, output_size, output_length);
399
+
400
+ return status;
401
+ }
402
+
403
+ static psa_status_t mbedtls_psa_pake_input_internal(
404
+ mbedtls_psa_pake_operation_t *operation,
405
+ psa_crypto_driver_pake_step_t step,
406
+ const uint8_t *input,
407
+ size_t input_length)
408
+ {
409
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
410
+ (void) step; // Unused parameter
411
+
412
+ #if defined(MBEDTLS_PSA_BUILTIN_ALG_JPAKE)
413
+ /*
414
+ * The PSA CRYPTO PAKE and Mbed TLS JPAKE API have a different
415
+ * handling of input sequencing.
416
+ *
417
+ * The Mbed TLS JPAKE API takes the whole X1+X2 or X4S steps data
418
+ * at once as input, on the other side the PSA CRYPTO PAKE api requires
419
+ * the KEY_SHARE/ZP_PUBLIC/ZK_PROOF parts of X1, X2 & X4S to be
420
+ * given in sequence.
421
+ *
422
+ * In order to achieve API compatibility, each X1+X2 or X4S step data
423
+ * is stored sequentially in an intermediate buffer and given to the
424
+ * Mbed TLS JPAKE API on the last step.
425
+ *
426
+ * This causes any input error to be only detected on the last step.
427
+ */
428
+ if (operation->alg == PSA_ALG_JPAKE) {
429
+ /*
430
+ * Copy input to local buffer and format it as the Mbed TLS API
431
+ * expects, i.e. as defined by draft-cragie-tls-ecjpake-01 section 7.
432
+ * The summary is that the data for each step is prepended with a
433
+ * length byte, and then they're concatenated. Additionally, the
434
+ * server's second round output is prepended with a 3-bytes
435
+ * ECParameters structure - which means we have to prepend that when
436
+ * we're a client.
437
+ */
438
+ if (step == PSA_JPAKE_X4S_STEP_KEY_SHARE &&
439
+ operation->role == MBEDTLS_ECJPAKE_CLIENT) {
440
+ /* We only support secp256r1. */
441
+ /* This is the ECParameters structure defined by RFC 8422. */
442
+ unsigned char ecparameters[3] = {
443
+ 3, /* named_curve */
444
+ 0, 23 /* secp256r1 */
445
+ };
446
+
447
+ if (operation->buffer_length + sizeof(ecparameters) >
448
+ sizeof(operation->buffer)) {
449
+ return PSA_ERROR_BUFFER_TOO_SMALL;
450
+ }
451
+
452
+ memcpy(operation->buffer + operation->buffer_length,
453
+ ecparameters, sizeof(ecparameters));
454
+ operation->buffer_length += sizeof(ecparameters);
455
+ }
456
+
457
+ /*
458
+ * The core checks that input_length is smaller than
459
+ * PSA_PAKE_INPUT_MAX_SIZE.
460
+ * Thus no risk of integer overflow here.
461
+ */
462
+ if (operation->buffer_length + input_length + 1 > sizeof(operation->buffer)) {
463
+ return PSA_ERROR_BUFFER_TOO_SMALL;
464
+ }
465
+
466
+ /* Write the length byte */
467
+ operation->buffer[operation->buffer_length] = (uint8_t) input_length;
468
+ operation->buffer_length += 1;
469
+
470
+ /* Finally copy the data */
471
+ memcpy(operation->buffer + operation->buffer_length,
472
+ input, input_length);
473
+ operation->buffer_length += input_length;
474
+
475
+ /* Load buffer at each last round ZK_PROOF */
476
+ if (step == PSA_JPAKE_X2_STEP_ZK_PROOF) {
477
+ ret = mbedtls_ecjpake_read_round_one(&operation->ctx.jpake,
478
+ operation->buffer,
479
+ operation->buffer_length);
480
+
481
+ mbedtls_platform_zeroize(operation->buffer, sizeof(operation->buffer));
482
+ operation->buffer_length = 0;
483
+
484
+ if (ret != 0) {
485
+ return mbedtls_ecjpake_to_psa_error(ret);
486
+ }
487
+ } else if (step == PSA_JPAKE_X4S_STEP_ZK_PROOF) {
488
+ ret = mbedtls_ecjpake_read_round_two(&operation->ctx.jpake,
489
+ operation->buffer,
490
+ operation->buffer_length);
491
+
492
+ mbedtls_platform_zeroize(operation->buffer, sizeof(operation->buffer));
493
+ operation->buffer_length = 0;
494
+
495
+ if (ret != 0) {
496
+ return mbedtls_ecjpake_to_psa_error(ret);
497
+ }
498
+ }
499
+
500
+ return PSA_SUCCESS;
501
+ } else
502
+ #else
503
+ (void) step;
504
+ (void) input;
505
+ (void) input_length;
506
+ #endif
507
+ { return PSA_ERROR_NOT_SUPPORTED; }
508
+ }
509
+
510
+ psa_status_t mbedtls_psa_pake_input(mbedtls_psa_pake_operation_t *operation,
511
+ psa_crypto_driver_pake_step_t step,
512
+ const uint8_t *input,
513
+ size_t input_length)
514
+ {
515
+ psa_status_t status = mbedtls_psa_pake_input_internal(
516
+ operation, step, input, input_length);
517
+
518
+ return status;
519
+ }
520
+
521
+ psa_status_t mbedtls_psa_pake_get_implicit_key(
522
+ mbedtls_psa_pake_operation_t *operation,
523
+ uint8_t *output, size_t output_size,
524
+ size_t *output_length)
525
+ {
526
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
527
+
528
+ #if defined(MBEDTLS_PSA_BUILTIN_ALG_JPAKE)
529
+ if (operation->alg == PSA_ALG_JPAKE) {
530
+ ret = mbedtls_ecjpake_write_shared_key(&operation->ctx.jpake,
531
+ output,
532
+ output_size,
533
+ output_length,
534
+ mbedtls_psa_get_random,
535
+ MBEDTLS_PSA_RANDOM_STATE);
536
+ if (ret != 0) {
537
+ return mbedtls_ecjpake_to_psa_error(ret);
538
+ }
539
+
540
+ return PSA_SUCCESS;
541
+ } else
542
+ #else
543
+ (void) output;
544
+ #endif
545
+ { return PSA_ERROR_NOT_SUPPORTED; }
546
+ }
547
+
548
+ psa_status_t mbedtls_psa_pake_abort(mbedtls_psa_pake_operation_t *operation)
549
+ {
550
+ mbedtls_zeroize_and_free(operation->password, operation->password_len);
551
+ operation->password = NULL;
552
+ operation->password_len = 0;
553
+
554
+ #if defined(MBEDTLS_PSA_BUILTIN_ALG_JPAKE)
555
+ if (operation->alg == PSA_ALG_JPAKE) {
556
+ operation->role = MBEDTLS_ECJPAKE_NONE;
557
+ mbedtls_platform_zeroize(operation->buffer, sizeof(operation->buffer));
558
+ operation->buffer_length = 0;
559
+ operation->buffer_offset = 0;
560
+ mbedtls_ecjpake_free(&operation->ctx.jpake);
561
+ }
562
+ #endif
563
+
564
+ operation->alg = PSA_ALG_NONE;
565
+
566
+ return PSA_SUCCESS;
567
+ }
568
+
569
+ #endif /* MBEDTLS_PSA_BUILTIN_PAKE */
570
+
571
+ #endif /* MBEDTLS_PSA_CRYPTO_C */