@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.
- package/LICENSE +202 -0
- package/package.json +16 -6
- package/src/scr_array.c +488 -0
- package/src/scr_assert.c +1393 -0
- package/src/scr_async.c +2593 -0
- package/src/scr_async_dyn.c +607 -0
- package/src/scr_bytes.c +1425 -0
- package/src/scr_bytes_io.c +161 -0
- package/src/scr_child.c +3587 -0
- package/src/scr_closure.c +214 -0
- package/src/scr_console.c +143 -0
- package/src/scr_cycle.c +218 -0
- package/src/scr_dc.c +805 -0
- package/src/scr_dgram.c +1007 -0
- package/src/scr_dyn_handle.c +154 -0
- package/src/scr_dyn_invoke.c +644 -0
- package/src/scr_error.c +332 -0
- package/src/scr_events.c +714 -0
- package/src/scr_events_emitter.c +699 -0
- package/src/scr_exception.c +242 -0
- package/src/scr_fetch.c +1130 -0
- package/src/scr_fetch_curl.c +654 -0
- package/src/scr_http.c +3482 -0
- package/src/scr_http2.c +3030 -0
- package/src/scr_inspect.c +803 -0
- package/src/scr_inspect_island.c +51 -0
- package/src/scr_island.c +9363 -0
- package/src/scr_json.c +2151 -0
- package/src/scr_lib.c +3612 -0
- package/src/scr_loop_epoll.c +241 -0
- package/src/scr_loop_kqueue.c +121 -0
- package/src/scr_loop_wsapoll.c +208 -0
- package/src/scr_map.c +591 -0
- package/src/scr_net.c +3017 -0
- package/src/scr_net_island.c +458 -0
- package/src/scr_number.c +115 -0
- package/src/scr_object.c +25 -0
- package/src/scr_path.c +1266 -0
- package/src/scr_platform.h +119 -0
- package/src/scr_readline.c +287 -0
- package/src/scr_regex.c +1080 -0
- package/src/scr_runtime.h +5046 -0
- package/src/scr_stream.c +2877 -0
- package/src/scr_string.c +1264 -0
- package/src/scr_symbol.c +132 -0
- package/src/scr_test.c +662 -0
- package/src/scr_tls.c +1520 -0
- package/src/scr_union.c +105 -0
- package/src/scr_url.c +911 -0
- package/src/scr_url_internal.h +29 -0
- package/src/scr_url_params.c +561 -0
- package/src/scr_watch.c +568 -0
- package/src/scr_web.c +1778 -0
- package/src/scr_win.c +76 -0
- package/src/scr_zlib.c +197 -0
- package/src/scr_zlib_island.c +15 -0
- package/vendor/README.md +52 -0
- package/vendor/curl/COPYRIGHT +534 -0
- package/vendor/curl/include/curl/curl.h +3214 -0
- package/vendor/curl/include/curl/curlver.h +79 -0
- package/vendor/curl/include/curl/easy.h +125 -0
- package/vendor/curl/include/curl/header.h +74 -0
- package/vendor/curl/include/curl/mprintf.h +52 -0
- package/vendor/curl/include/curl/multi.h +460 -0
- package/vendor/curl/include/curl/options.h +70 -0
- package/vendor/curl/include/curl/stdcheaders.h +35 -0
- package/vendor/curl/include/curl/system.h +508 -0
- package/vendor/curl/include/curl/typecheck-gcc.h +716 -0
- package/vendor/curl/include/curl/urlapi.h +149 -0
- package/vendor/curl/include/curl/websockets.h +84 -0
- package/vendor/mbedtls/LICENSE +553 -0
- package/vendor/mbedtls/include/CMakeLists.txt +22 -0
- package/vendor/mbedtls/include/mbedtls/aes.h +631 -0
- package/vendor/mbedtls/include/mbedtls/aria.h +343 -0
- package/vendor/mbedtls/include/mbedtls/asn1.h +642 -0
- package/vendor/mbedtls/include/mbedtls/asn1write.h +390 -0
- package/vendor/mbedtls/include/mbedtls/base64.h +82 -0
- package/vendor/mbedtls/include/mbedtls/bignum.h +1088 -0
- package/vendor/mbedtls/include/mbedtls/block_cipher.h +76 -0
- package/vendor/mbedtls/include/mbedtls/build_info.h +194 -0
- package/vendor/mbedtls/include/mbedtls/camellia.h +305 -0
- package/vendor/mbedtls/include/mbedtls/ccm.h +526 -0
- package/vendor/mbedtls/include/mbedtls/chacha20.h +209 -0
- package/vendor/mbedtls/include/mbedtls/chachapoly.h +351 -0
- package/vendor/mbedtls/include/mbedtls/check_config.h +1149 -0
- package/vendor/mbedtls/include/mbedtls/cipher.h +1250 -0
- package/vendor/mbedtls/include/mbedtls/cmac.h +246 -0
- package/vendor/mbedtls/include/mbedtls/compat-2.x.h +46 -0
- package/vendor/mbedtls/include/mbedtls/config_adjust_legacy_crypto.h +578 -0
- package/vendor/mbedtls/include/mbedtls/config_adjust_legacy_from_psa.h +873 -0
- package/vendor/mbedtls/include/mbedtls/config_adjust_psa_from_legacy.h +359 -0
- package/vendor/mbedtls/include/mbedtls/config_adjust_psa_superset_legacy.h +145 -0
- package/vendor/mbedtls/include/mbedtls/config_adjust_ssl.h +91 -0
- package/vendor/mbedtls/include/mbedtls/config_adjust_x509.h +35 -0
- package/vendor/mbedtls/include/mbedtls/config_psa.h +61 -0
- package/vendor/mbedtls/include/mbedtls/constant_time.h +36 -0
- package/vendor/mbedtls/include/mbedtls/ctr_drbg.h +596 -0
- package/vendor/mbedtls/include/mbedtls/debug.h +156 -0
- package/vendor/mbedtls/include/mbedtls/des.h +385 -0
- package/vendor/mbedtls/include/mbedtls/dhm.h +972 -0
- package/vendor/mbedtls/include/mbedtls/ecdh.h +455 -0
- package/vendor/mbedtls/include/mbedtls/ecdsa.h +674 -0
- package/vendor/mbedtls/include/mbedtls/ecjpake.h +298 -0
- package/vendor/mbedtls/include/mbedtls/ecp.h +1517 -0
- package/vendor/mbedtls/include/mbedtls/entropy.h +274 -0
- package/vendor/mbedtls/include/mbedtls/error.h +201 -0
- package/vendor/mbedtls/include/mbedtls/gcm.h +387 -0
- package/vendor/mbedtls/include/mbedtls/hkdf.h +124 -0
- package/vendor/mbedtls/include/mbedtls/hmac_drbg.h +434 -0
- package/vendor/mbedtls/include/mbedtls/lms.h +440 -0
- package/vendor/mbedtls/include/mbedtls/mbedtls_config.h +4446 -0
- package/vendor/mbedtls/include/mbedtls/md.h +526 -0
- package/vendor/mbedtls/include/mbedtls/md5.h +190 -0
- package/vendor/mbedtls/include/mbedtls/memory_buffer_alloc.h +142 -0
- package/vendor/mbedtls/include/mbedtls/net_sockets.h +299 -0
- package/vendor/mbedtls/include/mbedtls/nist_kw.h +166 -0
- package/vendor/mbedtls/include/mbedtls/oid.h +727 -0
- package/vendor/mbedtls/include/mbedtls/pem.h +160 -0
- package/vendor/mbedtls/include/mbedtls/pk.h +1303 -0
- package/vendor/mbedtls/include/mbedtls/pkcs12.h +186 -0
- package/vendor/mbedtls/include/mbedtls/pkcs5.h +198 -0
- package/vendor/mbedtls/include/mbedtls/pkcs7.h +252 -0
- package/vendor/mbedtls/include/mbedtls/platform.h +516 -0
- package/vendor/mbedtls/include/mbedtls/platform_time.h +79 -0
- package/vendor/mbedtls/include/mbedtls/platform_util.h +247 -0
- package/vendor/mbedtls/include/mbedtls/poly1305.h +168 -0
- package/vendor/mbedtls/include/mbedtls/private_access.h +20 -0
- package/vendor/mbedtls/include/mbedtls/psa_util.h +207 -0
- package/vendor/mbedtls/include/mbedtls/ripemd160.h +136 -0
- package/vendor/mbedtls/include/mbedtls/rsa.h +1170 -0
- package/vendor/mbedtls/include/mbedtls/sha1.h +219 -0
- package/vendor/mbedtls/include/mbedtls/sha256.h +200 -0
- package/vendor/mbedtls/include/mbedtls/sha3.h +172 -0
- package/vendor/mbedtls/include/mbedtls/sha512.h +208 -0
- package/vendor/mbedtls/include/mbedtls/ssl.h +5887 -0
- package/vendor/mbedtls/include/mbedtls/ssl_cache.h +187 -0
- package/vendor/mbedtls/include/mbedtls/ssl_ciphersuites.h +482 -0
- package/vendor/mbedtls/include/mbedtls/ssl_cookie.h +106 -0
- package/vendor/mbedtls/include/mbedtls/ssl_ticket.h +199 -0
- package/vendor/mbedtls/include/mbedtls/threading.h +167 -0
- package/vendor/mbedtls/include/mbedtls/timing.h +94 -0
- package/vendor/mbedtls/include/mbedtls/version.h +78 -0
- package/vendor/mbedtls/include/mbedtls/x509.h +500 -0
- package/vendor/mbedtls/include/mbedtls/x509_crl.h +184 -0
- package/vendor/mbedtls/include/mbedtls/x509_crt.h +1208 -0
- package/vendor/mbedtls/include/mbedtls/x509_csr.h +382 -0
- package/vendor/mbedtls/include/psa/build_info.h +20 -0
- package/vendor/mbedtls/include/psa/crypto.h +4998 -0
- package/vendor/mbedtls/include/psa/crypto_adjust_auto_enabled.h +31 -0
- package/vendor/mbedtls/include/psa/crypto_adjust_config_dependencies.h +51 -0
- package/vendor/mbedtls/include/psa/crypto_adjust_config_key_pair_types.h +101 -0
- package/vendor/mbedtls/include/psa/crypto_adjust_config_synonyms.h +49 -0
- package/vendor/mbedtls/include/psa/crypto_builtin_composites.h +214 -0
- package/vendor/mbedtls/include/psa/crypto_builtin_key_derivation.h +118 -0
- package/vendor/mbedtls/include/psa/crypto_builtin_primitives.h +114 -0
- package/vendor/mbedtls/include/psa/crypto_compat.h +230 -0
- package/vendor/mbedtls/include/psa/crypto_config.h +145 -0
- package/vendor/mbedtls/include/psa/crypto_driver_common.h +44 -0
- package/vendor/mbedtls/include/psa/crypto_driver_contexts_composites.h +151 -0
- package/vendor/mbedtls/include/psa/crypto_driver_contexts_key_derivation.h +52 -0
- package/vendor/mbedtls/include/psa/crypto_driver_contexts_primitives.h +105 -0
- package/vendor/mbedtls/include/psa/crypto_extra.h +2145 -0
- package/vendor/mbedtls/include/psa/crypto_legacy.h +88 -0
- package/vendor/mbedtls/include/psa/crypto_platform.h +102 -0
- package/vendor/mbedtls/include/psa/crypto_se_driver.h +1383 -0
- package/vendor/mbedtls/include/psa/crypto_sizes.h +1319 -0
- package/vendor/mbedtls/include/psa/crypto_struct.h +527 -0
- package/vendor/mbedtls/include/psa/crypto_types.h +508 -0
- package/vendor/mbedtls/include/psa/crypto_values.h +2782 -0
- package/vendor/mbedtls/library/aes.c +2294 -0
- package/vendor/mbedtls/library/aesce.c +624 -0
- package/vendor/mbedtls/library/aesce.h +136 -0
- package/vendor/mbedtls/library/aesni.c +846 -0
- package/vendor/mbedtls/library/aesni.h +162 -0
- package/vendor/mbedtls/library/alignment.h +704 -0
- package/vendor/mbedtls/library/aria.c +969 -0
- package/vendor/mbedtls/library/asn1parse.c +468 -0
- package/vendor/mbedtls/library/asn1write.c +440 -0
- package/vendor/mbedtls/library/base64.c +322 -0
- package/vendor/mbedtls/library/base64_internal.h +45 -0
- package/vendor/mbedtls/library/bignum.c +2583 -0
- package/vendor/mbedtls/library/bignum_core.c +1240 -0
- package/vendor/mbedtls/library/bignum_core.h +872 -0
- package/vendor/mbedtls/library/bignum_core_invasive.h +38 -0
- package/vendor/mbedtls/library/bignum_internal.h +122 -0
- package/vendor/mbedtls/library/bignum_mod.c +394 -0
- package/vendor/mbedtls/library/bignum_mod.h +452 -0
- package/vendor/mbedtls/library/bignum_mod_raw.c +276 -0
- package/vendor/mbedtls/library/bignum_mod_raw.h +416 -0
- package/vendor/mbedtls/library/bignum_mod_raw_invasive.h +34 -0
- package/vendor/mbedtls/library/block_cipher.c +207 -0
- package/vendor/mbedtls/library/block_cipher_internal.h +99 -0
- package/vendor/mbedtls/library/bn_mul.h +1094 -0
- package/vendor/mbedtls/library/camellia.c +1058 -0
- package/vendor/mbedtls/library/ccm.c +777 -0
- package/vendor/mbedtls/library/chacha20.c +563 -0
- package/vendor/mbedtls/library/chacha20_internal.h +23 -0
- package/vendor/mbedtls/library/chachapoly.c +487 -0
- package/vendor/mbedtls/library/check_crypto_config.h +136 -0
- package/vendor/mbedtls/library/cipher.c +1712 -0
- package/vendor/mbedtls/library/cipher_invasive.h +28 -0
- package/vendor/mbedtls/library/cipher_wrap.c +2482 -0
- package/vendor/mbedtls/library/cipher_wrap.h +178 -0
- package/vendor/mbedtls/library/cmac.c +1067 -0
- package/vendor/mbedtls/library/common.h +487 -0
- package/vendor/mbedtls/library/constant_time.c +247 -0
- package/vendor/mbedtls/library/constant_time_impl.h +541 -0
- package/vendor/mbedtls/library/constant_time_internal.h +579 -0
- package/vendor/mbedtls/library/ctr.h +35 -0
- package/vendor/mbedtls/library/ctr_drbg.c +1016 -0
- package/vendor/mbedtls/library/debug.c +475 -0
- package/vendor/mbedtls/library/debug_internal.h +185 -0
- package/vendor/mbedtls/library/des.c +1042 -0
- package/vendor/mbedtls/library/dhm.c +700 -0
- package/vendor/mbedtls/library/ecdh.c +696 -0
- package/vendor/mbedtls/library/ecdsa.c +858 -0
- package/vendor/mbedtls/library/ecjpake.c +1216 -0
- package/vendor/mbedtls/library/ecp.c +3674 -0
- package/vendor/mbedtls/library/ecp_curves.c +6125 -0
- package/vendor/mbedtls/library/ecp_curves_new.c +9 -0
- package/vendor/mbedtls/library/ecp_internal_alt.h +287 -0
- package/vendor/mbedtls/library/ecp_invasive.h +305 -0
- package/vendor/mbedtls/library/entropy.c +680 -0
- package/vendor/mbedtls/library/entropy_poll.c +233 -0
- package/vendor/mbedtls/library/entropy_poll.h +64 -0
- package/vendor/mbedtls/library/error.c +878 -0
- package/vendor/mbedtls/library/gcm.c +1330 -0
- package/vendor/mbedtls/library/hkdf.c +161 -0
- package/vendor/mbedtls/library/hmac_drbg.c +633 -0
- package/vendor/mbedtls/library/lmots.c +789 -0
- package/vendor/mbedtls/library/lmots.h +288 -0
- package/vendor/mbedtls/library/lms.c +778 -0
- package/vendor/mbedtls/library/md.c +1108 -0
- package/vendor/mbedtls/library/md5.c +426 -0
- package/vendor/mbedtls/library/md_psa.h +26 -0
- package/vendor/mbedtls/library/md_wrap.h +46 -0
- package/vendor/mbedtls/library/memory_buffer_alloc.c +751 -0
- package/vendor/mbedtls/library/mps_common.h +181 -0
- package/vendor/mbedtls/library/mps_error.h +89 -0
- package/vendor/mbedtls/library/mps_reader.c +538 -0
- package/vendor/mbedtls/library/mps_reader.h +366 -0
- package/vendor/mbedtls/library/mps_trace.c +112 -0
- package/vendor/mbedtls/library/mps_trace.h +154 -0
- package/vendor/mbedtls/library/net_sockets.c +694 -0
- package/vendor/mbedtls/library/nist_kw.c +729 -0
- package/vendor/mbedtls/library/oid.c +1166 -0
- package/vendor/mbedtls/library/padlock.c +157 -0
- package/vendor/mbedtls/library/padlock.h +111 -0
- package/vendor/mbedtls/library/pem.c +554 -0
- package/vendor/mbedtls/library/pk.c +1602 -0
- package/vendor/mbedtls/library/pk_ecc.c +261 -0
- package/vendor/mbedtls/library/pk_internal.h +241 -0
- package/vendor/mbedtls/library/pk_wrap.c +1618 -0
- package/vendor/mbedtls/library/pk_wrap.h +138 -0
- package/vendor/mbedtls/library/pkcs12.c +437 -0
- package/vendor/mbedtls/library/pkcs5.c +500 -0
- package/vendor/mbedtls/library/pkcs7.c +787 -0
- package/vendor/mbedtls/library/pkparse.c +1392 -0
- package/vendor/mbedtls/library/pkwrite.c +631 -0
- package/vendor/mbedtls/library/pkwrite.h +121 -0
- package/vendor/mbedtls/library/platform.c +402 -0
- package/vendor/mbedtls/library/platform_util.c +258 -0
- package/vendor/mbedtls/library/poly1305.c +492 -0
- package/vendor/mbedtls/library/psa_crypto.c +9532 -0
- package/vendor/mbedtls/library/psa_crypto_aead.c +646 -0
- package/vendor/mbedtls/library/psa_crypto_aead.h +499 -0
- package/vendor/mbedtls/library/psa_crypto_cipher.c +747 -0
- package/vendor/mbedtls/library/psa_crypto_cipher.h +316 -0
- package/vendor/mbedtls/library/psa_crypto_client.c +22 -0
- package/vendor/mbedtls/library/psa_crypto_core.h +983 -0
- package/vendor/mbedtls/library/psa_crypto_core_common.h +52 -0
- package/vendor/mbedtls/library/psa_crypto_driver_wrappers.h +2896 -0
- package/vendor/mbedtls/library/psa_crypto_driver_wrappers_no_static.c +256 -0
- package/vendor/mbedtls/library/psa_crypto_driver_wrappers_no_static.h +31 -0
- package/vendor/mbedtls/library/psa_crypto_ecp.c +594 -0
- package/vendor/mbedtls/library/psa_crypto_ecp.h +267 -0
- package/vendor/mbedtls/library/psa_crypto_ffdh.c +361 -0
- package/vendor/mbedtls/library/psa_crypto_ffdh.h +131 -0
- package/vendor/mbedtls/library/psa_crypto_hash.c +470 -0
- package/vendor/mbedtls/library/psa_crypto_hash.h +211 -0
- package/vendor/mbedtls/library/psa_crypto_invasive.h +92 -0
- package/vendor/mbedtls/library/psa_crypto_its.h +131 -0
- package/vendor/mbedtls/library/psa_crypto_mac.c +505 -0
- package/vendor/mbedtls/library/psa_crypto_mac.h +264 -0
- package/vendor/mbedtls/library/psa_crypto_pake.c +571 -0
- package/vendor/mbedtls/library/psa_crypto_pake.h +159 -0
- package/vendor/mbedtls/library/psa_crypto_random.c +181 -0
- package/vendor/mbedtls/library/psa_crypto_random.h +72 -0
- package/vendor/mbedtls/library/psa_crypto_random_impl.h +200 -0
- package/vendor/mbedtls/library/psa_crypto_rsa.c +714 -0
- package/vendor/mbedtls/library/psa_crypto_rsa.h +321 -0
- package/vendor/mbedtls/library/psa_crypto_se.c +373 -0
- package/vendor/mbedtls/library/psa_crypto_se.h +192 -0
- package/vendor/mbedtls/library/psa_crypto_slot_management.c +1137 -0
- package/vendor/mbedtls/library/psa_crypto_slot_management.h +344 -0
- package/vendor/mbedtls/library/psa_crypto_storage.c +481 -0
- package/vendor/mbedtls/library/psa_crypto_storage.h +392 -0
- package/vendor/mbedtls/library/psa_its_file.c +254 -0
- package/vendor/mbedtls/library/psa_util.c +614 -0
- package/vendor/mbedtls/library/psa_util_internal.h +100 -0
- package/vendor/mbedtls/library/ripemd160.c +490 -0
- package/vendor/mbedtls/library/rsa.c +3121 -0
- package/vendor/mbedtls/library/rsa_alt_helpers.c +455 -0
- package/vendor/mbedtls/library/rsa_alt_helpers.h +209 -0
- package/vendor/mbedtls/library/rsa_internal.h +188 -0
- package/vendor/mbedtls/library/sha1.c +480 -0
- package/vendor/mbedtls/library/sha256.c +983 -0
- package/vendor/mbedtls/library/sha3.c +721 -0
- package/vendor/mbedtls/library/sha512.c +1115 -0
- package/vendor/mbedtls/library/ssl_cache.c +410 -0
- package/vendor/mbedtls/library/ssl_ciphersuites.c +2050 -0
- package/vendor/mbedtls/library/ssl_ciphersuites_internal.h +154 -0
- package/vendor/mbedtls/library/ssl_client.c +1023 -0
- package/vendor/mbedtls/library/ssl_client.h +22 -0
- package/vendor/mbedtls/library/ssl_cookie.c +384 -0
- package/vendor/mbedtls/library/ssl_debug_helpers.h +85 -0
- package/vendor/mbedtls/library/ssl_debug_helpers_generated.c +251 -0
- package/vendor/mbedtls/library/ssl_misc.h +3198 -0
- package/vendor/mbedtls/library/ssl_msg.c +6619 -0
- package/vendor/mbedtls/library/ssl_ticket.c +556 -0
- package/vendor/mbedtls/library/ssl_tls.c +10234 -0
- package/vendor/mbedtls/library/ssl_tls12_client.c +3688 -0
- package/vendor/mbedtls/library/ssl_tls12_server.c +4311 -0
- package/vendor/mbedtls/library/ssl_tls13_client.c +3208 -0
- package/vendor/mbedtls/library/ssl_tls13_generic.c +1793 -0
- package/vendor/mbedtls/library/ssl_tls13_invasive.h +23 -0
- package/vendor/mbedtls/library/ssl_tls13_keys.c +1918 -0
- package/vendor/mbedtls/library/ssl_tls13_keys.h +668 -0
- package/vendor/mbedtls/library/ssl_tls13_server.c +3624 -0
- package/vendor/mbedtls/library/threading.c +193 -0
- package/vendor/mbedtls/library/threading_internal.h +28 -0
- package/vendor/mbedtls/library/timing.c +152 -0
- package/vendor/mbedtls/library/version.c +32 -0
- package/vendor/mbedtls/library/version_features.c +856 -0
- package/vendor/mbedtls/library/x509.c +1776 -0
- package/vendor/mbedtls/library/x509_create.c +570 -0
- package/vendor/mbedtls/library/x509_crl.c +708 -0
- package/vendor/mbedtls/library/x509_crt.c +3311 -0
- package/vendor/mbedtls/library/x509_csr.c +648 -0
- package/vendor/mbedtls/library/x509_internal.h +101 -0
- package/vendor/mbedtls/library/x509write.c +174 -0
- package/vendor/mbedtls/library/x509write_crt.c +688 -0
- package/vendor/mbedtls/library/x509write_csr.c +336 -0
- package/vendor/quickjs-ng/CMakeLists.txt +566 -0
- package/vendor/quickjs-ng/LICENSE +24 -0
- package/vendor/quickjs-ng/README.md +24 -0
- package/vendor/quickjs-ng/api-test.c +1195 -0
- package/vendor/quickjs-ng/builtin-array-fromasync.h +119 -0
- package/vendor/quickjs-ng/builtin-iterator-zip-keyed.h +332 -0
- package/vendor/quickjs-ng/builtin-iterator-zip.h +337 -0
- package/vendor/quickjs-ng/cutils.h +1998 -0
- package/vendor/quickjs-ng/dtoa.c +1619 -0
- package/vendor/quickjs-ng/dtoa.h +87 -0
- package/vendor/quickjs-ng/gen/function_source.c +81 -0
- package/vendor/quickjs-ng/gen/hello.c +53 -0
- package/vendor/quickjs-ng/gen/hello_module.c +106 -0
- package/vendor/quickjs-ng/gen/repl.c +3036 -0
- package/vendor/quickjs-ng/gen/standalone.c +323 -0
- package/vendor/quickjs-ng/gen/test_fib.c +81 -0
- package/vendor/quickjs-ng/libregexp-opcode.h +73 -0
- package/vendor/quickjs-ng/libregexp.c +3474 -0
- package/vendor/quickjs-ng/libregexp.h +101 -0
- package/vendor/quickjs-ng/libunicode-table.h +5173 -0
- package/vendor/quickjs-ng/libunicode.c +2069 -0
- package/vendor/quickjs-ng/libunicode.h +172 -0
- package/vendor/quickjs-ng/list.h +107 -0
- package/vendor/quickjs-ng/lre-test.c +52 -0
- package/vendor/quickjs-ng/qjs.c +762 -0
- package/vendor/quickjs-ng/qjsc.c +673 -0
- package/vendor/quickjs-ng/quickjs-atom.h +280 -0
- package/vendor/quickjs-ng/quickjs-c-atomics.h +54 -0
- package/vendor/quickjs-ng/quickjs-libc.c +5037 -0
- package/vendor/quickjs-ng/quickjs-libc.h +87 -0
- package/vendor/quickjs-ng/quickjs-opcode.h +377 -0
- package/vendor/quickjs-ng/quickjs.c +64041 -0
- package/vendor/quickjs-ng/quickjs.h +1447 -0
- package/vendor/quickjs-ng/run-test262.c +2374 -0
- package/vendor/quickjs-ng/unicode_gen.c +3121 -0
- package/vendor/quickjs-ng/unicode_gen_def.h +310 -0
- package/vendor/ryu/LICENSE-Boost +23 -0
- package/vendor/ryu/common.h +114 -0
- package/vendor/ryu/d2s.c +509 -0
- package/vendor/ryu/d2s_full_table.h +367 -0
- package/vendor/ryu/d2s_intrinsics.h +357 -0
- package/vendor/ryu/d2s_small_table.h +186 -0
- package/vendor/ryu/digit_table.h +35 -0
- package/vendor/ryu/ryu.h +46 -0
- package/vendor/zlib/LICENSE +22 -0
- package/vendor/zlib/adler32.c +164 -0
- package/vendor/zlib/compress.c +75 -0
- package/vendor/zlib/crc32.c +1049 -0
- package/vendor/zlib/crc32.h +9446 -0
- package/vendor/zlib/deflate.c +2139 -0
- package/vendor/zlib/deflate.h +377 -0
- package/vendor/zlib/gzclose.c +23 -0
- package/vendor/zlib/gzguts.h +214 -0
- package/vendor/zlib/gzlib.c +582 -0
- package/vendor/zlib/gzread.c +602 -0
- package/vendor/zlib/gzwrite.c +631 -0
- package/vendor/zlib/infback.c +628 -0
- package/vendor/zlib/inffast.c +320 -0
- package/vendor/zlib/inffast.h +11 -0
- package/vendor/zlib/inffixed.h +94 -0
- package/vendor/zlib/inflate.c +1526 -0
- package/vendor/zlib/inflate.h +126 -0
- package/vendor/zlib/inftrees.c +299 -0
- package/vendor/zlib/inftrees.h +62 -0
- package/vendor/zlib/trees.c +1117 -0
- package/vendor/zlib/trees.h +128 -0
- package/vendor/zlib/uncompr.c +85 -0
- package/vendor/zlib/zconf.h +543 -0
- package/vendor/zlib/zlib.h +1938 -0
- package/vendor/zlib/zutil.c +299 -0
- package/vendor/zlib/zutil.h +254 -0
- package/README.md +0 -3
- 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 */
|