@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,159 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* PSA PAKE layer on top of Mbed TLS software crypto
|
|
3
|
+
*/
|
|
4
|
+
/*
|
|
5
|
+
* Copyright The Mbed TLS Contributors
|
|
6
|
+
* SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
#ifndef PSA_CRYPTO_PAKE_H
|
|
10
|
+
#define PSA_CRYPTO_PAKE_H
|
|
11
|
+
|
|
12
|
+
#include <psa/crypto.h>
|
|
13
|
+
|
|
14
|
+
/** Set the session information for a password-authenticated key exchange.
|
|
15
|
+
*
|
|
16
|
+
* \note The signature of this function is that of a PSA driver
|
|
17
|
+
* pake_setup entry point. This function behaves as a pake_setup
|
|
18
|
+
* entry point as defined in the PSA driver interface specification for
|
|
19
|
+
* transparent drivers.
|
|
20
|
+
*
|
|
21
|
+
* \param[in,out] operation The operation object to set up. It must have
|
|
22
|
+
* been initialized but not set up yet.
|
|
23
|
+
* \param[in] inputs Inputs required for PAKE operation (role, password,
|
|
24
|
+
* key lifetime, cipher suite)
|
|
25
|
+
*
|
|
26
|
+
* \retval #PSA_SUCCESS
|
|
27
|
+
* Success.
|
|
28
|
+
* \retval #PSA_ERROR_NOT_SUPPORTED
|
|
29
|
+
* The algorithm in \p cipher_suite is not a supported PAKE algorithm,
|
|
30
|
+
* or the PAKE primitive in \p cipher_suite is not supported or not
|
|
31
|
+
* compatible with the PAKE algorithm, or the hash algorithm in
|
|
32
|
+
* \p cipher_suite is not supported or not compatible with the PAKE
|
|
33
|
+
* algorithm and primitive.
|
|
34
|
+
* \retval #PSA_ERROR_INSUFFICIENT_MEMORY \emptydescription
|
|
35
|
+
* \retval #PSA_ERROR_CORRUPTION_DETECTED \emptydescription
|
|
36
|
+
*/
|
|
37
|
+
psa_status_t mbedtls_psa_pake_setup(mbedtls_psa_pake_operation_t *operation,
|
|
38
|
+
const psa_crypto_driver_pake_inputs_t *inputs);
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
/** Get output for a step of a password-authenticated key exchange.
|
|
42
|
+
*
|
|
43
|
+
* \note The signature of this function is that of a PSA driver
|
|
44
|
+
* pake_output entry point. This function behaves as a pake_output
|
|
45
|
+
* entry point as defined in the PSA driver interface specification for
|
|
46
|
+
* transparent drivers.
|
|
47
|
+
*
|
|
48
|
+
* \param[in,out] operation Active PAKE operation.
|
|
49
|
+
* \param step The step of the algorithm for which the output is
|
|
50
|
+
* requested.
|
|
51
|
+
* \param[out] output Buffer where the output is to be written in the
|
|
52
|
+
* format appropriate for this driver \p step. Refer to
|
|
53
|
+
* the documentation of psa_crypto_driver_pake_step_t for
|
|
54
|
+
* more information.
|
|
55
|
+
* \param output_size Size of the \p output buffer in bytes. This must
|
|
56
|
+
* be at least #PSA_PAKE_OUTPUT_SIZE(\p alg, \p
|
|
57
|
+
* primitive, \p step) where \p alg and
|
|
58
|
+
* \p primitive are the PAKE algorithm and primitive
|
|
59
|
+
* in the operation's cipher suite, and \p step is
|
|
60
|
+
* the output step.
|
|
61
|
+
*
|
|
62
|
+
* \param[out] output_length On success, the number of bytes of the returned
|
|
63
|
+
* output.
|
|
64
|
+
*
|
|
65
|
+
* \retval #PSA_SUCCESS
|
|
66
|
+
* Success.
|
|
67
|
+
* \retval #PSA_ERROR_BUFFER_TOO_SMALL
|
|
68
|
+
* The size of the \p output buffer is too small.
|
|
69
|
+
* \retval #PSA_ERROR_INSUFFICIENT_ENTROPY \emptydescription
|
|
70
|
+
* \retval #PSA_ERROR_CORRUPTION_DETECTED \emptydescription
|
|
71
|
+
* \retval #PSA_ERROR_DATA_CORRUPT \emptydescription
|
|
72
|
+
* \retval #PSA_ERROR_DATA_INVALID \emptydescription
|
|
73
|
+
*/
|
|
74
|
+
psa_status_t mbedtls_psa_pake_output(mbedtls_psa_pake_operation_t *operation,
|
|
75
|
+
psa_crypto_driver_pake_step_t step,
|
|
76
|
+
uint8_t *output,
|
|
77
|
+
size_t output_size,
|
|
78
|
+
size_t *output_length);
|
|
79
|
+
|
|
80
|
+
/** Provide input for a step of a password-authenticated key exchange.
|
|
81
|
+
*
|
|
82
|
+
* \note The signature of this function is that of a PSA driver
|
|
83
|
+
* pake_input entry point. This function behaves as a pake_input
|
|
84
|
+
* entry point as defined in the PSA driver interface specification for
|
|
85
|
+
* transparent drivers.
|
|
86
|
+
*
|
|
87
|
+
* \note The core checks that input_length is smaller than PSA_PAKE_INPUT_MAX_SIZE.
|
|
88
|
+
*
|
|
89
|
+
* \param[in,out] operation Active PAKE operation.
|
|
90
|
+
* \param step The driver step for which the input is provided.
|
|
91
|
+
* \param[in] input Buffer containing the input in the format
|
|
92
|
+
* appropriate for this \p step. Refer to the
|
|
93
|
+
* documentation of psa_crypto_driver_pake_step_t
|
|
94
|
+
* for more information.
|
|
95
|
+
* \param input_length Size of the \p input buffer in bytes.
|
|
96
|
+
*
|
|
97
|
+
* \retval #PSA_SUCCESS
|
|
98
|
+
* Success.
|
|
99
|
+
* \retval #PSA_ERROR_INVALID_SIGNATURE
|
|
100
|
+
* The verification fails for a zero-knowledge input step.
|
|
101
|
+
* \retval #PSA_ERROR_INVALID_ARGUMENT
|
|
102
|
+
* the \p input is not valid for the \p operation's algorithm, cipher suite
|
|
103
|
+
* or \p step.
|
|
104
|
+
* \retval #PSA_ERROR_NOT_SUPPORTED
|
|
105
|
+
* the \p input is not supported for the \p operation's algorithm, cipher
|
|
106
|
+
* suite or \p step.
|
|
107
|
+
* \retval #PSA_ERROR_INSUFFICIENT_MEMORY \emptydescription
|
|
108
|
+
* \retval #PSA_ERROR_CORRUPTION_DETECTED \emptydescription
|
|
109
|
+
* \retval #PSA_ERROR_DATA_CORRUPT \emptydescription
|
|
110
|
+
* \retval #PSA_ERROR_DATA_INVALID \emptydescription
|
|
111
|
+
*/
|
|
112
|
+
psa_status_t mbedtls_psa_pake_input(mbedtls_psa_pake_operation_t *operation,
|
|
113
|
+
psa_crypto_driver_pake_step_t step,
|
|
114
|
+
const uint8_t *input,
|
|
115
|
+
size_t input_length);
|
|
116
|
+
|
|
117
|
+
/** Get implicitly confirmed shared secret from a PAKE.
|
|
118
|
+
*
|
|
119
|
+
* \note The signature of this function is that of a PSA driver
|
|
120
|
+
* pake_get_implicit_key entry point. This function behaves as a
|
|
121
|
+
* pake_get_implicit_key entry point as defined in the PSA driver
|
|
122
|
+
* interface specification for transparent drivers.
|
|
123
|
+
*
|
|
124
|
+
* \param[in,out] operation Active PAKE operation.
|
|
125
|
+
* \param[out] output Output buffer for implicit key.
|
|
126
|
+
* \param output_size Size of the output buffer in bytes.
|
|
127
|
+
* \param[out] output_length On success, the number of bytes of the implicit key.
|
|
128
|
+
*
|
|
129
|
+
* \retval #PSA_SUCCESS
|
|
130
|
+
* Success.
|
|
131
|
+
* \retval #PSA_ERROR_NOT_SUPPORTED
|
|
132
|
+
* Input from a PAKE is not supported by the algorithm in the \p output
|
|
133
|
+
* key derivation operation.
|
|
134
|
+
* \retval #PSA_ERROR_INSUFFICIENT_MEMORY \emptydescription
|
|
135
|
+
* \retval #PSA_ERROR_CORRUPTION_DETECTED \emptydescription
|
|
136
|
+
* \retval #PSA_ERROR_DATA_CORRUPT \emptydescription
|
|
137
|
+
* \retval #PSA_ERROR_DATA_INVALID \emptydescription
|
|
138
|
+
*/
|
|
139
|
+
psa_status_t mbedtls_psa_pake_get_implicit_key(
|
|
140
|
+
mbedtls_psa_pake_operation_t *operation,
|
|
141
|
+
uint8_t *output, size_t output_size,
|
|
142
|
+
size_t *output_length);
|
|
143
|
+
|
|
144
|
+
/** Abort a PAKE operation.
|
|
145
|
+
*
|
|
146
|
+
* \note The signature of this function is that of a PSA driver
|
|
147
|
+
* pake_abort entry point. This function behaves as a pake_abort
|
|
148
|
+
* entry point as defined in the PSA driver interface specification for
|
|
149
|
+
* transparent drivers.
|
|
150
|
+
*
|
|
151
|
+
* \param[in,out] operation The operation to abort.
|
|
152
|
+
*
|
|
153
|
+
* \retval #PSA_SUCCESS
|
|
154
|
+
* Success.
|
|
155
|
+
* \retval #PSA_ERROR_CORRUPTION_DETECTED \emptydescription
|
|
156
|
+
*/
|
|
157
|
+
psa_status_t mbedtls_psa_pake_abort(mbedtls_psa_pake_operation_t *operation);
|
|
158
|
+
|
|
159
|
+
#endif /* PSA_CRYPTO_PAKE_H */
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* PSA crypto random generator.
|
|
3
|
+
*/
|
|
4
|
+
/*
|
|
5
|
+
* Copyright The Mbed TLS Contributors
|
|
6
|
+
* SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
#include "common.h"
|
|
10
|
+
|
|
11
|
+
#if defined(MBEDTLS_PSA_CRYPTO_C) && !defined(MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG)
|
|
12
|
+
|
|
13
|
+
#include "psa_crypto_core.h"
|
|
14
|
+
#include "psa_crypto_random.h"
|
|
15
|
+
#include "psa_crypto_random_impl.h"
|
|
16
|
+
#include "threading_internal.h"
|
|
17
|
+
|
|
18
|
+
#if defined(MBEDTLS_PSA_INJECT_ENTROPY)
|
|
19
|
+
#include "entropy_poll.h"
|
|
20
|
+
#endif
|
|
21
|
+
|
|
22
|
+
#if defined(MBEDTLS_PLATFORM_IS_UNIXLIKE)
|
|
23
|
+
/* For getpid(), for fork protection */
|
|
24
|
+
#include <unistd.h>
|
|
25
|
+
#if defined(MBEDTLS_HAVE_TIME)
|
|
26
|
+
#include <mbedtls/platform_time.h>
|
|
27
|
+
#else
|
|
28
|
+
/* For gettimeofday(), for fork protection without actual entropy */
|
|
29
|
+
#include <sys/time.h>
|
|
30
|
+
#endif
|
|
31
|
+
#endif
|
|
32
|
+
|
|
33
|
+
void psa_random_internal_init(mbedtls_psa_random_context_t *rng)
|
|
34
|
+
{
|
|
35
|
+
/* Set default configuration if
|
|
36
|
+
* mbedtls_psa_crypto_configure_entropy_sources() hasn't been called. */
|
|
37
|
+
if (rng->entropy_init == NULL) {
|
|
38
|
+
rng->entropy_init = mbedtls_entropy_init;
|
|
39
|
+
}
|
|
40
|
+
if (rng->entropy_free == NULL) {
|
|
41
|
+
rng->entropy_free = mbedtls_entropy_free;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
rng->entropy_init(&rng->entropy);
|
|
45
|
+
#if defined(MBEDTLS_PSA_INJECT_ENTROPY) && \
|
|
46
|
+
defined(MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES)
|
|
47
|
+
/* The PSA entropy injection feature depends on using NV seed as an entropy
|
|
48
|
+
* source. Add NV seed as an entropy source for PSA entropy injection. */
|
|
49
|
+
mbedtls_entropy_add_source(&rng->entropy,
|
|
50
|
+
mbedtls_nv_seed_poll, NULL,
|
|
51
|
+
MBEDTLS_ENTROPY_BLOCK_SIZE,
|
|
52
|
+
MBEDTLS_ENTROPY_SOURCE_STRONG);
|
|
53
|
+
#endif
|
|
54
|
+
|
|
55
|
+
mbedtls_psa_drbg_init(&rng->drbg);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
void psa_random_internal_free(mbedtls_psa_random_context_t *rng)
|
|
59
|
+
{
|
|
60
|
+
mbedtls_psa_drbg_free(&rng->drbg);
|
|
61
|
+
rng->entropy_free(&rng->entropy);
|
|
62
|
+
}
|
|
63
|
+
psa_status_t psa_random_internal_seed(mbedtls_psa_random_context_t *rng)
|
|
64
|
+
{
|
|
65
|
+
const unsigned char drbg_seed[] = "PSA";
|
|
66
|
+
int ret = mbedtls_psa_drbg_seed(&rng->drbg, &rng->entropy,
|
|
67
|
+
drbg_seed, sizeof(drbg_seed) - 1);
|
|
68
|
+
#if defined(MBEDTLS_PLATFORM_IS_UNIXLIKE)
|
|
69
|
+
rng->pid = getpid();
|
|
70
|
+
#endif
|
|
71
|
+
return mbedtls_to_psa_error(ret);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
#if defined(MBEDTLS_PLATFORM_IS_UNIXLIKE)
|
|
75
|
+
static psa_status_t psa_random_internal_reseed_child(
|
|
76
|
+
mbedtls_psa_random_context_t *rng,
|
|
77
|
+
intmax_t pid)
|
|
78
|
+
{
|
|
79
|
+
/* Reseeding from actual entropy gives the child a unique RNG state
|
|
80
|
+
* which the parent process cannot predict, and wipes the
|
|
81
|
+
* parent's RNG state from the child.
|
|
82
|
+
*
|
|
83
|
+
* However, in some library configurations, there is no actual
|
|
84
|
+
* entropy source, only a nonvolatile seed (MBEDTLS_ENTROPY_NV_SEED
|
|
85
|
+
* enabled and no actual entropy source enabled). In such a
|
|
86
|
+
* configuration, the reseed operation is deterministic and
|
|
87
|
+
* always injects the same content, so with the DRBG reseed
|
|
88
|
+
* process alone, for example, two child processes forked in
|
|
89
|
+
* close sequence would end up with the same RNG state.
|
|
90
|
+
|
|
91
|
+
* To avoid this, we use a personalization string that has a high
|
|
92
|
+
* likelihood of being unique. This way, the child has a unique state.
|
|
93
|
+
* The parent can predict the child's RNG state until the next time
|
|
94
|
+
* it reseeds or generates some random output, but that's
|
|
95
|
+
* unavoidable in the absence of actual entropy.
|
|
96
|
+
*/
|
|
97
|
+
struct {
|
|
98
|
+
/* Using the PID mostly guarantees that each child gets a
|
|
99
|
+
* unique state. */
|
|
100
|
+
/* Use intmax_t, not pid_t, because some Unix-like platforms
|
|
101
|
+
* don't define pid_t, or more likely nowadays they define
|
|
102
|
+
* pid_t but only with certain platform macros which might not
|
|
103
|
+
* be the exact ones we use. In practice, this only costs
|
|
104
|
+
* a couple of instructions to pass and compare two words
|
|
105
|
+
* rather than one.
|
|
106
|
+
*/
|
|
107
|
+
intmax_t pid;
|
|
108
|
+
/* In case an old child had died and its PID is reused for
|
|
109
|
+
* a new child of the same process, also include the time. */
|
|
110
|
+
#if defined(MBEDTLS_HAVE_TIME)
|
|
111
|
+
mbedtls_ms_time_t now;
|
|
112
|
+
#else
|
|
113
|
+
struct timeval now;
|
|
114
|
+
#endif
|
|
115
|
+
} perso;
|
|
116
|
+
memset(&perso, 0, sizeof(perso));
|
|
117
|
+
perso.pid = pid;
|
|
118
|
+
#if defined(MBEDTLS_HAVE_TIME)
|
|
119
|
+
perso.now = mbedtls_ms_time();
|
|
120
|
+
#else
|
|
121
|
+
/* We don't have mbedtls_ms_time(), but the platform has getpid().
|
|
122
|
+
* Use gettimeofday(), which is a classic Unix function. Modern POSIX
|
|
123
|
+
* has stopped requiring gettimeofday() (in favor of clock_gettime()),
|
|
124
|
+
* but this is fallback code for restricted configurations, so it's
|
|
125
|
+
* more likely to be used on embedded platforms that only have a subset
|
|
126
|
+
* of Unix APIs and are more likely to have the classic gettimeofday(). */
|
|
127
|
+
if (gettimeofday(&perso.now, NULL) == -1) {
|
|
128
|
+
return PSA_ERROR_INSUFFICIENT_ENTROPY;
|
|
129
|
+
}
|
|
130
|
+
#endif
|
|
131
|
+
int ret = mbedtls_psa_drbg_reseed(&rng->drbg,
|
|
132
|
+
(unsigned char *) &perso, sizeof(perso));
|
|
133
|
+
return mbedtls_to_psa_error(ret);
|
|
134
|
+
}
|
|
135
|
+
#endif /* MBEDTLS_PLATFORM_IS_UNIXLIKE */
|
|
136
|
+
|
|
137
|
+
psa_status_t psa_random_internal_generate(
|
|
138
|
+
mbedtls_psa_random_context_t *rng,
|
|
139
|
+
uint8_t *output, size_t output_size)
|
|
140
|
+
{
|
|
141
|
+
#if defined(MBEDTLS_PLATFORM_IS_UNIXLIKE)
|
|
142
|
+
intmax_t pid = getpid();
|
|
143
|
+
if (pid != rng->pid) {
|
|
144
|
+
/* This is a (grand...)child of the original process, but
|
|
145
|
+
* we inherited the RNG state from our parent. We must reseed! */
|
|
146
|
+
#if defined(MBEDTLS_THREADING_C)
|
|
147
|
+
mbedtls_mutex_lock(&mbedtls_threading_psa_rngdata_mutex);
|
|
148
|
+
#endif /* defined(MBEDTLS_THREADING_C) */
|
|
149
|
+
psa_status_t status = psa_random_internal_reseed_child(rng, pid);
|
|
150
|
+
if (status == PSA_SUCCESS) {
|
|
151
|
+
rng->pid = pid;
|
|
152
|
+
}
|
|
153
|
+
#if defined(MBEDTLS_THREADING_C)
|
|
154
|
+
mbedtls_mutex_unlock(&mbedtls_threading_psa_rngdata_mutex);
|
|
155
|
+
#endif /* defined(MBEDTLS_THREADING_C) */
|
|
156
|
+
if (status != PSA_SUCCESS) {
|
|
157
|
+
return status;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
#endif /* MBEDTLS_PLATFORM_IS_UNIXLIKE */
|
|
161
|
+
|
|
162
|
+
while (output_size > 0) {
|
|
163
|
+
size_t request_size =
|
|
164
|
+
(output_size > MBEDTLS_PSA_RANDOM_MAX_REQUEST ?
|
|
165
|
+
MBEDTLS_PSA_RANDOM_MAX_REQUEST :
|
|
166
|
+
output_size);
|
|
167
|
+
#if defined(MBEDTLS_CTR_DRBG_C)
|
|
168
|
+
int ret = mbedtls_ctr_drbg_random(&rng->drbg, output, request_size);
|
|
169
|
+
#elif defined(MBEDTLS_HMAC_DRBG_C)
|
|
170
|
+
int ret = mbedtls_hmac_drbg_random(&rng->drbg, output, request_size);
|
|
171
|
+
#endif /* !MBEDTLS_CTR_DRBG_C && !MBEDTLS_HMAC_DRBG_C */
|
|
172
|
+
if (ret != 0) {
|
|
173
|
+
return mbedtls_to_psa_error(ret);
|
|
174
|
+
}
|
|
175
|
+
output_size -= request_size;
|
|
176
|
+
output += request_size;
|
|
177
|
+
}
|
|
178
|
+
return PSA_SUCCESS;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
#endif /* MBEDTLS_PSA_CRYPTO_C && !MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG */
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* PSA crypto random generator internal functions.
|
|
3
|
+
*/
|
|
4
|
+
/*
|
|
5
|
+
* Copyright The Mbed TLS Contributors
|
|
6
|
+
* SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
#ifndef PSA_CRYPTO_RANDOM_H
|
|
10
|
+
#define PSA_CRYPTO_RANDOM_H
|
|
11
|
+
|
|
12
|
+
#include "common.h"
|
|
13
|
+
|
|
14
|
+
#if !defined(MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG)
|
|
15
|
+
|
|
16
|
+
#include <psa/crypto.h>
|
|
17
|
+
#include "psa_crypto_random_impl.h"
|
|
18
|
+
|
|
19
|
+
/** Initialize the PSA random generator.
|
|
20
|
+
*
|
|
21
|
+
* \param[out] rng The random generator context to initialize.
|
|
22
|
+
*/
|
|
23
|
+
void psa_random_internal_init(mbedtls_psa_random_context_t *rng);
|
|
24
|
+
|
|
25
|
+
/** Deinitialize the PSA random generator.
|
|
26
|
+
*
|
|
27
|
+
* \param[in,out] rng The random generator context to deinitialize.
|
|
28
|
+
*/
|
|
29
|
+
void psa_random_internal_free(mbedtls_psa_random_context_t *rng);
|
|
30
|
+
|
|
31
|
+
/** Seed the PSA random generator.
|
|
32
|
+
*
|
|
33
|
+
* \note This function is not thread-safe.
|
|
34
|
+
*
|
|
35
|
+
* \param[in,out] rng The random generator context to seed.
|
|
36
|
+
*
|
|
37
|
+
* \retval #PSA_SUCCESS
|
|
38
|
+
* Success.
|
|
39
|
+
* \retval #PSA_ERROR_INSUFFICIENT_ENTROPY
|
|
40
|
+
* The entropy source failed.
|
|
41
|
+
*/
|
|
42
|
+
psa_status_t psa_random_internal_seed(mbedtls_psa_random_context_t *rng);
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* \brief Generate random bytes. Like psa_generate_random(), but for use
|
|
46
|
+
* inside the library.
|
|
47
|
+
*
|
|
48
|
+
* This function is thread-safe.
|
|
49
|
+
*
|
|
50
|
+
* \warning This function **can** fail! Callers MUST check the return status
|
|
51
|
+
* and MUST NOT use the content of the output buffer if the return
|
|
52
|
+
* status is not #PSA_SUCCESS.
|
|
53
|
+
*
|
|
54
|
+
* \param[in,out] rng The random generator context to seed.
|
|
55
|
+
* \param[out] output Output buffer for the generated data.
|
|
56
|
+
* \param output_size Number of bytes to generate and output.
|
|
57
|
+
*
|
|
58
|
+
* \retval #PSA_SUCCESS
|
|
59
|
+
* Success.
|
|
60
|
+
* \retval #PSA_ERROR_INSUFFICIENT_ENTROPY
|
|
61
|
+
* The random generator needed to reseed, and the entropy
|
|
62
|
+
* source failed.
|
|
63
|
+
* \retval #PSA_ERROR_HARDWARE_FAILURE
|
|
64
|
+
* A hardware accelerator failed.
|
|
65
|
+
*/
|
|
66
|
+
psa_status_t psa_random_internal_generate(
|
|
67
|
+
mbedtls_psa_random_context_t *rng,
|
|
68
|
+
uint8_t *output, size_t output_size);
|
|
69
|
+
|
|
70
|
+
#endif /* !defined(MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG) */
|
|
71
|
+
|
|
72
|
+
#endif /* PSA_CRYPTO_RANDOM_H */
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
/** \file psa_crypto_random_impl.h
|
|
2
|
+
*
|
|
3
|
+
* \brief PSA crypto random generator implementation abstraction.
|
|
4
|
+
*/
|
|
5
|
+
/*
|
|
6
|
+
* Copyright The Mbed TLS Contributors
|
|
7
|
+
* SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
#ifndef PSA_CRYPTO_RANDOM_IMPL_H
|
|
11
|
+
#define PSA_CRYPTO_RANDOM_IMPL_H
|
|
12
|
+
|
|
13
|
+
#include "psa_util_internal.h"
|
|
14
|
+
|
|
15
|
+
#if defined(MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG)
|
|
16
|
+
|
|
17
|
+
typedef mbedtls_psa_external_random_context_t mbedtls_psa_random_context_t;
|
|
18
|
+
|
|
19
|
+
#else /* MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG */
|
|
20
|
+
|
|
21
|
+
#include "mbedtls/entropy.h"
|
|
22
|
+
|
|
23
|
+
/* Choose a DRBG based on configuration and availability */
|
|
24
|
+
#if defined(MBEDTLS_CTR_DRBG_C)
|
|
25
|
+
|
|
26
|
+
#include "mbedtls/ctr_drbg.h"
|
|
27
|
+
#undef MBEDTLS_PSA_HMAC_DRBG_MD_TYPE
|
|
28
|
+
|
|
29
|
+
#elif defined(MBEDTLS_HMAC_DRBG_C)
|
|
30
|
+
|
|
31
|
+
#include "mbedtls/hmac_drbg.h"
|
|
32
|
+
#if defined(MBEDTLS_MD_CAN_SHA512) && defined(MBEDTLS_MD_CAN_SHA256)
|
|
33
|
+
#include <limits.h>
|
|
34
|
+
#if SIZE_MAX > 0xffffffff
|
|
35
|
+
/* Looks like a 64-bit system, so prefer SHA-512. */
|
|
36
|
+
#define MBEDTLS_PSA_HMAC_DRBG_MD_TYPE MBEDTLS_MD_SHA512
|
|
37
|
+
#else
|
|
38
|
+
/* Looks like a 32-bit system, so prefer SHA-256. */
|
|
39
|
+
#define MBEDTLS_PSA_HMAC_DRBG_MD_TYPE MBEDTLS_MD_SHA256
|
|
40
|
+
#endif
|
|
41
|
+
#elif defined(MBEDTLS_MD_CAN_SHA512)
|
|
42
|
+
#define MBEDTLS_PSA_HMAC_DRBG_MD_TYPE MBEDTLS_MD_SHA512
|
|
43
|
+
#elif defined(MBEDTLS_MD_CAN_SHA256)
|
|
44
|
+
#define MBEDTLS_PSA_HMAC_DRBG_MD_TYPE MBEDTLS_MD_SHA256
|
|
45
|
+
#else
|
|
46
|
+
#error "No hash algorithm available for HMAC_DBRG."
|
|
47
|
+
#endif
|
|
48
|
+
|
|
49
|
+
#else /* !MBEDTLS_CTR_DRBG_C && !MBEDTLS_HMAC_DRBG_C*/
|
|
50
|
+
|
|
51
|
+
#error "No DRBG module available for the psa_crypto module."
|
|
52
|
+
|
|
53
|
+
#endif /* !MBEDTLS_CTR_DRBG_C && !MBEDTLS_HMAC_DRBG_C*/
|
|
54
|
+
|
|
55
|
+
/* The maximum number of bytes that mbedtls_psa_get_random() is expected to return. */
|
|
56
|
+
#if defined(MBEDTLS_CTR_DRBG_C)
|
|
57
|
+
#define MBEDTLS_PSA_RANDOM_MAX_REQUEST MBEDTLS_CTR_DRBG_MAX_REQUEST
|
|
58
|
+
#elif defined(MBEDTLS_HMAC_DRBG_C)
|
|
59
|
+
#define MBEDTLS_PSA_RANDOM_MAX_REQUEST MBEDTLS_HMAC_DRBG_MAX_REQUEST
|
|
60
|
+
#endif
|
|
61
|
+
|
|
62
|
+
#if defined(MBEDTLS_CTR_DRBG_C)
|
|
63
|
+
typedef mbedtls_ctr_drbg_context mbedtls_psa_drbg_context_t;
|
|
64
|
+
#elif defined(MBEDTLS_HMAC_DRBG_C)
|
|
65
|
+
typedef mbedtls_hmac_drbg_context mbedtls_psa_drbg_context_t;
|
|
66
|
+
#endif /* !MBEDTLS_CTR_DRBG_C && !MBEDTLS_HMAC_DRBG_C */
|
|
67
|
+
|
|
68
|
+
typedef struct {
|
|
69
|
+
void (* entropy_init)(mbedtls_entropy_context *ctx);
|
|
70
|
+
void (* entropy_free)(mbedtls_entropy_context *ctx);
|
|
71
|
+
mbedtls_entropy_context entropy;
|
|
72
|
+
mbedtls_psa_drbg_context_t drbg;
|
|
73
|
+
#if defined(MBEDTLS_PLATFORM_IS_UNIXLIKE)
|
|
74
|
+
/* Fork protection: normally pid = getpid(). If the value changes,
|
|
75
|
+
* we are in a (grand)*child of the original process, so reseed
|
|
76
|
+
* the RNG to ensure that the child and the original process have
|
|
77
|
+
* distinct RNG states. See psa_random_internal_generate().
|
|
78
|
+
*
|
|
79
|
+
* The type is intmax_t, not pid_t, for portability reasons:
|
|
80
|
+
* pid_t is defined in `unistd.h`, but on some platforms, it may
|
|
81
|
+
* only be defined if a certain compatibility level is requested
|
|
82
|
+
* by defining a macro such as _POSIX_C_SOURCE or _XOPEN_SOURCE.
|
|
83
|
+
* The macro needs to be defined before any system header, which
|
|
84
|
+
* may be hard to do in some C files that include this header
|
|
85
|
+
* (e.g. test suites). So we sidestep this complication, at the
|
|
86
|
+
* cost of possibly a few more instructions to compare pid values.
|
|
87
|
+
*/
|
|
88
|
+
intmax_t pid;
|
|
89
|
+
#endif
|
|
90
|
+
} mbedtls_psa_random_context_t;
|
|
91
|
+
|
|
92
|
+
/** Initialize the PSA DRBG.
|
|
93
|
+
*
|
|
94
|
+
* \param p_rng Pointer to the Mbed TLS DRBG state.
|
|
95
|
+
*/
|
|
96
|
+
static inline void mbedtls_psa_drbg_init(mbedtls_psa_drbg_context_t *p_rng)
|
|
97
|
+
{
|
|
98
|
+
#if defined(MBEDTLS_CTR_DRBG_C)
|
|
99
|
+
mbedtls_ctr_drbg_init(p_rng);
|
|
100
|
+
#elif defined(MBEDTLS_HMAC_DRBG_C)
|
|
101
|
+
mbedtls_hmac_drbg_init(p_rng);
|
|
102
|
+
#endif
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/** Deinitialize the PSA DRBG.
|
|
106
|
+
*
|
|
107
|
+
* \param p_rng Pointer to the Mbed TLS DRBG state.
|
|
108
|
+
*/
|
|
109
|
+
static inline void mbedtls_psa_drbg_free(mbedtls_psa_drbg_context_t *p_rng)
|
|
110
|
+
{
|
|
111
|
+
#if defined(MBEDTLS_CTR_DRBG_C)
|
|
112
|
+
mbedtls_ctr_drbg_free(p_rng);
|
|
113
|
+
#elif defined(MBEDTLS_HMAC_DRBG_C)
|
|
114
|
+
mbedtls_hmac_drbg_free(p_rng);
|
|
115
|
+
#endif
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/** Seed the PSA DRBG.
|
|
119
|
+
*
|
|
120
|
+
* \param drbg_ctx The DRBG context to seed.
|
|
121
|
+
* It must be initialized but not active.
|
|
122
|
+
* \param entropy An entropy context to read the seed from.
|
|
123
|
+
* \param custom The personalization string.
|
|
124
|
+
* This can be \c NULL, in which case the personalization
|
|
125
|
+
* string is empty regardless of the value of \p len.
|
|
126
|
+
* \param len The length of the personalization string.
|
|
127
|
+
*
|
|
128
|
+
* \return \c 0 on success.
|
|
129
|
+
* \return An Mbed TLS error code (\c MBEDTLS_ERR_xxx) on failure.
|
|
130
|
+
*/
|
|
131
|
+
static inline int mbedtls_psa_drbg_seed(mbedtls_psa_drbg_context_t *drbg_ctx,
|
|
132
|
+
mbedtls_entropy_context *entropy,
|
|
133
|
+
const unsigned char *custom, size_t len)
|
|
134
|
+
{
|
|
135
|
+
#if defined(MBEDTLS_CTR_DRBG_C)
|
|
136
|
+
return mbedtls_ctr_drbg_seed(drbg_ctx, mbedtls_entropy_func, entropy, custom, len);
|
|
137
|
+
#elif defined(MBEDTLS_HMAC_DRBG_C)
|
|
138
|
+
const mbedtls_md_info_t *md_info = mbedtls_md_info_from_type(MBEDTLS_PSA_HMAC_DRBG_MD_TYPE);
|
|
139
|
+
return mbedtls_hmac_drbg_seed(drbg_ctx, md_info, mbedtls_entropy_func, entropy, custom, len);
|
|
140
|
+
#endif
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/** Reseed the PSA DRBG.
|
|
144
|
+
*
|
|
145
|
+
* \param drbg_ctx The DRBG context to reseed.
|
|
146
|
+
* It must be active.
|
|
147
|
+
* \param additional Additional data to inject.
|
|
148
|
+
* \param len The length of \p additional in bytes.
|
|
149
|
+
* This can be 0 to simply reseed from the entropy source.
|
|
150
|
+
*
|
|
151
|
+
* \return \c 0 on success.
|
|
152
|
+
* \return An Mbed TLS error code (\c MBEDTLS_ERR_xxx) on failure.
|
|
153
|
+
*/
|
|
154
|
+
static inline int mbedtls_psa_drbg_reseed(mbedtls_psa_drbg_context_t *drbg_ctx,
|
|
155
|
+
const unsigned char *additional,
|
|
156
|
+
size_t len)
|
|
157
|
+
{
|
|
158
|
+
#if defined(MBEDTLS_CTR_DRBG_C)
|
|
159
|
+
return mbedtls_ctr_drbg_reseed(drbg_ctx, additional, len);
|
|
160
|
+
#elif defined(MBEDTLS_HMAC_DRBG_C)
|
|
161
|
+
return mbedtls_hmac_drbg_reseed(drbg_ctx, additional, len);
|
|
162
|
+
#endif
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/** Deplete the PSA DRBG, i.e. cause it to reseed the next time it is used.
|
|
166
|
+
*
|
|
167
|
+
* \note This function is not thread-safe.
|
|
168
|
+
*
|
|
169
|
+
* \param drbg_ctx The DRBG context to deplete.
|
|
170
|
+
* It must be active.
|
|
171
|
+
*/
|
|
172
|
+
static inline void mbedtls_psa_drbg_deplete(mbedtls_psa_drbg_context_t *drbg_ctx)
|
|
173
|
+
{
|
|
174
|
+
drbg_ctx->reseed_counter = drbg_ctx->reseed_interval;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
#if MBEDTLS_ENTROPY_TRUE_SOURCES > 0
|
|
178
|
+
/** Set prediction resistance in the PSA DRBG.
|
|
179
|
+
*
|
|
180
|
+
* \note This function is not thread-safe.
|
|
181
|
+
*
|
|
182
|
+
* \param drbg_ctx The DRBG context to reconfigure.
|
|
183
|
+
* It must be active.
|
|
184
|
+
* \param enabled \c 1 to enable, or \c 0 to disable.
|
|
185
|
+
*/
|
|
186
|
+
static inline void mbedtls_psa_drbg_set_prediction_resistance(
|
|
187
|
+
mbedtls_psa_drbg_context_t *drbg_ctx,
|
|
188
|
+
unsigned enabled)
|
|
189
|
+
{
|
|
190
|
+
#if defined(MBEDTLS_CTR_DRBG_C)
|
|
191
|
+
mbedtls_ctr_drbg_set_prediction_resistance(drbg_ctx, enabled);
|
|
192
|
+
#elif defined(MBEDTLS_HMAC_DRBG_C)
|
|
193
|
+
mbedtls_hmac_drbg_set_prediction_resistance(drbg_ctx, enabled);
|
|
194
|
+
#endif
|
|
195
|
+
}
|
|
196
|
+
#endif /* MBEDTLS_ENTROPY_TRUE_SOURCES > 0 */
|
|
197
|
+
|
|
198
|
+
#endif /* MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG */
|
|
199
|
+
|
|
200
|
+
#endif /* PSA_CRYPTO_RANDOM_IMPL_H */
|