@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,631 @@
1
+ /**
2
+ * \file aes.h
3
+ *
4
+ * \brief This file contains AES definitions and functions.
5
+ *
6
+ * The Advanced Encryption Standard (AES) specifies a FIPS-approved
7
+ * cryptographic algorithm that can be used to protect electronic
8
+ * data.
9
+ *
10
+ * The AES algorithm is a symmetric block cipher that can
11
+ * encrypt and decrypt information. For more information, see
12
+ * <em>FIPS Publication 197: Advanced Encryption Standard</em> and
13
+ * <em>ISO/IEC 18033-2:2006: Information technology -- Security
14
+ * techniques -- Encryption algorithms -- Part 2: Asymmetric
15
+ * ciphers</em>.
16
+ *
17
+ * The AES-XTS block mode is standardized by NIST SP 800-38E
18
+ * <https://nvlpubs.nist.gov/nistpubs/legacy/sp/nistspecialpublication800-38e.pdf>
19
+ * and described in detail by IEEE P1619
20
+ * <https://ieeexplore.ieee.org/servlet/opac?punumber=4375278>.
21
+ */
22
+
23
+ /*
24
+ * Copyright The Mbed TLS Contributors
25
+ * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
26
+ */
27
+
28
+ #ifndef MBEDTLS_AES_H
29
+ #define MBEDTLS_AES_H
30
+ #include "mbedtls/private_access.h"
31
+
32
+ #include "mbedtls/build_info.h"
33
+ #include "mbedtls/platform_util.h"
34
+
35
+ #include <stddef.h>
36
+ #include <stdint.h>
37
+
38
+ /* padlock.c and aesni.c rely on these values! */
39
+ #define MBEDTLS_AES_ENCRYPT 1 /**< AES encryption. */
40
+ #define MBEDTLS_AES_DECRYPT 0 /**< AES decryption. */
41
+
42
+ /* Error codes in range 0x0020-0x0022 */
43
+ /** Invalid key length. */
44
+ #define MBEDTLS_ERR_AES_INVALID_KEY_LENGTH -0x0020
45
+ /** Invalid data input length. */
46
+ #define MBEDTLS_ERR_AES_INVALID_INPUT_LENGTH -0x0022
47
+
48
+ /* Error codes in range 0x0021-0x0025 */
49
+ /** Invalid input data. */
50
+ #define MBEDTLS_ERR_AES_BAD_INPUT_DATA -0x0021
51
+
52
+ #ifdef __cplusplus
53
+ extern "C" {
54
+ #endif
55
+
56
+ #if !defined(MBEDTLS_AES_ALT)
57
+ // Regular implementation
58
+ //
59
+
60
+ /**
61
+ * \brief The AES context-type definition.
62
+ */
63
+ typedef struct mbedtls_aes_context {
64
+ int MBEDTLS_PRIVATE(nr); /*!< The number of rounds. */
65
+ size_t MBEDTLS_PRIVATE(rk_offset); /*!< The offset in array elements to AES
66
+ round keys in the buffer. */
67
+ #if defined(MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH) && !defined(MBEDTLS_PADLOCK_C)
68
+ uint32_t MBEDTLS_PRIVATE(buf)[44]; /*!< Aligned data buffer to hold
69
+ 10 round keys for 128-bit case. */
70
+ #else
71
+ uint32_t MBEDTLS_PRIVATE(buf)[68]; /*!< Unaligned data buffer. This buffer can
72
+ hold 32 extra Bytes, which can be used for
73
+ one of the following purposes:
74
+ <ul><li>Alignment if VIA padlock is
75
+ used.</li>
76
+ <li>Simplifying key expansion in the 256-bit
77
+ case by generating an extra round key.
78
+ </li></ul> */
79
+ #endif /* MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH && !MBEDTLS_PADLOCK_C */
80
+ }
81
+ mbedtls_aes_context;
82
+
83
+ #if defined(MBEDTLS_CIPHER_MODE_XTS)
84
+ /**
85
+ * \brief The AES XTS context-type definition.
86
+ */
87
+ typedef struct mbedtls_aes_xts_context {
88
+ mbedtls_aes_context MBEDTLS_PRIVATE(crypt); /*!< The AES context to use for AES block
89
+ encryption or decryption. */
90
+ mbedtls_aes_context MBEDTLS_PRIVATE(tweak); /*!< The AES context used for tweak
91
+ computation. */
92
+ } mbedtls_aes_xts_context;
93
+ #endif /* MBEDTLS_CIPHER_MODE_XTS */
94
+
95
+ #else /* MBEDTLS_AES_ALT */
96
+ #include "aes_alt.h"
97
+ #endif /* MBEDTLS_AES_ALT */
98
+
99
+ /**
100
+ * \brief This function initializes the specified AES context.
101
+ *
102
+ * It must be the first API called before using
103
+ * the context.
104
+ *
105
+ * \param ctx The AES context to initialize. This must not be \c NULL.
106
+ */
107
+ void mbedtls_aes_init(mbedtls_aes_context *ctx);
108
+
109
+ /**
110
+ * \brief This function releases and clears the specified AES context.
111
+ *
112
+ * \param ctx The AES context to clear.
113
+ * If this is \c NULL, this function does nothing.
114
+ * Otherwise, the context must have been at least initialized.
115
+ */
116
+ void mbedtls_aes_free(mbedtls_aes_context *ctx);
117
+
118
+ #if defined(MBEDTLS_CIPHER_MODE_XTS)
119
+ /**
120
+ * \brief This function initializes the specified AES XTS context.
121
+ *
122
+ * It must be the first API called before using
123
+ * the context.
124
+ *
125
+ * \param ctx The AES XTS context to initialize. This must not be \c NULL.
126
+ */
127
+ void mbedtls_aes_xts_init(mbedtls_aes_xts_context *ctx);
128
+
129
+ /**
130
+ * \brief This function releases and clears the specified AES XTS context.
131
+ *
132
+ * \param ctx The AES XTS context to clear.
133
+ * If this is \c NULL, this function does nothing.
134
+ * Otherwise, the context must have been at least initialized.
135
+ */
136
+ void mbedtls_aes_xts_free(mbedtls_aes_xts_context *ctx);
137
+ #endif /* MBEDTLS_CIPHER_MODE_XTS */
138
+
139
+ /**
140
+ * \brief This function sets the encryption key.
141
+ *
142
+ * \param ctx The AES context to which the key should be bound.
143
+ * It must be initialized.
144
+ * \param key The encryption key.
145
+ * This must be a readable buffer of size \p keybits bits.
146
+ * \param keybits The size of data passed in bits. Valid options are:
147
+ * <ul><li>128 bits</li>
148
+ * <li>192 bits</li>
149
+ * <li>256 bits</li></ul>
150
+ *
151
+ * \return \c 0 on success.
152
+ * \return #MBEDTLS_ERR_AES_INVALID_KEY_LENGTH on failure.
153
+ */
154
+ MBEDTLS_CHECK_RETURN_TYPICAL
155
+ int mbedtls_aes_setkey_enc(mbedtls_aes_context *ctx, const unsigned char *key,
156
+ unsigned int keybits);
157
+
158
+ #if !defined(MBEDTLS_BLOCK_CIPHER_NO_DECRYPT)
159
+ /**
160
+ * \brief This function sets the decryption key.
161
+ *
162
+ * \param ctx The AES context to which the key should be bound.
163
+ * It must be initialized.
164
+ * \param key The decryption key.
165
+ * This must be a readable buffer of size \p keybits bits.
166
+ * \param keybits The size of data passed. Valid options are:
167
+ * <ul><li>128 bits</li>
168
+ * <li>192 bits</li>
169
+ * <li>256 bits</li></ul>
170
+ *
171
+ * \return \c 0 on success.
172
+ * \return #MBEDTLS_ERR_AES_INVALID_KEY_LENGTH on failure.
173
+ */
174
+ MBEDTLS_CHECK_RETURN_TYPICAL
175
+ int mbedtls_aes_setkey_dec(mbedtls_aes_context *ctx, const unsigned char *key,
176
+ unsigned int keybits);
177
+ #endif /* !MBEDTLS_BLOCK_CIPHER_NO_DECRYPT */
178
+
179
+ #if defined(MBEDTLS_CIPHER_MODE_XTS)
180
+ /**
181
+ * \brief This function prepares an XTS context for encryption and
182
+ * sets the encryption key.
183
+ *
184
+ * \param ctx The AES XTS context to which the key should be bound.
185
+ * It must be initialized.
186
+ * \param key The encryption key. This is comprised of the XTS key1
187
+ * concatenated with the XTS key2.
188
+ * This must be a readable buffer of size \p keybits bits.
189
+ * \param keybits The size of \p key passed in bits. Valid options are:
190
+ * <ul><li>256 bits (each of key1 and key2 is a 128-bit key)</li>
191
+ * <li>512 bits (each of key1 and key2 is a 256-bit key)</li></ul>
192
+ *
193
+ * \return \c 0 on success.
194
+ * \return #MBEDTLS_ERR_AES_INVALID_KEY_LENGTH on failure.
195
+ */
196
+ MBEDTLS_CHECK_RETURN_TYPICAL
197
+ int mbedtls_aes_xts_setkey_enc(mbedtls_aes_xts_context *ctx,
198
+ const unsigned char *key,
199
+ unsigned int keybits);
200
+
201
+ /**
202
+ * \brief This function prepares an XTS context for decryption and
203
+ * sets the decryption key.
204
+ *
205
+ * \param ctx The AES XTS context to which the key should be bound.
206
+ * It must be initialized.
207
+ * \param key The decryption key. This is comprised of the XTS key1
208
+ * concatenated with the XTS key2.
209
+ * This must be a readable buffer of size \p keybits bits.
210
+ * \param keybits The size of \p key passed in bits. Valid options are:
211
+ * <ul><li>256 bits (each of key1 and key2 is a 128-bit key)</li>
212
+ * <li>512 bits (each of key1 and key2 is a 256-bit key)</li></ul>
213
+ *
214
+ * \return \c 0 on success.
215
+ * \return #MBEDTLS_ERR_AES_INVALID_KEY_LENGTH on failure.
216
+ */
217
+ MBEDTLS_CHECK_RETURN_TYPICAL
218
+ int mbedtls_aes_xts_setkey_dec(mbedtls_aes_xts_context *ctx,
219
+ const unsigned char *key,
220
+ unsigned int keybits);
221
+ #endif /* MBEDTLS_CIPHER_MODE_XTS */
222
+
223
+ /**
224
+ * \brief This function performs an AES single-block encryption or
225
+ * decryption operation.
226
+ *
227
+ * It performs the operation defined in the \p mode parameter
228
+ * (encrypt or decrypt), on the input data buffer defined in
229
+ * the \p input parameter.
230
+ *
231
+ * mbedtls_aes_init(), and either mbedtls_aes_setkey_enc() or
232
+ * mbedtls_aes_setkey_dec() must be called before the first
233
+ * call to this API with the same context.
234
+ *
235
+ * \param ctx The AES context to use for encryption or decryption.
236
+ * It must be initialized and bound to a key.
237
+ * \param mode The AES operation: #MBEDTLS_AES_ENCRYPT or
238
+ * #MBEDTLS_AES_DECRYPT.
239
+ * \param input The buffer holding the input data.
240
+ * It must be readable and at least \c 16 Bytes long.
241
+ * \param output The buffer where the output data will be written.
242
+ * It must be writeable and at least \c 16 Bytes long.
243
+
244
+ * \return \c 0 on success.
245
+ */
246
+ MBEDTLS_CHECK_RETURN_TYPICAL
247
+ int mbedtls_aes_crypt_ecb(mbedtls_aes_context *ctx,
248
+ int mode,
249
+ const unsigned char input[16],
250
+ unsigned char output[16]);
251
+
252
+ #if defined(MBEDTLS_CIPHER_MODE_CBC)
253
+ /**
254
+ * \brief This function performs an AES-CBC encryption or decryption operation
255
+ * on full blocks.
256
+ *
257
+ * It performs the operation defined in the \p mode
258
+ * parameter (encrypt/decrypt), on the input data buffer defined in
259
+ * the \p input parameter.
260
+ *
261
+ * It can be called as many times as needed, until all the input
262
+ * data is processed. mbedtls_aes_init(), and either
263
+ * mbedtls_aes_setkey_enc() or mbedtls_aes_setkey_dec() must be called
264
+ * before the first call to this API with the same context.
265
+ *
266
+ * \note This function operates on full blocks, that is, the input size
267
+ * must be a multiple of the AES block size of \c 16 Bytes.
268
+ *
269
+ * \note Upon exit, the content of the IV is updated so that you can
270
+ * call the same function again on the next
271
+ * block(s) of data and get the same result as if it was
272
+ * encrypted in one call. This allows a "streaming" usage.
273
+ * If you need to retain the contents of the IV, you should
274
+ * either save it manually or use the cipher module instead.
275
+ *
276
+ *
277
+ * \param ctx The AES context to use for encryption or decryption.
278
+ * It must be initialized and bound to a key.
279
+ * \param mode The AES operation: #MBEDTLS_AES_ENCRYPT or
280
+ * #MBEDTLS_AES_DECRYPT.
281
+ * \param length The length of the input data in Bytes. This must be a
282
+ * multiple of the block size (\c 16 Bytes).
283
+ * \param iv Initialization vector (updated after use).
284
+ * It must be a readable and writeable buffer of \c 16 Bytes.
285
+ * \param input The buffer holding the input data.
286
+ * It must be readable and of size \p length Bytes.
287
+ * \param output The buffer holding the output data.
288
+ * It must be writeable and of size \p length Bytes.
289
+ *
290
+ * \return \c 0 on success.
291
+ * \return #MBEDTLS_ERR_AES_INVALID_INPUT_LENGTH
292
+ * on failure.
293
+ */
294
+ MBEDTLS_CHECK_RETURN_TYPICAL
295
+ int mbedtls_aes_crypt_cbc(mbedtls_aes_context *ctx,
296
+ int mode,
297
+ size_t length,
298
+ unsigned char iv[16],
299
+ const unsigned char *input,
300
+ unsigned char *output);
301
+ #endif /* MBEDTLS_CIPHER_MODE_CBC */
302
+
303
+ #if defined(MBEDTLS_CIPHER_MODE_XTS)
304
+ /**
305
+ * \brief This function performs an AES-XTS encryption or decryption
306
+ * operation for an entire XTS data unit.
307
+ *
308
+ * AES-XTS encrypts or decrypts blocks based on their location as
309
+ * defined by a data unit number. The data unit number must be
310
+ * provided by \p data_unit.
311
+ *
312
+ * NIST SP 800-38E limits the maximum size of a data unit to 2^20
313
+ * AES blocks. If the data unit is larger than this, this function
314
+ * returns #MBEDTLS_ERR_AES_INVALID_INPUT_LENGTH.
315
+ *
316
+ * \param ctx The AES XTS context to use for AES XTS operations.
317
+ * It must be initialized and bound to a key.
318
+ * \param mode The AES operation: #MBEDTLS_AES_ENCRYPT or
319
+ * #MBEDTLS_AES_DECRYPT.
320
+ * \param length The length of a data unit in Bytes. This can be any
321
+ * length between 16 bytes and 2^24 bytes inclusive
322
+ * (between 1 and 2^20 block cipher blocks).
323
+ * \param data_unit The address of the data unit encoded as an array of 16
324
+ * bytes in little-endian format. For disk encryption, this
325
+ * is typically the index of the block device sector that
326
+ * contains the data.
327
+ * \param input The buffer holding the input data (which is an entire
328
+ * data unit). This function reads \p length Bytes from \p
329
+ * input.
330
+ * \param output The buffer holding the output data (which is an entire
331
+ * data unit). This function writes \p length Bytes to \p
332
+ * output.
333
+ *
334
+ * \return \c 0 on success.
335
+ * \return #MBEDTLS_ERR_AES_INVALID_INPUT_LENGTH if \p length is
336
+ * smaller than an AES block in size (16 Bytes) or if \p
337
+ * length is larger than 2^20 blocks (16 MiB).
338
+ */
339
+ MBEDTLS_CHECK_RETURN_TYPICAL
340
+ int mbedtls_aes_crypt_xts(mbedtls_aes_xts_context *ctx,
341
+ int mode,
342
+ size_t length,
343
+ const unsigned char data_unit[16],
344
+ const unsigned char *input,
345
+ unsigned char *output);
346
+ #endif /* MBEDTLS_CIPHER_MODE_XTS */
347
+
348
+ #if defined(MBEDTLS_CIPHER_MODE_CFB)
349
+ /**
350
+ * \brief This function performs an AES-CFB128 encryption or decryption
351
+ * operation.
352
+ *
353
+ * It performs the operation defined in the \p mode
354
+ * parameter (encrypt or decrypt), on the input data buffer
355
+ * defined in the \p input parameter.
356
+ *
357
+ * For CFB, you must set up the context with mbedtls_aes_setkey_enc(),
358
+ * regardless of whether you are performing an encryption or decryption
359
+ * operation, that is, regardless of the \p mode parameter. This is
360
+ * because CFB mode uses the same key schedule for encryption and
361
+ * decryption.
362
+ *
363
+ * \note Upon exit, the content of the IV is updated so that you can
364
+ * call the same function again on the next
365
+ * block(s) of data and get the same result as if it was
366
+ * encrypted in one call. This allows a "streaming" usage.
367
+ * If you need to retain the contents of the
368
+ * IV, you must either save it manually or use the cipher
369
+ * module instead.
370
+ *
371
+ *
372
+ * \param ctx The AES context to use for encryption or decryption.
373
+ * It must be initialized and bound to a key.
374
+ * \param mode The AES operation: #MBEDTLS_AES_ENCRYPT or
375
+ * #MBEDTLS_AES_DECRYPT.
376
+ * \param length The length of the input data in Bytes.
377
+ * \param iv_off The offset in IV (updated after use).
378
+ * It must point to a valid \c size_t.
379
+ * \param iv The initialization vector (updated after use).
380
+ * It must be a readable and writeable buffer of \c 16 Bytes.
381
+ * \param input The buffer holding the input data.
382
+ * It must be readable and of size \p length Bytes.
383
+ * \param output The buffer holding the output data.
384
+ * It must be writeable and of size \p length Bytes.
385
+ *
386
+ * \return \c 0 on success.
387
+ */
388
+ MBEDTLS_CHECK_RETURN_TYPICAL
389
+ int mbedtls_aes_crypt_cfb128(mbedtls_aes_context *ctx,
390
+ int mode,
391
+ size_t length,
392
+ size_t *iv_off,
393
+ unsigned char iv[16],
394
+ const unsigned char *input,
395
+ unsigned char *output);
396
+
397
+ /**
398
+ * \brief This function performs an AES-CFB8 encryption or decryption
399
+ * operation.
400
+ *
401
+ * It performs the operation defined in the \p mode
402
+ * parameter (encrypt/decrypt), on the input data buffer defined
403
+ * in the \p input parameter.
404
+ *
405
+ * Due to the nature of CFB, you must use the same key schedule for
406
+ * both encryption and decryption operations. Therefore, you must
407
+ * use the context initialized with mbedtls_aes_setkey_enc() for
408
+ * both #MBEDTLS_AES_ENCRYPT and #MBEDTLS_AES_DECRYPT.
409
+ *
410
+ * \note Upon exit, the content of the IV is updated so that you can
411
+ * call the same function again on the next
412
+ * block(s) of data and get the same result as if it was
413
+ * encrypted in one call. This allows a "streaming" usage.
414
+ * If you need to retain the contents of the
415
+ * IV, you should either save it manually or use the cipher
416
+ * module instead.
417
+ *
418
+ *
419
+ * \param ctx The AES context to use for encryption or decryption.
420
+ * It must be initialized and bound to a key.
421
+ * \param mode The AES operation: #MBEDTLS_AES_ENCRYPT or
422
+ * #MBEDTLS_AES_DECRYPT
423
+ * \param length The length of the input data.
424
+ * \param iv The initialization vector (updated after use).
425
+ * It must be a readable and writeable buffer of \c 16 Bytes.
426
+ * \param input The buffer holding the input data.
427
+ * It must be readable and of size \p length Bytes.
428
+ * \param output The buffer holding the output data.
429
+ * It must be writeable and of size \p length Bytes.
430
+ *
431
+ * \return \c 0 on success.
432
+ */
433
+ MBEDTLS_CHECK_RETURN_TYPICAL
434
+ int mbedtls_aes_crypt_cfb8(mbedtls_aes_context *ctx,
435
+ int mode,
436
+ size_t length,
437
+ unsigned char iv[16],
438
+ const unsigned char *input,
439
+ unsigned char *output);
440
+ #endif /*MBEDTLS_CIPHER_MODE_CFB */
441
+
442
+ #if defined(MBEDTLS_CIPHER_MODE_OFB)
443
+ /**
444
+ * \brief This function performs an AES-OFB (Output Feedback Mode)
445
+ * encryption or decryption operation.
446
+ *
447
+ * For OFB, you must set up the context with
448
+ * mbedtls_aes_setkey_enc(), regardless of whether you are
449
+ * performing an encryption or decryption operation. This is
450
+ * because OFB mode uses the same key schedule for encryption and
451
+ * decryption.
452
+ *
453
+ * The OFB operation is identical for encryption or decryption,
454
+ * therefore no operation mode needs to be specified.
455
+ *
456
+ * \note Upon exit, the content of iv, the Initialisation Vector, is
457
+ * updated so that you can call the same function again on the next
458
+ * block(s) of data and get the same result as if it was encrypted
459
+ * in one call. This allows a "streaming" usage, by initialising
460
+ * iv_off to 0 before the first call, and preserving its value
461
+ * between calls.
462
+ *
463
+ * For non-streaming use, the iv should be initialised on each call
464
+ * to a unique value, and iv_off set to 0 on each call.
465
+ *
466
+ * If you need to retain the contents of the initialisation vector,
467
+ * you must either save it manually or use the cipher module
468
+ * instead.
469
+ *
470
+ * \warning For the OFB mode, the initialisation vector must be unique
471
+ * every encryption operation. Reuse of an initialisation vector
472
+ * will compromise security.
473
+ *
474
+ * \param ctx The AES context to use for encryption or decryption.
475
+ * It must be initialized and bound to a key.
476
+ * \param length The length of the input data.
477
+ * \param iv_off The offset in IV (updated after use).
478
+ * It must point to a valid \c size_t.
479
+ * \param iv The initialization vector (updated after use).
480
+ * It must be a readable and writeable buffer of \c 16 Bytes.
481
+ * \param input The buffer holding the input data.
482
+ * It must be readable and of size \p length Bytes.
483
+ * \param output The buffer holding the output data.
484
+ * It must be writeable and of size \p length Bytes.
485
+ *
486
+ * \return \c 0 on success.
487
+ */
488
+ MBEDTLS_CHECK_RETURN_TYPICAL
489
+ int mbedtls_aes_crypt_ofb(mbedtls_aes_context *ctx,
490
+ size_t length,
491
+ size_t *iv_off,
492
+ unsigned char iv[16],
493
+ const unsigned char *input,
494
+ unsigned char *output);
495
+
496
+ #endif /* MBEDTLS_CIPHER_MODE_OFB */
497
+
498
+ #if defined(MBEDTLS_CIPHER_MODE_CTR)
499
+ /**
500
+ * \brief This function performs an AES-CTR encryption or decryption
501
+ * operation.
502
+ *
503
+ * Due to the nature of CTR, you must use the same key schedule
504
+ * for both encryption and decryption operations. Therefore, you
505
+ * must use the context initialized with mbedtls_aes_setkey_enc()
506
+ * for both #MBEDTLS_AES_ENCRYPT and #MBEDTLS_AES_DECRYPT.
507
+ *
508
+ * \warning You must never reuse a nonce value with the same key. Doing so
509
+ * would void the encryption for the two messages encrypted with
510
+ * the same nonce and key.
511
+ *
512
+ * There are two common strategies for managing nonces with CTR:
513
+ *
514
+ * 1. You can handle everything as a single message processed over
515
+ * successive calls to this function. In that case, you want to
516
+ * set \p nonce_counter and \p nc_off to 0 for the first call, and
517
+ * then preserve the values of \p nonce_counter, \p nc_off and \p
518
+ * stream_block across calls to this function as they will be
519
+ * updated by this function.
520
+ *
521
+ * With this strategy, you must not encrypt more than 2**128
522
+ * blocks of data with the same key.
523
+ *
524
+ * 2. You can encrypt separate messages by dividing the \p
525
+ * nonce_counter buffer in two areas: the first one used for a
526
+ * per-message nonce, handled by yourself, and the second one
527
+ * updated by this function internally.
528
+ *
529
+ * For example, you might reserve the first 12 bytes for the
530
+ * per-message nonce, and the last 4 bytes for internal use. In that
531
+ * case, before calling this function on a new message you need to
532
+ * set the first 12 bytes of \p nonce_counter to your chosen nonce
533
+ * value, the last 4 to 0, and \p nc_off to 0 (which will cause \p
534
+ * stream_block to be ignored). That way, you can encrypt at most
535
+ * 2**96 messages of up to 2**32 blocks each with the same key.
536
+ *
537
+ * The per-message nonce (or information sufficient to reconstruct
538
+ * it) needs to be communicated with the ciphertext and must be unique.
539
+ * The recommended way to ensure uniqueness is to use a message
540
+ * counter. An alternative is to generate random nonces, but this
541
+ * limits the number of messages that can be securely encrypted:
542
+ * for example, with 96-bit random nonces, you should not encrypt
543
+ * more than 2**32 messages with the same key.
544
+ *
545
+ * Note that for both strategies, sizes are measured in blocks and
546
+ * that an AES block is 16 bytes.
547
+ *
548
+ * \warning Upon return, \p stream_block contains sensitive data. Its
549
+ * content must not be written to insecure storage and should be
550
+ * securely discarded as soon as it's no longer needed.
551
+ *
552
+ * \param ctx The AES context to use for encryption or decryption.
553
+ * It must be initialized and bound to a key.
554
+ * \param length The length of the input data.
555
+ * \param nc_off The offset in the current \p stream_block, for
556
+ * resuming within the current cipher stream. The
557
+ * offset pointer should be 0 at the start of a stream.
558
+ * It must point to a valid \c size_t.
559
+ * \param nonce_counter The 128-bit nonce and counter.
560
+ * It must be a readable-writeable buffer of \c 16 Bytes.
561
+ * \param stream_block The saved stream block for resuming. This is
562
+ * overwritten by the function.
563
+ * It must be a readable-writeable buffer of \c 16 Bytes.
564
+ * \param input The buffer holding the input data.
565
+ * It must be readable and of size \p length Bytes.
566
+ * \param output The buffer holding the output data.
567
+ * It must be writeable and of size \p length Bytes.
568
+ *
569
+ * \return \c 0 on success.
570
+ */
571
+ MBEDTLS_CHECK_RETURN_TYPICAL
572
+ int mbedtls_aes_crypt_ctr(mbedtls_aes_context *ctx,
573
+ size_t length,
574
+ size_t *nc_off,
575
+ unsigned char nonce_counter[16],
576
+ unsigned char stream_block[16],
577
+ const unsigned char *input,
578
+ unsigned char *output);
579
+ #endif /* MBEDTLS_CIPHER_MODE_CTR */
580
+
581
+ /**
582
+ * \brief Internal AES block encryption function. This is only
583
+ * exposed to allow overriding it using
584
+ * \c MBEDTLS_AES_ENCRYPT_ALT.
585
+ *
586
+ * \param ctx The AES context to use for encryption.
587
+ * \param input The plaintext block.
588
+ * \param output The output (ciphertext) block.
589
+ *
590
+ * \return \c 0 on success.
591
+ */
592
+ MBEDTLS_CHECK_RETURN_TYPICAL
593
+ int mbedtls_internal_aes_encrypt(mbedtls_aes_context *ctx,
594
+ const unsigned char input[16],
595
+ unsigned char output[16]);
596
+
597
+ #if !defined(MBEDTLS_BLOCK_CIPHER_NO_DECRYPT)
598
+ /**
599
+ * \brief Internal AES block decryption function. This is only
600
+ * exposed to allow overriding it using see
601
+ * \c MBEDTLS_AES_DECRYPT_ALT.
602
+ *
603
+ * \param ctx The AES context to use for decryption.
604
+ * \param input The ciphertext block.
605
+ * \param output The output (plaintext) block.
606
+ *
607
+ * \return \c 0 on success.
608
+ */
609
+ MBEDTLS_CHECK_RETURN_TYPICAL
610
+ int mbedtls_internal_aes_decrypt(mbedtls_aes_context *ctx,
611
+ const unsigned char input[16],
612
+ unsigned char output[16]);
613
+ #endif /* !MBEDTLS_BLOCK_CIPHER_NO_DECRYPT */
614
+
615
+ #if defined(MBEDTLS_SELF_TEST)
616
+ /**
617
+ * \brief Checkup routine.
618
+ *
619
+ * \return \c 0 on success.
620
+ * \return \c 1 on failure.
621
+ */
622
+ MBEDTLS_CHECK_RETURN_CRITICAL
623
+ int mbedtls_aes_self_test(int verbose);
624
+
625
+ #endif /* MBEDTLS_SELF_TEST */
626
+
627
+ #ifdef __cplusplus
628
+ }
629
+ #endif
630
+
631
+ #endif /* aes.h */