@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,261 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* ECC setters for PK.
|
|
3
|
+
*
|
|
4
|
+
* Copyright The Mbed TLS Contributors
|
|
5
|
+
* SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#include "common.h"
|
|
9
|
+
|
|
10
|
+
#include "mbedtls/pk.h"
|
|
11
|
+
#include "mbedtls/error.h"
|
|
12
|
+
#include "mbedtls/ecp.h"
|
|
13
|
+
#include "pk_internal.h"
|
|
14
|
+
|
|
15
|
+
#if defined(MBEDTLS_PK_C) && defined(MBEDTLS_PK_HAVE_ECC_KEYS)
|
|
16
|
+
|
|
17
|
+
int mbedtls_pk_ecc_set_group(mbedtls_pk_context *pk, mbedtls_ecp_group_id grp_id)
|
|
18
|
+
{
|
|
19
|
+
#if defined(MBEDTLS_PK_USE_PSA_EC_DATA)
|
|
20
|
+
size_t ec_bits;
|
|
21
|
+
psa_ecc_family_t ec_family = mbedtls_ecc_group_to_psa(grp_id, &ec_bits);
|
|
22
|
+
|
|
23
|
+
/* group may already be initialized; if so, make sure IDs match */
|
|
24
|
+
if ((pk->ec_family != 0 && pk->ec_family != ec_family) ||
|
|
25
|
+
(pk->ec_bits != 0 && pk->ec_bits != ec_bits)) {
|
|
26
|
+
return MBEDTLS_ERR_PK_KEY_INVALID_FORMAT;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/* set group */
|
|
30
|
+
pk->ec_family = ec_family;
|
|
31
|
+
pk->ec_bits = ec_bits;
|
|
32
|
+
|
|
33
|
+
return 0;
|
|
34
|
+
#else /* MBEDTLS_PK_USE_PSA_EC_DATA */
|
|
35
|
+
mbedtls_ecp_keypair *ecp = mbedtls_pk_ec_rw(*pk);
|
|
36
|
+
|
|
37
|
+
/* grp may already be initialized; if so, make sure IDs match */
|
|
38
|
+
if (mbedtls_pk_ec_ro(*pk)->grp.id != MBEDTLS_ECP_DP_NONE &&
|
|
39
|
+
mbedtls_pk_ec_ro(*pk)->grp.id != grp_id) {
|
|
40
|
+
return MBEDTLS_ERR_PK_KEY_INVALID_FORMAT;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/* set group */
|
|
44
|
+
return mbedtls_ecp_group_load(&(ecp->grp), grp_id);
|
|
45
|
+
#endif /* MBEDTLS_PK_USE_PSA_EC_DATA */
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
int mbedtls_pk_ecc_set_key(mbedtls_pk_context *pk, unsigned char *key, size_t key_len)
|
|
49
|
+
{
|
|
50
|
+
#if defined(MBEDTLS_PK_USE_PSA_EC_DATA)
|
|
51
|
+
psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
|
|
52
|
+
psa_key_usage_t flags;
|
|
53
|
+
psa_status_t status;
|
|
54
|
+
|
|
55
|
+
psa_set_key_type(&attributes, PSA_KEY_TYPE_ECC_KEY_PAIR(pk->ec_family));
|
|
56
|
+
if (pk->ec_family == PSA_ECC_FAMILY_MONTGOMERY) {
|
|
57
|
+
/* Do not set algorithm here because Montgomery keys cannot do ECDSA and
|
|
58
|
+
* the PK module cannot do ECDH. When the key will be used in TLS for
|
|
59
|
+
* ECDH, it will be exported and then re-imported with proper flags
|
|
60
|
+
* and algorithm. */
|
|
61
|
+
flags = PSA_KEY_USAGE_EXPORT;
|
|
62
|
+
} else {
|
|
63
|
+
psa_set_key_algorithm(&attributes,
|
|
64
|
+
MBEDTLS_PK_PSA_ALG_ECDSA_MAYBE_DET(PSA_ALG_ANY_HASH));
|
|
65
|
+
flags = PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE |
|
|
66
|
+
PSA_KEY_USAGE_EXPORT;
|
|
67
|
+
}
|
|
68
|
+
psa_set_key_usage_flags(&attributes, flags);
|
|
69
|
+
|
|
70
|
+
status = psa_import_key(&attributes, key, key_len, &pk->priv_id);
|
|
71
|
+
return psa_pk_status_to_mbedtls(status);
|
|
72
|
+
|
|
73
|
+
#else /* MBEDTLS_PK_USE_PSA_EC_DATA */
|
|
74
|
+
|
|
75
|
+
mbedtls_ecp_keypair *eck = mbedtls_pk_ec_rw(*pk);
|
|
76
|
+
int ret = mbedtls_ecp_read_key(eck->grp.id, eck, key, key_len);
|
|
77
|
+
if (ret != 0) {
|
|
78
|
+
return MBEDTLS_ERROR_ADD(MBEDTLS_ERR_PK_KEY_INVALID_FORMAT, ret);
|
|
79
|
+
}
|
|
80
|
+
return 0;
|
|
81
|
+
#endif /* MBEDTLS_PK_USE_PSA_EC_DATA */
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
int mbedtls_pk_ecc_set_pubkey_from_prv(mbedtls_pk_context *pk,
|
|
85
|
+
const unsigned char *prv, size_t prv_len,
|
|
86
|
+
int (*f_rng)(void *, unsigned char *, size_t), void *p_rng)
|
|
87
|
+
{
|
|
88
|
+
#if defined(MBEDTLS_PK_USE_PSA_EC_DATA)
|
|
89
|
+
|
|
90
|
+
(void) f_rng;
|
|
91
|
+
(void) p_rng;
|
|
92
|
+
(void) prv;
|
|
93
|
+
(void) prv_len;
|
|
94
|
+
psa_status_t status;
|
|
95
|
+
|
|
96
|
+
status = psa_export_public_key(pk->priv_id, pk->pub_raw, sizeof(pk->pub_raw),
|
|
97
|
+
&pk->pub_raw_len);
|
|
98
|
+
return psa_pk_status_to_mbedtls(status);
|
|
99
|
+
|
|
100
|
+
#elif defined(MBEDTLS_USE_PSA_CRYPTO) /* && !MBEDTLS_PK_USE_PSA_EC_DATA */
|
|
101
|
+
|
|
102
|
+
(void) f_rng;
|
|
103
|
+
(void) p_rng;
|
|
104
|
+
psa_status_t status;
|
|
105
|
+
|
|
106
|
+
mbedtls_ecp_keypair *eck = (mbedtls_ecp_keypair *) pk->pk_ctx;
|
|
107
|
+
size_t curve_bits;
|
|
108
|
+
psa_ecc_family_t curve = mbedtls_ecc_group_to_psa(eck->grp.id, &curve_bits);
|
|
109
|
+
|
|
110
|
+
/* Import private key into PSA, from serialized input */
|
|
111
|
+
mbedtls_svc_key_id_t key_id = MBEDTLS_SVC_KEY_ID_INIT;
|
|
112
|
+
psa_key_attributes_t key_attr = PSA_KEY_ATTRIBUTES_INIT;
|
|
113
|
+
psa_set_key_type(&key_attr, PSA_KEY_TYPE_ECC_KEY_PAIR(curve));
|
|
114
|
+
psa_set_key_usage_flags(&key_attr, PSA_KEY_USAGE_EXPORT);
|
|
115
|
+
status = psa_import_key(&key_attr, prv, prv_len, &key_id);
|
|
116
|
+
if (status != PSA_SUCCESS) {
|
|
117
|
+
return psa_pk_status_to_mbedtls(status);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/* Export public key from PSA */
|
|
121
|
+
unsigned char pub[MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH];
|
|
122
|
+
size_t pub_len;
|
|
123
|
+
status = psa_export_public_key(key_id, pub, sizeof(pub), &pub_len);
|
|
124
|
+
psa_status_t destruction_status = psa_destroy_key(key_id);
|
|
125
|
+
if (status != PSA_SUCCESS) {
|
|
126
|
+
return psa_pk_status_to_mbedtls(status);
|
|
127
|
+
} else if (destruction_status != PSA_SUCCESS) {
|
|
128
|
+
return psa_pk_status_to_mbedtls(destruction_status);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/* Load serialized public key into ecp_keypair structure */
|
|
132
|
+
return mbedtls_ecp_point_read_binary(&eck->grp, &eck->Q, pub, pub_len);
|
|
133
|
+
|
|
134
|
+
#else /* MBEDTLS_USE_PSA_CRYPTO */
|
|
135
|
+
|
|
136
|
+
(void) prv;
|
|
137
|
+
(void) prv_len;
|
|
138
|
+
|
|
139
|
+
mbedtls_ecp_keypair *eck = (mbedtls_ecp_keypair *) pk->pk_ctx;
|
|
140
|
+
return mbedtls_ecp_mul(&eck->grp, &eck->Q, &eck->d, &eck->grp.G, f_rng, p_rng);
|
|
141
|
+
|
|
142
|
+
#endif /* MBEDTLS_USE_PSA_CRYPTO */
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
#if defined(MBEDTLS_PK_USE_PSA_EC_DATA)
|
|
146
|
+
/*
|
|
147
|
+
* Set the public key: fallback using ECP_LIGHT in the USE_PSA_EC_DATA case.
|
|
148
|
+
*
|
|
149
|
+
* Normally, when MBEDTLS_PK_USE_PSA_EC_DATA is enabled, we only use PSA
|
|
150
|
+
* functions to handle keys. However, currently psa_import_key() does not
|
|
151
|
+
* support compressed points. In case that support was explicitly requested,
|
|
152
|
+
* this fallback uses ECP functions to get the job done. This is the reason
|
|
153
|
+
* why MBEDTLS_PK_PARSE_EC_COMPRESSED auto-enables MBEDTLS_ECP_LIGHT.
|
|
154
|
+
*
|
|
155
|
+
* [in/out] pk: in: must have the group set, see mbedtls_pk_ecc_set_group().
|
|
156
|
+
* out: will have the public key set.
|
|
157
|
+
* [in] pub, pub_len: the public key as an ECPoint,
|
|
158
|
+
* in any format supported by ECP.
|
|
159
|
+
*
|
|
160
|
+
* Return:
|
|
161
|
+
* - 0 on success;
|
|
162
|
+
* - MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE if the format is potentially valid
|
|
163
|
+
* but not supported;
|
|
164
|
+
* - another error code otherwise.
|
|
165
|
+
*/
|
|
166
|
+
static int pk_ecc_set_pubkey_psa_ecp_fallback(mbedtls_pk_context *pk,
|
|
167
|
+
const unsigned char *pub,
|
|
168
|
+
size_t pub_len)
|
|
169
|
+
{
|
|
170
|
+
#if !defined(MBEDTLS_PK_PARSE_EC_COMPRESSED)
|
|
171
|
+
(void) pk;
|
|
172
|
+
(void) pub;
|
|
173
|
+
(void) pub_len;
|
|
174
|
+
return MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE;
|
|
175
|
+
#else /* MBEDTLS_PK_PARSE_EC_COMPRESSED */
|
|
176
|
+
mbedtls_ecp_keypair ecp_key;
|
|
177
|
+
mbedtls_ecp_group_id ecp_group_id;
|
|
178
|
+
int ret;
|
|
179
|
+
|
|
180
|
+
ecp_group_id = mbedtls_ecc_group_from_psa(pk->ec_family, pk->ec_bits);
|
|
181
|
+
|
|
182
|
+
mbedtls_ecp_keypair_init(&ecp_key);
|
|
183
|
+
ret = mbedtls_ecp_group_load(&(ecp_key.grp), ecp_group_id);
|
|
184
|
+
if (ret != 0) {
|
|
185
|
+
goto exit;
|
|
186
|
+
}
|
|
187
|
+
ret = mbedtls_ecp_point_read_binary(&(ecp_key.grp), &ecp_key.Q,
|
|
188
|
+
pub, pub_len);
|
|
189
|
+
if (ret != 0) {
|
|
190
|
+
goto exit;
|
|
191
|
+
}
|
|
192
|
+
ret = mbedtls_ecp_point_write_binary(&(ecp_key.grp), &ecp_key.Q,
|
|
193
|
+
MBEDTLS_ECP_PF_UNCOMPRESSED,
|
|
194
|
+
&pk->pub_raw_len, pk->pub_raw,
|
|
195
|
+
sizeof(pk->pub_raw));
|
|
196
|
+
|
|
197
|
+
exit:
|
|
198
|
+
mbedtls_ecp_keypair_free(&ecp_key);
|
|
199
|
+
return ret;
|
|
200
|
+
#endif /* MBEDTLS_PK_PARSE_EC_COMPRESSED */
|
|
201
|
+
}
|
|
202
|
+
#endif /* MBEDTLS_PK_USE_PSA_EC_DATA */
|
|
203
|
+
|
|
204
|
+
int mbedtls_pk_ecc_set_pubkey(mbedtls_pk_context *pk, const unsigned char *pub, size_t pub_len)
|
|
205
|
+
{
|
|
206
|
+
#if defined(MBEDTLS_PK_USE_PSA_EC_DATA)
|
|
207
|
+
|
|
208
|
+
/* We need to read the first byte to determine the format (compressed,
|
|
209
|
+
* uncompressed or 0). */
|
|
210
|
+
if (pub_len == 0) {
|
|
211
|
+
return MBEDTLS_ERR_PK_INVALID_PUBKEY;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
/* Load the key */
|
|
215
|
+
if (!PSA_ECC_FAMILY_IS_WEIERSTRASS(pk->ec_family) || *pub == 0x04) {
|
|
216
|
+
/* Format directly supported by PSA:
|
|
217
|
+
* - non-Weierstrass curves that only have one format;
|
|
218
|
+
* - uncompressed format for Weierstrass curves. */
|
|
219
|
+
if (pub_len > sizeof(pk->pub_raw)) {
|
|
220
|
+
return MBEDTLS_ERR_PK_INVALID_PUBKEY;
|
|
221
|
+
}
|
|
222
|
+
memcpy(pk->pub_raw, pub, pub_len);
|
|
223
|
+
pk->pub_raw_len = pub_len;
|
|
224
|
+
} else {
|
|
225
|
+
/* Other format, try the fallback */
|
|
226
|
+
int ret = pk_ecc_set_pubkey_psa_ecp_fallback(pk, pub, pub_len);
|
|
227
|
+
if (ret != 0) {
|
|
228
|
+
return ret;
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
/* Validate the key by trying to import it */
|
|
233
|
+
mbedtls_svc_key_id_t key_id = MBEDTLS_SVC_KEY_ID_INIT;
|
|
234
|
+
psa_key_attributes_t key_attrs = PSA_KEY_ATTRIBUTES_INIT;
|
|
235
|
+
|
|
236
|
+
psa_set_key_usage_flags(&key_attrs, 0);
|
|
237
|
+
psa_set_key_type(&key_attrs, PSA_KEY_TYPE_ECC_PUBLIC_KEY(pk->ec_family));
|
|
238
|
+
psa_set_key_bits(&key_attrs, pk->ec_bits);
|
|
239
|
+
|
|
240
|
+
if ((psa_import_key(&key_attrs, pk->pub_raw, pk->pub_raw_len,
|
|
241
|
+
&key_id) != PSA_SUCCESS) ||
|
|
242
|
+
(psa_destroy_key(key_id) != PSA_SUCCESS)) {
|
|
243
|
+
return MBEDTLS_ERR_PK_INVALID_PUBKEY;
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
return 0;
|
|
247
|
+
|
|
248
|
+
#else /* MBEDTLS_PK_USE_PSA_EC_DATA */
|
|
249
|
+
|
|
250
|
+
int ret;
|
|
251
|
+
mbedtls_ecp_keypair *ec_key = (mbedtls_ecp_keypair *) pk->pk_ctx;
|
|
252
|
+
ret = mbedtls_ecp_point_read_binary(&ec_key->grp, &ec_key->Q, pub, pub_len);
|
|
253
|
+
if (ret != 0) {
|
|
254
|
+
return ret;
|
|
255
|
+
}
|
|
256
|
+
return mbedtls_ecp_check_pubkey(&ec_key->grp, &ec_key->Q);
|
|
257
|
+
|
|
258
|
+
#endif /* MBEDTLS_PK_USE_PSA_EC_DATA */
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
#endif /* MBEDTLS_PK_C && MBEDTLS_PK_HAVE_ECC_KEYS */
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* \file pk_internal.h
|
|
3
|
+
*
|
|
4
|
+
* \brief Public Key abstraction layer: internal (i.e. library only) functions
|
|
5
|
+
* and definitions.
|
|
6
|
+
*/
|
|
7
|
+
/*
|
|
8
|
+
* Copyright The Mbed TLS Contributors
|
|
9
|
+
* SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
|
|
10
|
+
*/
|
|
11
|
+
#ifndef MBEDTLS_PK_INTERNAL_H
|
|
12
|
+
#define MBEDTLS_PK_INTERNAL_H
|
|
13
|
+
|
|
14
|
+
#include "mbedtls/pk.h"
|
|
15
|
+
|
|
16
|
+
#if defined(MBEDTLS_PK_HAVE_ECC_KEYS)
|
|
17
|
+
#include "mbedtls/ecp.h"
|
|
18
|
+
#endif
|
|
19
|
+
|
|
20
|
+
#if defined(MBEDTLS_PSA_CRYPTO_CLIENT)
|
|
21
|
+
#include "psa/crypto.h"
|
|
22
|
+
|
|
23
|
+
#include "psa_util_internal.h"
|
|
24
|
+
#define PSA_PK_TO_MBEDTLS_ERR(status) psa_pk_status_to_mbedtls(status)
|
|
25
|
+
#define PSA_PK_RSA_TO_MBEDTLS_ERR(status) PSA_TO_MBEDTLS_ERR_LIST(status, \
|
|
26
|
+
psa_to_pk_rsa_errors, \
|
|
27
|
+
psa_pk_status_to_mbedtls)
|
|
28
|
+
#define PSA_PK_ECDSA_TO_MBEDTLS_ERR(status) PSA_TO_MBEDTLS_ERR_LIST(status, \
|
|
29
|
+
psa_to_pk_ecdsa_errors, \
|
|
30
|
+
psa_pk_status_to_mbedtls)
|
|
31
|
+
#endif /* MBEDTLS_PSA_CRYPTO_CLIENT */
|
|
32
|
+
|
|
33
|
+
/* Headers/footers for PEM files */
|
|
34
|
+
#define PEM_BEGIN_PUBLIC_KEY "-----BEGIN PUBLIC KEY-----"
|
|
35
|
+
#define PEM_END_PUBLIC_KEY "-----END PUBLIC KEY-----"
|
|
36
|
+
#define PEM_BEGIN_PRIVATE_KEY_RSA "-----BEGIN RSA PRIVATE KEY-----"
|
|
37
|
+
#define PEM_END_PRIVATE_KEY_RSA "-----END RSA PRIVATE KEY-----"
|
|
38
|
+
#define PEM_BEGIN_PUBLIC_KEY_RSA "-----BEGIN RSA PUBLIC KEY-----"
|
|
39
|
+
#define PEM_END_PUBLIC_KEY_RSA "-----END RSA PUBLIC KEY-----"
|
|
40
|
+
#define PEM_BEGIN_PRIVATE_KEY_EC "-----BEGIN EC PRIVATE KEY-----"
|
|
41
|
+
#define PEM_END_PRIVATE_KEY_EC "-----END EC PRIVATE KEY-----"
|
|
42
|
+
#define PEM_BEGIN_PRIVATE_KEY_PKCS8 "-----BEGIN PRIVATE KEY-----"
|
|
43
|
+
#define PEM_END_PRIVATE_KEY_PKCS8 "-----END PRIVATE KEY-----"
|
|
44
|
+
#define PEM_BEGIN_ENCRYPTED_PRIVATE_KEY_PKCS8 "-----BEGIN ENCRYPTED PRIVATE KEY-----"
|
|
45
|
+
#define PEM_END_ENCRYPTED_PRIVATE_KEY_PKCS8 "-----END ENCRYPTED PRIVATE KEY-----"
|
|
46
|
+
|
|
47
|
+
/*
|
|
48
|
+
* We're trying to statisfy two kinds of users:
|
|
49
|
+
* - those who don't want to use the heap;
|
|
50
|
+
* - those who can't afford large stack buffers.
|
|
51
|
+
*
|
|
52
|
+
* The current compromise is that if ECC is the only key type supported in PK,
|
|
53
|
+
* then we export keys on the stack, and otherwise we use the heap.
|
|
54
|
+
*
|
|
55
|
+
* RSA can either be used directly or indirectly via opaque keys if enabled.
|
|
56
|
+
* (RSA_ALT is not relevant here as we can't export from such contexts.)
|
|
57
|
+
*/
|
|
58
|
+
#if !defined(MBEDTLS_RSA_C) && \
|
|
59
|
+
!(defined(MBEDTLS_USE_PSA_CRYPTO) && defined(PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY))
|
|
60
|
+
#define PK_EXPORT_KEYS_ON_THE_STACK
|
|
61
|
+
#endif
|
|
62
|
+
|
|
63
|
+
#if defined(PK_EXPORT_KEYS_ON_THE_STACK)
|
|
64
|
+
/* We know for ECC, pubkey are longer than privkeys, but double check.
|
|
65
|
+
* Also, take the maximum size of legacy and PSA, as PSA might be disabled. */
|
|
66
|
+
#define PK_EXPORT_KEY_STACK_BUFFER_SIZE MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH
|
|
67
|
+
#if PK_EXPORT_KEY_STACK_BUFFER_SIZE < MBEDTLS_PSA_MAX_EC_KEY_PAIR_LENGTH
|
|
68
|
+
#undef PK_EXPORT_KEY_STACK_BUFFER_SIZE
|
|
69
|
+
#define PK_EXPORT_KEY_STACK_BUFFER_SIZE MBEDTLS_PSA_MAX_EC_KEY_PAIR_LENGTH
|
|
70
|
+
#endif
|
|
71
|
+
#if PK_EXPORT_KEY_STACK_BUFFER_SIZE < MBEDTLS_ECP_MAX_BYTES
|
|
72
|
+
#undef PK_EXPORT_KEY_STACK_BUFFER_SIZE
|
|
73
|
+
#define PK_EXPORT_KEY_STACK_BUFFER_SIZE MBEDTLS_ECP_MAX_BYTES
|
|
74
|
+
#endif
|
|
75
|
+
#if PK_EXPORT_KEY_STACK_BUFFER_SIZE < MBEDTLS_ECP_MAX_PT_LEN
|
|
76
|
+
#undef PK_EXPORT_KEY_STACK_BUFFER_SIZE
|
|
77
|
+
#define PK_EXPORT_KEY_STACK_BUFFER_SIZE MBEDTLS_ECP_MAX_PT_LEN
|
|
78
|
+
#endif
|
|
79
|
+
#endif
|
|
80
|
+
|
|
81
|
+
#if defined(MBEDTLS_PK_HAVE_ECC_KEYS) && !defined(MBEDTLS_PK_USE_PSA_EC_DATA)
|
|
82
|
+
/**
|
|
83
|
+
* Public function mbedtls_pk_ec() can be used to get direct access to the
|
|
84
|
+
* wrapped ecp_keypair structure pointed to the pk_ctx. However this is not
|
|
85
|
+
* ideal because it bypasses the PK module on the control of its internal
|
|
86
|
+
* structure (pk_context) fields.
|
|
87
|
+
* For backward compatibility we keep mbedtls_pk_ec() when ECP_C is defined, but
|
|
88
|
+
* we provide 2 very similar functions when only ECP_LIGHT is enabled and not
|
|
89
|
+
* ECP_C.
|
|
90
|
+
* These variants embed the "ro" or "rw" keywords in their name to make the
|
|
91
|
+
* usage of the returned pointer explicit. Of course the returned value is
|
|
92
|
+
* const or non-const accordingly.
|
|
93
|
+
*/
|
|
94
|
+
static inline const mbedtls_ecp_keypair *mbedtls_pk_ec_ro(const mbedtls_pk_context pk)
|
|
95
|
+
{
|
|
96
|
+
switch (mbedtls_pk_get_type(&pk)) {
|
|
97
|
+
case MBEDTLS_PK_ECKEY:
|
|
98
|
+
case MBEDTLS_PK_ECKEY_DH:
|
|
99
|
+
case MBEDTLS_PK_ECDSA:
|
|
100
|
+
return (const mbedtls_ecp_keypair *) (pk).MBEDTLS_PRIVATE(pk_ctx);
|
|
101
|
+
default:
|
|
102
|
+
return NULL;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
static inline mbedtls_ecp_keypair *mbedtls_pk_ec_rw(const mbedtls_pk_context pk)
|
|
107
|
+
{
|
|
108
|
+
switch (mbedtls_pk_get_type(&pk)) {
|
|
109
|
+
case MBEDTLS_PK_ECKEY:
|
|
110
|
+
case MBEDTLS_PK_ECKEY_DH:
|
|
111
|
+
case MBEDTLS_PK_ECDSA:
|
|
112
|
+
return (mbedtls_ecp_keypair *) (pk).MBEDTLS_PRIVATE(pk_ctx);
|
|
113
|
+
default:
|
|
114
|
+
return NULL;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
#endif /* MBEDTLS_PK_HAVE_ECC_KEYS && !MBEDTLS_PK_USE_PSA_EC_DATA */
|
|
118
|
+
|
|
119
|
+
#if defined(MBEDTLS_PK_HAVE_ECC_KEYS)
|
|
120
|
+
static inline mbedtls_ecp_group_id mbedtls_pk_get_ec_group_id(const mbedtls_pk_context *pk)
|
|
121
|
+
{
|
|
122
|
+
mbedtls_ecp_group_id id;
|
|
123
|
+
|
|
124
|
+
#if defined(MBEDTLS_USE_PSA_CRYPTO)
|
|
125
|
+
if (mbedtls_pk_get_type(pk) == MBEDTLS_PK_OPAQUE) {
|
|
126
|
+
psa_key_attributes_t opaque_attrs = PSA_KEY_ATTRIBUTES_INIT;
|
|
127
|
+
psa_key_type_t opaque_key_type;
|
|
128
|
+
psa_ecc_family_t curve;
|
|
129
|
+
|
|
130
|
+
if (psa_get_key_attributes(pk->priv_id, &opaque_attrs) != PSA_SUCCESS) {
|
|
131
|
+
return MBEDTLS_ECP_DP_NONE;
|
|
132
|
+
}
|
|
133
|
+
opaque_key_type = psa_get_key_type(&opaque_attrs);
|
|
134
|
+
curve = PSA_KEY_TYPE_ECC_GET_FAMILY(opaque_key_type);
|
|
135
|
+
id = mbedtls_ecc_group_from_psa(curve, psa_get_key_bits(&opaque_attrs));
|
|
136
|
+
psa_reset_key_attributes(&opaque_attrs);
|
|
137
|
+
} else
|
|
138
|
+
#endif /* MBEDTLS_USE_PSA_CRYPTO */
|
|
139
|
+
{
|
|
140
|
+
#if defined(MBEDTLS_PK_USE_PSA_EC_DATA)
|
|
141
|
+
id = mbedtls_ecc_group_from_psa(pk->ec_family, pk->ec_bits);
|
|
142
|
+
#else /* MBEDTLS_PK_USE_PSA_EC_DATA */
|
|
143
|
+
id = mbedtls_pk_ec_ro(*pk)->grp.id;
|
|
144
|
+
#endif /* MBEDTLS_PK_USE_PSA_EC_DATA */
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
return id;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/* Helper for Montgomery curves */
|
|
151
|
+
#if defined(MBEDTLS_ECP_HAVE_CURVE25519) || defined(MBEDTLS_ECP_HAVE_CURVE448)
|
|
152
|
+
#define MBEDTLS_PK_HAVE_RFC8410_CURVES
|
|
153
|
+
#endif /* MBEDTLS_ECP_HAVE_CURVE25519 || MBEDTLS_ECP_DP_CURVE448 */
|
|
154
|
+
|
|
155
|
+
#define MBEDTLS_PK_IS_RFC8410_GROUP_ID(id) \
|
|
156
|
+
((id == MBEDTLS_ECP_DP_CURVE25519) || (id == MBEDTLS_ECP_DP_CURVE448))
|
|
157
|
+
|
|
158
|
+
static inline int mbedtls_pk_is_rfc8410(const mbedtls_pk_context *pk)
|
|
159
|
+
{
|
|
160
|
+
mbedtls_ecp_group_id id = mbedtls_pk_get_ec_group_id(pk);
|
|
161
|
+
|
|
162
|
+
return MBEDTLS_PK_IS_RFC8410_GROUP_ID(id);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/*
|
|
166
|
+
* Set the group used by this key.
|
|
167
|
+
*
|
|
168
|
+
* [in/out] pk: in: must have been pk_setup() to an ECC type
|
|
169
|
+
* out: will have group (curve) information set
|
|
170
|
+
* [in] grp_in: a supported group ID (not NONE)
|
|
171
|
+
*/
|
|
172
|
+
int mbedtls_pk_ecc_set_group(mbedtls_pk_context *pk, mbedtls_ecp_group_id grp_id);
|
|
173
|
+
|
|
174
|
+
/*
|
|
175
|
+
* Set the private key material
|
|
176
|
+
*
|
|
177
|
+
* [in/out] pk: in: must have the group set already, see mbedtls_pk_ecc_set_group().
|
|
178
|
+
* out: will have the private key set.
|
|
179
|
+
* [in] key, key_len: the raw private key (no ASN.1 wrapping).
|
|
180
|
+
*/
|
|
181
|
+
int mbedtls_pk_ecc_set_key(mbedtls_pk_context *pk, unsigned char *key, size_t key_len);
|
|
182
|
+
|
|
183
|
+
/*
|
|
184
|
+
* Set the public key.
|
|
185
|
+
*
|
|
186
|
+
* [in/out] pk: in: must have its group set, see mbedtls_pk_ecc_set_group().
|
|
187
|
+
* out: will have the public key set.
|
|
188
|
+
* [in] pub, pub_len: the raw public key (an ECPoint).
|
|
189
|
+
*
|
|
190
|
+
* Return:
|
|
191
|
+
* - 0 on success;
|
|
192
|
+
* - MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE if the format is potentially valid
|
|
193
|
+
* but not supported;
|
|
194
|
+
* - another error code otherwise.
|
|
195
|
+
*/
|
|
196
|
+
int mbedtls_pk_ecc_set_pubkey(mbedtls_pk_context *pk, const unsigned char *pub, size_t pub_len);
|
|
197
|
+
|
|
198
|
+
/*
|
|
199
|
+
* Derive a public key from its private counterpart.
|
|
200
|
+
* Computationally intensive, only use when public key is not available.
|
|
201
|
+
*
|
|
202
|
+
* [in/out] pk: in: must have the private key set, see mbedtls_pk_ecc_set_key().
|
|
203
|
+
* out: will have the public key set.
|
|
204
|
+
* [in] prv, prv_len: the raw private key (see note below).
|
|
205
|
+
* [in] f_rng, p_rng: RNG function and context.
|
|
206
|
+
*
|
|
207
|
+
* Note: the private key information is always available from pk,
|
|
208
|
+
* however for convenience the serialized version is also passed,
|
|
209
|
+
* as it's available at each calling site, and useful in some configs
|
|
210
|
+
* (as otherwise we would have to re-serialize it from the pk context).
|
|
211
|
+
*
|
|
212
|
+
* There are three implementations of this function:
|
|
213
|
+
* 1. MBEDTLS_PK_USE_PSA_EC_DATA,
|
|
214
|
+
* 2. MBEDTLS_USE_PSA_CRYPTO but not MBEDTLS_PK_USE_PSA_EC_DATA,
|
|
215
|
+
* 3. not MBEDTLS_USE_PSA_CRYPTO.
|
|
216
|
+
*/
|
|
217
|
+
int mbedtls_pk_ecc_set_pubkey_from_prv(mbedtls_pk_context *pk,
|
|
218
|
+
const unsigned char *prv, size_t prv_len,
|
|
219
|
+
int (*f_rng)(void *, unsigned char *, size_t), void *p_rng);
|
|
220
|
+
#endif /* MBEDTLS_PK_HAVE_ECC_KEYS */
|
|
221
|
+
|
|
222
|
+
/* Helper for (deterministic) ECDSA */
|
|
223
|
+
#if defined(MBEDTLS_ECDSA_DETERMINISTIC)
|
|
224
|
+
#define MBEDTLS_PK_PSA_ALG_ECDSA_MAYBE_DET PSA_ALG_DETERMINISTIC_ECDSA
|
|
225
|
+
#else
|
|
226
|
+
#define MBEDTLS_PK_PSA_ALG_ECDSA_MAYBE_DET PSA_ALG_ECDSA
|
|
227
|
+
#endif
|
|
228
|
+
|
|
229
|
+
#if defined(MBEDTLS_TEST_HOOKS)
|
|
230
|
+
MBEDTLS_STATIC_TESTABLE int mbedtls_pk_parse_key_pkcs8_encrypted_der(
|
|
231
|
+
mbedtls_pk_context *pk,
|
|
232
|
+
unsigned char *key, size_t keylen,
|
|
233
|
+
const unsigned char *pwd, size_t pwdlen,
|
|
234
|
+
int (*f_rng)(void *, unsigned char *, size_t), void *p_rng);
|
|
235
|
+
#endif
|
|
236
|
+
|
|
237
|
+
#if defined(MBEDTLS_FS_IO)
|
|
238
|
+
int mbedtls_pk_load_file(const char *path, unsigned char **buf, size_t *n);
|
|
239
|
+
#endif
|
|
240
|
+
|
|
241
|
+
#endif /* MBEDTLS_PK_INTERNAL_H */
|