@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,138 @@
1
+ /**
2
+ * \file pk_wrap.h
3
+ *
4
+ * \brief Public Key abstraction layer: wrapper functions
5
+ */
6
+ /*
7
+ * Copyright The Mbed TLS Contributors
8
+ * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
9
+ */
10
+
11
+ #ifndef MBEDTLS_PK_WRAP_H
12
+ #define MBEDTLS_PK_WRAP_H
13
+
14
+ #include "mbedtls/build_info.h"
15
+
16
+ #include "mbedtls/pk.h"
17
+
18
+ #if defined(MBEDTLS_USE_PSA_CRYPTO)
19
+ #include "psa/crypto.h"
20
+ #endif
21
+
22
+ struct mbedtls_pk_info_t {
23
+ /** Public key type */
24
+ mbedtls_pk_type_t type;
25
+
26
+ /** Type name */
27
+ const char *name;
28
+
29
+ /** Get key size in bits */
30
+ size_t (*get_bitlen)(mbedtls_pk_context *pk);
31
+
32
+ /** Tell if the context implements this type (e.g. ECKEY can do ECDSA) */
33
+ int (*can_do)(mbedtls_pk_type_t type);
34
+
35
+ /** Verify signature */
36
+ int (*verify_func)(mbedtls_pk_context *pk, mbedtls_md_type_t md_alg,
37
+ const unsigned char *hash, size_t hash_len,
38
+ const unsigned char *sig, size_t sig_len);
39
+
40
+ /** Make signature */
41
+ int (*sign_func)(mbedtls_pk_context *pk, mbedtls_md_type_t md_alg,
42
+ const unsigned char *hash, size_t hash_len,
43
+ unsigned char *sig, size_t sig_size, size_t *sig_len,
44
+ int (*f_rng)(void *, unsigned char *, size_t),
45
+ void *p_rng);
46
+
47
+ #if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE)
48
+ /** Verify signature (restartable) */
49
+ int (*verify_rs_func)(mbedtls_pk_context *pk, mbedtls_md_type_t md_alg,
50
+ const unsigned char *hash, size_t hash_len,
51
+ const unsigned char *sig, size_t sig_len,
52
+ void *rs_ctx);
53
+
54
+ /** Make signature (restartable) */
55
+ int (*sign_rs_func)(mbedtls_pk_context *pk, mbedtls_md_type_t md_alg,
56
+ const unsigned char *hash, size_t hash_len,
57
+ unsigned char *sig, size_t sig_size, size_t *sig_len,
58
+ int (*f_rng)(void *, unsigned char *, size_t),
59
+ void *p_rng, void *rs_ctx);
60
+ #endif /* MBEDTLS_ECDSA_C && MBEDTLS_ECP_RESTARTABLE */
61
+
62
+ /** Decrypt message */
63
+ int (*decrypt_func)(mbedtls_pk_context *pk, const unsigned char *input, size_t ilen,
64
+ unsigned char *output, size_t *olen, size_t osize,
65
+ int (*f_rng)(void *, unsigned char *, size_t),
66
+ void *p_rng);
67
+
68
+ /** Encrypt message */
69
+ int (*encrypt_func)(mbedtls_pk_context *pk, const unsigned char *input, size_t ilen,
70
+ unsigned char *output, size_t *olen, size_t osize,
71
+ int (*f_rng)(void *, unsigned char *, size_t),
72
+ void *p_rng);
73
+
74
+ /** Check public-private key pair */
75
+ int (*check_pair_func)(mbedtls_pk_context *pub, mbedtls_pk_context *prv,
76
+ int (*f_rng)(void *, unsigned char *, size_t),
77
+ void *p_rng);
78
+
79
+ /** Allocate a new context */
80
+ void * (*ctx_alloc_func)(void);
81
+
82
+ /** Free the given context */
83
+ void (*ctx_free_func)(void *ctx);
84
+
85
+ #if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE)
86
+ /** Allocate the restart context */
87
+ void *(*rs_alloc_func)(void);
88
+
89
+ /** Free the restart context */
90
+ void (*rs_free_func)(void *rs_ctx);
91
+ #endif /* MBEDTLS_ECDSA_C && MBEDTLS_ECP_RESTARTABLE */
92
+
93
+ /** Interface with the debug module */
94
+ void (*debug_func)(mbedtls_pk_context *pk, mbedtls_pk_debug_item *items);
95
+
96
+ };
97
+ #if defined(MBEDTLS_PK_RSA_ALT_SUPPORT)
98
+ /* Container for RSA-alt */
99
+ typedef struct {
100
+ void *key;
101
+ mbedtls_pk_rsa_alt_decrypt_func decrypt_func;
102
+ mbedtls_pk_rsa_alt_sign_func sign_func;
103
+ mbedtls_pk_rsa_alt_key_len_func key_len_func;
104
+ } mbedtls_rsa_alt_context;
105
+ #endif
106
+
107
+ #if defined(MBEDTLS_RSA_C)
108
+ extern const mbedtls_pk_info_t mbedtls_rsa_info;
109
+ #endif
110
+
111
+ #if defined(MBEDTLS_PK_HAVE_ECC_KEYS)
112
+ extern const mbedtls_pk_info_t mbedtls_eckey_info;
113
+ extern const mbedtls_pk_info_t mbedtls_eckeydh_info;
114
+ #endif
115
+
116
+ #if defined(MBEDTLS_PK_CAN_ECDSA_SOME)
117
+ extern const mbedtls_pk_info_t mbedtls_ecdsa_info;
118
+ #endif
119
+
120
+ #if defined(MBEDTLS_PK_RSA_ALT_SUPPORT)
121
+ extern const mbedtls_pk_info_t mbedtls_rsa_alt_info;
122
+ #endif
123
+
124
+ #if defined(MBEDTLS_USE_PSA_CRYPTO)
125
+ extern const mbedtls_pk_info_t mbedtls_ecdsa_opaque_info;
126
+ extern const mbedtls_pk_info_t mbedtls_rsa_opaque_info;
127
+
128
+ #if defined(MBEDTLS_RSA_C)
129
+ int mbedtls_pk_psa_rsa_sign_ext(psa_algorithm_t psa_alg_md,
130
+ mbedtls_rsa_context *rsa_ctx,
131
+ const unsigned char *hash, size_t hash_len,
132
+ unsigned char *sig, size_t sig_size,
133
+ size_t *sig_len);
134
+ #endif /* MBEDTLS_RSA_C */
135
+
136
+ #endif /* MBEDTLS_USE_PSA_CRYPTO */
137
+
138
+ #endif /* MBEDTLS_PK_WRAP_H */
@@ -0,0 +1,437 @@
1
+ /*
2
+ * PKCS#12 Personal Information Exchange Syntax
3
+ *
4
+ * Copyright The Mbed TLS Contributors
5
+ * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
6
+ */
7
+ /*
8
+ * The PKCS #12 Personal Information Exchange Syntax Standard v1.1
9
+ *
10
+ * http://www.rsa.com/rsalabs/pkcs/files/h11301-wp-pkcs-12v1-1-personal-information-exchange-syntax.pdf
11
+ * ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-12/pkcs-12v1-1.asn
12
+ */
13
+
14
+ #include "common.h"
15
+
16
+ #if defined(MBEDTLS_PKCS12_C)
17
+
18
+ #include "mbedtls/pkcs12.h"
19
+ #include "mbedtls/asn1.h"
20
+ #if defined(MBEDTLS_CIPHER_C)
21
+ #include "mbedtls/cipher.h"
22
+ #endif /* MBEDTLS_CIPHER_C */
23
+ #include "mbedtls/platform_util.h"
24
+ #include "mbedtls/error.h"
25
+
26
+ #include <string.h>
27
+
28
+ #if defined(MBEDTLS_DES_C)
29
+ #include "mbedtls/des.h"
30
+ #endif
31
+
32
+ #include "psa_util_internal.h"
33
+
34
+ #if defined(MBEDTLS_ASN1_PARSE_C) && defined(MBEDTLS_CIPHER_C)
35
+
36
+ static int pkcs12_parse_pbe_params(mbedtls_asn1_buf *params,
37
+ mbedtls_asn1_buf *salt, int *iterations)
38
+ {
39
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
40
+ unsigned char **p = &params->p;
41
+ const unsigned char *end = params->p + params->len;
42
+
43
+ /*
44
+ * pkcs-12PbeParams ::= SEQUENCE {
45
+ * salt OCTET STRING,
46
+ * iterations INTEGER
47
+ * }
48
+ *
49
+ */
50
+ if (params->tag != (MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_SEQUENCE)) {
51
+ return MBEDTLS_ERROR_ADD(MBEDTLS_ERR_PKCS12_PBE_INVALID_FORMAT,
52
+ MBEDTLS_ERR_ASN1_UNEXPECTED_TAG);
53
+ }
54
+
55
+ if ((ret = mbedtls_asn1_get_tag(p, end, &salt->len, MBEDTLS_ASN1_OCTET_STRING)) != 0) {
56
+ return MBEDTLS_ERROR_ADD(MBEDTLS_ERR_PKCS12_PBE_INVALID_FORMAT, ret);
57
+ }
58
+
59
+ salt->p = *p;
60
+ *p += salt->len;
61
+
62
+ if ((ret = mbedtls_asn1_get_int(p, end, iterations)) != 0) {
63
+ return MBEDTLS_ERROR_ADD(MBEDTLS_ERR_PKCS12_PBE_INVALID_FORMAT, ret);
64
+ }
65
+
66
+ if (*p != end) {
67
+ return MBEDTLS_ERROR_ADD(MBEDTLS_ERR_PKCS12_PBE_INVALID_FORMAT,
68
+ MBEDTLS_ERR_ASN1_LENGTH_MISMATCH);
69
+ }
70
+
71
+ return 0;
72
+ }
73
+
74
+ #define PKCS12_MAX_PWDLEN 128
75
+
76
+ static int pkcs12_pbe_derive_key_iv(mbedtls_asn1_buf *pbe_params, mbedtls_md_type_t md_type,
77
+ const unsigned char *pwd, size_t pwdlen,
78
+ unsigned char *key, size_t keylen,
79
+ unsigned char *iv, size_t ivlen)
80
+ {
81
+ int ret, iterations = 0;
82
+ mbedtls_asn1_buf salt;
83
+ size_t i;
84
+ unsigned char unipwd[PKCS12_MAX_PWDLEN * 2 + 2];
85
+
86
+ if (pwdlen > PKCS12_MAX_PWDLEN) {
87
+ return MBEDTLS_ERR_PKCS12_BAD_INPUT_DATA;
88
+ }
89
+
90
+ memset(&salt, 0, sizeof(mbedtls_asn1_buf));
91
+ memset(&unipwd, 0, sizeof(unipwd));
92
+
93
+ if ((ret = pkcs12_parse_pbe_params(pbe_params, &salt,
94
+ &iterations)) != 0) {
95
+ return ret;
96
+ }
97
+
98
+ for (i = 0; i < pwdlen; i++) {
99
+ unipwd[i * 2 + 1] = pwd[i];
100
+ }
101
+
102
+ if ((ret = mbedtls_pkcs12_derivation(key, keylen, unipwd, pwdlen * 2 + 2,
103
+ salt.p, salt.len, md_type,
104
+ MBEDTLS_PKCS12_DERIVE_KEY, iterations)) != 0) {
105
+ return ret;
106
+ }
107
+
108
+ if (iv == NULL || ivlen == 0) {
109
+ return 0;
110
+ }
111
+
112
+ if ((ret = mbedtls_pkcs12_derivation(iv, ivlen, unipwd, pwdlen * 2 + 2,
113
+ salt.p, salt.len, md_type,
114
+ MBEDTLS_PKCS12_DERIVE_IV, iterations)) != 0) {
115
+ return ret;
116
+ }
117
+ return 0;
118
+ }
119
+
120
+ #undef PKCS12_MAX_PWDLEN
121
+
122
+ #if !defined(MBEDTLS_CIPHER_PADDING_PKCS7)
123
+ int mbedtls_pkcs12_pbe_ext(mbedtls_asn1_buf *pbe_params, int mode,
124
+ mbedtls_cipher_type_t cipher_type, mbedtls_md_type_t md_type,
125
+ const unsigned char *pwd, size_t pwdlen,
126
+ const unsigned char *data, size_t len,
127
+ unsigned char *output, size_t output_size,
128
+ size_t *output_len);
129
+ #endif
130
+
131
+ #if !defined(MBEDTLS_DEPRECATED_REMOVED)
132
+ int mbedtls_pkcs12_pbe(mbedtls_asn1_buf *pbe_params, int mode,
133
+ mbedtls_cipher_type_t cipher_type, mbedtls_md_type_t md_type,
134
+ const unsigned char *pwd, size_t pwdlen,
135
+ const unsigned char *data, size_t len,
136
+ unsigned char *output)
137
+ {
138
+ size_t output_len = 0;
139
+
140
+ /* We assume caller of the function is providing a big enough output buffer
141
+ * so we pass output_size as SIZE_MAX to pass checks, However, no guarantees
142
+ * for the output size actually being correct.
143
+ */
144
+ return mbedtls_pkcs12_pbe_ext(pbe_params, mode, cipher_type, md_type,
145
+ pwd, pwdlen, data, len, output, SIZE_MAX,
146
+ &output_len);
147
+ }
148
+ #endif
149
+
150
+ int mbedtls_pkcs12_pbe_ext(mbedtls_asn1_buf *pbe_params, int mode,
151
+ mbedtls_cipher_type_t cipher_type, mbedtls_md_type_t md_type,
152
+ const unsigned char *pwd, size_t pwdlen,
153
+ const unsigned char *data, size_t len,
154
+ unsigned char *output, size_t output_size,
155
+ size_t *output_len)
156
+ {
157
+ int ret, keylen = 0;
158
+ unsigned char key[32];
159
+ unsigned char iv[16];
160
+ const mbedtls_cipher_info_t *cipher_info;
161
+ mbedtls_cipher_context_t cipher_ctx;
162
+ size_t iv_len = 0;
163
+ size_t finish_olen = 0;
164
+ unsigned int padlen = 0;
165
+
166
+ if (pwd == NULL && pwdlen != 0) {
167
+ return MBEDTLS_ERR_PKCS12_BAD_INPUT_DATA;
168
+ }
169
+
170
+ cipher_info = mbedtls_cipher_info_from_type(cipher_type);
171
+ if (cipher_info == NULL) {
172
+ return MBEDTLS_ERR_PKCS12_FEATURE_UNAVAILABLE;
173
+ }
174
+
175
+ keylen = (int) mbedtls_cipher_info_get_key_bitlen(cipher_info) / 8;
176
+
177
+ if (mode == MBEDTLS_PKCS12_PBE_DECRYPT) {
178
+ if (output_size < len) {
179
+ return MBEDTLS_ERR_ASN1_BUF_TOO_SMALL;
180
+ }
181
+ }
182
+
183
+ if (mode == MBEDTLS_PKCS12_PBE_ENCRYPT) {
184
+ padlen = cipher_info->block_size - (len % cipher_info->block_size);
185
+ if (output_size < (len + padlen)) {
186
+ return MBEDTLS_ERR_ASN1_BUF_TOO_SMALL;
187
+ }
188
+ }
189
+
190
+ iv_len = mbedtls_cipher_info_get_iv_size(cipher_info);
191
+ if ((ret = pkcs12_pbe_derive_key_iv(pbe_params, md_type, pwd, pwdlen,
192
+ key, keylen,
193
+ iv, iv_len)) != 0) {
194
+ return ret;
195
+ }
196
+
197
+ mbedtls_cipher_init(&cipher_ctx);
198
+
199
+ if ((ret = mbedtls_cipher_setup(&cipher_ctx, cipher_info)) != 0) {
200
+ goto exit;
201
+ }
202
+
203
+ if ((ret = mbedtls_cipher_setkey(&cipher_ctx, key, 8 * keylen,
204
+ (mbedtls_operation_t) mode)) != 0) {
205
+ goto exit;
206
+ }
207
+
208
+ #if defined(MBEDTLS_CIPHER_MODE_WITH_PADDING)
209
+ {
210
+ /* PKCS12 uses CBC with PKCS7 padding */
211
+ mbedtls_cipher_padding_t padding = MBEDTLS_PADDING_PKCS7;
212
+ #if !defined(MBEDTLS_CIPHER_PADDING_PKCS7)
213
+ /* For historical reasons, when decrypting, this function works when
214
+ * decrypting even when support for PKCS7 padding is disabled. In this
215
+ * case, it ignores the padding, and so will never report a
216
+ * password mismatch.
217
+ */
218
+ if (mode == MBEDTLS_PKCS12_PBE_DECRYPT) {
219
+ padding = MBEDTLS_PADDING_NONE;
220
+ }
221
+ #endif
222
+ if ((ret = mbedtls_cipher_set_padding_mode(&cipher_ctx, padding)) != 0) {
223
+ goto exit;
224
+ }
225
+ }
226
+ #endif /* MBEDTLS_CIPHER_MODE_WITH_PADDING */
227
+
228
+ ret = mbedtls_cipher_crypt(&cipher_ctx, iv, iv_len, data, len, output, &finish_olen);
229
+ if (ret == MBEDTLS_ERR_CIPHER_INVALID_PADDING) {
230
+ ret = MBEDTLS_ERR_PKCS12_PASSWORD_MISMATCH;
231
+ }
232
+
233
+ *output_len += finish_olen;
234
+
235
+ exit:
236
+ mbedtls_platform_zeroize(key, sizeof(key));
237
+ mbedtls_platform_zeroize(iv, sizeof(iv));
238
+ mbedtls_cipher_free(&cipher_ctx);
239
+
240
+ return ret;
241
+ }
242
+
243
+ #endif /* MBEDTLS_ASN1_PARSE_C && MBEDTLS_CIPHER_C */
244
+
245
+ static void pkcs12_fill_buffer(unsigned char *data, size_t data_len,
246
+ const unsigned char *filler, size_t fill_len)
247
+ {
248
+ unsigned char *p = data;
249
+ size_t use_len;
250
+
251
+ if (filler != NULL && fill_len != 0) {
252
+ while (data_len > 0) {
253
+ use_len = (data_len > fill_len) ? fill_len : data_len;
254
+ memcpy(p, filler, use_len);
255
+ p += use_len;
256
+ data_len -= use_len;
257
+ }
258
+ } else {
259
+ /* If either of the above are not true then clearly there is nothing
260
+ * that this function can do. The function should *not* be called
261
+ * under either of those circumstances, as you could end up with an
262
+ * incorrect output but for safety's sake, leaving the check in as
263
+ * otherwise we could end up with memory corruption.*/
264
+ }
265
+ }
266
+
267
+
268
+ static int calculate_hashes(mbedtls_md_type_t md_type, int iterations,
269
+ unsigned char *diversifier, unsigned char *salt_block,
270
+ unsigned char *pwd_block, unsigned char *hash_output, int use_salt,
271
+ int use_password, size_t hlen, size_t v)
272
+ {
273
+ int ret = -1;
274
+ size_t i;
275
+ const mbedtls_md_info_t *md_info;
276
+ mbedtls_md_context_t md_ctx;
277
+ md_info = mbedtls_md_info_from_type(md_type);
278
+ if (md_info == NULL) {
279
+ return MBEDTLS_ERR_PKCS12_FEATURE_UNAVAILABLE;
280
+ }
281
+
282
+ mbedtls_md_init(&md_ctx);
283
+
284
+ if ((ret = mbedtls_md_setup(&md_ctx, md_info, 0)) != 0) {
285
+ return ret;
286
+ }
287
+ // Calculate hash( diversifier || salt_block || pwd_block )
288
+ if ((ret = mbedtls_md_starts(&md_ctx)) != 0) {
289
+ goto exit;
290
+ }
291
+
292
+ if ((ret = mbedtls_md_update(&md_ctx, diversifier, v)) != 0) {
293
+ goto exit;
294
+ }
295
+
296
+ if (use_salt != 0) {
297
+ if ((ret = mbedtls_md_update(&md_ctx, salt_block, v)) != 0) {
298
+ goto exit;
299
+ }
300
+ }
301
+
302
+ if (use_password != 0) {
303
+ if ((ret = mbedtls_md_update(&md_ctx, pwd_block, v)) != 0) {
304
+ goto exit;
305
+ }
306
+ }
307
+
308
+ if ((ret = mbedtls_md_finish(&md_ctx, hash_output)) != 0) {
309
+ goto exit;
310
+ }
311
+
312
+ // Perform remaining ( iterations - 1 ) recursive hash calculations
313
+ for (i = 1; i < (size_t) iterations; i++) {
314
+ if ((ret = mbedtls_md(md_info, hash_output, hlen, hash_output))
315
+ != 0) {
316
+ goto exit;
317
+ }
318
+ }
319
+
320
+ exit:
321
+ mbedtls_md_free(&md_ctx);
322
+ return ret;
323
+ }
324
+
325
+
326
+ int mbedtls_pkcs12_derivation(unsigned char *data, size_t datalen,
327
+ const unsigned char *pwd, size_t pwdlen,
328
+ const unsigned char *salt, size_t saltlen,
329
+ mbedtls_md_type_t md_type, int id, int iterations)
330
+ {
331
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
332
+ unsigned int j;
333
+
334
+ unsigned char diversifier[128];
335
+ unsigned char salt_block[128], pwd_block[128], hash_block[128] = { 0 };
336
+ unsigned char hash_output[MBEDTLS_MD_MAX_SIZE];
337
+ unsigned char *p;
338
+ unsigned char c;
339
+ int use_password = 0;
340
+ int use_salt = 0;
341
+
342
+ size_t hlen, use_len, v, i;
343
+
344
+ // This version only allows max of 64 bytes of password or salt
345
+ if (datalen > 128 || pwdlen > 64 || saltlen > 64) {
346
+ return MBEDTLS_ERR_PKCS12_BAD_INPUT_DATA;
347
+ }
348
+
349
+ if (pwd == NULL && pwdlen != 0) {
350
+ return MBEDTLS_ERR_PKCS12_BAD_INPUT_DATA;
351
+ }
352
+
353
+ if (salt == NULL && saltlen != 0) {
354
+ return MBEDTLS_ERR_PKCS12_BAD_INPUT_DATA;
355
+ }
356
+
357
+ use_password = (pwd && pwdlen != 0);
358
+ use_salt = (salt && saltlen != 0);
359
+
360
+ hlen = mbedtls_md_get_size_from_type(md_type);
361
+
362
+ if (hlen <= 32) {
363
+ v = 64;
364
+ } else {
365
+ v = 128;
366
+ }
367
+
368
+ memset(diversifier, (unsigned char) id, v);
369
+
370
+ if (use_salt != 0) {
371
+ pkcs12_fill_buffer(salt_block, v, salt, saltlen);
372
+ }
373
+
374
+ if (use_password != 0) {
375
+ pkcs12_fill_buffer(pwd_block, v, pwd, pwdlen);
376
+ }
377
+
378
+ p = data;
379
+ while (datalen > 0) {
380
+ if (calculate_hashes(md_type, iterations, diversifier, salt_block,
381
+ pwd_block, hash_output, use_salt, use_password, hlen,
382
+ v) != 0) {
383
+ goto exit;
384
+ }
385
+
386
+ use_len = (datalen > hlen) ? hlen : datalen;
387
+ memcpy(p, hash_output, use_len);
388
+ datalen -= use_len;
389
+ p += use_len;
390
+
391
+ if (datalen == 0) {
392
+ break;
393
+ }
394
+
395
+ // Concatenating copies of hash_output into hash_block (B)
396
+ pkcs12_fill_buffer(hash_block, v, hash_output, hlen);
397
+
398
+ // B += 1
399
+ for (i = v; i > 0; i--) {
400
+ if (++hash_block[i - 1] != 0) {
401
+ break;
402
+ }
403
+ }
404
+
405
+ if (use_salt != 0) {
406
+ // salt_block += B
407
+ c = 0;
408
+ for (i = v; i > 0; i--) {
409
+ j = salt_block[i - 1] + hash_block[i - 1] + c;
410
+ c = MBEDTLS_BYTE_1(j);
411
+ salt_block[i - 1] = MBEDTLS_BYTE_0(j);
412
+ }
413
+ }
414
+
415
+ if (use_password != 0) {
416
+ // pwd_block += B
417
+ c = 0;
418
+ for (i = v; i > 0; i--) {
419
+ j = pwd_block[i - 1] + hash_block[i - 1] + c;
420
+ c = MBEDTLS_BYTE_1(j);
421
+ pwd_block[i - 1] = MBEDTLS_BYTE_0(j);
422
+ }
423
+ }
424
+ }
425
+
426
+ ret = 0;
427
+
428
+ exit:
429
+ mbedtls_platform_zeroize(salt_block, sizeof(salt_block));
430
+ mbedtls_platform_zeroize(pwd_block, sizeof(pwd_block));
431
+ mbedtls_platform_zeroize(hash_block, sizeof(hash_block));
432
+ mbedtls_platform_zeroize(hash_output, sizeof(hash_output));
433
+
434
+ return ret;
435
+ }
436
+
437
+ #endif /* MBEDTLS_PKCS12_C */