@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,267 @@
1
+ /*
2
+ * PSA ECP layer on top of Mbed TLS 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
+ #ifndef PSA_CRYPTO_ECP_H
10
+ #define PSA_CRYPTO_ECP_H
11
+
12
+ #include <psa/crypto.h>
13
+ #include <mbedtls/ecp.h>
14
+
15
+ /** Load the contents of a key buffer into an internal ECP representation
16
+ *
17
+ * \param[in] type The type of key contained in \p data.
18
+ * \param[in] curve_bits The nominal bit-size of the curve.
19
+ * It must be consistent with the representation
20
+ * passed in \p data.
21
+ * This can be 0, in which case the bit-size
22
+ * is inferred from \p data_length (which is possible
23
+ * for all key types and representation formats
24
+ * formats that are currently supported or will
25
+ * be in the foreseeable future).
26
+ * \param[in] data The buffer from which to load the representation.
27
+ * \param[in] data_length The size in bytes of \p data.
28
+ * \param[out] p_ecp Returns a pointer to an ECP context on success.
29
+ * The caller is responsible for freeing both the
30
+ * contents of the context and the context itself
31
+ * when done.
32
+ */
33
+ psa_status_t mbedtls_psa_ecp_load_representation(psa_key_type_t type,
34
+ size_t curve_bits,
35
+ const uint8_t *data,
36
+ size_t data_length,
37
+ mbedtls_ecp_keypair **p_ecp);
38
+
39
+ /** Load the public part of an internal ECP, if required.
40
+ *
41
+ * \param ecp The ECP context to load the public part for.
42
+ *
43
+ * \return PSA_SUCCESS on success, otherwise an MPI error.
44
+ */
45
+
46
+ psa_status_t mbedtls_psa_ecp_load_public_part(mbedtls_ecp_keypair *ecp);
47
+
48
+ /** Import an ECP key in binary format.
49
+ *
50
+ * \note The signature of this function is that of a PSA driver
51
+ * import_key entry point. This function behaves as an import_key
52
+ * entry point as defined in the PSA driver interface specification for
53
+ * transparent drivers.
54
+ *
55
+ * \param[in] attributes The attributes for the key to import.
56
+ * \param[in] data The buffer containing the key data in import
57
+ * format.
58
+ * \param[in] data_length Size of the \p data buffer in bytes.
59
+ * \param[out] key_buffer The buffer containing the key data in output
60
+ * format.
61
+ * \param[in] key_buffer_size Size of the \p key_buffer buffer in bytes. This
62
+ * size is greater or equal to \p data_length.
63
+ * \param[out] key_buffer_length The length of the data written in \p
64
+ * key_buffer in bytes.
65
+ * \param[out] bits The key size in number of bits.
66
+ *
67
+ * \retval #PSA_SUCCESS The ECP key was imported successfully.
68
+ * \retval #PSA_ERROR_INVALID_ARGUMENT
69
+ * The key data is not correctly formatted.
70
+ * \retval #PSA_ERROR_NOT_SUPPORTED \emptydescription
71
+ * \retval #PSA_ERROR_INSUFFICIENT_MEMORY \emptydescription
72
+ * \retval #PSA_ERROR_CORRUPTION_DETECTED \emptydescription
73
+ */
74
+ psa_status_t mbedtls_psa_ecp_import_key(
75
+ const psa_key_attributes_t *attributes,
76
+ const uint8_t *data, size_t data_length,
77
+ uint8_t *key_buffer, size_t key_buffer_size,
78
+ size_t *key_buffer_length, size_t *bits);
79
+
80
+ /** Export an ECP key to export representation
81
+ *
82
+ * \param[in] type The type of key (public/private) to export
83
+ * \param[in] ecp The internal ECP representation from which to export
84
+ * \param[out] data The buffer to export to
85
+ * \param[in] data_size The length of the buffer to export to
86
+ * \param[out] data_length The amount of bytes written to \p data
87
+ */
88
+ psa_status_t mbedtls_psa_ecp_export_key(psa_key_type_t type,
89
+ mbedtls_ecp_keypair *ecp,
90
+ uint8_t *data,
91
+ size_t data_size,
92
+ size_t *data_length);
93
+
94
+ /** Export an ECP public key or the public part of an ECP key pair in binary
95
+ * format.
96
+ *
97
+ * \note The signature of this function is that of a PSA driver
98
+ * export_public_key entry point. This function behaves as an
99
+ * export_public_key entry point as defined in the PSA driver interface
100
+ * specification.
101
+ *
102
+ * \param[in] attributes The attributes for the key to export.
103
+ * \param[in] key_buffer Material or context of the key to export.
104
+ * \param[in] key_buffer_size Size of the \p key_buffer buffer in bytes.
105
+ * \param[out] data Buffer where the key data is to be written.
106
+ * \param[in] data_size Size of the \p data buffer in bytes.
107
+ * \param[out] data_length On success, the number of bytes written in
108
+ * \p data
109
+ *
110
+ * \retval #PSA_SUCCESS The ECP public key was exported successfully.
111
+ * \retval #PSA_ERROR_NOT_SUPPORTED \emptydescription
112
+ * \retval #PSA_ERROR_COMMUNICATION_FAILURE \emptydescription
113
+ * \retval #PSA_ERROR_HARDWARE_FAILURE \emptydescription
114
+ * \retval #PSA_ERROR_CORRUPTION_DETECTED \emptydescription
115
+ * \retval #PSA_ERROR_STORAGE_FAILURE \emptydescription
116
+ * \retval #PSA_ERROR_INSUFFICIENT_MEMORY \emptydescription
117
+ */
118
+ psa_status_t mbedtls_psa_ecp_export_public_key(
119
+ const psa_key_attributes_t *attributes,
120
+ const uint8_t *key_buffer, size_t key_buffer_size,
121
+ uint8_t *data, size_t data_size, size_t *data_length);
122
+
123
+ /**
124
+ * \brief Generate an ECP key.
125
+ *
126
+ * \note The signature of the function is that of a PSA driver generate_key
127
+ * entry point.
128
+ *
129
+ * \param[in] attributes The attributes for the ECP key to generate.
130
+ * \param[out] key_buffer Buffer where the key data is to be written.
131
+ * \param[in] key_buffer_size Size of \p key_buffer in bytes.
132
+ * \param[out] key_buffer_length On success, the number of bytes written in
133
+ * \p key_buffer.
134
+ *
135
+ * \retval #PSA_SUCCESS
136
+ * The key was successfully generated.
137
+ * \retval #PSA_ERROR_NOT_SUPPORTED
138
+ * Key length or type not supported.
139
+ * \retval #PSA_ERROR_BUFFER_TOO_SMALL
140
+ * The size of \p key_buffer is too small.
141
+ */
142
+ psa_status_t mbedtls_psa_ecp_generate_key(
143
+ const psa_key_attributes_t *attributes,
144
+ uint8_t *key_buffer, size_t key_buffer_size, size_t *key_buffer_length);
145
+
146
+ /** Sign an already-calculated hash with ECDSA.
147
+ *
148
+ * \note The signature of this function is that of a PSA driver
149
+ * sign_hash entry point. This function behaves as a sign_hash
150
+ * entry point as defined in the PSA driver interface specification for
151
+ * transparent drivers.
152
+ *
153
+ * \param[in] attributes The attributes of the ECC key to use for the
154
+ * operation.
155
+ * \param[in] key_buffer The buffer containing the ECC key context.
156
+ * format.
157
+ * \param[in] key_buffer_size Size of the \p key_buffer buffer in bytes.
158
+ * \param[in] alg Randomized or deterministic ECDSA algorithm.
159
+ * \param[in] hash The hash or message to sign.
160
+ * \param[in] hash_length Size of the \p hash buffer in bytes.
161
+ * \param[out] signature Buffer where the signature is to be written.
162
+ * \param[in] signature_size Size of the \p signature buffer in bytes.
163
+ * \param[out] signature_length On success, the number of bytes
164
+ * that make up the returned signature value.
165
+ *
166
+ * \retval #PSA_SUCCESS \emptydescription
167
+ * \retval #PSA_ERROR_BUFFER_TOO_SMALL
168
+ * The size of the \p signature buffer is too small. You can
169
+ * determine a sufficient buffer size by calling
170
+ * #PSA_SIGN_OUTPUT_SIZE(\c PSA_KEY_TYPE_ECC_KEY_PAIR, \c key_bits,
171
+ * \p alg) where \c key_bits is the bit-size of the ECC key.
172
+ * \retval #PSA_ERROR_NOT_SUPPORTED \emptydescription
173
+ * \retval #PSA_ERROR_INVALID_ARGUMENT \emptydescription
174
+ * \retval #PSA_ERROR_INSUFFICIENT_MEMORY \emptydescription
175
+ * \retval #PSA_ERROR_CORRUPTION_DETECTED \emptydescription
176
+ * \retval #PSA_ERROR_INSUFFICIENT_ENTROPY \emptydescription
177
+ */
178
+ psa_status_t mbedtls_psa_ecdsa_sign_hash(
179
+ const psa_key_attributes_t *attributes,
180
+ const uint8_t *key_buffer, size_t key_buffer_size,
181
+ psa_algorithm_t alg, const uint8_t *hash, size_t hash_length,
182
+ uint8_t *signature, size_t signature_size, size_t *signature_length);
183
+
184
+ /**
185
+ * \brief Verify an ECDSA hash or short message signature.
186
+ *
187
+ * \note The signature of this function is that of a PSA driver
188
+ * verify_hash entry point. This function behaves as a verify_hash
189
+ * entry point as defined in the PSA driver interface specification for
190
+ * transparent drivers.
191
+ *
192
+ * \param[in] attributes The attributes of the ECC key to use for the
193
+ * operation.
194
+ * \param[in] key_buffer The buffer containing the ECC key context.
195
+ * format.
196
+ * \param[in] key_buffer_size Size of the \p key_buffer buffer in bytes.
197
+ * \param[in] alg Randomized or deterministic ECDSA algorithm.
198
+ * \param[in] hash The hash or message whose signature is to be
199
+ * verified.
200
+ * \param[in] hash_length Size of the \p hash buffer in bytes.
201
+ * \param[in] signature Buffer containing the signature to verify.
202
+ * \param[in] signature_length Size of the \p signature buffer in bytes.
203
+ *
204
+ * \retval #PSA_SUCCESS
205
+ * The signature is valid.
206
+ * \retval #PSA_ERROR_INVALID_SIGNATURE
207
+ * The calculation was performed successfully, but the passed
208
+ * signature is not a valid signature.
209
+ * \retval #PSA_ERROR_NOT_SUPPORTED \emptydescription
210
+ * \retval #PSA_ERROR_INVALID_ARGUMENT \emptydescription
211
+ * \retval #PSA_ERROR_INSUFFICIENT_MEMORY \emptydescription
212
+ */
213
+ psa_status_t mbedtls_psa_ecdsa_verify_hash(
214
+ const psa_key_attributes_t *attributes,
215
+ const uint8_t *key_buffer, size_t key_buffer_size,
216
+ psa_algorithm_t alg, const uint8_t *hash, size_t hash_length,
217
+ const uint8_t *signature, size_t signature_length);
218
+
219
+
220
+ /** Perform a key agreement and return the raw ECDH shared secret.
221
+ *
222
+ * \note The signature of this function is that of a PSA driver
223
+ * key_agreement entry point. This function behaves as a key_agreement
224
+ * entry point as defined in the PSA driver interface specification for
225
+ * transparent drivers.
226
+ *
227
+ * \param[in] attributes The attributes of the key to use for the
228
+ * operation.
229
+ * \param[in] key_buffer The buffer containing the private key
230
+ * context.
231
+ * \param[in] key_buffer_size Size of the \p key_buffer buffer in
232
+ * bytes.
233
+ * \param[in] alg A key agreement algorithm that is
234
+ * compatible with the type of the key.
235
+ * \param[in] peer_key The buffer containing the key context
236
+ * of the peer's public key.
237
+ * \param[in] peer_key_length Size of the \p peer_key buffer in
238
+ * bytes.
239
+ * \param[out] shared_secret The buffer to which the shared secret
240
+ * is to be written.
241
+ * \param[in] shared_secret_size Size of the \p shared_secret buffer in
242
+ * bytes.
243
+ * \param[out] shared_secret_length On success, the number of bytes that make
244
+ * up the returned shared secret.
245
+ * \retval #PSA_SUCCESS
246
+ * Success. Shared secret successfully calculated.
247
+ * \retval #PSA_ERROR_INVALID_HANDLE \emptydescription
248
+ * \retval #PSA_ERROR_NOT_PERMITTED \emptydescription
249
+ * \retval #PSA_ERROR_INVALID_ARGUMENT
250
+ * \p alg is not a key agreement algorithm, or
251
+ * \p private_key is not compatible with \p alg,
252
+ * or \p peer_key is not valid for \p alg or not compatible with
253
+ * \p private_key.
254
+ * \retval #PSA_ERROR_BUFFER_TOO_SMALL
255
+ * \p shared_secret_size is too small
256
+ * \retval #PSA_ERROR_NOT_SUPPORTED
257
+ * \p alg is not a supported key agreement algorithm.
258
+ * \retval #PSA_ERROR_INSUFFICIENT_MEMORY \emptydescription
259
+ * \retval #PSA_ERROR_CORRUPTION_DETECTED \emptydescription
260
+ */
261
+ psa_status_t mbedtls_psa_key_agreement_ecdh(
262
+ const psa_key_attributes_t *attributes,
263
+ const uint8_t *key_buffer, size_t key_buffer_size,
264
+ psa_algorithm_t alg, const uint8_t *peer_key, size_t peer_key_length,
265
+ uint8_t *shared_secret, size_t shared_secret_size,
266
+ size_t *shared_secret_length);
267
+ #endif /* PSA_CRYPTO_ECP_H */
@@ -0,0 +1,361 @@
1
+ /*
2
+ * PSA FFDH layer on top of Mbed TLS 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
+ /* This header is only needed because it defines
14
+ * MBEDTLS_DHM_RFC7919_FFDHEXXXX_[P|G]_BIN symbols that are used in
15
+ * mbedtls_psa_ffdh_set_prime_generator(). Apart from that, this module
16
+ * only uses bignum functions for arithmetic. */
17
+ #include <mbedtls/dhm.h>
18
+
19
+ #include <psa/crypto.h>
20
+ #include "psa_crypto_core.h"
21
+ #include "psa_crypto_ffdh.h"
22
+ #include "psa_crypto_random_impl.h"
23
+ #include "mbedtls/platform.h"
24
+ #include "mbedtls/error.h"
25
+
26
+ #if defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_DH_KEY_PAIR_EXPORT) || \
27
+ defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_DH_KEY_PAIR_GENERATE) || \
28
+ defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_DH_PUBLIC_KEY) || \
29
+ defined(MBEDTLS_PSA_BUILTIN_ALG_FFDH)
30
+ static psa_status_t mbedtls_psa_ffdh_set_prime_generator(size_t key_size,
31
+ mbedtls_mpi *P,
32
+ mbedtls_mpi *G)
33
+ {
34
+ const unsigned char *dhm_P = NULL;
35
+ const unsigned char *dhm_G = NULL;
36
+ size_t dhm_size_P = 0;
37
+ size_t dhm_size_G = 0;
38
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
39
+
40
+ if (P == NULL && G == NULL) {
41
+ return PSA_ERROR_INVALID_ARGUMENT;
42
+ }
43
+
44
+ #if defined(MBEDTLS_PSA_BUILTIN_DH_RFC7919_2048)
45
+ static const unsigned char dhm_P_2048[] =
46
+ MBEDTLS_DHM_RFC7919_FFDHE2048_P_BIN;
47
+ static const unsigned char dhm_G_2048[] =
48
+ MBEDTLS_DHM_RFC7919_FFDHE2048_G_BIN;
49
+ #endif /* MBEDTLS_PSA_BUILTIN_DH_RFC7919_2048 */
50
+ #if defined(MBEDTLS_PSA_BUILTIN_DH_RFC7919_3072)
51
+ static const unsigned char dhm_P_3072[] =
52
+ MBEDTLS_DHM_RFC7919_FFDHE3072_P_BIN;
53
+ static const unsigned char dhm_G_3072[] =
54
+ MBEDTLS_DHM_RFC7919_FFDHE3072_G_BIN;
55
+ #endif /* MBEDTLS_PSA_BUILTIN_DH_RFC7919_3072 */
56
+ #if defined(MBEDTLS_PSA_BUILTIN_DH_RFC7919_4096)
57
+ static const unsigned char dhm_P_4096[] =
58
+ MBEDTLS_DHM_RFC7919_FFDHE4096_P_BIN;
59
+ static const unsigned char dhm_G_4096[] =
60
+ MBEDTLS_DHM_RFC7919_FFDHE4096_G_BIN;
61
+ #endif /* MBEDTLS_PSA_BUILTIN_DH_RFC7919_4096 */
62
+ #if defined(MBEDTLS_PSA_BUILTIN_DH_RFC7919_6144)
63
+ static const unsigned char dhm_P_6144[] =
64
+ MBEDTLS_DHM_RFC7919_FFDHE6144_P_BIN;
65
+ static const unsigned char dhm_G_6144[] =
66
+ MBEDTLS_DHM_RFC7919_FFDHE6144_G_BIN;
67
+ #endif /* MBEDTLS_PSA_BUILTIN_DH_RFC7919_6144 */
68
+ #if defined(MBEDTLS_PSA_BUILTIN_DH_RFC7919_8192)
69
+ static const unsigned char dhm_P_8192[] =
70
+ MBEDTLS_DHM_RFC7919_FFDHE8192_P_BIN;
71
+ static const unsigned char dhm_G_8192[] =
72
+ MBEDTLS_DHM_RFC7919_FFDHE8192_G_BIN;
73
+ #endif /* MBEDTLS_PSA_BUILTIN_DH_RFC7919_8192 */
74
+
75
+ switch (key_size) {
76
+ #if defined(MBEDTLS_PSA_BUILTIN_DH_RFC7919_2048)
77
+ case sizeof(dhm_P_2048):
78
+ dhm_P = dhm_P_2048;
79
+ dhm_G = dhm_G_2048;
80
+ dhm_size_P = sizeof(dhm_P_2048);
81
+ dhm_size_G = sizeof(dhm_G_2048);
82
+ break;
83
+ #endif /* MBEDTLS_PSA_BUILTIN_DH_RFC7919_2048 */
84
+ #if defined(MBEDTLS_PSA_BUILTIN_DH_RFC7919_3072)
85
+ case sizeof(dhm_P_3072):
86
+ dhm_P = dhm_P_3072;
87
+ dhm_G = dhm_G_3072;
88
+ dhm_size_P = sizeof(dhm_P_3072);
89
+ dhm_size_G = sizeof(dhm_G_3072);
90
+ break;
91
+ #endif /* MBEDTLS_PSA_BUILTIN_DH_RFC7919_3072 */
92
+ #if defined(MBEDTLS_PSA_BUILTIN_DH_RFC7919_4096)
93
+ case sizeof(dhm_P_4096):
94
+ dhm_P = dhm_P_4096;
95
+ dhm_G = dhm_G_4096;
96
+ dhm_size_P = sizeof(dhm_P_4096);
97
+ dhm_size_G = sizeof(dhm_G_4096);
98
+ break;
99
+ #endif /* MBEDTLS_PSA_BUILTIN_DH_RFC7919_4096 */
100
+ #if defined(MBEDTLS_PSA_BUILTIN_DH_RFC7919_6144)
101
+ case sizeof(dhm_P_6144):
102
+ dhm_P = dhm_P_6144;
103
+ dhm_G = dhm_G_6144;
104
+ dhm_size_P = sizeof(dhm_P_6144);
105
+ dhm_size_G = sizeof(dhm_G_6144);
106
+ break;
107
+ #endif /* MBEDTLS_PSA_BUILTIN_DH_RFC7919_6144 */
108
+ #if defined(MBEDTLS_PSA_BUILTIN_DH_RFC7919_8192)
109
+ case sizeof(dhm_P_8192):
110
+ dhm_P = dhm_P_8192;
111
+ dhm_G = dhm_G_8192;
112
+ dhm_size_P = sizeof(dhm_P_8192);
113
+ dhm_size_G = sizeof(dhm_G_8192);
114
+ break;
115
+ #endif /* MBEDTLS_PSA_BUILTIN_DH_RFC7919_8192 */
116
+ default:
117
+ return PSA_ERROR_INVALID_ARGUMENT;
118
+ }
119
+
120
+ if (P != NULL) {
121
+ MBEDTLS_MPI_CHK(mbedtls_mpi_read_binary(P, dhm_P,
122
+ dhm_size_P));
123
+ }
124
+ if (G != NULL) {
125
+ MBEDTLS_MPI_CHK(mbedtls_mpi_read_binary(G, dhm_G,
126
+ dhm_size_G));
127
+ }
128
+
129
+ cleanup:
130
+ if (ret != 0) {
131
+ return mbedtls_to_psa_error(ret);
132
+ }
133
+
134
+ return PSA_SUCCESS;
135
+ }
136
+ #endif /* MBEDTLS_PSA_BUILTIN_KEY_TYPE_DH_KEY_PAIR_EXPORT ||
137
+ MBEDTLS_PSA_BUILTIN_KEY_TYPE_DH_KEY_PAIR_GENERATE ||
138
+ MBEDTLS_PSA_BUILTIN_KEY_TYPE_DH_PUBLIC_KEY ||
139
+ MBEDTLS_PSA_BUILTIN_ALG_FFDH */
140
+
141
+ #if defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_DH_KEY_PAIR_EXPORT) || \
142
+ defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_DH_PUBLIC_KEY)
143
+ psa_status_t mbedtls_psa_ffdh_export_public_key(
144
+ const psa_key_attributes_t *attributes,
145
+ const uint8_t *key_buffer,
146
+ size_t key_buffer_size,
147
+ uint8_t *data,
148
+ size_t data_size,
149
+ size_t *data_length)
150
+ {
151
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
152
+ psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED;
153
+ mbedtls_mpi GX, G, X, P;
154
+ psa_key_type_t type = attributes->type;
155
+
156
+ if (PSA_KEY_TYPE_IS_PUBLIC_KEY(type)) {
157
+ if (key_buffer_size > data_size) {
158
+ return PSA_ERROR_BUFFER_TOO_SMALL;
159
+ }
160
+ memcpy(data, key_buffer, key_buffer_size);
161
+ memset(data + key_buffer_size, 0,
162
+ data_size - key_buffer_size);
163
+ *data_length = key_buffer_size;
164
+ return PSA_SUCCESS;
165
+ }
166
+
167
+ mbedtls_mpi_init(&GX); mbedtls_mpi_init(&G);
168
+ mbedtls_mpi_init(&X); mbedtls_mpi_init(&P);
169
+
170
+ size_t key_len = PSA_BITS_TO_BYTES(attributes->bits);
171
+ if (key_len > data_size) {
172
+ status = PSA_ERROR_BUFFER_TOO_SMALL;
173
+ goto cleanup;
174
+ }
175
+
176
+ status = mbedtls_psa_ffdh_set_prime_generator(key_len, &P, &G);
177
+
178
+ if (status != PSA_SUCCESS) {
179
+ goto cleanup;
180
+ }
181
+
182
+ MBEDTLS_MPI_CHK(mbedtls_mpi_read_binary(&X, key_buffer,
183
+ key_buffer_size));
184
+
185
+ MBEDTLS_MPI_CHK(mbedtls_mpi_exp_mod(&GX, &G, &X, &P, NULL));
186
+ MBEDTLS_MPI_CHK(mbedtls_mpi_write_binary(&GX, data, key_len));
187
+
188
+ *data_length = key_len;
189
+
190
+ ret = 0;
191
+ cleanup:
192
+ mbedtls_mpi_free(&P); mbedtls_mpi_free(&G);
193
+ mbedtls_mpi_free(&X); mbedtls_mpi_free(&GX);
194
+
195
+ if (status == PSA_SUCCESS && ret != 0) {
196
+ status = mbedtls_to_psa_error(ret);
197
+ }
198
+
199
+ return status;
200
+ }
201
+ #endif /* MBEDTLS_PSA_BUILTIN_KEY_TYPE_DH_KEY_PAIR_EXPORT ||
202
+ MBEDTLS_PSA_BUILTIN_KEY_TYPE_DH_PUBLIC_KEY */
203
+
204
+ #if defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_DH_KEY_PAIR_GENERATE)
205
+ psa_status_t mbedtls_psa_ffdh_generate_key(
206
+ const psa_key_attributes_t *attributes,
207
+ uint8_t *key_buffer, size_t key_buffer_size, size_t *key_buffer_length)
208
+ {
209
+ mbedtls_mpi X, P;
210
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
211
+ psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED;
212
+ mbedtls_mpi_init(&P); mbedtls_mpi_init(&X);
213
+ (void) attributes;
214
+
215
+ status = mbedtls_psa_ffdh_set_prime_generator(key_buffer_size, &P, NULL);
216
+
217
+ if (status != PSA_SUCCESS) {
218
+ goto cleanup;
219
+ }
220
+
221
+ /* RFC7919: Traditional finite field Diffie-Hellman has each peer choose their
222
+ secret exponent from the range [2, P-2].
223
+ Select random value in range [3, P-1] and decrease it by 1. */
224
+ MBEDTLS_MPI_CHK(mbedtls_mpi_random(&X, 3, &P, mbedtls_psa_get_random,
225
+ MBEDTLS_PSA_RANDOM_STATE));
226
+ MBEDTLS_MPI_CHK(mbedtls_mpi_sub_int(&X, &X, 1));
227
+ MBEDTLS_MPI_CHK(mbedtls_mpi_write_binary(&X, key_buffer, key_buffer_size));
228
+ *key_buffer_length = key_buffer_size;
229
+
230
+ cleanup:
231
+ mbedtls_mpi_free(&P); mbedtls_mpi_free(&X);
232
+ if (status == PSA_SUCCESS && ret != 0) {
233
+ return mbedtls_to_psa_error(ret);
234
+ }
235
+
236
+ return status;
237
+ }
238
+ #endif /* MBEDTLS_PSA_BUILTIN_KEY_TYPE_DH_KEY_PAIR_GENERATE */
239
+
240
+ #if defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_DH_KEY_PAIR_IMPORT)
241
+ psa_status_t mbedtls_psa_ffdh_import_key(
242
+ const psa_key_attributes_t *attributes,
243
+ const uint8_t *data, size_t data_length,
244
+ uint8_t *key_buffer, size_t key_buffer_size,
245
+ size_t *key_buffer_length, size_t *bits)
246
+ {
247
+ (void) attributes;
248
+
249
+ if (key_buffer_size < data_length) {
250
+ return PSA_ERROR_BUFFER_TOO_SMALL;
251
+ }
252
+ memcpy(key_buffer, data, data_length);
253
+ *key_buffer_length = data_length;
254
+ *bits = PSA_BYTES_TO_BITS(data_length);
255
+
256
+ return PSA_SUCCESS;
257
+ }
258
+ #endif /* MBEDTLS_PSA_BUILTIN_KEY_TYPE_DH_KEY_PAIR_IMPORT */
259
+
260
+ #if defined(MBEDTLS_PSA_BUILTIN_ALG_FFDH)
261
+ psa_status_t mbedtls_psa_ffdh_key_agreement(
262
+ const psa_key_attributes_t *attributes,
263
+ const uint8_t *peer_key,
264
+ size_t peer_key_length,
265
+ const uint8_t *key_buffer,
266
+ size_t key_buffer_size,
267
+ uint8_t *shared_secret,
268
+ size_t shared_secret_size,
269
+ size_t *shared_secret_length)
270
+ {
271
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
272
+ psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED;
273
+ mbedtls_mpi P, X, GY, K;
274
+ const size_t calculated_shared_secret_size = key_buffer_size;
275
+
276
+ if (!PSA_KEY_TYPE_IS_DH_KEY_PAIR(psa_get_key_type(attributes))) {
277
+ return PSA_ERROR_INVALID_ARGUMENT;
278
+ }
279
+
280
+ if (peer_key_length != key_buffer_size) {
281
+ return PSA_ERROR_INVALID_ARGUMENT;
282
+ }
283
+
284
+ /* This has been checked by the core, but keep a local check too. */
285
+ if (calculated_shared_secret_size > shared_secret_size) {
286
+ return PSA_ERROR_BUFFER_TOO_SMALL;
287
+ }
288
+
289
+ mbedtls_mpi_init(&P);
290
+ mbedtls_mpi_init(&X); mbedtls_mpi_init(&GY);
291
+ mbedtls_mpi_init(&K);
292
+
293
+ status = mbedtls_psa_ffdh_set_prime_generator(
294
+ PSA_BITS_TO_BYTES(attributes->bits), &P, NULL);
295
+
296
+ if (status != PSA_SUCCESS) {
297
+ goto cleanup;
298
+ }
299
+
300
+ MBEDTLS_MPI_CHK(mbedtls_mpi_read_binary(&GY, peer_key,
301
+ peer_key_length));
302
+
303
+ /* RFC 7919 5.1: validate the peer's public key: 1 < GY < P-1
304
+ *
305
+ * This check is sufficient to ensure GY is not of low order, because we're
306
+ * using a safe prime (that is, q = (p-1) / 2 is also prime), so the only
307
+ * group elements of low order are 1 and p-1. (Obviously we also want to
308
+ * exclude 0 that is not a group element, and values >= p as they are not
309
+ * residues mod p.)
310
+ *
311
+ * Note: we know we're using a safe prime because the only FFDH groups
312
+ * defined by the PSA spec are from RFC 7919 (since version 1.0) and RFC
313
+ * 3525 (since v1.4, not yet supported in tf-psa-crypto as of writing this
314
+ * comment), which both use safe primes.
315
+ *
316
+ * Note: NIST SP 800-56Ar3 5.7.1.1 (2) has the check on the shared secret,
317
+ * but checking before is equivalent (unless our secret key is exactly
318
+ * (p-1)/2, which has negligible probability and can't be influenced by the
319
+ * adversary). Checking before is cleaner in terms of side channel analysis,
320
+ * as we haven't loaded our secret yet, so no worries about branches.
321
+ *
322
+ * Use X as a temporary, since we haven't loaded it yet.
323
+ */
324
+ MBEDTLS_MPI_CHK(mbedtls_mpi_sub_int(&X, &P, 1)); // x = p - 1
325
+ if (mbedtls_mpi_cmp_mpi(&GY, &X) >= 0) {
326
+ status = PSA_ERROR_INVALID_ARGUMENT;
327
+ goto cleanup;
328
+ }
329
+ MBEDTLS_MPI_CHK(mbedtls_mpi_lset(&X, 1)); // x = 1
330
+ if (mbedtls_mpi_cmp_mpi(&GY, &X) <= 0) {
331
+ status = PSA_ERROR_INVALID_ARGUMENT;
332
+ goto cleanup;
333
+ }
334
+
335
+ MBEDTLS_MPI_CHK(mbedtls_mpi_read_binary(&X, key_buffer,
336
+ key_buffer_size));
337
+
338
+ /* Calculate shared secret public key: K = G^(XY) mod P = GY^X mod P */
339
+ MBEDTLS_MPI_CHK(mbedtls_mpi_exp_mod(&K, &GY, &X, &P, NULL));
340
+
341
+ MBEDTLS_MPI_CHK(mbedtls_mpi_write_binary(&K, shared_secret,
342
+ calculated_shared_secret_size));
343
+
344
+ *shared_secret_length = calculated_shared_secret_size;
345
+
346
+ ret = 0;
347
+
348
+ cleanup:
349
+ mbedtls_mpi_free(&P);
350
+ mbedtls_mpi_free(&X); mbedtls_mpi_free(&GY);
351
+ mbedtls_mpi_free(&K);
352
+
353
+ if (status == PSA_SUCCESS && ret != 0) {
354
+ status = mbedtls_to_psa_error(ret);
355
+ }
356
+
357
+ return status;
358
+ }
359
+ #endif /* MBEDTLS_PSA_BUILTIN_ALG_FFDH */
360
+
361
+ #endif /* MBEDTLS_PSA_CRYPTO_C */