@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,777 @@
1
+ /*
2
+ * NIST SP800-38C compliant CCM implementation
3
+ *
4
+ * Copyright The Mbed TLS Contributors
5
+ * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
6
+ */
7
+
8
+ /*
9
+ * Definition of CCM:
10
+ * http://csrc.nist.gov/publications/nistpubs/800-38C/SP800-38C_updated-July20_2007.pdf
11
+ * RFC 3610 "Counter with CBC-MAC (CCM)"
12
+ *
13
+ * Related:
14
+ * RFC 5116 "An Interface and Algorithms for Authenticated Encryption"
15
+ */
16
+
17
+ #include "common.h"
18
+
19
+ #if defined(MBEDTLS_CCM_C)
20
+
21
+ #include "mbedtls/ccm.h"
22
+ #include "mbedtls/platform_util.h"
23
+ #include "mbedtls/error.h"
24
+ #include "mbedtls/constant_time.h"
25
+
26
+ #if defined(MBEDTLS_BLOCK_CIPHER_C)
27
+ #include "block_cipher_internal.h"
28
+ #endif
29
+
30
+ #include <string.h>
31
+
32
+ #if defined(MBEDTLS_PLATFORM_C)
33
+ #include "mbedtls/platform.h"
34
+ #else
35
+ #if defined(MBEDTLS_SELF_TEST) && defined(MBEDTLS_AES_C)
36
+ #include <stdio.h>
37
+ #define mbedtls_printf printf
38
+ #endif /* MBEDTLS_SELF_TEST && MBEDTLS_AES_C */
39
+ #endif /* MBEDTLS_PLATFORM_C */
40
+
41
+ #if !defined(MBEDTLS_CCM_ALT)
42
+
43
+
44
+ /*
45
+ * Initialize context
46
+ */
47
+ void mbedtls_ccm_init(mbedtls_ccm_context *ctx)
48
+ {
49
+ memset(ctx, 0, sizeof(mbedtls_ccm_context));
50
+ }
51
+
52
+ int mbedtls_ccm_setkey(mbedtls_ccm_context *ctx,
53
+ mbedtls_cipher_id_t cipher,
54
+ const unsigned char *key,
55
+ unsigned int keybits)
56
+ {
57
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
58
+
59
+ #if defined(MBEDTLS_BLOCK_CIPHER_C)
60
+ mbedtls_block_cipher_free(&ctx->block_cipher_ctx);
61
+
62
+ if ((ret = mbedtls_block_cipher_setup(&ctx->block_cipher_ctx, cipher)) != 0) {
63
+ return MBEDTLS_ERR_CCM_BAD_INPUT;
64
+ }
65
+
66
+ if ((ret = mbedtls_block_cipher_setkey(&ctx->block_cipher_ctx, key, keybits)) != 0) {
67
+ return MBEDTLS_ERR_CCM_BAD_INPUT;
68
+ }
69
+ #else
70
+ const mbedtls_cipher_info_t *cipher_info;
71
+
72
+ cipher_info = mbedtls_cipher_info_from_values(cipher, keybits,
73
+ MBEDTLS_MODE_ECB);
74
+ if (cipher_info == NULL) {
75
+ return MBEDTLS_ERR_CCM_BAD_INPUT;
76
+ }
77
+
78
+ if (mbedtls_cipher_info_get_block_size(cipher_info) != 16) {
79
+ return MBEDTLS_ERR_CCM_BAD_INPUT;
80
+ }
81
+
82
+ mbedtls_cipher_free(&ctx->cipher_ctx);
83
+
84
+ if ((ret = mbedtls_cipher_setup(&ctx->cipher_ctx, cipher_info)) != 0) {
85
+ return ret;
86
+ }
87
+
88
+ if ((ret = mbedtls_cipher_setkey(&ctx->cipher_ctx, key, keybits,
89
+ MBEDTLS_ENCRYPT)) != 0) {
90
+ return ret;
91
+ }
92
+ #endif
93
+
94
+ return ret;
95
+ }
96
+
97
+ /*
98
+ * Free context
99
+ */
100
+ void mbedtls_ccm_free(mbedtls_ccm_context *ctx)
101
+ {
102
+ if (ctx == NULL) {
103
+ return;
104
+ }
105
+ #if defined(MBEDTLS_BLOCK_CIPHER_C)
106
+ mbedtls_block_cipher_free(&ctx->block_cipher_ctx);
107
+ #else
108
+ mbedtls_cipher_free(&ctx->cipher_ctx);
109
+ #endif
110
+ mbedtls_platform_zeroize(ctx, sizeof(mbedtls_ccm_context));
111
+ }
112
+
113
+ #define CCM_STATE__CLEAR 0
114
+ #define CCM_STATE__STARTED (1 << 0)
115
+ #define CCM_STATE__LENGTHS_SET (1 << 1)
116
+ #define CCM_STATE__AUTH_DATA_STARTED (1 << 2)
117
+ #define CCM_STATE__AUTH_DATA_FINISHED (1 << 3)
118
+ #define CCM_STATE__ERROR (1 << 4)
119
+
120
+ /*
121
+ * Encrypt or decrypt a partial block with CTR
122
+ */
123
+ static int mbedtls_ccm_crypt(mbedtls_ccm_context *ctx,
124
+ size_t offset, size_t use_len,
125
+ const unsigned char *input,
126
+ unsigned char *output)
127
+ {
128
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
129
+ unsigned char tmp_buf[16] = { 0 };
130
+
131
+ #if defined(MBEDTLS_BLOCK_CIPHER_C)
132
+ ret = mbedtls_block_cipher_encrypt(&ctx->block_cipher_ctx, ctx->ctr, tmp_buf);
133
+ #else
134
+ size_t olen = 0;
135
+ ret = mbedtls_cipher_update(&ctx->cipher_ctx, ctx->ctr, 16, tmp_buf, &olen);
136
+ #endif
137
+ if (ret != 0) {
138
+ ctx->state |= CCM_STATE__ERROR;
139
+ mbedtls_platform_zeroize(tmp_buf, sizeof(tmp_buf));
140
+ return ret;
141
+ }
142
+
143
+ mbedtls_xor(output, input, tmp_buf + offset, use_len);
144
+
145
+ mbedtls_platform_zeroize(tmp_buf, sizeof(tmp_buf));
146
+ return ret;
147
+ }
148
+
149
+ static void mbedtls_ccm_clear_state(mbedtls_ccm_context *ctx)
150
+ {
151
+ ctx->state = CCM_STATE__CLEAR;
152
+ memset(ctx->y, 0, 16);
153
+ memset(ctx->ctr, 0, 16);
154
+ }
155
+
156
+ static int ccm_calculate_first_block_if_ready(mbedtls_ccm_context *ctx)
157
+ {
158
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
159
+ unsigned char i;
160
+ size_t len_left;
161
+ #if !defined(MBEDTLS_BLOCK_CIPHER_C)
162
+ size_t olen;
163
+ #endif
164
+
165
+ /* length calculation can be done only after both
166
+ * mbedtls_ccm_starts() and mbedtls_ccm_set_lengths() have been executed
167
+ */
168
+ if (!(ctx->state & CCM_STATE__STARTED) || !(ctx->state & CCM_STATE__LENGTHS_SET)) {
169
+ return 0;
170
+ }
171
+
172
+ /* CCM expects non-empty tag.
173
+ * CCM* allows empty tag. For CCM* without tag, the tag calculation is skipped.
174
+ */
175
+ if (ctx->tag_len == 0) {
176
+ if (ctx->mode == MBEDTLS_CCM_STAR_ENCRYPT || ctx->mode == MBEDTLS_CCM_STAR_DECRYPT) {
177
+ ctx->plaintext_len = 0;
178
+ return 0;
179
+ } else {
180
+ ctx->state |= CCM_STATE__ERROR;
181
+ return MBEDTLS_ERR_CCM_BAD_INPUT;
182
+ }
183
+ }
184
+
185
+ /*
186
+ * First block:
187
+ * 0 .. 0 flags
188
+ * 1 .. iv_len nonce (aka iv) - set by: mbedtls_ccm_starts()
189
+ * iv_len+1 .. 15 length
190
+ *
191
+ * With flags as (bits):
192
+ * 7 0
193
+ * 6 add present?
194
+ * 5 .. 3 (t - 2) / 2
195
+ * 2 .. 0 q - 1
196
+ */
197
+ ctx->y[0] |= (ctx->add_len > 0) << 6;
198
+ ctx->y[0] |= ((ctx->tag_len - 2) / 2) << 3;
199
+ ctx->y[0] |= ctx->q - 1;
200
+
201
+ for (i = 0, len_left = ctx->plaintext_len; i < ctx->q; i++, len_left >>= 8) {
202
+ ctx->y[15-i] = MBEDTLS_BYTE_0(len_left);
203
+ }
204
+
205
+ if (len_left > 0) {
206
+ ctx->state |= CCM_STATE__ERROR;
207
+ return MBEDTLS_ERR_CCM_BAD_INPUT;
208
+ }
209
+
210
+ /* Start CBC-MAC with first block*/
211
+ #if defined(MBEDTLS_BLOCK_CIPHER_C)
212
+ ret = mbedtls_block_cipher_encrypt(&ctx->block_cipher_ctx, ctx->y, ctx->y);
213
+ #else
214
+ ret = mbedtls_cipher_update(&ctx->cipher_ctx, ctx->y, 16, ctx->y, &olen);
215
+ #endif
216
+ if (ret != 0) {
217
+ ctx->state |= CCM_STATE__ERROR;
218
+ return ret;
219
+ }
220
+
221
+ return 0;
222
+ }
223
+
224
+ int mbedtls_ccm_starts(mbedtls_ccm_context *ctx,
225
+ int mode,
226
+ const unsigned char *iv,
227
+ size_t iv_len)
228
+ {
229
+ /* Also implies q is within bounds */
230
+ if (iv_len < 7 || iv_len > 13) {
231
+ return MBEDTLS_ERR_CCM_BAD_INPUT;
232
+ }
233
+
234
+ ctx->mode = mode;
235
+ ctx->q = 16 - 1 - (unsigned char) iv_len;
236
+
237
+ /*
238
+ * Prepare counter block for encryption:
239
+ * 0 .. 0 flags
240
+ * 1 .. iv_len nonce (aka iv)
241
+ * iv_len+1 .. 15 counter (initially 1)
242
+ *
243
+ * With flags as (bits):
244
+ * 7 .. 3 0
245
+ * 2 .. 0 q - 1
246
+ */
247
+ memset(ctx->ctr, 0, 16);
248
+ ctx->ctr[0] = ctx->q - 1;
249
+ memcpy(ctx->ctr + 1, iv, iv_len);
250
+ memset(ctx->ctr + 1 + iv_len, 0, ctx->q);
251
+ ctx->ctr[15] = 1;
252
+
253
+ /*
254
+ * See ccm_calculate_first_block_if_ready() for block layout description
255
+ */
256
+ memcpy(ctx->y + 1, iv, iv_len);
257
+
258
+ ctx->state |= CCM_STATE__STARTED;
259
+ return ccm_calculate_first_block_if_ready(ctx);
260
+ }
261
+
262
+ int mbedtls_ccm_set_lengths(mbedtls_ccm_context *ctx,
263
+ size_t total_ad_len,
264
+ size_t plaintext_len,
265
+ size_t tag_len)
266
+ {
267
+ /*
268
+ * Check length requirements: SP800-38C A.1
269
+ * Additional requirement: a < 2^16 - 2^8 to simplify the code.
270
+ * 'length' checked later (when writing it to the first block)
271
+ *
272
+ * Also, loosen the requirements to enable support for CCM* (IEEE 802.15.4).
273
+ */
274
+ if (tag_len == 2 || tag_len > 16 || tag_len % 2 != 0) {
275
+ return MBEDTLS_ERR_CCM_BAD_INPUT;
276
+ }
277
+
278
+ if (total_ad_len >= 0xFF00) {
279
+ return MBEDTLS_ERR_CCM_BAD_INPUT;
280
+ }
281
+
282
+ ctx->plaintext_len = plaintext_len;
283
+ ctx->add_len = total_ad_len;
284
+ ctx->tag_len = tag_len;
285
+ ctx->processed = 0;
286
+
287
+ ctx->state |= CCM_STATE__LENGTHS_SET;
288
+ return ccm_calculate_first_block_if_ready(ctx);
289
+ }
290
+
291
+ int mbedtls_ccm_update_ad(mbedtls_ccm_context *ctx,
292
+ const unsigned char *add,
293
+ size_t add_len)
294
+ {
295
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
296
+ size_t use_len, offset;
297
+ #if !defined(MBEDTLS_BLOCK_CIPHER_C)
298
+ size_t olen;
299
+ #endif
300
+
301
+ if (ctx->state & CCM_STATE__ERROR) {
302
+ return MBEDTLS_ERR_CCM_BAD_INPUT;
303
+ }
304
+
305
+ if (add_len > 0) {
306
+ if (ctx->state & CCM_STATE__AUTH_DATA_FINISHED) {
307
+ return MBEDTLS_ERR_CCM_BAD_INPUT;
308
+ }
309
+
310
+ if (!(ctx->state & CCM_STATE__AUTH_DATA_STARTED)) {
311
+ if (add_len > ctx->add_len) {
312
+ return MBEDTLS_ERR_CCM_BAD_INPUT;
313
+ }
314
+
315
+ ctx->y[0] ^= (unsigned char) ((ctx->add_len >> 8) & 0xFF);
316
+ ctx->y[1] ^= (unsigned char) ((ctx->add_len) & 0xFF);
317
+
318
+ ctx->state |= CCM_STATE__AUTH_DATA_STARTED;
319
+ } else if (ctx->processed + add_len > ctx->add_len) {
320
+ return MBEDTLS_ERR_CCM_BAD_INPUT;
321
+ }
322
+
323
+ while (add_len > 0) {
324
+ offset = (ctx->processed + 2) % 16; /* account for y[0] and y[1]
325
+ * holding total auth data length */
326
+ use_len = 16 - offset;
327
+
328
+ if (use_len > add_len) {
329
+ use_len = add_len;
330
+ }
331
+
332
+ mbedtls_xor(ctx->y + offset, ctx->y + offset, add, use_len);
333
+
334
+ ctx->processed += use_len;
335
+ add_len -= use_len;
336
+ add += use_len;
337
+
338
+ if (use_len + offset == 16 || ctx->processed == ctx->add_len) {
339
+ #if defined(MBEDTLS_BLOCK_CIPHER_C)
340
+ ret = mbedtls_block_cipher_encrypt(&ctx->block_cipher_ctx, ctx->y, ctx->y);
341
+ #else
342
+ ret = mbedtls_cipher_update(&ctx->cipher_ctx, ctx->y, 16, ctx->y, &olen);
343
+ #endif
344
+ if (ret != 0) {
345
+ ctx->state |= CCM_STATE__ERROR;
346
+ return ret;
347
+ }
348
+ }
349
+ }
350
+
351
+ if (ctx->processed == ctx->add_len) {
352
+ ctx->state |= CCM_STATE__AUTH_DATA_FINISHED;
353
+ ctx->processed = 0; // prepare for mbedtls_ccm_update()
354
+ }
355
+ }
356
+
357
+ return 0;
358
+ }
359
+
360
+ int mbedtls_ccm_update(mbedtls_ccm_context *ctx,
361
+ const unsigned char *input, size_t input_len,
362
+ unsigned char *output, size_t output_size,
363
+ size_t *output_len)
364
+ {
365
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
366
+ unsigned char i;
367
+ size_t use_len, offset;
368
+ #if !defined(MBEDTLS_BLOCK_CIPHER_C)
369
+ size_t olen;
370
+ #endif
371
+
372
+ unsigned char local_output[16];
373
+
374
+ if (ctx->state & CCM_STATE__ERROR) {
375
+ return MBEDTLS_ERR_CCM_BAD_INPUT;
376
+ }
377
+
378
+ /* Check against plaintext length only if performing operation with
379
+ * authentication
380
+ */
381
+ if (ctx->tag_len != 0 && ctx->processed + input_len > ctx->plaintext_len) {
382
+ return MBEDTLS_ERR_CCM_BAD_INPUT;
383
+ }
384
+
385
+ if (output_size < input_len) {
386
+ return MBEDTLS_ERR_CCM_BAD_INPUT;
387
+ }
388
+ *output_len = input_len;
389
+
390
+ ret = 0;
391
+
392
+ while (input_len > 0) {
393
+ offset = ctx->processed % 16;
394
+
395
+ use_len = 16 - offset;
396
+
397
+ if (use_len > input_len) {
398
+ use_len = input_len;
399
+ }
400
+
401
+ ctx->processed += use_len;
402
+
403
+ if (ctx->mode == MBEDTLS_CCM_ENCRYPT || \
404
+ ctx->mode == MBEDTLS_CCM_STAR_ENCRYPT) {
405
+ mbedtls_xor(ctx->y + offset, ctx->y + offset, input, use_len);
406
+
407
+ if (use_len + offset == 16 || ctx->processed == ctx->plaintext_len) {
408
+ #if defined(MBEDTLS_BLOCK_CIPHER_C)
409
+ ret = mbedtls_block_cipher_encrypt(&ctx->block_cipher_ctx, ctx->y, ctx->y);
410
+ #else
411
+ ret = mbedtls_cipher_update(&ctx->cipher_ctx, ctx->y, 16, ctx->y, &olen);
412
+ #endif
413
+ if (ret != 0) {
414
+ ctx->state |= CCM_STATE__ERROR;
415
+ goto exit;
416
+ }
417
+ }
418
+
419
+ ret = mbedtls_ccm_crypt(ctx, offset, use_len, input, output);
420
+ if (ret != 0) {
421
+ goto exit;
422
+ }
423
+ }
424
+
425
+ if (ctx->mode == MBEDTLS_CCM_DECRYPT || \
426
+ ctx->mode == MBEDTLS_CCM_STAR_DECRYPT) {
427
+ /* Since output may be in shared memory, we cannot be sure that
428
+ * it will contain what we wrote to it. Therefore, we should avoid using
429
+ * it as input to any operations.
430
+ * Write decrypted data to local_output to avoid using output variable as
431
+ * input in the XOR operation for Y.
432
+ */
433
+ ret = mbedtls_ccm_crypt(ctx, offset, use_len, input, local_output);
434
+ if (ret != 0) {
435
+ goto exit;
436
+ }
437
+
438
+ mbedtls_xor(ctx->y + offset, ctx->y + offset, local_output, use_len);
439
+
440
+ memcpy(output, local_output, use_len);
441
+
442
+ if (use_len + offset == 16 || ctx->processed == ctx->plaintext_len) {
443
+ #if defined(MBEDTLS_BLOCK_CIPHER_C)
444
+ ret = mbedtls_block_cipher_encrypt(&ctx->block_cipher_ctx, ctx->y, ctx->y);
445
+ #else
446
+ ret = mbedtls_cipher_update(&ctx->cipher_ctx, ctx->y, 16, ctx->y, &olen);
447
+ #endif
448
+ if (ret != 0) {
449
+ ctx->state |= CCM_STATE__ERROR;
450
+ goto exit;
451
+ }
452
+ }
453
+ }
454
+
455
+ if (use_len + offset == 16 || ctx->processed == ctx->plaintext_len) {
456
+ for (i = 0; i < ctx->q; i++) {
457
+ if (++(ctx->ctr)[15-i] != 0) {
458
+ break;
459
+ }
460
+ }
461
+ }
462
+
463
+ input_len -= use_len;
464
+ input += use_len;
465
+ output += use_len;
466
+ }
467
+
468
+ exit:
469
+ mbedtls_platform_zeroize(local_output, 16);
470
+
471
+ return ret;
472
+ }
473
+
474
+ int mbedtls_ccm_finish(mbedtls_ccm_context *ctx,
475
+ unsigned char *tag, size_t tag_len)
476
+ {
477
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
478
+ unsigned char i;
479
+
480
+ if (ctx->state & CCM_STATE__ERROR) {
481
+ return MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
482
+ }
483
+
484
+ if (!(ctx->state & CCM_STATE__STARTED)) {
485
+ return MBEDTLS_ERR_CCM_BAD_INPUT;
486
+ }
487
+
488
+ if (!(ctx->state & CCM_STATE__LENGTHS_SET)) {
489
+ return MBEDTLS_ERR_CCM_BAD_INPUT;
490
+ }
491
+
492
+ if (ctx->add_len > 0 && !(ctx->state & CCM_STATE__AUTH_DATA_FINISHED)) {
493
+ return MBEDTLS_ERR_CCM_BAD_INPUT;
494
+ }
495
+
496
+ if (ctx->plaintext_len > 0 && ctx->processed != ctx->plaintext_len) {
497
+ return MBEDTLS_ERR_CCM_BAD_INPUT;
498
+ }
499
+
500
+ if (tag_len != ctx->tag_len) {
501
+ return MBEDTLS_ERR_CCM_BAD_INPUT;
502
+ }
503
+
504
+ /*
505
+ * Authentication: reset counter and crypt/mask internal tag
506
+ */
507
+ for (i = 0; i < ctx->q; i++) {
508
+ ctx->ctr[15-i] = 0;
509
+ }
510
+
511
+ ret = mbedtls_ccm_crypt(ctx, 0, 16, ctx->y, ctx->y);
512
+ if (ret != 0) {
513
+ return ret;
514
+ }
515
+ if (tag != NULL) {
516
+ memcpy(tag, ctx->y, tag_len);
517
+ }
518
+ mbedtls_ccm_clear_state(ctx);
519
+
520
+ return 0;
521
+ }
522
+
523
+ /*
524
+ * Authenticated encryption or decryption
525
+ */
526
+ static int ccm_auth_crypt(mbedtls_ccm_context *ctx, int mode, size_t length,
527
+ const unsigned char *iv, size_t iv_len,
528
+ const unsigned char *add, size_t add_len,
529
+ const unsigned char *input, unsigned char *output,
530
+ unsigned char *tag, size_t tag_len)
531
+ {
532
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
533
+ size_t olen;
534
+
535
+ if ((ret = mbedtls_ccm_starts(ctx, mode, iv, iv_len)) != 0) {
536
+ return ret;
537
+ }
538
+
539
+ if ((ret = mbedtls_ccm_set_lengths(ctx, add_len, length, tag_len)) != 0) {
540
+ return ret;
541
+ }
542
+
543
+ if ((ret = mbedtls_ccm_update_ad(ctx, add, add_len)) != 0) {
544
+ return ret;
545
+ }
546
+
547
+ if ((ret = mbedtls_ccm_update(ctx, input, length,
548
+ output, length, &olen)) != 0) {
549
+ return ret;
550
+ }
551
+
552
+ if ((ret = mbedtls_ccm_finish(ctx, tag, tag_len)) != 0) {
553
+ return ret;
554
+ }
555
+
556
+ return 0;
557
+ }
558
+
559
+ /*
560
+ * Authenticated encryption
561
+ */
562
+ int mbedtls_ccm_star_encrypt_and_tag(mbedtls_ccm_context *ctx, size_t length,
563
+ const unsigned char *iv, size_t iv_len,
564
+ const unsigned char *add, size_t add_len,
565
+ const unsigned char *input, unsigned char *output,
566
+ unsigned char *tag, size_t tag_len)
567
+ {
568
+ return ccm_auth_crypt(ctx, MBEDTLS_CCM_STAR_ENCRYPT, length, iv, iv_len,
569
+ add, add_len, input, output, tag, tag_len);
570
+ }
571
+
572
+ int mbedtls_ccm_encrypt_and_tag(mbedtls_ccm_context *ctx, size_t length,
573
+ const unsigned char *iv, size_t iv_len,
574
+ const unsigned char *add, size_t add_len,
575
+ const unsigned char *input, unsigned char *output,
576
+ unsigned char *tag, size_t tag_len)
577
+ {
578
+ return ccm_auth_crypt(ctx, MBEDTLS_CCM_ENCRYPT, length, iv, iv_len,
579
+ add, add_len, input, output, tag, tag_len);
580
+ }
581
+
582
+ /*
583
+ * Authenticated decryption
584
+ */
585
+ static int mbedtls_ccm_compare_tags(const unsigned char *tag1,
586
+ const unsigned char *tag2,
587
+ size_t tag_len)
588
+ {
589
+ /* Check tag in "constant-time" */
590
+ int diff = mbedtls_ct_memcmp(tag1, tag2, tag_len);
591
+
592
+ if (diff != 0) {
593
+ return MBEDTLS_ERR_CCM_AUTH_FAILED;
594
+ }
595
+
596
+ return 0;
597
+ }
598
+
599
+ static int ccm_auth_decrypt(mbedtls_ccm_context *ctx, int mode, size_t length,
600
+ const unsigned char *iv, size_t iv_len,
601
+ const unsigned char *add, size_t add_len,
602
+ const unsigned char *input, unsigned char *output,
603
+ const unsigned char *tag, size_t tag_len)
604
+ {
605
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
606
+ unsigned char check_tag[16];
607
+
608
+ if ((ret = ccm_auth_crypt(ctx, mode, length,
609
+ iv, iv_len, add, add_len,
610
+ input, output, check_tag, tag_len)) != 0) {
611
+ return ret;
612
+ }
613
+
614
+ if ((ret = mbedtls_ccm_compare_tags(tag, check_tag, tag_len)) != 0) {
615
+ mbedtls_platform_zeroize(output, length);
616
+ return ret;
617
+ }
618
+
619
+ return 0;
620
+ }
621
+
622
+ int mbedtls_ccm_star_auth_decrypt(mbedtls_ccm_context *ctx, size_t length,
623
+ const unsigned char *iv, size_t iv_len,
624
+ const unsigned char *add, size_t add_len,
625
+ const unsigned char *input, unsigned char *output,
626
+ const unsigned char *tag, size_t tag_len)
627
+ {
628
+ return ccm_auth_decrypt(ctx, MBEDTLS_CCM_STAR_DECRYPT, length,
629
+ iv, iv_len, add, add_len,
630
+ input, output, tag, tag_len);
631
+ }
632
+
633
+ int mbedtls_ccm_auth_decrypt(mbedtls_ccm_context *ctx, size_t length,
634
+ const unsigned char *iv, size_t iv_len,
635
+ const unsigned char *add, size_t add_len,
636
+ const unsigned char *input, unsigned char *output,
637
+ const unsigned char *tag, size_t tag_len)
638
+ {
639
+ return ccm_auth_decrypt(ctx, MBEDTLS_CCM_DECRYPT, length,
640
+ iv, iv_len, add, add_len,
641
+ input, output, tag, tag_len);
642
+ }
643
+ #endif /* !MBEDTLS_CCM_ALT */
644
+
645
+ #if defined(MBEDTLS_SELF_TEST) && defined(MBEDTLS_CCM_GCM_CAN_AES)
646
+ /*
647
+ * Examples 1 to 3 from SP800-38C Appendix C
648
+ */
649
+
650
+ #define NB_TESTS 3
651
+ #define CCM_SELFTEST_PT_MAX_LEN 24
652
+ #define CCM_SELFTEST_CT_MAX_LEN 32
653
+ /*
654
+ * The data is the same for all tests, only the used length changes
655
+ */
656
+ static const unsigned char key_test_data[] = {
657
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
658
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f
659
+ };
660
+
661
+ static const unsigned char iv_test_data[] = {
662
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
663
+ 0x18, 0x19, 0x1a, 0x1b
664
+ };
665
+
666
+ static const unsigned char ad_test_data[] = {
667
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
668
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
669
+ 0x10, 0x11, 0x12, 0x13
670
+ };
671
+
672
+ static const unsigned char msg_test_data[CCM_SELFTEST_PT_MAX_LEN] = {
673
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
674
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
675
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
676
+ };
677
+
678
+ static const size_t iv_len_test_data[NB_TESTS] = { 7, 8, 12 };
679
+ static const size_t add_len_test_data[NB_TESTS] = { 8, 16, 20 };
680
+ static const size_t msg_len_test_data[NB_TESTS] = { 4, 16, 24 };
681
+ static const size_t tag_len_test_data[NB_TESTS] = { 4, 6, 8 };
682
+
683
+ static const unsigned char res_test_data[NB_TESTS][CCM_SELFTEST_CT_MAX_LEN] = {
684
+ { 0x71, 0x62, 0x01, 0x5b, 0x4d, 0xac, 0x25, 0x5d },
685
+ { 0xd2, 0xa1, 0xf0, 0xe0, 0x51, 0xea, 0x5f, 0x62,
686
+ 0x08, 0x1a, 0x77, 0x92, 0x07, 0x3d, 0x59, 0x3d,
687
+ 0x1f, 0xc6, 0x4f, 0xbf, 0xac, 0xcd },
688
+ { 0xe3, 0xb2, 0x01, 0xa9, 0xf5, 0xb7, 0x1a, 0x7a,
689
+ 0x9b, 0x1c, 0xea, 0xec, 0xcd, 0x97, 0xe7, 0x0b,
690
+ 0x61, 0x76, 0xaa, 0xd9, 0xa4, 0x42, 0x8a, 0xa5,
691
+ 0x48, 0x43, 0x92, 0xfb, 0xc1, 0xb0, 0x99, 0x51 }
692
+ };
693
+
694
+ int mbedtls_ccm_self_test(int verbose)
695
+ {
696
+ mbedtls_ccm_context ctx;
697
+ /*
698
+ * Some hardware accelerators require the input and output buffers
699
+ * would be in RAM, because the flash is not accessible.
700
+ * Use buffers on the stack to hold the test vectors data.
701
+ */
702
+ unsigned char plaintext[CCM_SELFTEST_PT_MAX_LEN];
703
+ unsigned char ciphertext[CCM_SELFTEST_CT_MAX_LEN];
704
+ size_t i;
705
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
706
+
707
+ mbedtls_ccm_init(&ctx);
708
+
709
+ if (mbedtls_ccm_setkey(&ctx, MBEDTLS_CIPHER_ID_AES, key_test_data,
710
+ 8 * sizeof(key_test_data)) != 0) {
711
+ if (verbose != 0) {
712
+ mbedtls_printf(" CCM: setup failed");
713
+ }
714
+
715
+ return 1;
716
+ }
717
+
718
+ for (i = 0; i < NB_TESTS; i++) {
719
+ if (verbose != 0) {
720
+ mbedtls_printf(" CCM-AES #%u: ", (unsigned int) i + 1);
721
+ }
722
+
723
+ memset(plaintext, 0, CCM_SELFTEST_PT_MAX_LEN);
724
+ memset(ciphertext, 0, CCM_SELFTEST_CT_MAX_LEN);
725
+ memcpy(plaintext, msg_test_data, msg_len_test_data[i]);
726
+
727
+ ret = mbedtls_ccm_encrypt_and_tag(&ctx, msg_len_test_data[i],
728
+ iv_test_data, iv_len_test_data[i],
729
+ ad_test_data, add_len_test_data[i],
730
+ plaintext, ciphertext,
731
+ ciphertext + msg_len_test_data[i],
732
+ tag_len_test_data[i]);
733
+
734
+ if (ret != 0 ||
735
+ memcmp(ciphertext, res_test_data[i],
736
+ msg_len_test_data[i] + tag_len_test_data[i]) != 0) {
737
+ if (verbose != 0) {
738
+ mbedtls_printf("failed\n");
739
+ }
740
+
741
+ return 1;
742
+ }
743
+ memset(plaintext, 0, CCM_SELFTEST_PT_MAX_LEN);
744
+
745
+ ret = mbedtls_ccm_auth_decrypt(&ctx, msg_len_test_data[i],
746
+ iv_test_data, iv_len_test_data[i],
747
+ ad_test_data, add_len_test_data[i],
748
+ ciphertext, plaintext,
749
+ ciphertext + msg_len_test_data[i],
750
+ tag_len_test_data[i]);
751
+
752
+ if (ret != 0 ||
753
+ memcmp(plaintext, msg_test_data, msg_len_test_data[i]) != 0) {
754
+ if (verbose != 0) {
755
+ mbedtls_printf("failed\n");
756
+ }
757
+
758
+ return 1;
759
+ }
760
+
761
+ if (verbose != 0) {
762
+ mbedtls_printf("passed\n");
763
+ }
764
+ }
765
+
766
+ mbedtls_ccm_free(&ctx);
767
+
768
+ if (verbose != 0) {
769
+ mbedtls_printf("\n");
770
+ }
771
+
772
+ return 0;
773
+ }
774
+
775
+ #endif /* MBEDTLS_SELF_TEST && MBEDTLS_AES_C */
776
+
777
+ #endif /* MBEDTLS_CCM_C */