@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,455 @@
1
+ /*
2
+ * Helper functions for the RSA module
3
+ *
4
+ * Copyright The Mbed TLS Contributors
5
+ * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
6
+ *
7
+ */
8
+
9
+ #include "common.h"
10
+
11
+ #if defined(MBEDTLS_RSA_C)
12
+
13
+ #include "mbedtls/rsa.h"
14
+ #include "mbedtls/bignum.h"
15
+ #include "bignum_internal.h"
16
+ #include "rsa_alt_helpers.h"
17
+
18
+ /*
19
+ * Compute RSA prime factors from public and private exponents
20
+ *
21
+ * Summary of algorithm:
22
+ * Setting F := lcm(P-1,Q-1), the idea is as follows:
23
+ *
24
+ * (a) For any 1 <= X < N with gcd(X,N)=1, we have X^F = 1 modulo N, so X^(F/2)
25
+ * is a square root of 1 in Z/NZ. Since Z/NZ ~= Z/PZ x Z/QZ by CRT and the
26
+ * square roots of 1 in Z/PZ and Z/QZ are +1 and -1, this leaves the four
27
+ * possibilities X^(F/2) = (+-1, +-1). If it happens that X^(F/2) = (-1,+1)
28
+ * or (+1,-1), then gcd(X^(F/2) + 1, N) will be equal to one of the prime
29
+ * factors of N.
30
+ *
31
+ * (b) If we don't know F/2 but (F/2) * K for some odd (!) K, then the same
32
+ * construction still applies since (-)^K is the identity on the set of
33
+ * roots of 1 in Z/NZ.
34
+ *
35
+ * The public and private key primitives (-)^E and (-)^D are mutually inverse
36
+ * bijections on Z/NZ if and only if (-)^(DE) is the identity on Z/NZ, i.e.
37
+ * if and only if DE - 1 is a multiple of F, say DE - 1 = F * L.
38
+ * Splitting L = 2^t * K with K odd, we have
39
+ *
40
+ * DE - 1 = FL = (F/2) * (2^(t+1)) * K,
41
+ *
42
+ * so (F / 2) * K is among the numbers
43
+ *
44
+ * (DE - 1) >> 1, (DE - 1) >> 2, ..., (DE - 1) >> ord
45
+ *
46
+ * where ord is the order of 2 in (DE - 1).
47
+ * We can therefore iterate through these numbers apply the construction
48
+ * of (a) and (b) above to attempt to factor N.
49
+ *
50
+ */
51
+ int mbedtls_rsa_deduce_primes(mbedtls_mpi const *N,
52
+ mbedtls_mpi const *E, mbedtls_mpi const *D,
53
+ mbedtls_mpi *P, mbedtls_mpi *Q)
54
+ {
55
+ int ret = 0;
56
+
57
+ uint16_t attempt; /* Number of current attempt */
58
+ uint16_t iter; /* Number of squares computed in the current attempt */
59
+
60
+ uint16_t order; /* Order of 2 in DE - 1 */
61
+
62
+ mbedtls_mpi T; /* Holds largest odd divisor of DE - 1 */
63
+ mbedtls_mpi K; /* Temporary holding the current candidate */
64
+
65
+ const unsigned char primes[] = { 2,
66
+ 3, 5, 7, 11, 13, 17, 19, 23,
67
+ 29, 31, 37, 41, 43, 47, 53, 59,
68
+ 61, 67, 71, 73, 79, 83, 89, 97,
69
+ 101, 103, 107, 109, 113, 127, 131, 137,
70
+ 139, 149, 151, 157, 163, 167, 173, 179,
71
+ 181, 191, 193, 197, 199, 211, 223, 227,
72
+ 229, 233, 239, 241, 251 };
73
+
74
+ const size_t num_primes = sizeof(primes) / sizeof(*primes);
75
+
76
+ if (P == NULL || Q == NULL || P->p != NULL || Q->p != NULL) {
77
+ return MBEDTLS_ERR_MPI_BAD_INPUT_DATA;
78
+ }
79
+
80
+ if (mbedtls_mpi_cmp_int(N, 0) <= 0 ||
81
+ mbedtls_mpi_cmp_int(D, 1) <= 0 ||
82
+ mbedtls_mpi_cmp_mpi(D, N) >= 0 ||
83
+ mbedtls_mpi_cmp_int(E, 1) <= 0 ||
84
+ mbedtls_mpi_cmp_mpi(E, N) >= 0) {
85
+ return MBEDTLS_ERR_MPI_BAD_INPUT_DATA;
86
+ }
87
+
88
+ /*
89
+ * Initializations and temporary changes
90
+ */
91
+
92
+ mbedtls_mpi_init(&K);
93
+ mbedtls_mpi_init(&T);
94
+
95
+ /* T := DE - 1 */
96
+ MBEDTLS_MPI_CHK(mbedtls_mpi_mul_mpi(&T, D, E));
97
+ MBEDTLS_MPI_CHK(mbedtls_mpi_sub_int(&T, &T, 1));
98
+
99
+ if ((order = (uint16_t) mbedtls_mpi_lsb(&T)) == 0) {
100
+ ret = MBEDTLS_ERR_MPI_BAD_INPUT_DATA;
101
+ goto cleanup;
102
+ }
103
+
104
+ /* After this operation, T holds the largest odd divisor of DE - 1. */
105
+ MBEDTLS_MPI_CHK(mbedtls_mpi_shift_r(&T, order));
106
+
107
+ /*
108
+ * Actual work
109
+ */
110
+
111
+ /* Skip trying 2 if N == 1 mod 8 */
112
+ attempt = 0;
113
+ if (N->p[0] % 8 == 1) {
114
+ attempt = 1;
115
+ }
116
+
117
+ for (; attempt < num_primes; ++attempt) {
118
+ MBEDTLS_MPI_CHK(mbedtls_mpi_lset(&K, primes[attempt]));
119
+
120
+ /* Check if gcd(K,N) = 1 */
121
+ MBEDTLS_MPI_CHK(mbedtls_mpi_gcd_modinv_odd(P, NULL, &K, N));
122
+ if (mbedtls_mpi_cmp_int(P, 1) != 0) {
123
+ continue;
124
+ }
125
+
126
+ /* Go through K^T + 1, K^(2T) + 1, K^(4T) + 1, ...
127
+ * and check whether they have nontrivial GCD with N. */
128
+ MBEDTLS_MPI_CHK(mbedtls_mpi_exp_mod(&K, &K, &T, N,
129
+ Q /* temporarily use Q for storing Montgomery
130
+ * multiplication helper values */));
131
+
132
+ for (iter = 1; iter <= order; ++iter) {
133
+ /* If we reach 1 prematurely, there's no point
134
+ * in continuing to square K */
135
+ if (mbedtls_mpi_cmp_int(&K, 1) == 0) {
136
+ break;
137
+ }
138
+
139
+ MBEDTLS_MPI_CHK(mbedtls_mpi_add_int(&K, &K, 1));
140
+ MBEDTLS_MPI_CHK(mbedtls_mpi_gcd_modinv_odd(P, NULL, &K, N));
141
+
142
+ if (mbedtls_mpi_cmp_int(P, 1) == 1 &&
143
+ mbedtls_mpi_cmp_mpi(P, N) == -1) {
144
+ /*
145
+ * Have found a nontrivial divisor P of N.
146
+ * Set Q := N / P.
147
+ */
148
+
149
+ MBEDTLS_MPI_CHK(mbedtls_mpi_div_mpi(Q, NULL, N, P));
150
+ goto cleanup;
151
+ }
152
+
153
+ MBEDTLS_MPI_CHK(mbedtls_mpi_sub_int(&K, &K, 1));
154
+ MBEDTLS_MPI_CHK(mbedtls_mpi_mul_mpi(&K, &K, &K));
155
+ MBEDTLS_MPI_CHK(mbedtls_mpi_mod_mpi(&K, &K, N));
156
+ }
157
+
158
+ /*
159
+ * If we get here, then either we prematurely aborted the loop because
160
+ * we reached 1, or K holds primes[attempt]^(DE - 1) mod N, which must
161
+ * be 1 if D,E,N were consistent.
162
+ * Check if that's the case and abort if not, to avoid very long,
163
+ * yet eventually failing, computations if N,D,E were not sane.
164
+ */
165
+ if (mbedtls_mpi_cmp_int(&K, 1) != 0) {
166
+ break;
167
+ }
168
+ }
169
+
170
+ ret = MBEDTLS_ERR_MPI_BAD_INPUT_DATA;
171
+
172
+ cleanup:
173
+
174
+ mbedtls_mpi_free(&K);
175
+ mbedtls_mpi_free(&T);
176
+ return ret;
177
+ }
178
+
179
+ /*
180
+ * Given P, Q and the public exponent E, deduce D.
181
+ * This is essentially a modular inversion.
182
+ */
183
+ int mbedtls_rsa_deduce_private_exponent(mbedtls_mpi const *P,
184
+ mbedtls_mpi const *Q,
185
+ mbedtls_mpi const *E,
186
+ mbedtls_mpi *D)
187
+ {
188
+ int ret = 0;
189
+ mbedtls_mpi K, L;
190
+
191
+ if (D == NULL) {
192
+ return MBEDTLS_ERR_MPI_BAD_INPUT_DATA;
193
+ }
194
+
195
+ if (mbedtls_mpi_cmp_int(P, 1) <= 0 ||
196
+ mbedtls_mpi_cmp_int(Q, 1) <= 0 ||
197
+ mbedtls_mpi_cmp_int(E, 0) == 0) {
198
+ return MBEDTLS_ERR_MPI_BAD_INPUT_DATA;
199
+ }
200
+
201
+ if (mbedtls_mpi_get_bit(E, 0) != 1) {
202
+ return MBEDTLS_ERR_MPI_NOT_ACCEPTABLE;
203
+ }
204
+
205
+ mbedtls_mpi_init(&K);
206
+ mbedtls_mpi_init(&L);
207
+
208
+ /* Temporarily put K := P-1 and L := Q-1 */
209
+ MBEDTLS_MPI_CHK(mbedtls_mpi_sub_int(&K, P, 1));
210
+ MBEDTLS_MPI_CHK(mbedtls_mpi_sub_int(&L, Q, 1));
211
+
212
+ /* Temporarily put D := gcd(P-1, Q-1) */
213
+ MBEDTLS_MPI_CHK(mbedtls_mpi_gcd(D, &K, &L));
214
+
215
+ /* K := LCM(P-1, Q-1) */
216
+ MBEDTLS_MPI_CHK(mbedtls_mpi_mul_mpi(&K, &K, &L));
217
+ MBEDTLS_MPI_CHK(mbedtls_mpi_div_mpi(&K, NULL, &K, D));
218
+
219
+ /* Compute modular inverse of E mod LCM(P-1, Q-1)
220
+ * This is FIPS 186-4 §B.3.1 criterion 3(b).
221
+ * This will return MBEDTLS_ERR_MPI_NOT_ACCEPTABLE if E is not coprime to
222
+ * (P-1)(Q-1), also validating FIPS 186-4 §B.3.1 criterion 2(a). */
223
+ MBEDTLS_MPI_CHK(mbedtls_mpi_inv_mod_even_in_range(D, E, &K));
224
+
225
+ cleanup:
226
+
227
+ mbedtls_mpi_free(&K);
228
+ mbedtls_mpi_free(&L);
229
+
230
+ return ret;
231
+ }
232
+
233
+ int mbedtls_rsa_deduce_crt(const mbedtls_mpi *P, const mbedtls_mpi *Q,
234
+ const mbedtls_mpi *D, mbedtls_mpi *DP,
235
+ mbedtls_mpi *DQ, mbedtls_mpi *QP)
236
+ {
237
+ int ret = 0;
238
+ mbedtls_mpi K;
239
+ mbedtls_mpi_init(&K);
240
+
241
+ /* DP = D mod P-1 */
242
+ if (DP != NULL) {
243
+ MBEDTLS_MPI_CHK(mbedtls_mpi_sub_int(&K, P, 1));
244
+ MBEDTLS_MPI_CHK(mbedtls_mpi_mod_mpi(DP, D, &K));
245
+ }
246
+
247
+ /* DQ = D mod Q-1 */
248
+ if (DQ != NULL) {
249
+ MBEDTLS_MPI_CHK(mbedtls_mpi_sub_int(&K, Q, 1));
250
+ MBEDTLS_MPI_CHK(mbedtls_mpi_mod_mpi(DQ, D, &K));
251
+ }
252
+
253
+ /* QP = Q^{-1} mod P */
254
+ if (QP != NULL) {
255
+ MBEDTLS_MPI_CHK(mbedtls_mpi_inv_mod_odd(QP, Q, P));
256
+ }
257
+
258
+ cleanup:
259
+ mbedtls_mpi_free(&K);
260
+
261
+ return ret;
262
+ }
263
+
264
+ /*
265
+ * Check that core RSA parameters are sane.
266
+ */
267
+ int mbedtls_rsa_validate_params(const mbedtls_mpi *N, const mbedtls_mpi *P,
268
+ const mbedtls_mpi *Q, const mbedtls_mpi *D,
269
+ const mbedtls_mpi *E,
270
+ int (*f_rng)(void *, unsigned char *, size_t),
271
+ void *p_rng)
272
+ {
273
+ int ret = 0;
274
+ mbedtls_mpi K, L;
275
+
276
+ mbedtls_mpi_init(&K);
277
+ mbedtls_mpi_init(&L);
278
+
279
+ /*
280
+ * Step 1: If PRNG provided, check that P and Q are prime
281
+ */
282
+
283
+ #if defined(MBEDTLS_GENPRIME)
284
+ /*
285
+ * When generating keys, the strongest security we support aims for an error
286
+ * rate of at most 2^-100 and we are aiming for the same certainty here as
287
+ * well.
288
+ */
289
+ if (f_rng != NULL && P != NULL &&
290
+ (ret = mbedtls_mpi_is_prime_ext(P, 50, f_rng, p_rng)) != 0) {
291
+ ret = MBEDTLS_ERR_RSA_KEY_CHECK_FAILED;
292
+ goto cleanup;
293
+ }
294
+
295
+ if (f_rng != NULL && Q != NULL &&
296
+ (ret = mbedtls_mpi_is_prime_ext(Q, 50, f_rng, p_rng)) != 0) {
297
+ ret = MBEDTLS_ERR_RSA_KEY_CHECK_FAILED;
298
+ goto cleanup;
299
+ }
300
+ #else
301
+ ((void) f_rng);
302
+ ((void) p_rng);
303
+ #endif /* MBEDTLS_GENPRIME */
304
+
305
+ /*
306
+ * Step 2: Check that 1 < N = P * Q
307
+ */
308
+
309
+ if (P != NULL && Q != NULL && N != NULL) {
310
+ MBEDTLS_MPI_CHK(mbedtls_mpi_mul_mpi(&K, P, Q));
311
+ if (mbedtls_mpi_cmp_int(N, 1) <= 0 ||
312
+ mbedtls_mpi_cmp_mpi(&K, N) != 0) {
313
+ ret = MBEDTLS_ERR_RSA_KEY_CHECK_FAILED;
314
+ goto cleanup;
315
+ }
316
+ }
317
+
318
+ /*
319
+ * Step 3: Check and 1 < D, E < N if present.
320
+ */
321
+
322
+ if (N != NULL && D != NULL && E != NULL) {
323
+ if (mbedtls_mpi_cmp_int(D, 1) <= 0 ||
324
+ mbedtls_mpi_cmp_int(E, 1) <= 0 ||
325
+ mbedtls_mpi_cmp_mpi(D, N) >= 0 ||
326
+ mbedtls_mpi_cmp_mpi(E, N) >= 0) {
327
+ ret = MBEDTLS_ERR_RSA_KEY_CHECK_FAILED;
328
+ goto cleanup;
329
+ }
330
+ }
331
+
332
+ /*
333
+ * Step 4: Check that D, E are inverse modulo P-1 and Q-1
334
+ */
335
+
336
+ if (P != NULL && Q != NULL && D != NULL && E != NULL) {
337
+ if (mbedtls_mpi_cmp_int(P, 1) <= 0 ||
338
+ mbedtls_mpi_cmp_int(Q, 1) <= 0) {
339
+ ret = MBEDTLS_ERR_RSA_KEY_CHECK_FAILED;
340
+ goto cleanup;
341
+ }
342
+
343
+ /* Compute DE-1 mod P-1 */
344
+ MBEDTLS_MPI_CHK(mbedtls_mpi_mul_mpi(&K, D, E));
345
+ MBEDTLS_MPI_CHK(mbedtls_mpi_sub_int(&K, &K, 1));
346
+ MBEDTLS_MPI_CHK(mbedtls_mpi_sub_int(&L, P, 1));
347
+ MBEDTLS_MPI_CHK(mbedtls_mpi_mod_mpi(&K, &K, &L));
348
+ if (mbedtls_mpi_cmp_int(&K, 0) != 0) {
349
+ ret = MBEDTLS_ERR_RSA_KEY_CHECK_FAILED;
350
+ goto cleanup;
351
+ }
352
+
353
+ /* Compute DE-1 mod Q-1 */
354
+ MBEDTLS_MPI_CHK(mbedtls_mpi_mul_mpi(&K, D, E));
355
+ MBEDTLS_MPI_CHK(mbedtls_mpi_sub_int(&K, &K, 1));
356
+ MBEDTLS_MPI_CHK(mbedtls_mpi_sub_int(&L, Q, 1));
357
+ MBEDTLS_MPI_CHK(mbedtls_mpi_mod_mpi(&K, &K, &L));
358
+ if (mbedtls_mpi_cmp_int(&K, 0) != 0) {
359
+ ret = MBEDTLS_ERR_RSA_KEY_CHECK_FAILED;
360
+ goto cleanup;
361
+ }
362
+ }
363
+
364
+ cleanup:
365
+
366
+ mbedtls_mpi_free(&K);
367
+ mbedtls_mpi_free(&L);
368
+
369
+ /* Wrap MPI error codes by RSA check failure error code */
370
+ if (ret != 0 && ret != MBEDTLS_ERR_RSA_KEY_CHECK_FAILED) {
371
+ ret += MBEDTLS_ERR_RSA_KEY_CHECK_FAILED;
372
+ }
373
+
374
+ return ret;
375
+ }
376
+
377
+ /*
378
+ * Check that RSA CRT parameters are in accordance with core parameters.
379
+ */
380
+ int mbedtls_rsa_validate_crt(const mbedtls_mpi *P, const mbedtls_mpi *Q,
381
+ const mbedtls_mpi *D, const mbedtls_mpi *DP,
382
+ const mbedtls_mpi *DQ, const mbedtls_mpi *QP)
383
+ {
384
+ int ret = 0;
385
+
386
+ mbedtls_mpi K, L;
387
+ mbedtls_mpi_init(&K);
388
+ mbedtls_mpi_init(&L);
389
+
390
+ /* Check that DP - D == 0 mod P - 1 */
391
+ if (DP != NULL) {
392
+ if (P == NULL) {
393
+ ret = MBEDTLS_ERR_RSA_BAD_INPUT_DATA;
394
+ goto cleanup;
395
+ }
396
+
397
+ MBEDTLS_MPI_CHK(mbedtls_mpi_sub_int(&K, P, 1));
398
+ MBEDTLS_MPI_CHK(mbedtls_mpi_sub_mpi(&L, DP, D));
399
+ MBEDTLS_MPI_CHK(mbedtls_mpi_mod_mpi(&L, &L, &K));
400
+
401
+ if (mbedtls_mpi_cmp_int(&L, 0) != 0) {
402
+ ret = MBEDTLS_ERR_RSA_KEY_CHECK_FAILED;
403
+ goto cleanup;
404
+ }
405
+ }
406
+
407
+ /* Check that DQ - D == 0 mod Q - 1 */
408
+ if (DQ != NULL) {
409
+ if (Q == NULL) {
410
+ ret = MBEDTLS_ERR_RSA_BAD_INPUT_DATA;
411
+ goto cleanup;
412
+ }
413
+
414
+ MBEDTLS_MPI_CHK(mbedtls_mpi_sub_int(&K, Q, 1));
415
+ MBEDTLS_MPI_CHK(mbedtls_mpi_sub_mpi(&L, DQ, D));
416
+ MBEDTLS_MPI_CHK(mbedtls_mpi_mod_mpi(&L, &L, &K));
417
+
418
+ if (mbedtls_mpi_cmp_int(&L, 0) != 0) {
419
+ ret = MBEDTLS_ERR_RSA_KEY_CHECK_FAILED;
420
+ goto cleanup;
421
+ }
422
+ }
423
+
424
+ /* Check that QP * Q - 1 == 0 mod P */
425
+ if (QP != NULL) {
426
+ if (P == NULL || Q == NULL) {
427
+ ret = MBEDTLS_ERR_RSA_BAD_INPUT_DATA;
428
+ goto cleanup;
429
+ }
430
+
431
+ MBEDTLS_MPI_CHK(mbedtls_mpi_mul_mpi(&K, QP, Q));
432
+ MBEDTLS_MPI_CHK(mbedtls_mpi_sub_int(&K, &K, 1));
433
+ MBEDTLS_MPI_CHK(mbedtls_mpi_mod_mpi(&K, &K, P));
434
+ if (mbedtls_mpi_cmp_int(&K, 0) != 0) {
435
+ ret = MBEDTLS_ERR_RSA_KEY_CHECK_FAILED;
436
+ goto cleanup;
437
+ }
438
+ }
439
+
440
+ cleanup:
441
+
442
+ /* Wrap MPI error codes by RSA check failure error code */
443
+ if (ret != 0 &&
444
+ ret != MBEDTLS_ERR_RSA_KEY_CHECK_FAILED &&
445
+ ret != MBEDTLS_ERR_RSA_BAD_INPUT_DATA) {
446
+ ret += MBEDTLS_ERR_RSA_KEY_CHECK_FAILED;
447
+ }
448
+
449
+ mbedtls_mpi_free(&K);
450
+ mbedtls_mpi_free(&L);
451
+
452
+ return ret;
453
+ }
454
+
455
+ #endif /* MBEDTLS_RSA_C */
@@ -0,0 +1,209 @@
1
+ /**
2
+ * \file rsa_alt_helpers.h
3
+ *
4
+ * \brief Context-independent RSA helper functions
5
+ *
6
+ * This module declares some RSA-related helper functions useful when
7
+ * implementing the RSA interface. These functions are provided in a separate
8
+ * compilation unit in order to make it easy for designers of alternative RSA
9
+ * implementations to use them in their own code, as it is conceived that the
10
+ * functionality they provide will be necessary for most complete
11
+ * implementations.
12
+ *
13
+ * End-users of Mbed TLS who are not providing their own alternative RSA
14
+ * implementations should not use these functions directly, and should instead
15
+ * use only the functions declared in rsa.h.
16
+ *
17
+ * The interface provided by this module will be maintained through LTS (Long
18
+ * Term Support) branches of Mbed TLS, but may otherwise be subject to change,
19
+ * and must be considered an internal interface of the library.
20
+ *
21
+ * There are two classes of helper functions:
22
+ *
23
+ * (1) Parameter-generating helpers. These are:
24
+ * - mbedtls_rsa_deduce_primes
25
+ * - mbedtls_rsa_deduce_private_exponent
26
+ * - mbedtls_rsa_deduce_crt
27
+ * Each of these functions takes a set of core RSA parameters and
28
+ * generates some other, or CRT related parameters.
29
+ *
30
+ * (2) Parameter-checking helpers. These are:
31
+ * - mbedtls_rsa_validate_params
32
+ * - mbedtls_rsa_validate_crt
33
+ * They take a set of core or CRT related RSA parameters and check their
34
+ * validity.
35
+ *
36
+ */
37
+ /*
38
+ * Copyright The Mbed TLS Contributors
39
+ * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
40
+ */
41
+ #ifndef MBEDTLS_RSA_ALT_HELPERS_H
42
+ #define MBEDTLS_RSA_ALT_HELPERS_H
43
+
44
+ #include "mbedtls/build_info.h"
45
+
46
+ #include "mbedtls/bignum.h"
47
+
48
+ #ifdef __cplusplus
49
+ extern "C" {
50
+ #endif
51
+
52
+
53
+ /**
54
+ * \brief Compute RSA prime moduli P, Q from public modulus N=PQ
55
+ * and a pair of private and public key.
56
+ *
57
+ * \note This is a 'static' helper function not operating on
58
+ * an RSA context. Alternative implementations need not
59
+ * overwrite it.
60
+ *
61
+ * \param N RSA modulus N = PQ, with P, Q to be found
62
+ * \param E RSA public exponent
63
+ * \param D RSA private exponent
64
+ * \param P Pointer to MPI holding first prime factor of N on success
65
+ * \param Q Pointer to MPI holding second prime factor of N on success
66
+ *
67
+ * \return
68
+ * - 0 if successful. In this case, P and Q constitute a
69
+ * factorization of N.
70
+ * - A non-zero error code otherwise.
71
+ *
72
+ * \note It is neither checked that P, Q are prime nor that
73
+ * D, E are modular inverses wrt. P-1 and Q-1. For that,
74
+ * use the helper function \c mbedtls_rsa_validate_params.
75
+ *
76
+ */
77
+ int mbedtls_rsa_deduce_primes(mbedtls_mpi const *N, mbedtls_mpi const *E,
78
+ mbedtls_mpi const *D,
79
+ mbedtls_mpi *P, mbedtls_mpi *Q);
80
+
81
+ /**
82
+ * \brief Compute RSA private exponent from
83
+ * prime moduli and public key.
84
+ *
85
+ * \note This is a 'static' helper function not operating on
86
+ * an RSA context. Alternative implementations need not
87
+ * overwrite it.
88
+ *
89
+ * \param P First prime factor of RSA modulus
90
+ * \param Q Second prime factor of RSA modulus
91
+ * \param E RSA public exponent
92
+ * \param D Pointer to MPI holding the private exponent on success,
93
+ * i.e. the modular inverse of E modulo LCM(P-1,Q-1).
94
+ *
95
+ * \return \c 0 if successful.
96
+ * \return #MBEDTLS_ERR_MPI_ALLOC_FAILED if a memory allocation failed.
97
+ * \return #MBEDTLS_ERR_MPI_NOT_ACCEPTABLE if E is not coprime to P-1
98
+ * and Q-1, that is, if GCD( E, (P-1)*(Q-1) ) != 1.
99
+ * \return #MBEDTLS_ERR_MPI_BAD_INPUT_DATA if inputs are otherwise
100
+ * invalid.
101
+ *
102
+ * \note This function does not check whether P and Q are primes.
103
+ *
104
+ */
105
+ int mbedtls_rsa_deduce_private_exponent(mbedtls_mpi const *P,
106
+ mbedtls_mpi const *Q,
107
+ mbedtls_mpi const *E,
108
+ mbedtls_mpi *D);
109
+
110
+
111
+ /**
112
+ * \brief Generate RSA-CRT parameters
113
+ *
114
+ * \note This is a 'static' helper function not operating on
115
+ * an RSA context. Alternative implementations need not
116
+ * overwrite it.
117
+ *
118
+ * \param P First prime factor of N
119
+ * \param Q Second prime factor of N
120
+ * \param D RSA private exponent
121
+ * \param DP Output variable for D modulo P-1
122
+ * \param DQ Output variable for D modulo Q-1
123
+ * \param QP Output variable for the modular inverse of Q modulo P.
124
+ *
125
+ * \return 0 on success, non-zero error code otherwise.
126
+ *
127
+ * \note This function does not check whether P, Q are
128
+ * prime and whether D is a valid private exponent.
129
+ *
130
+ */
131
+ int mbedtls_rsa_deduce_crt(const mbedtls_mpi *P, const mbedtls_mpi *Q,
132
+ const mbedtls_mpi *D, mbedtls_mpi *DP,
133
+ mbedtls_mpi *DQ, mbedtls_mpi *QP);
134
+
135
+
136
+ /**
137
+ * \brief Check validity of core RSA parameters
138
+ *
139
+ * \note This is a 'static' helper function not operating on
140
+ * an RSA context. Alternative implementations need not
141
+ * overwrite it.
142
+ *
143
+ * \param N RSA modulus N = PQ
144
+ * \param P First prime factor of N
145
+ * \param Q Second prime factor of N
146
+ * \param D RSA private exponent
147
+ * \param E RSA public exponent
148
+ * \param f_rng PRNG to be used for primality check, or NULL
149
+ * \param p_rng PRNG context for f_rng, or NULL
150
+ *
151
+ * \return
152
+ * - 0 if the following conditions are satisfied
153
+ * if all relevant parameters are provided:
154
+ * - P prime if f_rng != NULL (%)
155
+ * - Q prime if f_rng != NULL (%)
156
+ * - 1 < N = P * Q
157
+ * - 1 < D, E < N
158
+ * - D and E are modular inverses modulo P-1 and Q-1
159
+ * (%) This is only done if MBEDTLS_GENPRIME is defined.
160
+ * - A non-zero error code otherwise.
161
+ *
162
+ * \note The function can be used with a restricted set of arguments
163
+ * to perform specific checks only. E.g., calling it with
164
+ * (-,P,-,-,-) and a PRNG amounts to a primality check for P.
165
+ */
166
+ int mbedtls_rsa_validate_params(const mbedtls_mpi *N, const mbedtls_mpi *P,
167
+ const mbedtls_mpi *Q, const mbedtls_mpi *D,
168
+ const mbedtls_mpi *E,
169
+ int (*f_rng)(void *, unsigned char *, size_t),
170
+ void *p_rng);
171
+
172
+ /**
173
+ * \brief Check validity of RSA CRT parameters
174
+ *
175
+ * \note This is a 'static' helper function not operating on
176
+ * an RSA context. Alternative implementations need not
177
+ * overwrite it.
178
+ *
179
+ * \param P First prime factor of RSA modulus
180
+ * \param Q Second prime factor of RSA modulus
181
+ * \param D RSA private exponent
182
+ * \param DP MPI to check for D modulo P-1
183
+ * \param DQ MPI to check for D modulo P-1
184
+ * \param QP MPI to check for the modular inverse of Q modulo P.
185
+ *
186
+ * \return
187
+ * - 0 if the following conditions are satisfied:
188
+ * - D = DP mod P-1 if P, D, DP != NULL
189
+ * - Q = DQ mod P-1 if P, D, DQ != NULL
190
+ * - QP = Q^-1 mod P if P, Q, QP != NULL
191
+ * - \c MBEDTLS_ERR_RSA_KEY_CHECK_FAILED if check failed,
192
+ * potentially including \c MBEDTLS_ERR_MPI_XXX if some
193
+ * MPI calculations failed.
194
+ * - \c MBEDTLS_ERR_RSA_BAD_INPUT_DATA if insufficient
195
+ * data was provided to check DP, DQ or QP.
196
+ *
197
+ * \note The function can be used with a restricted set of arguments
198
+ * to perform specific checks only. E.g., calling it with the
199
+ * parameters (P, -, D, DP, -, -) will check DP = D mod P-1.
200
+ */
201
+ int mbedtls_rsa_validate_crt(const mbedtls_mpi *P, const mbedtls_mpi *Q,
202
+ const mbedtls_mpi *D, const mbedtls_mpi *DP,
203
+ const mbedtls_mpi *DQ, const mbedtls_mpi *QP);
204
+
205
+ #ifdef __cplusplus
206
+ }
207
+ #endif
208
+
209
+ #endif /* rsa_alt_helpers.h */