@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,646 @@
1
+ /*
2
+ * PSA AEAD entry points
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_aead.h"
14
+ #include "psa_crypto_core.h"
15
+ #include "psa_crypto_cipher.h"
16
+
17
+ #include <string.h>
18
+ #include "mbedtls/platform.h"
19
+
20
+ #include "mbedtls/ccm.h"
21
+ #include "mbedtls/chachapoly.h"
22
+ #include "mbedtls/cipher.h"
23
+ #include "mbedtls/gcm.h"
24
+ #include "mbedtls/error.h"
25
+
26
+ static psa_status_t psa_aead_setup(
27
+ mbedtls_psa_aead_operation_t *operation,
28
+ const psa_key_attributes_t *attributes,
29
+ const uint8_t *key_buffer,
30
+ size_t key_buffer_size,
31
+ psa_algorithm_t alg)
32
+ {
33
+ psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED;
34
+ mbedtls_cipher_id_t cipher_id;
35
+ mbedtls_cipher_mode_t mode;
36
+ size_t key_bits = attributes->bits;
37
+ (void) key_buffer_size;
38
+
39
+ status = mbedtls_cipher_values_from_psa(alg, attributes->type,
40
+ &key_bits, &mode, &cipher_id);
41
+ if (status != PSA_SUCCESS) {
42
+ return status;
43
+ }
44
+
45
+ switch (PSA_ALG_AEAD_WITH_SHORTENED_TAG(alg, 0)) {
46
+ #if defined(MBEDTLS_PSA_BUILTIN_ALG_CCM)
47
+ case PSA_ALG_AEAD_WITH_SHORTENED_TAG(PSA_ALG_CCM, 0):
48
+ operation->alg = PSA_ALG_CCM;
49
+ /* CCM allows the following tag lengths: 4, 6, 8, 10, 12, 14, 16.
50
+ * The call to mbedtls_ccm_encrypt_and_tag or
51
+ * mbedtls_ccm_auth_decrypt will validate the tag length. */
52
+ if (PSA_BLOCK_CIPHER_BLOCK_LENGTH(attributes->type) != 16) {
53
+ return PSA_ERROR_INVALID_ARGUMENT;
54
+ }
55
+
56
+ mbedtls_ccm_init(&operation->ctx.ccm);
57
+ status = mbedtls_to_psa_error(
58
+ mbedtls_ccm_setkey(&operation->ctx.ccm, cipher_id,
59
+ key_buffer, (unsigned int) key_bits));
60
+ if (status != PSA_SUCCESS) {
61
+ return status;
62
+ }
63
+ break;
64
+ #endif /* MBEDTLS_PSA_BUILTIN_ALG_CCM */
65
+
66
+ #if defined(MBEDTLS_PSA_BUILTIN_ALG_GCM)
67
+ case PSA_ALG_AEAD_WITH_SHORTENED_TAG(PSA_ALG_GCM, 0):
68
+ operation->alg = PSA_ALG_GCM;
69
+ /* GCM allows the following tag lengths: 4, 8, 12, 13, 14, 15, 16.
70
+ * The call to mbedtls_gcm_crypt_and_tag or
71
+ * mbedtls_gcm_auth_decrypt will validate the tag length. */
72
+ if (PSA_BLOCK_CIPHER_BLOCK_LENGTH(attributes->type) != 16) {
73
+ return PSA_ERROR_INVALID_ARGUMENT;
74
+ }
75
+
76
+ mbedtls_gcm_init(&operation->ctx.gcm);
77
+ status = mbedtls_to_psa_error(
78
+ mbedtls_gcm_setkey(&operation->ctx.gcm, cipher_id,
79
+ key_buffer, (unsigned int) key_bits));
80
+ if (status != PSA_SUCCESS) {
81
+ return status;
82
+ }
83
+ break;
84
+ #endif /* MBEDTLS_PSA_BUILTIN_ALG_GCM */
85
+
86
+ #if defined(MBEDTLS_PSA_BUILTIN_ALG_CHACHA20_POLY1305)
87
+ case PSA_ALG_AEAD_WITH_SHORTENED_TAG(PSA_ALG_CHACHA20_POLY1305, 0):
88
+ operation->alg = PSA_ALG_CHACHA20_POLY1305;
89
+ /* We only support the default tag length. */
90
+ if (alg != PSA_ALG_CHACHA20_POLY1305) {
91
+ return PSA_ERROR_NOT_SUPPORTED;
92
+ }
93
+
94
+ mbedtls_chachapoly_init(&operation->ctx.chachapoly);
95
+ status = mbedtls_to_psa_error(
96
+ mbedtls_chachapoly_setkey(&operation->ctx.chachapoly,
97
+ key_buffer));
98
+ if (status != PSA_SUCCESS) {
99
+ return status;
100
+ }
101
+ break;
102
+ #endif /* MBEDTLS_PSA_BUILTIN_ALG_CHACHA20_POLY1305 */
103
+
104
+ default:
105
+ (void) status;
106
+ (void) key_buffer;
107
+ return PSA_ERROR_NOT_SUPPORTED;
108
+ }
109
+
110
+ operation->key_type = psa_get_key_type(attributes);
111
+
112
+ operation->tag_length = PSA_ALG_AEAD_GET_TAG_LENGTH(alg);
113
+
114
+ return PSA_SUCCESS;
115
+ }
116
+
117
+ psa_status_t mbedtls_psa_aead_encrypt(
118
+ const psa_key_attributes_t *attributes,
119
+ const uint8_t *key_buffer, size_t key_buffer_size,
120
+ psa_algorithm_t alg,
121
+ const uint8_t *nonce, size_t nonce_length,
122
+ const uint8_t *additional_data, size_t additional_data_length,
123
+ const uint8_t *plaintext, size_t plaintext_length,
124
+ uint8_t *ciphertext, size_t ciphertext_size, size_t *ciphertext_length)
125
+ {
126
+ psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED;
127
+ mbedtls_psa_aead_operation_t operation = MBEDTLS_PSA_AEAD_OPERATION_INIT;
128
+ uint8_t *tag;
129
+
130
+ status = psa_aead_setup(&operation, attributes, key_buffer,
131
+ key_buffer_size, alg);
132
+
133
+ if (status != PSA_SUCCESS) {
134
+ goto exit;
135
+ }
136
+
137
+ /* For all currently supported modes, the tag is at the end of the
138
+ * ciphertext. */
139
+ if (ciphertext_size < (plaintext_length + operation.tag_length)) {
140
+ status = PSA_ERROR_BUFFER_TOO_SMALL;
141
+ goto exit;
142
+ }
143
+ tag = ciphertext + plaintext_length;
144
+
145
+ #if defined(MBEDTLS_PSA_BUILTIN_ALG_CCM)
146
+ if (operation.alg == PSA_ALG_CCM) {
147
+ status = mbedtls_to_psa_error(
148
+ mbedtls_ccm_encrypt_and_tag(&operation.ctx.ccm,
149
+ plaintext_length,
150
+ nonce, nonce_length,
151
+ additional_data,
152
+ additional_data_length,
153
+ plaintext, ciphertext,
154
+ tag, operation.tag_length));
155
+ } else
156
+ #endif /* MBEDTLS_PSA_BUILTIN_ALG_CCM */
157
+ #if defined(MBEDTLS_PSA_BUILTIN_ALG_GCM)
158
+ if (operation.alg == PSA_ALG_GCM) {
159
+ status = mbedtls_to_psa_error(
160
+ mbedtls_gcm_crypt_and_tag(&operation.ctx.gcm,
161
+ MBEDTLS_GCM_ENCRYPT,
162
+ plaintext_length,
163
+ nonce, nonce_length,
164
+ additional_data, additional_data_length,
165
+ plaintext, ciphertext,
166
+ operation.tag_length, tag));
167
+ } else
168
+ #endif /* MBEDTLS_PSA_BUILTIN_ALG_GCM */
169
+ #if defined(MBEDTLS_PSA_BUILTIN_ALG_CHACHA20_POLY1305)
170
+ if (operation.alg == PSA_ALG_CHACHA20_POLY1305) {
171
+ if (operation.tag_length != 16) {
172
+ status = PSA_ERROR_NOT_SUPPORTED;
173
+ goto exit;
174
+ }
175
+ status = mbedtls_to_psa_error(
176
+ mbedtls_chachapoly_encrypt_and_tag(&operation.ctx.chachapoly,
177
+ plaintext_length,
178
+ nonce,
179
+ additional_data,
180
+ additional_data_length,
181
+ plaintext,
182
+ ciphertext,
183
+ tag));
184
+ } else
185
+ #endif /* MBEDTLS_PSA_BUILTIN_ALG_CHACHA20_POLY1305 */
186
+ {
187
+ (void) tag;
188
+ (void) nonce;
189
+ (void) nonce_length;
190
+ (void) additional_data;
191
+ (void) additional_data_length;
192
+ (void) plaintext;
193
+ return PSA_ERROR_NOT_SUPPORTED;
194
+ }
195
+
196
+ if (status == PSA_SUCCESS) {
197
+ *ciphertext_length = plaintext_length + operation.tag_length;
198
+ }
199
+
200
+ exit:
201
+ mbedtls_psa_aead_abort(&operation);
202
+
203
+ return status;
204
+ }
205
+
206
+ /* Locate the tag in a ciphertext buffer containing the encrypted data
207
+ * followed by the tag. Return the length of the part preceding the tag in
208
+ * *plaintext_length. This is the size of the plaintext in modes where
209
+ * the encrypted data has the same size as the plaintext, such as
210
+ * CCM and GCM. */
211
+ static psa_status_t psa_aead_unpadded_locate_tag(size_t tag_length,
212
+ const uint8_t *ciphertext,
213
+ size_t ciphertext_length,
214
+ size_t plaintext_size,
215
+ const uint8_t **p_tag)
216
+ {
217
+ size_t payload_length;
218
+ if (tag_length > ciphertext_length) {
219
+ return PSA_ERROR_INVALID_ARGUMENT;
220
+ }
221
+ payload_length = ciphertext_length - tag_length;
222
+ if (payload_length > plaintext_size) {
223
+ return PSA_ERROR_BUFFER_TOO_SMALL;
224
+ }
225
+ *p_tag = ciphertext + payload_length;
226
+ return PSA_SUCCESS;
227
+ }
228
+
229
+ psa_status_t mbedtls_psa_aead_decrypt(
230
+ const psa_key_attributes_t *attributes,
231
+ const uint8_t *key_buffer, size_t key_buffer_size,
232
+ psa_algorithm_t alg,
233
+ const uint8_t *nonce, size_t nonce_length,
234
+ const uint8_t *additional_data, size_t additional_data_length,
235
+ const uint8_t *ciphertext, size_t ciphertext_length,
236
+ uint8_t *plaintext, size_t plaintext_size, size_t *plaintext_length)
237
+ {
238
+ psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED;
239
+ mbedtls_psa_aead_operation_t operation = MBEDTLS_PSA_AEAD_OPERATION_INIT;
240
+ const uint8_t *tag = NULL;
241
+
242
+ status = psa_aead_setup(&operation, attributes, key_buffer,
243
+ key_buffer_size, alg);
244
+
245
+ if (status != PSA_SUCCESS) {
246
+ goto exit;
247
+ }
248
+
249
+ status = psa_aead_unpadded_locate_tag(operation.tag_length,
250
+ ciphertext, ciphertext_length,
251
+ plaintext_size, &tag);
252
+ if (status != PSA_SUCCESS) {
253
+ goto exit;
254
+ }
255
+
256
+ #if defined(MBEDTLS_PSA_BUILTIN_ALG_CCM)
257
+ if (operation.alg == PSA_ALG_CCM) {
258
+ status = mbedtls_to_psa_error(
259
+ mbedtls_ccm_auth_decrypt(&operation.ctx.ccm,
260
+ ciphertext_length - operation.tag_length,
261
+ nonce, nonce_length,
262
+ additional_data,
263
+ additional_data_length,
264
+ ciphertext, plaintext,
265
+ tag, operation.tag_length));
266
+ } else
267
+ #endif /* MBEDTLS_PSA_BUILTIN_ALG_CCM */
268
+ #if defined(MBEDTLS_PSA_BUILTIN_ALG_GCM)
269
+ if (operation.alg == PSA_ALG_GCM) {
270
+ status = mbedtls_to_psa_error(
271
+ mbedtls_gcm_auth_decrypt(&operation.ctx.gcm,
272
+ ciphertext_length - operation.tag_length,
273
+ nonce, nonce_length,
274
+ additional_data,
275
+ additional_data_length,
276
+ tag, operation.tag_length,
277
+ ciphertext, plaintext));
278
+ } else
279
+ #endif /* MBEDTLS_PSA_BUILTIN_ALG_GCM */
280
+ #if defined(MBEDTLS_PSA_BUILTIN_ALG_CHACHA20_POLY1305)
281
+ if (operation.alg == PSA_ALG_CHACHA20_POLY1305) {
282
+ if (operation.tag_length != 16) {
283
+ status = PSA_ERROR_NOT_SUPPORTED;
284
+ goto exit;
285
+ }
286
+ status = mbedtls_to_psa_error(
287
+ mbedtls_chachapoly_auth_decrypt(&operation.ctx.chachapoly,
288
+ ciphertext_length - operation.tag_length,
289
+ nonce,
290
+ additional_data,
291
+ additional_data_length,
292
+ tag,
293
+ ciphertext,
294
+ plaintext));
295
+ } else
296
+ #endif /* MBEDTLS_PSA_BUILTIN_ALG_CHACHA20_POLY1305 */
297
+ {
298
+ (void) nonce;
299
+ (void) nonce_length;
300
+ (void) additional_data;
301
+ (void) additional_data_length;
302
+ (void) plaintext;
303
+ return PSA_ERROR_NOT_SUPPORTED;
304
+ }
305
+
306
+ if (status == PSA_SUCCESS) {
307
+ *plaintext_length = ciphertext_length - operation.tag_length;
308
+ }
309
+
310
+ exit:
311
+ mbedtls_psa_aead_abort(&operation);
312
+
313
+ return status;
314
+ }
315
+
316
+ /* Set the key and algorithm for a multipart authenticated encryption
317
+ * operation. */
318
+ psa_status_t mbedtls_psa_aead_encrypt_setup(
319
+ mbedtls_psa_aead_operation_t *operation,
320
+ const psa_key_attributes_t *attributes,
321
+ const uint8_t *key_buffer,
322
+ size_t key_buffer_size,
323
+ psa_algorithm_t alg)
324
+ {
325
+ psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED;
326
+
327
+ status = psa_aead_setup(operation, attributes, key_buffer,
328
+ key_buffer_size, alg);
329
+
330
+ if (status == PSA_SUCCESS) {
331
+ operation->is_encrypt = 1;
332
+ }
333
+
334
+ return status;
335
+ }
336
+
337
+ /* Set the key and algorithm for a multipart authenticated decryption
338
+ * operation. */
339
+ psa_status_t mbedtls_psa_aead_decrypt_setup(
340
+ mbedtls_psa_aead_operation_t *operation,
341
+ const psa_key_attributes_t *attributes,
342
+ const uint8_t *key_buffer,
343
+ size_t key_buffer_size,
344
+ psa_algorithm_t alg)
345
+ {
346
+ psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED;
347
+
348
+ status = psa_aead_setup(operation, attributes, key_buffer,
349
+ key_buffer_size, alg);
350
+
351
+ if (status == PSA_SUCCESS) {
352
+ operation->is_encrypt = 0;
353
+ }
354
+
355
+ return status;
356
+ }
357
+
358
+ /* Set a nonce for the multipart AEAD operation*/
359
+ psa_status_t mbedtls_psa_aead_set_nonce(
360
+ mbedtls_psa_aead_operation_t *operation,
361
+ const uint8_t *nonce,
362
+ size_t nonce_length)
363
+ {
364
+ psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED;
365
+
366
+ #if defined(MBEDTLS_PSA_BUILTIN_ALG_GCM)
367
+ if (operation->alg == PSA_ALG_GCM) {
368
+ status = mbedtls_to_psa_error(
369
+ mbedtls_gcm_starts(&operation->ctx.gcm,
370
+ operation->is_encrypt ?
371
+ MBEDTLS_GCM_ENCRYPT : MBEDTLS_GCM_DECRYPT,
372
+ nonce,
373
+ nonce_length));
374
+ } else
375
+ #endif /* MBEDTLS_PSA_BUILTIN_ALG_GCM */
376
+ #if defined(MBEDTLS_PSA_BUILTIN_ALG_CCM)
377
+ if (operation->alg == PSA_ALG_CCM) {
378
+ status = mbedtls_to_psa_error(
379
+ mbedtls_ccm_starts(&operation->ctx.ccm,
380
+ operation->is_encrypt ?
381
+ MBEDTLS_CCM_ENCRYPT : MBEDTLS_CCM_DECRYPT,
382
+ nonce,
383
+ nonce_length));
384
+ } else
385
+ #endif /* MBEDTLS_PSA_BUILTIN_ALG_CCM */
386
+ #if defined(MBEDTLS_PSA_BUILTIN_ALG_CHACHA20_POLY1305)
387
+ if (operation->alg == PSA_ALG_CHACHA20_POLY1305) {
388
+ /* Note - ChaChaPoly allows an 8 byte nonce, but we would have to
389
+ * allocate a buffer in the operation, copy the nonce to it and pad
390
+ * it, so for now check the nonce is 12 bytes, as
391
+ * mbedtls_chachapoly_starts() assumes it can read 12 bytes from the
392
+ * passed in buffer. */
393
+ if (nonce_length != 12) {
394
+ return PSA_ERROR_INVALID_ARGUMENT;
395
+ }
396
+
397
+ status = mbedtls_to_psa_error(
398
+ mbedtls_chachapoly_starts(&operation->ctx.chachapoly,
399
+ nonce,
400
+ operation->is_encrypt ?
401
+ MBEDTLS_CHACHAPOLY_ENCRYPT :
402
+ MBEDTLS_CHACHAPOLY_DECRYPT));
403
+ } else
404
+ #endif /* MBEDTLS_PSA_BUILTIN_ALG_CHACHA20_POLY1305 */
405
+ {
406
+ (void) operation;
407
+ (void) nonce;
408
+ (void) nonce_length;
409
+
410
+ return PSA_ERROR_NOT_SUPPORTED;
411
+ }
412
+
413
+ return status;
414
+ }
415
+
416
+ /* Declare the lengths of the message and additional data for AEAD. */
417
+ psa_status_t mbedtls_psa_aead_set_lengths(
418
+ mbedtls_psa_aead_operation_t *operation,
419
+ size_t ad_length,
420
+ size_t plaintext_length)
421
+ {
422
+ #if defined(MBEDTLS_PSA_BUILTIN_ALG_CCM)
423
+ if (operation->alg == PSA_ALG_CCM) {
424
+ return mbedtls_to_psa_error(
425
+ mbedtls_ccm_set_lengths(&operation->ctx.ccm,
426
+ ad_length,
427
+ plaintext_length,
428
+ operation->tag_length));
429
+
430
+ }
431
+ #else /* MBEDTLS_PSA_BUILTIN_ALG_CCM */
432
+ (void) operation;
433
+ (void) ad_length;
434
+ (void) plaintext_length;
435
+ #endif /* MBEDTLS_PSA_BUILTIN_ALG_CCM */
436
+
437
+ return PSA_SUCCESS;
438
+ }
439
+
440
+ /* Pass additional data to an active multipart AEAD operation. */
441
+ psa_status_t mbedtls_psa_aead_update_ad(
442
+ mbedtls_psa_aead_operation_t *operation,
443
+ const uint8_t *input,
444
+ size_t input_length)
445
+ {
446
+ psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED;
447
+
448
+ #if defined(MBEDTLS_PSA_BUILTIN_ALG_GCM)
449
+ if (operation->alg == PSA_ALG_GCM) {
450
+ status = mbedtls_to_psa_error(
451
+ mbedtls_gcm_update_ad(&operation->ctx.gcm, input, input_length));
452
+ } else
453
+ #endif /* MBEDTLS_PSA_BUILTIN_ALG_GCM */
454
+ #if defined(MBEDTLS_PSA_BUILTIN_ALG_CCM)
455
+ if (operation->alg == PSA_ALG_CCM) {
456
+ status = mbedtls_to_psa_error(
457
+ mbedtls_ccm_update_ad(&operation->ctx.ccm, input, input_length));
458
+ } else
459
+ #endif /* MBEDTLS_PSA_BUILTIN_ALG_CCM */
460
+ #if defined(MBEDTLS_PSA_BUILTIN_ALG_CHACHA20_POLY1305)
461
+ if (operation->alg == PSA_ALG_CHACHA20_POLY1305) {
462
+ status = mbedtls_to_psa_error(
463
+ mbedtls_chachapoly_update_aad(&operation->ctx.chachapoly,
464
+ input,
465
+ input_length));
466
+ } else
467
+ #endif /* MBEDTLS_PSA_BUILTIN_ALG_CHACHA20_POLY1305 */
468
+ {
469
+ (void) operation;
470
+ (void) input;
471
+ (void) input_length;
472
+
473
+ return PSA_ERROR_NOT_SUPPORTED;
474
+ }
475
+
476
+ return status;
477
+ }
478
+
479
+ /* Encrypt or decrypt a message fragment in an active multipart AEAD
480
+ * operation.*/
481
+ psa_status_t mbedtls_psa_aead_update(
482
+ mbedtls_psa_aead_operation_t *operation,
483
+ const uint8_t *input,
484
+ size_t input_length,
485
+ uint8_t *output,
486
+ size_t output_size,
487
+ size_t *output_length)
488
+ {
489
+ size_t update_output_length;
490
+ psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED;
491
+
492
+ update_output_length = input_length;
493
+
494
+ #if defined(MBEDTLS_PSA_BUILTIN_ALG_GCM)
495
+ if (operation->alg == PSA_ALG_GCM) {
496
+ status = mbedtls_to_psa_error(
497
+ mbedtls_gcm_update(&operation->ctx.gcm,
498
+ input, input_length,
499
+ output, output_size,
500
+ &update_output_length));
501
+ } else
502
+ #endif /* MBEDTLS_PSA_BUILTIN_ALG_GCM */
503
+ #if defined(MBEDTLS_PSA_BUILTIN_ALG_CCM)
504
+ if (operation->alg == PSA_ALG_CCM) {
505
+ if (output_size < input_length) {
506
+ return PSA_ERROR_BUFFER_TOO_SMALL;
507
+ }
508
+
509
+ status = mbedtls_to_psa_error(
510
+ mbedtls_ccm_update(&operation->ctx.ccm,
511
+ input, input_length,
512
+ output, output_size,
513
+ &update_output_length));
514
+ } else
515
+ #endif /* MBEDTLS_PSA_BUILTIN_ALG_CCM */
516
+ #if defined(MBEDTLS_PSA_BUILTIN_ALG_CHACHA20_POLY1305)
517
+ if (operation->alg == PSA_ALG_CHACHA20_POLY1305) {
518
+ if (output_size < input_length) {
519
+ return PSA_ERROR_BUFFER_TOO_SMALL;
520
+ }
521
+
522
+ status = mbedtls_to_psa_error(
523
+ mbedtls_chachapoly_update(&operation->ctx.chachapoly,
524
+ input_length,
525
+ input,
526
+ output));
527
+ } else
528
+ #endif /* MBEDTLS_PSA_BUILTIN_ALG_CHACHA20_POLY1305 */
529
+ {
530
+ (void) operation;
531
+ (void) input;
532
+ (void) output;
533
+ (void) output_size;
534
+
535
+ return PSA_ERROR_NOT_SUPPORTED;
536
+ }
537
+
538
+ if (status == PSA_SUCCESS) {
539
+ *output_length = update_output_length;
540
+ }
541
+
542
+ return status;
543
+ }
544
+
545
+ /* Finish encrypting a message in a multipart AEAD operation. */
546
+ psa_status_t mbedtls_psa_aead_finish(
547
+ mbedtls_psa_aead_operation_t *operation,
548
+ uint8_t *ciphertext,
549
+ size_t ciphertext_size,
550
+ size_t *ciphertext_length,
551
+ uint8_t *tag,
552
+ size_t tag_size,
553
+ size_t *tag_length)
554
+ {
555
+ psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED;
556
+ size_t finish_output_size = 0;
557
+
558
+ if (tag_size < operation->tag_length) {
559
+ return PSA_ERROR_BUFFER_TOO_SMALL;
560
+ }
561
+
562
+ #if defined(MBEDTLS_PSA_BUILTIN_ALG_GCM)
563
+ if (operation->alg == PSA_ALG_GCM) {
564
+ status = mbedtls_to_psa_error(
565
+ mbedtls_gcm_finish(&operation->ctx.gcm,
566
+ ciphertext, ciphertext_size, ciphertext_length,
567
+ tag, operation->tag_length));
568
+ } else
569
+ #endif /* MBEDTLS_PSA_BUILTIN_ALG_GCM */
570
+ #if defined(MBEDTLS_PSA_BUILTIN_ALG_CCM)
571
+ if (operation->alg == PSA_ALG_CCM) {
572
+ /* tag must be big enough to store a tag of size passed into set
573
+ * lengths. */
574
+ if (tag_size < operation->tag_length) {
575
+ return PSA_ERROR_BUFFER_TOO_SMALL;
576
+ }
577
+
578
+ status = mbedtls_to_psa_error(
579
+ mbedtls_ccm_finish(&operation->ctx.ccm,
580
+ tag, operation->tag_length));
581
+ } else
582
+ #endif /* MBEDTLS_PSA_BUILTIN_ALG_CCM */
583
+ #if defined(MBEDTLS_PSA_BUILTIN_ALG_CHACHA20_POLY1305)
584
+ if (operation->alg == PSA_ALG_CHACHA20_POLY1305) {
585
+ /* Belt and braces. Although the above tag_size check should have
586
+ * already done this, if we later start supporting smaller tag sizes
587
+ * for chachapoly, then passing a tag buffer smaller than 16 into here
588
+ * could cause a buffer overflow, so better safe than sorry. */
589
+ if (tag_size < 16) {
590
+ return PSA_ERROR_BUFFER_TOO_SMALL;
591
+ }
592
+
593
+ status = mbedtls_to_psa_error(
594
+ mbedtls_chachapoly_finish(&operation->ctx.chachapoly,
595
+ tag));
596
+ } else
597
+ #endif /* MBEDTLS_PSA_BUILTIN_ALG_CHACHA20_POLY1305 */
598
+ {
599
+ (void) ciphertext;
600
+ (void) ciphertext_size;
601
+ (void) ciphertext_length;
602
+ (void) tag;
603
+ (void) tag_size;
604
+ (void) tag_length;
605
+
606
+ return PSA_ERROR_NOT_SUPPORTED;
607
+ }
608
+
609
+ if (status == PSA_SUCCESS) {
610
+ /* This will be zero for all supported algorithms currently, but left
611
+ * here for future support. */
612
+ *ciphertext_length = finish_output_size;
613
+ *tag_length = operation->tag_length;
614
+ }
615
+
616
+ return status;
617
+ }
618
+
619
+ /* Abort an AEAD operation */
620
+ psa_status_t mbedtls_psa_aead_abort(
621
+ mbedtls_psa_aead_operation_t *operation)
622
+ {
623
+ switch (operation->alg) {
624
+ #if defined(MBEDTLS_PSA_BUILTIN_ALG_CCM)
625
+ case PSA_ALG_CCM:
626
+ mbedtls_ccm_free(&operation->ctx.ccm);
627
+ break;
628
+ #endif /* MBEDTLS_PSA_BUILTIN_ALG_CCM */
629
+ #if defined(MBEDTLS_PSA_BUILTIN_ALG_GCM)
630
+ case PSA_ALG_GCM:
631
+ mbedtls_gcm_free(&operation->ctx.gcm);
632
+ break;
633
+ #endif /* MBEDTLS_PSA_BUILTIN_ALG_GCM */
634
+ #if defined(MBEDTLS_PSA_BUILTIN_ALG_CHACHA20_POLY1305)
635
+ case PSA_ALG_CHACHA20_POLY1305:
636
+ mbedtls_chachapoly_free(&operation->ctx.chachapoly);
637
+ break;
638
+ #endif /* MBEDTLS_PSA_BUILTIN_ALG_CHACHA20_POLY1305 */
639
+ }
640
+
641
+ operation->is_encrypt = 0;
642
+
643
+ return PSA_SUCCESS;
644
+ }
645
+
646
+ #endif /* MBEDTLS_PSA_CRYPTO_C */