@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,787 @@
1
+ /*
2
+ * Copyright The Mbed TLS Contributors
3
+ * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
4
+ */
5
+ #include "common.h"
6
+
7
+ #include "mbedtls/build_info.h"
8
+ #if defined(MBEDTLS_PKCS7_C)
9
+ #include "mbedtls/pkcs7.h"
10
+ #include "x509_internal.h"
11
+ #include "mbedtls/asn1.h"
12
+ #include "mbedtls/x509_crt.h"
13
+ #include "mbedtls/x509_crl.h"
14
+ #include "mbedtls/oid.h"
15
+ #include "mbedtls/error.h"
16
+
17
+ #if defined(MBEDTLS_FS_IO)
18
+ #include <sys/types.h>
19
+ #include <sys/stat.h>
20
+ #endif
21
+
22
+ #include "mbedtls/platform.h"
23
+ #include "mbedtls/platform_util.h"
24
+
25
+ #if defined(MBEDTLS_HAVE_TIME)
26
+ #include "mbedtls/platform_time.h"
27
+ #endif
28
+ #if defined(MBEDTLS_HAVE_TIME_DATE)
29
+ #include <time.h>
30
+ #endif
31
+
32
+ /**
33
+ * Initializes the mbedtls_pkcs7 structure.
34
+ */
35
+ void mbedtls_pkcs7_init(mbedtls_pkcs7 *pkcs7)
36
+ {
37
+ memset(pkcs7, 0, sizeof(*pkcs7));
38
+ }
39
+
40
+ static int pkcs7_get_next_content_len(unsigned char **p, unsigned char *end,
41
+ size_t *len)
42
+ {
43
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
44
+
45
+ ret = mbedtls_asn1_get_tag(p, end, len, MBEDTLS_ASN1_CONSTRUCTED
46
+ | MBEDTLS_ASN1_CONTEXT_SPECIFIC);
47
+ if (ret != 0) {
48
+ ret = MBEDTLS_ERROR_ADD(MBEDTLS_ERR_PKCS7_INVALID_CONTENT_INFO, ret);
49
+ } else if ((size_t) (end - *p) != *len) {
50
+ ret = MBEDTLS_ERROR_ADD(MBEDTLS_ERR_PKCS7_INVALID_CONTENT_INFO,
51
+ MBEDTLS_ERR_ASN1_LENGTH_MISMATCH);
52
+ }
53
+
54
+ return ret;
55
+ }
56
+
57
+ /**
58
+ * version Version
59
+ * Version ::= INTEGER
60
+ **/
61
+ static int pkcs7_get_version(unsigned char **p, unsigned char *end, int *ver)
62
+ {
63
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
64
+
65
+ ret = mbedtls_asn1_get_int(p, end, ver);
66
+ if (ret != 0) {
67
+ ret = MBEDTLS_ERROR_ADD(MBEDTLS_ERR_PKCS7_INVALID_VERSION, ret);
68
+ }
69
+
70
+ /* If version != 1, return invalid version */
71
+ if (*ver != MBEDTLS_PKCS7_SUPPORTED_VERSION) {
72
+ ret = MBEDTLS_ERR_PKCS7_INVALID_VERSION;
73
+ }
74
+
75
+ return ret;
76
+ }
77
+
78
+ /**
79
+ * ContentInfo ::= SEQUENCE {
80
+ * contentType ContentType,
81
+ * content
82
+ * [0] EXPLICIT ANY DEFINED BY contentType OPTIONAL }
83
+ **/
84
+ static int pkcs7_get_content_info_type(unsigned char **p, unsigned char *end,
85
+ unsigned char **seq_end,
86
+ mbedtls_pkcs7_buf *pkcs7)
87
+ {
88
+ size_t len = 0;
89
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
90
+ unsigned char *start = *p;
91
+
92
+ ret = mbedtls_asn1_get_tag(p, end, &len, MBEDTLS_ASN1_CONSTRUCTED
93
+ | MBEDTLS_ASN1_SEQUENCE);
94
+ if (ret != 0) {
95
+ *p = start;
96
+ return MBEDTLS_ERROR_ADD(MBEDTLS_ERR_PKCS7_INVALID_CONTENT_INFO, ret);
97
+ }
98
+ *seq_end = *p + len;
99
+ ret = mbedtls_asn1_get_tag(p, *seq_end, &len, MBEDTLS_ASN1_OID);
100
+ if (ret != 0) {
101
+ *p = start;
102
+ return MBEDTLS_ERROR_ADD(MBEDTLS_ERR_PKCS7_INVALID_CONTENT_INFO, ret);
103
+ }
104
+
105
+ pkcs7->tag = MBEDTLS_ASN1_OID;
106
+ pkcs7->len = len;
107
+ pkcs7->p = *p;
108
+ *p += len;
109
+
110
+ return ret;
111
+ }
112
+
113
+ /**
114
+ * DigestAlgorithmIdentifier ::= AlgorithmIdentifier
115
+ *
116
+ * This is from x509.h
117
+ **/
118
+ static int pkcs7_get_digest_algorithm(unsigned char **p, unsigned char *end,
119
+ mbedtls_x509_buf *alg)
120
+ {
121
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
122
+
123
+ if ((ret = mbedtls_asn1_get_alg_null(p, end, alg)) != 0) {
124
+ ret = MBEDTLS_ERROR_ADD(MBEDTLS_ERR_PKCS7_INVALID_ALG, ret);
125
+ }
126
+
127
+ return ret;
128
+ }
129
+
130
+ /**
131
+ * DigestAlgorithmIdentifiers :: SET of DigestAlgorithmIdentifier
132
+ **/
133
+ static int pkcs7_get_digest_algorithm_set(unsigned char **p,
134
+ unsigned char *end,
135
+ mbedtls_x509_buf *alg)
136
+ {
137
+ size_t len = 0;
138
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
139
+
140
+ ret = mbedtls_asn1_get_tag(p, end, &len, MBEDTLS_ASN1_CONSTRUCTED
141
+ | MBEDTLS_ASN1_SET);
142
+ if (ret != 0) {
143
+ return MBEDTLS_ERROR_ADD(MBEDTLS_ERR_PKCS7_INVALID_ALG, ret);
144
+ }
145
+
146
+ end = *p + len;
147
+
148
+ ret = mbedtls_asn1_get_alg_null(p, end, alg);
149
+ if (ret != 0) {
150
+ return MBEDTLS_ERROR_ADD(MBEDTLS_ERR_PKCS7_INVALID_ALG, ret);
151
+ }
152
+
153
+ /** For now, it assumes there is only one digest algorithm specified **/
154
+ if (*p != end) {
155
+ return MBEDTLS_ERR_PKCS7_FEATURE_UNAVAILABLE;
156
+ }
157
+
158
+ return 0;
159
+ }
160
+
161
+ /**
162
+ * certificates :: SET OF ExtendedCertificateOrCertificate,
163
+ * ExtendedCertificateOrCertificate ::= CHOICE {
164
+ * certificate Certificate -- x509,
165
+ * extendedCertificate[0] IMPLICIT ExtendedCertificate }
166
+ * Return number of certificates added to the signed data,
167
+ * 0 or higher is valid.
168
+ * Return negative error code for failure.
169
+ **/
170
+ static int pkcs7_get_certificates(unsigned char **p, unsigned char *end,
171
+ mbedtls_x509_crt *certs)
172
+ {
173
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
174
+ size_t len1 = 0;
175
+ size_t len2 = 0;
176
+ unsigned char *end_set, *end_cert, *start;
177
+
178
+ ret = mbedtls_asn1_get_tag(p, end, &len1, MBEDTLS_ASN1_CONSTRUCTED
179
+ | MBEDTLS_ASN1_CONTEXT_SPECIFIC);
180
+ if (ret == MBEDTLS_ERR_ASN1_UNEXPECTED_TAG) {
181
+ return 0;
182
+ }
183
+ if (ret != 0) {
184
+ return MBEDTLS_ERROR_ADD(MBEDTLS_ERR_PKCS7_INVALID_FORMAT, ret);
185
+ }
186
+ start = *p;
187
+ end_set = *p + len1;
188
+
189
+ ret = mbedtls_asn1_get_tag(p, end_set, &len2, MBEDTLS_ASN1_CONSTRUCTED
190
+ | MBEDTLS_ASN1_SEQUENCE);
191
+ if (ret != 0) {
192
+ return MBEDTLS_ERROR_ADD(MBEDTLS_ERR_PKCS7_INVALID_CERT, ret);
193
+ }
194
+
195
+ end_cert = *p + len2;
196
+
197
+ /*
198
+ * This is to verify that there is only one signer certificate. It seems it is
199
+ * not easy to differentiate between the chain vs different signer's certificate.
200
+ * So, we support only the root certificate and the single signer.
201
+ * The behaviour would be improved with addition of multiple signer support.
202
+ */
203
+ if (end_cert != end_set) {
204
+ return MBEDTLS_ERR_PKCS7_FEATURE_UNAVAILABLE;
205
+ }
206
+
207
+ if ((ret = mbedtls_x509_crt_parse_der(certs, start, len1)) < 0) {
208
+ return MBEDTLS_ERR_PKCS7_INVALID_CERT;
209
+ }
210
+
211
+ *p = end_cert;
212
+
213
+ /*
214
+ * Since in this version we strictly support single certificate, and reaching
215
+ * here implies we have parsed successfully, we return 1.
216
+ */
217
+ return 1;
218
+ }
219
+
220
+ /**
221
+ * EncryptedDigest ::= OCTET STRING
222
+ **/
223
+ static int pkcs7_get_signature(unsigned char **p, unsigned char *end,
224
+ mbedtls_pkcs7_buf *signature)
225
+ {
226
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
227
+ size_t len = 0;
228
+
229
+ ret = mbedtls_asn1_get_tag(p, end, &len, MBEDTLS_ASN1_OCTET_STRING);
230
+ if (ret != 0) {
231
+ return ret;
232
+ }
233
+
234
+ signature->tag = MBEDTLS_ASN1_OCTET_STRING;
235
+ signature->len = len;
236
+ signature->p = *p;
237
+
238
+ *p = *p + len;
239
+
240
+ return 0;
241
+ }
242
+
243
+ static void pkcs7_free_signer_info(mbedtls_pkcs7_signer_info *signer)
244
+ {
245
+ mbedtls_x509_name *name_cur;
246
+ mbedtls_x509_name *name_prv;
247
+
248
+ if (signer == NULL) {
249
+ return;
250
+ }
251
+
252
+ name_cur = signer->issuer.next;
253
+ while (name_cur != NULL) {
254
+ name_prv = name_cur;
255
+ name_cur = name_cur->next;
256
+ mbedtls_free(name_prv);
257
+ }
258
+ signer->issuer.next = NULL;
259
+ }
260
+
261
+ /**
262
+ * SignerInfo ::= SEQUENCE {
263
+ * version Version;
264
+ * issuerAndSerialNumber IssuerAndSerialNumber,
265
+ * digestAlgorithm DigestAlgorithmIdentifier,
266
+ * authenticatedAttributes
267
+ * [0] IMPLICIT Attributes OPTIONAL,
268
+ * digestEncryptionAlgorithm DigestEncryptionAlgorithmIdentifier,
269
+ * encryptedDigest EncryptedDigest,
270
+ * unauthenticatedAttributes
271
+ * [1] IMPLICIT Attributes OPTIONAL,
272
+ * Returns 0 if the signerInfo is valid.
273
+ * Return negative error code for failure.
274
+ * Structure must not contain vales for authenticatedAttributes
275
+ * and unauthenticatedAttributes.
276
+ **/
277
+ static int pkcs7_get_signer_info(unsigned char **p, unsigned char *end,
278
+ mbedtls_pkcs7_signer_info *signer,
279
+ mbedtls_x509_buf *alg)
280
+ {
281
+ unsigned char *end_signer, *end_issuer_and_sn;
282
+ int asn1_ret = 0, ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
283
+ size_t len = 0;
284
+
285
+ asn1_ret = mbedtls_asn1_get_tag(p, end, &len, MBEDTLS_ASN1_CONSTRUCTED
286
+ | MBEDTLS_ASN1_SEQUENCE);
287
+ if (asn1_ret != 0) {
288
+ goto out;
289
+ }
290
+
291
+ end_signer = *p + len;
292
+
293
+ ret = pkcs7_get_version(p, end_signer, &signer->version);
294
+ if (ret != 0) {
295
+ goto out;
296
+ }
297
+
298
+ asn1_ret = mbedtls_asn1_get_tag(p, end_signer, &len,
299
+ MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_SEQUENCE);
300
+ if (asn1_ret != 0) {
301
+ goto out;
302
+ }
303
+
304
+ end_issuer_and_sn = *p + len;
305
+ /* Parsing IssuerAndSerialNumber */
306
+ signer->issuer_raw.p = *p;
307
+
308
+ asn1_ret = mbedtls_asn1_get_tag(p, end_issuer_and_sn, &len,
309
+ MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_SEQUENCE);
310
+ if (asn1_ret != 0) {
311
+ goto out;
312
+ }
313
+
314
+ ret = mbedtls_x509_get_name(p, *p + len, &signer->issuer);
315
+ if (ret != 0) {
316
+ goto out;
317
+ }
318
+
319
+ signer->issuer_raw.len = (size_t) (*p - signer->issuer_raw.p);
320
+
321
+ ret = mbedtls_x509_get_serial(p, end_issuer_and_sn, &signer->serial);
322
+ if (ret != 0) {
323
+ goto out;
324
+ }
325
+
326
+ /* ensure no extra or missing bytes */
327
+ if (*p != end_issuer_and_sn) {
328
+ ret = MBEDTLS_ERR_PKCS7_INVALID_SIGNER_INFO;
329
+ goto out;
330
+ }
331
+
332
+ ret = pkcs7_get_digest_algorithm(p, end_signer, &signer->alg_identifier);
333
+ if (ret != 0) {
334
+ goto out;
335
+ }
336
+
337
+ /* Check that the digest algorithm used matches the one provided earlier */
338
+ if (signer->alg_identifier.tag != alg->tag ||
339
+ signer->alg_identifier.len != alg->len ||
340
+ memcmp(signer->alg_identifier.p, alg->p, alg->len) != 0) {
341
+ ret = MBEDTLS_ERR_PKCS7_INVALID_SIGNER_INFO;
342
+ goto out;
343
+ }
344
+
345
+ /* Assume authenticatedAttributes is nonexistent */
346
+ ret = pkcs7_get_digest_algorithm(p, end_signer, &signer->sig_alg_identifier);
347
+ if (ret != 0) {
348
+ goto out;
349
+ }
350
+
351
+ ret = pkcs7_get_signature(p, end_signer, &signer->sig);
352
+ if (ret != 0) {
353
+ goto out;
354
+ }
355
+
356
+ /* Do not permit any unauthenticated attributes */
357
+ if (*p != end_signer) {
358
+ ret = MBEDTLS_ERR_PKCS7_INVALID_SIGNER_INFO;
359
+ }
360
+
361
+ out:
362
+ if (asn1_ret != 0 || ret != 0) {
363
+ pkcs7_free_signer_info(signer);
364
+ ret = MBEDTLS_ERROR_ADD(MBEDTLS_ERR_PKCS7_INVALID_SIGNER_INFO,
365
+ asn1_ret);
366
+ }
367
+
368
+ return ret;
369
+ }
370
+
371
+ /**
372
+ * SignerInfos ::= SET of SignerInfo
373
+ * Return number of signers added to the signed data,
374
+ * 0 or higher is valid.
375
+ * Return negative error code for failure.
376
+ **/
377
+ static int pkcs7_get_signers_info_set(unsigned char **p, unsigned char *end,
378
+ mbedtls_pkcs7_signer_info *signers_set,
379
+ mbedtls_x509_buf *digest_alg)
380
+ {
381
+ unsigned char *end_set;
382
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
383
+ int count = 0;
384
+ size_t len = 0;
385
+
386
+ ret = mbedtls_asn1_get_tag(p, end, &len, MBEDTLS_ASN1_CONSTRUCTED
387
+ | MBEDTLS_ASN1_SET);
388
+ if (ret != 0) {
389
+ return MBEDTLS_ERROR_ADD(MBEDTLS_ERR_PKCS7_INVALID_SIGNER_INFO, ret);
390
+ }
391
+
392
+ /* Detect zero signers */
393
+ if (len == 0) {
394
+ return 0;
395
+ }
396
+
397
+ end_set = *p + len;
398
+
399
+ ret = pkcs7_get_signer_info(p, end_set, signers_set, digest_alg);
400
+ if (ret != 0) {
401
+ return ret;
402
+ }
403
+ count++;
404
+
405
+ mbedtls_pkcs7_signer_info *prev = signers_set;
406
+ while (*p != end_set) {
407
+ mbedtls_pkcs7_signer_info *signer =
408
+ mbedtls_calloc(1, sizeof(mbedtls_pkcs7_signer_info));
409
+ if (!signer) {
410
+ ret = MBEDTLS_ERR_PKCS7_ALLOC_FAILED;
411
+ goto cleanup;
412
+ }
413
+
414
+ ret = pkcs7_get_signer_info(p, end_set, signer, digest_alg);
415
+ if (ret != 0) {
416
+ mbedtls_free(signer);
417
+ goto cleanup;
418
+ }
419
+ prev->next = signer;
420
+ prev = signer;
421
+ count++;
422
+ }
423
+
424
+ return count;
425
+
426
+ cleanup:
427
+ pkcs7_free_signer_info(signers_set);
428
+ mbedtls_pkcs7_signer_info *signer = signers_set->next;
429
+ while (signer != NULL) {
430
+ prev = signer;
431
+ signer = signer->next;
432
+ pkcs7_free_signer_info(prev);
433
+ mbedtls_free(prev);
434
+ }
435
+ signers_set->next = NULL;
436
+ return ret;
437
+ }
438
+
439
+ /**
440
+ * SignedData ::= SEQUENCE {
441
+ * version Version,
442
+ * digestAlgorithms DigestAlgorithmIdentifiers,
443
+ * contentInfo ContentInfo,
444
+ * certificates
445
+ * [0] IMPLICIT ExtendedCertificatesAndCertificates
446
+ * OPTIONAL,
447
+ * crls
448
+ * [0] IMPLICIT CertificateRevocationLists OPTIONAL,
449
+ * signerInfos SignerInfos }
450
+ */
451
+ static int pkcs7_get_signed_data(unsigned char *buf, size_t buflen,
452
+ mbedtls_pkcs7_signed_data *signed_data)
453
+ {
454
+ unsigned char *p = buf;
455
+ unsigned char *end = buf + buflen;
456
+ unsigned char *end_content_info = NULL;
457
+ size_t len = 0;
458
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
459
+ mbedtls_md_type_t md_alg;
460
+
461
+ ret = mbedtls_asn1_get_tag(&p, end, &len, MBEDTLS_ASN1_CONSTRUCTED
462
+ | MBEDTLS_ASN1_SEQUENCE);
463
+ if (ret != 0) {
464
+ return MBEDTLS_ERROR_ADD(MBEDTLS_ERR_PKCS7_INVALID_FORMAT, ret);
465
+ }
466
+
467
+ if (p + len != end) {
468
+ return MBEDTLS_ERROR_ADD(MBEDTLS_ERR_PKCS7_INVALID_FORMAT,
469
+ MBEDTLS_ERR_ASN1_LENGTH_MISMATCH);
470
+ }
471
+
472
+ /* Get version of signed data */
473
+ ret = pkcs7_get_version(&p, end, &signed_data->version);
474
+ if (ret != 0) {
475
+ return ret;
476
+ }
477
+
478
+ /* Get digest algorithm */
479
+ ret = pkcs7_get_digest_algorithm_set(&p, end,
480
+ &signed_data->digest_alg_identifiers);
481
+ if (ret != 0) {
482
+ return ret;
483
+ }
484
+
485
+ ret = mbedtls_oid_get_md_alg(&signed_data->digest_alg_identifiers, &md_alg);
486
+ if (ret != 0) {
487
+ return MBEDTLS_ERR_PKCS7_INVALID_ALG;
488
+ }
489
+
490
+ mbedtls_pkcs7_buf content_type;
491
+ memset(&content_type, 0, sizeof(content_type));
492
+ ret = pkcs7_get_content_info_type(&p, end, &end_content_info, &content_type);
493
+ if (ret != 0) {
494
+ return ret;
495
+ }
496
+ if (MBEDTLS_OID_CMP(MBEDTLS_OID_PKCS7_DATA, &content_type)) {
497
+ return MBEDTLS_ERR_PKCS7_INVALID_CONTENT_INFO;
498
+ }
499
+
500
+ if (p != end_content_info) {
501
+ /* Determine if valid content is present */
502
+ ret = mbedtls_asn1_get_tag(&p,
503
+ end_content_info,
504
+ &len,
505
+ MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_CONTEXT_SPECIFIC);
506
+ if (ret != 0) {
507
+ return MBEDTLS_ERROR_ADD(MBEDTLS_ERR_PKCS7_INVALID_CONTENT_INFO, ret);
508
+ }
509
+ p += len;
510
+ if (p != end_content_info) {
511
+ return MBEDTLS_ERROR_ADD(MBEDTLS_ERR_PKCS7_INVALID_CONTENT_INFO, ret);
512
+ }
513
+ /* Valid content is present - this is not supported */
514
+ return MBEDTLS_ERR_PKCS7_FEATURE_UNAVAILABLE;
515
+ }
516
+
517
+ /* Look for certificates, there may or may not be any */
518
+ mbedtls_x509_crt_init(&signed_data->certs);
519
+ ret = pkcs7_get_certificates(&p, end, &signed_data->certs);
520
+ if (ret < 0) {
521
+ return ret;
522
+ }
523
+
524
+ signed_data->no_of_certs = ret;
525
+
526
+ /*
527
+ * Currently CRLs are not supported. If CRL exist, the parsing will fail
528
+ * at next step of getting signers info and return error as invalid
529
+ * signer info.
530
+ */
531
+
532
+ signed_data->no_of_crls = 0;
533
+
534
+ /* Get signers info */
535
+ ret = pkcs7_get_signers_info_set(&p,
536
+ end,
537
+ &signed_data->signers,
538
+ &signed_data->digest_alg_identifiers);
539
+ if (ret < 0) {
540
+ return ret;
541
+ }
542
+
543
+ signed_data->no_of_signers = ret;
544
+
545
+ /* Don't permit trailing data */
546
+ if (p != end) {
547
+ return MBEDTLS_ERR_PKCS7_INVALID_FORMAT;
548
+ }
549
+
550
+ return 0;
551
+ }
552
+
553
+ int mbedtls_pkcs7_parse_der(mbedtls_pkcs7 *pkcs7, const unsigned char *buf,
554
+ const size_t buflen)
555
+ {
556
+ unsigned char *p;
557
+ unsigned char *end;
558
+ size_t len = 0;
559
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
560
+
561
+ if (pkcs7 == NULL) {
562
+ return MBEDTLS_ERR_PKCS7_BAD_INPUT_DATA;
563
+ }
564
+
565
+ /* make an internal copy of the buffer for parsing */
566
+ pkcs7->raw.p = p = mbedtls_calloc(1, buflen);
567
+ if (pkcs7->raw.p == NULL) {
568
+ ret = MBEDTLS_ERR_PKCS7_ALLOC_FAILED;
569
+ goto out;
570
+ }
571
+ memcpy(p, buf, buflen);
572
+ pkcs7->raw.len = buflen;
573
+ end = p + buflen;
574
+
575
+ ret = mbedtls_asn1_get_tag(&p, end, &len, MBEDTLS_ASN1_CONSTRUCTED
576
+ | MBEDTLS_ASN1_SEQUENCE);
577
+ if (ret != 0) {
578
+ ret = MBEDTLS_ERROR_ADD(MBEDTLS_ERR_PKCS7_INVALID_FORMAT, ret);
579
+ goto out;
580
+ }
581
+
582
+ if ((size_t) (end - p) != len) {
583
+ ret = MBEDTLS_ERROR_ADD(MBEDTLS_ERR_PKCS7_INVALID_FORMAT,
584
+ MBEDTLS_ERR_ASN1_LENGTH_MISMATCH);
585
+ goto out;
586
+ }
587
+
588
+ if ((ret = mbedtls_asn1_get_tag(&p, end, &len, MBEDTLS_ASN1_OID)) != 0) {
589
+ if (ret != MBEDTLS_ERR_ASN1_UNEXPECTED_TAG) {
590
+ goto out;
591
+ }
592
+ p = pkcs7->raw.p;
593
+ len = buflen;
594
+ goto try_data;
595
+ }
596
+
597
+ if (MBEDTLS_OID_CMP_RAW(MBEDTLS_OID_PKCS7_SIGNED_DATA, p, len)) {
598
+ /* OID is not MBEDTLS_OID_PKCS7_SIGNED_DATA, which is the only supported feature */
599
+ if (!MBEDTLS_OID_CMP_RAW(MBEDTLS_OID_PKCS7_DATA, p, len)
600
+ || !MBEDTLS_OID_CMP_RAW(MBEDTLS_OID_PKCS7_ENCRYPTED_DATA, p, len)
601
+ || !MBEDTLS_OID_CMP_RAW(MBEDTLS_OID_PKCS7_ENVELOPED_DATA, p, len)
602
+ || !MBEDTLS_OID_CMP_RAW(MBEDTLS_OID_PKCS7_SIGNED_AND_ENVELOPED_DATA, p, len)
603
+ || !MBEDTLS_OID_CMP_RAW(MBEDTLS_OID_PKCS7_DIGESTED_DATA, p, len)) {
604
+ /* OID is valid according to the spec, but unsupported */
605
+ ret = MBEDTLS_ERR_PKCS7_FEATURE_UNAVAILABLE;
606
+ } else {
607
+ /* OID is invalid according to the spec */
608
+ ret = MBEDTLS_ERR_PKCS7_BAD_INPUT_DATA;
609
+ }
610
+ goto out;
611
+ }
612
+
613
+ p += len;
614
+
615
+ ret = pkcs7_get_next_content_len(&p, end, &len);
616
+ if (ret != 0) {
617
+ goto out;
618
+ }
619
+
620
+ /* ensure no extra/missing data */
621
+ if (p + len != end) {
622
+ ret = MBEDTLS_ERR_PKCS7_BAD_INPUT_DATA;
623
+ goto out;
624
+ }
625
+
626
+ try_data:
627
+ ret = pkcs7_get_signed_data(p, len, &pkcs7->signed_data);
628
+ if (ret != 0) {
629
+ goto out;
630
+ }
631
+
632
+ ret = MBEDTLS_PKCS7_SIGNED_DATA;
633
+
634
+ out:
635
+ if (ret < 0) {
636
+ mbedtls_pkcs7_free(pkcs7);
637
+ }
638
+
639
+ return ret;
640
+ }
641
+
642
+ static int mbedtls_pkcs7_data_or_hash_verify(mbedtls_pkcs7 *pkcs7,
643
+ const mbedtls_x509_crt *cert,
644
+ const unsigned char *data,
645
+ size_t datalen,
646
+ const int is_data_hash)
647
+ {
648
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
649
+ unsigned char *hash;
650
+ mbedtls_pk_context pk_cxt = cert->pk;
651
+ const mbedtls_md_info_t *md_info;
652
+ mbedtls_md_type_t md_alg;
653
+ mbedtls_pkcs7_signer_info *signer;
654
+
655
+ if (pkcs7->signed_data.no_of_signers == 0) {
656
+ return MBEDTLS_ERR_PKCS7_INVALID_CERT;
657
+ }
658
+
659
+ if (mbedtls_x509_time_is_past(&cert->valid_to) ||
660
+ mbedtls_x509_time_is_future(&cert->valid_from)) {
661
+ return MBEDTLS_ERR_PKCS7_CERT_DATE_INVALID;
662
+ }
663
+
664
+ ret = mbedtls_oid_get_md_alg(&pkcs7->signed_data.digest_alg_identifiers, &md_alg);
665
+ if (ret != 0) {
666
+ return ret;
667
+ }
668
+
669
+ #if !defined(MBEDTLS_PKCS7_ALLOW_WEAK_SIGNATURES)
670
+ /* Ensure the MD alg from the PKCS#7 context and signature algorithm from
671
+ * the certificate belong to the list of secure algorithms
672
+ * (i.e. mbedtls_x509_crt_profile_default). */
673
+ ret = mbedtls_x509_profile_check_md_alg(&mbedtls_x509_crt_profile_default, md_alg);
674
+ if (ret != 0) {
675
+ return MBEDTLS_ERR_PKCS7_INVALID_ALG;
676
+ }
677
+ ret = mbedtls_x509_profile_check_pk_alg(&mbedtls_x509_crt_profile_default, cert->sig_pk);
678
+ if (ret != 0) {
679
+ return MBEDTLS_ERR_PKCS7_INVALID_ALG;
680
+ }
681
+ #endif /* MBEDTLS_PKCS7_ALLOW_WEAK_SIGNATURES */
682
+
683
+ md_info = mbedtls_md_info_from_type(md_alg);
684
+ if (md_info == NULL) {
685
+ return MBEDTLS_ERR_PKCS7_VERIFY_FAIL;
686
+ }
687
+
688
+ hash = mbedtls_calloc(mbedtls_md_get_size(md_info), 1);
689
+ if (hash == NULL) {
690
+ return MBEDTLS_ERR_PKCS7_ALLOC_FAILED;
691
+ }
692
+
693
+ /* BEGIN must free hash before jumping out */
694
+ if (is_data_hash) {
695
+ if (datalen != mbedtls_md_get_size(md_info)) {
696
+ ret = MBEDTLS_ERR_PKCS7_VERIFY_FAIL;
697
+ } else {
698
+ memcpy(hash, data, datalen);
699
+ }
700
+ } else {
701
+ ret = mbedtls_md(md_info, data, datalen, hash);
702
+ }
703
+ if (ret != 0) {
704
+ mbedtls_free(hash);
705
+ return MBEDTLS_ERR_PKCS7_VERIFY_FAIL;
706
+ }
707
+
708
+ /* assume failure */
709
+ ret = MBEDTLS_ERR_PKCS7_VERIFY_FAIL;
710
+
711
+ /*
712
+ * Potential TODOs
713
+ * Currently we iterate over all signers and return success if any of them
714
+ * verify.
715
+ *
716
+ * However, we could make this better by checking against the certificate's
717
+ * identification and SignerIdentifier fields first. That would also allow
718
+ * us to distinguish between 'no signature for key' and 'signature for key
719
+ * failed to validate'.
720
+ */
721
+ for (signer = &pkcs7->signed_data.signers; signer; signer = signer->next) {
722
+ ret = mbedtls_pk_verify(&pk_cxt, md_alg, hash,
723
+ mbedtls_md_get_size(md_info),
724
+ signer->sig.p, signer->sig.len);
725
+
726
+ if (ret == 0) {
727
+ break;
728
+ }
729
+ }
730
+
731
+ mbedtls_free(hash);
732
+ /* END must free hash before jumping out */
733
+ return ret;
734
+ }
735
+
736
+ int mbedtls_pkcs7_signed_data_verify(mbedtls_pkcs7 *pkcs7,
737
+ const mbedtls_x509_crt *cert,
738
+ const unsigned char *data,
739
+ size_t datalen)
740
+ {
741
+ if (data == NULL) {
742
+ return MBEDTLS_ERR_PKCS7_BAD_INPUT_DATA;
743
+ }
744
+ return mbedtls_pkcs7_data_or_hash_verify(pkcs7, cert, data, datalen, 0);
745
+ }
746
+
747
+ int mbedtls_pkcs7_signed_hash_verify(mbedtls_pkcs7 *pkcs7,
748
+ const mbedtls_x509_crt *cert,
749
+ const unsigned char *hash,
750
+ size_t hashlen)
751
+ {
752
+ if (hash == NULL) {
753
+ return MBEDTLS_ERR_PKCS7_BAD_INPUT_DATA;
754
+ }
755
+ return mbedtls_pkcs7_data_or_hash_verify(pkcs7, cert, hash, hashlen, 1);
756
+ }
757
+
758
+ /*
759
+ * Unallocate all pkcs7 data
760
+ */
761
+ void mbedtls_pkcs7_free(mbedtls_pkcs7 *pkcs7)
762
+ {
763
+ mbedtls_pkcs7_signer_info *signer_cur;
764
+ mbedtls_pkcs7_signer_info *signer_prev;
765
+
766
+ if (pkcs7 == NULL || pkcs7->raw.p == NULL) {
767
+ return;
768
+ }
769
+
770
+ mbedtls_free(pkcs7->raw.p);
771
+
772
+ mbedtls_x509_crt_free(&pkcs7->signed_data.certs);
773
+ mbedtls_x509_crl_free(&pkcs7->signed_data.crl);
774
+
775
+ signer_cur = pkcs7->signed_data.signers.next;
776
+ pkcs7_free_signer_info(&pkcs7->signed_data.signers);
777
+ while (signer_cur != NULL) {
778
+ signer_prev = signer_cur;
779
+ signer_cur = signer_prev->next;
780
+ pkcs7_free_signer_info(signer_prev);
781
+ mbedtls_free(signer_prev);
782
+ }
783
+
784
+ mbedtls_platform_zeroize(pkcs7, sizeof(*pkcs7));
785
+ }
786
+
787
+ #endif