mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-01-31 19:43:32 +00:00
00611e9b06
The ZIP filesystem has a breaking change. You now need to use /zip/ to open() / opendir() / etc. assets within the ZIP structure of your APE binary, instead of the previous convention of using zip: or zip! URIs. This is needed because Python likes to use absolute paths, and having ZIP paths encoded like URIs simply broke too many things. Many more system calls have been updated to be able to operate on ZIP files and file descriptors. In particular fcntl() and ioctl() since Python would do things like ask if a ZIP file is a terminal and get confused when the old implementation mistakenly said yes, because the fastest way to guarantee native file descriptors is to dup(2). This change also improves the async signal safety of zipos and ensures it doesn't maintain any open file descriptors beyond that which the user has opened. This change makes a lot of progress towards adding magic numbers that are specific to platforms other than Linux. The philosophy here is that, if you use an operating system like FreeBSD, then you should be able to take advantage of FreeBSD exclusive features, even if we don't polyfill them on other platforms. For example, you can now open() a file with the O_VERIFY flag. If your program runs on other platforms, then Cosmo will automatically set O_VERIFY to zero. This lets you safely use it without the need for #ifdef or ifstatements which detract from readability. One of the blindspots of the ASAN memory hardening we use to offer Rust like assurances has always been that memory passed to the kernel via system calls (e.g. writev) can't be checked automatically since the kernel wasn't built with MODE=asan. This change makes more progress ensuring that each system call will verify the soundness of memory before it's passed to the kernel. The code for doing these checks is fast, particularly for buffers, where it can verify 64 bytes a cycle. - Correct O_LOOP definition on NT - Introduce program_executable_name - Add ASAN guards to more system calls - Improve termios compatibility with BSDs - Fix bug in Windows auxiliary value encoding - Add BSD and XNU specific errnos and open flags - Add check to ensure build doesn't talk to internet |
||
---|---|---|
.. | ||
test | ||
aes.c | ||
aes.h | ||
aesni.c | ||
aesni.h | ||
asn1.h | ||
asn1parse.c | ||
asn1write.c | ||
asn1write.h | ||
base64.c | ||
base64.h | ||
bigmul.c | ||
bigmul4.c | ||
bignum.c | ||
bignum.h | ||
bignum_internal.h | ||
bigshift.c | ||
ccm.c | ||
ccm.h | ||
certs.c | ||
certs.h | ||
chacha20.c | ||
chacha20.h | ||
chachapoly.c | ||
chachapoly.h | ||
check.inc | ||
chk.h | ||
cipher.c | ||
cipher.h | ||
cipher_internal.h | ||
cipher_wrap.c | ||
common.h | ||
config.h | ||
ctr_drbg.c | ||
ctr_drbg.h | ||
debug.c | ||
debug.h | ||
des.c | ||
des.h | ||
dhm.c | ||
dhm.h | ||
ecdh.c | ||
ecdh.h | ||
ecdh_everest.c | ||
ecdh_everest.h | ||
ecdsa.c | ||
ecdsa.h | ||
ecp.c | ||
ecp.h | ||
ecp256.c | ||
ecp384.c | ||
ecp_curves.c | ||
ecp_internal.h | ||
ecpshl.c | ||
endian.h | ||
entropy.c | ||
entropy.h | ||
entropy_poll.c | ||
entropy_poll.h | ||
error.c | ||
error.h | ||
everest.c | ||
everest.h | ||
fastdiv.h | ||
gcm.c | ||
gcm.h | ||
getalertdescription.c | ||
getciphersuite.c | ||
getciphersuitename.c | ||
getsslstatename.c | ||
hkdf.c | ||
hkdf.h | ||
hmac_drbg.c | ||
hmac_drbg.h | ||
iana.h | ||
isciphersuitegood.c | ||
karatsuba.c | ||
LICENSE | ||
math.h | ||
mbedtls.mk | ||
md.c | ||
md.h | ||
md5.c | ||
md5.h | ||
mdtype.c | ||
memory_buffer_alloc.c | ||
memory_buffer_alloc.h | ||
net_sockets.c | ||
net_sockets.h | ||
nist_kw.c | ||
nist_kw.h | ||
oid.c | ||
oid.h | ||
param.c | ||
pem.c | ||
pem.h | ||
pk.c | ||
pk.h | ||
pk_internal.h | ||
pk_wrap.c | ||
pkcs5.c | ||
pkcs5.h | ||
pkparse.c | ||
pktype.c | ||
pkwrite.c | ||
platform.c | ||
platform.h | ||
poly1305.c | ||
poly1305.h | ||
profile.h | ||
rando.c | ||
README.cosmo | ||
rsa.c | ||
rsa.h | ||
rsa_internal.c | ||
rsa_internal.h | ||
san.c | ||
san.h | ||
secp256r1.c | ||
secp384r1.c | ||
select.h | ||
sha1.c | ||
sha1.h | ||
sha256.c | ||
sha256.h | ||
sha512.c | ||
sha512.h | ||
shiftright-avx.c | ||
shiftright.c | ||
sigalg.c | ||
speed.sh | ||
srtp.c | ||
ssl.h | ||
ssl_cache.c | ||
ssl_cache.h | ||
ssl_ciphersuites.c | ||
ssl_ciphersuites.h | ||
ssl_cli.c | ||
ssl_cookie.c | ||
ssl_cookie.h | ||
ssl_internal.h | ||
ssl_invasive.h | ||
ssl_msg.c | ||
ssl_srv.c | ||
ssl_ticket.c | ||
ssl_ticket.h | ||
ssl_tls.c | ||
ssl_tls13_keys.c | ||
ssl_tls13_keys.h | ||
version.h | ||
x509.c | ||
x509.h | ||
x509_create.c | ||
x509_crl.c | ||
x509_crl.h | ||
x509_crt.c | ||
x509_crt.h | ||
x509_csr.c | ||
x509_csr.h | ||
x509write_crt.c | ||
x509write_csr.c | ||
zeroize.c |
DESCRIPTION Mbed TLS is a crypto library built by ARM that's been released under a more permissive license than alternatives like OpenSSL and is useful for interoperating with systems that require TLS SOURCE https://github.com/ARMmbed/mbedtls/archive/refs/tags/v2.26.0.tar.gz LICENSE Apache 2.o LOCAL CHANGES - Strengthened server against DOS by removing expensive protections for old Internet Explorer against Lucky Thirteen timing attacks. - Reduce build+test latency from 15 seconds to 5 seconds. - Features have been added that enable this library to produce SSL certificates that can be used by Google Chrome. This required we add featurces for editing Subject Alternative Names and Extended Key Usage X.509 extension fields since upstream mbedtls can only do that currently for Netscape Navigator. - Local changes needed to be made to test_suite_ssl.datax due to it not taking into consideration disabled features like DTLS. - Local changes needed to be made to test_suite_x509parse.datax due to the features we added for subject alternative name parsing. - We've slimmed things down to meet our own specific local needs. For example, we don't need the PSA code since we don't target ARM hardware. We also don't need algorithms like camellia, blowfish, ripemd, arc4, ecjpake, etc. We want security code that's simple, readable, and easy to maintain. For example, the formally verified eliptic curve diffie-helman code was 38 files and most of it was dead code which could be consolidated into one < 1 kLOC file. - The only breaking API change that's been made is to redefine int arrays of things like long lists of ciphersuites to be uint8_t or uint16_t instead when appropriate. - Exported test code so it (a) doesn't have python as a build time dependency, (b) doesn't print to stdout on success, (c) bundles its dependencies inside a zip container so the tests are able to run hermetically if the binary is scp'd to some machine, and (d) doesn't have large amounts of duplicated generated code. - Fix mbedtls_mpi_sub_abs() to not call malloc/free/memcpy since it's called 11,124 times during as SSL handshake. - Make P-256 and P-384 modulus goes 5x faster. - Make chacha20 26% faster. - Make base64 100x faster. - Make gcm faster.